Skip to content

Commit 520aa14

Browse files
committed
Fix warnings for scripts/gui_scripts with pyproject.toml (#3865)
2 parents be6c021 + 16ee218 commit 520aa14

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

changelog.d/3865.misc.rst

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fixed ``_WouldIgnoreField`` warnings for ``scripts`` and ``gui_scripts``,
2+
when ``entry-points`` is not listed in dynamic.

setuptools/config/_apply_pyprojecttoml.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,12 @@ def _normalise_cmd_options(desc: List[Tuple[str, Optional[str], str]]) -> Set[st
279279
return {_normalise_cmd_option_key(fancy_option[0]) for fancy_option in desc}
280280

281281

282+
def _get_previous_entrypoints(dist: "Distribution") -> Dict[str, list]:
283+
ignore = ("console_scripts", "gui_scripts")
284+
value = getattr(dist, "entry_points", None) or {}
285+
return {k: v for k, v in value.items() if k not in ignore}
286+
287+
282288
def _attrgetter(attr):
283289
"""
284290
Similar to ``operator.attrgetter`` but returns None if ``attr`` is not found
@@ -343,7 +349,7 @@ def _acessor(obj):
343349
"keywords": _attrgetter("metadata.keywords"),
344350
"classifiers": _attrgetter("metadata.classifiers"),
345351
"urls": _attrgetter("metadata.project_urls"),
346-
"entry-points": _attrgetter("entry_points"),
352+
"entry-points": _get_previous_entrypoints,
347353
"dependencies": _some_attrgetter("_orig_install_requires", "install_requires"),
348354
"optional-dependencies": _some_attrgetter("_orig_extras_require", "extras_require"),
349355
}

setuptools/tests/config/test_apply_pyprojecttoml.py

+12
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,18 @@ def test_optional_dependencies_dont_remove_env_markers(self, tmp_path):
363363
assert "importlib-resources" in reqs
364364
assert "bar" in reqs
365365

366+
@pytest.mark.parametrize(
367+
"field,group",
368+
[("scripts", "console_scripts"), ("gui-scripts", "gui_scripts")]
369+
)
370+
@pytest.mark.filterwarnings("error")
371+
def test_scripts_dont_require_dynamic_entry_points(self, tmp_path, field, group):
372+
# Issue 3862
373+
pyproject = self.pyproject(tmp_path, [field])
374+
dist = makedist(tmp_path, entry_points={group: ["foobar=foobar:main"]})
375+
dist = pyprojecttoml.apply_configuration(dist, pyproject)
376+
assert group in dist.entry_points
377+
366378

367379
class TestMeta:
368380
def test_example_file_in_sdist(self, setuptools_sdist):

0 commit comments

Comments
 (0)