summaryrefslogtreecommitdiff
path: root/src/setuptools_scm/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/setuptools_scm/__init__.py')
-rw-r--r--src/setuptools_scm/__init__.py23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/setuptools_scm/__init__.py b/src/setuptools_scm/__init__.py
index f9ab5c2..83cf5bb 100644
--- a/src/setuptools_scm/__init__.py
+++ b/src/setuptools_scm/__init__.py
@@ -34,9 +34,9 @@ def version_from_scm(root):
return _version_from_entrypoint(config, "setuptools_scm.parse_scm")
-def _call_entrypoint_fn(config, fn):
+def _call_entrypoint_fn(root, config, fn):
if function_has_arg(fn, "config"):
- return fn(config.absolute_root, config=config)
+ return fn(root, config=config)
else:
warnings.warn(
"parse functions are required to provide a named argument"
@@ -44,12 +44,17 @@ def _call_entrypoint_fn(config, fn):
category=PendingDeprecationWarning,
stacklevel=2,
)
- return fn(config.absolute_root)
+ return fn(root)
-def _version_from_entrypoint(config, entrypoint):
- for ep in iter_matching_entrypoints(config.absolute_root, entrypoint):
- version = _call_entrypoint_fn(config, ep.load())
+def _version_from_entrypoint(config, entrypoint, fallback=False):
+ if fallback:
+ entrypoint += "_fallback"
+ root = config.fallback_root
+ else:
+ root = config.absolute_root
+ for ep in iter_matching_entrypoints(root, entrypoint):
+ version = _call_entrypoint_fn(root, config, ep.load())
if version:
return version
@@ -81,20 +86,20 @@ def _do_parse(config):
return meta(tag=pretended, preformatted=True, config=config)
if config.parse:
- parse_result = _call_entrypoint_fn(config, config.parse)
+ parse_result = _call_entrypoint_fn(config.absolute_root, config, config.parse)
if isinstance(parse_result, string_types):
raise TypeError(
"version parse result was a string\nplease return a parsed version"
)
version = parse_result or _version_from_entrypoint(
- config, "setuptools_scm.parse_scm_fallback"
+ config, "setuptools_scm.parse_scm", fallback=True
)
else:
# include fallbacks after dropping them from the main entrypoint
version = _version_from_entrypoint(
config, "setuptools_scm.parse_scm"
) or _version_from_entrypoint(
- config, "setuptools_scm.parse_scm_fallback"
+ config, "setuptools_scm.parse_scm", fallback=True
)
if version: