From 5b017338df711c383a10227b507acc50f4ffbc89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Sat, 14 Sep 2024 17:49:58 +0200 Subject: [PATCH] Migrate actions to work with uv instead of rye, use commit for lint and simplify --- .devcontainer/Dockerfile | 2 +- .../actions/extract-python-version/action.yml | 31 --- .../actions/setup-python-with-uv/action.yml | 53 ---- .github/workflows/code.yml | 110 +++++---- .github/workflows/containers.yml | 25 +- .github/workflows/publish.yml | 12 +- .pre-commit-config.yaml | 17 +- CHANGELOG.md | 2 +- Dockerfile | 28 ++- README.md | 40 +-- pyproject.toml | 32 +-- src/dns_synchub/logger.py | 2 +- uv.lock | 231 ------------------ 13 files changed, 130 insertions(+), 455 deletions(-) delete mode 100644 .github/actions/extract-python-version/action.yml delete mode 100644 .github/actions/setup-python-with-uv/action.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8fd246e..85557bc 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -13,7 +13,7 @@ EOF ADD https://astral.sh/uv/install.sh uv-installer.sh # Run the installer then remove it -RUN sh uv-installer.sh +RUN sh uv-installer.sh && rm uv-installer.sh # Devcontainer image FROM mcr.microsoft.com/vscode/devcontainers/base:bookworm diff --git a/.github/actions/extract-python-version/action.yml b/.github/actions/extract-python-version/action.yml deleted file mode 100644 index 07876d1..0000000 --- a/.github/actions/extract-python-version/action.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -name: Extract Python Version -description: Extrat Python version from .python-version file - -inputs: - python-version: - description: Python version - required: false - -outputs: - python-version: - description: The Python version to use - value: ${{ steps.extract-python-version.outputs.python-version }} - -runs: - using: "composite" - steps: - - name: Extract Python Version - id: extract-python-version - run: | - PYTHON_VERSION="${{ inputs.python-version }}" - if [ -z "$PYTHON_VERSION" ]; then - PYTHON_VERSION=$(cat .python-version) - fi - if [ -z "$PYTHON_VERSION" ]; then - echo "No Python version specified, and no .python-version file found" - exit 1 - fi - echo "Python version specified: $PYTHON_VERSION" - echo "python-version=$PYTHON_VERSION" >> $GITHUB_OUTPUT - shell: bash diff --git a/.github/actions/setup-python-with-uv/action.yml b/.github/actions/setup-python-with-uv/action.yml deleted file mode 100644 index 92e7f74..0000000 --- a/.github/actions/setup-python-with-uv/action.yml +++ /dev/null @@ -1,53 +0,0 @@ ---- -name: Setup uv -description: Install Python with uv - -inputs: - python-version: - description: Python version - required: false - uv-sync-options: - description: Options to pass to uv sync - required: false - default: "--dev --all-extras" - -outputs: - python-version: - description: The Python version used - value: ${{ steps.extract-python-version.outputs.python-version }} - -runs: - using: composite - steps: - - name: Extract Python Version - id: extract-python-version - uses: ./.github/actions/extract-python-version - with: - python-version: ${{ inputs.python-version }} - - - name: Install uv - run: curl -LsSf https://astral.sh/uv/install.sh | sh - shell: bash - - - name: Pin Python Version - run: | - export PYTHONUNBUFFERED=True - uv python pin ${{ steps.extract-python-version.outputs.python-version }} - shell: bash - - - name: Normalize UV Sync Options - id: normalize-uv-sync-options - run: | - NORMALIZED_UV_SYNC_OPTIONS=$(echo "${{ inputs.uv-sync-options }}" | tr '[:upper:]' '[:lower:]' | tr -c '[:alnum:]' '-') - echo "normalized-uv-sync-options=$NORMALIZED_UV_SYNC_OPTIONS" >> $GITHUB_ENV - shell: bash - - - uses: actions/cache@v4 - id: cache-uv - with: - path: ~/.cache/uv - key: ${{ runner.os }}-python-${{ steps.extract-python-version.outputs.python-version }}-uv-sync-${{ env.normalized-uv-sync-options }} - - - name: Install dependencies - run: uv sync ${{ inputs.uv-sync-options}} - shell: bash diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 74316e2..aec30df 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -7,79 +7,89 @@ jobs: lint: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Setup Python with uv - uses: ./.github/actions/setup-python-with-uv + - name: "Install uv" + uses: astral-sh/setup-uv@v2 + with: + enable-cache: true + cache-dependency-glob: "uv.lock" + + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" - - name: Lint - run: uv run ruff check --output-format=github . + - name: "Install the project" + run: uv sync --frozen --all-extras --dev + + - name: "Pre-commit" + run: uv run pre-commit run --show-diff-on-failure --color=always --all-files + env: + SKIP: "update-version,ruff-format,hadolint" + shell: bash format: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Setup Python with uv - uses: ./.github/actions/setup-python-with-uv + - name: "Install uv" + uses: astral-sh/setup-uv@v2 + with: + enable-cache: true + cache-dependency-glob: "uv.lock" - - name: Format + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + + - name: "Install the project" + run: uv sync --frozen --all-extras --dev + + - name: "Format" run: uv run ruff format . --check --diff tests: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.11', '3.12'] + python-version: + - 3.11 + - 3.12 + include: + - python-version: "3.13.0-rc.2" + continue-on-error: true steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Setup Python ${{ matrix.python-version }} with uv - uses: ./.github/actions/setup-python-with-uv + - name: "Install uv" + uses: astral-sh/setup-uv@v2 with: - python-version: ${{ matrix.python-version }} + enable-cache: true + cache-dependency-glob: "uv.lock" - - name: Run Pytest if directory exists - run: uv run pytest --cov=src --cov-report=xml --junitxml=junit.xml - - - name: Upload test results to Codecov - if: ${{ !env.ACT }} - uses: codecov/test-results-action@v1 - with: - fail_ci_if_error: true - file: junit.xml - flags: ${{ matrix.python-version }} - name: ${{ github.repository }} - token: ${{ secrets.CODECOV_TOKEN }} - - - name: Upload Coverage files - uses: actions/upload-artifact@v3 + - name: "Set up Python ${{ matrix.python-version }}" + uses: actions/setup-python@v5 with: - name: coverage-xml - path: coverage.xml + python-version: ${{ matrix.python-version }} - coverage: - runs-on: ubuntu-latest - needs: tests - if: ${{ always() && ! cancelled() }} + - name: "Install the project" + run: uv sync --frozen --all-extras --dev - steps: - - name: Download coverage.xml - uses: actions/download-artifact@v3 - with: - name: coverage-xml - path: . + - name: "Run tests with coverage" + env: + COVERAGE_FILE: .coverage.${{ runner.os }}-py${{ matrix.python-version }}-without-deps + CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}-without-deps + run: uv run coverage run -m pytest --durations=10 - - name: Upload Coverage to Codecov + - run: uv run coverage combine + - run: uv run coverage xml + + - name: "Upload coverage to CodeCov" uses: codecov/codecov-action@v4 if: ${{ !env.ACT }} with: - fail_ci_if_error: true file: coverage.xml - flags: unittests - name: ${{ github.repository }} - token: ${{ secrets.CODECOV_TOKEN }} - + env_vars: PYTHON,OS diff --git a/.github/workflows/containers.yml b/.github/workflows/containers.yml index 1f18405..010a834 100644 --- a/.github/workflows/containers.yml +++ b/.github/workflows/containers.yml @@ -3,17 +3,16 @@ name: Container CI on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] jobs: lint-container: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Lint Dockerfile uses: hadolint/hadolint-action@v3.1.0 @@ -27,15 +26,14 @@ jobs: if: ${{ success() }} steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Extract Python Version - id: extract-python-version - uses: ./.github/actions/extract-python-version + - name: Get version + id: python + run: echo "version=$(cat .python-version)" >> "$GITHUB_OUTPUT" - name: Build uses: docker/build-push-action@v6 @@ -46,7 +44,7 @@ jobs: tags: ${{ github.repository }}:latest build-args: | REPOSITORY=${{ github.repository }} - PYTHON_VERSION=${{ steps.extract-python-version.outputs.python-version }} + PYTHON_VERSION=${{ steps.python.outputs.version }} - name: Test Image run: | @@ -56,8 +54,7 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Lint Dockerfile uses: hadolint/hadolint-action@v3.1.0 @@ -71,8 +68,7 @@ jobs: if: ${{ success() }} steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -84,4 +80,3 @@ jobs: load: true file: ./.devcontainer/Dockerfile tags: ${{ github.repository }}:latest - diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a2d99d5..05fabc8 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -38,8 +38,7 @@ jobs: packages: write steps: - - name: Checkout the repository - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Set up QEMU to build multi-platform images uses: docker/setup-qemu-action@v3 @@ -54,13 +53,10 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Compute Environment - id: extract_version + - name: Compute Environment Variables run: | - VERSION=$(grep -Po '(?<=^__version__ = ")[^"]*' src/dns_synchub/__about__.py) - echo "VERSION=$VERSION" >> "$GITHUB_ENV" - PYTHON_VERSION=$(cat .python-version) - echo "PYTHON_VERSION=$PYTHON_VERSION" >> "$GITHUB_ENV" + echo "VERSION=$(grep -Po '(?<=^__version__ = ")[^"]*' src/dns_synchub/__about__.py)" >> "$GITHUB_ENV" + echo "PYTHON_VERSION=$(cat .python-version)" >> "$GITHUB_ENV" shell: bash - name: Extract metadata (tags, labels) for Docker diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6cb6f59..f9d08ef 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ default_stages: [commit] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.4 + rev: v0.6.5 hooks: - id: ruff name: Ruff linter @@ -11,8 +11,9 @@ repos: - id: ruff-format name: Ruff format types_or: [python, pyi] + - repo: https://github.com/executablebooks/mdformat - rev: 0.7.13 + rev: 0.7.17 hooks: - id: mdformat additional_dependencies: @@ -32,26 +33,28 @@ repos: hooks: - id: update-version name: Update Version - entry: scripts/versioning.py + entry: uv run scripts/versioning.py language: python pass_filenames: false stages: [commit] files: ^pyproject\.toml$ - id: mypy - name: mypy + name: mypy static type checker language: system types: [python] - entry: uv run mypy --strict + entry: uv run mypy + pass_filenames: false - id: pyupgrade name: Pyupgrade - entry: pyupgrade --py311-plus + entry: uv run pyupgrade --py311-plus types: [python] language: system - id: deptry name: Deptry - entry: deptry src tests + entry: uv run deptry src tests + types: [python] language: system pass_filenames: false diff --git a/CHANGELOG.md b/CHANGELOG.md index d02e8bb..2576dd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## [Unreleased] +## \[Unreleased\] ### Added diff --git a/Dockerfile b/Dockerfile index 7e5b33d..c768d05 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ ARG APP_PATH=/app ARG VIRTUAL_ENV_PATH=.venv # Builder stage -FROM python:${PYTHON_VERSION}-slim AS builder +FROM ghcr.io/astral-sh/uv:python${PYTHON_VERSION}-bookworm-slim AS builder # Re-declare the ARG to use it in this stage ARG APP_PATH @@ -16,18 +16,26 @@ RUN <__NAME` | The domain name for which you wish to update records. | `STR` | | | `DOMAIN____COMMENT` | (Optional) Comment for the DNS record. | `STR` | `NONE` | -| `DOMAIN____EXCLUDED_SUB_DOMAINS` | Specify subdomain trees to be ignored in labels[^2]. | `LIST` | `[]` | +| `DOMAIN____EXCLUDED_SUB_DOMAINS` | Specify subdomain trees to be ignored in labels\[^2\]. | `LIST` | `[]` | The following optional parameters may also be defined to customize domain update behavior, otherwise, default values will be used: @@ -351,7 +351,7 @@ The following optional parameters may also be defined to customize domain update - `DOMAIN____TARGET_DOMAIN` - `DOMAIN____RC_TYPE` -[^2]: For example, specifying `int` would prevent the creation of a CNAME for `*.int.example.com`. +\[^2\]: For example, specifying `int` would prevent the creation of a CNAME for `*.int.example.com`. ##### Host Filtering Configuration @@ -387,16 +387,16 @@ To configure [OpenTelemetry](https://opentelemetry.io/), follow these steps: 1. **Set Environment Variables**: - Ensure that the necessary environment variables are set for OpenTelemetry to function correctly: + Ensure that the necessary environment variables are set for OpenTelemetry to function correctly: - ```bash - export OTEL_EXPORTER_OTLP_ENDPOINT="your-otlp-endpoint" - export OTEL_RESOURCE_ATTRIBUTES="service.name=your-service-name" - ``` + ```bash + export OTEL_EXPORTER_OTLP_ENDPOINT="your-otlp-endpoint" + export OTEL_RESOURCE_ATTRIBUTES="service.name=your-service-name" + ``` -2. **Enable Telemetry** +1. **Enable Telemetry** - Telemetry is disabled by default. To enable it, pass the `--enable-telemetry` argument at the command line. +Telemetry is disabled by default. To enable it, pass the `--enable-telemetry` argument at the command line. ## Support diff --git a/pyproject.toml b/pyproject.toml index ab107d1..57cd741 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,12 +23,6 @@ dependencies = [ requires-python = ">= 3.11" [project.optional-dependencies] -telemetry = [ - "opentelemetry-api", - "opentelemetry-sdk", - "opentelemetry-exporter-otlp-proto-grpc", - "opentelemetry-exporter-prometheus", -] [project.urls] Homepage = "https://github.com/inean/dns-synchub" @@ -157,35 +151,19 @@ keep-runtime-typing = true root = 'src/dns_synchub' [tool.mypy] -mypy_path = "types" +strict = true files = [ "src/", "tests/", ] -check_untyped_defs = true -disallow_any_generics = true -disallow_incomplete_defs = true -disallow_subclassing_any = true -disallow_untyped_calls = true -disallow_untyped_decorators = true +# Third party type stubs +mypy_path = "types" +#Don't prevents discovery of packages that don’t have an __init__.py namespace_packages = true -no_implicit_reexport = true -python_version = '3.11' -show_error_codes = true -strict_optional = true -warn_redundant_casts = true -warn_unused_configs = true -warn_unused_ignores = true - -# for strict mypy: (this is the tricky one :-)) -disallow_untyped_defs = true - -# remaining arguments from `mypy --strict` which cause errors -# no_implicit_optional = true -# warn_return_any = true [[tool.mypy.overrides]] module = [ 'dotenv.*', ] +#Silently ignore imports of missing modules ignore_missing_imports = true diff --git a/src/dns_synchub/logger.py b/src/dns_synchub/logger.py index ba5f54d..e114599 100644 --- a/src/dns_synchub/logger.py +++ b/src/dns_synchub/logger.py @@ -52,7 +52,7 @@ def initialize_logger(settings: Settings) -> logging.Logger: } if any(telemetry_options.values()): try: - from dns_synchub.telemetry import telemetry_log_handler + from dns_synchub.telemetry import telemetry_log_handler # type: ignore handler = telemetry_log_handler(settings.service_name, **telemetry_options) logger.addHandler(handler) diff --git a/uv.lock b/uv.lock index a98ab83..a946ac9 100644 --- a/uv.lock +++ b/uv.lock @@ -165,18 +165,6 @@ toml = [ { name = "tomli", marker = "python_full_version == '3.11'" }, ] -[[package]] -name = "deprecated" -version = "1.2.14" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/92/14/1e41f504a246fc224d2ac264c227975427a85caf37c3979979edb9b1b232/Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3", size = 2974416 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/8d/778b7d51b981a96554f29136cd59ca7880bf58094338085bcf2a979a0e6a/Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", size = 9561 }, -] - [[package]] name = "deptry" version = "0.20.0" @@ -219,14 +207,6 @@ dependencies = [ { name = "typing-extensions" }, ] -[package.optional-dependencies] -telemetry = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-exporter-otlp-proto-grpc" }, - { name = "opentelemetry-exporter-prometheus" }, - { name = "opentelemetry-sdk" }, -] - [package.dev-dependencies] dev = [ { name = "deptry" }, @@ -246,10 +226,6 @@ dev = [ requires-dist = [ { name = "cloudflare", specifier = "<=2.20" }, { name = "docker", specifier = ">=7.1.0" }, - { name = "opentelemetry-api", marker = "extra == 'telemetry'" }, - { name = "opentelemetry-exporter-otlp-proto-grpc", marker = "extra == 'telemetry'" }, - { name = "opentelemetry-exporter-prometheus", marker = "extra == 'telemetry'" }, - { name = "opentelemetry-sdk", marker = "extra == 'telemetry'" }, { name = "pydantic", specifier = ">=2.0" }, { name = "pydantic-settings", git = "https://github.com/inean/pydantic-settings?rev=2.3" }, { name = "python-dotenv", specifier = ">=1.0.1" }, @@ -296,44 +272,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2f/95/f9310f35376024e1086c59cbb438d319fc9a4ef853289ce7c661539edbd4/filelock-3.16.0-py3-none-any.whl", hash = "sha256:f6ed4c963184f4c84dd5557ce8fece759a3724b37b80c6c4f20a2f63a4dc6609", size = 16170 }, ] -[[package]] -name = "googleapis-common-protos" -version = "1.65.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/53/3b/1599ceafa875ffb951480c8c74f4b77646a6b80e80970698f2aa93c216ce/googleapis_common_protos-1.65.0.tar.gz", hash = "sha256:334a29d07cddc3aa01dee4988f9afd9b2916ee2ff49d6b757155dc0d197852c0", size = 113657 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/08/49bfe7cf737952cc1a9c43e80cc258ed45dad7f183c5b8276fc94cb3862d/googleapis_common_protos-1.65.0-py2.py3-none-any.whl", hash = "sha256:2972e6c496f435b92590fd54045060867f3fe9be2c82ab148fc8885035479a63", size = 220890 }, -] - -[[package]] -name = "grpcio" -version = "1.66.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/42/94293200e40480d79fc876b2330e7dffb20f959b390afa77c0dbaa0c8372/grpcio-1.66.1.tar.gz", hash = "sha256:35334f9c9745add3e357e3372756fd32d925bd52c41da97f4dfdafbde0bf0ee2", size = 12326405 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/8a/15d758ce27c82ba4760b9e221e153db02e4a7acd71dcdd7d5f8d3ad83630/grpcio-1.66.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:c30aeceeaff11cd5ddbc348f37c58bcb96da8d5aa93fed78ab329de5f37a0d7a", size = 4978160 }, - { url = "https://files.pythonhosted.org/packages/0f/45/9d666f5b447cad3762cca22c8a805677a11976d8a2c82484659d96a31937/grpcio-1.66.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8a1e224ce6f740dbb6b24c58f885422deebd7eb724aff0671a847f8951857c26", size = 10620579 }, - { url = "https://files.pythonhosted.org/packages/12/3f/c5e30952a37e9ad266ff7f11c806be1c33253e9daa97e8265f53f10a0b15/grpcio-1.66.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a66fe4dc35d2330c185cfbb42959f57ad36f257e0cc4557d11d9f0a3f14311df", size = 5487691 }, - { url = "https://files.pythonhosted.org/packages/09/9c/d4f0c4c7a9fcdc140701c1b2b4c45d0de293380461ecaa7df76d8b5d8b03/grpcio-1.66.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3ba04659e4fce609de2658fe4dbf7d6ed21987a94460f5f92df7579fd5d0e22", size = 6089513 }, - { url = "https://files.pythonhosted.org/packages/ab/2d/02890f309feabe9255a406700096e08a0a2b9ed20ab43e86b6e633517b0d/grpcio-1.66.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4573608e23f7e091acfbe3e84ac2045680b69751d8d67685ffa193a4429fedb1", size = 5732315 }, - { url = "https://files.pythonhosted.org/packages/ea/3a/2040ce42a03b163768e43966e02d9c88b2dcb0f28cb611d976b8d68d3835/grpcio-1.66.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7e06aa1f764ec8265b19d8f00140b8c4b6ca179a6dc67aa9413867c47e1fb04e", size = 6407861 }, - { url = "https://files.pythonhosted.org/packages/e9/9a/fba2ed0ade08b4c8b5e2456269ddf73a5abbfe9407f9e6bd85d92efb4c9d/grpcio-1.66.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3885f037eb11f1cacc41f207b705f38a44b69478086f40608959bf5ad85826dd", size = 5990083 }, - { url = "https://files.pythonhosted.org/packages/02/7b/7aabc0cf5b8bbe74226cbf4f948d4aa66df0b29095eea44ea465a1b01f13/grpcio-1.66.1-cp311-cp311-win32.whl", hash = "sha256:97ae7edd3f3f91480e48ede5d3e7d431ad6005bfdbd65c1b56913799ec79e791", size = 3555811 }, - { url = "https://files.pythonhosted.org/packages/45/86/cc31ad1578abd322c403b7425e6b50eb8a48a8f96c2e558dacd0ef472dc1/grpcio-1.66.1-cp311-cp311-win_amd64.whl", hash = "sha256:cfd349de4158d797db2bd82d2020554a121674e98fbe6b15328456b3bf2495bb", size = 4290747 }, - { url = "https://files.pythonhosted.org/packages/25/31/fa15c10757a8703332d9f9eff2ab676e8f8807e8636c01b965a37f806ded/grpcio-1.66.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:a92c4f58c01c77205df6ff999faa008540475c39b835277fb8883b11cada127a", size = 4912090 }, - { url = "https://files.pythonhosted.org/packages/31/3f/09f796724b44b625e4d294f6df8ab0bb63b4709664bd574ea97a8c0d6159/grpcio-1.66.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fdb14bad0835914f325349ed34a51940bc2ad965142eb3090081593c6e347be9", size = 10579733 }, - { url = "https://files.pythonhosted.org/packages/bc/d5/15c5934ac3550f682b04753e5481eca18a3710b220e16d3345a7e6f7c9f6/grpcio-1.66.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f03a5884c56256e08fd9e262e11b5cfacf1af96e2ce78dc095d2c41ccae2c80d", size = 5421092 }, - { url = "https://files.pythonhosted.org/packages/fa/77/f8ab8d436373ad09e1f8f50bf759b4afc8ad1bc121e5cf7dedd8507a4b63/grpcio-1.66.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ca2559692d8e7e245d456877a85ee41525f3ed425aa97eb7a70fc9a79df91a0", size = 6028550 }, - { url = "https://files.pythonhosted.org/packages/1d/6c/a813a5b6d716cbc5cc3e496b186b6878816bf5f32aa7f7ae5f9d8dc5e669/grpcio-1.66.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ca1be089fb4446490dd1135828bd42a7c7f8421e74fa581611f7afdf7ab761", size = 5672550 }, - { url = "https://files.pythonhosted.org/packages/a0/72/06962e2891fe3846a9dc61547d8ef35151b8976a083187e6647e65306c45/grpcio-1.66.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:d639c939ad7c440c7b2819a28d559179a4508783f7e5b991166f8d7a34b52815", size = 6354719 }, - { url = "https://files.pythonhosted.org/packages/43/10/4db87a953a3f3c73a8284e176556b6eca33496b8ffaa93107f37f772148e/grpcio-1.66.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b9feb4e5ec8dc2d15709f4d5fc367794d69277f5d680baf1910fc9915c633524", size = 5933351 }, - { url = "https://files.pythonhosted.org/packages/47/c7/f1fdd77bbe1c6459777a2d604228cc80124373e75d775c2a019755c29182/grpcio-1.66.1-cp312-cp312-win32.whl", hash = "sha256:7101db1bd4cd9b880294dec41a93fcdce465bdbb602cd8dc5bd2d6362b618759", size = 3538005 }, - { url = "https://files.pythonhosted.org/packages/66/2b/a6e68d7ea6f4fbc31cce20e354d6cef484da0a9891ee6a3eaf3aa9659d01/grpcio-1.66.1-cp312-cp312-win_amd64.whl", hash = "sha256:b0aa03d240b5539648d996cc60438f128c7f46050989e35b25f5c18286c86734", size = 4275565 }, -] - [[package]] name = "identify" version = "2.6.0" @@ -352,18 +290,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/22/7e/d71db821f177828df9dea8c42ac46473366f191be53080e552e628aad991/idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", size = 66894 }, ] -[[package]] -name = "importlib-metadata" -version = "8.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zipp" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/bd/fa8ce65b0a7d4b6d143ec23b0f5fd3f7ab80121078c465bc02baeaab22dc/importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5", size = 54320 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/14/362d31bf1076b21e1bcdcb0dc61944822ff263937b804a79231df2774d28/importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1", size = 26269 }, -] - [[package]] name = "iniconfig" version = "2.0.0" @@ -447,102 +373,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, ] -[[package]] -name = "opentelemetry-api" -version = "1.27.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "deprecated" }, - { name = "importlib-metadata" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c9/83/93114b6de85a98963aec218a51509a52ed3f8de918fe91eb0f7299805c3f/opentelemetry_api-1.27.0.tar.gz", hash = "sha256:ed673583eaa5f81b5ce5e86ef7cdaf622f88ef65f0b9aab40b843dcae5bef342", size = 62693 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/1f/737dcdbc9fea2fa96c1b392ae47275165a7c641663fbb08a8d252968eed2/opentelemetry_api-1.27.0-py3-none-any.whl", hash = "sha256:953d5871815e7c30c81b56d910c707588000fff7a3ca1c73e6531911d53065e7", size = 63970 }, -] - -[[package]] -name = "opentelemetry-exporter-otlp-proto-common" -version = "1.27.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-proto" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/2e/7eaf4ba595fb5213cf639c9158dfb64aacb2e4c7d74bfa664af89fa111f4/opentelemetry_exporter_otlp_proto_common-1.27.0.tar.gz", hash = "sha256:159d27cf49f359e3798c4c3eb8da6ef4020e292571bd8c5604a2a573231dd5c8", size = 17860 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/27/4610ab3d9bb3cde4309b6505f98b3aabca04a26aa480aa18cede23149837/opentelemetry_exporter_otlp_proto_common-1.27.0-py3-none-any.whl", hash = "sha256:675db7fffcb60946f3a5c43e17d1168a3307a94a930ecf8d2ea1f286f3d4f79a", size = 17848 }, -] - -[[package]] -name = "opentelemetry-exporter-otlp-proto-grpc" -version = "1.27.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "deprecated" }, - { name = "googleapis-common-protos" }, - { name = "grpcio" }, - { name = "opentelemetry-api" }, - { name = "opentelemetry-exporter-otlp-proto-common" }, - { name = "opentelemetry-proto" }, - { name = "opentelemetry-sdk" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/d0/c1e375b292df26e0ffebf194e82cd197e4c26cc298582bda626ce3ce74c5/opentelemetry_exporter_otlp_proto_grpc-1.27.0.tar.gz", hash = "sha256:af6f72f76bcf425dfb5ad11c1a6d6eca2863b91e63575f89bb7b4b55099d968f", size = 26244 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/80/32217460c2c64c0568cea38410124ff680a9b65f6732867bbf857c4d8626/opentelemetry_exporter_otlp_proto_grpc-1.27.0-py3-none-any.whl", hash = "sha256:56b5bbd5d61aab05e300d9d62a6b3c134827bbd28d0b12f2649c2da368006c9e", size = 18541 }, -] - -[[package]] -name = "opentelemetry-exporter-prometheus" -version = "0.48b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-sdk" }, - { name = "prometheus-client" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/dd/69/a8cc4fda5d620d6c1544f93698a58d1a2871fa41b05d3c2055e715c9ce27/opentelemetry_exporter_prometheus-0.48b0.tar.gz", hash = "sha256:46d2620b2b7223731103fd76faee2dd37d05316602574ce64ec376124aec7c29", size = 14815 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/20/c8e467963f45753be784c34d0f26e244d641025f7ac13e7f8316d959fc68/opentelemetry_exporter_prometheus-0.48b0-py3-none-any.whl", hash = "sha256:a54342b597bdaeb799fd5414a789df84bc0d2f033258702d141d731590ab3b2d", size = 12830 }, -] - -[[package]] -name = "opentelemetry-proto" -version = "1.27.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9a/59/959f0beea798ae0ee9c979b90f220736fbec924eedbefc60ca581232e659/opentelemetry_proto-1.27.0.tar.gz", hash = "sha256:33c9345d91dafd8a74fc3d7576c5a38f18b7fdf8d02983ac67485386132aedd6", size = 34749 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/56/3d2d826834209b19a5141eed717f7922150224d1a982385d19a9444cbf8d/opentelemetry_proto-1.27.0-py3-none-any.whl", hash = "sha256:b133873de5581a50063e1e4b29cdcf0c5e253a8c2d8dc1229add20a4c3830ace", size = 52464 }, -] - -[[package]] -name = "opentelemetry-sdk" -version = "1.27.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0d/9a/82a6ac0f06590f3d72241a587cb8b0b751bd98728e896cc4cbd4847248e6/opentelemetry_sdk-1.27.0.tar.gz", hash = "sha256:d525017dea0ccce9ba4e0245100ec46ecdc043f2d7b8315d56b19aff0904fa6f", size = 145019 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/bd/a6602e71e315055d63b2ff07172bd2d012b4cba2d4e00735d74ba42fc4d6/opentelemetry_sdk-1.27.0-py3-none-any.whl", hash = "sha256:365f5e32f920faf0fd9e14fdfd92c086e317eaa5f860edba9cdc17a380d9197d", size = 110505 }, -] - -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.48b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "deprecated" }, - { name = "opentelemetry-api" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0a/89/1724ad69f7411772446067cdfa73b598694c8c91f7f8c922e344d96d81f9/opentelemetry_semantic_conventions-0.48b0.tar.gz", hash = "sha256:12d74983783b6878162208be57c9effcb89dc88691c64992d70bb89dc00daa1a", size = 89445 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/7a/4f0063dbb0b6c971568291a8bc19a4ca70d3c185db2d956230dd67429dfc/opentelemetry_semantic_conventions-0.48b0-py3-none-any.whl", hash = "sha256:a0de9f45c413a8669788a38569c7e0a11ce6ce97861a628cca785deecdc32a1f", size = 149685 }, -] - [[package]] name = "packaging" version = "24.1" @@ -586,29 +416,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/92/caae8c86e94681b42c246f0bca35c059a2f0529e5b92619f6aba4cf7e7b6/pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f", size = 204643 }, ] -[[package]] -name = "prometheus-client" -version = "0.20.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3d/39/3be07741a33356127c4fe633768ee450422c1231c6d34b951fee1458308d/prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89", size = 78278 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/98/745b810d822103adca2df8decd4c0bbe839ba7ad3511af3f0d09692fc0f0/prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7", size = 54474 }, -] - -[[package]] -name = "protobuf" -version = "4.25.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/ab/cb61a4b87b2e7e6c312dce33602bd5884797fd054e0e53205f1c27cf0f66/protobuf-4.25.4.tar.gz", hash = "sha256:0dc4a62cc4052a036ee2204d26fe4d835c62827c855c8a03f29fe6da146b380d", size = 380283 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/43/27b48d9040763b78177d3083e16c70dba6e3c3ee2af64b659f6332c2b06e/protobuf-4.25.4-cp310-abi3-win32.whl", hash = "sha256:db9fd45183e1a67722cafa5c1da3e85c6492a5383f127c86c4c4aa4845867dc4", size = 392409 }, - { url = "https://files.pythonhosted.org/packages/0c/d4/589d673ada9c4c62d5f155218d7ff7ac796efb9c6af95b0bd29d438ae16e/protobuf-4.25.4-cp310-abi3-win_amd64.whl", hash = "sha256:ba3d8504116a921af46499471c63a85260c1a5fc23333154a427a310e015d26d", size = 413398 }, - { url = "https://files.pythonhosted.org/packages/34/ca/bf85ffe3dd16f1f2aaa6c006da8118800209af3da160ae4d4f47500eabd9/protobuf-4.25.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:eecd41bfc0e4b1bd3fa7909ed93dd14dd5567b98c941d6c1ad08fdcab3d6884b", size = 394160 }, - { url = "https://files.pythonhosted.org/packages/68/1d/e8961af9a8e534d66672318d6b70ea8e3391a6b13e16a29b039e4a99c214/protobuf-4.25.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:4c8a70fdcb995dcf6c8966cfa3a29101916f7225e9afe3ced4395359955d3835", size = 293700 }, - { url = "https://files.pythonhosted.org/packages/ca/6c/cc7ab2fb3a4a7f07f211d8a7bbb76bba633eb09b148296dbd4281e217f95/protobuf-4.25.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:3319e073562e2515c6ddc643eb92ce20809f5d8f10fead3332f71c63be6a7040", size = 294612 }, - { url = "https://files.pythonhosted.org/packages/b5/95/0ba7f66934a0a798006f06fc3d74816da2b7a2bcfd9b98c53d26f684c89e/protobuf-4.25.4-py3-none-any.whl", hash = "sha256:bfbebc1c8e4793cfd58589acfb8a1026be0003e852b9da7db5a4285bde996978", size = 156464 }, -] - [[package]] name = "pydantic" version = "2.9.1" @@ -958,41 +765,3 @@ sdist = { url = "https://files.pythonhosted.org/packages/84/8a/134f65c3d6066153b wheels = [ { url = "https://files.pythonhosted.org/packages/5d/ea/12f774a18b55754c730c8383dad8f10d7b87397d1cb6b2b944c87381bb3b/virtualenv-20.26.4-py3-none-any.whl", hash = "sha256:48f2695d9809277003f30776d155615ffc11328e6a0a8c1f0ec80188d7874a55", size = 6013327 }, ] - -[[package]] -name = "wrapt" -version = "1.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/4c/063a912e20bcef7124e0df97282a8af3ff3e4b603ce84c481d6d7346be0a/wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", size = 53972 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/03/c188ac517f402775b90d6f312955a5e53b866c964b32119f2ed76315697e/wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09", size = 37313 }, - { url = "https://files.pythonhosted.org/packages/0f/16/ea627d7817394db04518f62934a5de59874b587b792300991b3c347ff5e0/wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d", size = 38164 }, - { url = "https://files.pythonhosted.org/packages/7f/a7/f1212ba098f3de0fd244e2de0f8791ad2539c03bef6c05a9fcb03e45b089/wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389", size = 80890 }, - { url = "https://files.pythonhosted.org/packages/b7/96/bb5e08b3d6db003c9ab219c487714c13a237ee7dcc572a555eaf1ce7dc82/wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060", size = 73118 }, - { url = "https://files.pythonhosted.org/packages/6e/52/2da48b35193e39ac53cfb141467d9f259851522d0e8c87153f0ba4205fb1/wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1", size = 80746 }, - { url = "https://files.pythonhosted.org/packages/11/fb/18ec40265ab81c0e82a934de04596b6ce972c27ba2592c8b53d5585e6bcd/wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3", size = 85668 }, - { url = "https://files.pythonhosted.org/packages/0f/ef/0ecb1fa23145560431b970418dce575cfaec555ab08617d82eb92afc7ccf/wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956", size = 78556 }, - { url = "https://files.pythonhosted.org/packages/25/62/cd284b2b747f175b5a96cbd8092b32e7369edab0644c45784871528eb852/wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d", size = 85712 }, - { url = "https://files.pythonhosted.org/packages/e5/a7/47b7ff74fbadf81b696872d5ba504966591a3468f1bc86bca2f407baef68/wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362", size = 35327 }, - { url = "https://files.pythonhosted.org/packages/cf/c3/0084351951d9579ae83a3d9e38c140371e4c6b038136909235079f2e6e78/wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89", size = 37523 }, - { url = "https://files.pythonhosted.org/packages/92/17/224132494c1e23521868cdd57cd1e903f3b6a7ba6996b7b8f077ff8ac7fe/wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", size = 37614 }, - { url = "https://files.pythonhosted.org/packages/6a/d7/cfcd73e8f4858079ac59d9db1ec5a1349bc486ae8e9ba55698cc1f4a1dff/wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", size = 38316 }, - { url = "https://files.pythonhosted.org/packages/7e/79/5ff0a5c54bda5aec75b36453d06be4f83d5cd4932cc84b7cb2b52cee23e2/wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", size = 86322 }, - { url = "https://files.pythonhosted.org/packages/c4/81/e799bf5d419f422d8712108837c1d9bf6ebe3cb2a81ad94413449543a923/wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", size = 79055 }, - { url = "https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", size = 87291 }, - { url = "https://files.pythonhosted.org/packages/49/4e/5d2f6d7b57fc9956bf06e944eb00463551f7d52fc73ca35cfc4c2cdb7aed/wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", size = 90374 }, - { url = "https://files.pythonhosted.org/packages/a6/9b/c2c21b44ff5b9bf14a83252a8b973fb84923764ff63db3e6dfc3895cf2e0/wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", size = 83896 }, - { url = "https://files.pythonhosted.org/packages/14/26/93a9fa02c6f257df54d7570dfe8011995138118d11939a4ecd82cb849613/wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", size = 91738 }, - { url = "https://files.pythonhosted.org/packages/a2/5b/4660897233eb2c8c4de3dc7cefed114c61bacb3c28327e64150dc44ee2f6/wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", size = 35568 }, - { url = "https://files.pythonhosted.org/packages/5c/cc/8297f9658506b224aa4bd71906447dea6bb0ba629861a758c28f67428b91/wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", size = 37653 }, - { url = "https://files.pythonhosted.org/packages/ff/21/abdedb4cdf6ff41ebf01a74087740a709e2edb146490e4d9beea054b0b7a/wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", size = 23362 }, -] - -[[package]] -name = "zipp" -version = "3.20.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d3/8b/1239a3ef43a0d0ebdca623fb6413bc7702c321400c5fdd574f0b7aa0fbb4/zipp-3.20.1.tar.gz", hash = "sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b", size = 23848 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/9e/c96f7a4cd0bf5625bb409b7e61e99b1130dc63a98cb8b24aeabae62d43e8/zipp-3.20.1-py3-none-any.whl", hash = "sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064", size = 8988 }, -]