File tree Expand file tree Collapse file tree 2 files changed +17
-11
lines changed Expand file tree Collapse file tree 2 files changed +17
-11
lines changed Original file line number Diff line number Diff line change @@ -71,34 +71,40 @@ def __init__(self, **kwargs):
7171class TraversableResourcesAdapter :
7272 def __init__ (self , spec ):
7373 self .spec = spec
74- self .loader = LoaderAdapter (self . spec )
74+ self .loader = LoaderAdapter (spec )
7575
7676 def __getattr__ (self , name ):
7777 return getattr (self .spec , name )
7878
7979
8080class LoaderAdapter :
8181 """
82- Adapt loaders on Python < 3.9 to provide TraversableResources
83- readers .
82+ Adapt loaders to provide TraversableResources and other
83+ compatibility .
8484 """
8585 def __init__ (self , spec ):
8686 self .spec = spec
8787
88+ @property
89+ def path (self ):
90+ # Python < 3
91+ return self .spec .origin
92+
8893 def get_resource_reader (self , name ):
94+ # Python < 3.9
8995 from . import readers
9096 try :
9197 reader = self .spec .loader .get_resource_reader (name )
9298 reader .files
9399 except AttributeError :
94- reader = _zip_reader (self .spec ) or readers .FileReader (self . spec )
100+ reader = _zip_reader (self .spec ) or readers .FileReader (self )
95101 return reader
96102
97103
98104def _zip_reader (spec ):
99105 from . import readers
100106 with suppress (AttributeError ):
101- return readers .ZipReader (spec )
107+ return readers .ZipReader (spec . loader , spec . name )
102108
103109
104110def package_spec (package ):
Original file line number Diff line number Diff line change 44
55
66class FileReader (abc .TraversableResources ):
7- def __init__ (self , spec ):
8- self .path = Path (spec . origin ).parent
7+ def __init__ (self , loader ):
8+ self .path = Path (loader . path ).parent
99
1010 def files (self ):
1111 return self .path
1212
1313
1414class ZipReader (FileReader ):
15- def __init__ (self , spec ):
16- _ , _ , name = spec . name .rpartition ('.' )
17- prefix = spec . loader .prefix .replace ('\\ ' , '/' ) + name + '/'
18- self .path = ZipPath (spec . loader .archive , prefix )
15+ def __init__ (self , loader , module ):
16+ _ , _ , name = module .rpartition ('.' )
17+ prefix = loader .prefix .replace ('\\ ' , '/' ) + name + '/'
18+ self .path = ZipPath (loader .archive , prefix )
1919
2020 def open_resource (self , resource ):
2121 try :
You can’t perform that action at this time.
0 commit comments