|
6 | 6 |
|
7 | 7 | from .. import _types as _t
|
8 | 8 | from .._log import log as parent_log
|
| 9 | +from .._node_utils import _format_node_for_output |
9 | 10 | from .._version_cls import _version_as_tuple
|
10 | 11 | from ..version import ScmVersion
|
11 | 12 |
|
12 | 13 | log = parent_log.getChild("dump_version")
|
13 | 14 |
|
| 15 | + |
| 16 | +class _TemplateScmVersion: |
| 17 | + """Wrapper for ScmVersion that formats node for template output.""" |
| 18 | + |
| 19 | + def __init__(self, scm_version: ScmVersion) -> None: |
| 20 | + self._scm_version = scm_version |
| 21 | + |
| 22 | + def __getattr__(self, name: str) -> object: |
| 23 | + # Delegate all attribute access to the wrapped ScmVersion |
| 24 | + return getattr(self._scm_version, name) |
| 25 | + |
| 26 | + @property |
| 27 | + def node(self) -> str | None: |
| 28 | + """Return the node formatted for output.""" |
| 29 | + return _format_node_for_output(self._scm_version.node) |
| 30 | + |
| 31 | + |
14 | 32 | TEMPLATES = {
|
15 | 33 | ".py": """\
|
16 | 34 | # file generated by setuptools-scm
|
@@ -101,10 +119,12 @@ def write_version_to_path(
|
101 | 119 | log.debug("dump %s into %s", version, target)
|
102 | 120 | version_tuple = _version_as_tuple(version)
|
103 | 121 | if scm_version is not None:
|
| 122 | + # Wrap ScmVersion to provide formatted node for templates |
| 123 | + template_scm_version = _TemplateScmVersion(scm_version) |
104 | 124 | content = final_template.format(
|
105 | 125 | version=version,
|
106 | 126 | version_tuple=version_tuple,
|
107 |
| - scm_version=scm_version, |
| 127 | + scm_version=template_scm_version, |
108 | 128 | )
|
109 | 129 | else:
|
110 | 130 | content = final_template.format(version=version, version_tuple=version_tuple)
|
|
0 commit comments