importlib-metadata 7.2.0__tar.gz → 7.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/NEWS.rst +9 -0
  2. {importlib_metadata-7.2.0/importlib_metadata.egg-info → importlib_metadata-7.2.1}/PKG-INFO +2 -2
  3. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/__init__.py +3 -4
  4. importlib_metadata-7.2.1/importlib_metadata/compat/py311.py +22 -0
  5. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1/importlib_metadata.egg-info}/PKG-INFO +2 -2
  6. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata.egg-info/SOURCES.txt +1 -0
  7. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/pyproject.toml +1 -1
  8. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/fixtures.py +34 -0
  9. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/test_api.py +1 -0
  10. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.coveragerc +0 -0
  11. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.editorconfig +0 -0
  12. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.github/FUNDING.yml +0 -0
  13. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.github/dependabot.yml +0 -0
  14. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.github/workflows/main.yml +0 -0
  15. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.gitignore +0 -0
  16. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.pre-commit-config.yaml +0 -0
  17. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/.readthedocs.yaml +0 -0
  18. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/LICENSE +0 -0
  19. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/README.rst +0 -0
  20. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/SECURITY.md +0 -0
  21. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/conftest.py +0 -0
  22. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/docs/__init__.py +0 -0
  23. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/docs/api.rst +0 -0
  24. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/docs/conf.py +0 -0
  25. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/docs/history.rst +0 -0
  26. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/docs/index.rst +0 -0
  27. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/docs/migration.rst +0 -0
  28. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/exercises.py +0 -0
  29. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/_adapters.py +0 -0
  30. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/_collections.py +0 -0
  31. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/_compat.py +0 -0
  32. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/_functools.py +0 -0
  33. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/_itertools.py +0 -0
  34. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/_meta.py +0 -0
  35. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/_text.py +0 -0
  36. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/compat/__init__.py +0 -0
  37. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/compat/py39.py +0 -0
  38. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/diagnose.py +0 -0
  39. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata/py.typed +0 -0
  40. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata.egg-info/dependency_links.txt +0 -0
  41. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata.egg-info/requires.txt +0 -0
  42. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/importlib_metadata.egg-info/top_level.txt +0 -0
  43. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/mypy.ini +0 -0
  44. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/pytest.ini +0 -0
  45. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/ruff.toml +0 -0
  46. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/setup.cfg +0 -0
  47. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/__init__.py +0 -0
  48. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/_context.py +0 -0
  49. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/_path.py +0 -0
  50. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/compat/__init__.py +0 -0
  51. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/compat/py312.py +0 -0
  52. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/compat/py39.py +0 -0
  53. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/compat/test_py39_compat.py +0 -0
  54. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/__init__.py +0 -0
  55. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/example-21.12-py3-none-any.whl +0 -0
  56. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/example-21.12-py3.6.egg +0 -0
  57. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/example2-1.0.0-py3-none-any.whl +0 -0
  58. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/sources/example/example/__init__.py +0 -0
  59. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/sources/example/setup.py +0 -0
  60. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/sources/example2/example2/__init__.py +0 -0
  61. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/data/sources/example2/pyproject.toml +0 -0
  62. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/test_integration.py +0 -0
  63. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/test_main.py +0 -0
  64. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tests/test_zip.py +0 -0
  65. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/towncrier.toml +0 -0
  66. {importlib_metadata-7.2.0 → importlib_metadata-7.2.1}/tox.ini +0 -0
@@ -1,3 +1,12 @@
1
+ v7.2.1
2
+ ======
3
+
4
+ Bugfixes
5
+ --------
6
+
7
+ - When reading installed files from an egg, use ``relative_to(walk_up=True)`` to honor files installed outside of the installation root. (#455)
8
+
9
+
1
10
  v7.2.0
2
11
  ======
3
12
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: importlib_metadata
3
- Version: 7.2.0
3
+ Version: 7.2.1
4
4
  Summary: Read metadata from Python packages
5
5
  Author-email: "Jason R. Coombs" <jaraco@jaraco.com>
6
- Project-URL: Homepage, https://github.com/python/importlib_metadata
6
+ Project-URL: Source, https://github.com/python/importlib_metadata
7
7
  Classifier: Development Status :: 5 - Production/Stable
8
8
  Classifier: Intended Audience :: Developers
9
9
  Classifier: License :: OSI Approved :: Apache Software License
@@ -19,7 +19,7 @@ import posixpath
19
19
  import collections
20
20
 
21
21
  from . import _meta
22
- from .compat import py39
22
+ from .compat import py39, py311
23
23
  from ._collections import FreezableDefaultDict, Pair
24
24
  from ._compat import (
25
25
  NullFinder,
@@ -570,9 +570,8 @@ class Distribution(DeprecatedNonAbstract):
570
570
  return
571
571
 
572
572
  paths = (
573
- (subdir / name)
574
- .resolve()
575
- .relative_to(self.locate_file('').resolve())
573
+ py311.relative_fix((subdir / name).resolve())
574
+ .relative_to(self.locate_file('').resolve(), walk_up=True)
576
575
  .as_posix()
577
576
  for name in text.splitlines()
578
577
  )
@@ -0,0 +1,22 @@
1
+ import os
2
+ import pathlib
3
+ import sys
4
+ import types
5
+
6
+
7
+ def wrap(path): # pragma: no cover
8
+ """
9
+ Workaround for https://github.com/python/cpython/issues/84538
10
+ to add backward compatibility for walk_up=True.
11
+ An example affected package is dask-labextension, which uses
12
+ jupyter-packaging to install JupyterLab javascript files outside
13
+ of site-packages.
14
+ """
15
+
16
+ def relative_to(root, *, walk_up=False):
17
+ return pathlib.Path(os.path.relpath(path, root))
18
+
19
+ return types.SimpleNamespace(relative_to=relative_to)
20
+
21
+
22
+ relative_fix = wrap if sys.version_info < (3, 12) else lambda x: x
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: importlib_metadata
3
- Version: 7.2.0
3
+ Version: 7.2.1
4
4
  Summary: Read metadata from Python packages
5
5
  Author-email: "Jason R. Coombs" <jaraco@jaraco.com>
6
- Project-URL: Homepage, https://github.com/python/importlib_metadata
6
+ Project-URL: Source, https://github.com/python/importlib_metadata
7
7
  Classifier: Development Status :: 5 - Production/Stable
8
8
  Classifier: Intended Audience :: Developers
9
9
  Classifier: License :: OSI Approved :: Apache Software License
@@ -40,6 +40,7 @@ importlib_metadata.egg-info/dependency_links.txt
40
40
  importlib_metadata.egg-info/requires.txt
41
41
  importlib_metadata.egg-info/top_level.txt
42
42
  importlib_metadata/compat/__init__.py
43
+ importlib_metadata/compat/py311.py
43
44
  importlib_metadata/compat/py39.py
44
45
  tests/__init__.py
45
46
  tests/_context.py
@@ -24,7 +24,7 @@ dependencies = [
24
24
  dynamic = ["version"]
25
25
 
26
26
  [project.urls]
27
- Homepage = "https://github.com/python/importlib_metadata"
27
+ Source = "https://github.com/python/importlib_metadata"
28
28
 
29
29
  [project.optional-dependencies]
30
30
  test = [
@@ -233,6 +233,40 @@ class EggInfoPkgPipInstalledNoToplevel(OnSysPath, SiteBuilder):
233
233
  }
234
234
 
235
235
 
236
+ class EggInfoPkgPipInstalledExternalDataFiles(OnSysPath, SiteBuilder):
237
+ files: FilesSpec = {
238
+ "egg_with_module_pkg.egg-info": {
239
+ "PKG-INFO": "Name: egg_with_module-pkg",
240
+ # SOURCES.txt is made from the source archive, and contains files
241
+ # (setup.py) that are not present after installation.
242
+ "SOURCES.txt": """
243
+ egg_with_module.py
244
+ setup.py
245
+ egg_with_module.json
246
+ egg_with_module_pkg.egg-info/PKG-INFO
247
+ egg_with_module_pkg.egg-info/SOURCES.txt
248
+ egg_with_module_pkg.egg-info/top_level.txt
249
+ """,
250
+ # installed-files.txt is written by pip, and is a strictly more
251
+ # accurate source than SOURCES.txt as to the installed contents of
252
+ # the package.
253
+ "installed-files.txt": """
254
+ ../../../etc/jupyter/jupyter_notebook_config.d/relative.json
255
+ /etc/jupyter/jupyter_notebook_config.d/absolute.json
256
+ ../egg_with_module.py
257
+ PKG-INFO
258
+ SOURCES.txt
259
+ top_level.txt
260
+ """,
261
+ # missing top_level.txt (to trigger fallback to installed-files.txt)
262
+ },
263
+ "egg_with_module.py": """
264
+ def main():
265
+ print("hello world")
266
+ """,
267
+ }
268
+
269
+
236
270
  class EggInfoPkgPipInstalledNoModules(OnSysPath, SiteBuilder):
237
271
  files: FilesSpec = {
238
272
  "egg_with_no_modules_pkg.egg-info": {
@@ -29,6 +29,7 @@ class APITests(
29
29
  fixtures.EggInfoPkg,
30
30
  fixtures.EggInfoPkgPipInstalledNoToplevel,
31
31
  fixtures.EggInfoPkgPipInstalledNoModules,
32
+ fixtures.EggInfoPkgPipInstalledExternalDataFiles,
32
33
  fixtures.EggInfoPkgSourcesFallback,
33
34
  fixtures.DistInfoPkg,
34
35
  fixtures.DistInfoPkgWithDot,