setuptools-git-versioning icon indicating copy to clipboard operation
setuptools-git-versioning copied to clipboard

Version epoch support

Open Henri-J-Norden opened this issue 4 months ago • 0 comments

Description

According to Versioning - Python Packaging User Guide, version identifiers may be prefixed by an optional epoch segment N! (where N may be any non-negative integer).

However, the "!" is incorrectly converted to a "." when an epoch segment is added to a template in tool.setuptools-git-versioning.

Example

pyproject.toml

[tool.setuptools-git-versioning]
dirty_template = "0!{timestamp:%Y.%m.%d}+{sha}.dirty"

Generated version

$ uvx setuptools-git-versioning -v
...
[2025-12-03 23:04:02,207]     INF0: Using template from 'dirty_template' option
[2025-12-03 23:04:02,208]     INF0: Version number after resolving substitutions: '0!2025.12.03+fc88762e.dirty'
[2025-12-03 23:04:02,208]     INF0: Before sanitization '0!2025.12.03+fc88762e.dirty'
[2025-12-03 23:04:02,208]     INF0: Result '0.2025.12.3+fc88762e.dirty'
0.2025.12.3+fc88762e.dirty

Expected result

0!2025.12.3+fc88762e.dirty

Henri-J-Norden avatar Dec 03 '25 20:12 Henri-J-Norden