@@ -0,0 +1,867 @@
+from . import abc%0A%0Afrom ._compat import Path, ZipPath%0A%0A%0Aclass FileReader(abc.TraversableResources):%0A    def __init__(self, loader):%0A        self.path = Path(loader.path).parent%0A%0A    def files(self):%0A        return self.path%0A%0A%0Aclass ZipReader(FileReader):%0A    def __init__(self, loader, module):%0A        _, _, name = module.rpartition('.')%0A        prefix = loader.prefix.replace('%5C%5C', '/') + name + '/'%0A        self.path = ZipPath(loader.archive, prefix)%0A%0A    def open_resource(self, resource):%0A        try:%0A            return super().open_resource(resource)%0A        except KeyError as exc:%0A            raise FileNotFoundError(exc.args%5B0%5D)%0A%0A    def is_resource(self, path):%0A        # workaround for %60zipfile.Path.is_file%60 returning true%0A        # for non-existent paths.%0A        target = self.files().joinpath(path)%0A        return target.is_file() and target.exists()%0A

Add readers module from python/cpython#20576.