@@ -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