bpo-33151: Handle submodule resources (GH-6268) (GH-6270)

(cherry picked from commit 30e507dff4)

Co-authored-by: Barry Warsaw <barry@python.org>
This commit is contained in:
Miss Islington (bot) 2018-03-27 10:25:28 -07:00 committed by Barry Warsaw
parent f328caf4ca
commit fd1b8f87b3
3 changed files with 37 additions and 6 deletions

View file

@ -267,11 +267,12 @@ class _ZipImportResourceReader(resources_abc.ResourceReader):
self.fullname = fullname
def open_resource(self, resource):
path = f'{self.fullname}/{resource}'
fullname_as_path = self.fullname.replace('.', '/')
path = f'{fullname_as_path}/{resource}'
try:
return BytesIO(self.zipimporter.get_data(path))
except OSError:
raise FileNotFoundError
raise FileNotFoundError(path)
def resource_path(self, resource):
# All resources are in the zip file, so there is no path to the file.
@ -282,7 +283,8 @@ class _ZipImportResourceReader(resources_abc.ResourceReader):
def is_resource(self, name):
# Maybe we could do better, but if we can get the data, it's a
# resource. Otherwise it isn't.
path = f'{self.fullname}/{name}'
fullname_as_path = self.fullname.replace('.', '/')
path = f'{fullname_as_path}/{name}'
try:
self.zipimporter.get_data(path)
except OSError: