From 81547450c8e70920cd367aab53595a706efbc460 Mon Sep 17 00:00:00 2001 From: Vincent Gao Date: Fri, 19 Jun 2026 15:06:28 +0200 Subject: [PATCH] Fix absolute RECORD path resolution --- importlib_metadata/__init__.py | 2 +- tests/test_api.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/importlib_metadata/__init__.py b/importlib_metadata/__init__.py index 2268619b..089cbe0f 100644 --- a/importlib_metadata/__init__.py +++ b/importlib_metadata/__init__.py @@ -1043,7 +1043,7 @@ def read_text(self, filename: str | os.PathLike[str]) -> str | None: read_text.__doc__ = Distribution.read_text.__doc__ def locate_file(self, path: str | os.PathLike[str]) -> SimplePath: - return self._path.parent / path + return self._path.parent / os.fspath(path) @property def _normalized_name(self): diff --git a/tests/test_api.py b/tests/test_api.py index 3dbed628..41037d10 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,4 +1,5 @@ import importlib +import pathlib import re import textwrap import unittest @@ -6,6 +7,8 @@ from importlib_metadata import ( Distribution, PackageNotFoundError, + PackagePath, + PathDistribution, Prepared, distribution, entry_points, @@ -192,6 +195,14 @@ def test_file_hash_repr(self): def test_files_dist_info(self): self._test_files(files('distinfo-pkg')) + def test_locate_file_with_windows_absolute_path(self): + dist = PathDistribution(pathlib.PureWindowsPath('C:/site/sample-1.0.dist-info')) + path = PackagePath('C:/venv/Scripts/sample.exe') + + assert dist.locate_file(path) == pathlib.PureWindowsPath( + 'C:/venv/Scripts/sample.exe' + ) + def test_files_egg_info(self): self._test_files(files('egginfo-pkg')) self._test_files(files('egg_with_module-pkg'))