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__.py71
1 files changed, 48 insertions, 23 deletions
diff --git a/src/setuptools_scm/__init__.py b/src/setuptools_scm/__init__.py
index f3886ed..47b9e44 100644
--- a/src/setuptools_scm/__init__.py
+++ b/src/setuptools_scm/__init__.py
@@ -5,12 +5,18 @@
import os
import warnings
-from .config import Configuration
-from .utils import function_has_arg, string_types
+from .config import (
+ Configuration,
+ DEFAULT_VERSION_SCHEME,
+ DEFAULT_LOCAL_SCHEME,
+ DEFAULT_TAG_REGEX,
+)
+from .utils import function_has_arg, string_types, trace
from .version import format_version, meta
from .discover import iter_matching_entrypoints
PRETEND_KEY = "SETUPTOOLS_SCM_PRETEND_VERSION"
+PRETEND_KEY_NAMED = PRETEND_KEY + "_FOR_{name}"
TEMPLATES = {
".py": """\
@@ -18,6 +24,7 @@ TEMPLATES = {
# file generated by setuptools_scm
# don't change, don't track in version control
version = {version!r}
+version_tuple = {version_tuple!r}
""",
".txt": "{version}",
}
@@ -75,12 +82,34 @@ def dump_version(root, version, write_to, template=None):
os.path.splitext(target)[1], target
)
)
+
+ # version_tuple: each field is converted to an int if possible or kept as string
+ fields = tuple(version.split("."))
+ version_fields = []
+ for field in fields:
+ try:
+ v = int(field)
+ except ValueError:
+ v = field
+ version_fields.append(v)
+
with open(target, "w") as fp:
- fp.write(template.format(version=version))
+ fp.write(template.format(version=version, version_tuple=tuple(version_fields)))
def _do_parse(config):
- pretended = os.environ.get(PRETEND_KEY)
+
+ trace("dist name:", config.dist_name)
+ if config.dist_name is not None:
+ pretended = os.environ.get(
+ PRETEND_KEY_NAMED.format(name=config.dist_name.upper())
+ )
+ else:
+ pretended = None
+
+ if pretended is None:
+ pretended = os.environ.get(PRETEND_KEY)
+
if pretended:
# we use meta here since the pretended version
# must adhere to the pep to begin with
@@ -116,16 +145,18 @@ 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,
+ parentdir_prefix_version=None,
fallback_version=None,
fallback_root=".",
parse=None,
git_describe_command=None,
+ dist_name=None,
):
"""
If supplied, relative_to should be a file from which root may
@@ -134,30 +165,24 @@ 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)
+
+def _get_version(config):
parsed_version = _do_parse(config)
if parsed_version:
version_string = format_version(
- parsed_version, version_scheme=version_scheme, local_scheme=local_scheme
+ parsed_version,
+ version_scheme=config.version_scheme,
+ local_scheme=config.local_scheme,
)
dump_version(
- root=root,
+ root=config.root,
version=version_string,
- write_to=write_to,
- template=write_to_template,
+ write_to=config.write_to,
+ template=config.write_to_template,
)
return version_string