setuptools-git-versioning 3.1.0__py3-none-any.whl → 3.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- setuptools_git_versioning/defaults.py +1 -0
- setuptools_git_versioning/dynamic_metadata.py +51 -0
- setuptools_git_versioning/scikit_metadata.py +12 -27
- setuptools_git_versioning/version.py +42 -23
- {setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/METADATA +14 -15
- {setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/RECORD +10 -9
- {setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/WHEEL +1 -1
- {setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/entry_points.txt +3 -0
- {setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/licenses/LICENSE +0 -0
- {setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Version provider for the dynamic-metadata protocol."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import TYPE_CHECKING, Any
|
|
7
|
+
|
|
8
|
+
from setuptools_git_versioning.defaults import set_default_options
|
|
9
|
+
from setuptools_git_versioning.setup import read_toml
|
|
10
|
+
from setuptools_git_versioning.version import version_from_git
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from collections.abc import Mapping
|
|
14
|
+
|
|
15
|
+
__all__ = ["dynamic_metadata"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def dynamic_metadata(
|
|
19
|
+
settings: Mapping[str, Any],
|
|
20
|
+
project: Mapping[str, Any],
|
|
21
|
+
) -> dict[str, str]:
|
|
22
|
+
if settings:
|
|
23
|
+
msg = (
|
|
24
|
+
"Inline configuration under [[tool.dynamic-metadata]] is not supported. "
|
|
25
|
+
"Configure setuptools-git-versioning under [tool.setuptools-git-versioning] instead."
|
|
26
|
+
)
|
|
27
|
+
raise ValueError(msg)
|
|
28
|
+
|
|
29
|
+
root = Path.cwd()
|
|
30
|
+
|
|
31
|
+
config = read_toml(root=root)
|
|
32
|
+
if not config:
|
|
33
|
+
msg = (
|
|
34
|
+
"Missing [tool.setuptools-git-versioning] section in pyproject.toml. "
|
|
35
|
+
"Add it (with at minimum 'enabled = true') to use this provider."
|
|
36
|
+
)
|
|
37
|
+
raise ValueError(msg)
|
|
38
|
+
|
|
39
|
+
if not config.pop("enabled", True):
|
|
40
|
+
msg = (
|
|
41
|
+
"[tool.setuptools-git-versioning] has 'enabled = false' but the "
|
|
42
|
+
"metadata provider for setuptools-git-versioning was selected. "
|
|
43
|
+
"Either remove the provider or set 'enabled = true'."
|
|
44
|
+
)
|
|
45
|
+
raise ValueError(msg)
|
|
46
|
+
|
|
47
|
+
set_default_options(config)
|
|
48
|
+
|
|
49
|
+
name = project.get("name")
|
|
50
|
+
package_name = name if isinstance(name, str) else None
|
|
51
|
+
return {"version": str(version_from_git(package_name, **config, root=root))}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Deprecated version provider for the classic scikit-build-core protocol."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import warnings
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from typing import TYPE_CHECKING, Any
|
|
7
8
|
|
|
8
|
-
from setuptools_git_versioning.
|
|
9
|
-
from setuptools_git_versioning.setup import read_toml
|
|
10
|
-
from setuptools_git_versioning.version import version_from_git
|
|
9
|
+
from setuptools_git_versioning.dynamic_metadata import dynamic_metadata as _dynamic_metadata
|
|
11
10
|
|
|
12
11
|
if TYPE_CHECKING:
|
|
13
12
|
from collections.abc import Mapping
|
|
14
13
|
|
|
15
14
|
__all__ = ["dynamic_metadata", "get_requires_for_dynamic_metadata"]
|
|
16
15
|
|
|
16
|
+
warnings.warn(
|
|
17
|
+
"setuptools_git_versioning.scikit_metadata is deprecated; "
|
|
18
|
+
"migrate to [[tool.dynamic-metadata]] with provider = 'setuptools_git_versioning.dynamic_metadata' "
|
|
19
|
+
"on a backend supporting dynamic-metadata such as scikit-build-core>=1.0.",
|
|
20
|
+
DeprecationWarning,
|
|
21
|
+
stacklevel=2,
|
|
22
|
+
)
|
|
23
|
+
|
|
17
24
|
|
|
18
25
|
def dynamic_metadata(
|
|
19
26
|
field: str,
|
|
@@ -30,29 +37,7 @@ def dynamic_metadata(
|
|
|
30
37
|
)
|
|
31
38
|
raise ValueError(msg)
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
config = read_toml(root=root)
|
|
36
|
-
if not config:
|
|
37
|
-
msg = (
|
|
38
|
-
"Missing [tool.setuptools-git-versioning] section in pyproject.toml. "
|
|
39
|
-
"Add it (with at minimum 'enabled = true') to use this provider."
|
|
40
|
-
)
|
|
41
|
-
raise ValueError(msg)
|
|
42
|
-
|
|
43
|
-
if not config.pop("enabled", True):
|
|
44
|
-
msg = (
|
|
45
|
-
"[tool.setuptools-git-versioning] has 'enabled = false' but the scikit-build-core "
|
|
46
|
-
"metadata provider for setuptools-git-versioning was selected. "
|
|
47
|
-
"Either remove the provider or set 'enabled = true'."
|
|
48
|
-
)
|
|
49
|
-
raise ValueError(msg)
|
|
50
|
-
|
|
51
|
-
set_default_options(config)
|
|
52
|
-
|
|
53
|
-
package_name = _read_project_name(root)
|
|
54
|
-
|
|
55
|
-
return str(version_from_git(package_name, **config, root=root))
|
|
40
|
+
return _dynamic_metadata({}, {"name": _read_project_name(Path.cwd())})["version"]
|
|
56
41
|
|
|
57
42
|
|
|
58
43
|
def _read_project_name(root: Path) -> str | None:
|
|
@@ -5,7 +5,7 @@ import logging
|
|
|
5
5
|
import os # noqa: TC003
|
|
6
6
|
import re
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import Callable
|
|
8
|
+
from typing import Callable, cast
|
|
9
9
|
|
|
10
10
|
# avoid importing 'packaging' because setuptools-git-versioning can be installed using sdist
|
|
11
11
|
# where 'packaging' is not installed yet
|
|
@@ -96,6 +96,7 @@ def version_from_git( # noqa: PLR0915, PLR0912, PLR0913, C901
|
|
|
96
96
|
version_callback: str | Callable[[], str] | None = None,
|
|
97
97
|
version_file: str | os.PathLike | None = None,
|
|
98
98
|
count_commits_from_version_file: bool = False,
|
|
99
|
+
prefer_tag: bool = False,
|
|
99
100
|
tag_formatter: Callable[[str], str] | str | None = None,
|
|
100
101
|
branch_formatter: Callable[[str], str] | str | None = None,
|
|
101
102
|
tag_filter: Callable[[str], str | None] | str | None = None,
|
|
@@ -134,6 +135,9 @@ def version_from_git( # noqa: PLR0915, PLR0912, PLR0913, C901
|
|
|
134
135
|
raise ValueError(msg)
|
|
135
136
|
return get_version_from_callback(version_callback, package_name, root=root)
|
|
136
137
|
|
|
138
|
+
ccount: int | None = 0
|
|
139
|
+
on_tag = False
|
|
140
|
+
tag_sha = None
|
|
137
141
|
head_sha = get_sha(root=root)
|
|
138
142
|
log.log(INFO, "HEAD SHA-256: %r", head_sha)
|
|
139
143
|
|
|
@@ -146,15 +150,21 @@ def version_from_git( # noqa: PLR0915, PLR0912, PLR0913, C901
|
|
|
146
150
|
tag = get_tag(sort_by=sort_by, root=root, filter_callback=filter_callback)
|
|
147
151
|
if not tag:
|
|
148
152
|
log.log(INFO, "No tags found")
|
|
149
|
-
tag_sha = None
|
|
150
|
-
on_tag = False
|
|
151
153
|
else:
|
|
152
|
-
tag_sha = get_sha(tag, root=root)
|
|
154
|
+
tag_sha = cast("str", get_sha(tag, root=root))
|
|
153
155
|
log.log(INFO, "Tag SHA-256: %r", tag_sha)
|
|
154
156
|
|
|
155
157
|
on_tag = head_sha is not None and head_sha == tag_sha
|
|
156
158
|
log.log(INFO, "HEAD is tagged: %r", on_tag)
|
|
157
159
|
|
|
160
|
+
ccount = count_since(tag_sha, root=root)
|
|
161
|
+
log.log(INFO, "Commits count between HEAD and last tag: %r", ccount)
|
|
162
|
+
|
|
163
|
+
if tag_formatter is not None:
|
|
164
|
+
tag_format_callback = create_tag_formatter(tag_formatter, package_name=package_name, root=root)
|
|
165
|
+
tag = tag_format_callback(tag)
|
|
166
|
+
log.log(DEBUG, "Tag after formatting: %r", tag)
|
|
167
|
+
|
|
158
168
|
if version_file:
|
|
159
169
|
log.log(INFO, "Checking for 'version_file'")
|
|
160
170
|
|
|
@@ -166,35 +176,44 @@ def version_from_git( # noqa: PLR0915, PLR0912, PLR0913, C901
|
|
|
166
176
|
version_file_path,
|
|
167
177
|
starting_version,
|
|
168
178
|
)
|
|
169
|
-
|
|
179
|
+
file_tag = None
|
|
170
180
|
else:
|
|
171
181
|
log.log(INFO, "Reading version_file '%s' content", version_file)
|
|
172
|
-
|
|
182
|
+
file_tag = version_file_path.read_text().strip() or None
|
|
173
183
|
|
|
174
|
-
if not
|
|
184
|
+
if not file_tag:
|
|
175
185
|
log.log(INFO, "File %r is empty", version_file)
|
|
176
186
|
else:
|
|
177
|
-
log.log(DEBUG, "File content: %r",
|
|
178
|
-
|
|
179
|
-
|
|
187
|
+
log.log(DEBUG, "File content: %r", file_tag)
|
|
188
|
+
|
|
189
|
+
if prefer_tag and file_tag and tag:
|
|
190
|
+
log.log(
|
|
191
|
+
INFO,
|
|
192
|
+
"Both 'version_file' and a Git tag (%r) are present, and 'prefer_tag' is enabled: using the tag",
|
|
193
|
+
tag,
|
|
194
|
+
)
|
|
195
|
+
if file_tag and sanitize_version(file_tag) != sanitize_version(tag):
|
|
196
|
+
log.warning(
|
|
197
|
+
"Git tag %r and 'version_file' content %r are different: using the tag. "
|
|
198
|
+
"Update the version file to silence this warning",
|
|
199
|
+
tag,
|
|
200
|
+
file_tag,
|
|
201
|
+
)
|
|
180
202
|
|
|
181
|
-
|
|
182
|
-
|
|
203
|
+
elif file_tag:
|
|
204
|
+
tag = file_tag
|
|
183
205
|
|
|
184
|
-
|
|
185
|
-
|
|
206
|
+
if not count_commits_from_version_file:
|
|
207
|
+
return sanitize_version(tag)
|
|
186
208
|
|
|
187
|
-
|
|
188
|
-
|
|
209
|
+
file_sha = get_latest_file_commit(version_file, root=root)
|
|
210
|
+
log.log(DEBUG, "File SHA-256: %r", file_sha)
|
|
189
211
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
log.log(INFO, "Commits count between HEAD and last tag: %r", ccount)
|
|
212
|
+
ccount = count_since(file_sha, root=root) if file_sha else None
|
|
213
|
+
log.log(INFO, "Commits count between HEAD and last version file change: %r", ccount)
|
|
193
214
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
tag = tag_format_callback(tag)
|
|
197
|
-
log.log(DEBUG, "Tag after formatting: %r", tag)
|
|
215
|
+
elif not head_sha:
|
|
216
|
+
log.log(INFO, "Not a git repo, or repo without any branch")
|
|
198
217
|
|
|
199
218
|
if not tag:
|
|
200
219
|
log.log(INFO, "No source for version, return starting_version %r", starting_version)
|
{setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: setuptools-git-versioning
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Use git repo data for building a version number according to PEP-440
|
|
5
5
|
Author-email: dolfinus <martinov.m.s.8@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -82,8 +82,8 @@ between ``setuptools-git-versioning`` and other tools.
|
|
|
82
82
|
|
|
83
83
|
- Only Git v2 is supported
|
|
84
84
|
|
|
85
|
-
- Setuptools and `
|
|
86
|
-
|
|
85
|
+
- Setuptools and build backends supporting `dynamic-metadata <https://dynamic-metadata.readthedocs.io>`_
|
|
86
|
+
(e.g. `scikit-build-core <https://scikit-build-core.readthedocs.io>`_ 1.0+) are supported.
|
|
87
87
|
|
|
88
88
|
- Currently does not support automatic exporting of package version to a file for runtime use
|
|
89
89
|
(but you can use ``setuptools-git-versioning > file`` redirect instead)
|
|
@@ -176,30 +176,29 @@ and then add new argument ``setuptools_git_versioning`` with config options:
|
|
|
176
176
|
|
|
177
177
|
Commands are the same as above, plus ``python -m setup.py`` returns the same version.
|
|
178
178
|
|
|
179
|
-
``
|
|
180
|
-
|
|
179
|
+
``dynamic-metadata``
|
|
180
|
+
~~~~~~~~~~~~~~~~~~~~
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
register the dynamic-metadata provider,
|
|
186
|
-
and configure options under the usual ``[tool.setuptools-git-versioning]`` section:
|
|
182
|
+
For build backends supporting `dynamic-metadata <https://dynamic-metadata.readthedocs.io>`_ 0.4+,
|
|
183
|
+
select the registered provider in ``[[tool.dynamic-metadata]]``. For example, with
|
|
184
|
+
`scikit-build-core <https://scikit-build-core.readthedocs.io>`_ 1.0+:
|
|
187
185
|
|
|
188
186
|
.. code:: toml
|
|
189
187
|
|
|
190
188
|
[build-system]
|
|
191
|
-
requires = [ "scikit-build-core", "setuptools-git-versioning>=3.
|
|
189
|
+
requires = [ "scikit-build-core>=1.0", "dynamic-metadata>=0.4", "setuptools-git-versioning>=3.2,<4", ]
|
|
192
190
|
build-backend = "scikit_build_core.build"
|
|
193
191
|
|
|
194
192
|
[project]
|
|
195
193
|
name = "mypackage"
|
|
196
194
|
dynamic = ["version"]
|
|
197
195
|
|
|
198
|
-
[tool.
|
|
199
|
-
provider = "setuptools_git_versioning.
|
|
196
|
+
[[tool.dynamic-metadata]]
|
|
197
|
+
provider = "setuptools_git_versioning.dynamic_metadata"
|
|
200
198
|
|
|
201
199
|
[tool.setuptools-git-versioning]
|
|
202
200
|
enabled = true
|
|
203
201
|
|
|
204
|
-
|
|
205
|
-
Inline
|
|
202
|
+
The provider sets only ``version`` and reads options from ``[tool.setuptools-git-versioning]``.
|
|
203
|
+
Inline settings in ``[[tool.dynamic-metadata]]`` are not supported.
|
|
204
|
+
The provider itself has no runtime dependency on ``dynamic-metadata``.
|
{setuptools_git_versioning-3.1.0.dist-info → setuptools_git_versioning-3.2.0.dist-info}/RECORD
RENAMED
|
@@ -2,17 +2,18 @@ setuptools_git_versioning/__init__.py,sha256=HBPrkDXm4rugE32DxfzvPZwFkZodvB9d1Pt
|
|
|
2
2
|
setuptools_git_versioning/__main__.py,sha256=6mSX6LsqmyKDEmobvZRfrxXO0kDuZH3aENzvxbunOtA,55
|
|
3
3
|
setuptools_git_versioning/archival.py,sha256=A9udXlJFsLHv2Vk7U6CP_jyv816NwPD6hie_fkloLY8,7524
|
|
4
4
|
setuptools_git_versioning/cli.py,sha256=DQ6_OFbKXUM30dnP0wWWJbAVjt5RIjxFxUw3sfdBtFs,1132
|
|
5
|
-
setuptools_git_versioning/defaults.py,sha256=
|
|
5
|
+
setuptools_git_versioning/defaults.py,sha256=b6v4LbK8Js_WQmsqzSouP2eTgc1TAttkM6sD1i1gFCI,822
|
|
6
|
+
setuptools_git_versioning/dynamic_metadata.py,sha256=IUNeuWpKmmjVDvB7yNY_8bTdCDaIw2DZM_Maty4twXM,1618
|
|
6
7
|
setuptools_git_versioning/factories.py,sha256=tGJpYVJeGJC2vE5mFvuoogl3sG0H3xJbkqpPApGZXjs,4462
|
|
7
8
|
setuptools_git_versioning/git.py,sha256=qjh-zQOx_nngl3HmlypG5kXb2vCjw75HC9IxKEUSqDY,3529
|
|
8
9
|
setuptools_git_versioning/log.py,sha256=R4VPodnnRkuybYc5L2CKENyTtESXedTyz3CvqxJCJPA,515
|
|
9
|
-
setuptools_git_versioning/scikit_metadata.py,sha256=
|
|
10
|
+
setuptools_git_versioning/scikit_metadata.py,sha256=9XeDmR163oBoEM8NtHpHNYmhT5EigC1VNlneEfV9MVU,1934
|
|
10
11
|
setuptools_git_versioning/setup.py,sha256=bQGeT96GFodgmemaOo19uuwyRiNIySleGDB1T46FQOY,5357
|
|
11
12
|
setuptools_git_versioning/subst.py,sha256=thLbkXUmUvsZR84o1S7D5uXsYmK4xSldGGPBGQdwccM,2174
|
|
12
|
-
setuptools_git_versioning/version.py,sha256=
|
|
13
|
-
setuptools_git_versioning-3.
|
|
14
|
-
setuptools_git_versioning-3.
|
|
15
|
-
setuptools_git_versioning-3.
|
|
16
|
-
setuptools_git_versioning-3.
|
|
17
|
-
setuptools_git_versioning-3.
|
|
18
|
-
setuptools_git_versioning-3.
|
|
13
|
+
setuptools_git_versioning/version.py,sha256=ZQtW-QolkWhc066V4wSwQ0tOhSRFb53xamzjs7uZMwg,9459
|
|
14
|
+
setuptools_git_versioning-3.2.0.dist-info/licenses/LICENSE,sha256=YP7W0rZutEgY8ypJZeFLuZDSYsaZC-P6YxGZDjiFuL4,1060
|
|
15
|
+
setuptools_git_versioning-3.2.0.dist-info/METADATA,sha256=pc4-IlDYGjHiIWXyZZy3hXoen9I8J1uF6RpkAAMc2n8,7066
|
|
16
|
+
setuptools_git_versioning-3.2.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
17
|
+
setuptools_git_versioning-3.2.0.dist-info/entry_points.txt,sha256=e-Eyt_a42w9hc-6tjRpitRnP4TxvlLwelNPI5k-jdEA,405
|
|
18
|
+
setuptools_git_versioning-3.2.0.dist-info/top_level.txt,sha256=aP9te4bjCBVXzZRQhwrT_IdcSxOe1Dd8Mb_oFCeNyEI,26
|
|
19
|
+
setuptools_git_versioning-3.2.0.dist-info/RECORD,,
|
|
@@ -4,5 +4,8 @@ setuptools-git-versioning = setuptools_git_versioning.cli:main
|
|
|
4
4
|
[distutils.setup_keywords]
|
|
5
5
|
setuptools_git_versioning = setuptools_git_versioning:parse_config
|
|
6
6
|
|
|
7
|
+
[dynamic_metadata.provider]
|
|
8
|
+
setuptools_git_versioning.dynamic_metadata = setuptools_git_versioning.dynamic_metadata
|
|
9
|
+
|
|
7
10
|
[setuptools.finalize_distribution_options]
|
|
8
11
|
setuptools_git_versioning = setuptools_git_versioning:infer_version
|
|
File without changes
|
|
File without changes
|