02-arcadia.patch 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --- contrib/python/setuptools/py3/pkg_resources/__init__.py (revision 10490147)
  2. +++ contrib/python/setuptools/py3/pkg_resources/__init__.py (revision 10490148)
  3. @@ -3234,6 +3234,45 @@
  4. from library.python import resource
  5. +class UnionProvider(EmptyProvider):
  6. + def __init__(self, *pp):
  7. + self.module_path = [(p, p.module_path) for p in pp]
  8. +
  9. + def _has(self, path):
  10. + for p, pp in path:
  11. + if p._has(pp):
  12. + return True
  13. +
  14. + return False
  15. +
  16. + def _fn(self, base, resource_name):
  17. + return [(p, p._fn(pp, resource_name)) for p, pp in base]
  18. +
  19. + def _get(self, path):
  20. + for p, pp in path:
  21. + if p._has(pp):
  22. + return p._get(pp)
  23. +
  24. + raise IOError(path)
  25. +
  26. + def _itdir(self, path):
  27. + for p, pp in path:
  28. + if not p._isdir(pp):
  29. + continue
  30. + for np in p._listdir(pp):
  31. + yield np
  32. +
  33. + def _listdir(self, path):
  34. + return list(self._itdir(path))
  35. +
  36. + def _isdir(self, path):
  37. + for p, pp in path:
  38. + if p._has(pp):
  39. + return p._isdir(pp)
  40. +
  41. + return False
  42. +
  43. +
  44. class ResProvider(EmptyProvider):
  45. _resource_fs = {}
  46. @@ -3252,7 +3289,7 @@
  47. @staticmethod
  48. def from_module(module):
  49. if Y_PYTHON_SOURCE_ROOT:
  50. - return DefaultProvider(module)
  51. + return UnionProvider(DefaultProvider(module), ResProvider(module))
  52. else:
  53. return ResProvider(module)