Skip to content

Commit 1cfcec1

Browse files
iterate multiple entrypoints when looking for versions
this avoid breaking in situations like pip installing its own incomplete egg info fixes #164
1 parent 5bd8bbb commit 1cfcec1

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
v1.15.4
2+
=======
3+
4+
* fix issue #164: iterate all found entry points to avoid erros when pip remakes egg-info
5+
16
v1.15.3
27
=======
38

setuptools_scm/__init__.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from .utils import trace
1010
from .version import format_version, meta, ScmVersion
11-
from .discover import find_matching_entrypoint
11+
from .discover import iter_matching_entrypoints
1212

1313
PRETEND_KEY = 'SETUPTOOLS_SCM_PRETEND_VERSION'
1414

@@ -32,9 +32,10 @@ def version_from_scm(root):
3232

3333

3434
def _version_from_entrypoint(root, entrypoint):
35-
ep = find_matching_entrypoint(root, entrypoint)
36-
if ep:
37-
return ep.load()(root)
35+
for ep in iter_matching_entrypoints(root, entrypoint):
36+
version = ep.load()(root)
37+
if version:
38+
return version
3839

3940

4041
def dump_version(root, version, write_to, template=None):

setuptools_scm/discover.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
from .utils import trace
44

55

6-
def find_matching_entrypoint(path, entrypoint):
6+
def iter_matching_entrypoints(path, entrypoint):
77
trace('looking for ep', entrypoint, path)
88
for ep in iter_entry_points(entrypoint):
99
if os.path.exists(os.path.join(path, ep.name)):
1010
if os.path.isabs(ep.name):
1111
trace('ignoring bad ep', ep)
1212
trace('found ep', ep)
13-
return ep
13+
yield ep

setuptools_scm/integration.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from .version import _warn_if_setuptools_outdated
44
from .utils import do
5-
from .discover import find_matching_entrypoint
5+
from .discover import iter_matching_entrypoints
66
from . import get_version
77

88

@@ -15,8 +15,7 @@ def version_keyword(dist, keyword, value):
1515
if getattr(value, '__call__', None):
1616
value = value()
1717
# this piece of code is a hack to counter the mistake in root finding
18-
ep = find_matching_entrypoint('.', 'setuptools_scm.parse_scm_fallback')
19-
if ep is not None:
18+
if any(iter_matching_entrypoints('.', 'setuptools_scm.parse_scm_fallback')):
2019
value.pop('root', None)
2120
dist.metadata.version = get_version(**value)
2221

@@ -25,7 +24,8 @@ def find_files(path='.'):
2524
if not path:
2625
path = '.'
2726
abs = os.path.abspath(path)
28-
ep = find_matching_entrypoint(abs, 'setuptools_scm.files_command')
27+
ep = next(iter_matching_entrypoints(
28+
abs, 'setuptools_scm.files_command'), None)
2929
if ep:
3030
command = ep.load()
3131
try:

0 commit comments

Comments
 (0)