diff --git a/.github/actions/security-issues/action.yml b/.github/actions/security-issues/action.yml
index 10a591e59..7e59c9cb3 100644
--- a/.github/actions/security-issues/action.yml
+++ b/.github/actions/security-issues/action.yml
@@ -39,7 +39,7 @@ runs:
- name: Install Python Toolbox / Security tool
shell: bash
run: |
- pip install exasol-toolbox==1.13.0
+ pip install exasol-toolbox==2.0.0
- name: Create Security Issue Report
shell: bash
diff --git a/.github/workflows/slow-checks.yml b/.github/workflows/slow-checks.yml
index 0fea9c87c..2737e3bcd 100644
--- a/.github/workflows/slow-checks.yml
+++ b/.github/workflows/slow-checks.yml
@@ -43,6 +43,7 @@ jobs:
verify-poetry-installation:
+ needs: [ build-matrix ]
# This Job verifies if pipx installation is successful on each of the
# selected GitHub Runners.
strategy:
@@ -54,12 +55,8 @@ jobs:
- int-linux-x64-4core-gpu-t4-ubuntu24.04-1
- int-linux-x64-4core-ubuntu24.04-1
- int-linux-x64-2core-ubuntu24.04-1
- python-version:
- - "3.10"
- - "3.11"
- - "3.12"
- - "3.13"
- name: Install Pipx on ${{ matrix.runner }} with Python "${{ matrix.python-version }}"
+ python-version: ${{ fromJson(needs.build-matrix.outputs.matrix).python-version }}
+ name: Install Pipx on ${{ matrix.runner }} (Python-${{ matrix.python-version }})
runs-on:
labels: ${{ matrix.runner }}
diff --git a/README.rst b/README.rst
index f95165566..f578cf9c8 100644
--- a/README.rst
+++ b/README.rst
@@ -47,7 +47,7 @@ Your one-stop solution for managing all standard tasks and core workflows of you
🔌️ Prerequisites
-----------------
-- `Python `__ >= 3.9
+- `Python `__ >= 3.10
💾 Installation
---------------
diff --git a/doc/changes/changelog.md b/doc/changes/changelog.md
index eeeda92ee..644a9e12e 100644
--- a/doc/changes/changelog.md
+++ b/doc/changes/changelog.md
@@ -1,6 +1,7 @@
# Changelog
* [unreleased](unreleased.md)
+* [2.0.0](changes_2.0.0.md)
* [1.13.0](changes_1.13.0.md)
* [1.12.0](changes_1.12.0.md)
* [1.11.0](changes_1.11.0.md)
@@ -50,6 +51,7 @@
hidden:
---
unreleased
+changes_2.0.0
changes_1.13.0
changes_1.12.0
changes_1.11.0
diff --git a/doc/changes/changes_2.0.0.md b/doc/changes/changes_2.0.0.md
new file mode 100644
index 000000000..7cec5df9d
--- /dev/null
+++ b/doc/changes/changes_2.0.0.md
@@ -0,0 +1,30 @@
+# 2.0.0 - 2025-11-04
+
+With this release, all projects using the PTB must use has their project `Config` inherit
+from `BaseConfig` (introduced in [1.10.0](https://exasol.github.io/python-toolbox/main/changes/changes_1.10.0.html)). Otherwise, the workflows using these
+attributes will raise an exception indicating that this action is needed.
+
+As Python 3.9 reached its EOL on 2025-10-31, the PTB no longer supports Python 3.9,
+and it has added support for 3.14. For project's that were still using Python 3.9,
+it is anticipated that there will be larger formatting change due to the arguments
+to `pyupgrade` changing.
+
+## Refactoring
+
+* #590:
+ * Dropped support for Python 3.9 and added support for Python 3.14
+ * Enforced that the `PROJECT_CONFIG` defined in `noxconfig.py` must be derived from `BaseConfig`.
+ * Replaced `MINIMUM_PYTHON_VERSION` which acted as a back-up value for the nox session `artifacts:copy`
+ with `BaseConfig.minimum_python_version_`
+ * Replaced `_PYTHON_VERSIONS` which acted as a back-up value for the nox sessions `matrix:python` and `matrix:all`
+ with `BaseConfig.python_versions_`
+ * Replaced `__EXASOL_VERSIONS` which acted as a back-up value for the nox sessions `matrix:exasol` and `matrix:all`
+ with `BaseConfig.python_versions_`
+ * Moved `pyupgrade_args` from being defined per PROJECT_CONFIG to a calculated property
+ `BaseConfig.pyupgrade_argument_`
+
+## Dependency Updates
+
+### `main`
+* Updated dependency `pysonar:1.2.0.2419` to `1.2.1.3951`
+* Updated dependency `shibuya:2025.10.21` to `2025.11.4`
diff --git a/doc/user_guide/dependencies.rst b/doc/user_guide/dependencies.rst
index 93ddd9221..ee7c24195 100644
--- a/doc/user_guide/dependencies.rst
+++ b/doc/user_guide/dependencies.rst
@@ -4,6 +4,6 @@ Dependencies
Core dependencies
+++++++++++++++++
-- Python >= 3.9
+- Python >= 3.10
- poetry >= 2.1.2
- `poetry export `__
diff --git a/doc/user_guide/features/metrics/collecting_metrics.rst b/doc/user_guide/features/metrics/collecting_metrics.rst
index 179efc3ac..e69f51374 100644
--- a/doc/user_guide/features/metrics/collecting_metrics.rst
+++ b/doc/user_guide/features/metrics/collecting_metrics.rst
@@ -31,13 +31,7 @@ files and based on a selected external Python tool.
+------------------------------------+-----------------------------+--------------+
These metrics are computed for each element in your build matrix, e.g. for each
-Python version defined in the file ``noxconfig.py``:
-
-.. code-block:: python
-
- @dataclass(frozen=True)
- class Config:
- python_versions = ["3.9", "3.10", "3.11", "3.12", "3.13"]
+Python version defined in the `PROJECT_CONFIG` of the ``noxconfig.py`` file.
The GitHub workflows of your project can:
diff --git a/exasol/toolbox/config.py b/exasol/toolbox/config.py
index 4a02ba7a9..d1b68bfb5 100644
--- a/exasol/toolbox/config.py
+++ b/exasol/toolbox/config.py
@@ -37,13 +37,7 @@ class BaseConfig(BaseModel):
"""
python_versions: tuple[ValidVersionStr, ...] = Field(
- default=(
- "3.9",
- "3.10",
- "3.11",
- "3.12",
- "3.13",
- ),
+ default=("3.10", "3.11", "3.12", "3.13", "3.14"),
description="Python versions to use in running CI workflows",
)
@@ -59,11 +53,27 @@ class BaseConfig(BaseModel):
@computed_field # type: ignore[misc]
@property
- def min_py_version(self) -> str:
+ def minimum_python_version(self) -> str:
"""
Minimum Python version declared from the `python_versions` list
This is used in specific testing scenarios where it would be either
costly to run the tests for all `python_versions` or we need a single metric.
"""
- return str(min([Version.from_string(v) for v in self.python_versions]))
+ versioned = [Version.from_string(v) for v in self.python_versions]
+ min_version = min(versioned)
+ index_min_version = versioned.index(min_version)
+ return self.python_versions[index_min_version]
+
+ @computed_field # type: ignore[misc]
+ @property
+ def pyupgrade_argument(self) -> tuple[str, ...]:
+ """
+ Default argument to :func:`exasol.toolbox._format._pyupgrade`.
+
+ It uses the minimum Python version to ensure compatibility with all supported
+ versions of a project.
+ """
+ version_parts = self.minimum_python_version.split(".")[:2]
+ version_number = "".join(version_parts)
+ return (f"--py{version_number}-plus",)
diff --git a/exasol/toolbox/metrics.py b/exasol/toolbox/metrics.py
index 1890e8edd..99df07786 100644
--- a/exasol/toolbox/metrics.py
+++ b/exasol/toolbox/metrics.py
@@ -4,6 +4,7 @@
import subprocess
import sys
from collections import defaultdict
+from collections.abc import Callable
from dataclasses import (
asdict,
dataclass,
@@ -18,7 +19,6 @@
from tempfile import TemporaryDirectory
from typing import (
Any,
- Callable,
Dict,
List,
Optional,
@@ -101,7 +101,7 @@ class Report:
technical_debt: Rating
-def total_coverage(file: Union[str, Path]) -> float:
+def total_coverage(file: str | Path) -> float:
with TemporaryDirectory() as tmpdir:
tmp_dir = Path(tmpdir)
report = tmp_dir / "coverage.json"
@@ -133,8 +133,8 @@ def total_coverage(file: Union[str, Path]) -> float:
return total
-def _static_code_analysis(file: Union[str, Path]) -> Rating:
- def pylint(f: Union[str, Path]) -> Rating:
+def _static_code_analysis(file: str | Path) -> Rating:
+ def pylint(f: str | Path) -> Rating:
expr = re.compile(r"^Your code has been rated at (\d+.\d+)/.*", re.MULTILINE)
with open(f, encoding="utf-8") as results:
data = results.read()
@@ -154,7 +154,7 @@ def pylint(f: Union[str, Path]) -> Rating:
return pylint_score
-def maintainability(file: Union[str, Path]) -> Rating:
+def maintainability(file: str | Path) -> Rating:
return _static_code_analysis(file)
@@ -162,7 +162,7 @@ def reliability() -> Rating:
return Rating.NotAvailable
-def security(file: Union[str, Path]) -> Rating:
+def security(file: str | Path) -> Rating:
with open(file) as json_file:
security_lint = json.load(json_file)
return Rating.bandit_rating(_bandit_scoring(security_lint["results"]))
@@ -198,10 +198,10 @@ def technical_debt() -> Rating:
def create_report(
commit: str,
- date: Optional[datetime.datetime] = None,
- coverage_report: Union[str, Path] = ".coverage",
- pylint_report: Union[str, Path] = ".lint.txt",
- bandit_report: Union[str, Path] = ".security.json",
+ date: datetime.datetime | None = None,
+ coverage_report: str | Path = ".coverage",
+ pylint_report: str | Path = ".lint.txt",
+ bandit_report: str | Path = ".security.json",
) -> Report:
return Report(
commit=commit,
@@ -254,7 +254,7 @@ def _rating_color(value: Rating) -> str:
@color.register(float)
@color.register(int)
-def _coverage_color(value: Union[float, int]) -> str:
+def _coverage_color(value: float | int) -> str:
if 0 <= value < 20:
return _rating_color(Rating.F)
elif 20 <= value < 50:
diff --git a/exasol/toolbox/nox/_artifacts.py b/exasol/toolbox/nox/_artifacts.py
index 92e2f667a..59566b067 100644
--- a/exasol/toolbox/nox/_artifacts.py
+++ b/exasol/toolbox/nox/_artifacts.py
@@ -12,7 +12,7 @@
import nox
from nox import Session
-from exasol.toolbox.nox._shared import MINIMUM_PYTHON_VERSION
+from exasol.toolbox.nox._shared import check_for_config_attribute
from noxconfig import (
PROJECT_CONFIG,
Config,
@@ -159,8 +159,8 @@ def copy_artifacts(session: Session) -> None:
def _python_version_suffix() -> str:
- versions = getattr(PROJECT_CONFIG, "python_versions", None)
- pivot = versions[0] if versions else MINIMUM_PYTHON_VERSION
+ check_for_config_attribute(PROJECT_CONFIG, "minimum_python_version")
+ pivot = PROJECT_CONFIG.minimum_python_version
return f"-python{pivot}"
@@ -185,7 +185,7 @@ def _copy_artifacts(source: Path, dest: Path, files: Iterable[str]):
def _prepare_coverage_xml(
- session: Session, source: Path, cwd: Optional[Path] = None
+ session: Session, source: Path, cwd: Path | None = None
) -> None:
"""
Prepare the coverage XML for input into Sonar
@@ -225,9 +225,7 @@ def _prepare_coverage_xml(
session.error(output.returncode, output.stdout, output.stderr)
-def _upload_to_sonar(
- session: Session, sonar_token: Optional[str], config: Config
-) -> None:
+def _upload_to_sonar(session: Session, sonar_token: str | None, config: Config) -> None:
command = [
"pysonar",
"--sonar-token",
diff --git a/exasol/toolbox/nox/_ci.py b/exasol/toolbox/nox/_ci.py
index 603634165..aab14fd35 100644
--- a/exasol/toolbox/nox/_ci.py
+++ b/exasol/toolbox/nox/_ci.py
@@ -4,6 +4,7 @@
import nox
from nox import Session
+from exasol.toolbox.nox._shared import check_for_config_attribute
from noxconfig import (
PROJECT_CONFIG,
Config,
@@ -11,32 +12,15 @@
_log = logging.getLogger(__name__)
-_PYTHON_VERSIONS = ["3.9", "3.10", "3.11", "3.12"]
-_EXASOL_VERSIONS = ["7.1.9"]
-
def _python_matrix(config: Config):
- attr = "python_versions"
- python_versions = getattr(config, attr, _PYTHON_VERSIONS)
- if not hasattr(config, attr):
- _log.warning(
- "Config does not contain '%s' setting. Using default: %s",
- attr,
- _PYTHON_VERSIONS,
- )
- return {"python-version": python_versions}
+ check_for_config_attribute(config=config, attribute="python_versions")
+ return {"python-version": config.python_versions}
def _exasol_matrix(config: Config):
- attr = "exasol_versions"
- exasol_versions = getattr(config, attr, _EXASOL_VERSIONS)
- if not hasattr(config, attr):
- _log.warning(
- "Config does not contain '%s' setting. Using default: %s",
- attr,
- _EXASOL_VERSIONS,
- )
- return {"exasol-version": exasol_versions}
+ check_for_config_attribute(config=config, attribute="exasol_versions")
+ return {"exasol-version": config.exasol_versions}
@nox.session(name="matrix:python", python=False)
diff --git a/exasol/toolbox/nox/_format.py b/exasol/toolbox/nox/_format.py
index 0996ac3b1..f4afd16e0 100644
--- a/exasol/toolbox/nox/_format.py
+++ b/exasol/toolbox/nox/_format.py
@@ -8,6 +8,7 @@
from exasol.toolbox.nox._shared import (
Mode,
_version,
+ check_for_config_attribute,
python_files,
)
from noxconfig import (
@@ -15,8 +16,6 @@
Config,
)
-_PYUPGRADE_ARGS = ("--py39-plus",)
-
def _code_format(session: Session, mode: Mode, files: Iterable[str]) -> None:
def command(*args: str) -> Iterable[str]:
@@ -27,10 +26,10 @@ def command(*args: str) -> Iterable[str]:
def _pyupgrade(session: Session, config: Config, files: Iterable[str]) -> None:
- pyupgrade_args = getattr(config, "pyupgrade_args", _PYUPGRADE_ARGS)
+ check_for_config_attribute(config, "pyupgrade_argument")
session.run(
"pyupgrade",
- *pyupgrade_args,
+ *config.pyupgrade_argument,
"--exit-zero-even-if-changed",
*files,
)
diff --git a/exasol/toolbox/nox/_release.py b/exasol/toolbox/nox/_release.py
index 922a1f00a..5b86fbe1c 100644
--- a/exasol/toolbox/nox/_release.py
+++ b/exasol/toolbox/nox/_release.py
@@ -11,6 +11,7 @@
from exasol.toolbox.nox._shared import (
Mode,
_version,
+ check_for_config_attribute,
)
from exasol.toolbox.nox.plugin import NoxTasks
from exasol.toolbox.util.git import Git
@@ -101,10 +102,8 @@ def run(*args: str):
run("git", "tag", str(release_version))
run("git", "push", "origin", str(release_version))
- if (
- hasattr(project_config, "create_major_version_tags")
- and project_config.create_major_version_tags
- ):
+ check_for_config_attribute(project_config, "create_major_version_tags")
+ if project_config.create_major_version_tags:
major_release_version = f"v{release_version.major}"
run("git", "tag", "-f", str(major_release_version))
run("git", "push", "-f", "origin", str(major_release_version))
diff --git a/exasol/toolbox/nox/_shared.py b/exasol/toolbox/nox/_shared.py
index 4d6fa6fe1..b0d4463ab 100644
--- a/exasol/toolbox/nox/_shared.py
+++ b/exasol/toolbox/nox/_shared.py
@@ -15,12 +15,24 @@
from nox import Session
-from noxconfig import PROJECT_CONFIG
+from noxconfig import (
+ PROJECT_CONFIG,
+ Config,
+)
DEFAULT_PATH_FILTERS = {"dist", ".eggs", "venv", ".poetry"}
DOCS_OUTPUT_DIR = ".html-documentation"
-MINIMUM_PYTHON_VERSION = "3.9"
+
+def check_for_config_attribute(config: Config, attribute: str):
+ if not hasattr(config, attribute):
+ raise AttributeError(
+ "in the noxconfig.py file, the class Config should inherit "
+ "from `exasol.toolbox.config.BaseConfig`. This is used to "
+ f"set the default `{attribute}`. If the allowed "
+ f"`{attribute} needs to differ in your project and is an "
+ "input parameter (not property), you can set it in the PROJECT_CONFIG statement."
+ )
class Mode(Enum):
diff --git a/exasol/toolbox/templates/github/workflows/build-and-publish.yml b/exasol/toolbox/templates/github/workflows/build-and-publish.yml
index 0887c5e01..0c3497822 100644
--- a/exasol/toolbox/templates/github/workflows/build-and-publish.yml
+++ b/exasol/toolbox/templates/github/workflows/build-and-publish.yml
@@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Build Artifacts
run: poetry build
diff --git a/exasol/toolbox/templates/github/workflows/check-release-tag.yml b/exasol/toolbox/templates/github/workflows/check-release-tag.yml
index fc8c8ae18..e6aaf7e89 100644
--- a/exasol/toolbox/templates/github/workflows/check-release-tag.yml
+++ b/exasol/toolbox/templates/github/workflows/check-release-tag.yml
@@ -15,7 +15,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Check Tag Version
# make sure the pushed/created tag matched the project version
diff --git a/exasol/toolbox/templates/github/workflows/checks.yml b/exasol/toolbox/templates/github/workflows/checks.yml
index 7c4fe8329..25c693964 100644
--- a/exasol/toolbox/templates/github/workflows/checks.yml
+++ b/exasol/toolbox/templates/github/workflows/checks.yml
@@ -16,7 +16,7 @@ jobs:
fetch-depth: 0
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Check Version(s)
run: poetry run -- nox -s version:check
@@ -32,7 +32,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Build Documentation
run: |
@@ -59,7 +59,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Run changelog update check
run: poetry run -- nox -s changelog:updated
@@ -78,7 +78,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
with:
python-version: ${{ matrix.python-version }}
@@ -109,7 +109,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
with:
python-version: ${{ matrix.python-version }}
@@ -131,7 +131,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
with:
python-version: ${{ matrix.python-version }}
@@ -155,7 +155,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Run format check
run: poetry run -- nox -s project:format
@@ -171,7 +171,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Run Distribution Check
run: poetry run -- nox -s package:check
@@ -191,7 +191,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
with:
python-version: ${{ matrix.python-version }}
diff --git a/exasol/toolbox/templates/github/workflows/gh-pages.yml b/exasol/toolbox/templates/github/workflows/gh-pages.yml
index b2d9ee59d..98740bf5b 100644
--- a/exasol/toolbox/templates/github/workflows/gh-pages.yml
+++ b/exasol/toolbox/templates/github/workflows/gh-pages.yml
@@ -17,7 +17,7 @@ jobs:
fetch-depth: 0
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Build Documentation
run: |
diff --git a/exasol/toolbox/templates/github/workflows/matrix-all.yml b/exasol/toolbox/templates/github/workflows/matrix-all.yml
index 8cdb5b1f0..684e5c11f 100644
--- a/exasol/toolbox/templates/github/workflows/matrix-all.yml
+++ b/exasol/toolbox/templates/github/workflows/matrix-all.yml
@@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Generate matrix
run: poetry run -- nox -s matrix:all
diff --git a/exasol/toolbox/templates/github/workflows/matrix-exasol.yml b/exasol/toolbox/templates/github/workflows/matrix-exasol.yml
index fd3225b17..0e01ed2ba 100644
--- a/exasol/toolbox/templates/github/workflows/matrix-exasol.yml
+++ b/exasol/toolbox/templates/github/workflows/matrix-exasol.yml
@@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Generate matrix
run: poetry run -- nox -s matrix:exasol
diff --git a/exasol/toolbox/templates/github/workflows/matrix-python.yml b/exasol/toolbox/templates/github/workflows/matrix-python.yml
index 404e24623..0d4a65e52 100644
--- a/exasol/toolbox/templates/github/workflows/matrix-python.yml
+++ b/exasol/toolbox/templates/github/workflows/matrix-python.yml
@@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Generate matrix
run: poetry run -- nox -s matrix:python
diff --git a/exasol/toolbox/templates/github/workflows/report.yml b/exasol/toolbox/templates/github/workflows/report.yml
index 32229439d..0f79988fb 100644
--- a/exasol/toolbox/templates/github/workflows/report.yml
+++ b/exasol/toolbox/templates/github/workflows/report.yml
@@ -19,7 +19,7 @@ jobs:
fetch-depth: 0
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
- name: Download Artifacts
uses: actions/download-artifact@v6
diff --git a/exasol/toolbox/templates/github/workflows/slow-checks.yml b/exasol/toolbox/templates/github/workflows/slow-checks.yml
index de928de93..4505c7c1e 100644
--- a/exasol/toolbox/templates/github/workflows/slow-checks.yml
+++ b/exasol/toolbox/templates/github/workflows/slow-checks.yml
@@ -27,7 +27,7 @@ jobs:
uses: actions/checkout@v5
- name: Setup Python & Poetry Environment
- uses: exasol/python-toolbox/.github/actions/python-environment@v1
+ uses: exasol/python-toolbox/.github/actions/python-environment@v2
with:
python-version: ${{ matrix.python-version }}
diff --git a/exasol/toolbox/tools/replace_version.py b/exasol/toolbox/tools/replace_version.py
index ad5e058cb..54354b0be 100644
--- a/exasol/toolbox/tools/replace_version.py
+++ b/exasol/toolbox/tools/replace_version.py
@@ -1,9 +1,9 @@
import re
+from collections.abc import Callable
from dataclasses import dataclass
from enum import Enum
from pathlib import Path
from typing import (
- Callable,
Optional,
)
@@ -54,7 +54,7 @@ def __init__(
self.pattern = pattern
self.version_string_modifier = version_string_modifier
- def replace_version(self, line: str, version: Version) -> Optional[str]:
+ def replace_version(self, line: str, version: Version) -> str | None:
match = re.search(self.pattern.full_pattern, line)
if match:
return self.pattern.replace_version(
diff --git a/exasol/toolbox/tools/security.py b/exasol/toolbox/tools/security.py
index 4ec94c095..18e45dad7 100644
--- a/exasol/toolbox/tools/security.py
+++ b/exasol/toolbox/tools/security.py
@@ -276,9 +276,7 @@ def as_markdown_listing(elements: Iterable[str]):
)
-def create_security_issue(
- issue: Issue, project: Optional[str] = None
-) -> tuple[str, str]:
+def create_security_issue(issue: Issue, project: str | None = None) -> tuple[str, str]:
# fmt: off
command = [
"gh", "issue", "create",
diff --git a/exasol/toolbox/tools/template.py b/exasol/toolbox/tools/template.py
index 37b3aa80f..0af103c85 100644
--- a/exasol/toolbox/tools/template.py
+++ b/exasol/toolbox/tools/template.py
@@ -86,8 +86,8 @@ def diff_template(template: str, dest: Path, pkg: str, template_type: str) -> No
def _install_template(
template_type: str,
- src: Union[str, Path],
- dest: Union[str, Path],
+ src: str | Path,
+ dest: str | Path,
exists_ok: bool = False,
) -> None:
src, dest = Path(src), Path(dest)
diff --git a/exasol/toolbox/util/dependencies/audit.py b/exasol/toolbox/util/dependencies/audit.py
index 843438fa8..6cdd75aa6 100644
--- a/exasol/toolbox/util/dependencies/audit.py
+++ b/exasol/toolbox/util/dependencies/audit.py
@@ -55,7 +55,7 @@ def from_audit_entry(
)
@property
- def security_issue_entry(self) -> dict[str, Union[str, list[str]]]:
+ def security_issue_entry(self) -> dict[str, str | list[str]]:
return {
"name": self.name,
"version": str(self.version),
@@ -141,7 +141,7 @@ def load_from_pip_audit(cls, working_directory: Path) -> Vulnerabilities:
return Vulnerabilities(vulnerabilities=vulnerabilities)
@property
- def security_issue_dict(self) -> list[dict[str, Union[str, list[str]]]]:
+ def security_issue_dict(self) -> list[dict[str, str | list[str]]]:
return [
vulnerability.security_issue_entry for vulnerability in self.vulnerabilities
]
diff --git a/exasol/toolbox/util/dependencies/licenses.py b/exasol/toolbox/util/dependencies/licenses.py
index 53e219682..075b1350a 100644
--- a/exasol/toolbox/util/dependencies/licenses.py
+++ b/exasol/toolbox/util/dependencies/licenses.py
@@ -41,21 +41,21 @@
class PackageLicense(Package):
- package_link: Optional[str]
+ package_link: str | None
license: str
@field_validator("package_link", mode="before")
- def map_unknown_to_none(cls, v) -> Optional[str]:
+ def map_unknown_to_none(cls, v) -> str | None:
if v == "UNKNOWN":
return None
return v
@field_validator("license", mode="before")
- def map_to_normalized_values(cls, v) -> Optional[str]:
+ def map_to_normalized_values(cls, v) -> str | None:
return _normalize(v)
@property
- def license_link(self) -> Optional[str]:
+ def license_link(self) -> str | None:
return LICENSE_MAPPING_TO_URL.get(self.license, None)
diff --git a/exasol/toolbox/util/dependencies/poetry_dependencies.py b/exasol/toolbox/util/dependencies/poetry_dependencies.py
index 7131f9366..b801e4b39 100644
--- a/exasol/toolbox/util/dependencies/poetry_dependencies.py
+++ b/exasol/toolbox/util/dependencies/poetry_dependencies.py
@@ -25,7 +25,7 @@ class PoetryGroup(BaseModel):
model_config = ConfigDict(frozen=True)
name: str
- toml_section: Optional[str]
+ toml_section: str | None
PYPROJECT_TOML = "pyproject.toml"
@@ -50,7 +50,7 @@ def load_from_toml(cls, working_directory: Path) -> PoetryToml:
except Exception as e:
raise ValueError(f"Error reading file: {str(e)}")
- def get_section_dict(self, section: str) -> Optional[dict]:
+ def get_section_dict(self, section: str) -> dict | None:
current = self.content.copy()
for section in section.split("."):
if section not in current:
@@ -94,7 +94,7 @@ class PoetryDependencies(BaseModel):
working_directory: Path
@staticmethod
- def _extract_from_line(line: str) -> Optional[Package]:
+ def _extract_from_line(line: str) -> Package | None:
# remove (!) from line as indicates not installed in environment,
# which could occur for optional dependencies
split_line = line.replace("(!)", "").strip().split(maxsplit=2)
diff --git a/exasol/toolbox/util/dependencies/track_changes.py b/exasol/toolbox/util/dependencies/track_changes.py
index a684252a2..2c907453b 100644
--- a/exasol/toolbox/util/dependencies/track_changes.py
+++ b/exasol/toolbox/util/dependencies/track_changes.py
@@ -71,7 +71,7 @@ class DependencyChanges(BaseModel):
def _categorize_change(
self, dependency_name: NormalizedPackageStr
- ) -> Optional[DependencyChange]:
+ ) -> DependencyChange | None:
"""
Categorize dependency change as removed, added, or updated.
"""
diff --git a/exasol/toolbox/util/git.py b/exasol/toolbox/util/git.py
index 16a63e9bf..0853e1c52 100644
--- a/exasol/toolbox/util/git.py
+++ b/exasol/toolbox/util/git.py
@@ -27,7 +27,7 @@ def get_latest_tag():
@staticmethod
@run_command
- def read_file_from_tag(tag: str, path: Union[Path, str]):
+ def read_file_from_tag(tag: str, path: Path | str):
"""
Read the contents of the specified file `path` at the point in
time specified by git tag `tag`.
diff --git a/exasol/toolbox/version.py b/exasol/toolbox/version.py
index fa812ffd3..bf9696ecd 100644
--- a/exasol/toolbox/version.py
+++ b/exasol/toolbox/version.py
@@ -8,8 +8,8 @@
`poetry version X.Y.Z`.
"""
-MAJOR = 1
-MINOR = 13
+MAJOR = 2
+MINOR = 0
PATCH = 0
VERSION = f"{MAJOR}.{MINOR}.{PATCH}"
__version__ = VERSION
diff --git a/noxconfig.py b/noxconfig.py
index a3e17fbb8..a71db3b6e 100644
--- a/noxconfig.py
+++ b/noxconfig.py
@@ -63,10 +63,6 @@ class Config(BaseConfig):
".github",
)
plugins: Iterable[object] = (UpdateTemplates,)
- # need --keep-runtime-typing, as pydantic with python3.9 does not accept str | None
- # format, and it is not resolved with from __future__ import annotations. pyupgrade
- # will keep switching Optional[str] to str | None leading to issues.
- pyupgrade_args: Iterable[str] = ("--py39-plus", "--keep-runtime-typing")
PROJECT_CONFIG = Config(
diff --git a/poetry.lock b/poetry.lock
index 40dbd7e4c..ec8bc5b73 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -116,22 +116,6 @@ tzdata = {version = "*", markers = "python_version >= \"3.9\""}
doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2025.2)", "simplejson (==3.*)"]
-[[package]]
-name = "astroid"
-version = "3.3.11"
-description = "An abstract syntax tree for Python with inference support."
-optional = false
-python-versions = ">=3.9.0"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "astroid-3.3.11-py3-none-any.whl", hash = "sha256:54c760ae8322ece1abd213057c4b5bba7c49818853fc901ef09719a60dbf9dec"},
- {file = "astroid-3.3.11.tar.gz", hash = "sha256:1e5a5011af2920c7c67a53f65d536d65bfa7116feeaf2354d8b94f29573bb0ce"},
-]
-
-[package.dependencies]
-typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""}
-
[[package]]
name = "astroid"
version = "4.0.1"
@@ -139,7 +123,6 @@ description = "An abstract syntax tree for Python with inference support."
optional = false
python-versions = ">=3.10.0"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "astroid-4.0.1-py3-none-any.whl", hash = "sha256:37ab2f107d14dc173412327febf6c78d39590fdafcb44868f03b6c03452e3db0"},
{file = "astroid-4.0.1.tar.gz", hash = "sha256:0d778ec0def05b935e198412e62f9bcca8b3b5c39fdbe50b0ba074005e477aab"},
@@ -233,7 +216,7 @@ description = "Backport of CPython tarfile module"
optional = false
python-versions = ">=3.8"
groups = ["main"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\""
+markers = "python_version < \"3.12\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\""
files = [
{file = "backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"},
{file = "backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"},
@@ -652,22 +635,6 @@ files = [
{file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"},
]
-[[package]]
-name = "click"
-version = "8.1.8"
-description = "Composable command line interface toolkit"
-optional = false
-python-versions = ">=3.7"
-groups = ["main", "dev"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"},
- {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"},
-]
-
-[package.dependencies]
-colorama = {version = "*", markers = "platform_system == \"Windows\""}
-
[[package]]
name = "click"
version = "8.3.0"
@@ -675,7 +642,6 @@ description = "Composable command line interface toolkit"
optional = false
python-versions = ">=3.10"
groups = ["main", "dev"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc"},
{file = "click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4"},
@@ -737,124 +703,6 @@ pyyaml = ">=5.3.1"
requests = ">=2.23.0"
rich = "*"
-[[package]]
-name = "coverage"
-version = "7.10.7"
-description = "Code coverage measurement for Python"
-optional = false
-python-versions = ">=3.9"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "coverage-7.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc04cc7a3db33664e0c2d10eb8990ff6b3536f6842c9590ae8da4c614b9ed05a"},
- {file = "coverage-7.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e201e015644e207139f7e2351980feb7040e6f4b2c2978892f3e3789d1c125e5"},
- {file = "coverage-7.10.7-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:240af60539987ced2c399809bd34f7c78e8abe0736af91c3d7d0e795df633d17"},
- {file = "coverage-7.10.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8421e088bc051361b01c4b3a50fd39a4b9133079a2229978d9d30511fd05231b"},
- {file = "coverage-7.10.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6be8ed3039ae7f7ac5ce058c308484787c86e8437e72b30bf5e88b8ea10f3c87"},
- {file = "coverage-7.10.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e28299d9f2e889e6d51b1f043f58d5f997c373cc12e6403b90df95b8b047c13e"},
- {file = "coverage-7.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c4e16bd7761c5e454f4efd36f345286d6f7c5fa111623c355691e2755cae3b9e"},
- {file = "coverage-7.10.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b1c81d0e5e160651879755c9c675b974276f135558cf4ba79fee7b8413a515df"},
- {file = "coverage-7.10.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:606cc265adc9aaedcc84f1f064f0e8736bc45814f15a357e30fca7ecc01504e0"},
- {file = "coverage-7.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:10b24412692df990dbc34f8fb1b6b13d236ace9dfdd68df5b28c2e39cafbba13"},
- {file = "coverage-7.10.7-cp310-cp310-win32.whl", hash = "sha256:b51dcd060f18c19290d9b8a9dd1e0181538df2ce0717f562fff6cf74d9fc0b5b"},
- {file = "coverage-7.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:3a622ac801b17198020f09af3eaf45666b344a0d69fc2a6ffe2ea83aeef1d807"},
- {file = "coverage-7.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a609f9c93113be646f44c2a0256d6ea375ad047005d7f57a5c15f614dc1b2f59"},
- {file = "coverage-7.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:65646bb0359386e07639c367a22cf9b5bf6304e8630b565d0626e2bdf329227a"},
- {file = "coverage-7.10.7-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5f33166f0dfcce728191f520bd2692914ec70fac2713f6bf3ce59c3deacb4699"},
- {file = "coverage-7.10.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:35f5e3f9e455bb17831876048355dca0f758b6df22f49258cb5a91da23ef437d"},
- {file = "coverage-7.10.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4da86b6d62a496e908ac2898243920c7992499c1712ff7c2b6d837cc69d9467e"},
- {file = "coverage-7.10.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6b8b09c1fad947c84bbbc95eca841350fad9cbfa5a2d7ca88ac9f8d836c92e23"},
- {file = "coverage-7.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4376538f36b533b46f8971d3a3e63464f2c7905c9800db97361c43a2b14792ab"},
- {file = "coverage-7.10.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:121da30abb574f6ce6ae09840dae322bef734480ceafe410117627aa54f76d82"},
- {file = "coverage-7.10.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:88127d40df529336a9836870436fc2751c339fbaed3a836d42c93f3e4bd1d0a2"},
- {file = "coverage-7.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ba58bbcd1b72f136080c0bccc2400d66cc6115f3f906c499013d065ac33a4b61"},
- {file = "coverage-7.10.7-cp311-cp311-win32.whl", hash = "sha256:972b9e3a4094b053a4e46832b4bc829fc8a8d347160eb39d03f1690316a99c14"},
- {file = "coverage-7.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:a7b55a944a7f43892e28ad4bc0561dfd5f0d73e605d1aa5c3c976b52aea121d2"},
- {file = "coverage-7.10.7-cp311-cp311-win_arm64.whl", hash = "sha256:736f227fb490f03c6488f9b6d45855f8e0fd749c007f9303ad30efab0e73c05a"},
- {file = "coverage-7.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7bb3b9ddb87ef7725056572368040c32775036472d5a033679d1fa6c8dc08417"},
- {file = "coverage-7.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18afb24843cbc175687225cab1138c95d262337f5473512010e46831aa0c2973"},
- {file = "coverage-7.10.7-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:399a0b6347bcd3822be369392932884b8216d0944049ae22925631a9b3d4ba4c"},
- {file = "coverage-7.10.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314f2c326ded3f4b09be11bc282eb2fc861184bc95748ae67b360ac962770be7"},
- {file = "coverage-7.10.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c41e71c9cfb854789dee6fc51e46743a6d138b1803fab6cb860af43265b42ea6"},
- {file = "coverage-7.10.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc01f57ca26269c2c706e838f6422e2a8788e41b3e3c65e2f41148212e57cd59"},
- {file = "coverage-7.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a6442c59a8ac8b85812ce33bc4d05bde3fb22321fa8294e2a5b487c3505f611b"},
- {file = "coverage-7.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:78a384e49f46b80fb4c901d52d92abe098e78768ed829c673fbb53c498bef73a"},
- {file = "coverage-7.10.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5e1e9802121405ede4b0133aa4340ad8186a1d2526de5b7c3eca519db7bb89fb"},
- {file = "coverage-7.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d41213ea25a86f69efd1575073d34ea11aabe075604ddf3d148ecfec9e1e96a1"},
- {file = "coverage-7.10.7-cp312-cp312-win32.whl", hash = "sha256:77eb4c747061a6af8d0f7bdb31f1e108d172762ef579166ec84542f711d90256"},
- {file = "coverage-7.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:f51328ffe987aecf6d09f3cd9d979face89a617eacdaea43e7b3080777f647ba"},
- {file = "coverage-7.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:bda5e34f8a75721c96085903c6f2197dc398c20ffd98df33f866a9c8fd95f4bf"},
- {file = "coverage-7.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:981a651f543f2854abd3b5fcb3263aac581b18209be49863ba575de6edf4c14d"},
- {file = "coverage-7.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73ab1601f84dc804f7812dc297e93cd99381162da39c47040a827d4e8dafe63b"},
- {file = "coverage-7.10.7-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a8b6f03672aa6734e700bbcd65ff050fd19cddfec4b031cc8cf1c6967de5a68e"},
- {file = "coverage-7.10.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10b6ba00ab1132a0ce4428ff68cf50a25efd6840a42cdf4239c9b99aad83be8b"},
- {file = "coverage-7.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c79124f70465a150e89340de5963f936ee97097d2ef76c869708c4248c63ca49"},
- {file = "coverage-7.10.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:69212fbccdbd5b0e39eac4067e20a4a5256609e209547d86f740d68ad4f04911"},
- {file = "coverage-7.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7ea7c6c9d0d286d04ed3541747e6597cbe4971f22648b68248f7ddcd329207f0"},
- {file = "coverage-7.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b9be91986841a75042b3e3243d0b3cb0b2434252b977baaf0cd56e960fe1e46f"},
- {file = "coverage-7.10.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b281d5eca50189325cfe1f365fafade89b14b4a78d9b40b05ddd1fc7d2a10a9c"},
- {file = "coverage-7.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:99e4aa63097ab1118e75a848a28e40d68b08a5e19ce587891ab7fd04475e780f"},
- {file = "coverage-7.10.7-cp313-cp313-win32.whl", hash = "sha256:dc7c389dce432500273eaf48f410b37886be9208b2dd5710aaf7c57fd442c698"},
- {file = "coverage-7.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:cac0fdca17b036af3881a9d2729a850b76553f3f716ccb0360ad4dbc06b3b843"},
- {file = "coverage-7.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:4b6f236edf6e2f9ae8fcd1332da4e791c1b6ba0dc16a2dc94590ceccb482e546"},
- {file = "coverage-7.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a0ec07fd264d0745ee396b666d47cef20875f4ff2375d7c4f58235886cc1ef0c"},
- {file = "coverage-7.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd5e856ebb7bfb7672b0086846db5afb4567a7b9714b8a0ebafd211ec7ce6a15"},
- {file = "coverage-7.10.7-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f57b2a3c8353d3e04acf75b3fed57ba41f5c0646bbf1d10c7c282291c97936b4"},
- {file = "coverage-7.10.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ef2319dd15a0b009667301a3f84452a4dc6fddfd06b0c5c53ea472d3989fbf0"},
- {file = "coverage-7.10.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83082a57783239717ceb0ad584de3c69cf581b2a95ed6bf81ea66034f00401c0"},
- {file = "coverage-7.10.7-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:50aa94fb1fb9a397eaa19c0d5ec15a5edd03a47bf1a3a6111a16b36e190cff65"},
- {file = "coverage-7.10.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2120043f147bebb41c85b97ac45dd173595ff14f2a584f2963891cbcc3091541"},
- {file = "coverage-7.10.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2fafd773231dd0378fdba66d339f84904a8e57a262f583530f4f156ab83863e6"},
- {file = "coverage-7.10.7-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:0b944ee8459f515f28b851728ad224fa2d068f1513ef6b7ff1efafeb2185f999"},
- {file = "coverage-7.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4b583b97ab2e3efe1b3e75248a9b333bd3f8b0b1b8e5b45578e05e5850dfb2c2"},
- {file = "coverage-7.10.7-cp313-cp313t-win32.whl", hash = "sha256:2a78cd46550081a7909b3329e2266204d584866e8d97b898cd7fb5ac8d888b1a"},
- {file = "coverage-7.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:33a5e6396ab684cb43dc7befa386258acb2d7fae7f67330ebb85ba4ea27938eb"},
- {file = "coverage-7.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:86b0e7308289ddde73d863b7683f596d8d21c7d8664ce1dee061d0bcf3fbb4bb"},
- {file = "coverage-7.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b06f260b16ead11643a5a9f955bd4b5fd76c1a4c6796aeade8520095b75de520"},
- {file = "coverage-7.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:212f8f2e0612778f09c55dd4872cb1f64a1f2b074393d139278ce902064d5b32"},
- {file = "coverage-7.10.7-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3445258bcded7d4aa630ab8296dea4d3f15a255588dd535f980c193ab6b95f3f"},
- {file = "coverage-7.10.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb45474711ba385c46a0bfe696c695a929ae69ac636cda8f532be9e8c93d720a"},
- {file = "coverage-7.10.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:813922f35bd800dca9994c5971883cbc0d291128a5de6b167c7aa697fcf59360"},
- {file = "coverage-7.10.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:93c1b03552081b2a4423091d6fb3787265b8f86af404cff98d1b5342713bdd69"},
- {file = "coverage-7.10.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cc87dd1b6eaf0b848eebb1c86469b9f72a1891cb42ac7adcfbce75eadb13dd14"},
- {file = "coverage-7.10.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:39508ffda4f343c35f3236fe8d1a6634a51f4581226a1262769d7f970e73bffe"},
- {file = "coverage-7.10.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:925a1edf3d810537c5a3abe78ec5530160c5f9a26b1f4270b40e62cc79304a1e"},
- {file = "coverage-7.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2c8b9a0636f94c43cd3576811e05b89aa9bc2d0a85137affc544ae5cb0e4bfbd"},
- {file = "coverage-7.10.7-cp314-cp314-win32.whl", hash = "sha256:b7b8288eb7cdd268b0304632da8cb0bb93fadcfec2fe5712f7b9cc8f4d487be2"},
- {file = "coverage-7.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:1ca6db7c8807fb9e755d0379ccc39017ce0a84dcd26d14b5a03b78563776f681"},
- {file = "coverage-7.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:097c1591f5af4496226d5783d036bf6fd6cd0cbc132e071b33861de756efb880"},
- {file = "coverage-7.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a62c6ef0d50e6de320c270ff91d9dd0a05e7250cac2a800b7784bae474506e63"},
- {file = "coverage-7.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9fa6e4dd51fe15d8738708a973470f67a855ca50002294852e9571cdbd9433f2"},
- {file = "coverage-7.10.7-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8fb190658865565c549b6b4706856d6a7b09302c797eb2cf8e7fe9dabb043f0d"},
- {file = "coverage-7.10.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:affef7c76a9ef259187ef31599a9260330e0335a3011732c4b9effa01e1cd6e0"},
- {file = "coverage-7.10.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e16e07d85ca0cf8bafe5f5d23a0b850064e8e945d5677492b06bbe6f09cc699"},
- {file = "coverage-7.10.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03ffc58aacdf65d2a82bbeb1ffe4d01ead4017a21bfd0454983b88ca73af94b9"},
- {file = "coverage-7.10.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1b4fd784344d4e52647fd7857b2af5b3fbe6c239b0b5fa63e94eb67320770e0f"},
- {file = "coverage-7.10.7-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0ebbaddb2c19b71912c6f2518e791aa8b9f054985a0769bdb3a53ebbc765c6a1"},
- {file = "coverage-7.10.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a2d9a3b260cc1d1dbdb1c582e63ddcf5363426a1a68faa0f5da28d8ee3c722a0"},
- {file = "coverage-7.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a3cc8638b2480865eaa3926d192e64ce6c51e3d29c849e09d5b4ad95efae5399"},
- {file = "coverage-7.10.7-cp314-cp314t-win32.whl", hash = "sha256:67f8c5cbcd3deb7a60b3345dffc89a961a484ed0af1f6f73de91705cc6e31235"},
- {file = "coverage-7.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e1ed71194ef6dea7ed2d5cb5f7243d4bcd334bfb63e59878519be558078f848d"},
- {file = "coverage-7.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:7fe650342addd8524ca63d77b2362b02345e5f1a093266787d210c70a50b471a"},
- {file = "coverage-7.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fff7b9c3f19957020cac546c70025331113d2e61537f6e2441bc7657913de7d3"},
- {file = "coverage-7.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bc91b314cef27742da486d6839b677b3f2793dfe52b51bbbb7cf736d5c29281c"},
- {file = "coverage-7.10.7-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:567f5c155eda8df1d3d439d40a45a6a5f029b429b06648235f1e7e51b522b396"},
- {file = "coverage-7.10.7-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2af88deffcc8a4d5974cf2d502251bc3b2db8461f0b66d80a449c33757aa9f40"},
- {file = "coverage-7.10.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7315339eae3b24c2d2fa1ed7d7a38654cba34a13ef19fbcb9425da46d3dc594"},
- {file = "coverage-7.10.7-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:912e6ebc7a6e4adfdbb1aec371ad04c68854cd3bf3608b3514e7ff9062931d8a"},
- {file = "coverage-7.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f49a05acd3dfe1ce9715b657e28d138578bc40126760efb962322c56e9ca344b"},
- {file = "coverage-7.10.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cce2109b6219f22ece99db7644b9622f54a4e915dad65660ec435e89a3ea7cc3"},
- {file = "coverage-7.10.7-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:f3c887f96407cea3916294046fc7dab611c2552beadbed4ea901cbc6a40cc7a0"},
- {file = "coverage-7.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:635adb9a4507c9fd2ed65f39693fa31c9a3ee3a8e6dc64df033e8fdf52a7003f"},
- {file = "coverage-7.10.7-cp39-cp39-win32.whl", hash = "sha256:5a02d5a850e2979b0a014c412573953995174743a3f7fa4ea5a6e9a3c5617431"},
- {file = "coverage-7.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:c134869d5ffe34547d14e174c866fd8fe2254918cc0a95e99052903bc1543e07"},
- {file = "coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260"},
- {file = "coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239"},
-]
-
-[package.extras]
-toml = ["tomli ; python_full_version <= \"3.11.0a6\""]
-
[[package]]
name = "coverage"
version = "7.11.0"
@@ -862,7 +710,6 @@ description = "Code coverage measurement for Python"
optional = false
python-versions = ">=3.10"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "coverage-7.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eb53f1e8adeeb2e78962bade0c08bfdc461853c7969706ed901821e009b35e31"},
{file = "coverage-7.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d9a03ec6cb9f40a5c360f138b88266fd8f58408d71e89f536b4f91d85721d075"},
@@ -963,63 +810,81 @@ toml = ["tomli ; python_full_version <= \"3.11.0a6\""]
[[package]]
name = "cryptography"
-version = "44.0.3"
+version = "46.0.3"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
optional = false
-python-versions = "!=3.9.0,!=3.9.1,>=3.7"
+python-versions = "!=3.9.0,!=3.9.1,>=3.8"
groups = ["main"]
markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\""
files = [
- {file = "cryptography-44.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:962bc30480a08d133e631e8dfd4783ab71cc9e33d5d7c1e192f0b7c06397bb88"},
- {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffc61e8f3bf5b60346d89cd3d37231019c17a081208dfbbd6e1605ba03fa137"},
- {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58968d331425a6f9eedcee087f77fd3c927c88f55368f43ff7e0a19891f2642c"},
- {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e28d62e59a4dbd1d22e747f57d4f00c459af22181f0b2f787ea83f5a876d7c76"},
- {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af653022a0c25ef2e3ffb2c673a50e5a0d02fecc41608f4954176f1933b12359"},
- {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:157f1f3b8d941c2bd8f3ffee0af9b049c9665c39d3da9db2dc338feca5e98a43"},
- {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:c6cd67722619e4d55fdb42ead64ed8843d64638e9c07f4011163e46bc512cf01"},
- {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b424563394c369a804ecbee9b06dfb34997f19d00b3518e39f83a5642618397d"},
- {file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c91fc8e8fd78af553f98bc7f2a1d8db977334e4eea302a4bfd75b9461c2d8904"},
- {file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:25cd194c39fa5a0aa4169125ee27d1172097857b27109a45fadc59653ec06f44"},
- {file = "cryptography-44.0.3-cp37-abi3-win32.whl", hash = "sha256:3be3f649d91cb182c3a6bd336de8b61a0a71965bd13d1a04a0e15b39c3d5809d"},
- {file = "cryptography-44.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:3883076d5c4cc56dbef0b898a74eb6992fdac29a7b9013870b34efe4ddb39a0d"},
- {file = "cryptography-44.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:5639c2b16764c6f76eedf722dbad9a0914960d3489c0cc38694ddf9464f1bb2f"},
- {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3ffef566ac88f75967d7abd852ed5f182da252d23fac11b4766da3957766759"},
- {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192ed30fac1728f7587c6f4613c29c584abdc565d7417c13904708db10206645"},
- {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7d5fe7195c27c32a64955740b949070f21cba664604291c298518d2e255931d2"},
- {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3f07943aa4d7dad689e3bb1638ddc4944cc5e0921e3c227486daae0e31a05e54"},
- {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb90f60e03d563ca2445099edf605c16ed1d5b15182d21831f58460c48bffb93"},
- {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ab0b005721cc0039e885ac3503825661bd9810b15d4f374e473f8c89b7d5460c"},
- {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3bb0847e6363c037df8f6ede57d88eaf3410ca2267fb12275370a76f85786a6f"},
- {file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b0cc66c74c797e1db750aaa842ad5b8b78e14805a9b5d1348dc603612d3e3ff5"},
- {file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6866df152b581f9429020320e5eb9794c8780e90f7ccb021940d7f50ee00ae0b"},
- {file = "cryptography-44.0.3-cp39-abi3-win32.whl", hash = "sha256:c138abae3a12a94c75c10499f1cbae81294a6f983b3af066390adee73f433028"},
- {file = "cryptography-44.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:5d186f32e52e66994dce4f766884bcb9c68b8da62d61d9d215bfe5fb56d21334"},
- {file = "cryptography-44.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:cad399780053fb383dc067475135e41c9fe7d901a97dd5d9c5dfb5611afc0d7d"},
- {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:21a83f6f35b9cc656d71b5de8d519f566df01e660ac2578805ab245ffd8523f8"},
- {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fc3c9babc1e1faefd62704bb46a69f359a9819eb0292e40df3fb6e3574715cd4"},
- {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:e909df4053064a97f1e6565153ff8bb389af12c5c8d29c343308760890560aff"},
- {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:dad80b45c22e05b259e33ddd458e9e2ba099c86ccf4e88db7bbab4b747b18d06"},
- {file = "cryptography-44.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:479d92908277bed6e1a1c69b277734a7771c2b78633c224445b5c60a9f4bc1d9"},
- {file = "cryptography-44.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:896530bc9107b226f265effa7ef3f21270f18a2026bc09fed1ebd7b66ddf6375"},
- {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9b4d4a5dbee05a2c390bf212e78b99434efec37b17a4bff42f50285c5c8c9647"},
- {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02f55fb4f8b79c1221b0961488eaae21015b69b210e18c386b69de182ebb1259"},
- {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:dd3db61b8fe5be220eee484a17233287d0be6932d056cf5738225b9c05ef4fff"},
- {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:978631ec51a6bbc0b7e58f23b68a8ce9e5f09721940933e9c217068388789fe5"},
- {file = "cryptography-44.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:5d20cc348cca3a8aa7312f42ab953a56e15323800ca3ab0706b8cd452a3a056c"},
- {file = "cryptography-44.0.3.tar.gz", hash = "sha256:fe19d8bc5536a91a24a8133328880a41831b6c5df54599a8417b62fe015d3053"},
-]
-
-[package.dependencies]
-cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
-
-[package.extras]
-docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0) ; python_version >= \"3.8\""]
+ {file = "cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e"},
+ {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926"},
+ {file = "cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71"},
+ {file = "cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac"},
+ {file = "cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018"},
+ {file = "cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb"},
+ {file = "cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c"},
+ {file = "cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665"},
+ {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3"},
+ {file = "cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20"},
+ {file = "cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de"},
+ {file = "cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914"},
+ {file = "cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db"},
+ {file = "cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21"},
+ {file = "cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04"},
+ {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506"},
+ {file = "cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963"},
+ {file = "cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4"},
+ {file = "cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df"},
+ {file = "cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f"},
+ {file = "cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372"},
+ {file = "cryptography-46.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a23582810fedb8c0bc47524558fb6c56aac3fc252cb306072fd2815da2a47c32"},
+ {file = "cryptography-46.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e7aec276d68421f9574040c26e2a7c3771060bc0cff408bae1dcb19d3ab1e63c"},
+ {file = "cryptography-46.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea"},
+ {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b"},
+ {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb"},
+ {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717"},
+ {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9"},
+ {file = "cryptography-46.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c"},
+ {file = "cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1"},
+]
+
+[package.dependencies]
+cffi = {version = ">=2.0.0", markers = "python_full_version >= \"3.9.0\" and platform_python_implementation != \"PyPy\""}
+typing-extensions = {version = ">=4.13.2", markers = "python_full_version < \"3.11.0\""}
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-inline-tabs", "sphinx-rtd-theme (>=3.0.0)"]
docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"]
-nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2) ; python_version >= \"3.8\""]
-pep8test = ["check-sdist ; python_version >= \"3.8\"", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"]
+nox = ["nox[uv] (>=2024.4.15)"]
+pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.14)", "ruff (>=0.11.11)"]
sdist = ["build (>=1.0.0)"]
ssh = ["bcrypt (>=3.1.5)"]
-test = ["certifi (>=2024)", "cryptography-vectors (==44.0.3)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"]
+test = ["certifi (>=2024)", "cryptography-vectors (==46.0.3)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"]
test-randomorder = ["pytest-randomly"]
[[package]]
@@ -1178,7 +1043,7 @@ description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
groups = ["main"]
-markers = "python_version <= \"3.10\""
+markers = "python_version == \"3.10\""
files = [
{file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"},
{file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"},
@@ -1190,19 +1055,6 @@ typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""}
[package.extras]
test = ["pytest (>=6)"]
-[[package]]
-name = "filelock"
-version = "3.19.1"
-description = "A platform independent file lock."
-optional = false
-python-versions = ">=3.9"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d"},
- {file = "filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58"},
-]
-
[[package]]
name = "filelock"
version = "3.20.0"
@@ -1210,7 +1062,6 @@ description = "A platform independent file lock."
optional = false
python-versions = ">=3.10"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2"},
{file = "filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4"},
@@ -1237,123 +1088,123 @@ sphinx-basic-ng = ">=1.0.0.beta2"
[[package]]
name = "grimp"
-version = "3.12"
+version = "3.13"
description = "Builds a queryable graph of the imports within one or more Python packages."
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
- {file = "grimp-3.12-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5df1383d70606448ec095c6651974a2df070d3958ea00196042829408ad87e66"},
- {file = "grimp-3.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f2216a08026a23f03ab5ce0681837b5727aa4ed7b367062a313e382372e42558"},
- {file = "grimp-3.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33b9c2fb3e2515df7147bfea50f054e5de11c13b227470259649a80c4508cae0"},
- {file = "grimp-3.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5daa9dcd41228e46ccd07b7366139cad02eadf9d137ff5767ece4a1cf6478703"},
- {file = "grimp-3.12-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65fd74e1d344748b3726a2db57c685a733b7108774be08f78bd921dbc175b943"},
- {file = "grimp-3.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43fee43c5d7da591bc2fc80fcd02c1102cbb07821e277becf88fb1870b008a52"},
- {file = "grimp-3.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:be8ad098c7f1462e95e692b837112721016ea6b0abd451f8c08bdc791728ae29"},
- {file = "grimp-3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:797d8cea180222b64d24bcfca6337bac5cf63a5a1c5bfd654c9c324c9d3a1fc1"},
- {file = "grimp-3.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:268da8ddacf35fb7febd1a01d491ec40e23b2a2a060dd7f6b3b5ed2e438107f8"},
- {file = "grimp-3.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6bb73c8c33487851063f64b0c0e33f8d2abd162e6b240ff31a0d87718dcb2104"},
- {file = "grimp-3.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d3039fa8e5656faa65533928d8a39a7cce48c39c875a03a71b93ff06d15eed73"},
- {file = "grimp-3.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a60f5d190140829d58aef8642906511c77cc130495a0c7e07c7d1b76284f40d7"},
- {file = "grimp-3.12-cp310-cp310-win32.whl", hash = "sha256:684272675ae0c6ef5030e9b584c47d5f8ac04cecda5db37fadb9025e073216f9"},
- {file = "grimp-3.12-cp310-cp310-win_amd64.whl", hash = "sha256:d63da104af326de30ec30b66cea4835e9695691812e19edab39ca697a2e72cfa"},
- {file = "grimp-3.12-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:e6c02e51eebfcf71146d42f47c9ce353ac1902ae446e18d0e663ab9fdaa0496c"},
- {file = "grimp-3.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:79bc2b0ff6072c43c0ddc4479b25b7a8198795486478cfe3be0503b2c7d32c7f"},
- {file = "grimp-3.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3986f11a9dd4167a2943cf6e80b458c0a825b48609713736cc8f2de135000810"},
- {file = "grimp-3.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7a2abe55844f9dad25499ff9456d680496f390d160b6b3a4e5aeabc0183813b4"},
- {file = "grimp-3.12-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e59112d0f557335b619bcf10263d11873579230bd3df4a4b19224ec18e7212d6"},
- {file = "grimp-3.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b858e2e5a489c36710322970aa82bfbd3f1c4107c8564960629a59d2f17a53d0"},
- {file = "grimp-3.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d46cc1222dd301e0be371b97f0cdecae178089704e8a285e3edd4750ec46270a"},
- {file = "grimp-3.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef06822f75856af28e7fcc580034043c543b1c99b07d2bd467bd173a7f10691"},
- {file = "grimp-3.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4c19f1cba8a95c898473dd18f9c81358019d67f87f140b0b8401550e6d21c5a3"},
- {file = "grimp-3.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:600e8dbc1cd9c6decbc22089730221c65591b7ba5f89751d07fc7ad014d99aa1"},
- {file = "grimp-3.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:259ba53b82cfb9c2c2d097b2237970c4e9903fa2d0b664b7e12329d9a64924f9"},
- {file = "grimp-3.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a593549b1f66b1c12574e71f9e8c0073b372888c6b6706e2617bba2713ae28c2"},
- {file = "grimp-3.12-cp311-cp311-win32.whl", hash = "sha256:356ee969443f06c6c3a270f5a7221f946f0cb135a8b8ece2009990b293504bb3"},
- {file = "grimp-3.12-cp311-cp311-win_amd64.whl", hash = "sha256:75e1f0d74f3a242a1c34e464d775c36b1c8b9d8c92b35f46f221e73e9b2f0065"},
- {file = "grimp-3.12-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:af399fc0ffddfbd7ea6c2e8546be1ab5284ee800f15a445705bdda5d63501b34"},
- {file = "grimp-3.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f08358acbaf9a4b324537bf344fd2d76b5f9b6f1bfaf9a431e9453fc0eaee5f"},
- {file = "grimp-3.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6eeb1616cafe9074fcb390fcfc01e6e5a0e0ddd5acb9dd37579985b2879c239a"},
- {file = "grimp-3.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99e648e299f7cd3daaee2cb745192e7ea159c7d38df76b4dcca12a2ef68a3ede"},
- {file = "grimp-3.12-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b24c5ce351030d1f83e69acd76a06863dd87041ceb25572339f7334e210cbc4"},
- {file = "grimp-3.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd40a5ec09d1dfafaae88b53231ab79378183e2e9a03e7b26b7a30133d027d8a"},
- {file = "grimp-3.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0aebdfad66d6f4e8b0f7364ce0429d208be3510918097f969428165074d3103e"},
- {file = "grimp-3.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76fd06be98d6bea9ea8a804da22c80accf1d277fe04abd5f3dff05d087f056f7"},
- {file = "grimp-3.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a73a42a43e268ac5b196386beae1ec646f4572409e731bccf2a99ab4ed5c46bf"},
- {file = "grimp-3.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:af990af7d5e64f484d12cdefacfaaed4ea9418ac4d0a5a928953fd91aaf8df80"},
- {file = "grimp-3.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:82ee28c1e9835572af2c733f7e5913a44193c53ae8ca488039164593b4a750fa"},
- {file = "grimp-3.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:afdceaea00e305909cb30d68e91b94fcf71d1a7234052549ea31148785a03a52"},
- {file = "grimp-3.12-cp312-cp312-win32.whl", hash = "sha256:40f8e048254d2437dffcd383d2301a82c35d9a3082e878b707d87a6e8c539614"},
- {file = "grimp-3.12-cp312-cp312-win_amd64.whl", hash = "sha256:199172d17f22199bf400a0bd5c4985784622201e887a023fe799ca3f3437dedf"},
- {file = "grimp-3.12-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:8a52a1f719b5b97e184eeeb1a22a7ad20960baf096b7fc2c3012d3378d4429ca"},
- {file = "grimp-3.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a46094a2cd7bbd172a4ebe846b42eefe626b29d298875108d9e59485284d181b"},
- {file = "grimp-3.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3447f0b1f6a9c7245367ddca7be4204213d3d20ff63487edbadb6e7d7b712f9c"},
- {file = "grimp-3.12-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc7157c74416e8709db5d1e1051ceccbd7721bcdd8fe5983aea4ae88025d1e27"},
- {file = "grimp-3.12-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a5e3143f97a7803848c677f66868624865ef08e73b6638cfcc938152f5045c0"},
- {file = "grimp-3.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dbf3d1e51a45aef2bc2b31a9d97c7356a44aae82926b6a614015439223b9d945"},
- {file = "grimp-3.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99c1c9550404821f305e04e7008e890207b534efce086ecd0d5db1450eb8c0b0"},
- {file = "grimp-3.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3db397a4c1d27578b6a0f0f6d53521eae693bcc8758cfca02e0ed73827fe3c3"},
- {file = "grimp-3.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e95c99896add10cb4180540bd970b3c540505516b2b85808bc70d3b160127f5c"},
- {file = "grimp-3.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:37888db154fca7d63cb27f7d866b5db02ff50281875a9410e2507d62bdecbddf"},
- {file = "grimp-3.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:674191f4a2399b9ee15e7604055d0640b3d7120276bc48680eb935436ec8f7e2"},
- {file = "grimp-3.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a8b0e87e6bf6def0651d0c13d5161337741044a9451db7f8e09fafc1d494e774"},
- {file = "grimp-3.12-cp313-cp313-win32.whl", hash = "sha256:3f5315758c3b731162d6c0e309f3aef3538d439a4dc4e718c0569fb02e87276e"},
- {file = "grimp-3.12-cp313-cp313-win_amd64.whl", hash = "sha256:964d878f72d5afa03adff0bfecc02ead51b754a2575d67a48334c6f5b1fd3c75"},
- {file = "grimp-3.12-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a706c66b577751e6b0769b56e4056c34348af87db887dae762129bf7e8e2a2"},
- {file = "grimp-3.12-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c85a9287aa667a4149565f74910c36a31c6025c481347c49f3e598f91c2634a"},
- {file = "grimp-3.12-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0dfa79fa8ea37ea8c8bd76337ae09c87fa3e10f0af65f7a1bfa27c7d8b83154c"},
- {file = "grimp-3.12-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef5cd5bc08f6c8f0698bc8f63560adb4320d87a644da8ff06c07c7db3f3fca37"},
- {file = "grimp-3.12-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:351ab71624f4eff3b32c8cc2e28aa6820ebf89d79cbb287b69d1ca2cf5991042"},
- {file = "grimp-3.12-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:7bc3a7d00630f8cef3e23fc44a0a2c09dd889ea9934f179cfb90e07a6298c44c"},
- {file = "grimp-3.12-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2f9ba24c528ae64ae35db992b16b1041cc8bbb595a47c6400c472bcfa497e2be"},
- {file = "grimp-3.12-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c68087cc491892efcfdda147076a61a6aea5ac5c9355beb843ebb6cb759095d3"},
- {file = "grimp-3.12-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:19bcff63ebf742ccb120c2c1a9fdeba46d7822b7efe23f28ae20a77238834d6c"},
- {file = "grimp-3.12-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5836d5e1b4740a0ed7f4d763099f1cb099fa8bcdb7a7a7e7818e61f355af323b"},
- {file = "grimp-3.12-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:021de8d120b64a0e77eefafc13580124095f6cced03c2340c1ced3551f8fee93"},
- {file = "grimp-3.12-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:faf8a61ac6b846675367fcbb3be1bf964ad2971c0ffe4982f43e77f089592b06"},
- {file = "grimp-3.12-cp314-cp314-win32.whl", hash = "sha256:b993e00121f821cbfec2854193aba46c559a7c685af2d882c73c9e2cc7aff6a8"},
- {file = "grimp-3.12-cp314-cp314-win_amd64.whl", hash = "sha256:92e222fabbe022639eb84fca1506fa5b99d8d0ac1ff35ed8fab1001fd702c27b"},
- {file = "grimp-3.12-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:feb98d9f2d96baf2055ad307a55e01a90aae5cdc5b8b655464fa46dd0e920697"},
- {file = "grimp-3.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b724635c05d882fdb29ecdfa5ee277be1841b1dfe0b3f5d8d60c2b970714fa5"},
- {file = "grimp-3.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdde09ee480681d82ba4a866f370c65a17995214c55518af6dc1e82b7447caa9"},
- {file = "grimp-3.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a7d8fdce440638de315d25d1b9ce8c3f929e1f17561adf85458ffb89d75e2094"},
- {file = "grimp-3.12-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a40164666a2d6e40440cf3e40bb19d7e63e5361b70224db7818dbe9950fd487"},
- {file = "grimp-3.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c35ea26b58f58d426745cecd66ae74e24261a94093e9ba99b69d8f7c79bda3f"},
- {file = "grimp-3.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2e46a25b6b01ae3cc93cb4c651b6f995e0b0e1f8053f09bdd324344e5d1950e"},
- {file = "grimp-3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5172937a7a65db32c63832feb1a5deb6ee6abb9f594b20982b8a4357763250a5"},
- {file = "grimp-3.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:54ede855ca703f7020a91d984f15bca4a3722fb62d5e438e0dd80b4eaa679091"},
- {file = "grimp-3.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:c8a9e2f197c7dec8297627a0ddcd1c8e4cf62de3829c296c80f91afa6eaecec3"},
- {file = "grimp-3.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3e8088a05881bb975efcbf4ee31bfca7bd015fb2510658c40c3952469c56955f"},
- {file = "grimp-3.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:80f08f2ee0b9757d846f7f66521a489b053c6a0a46c48add21c76490e09e51ce"},
- {file = "grimp-3.12-cp39-cp39-win32.whl", hash = "sha256:cf6a34a7e6fedaf5c11c3bc24f9e6e36914d8193bc1ba51b00012202b1851b93"},
- {file = "grimp-3.12-cp39-cp39-win_amd64.whl", hash = "sha256:ff4476c7e79b50c7ba6324970da9425b27cb26e2890953568175a277a2168092"},
- {file = "grimp-3.12-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3ba4e9f7a48baf65c2c1f5d06e4ac365d799c174d6ea1883621a163afd159a3"},
- {file = "grimp-3.12-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a2ac07b2ae00b9522c14eefac60590e1b8a61562c331579b1e534fcc7cbe0936"},
- {file = "grimp-3.12-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f28213ba72d258b8817eb032a5d52b5bcb00f5e89fb670d660e57e70b3fa2f6b"},
- {file = "grimp-3.12-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1641a7979a7253c8468b15172d5fd5b6c909ad00a78040408783a771b350618"},
- {file = "grimp-3.12-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3140e83980e1672fef3657ab92edd807bf4c5d80a8446253e78da7e1c604b031"},
- {file = "grimp-3.12-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:fb805b993d50d856c64ee5c81dce6a11f19bf95a6676fe0138d4f54bf03bda27"},
- {file = "grimp-3.12-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:3f89b445c5d6a94f3e9b1b63b79d883bfe619ee9477695c4e0fe6769dde99368"},
- {file = "grimp-3.12-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:719e4a62f4370d47e7d35a3a0300c4554ad24aa624cc53c61f1810adcb0190ec"},
- {file = "grimp-3.12-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:567d037a3db083e54bee621daba59a2e01fd1391364ae0a0c737995f6eed910b"},
- {file = "grimp-3.12-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9b4cc756c91c3d8582ee70b5e013c0e34fdb31c7f808cefe9d15509c45fec31e"},
- {file = "grimp-3.12-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bd47f9a8619cb8966f18cb6faf5f6cb8d35ade99312477dd8e9de3a9ae4cb7"},
- {file = "grimp-3.12-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f30e01855c67a39857c87e6c0eafe5e8891010a35e06cf2145f2cfce8ea9780"},
- {file = "grimp-3.12-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d07e825f6b052186dabd8dbbcc7e008a3b56e551725e2ba47169fe1e4bde76ac"},
- {file = "grimp-3.12-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f1a1289d4282be2891ada75ec5d3099e856518c4236b1196e367b630485f8ce"},
- {file = "grimp-3.12-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:85136b555aeb7d3965fdb40af4e4af2011f911b0fde8c20979bf4db7b06455f5"},
- {file = "grimp-3.12-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:963efd6ec86e7b47fde835b2526b6be7a3f489857a1cd47a747c94b3e670550a"},
- {file = "grimp-3.12-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:c9e2ee478b66f0e20c92af6123142ffd6b604c36e9b3a8d391ea9172cc18b6b3"},
- {file = "grimp-3.12-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e8826362d4e403aa2e03d480e3e4d64284a6b6ccafc2c5777bb2bed2535bdc4e"},
- {file = "grimp-3.12-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5b935475db40664613bf6d3b6c9a6af7ea287db15ceef878b5583295396bd0"},
- {file = "grimp-3.12-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b6799cdf9b9959aca3ecd034a4e332a69293f592a2325bfa60279ebfa90e1bf"},
- {file = "grimp-3.12-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94f412e23b5a55533078c2d8daa604eb3efd04ba8482ddd09342810ec19a21c3"},
- {file = "grimp-3.12-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45791f1cec0fea3a8c0fac6bea061b7b50c9a501a84442310723fb23825783c5"},
- {file = "grimp-3.12-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:247770c6b966ed93b6ab1ce77f36deb2ad698dadea9cfee74a1c23abc89e08d3"},
- {file = "grimp-3.12-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6587b7b048592c2ef369ef59d4e161588d8a54840501e2c18210f6322bdefba3"},
- {file = "grimp-3.12-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:1c97c25d70b7cd3044717d4efafac3ae67eca159a61f95c807a59c6c2b4c8b5c"},
- {file = "grimp-3.12-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:95c4311a71648de0d7aa2533ddea569b2bc6796fd71752770cd45c3c5292a5f8"},
- {file = "grimp-3.12.tar.gz", hash = "sha256:1a733b1d719c42bd2fada58240975fa7d09936b57120c34b64cfb31e42701010"},
+ {file = "grimp-3.13-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:0ad0b51c8216cdffd60c68b54f6f3c803a0729dbe476fe9cd81642f6f0a3008e"},
+ {file = "grimp-3.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c4b5382964055e2fbae38a9e67c1d805bd4368c87341eff09a2ef29a095f39e"},
+ {file = "grimp-3.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87673986e66c0cfe5280744a5c28613453def1ddb849338c76a425f2eeab4460"},
+ {file = "grimp-3.13-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbc8d42013036ce3cba4c919d8f2a10309f33e80dbbbc5b280814c7bb159a459"},
+ {file = "grimp-3.13-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3b9a1ba890854b457a3df82f9c341c1f131e9617ee7ed8058e8016c57b963f8"},
+ {file = "grimp-3.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50c6025df388d004dd34cbb3c4a914c8e933b0bdfeb44a5598b9126f27fc164e"},
+ {file = "grimp-3.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c9b89b62b6381dc8de1ca524c0764df00bd7f1d823892c8ac1e9c10a8e87ab4"},
+ {file = "grimp-3.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2dc76e193ff53cd9722148bde0fc327781ae4b58080316e900b6b29be2b62bd"},
+ {file = "grimp-3.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b5884d0f94fd24b4ab6a51a81a830f4f0752e4c73f44dc579ac2ef5de186b599"},
+ {file = "grimp-3.13-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4523c7d4eaff96a37104cd9d2bedc0c805421144d81dac38ec975720eca5eded"},
+ {file = "grimp-3.13-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e5be25e3bd5c2029ae8016a8baefcc4842baa7e49a613b91b45881673f1f7a6e"},
+ {file = "grimp-3.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:876f6e5cfc8e92eef6b626cf9df1779be10cf84003363a9170322114688b24e5"},
+ {file = "grimp-3.13-cp310-cp310-win32.whl", hash = "sha256:fcb36fcf0a4756d9ce8fbcc3cf2bf6a7cfda83bf5a6c26e7e727b0cd9766a0a2"},
+ {file = "grimp-3.13-cp310-cp310-win_amd64.whl", hash = "sha256:cc8dc66768e903ca40b70691a8a9335045e622747ee94f11c8a413a7dbe52a46"},
+ {file = "grimp-3.13-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:57745996698932768274a2ed9ba3e5c424f60996c53ecaf1c82b75be9e819ee9"},
+ {file = "grimp-3.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca29f09710342b94fa6441f4d1102a0e49f0b463b1d91e43223baa949c5e9337"},
+ {file = "grimp-3.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adda25aa158e11d96dd27166300b955c8ec0c76ce2fd1a13597e9af012aada06"},
+ {file = "grimp-3.13-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03e17029d75500a5282b40cb15cdae030bf14df9dfaa6a2b983f08898dfe74b6"},
+ {file = "grimp-3.13-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cbfc9d2d0ebc0631fb4012a002f3d8f4e3acb8325be34db525c0392674433b8"},
+ {file = "grimp-3.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:161449751a085484608c5b9f863e41e8fb2a98e93f7312ead5d831e487a94518"},
+ {file = "grimp-3.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:119628fbe7f941d1e784edac98e8ced7e78a0b966a4ff2c449e436ee860bd507"},
+ {file = "grimp-3.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ca1ac776baf1fa105342b23c72f2e7fdd6771d4cce8d2903d28f92fd34a9e8f"},
+ {file = "grimp-3.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:941ff414cc66458f56e6af93c618266091ea70bfdabe7a84039be31d937051ee"},
+ {file = "grimp-3.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:87ad9bcd1caaa2f77c369d61a04b9f2f1b87f4c3b23ae6891b2c943193c4ec62"},
+ {file = "grimp-3.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:751fe37104a4f023d5c6556558b723d843d44361245c20f51a5d196de00e4774"},
+ {file = "grimp-3.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9b561f79ec0b3a4156937709737191ad57520f2d58fa1fc43cd79f67839a3cd7"},
+ {file = "grimp-3.13-cp311-cp311-win32.whl", hash = "sha256:52405ea8c8f20cf5d2d1866c80ee3f0243a38af82bd49d1464c5e254bf2e1f8f"},
+ {file = "grimp-3.13-cp311-cp311-win_amd64.whl", hash = "sha256:6a45d1d3beeefad69717b3718e53680fb3579fe67696b86349d6f39b75e850bf"},
+ {file = "grimp-3.13-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3e715c56ffdd055e5c84d27b4c02d83369b733e6a24579d42bbbc284bd0664a9"},
+ {file = "grimp-3.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f794dea35a4728b948ab8fec970ffbdf2589b34209f3ab902cf8a9148cf1eaad"},
+ {file = "grimp-3.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69571270f2c27e8a64b968195aa7ecc126797112a9bf1e804ff39ba9f42d6f6d"},
+ {file = "grimp-3.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f7b226398ae476762ef0afb5ef8f838d39c8e0e2f6d1a4378ce47059b221a4a"},
+ {file = "grimp-3.13-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5498aeac4df0131a1787fcbe9bb460b52fc9b781ec6bba607fd6a7d6d3ea6fce"},
+ {file = "grimp-3.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4be702bb2b5c001a6baf709c452358470881e15e3e074cfc5308903603485dcb"},
+ {file = "grimp-3.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fcf988f3e3d272a88f7be68f0c1d3719fee8624d902e9c0346b9015a0ea6a65"},
+ {file = "grimp-3.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ede36d104ff88c208140f978de3345f439345f35b8ef2b4390c59ef6984deba"},
+ {file = "grimp-3.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b35e44bb8dc80e0bd909a64387f722395453593a1884caca9dc0748efea33764"},
+ {file = "grimp-3.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:becb88e9405fc40896acd6e2b9bbf6f242a5ae2fd43a1ec0a32319ab6c10a227"},
+ {file = "grimp-3.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a66585b4af46c3fbadbef495483514bee037e8c3075ed179ba4f13e494eb7899"},
+ {file = "grimp-3.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:29f68c6e2ff70d782ca0e989ec4ec44df73ba847937bcbb6191499224a2f84e2"},
+ {file = "grimp-3.13-cp312-cp312-win32.whl", hash = "sha256:cc996dcd1a44ae52d257b9a3e98838f8ecfdc42f7c62c8c82c2fcd3828155c98"},
+ {file = "grimp-3.13-cp312-cp312-win_amd64.whl", hash = "sha256:e2966435947e45b11568f04a65863dcf836343c11ae44aeefdaa7f07eb1a0576"},
+ {file = "grimp-3.13-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1dd9be203e856b8c725b9af4100c6619c82672e6e0c5101e1154b3c8bffde2df"},
+ {file = "grimp-3.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:921222b6ba969fb292f5014f8ab3da9068427ebc3d6ff7f79bf46a07958529fe"},
+ {file = "grimp-3.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56f1128efd6e222990d3fbc0cf911096272bd333a086f3b485950bc022e767d9"},
+ {file = "grimp-3.13-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7742743183f3a2676774a341f460f34c80c3c80f6cbf9e9e421769dc69c170a0"},
+ {file = "grimp-3.13-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88bbaa0305f4ed3d7ee3e12eced83ede249eb2690cf9b623bde75c6650f39c13"},
+ {file = "grimp-3.13-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0c0ffbc579a42281ac54af446b4c2e35e5be9a7f64171de8b806c8c3e624919"},
+ {file = "grimp-3.13-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e07fb97ac153c01ecd5790b27c47b8cc4a5a70ab2f6618ec8f9b69ade31d5f81"},
+ {file = "grimp-3.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c3d8f5fd5a962793c4cd9e4089a8ae8edcaf1ebabc28b151d4015a5736ca79"},
+ {file = "grimp-3.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a5b323710e586b5db37d962d2b948eca47ceb70713c7aacb5cff01e7e7fc1b30"},
+ {file = "grimp-3.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:fc9933269b4b390d5d256fbee065eeea549e837ad43daf8f9cce832bd692cd5f"},
+ {file = "grimp-3.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c683645a4f61e62f8c99f3f643500b8660136666e44151b7491989e41407c86b"},
+ {file = "grimp-3.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cd07ab467fd6ed44db8cef047269ebc18e2b1811d30e25c54fc5818c573c3542"},
+ {file = "grimp-3.13-cp313-cp313-win32.whl", hash = "sha256:ab88dfb6a2df6e362b75be19e803c71b02f5cb22ee5fb0459dce5b180cef0b7f"},
+ {file = "grimp-3.13-cp313-cp313-win_amd64.whl", hash = "sha256:79a48b88b9b13de4ebe93a7d32e47e1155e85d4f67baef4b92bb34a65ea2bdb3"},
+ {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70094984cef4de1d59dad1a073a2e3e3e9cfd9874bd4c53146b3c66144800d39"},
+ {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a62b8f2073277a051d59a5973695b7e571a8225c433278777d9500070150a138"},
+ {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13d1c158bae4cc0d24107389bf526ee02088df6f0a3caa413dd4e35c83d76f63"},
+ {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a77d900c13d32c4aed91f6aab7ceb485f7bd0e3d2f88ca6c190ec5dc9143703b"},
+ {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21aeef8f1b7fc5f74e5513358f7774bd5bbb3159bd83eab7fe908c058fec3836"},
+ {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:0eef1697f5b608e8b615a72957474e76231105cdd79a8a546390045ba904a654"},
+ {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3f733a57be87b772cc21f63b062566cde4c90db6f3f338774a1567b11f7cb569"},
+ {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d00b611249f0370f811433c1d81173be27a34ecb588364a371e00f182e4fe88b"},
+ {file = "grimp-3.13-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:db63d787ac9665374a09a6cc00f7adb3f63c3f462c68ea87d5efe186db9c9ad7"},
+ {file = "grimp-3.13-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ba6f46658b5cf48b902f054a29e09b3af62893cf24df2951e300a0cf13cb2e71"},
+ {file = "grimp-3.13-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:472aa20a42b8486a5bf46720fdb21c58f81a86646057f727afab39c0d6f5e6aa"},
+ {file = "grimp-3.13-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f54bafaebc94db0a6e38a6c9a58fa9a8339d88acca99095d326104ee2747335"},
+ {file = "grimp-3.13-cp314-cp314-win32.whl", hash = "sha256:b8b7450e1ad2494540ac39bc97b9f8f0a38ff1b0588b7722d93468e6ac1c9473"},
+ {file = "grimp-3.13-cp314-cp314-win_amd64.whl", hash = "sha256:b70ca87be9e2df7212b7e3ebf65310051def6d2bb037a9b6a799397f56ac68df"},
+ {file = "grimp-3.13-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82eeb220124f22fc145685b34430a98143f994844d0f0899ec1e8ff82e5c48cf"},
+ {file = "grimp-3.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1bf47f43b9cd35d50c4777e56ccf7a0a9703dfca262da5c25b7fcc1a0007545d"},
+ {file = "grimp-3.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64dab41b6da5bbd2ca3c5ece4dcb0470981925664f3e1a310f1e57e78b777318"},
+ {file = "grimp-3.13-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de1cdf18d35f6d1c3f63f480c7a9d1d0abef61cc35f4dd5fe22731a38ee35fa4"},
+ {file = "grimp-3.13-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb1d58b57c99a020b961dc07391b567b20ffd13e5a6aec44e4ed22ad260964c6"},
+ {file = "grimp-3.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d70179ddd4e2e9acaebf04239f45468189c9cbe14893e1958b48409eea572f"},
+ {file = "grimp-3.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e8272214e3af42316d85f7938cb5ffbdb653041490c7f6db3cd99285eb150d3"},
+ {file = "grimp-3.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e75333974b1a7318251314b650ffa8c5a250e8dc2ae45f94bd51418d0c3764d"},
+ {file = "grimp-3.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a4d8308e404517a68429b34749f8d44bc0f46ef04dad16998105c60033f90951"},
+ {file = "grimp-3.13-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4d20e54075f337637d4ddc4e4f174db1530bc257a0cc3991ff8b38b39372f1b8"},
+ {file = "grimp-3.13-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:02b329cdb6beb4159db4c74bf7e89ab0a0964524f56e463a2a3564a9e9ce25f5"},
+ {file = "grimp-3.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c3a5e13f4b3619375b203a617ad377c2d099abb05a42f2792f2634bc24bfae1d"},
+ {file = "grimp-3.13-cp39-cp39-win32.whl", hash = "sha256:cdb6e793bb83c901db8664ec3f6741786fb884a8dcac1d064592f083ab12f643"},
+ {file = "grimp-3.13-cp39-cp39-win_amd64.whl", hash = "sha256:f27219649bb2610ce4a1db0761ce4a0651373d38b138b9fea4cfae77872f52e8"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cbf5bdf82dd076c08583d689b1f40a042430401caa1e234b76198fe7333b91"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c98f23be5c5c9a0d882bb5c58f190c7ac787fda00082618181b2b3b35181064"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5738fad8fd82800564daab85d484b3dfc59bb38e5bc2879b96c906592d05aa97"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e997676334afc838a2403efb633f271e52a76b1e50f970e7cfe367a1a9394550"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b2f5ed0b657b41b99dd47dcafcb2af2d135aaacbb030be541aff7bd8df4ea61d"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:99c8dd4c93a55554f66d388553e928f302d68f04f2d1dff6375a27d9c01e2b18"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:2af34b44c1a8b6ead1a74e63cfb3b3ee299d31e71780031d43ae807bec145f18"},
+ {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ca96c2b2fac81ec2c518ae45986f122a388167ea93e89f71e851a508d3c92575"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6a3c76525b018c85c0e3a632d94d72be02225f8ada56670f3f213cf0762be4"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:239e9b347af4da4cf69465bfa7b2901127f6057bc73416ba8187fb1eabafc6ea"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6db85ce2dc2f804a2edd1c1e9eaa46d282e1f0051752a83ca08ca8b87f87376"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e000f3590bcc6ff7c781ebbc1ac4eb919f97180f13cc4002c868822167bd9aed"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2374c217c862c1af933a430192d6a7c6723ed1d90303f1abbc26f709bbb9263"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ed0ff17d559ff2e7fa1be8ae086bc4fedcace5d7b12017f60164db8d9a8d806"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:43960234aabce018c8d796ec8b77c484a1c9cbb6a3bc036a0d307c8dade9874c"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:44420b638b3e303f32314bd4d309f15de1666629035acd1cdd3720c15917ac85"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:f6127fdb982cf135612504d34aa16b841f421e54751fcd54f80b9531decb2b3f"},
+ {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:69893a9ef1edea25226ed17e8e8981e32900c59703972e0780c0e927ce624f75"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c522d4ee6e921c040b7f932343d983b5a9521aab07685eedc49a6fc9001bd8c1"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32f4d60aa056640b0a3547521363329b6a5292df4ce4bc67a355d841303587dd"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e1b558ac78f82fa44a1c3b6b4fa1ad04ab41b4445353b6aebaff8cca4a9245c"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27644460a503aea1df0f2e39d683395d45def73ebd5d61efc43e4dc8ad0cd4e0"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:20b56bbf2ff00ea97701bf2ef48e79aed61790f01a0465a065787ca300057d74"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:fce5f24e792f8bb3dbe32e3329df53b54c0facd8181fa219ce0874ae4af7febd"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:71e100238833264cbd1408e1e8636c16574ede09b9840fabed58ac2f4754d4e3"},
+ {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:7cbfde149e00986270b3c3552c67fefa101282f4ec9c5bfd08e7fd1878596629"},
+ {file = "grimp-3.13.tar.gz", hash = "sha256:759bf6e05186e6473ee71af4119ec181855b2b324f4fcdd78dee9e5b59d87874"},
]
[package.dependencies]
@@ -1381,22 +1232,6 @@ chardet = ["chardet (>=2.2)"]
genshi = ["genshi"]
lxml = ["lxml ; platform_python_implementation == \"CPython\""]
-[[package]]
-name = "humanize"
-version = "4.13.0"
-description = "Python humanize utilities"
-optional = false
-python-versions = ">=3.9"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "humanize-4.13.0-py3-none-any.whl", hash = "sha256:b810820b31891813b1673e8fec7f1ed3312061eab2f26e3fa192c393d11ed25f"},
- {file = "humanize-4.13.0.tar.gz", hash = "sha256:78f79e68f76f0b04d711c4e55d32bebef5be387148862cb1ef83d2b58e7935a0"},
-]
-
-[package.extras]
-tests = ["freezegun", "pytest", "pytest-cov"]
-
[[package]]
name = "humanize"
version = "4.14.0"
@@ -1404,7 +1239,6 @@ description = "Python humanize utilities"
optional = false
python-versions = ">=3.10"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "humanize-4.14.0-py3-none-any.whl", hash = "sha256:d57701248d040ad456092820e6fde56c930f17749956ac47f4f655c0c547bfff"},
{file = "humanize-4.14.0.tar.gz", hash = "sha256:2fa092705ea640d605c435b1ca82b2866a1b601cdf96f076d70b79a855eba90d"},
@@ -1500,7 +1334,7 @@ description = "Read metadata from Python packages"
optional = false
python-versions = ">=3.9"
groups = ["main"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\" or python_version < \"3.10\""
+markers = "python_version < \"3.12\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\""
files = [
{file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"},
{file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"},
@@ -1530,9 +1364,6 @@ files = [
{file = "importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c"},
]
-[package.dependencies]
-zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
-
[package.extras]
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""]
cover = ["pytest-cov"]
@@ -1541,19 +1372,6 @@ enabler = ["pytest-enabler (>=2.2)"]
test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"]
type = ["pytest-mypy"]
-[[package]]
-name = "iniconfig"
-version = "2.1.0"
-description = "brain-dead simple config-ini parsing"
-optional = false
-python-versions = ">=3.8"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
- {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
-]
-
[[package]]
name = "iniconfig"
version = "2.3.0"
@@ -1561,7 +1379,6 @@ description = "brain-dead simple config-ini parsing"
optional = false
python-versions = ">=3.10"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"},
{file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"},
@@ -1579,9 +1396,6 @@ files = [
{file = "isort-6.1.0.tar.gz", hash = "sha256:9b8f96a14cfee0677e78e941ff62f03769a06d412aabb9e2a90487b3b7e8d481"},
]
-[package.dependencies]
-importlib-metadata = {version = ">=4.6.0", markers = "python_version < \"3.10\""}
-
[package.extras]
colors = ["colorama"]
plugins = ["setuptools"]
@@ -1902,27 +1716,6 @@ files = [
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
-[[package]]
-name = "mdit-py-plugins"
-version = "0.4.2"
-description = "Collection of plugins for markdown-it-py"
-optional = false
-python-versions = ">=3.8"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"},
- {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"},
-]
-
-[package.dependencies]
-markdown-it-py = ">=1.0.0,<4.0.0"
-
-[package.extras]
-code-style = ["pre-commit"]
-rtd = ["myst-parser", "sphinx-book-theme"]
-testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
-
[[package]]
name = "mdit-py-plugins"
version = "0.5.0"
@@ -1930,7 +1723,6 @@ description = "Collection of plugins for markdown-it-py"
optional = false
python-versions = ">=3.10"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f"},
{file = "mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6"},
@@ -2158,38 +1950,38 @@ icu = ["PyICU (>=1.0.0)"]
[[package]]
name = "nh3"
-version = "0.3.1"
+version = "0.3.2"
description = "Python binding to Ammonia HTML sanitizer Rust crate"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
- {file = "nh3-0.3.1-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:80dc7563a2a3b980e44b221f69848e3645bbf163ab53e3d1add4f47b26120355"},
- {file = "nh3-0.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f600ad86114df21efc4a3592faa6b1d099c0eebc7e018efebb1c133376097da"},
- {file = "nh3-0.3.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:669a908706cd28203d9cfce2f567575686e364a1bc6074d413d88d456066f743"},
- {file = "nh3-0.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a5721f59afa0ab3dcaa0d47e58af33a5fcd254882e1900ee4a8968692a40f79d"},
- {file = "nh3-0.3.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:2cb6d9e192fbe0d451c7cb1350dadedbeae286207dbf101a28210193d019752e"},
- {file = "nh3-0.3.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:474b176124c1b495ccfa1c20f61b7eb83ead5ecccb79ab29f602c148e8378489"},
- {file = "nh3-0.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4a2434668f4eef4eab17c128e565ce6bea42113ce10c40b928e42c578d401800"},
- {file = "nh3-0.3.1-cp313-cp313t-win32.whl", hash = "sha256:0f454ba4c6aabafcaae964ae6f0a96cecef970216a57335fabd229a265fbe007"},
- {file = "nh3-0.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:22b9e9c9eda497b02b7273b79f7d29e1f1170d2b741624c1b8c566aef28b1f48"},
- {file = "nh3-0.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:42e426f36e167ed29669b77ae3c4b9e185e4a1b130a86d7c3249194738a1d7b2"},
- {file = "nh3-0.3.1-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:1de5c1a35bed19a1b1286bab3c3abfe42e990a8a6c4ce9bb9ab4bde49107ea3b"},
- {file = "nh3-0.3.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaba26591867f697cffdbc539faddeb1d75a36273f5bfe957eb421d3f87d7da1"},
- {file = "nh3-0.3.1-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:489ca5ecd58555c2865701e65f614b17555179e71ecc76d483b6f3886b813a9b"},
- {file = "nh3-0.3.1-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5a25662b392b06f251da6004a1f8a828dca7f429cd94ac07d8a98ba94d644438"},
- {file = "nh3-0.3.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38b4872499ab15b17c5c6e9f091143d070d75ddad4a4d1ce388d043ca556629c"},
- {file = "nh3-0.3.1-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48425995d37880281b467f7cf2b3218c1f4750c55bcb1ff4f47f2320a2bb159c"},
- {file = "nh3-0.3.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94292dd1bd2a2e142fa5bb94c0ee1d84433a5d9034640710132da7e0376fca3a"},
- {file = "nh3-0.3.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dd6d1be301123a9af3263739726eeeb208197e5e78fc4f522408c50de77a5354"},
- {file = "nh3-0.3.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b74bbd047b361c0f21d827250c865ff0895684d9fcf85ea86131a78cfa0b835b"},
- {file = "nh3-0.3.1-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:b222c05ae5139320da6caa1c5aed36dd0ee36e39831541d9b56e048a63b4d701"},
- {file = "nh3-0.3.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:b0d6c834d3c07366ecbdcecc1f4804c5ce0a77fa52ee4653a2a26d2d909980ea"},
- {file = "nh3-0.3.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:670f18b09f75c86c3865f79543bf5acd4bbe2a5a4475672eef2399dd8cdb69d2"},
- {file = "nh3-0.3.1-cp38-abi3-win32.whl", hash = "sha256:d7431b2a39431017f19cd03144005b6c014201b3e73927c05eab6ca37bb1d98c"},
- {file = "nh3-0.3.1-cp38-abi3-win_amd64.whl", hash = "sha256:c0acef923a1c3a2df3ee5825ea79c149b6748c6449781c53ab6923dc75e87d26"},
- {file = "nh3-0.3.1-cp38-abi3-win_arm64.whl", hash = "sha256:a3e810a92fb192373204456cac2834694440af73d749565b4348e30235da7f0b"},
- {file = "nh3-0.3.1.tar.gz", hash = "sha256:6a854480058683d60bdc7f0456105092dae17bef1f300642856d74bd4201da93"},
+ {file = "nh3-0.3.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d18957a90806d943d141cc5e4a0fefa1d77cf0d7a156878bf9a66eed52c9cc7d"},
+ {file = "nh3-0.3.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45c953e57028c31d473d6b648552d9cab1efe20a42ad139d78e11d8f42a36130"},
+ {file = "nh3-0.3.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c9850041b77a9147d6bbd6dbbf13eeec7009eb60b44e83f07fcb2910075bf9b"},
+ {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:403c11563e50b915d0efdb622866d1d9e4506bce590ef7da57789bf71dd148b5"},
+ {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:0dca4365db62b2d71ff1620ee4f800c4729849906c5dd504ee1a7b2389558e31"},
+ {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0fe7ee035dd7b2290715baf29cb27167dddd2ff70ea7d052c958dbd80d323c99"},
+ {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a40202fd58e49129764f025bbaae77028e420f1d5b3c8e6f6fd3a6490d513868"},
+ {file = "nh3-0.3.2-cp314-cp314t-win32.whl", hash = "sha256:1f9ba555a797dbdcd844b89523f29cdc90973d8bd2e836ea6b962cf567cadd93"},
+ {file = "nh3-0.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:dce4248edc427c9b79261f3e6e2b3ecbdd9b88c267012168b4a7b3fc6fd41d13"},
+ {file = "nh3-0.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:019ecbd007536b67fdf76fab411b648fb64e2257ca3262ec80c3425c24028c80"},
+ {file = "nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7064ccf5ace75825bd7bf57859daaaf16ed28660c1c6b306b649a9eda4b54b1e"},
+ {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8745454cdd28bbbc90861b80a0111a195b0e3961b9fa2e672be89eb199fa5d8"},
+ {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72d67c25a84579f4a432c065e8b4274e53b7cf1df8f792cf846abfe2c3090866"},
+ {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:13398e676a14d6233f372c75f52d5ae74f98210172991f7a3142a736bd92b131"},
+ {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03d617e5c8aa7331bd2659c654e021caf9bba704b109e7b2b28b039a00949fe5"},
+ {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f55c4d2d5a207e74eefe4d828067bbb01300e06e2a7436142f915c5928de07"},
+ {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bb18403f02b655a1bbe4e3a4696c2ae1d6ae8f5991f7cacb684b1ae27e6c9f7"},
+ {file = "nh3-0.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d66f41672eb4060cf87c037f760bdbc6847852ca9ef8e9c5a5da18f090abf87"},
+ {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f97f8b25cb2681d25e2338148159447e4d689aafdccfcf19e61ff7db3905768a"},
+ {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:2ab70e8c6c7d2ce953d2a58102eefa90c2d0a5ed7aa40c7e29a487bc5e613131"},
+ {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:1710f3901cd6440ca92494ba2eb6dc260f829fa8d9196b659fa10de825610ce0"},
+ {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91e9b001101fb4500a2aafe3e7c92928d85242d38bf5ac0aba0b7480da0a4cd6"},
+ {file = "nh3-0.3.2-cp38-abi3-win32.whl", hash = "sha256:169db03df90da63286e0560ea0efa9b6f3b59844a9735514a1d47e6bb2c8c61b"},
+ {file = "nh3-0.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:562da3dca7a17f9077593214a9781a94b8d76de4f158f8c895e62f09573945fe"},
+ {file = "nh3-0.3.2-cp38-abi3-win_arm64.whl", hash = "sha256:cf5964d54edd405e68583114a7cba929468bcd7db5e676ae38ee954de1cfc104"},
+ {file = "nh3-0.3.2.tar.gz", hash = "sha256:f394759a06df8b685a4ebfb1874fb67a9cbfd58c64fc5ed587a663c0e63ec376"},
]
[[package]]
@@ -2222,15 +2014,9 @@ attrs = ">=24.1"
colorlog = ">=2.6.1,<7"
dependency-groups = ">=1.1"
humanize = ">=4"
-packaging = [
- {version = ">=20.9", markers = "python_version < \"3.10\""},
- {version = ">=21", markers = "python_version >= \"3.10\""},
-]
+packaging = {version = ">=21", markers = "python_version >= \"3.10\""}
tomli = {version = ">=1.1", markers = "python_version < \"3.11\""}
-virtualenv = [
- {version = ">=20.14.1", markers = "python_version < \"3.10\""},
- {version = ">=20.15", markers = "python_version >= \"3.10\""},
-]
+virtualenv = {version = ">=20.15", markers = "python_version >= \"3.10\""}
[package.extras]
pbs = ["pbs-installer[all] (>=2025.1.6)"]
@@ -2374,24 +2160,6 @@ pyparsing = "*"
docs = ["Sphinx (>=3.3.1)", "doc8 (>=0.8.1)", "sphinx-rtd-theme (>=0.5.0)"]
testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"]
-[[package]]
-name = "platformdirs"
-version = "4.4.0"
-description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
-optional = false
-python-versions = ">=3.9"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85"},
- {file = "platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf"},
-]
-
-[package.extras]
-docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"]
-type = ["mypy (>=1.14.1)"]
-
[[package]]
name = "platformdirs"
version = "4.5.0"
@@ -2399,7 +2167,6 @@ description = "A small Python package for determining appropriate platform-speci
optional = false
python-versions = ">=3.10"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3"},
{file = "platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312"},
@@ -2697,34 +2464,6 @@ files = [
[package.dependencies]
pygments = "*"
-[[package]]
-name = "pylint"
-version = "3.3.9"
-description = "python code static checker"
-optional = false
-python-versions = ">=3.9.0"
-groups = ["main"]
-markers = "python_version < \"3.10\""
-files = [
- {file = "pylint-3.3.9-py3-none-any.whl", hash = "sha256:01f9b0462c7730f94786c283f3e52a1fbdf0494bbe0971a78d7277ef46a751e7"},
- {file = "pylint-3.3.9.tar.gz", hash = "sha256:d312737d7b25ccf6b01cc4ac629b5dcd14a0fcf3ec392735ac70f137a9d5f83a"},
-]
-
-[package.dependencies]
-astroid = ">=3.3.8,<=3.4.0.dev0"
-colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
-dill = {version = ">=0.2", markers = "python_version < \"3.11\""}
-isort = ">=4.2.5,<5.13 || >5.13,<7"
-mccabe = ">=0.6,<0.8"
-platformdirs = ">=2.2"
-tomli = {version = ">=1.1", markers = "python_version < \"3.11\""}
-tomlkit = ">=0.10.1"
-typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""}
-
-[package.extras]
-spelling = ["pyenchant (>=3.2,<4.0)"]
-testutils = ["gitpython (>3)"]
-
[[package]]
name = "pylint"
version = "4.0.2"
@@ -2732,7 +2471,6 @@ description = "python code static checker"
optional = false
python-versions = ">=3.10.0"
groups = ["main"]
-markers = "python_version >= \"3.10\" and python_version < \"3.12\" or python_version >= \"3.12\""
files = [
{file = "pylint-4.0.2-py3-none-any.whl", hash = "sha256:9627ccd129893fb8ee8e8010261cb13485daca83e61a6f854a85528ee579502d"},
{file = "pylint-4.0.2.tar.gz", hash = "sha256:9c22dfa52781d3b79ce86ab2463940f874921a3e5707bcfc98dd0c019945014e"},
@@ -2788,14 +2526,14 @@ typing-extensions = "*"
[[package]]
name = "pysonar"
-version = "1.2.0.2419"
+version = "1.2.1.3951"
description = "Sonar Scanner for the Python Ecosystem"
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
- {file = "pysonar-1.2.0.2419-py3-none-any.whl", hash = "sha256:a9b8cf858b11709b68d82c4a9395dd8381378eab93497d44ed08aeeb54cb7447"},
- {file = "pysonar-1.2.0.2419.tar.gz", hash = "sha256:3b48f24bc520c930981fb19979bc39e02fee707bdc3bb39292f517e0a805ba94"},
+ {file = "pysonar-1.2.1.3951-py3-none-any.whl", hash = "sha256:d157f53faa3d589de176e98413568a69062c20f135adb8475af29566fbc334d9"},
+ {file = "pysonar-1.2.1.3951.tar.gz", hash = "sha256:13dde0358f3a8db00e0bfca1955314f2f8c8a532567bf8bd38d91d4d27afb5e4"},
]
[package.dependencies]
@@ -3118,7 +2856,7 @@ description = "C version of reader, parser and emitter for ruamel.yaml derived f
optional = false
python-versions = ">=3.9"
groups = ["main"]
-markers = "platform_python_implementation == \"CPython\" and python_version < \"3.14\""
+markers = "python_version < \"3.14\" and platform_python_implementation == \"CPython\""
files = [
{file = "ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f8b2acb0ffdd2ce8208accbec2dca4a06937d556fdcaefd6473ba1b5daa7e3c4"},
{file = "ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:aef953f3b8bd0b50bd52a2e52fb54a6a2171a1889d8dea4a5959d46c6624c451"},
@@ -3177,23 +2915,6 @@ files = [
{file = "ruamel.yaml.clib-0.2.14.tar.gz", hash = "sha256:803f5044b13602d58ea378576dd75aa759f52116a0232608e8fdada4da33752e"},
]
-[[package]]
-name = "secretstorage"
-version = "3.3.3"
-description = "Python bindings to FreeDesktop.org Secret Service API"
-optional = false
-python-versions = ">=3.6"
-groups = ["main"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\" and python_version < \"3.10\""
-files = [
- {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"},
- {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"},
-]
-
-[package.dependencies]
-cryptography = ">=2.0"
-jeepney = ">=0.6"
-
[[package]]
name = "secretstorage"
version = "3.4.0"
@@ -3201,7 +2922,7 @@ description = "Python bindings to FreeDesktop.org Secret Service API"
optional = false
python-versions = ">=3.10"
groups = ["main"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\" and python_version >= \"3.10\""
+markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\""
files = [
{file = "secretstorage-3.4.0-py3-none-any.whl", hash = "sha256:0e3b6265c2c63509fb7415717607e4b2c9ab767b7f344a57473b779ca13bd02e"},
{file = "secretstorage-3.4.0.tar.gz", hash = "sha256:c46e216d6815aff8a8a18706a2fbfd8d53fcbb0dce99301881687a1b0289ef7c"},
@@ -3237,14 +2958,14 @@ files = [
[[package]]
name = "shibuya"
-version = "2025.10.21"
+version = "2025.11.4"
description = "A clean, responsive, and customizable Sphinx documentation theme with light/dark mode."
optional = false
-python-versions = ">=3.9"
+python-versions = ">=3.10"
groups = ["main"]
files = [
- {file = "shibuya-2025.10.21-py3-none-any.whl", hash = "sha256:916e48c97ba5cc4b1949742beac19cf48923e12965a0d1689fda460d363f4d82"},
- {file = "shibuya-2025.10.21.tar.gz", hash = "sha256:a668f2a33c8b57d33d78bd6edf723eece5734d01f129f973333e7096ad6b3690"},
+ {file = "shibuya-2025.11.4-py3-none-any.whl", hash = "sha256:ef4d4b96b817f4d46b5969a5960d14fc163978478eb5a4f66fc2aa5b0fae3960"},
+ {file = "shibuya-2025.11.4.tar.gz", hash = "sha256:8cae36c339c6c2d4d93ad1bb7241c4cf2549f192a43364de3d5e721955ca3d20"},
]
[package.dependencies]
@@ -3317,7 +3038,6 @@ babel = ">=2.13"
colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""}
docutils = ">=0.20,<0.22"
imagesize = ">=1.3"
-importlib-metadata = {version = ">=6.0", markers = "python_version < \"3.10\""}
Jinja2 = ">=3.1"
packaging = ">=23.0"
Pygments = ">=2.17"
@@ -3745,7 +3465,7 @@ files = [
{file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"},
{file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"},
]
-markers = {dev = "python_version <= \"3.10\""}
+markers = {dev = "python_version == \"3.10\""}
[[package]]
name = "tomlkit"
@@ -3773,7 +3493,6 @@ files = [
[package.dependencies]
id = "*"
-importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
keyring = {version = ">=21.2.0", markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\""}
packaging = ">=24.0"
readme-renderer = ">=35.0"
@@ -3863,14 +3582,14 @@ zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "virtualenv"
-version = "20.35.3"
+version = "20.35.4"
description = "Virtual Python Environment builder"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
- {file = "virtualenv-20.35.3-py3-none-any.whl", hash = "sha256:63d106565078d8c8d0b206d48080f938a8b25361e19432d2c9db40d2899c810a"},
- {file = "virtualenv-20.35.3.tar.gz", hash = "sha256:4f1a845d131133bdff10590489610c98c168ff99dc75d6c96853801f7f67af44"},
+ {file = "virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b"},
+ {file = "virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c"},
]
[package.dependencies]
@@ -3926,7 +3645,7 @@ description = "Backport of pathlib-compatible object wrapper for zip files"
optional = false
python-versions = ">=3.9"
groups = ["main"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\" or python_version < \"3.10\""
+markers = "python_version < \"3.12\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\""
files = [
{file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"},
{file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"},
@@ -3942,5 +3661,5 @@ type = ["pytest-mypy"]
[metadata]
lock-version = "2.1"
-python-versions = ">=3.9.2,<4.0"
-content-hash = "175d41da3b09024182d116c311062d5bfb5d4a8ae8ccebeb6b297781877b487d"
+python-versions = ">=3.10,<4.0"
+content-hash = "5e55fcb6b30755d9c82a3b1bec66d6b2d01c5d32608c14bfbcd9cbd867c81842"
diff --git a/project-template/{{cookiecutter.repo_name}}/README.rst b/project-template/{{cookiecutter.repo_name}}/README.rst
index 9a4a15a63..fa9090948 100644
--- a/project-template/{{cookiecutter.repo_name}}/README.rst
+++ b/project-template/{{cookiecutter.repo_name}}/README.rst
@@ -25,7 +25,7 @@
🔌️ Prerequisites
-----------------
-- `Python `__ >= 3.9
+- `Python `__ >= 3.10
💾 Installation
---------------
@@ -37,4 +37,4 @@
📚 Documentation
----------------
-For further details, check out the latest `documentation `_.
\ No newline at end of file
+For further details, check out the latest `documentation `_.
diff --git a/project-template/{{cookiecutter.repo_name}}/noxconfig.py b/project-template/{{cookiecutter.repo_name}}/noxconfig.py
index b0b34db85..cb7c86200 100644
--- a/project-template/{{cookiecutter.repo_name}}/noxconfig.py
+++ b/project-template/{{cookiecutter.repo_name}}/noxconfig.py
@@ -17,8 +17,6 @@ class Config(BaseConfig):
/ "version.py"
)
path_filters: Iterable[str] = ()
- pyupgrade_args: Iterable[str] = (
- "--py{{cookiecutter.python_version_min | replace('.', '')}}-plus",)
plugins: Iterable[object] = ()
PROJECT_CONFIG = Config()
diff --git a/pyproject.toml b/pyproject.toml
index de4c6a1ca..ffcfc91b0 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "exasol-toolbox"
-version = "1.13.0"
-requires-python = ">=3.9.2,<4.0"
+version = "2.0.0"
+requires-python = ">=3.10,<4.0"
description = "Your one-stop solution for managing all standard tasks and core workflows of your Python project."
authors = [
{ name = "Nicola Coretti", email = "nicola.coretti@exasol.com" },
diff --git a/test/conftest.py b/test/conftest.py
index f670b5263..d4ca88699 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -25,7 +25,7 @@ class SampleVulnerability:
)
@property
- def pip_audit_vuln_entry(self) -> dict[str, Union[str, list[str]]]:
+ def pip_audit_vuln_entry(self) -> dict[str, str | list[str]]:
return {
"id": self.vulnerability_id,
"fix_versions": [self.fix_version],
@@ -60,7 +60,7 @@ def nox_dependencies_audit(self) -> str:
return json.dumps([self.security_issue_entry], indent=2) + "\n"
@property
- def security_issue_entry(self) -> dict[str, Union[str, list[str]]]:
+ def security_issue_entry(self) -> dict[str, str | list[str]]:
return {
"name": self.package_name,
"version": self.version,
diff --git a/test/unit/config_test.py b/test/unit/config_test.py
index 161c68a25..f65ff03a9 100644
--- a/test/unit/config_test.py
+++ b/test/unit/config_test.py
@@ -57,6 +57,12 @@ def test_expansion_validation_fails_for_invalid_version():
BaseConfigExpansion(python_versions=("1.f.0",))
-def test_min_py_version():
- conf = BaseConfig(python_versions=("5.5.5", "1.1.1", "9.9.9"))
- assert conf.min_py_version == "1.1.1"
+def test_minimum_python_version():
+ conf = BaseConfig(python_versions=("5.5.5", "1.10", "9.9.9"))
+ assert conf.minimum_python_version == "1.10"
+
+
+@pytest.mark.parametrize("minimum_python_version", ["3.10", "3.10.5"])
+def test_pyupgrade_argument(minimum_python_version):
+ conf = BaseConfig(python_versions=("3.11", minimum_python_version, "3.12"))
+ assert conf.pyupgrade_argument == ("--py310-plus",)
diff --git a/test/unit/nox/_artifacts_test.py b/test/unit/nox/_artifacts_test.py
index bb857ae21..dbc5db623 100644
--- a/test/unit/nox/_artifacts_test.py
+++ b/test/unit/nox/_artifacts_test.py
@@ -51,6 +51,7 @@ def mock_check_artifacts_session(
def mock_session(path: Path, python_version: str, *files: str):
with patch("exasol.toolbox.nox._artifacts.PROJECT_CONFIG") as config:
config.python_versions = [python_version]
+ config.minimum_python_version = python_version
for rel in files:
file = path / rel
file.parent.mkdir(parents=True, exist_ok=True)
diff --git a/test/unit/nox/_shared_test.py b/test/unit/nox/_shared_test.py
index e56a2e2b9..374e40afe 100644
--- a/test/unit/nox/_shared_test.py
+++ b/test/unit/nox/_shared_test.py
@@ -1,8 +1,14 @@
+from collections.abc import Iterable
+from dataclasses import dataclass
+from pathlib import Path
+
import pytest
import noxconfig
+from exasol.toolbox.config import BaseConfig
from exasol.toolbox.nox._shared import (
DEFAULT_PATH_FILTERS,
+ check_for_config_attribute,
python_files,
)
@@ -52,3 +58,35 @@ def test_python_files(
actual = python_files(tmp_directory)
assert len(actual) == 1
assert "toolbox-dummy" in actual[0]
+
+
+@dataclass(frozen=True)
+class PreviousConfig:
+ root: Path = Path(__file__).parent
+ doc: Path = Path(__file__).parent / "doc"
+ source: Path = Path("exasol/toolbox")
+ version_file: Path = Path(__file__).parent / "exasol" / "toolbox" / "version.py"
+ path_filters: Iterable[str] = ()
+ pyupgrade_args: Iterable[str] = ("--py310-plus",)
+ plugins = []
+
+
+# attributes + properties
+MIGRATED_VALUES = [
+ *BaseConfig.model_fields.keys(),
+ *BaseConfig.model_computed_fields.keys(),
+]
+
+
+class TestCheckForConfigAttribute:
+
+ @pytest.mark.parametrize("attribute", MIGRATED_VALUES)
+ def test_old_implementation_raises_error(self, attribute):
+ with pytest.raises(
+ AttributeError, match="from `exasol.toolbox.config.BaseConfig`"
+ ):
+ check_for_config_attribute(PreviousConfig(), attribute=attribute)
+
+ @pytest.mark.parametrize("attribute", MIGRATED_VALUES)
+ def test_current_implementation_passes(self, attribute):
+ check_for_config_attribute(BaseConfig(), attribute=attribute)
diff --git a/test/unit/release_test.py b/test/unit/release_test.py
index 2128f271c..85840c049 100644
--- a/test/unit/release_test.py
+++ b/test/unit/release_test.py
@@ -8,6 +8,7 @@
import pytest
import noxconfig
+from exasol.toolbox.config import BaseConfig
from exasol.toolbox.nox._release import (
ReleaseError,
_trigger_release,
@@ -65,14 +66,14 @@ def simulate_pass(args, **kwargs):
assert result == mock_from_poetry.return_value
def test_not_creates_major_version_tag(self, mock_from_poetry):
- class DummyConfig:
+ class DummyConfig(BaseConfig):
pass
def simulate_pass(args, **kwargs):
return self._get_subprocess_run_mock(args)
with patch("subprocess.run", side_effect=simulate_pass) as subprocess_mock:
- result = _trigger_release(DummyConfig)
+ result = _trigger_release(DummyConfig())
commands = [c.args[0] for c in subprocess_mock.mock_calls]
assert commands == [
("git", "remote", "show", "origin"),
diff --git a/test/unit/util/dependencies/licenses_test.py b/test/unit/util/dependencies/licenses_test.py
index a20222fab..5a02dacc3 100644
--- a/test/unit/util/dependencies/licenses_test.py
+++ b/test/unit/util/dependencies/licenses_test.py
@@ -167,8 +167,8 @@ def test_format_group_table(package_license_report, dependencies, main_group):
)
def test_format_table_row(
package_license_report,
- package_link: Optional[str],
- license_link: Optional[str],
+ package_link: str | None,
+ license_link: str | None,
expected,
):
_license = PackageLicense(