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