This is an automated email from the ASF dual-hosted git repository.
hgruszecki pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/master by this push:
new 28e7c04c9 ci: add Codecov coverage for Python SDK (#2790)
28e7c04c9 is described below
commit 28e7c04c96dee9a8a3b7a3975797a9156b6a8ac5
Author: Atharva Lade <[email protected]>
AuthorDate: Tue Feb 24 04:30:41 2026 -0700
ci: add Codecov coverage for Python SDK (#2790)
Co-authored-by: Hubert Gruszecki <[email protected]>
---
.../actions/python-maturin/pre-merge/action.yml | 3 +
.github/workflows/_test.yml | 12 ++
.github/workflows/post-merge.yml | 61 +++++++++
.github/workflows/pre-merge.yml | 2 +
codecov.yml | 4 +-
foreign/python/pyproject.toml | 2 +
foreign/python/uv.lock | 136 +++++++++++++++++++++
7 files changed, 219 insertions(+), 1 deletion(-)
diff --git a/.github/actions/python-maturin/pre-merge/action.yml
b/.github/actions/python-maturin/pre-merge/action.yml
index 65e37e6c8..062ef8a6a 100644
--- a/.github/actions/python-maturin/pre-merge/action.yml
+++ b/.github/actions/python-maturin/pre-merge/action.yml
@@ -123,6 +123,7 @@ runs:
IGGY_SERVER_HOST=127.0.0.1 \
IGGY_SERVER_TCP_PORT=8090 \
uv run pytest tests/ -v \
+ --cov --cov-report=xml:../../reports/python-coverage.xml \
--junitxml=../../reports/python-junit.xml \
--tb=short \
--capture=no || TEST_EXIT_CODE=$?
@@ -141,6 +142,7 @@ runs:
# Run unit tests only (exclude integration tests)
uv run pytest tests/ -v \
-m "not integration" \
+ --cov --cov-report=xml:../../reports/python-coverage.xml \
--junitxml=../../reports/python-junit.xml \
--tb=short || TEST_EXIT_CODE=$?
@@ -162,6 +164,7 @@ runs:
name: python-test-results-${{ github.run_id }}-${{ github.run_attempt
}}
path: |
reports/python-junit.xml
+ reports/python-coverage.xml
foreign/python/dist/*.whl
retention-days: 7
if-no-files-found: ignore
diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml
index 66fe9d982..a749d83a1 100644
--- a/.github/workflows/_test.yml
+++ b/.github/workflows/_test.yml
@@ -83,6 +83,18 @@ jobs:
with:
task: ${{ inputs.task }}
+ - name: Upload Python coverage to Codecov
+ if: inputs.component == 'sdk-python' && inputs.task == 'test'
+ uses: codecov/codecov-action@v5
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: reports/python-coverage.xml
+ disable_search: true
+ flags: python
+ fail_ci_if_error: false
+ verbose: true
+ override_pr: ${{ github.event.pull_request.number }}
+
# Node SDK
- name: Run Node SDK task
if: inputs.component == 'sdk-node'
diff --git a/.github/workflows/post-merge.yml b/.github/workflows/post-merge.yml
index 14105cffe..a9159c47d 100644
--- a/.github/workflows/post-merge.yml
+++ b/.github/workflows/post-merge.yml
@@ -343,6 +343,67 @@ jobs:
flags: csharp
fail_ci_if_error: false
+ python-coverage:
+ name: Python coverage baseline
+ runs-on: ubuntu-latest
+ timeout-minutes: 30
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: "3.10"
+
+ - name: Setup Rust with cache
+ uses: ./.github/actions/utils/setup-rust-with-cache
+ with:
+ save-cache: "false"
+
+ - name: Install uv
+ uses: astral-sh/setup-uv@v7
+
+ - name: Install dependencies
+ run: |
+ cd foreign/python
+ uv sync --frozen --extra dev --extra testing --extra testing-docker
+
+ - name: Build Python wheel
+ run: |
+ cd foreign/python
+ uv run maturin build -o dist
+ uv pip install dist/*.whl --force-reinstall
+
+ - name: Start Iggy server
+ id: iggy
+ uses: ./.github/actions/utils/server-start
+
+ - name: Run tests with coverage
+ run: |
+ cd foreign/python
+ IGGY_SERVER_HOST=127.0.0.1 \
+ IGGY_SERVER_TCP_PORT=8090 \
+ uv run pytest tests/ -v \
+ --cov --cov-report=xml:../../reports/python-coverage.xml \
+ --tb=short \
+ --capture=no
+
+ - name: Stop Iggy server
+ if: always()
+ uses: ./.github/actions/utils/server-stop
+ with:
+ pid-file: ${{ steps.iggy.outputs.pid_file }}
+ log-file: ${{ steps.iggy.outputs.log_file }}
+
+ - name: Upload to Codecov
+ uses: codecov/codecov-action@v5
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: reports/python-coverage.xml
+ disable_search: true
+ flags: python
+ fail_ci_if_error: false
+
create-prerelease:
name: Create edge pre-release
runs-on: ubuntu-latest
diff --git a/.github/workflows/pre-merge.yml b/.github/workflows/pre-merge.yml
index c947c80aa..c2edf8246 100644
--- a/.github/workflows/pre-merge.yml
+++ b/.github/workflows/pre-merge.yml
@@ -71,6 +71,8 @@ jobs:
with:
component: ${{ matrix.component }}
task: ${{ matrix.task }}
+ secrets:
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# Node SDK
test-node:
diff --git a/codecov.yml b/codecov.yml
index 156b037b0..c0cc880a2 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -56,6 +56,9 @@ flag_management:
- name: csharp
paths:
- foreign/csharp/
+ - name: python
+ paths:
+ - foreign/python/
comment:
layout: "header, diff, flags, files"
@@ -73,7 +76,6 @@ ignore:
- "examples/**"
- "foreign/go/**"
- "foreign/node/**"
- - "foreign/python/**"
- "web/**"
- "**/tests/**"
- "**/*Test.java"
diff --git a/foreign/python/pyproject.toml b/foreign/python/pyproject.toml
index 0a318daa7..1ee1542fa 100644
--- a/foreign/python/pyproject.toml
+++ b/foreign/python/pyproject.toml
@@ -76,6 +76,7 @@ include = [
testing = [
"pytest>=7.0,<9.0",
"pytest-asyncio>=0.21.0,<1.0",
+ "pytest-cov>=4.0,<7.0",
"pytest-xdist>=3.0,<4.0",
"pytest-timeout>=2.0,<3.0",
]
@@ -96,6 +97,7 @@ dev = [
all = [
"pytest>=7.0,<9.0",
"pytest-asyncio>=0.21.0,<1.0",
+ "pytest-cov>=4.0,<7.0",
"pytest-xdist>=3.0,<4.0",
"pytest-timeout>=2.0,<3.0",
"loguru>=0.7.0,<1.0",
diff --git a/foreign/python/uv.lock b/foreign/python/uv.lock
index 26e820630..173503499 100644
--- a/foreign/python/uv.lock
+++ b/foreign/python/uv.lock
@@ -16,6 +16,7 @@ all = [
{ name = "mypy" },
{ name = "pytest" },
{ name = "pytest-asyncio" },
+ { name = "pytest-cov" },
{ name = "pytest-timeout" },
{ name = "pytest-xdist" },
{ name = "ruff" },
@@ -31,6 +32,7 @@ dev = [
testing = [
{ name = "pytest" },
{ name = "pytest-asyncio" },
+ { name = "pytest-cov" },
{ name = "pytest-timeout" },
{ name = "pytest-xdist" },
]
@@ -53,6 +55,8 @@ requires-dist = [
{ name = "pytest", marker = "extra == 'testing'", specifier = ">=7.0,<9.0"
},
{ name = "pytest-asyncio", marker = "extra == 'all'", specifier =
">=0.21.0,<1.0" },
{ name = "pytest-asyncio", marker = "extra == 'testing'", specifier =
">=0.21.0,<1.0" },
+ { name = "pytest-cov", marker = "extra == 'all'", specifier = ">=4.0,<7.0"
},
+ { name = "pytest-cov", marker = "extra == 'testing'", specifier =
">=4.0,<7.0" },
{ name = "pytest-timeout", marker = "extra == 'all'", specifier =
">=2.0,<3.0" },
{ name = "pytest-timeout", marker = "extra == 'testing'", specifier =
">=2.0,<3.0" },
{ name = "pytest-xdist", marker = "extra == 'all'", specifier =
">=3.0,<4.0" },
@@ -217,6 +221,124 @@ wheels = [
{ url =
"https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl",
hash =
"sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size
= 25335, upload-time = "2022-10-25T02:36:20.889Z" },
]
+[[package]]
+name = "coverage"
+version = "7.13.4"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url =
"https://files.pythonhosted.org/packages/24/56/95b7e30fa389756cb56630faa728da46a27b8c6eb46f9d557c68fff12b65/coverage-7.13.4.tar.gz",
hash =
"sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91", size
= 827239, upload-time = "2026-02-09T12:59:03.86Z" }
+wheels = [
+ { url =
"https://files.pythonhosted.org/packages/44/d4/7827d9ffa34d5d4d752eec907022aa417120936282fc488306f5da08c292/coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl",
hash =
"sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415", size
= 219152, upload-time = "2026-02-09T12:56:11.974Z" },
+ { url =
"https://files.pythonhosted.org/packages/35/b0/d69df26607c64043292644dbb9dc54b0856fabaa2cbb1eeee3331cc9e280/coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl",
hash =
"sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b", size
= 219667, upload-time = "2026-02-09T12:56:13.33Z" },
+ { url =
"https://files.pythonhosted.org/packages/82/a4/c1523f7c9e47b2271dbf8c2a097e7a1f89ef0d66f5840bb59b7e8814157b/coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
hash =
"sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a", size
= 246425, upload-time = "2026-02-09T12:56:14.552Z" },
+ { url =
"https://files.pythonhosted.org/packages/f8/02/aa7ec01d1a5023c4b680ab7257f9bfde9defe8fdddfe40be096ac19e8177/coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f", size
= 248229, upload-time = "2026-02-09T12:56:16.31Z" },
+ { url =
"https://files.pythonhosted.org/packages/35/98/85aba0aed5126d896162087ef3f0e789a225697245256fc6181b95f47207/coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012", size
= 250106, upload-time = "2026-02-09T12:56:18.024Z" },
+ { url =
"https://files.pythonhosted.org/packages/96/72/1db59bd67494bc162e3e4cd5fbc7edba2c7026b22f7c8ef1496d58c2b94c/coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
hash =
"sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def", size
= 252021, upload-time = "2026-02-09T12:56:19.272Z" },
+ { url =
"https://files.pythonhosted.org/packages/9d/97/72899c59c7066961de6e3daa142d459d47d104956db43e057e034f015c8a/coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
hash =
"sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256", size
= 247114, upload-time = "2026-02-09T12:56:21.051Z" },
+ { url =
"https://files.pythonhosted.org/packages/39/1f/f1885573b5970235e908da4389176936c8933e86cb316b9620aab1585fa2/coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl",
hash =
"sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda", size
= 248143, upload-time = "2026-02-09T12:56:22.585Z" },
+ { url =
"https://files.pythonhosted.org/packages/a8/cf/e80390c5b7480b722fa3e994f8202807799b85bc562aa4f1dde209fbb7be/coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl",
hash =
"sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92", size
= 246152, upload-time = "2026-02-09T12:56:23.748Z" },
+ { url =
"https://files.pythonhosted.org/packages/44/bf/f89a8350d85572f95412debb0fb9bb4795b1d5b5232bd652923c759e787b/coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl",
hash =
"sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c", size
= 249959, upload-time = "2026-02-09T12:56:25.209Z" },
+ { url =
"https://files.pythonhosted.org/packages/f7/6e/612a02aece8178c818df273e8d1642190c4875402ca2ba74514394b27aba/coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl",
hash =
"sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58", size
= 246416, upload-time = "2026-02-09T12:56:26.475Z" },
+ { url =
"https://files.pythonhosted.org/packages/cb/98/b5afc39af67c2fa6786b03c3a7091fc300947387ce8914b096db8a73d67a/coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl",
hash =
"sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9", size
= 247025, upload-time = "2026-02-09T12:56:27.727Z" },
+ { url =
"https://files.pythonhosted.org/packages/51/30/2bba8ef0682d5bd210c38fe497e12a06c9f8d663f7025e9f5c2c31ce847d/coverage-7.13.4-cp310-cp310-win32.whl",
hash =
"sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf", size
= 221758, upload-time = "2026-02-09T12:56:29.051Z" },
+ { url =
"https://files.pythonhosted.org/packages/78/13/331f94934cf6c092b8ea59ff868eb587bc8fe0893f02c55bc6c0183a192e/coverage-7.13.4-cp310-cp310-win_amd64.whl",
hash =
"sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95", size
= 222693, upload-time = "2026-02-09T12:56:30.366Z" },
+ { url =
"https://files.pythonhosted.org/packages/b4/ad/b59e5b451cf7172b8d1043dc0fa718f23aab379bc1521ee13d4bd9bfa960/coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl",
hash =
"sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053", size
= 219278, upload-time = "2026-02-09T12:56:31.673Z" },
+ { url =
"https://files.pythonhosted.org/packages/f1/17/0cb7ca3de72e5f4ef2ec2fa0089beafbcaaaead1844e8b8a63d35173d77d/coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl",
hash =
"sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11", size
= 219783, upload-time = "2026-02-09T12:56:33.104Z" },
+ { url =
"https://files.pythonhosted.org/packages/ab/63/325d8e5b11e0eaf6d0f6a44fad444ae58820929a9b0de943fa377fe73e85/coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
hash =
"sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa", size
= 250200, upload-time = "2026-02-09T12:56:34.474Z" },
+ { url =
"https://files.pythonhosted.org/packages/76/53/c16972708cbb79f2942922571a687c52bd109a7bd51175aeb7558dff2236/coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7", size
= 252114, upload-time = "2026-02-09T12:56:35.749Z" },
+ { url =
"https://files.pythonhosted.org/packages/eb/c2/7ab36d8b8cc412bec9ea2d07c83c48930eb4ba649634ba00cb7e4e0f9017/coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00", size
= 254220, upload-time = "2026-02-09T12:56:37.796Z" },
+ { url =
"https://files.pythonhosted.org/packages/d6/4d/cf52c9a3322c89a0e6febdfbc83bb45c0ed3c64ad14081b9503adee702e7/coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
hash =
"sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef", size
= 256164, upload-time = "2026-02-09T12:56:39.016Z" },
+ { url =
"https://files.pythonhosted.org/packages/78/e9/eb1dd17bd6de8289df3580e967e78294f352a5df8a57ff4671ee5fc3dcd0/coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
hash =
"sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903", size
= 250325, upload-time = "2026-02-09T12:56:40.668Z" },
+ { url =
"https://files.pythonhosted.org/packages/71/07/8c1542aa873728f72267c07278c5cc0ec91356daf974df21335ccdb46368/coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl",
hash =
"sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f", size
= 251913, upload-time = "2026-02-09T12:56:41.97Z" },
+ { url =
"https://files.pythonhosted.org/packages/74/d7/c62e2c5e4483a748e27868e4c32ad3daa9bdddbba58e1bc7a15e252baa74/coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl",
hash =
"sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299", size
= 249974, upload-time = "2026-02-09T12:56:43.323Z" },
+ { url =
"https://files.pythonhosted.org/packages/98/9f/4c5c015a6e98ced54efd0f5cf8d31b88e5504ecb6857585fc0161bb1e600/coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl",
hash =
"sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505", size
= 253741, upload-time = "2026-02-09T12:56:45.155Z" },
+ { url =
"https://files.pythonhosted.org/packages/bd/59/0f4eef89b9f0fcd9633b5d350016f54126ab49426a70ff4c4e87446cabdc/coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl",
hash =
"sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6", size
= 249695, upload-time = "2026-02-09T12:56:46.636Z" },
+ { url =
"https://files.pythonhosted.org/packages/b5/2c/b7476f938deb07166f3eb281a385c262675d688ff4659ad56c6c6b8e2e70/coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl",
hash =
"sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9", size
= 250599, upload-time = "2026-02-09T12:56:48.13Z" },
+ { url =
"https://files.pythonhosted.org/packages/b8/34/c3420709d9846ee3785b9f2831b4d94f276f38884032dca1457fa83f7476/coverage-7.13.4-cp311-cp311-win32.whl",
hash =
"sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9", size
= 221780, upload-time = "2026-02-09T12:56:50.479Z" },
+ { url =
"https://files.pythonhosted.org/packages/61/08/3d9c8613079d2b11c185b865de9a4c1a68850cfda2b357fae365cf609f29/coverage-7.13.4-cp311-cp311-win_amd64.whl",
hash =
"sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f", size
= 222715, upload-time = "2026-02-09T12:56:51.815Z" },
+ { url =
"https://files.pythonhosted.org/packages/18/1a/54c3c80b2f056164cc0a6cdcb040733760c7c4be9d780fe655f356f433e4/coverage-7.13.4-cp311-cp311-win_arm64.whl",
hash =
"sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f", size
= 221385, upload-time = "2026-02-09T12:56:53.194Z" },
+ { url =
"https://files.pythonhosted.org/packages/d1/81/4ce2fdd909c5a0ed1f6dedb88aa57ab79b6d1fbd9b588c1ac7ef45659566/coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl",
hash =
"sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459", size
= 219449, upload-time = "2026-02-09T12:56:54.889Z" },
+ { url =
"https://files.pythonhosted.org/packages/5d/96/5238b1efc5922ddbdc9b0db9243152c09777804fb7c02ad1741eb18a11c0/coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl",
hash =
"sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3", size
= 219810, upload-time = "2026-02-09T12:56:56.33Z" },
+ { url =
"https://files.pythonhosted.org/packages/78/72/2f372b726d433c9c35e56377cf1d513b4c16fe51841060d826b95caacec1/coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
hash =
"sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634", size
= 251308, upload-time = "2026-02-09T12:56:57.858Z" },
+ { url =
"https://files.pythonhosted.org/packages/5d/a0/2ea570925524ef4e00bb6c82649f5682a77fac5ab910a65c9284de422600/coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3", size
= 254052, upload-time = "2026-02-09T12:56:59.754Z" },
+ { url =
"https://files.pythonhosted.org/packages/e8/ac/45dc2e19a1939098d783c846e130b8f862fbb50d09e0af663988f2f21973/coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa", size
= 255165, upload-time = "2026-02-09T12:57:01.287Z" },
+ { url =
"https://files.pythonhosted.org/packages/2d/4d/26d236ff35abc3b5e63540d3386e4c3b192168c1d96da5cb2f43c640970f/coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
hash =
"sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3", size
= 257432, upload-time = "2026-02-09T12:57:02.637Z" },
+ { url =
"https://files.pythonhosted.org/packages/ec/55/14a966c757d1348b2e19caf699415a2a4c4f7feaa4bbc6326a51f5c7dd1b/coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
hash =
"sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a", size
= 251716, upload-time = "2026-02-09T12:57:04.056Z" },
+ { url =
"https://files.pythonhosted.org/packages/77/33/50116647905837c66d28b2af1321b845d5f5d19be9655cb84d4a0ea806b4/coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl",
hash =
"sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7", size
= 253089, upload-time = "2026-02-09T12:57:05.503Z" },
+ { url =
"https://files.pythonhosted.org/packages/c2/b4/8efb11a46e3665d92635a56e4f2d4529de6d33f2cb38afd47d779d15fc99/coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl",
hash =
"sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc", size
= 251232, upload-time = "2026-02-09T12:57:06.879Z" },
+ { url =
"https://files.pythonhosted.org/packages/51/24/8cd73dd399b812cc76bb0ac260e671c4163093441847ffe058ac9fda1e32/coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl",
hash =
"sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47", size
= 255299, upload-time = "2026-02-09T12:57:08.245Z" },
+ { url =
"https://files.pythonhosted.org/packages/03/94/0a4b12f1d0e029ce1ccc1c800944a9984cbe7d678e470bb6d3c6bc38a0da/coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl",
hash =
"sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985", size
= 250796, upload-time = "2026-02-09T12:57:10.142Z" },
+ { url =
"https://files.pythonhosted.org/packages/73/44/6002fbf88f6698ca034360ce474c406be6d5a985b3fdb3401128031eef6b/coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl",
hash =
"sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0", size
= 252673, upload-time = "2026-02-09T12:57:12.197Z" },
+ { url =
"https://files.pythonhosted.org/packages/de/c6/a0279f7c00e786be75a749a5674e6fa267bcbd8209cd10c9a450c655dfa7/coverage-7.13.4-cp312-cp312-win32.whl",
hash =
"sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246", size
= 221990, upload-time = "2026-02-09T12:57:14.085Z" },
+ { url =
"https://files.pythonhosted.org/packages/77/4e/c0a25a425fcf5557d9abd18419c95b63922e897bc86c1f327f155ef234a9/coverage-7.13.4-cp312-cp312-win_amd64.whl",
hash =
"sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126", size
= 222800, upload-time = "2026-02-09T12:57:15.944Z" },
+ { url =
"https://files.pythonhosted.org/packages/47/ac/92da44ad9a6f4e3a7debd178949d6f3769bedca33830ce9b1dcdab589a37/coverage-7.13.4-cp312-cp312-win_arm64.whl",
hash =
"sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d", size
= 221415, upload-time = "2026-02-09T12:57:17.497Z" },
+ { url =
"https://files.pythonhosted.org/packages/db/23/aad45061a31677d68e47499197a131eea55da4875d16c1f42021ab963503/coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl",
hash =
"sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9", size
= 219474, upload-time = "2026-02-09T12:57:19.332Z" },
+ { url =
"https://files.pythonhosted.org/packages/a5/70/9b8b67a0945f3dfec1fd896c5cefb7c19d5a3a6d74630b99a895170999ae/coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl",
hash =
"sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac", size
= 219844, upload-time = "2026-02-09T12:57:20.66Z" },
+ { url =
"https://files.pythonhosted.org/packages/97/fd/7e859f8fab324cef6c4ad7cff156ca7c489fef9179d5749b0c8d321281c2/coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
hash =
"sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea", size
= 250832, upload-time = "2026-02-09T12:57:22.007Z" },
+ { url =
"https://files.pythonhosted.org/packages/e4/dc/b2442d10020c2f52617828862d8b6ee337859cd8f3a1f13d607dddda9cf7/coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b", size
= 253434, upload-time = "2026-02-09T12:57:23.339Z" },
+ { url =
"https://files.pythonhosted.org/packages/5a/88/6728a7ad17428b18d836540630487231f5470fb82454871149502f5e5aa2/coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525", size
= 254676, upload-time = "2026-02-09T12:57:24.774Z" },
+ { url =
"https://files.pythonhosted.org/packages/7c/bc/21244b1b8cedf0dff0a2b53b208015fe798d5f2a8d5348dbfece04224fff/coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
hash =
"sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242", size
= 256807, upload-time = "2026-02-09T12:57:26.125Z" },
+ { url =
"https://files.pythonhosted.org/packages/97/a0/ddba7ed3251cff51006737a727d84e05b61517d1784a9988a846ba508877/coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
hash =
"sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148", size
= 251058, upload-time = "2026-02-09T12:57:27.614Z" },
+ { url =
"https://files.pythonhosted.org/packages/9b/55/e289addf7ff54d3a540526f33751951bf0878f3809b47f6dfb3def69c6f7/coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl",
hash =
"sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a", size
= 252805, upload-time = "2026-02-09T12:57:29.066Z" },
+ { url =
"https://files.pythonhosted.org/packages/13/4e/cc276b1fa4a59be56d96f1dabddbdc30f4ba22e3b1cd42504c37b3313255/coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl",
hash =
"sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23", size
= 250766, upload-time = "2026-02-09T12:57:30.522Z" },
+ { url =
"https://files.pythonhosted.org/packages/94/44/1093b8f93018f8b41a8cf29636c9292502f05e4a113d4d107d14a3acd044/coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl",
hash =
"sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80", size
= 254923, upload-time = "2026-02-09T12:57:31.946Z" },
+ { url =
"https://files.pythonhosted.org/packages/8b/55/ea2796da2d42257f37dbea1aab239ba9263b31bd91d5527cdd6db5efe174/coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl",
hash =
"sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea", size
= 250591, upload-time = "2026-02-09T12:57:33.842Z" },
+ { url =
"https://files.pythonhosted.org/packages/d4/fa/7c4bb72aacf8af5020675aa633e59c1fbe296d22aed191b6a5b711eb2bc7/coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl",
hash =
"sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a", size
= 252364, upload-time = "2026-02-09T12:57:35.743Z" },
+ { url =
"https://files.pythonhosted.org/packages/5c/38/a8d2ec0146479c20bbaa7181b5b455a0c41101eed57f10dd19a78ab44c80/coverage-7.13.4-cp313-cp313-win32.whl",
hash =
"sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d", size
= 222010, upload-time = "2026-02-09T12:57:37.25Z" },
+ { url =
"https://files.pythonhosted.org/packages/e2/0c/dbfafbe90a185943dcfbc766fe0e1909f658811492d79b741523a414a6cc/coverage-7.13.4-cp313-cp313-win_amd64.whl",
hash =
"sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd", size
= 222818, upload-time = "2026-02-09T12:57:38.734Z" },
+ { url =
"https://files.pythonhosted.org/packages/04/d1/934918a138c932c90d78301f45f677fb05c39a3112b96fd2c8e60503cdc7/coverage-7.13.4-cp313-cp313-win_arm64.whl",
hash =
"sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af", size
= 221438, upload-time = "2026-02-09T12:57:40.223Z" },
+ { url =
"https://files.pythonhosted.org/packages/52/57/ee93ced533bcb3e6df961c0c6e42da2fc6addae53fb95b94a89b1e33ebd7/coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl",
hash =
"sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d", size
= 220165, upload-time = "2026-02-09T12:57:41.639Z" },
+ { url =
"https://files.pythonhosted.org/packages/c5/e0/969fc285a6fbdda49d91af278488d904dcd7651b2693872f0ff94e40e84a/coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl",
hash =
"sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12", size
= 220516, upload-time = "2026-02-09T12:57:44.215Z" },
+ { url =
"https://files.pythonhosted.org/packages/b1/b8/9531944e16267e2735a30a9641ff49671f07e8138ecf1ca13db9fd2560c7/coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
hash =
"sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b", size
= 261804, upload-time = "2026-02-09T12:57:45.989Z" },
+ { url =
"https://files.pythonhosted.org/packages/8a/f3/e63df6d500314a2a60390d1989240d5f27318a7a68fa30ad3806e2a9323e/coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9", size
= 263885, upload-time = "2026-02-09T12:57:47.42Z" },
+ { url =
"https://files.pythonhosted.org/packages/f3/67/7654810de580e14b37670b60a09c599fa348e48312db5b216d730857ffe6/coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092", size
= 266308, upload-time = "2026-02-09T12:57:49.345Z" },
+ { url =
"https://files.pythonhosted.org/packages/37/6f/39d41eca0eab3cc82115953ad41c4e77935286c930e8fad15eaed1389d83/coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
hash =
"sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9", size
= 267452, upload-time = "2026-02-09T12:57:50.811Z" },
+ { url =
"https://files.pythonhosted.org/packages/50/6d/39c0fbb8fc5cd4d2090811e553c2108cf5112e882f82505ee7495349a6bf/coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
hash =
"sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26", size
= 261057, upload-time = "2026-02-09T12:57:52.447Z" },
+ { url =
"https://files.pythonhosted.org/packages/a4/a2/60010c669df5fa603bb5a97fb75407e191a846510da70ac657eb696b7fce/coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl",
hash =
"sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2", size
= 263875, upload-time = "2026-02-09T12:57:53.938Z" },
+ { url =
"https://files.pythonhosted.org/packages/3e/d9/63b22a6bdbd17f1f96e9ed58604c2a6b0e72a9133e37d663bef185877cf6/coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl",
hash =
"sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940", size
= 261500, upload-time = "2026-02-09T12:57:56.012Z" },
+ { url =
"https://files.pythonhosted.org/packages/70/bf/69f86ba1ad85bc3ad240e4c0e57a2e620fbc0e1645a47b5c62f0e941ad7f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl",
hash =
"sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c", size
= 265212, upload-time = "2026-02-09T12:57:57.5Z" },
+ { url =
"https://files.pythonhosted.org/packages/ae/f2/5f65a278a8c2148731831574c73e42f57204243d33bedaaf18fa79c5958f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl",
hash =
"sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0", size
= 260398, upload-time = "2026-02-09T12:57:59.027Z" },
+ { url =
"https://files.pythonhosted.org/packages/ef/80/6e8280a350ee9fea92f14b8357448a242dcaa243cb2c72ab0ca591f66c8c/coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl",
hash =
"sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b", size
= 262584, upload-time = "2026-02-09T12:58:01.129Z" },
+ { url =
"https://files.pythonhosted.org/packages/22/63/01ff182fc95f260b539590fb12c11ad3e21332c15f9799cb5e2386f71d9f/coverage-7.13.4-cp313-cp313t-win32.whl",
hash =
"sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9", size
= 222688, upload-time = "2026-02-09T12:58:02.736Z" },
+ { url =
"https://files.pythonhosted.org/packages/a9/43/89de4ef5d3cd53b886afa114065f7e9d3707bdb3e5efae13535b46ae483d/coverage-7.13.4-cp313-cp313t-win_amd64.whl",
hash =
"sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd", size
= 223746, upload-time = "2026-02-09T12:58:05.362Z" },
+ { url =
"https://files.pythonhosted.org/packages/35/39/7cf0aa9a10d470a5309b38b289b9bb07ddeac5d61af9b664fe9775a4cb3e/coverage-7.13.4-cp313-cp313t-win_arm64.whl",
hash =
"sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997", size
= 222003, upload-time = "2026-02-09T12:58:06.952Z" },
+ { url =
"https://files.pythonhosted.org/packages/92/11/a9cf762bb83386467737d32187756a42094927150c3e107df4cb078e8590/coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl",
hash =
"sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601", size
= 219522, upload-time = "2026-02-09T12:58:08.623Z" },
+ { url =
"https://files.pythonhosted.org/packages/d3/28/56e6d892b7b052236d67c95f1936b6a7cf7c3e2634bf27610b8cbd7f9c60/coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl",
hash =
"sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689", size
= 219855, upload-time = "2026-02-09T12:58:10.176Z" },
+ { url =
"https://files.pythonhosted.org/packages/e5/69/233459ee9eb0c0d10fcc2fe425a029b3fa5ce0f040c966ebce851d030c70/coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
hash =
"sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c", size
= 250887, upload-time = "2026-02-09T12:58:12.503Z" },
+ { url =
"https://files.pythonhosted.org/packages/06/90/2cdab0974b9b5bbc1623f7876b73603aecac11b8d95b85b5b86b32de5eab/coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129", size
= 253396, upload-time = "2026-02-09T12:58:14.615Z" },
+ { url =
"https://files.pythonhosted.org/packages/ac/15/ea4da0f85bf7d7b27635039e649e99deb8173fe551096ea15017f7053537/coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552", size
= 254745, upload-time = "2026-02-09T12:58:16.162Z" },
+ { url =
"https://files.pythonhosted.org/packages/99/11/bb356e86920c655ca4d61daee4e2bbc7258f0a37de0be32d233b561134ff/coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
hash =
"sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a", size
= 257055, upload-time = "2026-02-09T12:58:17.892Z" },
+ { url =
"https://files.pythonhosted.org/packages/c9/0f/9ae1f8cb17029e09da06ca4e28c9e1d5c1c0a511c7074592e37e0836c915/coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
hash =
"sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356", size
= 250911, upload-time = "2026-02-09T12:58:19.495Z" },
+ { url =
"https://files.pythonhosted.org/packages/89/3a/adfb68558fa815cbc29747b553bc833d2150228f251b127f1ce97e48547c/coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl",
hash =
"sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71", size
= 252754, upload-time = "2026-02-09T12:58:21.064Z" },
+ { url =
"https://files.pythonhosted.org/packages/32/b1/540d0c27c4e748bd3cd0bd001076ee416eda993c2bae47a73b7cc9357931/coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl",
hash =
"sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5", size
= 250720, upload-time = "2026-02-09T12:58:22.622Z" },
+ { url =
"https://files.pythonhosted.org/packages/c7/95/383609462b3ffb1fe133014a7c84fc0dd01ed55ac6140fa1093b5af7ebb1/coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl",
hash =
"sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98", size
= 254994, upload-time = "2026-02-09T12:58:24.548Z" },
+ { url =
"https://files.pythonhosted.org/packages/f7/ba/1761138e86c81680bfc3c49579d66312865457f9fe405b033184e5793cb3/coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl",
hash =
"sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5", size
= 250531, upload-time = "2026-02-09T12:58:26.271Z" },
+ { url =
"https://files.pythonhosted.org/packages/f8/8e/05900df797a9c11837ab59c4d6fe94094e029582aab75c3309a93e6fb4e3/coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl",
hash =
"sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0", size
= 252189, upload-time = "2026-02-09T12:58:27.807Z" },
+ { url =
"https://files.pythonhosted.org/packages/00/bd/29c9f2db9ea4ed2738b8a9508c35626eb205d51af4ab7bf56a21a2e49926/coverage-7.13.4-cp314-cp314-win32.whl",
hash =
"sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb", size
= 222258, upload-time = "2026-02-09T12:58:29.441Z" },
+ { url =
"https://files.pythonhosted.org/packages/a7/4d/1f8e723f6829977410efeb88f73673d794075091c8c7c18848d273dc9d73/coverage-7.13.4-cp314-cp314-win_amd64.whl",
hash =
"sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505", size
= 223073, upload-time = "2026-02-09T12:58:31.026Z" },
+ { url =
"https://files.pythonhosted.org/packages/51/5b/84100025be913b44e082ea32abcf1afbf4e872f5120b7a1cab1d331b1e13/coverage-7.13.4-cp314-cp314-win_arm64.whl",
hash =
"sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2", size
= 221638, upload-time = "2026-02-09T12:58:32.599Z" },
+ { url =
"https://files.pythonhosted.org/packages/a7/e4/c884a405d6ead1370433dad1e3720216b4f9fd8ef5b64bfd984a2a60a11a/coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl",
hash =
"sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056", size
= 220246, upload-time = "2026-02-09T12:58:34.181Z" },
+ { url =
"https://files.pythonhosted.org/packages/81/5c/4d7ed8b23b233b0fffbc9dfec53c232be2e695468523242ea9fd30f97ad2/coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl",
hash =
"sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc", size
= 220514, upload-time = "2026-02-09T12:58:35.704Z" },
+ { url =
"https://files.pythonhosted.org/packages/2f/6f/3284d4203fd2f28edd73034968398cd2d4cb04ab192abc8cff007ea35679/coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
hash =
"sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9", size
= 261877, upload-time = "2026-02-09T12:58:37.864Z" },
+ { url =
"https://files.pythonhosted.org/packages/09/aa/b672a647bbe1556a85337dc95bfd40d146e9965ead9cc2fe81bde1e5cbce/coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
hash =
"sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf", size
= 264004, upload-time = "2026-02-09T12:58:39.492Z" },
+ { url =
"https://files.pythonhosted.org/packages/79/a1/aa384dbe9181f98bba87dd23dda436f0c6cf2e148aecbb4e50fc51c1a656/coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
hash =
"sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55", size
= 266408, upload-time = "2026-02-09T12:58:41.852Z" },
+ { url =
"https://files.pythonhosted.org/packages/53/5e/5150bf17b4019bc600799f376bb9606941e55bd5a775dc1e096b6ffea952/coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
hash =
"sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72", size
= 267544, upload-time = "2026-02-09T12:58:44.093Z" },
+ { url =
"https://files.pythonhosted.org/packages/e0/ed/f1de5c675987a4a7a672250d2c5c9d73d289dbf13410f00ed7181d8017dd/coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
hash =
"sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a", size
= 260980, upload-time = "2026-02-09T12:58:45.721Z" },
+ { url =
"https://files.pythonhosted.org/packages/b3/e3/fe758d01850aa172419a6743fe76ba8b92c29d181d4f676ffe2dae2ba631/coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl",
hash =
"sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6", size
= 263871, upload-time = "2026-02-09T12:58:47.334Z" },
+ { url =
"https://files.pythonhosted.org/packages/b6/76/b829869d464115e22499541def9796b25312b8cf235d3bb00b39f1675395/coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl",
hash =
"sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3", size
= 261472, upload-time = "2026-02-09T12:58:48.995Z" },
+ { url =
"https://files.pythonhosted.org/packages/14/9e/caedb1679e73e2f6ad240173f55218488bfe043e38da577c4ec977489915/coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl",
hash =
"sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750", size
= 265210, upload-time = "2026-02-09T12:58:51.178Z" },
+ { url =
"https://files.pythonhosted.org/packages/3a/10/0dd02cb009b16ede425b49ec344aba13a6ae1dc39600840ea6abcb085ac4/coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl",
hash =
"sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39", size
= 260319, upload-time = "2026-02-09T12:58:53.081Z" },
+ { url =
"https://files.pythonhosted.org/packages/92/8e/234d2c927af27c6d7a5ffad5bd2cf31634c46a477b4c7adfbfa66baf7ebb/coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl",
hash =
"sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0", size
= 262638, upload-time = "2026-02-09T12:58:55.258Z" },
+ { url =
"https://files.pythonhosted.org/packages/2f/64/e5547c8ff6964e5965c35a480855911b61509cce544f4d442caa759a0702/coverage-7.13.4-cp314-cp314t-win32.whl",
hash =
"sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea", size
= 223040, upload-time = "2026-02-09T12:58:56.936Z" },
+ { url =
"https://files.pythonhosted.org/packages/c7/96/38086d58a181aac86d503dfa9c47eb20715a79c3e3acbdf786e92e5c09a8/coverage-7.13.4-cp314-cp314t-win_amd64.whl",
hash =
"sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932", size
= 224148, upload-time = "2026-02-09T12:58:58.645Z" },
+ { url =
"https://files.pythonhosted.org/packages/ce/72/8d10abd3740a0beb98c305e0c3faf454366221c0f37a8bcf8f60020bb65a/coverage-7.13.4-cp314-cp314t-win_arm64.whl",
hash =
"sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b", size
= 222172, upload-time = "2026-02-09T12:59:00.396Z" },
+ { url =
"https://files.pythonhosted.org/packages/0d/4a/331fe2caf6799d591109bb9c08083080f6de90a823695d412a935622abb2/coverage-7.13.4-py3-none-any.whl",
hash =
"sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0", size
= 211242, upload-time = "2026-02-09T12:59:02.032Z" },
+]
+
+[package.optional-dependencies]
+toml = [
+ { name = "tomli", marker = "python_full_version <= '3.11'" },
+]
+
[[package]]
name = "docker"
version = "7.1.0"
@@ -531,6 +653,20 @@ wheels = [
{ url =
"https://files.pythonhosted.org/packages/20/7f/338843f449ace853647ace35870874f69a764d251872ed1b4de9f234822c/pytest_asyncio-0.26.0-py3-none-any.whl",
hash =
"sha256:7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0", size
= 19694, upload-time = "2025-03-25T06:22:27.807Z" },
]
+[[package]]
+name = "pytest-cov"
+version = "6.3.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "coverage", extra = ["toml"] },
+ { name = "pluggy" },
+ { name = "pytest" },
+]
+sdist = { url =
"https://files.pythonhosted.org/packages/30/4c/f883ab8f0daad69f47efdf95f55a66b51a8b939c430dadce0611508d9e99/pytest_cov-6.3.0.tar.gz",
hash =
"sha256:35c580e7800f87ce892e687461166e1ac2bcb8fb9e13aea79032518d6e503ff2", size
= 70398, upload-time = "2025-09-06T15:40:14.361Z" }
+wheels = [
+ { url =
"https://files.pythonhosted.org/packages/80/b4/bb7263e12aade3842b938bc5c6958cae79c5ee18992f9b9349019579da0f/pytest_cov-6.3.0-py3-none-any.whl",
hash =
"sha256:440db28156d2468cafc0415b4f8e50856a0d11faefa38f30906048fe490f1749", size
= 25115, upload-time = "2025-09-06T15:40:12.44Z" },
+]
+
[[package]]
name = "pytest-timeout"
version = "2.4.0"