mirror of https://github.com/python/cpython
gh-120910: Fix issue resolving relative paths outside site-packages. (#120911)
Incorporates changes from importlib_metadata 7.2.1.
This commit is contained in:
parent
0b918e81c1
commit
1ba0bb21ed
|
@ -567,7 +567,7 @@ class Distribution(DeprecatedNonAbstract):
|
||||||
paths = (
|
paths = (
|
||||||
(subdir / name)
|
(subdir / name)
|
||||||
.resolve()
|
.resolve()
|
||||||
.relative_to(self.locate_file('').resolve())
|
.relative_to(self.locate_file('').resolve(), walk_up=True)
|
||||||
.as_posix()
|
.as_posix()
|
||||||
for name in text.splitlines()
|
for name in text.splitlines()
|
||||||
)
|
)
|
||||||
|
|
|
@ -234,6 +234,40 @@ class EggInfoPkgPipInstalledNoToplevel(OnSysPath, SiteBuilder):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class EggInfoPkgPipInstalledExternalDataFiles(OnSysPath, SiteBuilder):
|
||||||
|
files: FilesSpec = {
|
||||||
|
"egg_with_module_pkg.egg-info": {
|
||||||
|
"PKG-INFO": "Name: egg_with_module-pkg",
|
||||||
|
# SOURCES.txt is made from the source archive, and contains files
|
||||||
|
# (setup.py) that are not present after installation.
|
||||||
|
"SOURCES.txt": """
|
||||||
|
egg_with_module.py
|
||||||
|
setup.py
|
||||||
|
egg_with_module.json
|
||||||
|
egg_with_module_pkg.egg-info/PKG-INFO
|
||||||
|
egg_with_module_pkg.egg-info/SOURCES.txt
|
||||||
|
egg_with_module_pkg.egg-info/top_level.txt
|
||||||
|
""",
|
||||||
|
# installed-files.txt is written by pip, and is a strictly more
|
||||||
|
# accurate source than SOURCES.txt as to the installed contents of
|
||||||
|
# the package.
|
||||||
|
"installed-files.txt": """
|
||||||
|
../../../etc/jupyter/jupyter_notebook_config.d/relative.json
|
||||||
|
/etc/jupyter/jupyter_notebook_config.d/absolute.json
|
||||||
|
../egg_with_module.py
|
||||||
|
PKG-INFO
|
||||||
|
SOURCES.txt
|
||||||
|
top_level.txt
|
||||||
|
""",
|
||||||
|
# missing top_level.txt (to trigger fallback to installed-files.txt)
|
||||||
|
},
|
||||||
|
"egg_with_module.py": """
|
||||||
|
def main():
|
||||||
|
print("hello world")
|
||||||
|
""",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class EggInfoPkgPipInstalledNoModules(OnSysPath, SiteBuilder):
|
class EggInfoPkgPipInstalledNoModules(OnSysPath, SiteBuilder):
|
||||||
files: FilesSpec = {
|
files: FilesSpec = {
|
||||||
"egg_with_no_modules_pkg.egg-info": {
|
"egg_with_no_modules_pkg.egg-info": {
|
||||||
|
|
|
@ -29,6 +29,7 @@ class APITests(
|
||||||
fixtures.EggInfoPkg,
|
fixtures.EggInfoPkg,
|
||||||
fixtures.EggInfoPkgPipInstalledNoToplevel,
|
fixtures.EggInfoPkgPipInstalledNoToplevel,
|
||||||
fixtures.EggInfoPkgPipInstalledNoModules,
|
fixtures.EggInfoPkgPipInstalledNoModules,
|
||||||
|
fixtures.EggInfoPkgPipInstalledExternalDataFiles,
|
||||||
fixtures.EggInfoPkgSourcesFallback,
|
fixtures.EggInfoPkgSourcesFallback,
|
||||||
fixtures.DistInfoPkg,
|
fixtures.DistInfoPkg,
|
||||||
fixtures.DistInfoPkgWithDot,
|
fixtures.DistInfoPkgWithDot,
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
When reading installed files from an egg, use ``relative_to(walk_up=True)``
|
||||||
|
to honor files installed outside of the installation root.
|
Loading…
Reference in New Issue