summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnderson Bravalheri <andersonbravalheri@gmail.com>2023-03-28 13:46:19 +0100
committerAnderson Bravalheri <andersonbravalheri@gmail.com>2023-03-28 13:46:19 +0100
commit520aa1402699ffdb6f0b0bb106a6850d74e02c12 (patch)
treed4e780f12526e93573198084c555a75bdf1fcf15
parentbe6c0218bcba78dbd4ea0b5a8bb9acd5d5306240 (diff)
parent16ee218aa0243894b770a564900678b3f2d703b3 (diff)
downloadpython-setuptools-git-520aa1402699ffdb6f0b0bb106a6850d74e02c12.tar.gz
Fix warnings for scripts/gui_scripts with pyproject.toml (#3865)
-rw-r--r--changelog.d/3865.misc.rst2
-rw-r--r--setuptools/config/_apply_pyprojecttoml.py8
-rw-r--r--setuptools/tests/config/test_apply_pyprojecttoml.py12
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):