summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2019-11-28 20:58:36 +0100
committerRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2019-11-28 20:58:36 +0100
commit4014d4d27ddf7d39fa2b406ecde855efe58d1ae0 (patch)
tree917023086a78adec7e78ad94f5a92700331b2f09
parentb7abd455dfa323cda75f903c4e6bb5c11b900e1d (diff)
downloadsetuptools-scm-4014d4d27ddf7d39fa2b406ecde855efe58d1ae0.tar.gz
unify configruation initialization and configuration defaultsfix-374
-rw-r--r--src/setuptools_scm/__init__.py26
-rw-r--r--src/setuptools_scm/config.py52
-rw-r--r--src/setuptools_scm/integration.py10
3 files changed, 41 insertions, 47 deletions
diff --git a/src/setuptools_scm/__init__.py b/src/setuptools_scm/__init__.py
index 2e05006..eebd9bb 100644
--- a/src/setuptools_scm/__init__.py
+++ b/src/setuptools_scm/__init__.py
@@ -5,7 +5,12 @@
import os
import warnings
-from .config import Configuration
+from .config import (
+ Configuration,
+ DEFAULT_VERSION_SCHEME,
+ DEFAULT_LOCAL_SCHEME,
+ DEFAULT_TAG_REGEX,
+)
from .utils import function_has_arg, string_types
from .version import format_version, meta
from .discover import iter_matching_entrypoints
@@ -116,12 +121,12 @@ def _do_parse(config):
def get_version(
root=".",
- version_scheme="guess-next-dev",
- local_scheme="node-and-date",
+ version_scheme=DEFAULT_VERSION_SCHEME,
+ local_scheme=DEFAULT_LOCAL_SCHEME,
write_to=None,
write_to_template=None,
relative_to=None,
- tag_regex=None,
+ tag_regex=DEFAULT_TAG_REGEX,
fallback_version=None,
fallback_root=".",
parse=None,
@@ -134,18 +139,7 @@ def get_version(
root of the repository by supplying ``__file__``.
"""
- 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
- config.write_to_template = write_to_template
- config.relative_to = relative_to
- config.tag_regex = tag_regex
- config.fallback_version = fallback_version
- config.parse = parse
- config.git_describe_command = git_describe_command
+ config = Configuration(**locals())
return _get_version(config)
diff --git a/src/setuptools_scm/config.py b/src/setuptools_scm/config.py
index d548c81..7dee1e4 100644
--- a/src/setuptools_scm/config.py
+++ b/src/setuptools_scm/config.py
@@ -7,7 +7,8 @@ import warnings
from .utils import trace
DEFAULT_TAG_REGEX = r"^(?:[\w-]+-)?(?P<version>[vV]?\d+(?:\.\d+){0,2}[^\+]+)(?:\+.*)?$"
-DEFAULT_VERSION_SCHEME = "version_scheme"
+DEFAULT_VERSION_SCHEME = "guess-next-dev"
+DEFAULT_LOCAL_SCHEME = "node-and-date"
def _check_tag_regex(value):
@@ -39,32 +40,34 @@ def _check_absolute_root(root, relative_to):
class Configuration(object):
""" Global configuration model """
- _root = None
- version_scheme = None
- local_scheme = None
- write_to = None
- write_to_template = None
- fallback_version = None
- _relative_to = None
- parse = None
- _tag_regex = None
- _absolute_root = None
-
- def __init__(self, relative_to=None, root="."):
+ def __init__(
+ self,
+ relative_to=None,
+ root=".",
+ version_scheme=DEFAULT_VERSION_SCHEME,
+ local_scheme=DEFAULT_LOCAL_SCHEME,
+ write_to=None,
+ write_to_template=None,
+ tag_regex=DEFAULT_TAG_REGEX,
+ fallback_version=None,
+ fallback_root=".",
+ parse=None,
+ git_describe_command=None,
+ ):
# TODO:
self._relative_to = relative_to
self._root = "."
self.root = root
- self.version_scheme = DEFAULT_VERSION_SCHEME
- self.local_scheme = "node-and-date"
- self.write_to = ""
- self.write_to_template = None
- self.fallback_version = None
- self.fallback_root = "."
- self.parse = None
+ self.version_scheme = version_scheme
+ self.local_scheme = local_scheme
+ self.write_to = write_to
+ self.write_to_template = write_to_template
+ self.fallback_version = fallback_version
+ self.fallback_root = fallback_root
+ self.parse = parse
self.tag_regex = DEFAULT_TAG_REGEX
- self.git_describe_command = None
+ self.git_describe_command = git_describe_command
@property
def fallback_root(self):
@@ -106,10 +109,6 @@ class Configuration(object):
def tag_regex(self, value):
self._tag_regex = _check_tag_regex(value)
- def _load(self, values):
- vars(self).update(values)
- return self
-
@classmethod
def from_file(cls, name="pyproject.toml"):
"""
@@ -120,4 +119,5 @@ class Configuration(object):
"""
with open(name) as strm:
defn = __import__("toml").load(strm)
- return cls()._load(defn.get("tool", {})["setuptools_scm"])
+ section = defn.get("tool", {})["setuptools_scm"]
+ return cls(**section)
diff --git a/src/setuptools_scm/integration.py b/src/setuptools_scm/integration.py
index 41dcbbb..c623db7 100644
--- a/src/setuptools_scm/integration.py
+++ b/src/setuptools_scm/integration.py
@@ -2,7 +2,7 @@ from pkg_resources import iter_entry_points
from .version import _warn_if_setuptools_outdated
from .utils import do, trace_exception
-from . import get_version
+from . import _get_version, Configuration
def version_keyword(dist, keyword, value):
@@ -13,8 +13,8 @@ def version_keyword(dist, keyword, value):
value = {}
if getattr(value, "__call__", None):
value = value()
-
- dist.metadata.version = get_version(**value)
+ config = Configuration(**value)
+ dist.metadata.version = _get_version(config)
def find_files(path=""):
@@ -42,7 +42,7 @@ def _args_from_toml(name="pyproject.toml"):
def infer_version(dist):
try:
- args = _args_from_toml()
+ config = Configuration.from_file()
except Exception:
return trace_exception()
- dist.metadata.version = get_version(**args)
+ dist.metadata.version = _get_version(config)