generated at
setuptools scm
使い方
https://pypi.org/project/setuptools_scm/ に書いてあるとおり
利用例

使うメリット
バージョン番号をGit等のSCMのタグから自動的に決められる
つまり、setup.pyや__version__.pyなどを書き換えなくて良い
リポジトリのタグと実際のリリースバージョンが不可分
タグ打ち忘れがなくなる
タグのバージョンから現在のバージョンを自動的に決めてくれる
タグが 1.0.0 のコミットからの距離が0の場合
version = 1.0.0
タグが 1.0.0 のコミットからの距離が1の場合
version = 1.0.1.dev1+g04b7f25
<次のバージョン>.dev<タグからの距離>+<コミットハッシュ>

使うデメリット
タグとバージョンが不可分になるため、間違えると面倒
setuptools_scm の作法(バージョンがいつ、どういう値になるのか)を知らないといけない

設定サンプル
app/__init__.py
try: # py38 or later from importlib.metadata import version, PackageNotFoundError try: __version__ = version("package-name") except PackageNotFoundError: # package is not installed pass except ImportError: # py36, py37 from pkg_resources import get_distribution, DistributionNotFound try: __version__ = get_distribution(__name__).version except DistributionNotFound: # package is not installed pass

pyproject.toml
[build-system] requires = ["setuptools>=42", "wheel", "setuptools_scm[toml]>=3.4"] [tool.setuptools_scm] # this empty section means: use_scm_version=True version_scheme = "guess-next-dev" local_scheme = "no-local-version"

setup.cfg には version= を書かない