--- contrib/python/setuptools/py3/pkg_resources/__init__.py (revision 10490147) +++ contrib/python/setuptools/py3/pkg_resources/__init__.py (revision 10490148) @@ -3234,6 +3234,45 @@ from library.python import resource +class UnionProvider(EmptyProvider): + def __init__(self, *pp): + self.module_path = [(p, p.module_path) for p in pp] + + def _has(self, path): + for p, pp in path: + if p._has(pp): + return True + + return False + + def _fn(self, base, resource_name): + return [(p, p._fn(pp, resource_name)) for p, pp in base] + + def _get(self, path): + for p, pp in path: + if p._has(pp): + return p._get(pp) + + raise IOError(path) + + def _itdir(self, path): + for p, pp in path: + if not p._isdir(pp): + continue + for np in p._listdir(pp): + yield np + + def _listdir(self, path): + return list(self._itdir(path)) + + def _isdir(self, path): + for p, pp in path: + if p._has(pp): + return p._isdir(pp) + + return False + + class ResProvider(EmptyProvider): _resource_fs = {} @@ -3252,7 +3289,7 @@ @staticmethod def from_module(module): if Y_PYTHON_SOURCE_ROOT: - return DefaultProvider(module) + return UnionProvider(DefaultProvider(module), ResProvider(module)) else: return ResProvider(module)