Skip to content

Commit 6dc008c

Browse files
fix: version back compat
1 parent 5696805 commit 6dc008c

File tree

2 files changed

+63
-9
lines changed

2 files changed

+63
-9
lines changed

pyproject.toml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: MIT
22

33
[build-system]
4-
requires = ["hatchling", "versioningit>=3.3.0"]
4+
requires = ["hatchling", "versioningit>=3.3.0,<4.0", "packaging"]
55
build-backend = "hatchling.build"
66

77
[project]
@@ -127,6 +127,11 @@ include = [
127127
]
128128
artifacts = ["disnake/_version.py"]
129129

130+
[tool.hatch.build.targets.sdist]
131+
include = [
132+
"scripts/versioning.py"
133+
]
134+
130135
[tool.hatch.version]
131136
source = "versioningit"
132137

@@ -139,9 +144,8 @@ distance = "{base_version}+{distance}.{vcs}{rev}"
139144
dirty = "{base_version}+d{build_date:%Y%m%d}"
140145
distance-dirty = "{base_version}.a{distance}+{vcs}{rev}.d{build_date:%Y%m%d}"
141146

142-
[tool.versioningit.template-fields.version-tuple]
143-
split-on = '^(\d+)\.(\d+)\.(\d+)\.([a-zA-Z])(\d+)(?:.\d+)?'
144-
147+
[tool.versioningit.template-fields]
148+
method = { module = "scripts.versioning", value = "template_fields"}
145149

146150
[tool.versioningit.write]
147151
file = "disnake/_version.py"
@@ -160,11 +164,7 @@ class VersionInfo(NamedTuple):
160164
releaselevel: Literal["alpha", "beta", "candidate", "final"]
161165
serial: int
162166
163-
164-
# fmt: off
165-
version_info: VersionInfo = VersionInfo(*{version_tuple}[:5])
166-
# fmt: on
167-
167+
version_info: VersionInfo = VersionInfo{version_tuple}
168168
"""
169169

170170
[tool.ruff]

scripts/versioning.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# SPDX-License-Identifier: MIT
2+
3+
import copy
4+
from typing import Any, Dict, Optional
5+
6+
import packaging.version
7+
import versioningit
8+
9+
10+
def template_fields(
11+
*,
12+
version: str,
13+
description: Optional[versioningit.VCSDescription],
14+
base_version: Optional[str],
15+
next_version: Optional[str],
16+
params: Dict[str, Any],
17+
) -> Dict[str, Any]:
18+
"""Implements the ``"basic"`` ``template-fields`` method"""
19+
params = copy.deepcopy(params)
20+
parsed_version = packaging.version.parse(version)
21+
fields: Dict[str, Any] = {}
22+
if description is not None:
23+
fields.update(description.fields)
24+
fields["branch"] = description.branch
25+
if base_version is not None:
26+
fields["base_version"] = base_version
27+
if next_version is not None:
28+
fields["next_version"] = next_version
29+
fields["version"] = version
30+
31+
releaselevels = {
32+
"a": "alpha",
33+
"b": "beta",
34+
"rc": "candidate",
35+
"": "final",
36+
}
37+
38+
if parsed_version.pre:
39+
releaselevel = releaselevels.get(parsed_version.pre[0], "final")
40+
else:
41+
releaselevel = "final"
42+
43+
fields["version_tuple"] = (
44+
parsed_version.major,
45+
parsed_version.minor,
46+
parsed_version.micro,
47+
releaselevel,
48+
parsed_version.dev or 0,
49+
)
50+
try:
51+
fields["normalized_version"] = str(packaging.version.Version(version))
52+
except ValueError:
53+
fields["normalized_version"] = version
54+
return fields

0 commit comments

Comments
 (0)