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.10+
- 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
stringwhich is described infallbackin 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.
microorpatch- 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.devorpatch.dev- It will increment the development release segment after incrementing the micro (patch) version by 1.
Default:
'post'- local
A
stringorcallable objectto construct the local version identifiers.stringA 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
stringwhich 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 describeas--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.