diff options
author | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2023-03-28 13:46:19 +0100 |
---|---|---|
committer | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2023-03-28 13:46:19 +0100 |
commit | 520aa1402699ffdb6f0b0bb106a6850d74e02c12 (patch) | |
tree | d4e780f12526e93573198084c555a75bdf1fcf15 | |
parent | be6c0218bcba78dbd4ea0b5a8bb9acd5d5306240 (diff) | |
parent | 16ee218aa0243894b770a564900678b3f2d703b3 (diff) | |
download | python-setuptools-git-520aa1402699ffdb6f0b0bb106a6850d74e02c12.tar.gz |
Fix warnings for scripts/gui_scripts with pyproject.toml (#3865)
-rw-r--r-- | changelog.d/3865.misc.rst | 2 | ||||
-rw-r--r-- | setuptools/config/_apply_pyprojecttoml.py | 8 | ||||
-rw-r--r-- | setuptools/tests/config/test_apply_pyprojecttoml.py | 12 |
3 files changed, 21 insertions, 1 deletions
diff --git a/changelog.d/3865.misc.rst b/changelog.d/3865.misc.rst new file mode 100644 index 00000000..f46fc579 --- /dev/null +++ b/changelog.d/3865.misc.rst @@ -0,0 +1,2 @@ +Fixed ``_WouldIgnoreField`` warnings for ``scripts`` and ``gui_scripts``, +when ``entry-points`` is not listed in dynamic. diff --git a/setuptools/config/_apply_pyprojecttoml.py b/setuptools/config/_apply_pyprojecttoml.py index c805e639..a2b44365 100644 --- a/setuptools/config/_apply_pyprojecttoml.py +++ b/setuptools/config/_apply_pyprojecttoml.py @@ -279,6 +279,12 @@ def _normalise_cmd_options(desc: List[Tuple[str, Optional[str], str]]) -> Set[st return {_normalise_cmd_option_key(fancy_option[0]) for fancy_option in desc} +def _get_previous_entrypoints(dist: "Distribution") -> Dict[str, list]: + ignore = ("console_scripts", "gui_scripts") + value = getattr(dist, "entry_points", None) or {} + return {k: v for k, v in value.items() if k not in ignore} + + def _attrgetter(attr): """ Similar to ``operator.attrgetter`` but returns None if ``attr`` is not found @@ -343,7 +349,7 @@ _PREVIOUSLY_DEFINED = { "keywords": _attrgetter("metadata.keywords"), "classifiers": _attrgetter("metadata.classifiers"), "urls": _attrgetter("metadata.project_urls"), - "entry-points": _attrgetter("entry_points"), + "entry-points": _get_previous_entrypoints, "dependencies": _some_attrgetter("_orig_install_requires", "install_requires"), "optional-dependencies": _some_attrgetter("_orig_extras_require", "extras_require"), } diff --git a/setuptools/tests/config/test_apply_pyprojecttoml.py b/setuptools/tests/config/test_apply_pyprojecttoml.py index 3a66d494..0a34939a 100644 --- a/setuptools/tests/config/test_apply_pyprojecttoml.py +++ b/setuptools/tests/config/test_apply_pyprojecttoml.py @@ -363,6 +363,18 @@ class TestPresetField: assert "importlib-resources" in reqs assert "bar" in reqs + @pytest.mark.parametrize( + "field,group", + [("scripts", "console_scripts"), ("gui-scripts", "gui_scripts")] + ) + @pytest.mark.filterwarnings("error") + def test_scripts_dont_require_dynamic_entry_points(self, tmp_path, field, group): + # Issue 3862 + pyproject = self.pyproject(tmp_path, [field]) + dist = makedist(tmp_path, entry_points={group: ["foobar=foobar:main"]}) + dist = pyprojecttoml.apply_configuration(dist, pyproject) + assert group in dist.entry_points + class TestMeta: def test_example_file_in_sdist(self, setuptools_sdist): |