Skip to content

Commit dc71b39

Browse files
committed
change approach for repr
1 parent 5255025 commit dc71b39

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
@@ -682,6 +682,7 @@ def __init__(self, defaults=None, dict_type=_default_dict,
682682
if defaults:
683683
self._read_defaults(defaults)
684684
self._allow_unnamed_section = allow_unnamed_section
685+
self._loaded_files = []
685686

686687
def defaults(self):
687688
return self._defaults
@@ -750,6 +751,7 @@ def read(self, filenames, encoding=None):
750751
if isinstance(filename, os.PathLike):
751752
filename = os.fspath(filename)
752753
read_ok.append(filename)
754+
self._loaded_files.extend(read_ok)
753755
return read_ok
754756

755757
def read_file(self, f, source=None):
@@ -1041,12 +1043,31 @@ def __iter__(self):
10411043
return itertools.chain((self.default_section,), self._sections.keys())
10421044

10431045
def __str__(self):
1044-
config_dict = {section: dict(self.items(section)) for section in self.sections()}
1046+
config_dict = {
1047+
section: dict(self.items(section)) for section in self.sections()
1048+
}
10451049
return str(config_dict)
10461050

10471051
def __repr__(self):
1048-
return f"<ConfigParser(default_section='{self.default_section}', interpolation={self._interpolation})>"
1049-
1052+
init_params = {
1053+
"defaults": self._defaults if self._defaults else None,
1054+
"dict_type": type(self._dict).__name__,
1055+
"allow_no_value": self._allow_no_value,
1056+
"delimiters": self._delimiters,
1057+
"strict": self._strict,
1058+
"default_section": self.default_section,
1059+
"interpolation": type(self._interpolation).__name__,
1060+
}
1061+
init_params = {k: v for k, v in init_params.items() if v is not None}
1062+
1063+
state_summary = {
1064+
"loaded_files": self._loaded_files if hasattr(self, '_loaded_files') else "(no files loaded)",
1065+
"sections": len(self._sections),
1066+
}
1067+
1068+
return (f"<{self.__class__.__name__}("
1069+
f"params={init_params}, "
1070+
f"state={state_summary})>")
10501071

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

0 commit comments

Comments
 (0)