@@ -475,38 +475,38 @@ def reset(self):
475
475
changed.
476
476
"""
477
477
# Note that py3.12 has Path.walk(). But we need to use os.walk to ensure backwards compatibility for now.
478
- self .files = [str (( Path ( d ) / f ). relative_to ( self . path )) for d , _ , fnames in os . walk ( self . path ) for f in fnames ]
479
-
480
- self . _parsed_files : dict [ str , Any ] = { }
478
+ self ._files : dict [str , Any ] = {
479
+ str (( Path ( d ) / f ). relative_to ( self . path )): None for d , _ , fnames in os . walk ( self . path ) for f in fnames
480
+ }
481
481
482
482
def __contains__ (self , item ):
483
- return item in self .files
483
+ return item in self ._files
484
484
485
485
def __len__ (self ):
486
- return len (self .files )
486
+ return len (self ._files )
487
487
488
488
def __iter__ (self ):
489
- return iter (self .files )
489
+ return iter (self ._files )
490
490
491
491
def __getitem__ (self , item ):
492
- if item in self ._parsed_files :
493
- return self ._parsed_files [ item ]
492
+ if self ._files . get ( item ) :
493
+ return self ._files . get ( item )
494
494
fpath = self .path / item
495
495
496
496
if not (self .path / item ).exists ():
497
- raise ValueError (f"{ item } not found in { self .path } . List of files are { self .files } ." )
497
+ raise ValueError (f"{ item } not found in { self .path } . List of files are { self ._files . keys () } ." )
498
498
499
499
for k , cls_ in PMGDir .FILE_MAPPINGS .items ():
500
500
if k in item :
501
501
modname , classname = cls_ .rsplit ("." , 1 )
502
502
module = importlib .import_module (modname )
503
503
class_ = getattr (module , classname )
504
504
try :
505
- self ._parsed_files [item ] = class_ .from_file (fpath )
505
+ self ._files [item ] = class_ .from_file (fpath )
506
506
except AttributeError :
507
- self ._parsed_files [item ] = class_ (fpath )
507
+ self ._files [item ] = class_ (fpath )
508
508
509
- return self ._parsed_files [item ]
509
+ return self ._files [item ]
510
510
511
511
warnings .warn (
512
512
f"No parser defined for { item } . Contents are returned as a string." ,
@@ -522,7 +522,7 @@ def get_files_by_name(self, name: str) -> dict[str, Any]:
522
522
Returns:
523
523
{filename: object from PMGDir[filename]}
524
524
"""
525
- return {f : self [f ] for f in self .files if name in f }
525
+ return {f : self [f ] for f in self ._files if name in f }
526
526
527
527
def __repr__ (self ):
528
528
return f"PMGDir({ self .path } )"
0 commit comments