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 = (
|
||||
(subdir / name)
|
||||
.resolve()
|
||||
.relative_to(self.locate_file('').resolve())
|
||||
.relative_to(self.locate_file('').resolve(), walk_up=True)
|
||||
.as_posix()
|
||||
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):
|
||||
files: FilesSpec = {
|
||||
"egg_with_no_modules_pkg.egg-info": {
|
||||
|
|
|
@ -29,6 +29,7 @@ class APITests(
|
|||
fixtures.EggInfoPkg,
|
||||
fixtures.EggInfoPkgPipInstalledNoToplevel,
|
||||
fixtures.EggInfoPkgPipInstalledNoModules,
|
||||
fixtures.EggInfoPkgPipInstalledExternalDataFiles,
|
||||
fixtures.EggInfoPkgSourcesFallback,
|
||||
fixtures.DistInfoPkg,
|
||||
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