vcs-versioning 2.2.1__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.1 → vcs_versioning-2.2.3}/CHANGELOG.md +12 -0
  2. {vcs_versioning-2.2.1/src/vcs_versioning.egg-info → vcs_versioning-2.2.3}/PKG-INFO +2 -2
  3. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/pyproject.toml +3 -2
  4. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_git.py +14 -9
  5. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3/src/vcs_versioning.egg-info}/PKG-INFO +2 -2
  6. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/requires.txt +1 -1
  7. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_git.py +18 -1
  8. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/uv.lock +43 -27
  9. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/LICENSE.txt +0 -0
  10. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/MANIFEST.in +0 -0
  11. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/README.md +0 -0
  12. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/setup.cfg +0 -0
  13. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/setup.py +0 -0
  14. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/__init__.py +0 -0
  15. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/__main__.py +0 -0
  16. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/__init__.py +0 -0
  17. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_discover_vcs.py +0 -0
  18. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_hg.py +0 -0
  19. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_hg_git.py +0 -0
  20. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_jj.py +0 -0
  21. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_backends/_scm_workdir.py +0 -0
  22. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/__init__.py +0 -0
  23. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/_args.py +0 -0
  24. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/git_archival_full.txt +0 -0
  25. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_cli/git_archival_stable.txt +0 -0
  26. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_compat.py +0 -0
  27. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_config.py +0 -0
  28. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_discover.py +0 -0
  29. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_dump_version.py +0 -0
  30. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_entrypoints.py +0 -0
  31. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_environment.py +0 -0
  32. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_exceptions.py +0 -0
  33. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_fallback_workdir.py +0 -0
  34. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_fallbacks.py +0 -0
  35. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/__init__.py +0 -0
  36. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/_git.py +0 -0
  37. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/_hg.py +0 -0
  38. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_file_finders/_jj.py +0 -0
  39. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_get_version_impl.py +0 -0
  40. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_integration.py +0 -0
  41. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_integrator_helpers.py +0 -0
  42. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_legacy_parse.py +0 -0
  43. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_log.py +0 -0
  44. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_modify_version.py +0 -0
  45. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_node_utils.py +0 -0
  46. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_overrides.py +0 -0
  47. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_paths.py +0 -0
  48. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_project_overrides.py +0 -0
  49. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_protocols.py +0 -0
  50. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_pyproject_reading.py +0 -0
  51. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_requirement_cls.py +0 -0
  52. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_run_cmd.py +0 -0
  53. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_scm_metadata.py +0 -0
  54. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_scm_version.py +0 -0
  55. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_test_utils.py +0 -0
  56. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_toml.py +0 -0
  57. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_types.py +0 -0
  58. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_cls.py +0 -0
  59. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_fields.py +0 -0
  60. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_inference.py +0 -0
  61. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/__init__.py +0 -0
  62. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/_common.py +0 -0
  63. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/_standard.py +0 -0
  64. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_version_schemes/_towncrier.py +0 -0
  65. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/_worktree_discovery.py +0 -0
  66. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/overrides.py +0 -0
  67. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/py.typed +0 -0
  68. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning/test_api.py +0 -0
  69. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/SOURCES.txt +0 -0
  70. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/dependency_links.txt +0 -0
  71. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/entry_points.txt +0 -0
  72. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/src/vcs_versioning.egg-info/top_level.txt +0 -0
  73. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/__init__.py +0 -0
  74. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/conftest.py +0 -0
  75. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_better_root_errors.py +0 -0
  76. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_chain_api.py +0 -0
  77. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_compat.py +0 -0
  78. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_config.py +0 -0
  79. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_expect_parse.py +0 -0
  80. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_file_finders.py +0 -0
  81. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_hg_git.py +0 -0
  82. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_integrator_helpers.py +0 -0
  83. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_internal_log_level.py +0 -0
  84. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_jj.py +0 -0
  85. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_legacy_parse.py +0 -0
  86. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_mercurial.py +0 -0
  87. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_overrides_api.py +0 -0
  88. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_overrides_env_reader.py +0 -0
  89. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_project_overrides.py +0 -0
  90. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_project_path.py +0 -0
  91. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_regressions.py +0 -0
  92. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_scm_metadata.py +0 -0
  93. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_tag_config.py +0 -0
  94. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_version.py +0 -0
  95. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_version_scheme_towncrier.py +0 -0
  96. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_version_schemes.py +0 -0
  97. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_workdir_api.py +0 -0
  98. {vcs_versioning-2.2.1 → vcs_versioning-2.2.3}/testing_vcs/test_workdir_discovery.py +0 -0
@@ -2,6 +2,18 @@
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
+
11
+ ## 2.2.2 (2026-06-29)
12
+
13
+ ### Fixed
14
+
15
+ - Add missing pytest-timeout to vcs-versioning test dependencies. ([#1461](https://github.com/pypa/setuptools-scm/issues/1461))
16
+
5
17
  ## 2.2.1 (2026-06-29)
6
18
 
7
19
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vcs-versioning
3
- Version: 2.2.1
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
  ]
@@ -46,6 +46,7 @@ dependencies = [
46
46
  [dependency-groups]
47
47
  test = [
48
48
  "pytest",
49
+ "pytest-timeout",
49
50
  "pytest-xdist",
50
51
  ]
51
52
 
@@ -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.1
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()
@@ -21,8 +21,8 @@ name = "exceptiongroup"
21
21
  version = "1.3.1"
22
22
  source = { registry = "https://pypi.org/simple" }
23
23
  dependencies = [
24
- { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
25
- { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" },
24
+ { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9' or python_full_version >= '3.11'" },
25
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" },
26
26
  ]
27
27
  sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
28
28
  wheels = [
@@ -114,12 +114,12 @@ resolution-markers = [
114
114
  "python_full_version < '3.9'",
115
115
  ]
116
116
  dependencies = [
117
- { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" },
118
- { name = "exceptiongroup", marker = "python_full_version < '3.9'" },
119
- { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
120
- { name = "packaging", marker = "python_full_version < '3.9'" },
121
- { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
122
- { name = "tomli", marker = "python_full_version < '3.9'" },
117
+ { name = "colorama", marker = "sys_platform == 'win32'" },
118
+ { name = "exceptiongroup" },
119
+ { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" } },
120
+ { name = "packaging" },
121
+ { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" } },
122
+ { name = "tomli" },
123
123
  ]
124
124
  sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" }
125
125
  wheels = [
@@ -134,13 +134,13 @@ resolution-markers = [
134
134
  "python_full_version == '3.9.*'",
135
135
  ]
136
136
  dependencies = [
137
- { name = "colorama", marker = "python_full_version == '3.9.*' and sys_platform == 'win32'" },
138
- { name = "exceptiongroup", marker = "python_full_version == '3.9.*'" },
139
- { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
140
- { name = "packaging", marker = "python_full_version == '3.9.*'" },
141
- { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
142
- { name = "pygments", marker = "python_full_version == '3.9.*'" },
143
- { name = "tomli", marker = "python_full_version == '3.9.*'" },
137
+ { name = "colorama", marker = "sys_platform == 'win32'" },
138
+ { name = "exceptiongroup" },
139
+ { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" } },
140
+ { name = "packaging" },
141
+ { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" } },
142
+ { name = "pygments" },
143
+ { name = "tomli" },
144
144
  ]
145
145
  sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" }
146
146
  wheels = [
@@ -155,19 +155,33 @@ resolution-markers = [
155
155
  "python_full_version >= '3.10'",
156
156
  ]
157
157
  dependencies = [
158
- { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" },
159
- { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" },
160
- { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
161
- { name = "packaging", marker = "python_full_version >= '3.10'" },
162
- { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
163
- { name = "pygments", marker = "python_full_version >= '3.10'" },
164
- { name = "tomli", marker = "python_full_version == '3.10.*'" },
158
+ { name = "colorama", marker = "sys_platform == 'win32'" },
159
+ { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
160
+ { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" } },
161
+ { name = "packaging" },
162
+ { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" } },
163
+ { name = "pygments" },
164
+ { name = "tomli", marker = "python_full_version < '3.11'" },
165
165
  ]
166
166
  sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
167
167
  wheels = [
168
168
  { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" },
169
169
  ]
170
170
 
171
+ [[package]]
172
+ name = "pytest-timeout"
173
+ version = "2.4.0"
174
+ source = { registry = "https://pypi.org/simple" }
175
+ dependencies = [
176
+ { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
177
+ { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
178
+ { name = "pytest", version = "9.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
179
+ ]
180
+ sdist = { url = "https://files.pythonhosted.org/packages/ac/82/4c9ecabab13363e72d880f2fb504c5f750433b2b6f16e99f4ec21ada284c/pytest_timeout-2.4.0.tar.gz", hash = "sha256:7e68e90b01f9eff71332b25001f85c75495fc4e3a836701876183c4bcfd0540a", size = 17973, upload-time = "2025-05-05T19:44:34.99Z" }
181
+ wheels = [
182
+ { url = "https://files.pythonhosted.org/packages/fa/b6/3127540ecdf1464a00e5a01ee60a1b09175f6913f0644ac748494d9c4b21/pytest_timeout-2.4.0-py3-none-any.whl", hash = "sha256:c42667e5cdadb151aeb5b26d114aff6bdf5a907f176a007a30b940d3d865b5c2", size = 14382, upload-time = "2025-05-05T19:44:33.502Z" },
183
+ ]
184
+
171
185
  [[package]]
172
186
  name = "pytest-xdist"
173
187
  version = "3.6.1"
@@ -176,8 +190,8 @@ resolution-markers = [
176
190
  "python_full_version < '3.9'",
177
191
  ]
178
192
  dependencies = [
179
- { name = "execnet", marker = "python_full_version < '3.9'" },
180
- { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
193
+ { name = "execnet" },
194
+ { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" } },
181
195
  ]
182
196
  sdist = { url = "https://files.pythonhosted.org/packages/41/c4/3c310a19bc1f1e9ef50075582652673ef2bfc8cd62afef9585683821902f/pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d", size = 84060, upload-time = "2024-04-28T19:29:54.414Z" }
183
197
  wheels = [
@@ -193,8 +207,8 @@ resolution-markers = [
193
207
  "python_full_version == '3.9.*'",
194
208
  ]
195
209
  dependencies = [
196
- { name = "execnet", marker = "python_full_version >= '3.9'" },
197
- { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
210
+ { name = "execnet" },
211
+ { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
198
212
  { name = "pytest", version = "9.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
199
213
  ]
200
214
  sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload-time = "2025-07-01T13:30:59.346Z" }
@@ -296,13 +310,14 @@ test = [
296
310
  { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
297
311
  { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
298
312
  { name = "pytest", version = "9.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
313
+ { name = "pytest-timeout" },
299
314
  { name = "pytest-xdist", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
300
315
  { name = "pytest-xdist", version = "3.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
301
316
  ]
302
317
 
303
318
  [package.metadata]
304
319
  requires-dist = [
305
- { name = "packaging", specifier = ">=20" },
320
+ { name = "packaging", specifier = ">=26.2" },
306
321
  { name = "tomli", marker = "python_full_version < '3.11'", specifier = ">=1" },
307
322
  { name = "typing-extensions", marker = "python_full_version < '3.11'", specifier = ">=4.1" },
308
323
  ]
@@ -310,5 +325,6 @@ requires-dist = [
310
325
  [package.metadata.requires-dev]
311
326
  test = [
312
327
  { name = "pytest" },
328
+ { name = "pytest-timeout" },
313
329
  { name = "pytest-xdist" },
314
330
  ]
File without changes
File without changes
File without changes