Skip to content

Commit fc2d841

Browse files
use importlib_metadata on python <3.10
fixes #1013 by no longer reporting duplicate distributions the bugfix was included in python3.10 via importlib_metadata 4.6
1 parent 5814c76 commit fc2d841

File tree

2 files changed

+19
-22
lines changed

2 files changed

+19
-22
lines changed

pyproject.toml

+15-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ build-backend = "_own_version_helper:build_meta"
55
requires = [
66
"setuptools>=61",
77
'tomli<=2.0.2; python_version < "3.11"',
8+
'importlib-metadata>=4.6; python_version < "3.10"',
89
]
910
backend-path = [
1011
".",
@@ -43,9 +44,10 @@ dynamic = [
4344
dependencies = [
4445
"packaging>=20",
4546
# https://github.com/pypa/setuptools-scm/issues/1112 - re-pin in a breaking release
46-
"setuptools", # >=61",
47+
"setuptools >= 61",
4748
'tomli>=1; python_version < "3.11"',
4849
'typing-extensions; python_version < "3.10"',
50+
'importlib-metadata>=4.6; python_version < "3.10"',
4951
]
5052
[project.optional-dependencies]
5153
docs = [
@@ -69,38 +71,49 @@ test = [
6971
]
7072
toml = [
7173
]
74+
7275
[project.urls]
7376
documentation = "https://setuptools-scm.readthedocs.io/"
7477
repository = "https://github.com/pypa/setuptools-scm/"
78+
7579
[project.entry-points."distutils.setup_keywords"]
7680
use_scm_version = "setuptools_scm._integration.setuptools:version_keyword"
81+
7782
[project.entry-points."pipx.run"]
7883
setuptools-scm = "setuptools_scm._cli:main"
7984
setuptools_scm = "setuptools_scm._cli:main"
85+
8086
[project.entry-points."setuptools.file_finders"]
8187
setuptools_scm = "setuptools_scm._file_finders:find_files"
88+
8289
[project.entry-points."setuptools.finalize_distribution_options"]
8390
setuptools_scm = "setuptools_scm._integration.setuptools:infer_version"
91+
8492
[project.entry-points."setuptools_scm.files_command"]
8593
".git" = "setuptools_scm._file_finders.git:git_find_files"
8694
".hg" = "setuptools_scm._file_finders.hg:hg_find_files"
95+
8796
[project.entry-points."setuptools_scm.files_command_fallback"]
8897
".git_archival.txt" = "setuptools_scm._file_finders.git:git_archive_find_files"
8998
".hg_archival.txt" = "setuptools_scm._file_finders.hg:hg_archive_find_files"
99+
90100
[project.entry-points."setuptools_scm.local_scheme"]
91101
dirty-tag = "setuptools_scm.version:get_local_dirty_tag"
92102
no-local-version = "setuptools_scm.version:get_no_local_node"
93103
node-and-date = "setuptools_scm.version:get_local_node_and_date"
94104
node-and-timestamp = "setuptools_scm.version:get_local_node_and_timestamp"
105+
95106
[project.entry-points."setuptools_scm.parse_scm"]
96107
".git" = "setuptools_scm.git:parse"
97108
".hg" = "setuptools_scm.hg:parse"
109+
98110
[project.entry-points."setuptools_scm.parse_scm_fallback"]
99111
".git_archival.txt" = "setuptools_scm.git:parse_archival"
100112
".hg_archival.txt" = "setuptools_scm.hg:parse_archival"
101113
PKG-INFO = "setuptools_scm.fallbacks:parse_pkginfo"
102114
"pyproject.toml" = "setuptools_scm.fallbacks:fallback_version"
103115
"setup.py" = "setuptools_scm.fallbacks:fallback_version"
116+
104117
[project.entry-points."setuptools_scm.version_scheme"]
105118
"calver-by-date" = "setuptools_scm.version:calver_by_date"
106119
"guess-next-dev" = "setuptools_scm.version:guess_next_dev_version"
@@ -133,7 +146,7 @@ order-by-type = true
133146
ignore = ["PP305", "GH103", "GH212", "MY100", "PC111", "PC160", "PC170", "PC180", "PC901"]
134147

135148
[tool.pytest.ini_options]
136-
minversion = "7"
149+
minversion = "8"
137150
testpaths = ["testing"]
138151
filterwarnings = [
139152
"error",

src/setuptools_scm/_entrypoints.py

+4-20
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,12 @@
1717
from ._config import Configuration
1818
from ._config import ParseFunction
1919

20-
21-
from importlib.metadata import EntryPoint as EntryPoint
22-
2320
if sys.version_info[:2] < (3, 10):
24-
from importlib.metadata import entry_points as legacy_entry_points
25-
26-
class EntryPoints:
27-
_groupdata: list[EntryPoint]
28-
29-
def __init__(self, groupdata: list[EntryPoint]) -> None:
30-
self._groupdata = groupdata
31-
32-
def select(self, name: str) -> EntryPoints:
33-
return EntryPoints([x for x in self._groupdata if x.name == name])
34-
35-
def __iter__(self) -> Iterator[EntryPoint]:
36-
return iter(self._groupdata)
37-
38-
def entry_points(group: str) -> EntryPoints:
39-
return EntryPoints(legacy_entry_points()[group])
40-
21+
from importlib_metadata import EntryPoint as EntryPoint
22+
from importlib_metadata import EntryPoints
23+
from importlib_metadata import entry_points
4124
else:
25+
from importlib.metadata import EntryPoint as EntryPoint
4226
from importlib.metadata import EntryPoints
4327
from importlib.metadata import entry_points
4428

0 commit comments

Comments
 (0)