Source code for octomachinery.utils.versiontools
"""Version tools set."""
import os
from typing import Callable, Optional, Union
from setuptools_scm import get_version
from setuptools_scm.version import ScmVersion
[docs]def get_version_from_scm_tag(
*,
root: str = '.',
relative_to: Optional[str] = None,
local_scheme: Union[
Callable[[ScmVersion], str], str,
] = 'node-and-date',
) -> str:
"""Retrieve the version from SCM tag in Git or Hg."""
try:
return get_version(
root=root,
relative_to=relative_to,
local_scheme=local_scheme,
)
except LookupError:
return 'unknown'
[docs]def cut_local_version_on_upload(version):
"""Return empty local version if uploading to PyPI."""
is_pypi_upload = os.getenv('PYPI_UPLOAD') == 'true'
if is_pypi_upload:
return ''
# pylint: disable=import-outside-toplevel
import setuptools_scm.version # only available during setup time
return setuptools_scm.version.get_local_node_and_date(version)
[docs]def get_self_version():
"""Calculate the version of the dist itself."""
return get_version_from_scm_tag(local_scheme=cut_local_version_on_upload)