Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-uv-dynamic-versioning for 
openSUSE:Factory checked in at 2026-08-24 12:01:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-uv-dynamic-versioning (Old)
 and      /work/SRC/openSUSE:Factory/.python-uv-dynamic-versioning.new.1258 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-uv-dynamic-versioning"

Mon Aug 24 12:01:40 2026 rev:3 rq:1373063 version:0.14.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-uv-dynamic-versioning/python-uv-dynamic-versioning.changes
        2026-06-18 18:38:38.888084834 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-uv-dynamic-versioning.new.1258/python-uv-dynamic-versioning.changes
      2026-08-24 12:02:25.217344195 +0200
@@ -1,0 +2,18 @@
+Sat Aug 22 13:32:45 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.14.1:
+  * chore: remove monkeypatch
+  * chore: update actions & set permissions
+  * fix: address license deprecations
+  * chore: update actions
+  * chore: update hatchling and others
+  * ci: update actions
+  * fix: don't use matrix
+  * docs: pinning build dependencies
+  * feat: add examples of build-constraint-dependencies
+  * ci: add integration test
+  * chore: set build-constraint-dependencies
+  * Read files as UTF-8 instead of using the locale encoding
+  * chore: update actions
+
+-------------------------------------------------------------------

Old:
----
  uv_dynamic_versioning-0.14.0.tar.gz

New:
----
  uv_dynamic_versioning-0.14.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-uv-dynamic-versioning.spec ++++++
--- /var/tmp/diff_new_pack.6PWAyb/_old  2026-08-24 12:02:26.239380252 +0200
+++ /var/tmp/diff_new_pack.6PWAyb/_new  2026-08-24 12:02:26.241380323 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-uv-dynamic-versioning
-Version:        0.14.0
+Version:        0.14.1
 Release:        0
 Summary:        Dynamic versioning based on VCS tags for uv/hatch project
 License:        MIT

++++++ uv_dynamic_versioning-0.14.0.tar.gz -> 
uv_dynamic_versioning-0.14.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/.github/workflows/publish.yml 
new/uv_dynamic_versioning-0.14.1/.github/workflows/publish.yml
--- old/uv_dynamic_versioning-0.14.0/.github/workflows/publish.yml      
2020-02-02 01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/.github/workflows/publish.yml      
2020-02-02 01:00:00.000000000 +0100
@@ -4,24 +4,32 @@
   release:
     types: ["created"]
 
+env:
+  PYTHON_VERSION: 3.14
+
 jobs:
   publish:
     runs-on: ubuntu-latest
+    environment: pypi
     permissions:
       id-token: write # IMPORTANT: this permission is mandatory for trusted 
publishing
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
-      - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
+      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          persist-credentials: false
+      - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
+        with:
+          python-version: ${{ env.PYTHON_VERSION }}
+      - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # 
v10.0.1
         with:
-          python-version: 3.14
-          cache: "pip"
-      - run: pip install -r requirements.txt
-      - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
+          enable-cache: false
+      - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
         with:
           path: ~/.cache/uv
-          key: uv-3.14-${{ hashFiles('uv.lock') }}
+          key: uv-${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }}
+          lookup-only: true
       - run: uv sync --frozen
       - name: build
         run: uv build
       - name: publish
-        uses: 
pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
+        uses: 
pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/.github/workflows/test.yml 
new/uv_dynamic_versioning-0.14.1/.github/workflows/test.yml
--- old/uv_dynamic_versioning-0.14.0/.github/workflows/test.yml 2020-02-02 
01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/.github/workflows/test.yml 2020-02-02 
01:00:00.000000000 +0100
@@ -2,6 +2,9 @@
 
 on: ["pull_request", "push"]
 
+permissions:
+  contents: read
+
 jobs:
   test:
     runs-on: ubuntu-latest
@@ -9,13 +12,16 @@
       matrix:
         python-version: ["3.10", 3.11, 3.12, 3.13, 3.14]
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
-      - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
+      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          persist-credentials: false
+      - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
         with:
           python-version: ${{ matrix.python-version }}
-          cache: "pip"
-      - run: pip install -r requirements.txt
-      - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
+      - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # 
v10.0.1
+        with:
+          enable-cache: false
+      - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
         with:
           path: ~/.cache/uv
           key: uv-${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
@@ -24,3 +30,43 @@
           git config --global user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
           git config --global user.name "github-actions[bot]"
       - run: uv run pytest
+
+  integration-test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          persist-credentials: false
+      - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
+        with:
+          python-version: 3.14
+      - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # 
v10.0.1
+        with:
+          enable-cache: false
+      - name: Set a dummy tag
+        run: git tag v1.0.0
+      - name: Build the examples with uv-dynamic-versioning (from source)
+        run: |
+          for example in examples/version-source examples/metadata-hook 
examples/metadata-hook/child-project; do
+            uv venv --directory "$example"
+            uv pip install --directory "$example" hatchling "$GITHUB_WORKSPACE"
+            uv build --directory "$example" --no-build-isolation
+          done
+      - name: Confirm built assets
+        run: |
+          for asset in \
+            examples/version-source/dist/version_source-1.0.0.tar.gz \
+            examples/version-source/dist/version_source-1.0.0-py3-none-any.whl 
\
+            examples/metadata-hook/dist/metadata_hook-1.0.0.tar.gz \
+            examples/metadata-hook/dist/metadata_hook-1.0.0-py3-none-any.whl \
+            
examples/metadata-hook/child-project/dist/child_project-1.0.0.tar.gz \
+            
examples/metadata-hook/child-project/dist/child_project-1.0.0-py3-none-any.whl; 
do
+            test -f "$asset" || { echo "missing: $asset"; exit 1; }
+          done
+      - name: Confirm version source
+        run: grep -Fx 'version = "1.0.0"' 
examples/version-source/src/example/_version.py
+      - name: Confirm metadata hook
+        run: |
+          unzip -p 
examples/metadata-hook/dist/metadata_hook-1.0.0-py3-none-any.whl \
+            'metadata_hook-1.0.0.dist-info/METADATA' \
+            | grep -Fx 'Requires-Dist: child-project==1.0.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/.pre-commit-config.yaml 
new/uv_dynamic_versioning-0.14.1/.pre-commit-config.yaml
--- old/uv_dynamic_versioning-0.14.0/.pre-commit-config.yaml    2020-02-02 
01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/.pre-commit-config.yaml    2020-02-02 
01:00:00.000000000 +0100
@@ -11,19 +11,19 @@
       - id: trailing-whitespace
 
   - repo: https://github.com/astral-sh/uv-pre-commit
-    rev: 0.10.12
+    rev: 8d582f54b8e4cc5a61a85eeed1f54bbdb1e294fc # 0.12.3
     hooks:
       - id: uv-lock
 
   - repo: https://github.com/ninoseki/uv-sort
-    rev: v0.7.0
+    rev: 5164b1c56d16ad34014d74e8cc4bcc4494664059 # v0.7.1
     hooks:
       - id: uv-sort
 
   - repo: https://github.com/charliermarsh/ruff-pre-commit
-    rev: v0.15.7
+    rev: 7c55798a78262d14b2074abf623d8a992ebb70d4 # v0.16.2
     hooks:
-      - id: ruff
+      - id: ruff-check
         args:
           - --fix
       - id: ruff-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/PKG-INFO 
new/uv_dynamic_versioning-0.14.1/PKG-INFO
--- old/uv_dynamic_versioning-0.14.0/PKG-INFO   2020-02-02 01:00:00.000000000 
+0100
+++ new/uv_dynamic_versioning-0.14.1/PKG-INFO   2020-02-02 01:00:00.000000000 
+0100
@@ -1,34 +1,12 @@
-Metadata-Version: 2.4
+Metadata-Version: 2.5
 Name: uv-dynamic-versioning
-Version: 0.14.0
+Version: 0.14.1
 Summary: Dynamic versioning based on VCS tags for uv/hatch project
 Project-URL: Repository, https://github.com/ninoseki/uv-dynamic-versioning/
 Project-URL: Homepage, https://github.com/ninoseki/uv-dynamic-versioning/
-License: MIT License
-        
-        Copyright (c) 2024 Manabu Niseki
-        
-        Permission is hereby granted, free of charge, to any person obtaining 
a copy
-        of this software and associated documentation files (the "Software"), 
to deal
-        in the Software without restriction, including without limitation the 
rights
-        to use, copy, modify, merge, publish, distribute, sublicense, and/or 
sell
-        copies of the Software, and to permit persons to whom the Software is
-        furnished to do so, subject to the following conditions:
-        
-        The above copyright notice and this permission notice shall be 
included in all
-        copies or substantial portions of the Software.
-        
-        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
EXPRESS OR
-        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
MERCHANTABILITY,
-        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 
SHALL THE
-        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
ARISING FROM,
-        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
IN THE
-        SOFTWARE.
 License-File: LICENSE
 Keywords: hatch,uv
 Classifier: Framework :: Hatch
-Classifier: License :: OSI Approved :: MIT License
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
@@ -36,8 +14,8 @@
 Classifier: Programming Language :: Python :: 3.13
 Classifier: Programming Language :: Python :: 3.14
 Requires-Python: <4.0,>=3.10
-Requires-Dist: dunamai~=1.26
-Requires-Dist: hatchling~=1.26
+Requires-Dist: dunamai~=1.26.1
+Requires-Dist: hatchling~=1.28
 Requires-Dist: jinja2~=3.0
 Requires-Dist: tomlkit~=0.13
 Description-Content-Type: text/markdown
@@ -61,6 +39,9 @@
 build-backend = "hatchling.build"
 ```
 
+> [!TIP]
+> Pinning build dependencies is recommended. See [Pinning Build 
Dependencies](https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/tips.md#pinning-build-dependencies).
+
 ## Plugins
 
 This project offers two plugins:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/README.md 
new/uv_dynamic_versioning-0.14.1/README.md
--- old/uv_dynamic_versioning-0.14.0/README.md  2020-02-02 01:00:00.000000000 
+0100
+++ new/uv_dynamic_versioning-0.14.1/README.md  2020-02-02 01:00:00.000000000 
+0100
@@ -17,6 +17,9 @@
 build-backend = "hatchling.build"
 ```
 
+> [!TIP]
+> Pinning build dependencies is recommended. See [Pinning Build 
Dependencies](https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/tips.md#pinning-build-dependencies).
+
 ## Plugins
 
 This project offers two plugins:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/docs/tips.md 
new/uv_dynamic_versioning-0.14.1/docs/tips.md
--- old/uv_dynamic_versioning-0.14.0/docs/tips.md       2020-02-02 
01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/docs/tips.md       2020-02-02 
01:00:00.000000000 +0100
@@ -1,5 +1,32 @@
 # Tips
 
+## Pinning Build Dependencies
+
+Using version pinning is a good counter measure against so-called supply chain 
attack.
+uv's 
[build-constraint-dependencies](https://docs.astral.sh/uv/reference/settings/#build-constraint-dependencies)
 is for that.
+
+```bash
+$ printf '%s\n' hatchling uv-dynamic-versioning | uv pip compile - 
--no-annotate --no-header --quiet | jq -R -s 'split("\n") | map(select(length > 
0))'
+[
+  ...
+]
+```
+
+Copy and paste the output into `pyproject.toml`'s 
`tool.uv.build-constraint-dependencies`:
+
+```toml
+[tool.uv]
+build-constraint-dependencies = [
+  ...
+]
+```
+
+`uv build` now uses pinned dependencies.
+
+- Examples:
+  - 
[modelcontextprotocol/python-sdk/](https://github.com/modelcontextprotocol/python-sdk/blob/a4f4ccd091138771535e17191123f20b30fda68e/pyproject.toml#L37-L54)
+  - 
[./examples/version-source](https://github.com/ninoseki/uv-dynamic-versioning/blob/main/examples/version-source/pyproject.toml)
+
 ## Dependabot
 
 Dependabot may fail if your project uses Depandabot and 
`uv-dynamic-versioning` together.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/examples/version-source/pyproject.toml 
new/uv_dynamic_versioning-0.14.1/examples/version-source/pyproject.toml
--- old/uv_dynamic_versioning-0.14.0/examples/version-source/pyproject.toml     
2020-02-02 01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/examples/version-source/pyproject.toml     
2020-02-02 01:00:00.000000000 +0100
@@ -10,6 +10,20 @@
 requires = ["hatchling", "uv-dynamic-versioning"]
 build-backend = "hatchling.build"
 
+[too.uv]
+build-constraint-dependencies = [
+  "dunamai==1.26.2",
+  "hatchling==1.31.0",
+  "jinja2==3.1.6",
+  "markupsafe==3.0.3",
+  "packaging==26.3",
+  "pathspec==1.1.1",
+  "pluggy==1.6.0",
+  "tomlkit==0.15.1",
+  "trove-classifiers==2026.6.1.19",
+  "uv-dynamic-versioning==0.14.0",
+]
+
 [tool.hatch.version]
 source = "uv-dynamic-versioning"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/pyproject.toml 
new/uv_dynamic_versioning-0.14.1/pyproject.toml
--- old/uv_dynamic_versioning-0.14.0/pyproject.toml     2020-02-02 
01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/pyproject.toml     2020-02-02 
01:00:00.000000000 +0100
@@ -4,10 +4,9 @@
 description = "Dynamic versioning based on VCS tags for uv/hatch project"
 readme = "README.md"
 requires-python = ">=3.10,<4.0"
-license = { file = "LICENSE" }
+license-files = ["LICENSE"]
 keywords = ["uv", "hatch"]
 classifiers = [
-  "License :: OSI Approved :: MIT License",
   "Programming Language :: Python",
   "Programming Language :: Python :: 3.10",
   "Programming Language :: Python :: 3.11",
@@ -17,8 +16,8 @@
   "Framework :: Hatch",
 ]
 dependencies = [
-  "dunamai~=1.26",
-  "hatchling~=1.26",
+  "dunamai~=1.26.1",
+  "hatchling~=1.28",
   "jinja2~=3.0",
   "tomlkit~=0.13",
 ]
@@ -40,13 +39,24 @@
 [tool.hatch.version]
 path = "src/uv_dynamic_versioning/__init__.py"
 
+[tool.uv]
+required-version = "==0.12.3"
+build-constraint-dependencies = [
+  "hatchling==1.32.0",
+  "packaging==26.3",
+  "pathspec==1.1.1",
+  "pluggy==1.6.0",
+  "tomlkit==0.15.1",
+  "trove-classifiers==2026.6.1.19",
+]
+
 [dependency-groups]
 dev = [
-  "gitpython~=3.1.46",
-  "pre-commit~=4.5.1",
+  "gitpython~=3.1.50",
+  "prek>=0.4.6",
   "pytest-pretty~=1.3.0",
-  "pytest-randomly~=4.0.1",
-  "pytest~=9.0.2",
+  "pytest-randomly~=4.1.0",
+  "pytest~=9.1.1",
 ]
 
 [tool.ruff.lint]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/requirements.txt 
new/uv_dynamic_versioning-0.14.1/requirements.txt
--- old/uv_dynamic_versioning-0.14.0/requirements.txt   2020-02-02 
01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/requirements.txt   2020-02-02 
01:00:00.000000000 +0100
@@ -1 +1 @@
-uv==0.10.12
+uv==0.12.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/src/uv_dynamic_versioning/__init__.py 
new/uv_dynamic_versioning-0.14.1/src/uv_dynamic_versioning/__init__.py
--- old/uv_dynamic_versioning-0.14.0/src/uv_dynamic_versioning/__init__.py      
2020-02-02 01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/src/uv_dynamic_versioning/__init__.py      
2020-02-02 01:00:00.000000000 +0100
@@ -1 +1 @@
-__version__ = "0.14.0"
+__version__ = "0.14.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/src/uv_dynamic_versioning/main.py 
new/uv_dynamic_versioning-0.14.1/src/uv_dynamic_versioning/main.py
--- old/uv_dynamic_versioning-0.14.0/src/uv_dynamic_versioning/main.py  
2020-02-02 01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/src/uv_dynamic_versioning/main.py  
2020-02-02 01:00:00.000000000 +0100
@@ -6,16 +6,16 @@
 from pathlib import Path
 
 import tomlkit
-from dunamai import _VALID_PEP440, _VALID_PVP, _VALID_SEMVER, Style
+from dunamai import _VALID_PEP440, _VALID_PVP, _VALID_SEMVER, Style, Version
 
 from . import schemas
-from .monkeypatch import Version
 from .template import render_template
 
 
 def read(root: str):
     pyproject = Path(root) / "pyproject.toml"
-    return pyproject.read_text()
+    # TOML documents are UTF-8 by spec, so don't let the locale encoding 
decide.
+    return pyproject.read_text(encoding="utf-8")
 
 
 def parse(text: str):
@@ -52,7 +52,9 @@
         return None
 
     source, pattern = (config.from_file.source, config.from_file.pattern)
-    content = Path(source).read_text().strip()
+    # `pattern` is meant for source files (e.g. `__init__.py`), whose 
non-version
+    # content can be non-ASCII, so don't let the locale encoding decide either.
+    content = Path(source).read_text(encoding="utf-8").strip()
 
     if pattern is None:
         return content
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/src/uv_dynamic_versioning/monkeypatch.py 
new/uv_dynamic_versioning-0.14.1/src/uv_dynamic_versioning/monkeypatch.py
--- old/uv_dynamic_versioning-0.14.0/src/uv_dynamic_versioning/monkeypatch.py   
2020-02-02 01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/src/uv_dynamic_versioning/monkeypatch.py   
1970-01-01 01:00:00.000000000 +0100
@@ -1,40 +0,0 @@
-from pathlib import Path
-
-from dunamai import Pattern, _detect_vcs, _detect_vcs_from_archival
-from dunamai import Version as _Version
-
-
-# FIXME: remove this monkey patch after new version of dunamai is released 
with the patch
-class Version(_Version):
-    @classmethod
-    def from_any_vcs(
-        cls,
-        pattern: str | Pattern = Pattern.Default,
-        latest_tag: bool = False,
-        tag_dir: str = "tags",
-        tag_branch: str | None = None,
-        full_commit: bool = False,
-        strict: bool = False,
-        path: Path | None = None,
-        pattern_prefix: str | None = None,
-        ignore_untracked: bool = False,
-        commit_length: int | None = None,
-        highest_tag: bool = False,
-    ):
-        vcs = _detect_vcs_from_archival(path)
-        if vcs is None:
-            vcs = _detect_vcs(None, path)
-        return cls._do_vcs_callback(
-            vcs,
-            pattern,
-            latest_tag,
-            tag_dir,
-            tag_branch,
-            full_commit,
-            strict,
-            path,
-            pattern_prefix,
-            ignore_untracked,
-            commit_length,
-            highest_tag,
-        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/tests/fixtures/with-from-file-non-ascii/_version.py
 
new/uv_dynamic_versioning-0.14.1/tests/fixtures/with-from-file-non-ascii/_version.py
--- 
old/uv_dynamic_versioning-0.14.0/tests/fixtures/with-from-file-non-ascii/_version.py
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/uv_dynamic_versioning-0.14.1/tests/fixtures/with-from-file-non-ascii/_version.py
        2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,3 @@
+"""バージョン情報 — version metadata."""
+
+__version__ = "0.0.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/tests/fixtures/with-from-file-non-ascii/pyproject.toml
 
new/uv_dynamic_versioning-0.14.1/tests/fixtures/with-from-file-non-ascii/pyproject.toml
--- 
old/uv_dynamic_versioning-0.14.0/tests/fixtures/with-from-file-non-ascii/pyproject.toml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/uv_dynamic_versioning-0.14.1/tests/fixtures/with-from-file-non-ascii/pyproject.toml
     2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,15 @@
+[project]
+name = "dummy"
+dynamic = ["version"]
+description = ""
+readme = "README.md"
+requires-python = ">=3.10"
+dependencies = []
+
+[build-system]
+requires = ["hatchling", "uv-dynamic-versioning"]
+build-backend = "hatchling.build"
+
+[tool.uv-dynamic-versioning.from-file]
+source = "tests/fixtures/with-from-file-non-ascii/_version.py"
+pattern = "^__version__ = \"(.+)\"$"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv_dynamic_versioning-0.14.0/tests/fixtures/with-non-ascii/pyproject.toml 
new/uv_dynamic_versioning-0.14.1/tests/fixtures/with-non-ascii/pyproject.toml
--- 
old/uv_dynamic_versioning-0.14.0/tests/fixtures/with-non-ascii/pyproject.toml   
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/uv_dynamic_versioning-0.14.1/tests/fixtures/with-non-ascii/pyproject.toml   
    2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,15 @@
+[project]
+name = "dummy"
+dynamic = ["version"]
+# A non-ASCII comment — em dash (U+2014), as found in real pyproject.toml 
files.
+description = "パッケージ"
+readme = "README.md"
+requires-python = ">=3.10"
+dependencies = []
+
+[build-system]
+requires = ["hatchling", "uv-dynamic-versioning"]
+build-backend = "hatchling.build"
+
+[tool.uv-dynamic-versioning]
+style = "pep440"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/tests/test_main.py 
new/uv_dynamic_versioning-0.14.1/tests/test_main.py
--- old/uv_dynamic_versioning-0.14.0/tests/test_main.py 2020-02-02 
01:00:00.000000000 +0100
+++ new/uv_dynamic_versioning-0.14.1/tests/test_main.py 2020-02-02 
01:00:00.000000000 +0100
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 import pytest
 from dunamai import Style, Version
 from git import Repo
 
 from uv_dynamic_versioning import schemas
-from uv_dynamic_versioning.main import get_version
+from uv_dynamic_versioning.base import BasePlugin
+from uv_dynamic_versioning.main import get_version, read
 
 
 @pytest.mark.usefixtures("semver_tag")
@@ -108,3 +111,33 @@
         assert version_highest.startswith("1.0.0")
     finally:
         repo.delete_tag(low_tag)
+
+
[email protected]
+def non_utf8_locale(monkeypatch: pytest.MonkeyPatch):
+    read_text = Path.read_text
+
+    def patched(self: Path, encoding: str | None = None, errors=None, 
**kwargs):
+        return read_text(self, encoding=encoding or "ascii", errors=errors, 
**kwargs)
+
+    monkeypatch.setattr(Path, "read_text", patched)
+
+
[email protected]("non_utf8_locale")
+def test_read_decodes_utf8_regardless_of_locale():
+    # `pyproject.toml` is a TOML document, which is UTF-8 by spec, so `read` 
must not
+    # decode it with the locale encoding: on a non-UTF-8 locale that either 
raises
+    # (`UnicodeDecodeError` under `LC_ALL=C` or a Chinese Windows locale) or 
silently
+    # mojibakes the document.
+    root = "tests/fixtures/with-non-ascii"
+    expected = (Path(root) / "pyproject.toml").read_text(encoding="utf-8")
+    assert read(root) == expected
+
+
[email protected]("non_utf8_locale")
+def test_from_file_decodes_utf8_regardless_of_locale():
+    # Same as above for the `from-file` source: with a `pattern` it is meant 
to be
+    # pointed at a source file, whose surrounding content can be non-ASCII.
+    plugin = BasePlugin()
+    plugin.root = "tests/fixtures/with-from-file-non-ascii"  # type: 
ignore[attr-defined]
+    assert get_version(plugin.project_config)[0] == "0.0.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv_dynamic_versioning-0.14.0/uv.lock 
new/uv_dynamic_versioning-0.14.1/uv.lock
--- old/uv_dynamic_versioning-0.14.0/uv.lock    2020-02-02 01:00:00.000000000 
+0100
+++ new/uv_dynamic_versioning-0.14.1/uv.lock    2020-02-02 01:00:00.000000000 
+0100
@@ -2,13 +2,14 @@
 revision = 3
 requires-python = ">=3.10, <4.0"
 
-[[package]]
-name = "cfgv"
-version = "3.5.0"
-source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz";,
 hash = 
"sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size 
= 7334, upload-time = "2025-11-19T20:55:51.612Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl";,
 hash = 
"sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size 
= 7445, upload-time = "2025-11-19T20:55:50.744Z" },
+[manifest]
+build-constraints = [
+    { name = "hatchling", specifier = "==1.32.0" },
+    { name = "packaging", specifier = "==26.3" },
+    { name = "pathspec", specifier = "==1.1.1" },
+    { name = "pluggy", specifier = "==1.6.0" },
+    { name = "tomlkit", specifier = "==0.15.1" },
+    { name = "trove-classifiers", specifier = "==2026.6.1.19" },
 ]
 
 [[package]]
@@ -21,24 +22,15 @@
 ]
 
 [[package]]
-name = "distlib"
-version = "0.4.0"
-source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz";,
 hash = 
"sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size 
= 614605, upload-time = "2025-07-17T16:52:00.465Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl";,
 hash = 
"sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size 
= 469047, upload-time = "2025-07-17T16:51:58.613Z" },
-]
-
-[[package]]
 name = "dunamai"
-version = "1.26.0"
+version = "1.26.2"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "packaging" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/1c/c4/346cef905782df6152f29f02d9c8ed4acf7ae66b0e66210b7156c5575ccb/dunamai-1.26.0.tar.gz";,
 hash = 
"sha256:5396ac43aa20ed059040034e9f9798c7464cf4334c6fc3da3732e29273a2f97d", size 
= 45500, upload-time = "2026-02-15T02:58:55.534Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/12/18/020d3b27a10450ddb11429f637404e8ea67ecf4d9fd999d4f1d553f25506/dunamai-1.26.2.tar.gz";,
 hash = 
"sha256:84ea45eddf9bb4b40df7610b1b22a03137365e6257dbf9d7b72128fdccca564c", size 
= 46536, upload-time = "2026-08-02T03:32:50.276Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/87/10/2c7edbf230e5c507d38367af498fa94258ed97205d9b4b6f63a921fe9c49/dunamai-1.26.0-py3-none-any.whl";,
 hash = 
"sha256:f584edf0fda0d308cce0961f807bc90a8fe3d9ff4d62f94e72eca7b43f0ed5f6", size 
= 27322, upload-time = "2026-02-15T02:58:54.143Z" },
+    { url = 
"https://files.pythonhosted.org/packages/f0/31/2aaabe7d03f395c7b6d955f09a4d1440a2c49920abea42fde88cacc2ef97/dunamai-1.26.2-py3-none-any.whl";,
 hash = 
"sha256:4234be3a90c3ec13ecf75d94a2248068e5a3018e8112892fcd9f3a1f287c9c32", size 
= 27478, upload-time = "2026-08-02T03:32:49.348Z" },
 ]
 
 [[package]]
@@ -46,7 +38,7 @@
 version = "1.3.1"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
-    { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+    { name = "typing-extensions" },
 ]
 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" }
 wheels = [
@@ -54,15 +46,6 @@
 ]
 
 [[package]]
-name = "filelock"
-version = "3.25.2"
-source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/94/b8/00651a0f559862f3bb7d6f7477b192afe3f583cc5e26403b44e59a55ab34/filelock-3.25.2.tar.gz";,
 hash = 
"sha256:b64ece2b38f4ca29dd3e810287aa8c48182bbecd1ae6e9ae126c9b35f1382694", size 
= 40480, upload-time = "2026-03-11T20:45:38.487Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/a4/a5/842ae8f0c08b61d6484b52f99a03510a3a72d23141942d216ebe81fefbce/filelock-3.25.2-py3-none-any.whl";,
 hash = 
"sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70", size 
= 26759, upload-time = "2026-03-11T20:45:37.437Z" },
-]
-
-[[package]]
 name = "gitdb"
 version = "4.0.12"
 source = { registry = "https://pypi.org/simple"; }
@@ -76,14 +59,14 @@
 
 [[package]]
 name = "gitpython"
-version = "3.1.46"
+version = "3.1.50"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "gitdb" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/df/b5/59d16470a1f0dfe8c793f9ef56fd3826093fc52b3bd96d6b9d6c26c7e27b/gitpython-3.1.46.tar.gz";,
 hash = 
"sha256:400124c7d0ef4ea03f7310ac2fbf7151e09ff97f2a3288d64a440c584a29c37f", size 
= 215371, upload-time = "2026-01-01T15:37:32.073Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/33/f6/354ae6491228b5eb40e10d89c4d13c651fe1cf7556e35ebdded50cff57ce/gitpython-3.1.50.tar.gz";,
 hash = 
"sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc", size 
= 219798, upload-time = "2026-05-06T04:01:26.571Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl";,
 hash = 
"sha256:79812ed143d9d25b6d176a10bb511de0f9c67b1fa641d82097b0ab90398a2058", size 
= 208620, upload-time = "2026-01-01T15:37:30.574Z" },
+    { url = 
"https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl";,
 hash = 
"sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9", size 
= 212507, upload-time = "2026-05-06T04:01:23.799Z" },
 ]
 
 [[package]]
@@ -103,15 +86,6 @@
 ]
 
 [[package]]
-name = "identify"
-version = "2.6.18"
-source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/46/c4/7fb4db12296cdb11893d61c92048fe617ee853f8523b9b296ac03b43757e/identify-2.6.18.tar.gz";,
 hash = 
"sha256:873ac56a5e3fd63e7438a7ecbc4d91aca692eb3fefa4534db2b7913f3fc352fd", size 
= 99580, upload-time = "2026-03-15T18:39:50.319Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/46/33/92ef41c6fad0233e41d3d84ba8e8ad18d1780f1e5d99b3c683e6d7f98b63/identify-2.6.18-py2.py3-none-any.whl";,
 hash = 
"sha256:8db9d3c8ea9079db92cafb0ebf97abdc09d52e97f4dcf773a2e694048b7cd737", size 
= 99394, upload-time = "2026-03-15T18:39:48.915Z" },
-]
-
-[[package]]
 name = "iniconfig"
 version = "2.3.0"
 source = { registry = "https://pypi.org/simple"; }
@@ -239,15 +213,6 @@
 ]
 
 [[package]]
-name = "nodeenv"
-version = "1.10.0"
-source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz";,
 hash = 
"sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size 
= 55611, upload-time = "2025-12-20T14:08:54.006Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl";,
 hash = 
"sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size 
= 23438, upload-time = "2025-12-20T14:08:52.782Z" },
-]
-
-[[package]]
 name = "packaging"
 version = "26.0"
 source = { registry = "https://pypi.org/simple"; }
@@ -266,15 +231,6 @@
 ]
 
 [[package]]
-name = "platformdirs"
-version = "4.9.4"
-source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/19/56/8d4c30c8a1d07013911a8fdbd8f89440ef9f08d07a1b50ab8ca8be5a20f9/platformdirs-4.9.4.tar.gz";,
 hash = 
"sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934", size 
= 28737, upload-time = "2026-03-05T18:34:13.271Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/63/d7/97f7e3a6abb67d8080dd406fd4df842c2be0efaf712d1c899c32a075027c/platformdirs-4.9.4-py3-none-any.whl";,
 hash = 
"sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868", size 
= 21216, upload-time = "2026-03-05T18:34:12.172Z" },
-]
-
-[[package]]
 name = "pluggy"
 version = "1.6.0"
 source = { registry = "https://pypi.org/simple"; }
@@ -284,33 +240,41 @@
 ]
 
 [[package]]
-name = "pre-commit"
-version = "4.5.1"
+name = "prek"
+version = "0.4.6"
 source = { registry = "https://pypi.org/simple"; }
-dependencies = [
-    { name = "cfgv" },
-    { name = "identify" },
-    { name = "nodeenv" },
-    { name = "pyyaml" },
-    { name = "virtualenv" },
-]
-sdist = { url = 
"https://files.pythonhosted.org/packages/40/f1/6d86a29246dfd2e9b6237f0b5823717f60cad94d47ddc26afa916d21f525/pre_commit-4.5.1.tar.gz";,
 hash = 
"sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61", size 
= 198232, upload-time = "2025-12-16T21:14:33.552Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/6e/90/e1c82c50f99b1a42a96f02aa8cc8304e8efe64db5f5290a800360387055c/prek-0.4.6.tar.gz";,
 hash = 
"sha256:0173732cfdbd4d47c1dcd594767612ac46f1c1ba637d6d634cf745eb2f39c4a6", size 
= 492207, upload-time = "2026-07-01T03:27:55.108Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/5d/19/fd3ef348460c80af7bb4669ea7926651d1f95c23ff2df18b9d24bab4f3fa/pre_commit-4.5.1-py2.py3-none-any.whl";,
 hash = 
"sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77", size 
= 226437, upload-time = "2025-12-16T21:14:32.409Z" },
+    { url = 
"https://files.pythonhosted.org/packages/d5/a7/61ef540c2c7d37c0f92f7cc3c070b4a6b49220a569aff5590e27ff897334/prek-0.4.6-py3-none-linux_armv6l.whl";,
 hash = 
"sha256:fd7711bd41146a868356bce65687e96cc33b15875558f75e9d9cc4dffe71cb20", size 
= 5655603, upload-time = "2026-07-01T03:27:21.321Z" },
+    { url = 
"https://files.pythonhosted.org/packages/9f/10/190b586bf4171a74512a91ad2ab118b46885320c826451cc371bd1ae4b5a/prek-0.4.6-py3-none-macosx_10_12_x86_64.whl";,
 hash = 
"sha256:a2260c17793f563f7d14c8578528dfc41d077c6b360bdd7b92cb1b120a921406", size 
= 6017876, upload-time = "2026-07-01T03:27:24.149Z" },
+    { url = 
"https://files.pythonhosted.org/packages/e2/80/cc56023ce6e4dec6a2fe47d071a566ebdd96b965cf9fa7787cdee8e03dc5/prek-0.4.6-py3-none-macosx_11_0_arm64.whl";,
 hash = 
"sha256:6c6b64f482764523d1b61f5ddd29384df4b395e84741fdf1af4c146e1556e710", size 
= 5566630, upload-time = "2026-07-01T03:27:26.095Z" },
+    { url = 
"https://files.pythonhosted.org/packages/21/8b/9300a0c4db0f2b354519aeebd7bc31d3f6a72836f89dbdbd21a82844393a/prek-0.4.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl";,
 hash = 
"sha256:19a1f4a36ad736bb844f7d6166cd8f266bfd3b945193f080a2810fe8e36f51ac", size 
= 5839531, upload-time = "2026-07-01T03:27:28.009Z" },
+    { url = 
"https://files.pythonhosted.org/packages/07/75/9b5625d3ee8f27e102af0d907ab7b8c4e4242d2b364db61392b3d0a75afd/prek-0.4.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl";,
 hash = 
"sha256:bd249e6e077e08279233aa5e59b4dcb9f7e1283d4a22c5a522a01764d540838c", size 
= 5566408, upload-time = "2026-07-01T03:27:30.105Z" },
+    { url = 
"https://files.pythonhosted.org/packages/ff/0e/3c742f0aa5d564dca31b341b8f519578b5fcc52762a277c61e0df303fb6c/prek-0.4.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl";,
 hash = 
"sha256:302f0e262ecde9dcd942e74b52e6cf300baf1e277373bae727f107ad58d3dccc", size 
= 5963887, upload-time = "2026-07-01T03:27:32.633Z" },
+    { url = 
"https://files.pythonhosted.org/packages/7a/09/94cde2c3aa9f16520939deadff83282363847174d034f95682543bf1530b/prek-0.4.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl";,
 hash = 
"sha256:e7a4294cbf828d8c44dba3375f8c2a95bef540a37217f8e7894eb46813b0a52c", size 
= 6741919, upload-time = "2026-07-01T03:27:34.556Z" },
+    { url = 
"https://files.pythonhosted.org/packages/91/79/8204757f8e6be7464b36e9a33aea3fcde280830aadd72bc24f940b138fda/prek-0.4.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";,
 hash = 
"sha256:94be5bf0ab55ccd662d921a50a266454c1d2b636cbd58906ab0cd0d54cfc6c7e", size 
= 6230066, upload-time = "2026-07-01T03:27:36.636Z" },
+    { url = 
"https://files.pythonhosted.org/packages/f5/17/e9003e1fed5d91fce26786fbea2a405d3438310d574d5e3fa145bf860c8f/prek-0.4.6-py3-none-manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:01d7ef6e404e233bf34e2c1f841a502061e64cd986d72ba72424a7dbc6356f5f", size 
= 5843435, upload-time = "2026-07-01T03:27:39.707Z" },
+    { url = 
"https://files.pythonhosted.org/packages/b2/86/b1b3abc2a0638a637fc756f1032672776d30b0809e82b20aaafdde749306/prek-0.4.6-py3-none-manylinux_2_31_riscv64.whl";,
 hash = 
"sha256:ea204b6e47d8559fbf54a5dc4dd90f930a57f5ec36ba88466302e61e17c25815", size 
= 5708008, upload-time = "2026-07-01T03:27:41.677Z" },
+    { url = 
"https://files.pythonhosted.org/packages/b7/59/d43be79bea11d99bea07c4f47b9bf9ae1269923fa4646739bbf68cf81c1c/prek-0.4.6-py3-none-musllinux_1_1_armv7l.whl";,
 hash = 
"sha256:767363e86d428628e447e441448807cdfb7a7e4d71de644160f20236dc10eff8", size 
= 5539699, upload-time = "2026-07-01T03:27:43.707Z" },
+    { url = 
"https://files.pythonhosted.org/packages/38/19/0fa6f8f761e185eb33e1b2b1d8214554f5a9e2925cd3f74f1a05a149c782/prek-0.4.6-py3-none-musllinux_1_1_i686.whl";,
 hash = 
"sha256:2b8654ca8273ec1fd7f52a1cca7750998c38f368141ca19f840ea0aaff1ff9e6", size 
= 5819532, upload-time = "2026-07-01T03:27:45.86Z" },
+    { url = 
"https://files.pythonhosted.org/packages/84/17/53953628a2647fe4f7026fd590136ffdb450583f1a97fbd00ae98404cc5e/prek-0.4.6-py3-none-musllinux_1_1_x86_64.whl";,
 hash = 
"sha256:24d954a9d34b11c027ee298c5916efa2657189f2329ce59cc9846bf97d5ab74b", size 
= 6345962, upload-time = "2026-07-01T03:27:47.71Z" },
+    { url = 
"https://files.pythonhosted.org/packages/9b/8e/f9cb05869e87fc4374d42a22fae349c10b5aff40b52d4850f05d8c511600/prek-0.4.6-py3-none-win32.whl";,
 hash = 
"sha256:66f0f1ab5d36a0127da4d4b69bf0b19fbda51fc8486b58d379fb09e17fe7c0d4", size 
= 5337026, upload-time = "2026-07-01T03:27:49.713Z" },
+    { url = 
"https://files.pythonhosted.org/packages/ef/04/597b7ac6a90986e7be2bebc9495c1faa51a05403fdefe63bab244d3c7d45/prek-0.4.6-py3-none-win_amd64.whl";,
 hash = 
"sha256:4959aa66e619b48d4a6d453d0ca59320398e74846c7632898ee990d4e2f6ea8b", size 
= 5734832, upload-time = "2026-07-01T03:27:51.706Z" },
+    { url = 
"https://files.pythonhosted.org/packages/30/b0/ecdf999cd2c01e972f7db324c39e21296032dd46730083ae7d7d34b15428/prek-0.4.6-py3-none-win_arm64.whl";,
 hash = 
"sha256:0f3ddbd39e3a1c29be5ef3c02914f1886a556b8c9fe14bca94b40ff906029b17", size 
= 5568585, upload-time = "2026-07-01T03:27:53.596Z" },
 ]
 
 [[package]]
 name = "pygments"
-version = "2.19.2"
+version = "2.20.0"
 source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz";,
 hash = 
"sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size 
= 4968631, upload-time = "2025-06-21T13:39:12.283Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz";,
 hash = 
"sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size 
= 4955991, upload-time = "2026-03-29T13:29:33.898Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl";,
 hash = 
"sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size 
= 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
+    { url = 
"https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl";,
 hash = 
"sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size 
= 1231151, upload-time = "2026-03-29T13:29:30.038Z" },
 ]
 
 [[package]]
 name = "pytest"
-version = "9.0.2"
+version = "9.1.1"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "colorama", marker = "sys_platform == 'win32'" },
@@ -321,9 +285,9 @@
     { name = "pygments" },
     { name = "tomli", marker = "python_full_version < '3.11'" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz";,
 hash = 
"sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size 
= 1568901, upload-time = "2025-12-06T21:30:51.014Z" }
+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" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl";,
 hash = 
"sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size 
= 374801, upload-time = "2025-12-06T21:30:49.154Z" },
+    { 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" },
 ]
 
 [[package]]
@@ -341,91 +305,14 @@
 
 [[package]]
 name = "pytest-randomly"
-version = "4.0.1"
+version = "4.1.0"
 source = { registry = "https://pypi.org/simple"; }
 dependencies = [
     { name = "pytest" },
 ]
-sdist = { url = 
"https://files.pythonhosted.org/packages/c4/1d/258a4bf1109258c00c35043f40433be5c16647387b6e7cd5582d638c116b/pytest_randomly-4.0.1.tar.gz";,
 hash = 
"sha256:174e57bb12ac2c26f3578188490bd333f0e80620c3f47340158a86eca0593cd8", size 
= 14130, upload-time = "2025-09-12T15:23:00.085Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/27/b3/36192dacc0f470ac2cc516f73e01739c9a48a8224f76beada4f85e1c8a89/pytest_randomly-4.1.0.tar.gz";,
 hash = 
"sha256:47f1d9746c3bc3efabd53ae1ebfb8bb385cf3d4df4b505b6d58d9c97a3dfe70f", size 
= 14302, upload-time = "2026-04-20T13:01:51.831Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/33/3e/a4a9227807b56869790aad3e24472a554b585974fe7e551ea350f50897ae/pytest_randomly-4.0.1-py3-none-any.whl";,
 hash = 
"sha256:e0dfad2fd4f35e07beff1e47c17fbafcf98f9bf4531fd369d9260e2f858bfcb7", size 
= 8304, upload-time = "2025-09-12T15:22:58.946Z" },
-]
-
-[[package]]
-name = "python-discovery"
-version = "1.2.0"
-source = { registry = "https://pypi.org/simple"; }
-dependencies = [
-    { name = "filelock" },
-    { name = "platformdirs" },
-]
-sdist = { url = 
"https://files.pythonhosted.org/packages/9c/90/bcce6b46823c9bec1757c964dc37ed332579be512e17a30e9698095dcae4/python_discovery-1.2.0.tar.gz";,
 hash = 
"sha256:7d33e350704818b09e3da2bd419d37e21e7c30db6e0977bb438916e06b41b5b1", size 
= 58055, upload-time = "2026-03-19T01:43:08.248Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/c2/3c/2005227cb951df502412de2fa781f800663cccbef8d90ec6f1b371ac2c0d/python_discovery-1.2.0-py3-none-any.whl";,
 hash = 
"sha256:1e108f1bbe2ed0ef089823d28805d5ad32be8e734b86a5f212bf89b71c266e4a", size 
= 31524, upload-time = "2026-03-19T01:43:07.045Z" },
-]
-
-[[package]]
-name = "pyyaml"
-version = "6.0.3"
-source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz";,
 hash = 
"sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size 
= 130960, upload-time = "2025-09-25T21:33:16.546Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size 
= 184227, upload-time = "2025-09-25T21:31:46.04Z" },
-    { url = 
"https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl";,
 hash = 
"sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size 
= 174019, upload-time = "2025-09-25T21:31:47.706Z" },
-    { url = 
"https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size 
= 740646, upload-time = "2025-09-25T21:31:49.21Z" },
-    { url = 
"https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl";,
 hash = 
"sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size 
= 840793, upload-time = "2025-09-25T21:31:50.735Z" },
-    { url = 
"https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size 
= 770293, upload-time = "2025-09-25T21:31:51.828Z" },
-    { url = 
"https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size 
= 732872, upload-time = "2025-09-25T21:31:53.282Z" },
-    { url = 
"https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size 
= 758828, upload-time = "2025-09-25T21:31:54.807Z" },
-    { url = 
"https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl";,
 hash = 
"sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size 
= 142415, upload-time = "2025-09-25T21:31:55.885Z" },
-    { url = 
"https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl";,
 hash = 
"sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size 
= 158561, upload-time = "2025-09-25T21:31:57.406Z" },
-    { url = 
"https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size 
= 185826, upload-time = "2025-09-25T21:31:58.655Z" },
-    { url = 
"https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl";,
 hash = 
"sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size 
= 175577, upload-time = "2025-09-25T21:32:00.088Z" },
-    { url = 
"https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size 
= 775556, upload-time = "2025-09-25T21:32:01.31Z" },
-    { url = 
"https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl";,
 hash = 
"sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size 
= 882114, upload-time = "2025-09-25T21:32:03.376Z" },
-    { url = 
"https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size 
= 806638, upload-time = "2025-09-25T21:32:04.553Z" },
-    { url = 
"https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size 
= 767463, upload-time = "2025-09-25T21:32:06.152Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size 
= 794986, upload-time = "2025-09-25T21:32:07.367Z" },
-    { url = 
"https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl";,
 hash = 
"sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size 
= 142543, upload-time = "2025-09-25T21:32:08.95Z" },
-    { url = 
"https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl";,
 hash = 
"sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size 
= 158763, upload-time = "2025-09-25T21:32:09.96Z" },
-    { url = 
"https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size 
= 182063, upload-time = "2025-09-25T21:32:11.445Z" },
-    { url = 
"https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl";,
 hash = 
"sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size 
= 173973, upload-time = "2025-09-25T21:32:12.492Z" },
-    { url = 
"https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size 
= 775116, upload-time = "2025-09-25T21:32:13.652Z" },
-    { url = 
"https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl";,
 hash = 
"sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size 
= 844011, upload-time = "2025-09-25T21:32:15.21Z" },
-    { url = 
"https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size 
= 807870, upload-time = "2025-09-25T21:32:16.431Z" },
-    { url = 
"https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size 
= 761089, upload-time = "2025-09-25T21:32:17.56Z" },
-    { url = 
"https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size 
= 790181, upload-time = "2025-09-25T21:32:18.834Z" },
-    { url = 
"https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl";,
 hash = 
"sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size 
= 137658, upload-time = "2025-09-25T21:32:20.209Z" },
-    { url = 
"https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl";,
 hash = 
"sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size 
= 154003, upload-time = "2025-09-25T21:32:21.167Z" },
-    { url = 
"https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl";,
 hash = 
"sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size 
= 140344, upload-time = "2025-09-25T21:32:22.617Z" },
-    { url = 
"https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size 
= 181669, upload-time = "2025-09-25T21:32:23.673Z" },
-    { url = 
"https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl";,
 hash = 
"sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size 
= 173252, upload-time = "2025-09-25T21:32:25.149Z" },
-    { url = 
"https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size 
= 767081, upload-time = "2025-09-25T21:32:26.575Z" },
-    { url = 
"https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl";,
 hash = 
"sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size 
= 841159, upload-time = "2025-09-25T21:32:27.727Z" },
-    { url = 
"https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size 
= 801626, upload-time = "2025-09-25T21:32:28.878Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size 
= 753613, upload-time = "2025-09-25T21:32:30.178Z" },
-    { url = 
"https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size 
= 794115, upload-time = "2025-09-25T21:32:31.353Z" },
-    { url = 
"https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl";,
 hash = 
"sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size 
= 137427, upload-time = "2025-09-25T21:32:32.58Z" },
-    { url = 
"https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl";,
 hash = 
"sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size 
= 154090, upload-time = "2025-09-25T21:32:33.659Z" },
-    { url = 
"https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl";,
 hash = 
"sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size 
= 140246, upload-time = "2025-09-25T21:32:34.663Z" },
-    { url = 
"https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size 
= 181814, upload-time = "2025-09-25T21:32:35.712Z" },
-    { url = 
"https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl";,
 hash = 
"sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size 
= 173809, upload-time = "2025-09-25T21:32:36.789Z" },
-    { url = 
"https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size 
= 766454, upload-time = "2025-09-25T21:32:37.966Z" },
-    { url = 
"https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl";,
 hash = 
"sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size 
= 836355, upload-time = "2025-09-25T21:32:39.178Z" },
-    { url = 
"https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size 
= 794175, upload-time = "2025-09-25T21:32:40.865Z" },
-    { url = 
"https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size 
= 755228, upload-time = "2025-09-25T21:32:42.084Z" },
-    { url = 
"https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size 
= 789194, upload-time = "2025-09-25T21:32:43.362Z" },
-    { url = 
"https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl";,
 hash = 
"sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size 
= 156429, upload-time = "2025-09-25T21:32:57.844Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl";,
 hash = 
"sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size 
= 143912, upload-time = "2025-09-25T21:32:59.247Z" },
-    { url = 
"https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size 
= 189108, upload-time = "2025-09-25T21:32:44.377Z" },
-    { url = 
"https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl";,
 hash = 
"sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size 
= 183641, upload-time = "2025-09-25T21:32:45.407Z" },
-    { url = 
"https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size 
= 831901, upload-time = "2025-09-25T21:32:48.83Z" },
-    { url = 
"https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl";,
 hash = 
"sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size 
= 861132, upload-time = "2025-09-25T21:32:50.149Z" },
-    { url = 
"https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size 
= 839261, upload-time = "2025-09-25T21:32:51.808Z" },
-    { url = 
"https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size 
= 805272, upload-time = "2025-09-25T21:32:52.941Z" },
-    { url = 
"https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size 
= 829923, upload-time = "2025-09-25T21:32:54.537Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl";,
 hash = 
"sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size 
= 174062, upload-time = "2025-09-25T21:32:55.767Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl";,
 hash = 
"sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size 
= 149341, upload-time = "2025-09-25T21:32:56.828Z" },
+    { url = 
"https://files.pythonhosted.org/packages/9a/db/2df9a1fca597a273f957a559c20c2d95d629928384507b2afa43ba6909d1/pytest_randomly-4.1.0-py3-none-any.whl";,
 hash = 
"sha256:f55e89e53367b090c0c053697d7f9d77595543d0e0516c93978b50c0f6b252f9", size 
= 8353, upload-time = "2026-04-20T13:01:50.382Z" },
 ]
 
 [[package]]
@@ -452,56 +339,56 @@
 
 [[package]]
 name = "tomli"
-version = "2.4.0"
+version = "2.4.1"
 source = { registry = "https://pypi.org/simple"; }
-sdist = { url = 
"https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz";,
 hash = 
"sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size 
= 17477, upload-time = "2026-01-11T11:22:38.165Z" }
+sdist = { url = 
"https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz";,
 hash = 
"sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size 
= 17543, upload-time = "2026-03-25T20:22:03.828Z" }
 wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl";,
 hash = 
"sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size 
= 153663, upload-time = "2026-01-11T11:21:45.27Z" },
-    { url = 
"https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl";,
 hash = 
"sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size 
= 148469, upload-time = "2026-01-11T11:21:46.873Z" },
-    { url = 
"https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size 
= 236039, upload-time = "2026-01-11T11:21:48.503Z" },
-    { url = 
"https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size 
= 243007, upload-time = "2026-01-11T11:21:49.456Z" },
-    { url = 
"https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size 
= 240875, upload-time = "2026-01-11T11:21:50.755Z" },
-    { url = 
"https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size 
= 246271, upload-time = "2026-01-11T11:21:51.81Z" },
-    { url = 
"https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl";,
 hash = 
"sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size 
= 96770, upload-time = "2026-01-11T11:21:52.647Z" },
-    { url = 
"https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl";,
 hash = 
"sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size 
= 107626, upload-time = "2026-01-11T11:21:53.459Z" },
-    { url = 
"https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl";,
 hash = 
"sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size 
= 94842, upload-time = "2026-01-11T11:21:54.831Z" },
-    { url = 
"https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size 
= 154894, upload-time = "2026-01-11T11:21:56.07Z" },
-    { url = 
"https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl";,
 hash = 
"sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size 
= 149053, upload-time = "2026-01-11T11:21:57.467Z" },
-    { url = 
"https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size 
= 243481, upload-time = "2026-01-11T11:21:58.661Z" },
-    { url = 
"https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size 
= 251720, upload-time = "2026-01-11T11:22:00.178Z" },
-    { url = 
"https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size 
= 247014, upload-time = "2026-01-11T11:22:01.238Z" },
-    { url = 
"https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size 
= 251820, upload-time = "2026-01-11T11:22:02.727Z" },
-    { url = 
"https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl";,
 hash = 
"sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size 
= 97712, upload-time = "2026-01-11T11:22:03.777Z" },
-    { url = 
"https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl";,
 hash = 
"sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size 
= 108296, upload-time = "2026-01-11T11:22:04.86Z" },
-    { url = 
"https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl";,
 hash = 
"sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size 
= 94553, upload-time = "2026-01-11T11:22:05.854Z" },
-    { url = 
"https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size 
= 154915, upload-time = "2026-01-11T11:22:06.703Z" },
-    { url = 
"https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl";,
 hash = 
"sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size 
= 149038, upload-time = "2026-01-11T11:22:07.56Z" },
-    { url = 
"https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size 
= 242245, upload-time = "2026-01-11T11:22:08.344Z" },
-    { url = 
"https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size 
= 250335, upload-time = "2026-01-11T11:22:09.951Z" },
-    { url = 
"https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size 
= 245962, upload-time = "2026-01-11T11:22:11.27Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size 
= 250396, upload-time = "2026-01-11T11:22:12.325Z" },
-    { url = 
"https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl";,
 hash = 
"sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size 
= 97530, upload-time = "2026-01-11T11:22:13.865Z" },
-    { url = 
"https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl";,
 hash = 
"sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size 
= 108227, upload-time = "2026-01-11T11:22:15.224Z" },
-    { url = 
"https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl";,
 hash = 
"sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size 
= 94748, upload-time = "2026-01-11T11:22:16.009Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl";,
 hash = 
"sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size 
= 154725, upload-time = "2026-01-11T11:22:17.269Z" },
-    { url = 
"https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl";,
 hash = 
"sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size 
= 148901, upload-time = "2026-01-11T11:22:18.287Z" },
-    { url = 
"https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size 
= 243375, upload-time = "2026-01-11T11:22:19.154Z" },
-    { url = 
"https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size 
= 250639, upload-time = "2026-01-11T11:22:20.168Z" },
-    { url = 
"https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size 
= 246897, upload-time = "2026-01-11T11:22:21.544Z" },
-    { url = 
"https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size 
= 254697, upload-time = "2026-01-11T11:22:23.058Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl";,
 hash = 
"sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size 
= 98567, upload-time = "2026-01-11T11:22:24.033Z" },
-    { url = 
"https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl";,
 hash = 
"sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size 
= 108556, upload-time = "2026-01-11T11:22:25.378Z" },
-    { url = 
"https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl";,
 hash = 
"sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size 
= 96014, upload-time = "2026-01-11T11:22:26.138Z" },
-    { url = 
"https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl";,
 hash = 
"sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size 
= 163339, upload-time = "2026-01-11T11:22:27.143Z" },
-    { url = 
"https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl";,
 hash = 
"sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size 
= 159490, upload-time = "2026-01-11T11:22:28.399Z" },
-    { url = 
"https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size 
= 269398, upload-time = "2026-01-11T11:22:29.345Z" },
-    { url = 
"https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size 
= 276515, upload-time = "2026-01-11T11:22:30.327Z" },
-    { url = 
"https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size 
= 273806, upload-time = "2026-01-11T11:22:32.56Z" },
-    { url = 
"https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size 
= 281340, upload-time = "2026-01-11T11:22:33.505Z" },
-    { url = 
"https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl";,
 hash = 
"sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size 
= 108106, upload-time = "2026-01-11T11:22:34.451Z" },
-    { url = 
"https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl";,
 hash = 
"sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size 
= 120504, upload-time = "2026-01-11T11:22:35.764Z" },
-    { url = 
"https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl";,
 hash = 
"sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size 
= 99561, upload-time = "2026-01-11T11:22:36.624Z" },
-    { url = 
"https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl";,
 hash = 
"sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size 
= 14477, upload-time = "2026-01-11T11:22:37.446Z" },
+    { url = 
"https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl";,
 hash = 
"sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size 
= 154704, upload-time = "2026-03-25T20:21:10.473Z" },
+    { url = 
"https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl";,
 hash = 
"sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size 
= 149454, upload-time = "2026-03-25T20:21:12.036Z" },
+    { url = 
"https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size 
= 237561, upload-time = "2026-03-25T20:21:13.098Z" },
+    { url = 
"https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size 
= 243824, upload-time = "2026-03-25T20:21:14.569Z" },
+    { url = 
"https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size 
= 242227, upload-time = "2026-03-25T20:21:15.712Z" },
+    { url = 
"https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size 
= 247859, upload-time = "2026-03-25T20:21:17.001Z" },
+    { url = 
"https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl";,
 hash = 
"sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size 
= 97204, upload-time = "2026-03-25T20:21:18.079Z" },
+    { url = 
"https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl";,
 hash = 
"sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size 
= 108084, upload-time = "2026-03-25T20:21:18.978Z" },
+    { url = 
"https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl";,
 hash = 
"sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size 
= 95285, upload-time = "2026-03-25T20:21:20.309Z" },
+    { url = 
"https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size 
= 155924, upload-time = "2026-03-25T20:21:21.626Z" },
+    { url = 
"https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl";,
 hash = 
"sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size 
= 150018, upload-time = "2026-03-25T20:21:23.002Z" },
+    { url = 
"https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size 
= 244948, upload-time = "2026-03-25T20:21:24.04Z" },
+    { url = 
"https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size 
= 253341, upload-time = "2026-03-25T20:21:25.177Z" },
+    { url = 
"https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size 
= 248159, upload-time = "2026-03-25T20:21:26.364Z" },
+    { url = 
"https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size 
= 253290, upload-time = "2026-03-25T20:21:27.46Z" },
+    { url = 
"https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl";,
 hash = 
"sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size 
= 98141, upload-time = "2026-03-25T20:21:28.492Z" },
+    { url = 
"https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl";,
 hash = 
"sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size 
= 108847, upload-time = "2026-03-25T20:21:29.386Z" },
+    { url = 
"https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl";,
 hash = 
"sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size 
= 95088, upload-time = "2026-03-25T20:21:30.677Z" },
+    { url = 
"https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl";,
 hash = 
"sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size 
= 155866, upload-time = "2026-03-25T20:21:31.65Z" },
+    { url = 
"https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl";,
 hash = 
"sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size 
= 149887, upload-time = "2026-03-25T20:21:33.028Z" },
+    { url = 
"https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size 
= 243704, upload-time = "2026-03-25T20:21:34.51Z" },
+    { url = 
"https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size 
= 251628, upload-time = "2026-03-25T20:21:36.012Z" },
+    { url = 
"https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size 
= 247180, upload-time = "2026-03-25T20:21:37.136Z" },
+    { url = 
"https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size 
= 251674, upload-time = "2026-03-25T20:21:38.298Z" },
+    { url = 
"https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl";,
 hash = 
"sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size 
= 97976, upload-time = "2026-03-25T20:21:39.316Z" },
+    { url = 
"https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl";,
 hash = 
"sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size 
= 108755, upload-time = "2026-03-25T20:21:40.248Z" },
+    { url = 
"https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl";,
 hash = 
"sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size 
= 95265, upload-time = "2026-03-25T20:21:41.219Z" },
+    { url = 
"https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl";,
 hash = 
"sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size 
= 155726, upload-time = "2026-03-25T20:21:42.23Z" },
+    { url = 
"https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl";,
 hash = 
"sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size 
= 149859, upload-time = "2026-03-25T20:21:43.386Z" },
+    { url = 
"https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size 
= 244713, upload-time = "2026-03-25T20:21:44.474Z" },
+    { url = 
"https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size 
= 252084, upload-time = "2026-03-25T20:21:45.62Z" },
+    { url = 
"https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size 
= 247973, upload-time = "2026-03-25T20:21:46.937Z" },
+    { url = 
"https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size 
= 256223, upload-time = "2026-03-25T20:21:48.467Z" },
+    { url = 
"https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl";,
 hash = 
"sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size 
= 98973, upload-time = "2026-03-25T20:21:49.526Z" },
+    { url = 
"https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl";,
 hash = 
"sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size 
= 109082, upload-time = "2026-03-25T20:21:50.506Z" },
+    { url = 
"https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl";,
 hash = 
"sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size 
= 96490, upload-time = "2026-03-25T20:21:51.474Z" },
+    { url = 
"https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl";,
 hash = 
"sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size 
= 164263, upload-time = "2026-03-25T20:21:52.543Z" },
+    { url = 
"https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl";,
 hash = 
"sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size 
= 160736, upload-time = "2026-03-25T20:21:53.674Z" },
+    { url = 
"https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl";,
 hash = 
"sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size 
= 270717, upload-time = "2026-03-25T20:21:55.129Z" },
+    { url = 
"https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl";,
 hash = 
"sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size 
= 278461, upload-time = "2026-03-25T20:21:56.228Z" },
+    { url = 
"https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl";,
 hash = 
"sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size 
= 274855, upload-time = "2026-03-25T20:21:57.653Z" },
+    { url = 
"https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl";,
 hash = 
"sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size 
= 283144, upload-time = "2026-03-25T20:21:59.089Z" },
+    { url = 
"https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl";,
 hash = 
"sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size 
= 108683, upload-time = "2026-03-25T20:22:00.214Z" },
+    { url = 
"https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl";,
 hash = 
"sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size 
= 121196, upload-time = "2026-03-25T20:22:01.169Z" },
+    { url = 
"https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl";,
 hash = 
"sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size 
= 100393, upload-time = "2026-03-25T20:22:02.137Z" },
+    { url = 
"https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl";,
 hash = 
"sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size 
= 14583, upload-time = "2026-03-25T20:22:03.012Z" },
 ]
 
 [[package]]
@@ -544,7 +431,7 @@
 [package.dev-dependencies]
 dev = [
     { name = "gitpython" },
-    { name = "pre-commit" },
+    { name = "prek" },
     { name = "pytest" },
     { name = "pytest-pretty" },
     { name = "pytest-randomly" },
@@ -552,33 +439,17 @@
 
 [package.metadata]
 requires-dist = [
-    { name = "dunamai", specifier = "~=1.26" },
-    { name = "hatchling", specifier = "~=1.26" },
+    { name = "dunamai", specifier = "~=1.26.1" },
+    { name = "hatchling", specifier = "~=1.28" },
     { name = "jinja2", specifier = "~=3.0" },
     { name = "tomlkit", specifier = "~=0.13" },
 ]
 
 [package.metadata.requires-dev]
 dev = [
-    { name = "gitpython", specifier = "~=3.1.46" },
-    { name = "pre-commit", specifier = "~=4.5.1" },
-    { name = "pytest", specifier = "~=9.0.2" },
+    { name = "gitpython", specifier = "~=3.1.50" },
+    { name = "prek", specifier = ">=0.4.6" },
+    { name = "pytest", specifier = "~=9.1.1" },
     { name = "pytest-pretty", specifier = "~=1.3.0" },
-    { name = "pytest-randomly", specifier = "~=4.0.1" },
-]
-
-[[package]]
-name = "virtualenv"
-version = "21.2.0"
-source = { registry = "https://pypi.org/simple"; }
-dependencies = [
-    { name = "distlib" },
-    { name = "filelock" },
-    { name = "platformdirs" },
-    { name = "python-discovery" },
-    { name = "typing-extensions", marker = "python_full_version < '3.11'" },
-]
-sdist = { url = 
"https://files.pythonhosted.org/packages/aa/92/58199fe10049f9703c2666e809c4f686c54ef0a68b0f6afccf518c0b1eb9/virtualenv-21.2.0.tar.gz";,
 hash = 
"sha256:1720dc3a62ef5b443092e3f499228599045d7fea4c79199770499df8becf9098", size 
= 5840618, upload-time = "2026-03-09T17:24:38.013Z" }
-wheels = [
-    { url = 
"https://files.pythonhosted.org/packages/c6/59/7d02447a55b2e55755011a647479041bc92a82e143f96a8195cb33bd0a1c/virtualenv-21.2.0-py3-none-any.whl";,
 hash = 
"sha256:1bd755b504931164a5a496d217c014d098426cddc79363ad66ac78125f9d908f", size 
= 5825084, upload-time = "2026-03-09T17:24:35.378Z" },
+    { name = "pytest-randomly", specifier = "~=4.1.0" },
 ]

Reply via email to