diff options
Diffstat (limited to 'src/setuptools_scm/__init__.py')
-rw-r--r-- | src/setuptools_scm/__init__.py | 23 |
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: |