summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIonel Cristian Mărieș <contact@ionelmc.ro>2019-05-10 14:43:31 +0300
committerIonel Cristian Mărieș <contact@ionelmc.ro>2019-05-10 14:45:33 +0300
commit686a26db8bb953a0a450e4e2b94d155c0ef28618 (patch)
treed273b874c2feee1aec73e1228c6d3281ed7fc02c
parentea4a6e5eb885a2f013e1b3e5374476dceec2a2fa (diff)
downloadsetuptools-scm-686a26db8bb953a0a450e4e2b94d155c0ef28618.tar.gz
Don't pass entrypoing name around anymore and allow passing fallback_root to get_version.
-rw-r--r--src/setuptools_scm/__init__.py19
-rw-r--r--src/setuptools_scm/config.py10
-rw-r--r--testing/conftest.py2
-rw-r--r--testing/test_basic_api.py3
-rw-r--r--testing/test_regressions.py4
5 files changed, 22 insertions, 16 deletions
diff --git a/src/setuptools_scm/__init__.py b/src/setuptools_scm/__init__.py
index 83cf5bb..0c1f9ad 100644
--- a/src/setuptools_scm/__init__.py
+++ b/src/setuptools_scm/__init__.py
@@ -31,7 +31,7 @@ def version_from_scm(root):
config = Configuration()
config.root = root
# TODO: Is it API?
- return _version_from_entrypoint(config, "setuptools_scm.parse_scm")
+ return _version_from_entrypoints(config)
def _call_entrypoint_fn(root, config, fn):
@@ -47,11 +47,12 @@ def _call_entrypoint_fn(root, config, fn):
return fn(root)
-def _version_from_entrypoint(config, entrypoint, fallback=False):
+def _version_from_entrypoints(config, fallback=False):
if fallback:
- entrypoint += "_fallback"
+ entrypoint = "setuptools_scm.parse_scm_fallback"
root = config.fallback_root
else:
+ entrypoint = "setuptools_scm.parse_scm"
root = config.absolute_root
for ep in iter_matching_entrypoints(root, entrypoint):
version = _call_entrypoint_fn(root, config, ep.load())
@@ -91,16 +92,10 @@ def _do_parse(config):
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=True
- )
+ version = parse_result or _version_from_entrypoints(config, 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=True
- )
+ version = _version_from_entrypoints(config) or _version_from_entrypoints(config, fallback=True)
if version:
return version
@@ -126,6 +121,7 @@ def get_version(
relative_to=None,
tag_regex=None,
fallback_version=None,
+ fallback_root=".",
parse=None,
git_describe_command=None,
):
@@ -138,6 +134,7 @@ def get_version(
config = Configuration()
config.root = root
+ config.fallback_root = fallback_root
config.version_scheme = version_scheme
config.local_scheme = local_scheme
config.write_to = write_to
diff --git a/src/setuptools_scm/config.py b/src/setuptools_scm/config.py
index f093c2e..38f79ae 100644
--- a/src/setuptools_scm/config.py
+++ b/src/setuptools_scm/config.py
@@ -61,12 +61,20 @@ class Configuration(object):
self.write_to = ""
self.write_to_template = None
self.fallback_version = None
- self.fallback_root = _check_absolute_root(".", None)
+ self.fallback_root = "."
self.parse = None
self.tag_regex = DEFAULT_TAG_REGEX
self.git_describe_command = None
@property
+ def fallback_root(self):
+ return self._fallback_root
+
+ @fallback_root.setter
+ def fallback_root(self, value):
+ self._fallback_root = os.path.abspath(value)
+
+ @property
def absolute_root(self):
return self._absolute_root
diff --git a/testing/conftest.py b/testing/conftest.py
index fb81953..0d34731 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -63,7 +63,7 @@ class Wd(object):
__tracebackhide__ = True
from setuptools_scm import get_version
- version = get_version(root=str(self.cwd), **kw)
+ version = get_version(root=str(self.cwd), fallback_root=str(self.cwd), **kw)
print(version)
return version
diff --git a/testing/test_basic_api.py b/testing/test_basic_api.py
index 5b5c6d6..f342e23 100644
--- a/testing/test_basic_api.py
+++ b/testing/test_basic_api.py
@@ -23,8 +23,9 @@ def test_data_from_mime(tmpdir):
assert res == {"name": "test", "revision": "1"}
-def test_version_from_pkginfo(wd):
+def test_version_from_pkginfo(wd, monkeypatch):
wd.write("PKG-INFO", "Version: 0.1")
+
assert wd.version == "0.1"
# replicate issue 167
diff --git a/testing/test_regressions.py b/testing/test_regressions.py
index 9327244..f3b0fc6 100644
--- a/testing/test_regressions.py
+++ b/testing/test_regressions.py
@@ -43,10 +43,10 @@ def test_pip_egg_info(tmpdir, monkeypatch):
)
with pytest.raises(LookupError):
- get_version(root=p.strpath)
+ get_version(root=p.strpath, fallback_root=p.strpath)
p.ensure("pip-egg-info/random.egg-info/PKG-INFO").write("Version: 1.0")
- assert get_version(root=p.strpath) == "1.0"
+ assert get_version(root=p.strpath, fallback_root=p.strpath) == "1.0"
@pytest.mark.issue(164)