vcs-versioning 2.2.2__tar.gz → 2.2.3__tar.gz

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.
Files changed (98) hide show
  1. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/CHANGELOG.md +6 -0
  2. {vcs_versioning-2.2.2/src/vcs_versioning.egg-info → vcs_versioning-2.2.3}/PKG-INFO +2 -2
  3. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/pyproject.toml +2 -2
  4. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_git.py +14 -9
  5. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3/src/vcs_versioning.egg-info}/PKG-INFO +2 -2
  6. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/requires.txt +1 -1
  7. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_git.py +18 -1
  8. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/uv.lock +1 -1
  9. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/LICENSE.txt +0 -0
  10. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/MANIFEST.in +0 -0
  11. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/README.md +0 -0
  12. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/setup.cfg +0 -0
  13. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/setup.py +0 -0
  14. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/__init__.py +0 -0
  15. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/__main__.py +0 -0
  16. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/__init__.py +0 -0
  17. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_discover_vcs.py +0 -0
  18. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_hg.py +0 -0
  19. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_hg_git.py +0 -0
  20. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_jj.py +0 -0
  21. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_scm_workdir.py +0 -0
  22. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/__init__.py +0 -0
  23. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/_args.py +0 -0
  24. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/git_archival_full.txt +0 -0
  25. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/git_archival_stable.txt +0 -0
  26. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_compat.py +0 -0
  27. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_config.py +0 -0
  28. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_discover.py +0 -0
  29. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_dump_version.py +0 -0
  30. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_entrypoints.py +0 -0
  31. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_environment.py +0 -0
  32. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_exceptions.py +0 -0
  33. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_fallback_workdir.py +0 -0
  34. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_fallbacks.py +0 -0
  35. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/__init__.py +0 -0
  36. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/_git.py +0 -0
  37. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/_hg.py +0 -0
  38. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/_jj.py +0 -0
  39. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_get_version_impl.py +0 -0
  40. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_integration.py +0 -0
  41. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_integrator_helpers.py +0 -0
  42. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_legacy_parse.py +0 -0
  43. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_log.py +0 -0
  44. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_modify_version.py +0 -0
  45. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_node_utils.py +0 -0
  46. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_overrides.py +0 -0
  47. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_paths.py +0 -0
  48. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_project_overrides.py +0 -0
  49. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_protocols.py +0 -0
  50. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_pyproject_reading.py +0 -0
  51. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_requirement_cls.py +0 -0
  52. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_run_cmd.py +0 -0
  53. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_scm_metadata.py +0 -0
  54. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_scm_version.py +0 -0
  55. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_test_utils.py +0 -0
  56. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_toml.py +0 -0
  57. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_types.py +0 -0
  58. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_cls.py +0 -0
  59. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_fields.py +0 -0
  60. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_inference.py +0 -0
  61. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/__init__.py +0 -0
  62. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/_common.py +0 -0
  63. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/_standard.py +0 -0
  64. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/_towncrier.py +0 -0
  65. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/_worktree_discovery.py +0 -0
  66. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/overrides.py +0 -0
  67. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/py.typed +0 -0
  68. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning/test_api.py +0 -0
  69. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/SOURCES.txt +0 -0
  70. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/dependency_links.txt +0 -0
  71. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/entry_points.txt +0 -0
  72. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/top_level.txt +0 -0
  73. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/__init__.py +0 -0
  74. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/conftest.py +0 -0
  75. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_better_root_errors.py +0 -0
  76. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_chain_api.py +0 -0
  77. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_compat.py +0 -0
  78. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_config.py +0 -0
  79. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_expect_parse.py +0 -0
  80. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_file_finders.py +0 -0
  81. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_hg_git.py +0 -0
  82. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_integrator_helpers.py +0 -0
  83. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_internal_log_level.py +0 -0
  84. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_jj.py +0 -0
  85. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_legacy_parse.py +0 -0
  86. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_mercurial.py +0 -0
  87. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_overrides_api.py +0 -0
  88. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_overrides_env_reader.py +0 -0
  89. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_project_overrides.py +0 -0
  90. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_project_path.py +0 -0
  91. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_regressions.py +0 -0
  92. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_scm_metadata.py +0 -0
  93. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_tag_config.py +0 -0
  94. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_version.py +0 -0
  95. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_version_scheme_towncrier.py +0 -0
  96. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_version_schemes.py +0 -0
  97. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_workdir_api.py +0 -0
  98. {vcs_versioning-2.2.2 → vcs_versioning-2.2.3}/testing_vcs/test_workdir_discovery.py +0 -0
@@ -2,6 +2,12 @@
2
2
 
3
3
  <!-- towncrier release notes start -->
4
4
 
5
+ ## 2.2.3 (2026-07-28)
6
+
7
+ ### Fixed
8
+
9
+ - Fix `ValueError` when parsing `.git_archival.txt` of a tagged commit whose tag contains more than one dash (e.g. `llvmorg-23.1.0-rc2`) - the `git describe` suffix is now matched precisely instead of splitting on the last two dashes. ([#1481](https://github.com/pypa/setuptools-scm/issues/1481))
10
+
5
11
  ## 2.2.2 (2026-06-29)
6
12
 
7
13
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vcs-versioning
3
- Version: 2.2.2
3
+ Version: 2.2.3
4
4
  Summary: the blessed package to manage your versions by vcs metadata
5
5
  Author-email: Ronny Pfannschmidt <opensource@ronnypfannschmidt.de>
6
6
  License: MIT
@@ -20,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.14
20
20
  Requires-Python: >=3.8
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE.txt
23
- Requires-Dist: packaging>=20
23
+ Requires-Dist: packaging>=26.2
24
24
  Requires-Dist: tomli>=1; python_version < "3.11"
25
25
  Requires-Dist: typing-extensions>=4.1; python_version < "3.11"
26
26
  Dynamic: license-file
@@ -7,7 +7,7 @@
7
7
  build-backend = "setuptools.build_meta"
8
8
  requires = [
9
9
  "setuptools>=45",
10
- "packaging>=20",
10
+ "packaging>=26.2",
11
11
  'typing-extensions>=4.1; python_version < "3.11"',
12
12
  ]
13
13
 
@@ -38,7 +38,7 @@ dynamic = [
38
38
  "version",
39
39
  ]
40
40
  dependencies = [
41
- "packaging>=20",
41
+ "packaging>=26.2",
42
42
  'tomli>=1; python_version < "3.11"',
43
43
  'typing-extensions>=4.1; python_version < "3.11"',
44
44
  ]
@@ -33,6 +33,11 @@ log = logging.getLogger(__name__)
33
33
  REF_TAG_RE = re.compile(r"(?<=\btag: )([^,]+)\b")
34
34
  DESCRIBE_UNSUPPORTED = "%(describe"
35
35
 
36
+ # ``git describe`` appends ``-<distance>-g<abbreviated node>`` to the tag name.
37
+ # Tags may contain dashes themselves, so the suffix has to be matched precisely
38
+ # instead of just splitting on the last two dashes.
39
+ DESCRIBE_SUFFIX_RE = re.compile(r"^(?P<tag>.+)-(?P<distance>\d+)-g(?P<node>[0-9a-f]+)$")
40
+
36
41
 
37
42
  # If testing command in shell make sure to quote the match argument like
38
43
  # '*[0-9]*' as it will expand before being sent to git if there are any matching
@@ -473,15 +478,15 @@ def _git_parse_describe(
473
478
  else:
474
479
  dirty = False
475
480
 
476
- split = describe_output.rsplit("-", 2)
477
- if len(split) < 3: # probably a tagged commit
478
- tag = describe_output
479
- number = 0
480
- node = None
481
- else:
482
- tag, number_, node = split
483
- number = int(number_)
484
- return tag, number, node, dirty
481
+ match = DESCRIBE_SUFFIX_RE.match(describe_output)
482
+ if match is None: # probably a tagged commit
483
+ return describe_output, 0, None, dirty
484
+ return (
485
+ match.group("tag"),
486
+ int(match.group("distance")),
487
+ "g" + match.group("node"),
488
+ dirty,
489
+ )
485
490
 
486
491
 
487
492
  def archival_to_version(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vcs-versioning
3
- Version: 2.2.2
3
+ Version: 2.2.3
4
4
  Summary: the blessed package to manage your versions by vcs metadata
5
5
  Author-email: Ronny Pfannschmidt <opensource@ronnypfannschmidt.de>
6
6
  License: MIT
@@ -20,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.14
20
20
  Requires-Python: >=3.8
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE.txt
23
- Requires-Dist: packaging>=20
23
+ Requires-Dist: packaging>=26.2
24
24
  Requires-Dist: tomli>=1; python_version < "3.11"
25
25
  Requires-Dist: typing-extensions>=4.1; python_version < "3.11"
26
26
  Dynamic: license-file
@@ -1,4 +1,4 @@
1
- packaging>=20
1
+ packaging>=26.2
2
2
 
3
3
  [:python_version < "3.11"]
4
4
  tomli>=1
@@ -50,10 +50,15 @@ def wd(wd: WorkDir, monkeypatch: pytest.MonkeyPatch, debug_mode: DebugMode) -> W
50
50
  [
51
51
  ("3.3.1-rc26-0-g9df187b", "3.3.1-rc26", 0, "g9df187b", False),
52
52
  ("17.33.0-rc-17-g38c3047c0", "17.33.0-rc", 17, "g38c3047c0", False),
53
+ ("v1.15.1rc1-37-g9bd1298-dirty", "v1.15.1rc1", 37, "g9bd1298", True),
54
+ # bare tags containing dashes must not be mistaken for describe output
55
+ ("llvmorg-23.1.0-rc2", "llvmorg-23.1.0-rc2", 0, None, False),
56
+ ("llvmorg-23.1.0-rc2-dirty", "llvmorg-23.1.0-rc2", 0, None, True),
57
+ ("release-1.2.2", "release-1.2.2", 0, None, False),
53
58
  ],
54
59
  )
55
60
  def test_parse_describe_output(
56
- given: str, tag: str, number: int, node: str, dirty: bool
61
+ given: str, tag: str, number: int, node: str | None, dirty: bool
57
62
  ) -> None:
58
63
  parsed = _git._git_parse_describe(given)
59
64
  assert parsed == (tag, number, node, dirty)
@@ -650,6 +655,18 @@ def test_git_archival_to_version(expected: str, from_data: dict[str, str]) -> No
650
655
  assert format_version(version) == expected
651
656
 
652
657
 
658
+ @pytest.mark.issue("https://github.com/pypa/setuptools-scm/issues/1481")
659
+ def test_git_archival_bare_tag_with_dashes() -> None:
660
+ config = Configuration(tag_regex=r"^llvmorg-(?P<version>.+)$")
661
+ version = archival_to_version(
662
+ {"describe-name": "llvmorg-23.1.0-rc2"}, config=config
663
+ )
664
+ assert version is not None
665
+ assert str(version.tag) == "23.1.0rc2"
666
+ assert version.distance == 0
667
+ assert version.node is None
668
+
669
+
653
670
  @pytest.mark.issue("https://github.com/pypa/setuptools-scm/issues/727")
654
671
  def test_git_archival_node_missing_no_version() -> None:
655
672
  config = Configuration()
@@ -317,7 +317,7 @@ test = [
317
317
 
318
318
  [package.metadata]
319
319
  requires-dist = [
320
- { name = "packaging", specifier = ">=20" },
320
+ { name = "packaging", specifier = ">=26.2" },
321
321
  { name = "tomli", marker = "python_full_version < '3.11'", specifier = ">=1" },
322
322
  { name = "typing-extensions", marker = "python_full_version < '3.11'", specifier = ">=4.1" },
323
323
  ]
File without changes
File without changes
File without changes