From dad60eeef4cbace1e3d51628cd442f1544ad48f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kul=C3=ADk?= Date: Thu, 10 Apr 2025 08:29:59 +0200 Subject: [PATCH 1/3] Fix find_distributions with non-empty context --- src/pyproject_hooks/_in_process/_in_process.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pyproject_hooks/_in_process/_in_process.py b/src/pyproject_hooks/_in_process/_in_process.py index d689bab..e4d9d33 100644 --- a/src/pyproject_hooks/_in_process/_in_process.py +++ b/src/pyproject_hooks/_in_process/_in_process.py @@ -112,7 +112,11 @@ def find_distributions(self, context=None): # Delayed import: Python 3.7 does not contain importlib.metadata from importlib.metadata import DistributionFinder, MetadataPathFinder - context = DistributionFinder.Context(path=self.backend_path) + if context is None: + context = DistributionFinder.Context(path=self.backend_path) + else: + args = dict(vars(context), path=self.backend_path) + context = DistributionFinder.Context(**args) return MetadataPathFinder.find_distributions(context=context) From 114a4477a0bccdef590ec2e55a067787b525a4e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kul=C3=ADk?= Date: Thu, 10 Apr 2025 13:09:07 +0200 Subject: [PATCH 2/3] Update src/pyproject_hooks/_in_process/_in_process.py Co-authored-by: Anderson Bravalheri --- src/pyproject_hooks/_in_process/_in_process.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/pyproject_hooks/_in_process/_in_process.py b/src/pyproject_hooks/_in_process/_in_process.py index e4d9d33..a247ca4 100644 --- a/src/pyproject_hooks/_in_process/_in_process.py +++ b/src/pyproject_hooks/_in_process/_in_process.py @@ -112,11 +112,8 @@ def find_distributions(self, context=None): # Delayed import: Python 3.7 does not contain importlib.metadata from importlib.metadata import DistributionFinder, MetadataPathFinder - if context is None: - context = DistributionFinder.Context(path=self.backend_path) - else: - args = dict(vars(context), path=self.backend_path) - context = DistributionFinder.Context(**args) + name = context.name if context else None + context = DistributionFinder.Context(name=name, path=self.backend_path) return MetadataPathFinder.find_distributions(context=context) From e76bdc61cefeb59cca5e6338bb686742f2289cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kul=C3=ADk?= Date: Wed, 16 Apr 2025 10:55:42 +0200 Subject: [PATCH 3/3] add test for find_distributions --- .../backend/_pkg-0.0.1.dist-info/METADATA | 2 ++ .../distribution_mismatch/backend/intree_backend.py | 6 ++++++ tests/samples/distribution_mismatch/pyproject.toml | 3 +++ .../METADATA | 0 .../entry_points.txt | 0 tests/test_inplace_hooks.py | 7 +++++++ 6 files changed, 18 insertions(+) create mode 100644 tests/samples/distribution_mismatch/backend/_pkg-0.0.1.dist-info/METADATA create mode 100644 tests/samples/distribution_mismatch/backend/intree_backend.py create mode 100644 tests/samples/distribution_mismatch/pyproject.toml rename tests/samples/pkg_intree_metadata/backend/{_test_boostrap-0.0.1.dist-info => _test_bootstrap-0.0.1.dist-info}/METADATA (100%) rename tests/samples/pkg_intree_metadata/backend/{_test_boostrap-0.0.1.dist-info => _test_bootstrap-0.0.1.dist-info}/entry_points.txt (100%) diff --git a/tests/samples/distribution_mismatch/backend/_pkg-0.0.1.dist-info/METADATA b/tests/samples/distribution_mismatch/backend/_pkg-0.0.1.dist-info/METADATA new file mode 100644 index 0000000..31e56a9 --- /dev/null +++ b/tests/samples/distribution_mismatch/backend/_pkg-0.0.1.dist-info/METADATA @@ -0,0 +1,2 @@ +Name: _pkg +Version: 0.0.1 diff --git a/tests/samples/distribution_mismatch/backend/intree_backend.py b/tests/samples/distribution_mismatch/backend/intree_backend.py new file mode 100644 index 0000000..d54d986 --- /dev/null +++ b/tests/samples/distribution_mismatch/backend/intree_backend.py @@ -0,0 +1,6 @@ +from importlib.metadata import distribution + + +def get_requires_for_build_sdist(config_settings): + dist = distribution("setuptools") # not present in backend-path + return [dist.version] diff --git a/tests/samples/distribution_mismatch/pyproject.toml b/tests/samples/distribution_mismatch/pyproject.toml new file mode 100644 index 0000000..fd4e8cb --- /dev/null +++ b/tests/samples/distribution_mismatch/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +build-backend = 'intree_backend' +backend-path = ['backend'] diff --git a/tests/samples/pkg_intree_metadata/backend/_test_boostrap-0.0.1.dist-info/METADATA b/tests/samples/pkg_intree_metadata/backend/_test_bootstrap-0.0.1.dist-info/METADATA similarity index 100% rename from tests/samples/pkg_intree_metadata/backend/_test_boostrap-0.0.1.dist-info/METADATA rename to tests/samples/pkg_intree_metadata/backend/_test_bootstrap-0.0.1.dist-info/METADATA diff --git a/tests/samples/pkg_intree_metadata/backend/_test_boostrap-0.0.1.dist-info/entry_points.txt b/tests/samples/pkg_intree_metadata/backend/_test_bootstrap-0.0.1.dist-info/entry_points.txt similarity index 100% rename from tests/samples/pkg_intree_metadata/backend/_test_boostrap-0.0.1.dist-info/entry_points.txt rename to tests/samples/pkg_intree_metadata/backend/_test_bootstrap-0.0.1.dist-info/entry_points.txt diff --git a/tests/test_inplace_hooks.py b/tests/test_inplace_hooks.py index 1df12d6..39b80a3 100644 --- a/tests/test_inplace_hooks.py +++ b/tests/test_inplace_hooks.py @@ -100,6 +100,13 @@ def test_intree_backend_importlib_metadata_interoperation(): ] +def test_distribution_mismatch(): + pytest.importorskip("importlib.metadata") + + hooks = get_hooks("distribution_mismatch") + assert hooks.get_requires_for_build_sdist({}) != ["0.0.1"] + + def install_finder_with_sitecustomize(directory, mapping): finder = f""" import sys