scmver is a package version manager based on SCM tags.
It can be used to pass the version to the setup
function in a setup.py
, or to generate a file which contains the version.
$ pip install scmver
- Python 3.8+
- setuptools
[build-system]
requires = [
"setuptools >= 42.0",
"scmver[toml] >= 1.7",
]
build-backend = "setuptools.build_meta"
[tool.scmver]
spec = "micro"
write-to = "scmver/__version__.py"
fallback = {attr = "scmver:__version__"}
- write-to
An alias for
write_to
, but it takes precedence.- fallback
attr
A
string
which is described infallback
in Configuration.path
(optional)A path to import the module.
See Configuration for key/value pairs.
from setuptools import setup
setup(setup_requires=['scmver'],
scmver=True)
scmver
is either following values:
True
It is same as an empty
dict
.callable object
It should return a
dict
.dict
See Configuration for details.
from distutils.core import setup
import scmver
setup(version=scmver.get_version())
See Configuration for the scmver.get_version
arguments.
- root
A path of the working directory.
Default:
'.'
- spec
A version specifier to construct the public version identifiers. It will be incremented by the number of commits from the latest tag.
major
It will increment the major version.
minor
It will increment the minor version.
micro
orpatch
It will increment the micro (patch) version.
post
It will increment the post-release segment.
major.dev
It will increment the development release segment after incrementing the major version by 1.
minor.dev
It will increment the development release segment after incrementing the minor version by 1.
micro.dev
orpatch.dev
It will increment the development release segment after incrementing the micro (patch) version by 1.
Default:
'post'
- local
A
string
orcallable object
to construct the local version identifiers.string
A format string.
Available keywords:
{distance}
{revision}
{branch}
{utc}
- Return value ofdatetime.datetime.now(datetime.timezone.utc)
{local}
- Return value ofdatetime.datetime.now()
callable object
It will be called with
scmver.core.SCMInfo
.
Default:
'{local:%Y-%m-%d}'
- version
A regular expression object to extract the version from SCM tags. It should contain the version group.
- write_to
A path to a file which will be generated using
template
.- template
A format string which is used by
write_to
.Available keywords:
{version}
{revision}
{branch}
- fallback
It will be used when there is outside of a working copy.
string
It is in the
'package.module:some.attribute'
format (ex:'scmver:__version__'
).list
It consists of a
string
which is described above, and a path to import the module.callable object
It should return the version.
- bazaar.tag
A regular expression pattern to filter tags.
- darcs.tag
A regular expression pattern to filter tags.
- fossil.tag
A regular expression pattern to filter tags.
- git.tag
It will be passed to
git describe
as--match
.- mercurial.tag
A regular expression pattern to filter tags.
- subversion.tag
A regular expression pattern to filter tags.
- subversion.trunk
A relative repository path of the trunk directory.
Default:
'trunk'
- subversion.branches
A relative repository path of the directory where branches are located.
Default:
'branches'
- subversion.tags
A relative repository path of the directory where tags are located.
Default:
'tags'
scmver is distributed under the terms of the MIT License.