Skip to content

Commit 50838d5

Browse files
committed
change approach for repr
1 parent 081c340 commit 50838d5

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

Lib/configparser.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,7 @@ def __init__(self, defaults=None, dict_type=_default_dict,
689689
if defaults:
690690
self._read_defaults(defaults)
691691
self._allow_unnamed_section = allow_unnamed_section
692+
self._loaded_files = []
692693

693694
def defaults(self):
694695
return self._defaults
@@ -757,6 +758,7 @@ def read(self, filenames, encoding=None):
757758
if isinstance(filename, os.PathLike):
758759
filename = os.fspath(filename)
759760
read_ok.append(filename)
761+
self._loaded_files.extend(read_ok)
760762
return read_ok
761763

762764
def read_file(self, f, source=None):
@@ -1049,12 +1051,31 @@ def __iter__(self):
10491051
return itertools.chain((self.default_section,), self._sections.keys())
10501052

10511053
def __str__(self):
1052-
config_dict = {section: dict(self.items(section)) for section in self.sections()}
1054+
config_dict = {
1055+
section: dict(self.items(section)) for section in self.sections()
1056+
}
10531057
return str(config_dict)
10541058

10551059
def __repr__(self):
1056-
return f"<ConfigParser(default_section='{self.default_section}', interpolation={self._interpolation})>"
1057-
1060+
init_params = {
1061+
"defaults": self._defaults if self._defaults else None,
1062+
"dict_type": type(self._dict).__name__,
1063+
"allow_no_value": self._allow_no_value,
1064+
"delimiters": self._delimiters,
1065+
"strict": self._strict,
1066+
"default_section": self.default_section,
1067+
"interpolation": type(self._interpolation).__name__,
1068+
}
1069+
init_params = {k: v for k, v in init_params.items() if v is not None}
1070+
1071+
state_summary = {
1072+
"loaded_files": self._loaded_files if hasattr(self, '_loaded_files') else "(no files loaded)",
1073+
"sections": len(self._sections),
1074+
}
1075+
1076+
return (f"<{self.__class__.__name__}("
1077+
f"params={init_params}, "
1078+
f"state={state_summary})>")
10581079

10591080
def _read(self, fp, fpname):
10601081
"""Parse a sectioned configuration file.

0 commit comments

Comments
 (0)