bpo-40924: Ensure importlib.resources.path returns an extant path (GH-20857)

This commit is contained in:
Jason R. Coombs 2020-06-29 16:59:22 -04:00 committed by GitHub
parent e67f7db3c3
commit 2fb5f038f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 1 deletions

View file

@ -7,11 +7,19 @@ class FileReader(abc.TraversableResources):
def __init__(self, loader):
self.path = pathlib.Path(loader.path).parent
def resource_path(self, resource):
"""
Return the file system path to prevent
`resources.path()` from creating a temporary
copy.
"""
return str(self.path.joinpath(resource))
def files(self):
return self.path
class ZipReader(FileReader):
class ZipReader(abc.TraversableResources):
def __init__(self, loader, module):
_, _, name = module.rpartition('.')
prefix = loader.prefix.replace('\\', '/') + name + '/'
@ -28,3 +36,6 @@ class ZipReader(FileReader):
# for non-existent paths.
target = self.files().joinpath(path)
return target.is_file() and target.exists()
def files(self):
return self.path