diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index d6df0a9a0eb78..dcd6098b071ae 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,43 @@ -FROM mcr.microsoft.com/vscode/devcontainers/python:3.11 +FROM mcr.microsoft.com/vscode/devcontainers/python:3.13 +COPY --from=ghcr.io/astral-sh/uv:0.5.11 /uv /uvx /bin/ +ARG USERNAME=vscode RUN apt-get update && \ - apt-get install -y --no-install-recommends libgdal-dev + apt-get install -y --no-install-recommends libgdal-dev && \ + rm -rf /var/lib/apt/lists/* + +RUN python3 -m pip install pipx --no-cache-dir +RUN python3 -m pipx ensurepath +RUN pipx install rust-just + +WORKDIR /app + +# Enable bytecode compilation +ENV UV_COMPILE_BYTECODE=1 + +# Copy from the cache instead of linking since it's a mounted volume +ENV UV_LINK_MODE=copy + +COPY . /app + +# Install the project's dependencies using the lockfile and settings +RUN --mount=type=cache,target=/root/.cache/uv \ + --mount=type=bind,source=uv.lock,target=uv.lock \ + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ + uv venv && uv sync --group dev --group tests \ + --extra duckdb --extra clickhouse --extra examples --extra geospatial + +ENV VENV_DIR=.venv +RUN chown -R $USERNAME $VENV_DIR && chmod -R 755 $VENV_DIR + +ENV IBIS_PROJECT=. +RUN chown -R $USERNAME $IBIS_PROJECT + +# Place executables in the environment at the front of the path +ENV PATH="/app/.venv/bin:$PATH" + +SHELL ["/bin/bash", "-c", "source .venv/bin/activate"] + +ENTRYPOINT [] + +USER $USERNAME diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 12fd9b34bb2e2..bb2c07c9d7490 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,9 @@ { - "build": { "dockerfile": "Dockerfile" }, - "postCreateCommand": ".devcontainer/postCreate.sh", + "build": { "dockerfile": "Dockerfile", "context": ".." }, + "containerUser": "vscode", + "remoteUser": "vscode", + "postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}", + "workspaceFolder": "/app", "customizations": { "codespaces": { "openFiles": ["docs/tutorials/getting_started.qmd"] diff --git a/.gitattributes b/.gitattributes index c63a5474eb624..a37573b1dd800 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,5 @@ flake.lock linguist-generated=true -poetry.lock linguist-generated=true +uv.lock linguist-generated=true ibis/examples/pixi.lock linguist-generated=true requirements-dev.txt linguist-generated=true docs/_freeze/**/html.json linguist-generated=true diff --git a/.github/renovate.json b/.github/renovate.json index 6c4856b60c49a..39d7990ade72c 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,9 +1,15 @@ { "rangeStrategy": "widen", - "extends": ["config:base", ":enablePreCommit", ":disableDependencyDashboard"], - "schedule": ["after 10pm and before 5am every weekday", "every weekend"], + "extends": ["config:recommended", ":enablePreCommit", ":dependencyDashboard"], + "schedule": [ + "after 10pm every weekday", + "every weekend", + "before 5am every weekday" + ], "semanticCommits": "enabled", - "lockFileMaintenance": { "enabled": true }, + "lockFileMaintenance": { + "enabled": true + }, "enabledManagers": [ "docker-compose", "dockerfile", @@ -20,74 +26,78 @@ }, { "matchManagers": ["docker-compose"], - "matchPackagePatterns": ["postgres"], "matchCurrentVersion": "/^13\\..+$/", - "allowedVersions": "/^13\\..+$/" + "allowedVersions": "/^13\\..+$/", + "matchPackageNames": ["/postgres/"] + }, + { + "addLabels": ["pyspark"], + "matchPackageNames": ["/spark/"] }, { - "matchPackagePrefixes": ["clickhouse"], - "addLabels": ["clickhouse"] + "addLabels": ["clickhouse"], + "matchPackageNames": ["/clickhouse/"] }, { - "matchPackagePatterns": ["datafusion"], - "addLabels": ["datafusion"] + "addLabels": ["datafusion"], + "matchPackageNames": ["/datafusion/"] }, { - "matchPackagePatterns": [ - "db-dtypes", - "google-cloud-bigquery", - "google-cloud-bigquery-storage", - "pydata-google-auth" - ], - "addLabels": ["bigquery"] + "addLabels": ["bigquery"], + "matchPackageNames": [ + "/db-dtypes/", + "/google-cloud-bigquery/", + "/google-cloud-bigquery-storage/", + "/pydata-google-auth/" + ] }, { - "matchPackagePatterns": ["duckdb"], - "addLabels": ["duckdb"] + "addLabels": ["duckdb"], + "matchPackageNames": ["/duckdb/"] }, { - "matchPackagePatterns": ["impyla", "impala", "kudu"], - "addLabels": ["impala"] + "addLabels": ["impala"], + "matchPackageNames": ["/impyla/", "/impala/", "/kudu/"] }, { - "matchPackagePatterns": ["oracledb", "oracle-free"], - "addLabels": ["oracle"] + "addLabels": ["oracle"], + "matchPackageNames": ["/oracledb/", "/oracle-free/"] }, { - "matchPackagePatterns": ["polars"], - "addLabels": ["polars"] + "addLabels": ["polars"], + "matchPackageNames": ["/polars/"] }, { - "matchPackagePatterns": ["psycopg2", "postgres"], - "addLabels": ["postgres"] + "addLabels": ["postgres"], + "matchPackageNames": ["/psycopg2/", "/postgres/"] }, { - "matchPackagePatterns": ["pydruid", "zookeeper", "druid"], - "addLabels": ["druid"] + "addLabels": ["druid"], + "matchPackageNames": ["/pydruid/", "/zookeeper/", "/druid/"] }, { - "matchPackagePatterns": ["mysqlclient", "mariadb"], - "addLabels": ["mysql"] + "addLabels": ["mysql"], + "matchPackageNames": ["/mysqlclient/", "/mariadb/"] }, { - "matchPackagePatterns": ["pymssql", "mssql"], - "addLabels": ["mssql"] + "addLabels": ["mssql"], + "matchPackageNames": ["/pymssql/", "/mssql/"] }, { - "matchPackagePatterns": ["pyspark"], - "addLabels": ["pyspark"] + "addLabels": ["pyspark"], + "matchPackageNames": ["/pyspark/"] }, { - "matchPackagePatterns": ["risingwave"], - "addLabels": ["risingwave"] + "addLabels": ["risingwave"], + "matchPackageNames": ["/risingwave/"] }, { - "matchPackagePatterns": ["snowflake-connector-python"], - "addLabels": ["snowflake"] + "addLabels": ["snowflake"], + "matchPackageNames": ["/snowflake-connector-python/"] }, { - "matchPackagePatterns": ["trino", "minio"], - "addLabels": ["trino"] + "addLabels": ["trino"], + "matchPackageNames": ["/trino/", "/minio/"] }, { "matchDepTypes": ["dev"], diff --git a/.github/workflows/assign.yml b/.github/workflows/assign.yml index b99109488bc78..6c373483fc9ae 100644 --- a/.github/workflows/assign.yml +++ b/.github/workflows/assign.yml @@ -10,6 +10,6 @@ jobs: runs-on: ubuntu-latest if: github.event.comment.body == '/take' steps: - - uses: pozil/auto-assign-issue@v2.0.0 + - uses: pozil/auto-assign-issue@v2.0.1 with: assignees: ${{ github.event.comment.user.login }} diff --git a/.github/workflows/check-generated-files.yml b/.github/workflows/check-generated-files.yml index 1f5614be4147b..6fc30b4095b69 100644 --- a/.github/workflows/check-generated-files.yml +++ b/.github/workflows/check-generated-files.yml @@ -39,14 +39,14 @@ jobs: uses: actions/setup-python@v5 id: install_python with: - python-version: "3.12" + python-version: "3.13" cache: pip cache-dependency-path: requirements-dev.txt - name: install uv - uses: astral-sh/setup-uv@v3.2.2 + uses: astral-sh/setup-uv@v5.1.0 with: - enable-cache: true + version: "0.4.x" - name: update apt-get run: sudo apt-get update -y -q @@ -73,7 +73,7 @@ jobs: - name: upload code coverage if: success() continue-on-error: true - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: core,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }} token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/create-rotate-key-issue.yml b/.github/workflows/create-rotate-key-issue.yml index 3e62ec8c2ecb2..b356cbc6d6b96 100644 --- a/.github/workflows/create-rotate-key-issue.yml +++ b/.github/workflows/create-rotate-key-issue.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Generate a GitHub token - uses: actions/create-github-app-token@v1.11.0 + uses: actions/create-github-app-token@v1.11.1 id: generate_token with: app-id: ${{ secrets.SQUAWK_BOT_APP_ID }} diff --git a/.github/workflows/docs-preview.yml b/.github/workflows/docs-preview.yml index e3cf43b0c337d..fea3169fda8e4 100644 --- a/.github/workflows/docs-preview.yml +++ b/.github/workflows/docs-preview.yml @@ -13,7 +13,7 @@ jobs: cancel-in-progress: true if: github.event.label.name == 'docs-preview' steps: - - uses: actions/create-github-app-token@v1.11.0 + - uses: actions/create-github-app-token@v1.11.1 id: generate_token with: app-id: ${{ secrets.DOCS_BOT_APP_ID }} diff --git a/.github/workflows/ibis-backends-cloud.yml b/.github/workflows/ibis-backends-cloud.yml index 120918b995ef9..9d315004207ba 100644 --- a/.github/workflows/ibis-backends-cloud.yml +++ b/.github/workflows/ibis-backends-cloud.yml @@ -36,7 +36,7 @@ jobs: matrix: python-version: - "3.10" - - "3.12" + - "3.13" backend: - name: snowflake title: Snowflake @@ -53,7 +53,7 @@ jobs: title: BigQuery extras: - --extra bigquery - - python-version: "3.12" + - python-version: "3.13" backend: name: bigquery title: BigQuery @@ -93,7 +93,7 @@ jobs: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - - uses: actions/create-github-app-token@v1.11.0 + - uses: actions/create-github-app-token@v1.11.1 id: generate_token with: app-id: ${{ secrets.DOCS_BOT_APP_ID }} @@ -113,9 +113,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - name: install additional deps if: matrix.backend.key == 'snowpark' @@ -175,7 +173,7 @@ jobs: - name: upload code coverage if: success() continue-on-error: true - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: backend,${{ matrix.backend.name }},${{ runner.os }},python-${{ steps.install_python.outputs.python-version }} token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/ibis-backends.yml b/.github/workflows/ibis-backends.yml index 9a1b0fa742491..193fd68602ad3 100644 --- a/.github/workflows/ibis-backends.yml +++ b/.github/workflows/ibis-backends.yml @@ -53,7 +53,7 @@ jobs: - windows-latest python-version: - "3.10" - - "3.12" + - "3.13" steps: - name: checkout uses: actions/checkout@v4 @@ -65,9 +65,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - uses: extractions/setup-just@v2 env: @@ -79,7 +77,7 @@ jobs: - name: upload code coverage if: success() continue-on-error: true - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: backend,bigquery,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }} token: ${{ secrets.CODECOV_TOKEN }} @@ -95,7 +93,7 @@ jobs: - windows-latest python-version: - "3.10" - - "3.12" + - "3.13" backend: - name: duckdb title: DuckDB @@ -258,7 +256,42 @@ jobs: sys-deps: - cmake - ninja-build + # pytorch wheel doesn't exist for windows + python 3.13, so test + # against 3.12 until that's shipped + - os: windows-latest + python-version: "3.12" + backend: + name: duckdb + title: DuckDB + serial: true + extras: + - --extra duckdb + - --extra deltalake + - --extra geospatial + - --extra examples + - --extra decompiler + - --extra polars + additional_deps: + - torch + # also test duckdb with python 3.13 on windows, *without* pytorch + - os: windows-latest + python-version: "3.13" + backend: + name: duckdb + title: DuckDB + serial: true + extras: + - --extra duckdb + - --extra deltalake + - --extra geospatial + - --extra examples + - --extra decompiler + - --extra polars exclude: + - os: windows-latest + python-version: "3.13" + backend: + name: duckdb - os: windows-latest backend: name: mysql @@ -317,7 +350,7 @@ jobs: - libgeos-dev # TODO(deepyaman): Test whether this works upon releasing https://github.com/cloudera/impyla/commit/bf1f94c3c4106ded6267d2485c1e939775a6a87f - os: ubuntu-latest - python-version: "3.12" + python-version: "3.13" backend: name: impala title: Impala @@ -383,7 +416,7 @@ jobs: services: - oracle - os: ubuntu-latest - python-version: "3.12" + python-version: "3.13" backend: name: flink title: Flink @@ -452,9 +485,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - name: install other deps if: matrix.backend.additional_deps != null @@ -498,7 +529,7 @@ jobs: - name: upload code coverage if: success() continue-on-error: true - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: backend,${{ matrix.backend.name }},${{ runner.os }},python-${{ steps.install_python.outputs.python-version }} token: ${{ secrets.CODECOV_TOKEN }} @@ -526,7 +557,7 @@ jobs: tag: local deps: - delta-spark==3.2.1 - - python-version: "3.12" + - python-version: "3.13" pyspark-minor-version: "3.5" tag: local deps: @@ -569,9 +600,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 # it requires a version of pandas that pyspark is not compatible with - name: remove lonboard @@ -603,7 +632,7 @@ jobs: # only upload coverage for jobs that aren't mostly xfails if: success() continue-on-error: true - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: backend,pyspark,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }} token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/ibis-benchmarks.yml b/.github/workflows/ibis-benchmarks.yml index bfeb07bdc238f..09683f481d0d8 100644 --- a/.github/workflows/ibis-benchmarks.yml +++ b/.github/workflows/ibis-benchmarks.yml @@ -30,9 +30,7 @@ jobs: python-version: "3.11" - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - name: install system dependencies run: sudo apt-get install -qq -y build-essential libgeos-dev freetds-dev unixodbc-dev diff --git a/.github/workflows/ibis-main.yml b/.github/workflows/ibis-main.yml index bb805518282d2..800e5745af176 100644 --- a/.github/workflows/ibis-main.yml +++ b/.github/workflows/ibis-main.yml @@ -49,6 +49,7 @@ jobs: - "3.10" - "3.11" - "3.12" + - "3.13" pyarrow: - true - false @@ -63,9 +64,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - name: install ${{ matrix.os }} system dependencies if: matrix.os == 'ubuntu-latest' @@ -102,7 +101,7 @@ jobs: - name: upload code coverage if: success() continue-on-error: true - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: core,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }} token: ${{ secrets.CODECOV_TOKEN }} @@ -118,12 +117,10 @@ jobs: uses: actions/setup-python@v5 id: install_python with: - python-version: "3.12" + python-version: "3.13" - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - name: install system dependencies run: | @@ -156,9 +153,7 @@ jobs: python-version: "3.10" - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - uses: extractions/setup-just@v2 env: @@ -173,7 +168,7 @@ jobs: - name: upload code coverage if: success() continue-on-error: true - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: core,doctests,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }} token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/nix-skip-helper.yml b/.github/workflows/nix-skip-helper.yml index 19547c1584a05..5b8e90b1e63b2 100644 --- a/.github/workflows/nix-skip-helper.yml +++ b/.github/workflows/nix-skip-helper.yml @@ -32,14 +32,16 @@ jobs: matrix: os: - ubuntu-latest # x86_64-linux + - ubuntu-arm64-24.04 # aarch64-linux + - macos-13 # x86_64-darwin + - macos-14 # aarch64-darwin python-version: - - "3.10" - - "3.11" - "3.12" + - "3.13" include: - - os: ubuntu-arm64-24.04 - python-version: "3.12" - - os: macos-14 + - os: ubuntu-latest python-version: "3.10" + - os: ubuntu-latest + python-version: "3.11" steps: - run: echo "No build required" diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 088a8c675b945..7b70b2ed7c7f0 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -34,15 +34,17 @@ jobs: matrix: os: - ubuntu-latest # x86_64-linux + - ubuntu-arm64-24.04 # aarch64-linux + - macos-13 # x86_64-darwin + - macos-14 # aarch64-darwin python-version: - - "3.10" - - "3.11" - "3.12" + - "3.13" include: - - os: ubuntu-arm64-24.04 # aarch64-linux - python-version: "3.12" - - os: macos-14 # aarch64-darwin - python-version: "3.12" + - os: ubuntu-latest + python-version: "3.10" + - os: ubuntu-latest + python-version: "3.11" steps: - name: checkout uses: actions/checkout@v4 @@ -61,16 +63,21 @@ jobs: authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} extraPullNames: nix-community - - name: nix build and test + - name: nix build environment run: | set -euo pipefail version='${{ matrix.python-version }}' nix build ".#ibis${version//./}" --fallback --keep-going --print-build-logs + - name: nix test + run: | + set -euo pipefail + + version='${{ matrix.python-version }}' + nix build ".#ibis${version//./}.passthru.tests.pytest" --fallback --keep-going --print-build-logs + - name: nix build devShell - # TODO: dev shell doesn't yet build on macos-14 (aarch64-darwin) - continue-on-error: ${{ matrix.os == 'macos-14' }} run: | set -euo pipefail diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 8d5d5db899222..d2470be56960e 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -27,12 +27,10 @@ jobs: - name: install python uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: "3.13" - name: install uv - uses: astral-sh/setup-uv@v3.2.2 - with: - enable-cache: true + uses: astral-sh/setup-uv@v5.1.0 - uses: extractions/setup-just@v2 env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1b6971819a100..45df4c2b205ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: release: runs-on: ubuntu-latest steps: - - uses: actions/create-github-app-token@v1.11.0 + - uses: actions/create-github-app-token@v1.11.1 id: generate_token with: app-id: ${{ secrets.APP_ID }} diff --git a/.github/workflows/update-nix-flakes.yml b/.github/workflows/update-nix-flakes.yml index 39d77564835aa..80b5fa42dc16e 100644 --- a/.github/workflows/update-nix-flakes.yml +++ b/.github/workflows/update-nix-flakes.yml @@ -1,4 +1,4 @@ -name: update-flake-lock +name: Update nix flakes on: workflow_dispatch: schedule: @@ -11,9 +11,9 @@ jobs: - uses: actions/checkout@v4 - name: install nix - uses: DeterminateSystems/nix-installer-action@v15 + uses: DeterminateSystems/nix-installer-action@v16 - - uses: actions/create-github-app-token@v1.11.0 + - uses: actions/create-github-app-token@v1.11.1 id: generate-token with: app-id: ${{ secrets.SQUAWK_BOT_APP_ID }} diff --git a/.gitignore b/.gitignore index 5389b17db1cd2..7de0c4419340c 100644 --- a/.gitignore +++ b/.gitignore @@ -153,3 +153,7 @@ docs/**/*.html .jupyterlite.doit.db docs/jupyter_lite_config.json *.quarto_ipynb + +# pixi environments +.pixi +*.egg-info diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index db3d68911ace4..9501b971c706a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -105,6 +105,7 @@ repos: name: shellcheck language: system entry: shellcheck + args: ["--shell", "bash"] types_or: - sh - shell diff --git a/.releaserc.js b/.releaserc.js index 53a28c9562a78..3ec1f04942032 100644 --- a/.releaserc.js +++ b/.releaserc.js @@ -65,8 +65,7 @@ module.exports = { { verifyConditionsCmd: "ci/release/verify_conditions.sh ${options.dryRun}", - // TODO(cpcloud): re-enable once deprecation removals for 10.0 are merged - // verifyReleaseCmd: "ci/release/verify_release.sh ${nextRelease.version}", + verifyReleaseCmd: "ci/release/verify_release.sh ${nextRelease.version}", prepareCmd: "ci/release/prepare.sh ${nextRelease.version}", publishCmd: "ci/release/publish.sh" } diff --git a/README.md b/README.md index d153e5ee1711e..423a0d3367380 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Ibis is the portable Python dataframe library: - Lazy dataframe expressions - Interactive mode for iterative data exploration - [Compose Python dataframe and SQL code](#python--sql-better-together) -- Use the same dataframe API for [20+ backends](#backends) +- Use the same dataframe API for [nearly 20 backends](#backends) - Iterate locally and deploy remotely by [changing a single line of code](#portability) See the documentation on ["Why Ibis?"](https://ibis-project.org/why) to learn more. diff --git a/compose.yaml b/compose.yaml index 67e5298f28c02..dbf661937b3c2 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,6 +1,6 @@ services: clickhouse: - image: clickhouse/clickhouse-server:24.10.1.2812-alpine + image: clickhouse/clickhouse-server:24.12.1.1614-alpine ports: - 8123:8123 # http port - 9000:9000 # native protocol port @@ -28,7 +28,7 @@ services: - CMD - mariadb-admin - ping - image: mariadb:11.5.2 + image: mariadb:11.6.2 ports: - 3306:3306 networks: @@ -38,7 +38,6 @@ services: - $PWD/docker/mysql:/docker-entrypoint-initdb.d:ro postgres: - user: postgres environment: POSTGRES_PASSWORD: postgres POSTGRES_DB: ibis_testing @@ -82,7 +81,7 @@ services: - mssql hive-metastore-db: - image: postgres:17.0-alpine + image: postgres:17.2-alpine environment: POSTGRES_USER: admin POSTGRES_PASSWORD: admin @@ -99,7 +98,7 @@ services: - trino minio: - image: bitnami/minio:2024.11.7 + image: bitnami/minio:2024.12.18 environment: MINIO_ROOT_USER: accesskey MINIO_ROOT_PASSWORD: secretkey @@ -161,7 +160,7 @@ services: test: - CMD-SHELL - trino --output-format null --execute 'show schemas in hive; show schemas in memory' - image: trinodb/trino:464 + image: trinodb/trino:468 ports: - 8080:8080 networks: @@ -172,7 +171,7 @@ services: - $PWD/docker/trino/jvm.config:/etc/trino/jvm.config:ro druid-postgres: - image: postgres:17.0-alpine + image: postgres:17.2-alpine container_name: druid-postgres environment: POSTGRES_PASSWORD: FoolishPassword @@ -204,7 +203,7 @@ services: - druid druid-coordinator: - image: apache/druid:31.0.0 + image: apache/druid:31.0.1 hostname: coordinator container_name: coordinator volumes: @@ -229,7 +228,7 @@ services: - druid druid-broker: - image: apache/druid:31.0.0 + image: apache/druid:31.0.1 hostname: broker container_name: broker volumes: @@ -257,7 +256,7 @@ services: - druid druid-historical: - image: apache/druid:31.0.0 + image: apache/druid:31.0.1 hostname: historical container_name: historical volumes: @@ -284,7 +283,7 @@ services: - druid druid-middlemanager: - image: apache/druid:31.0.0 + image: apache/druid:31.0.1 hostname: middlemanager container_name: middlemanager volumes: @@ -312,7 +311,7 @@ services: - druid druid: - image: apache/druid:31.0.0 + image: apache/druid:31.0.1 hostname: router container_name: router volumes: @@ -346,7 +345,7 @@ services: - druid oracle: - image: gvenzl/oracle-free:23.5-slim + image: gvenzl/oracle-free:23.6-slim environment: ORACLE_PASSWORD: ibis ORACLE_DATABASE: IBIS_TESTING @@ -555,7 +554,7 @@ services: - impala risingwave: - image: ghcr.io/risingwavelabs/risingwave:v2.0.2 + image: ghcr.io/risingwavelabs/risingwave:v2.1.0 command: "standalone --meta-opts=\" \ --advertise-addr 0.0.0.0:5690 \ --backend mem \ @@ -588,7 +587,7 @@ services: - risingwave spark-connect: - image: bitnami/spark:3.5.3 + image: bitnami/spark:3.5.4 ports: - 15002:15002 command: /opt/bitnami/spark/sbin/start-connect-server.sh --name ibis_testing --packages org.apache.spark:spark-connect_2.12:3.5.3,org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1,io.delta:delta-core_2.12:2.1.0 diff --git a/docker/postgres/Dockerfile b/docker/postgres/Dockerfile index 477d860d8b754..a47152507b982 100644 --- a/docker/postgres/Dockerfile +++ b/docker/postgres/Dockerfile @@ -1,12 +1,12 @@ -FROM postgis/postgis:16-3.5-alpine AS pgvector-builder -RUN apk add --no-cache git build-base clang15 llvm15-dev llvm15 +FROM postgis/postgis:17-3.5-alpine AS pgvector-builder +RUN apk add --no-cache git build-base clang19 llvm19-dev llvm19 WORKDIR /tmp -RUN git clone --branch v0.7.4 https://github.com/pgvector/pgvector.git +RUN git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git WORKDIR /tmp/pgvector RUN make && make install -FROM postgis/postgis:16-3.5-alpine -RUN apk add --no-cache postgresql16-plpython3 +FROM postgis/postgis:17-3.5-alpine +RUN apk add --no-cache postgresql17-plpython3 COPY --from=pgvector-builder /usr/local/lib/postgresql/bitcode/vector.index.bc /usr/local/lib/postgresql/bitcode/vector.index.bc COPY --from=pgvector-builder /usr/local/lib/postgresql/vector.so /usr/local/lib/postgresql/vector.so COPY --from=pgvector-builder /usr/local/share/postgresql/extension /usr/local/share/postgresql/extension diff --git a/docs/backend_table_hiearchy.qmd b/docs/backend_table_hierarchy.qmd similarity index 100% rename from docs/backend_table_hiearchy.qmd rename to docs/backend_table_hierarchy.qmd diff --git a/docs/backends/_utils.py b/docs/backends/_utils.py index 95ead52d470bf..4a0b1bdf89cf4 100644 --- a/docs/backends/_utils.py +++ b/docs/backends/_utils.py @@ -63,7 +63,7 @@ def render_method(*, member, renderer: MdRenderer) -> Iterator[str]: yield f"{header} {name} {{ #{member.path} }}" yield "\n" if params is not None: - yield f"`{name}({params})`" + yield f"`{name}({', '.join(params)})`" yield "\n" yield get_renderer(header_level + 1).render(find_member_with_docstring(member)) diff --git a/docs/backends/impala.qmd b/docs/backends/impala.qmd index d715de75e0aa9..4de16db1b88d1 100644 --- a/docs/backends/impala.qmd +++ b/docs/backends/impala.qmd @@ -84,7 +84,6 @@ from _utils import get_backend, get_object, render_methods render_methods = partial(render_methods, level=4) backend = get_object("ibis.backends.impala", "Backend") -table = get_object("ibis.backends.impala.client", "ImpalaTable") ``` ## Database methods @@ -97,8 +96,7 @@ render_methods(backend, "create_database", "drop_database", "list_databases") ## Table methods -The `Backend` object itself has many helper utility methods. You'll -find the most methods on `ImpalaTable`. +The `Backend` object itself has many helper utility methods. ```{python} #| echo: false @@ -117,20 +115,6 @@ render_methods( ) ``` -The best way to interact with a single table is through the -`ImpalaTable` object you get back from `Backend.table`. - -```{python} -#| echo: false -#| output: asis -render_methods( - table, - "drop", - "insert", - "describe_formatted", -) -``` - ## Creating views ```{python} @@ -187,9 +171,7 @@ import ibis client = ibis.impala.connect(host=host) ``` -You can accomplish many tasks directly through the client object, but we -additionally provide APIs to streamline tasks involving a single Impala -table or database. +You can accomplish many tasks directly through the client object. ## Table objects @@ -206,17 +188,6 @@ expression referencing a physical Impala table: table = client.table('functional_alltypes', database='ibis_testing') ``` -`ImpalaTable` is a Python subclass of the more general Ibis `Table` -that has additional Impala-specific methods. So you can use it -interchangeably with any code expecting a `Table`. - -While the client has a `drop_table` method you can use to drop tables, -the table itself has a method `drop` that you can use: - -```python -table.drop() -``` - ## Expression execution Ibis expressions have execution methods like `to_pandas` that compile and run the @@ -257,11 +228,11 @@ If you pass an Ibis expression to `create_table`, Ibis issues a `CREATE TABLE ... AS SELECT` (CTAS) statement: ```python ->>> table = db.table('functional_alltypes') +>>> table = client.table('functional_alltypes') >>> expr = table.group_by('string_col').size() ->>> db.create_table('string_freqs', expr, format='parquet') +>>> client.create_table('string_freqs', expr, format='parquet') ->>> freqs = db.table('string_freqs') +>>> freqs = client.table('string_freqs') >>> freqs.to_pandas() string_col count 0 9 730 @@ -294,13 +265,12 @@ translated to the appropriate Impala schema and data types. As Ibis types are simplified compared with Impala types, this may expand in the future to include a more fine-grained schema declaration. -You can use the `create_table` method either on a database or client -object. +You can use the `create_table` method on the client object. ```python schema = ibis.schema(dict(foo='string', year='int32', month='int16')) name = 'new_table' -db.create_table(name, schema=schema) +client.create_table(name, schema=schema) ``` By default, this stores the data files in the database default location. @@ -311,14 +281,14 @@ from getpass import getuser schema = ibis.schema(dict(foo='string', year='int32', month='int16')) name = 'new_table' location = '/home/{}/new-table-data'.format(getuser()) -db.create_table(name, schema=schema, location=location) +client.create_table(name, schema=schema, location=location) ``` If the schema matches a known table schema, you can always use the `schema` method to get a schema object: ```python ->>> t = db.table('functional_alltypes') +>>> t = client.table('functional_alltypes') >>> t.schema() ibis.Schema { id int32 @@ -345,7 +315,7 @@ used as the partition keys. ```python schema = ibis.schema(dict(foo='string', year='int32', month='int16')) name = 'new_table' -db.create_table(name, schema=schema, partition=['year', 'month']) +client.create_table(name, schema=schema, partition=['year', 'month']) ``` ## Partitioned tables @@ -355,7 +325,7 @@ each partition behaves as its own \"subtable\" sharing a common schema, each partition can have its own file format, directory path, serialization properties, and so forth. -There are a handful of table methods for adding and removing partitions +There are a handful of methods for adding and removing partitions and getting information about the partition schema and any existing partition data: @@ -363,12 +333,11 @@ partition data: #| echo: false #| output: asis render_methods( - table, + backend, "add_partition", "drop_partition", - "is_partitioned", - "partition_schema", - "partitions", + "get_partition_schema", + "list_partitions", ) ``` @@ -379,15 +348,13 @@ values, or pass a list of the partition values: ```python schema = ibis.schema(dict(foo='string', year='int32', month='int16')) name = 'new_table' -db.create_table(name, schema=schema, partition=['year', 'month']) +client.create_table(name, schema=schema, partition=['year', 'month']) -table = db.table(name) +client.add_partition(name, {'year': 2007, 'month', 4}) +client.add_partition(name, [2007, 5]) +client.add_partition(name, [2007, 6]) -table.add_partition({'year': 2007, 'month', 4}) -table.add_partition([2007, 5]) -table.add_partition([2007, 6]) - -table.drop_partition([2007, 6]) +client.drop_partition(name, [2007, 6]) ``` We'll cover partition metadata management and data loading below. @@ -398,13 +365,15 @@ If the schemas are compatible, you can insert into a table directly from an Ibis table expression: ```python ->>> t = db.functional_alltypes ->>> db.create_table('insert_test', schema=t.schema()) ->>> target = db.table('insert_test') +>>> t = client.functional_alltypes +>>> client.create_table('insert_test', schema=t.schema()) + +>>> client.insert('insert_test', t[:3]) +>>> client.insert('insert_test', t[:3]) +>>> client.insert('insert_test', t[:3]) + +>>> target = client.table('insert_test') ->>> target.insert(t[:3]) ->>> target.insert(t[:3]) ->>> target.insert(t[:3]) >>> target.to_pandas() id bool_col tinyint_col ... timestamp_col year month @@ -419,8 +388,6 @@ an Ibis table expression: 8 5772 True 2 ... 2010-08-01 00:02:00.100 2010 8 [9 rows x 13 columns] - ->>> target.drop() ``` If the table is partitioned, you must indicate the partition you are @@ -428,7 +395,7 @@ inserting into: ```python part = {'year': 2007, 'month': 4} -table.insert(expr, partition=part) +client.insert(table_name, expr, partition=part) ``` ## Managing table metadata @@ -439,17 +406,16 @@ metadata. ### Detailed table metadata: `DESCRIBE FORMATTED` To get a handy wrangled version of `DESCRIBE FORMATTED` use the -`metadata` method. +`describe_formatted` method. ```{python} #| echo: false #| output: asis -render_methods(table, "metadata") +render_methods(backend, "describe_formatted") ``` ```python ->>> t = client.table('ibis_testing.functional_alltypes') ->>> meta = t.metadata() +>>> meta = t.describe_formatted('functional_alltypes', database='ibis_testing') >>> meta {'info': {'CreateTime': datetime.datetime(2021, 1, 14, 21, 23, 8), @@ -496,19 +462,17 @@ render_methods(table, "metadata") datetime.datetime(2021, 1, 14, 21, 23, 8) ``` -The `files` function is also available to see all of the physical HDFS +The `show_files` function is also available to see all of the physical HDFS data files backing a table: ```{python} #| echo: false #| output: asis -render_methods(table, "files") +render_methods(backend, "show_files") ``` ```python ->>> ss = c.table('tpcds_parquet.store_sales') - ->>> ss.files()[:5] +>>> client.show_files('store_sales', database='tpcds_parquet')[:5] path size \ 0 hdfs://localhost:20500/test-warehouse/tpcds.st... 160.61KB 1 hdfs://localhost:20500/test-warehouse/tpcds.st... 123.88KB @@ -526,36 +490,18 @@ render_methods(table, "files") ### Modifying table metadata -For unpartitioned tables, you can use the `alter` method to change its -location, file format, and other properties. For partitioned tables, to -change partition-specific metadata use `alter_partition`. - ```{python} #| echo: false #| output: asis -render_methods(table, "alter", "alter_partition") -``` - -For example, if you wanted to \"point\" an existing table at a directory -of CSV files, you could run the following command: - -```python -from getpass import getuser - -csv_props = { - 'serialization.format': ',', - 'field.delim': ',', -} -data_dir = '/home/{}/my-csv-files'.format(getuser()) - -table.alter(location=data_dir, format='text', serde_properties=csv_props) +render_methods(backend, "alter_partition") ``` -If the table is partitioned, you can modify only the properties of a -particular partition: +If a table is partitioned, you can modify the properties of a particular +partition: ```python -table.alter_partition( +client.alter_partition( + 'table_name', {'year': 2007, 'month': 5}, location=data_dir, format='text', @@ -570,7 +516,7 @@ table.alter_partition( ```{python} #| echo: false #| output: asis -render_methods(table, "compute_stats") +render_methods(backend, "compute_stats") ``` Impala-backed physical tables have a method `compute_stats` that @@ -579,14 +525,14 @@ query planning and optimization. It is standard practice to invoke this after creating a table or loading new data: ```python -table.compute_stats() +client.compute_stats('table_name') ``` If you are using a recent version of Impala, you can also access the `COMPUTE INCREMENTAL STATS` DDL command: ```python -table.compute_stats(incremental=True) +client.compute_stats('table_name', incremental=True) ``` ### Seeing table and column statistics @@ -594,17 +540,16 @@ table.compute_stats(incremental=True) ```{python} #| echo: false #| output: asis -render_methods(table, "column_stats", "stats") +render_methods(backend, "column_stats", "table_stats") ``` -The `compute_stats` and `stats` functions return the results of +The `compute_stats` and `table_stats` functions return the results of `SHOW COLUMN STATS` and `SHOW TABLE STATS`, respectively, and their output will depend, of course, on the last `COMPUTE STATS` call. ```python ->>> ss = c.table('tpcds_parquet.store_sales') ->>> ss.compute_stats(incremental=True) ->>> stats = ss.stats() +>>> client.compute_stats('store_sales', database='tpcds_parquet', incremental=True) +>>> stats = client.table_stats('store_sales', database='tpcds_parquet') >>> stats[:5] ss_sold_date_sk #Rows #Files Size Bytes Cached Cache Replication \ 0 2450829 1071 1 78.34KB NOT CACHED NOT CACHED @@ -627,7 +572,7 @@ output will depend, of course, on the last `COMPUTE STATS` call. 3 hdfs://localhost:20500/test-warehouse/tpcds.st... 4 hdfs://localhost:20500/test-warehouse/tpcds.st... ->>> cstats = ss.column_stats() +>>> cstats = client.column_status('store_sales', database='tpcds_parquet') >>> cstats Column Type #Distinct Values #Nulls Max Size Avg Size 0 ss_sold_time_sk BIGINT 13879 -1 NaN 8 @@ -657,14 +602,12 @@ output will depend, of course, on the last `COMPUTE STATS` call. ### `REFRESH` and `INVALIDATE METADATA` -These DDL commands are available as table-level and client-level -methods: +These DDL commands are available as client-level methods: ```{python} #| echo: false #| output: asis -render_methods(backend, "invalidate_metadata") -render_methods(table, "invalidate_metadata", "refresh") +render_methods(backend, "invalidate_metadata", "refresh") ``` You can invalidate the cached metadata for a single table or for all @@ -674,10 +617,9 @@ tables using `invalidate_metadata`, and similarly invoke ```python client.invalidate_metadata() -table = db.table(table_name) -table.invalidate_metadata() +client.invalidate_metadata(table_name) -table.refresh() +client.refresh(table_name) ``` These methods are often used in conjunction with the `LOAD DATA` @@ -782,8 +724,7 @@ For example: >>> data = pd.DataFrame({'foo': [1, 2, 3, 4], 'bar': ['a', 'b', 'c', 'd']}) ->>> db.create_table('pandas_table', data) ->>> t = db.pandas_table +>>> t = client.create_table('pandas_table', data) >>> t.to_pandas() bar foo 0 a 1 @@ -791,12 +732,9 @@ For example: 2 c 3 3 d 4 ->>> t.drop() - ->>> db.create_table('empty_for_insert', schema=t.schema()) +>>> to_insert = client.create_table('empty_for_insert', schema=t.schema()) ->>> to_insert = db.empty_for_insert ->>> to_insert.insert(data) +>>> client.insert('empty_for_insert', data) >>> to_insert.to_pandas() bar foo 0 a 1 @@ -804,35 +742,6 @@ For example: 2 c 3 3 d 4 ->>> to_insert.drop() -``` - -```python ->>> import pandas as pd - ->>> data = pd.DataFrame({'foo': [1, 2, 3, 4], 'bar': ['a', 'b', 'c', 'd']}) - ->>> db.create_table('pandas_table', data) ->>> t = db.pandas_table ->>> t.to_pandas() - foo bar -0 1 a -1 2 b -2 3 c -3 4 d - ->>> t.drop() ->>> db.create_table('empty_for_insert', schema=t.schema()) ->>> to_insert = db.empty_for_insert ->>> to_insert.insert(data) ->>> to_insert.to_pandas() - foo bar -0 1 a -1 2 b -2 3 c -3 4 d - ->>> to_insert.drop() ``` ## Queries on Parquet, Avro, and Delimited files diff --git a/docs/contribute/01_environment.qmd b/docs/contribute/01_environment.qmd index a38d201c92d19..af4612987eb33 100644 --- a/docs/contribute/01_environment.qmd +++ b/docs/contribute/01_environment.qmd @@ -18,17 +18,16 @@ the `conda/mamba` setup and refer to the comment related to `arm64` architectures. ::: -## Conda/Mamba +## Conda/Mamba/Pixi ### Support matrix [^conda-callout] -| Python Version {{< fa arrow-right >}} | Python 3.9 | Python 3.10 | Python 3.11 | +| | Python 3.10 | Python 3.11 | Python 3.12 | | -----------------------------------------: | :--------------------------: | :--------------: | :--------------: | -| **Operating System** {{< fa arrow-down >}} | | | | | **Linux** | {{< fa check >}}[^supported] | {{< fa check >}} | {{< fa check >}} | -| **macOS (x86_64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | -| **macOS (aarch64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | -| **Windows** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **macOS (x86_64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **macOS (aarch64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **Windows** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | ::: {.panel-tabset} @@ -45,6 +44,10 @@ managers = { "name": "Mamba", "url": "https://github.com/mamba-org/mamba", }, + "pixi": { + "name": "Pixi", + "url": "https://pixi.sh/latest/", + }, } for manager, params in managers.items(): @@ -58,7 +61,10 @@ for manager, params in managers.items(): print(f"1. Install `gh`") print() print(" ```sh") - print(f" {manager} install -c conda-forge gh") + if manager == "conda" or manager == "mamba": + print(f" {manager} install -c conda-forge gh") + elif manager == "pixi": + print(f" {manager} global install gh") print(" ```") print() print(f"1. Fork and clone the ibis repository:") @@ -67,29 +73,38 @@ for manager, params in managers.items(): print(" gh repo fork --clone --remote ibis-project/ibis") print(" ```") print() - print(f"1. Create a Conda environment using `environment.yml`") + print(f"1. Create a {name} environment using `environment.yml`") print() print(" ```sh") print(" cd ibis") - print(f" {manager} env create --file conda/environment.yml") + if manager == "conda" or manager == "mamba": + print(f" {manager} env create --file conda/environment.yml") + elif manager == "pixi": + print(f" {manager} init --import conda/environment.yml") print(" ```") print() - if manager == "conda" or manager == "mamba": - print() - print( - " If you're using arm64 architecture (Mac M1/M2), use " - "`conda/environment-arm64.yml` for setting up a dev environment for all the " - "backends that are possible to install excluding Flink; use " - "`conda/environment-arm64-flink.yml` for setting up a dev environment for all " - "the backends that are possible to install including Flink. The reason to have " - "two separate environments is because `apache-flink` forces `pyarrow` to " - "downgrade to 11.0, which causes conflicts in other backends." - ) + if manager == "pixi": + print(" This command will initialize a `pixi.toml` file and also modify ") + print("the `.gitignore` to prevent Pixi configuration from being added to ") + print("`git`.") print() + print( + " If you're using arm64 architecture (Mac M1/M2), use " + "`conda/environment-arm64.yml` for setting up a dev environment for all the " + "backends that are possible to install excluding Flink; use " + "`conda/environment-arm64-flink.yml` for setting up a dev environment for all " + "the backends that are possible to install including Flink. The reason to have " + "two separate environments is because `apache-flink` forces `pyarrow` to " + "downgrade to 11.0, which causes conflicts in other backends." + ) + print() print(f"1. Activate the environment") print() print(" ```sh") - print(f" {manager} activate ibis-dev") + if manager == "conda" or manager == "mamba": + print(f" {manager} activate ibis-dev") + elif manager == "pixi": + print(f" {manager} shell") print(" ```") print() print( @@ -97,7 +112,7 @@ for manager, params in managers.items(): ) print() print(" ```sh") - print(" pip install -e .") + print(" uv pip install -e .") print(" ```") print() ``` @@ -108,13 +123,13 @@ for manager, params in managers.items(): ### Support matrix -| Python Version {{< fa arrow-right >}} | Python 3.9 | Python 3.10 | Python 3.11 | -| -----------------------------------------: | :--------------------------: | :-----------------------: | :-----------------------: | -| **Operating System** {{< fa arrow-down >}} | | | | -| **Linux** | {{< fa check >}}[^supported] | {{< fa check >}} | {{< fa check >}} | -| **macOS (x86_64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | -| **macOS (arm64/M1/M2)** | {{< fa ban >}}[^m1] | {{< fa ban >}}[^m1] | {{< fa ban >}}[^m1] | -| **Windows** | {{< fa ban >}}[^unlikely] | {{< fa ban >}}[^unlikely] | {{< fa ban >}}[^unlikely] | +| | Python 3.10 | Python 3.11 | Python 3.12 | Python 3.13 | +| -----------------------: | :--------------------------: | :----------------: | :----------------: | :----------------: | +| **Linux (x86_64)** | {{< fa check >}}[^supported] | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **Linux (arm64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **macOS (x86_64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **macOS (arm64/M1/M2)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **Windows** | {{< fa ban >}}[^unlikely] | {{< fa ban >}} | {{< fa ban >}} | {{< fa ban >}} | 1. [Install `nix`](https://nixos.org/download.html) 1. Configure `nix` @@ -165,6 +180,71 @@ for manager, params in managers.items(): This will launch a `bash` shell with all of the required dependencies installed. This may take a while due to artifact download from the cache. +## Container (uv) + +### Support matrix + +| | Python 3.10 | Python 3.11 | Python 3.12 | Python 3.13 | +| ----------------------: | :----------------: | :----------------: | :----------------: | :----------------: | +| **Linux** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **macOS (x86_64)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **macOS (arm64/M1/M2)** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | +| **Windows** | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | {{< fa check >}} | + +1. Git clone the project repository. + +1. Install `Docker Desktop` for your platform. + +1. [Install `VS Code`](https://code.visualstudio.com/) + +1. [Install `VS Code Docker Extension`](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) + +1. [Install `VS Code Dev Containers Extension`](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + +1. If using an Apple Silicon Mac, virtualization may be fastest with Colima. + 1. [Install `Colima`](https://github.com/abiosoft/colima) + 2. Verify that the disk allocation to Colima is satisfactory with `colima template --editor code`. + 3. To use Colima for virtualization, `docker context use colima` or `export DOCKER_CONTEXT=colima`. + 4. Verify that the Colima context is in effect with `docker context ls` (look for '*'). + 5. Start the Colima VM: `start colima`. + 6. If you encounter disk resource issues after building images, `colima prune` or `colima delete` may be needed. + + As an alternative to `Colima`, install Rosetta 2. + + ```sh + softwareupdate --install-rosetta + ``` + +1. In `VS Code`, open the project directory. + +1. Menu options for working with devcontainers are available through the blue `><` + button, at the lower left corner of the project window. + + * Use `Reopen the container` to build an image and launch a container. + * Press any button to close the automatically launched terminal. + * Launch a new `VS Code` terminal from the main menu. + * The project will be in the container as an editable install with Ibis library, + dev and test dependencies installed, and with the working directory `/app`. + +1. Use `uv` commands such `uv pip list` to show the installed packages in the `uv` + .venv. + +1. Run non-`uv` commands in the virtual environment using `uv run`, for + example `uv run pytest -m core`. Standard `git` commands are available without + `uv run` because they do not need packages in the .venv to work. + +1. To exit a container, click the `Dev Container` button on the lower left of the + window and select the last menu option, `Close Remote Connection`. + +1. To ensure you have the latest dependencies from the main upstream branch based on + `pyproject.toml`: + + * Exit any running container. + * Sync your fork. + * From your local Git repo, `git pull origin main`. + * Reopen the project in a new container. + * `Rebuild Container` to copy files from the local Git repo and have the build + run `uv sync`. ## pip @@ -219,5 +299,4 @@ to build and serve the documentation. [^conda-callout]: Some optional dependencies for Windows and Mac OS are not available through `conda`/`mamba` [^supported]: Tested in CI. If this doesn't work for you, please [file an issue](https://github.com/ibis-project/ibis/issues/new). -[^m1]: Not working as of March 2024. See https://github.com/ibis-project/ibis/issues/8696 [^unlikely]: Unlikely to ever be supported or no upstream support. diff --git a/docs/how-to/extending/unbound_expression.qmd b/docs/how-to/extending/unbound_expression.qmd index 807bc86f3288a..70c9faedd46c7 100644 --- a/docs/how-to/extending/unbound_expression.qmd +++ b/docs/how-to/extending/unbound_expression.qmd @@ -107,7 +107,7 @@ con.table("results").to_pandas() Because Ibis separates the transformation logic from the execution engine, you can easily reuse the written transformation for another backend. Here we use -Polars as an example, but you can do the same for any of Ibis' 20+ supported +Polars as an example, but you can do the same for any of Ibis' nearly 20 supported backends as long as that particular backend supports the operations (see [the operation support matrix](../../backends/support/matrix.qmd)). diff --git a/docs/index.qmd b/docs/index.qmd index 5be4a9bd4dd83..59fb4a243f7c9 100644 --- a/docs/index.qmd +++ b/docs/index.qmd @@ -46,7 +46,7 @@ about: ### An open source dataframe library that works with any data system -- Use the same API for 20+ backends +- Use the same API for nearly 20 backends - Fast local dataframes with embedded DuckDB (default), Polars, or DataFusion - Iterate locally and deploy remotely by changing a single line of code - Compose SQL and Python dataframe code, bridging the gap between data engineering and data science @@ -90,9 +90,9 @@ grouped # <2> 1. Transform the table. 2. Display the transformed table. -### One API for 20+ backends +### One API for nearly 20 backends -Use the same dataframe API for 20+ backends: +Use the same dataframe API for nearly 20 backends: ```{python} #| code-fold: true diff --git a/docs/posts/classification-metrics-on-the-backend/confusion_matrix.png b/docs/posts/classification-metrics-on-the-backend/confusion_matrix.png new file mode 100644 index 0000000000000..7ca5bed71329c Binary files /dev/null and b/docs/posts/classification-metrics-on-the-backend/confusion_matrix.png differ diff --git a/docs/posts/classification-metrics-on-the-backend/index.qmd b/docs/posts/classification-metrics-on-the-backend/index.qmd new file mode 100644 index 0000000000000..aead0742b4335 --- /dev/null +++ b/docs/posts/classification-metrics-on-the-backend/index.qmd @@ -0,0 +1,232 @@ +--- +title: "Classification metrics on the backend" +author: "Tyler White" +date: "2024-12-05" +image: thumbnail.png +categories: + - blog + - machine learning + - portability +--- + +A review of binary classification models, metrics used to evaluate them, and +corresponding metric calculations with Ibis. + +We're going explore common classification metrics such as accuracy, precision, recall, +and F1 score, demonstrating how to compute each one using Ibis. In this example, we'll +use DuckDB, the default Ibis backend, but we could use this same code to execute +against another backend such as Postgres or Snowflake. This capability is useful as it +offers an easy and performant way to evaluate model performance without extracting data +from the source system. + +## Classification models + +In machine learning, classification entails categorizing data into different groups. +Binary classification, which is what we'll be covering in this post, specifically +involves sorting data into only two distinct groups. For example, a model could +differentiate between whether or not an email is spam. + +## Model evaluation + +It's important to validate the performance of the model to ensure it makes correct +predictions consistently and doesn’t only perform well on the data it was trained on. +These metrics help us understand not just the errors the model makes, but also the +types of errors. For example, we might want to know if the model is more likely to +predict a positive outcome when the actual outcome is negative. + +The easiest way to break down how this works is to look at a confusion matrix. + +### Confusion matrix + +A confusion matrix is a table used to describe the performance of a classification +model on a set of data for which the true values are known. As binary classification +only involves two categories, the confusion matrix only contains true positives, false +positives, false negatives, and true negatives. + +![](confusion_matrix.png) + +Here's a breakdown of the terms with examples. + +True Positives (TP) +: Correctly predicted positive examples. + +We guessed it was a spam email, and it was. This email is going straight to the junk +folder. + +False Positives (FP) +: Incorrectly predicted as positive. + +We guessed it was a spam email, but it actually wasn’t. Hopefully, the recipient +doesn’t miss anything important as this email is going to the junk folder. + +False Negatives (FN) +: Incorrectly predicted as negative. + +We didn't guess it was a spam email, but it really was. Hopefully, the recipient +doesn’t click any links! + +True Negatives (TN) +: Correctly predicted negative examples. + +We guessed it was not a spam email, and it actually was not. The recipient can read +this email as intended. + +### Building a confusion matrix + +#### Sample dataset + +Let's create a sample dataset that includes twelve rows with two columns: `actual` and +`prediction`. The `actual` column contains the true values, and the `prediction` column +contains the model's predictions. + +```{python} + +from ibis.interactive import * + +t = ibis.memtable( + { + "id": range(1, 13), + "actual": [1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1], + "prediction": [1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1], + } +) + +t +``` + +We can use the `case` function to create a new column that categorizes the outcomes. + +```{python} + +case_expr = ( + ibis.case() + .when((_.actual == 0) & (_.prediction == 0), "TN") + .when((_.actual == 0) & (_.prediction == 1), "FP") + .when((_.actual == 1) & (_.prediction == 0), "FN") + .when((_.actual == 1) & (_.prediction == 1), "TP") + .end() +) + +t = t.mutate(outcome=case_expr) + +t +``` + +To create the confusion matrix, we'll group by the outcome, count the occurrences, and +use `pivot_wider`. Widening our data makes it possible to perform column-wise +operations on the table expression for metric calculations. + +```{python} + +cm = ( + t.group_by("outcome") + .agg(counted=_.count()) + .pivot_wider(names_from="outcome", values_from="counted") + .select("TP", "FP", "FN", "TN") +) + +cm +``` + +We can plot the confusion matrix to visualize the results. + +```{python} +import matplotlib.pyplot as plt +import seaborn as sns + +data = cm.to_pyarrow().to_pydict() + +plt.figure(figsize=(6, 4)) +sns.heatmap( + [[data["TP"][0], data["FP"][0]], [data["FN"][0], data["TN"][0]]], + annot=True, + fmt="d", + cmap="Blues", + cbar=False, + xticklabels=["Predicted Positive", "Predicted Negative"], + yticklabels=["Actual Positive", "Actual Negative"], +) +plt.title("Confusion Matrix") +plt.show() +``` + +Now that we've built a confusion matrix, we're able to more easily calculate a few +common classification metrics. + +### Metrics + +Here are the metrics we'll calculate as well as a brief description of each. + +Accuracy +: The proportion of correct predictions out of all predictions made. This measures the +overall effectiveness of the model across all classes. + +Precision +: The proportion of true positive predictions out of all positive predictions made. +This tells us how many of the predicted positives were actually correct. + +Recall +: The proportion of true positive predictions out of all actual positive examples. This +measures how well the model identifies all actual positives. + +F1 Score +: A metric that combines precision and recall into a single score by taking their +weighted average. This balances the trade-off between precision and recall, making it +especially useful for imbalanced datasets. + +We can calculate these metrics using the columns from the confusion matrix we created +earlier. + +```{python} + +accuracy_expr = (_.TP + _.TN) / (_.TP + _.TN + _.FP + _.FN) +precision_expr = _.TP / (_.TP + _.FP) +recall_expr = _.TP / (_.TP + _.FN) +f1_score_expr = 2 * (precision_expr * recall_expr) / (precision_expr + recall_expr) + +metrics = cm.select( + accuracy=accuracy_expr, + precision=precision_expr, + recall=recall_expr, + f1_score=f1_score_expr, +) + +metrics +``` + +## A more efficient approach + +In the illustrative example above, we used a case expression and pivoted the data to +demonstrate where the values would fall in the confusion matrix before performing our +metric calculations using the pivoted data. We can actually skip this step using column +aggregation. + +```{python} +tp = (t.actual * t.prediction).sum() +fp = t.prediction.sum() - tp +fn = t.actual.sum() - tp +tn = t.actual.count() - tp - fp - fn + +accuracy_expr = (t.actual == t.prediction).mean() +precision_expr = tp / t.prediction.sum() +recall_expr = tp / t.actual.sum() +f1_score_expr = 2 * tp / (t.actual.sum() + t.prediction.sum()) + +print( + f"accuracy={accuracy_expr.to_pyarrow().as_py()}", + f"precision={precision_expr.to_pyarrow().as_py()}", + f"recall_expr={recall_expr.to_pyarrow().as_py()}", + f"f1_score={f1_score_expr.to_pyarrow().as_py()}", + sep="\n", +) +``` + +## Conclusion + +By pushing the computation down to the backend, the performance is as powerful as the +backend we're connected to. This capability allows us to easily scale to different +backends without modifying any code. + +We hope you give this a try and let us know how it goes. If you have any questions or +feedback, please reach out to us on [GitHub](https://github.com/ibis-project) or +[Zulip](https://ibis-project.zulipchat.com/). diff --git a/docs/posts/classification-metrics-on-the-backend/thumbnail.png b/docs/posts/classification-metrics-on-the-backend/thumbnail.png new file mode 100644 index 0000000000000..ae2f532962726 Binary files /dev/null and b/docs/posts/classification-metrics-on-the-backend/thumbnail.png differ diff --git a/docs/tutorials/ibis-for-sql-users.qmd b/docs/tutorials/ibis-for-sql-users.qmd index d3ccda0712ed4..85c606e4d2b97 100644 --- a/docs/tutorials/ibis-for-sql-users.qmd +++ b/docs/tutorials/ibis-for-sql-users.qmd @@ -151,7 +151,7 @@ ibis.to_sql(joined) If you pass a function instead of a string or Ibis expression in any projection context, it will be invoked with the "parent" table as its argument. This can -help significantly when [composing complex operations. Consider this SQL: +help significantly when composing complex operations. Consider this SQL: ```sql SELECT one, avg(abs(the_sum)) AS mad diff --git a/docs/why.qmd b/docs/why.qmd index cc80afab84a97..67ed1c483fbe8 100644 --- a/docs/why.qmd +++ b/docs/why.qmd @@ -3,7 +3,7 @@ title: "Why Ibis?" --- Ibis defines a Python dataframe API that executes on any query engine -- the -frontend for any backend data platform, with 20+ backends today. This allows +frontend for any backend data platform, with nearly 20 backends today. This allows Ibis to have excellent performance -- as good as the backend it is connected to -- with a consistent user experience. @@ -186,7 +186,7 @@ practitioners. It also allows organizations to: Python developers creating libraries can use Ibis to: -- instantly support 20+ data backends +- instantly support nearly 20 data backends - instantly support pandas, PyArrow, and Polars objects - read and write from all common file formats (depending on the backend) - trace column-level lineage through Ibis expressions diff --git a/flake.lock b/flake.lock index 1ea4df84e8195..366c6fe98581b 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -40,11 +40,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731215597, - "narHash": "sha256-9jLhAo5x2AixqITmqt0mR72OXdT3sCt8gIbiMrfHY/E=", + "lastModified": 1734796578, + "narHash": "sha256-EwEeMbvHgBrK8g6csRvlEGnAxz2uw4ghHGSt4NF68pQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "343b0a2225308ff6b8f2a1638f8664bc4bc7037b", + "rev": "de99d3d3e3397d1c1bc67b0171420c56ea9d41a6", "type": "github" }, "original": { @@ -54,6 +54,32 @@ "type": "github" } }, + "pyproject-build-systems": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "pyproject-nix": [ + "pyproject-nix" + ], + "uv2nix": [ + "uv2nix" + ] + }, + "locked": { + "lastModified": 1734141183, + "narHash": "sha256-bZQhcuk0C1OoVWQm0pH4rXXiUD6S6cB4GEWxFLKDa/I=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "8d629a268902659d5640a2c062ad2ad75615e6f8", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, "pyproject-nix": { "inputs": { "nixpkgs": [ @@ -61,11 +87,11 @@ ] }, "locked": { - "lastModified": 1731223003, - "narHash": "sha256-hFf8/IeZKPUubMC452Mm+JiAEnvcw/a4Cvn2bcpeJqs=", + "lastModified": 1734658408, + "narHash": "sha256-HdHkeJ506zKDOrCvsMoZllrOs1sol6bYbv1DifDtas0=", "owner": "nix-community", "repo": "pyproject.nix", - "rev": "359dd9cd562730bbd31ab164832aae4dacd9c302", + "rev": "139a84af40ed51c87f27708fcbe196bd6f189efd", "type": "github" }, "original": { @@ -79,6 +105,7 @@ "flake-utils": "flake-utils", "gitignore": "gitignore", "nixpkgs": "nixpkgs", + "pyproject-build-systems": "pyproject-build-systems", "pyproject-nix": "pyproject-nix", "uv2nix": "uv2nix" } @@ -108,11 +135,11 @@ ] }, "locked": { - "lastModified": 1731223088, - "narHash": "sha256-qkij76/APgVXsgagQ0z0lTy3qeorfTuY5S91tzROSe0=", + "lastModified": 1734695764, + "narHash": "sha256-q2kdbCtNH4dZpJA67AF1iOWinlvWvwKwvRyme9kjGuQ=", "owner": "adisbladis", "repo": "uv2nix", - "rev": "638bb9e42147ebd6344053b20f05516b7b4674d7", + "rev": "3aeef7d1292ce5b7f6ff6c4934298b9b2626ec06", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 6d0e729646d06..156774dd23559 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,15 @@ nixpkgs.follows = "nixpkgs"; }; }; + + pyproject-build-systems = { + url = "github:pyproject-nix/build-system-pkgs"; + inputs = { + pyproject-nix.follows = "pyproject-nix"; + uv2nix.follows = "uv2nix"; + nixpkgs.follows = "nixpkgs"; + }; + }; }; outputs = @@ -32,11 +41,12 @@ , nixpkgs , pyproject-nix , uv2nix + , pyproject-build-systems , ... }: { overlays.default = nixpkgs.lib.composeManyExtensions [ gitignore.overlay - (import ./nix/overlay.nix { inherit uv2nix pyproject-nix; }) + (import ./nix/overlay.nix { inherit uv2nix pyproject-nix pyproject-build-systems; }) ]; } // flake-utils.lib.eachDefaultSystem ( localSystem: @@ -138,22 +148,31 @@ ''; GDAL_DATA = "${pkgs.gdal}/share/gdal"; + PROJ_DATA = "${pkgs.proj}/share/proj"; __darwinAllowLocalNetworking = true; }; in rec { packages = { - default = packages.ibis312; + default = packages.ibis313; - inherit (pkgs) ibis310 ibis311 ibis312 + inherit (pkgs) ibis310 ibis311 ibis312 ibis313 update-lock-files check-release-notes-spelling; }; + checks = { + ibis310-pytest = pkgs.ibis310.passthru.tests.pytest; + ibis311-pytest = pkgs.ibis311.passthru.tests.pytest; + ibis312-pytest = pkgs.ibis312.passthru.tests.pytest; + ibis313-pytest = pkgs.ibis313.passthru.tests.pytest; + }; + devShells = rec { ibis310 = mkDevShell pkgs.ibisDevEnv310; ibis311 = mkDevShell pkgs.ibisDevEnv311; ibis312 = mkDevShell pkgs.ibisDevEnv312; + ibis313 = mkDevShell pkgs.ibisDevEnv313; default = ibis312; @@ -169,7 +188,14 @@ release = pkgs.mkShell { name = "release"; - packages = with pkgs; [ git uv nodejs_20 unzip gnugrep python3 ]; + packages = with pkgs; [ + git + uv + nodejs_20 + unzip + gnugrep + (python3.withPackages (p: [ p.packaging ])) + ]; }; }; } diff --git a/ibis/backends/bigquery/converter.py b/ibis/backends/bigquery/converter.py index d402d1d50ec32..b5f261be2f844 100644 --- a/ibis/backends/bigquery/converter.py +++ b/ibis/backends/bigquery/converter.py @@ -9,8 +9,7 @@ def convert_GeoSpatial(cls, s, dtype, pandas_type): import geopandas as gpd import shapely as shp - return gpd.GeoSeries(shp.from_wkb(s)) - - convert_Point = convert_LineString = convert_Polygon = convert_MultiLineString = ( - convert_MultiPoint - ) = convert_MultiPolygon = convert_GeoSpatial + try: + return gpd.GeoSeries.from_wkt(s) + except shp.geos.GEOSException: + return gpd.GeoSeries.from_wkb(s) diff --git a/ibis/backends/bigquery/tests/system/test_client.py b/ibis/backends/bigquery/tests/system/test_client.py index df378c43e78d4..083bcbef34d7c 100644 --- a/ibis/backends/bigquery/tests/system/test_client.py +++ b/ibis/backends/bigquery/tests/system/test_client.py @@ -460,3 +460,32 @@ def test_geospatial_interactive(con, monkeypatch): ) result = repr(expr) assert "POLYGON" in result + + +def test_geom_from_pyarrow(con, monkeypatch): + shp = pytest.importorskip("shapely") + + monkeypatch.setattr(ibis.options, "interactive", True) + + data = pa.Table.from_pydict( + { + "id": [1, 2], + "location": [ + shp.Point(1, 1).wkb, + shp.Point(2, 2).wkb, + ], + } + ) + + # Create table in BigQuery + name = gen_name("bq_test_geom") + schema = ibis.schema({"id": "int64", "location": "geospatial:geography;4326"}) + + t = con.create_table(name, data, schema=schema) + + try: + assert repr(t) + assert len(t.to_pyarrow()) == 2 + assert len(t.to_pandas()) == 2 + finally: + con.drop_table(name) diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/difference/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/difference/out.sql index 187362ed26763..6a35d9cfa05e1 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/difference/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/difference/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_difference(`t0`.`geog0`, `t0`.`geog1`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_difference(`t0`.`geog0`, `t0`.`geog1`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/intersection/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/intersection/out.sql index ce7d7ef65299a..5dfd3ab8b9096 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/intersection/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/intersection/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_intersection(`t0`.`geog0`, `t0`.`geog1`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_intersection(`t0`.`geog0`, `t0`.`geog1`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/union/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/union/out.sql index 8c0653404d5c1..2d55fe586ad86 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/union/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_binary/union/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_union(`t0`.`geog0`, `t0`.`geog1`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_union(`t0`.`geog0`, `t0`.`geog1`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_point/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_point/out.sql index 07a4971817429..a7e6654275986 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_point/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_point/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_geogpoint(`t0`.`lon`, `t0`.`lat`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_geogpoint(`t0`.`lon`, `t0`.`lat`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_simplify/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_simplify/out.sql index d8dbe16dd0fd3..e5d6f7d549ef2 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_simplify/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_simplify/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_simplify(`t0`.`geog`, 5.2) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_simplify(`t0`.`geog`, 5.2) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/buffer/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/buffer/out.sql index d5f9e492997a7..70cb2b7cc3519 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/buffer/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/buffer/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_buffer(`t0`.`geog`, 5.2) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_buffer(`t0`.`geog`, 5.2) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/centroid/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/centroid/out.sql index 2fde8567311f2..446af3e347eb3 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/centroid/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/centroid/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_centroid(`t0`.`geog`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_centroid(`t0`.`geog`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/end_point/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/end_point/out.sql index b9f0848346dae..9bb5289851e17 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/end_point/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/end_point/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_endpoint(`t0`.`geog`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_endpoint(`t0`.`geog`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/point_n/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/point_n/out.sql index 2975cc4a75bd2..0709638101060 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/point_n/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/point_n/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_pointn(`t0`.`geog`, 3) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_pointn(`t0`.`geog`, 3) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/start_point/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/start_point/out.sql index 8bd74147fadd6..a4681f1837fdd 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/start_point/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary/start_point/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_startpoint(`t0`.`geog`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_startpoint(`t0`.`geog`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary_union/out.sql b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary_union/out.sql index 9d358ff759b53..4729efce3601b 100644 --- a/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary_union/out.sql +++ b/ibis/backends/bigquery/tests/unit/snapshots/test_compiler/test_geospatial_unary_union/out.sql @@ -1,8 +1,3 @@ SELECT - * - REPLACE (st_asbinary(`tmp`) AS `tmp`) -FROM ( - SELECT - st_union_agg(`t0`.`geog`) AS `tmp` - FROM `t` AS `t0` -) \ No newline at end of file + st_union_agg(`t0`.`geog`) AS `tmp` +FROM `t` AS `t0` \ No newline at end of file diff --git a/ibis/backends/clickhouse/tests/test_select.py b/ibis/backends/clickhouse/tests/test_select.py index 364284191ab00..afc3cd7a4784e 100644 --- a/ibis/backends/clickhouse/tests/test_select.py +++ b/ibis/backends/clickhouse/tests/test_select.py @@ -6,7 +6,6 @@ from pytest import param import ibis -from ibis.backends.tests.errors import ClickHouseDatabaseError cc = pytest.importorskip("clickhouse_connect") @@ -189,16 +188,11 @@ def test_physical_table_reference_translate(alltypes, assert_sql): def test_non_equijoin(alltypes): - t = alltypes.limit(100) + t = alltypes.limit(10) t2 = t.view() expr = t.join(t2, t.tinyint_col < t2.timestamp_col.minute()).count() - - # compilation should pass - expr.compile() - - # while execution should fail since clickhouse doesn't support non-equijoin - with pytest.raises(ClickHouseDatabaseError, match="INVALID_JOIN_ON_EXPRESSION"): - expr.execute() + count = expr.to_pandas() + assert count == 45 @pytest.mark.parametrize( diff --git a/ibis/backends/datafusion/__init__.py b/ibis/backends/datafusion/__init__.py index 733d6a772b484..1a3af336e5347 100644 --- a/ibis/backends/datafusion/__init__.py +++ b/ibis/backends/datafusion/__init__.py @@ -9,7 +9,6 @@ import datafusion as df import pyarrow as pa -import pyarrow.dataset as ds import pyarrow_hotfix # noqa: F401 import sqlglot as sg import sqlglot.expressions as sge @@ -28,7 +27,7 @@ from ibis.common.dispatch import lazy_singledispatch from ibis.expr.operations.udf import InputType from ibis.formats.pyarrow import PyArrowSchema, PyArrowType -from ibis.util import deprecated, gen_name, normalize_filename, normalize_filenames +from ibis.util import gen_name, normalize_filename, normalize_filenames, warn_deprecated try: from datafusion import ExecutionContext as SessionContext @@ -88,37 +87,30 @@ def do_connect( Parameters ---------- config - Mapping of table names to files or a `SessionContext` + Mapping of table names to files (deprecated in 10.0) or a `SessionContext` instance. Examples -------- + >>> from datafusion import SessionContext + >>> ctx = SessionContext() + >>> _ = ctx.from_pydict({"a": [1, 2, 3]}, "mytable") >>> import ibis - >>> config = { - ... "astronauts": "ci/ibis-testing-data/parquet/astronauts.parquet", - ... "diamonds": "ci/ibis-testing-data/csv/diamonds.csv", - ... } - >>> con = ibis.datafusion.connect(config) + >>> con = ibis.datafusion.connect(ctx) >>> con.list_tables() - ['astronauts', 'diamonds'] - >>> con.table("diamonds") - DatabaseTable: diamonds - carat float64 - cut string - color string - clarity string - depth float64 - table float64 - price int64 - x float64 - y float64 - z float64 + ['mytable'] """ if isinstance(config, SessionContext): (self.con, config) = (config, None) else: if config is not None and not isinstance(config, Mapping): raise TypeError("Input to ibis.datafusion.connect must be a mapping") + elif config is not None and config: # warn if dict is not empty + warn_deprecated( + "Passing a mapping of tables names to files", + as_of="10.0", + instead="Please use the explicit `read_*` methods for the files you would like to load instead.", + ) if SessionConfig is not None: df_config = SessionConfig( {"datafusion.sql_parser.dialect": "PostgreSQL"} @@ -178,6 +170,57 @@ def _get_schema_using_query(self, query: str) -> sch.Schema: return PyArrowSchema.to_ibis(df.schema()) + def _register( + self, + source: str | Path | pa.Table | pa.RecordBatch | pa.Dataset | pd.DataFrame, + table_name: str | None = None, + **kwargs: Any, + ) -> ir.Table: + import pandas as pd + import pyarrow.dataset as ds + + if isinstance(source, (str, Path)): + first = str(source) + elif isinstance(source, pa.Table): + self.con.deregister_table(table_name) + self.con.register_record_batches(table_name, [source.to_batches()]) + return self.table(table_name) + elif isinstance(source, pa.RecordBatch): + self.con.deregister_table(table_name) + self.con.register_record_batches(table_name, [[source]]) + return self.table(table_name) + elif isinstance(source, ds.Dataset): + self.con.deregister_table(table_name) + self.con.register_dataset(table_name, source) + return self.table(table_name) + elif isinstance(source, pd.DataFrame): + return self.register(pa.Table.from_pandas(source), table_name, **kwargs) + else: + raise ValueError("`source` must be either a string or a pathlib.Path") + + if first.startswith(("parquet://", "parq://")) or first.endswith( + ("parq", "parquet") + ): + return self.read_parquet(source, table_name=table_name, **kwargs) + elif first.startswith(("csv://", "txt://")) or first.endswith( + ("csv", "tsv", "txt") + ): + return self.read_csv(source, table_name=table_name, **kwargs) + else: + self._register_failure() + return None + + def _register_failure(self): + import inspect + + msg = ", ".join( + m[0] for m in inspect.getmembers(self) if m[0].startswith("read_") + ) + raise ValueError( + f"Cannot infer appropriate read function for input, " + f"please call one of {msg} directly" + ) + def _register_builtin_udfs(self): from ibis.backends.datafusion import udfs @@ -345,68 +388,6 @@ def get_schema( table = database.table(table_name) return sch.schema(table.schema) - @deprecated( - as_of="9.1", - instead="use the explicit `read_*` method for the filetype you are trying to read, e.g., read_parquet, read_csv, etc.", - ) - def register( - self, - source: str | Path | pa.Table | pa.RecordBatch | pa.Dataset | pd.DataFrame, - table_name: str | None = None, - **kwargs: Any, - ) -> ir.Table: - return self._register(source, table_name, **kwargs) - - def _register( - self, - source: str | Path | pa.Table | pa.RecordBatch | pa.Dataset | pd.DataFrame, - table_name: str | None = None, - **kwargs: Any, - ) -> ir.Table: - import pandas as pd - - if isinstance(source, (str, Path)): - first = str(source) - elif isinstance(source, pa.Table): - self.con.deregister_table(table_name) - self.con.register_record_batches(table_name, [source.to_batches()]) - return self.table(table_name) - elif isinstance(source, pa.RecordBatch): - self.con.deregister_table(table_name) - self.con.register_record_batches(table_name, [[source]]) - return self.table(table_name) - elif isinstance(source, ds.Dataset): - self.con.deregister_table(table_name) - self.con.register_dataset(table_name, source) - return self.table(table_name) - elif isinstance(source, pd.DataFrame): - return self.register(pa.Table.from_pandas(source), table_name, **kwargs) - else: - raise ValueError("`source` must be either a string or a pathlib.Path") - - if first.startswith(("parquet://", "parq://")) or first.endswith( - ("parq", "parquet") - ): - return self.read_parquet(source, table_name=table_name, **kwargs) - elif first.startswith(("csv://", "txt://")) or first.endswith( - ("csv", "tsv", "txt") - ): - return self.read_csv(source, table_name=table_name, **kwargs) - else: - self._register_failure() - return None - - def _register_failure(self): - import inspect - - msg = ", ".join( - m[0] for m in inspect.getmembers(self) if m[0].startswith("read_") - ) - raise ValueError( - f"Cannot infer appropriate read function for input, " - f"please call one of {msg} directly" - ) - def _register_in_memory_table(self, op: ops.InMemoryTable) -> None: # self.con.register_table is broken, so we do this roundabout thing # of constructing a datafusion DataFrame, which has a side effect diff --git a/ibis/backends/datafusion/tests/test_connect.py b/ibis/backends/datafusion/tests/test_connect.py index 6b3773f8370f3..ff0ea2cf482af 100644 --- a/ibis/backends/datafusion/tests/test_connect.py +++ b/ibis/backends/datafusion/tests/test_connect.py @@ -25,13 +25,15 @@ def test_none_config(): def test_str_config(name_to_path): config = {name: str(path) for name, path in name_to_path.items()} - conn = ibis.datafusion.connect(config) + with pytest.warns(FutureWarning): + conn = ibis.datafusion.connect(config) assert sorted(conn.list_tables()) == sorted(name_to_path) def test_path_config(name_to_path): config = name_to_path - conn = ibis.datafusion.connect(config) + with pytest.warns(FutureWarning): + conn = ibis.datafusion.connect(config) assert sorted(conn.list_tables()) == sorted(name_to_path) diff --git a/ibis/backends/datafusion/tests/test_register.py b/ibis/backends/datafusion/tests/test_register.py deleted file mode 100644 index de8bc971da470..0000000000000 --- a/ibis/backends/datafusion/tests/test_register.py +++ /dev/null @@ -1,72 +0,0 @@ -from __future__ import annotations - -import pathlib - -import pandas as pd -import pyarrow as pa -import pytest - -import ibis - - -@pytest.fixture -def conn(): - return ibis.datafusion.connect() - - -def test_read_csv(conn, data_dir): - t = conn.read_csv(data_dir / "csv" / "functional_alltypes.csv") - assert t.count().execute() - - -@pytest.mark.parametrize( - "function", - [pathlib.Path, str], -) -def test_read_csv_path_list(conn, data_dir, function): - path = data_dir / "csv" / "functional_alltypes.csv" - - t = conn.read_csv(path, table_name="alltypes1") - t2 = conn.read_csv([function(path), function(path)], table_name="alltypes2") - - assert t2.schema() == t.schema() - assert t2.count().execute() == 2 * t.count().execute() - - -def test_read_parquet(conn, data_dir): - t = conn.read_parquet(data_dir / "parquet" / "functional_alltypes.parquet") - assert t.count().execute() - - -def test_register_table(conn): - tab = pa.table({"x": [1, 2, 3]}) - conn.create_table("my_table", tab) - assert conn.table("my_table").x.sum().execute() == 6 - - -def test_register_pandas(conn): - df = pd.DataFrame({"x": [1, 2, 3]}) - conn.create_table("my_table", df) - assert conn.table("my_table").x.sum().execute() == 6 - - -def test_register_batches(conn): - batch = pa.record_batch([pa.array([1, 2, 3])], names=["x"]) - conn.create_table("my_table", batch) - assert conn.table("my_table").x.sum().execute() == 6 - - -def test_register_dataset(conn): - import pyarrow.dataset as ds - - tab = pa.table({"x": [1, 2, 3]}) - dataset = ds.InMemoryDataset(tab) - with pytest.warns(FutureWarning, match="v9.1"): - conn.register(dataset, "my_table") - assert conn.table("my_table").x.sum().execute() == 6 - - -def test_create_table_with_uppercase_name(conn): - tab = pa.table({"x": [1, 2, 3]}) - conn.create_table("MY_TABLE", tab) - assert conn.table("MY_TABLE").x.sum().execute() == 6 diff --git a/ibis/backends/duckdb/__init__.py b/ibis/backends/duckdb/__init__.py index 03c4639074431..ffe68f217b1c5 100644 --- a/ibis/backends/duckdb/__init__.py +++ b/ibis/backends/duckdb/__init__.py @@ -31,7 +31,6 @@ from ibis.backends.sql.compilers.base import STAR, AlterTable, C, RenameTable from ibis.common.dispatch import lazy_singledispatch from ibis.expr.operations.udf import InputType -from ibis.util import deprecated if TYPE_CHECKING: from collections.abc import Iterable, Mapping, MutableMapping, Sequence @@ -366,6 +365,15 @@ def do_connect( ) -> None: """Create an Ibis client connected to a DuckDB database. + ::: {.callout-note title="Changed in version 10.0.0"} + Before, we had special handling if the user passed the `temp_directory` + parameter, setting a custom default, and creating intermediate + directories if necessary. Now, we do nothing, and just pass the value + directly to DuckDB. You may need to add + `Path(your_temp_dir).mkdir(exists_ok=True, parents=True)` + to your code to maintain the old behavior. + ::: + Parameters ---------- database @@ -483,77 +491,6 @@ def drop_database( with self._safe_raw_sql(sge.Drop(this=name, kind="SCHEMA", replace=force)): pass - @deprecated( - as_of="9.1", - instead="use the explicit `read_*` method for the filetype you are trying to read, e.g., read_parquet, read_csv, etc.", - ) - def register( - self, - source: str | Path | Any, - table_name: str | None = None, - **kwargs: Any, - ) -> ir.Table: - """Register a data source as a table in the current database. - - Parameters - ---------- - source - The data source(s). May be a path to a file or directory of - parquet/csv files, an iterable of parquet or CSV files, a pandas - dataframe, a pyarrow table or dataset, or a postgres URI. - table_name - An optional name to use for the created table. This defaults to a - sequentially generated name. - **kwargs - Additional keyword arguments passed to DuckDB loading functions for - CSV or parquet. See https://duckdb.org/docs/data/csv and - https://duckdb.org/docs/data/parquet for more information. - - Returns - ------- - ir.Table - The just-registered table - - """ - - if isinstance(source, (str, Path)): - first = str(source) - elif isinstance(source, (list, tuple)): - first = source[0] - else: - try: - return self.read_in_memory(source, table_name=table_name, **kwargs) - except (duckdb.InvalidInputException, NameError): - self._register_failure() - - if first.startswith(("parquet://", "parq://")) or first.endswith( - ("parq", "parquet") - ): - return self.read_parquet(source, table_name=table_name, **kwargs) - elif first.startswith( - ("csv://", "csv.gz://", "txt://", "txt.gz://") - ) or first.endswith(("csv", "csv.gz", "tsv", "tsv.gz", "txt", "txt.gz")): - return self.read_csv(source, table_name=table_name, **kwargs) - elif first.startswith(("postgres://", "postgresql://")): - return self.read_postgres(source, table_name=table_name, **kwargs) - elif first.startswith("sqlite://"): - return self.read_sqlite( - first[len("sqlite://") :], table_name=table_name, **kwargs - ) - else: - self._register_failure() # noqa: RET503 - - def _register_failure(self): - import inspect - - msg = ", ".join( - name for name, _ in inspect.getmembers(self) if name.startswith("read_") - ) - raise ValueError( - f"Cannot infer appropriate read function for input, " - f"please call one of {msg} directly" - ) - @util.experimental def read_json( self, @@ -880,43 +817,6 @@ def _read_parquet_pyarrow_dataset( # by the time we execute against this so we register it # explicitly. - @util.deprecated( - instead="Pass in-memory data to `memtable` instead.", - as_of="9.1", - removed_in="10.0", - ) - def read_in_memory( - self, - source: pd.DataFrame - | pa.Table - | pa.RecordBatchReader - | pl.DataFrame - | pl.LazyFrame, - table_name: str | None = None, - ) -> ir.Table: - """Register an in-memory table object in the current database. - - Supported objects include pandas DataFrame, a Polars - DataFrame/LazyFrame, or a PyArrow Table or RecordBatchReader. - - Parameters - ---------- - source - The data source. - table_name - An optional name to use for the created table. This defaults to - a sequentially generated name. - - Returns - ------- - ir.Table - The just-registered table - - """ - table_name = table_name or util.gen_name("read_in_memory") - _read_in_memory(source, table_name, self) - return self.table(table_name) - def read_delta( self, source_table: str, @@ -1145,13 +1045,15 @@ def read_sqlite( >>> import ibis >>> import sqlite3 >>> ibis.options.interactive = True - >>> with sqlite3.connect("/tmp/sqlite.db") as con: + >>> con = sqlite3.connect("/tmp/sqlite.db") + >>> with con: ... con.execute("DROP TABLE IF EXISTS t") # doctest: +ELLIPSIS ... con.execute("CREATE TABLE t (a INT, b TEXT)") # doctest: +ELLIPSIS ... con.execute( ... "INSERT INTO t VALUES (1, 'a'), (2, 'b'), (3, 'c')" ... ) # doctest: +ELLIPSIS <...> + >>> con.close() >>> con = ibis.connect("duckdb://") >>> t = con.read_sqlite(path="/tmp/sqlite.db", table_name="t") >>> t @@ -1239,13 +1141,15 @@ def attach_sqlite( -------- >>> import ibis >>> import sqlite3 - >>> with sqlite3.connect("/tmp/attach_sqlite.db") as con: + >>> con = sqlite3.connect("/tmp/attach_sqlite.db") + >>> with con: ... con.execute("DROP TABLE IF EXISTS t") # doctest: +ELLIPSIS ... con.execute("CREATE TABLE t (a INT, b TEXT)") # doctest: +ELLIPSIS ... con.execute( ... "INSERT INTO t VALUES (1, 'a'), (2, 'b'), (3, 'c')" ... ) # doctest: +ELLIPSIS <...> + >>> con.close() >>> con = ibis.connect("duckdb://") >>> con.list_tables() [] @@ -1439,7 +1343,7 @@ def to_torch( *, params: Mapping[ir.Scalar, Any] | None = None, limit: int | str | None = None, - **kwargs: Any, + **_: Any, ) -> dict[str, torch.Tensor]: """Execute an expression and return results as a dictionary of torch tensors. @@ -1750,7 +1654,7 @@ def _create_temp_view(self, table_name, source): @lazy_singledispatch -def _read_in_memory(source: Any, table_name: str, _conn: Backend, **kwargs: Any): +def _read_in_memory(source: Any, table_name: str, _conn: Backend, **_: Any): raise NotImplementedError( f"The `{_conn.name}` backend currently does not support " f"reading data of {type(source)!r}" @@ -1762,12 +1666,12 @@ def _read_in_memory(source: Any, table_name: str, _conn: Backend, **kwargs: Any) @_read_in_memory.register("pyarrow.Table") @_read_in_memory.register("pandas.DataFrame") @_read_in_memory.register("pyarrow.dataset.Dataset") -def _default(source, table_name, _conn, **kwargs: Any): +def _default(source, table_name, _conn, **_: Any): _conn.con.register(table_name, source) @_read_in_memory.register("pyarrow.RecordBatchReader") -def _pyarrow_rbr(source, table_name, _conn, **kwargs: Any): +def _pyarrow_rbr(source, table_name, _conn, **_: Any): _conn.con.register(table_name, source) # Ensure the reader isn't marked as started, in case the name is # being overwritten. diff --git a/ibis/backends/duckdb/tests/test_client.py b/ibis/backends/duckdb/tests/test_client.py index f02af4f040b62..8477535fbd33a 100644 --- a/ibis/backends/duckdb/tests/test_client.py +++ b/ibis/backends/duckdb/tests/test_client.py @@ -413,10 +413,32 @@ def test_read_csv_with_types(tmp_path, input, all_varchar): assert t.schema()["geom"].is_geospatial() -def test_memtable_doesnt_leak(con, monkeypatch): - monkeypatch.setattr(ibis.options, "default_backend", con) - name = "memtable_doesnt_leak" +def test_memtable_doesnt_leak(con): + name = gen_name("memtable_doesnt_leak") assert name not in con.list_tables() - df = ibis.memtable({"a": [1, 2, 3]}, name=name).execute() + df = con.execute(ibis.memtable({"a": [1, 2, 3]}, name=name)) assert name not in con.list_tables() assert len(df) == 3 + + +def test_pyarrow_batches_chunk_size(con): # 10443 + import numpy as np + + t = ibis.memtable( + { + "id": np.arange(10_000), + "name": np.random.choice(["Alice", "Bob", "Carol", "Dave"], size=10_000), + "age": np.random.randint(20, 70, size=10_000), + } + ) + batches = con.to_pyarrow_batches(t, chunk_size=4096) + assert len(next(batches)) == 4096 + assert len(next(batches)) == 4096 + + batches = con.to_pyarrow_batches(t, chunk_size=800) + assert len(next(batches)) == 800 + assert len(next(batches)) == 800 + + batches = con.to_pyarrow_batches(t, chunk_size=-1) + with pytest.raises(TypeError): + next(batches) diff --git a/ibis/backends/duckdb/tests/test_register.py b/ibis/backends/duckdb/tests/test_io.py similarity index 80% rename from ibis/backends/duckdb/tests/test_register.py rename to ibis/backends/duckdb/tests/test_io.py index 0bb07c1d1f427..3367fda6c1279 100644 --- a/ibis/backends/duckdb/tests/test_register.py +++ b/ibis/backends/duckdb/tests/test_io.py @@ -2,7 +2,6 @@ import os import sqlite3 -from pathlib import Path import duckdb import numpy as np @@ -211,8 +210,12 @@ def test_read_mysql(con, mysqlurl): # pragma: no cover def test_read_sqlite(con, tmp_path): path = tmp_path / "test.db" - sqlite_con = sqlite3.connect(str(path)) - sqlite_con.execute("CREATE TABLE t AS SELECT 1 a UNION SELECT 2 UNION SELECT 3") + scon = sqlite3.connect(str(path)) + try: + with scon: + scon.execute("CREATE TABLE t AS SELECT 1 a UNION SELECT 2 UNION SELECT 3") + finally: + scon.close() ft = con.read_sqlite(path, table_name="t") assert ft.count().execute() @@ -221,26 +224,14 @@ def test_read_sqlite(con, tmp_path): def test_read_sqlite_no_table_name(con, tmp_path): path = tmp_path / "test.db" - sqlite3.connect(str(path)) + scon = sqlite3.connect(str(path)) + try: + assert path.exists() - assert path.exists() - - with pytest.raises(ValueError): - con.read_sqlite(path) - - -@pytest.mark.xfail( - LINUX and SANDBOXED, - reason="nix on linux cannot download duckdb extensions or data due to sandboxing", - raises=duckdb.IOException, -) -def test_register_sqlite(con, tmp_path): - path = tmp_path / "test.db" - sqlite_con = sqlite3.connect(str(path)) - sqlite_con.execute("CREATE TABLE t AS SELECT 1 a UNION SELECT 2 UNION SELECT 3") - with pytest.warns(FutureWarning, match="v9.1"): - ft = con.register(f"sqlite://{path}", "t") - assert ft.count().execute() + with pytest.raises(ValueError): + con.read_sqlite(path) + finally: + scon.close() # Because we create a new connection and the test requires loading/installing a @@ -253,56 +244,42 @@ def test_register_sqlite(con, tmp_path): def test_attach_sqlite(data_dir, tmp_path): import sqlite3 - test_db_path = tmp_path / "test.db" - with sqlite3.connect(test_db_path) as scon: - for line in ( - Path(data_dir.parent / "schema" / "sqlite.sql").read_text().split(";") - ): - scon.execute(line) - # Create a new connection here because we already have the `ibis_testing` # tables loaded in to the `con` fixture. con = ibis.duckdb.connect() - con.attach_sqlite(test_db_path) - assert set(con.list_tables()) >= { - "functional_alltypes", - "awards_players", - "batting", - "diamonds", - } - - fa = con.tables.functional_alltypes - assert len(set(fa.schema().types)) > 1 - - # overwrite existing sqlite_db and force schema to all strings - con.attach_sqlite(test_db_path, overwrite=True, all_varchar=True) - assert set(con.list_tables()) >= { - "functional_alltypes", - "awards_players", - "batting", - "diamonds", - } - - fa = con.tables.functional_alltypes - types = fa.schema().types - assert len(set(types)) == 1 - assert dt.String(nullable=True) in set(types) - + test_db_path = tmp_path / "test.db" + scon = sqlite3.connect(test_db_path) + try: + with scon: + scon.executescript((data_dir.parent / "schema" / "sqlite.sql").read_text()) + + con.attach_sqlite(test_db_path) + assert set(con.list_tables()) >= { + "functional_alltypes", + "awards_players", + "batting", + "diamonds", + } -def test_re_read_in_memory_overwrite(con): - df_pandas_1 = pd.DataFrame({"a": ["a"], "b": [1], "d": ["hi"]}) - df_pandas_2 = pd.DataFrame({"a": [1], "c": [1.4]}) + fa = con.tables.functional_alltypes + assert len(set(fa.schema().types)) > 1 - with pytest.warns(FutureWarning, match="memtable"): - table = con.read_in_memory(df_pandas_1, table_name="df") - assert len(table.columns) == 3 - assert table.schema() == ibis.schema([("a", "str"), ("b", "int"), ("d", "str")]) + # overwrite existing sqlite_db and force schema to all strings + con.attach_sqlite(test_db_path, overwrite=True, all_varchar=True) + assert set(con.list_tables()) >= { + "functional_alltypes", + "awards_players", + "batting", + "diamonds", + } - with pytest.warns(FutureWarning, match="memtable"): - table = con.read_in_memory(df_pandas_2, table_name="df") - assert len(table.columns) == 2 - assert table.schema() == ibis.schema([("a", "int"), ("c", "float")]) + fa = con.tables.functional_alltypes + types = fa.schema().types + assert len(set(types)) == 1 + assert dt.String(nullable=True) in set(types) + finally: + scon.close() def test_memtable_with_nullable_dtypes(con): @@ -396,37 +373,24 @@ def test_s3_403_fallback(con, httpserver, monkeypatch): def test_register_numpy_str(con): data = pd.DataFrame({"a": [np.str_("xyz"), None]}) - with pytest.warns(FutureWarning, match="memtable"): - result = con.read_in_memory(data) - tm.assert_frame_equal(result.execute(), data) + result = ibis.memtable(data) + tm.assert_frame_equal(con.execute(result), data) -def test_register_recordbatchreader_warns(con): +def test_memtable_recordbatchreader_raises(con): table = pa.Table.from_batches( - [ - pa.RecordBatch.from_pydict({"x": [1, 2]}), - pa.RecordBatch.from_pydict({"x": [3, 4]}), - ] + map(pa.RecordBatch.from_pydict, [{"x": [1, 2]}, {"x": [3, 4]}]) ) reader = table.to_reader() - sol = table.to_pandas() - with pytest.warns(FutureWarning, match="memtable"): - t = con.read_in_memory(reader) - # First execute is fine - res = t.execute() - tm.assert_frame_equal(res, sol) + with pytest.raises(TypeError): + ibis.memtable(reader) - # Later executes warn - with pytest.warns(UserWarning, match="RecordBatchReader"): - t.limit(2).execute() + t = ibis.memtable(reader.read_all()) - # Re-registering over the name with a new reader is fine - reader = table.to_reader() - with pytest.warns(FutureWarning, match="memtable"): - t = con.read_in_memory(reader, table_name=t.get_name()) - res = t.execute() - tm.assert_frame_equal(res, sol) + # First execute is fine + res = con.execute(t) + tm.assert_frame_equal(res, table.to_pandas()) def test_csv_with_slash_n_null(con, tmp_path): diff --git a/ibis/backends/impala/__init__.py b/ibis/backends/impala/__init__.py index 88ef7d1d34027..aefa5840cafbc 100644 --- a/ibis/backends/impala/__init__.py +++ b/ibis/backends/impala/__init__.py @@ -20,18 +20,6 @@ import ibis.expr.types as ir from ibis import util from ibis.backends.impala import ddl, udf -from ibis.backends.impala.client import ImpalaTable -from ibis.backends.impala.ddl import ( - CTAS, - CreateDatabase, - CreateTableWithSchema, - CreateView, - DropDatabase, - DropTable, - DropView, - RenameTable, - TruncateTable, -) from ibis.backends.impala.udf import ( aggregate_function, scalar_function, @@ -308,7 +296,7 @@ def create_database(self, name, path=None, force=False): Forcibly create the database """ - statement = CreateDatabase(name, path=path, can_exist=force) + statement = ddl.CreateDatabase(name, path=path, can_exist=force) self._safe_exec_sql(statement) def drop_database(self, name, force=False): @@ -356,7 +344,7 @@ def drop_database(self, name, force=False): f"Database {name} must be empty before " "being dropped, or set force=True" ) - statement = DropDatabase(name, must_exist=not force) + statement = ddl.DropDatabase(name, must_exist=not force) self._safe_exec_sql(statement) def get_schema( @@ -443,18 +431,14 @@ def create_view( overwrite: bool = False, ) -> ir.Table: select = self.compile(obj) - statement = CreateView(name, select, database=database, can_exist=overwrite) + statement = ddl.CreateView(name, select, database=database, can_exist=overwrite) self._safe_exec_sql(statement) return self.table(name, database=database) def drop_view(self, name, database=None, force=False): - stmt = DropView(name, database=database, must_exist=not force) + stmt = ddl.DropView(name, database=database, must_exist=not force) self._safe_exec_sql(stmt) - def table(self, name: str, database: str | None = None, **kwargs: Any) -> ir.Table: - expr = super().table(name, database=database, **kwargs) - return ImpalaTable(expr.op()) - def create_table( self, name: str, @@ -508,7 +492,6 @@ def create_table( Table properties to set on table creation. like_parquet Can specify instead of a schema - """ if obj is None and schema is None: raise com.IbisError("The schema or obj parameter is required") @@ -534,22 +517,22 @@ def create_table( self.drop_table(name, force=True) self._safe_exec_sql( - CTAS( + ddl.CTAS( name, select, database=database or self.current_database, format=format, external=True if location is not None else external, partition=partition, - tbl_properties=tbl_properties, path=location, + tbl_properties=tbl_properties, ) ) else: # schema is not None if overwrite: self.drop_table(name, force=True) self._safe_exec_sql( - CreateTableWithSchema( + ddl.CreateTableWithSchema( name, schema or obj.schema(), database=database or self.current_database, @@ -564,7 +547,7 @@ def create_table( def avro_file( self, directory, avro_schema, name=None, database=None, external=True - ): + ) -> ir.Table: """Create a table to read a collection of Avro data. Parameters @@ -582,9 +565,8 @@ def avro_file( Returns ------- - ImpalaTable - Impala table expression - + Table + Table expression """ name, database = self._get_concrete_table_path(name, database) @@ -605,7 +587,7 @@ def delimited_file( escapechar=None, lineterminator=None, external=True, - ): + ) -> ir.Table: """Interpret delimited text files as an Ibis table expression. See the `parquet_file` method for more details on what happens under @@ -634,9 +616,8 @@ def delimited_file( Returns ------- - ImpalaTable - Impala table expression - + Table + Table expression """ name, database = self._get_concrete_table_path(name, database) @@ -663,7 +644,7 @@ def parquet_file( external: bool = True, like_file: str | Path | None = None, like_table: str | None = None, - ): + ) -> ir.Table: """Create an Ibis table from the passed directory of Parquet files. The table can be optionally named, otherwise a unique name will be @@ -694,9 +675,8 @@ def parquet_file( Returns ------- - ImpalaTable - Impala table expression - + Table + Table expression """ name, database = self._get_concrete_table_path(name, database) @@ -744,34 +724,90 @@ def insert( database=None, overwrite=False, partition=None, - values=None, validate=True, - ): - """Insert data into an existing table. + ) -> None: + """Insert into an Impala table. - See - [`ImpalaTable.insert`](../backends/impala.qmd#ibis.backends.impala.client.ImpalaTable.insert) - for parameters. + Parameters + ---------- + table_name + The table name + obj + Table expression or DataFrame + database + The table database + overwrite + If True, will replace existing contents of table + partition + For partitioned tables, indicate the partition that's being + inserted into, either with an ordered list of partition keys or a + dict of partition field name to value. For example for the + partition (year=2007, month=7), this can be either (2007, 7) or + {'year': 2007, 'month': 7}. + validate + If True, do more rigorous validation that schema of table being + inserted is compatible with the existing table Examples -------- - >>> table = "my_table" - >>> con.insert(table, table_expr) # quartodoc: +SKIP # doctest: +SKIP + Append to an existing table + + >>> con.insert(table_name, table_expr) # quartodoc: +SKIP # doctest: +SKIP Completely overwrite contents - >>> con.insert(table, table_expr, overwrite=True) # quartodoc: +SKIP # doctest: +SKIP + + >>> con.insert(table_name, table_expr, overwrite=True) # quartodoc: +SKIP # doctest: +SKIP """ if isinstance(obj, ir.Table): self._run_pre_execute_hooks(obj) + table = self.table(table_name, database=database) - return table.insert( - obj=obj, - overwrite=overwrite, + + if not isinstance(obj, ir.Table): + obj = ibis.memtable(obj) + + if not set(table.columns).difference(obj.columns): + # project out using column order of parent table + # if column names match + obj = obj.select(table.columns) + + self._run_pre_execute_hooks(obj) + + if validate: + existing_schema = table.schema() + insert_schema = obj.schema() + if not insert_schema.equals(existing_schema): + if set(insert_schema.names) != set(existing_schema.names): + raise com.IbisInputError("Schemas have different names") + + for name in insert_schema: + lt = insert_schema[name] + rt = existing_schema[name] + if not lt.castable(rt): + raise com.IbisInputError(f"Cannot safely cast {lt!r} to {rt!r}") + + if partition is not None: + partition_schema = self.get_partition_schema(table_name, database=database) + partition_schema_names = frozenset(partition_schema.names) + obj = obj.select( + [ + column + for column in obj.columns + if column not in partition_schema_names + ] + ) + else: + partition_schema = None + + statement = ddl.InsertSelect( + self._fully_qualified_name(table_name, database), + self.compile(obj), partition=partition, - values=values, - validate=validate, + partition_schema=partition_schema, + overwrite=overwrite, ) + self._safe_exec_sql(statement.compile()) def drop_table( self, name: str, *, database: str | None = None, force: bool = False @@ -794,7 +830,7 @@ def drop_table( >>> con.drop_table(table, database=db, force=True) # quartodoc: +SKIP # doctest: +SKIP """ - statement = DropTable(name, database=database, must_exist=not force) + statement = ddl.DropTable(name, database=database, must_exist=not force) self._safe_exec_sql(statement) def truncate_table(self, name: str, database: str | None = None) -> None: @@ -808,7 +844,7 @@ def truncate_table(self, name: str, database: str | None = None) -> None: Database name """ - statement = TruncateTable(name, database=database) + statement = ddl.TruncateTable(name, database=database) self._safe_exec_sql(statement) def rename_table(self, old_name: str, new_name: str) -> None: @@ -822,7 +858,7 @@ def rename_table(self, old_name: str, new_name: str) -> None: The new name of the table. """ - statement = RenameTable(old_name, new_name) + statement = ddl.RenameTable(old_name, new_name) self._safe_exec_sql(statement) def drop_table_or_view(self, name, *, database=None, force=False): @@ -1142,6 +1178,141 @@ def list_partitions(self, name, database=None): stmt = self._table_command("SHOW PARTITIONS", name, database=database) return self._exec_statement(stmt) + def get_partition_schema( + self, + table_name: str, + database: str | None = None, + ) -> sch.Schema: + """Return the schema for the partition columns. + + Parameters + ---------- + table_name + Table name + database + Database name + + Returns + ------- + Schema + Ibis schema for the partition columns + """ + schema = self.get_schema(table_name, database=database) + result = self.list_partitions(table_name, database) + + partition_fields = [] + for col in result.columns: + if col not in schema: + break + partition_fields.append((col, schema[col])) + + return sch.Schema(dict(partition_fields)) + + def add_partition( + self, + table_name: str, + spec: dict[str, Any] | list, + *, + database: str | None = None, + location: str | None = None, + ) -> None: + """Add a new table partition. + + Partition parameters can be set in a single DDL statement or you can + use `alter_partition` to set them after the fact. + + Parameters + ---------- + table_name + The table name. + spec + The partition keys for the partition being added. + database + The database name. If not provided, the current database is used. + location + Location of the partition + """ + part_schema = self.get_partition_schema(table_name, database) + stmt = ddl.AddPartition( + self._fully_qualified_name(table_name, database), + spec, + part_schema, + location=location, + ) + self._safe_exec_sql(stmt) + + def drop_partition( + self, + table_name: str, + spec: dict[str, Any] | list, + *, + database: str | None = None, + ) -> None: + """Drop an existing table partition. + + Parameters + ---------- + table_name + The table name. + spec + The partition keys for the partition being dropped. + database + The database name. If not provided, the current database is used. + """ + part_schema = self.get_partition_schema(table_name, database) + stmt = ddl.DropPartition( + self._fully_qualified_name(table_name, database), + spec, + part_schema, + ) + self._safe_exec_sql(stmt) + + def alter_partition( + self, + table_name: str, + spec: dict[str, Any] | list, + *, + database: str | None = None, + location: str | None = None, + format: str | None = None, + tbl_properties: dict | None = None, + serde_properties: dict | None = None, + ) -> None: + """Change settings and parameters of an existing partition. + + Parameters + ---------- + table_name + The table name + spec + The partition keys for the partition being modified + database + The database name. If not provided, the current database is used. + location + Location of the partition + format + Table format + tbl_properties + Table properties + serde_properties + Serialization/deserialization properties + """ + part_schema = self.get_partition_schema(table_name, database) + + alterations = [ + ("location", location), + ("format", format), + ("tbl_properties", tbl_properties), + ("serde_properties", serde_properties), + ] + + qname = self._fully_qualified_name(table_name, database) + + for field, values in alterations: + if values is not None: + stmt = ddl.AlterPartition(qname, spec, part_schema, **{field, values}) + self._safe_exec_sql(stmt) + def table_stats(self, name, database=None): """Return results of `SHOW TABLE STATS` for the table `name`.""" stmt = self._table_command("SHOW TABLE STATS", name, database=database) diff --git a/ibis/backends/impala/client.py b/ibis/backends/impala/client.py deleted file mode 100644 index 4dfeaa494fda9..0000000000000 --- a/ibis/backends/impala/client.py +++ /dev/null @@ -1,362 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import sqlglot as sg - -import ibis -import ibis.common.exceptions as com -import ibis.expr.schema as sch -import ibis.expr.types as ir -from ibis.backends.impala import ddl -from ibis.backends.impala.ddl import AlterTable, InsertSelect - -if TYPE_CHECKING: - import pandas as pd - - -class ImpalaTable(ir.Table): - """A physical table in the Impala-Hive metastore.""" - - @property - def _qualified_name(self) -> str: - op = self.op() - return sg.table(op.name, catalog=op.namespace.database).sql(dialect="hive") - - @property - def _unqualified_name(self) -> str: - return self.op().name - - @property - def _client(self): - return self.op().source - - @property - def _database(self) -> str: - return self.op().namespace.database - - def compute_stats(self, incremental=False): - """Invoke Impala COMPUTE STATS command on the table.""" - return self._client.compute_stats( - self.op().name, database=self._database, incremental=incremental - ) - - def invalidate_metadata(self): - self._client.invalidate_metadata(self.op().name, database=self._database) - - def refresh(self): - self._client.refresh(self.op().name, database=self._database) - - def metadata(self): - """Return results of `DESCRIBE FORMATTED` statement.""" - return self._client.describe_formatted(self.op().name, database=self._database) - - describe_formatted = metadata - - def files(self): - """Return results of SHOW FILES statement.""" - return self._client.show_files(self.op().name, database=self._database) - - def drop(self): - """Drop the table from the database.""" - self._client.drop_table_or_view(self.op().name, database=self._database) - - def truncate(self): - self._client.truncate_table(self.op().name, database=self._database) - - def insert( - self, - obj=None, - overwrite=False, - partition=None, - values=None, - validate=True, - ): - """Insert into an Impala table. - - Parameters - ---------- - obj - Table expression or DataFrame - overwrite - If True, will replace existing contents of table - partition - For partitioned tables, indicate the partition that's being - inserted into, either with an ordered list of partition keys or a - dict of partition field name to value. For example for the - partition (year=2007, month=7), this can be either (2007, 7) or - {'year': 2007, 'month': 7}. - values - Unsupported and unused - validate - If True, do more rigorous validation that schema of table being - inserted is compatible with the existing table - - Examples - -------- - Append to an existing table - - >>> t.insert(table_expr) # quartodoc: +SKIP # doctest: +SKIP - - Completely overwrite contents - - >>> t.insert(table_expr, overwrite=True) # quartodoc: +SKIP # doctest: +SKIP - - """ - if values is not None: - raise NotImplementedError - - if not isinstance(obj, ir.Table): - obj = ibis.memtable(obj) - - if not set(self.columns).difference(obj.columns): - # project out using column order of parent table - # if column names match - obj = obj.select(self.columns) - - self._client._run_pre_execute_hooks(obj) - - expr = obj - if validate: - existing_schema = self.schema() - insert_schema = expr.schema() - if not insert_schema.equals(existing_schema): - _validate_compatible(insert_schema, existing_schema) - - if partition is not None: - partition_schema = self.partition_schema() - partition_schema_names = frozenset(partition_schema.names) - expr = expr.select( - [ - column - for column in expr.columns - if column not in partition_schema_names - ] - ) - else: - partition_schema = None - - statement = InsertSelect( - self._qualified_name, - self._client.compile(expr), - partition=partition, - partition_schema=partition_schema, - overwrite=overwrite, - ) - self._client._safe_exec_sql(statement.compile()) - return self - - def load_data(self, path, overwrite=False, partition=None): - """Load data into an Impala table. - - Parameters - ---------- - path - Data to load - overwrite - Overwrite the existing data in the entire table or indicated - partition - partition - If specified, the partition must already exist - - """ - if partition is not None: - partition_schema = self.partition_schema() - else: - partition_schema = None - - stmt = ddl.LoadData( - self._qualified_name, - path, - partition=partition, - partition_schema=partition_schema, - overwrite=overwrite, - ) - - self._client._safe_exec_sql(stmt.compile()) - return self - - @property - def name(self) -> str: - return self.op().name - - @property - def is_partitioned(self): - """True if the table is partitioned.""" - return self.metadata().is_partitioned - - def partition_schema(self): - """Return the schema for the partition columns.""" - schema = self.schema() - result = self.partitions() - - partition_fields = [] - for col in result.columns: - if col not in schema: - break - partition_fields.append((col, schema[col])) - - return sch.Schema(dict(partition_fields)) - - def add_partition(self, spec, location=None): - """Add a new table partition. - - Partition parameters can be set in a single DDL statement or you can - use `alter_partition` to set them after the fact. - """ - part_schema = self.partition_schema() - stmt = ddl.AddPartition( - self._qualified_name, spec, part_schema, location=location - ) - self._client._safe_exec_sql(stmt) - return self - - def alter( - self, - location=None, - format=None, - tbl_properties=None, - serde_properties=None, - ): - """Change settings and parameters of the table. - - Parameters - ---------- - location - For partitioned tables, you may want the alter_partition function - format - Table format - tbl_properties - Table properties - serde_properties - Serialization/deserialization properties - - """ - - def _run_ddl(**kwds): - stmt = AlterTable(self._qualified_name, **kwds) - self._client._safe_exec_sql(stmt) - return self - - return self._alter_table_helper( - _run_ddl, - location=location, - format=format, - tbl_properties=tbl_properties, - serde_properties=serde_properties, - ) - - def set_external(self, is_external=True): - """Toggle the `EXTERNAL` table property.""" - self.alter(tbl_properties={"EXTERNAL": is_external}) - - def alter_partition( - self, - spec, - location=None, - format=None, - tbl_properties=None, - serde_properties=None, - ): - """Change settings and parameters of an existing partition. - - Parameters - ---------- - spec - The partition keys for the partition being modified - location - Location of the partition - format - Table format - tbl_properties - Table properties - serde_properties - Serialization/deserialization properties - - """ - part_schema = self.partition_schema() - - def _run_ddl(**kwds): - stmt = ddl.AlterPartition(self._qualified_name, spec, part_schema, **kwds) - self._client._safe_exec_sql(stmt) - return self - - return self._alter_table_helper( - _run_ddl, - location=location, - format=format, - tbl_properties=tbl_properties, - serde_properties=serde_properties, - ) - - def _alter_table_helper(self, f, **alterations): - results = [] - for k, v in alterations.items(): - if v is None: - continue - result = f(**{k: v}) - results.append(result) - return results - - def drop_partition(self, spec): - """Drop an existing table partition.""" - part_schema = self.partition_schema() - stmt = ddl.DropPartition(self._qualified_name, spec, part_schema) - self._client._safe_exec_sql(stmt) - return self - - def partitions(self): - """Return information about the table's partitions. - - Raises an exception if the table is not partitioned. - """ - return self._client.list_partitions(self._qualified_name) - - def stats(self) -> pd.DataFrame: - """Return results of `SHOW TABLE STATS`. - - If not partitioned, contains only one row. - - Returns - ------- - DataFrame - Table statistics - - """ - return self._client.table_stats(self._qualified_name) - - def column_stats(self) -> pd.DataFrame: - """Return results of `SHOW COLUMN STATS`. - - Returns - ------- - DataFrame - Column statistics - - """ - return self._client.column_stats(self._qualified_name) - - -# ---------------------------------------------------------------------- -# ORM-ish usability layer - - -class ScalarFunction: - def drop(self): - pass - - -class AggregateFunction: - def drop(self): - pass - - -def _validate_compatible(from_schema, to_schema): - if set(from_schema.names) != set(to_schema.names): - raise com.IbisInputError("Schemas have different names") - - for name in from_schema: - lt = from_schema[name] - rt = to_schema[name] - if not lt.castable(rt): - raise com.IbisInputError(f"Cannot safely cast {lt!r} to {rt!r}") diff --git a/ibis/backends/impala/ddl.py b/ibis/backends/impala/ddl.py index 39a47ef25de3e..88b6ece8615bd 100644 --- a/ibis/backends/impala/ddl.py +++ b/ibis/backends/impala/ddl.py @@ -162,51 +162,7 @@ def _pieces(self): yield self._tbl_properties() -class AlterTable(ImpalaBase, DDL): - def __init__( - self, - table, - location=None, - format=None, - tbl_properties=None, - serde_properties=None, - ): - self.table = table - self.location = location - self.format = self.sanitize_format(format) - self.tbl_properties = tbl_properties - self.serde_properties = serde_properties - - def _wrap_command(self, cmd): - return f"ALTER TABLE {cmd}" - - def _format_properties(self, prefix=""): - tokens = [] - - if self.location is not None: - tokens.append(f"LOCATION '{self.location}'") - - if self.format is not None: - tokens.append(f"FILEFORMAT {self.format}") - - if self.tbl_properties is not None: - tokens.append(self.format_tblproperties(self.tbl_properties)) - - if self.serde_properties is not None: - tokens.append(self.format_serdeproperties(self.serde_properties)) - - if len(tokens) > 0: - return "\n{}{}".format(prefix, "\n".join(tokens)) - else: - return "" - - def compile(self): - props = self._format_properties() - action = f"{self.table} SET {props}" - return self._wrap_command(action) - - -class RenameTable(AlterTable): +class RenameTable(ImpalaBase, DDL): def __init__( self, old_name: str, @@ -222,7 +178,7 @@ def __init__( ) def compile(self): - return self._wrap_command(f"{self._old} RENAME TO {self._new}") + return f"ALTER TABLE {self._old} RENAME TO {self._new}" class DropTable(ImpalaBase, DropObject): @@ -443,45 +399,10 @@ def _pieces(self): yield "\n".join(self.table_format.to_ddl()) -class LoadData(ImpalaBase, DDL): - """Generate DDL for LOAD DATA command. - - Cannot be cancelled - """ +class PartitionProperties(ImpalaBase, DDL): + _command = "" + _property_prefix = "" - def __init__( - self, - table_name, - path, - database=None, - partition=None, - partition_schema=None, - overwrite=False, - ): - self.table_name = table_name - self.database = database - self.path = path - - self.partition = partition - self.partition_schema = partition_schema - - self.overwrite = overwrite - - def compile(self): - overwrite = "OVERWRITE " if self.overwrite else "" - - if self.partition is not None: - partition = "\n" + self.format_partition( - self.partition, self.partition_schema - ) - else: - partition = "" - - scoped_name = self.scoped_name(self.table_name, self.database) - return f"LOAD DATA INPATH {self.path!r} {overwrite}INTO TABLE {scoped_name}{partition}" - - -class PartitionProperties(AlterTable): def __init__( self, table, @@ -492,51 +413,56 @@ def __init__( tbl_properties=None, serde_properties=None, ): - super().__init__( - table, - location=location, - format=format, - tbl_properties=tbl_properties, - serde_properties=serde_properties, - ) + self.table = table + self.location = location + self.format = self.sanitize_format(format) + self.tbl_properties = tbl_properties + self.serde_properties = serde_properties self.partition = partition self.partition_schema = partition_schema - def _compile(self, cmd, property_prefix=""): + def compile(self): part = self.format_partition(self.partition, self.partition_schema) - if cmd: - part = f"{cmd} {part}" + if self._command: + part = f"{self._command} {part}" - props = self._format_properties(property_prefix) - action = f"{self.table} {part}{props}" - return self._wrap_command(action) + props = self._format_properties() + return f"ALTER TABLE {self.table} {part}{props}" + def _format_properties(self): + tokens = [] -class AddPartition(PartitionProperties): - dialect = "hive" + if self.location is not None: + tokens.append(f"LOCATION '{self.location}'") - def __init__(self, table, partition, partition_schema, location=None): - super().__init__(table, partition, partition_schema, location=location) + if self.format is not None: + tokens.append(f"FILEFORMAT {self.format}") - def compile(self): - return self._compile("ADD") + if self.tbl_properties is not None: + tokens.append(self.format_tblproperties(self.tbl_properties)) + if self.serde_properties is not None: + tokens.append(self.format_serdeproperties(self.serde_properties)) -class AlterPartition(PartitionProperties): - dialect = "hive" + if len(tokens) > 0: + return "\n{}{}".format(self._property_prefix, "\n".join(tokens)) + else: + return "" - def compile(self): - return self._compile("", "SET ") + +class AddPartition(PartitionProperties): + dialect = "hive" + _command = "ADD" -class DropPartition(PartitionProperties): +class AlterPartition(PartitionProperties): dialect = "hive" + _property_prefix = "SET " - def __init__(self, table, partition, partition_schema): - super().__init__(table, partition, partition_schema) - def compile(self): - return self._compile("DROP") +class DropPartition(PartitionProperties): + dialect = "hive" + _command = "DROP" class CacheTable(ImpalaBase, DDL): diff --git a/ibis/backends/impala/tests/test_bucket_histogram.py b/ibis/backends/impala/tests/test_bucket_histogram.py index 344b6ec99da50..4b8749c173bb8 100644 --- a/ibis/backends/impala/tests/test_bucket_histogram.py +++ b/ibis/backends/impala/tests/test_bucket_histogram.py @@ -81,8 +81,8 @@ def test_bucket_assign_labels(table, snapshot): bucket = table.f.bucket(buckets, include_under=True) size = table.group_by(bucket.name("tier")).size() - labelled = size.tier.label( - ["Under 0", "0 to 10", "10 to 25", "25 to 50"], nulls="error" + labelled = size.tier.cases( + *enumerate(["Under 0", "0 to 10", "10 to 25", "25 to 50"]), else_="error" ).name("tier2") expr = size.select(labelled, size[1]) diff --git a/ibis/backends/impala/tests/test_ddl.py b/ibis/backends/impala/tests/test_ddl.py index ad74932176b56..fc168b53f691a 100644 --- a/ibis/backends/impala/tests/test_ddl.py +++ b/ibis/backends/impala/tests/test_ddl.py @@ -93,16 +93,6 @@ def test_truncate_table(con, alltypes, temp_table): assert not nrows -def test_truncate_table_expression(con, alltypes, temp_table): - expr = alltypes.limit(1) - - con.create_table(temp_table, obj=expr) - t = con.table(temp_table) - t.truncate() - nrows = t.count().execute() - assert not nrows - - def test_ctas_from_table_expr(con, alltypes, temp_table): t = con.create_table(temp_table, alltypes) assert t.count().execute() @@ -130,19 +120,15 @@ def test_insert_table(con, alltypes, temp_table, test_data_db): expr = alltypes db = test_data_db - con.create_table(temp_table, expr.limit(0), database=db) - - con.insert(temp_table, expr.limit(10), database=db) + t = con.create_table(temp_table, expr.limit(0), database=db) - # check using ImpalaTable.insert - t = con.table(temp_table, database=db) - t.insert(expr.limit(10)) + con.insert(temp_table, expr.limit(20), database=db) sz = t.count() assert sz.execute() == 20 # Overwrite and verify only 10 rows now - t.insert(expr.limit(10), overwrite=True) + con.insert(temp_table, expr.limit(10), database=db, overwrite=True) assert sz.execute() == 10 @@ -157,19 +143,12 @@ def test_insert_validate_types(con, alltypes, test_data_db, temp_table): database=db, ) - t = con.table(temp_table, database=db) - - to_insert = expr.select( - expr.tinyint_col, expr.smallint_col.name("int_col"), expr.string_col - ) - t.insert(to_insert.limit(10)) - to_insert = expr.select( expr.tinyint_col, expr.smallint_col.cast("int32").name("int_col"), expr.string_col, ) - t.insert(to_insert.limit(10)) + con.insert(temp_table, to_insert.limit(10), database=db) to_insert = expr.select( expr.tinyint_col, expr.bigint_col.name("int_col"), expr.string_col @@ -177,16 +156,7 @@ def test_insert_validate_types(con, alltypes, test_data_db, temp_table): limit_expr = to_insert.limit(10) with pytest.raises(com.IbisError): - t.insert(limit_expr) - - -def test_compute_stats(con): - t = con.table("functional_alltypes") - - t.compute_stats() - t.compute_stats(incremental=True) - - con.compute_stats("functional_alltypes") + con.insert(temp_table, limit_expr, database=db) @pytest.fixture @@ -202,53 +172,6 @@ def test_drop_view(con, created_view): assert created_view not in con.list_tables() -@pytest.fixture -def path_uuid(): - return f"change-location-{util.guid()}" - - -@pytest.fixture -def table(con, tmp_dir, path_uuid): - table_name = f"table_{util.guid()}" - fake_path = pjoin(tmp_dir, path_uuid) - schema = ibis.schema([("foo", "string"), ("bar", "int64")]) - yield con.create_table( - table_name, schema=schema, format="parquet", external=True, location=fake_path - ) - con.drop_table(table_name) - - -def test_change_location(table, tmp_dir, path_uuid): - old_loc = table.metadata().location - - new_path = pjoin(tmp_dir, "new-path") - table.alter(location=new_path) - - new_loc = table.metadata().location - assert new_loc == old_loc.replace(path_uuid, "new-path") - - -def test_change_properties(table): - props = {"foo": "1", "bar": "2"} - - table.alter(tbl_properties=props) - tbl_props = table.metadata().tbl_properties - for k, v in props.items(): - assert v == tbl_props[k] - - table.alter(serde_properties=props) - serde_props = table.metadata().serde_properties - for k, v in props.items(): - assert v == serde_props[k] - - -def test_change_format(table): - table.alter(format="avro") - - meta = table.metadata() - assert "Avro" in meta.hive_format - - def test_query_avro(con, test_data_dir): hdfs_path = pjoin(test_data_dir, "directory/avro/tpch/region") @@ -265,7 +188,7 @@ def test_query_avro(con, test_data_dir): table = con.avro_file(hdfs_path, avro_schema) # table exists - assert table._qualified_name in con.list_tables() + assert table.get_name() in con.list_tables() expr = table.r_name.value_counts() expr.execute() diff --git a/ibis/backends/impala/tests/test_ddl_compilation.py b/ibis/backends/impala/tests/test_ddl_compilation.py index d6f386ec0cbe8..46e71f4f0a708 100644 --- a/ibis/backends/impala/tests/test_ddl_compilation.py +++ b/ibis/backends/impala/tests/test_ddl_compilation.py @@ -42,38 +42,6 @@ def test_select_basics(t, snapshot): snapshot.assert_match(result, "out2.sql") -def test_load_data_unpartitioned(snapshot): - path = "/path/to/data" - stmt = ddl.LoadData("functional_alltypes", path, database="foo") - - result = stmt.compile() - snapshot.assert_match(result, "out1.sql") - - stmt.overwrite = True - result = stmt.compile() - snapshot.assert_match(result, "out2.sql") - - -def test_load_data_partitioned(snapshot): - path = "/path/to/data" - part = {"year": 2007, "month": 7} - part_schema = ibis.schema([("year", "int32"), ("month", "int32")]) - stmt = ddl.LoadData( - "functional_alltypes", - path, - database="foo", - partition=part, - partition_schema=part_schema, - ) - - result = stmt.compile() - snapshot.assert_match(result, "out1.sql") - - stmt.overwrite = True - result = stmt.compile() - snapshot.assert_match(result, "out2.sql") - - def test_cache_table_pool_name(snapshot): statement = ddl.CacheTable("foo", database="bar") query = statement.compile() diff --git a/ibis/backends/impala/tests/test_exprs.py b/ibis/backends/impala/tests/test_exprs.py index f6a7fd7bf1f5b..f700ec5908be5 100644 --- a/ibis/backends/impala/tests/test_exprs.py +++ b/ibis/backends/impala/tests/test_exprs.py @@ -132,7 +132,7 @@ def test_builtins(con, alltypes): s.repeat(i1), ] - proj_exprs = [expr.name("e%d" % i) for i, expr in enumerate(exprs)] + proj_exprs = [expr.name(f"e{i:d}") for i, expr in enumerate(exprs)] projection = table.select(proj_exprs) projection.limit(10).execute() @@ -418,7 +418,7 @@ def test_decimal_timestamp_builtins(con): exprs.append(ts + offset) exprs.append(ts - offset) - proj_exprs = [expr.name("e%d" % i) for i, expr in enumerate(exprs)] + proj_exprs = [expr.name(f"e{i:d}") for i, expr in enumerate(exprs)] projection = table.select(proj_exprs).limit(10) projection.execute() @@ -474,7 +474,7 @@ def test_aggregations(alltypes): d.var(where=cond), ] - metrics = [expr.name("e%d" % i) for i, expr in enumerate(exprs)] + metrics = [expr.name(f"e{i:d}") for i, expr in enumerate(exprs)] agged_table = table.aggregate(metrics) agged_table.execute() @@ -511,7 +511,7 @@ def test_analytic_functions(alltypes): f.max(), ] - proj_exprs = [expr.name("e%d" % i) for i, expr in enumerate(exprs)] + proj_exprs = [expr.name(f"e{i:d}") for i, expr in enumerate(exprs)] proj_table = g.mutate(proj_exprs) proj_table.execute() diff --git a/ibis/backends/impala/tests/test_parquet_ddl.py b/ibis/backends/impala/tests/test_parquet_ddl.py index 4cc05677c5093..c67fe383d16e2 100644 --- a/ibis/backends/impala/tests/test_parquet_ddl.py +++ b/ibis/backends/impala/tests/test_parquet_ddl.py @@ -42,10 +42,7 @@ def test_query_parquet_file_with_schema(con, test_data_dir): table = con.parquet_file(hdfs_path, schema=schema) - name = table._qualified_name - - # table exists - con.table(name) + assert table.get_name() in con.list_tables() expr = table.r_name.value_counts() expr.execute() diff --git a/ibis/backends/impala/tests/test_partition.py b/ibis/backends/impala/tests/test_partition.py index 52fe8a9b8bb5c..ab6ff1673b250 100644 --- a/ibis/backends/impala/tests/test_partition.py +++ b/ibis/backends/impala/tests/test_partition.py @@ -1,7 +1,5 @@ from __future__ import annotations -from posixpath import join as pjoin - import pandas as pd import pandas.testing as tm import pytest @@ -39,12 +37,6 @@ def unpart_t(con, df): con.drop_table(pd_name) -def test_is_partitioned(con, temp_table): - schema = ibis.schema([("foo", "string"), ("year", "int32"), ("month", "string")]) - con.create_table(temp_table, schema=schema, partition=["year", "month"]) - assert con.table(temp_table).is_partitioned - - def test_create_table_with_partition_column(con, temp_table): schema = ibis.schema( [ @@ -69,7 +61,7 @@ def test_create_table_with_partition_column(con, temp_table): table_schema = con.get_schema(temp_table) assert_equal(table_schema, ex_schema) - partition_schema = con.table(temp_table).partition_schema() + partition_schema = con.get_partition_schema(temp_table) expected = ibis.schema([("year", "int32"), ("month", "string")]) assert_equal(partition_schema, expected) @@ -93,14 +85,14 @@ def test_create_partitioned_separate_schema(con, temp_table): table_schema = con.get_schema(temp_table) assert_equal(table_schema, ex_schema) - partition_schema = con.table(temp_table).partition_schema() + partition_schema = con.get_partition_schema(temp_table) assert_equal(partition_schema, part_schema) def test_unpartitioned_table_get_schema(con): tname = "functional_alltypes" with pytest.raises(ImpylaError): - con.table(tname).partition_schema() + con.get_partition_schema(tname) def test_insert_select_partitioned_table(con, df, temp_table, unpart_t): @@ -120,9 +112,16 @@ def test_insert_select_partitioned_table(con, df, temp_table, unpart_t): part = {"year": year, "month": month} else: part = [year, month] - part_t.insert(select_stmt, partition=part) + con.insert(temp_table, select_stmt, partition=part) + + result = part_t.execute().sort_values(by="id").reset_index(drop=True)[df.columns] - verify_partitioned_table(part_t, df, unique_keys) + tm.assert_frame_equal(result, df) + + parts = con.list_partitions(temp_table) + + # allow for the total line + assert len(parts) == len(unique_keys) + 1 @pytest.fixture @@ -151,17 +150,16 @@ def test_add_drop_partition_no_location(con, temp_table): partition=["year", "month"], tbl_properties={"transactional": "false"}, ) - table = con.table(temp_table) part = {"year": 2007, "month": 4} - table.add_partition(part) + con.add_partition(temp_table, part) - assert len(table.partitions()) == 2 + assert len(con.list_partitions(temp_table)) == 2 - table.drop_partition(part) + con.drop_partition(temp_table, part) - assert len(table.partitions()) == 1 + assert len(con.list_partitions(temp_table)) == 1 def test_add_drop_partition_owned_by_impala(con, temp_table): @@ -172,22 +170,19 @@ def test_add_drop_partition_owned_by_impala(con, temp_table): partition=["year", "month"], tbl_properties={"transactional": "false"}, ) - - table = con.table(temp_table) - part = {"year": 2007, "month": 4} subdir = util.guid() basename = util.guid() path = f"/tmp/{subdir}/{basename}" - table.add_partition(part, location=path) + con.add_partition(temp_table, part, location=path) - assert len(table.partitions()) == 2 + assert len(con.list_partitions(temp_table)) == 2 - table.drop_partition(part) + con.drop_partition(temp_table, part) - assert len(table.partitions()) == 1 + assert len(con.list_partitions(temp_table)) == 1 def test_add_drop_partition_hive_bug(con, temp_table): @@ -199,66 +194,14 @@ def test_add_drop_partition_hive_bug(con, temp_table): tbl_properties={"transactional": "false"}, ) - table = con.table(temp_table) - part = {"year": 2007, "month": 4} path = f"/tmp/{util.guid()}" - table.add_partition(part, location=path) - - assert len(table.partitions()) == 2 - - table.drop_partition(part) - - assert len(table.partitions()) == 1 - - -@pytest.mark.xfail( - raises=AttributeError, reason="test is bogus and needs to be rewritten" -) -def test_load_data_partition(con, tmp_dir, unpart_t, df, temp_table): - part_keys = ["year", "month"] - - con.create_table(temp_table, schema=unpart_t.schema(), partition=part_keys) - part_t = con.table(temp_table) - - # trim the runtime of this test - df = df[df.month == "1"].reset_index(drop=True) - - unique_keys = df[part_keys].drop_duplicates() - - hdfs_dir = pjoin(tmp_dir, "load-data-partition") - - df2 = df.drop(["year", "month"], axis="columns") - - csv_props = {"serialization.format": ",", "field.delim": ","} + con.add_partition(temp_table, part, location=path) - for i, (year, month) in enumerate(unique_keys.itertuples(index=False)): - chunk = df2[(df.year == year) & (df.month == month)] - chunk_path = pjoin(hdfs_dir, f"{i}.csv") + assert len(con.list_partitions(temp_table)) == 2 - con.write_dataframe(chunk, chunk_path) + con.drop_partition(temp_table, part) - # test both styles of insert - if i: - part = {"year": year, "month": month} - else: - part = [year, month] - - part_t.add_partition(part) - part_t.alter_partition(part, format="text", serde_properties=csv_props) - part_t.load_data(chunk_path, partition=part) - - verify_partitioned_table(part_t, df, unique_keys) - - -def verify_partitioned_table(part_t, df, unique_keys): - result = part_t.execute().sort_values(by="id").reset_index(drop=True)[df.columns] - - tm.assert_frame_equal(result, df) - - parts = part_t.partitions() - - # allow for the total line - assert len(parts) == len(unique_keys) + 1 + assert len(con.list_partitions(temp_table)) == 1 diff --git a/ibis/backends/impala/tests/test_patched.py b/ibis/backends/impala/tests/test_patched.py index df9fa679d197b..36ea8268fab78 100644 --- a/ibis/backends/impala/tests/test_patched.py +++ b/ibis/backends/impala/tests/test_patched.py @@ -20,10 +20,6 @@ def test_invalidate_metadata(con, spy, test_data_db, qname): con.invalidate_metadata() spy.assert_called_with("INVALIDATE METADATA") - con.invalidate_metadata("functional_alltypes") - t = con.table("functional_alltypes") - t.invalidate_metadata() - con.invalidate_metadata("functional_alltypes", database=test_data_db) spy.assert_called_with(f"INVALIDATE METADATA {qname}") @@ -33,32 +29,34 @@ def test_refresh(con, spy, qname): con.refresh(tname) spy.assert_called_with(f"REFRESH {qname}") - t = con.table(tname) - t.refresh() - spy.assert_called_with(f"REFRESH {qname}") - def test_describe_formatted(con, spy, qname): - t = con.table("functional_alltypes") - desc = t.describe_formatted() + desc = con.describe_formatted("functional_alltypes") spy.assert_called_with(f"DESCRIBE FORMATTED {qname}") assert isinstance(desc, metadata.TableMetadata) def test_show_files(con, spy, qname): - t = con.table("functional_alltypes") - desc = t.files() + desc = con.show_files("functional_alltypes") spy.assert_called_with(f"SHOW FILES IN {qname}") assert isinstance(desc, pd.DataFrame) -def test_table_column_stats(con, spy, qname): - t = con.table("functional_alltypes") +def test_column_stats(con, spy, qname): + desc = con.column_stats("functional_alltypes") + spy.assert_called_with(f"SHOW COLUMN STATS {qname}") + assert isinstance(desc, pd.DataFrame) + - desc = t.stats() +def test_table_stats(con, spy, qname): + desc = con.table_stats("functional_alltypes") spy.assert_called_with(f"SHOW TABLE STATS {qname}") assert isinstance(desc, pd.DataFrame) - desc = t.column_stats() - spy.assert_called_with(f"SHOW COLUMN STATS {qname}") - assert isinstance(desc, pd.DataFrame) + +def test_compute_stats(con, spy, qname): + con.compute_stats("functional_alltypes") + spy.assert_called_with(f"COMPUTE STATS {qname}") + + con.compute_stats("functional_alltypes", incremental=True) + spy.assert_called_with(f"COMPUTE INCREMENTAL STATS {qname}") diff --git a/ibis/backends/impala/udf.py b/ibis/backends/impala/udf.py index 32304c65dd35a..d0a622439c785 100644 --- a/ibis/backends/impala/udf.py +++ b/ibis/backends/impala/udf.py @@ -21,7 +21,7 @@ import ibis.expr.operations as ops from ibis import util -__all__ = ["scalar_function", "aggregate_function", "wrap_udf", "wrap_uda"] +__all__ = ["aggregate_function", "scalar_function", "wrap_uda", "wrap_udf"] class Function(abc.ABC): diff --git a/ibis/backends/mssql/__init__.py b/ibis/backends/mssql/__init__.py index c640f58e80013..cdaa985ff5452 100644 --- a/ibis/backends/mssql/__init__.py +++ b/ibis/backends/mssql/__init__.py @@ -328,7 +328,7 @@ def _get_schema_using_query(self, query: str) -> sch.Schema: scale, error_number, error_message - FROM sys.dm_exec_describe_first_result_set({tsql}, NULL, 0) + FROM sys.dm_exec_describe_first_result_set(N{tsql}, NULL, 0) ORDER BY column_ordinal """ with self._safe_raw_sql(query) as cur: diff --git a/ibis/backends/mssql/tests/test_client.py b/ibis/backends/mssql/tests/test_client.py index 5db3665027d9d..d252ed9d9e293 100644 --- a/ibis/backends/mssql/tests/test_client.py +++ b/ibis/backends/mssql/tests/test_client.py @@ -311,3 +311,11 @@ def test_escape_special_characters(): assert test_func("1bis}Testing!") == "{1bis}}Testing!}" assert test_func("{R;3G1/8Al2AniRye") == "{{R;3G1/8Al2AniRye}" assert test_func("{R;3G1/8Al2AniRye}") == "{{R;3G1/8Al2AniRye}}}" + + +def test_non_ascii_column_name(con): + expr = con.sql("SELECT 1 AS [калона]") + schema = expr.schema() + names = schema.names + assert len(names) == 1 + assert names[0] == "калона" diff --git a/ibis/backends/oracle/tests/test_client.py b/ibis/backends/oracle/tests/test_client.py index 97765b4d754f1..21c5b78818044 100644 --- a/ibis/backends/oracle/tests/test_client.py +++ b/ibis/backends/oracle/tests/test_client.py @@ -1,6 +1,6 @@ from __future__ import annotations -from datetime import date # noqa: TCH003 +from datetime import date # noqa: TC003 import oracledb import pandas as pd diff --git a/ibis/backends/polars/__init__.py b/ibis/backends/polars/__init__.py index ff65f5fb3876b..0a533541e3091 100644 --- a/ibis/backends/polars/__init__.py +++ b/ibis/backends/polars/__init__.py @@ -19,7 +19,7 @@ from ibis.common.dispatch import lazy_singledispatch from ibis.expr.rewrites import lower_stringslice, replace_parameter from ibis.formats.polars import PolarsSchema -from ibis.util import deprecated, gen_name, normalize_filename, normalize_filenames +from ibis.util import gen_name, normalize_filename, normalize_filenames if TYPE_CHECKING: from collections.abc import Iterable @@ -86,7 +86,13 @@ def version(self) -> str: def list_tables(self, like=None, database=None): return self._filter_with_like(list(self._tables.keys()), like) - def table(self, name: str) -> ir.Table: + def table(self, name: str, database: None = None) -> ir.Table: + if database is not None: + raise com.IbisError( + "Passing `database` to the Polars backend's `table()` method is not " + "supported: Polars cannot set a database." + ) + table = self._tables.get(name) if table is None: raise com.TableNotFound(name) @@ -100,73 +106,6 @@ def _register_in_memory_table(self, op: ops.InMemoryTable) -> None: def _finalize_memtable(self, name: str) -> None: self.drop_table(name, force=True) - @deprecated( - as_of="9.1", - instead="use the explicit `read_*` method for the filetype you are trying to read, e.g., read_parquet, read_csv, etc.", - ) - def register( - self, - source: str | Path | Any, - table_name: str | None = None, - **kwargs: Any, - ) -> ir.Table: - """Register a data source as a table in the current database. - - Parameters - ---------- - source - The data source(s). May be a path to a file, a parquet directory, or a pandas - dataframe. - table_name - An optional name to use for the created table. This defaults to - a sequentially generated name. - **kwargs - Additional keyword arguments passed to Polars loading functions for - CSV or parquet. - See https://pola-rs.github.io/polars/py-polars/html/reference/api/polars.scan_csv.html - and https://pola-rs.github.io/polars/py-polars/html/reference/api/polars.scan_parquet.html - for more information - - Returns - ------- - ir.Table - The just-registered table - - """ - - if isinstance(source, (str, Path)): - first = str(source) - elif isinstance(source, (list, tuple)): - first = str(source[0]) - else: - try: - return self.read_pandas(source, table_name=table_name, **kwargs) - except ValueError: - self._register_failure() - - if first.startswith(("parquet://", "parq://")) or first.endswith( - ("parq", "parquet") - ): - return self.read_parquet(source, table_name=table_name, **kwargs) - elif first.startswith( - ("csv://", "csv.gz://", "txt://", "txt.gz://") - ) or first.endswith(("csv", "csv.gz", "tsv", "tsv.gz", "txt", "txt.gz")): - return self.read_csv(source, table_name=table_name, **kwargs) - else: - self._register_failure() - return None - - def _register_failure(self): - import inspect - - msg = ", ".join( - m[0] for m in inspect.getmembers(self) if m[0].startswith("read_") - ) - raise ValueError( - f"Cannot infer appropriate read function for input, " - f"please call one of {msg} directly" - ) - def _add_table(self, name: str, obj: pl.LazyFrame | pl.DataFrame) -> None: if isinstance(obj, pl.DataFrame): obj = obj.lazy() @@ -390,19 +329,20 @@ def create_table( ) -> ir.Table: if database is not None: raise com.IbisError( - "Passing `database` to the Polars backend create_table method has no " - "effect: Polars cannot set a database." + "Passing `database` to the Polars backend's `create_table()` method is " + "not supported: Polars cannot set a database." ) if temp is False: raise com.IbisError( - "Passing `temp=False` to the Polars backend create_table method is not " - "supported: all tables are in memory and temporary." + "Passing `temp=False` to the Polars backend's `create_table()` method " + "is not supported: all tables are in memory and temporary." ) if not overwrite and name in self._tables: raise com.IntegrityError( - f"Table {name} already exists. Use overwrite=True to clobber existing tables" + f"Table {name!r} already exists. Use `overwrite=True` to clobber " + "existing tables." ) if schema is not None and obj is None: diff --git a/ibis/backends/polars/rewrites.py b/ibis/backends/polars/rewrites.py index 24768b80fd617..32cd2966b0fb7 100644 --- a/ibis/backends/polars/rewrites.py +++ b/ibis/backends/polars/rewrites.py @@ -7,7 +7,7 @@ from ibis.common.annotations import attribute from ibis.common.collections import FrozenDict from ibis.common.patterns import replace -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.schema import Schema diff --git a/ibis/backends/postgres/tests/test_functions.py b/ibis/backends/postgres/tests/test_functions.py index 95423a59c4df4..a07c8d81aeb87 100644 --- a/ibis/backends/postgres/tests/test_functions.py +++ b/ibis/backends/postgres/tests/test_functions.py @@ -357,21 +357,14 @@ def test_coalesce(con, expr, expected): @pytest.mark.parametrize( - ("expr", "expected"), + "expr", [ - param(ibis.coalesce(ibis.null(), ibis.null()), None, id="all_null"), - param( - ibis.coalesce( - ibis.null().cast("int8"), - ibis.null().cast("int8"), - ibis.null().cast("int8"), - ), - None, - id="all_nulls_with_all_cast", - ), + ibis.coalesce(*([ibis.null()] * 2)), + ibis.coalesce(*([ibis.null().cast("int8")] * 3)), ], + ids=["all", "all_with_cast"], ) -def test_coalesce_all_na(con, expr, expected): +def test_coalesce_all_na(con, expr): assert con.execute(expr) is None @@ -469,7 +462,7 @@ def test_category_label(alltypes, df): bins = [0, 10, 25, 50, 100] labels = ["a", "b", "c", "d"] bucket = d.bucket(bins) - expr = bucket.label(labels) + expr = bucket.cases(*enumerate(labels), else_=None) result = expr.execute() with warnings.catch_warnings(): @@ -497,68 +490,68 @@ def test_union_cte(alltypes, distinct, assert_sql): ("func", "pandas_func"), [ param( - lambda t, cond: t.bool_col.count(), - lambda df, cond: df.bool_col.count(), + lambda t, _: t.bool_col.count(), + lambda df, _: df.bool_col.count(), id="count", ), param( - lambda t, cond: t.bool_col.any(), - lambda df, cond: df.bool_col.any(), + lambda t, _: t.bool_col.any(), + lambda df, _: df.bool_col.any(), id="any", ), param( - lambda t, cond: t.bool_col.all(), - lambda df, cond: df.bool_col.all(), + lambda t, _: t.bool_col.all(), + lambda df, _: df.bool_col.all(), id="all", ), param( - lambda t, cond: t.bool_col.notany(), - lambda df, cond: ~df.bool_col.any(), + lambda t, _: t.bool_col.notany(), + lambda df, _: ~df.bool_col.any(), id="notany", ), param( - lambda t, cond: t.bool_col.notall(), - lambda df, cond: ~df.bool_col.all(), + lambda t, _: t.bool_col.notall(), + lambda df, _: ~df.bool_col.all(), id="notall", ), param( - lambda t, cond: t.double_col.sum(), - lambda df, cond: df.double_col.sum(), + lambda t, _: t.double_col.sum(), + lambda df, _: df.double_col.sum(), id="sum", ), param( - lambda t, cond: t.double_col.mean(), - lambda df, cond: df.double_col.mean(), + lambda t, _: t.double_col.mean(), + lambda df, _: df.double_col.mean(), id="mean", ), param( - lambda t, cond: t.double_col.min(), - lambda df, cond: df.double_col.min(), + lambda t, _: t.double_col.min(), + lambda df, _: df.double_col.min(), id="min", ), param( - lambda t, cond: t.double_col.max(), - lambda df, cond: df.double_col.max(), + lambda t, _: t.double_col.max(), + lambda df, _: df.double_col.max(), id="max", ), param( - lambda t, cond: t.double_col.var(), - lambda df, cond: df.double_col.var(), + lambda t, _: t.double_col.var(), + lambda df, _: df.double_col.var(), id="var", ), param( - lambda t, cond: t.double_col.std(), - lambda df, cond: df.double_col.std(), + lambda t, _: t.double_col.std(), + lambda df, _: df.double_col.std(), id="std", ), param( - lambda t, cond: t.double_col.var(how="sample"), - lambda df, cond: df.double_col.var(ddof=1), + lambda t, _: t.double_col.var(how="sample"), + lambda df, _: df.double_col.var(ddof=1), id="samp_var", ), param( - lambda t, cond: t.double_col.std(how="pop"), - lambda df, cond: df.double_col.std(ddof=0), + lambda t, _: t.double_col.std(how="pop"), + lambda df, _: df.double_col.std(ddof=0), id="pop_std", ), param( diff --git a/ibis/backends/pyspark/__init__.py b/ibis/backends/pyspark/__init__.py index a522b2c93a170..519b85d7d0260 100644 --- a/ibis/backends/pyspark/__init__.py +++ b/ibis/backends/pyspark/__init__.py @@ -28,7 +28,6 @@ from ibis.backends.sql.compilers.base import AlterTable, RenameTable from ibis.expr.operations.udf import InputType from ibis.legacy.udf.vectorized import _coerce_to_series -from ibis.util import deprecated try: from pyspark.errors import ParseException @@ -58,13 +57,6 @@ class SparkConnectGrpcException(Exception): ConnectionMode = Literal["streaming", "batch"] -def normalize_filenames(source_list): - # Promote to list - source_list = util.promote_list(source_list) - - return list(map(util.normalize_filename, source_list)) - - @F.pandas_udf(returnType=DoubleType(), functionType=F.PandasUDFType.SCALAR) def unwrap_json_float(s: pd.Series) -> pd.Series: import json @@ -872,7 +864,7 @@ def read_csv( ) inferSchema = kwargs.pop("inferSchema", True) header = kwargs.pop("header", True) - source_list = normalize_filenames(source_list) + source_list = util.normalize_filenames(source_list) spark_df = self._session.read.csv( source_list, inferSchema=inferSchema, header=header, **kwargs ) @@ -912,72 +904,13 @@ def read_json( "Pyspark in streaming mode does not support direction registration of JSON files. " "Please use `read_json_dir` instead." ) - source_list = normalize_filenames(source_list) + source_list = util.normalize_filenames(source_list) spark_df = self._session.read.json(source_list, **kwargs) table_name = table_name or util.gen_name("read_json") spark_df.createOrReplaceTempView(table_name) return self.table(table_name) - @deprecated( - as_of="9.1", - instead="use the explicit `read_*` method for the filetype you are trying to read, e.g., read_parquet, read_csv, etc.", - ) - def register( - self, - source: str | Path | Any, - table_name: str | None = None, - **kwargs: Any, - ) -> ir.Table: - """Register a data source as a table in the current database. - - Parameters - ---------- - source - The data source(s). May be a path to a file or directory of - parquet/csv files, or an iterable of CSV files. - table_name - An optional name to use for the created table. This defaults to - a random generated name. - **kwargs - Additional keyword arguments passed to PySpark loading functions for - CSV or parquet. - - Returns - ------- - ir.Table - The just-registered table - - """ - if isinstance(source, (str, Path)): - first = str(source) - elif isinstance(source, (list, tuple)): - first = source[0] - else: - self._register_failure() - - if first.startswith(("parquet://", "parq://")) or first.endswith( - ("parq", "parquet") - ): - return self.read_parquet(source, table_name=table_name, **kwargs) - elif first.startswith( - ("csv://", "csv.gz://", "txt://", "txt.gz://") - ) or first.endswith(("csv", "csv.gz", "tsv", "tsv.gz", "txt", "txt.gz")): - return self.read_csv(source, table_name=table_name, **kwargs) - else: - self._register_failure() # noqa: RET503 - - def _register_failure(self): - import inspect - - msg = ", ".join( - name for name, _ in inspect.getmembers(self) if name.startswith("read_") - ) - raise ValueError( - f"Cannot infer appropriate read function for input, " - f"please call one of {msg} directly" - ) - @util.experimental def to_delta( self, diff --git a/ibis/backends/risingwave/tests/test_functions.py b/ibis/backends/risingwave/tests/test_functions.py index 7d31e7ae3e872..38be06b1281d8 100644 --- a/ibis/backends/risingwave/tests/test_functions.py +++ b/ibis/backends/risingwave/tests/test_functions.py @@ -301,7 +301,7 @@ def test_category_label(alltypes, df): bins = [0, 10, 25, 50, 100] labels = ["a", "b", "c", "d"] bucket = d.bucket(bins) - expr = bucket.label(labels) + expr = bucket.cases(*enumerate(labels), else_=None) result = expr.execute() with warnings.catch_warnings(): diff --git a/ibis/backends/sql/compilers/__init__.py b/ibis/backends/sql/compilers/__init__.py index 3f876ec9b44ee..1c27d09ddab7f 100644 --- a/ibis/backends/sql/compilers/__init__.py +++ b/ibis/backends/sql/compilers/__init__.py @@ -3,8 +3,8 @@ __all__ = [ "BigQueryCompiler", "ClickHouseCompiler", - "DatabricksCompiler", "DataFusionCompiler", + "DatabricksCompiler", "DruidCompiler", "DuckDBCompiler", "ExasolCompiler", @@ -16,8 +16,8 @@ "PostgresCompiler", "PySparkCompiler", "RisingWaveCompiler", - "SnowflakeCompiler", "SQLiteCompiler", + "SnowflakeCompiler", "TrinoCompiler", ] diff --git a/ibis/backends/sql/compilers/base.py b/ibis/backends/sql/compilers/base.py index 02b198ab930a3..16741aaada48c 100644 --- a/ibis/backends/sql/compilers/base.py +++ b/ibis/backends/sql/compilers/base.py @@ -80,7 +80,7 @@ class AggGen: class _Accessor: """An internal type to handle getattr/getitem access.""" - __slots__ = ("handler", "compiler") + __slots__ = ("compiler", "handler") def __init__(self, handler: Callable, compiler: SQLGlotCompiler): self.handler = handler @@ -175,7 +175,7 @@ def __getitem__(self, key: str) -> Callable[..., sge.Anonymous]: class FuncGen: - __slots__ = ("dialect", "namespace", "anon", "copy") + __slots__ = ("anon", "copy", "dialect", "namespace") def __init__( self, *, dialect: sg.Dialect, namespace: str | None = None, copy: bool = False diff --git a/ibis/backends/sql/compilers/bigquery/__init__.py b/ibis/backends/sql/compilers/bigquery/__init__.py index 3b27524db93d8..2b62903d00098 100644 --- a/ibis/backends/sql/compilers/bigquery/__init__.py +++ b/ibis/backends/sql/compilers/bigquery/__init__.py @@ -237,7 +237,6 @@ def to_sqlglot( sql = super().to_sqlglot(expr, limit=limit, params=params) table_expr = expr.as_table() - geocols = table_expr.schema().geospatial memtable_names = frozenset( op.name for op in table_expr.op().find(ops.InMemoryTable) @@ -250,24 +249,6 @@ def to_sqlglot( memtable_names=memtable_names, ).transform(_remove_null_ordering_from_unsupported_window) - if geocols: - # if there are any geospatial columns, we have to convert them to WKB, - # so interactive mode knows how to display them - # - # by default bigquery returns data to python as WKT, and there's really - # no point in supporting both if we don't need to. - quoted = self.quoted - result = sg.select( - sge.Star( - replace=[ - self.f.st_asbinary(sg.column(col, quoted=quoted)).as_( - col, quoted=quoted - ) - for col in geocols - ] - ) - ).from_(result.subquery()) - sources = [] for udf_node in table_expr.op().find(ops.ScalarUDF): diff --git a/ibis/backends/sql/compilers/bigquery/udf/core.py b/ibis/backends/sql/compilers/bigquery/udf/core.py index 9cffb420840a2..ead41cfa8cc40 100644 --- a/ibis/backends/sql/compilers/bigquery/udf/core.py +++ b/ibis/backends/sql/compilers/bigquery/udf/core.py @@ -8,6 +8,7 @@ import inspect import textwrap from collections import ChainMap +from inspect import _empty as EMPTY from typing import TYPE_CHECKING from ibis.backends.sql.compilers.bigquery.udf.find import find_names @@ -66,7 +67,7 @@ def wrapper(*args, **kwargs): return wrapper -@rewrite.register(ast.Call(func=ast.Name(id="print"))) +@rewrite.register(ast.Call(func=ast.Name(id="print"), args=EMPTY, keywords=EMPTY)) def rewrite_print(node): return ast.Call( func=ast.Attribute( @@ -79,13 +80,15 @@ def rewrite_print(node): ) -@rewrite.register(ast.Call(func=ast.Name(id="len"))) +@rewrite.register(ast.Call(func=ast.Name(id="len"), args=EMPTY, keywords=EMPTY)) def rewrite_len(node): assert len(node.args) == 1 return ast.Attribute(value=node.args[0], attr="length", ctx=ast.Load()) -@rewrite.register(ast.Call(func=ast.Attribute(attr="append"))) +@rewrite.register( + ast.Call(func=ast.Attribute(attr="append", value=None), args=EMPTY, keywords=EMPTY) +) def rewrite_append(node): return ast.Call( func=ast.Attribute(value=node.func.value, attr="push", ctx=ast.Load()), @@ -95,7 +98,11 @@ def rewrite_append(node): @rewrite.register( - ast.Call(func=ast.Attribute(value=ast.Name(id="Array"), attr="from_")) + ast.Call( + func=ast.Attribute(value=ast.Name(id="Array"), attr="from_"), + args=EMPTY, + keywords=EMPTY, + ) ) def rewrite_array_from(node): return ast.Call( diff --git a/ibis/backends/sql/compilers/bigquery/udf/rewrite.py b/ibis/backends/sql/compilers/bigquery/udf/rewrite.py index 88f154e7dd1a8..b0148d1502a42 100644 --- a/ibis/backends/sql/compilers/bigquery/udf/rewrite.py +++ b/ibis/backends/sql/compilers/bigquery/udf/rewrite.py @@ -1,6 +1,7 @@ from __future__ import annotations import ast +from inspect import _empty as EMPTY from typing import TYPE_CHECKING if TYPE_CHECKING: @@ -20,7 +21,7 @@ def matches(value: ast.AST, pattern: ast.AST) -> bool: fields = [ (field, getattr(pattern, field)) for field in pattern._fields - if hasattr(pattern, field) + if hasattr(pattern, field) and getattr(pattern, field) is not EMPTY ] return all( matches(getattr(value, field_name), field_value) diff --git a/ibis/backends/sql/compilers/risingwave.py b/ibis/backends/sql/compilers/risingwave.py index c4baf94d6723f..381649af3347a 100644 --- a/ibis/backends/sql/compilers/risingwave.py +++ b/ibis/backends/sql/compilers/risingwave.py @@ -1,5 +1,6 @@ from __future__ import annotations +import sqlglot as sg import sqlglot.expressions as sge import ibis.common.exceptions as com @@ -40,25 +41,23 @@ def visit_DateNow(self, op): return self.cast(sge.CurrentTimestamp(), dt.date) def visit_First(self, op, *, arg, where, order_by, include_null): - if include_null: - raise com.UnsupportedOperationError( - "`include_null=True` is not supported by the risingwave backend" - ) if not order_by: raise com.UnsupportedOperationError( "RisingWave requires an `order_by` be specified in `first`" ) + if not include_null: + cond = arg.is_(sg.not_(NULL, copy=False)) + where = cond if where is None else sge.And(this=cond, expression=where) return self.agg.first_value(arg, where=where, order_by=order_by) def visit_Last(self, op, *, arg, where, order_by, include_null): - if include_null: - raise com.UnsupportedOperationError( - "`include_null=True` is not supported by the risingwave backend" - ) if not order_by: raise com.UnsupportedOperationError( "RisingWave requires an `order_by` be specified in `last`" ) + if not include_null: + cond = arg.is_(sg.not_(NULL, copy=False)) + where = cond if where is None else sge.And(this=cond, expression=where) return self.agg.last_value(arg, where=where, order_by=order_by) def visit_Correlation(self, op, *, left, right, how, where): diff --git a/ibis/backends/sql/datatypes.py b/ibis/backends/sql/datatypes.py index 8b56760a0baf1..5d19a4332b197 100644 --- a/ibis/backends/sql/datatypes.py +++ b/ibis/backends/sql/datatypes.py @@ -102,6 +102,12 @@ # XML = auto() } +if sg.__version_tuple__[0] >= 26: + _from_sqlglot_types |= { + typecode.DATETIME2: dt.Timestamp, + typecode.SMALLDATETIME: dt.Timestamp, + } + _to_sqlglot_types = { dt.Null: typecode.NULL, dt.Boolean: typecode.BOOLEAN, diff --git a/ibis/backends/sql/rewrites.py b/ibis/backends/sql/rewrites.py index 6dcdeafc97e07..f51148025dc59 100644 --- a/ibis/backends/sql/rewrites.py +++ b/ibis/backends/sql/rewrites.py @@ -14,11 +14,11 @@ import ibis.expr.datatypes as dt import ibis.expr.operations as ops from ibis.common.annotations import attribute -from ibis.common.collections import FrozenDict # noqa: TCH001 +from ibis.common.collections import FrozenDict # noqa: TC001 from ibis.common.deferred import var from ibis.common.graph import Graph from ibis.common.patterns import InstanceOf, Object, Pattern, replace -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.rewrites import d, p, replace_parameter from ibis.expr.schema import Schema @@ -320,7 +320,9 @@ def merge_select_select(_, **kwargs): selections=selections, predicates=unique_predicates, qualified=unique_qualified, - sort_keys=unique_sort_keys, + sort_keys=tuple( + key for key in unique_sort_keys if not isinstance(key.expr, ops.Literal) + ), distinct=distinct, ) return result if complexity(result) <= complexity(_) else _ diff --git a/ibis/backends/sqlite/tests/test_client.py b/ibis/backends/sqlite/tests/test_client.py index f039cd5fabbaf..8b6b767c28b29 100644 --- a/ibis/backends/sqlite/tests/test_client.py +++ b/ibis/backends/sqlite/tests/test_client.py @@ -71,8 +71,9 @@ def total(x) -> float: ) def test_connect(url, ext, tmp_path): path = os.path.abspath(tmp_path / f"test.{ext}") - with sqlite3.connect(path): - pass + + sqlite3.connect(path).close() + con = ibis.connect(url(path)) one = ibis.literal(1) assert con.execute(one) == 1 diff --git a/ibis/backends/sqlite/tests/test_types.py b/ibis/backends/sqlite/tests/test_types.py index 14f8eeebd9f91..fb6598391f41e 100644 --- a/ibis/backends/sqlite/tests/test_types.py +++ b/ibis/backends/sqlite/tests/test_types.py @@ -37,26 +37,29 @@ def db(tmp_path_factory): path = str(tmp_path_factory.mktemp("databases") / "formats.db") con = sqlite3.connect(path) - con.execute("CREATE TABLE timestamps (ts TIMESTAMP)") - con.execute("CREATE TABLE timestamps_tz (ts TIMESTAMPTZ)") - con.execute("CREATE TABLE weird (str_col STRING, date_col ITSADATE)") - con.execute("CREATE TABLE basic (a INTEGER, b REAL, c BOOLEAN, d BLOB)") - with con: - con.executemany("INSERT INTO timestamps VALUES (?)", [(t,) for t in TIMESTAMPS]) - con.executemany( - "INSERT INTO timestamps_tz VALUES (?)", - [(t,) for t in TIMESTAMPS_TZ], - ) - con.executemany( - "INSERT INTO weird VALUES (?, ?)", - [ - ("a", "2022-01-01"), - ("b", "2022-01-02"), - ("c", "2022-01-03"), - ("d", "2022-01-04"), - ], - ) - con.close() + try: + with con: + con.execute("CREATE TABLE timestamps (ts TIMESTAMP)") + con.execute("CREATE TABLE timestamps_tz (ts TIMESTAMPTZ)") + con.execute("CREATE TABLE weird (str_col STRING, date_col ITSADATE)") + con.execute("CREATE TABLE basic (a INTEGER, b REAL, c BOOLEAN, d BLOB)") + con.executemany( + "INSERT INTO timestamps VALUES (?)", [(t,) for t in TIMESTAMPS] + ) + con.executemany( + "INSERT INTO timestamps_tz VALUES (?)", [(t,) for t in TIMESTAMPS_TZ] + ) + con.executemany( + "INSERT INTO weird VALUES (?, ?)", + [ + ("a", "2022-01-01"), + ("b", "2022-01-02"), + ("c", "2022-01-03"), + ("d", "2022-01-04"), + ], + ) + finally: + con.close() return path diff --git a/ibis/backends/tests/errors.py b/ibis/backends/tests/errors.py index ca540a359a461..8b9e9a2eb5dde 100644 --- a/ibis/backends/tests/errors.py +++ b/ibis/backends/tests/errors.py @@ -53,6 +53,7 @@ ArithmeticException as PySparkArithmeticException, ) from pyspark.errors.exceptions.base import ParseException as PySparkParseException + from pyspark.errors.exceptions.base import PySparkValueError from pyspark.errors.exceptions.base import PythonException as PySparkPythonException from pyspark.errors.exceptions.connect import ( SparkConnectGrpcException as PySparkConnectGrpcException, @@ -60,7 +61,7 @@ except ImportError: PySparkParseException = PySparkAnalysisException = PySparkArithmeticException = ( PySparkPythonException - ) = PySparkConnectGrpcException = None + ) = PySparkConnectGrpcException = PySparkValueError = None try: from google.api_core.exceptions import BadRequest as GoogleBadRequest diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/bigquery/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/bigquery/out.sql new file mode 100644 index 0000000000000..dedc0ae8059f7 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/bigquery/out.sql @@ -0,0 +1,7 @@ +SELECT + `t0`.`a`, + 9 AS `i`, + 'foo' AS `s` +FROM `test` AS `t0` +ORDER BY + `t0`.`a` ASC NULLS LAST \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/clickhouse/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/clickhouse/out.sql new file mode 100644 index 0000000000000..f83550410464d --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/clickhouse/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a" AS "a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/databricks/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/databricks/out.sql new file mode 100644 index 0000000000000..dedc0ae8059f7 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/databricks/out.sql @@ -0,0 +1,7 @@ +SELECT + `t0`.`a`, + 9 AS `i`, + 'foo' AS `s` +FROM `test` AS `t0` +ORDER BY + `t0`.`a` ASC NULLS LAST \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/datafusion/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/datafusion/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/datafusion/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/druid/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/druid/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/druid/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/duckdb/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/duckdb/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/duckdb/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/exasol/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/exasol/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/exasol/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/flink/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/flink/out.sql new file mode 100644 index 0000000000000..dedc0ae8059f7 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/flink/out.sql @@ -0,0 +1,7 @@ +SELECT + `t0`.`a`, + 9 AS `i`, + 'foo' AS `s` +FROM `test` AS `t0` +ORDER BY + `t0`.`a` ASC NULLS LAST \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/impala/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/impala/out.sql new file mode 100644 index 0000000000000..56acf13d5c8df --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/impala/out.sql @@ -0,0 +1,7 @@ +SELECT + `t0`.`a`, + 9 AS `i`, + 'foo' AS `s` +FROM `test` AS `t0` +ORDER BY + `t0`.`a` ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/mssql/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/mssql/out.sql new file mode 100644 index 0000000000000..0474550f8089a --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/mssql/out.sql @@ -0,0 +1,7 @@ +SELECT + [t0].[a], + 9 AS [i], + 'foo' AS [s] +FROM [test] AS [t0] +ORDER BY + CASE WHEN [t0].[a] IS NULL THEN 1 ELSE 0 END, [t0].[a] ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/mysql/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/mysql/out.sql new file mode 100644 index 0000000000000..dea7ffd250fc7 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/mysql/out.sql @@ -0,0 +1,7 @@ +SELECT + `t0`.`a`, + 9 AS `i`, + 'foo' AS `s` +FROM `test` AS `t0` +ORDER BY + CASE WHEN `t0`.`a` IS NULL THEN 1 ELSE 0 END, `t0`.`a` ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/oracle/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/oracle/out.sql new file mode 100644 index 0000000000000..1d506b5672363 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/oracle/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/postgres/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/postgres/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/postgres/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/pyspark/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/pyspark/out.sql new file mode 100644 index 0000000000000..dedc0ae8059f7 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/pyspark/out.sql @@ -0,0 +1,7 @@ +SELECT + `t0`.`a`, + 9 AS `i`, + 'foo' AS `s` +FROM `test` AS `t0` +ORDER BY + `t0`.`a` ASC NULLS LAST \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/risingwave/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/risingwave/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/risingwave/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/snowflake/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/snowflake/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/snowflake/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/sqlite/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/sqlite/out.sql new file mode 100644 index 0000000000000..e0cfd7cd3fed3 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/sqlite/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC NULLS LAST \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/trino/out.sql b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/trino/out.sql new file mode 100644 index 0000000000000..20d130d688148 --- /dev/null +++ b/ibis/backends/tests/snapshots/test_sql/test_order_by_no_deference_literals/trino/out.sql @@ -0,0 +1,7 @@ +SELECT + "t0"."a", + 9 AS "i", + 'foo' AS "s" +FROM "test" AS "t0" +ORDER BY + "t0"."a" ASC \ No newline at end of file diff --git a/ibis/backends/tests/snapshots/test_sql/test_union_aliasing/duckdb/out.sql b/ibis/backends/tests/snapshots/test_sql/test_union_aliasing/duckdb/out.sql index f20e2b58b33e0..f8186ab49f780 100644 --- a/ibis/backends/tests/snapshots/test_sql/test_union_aliasing/duckdb/out.sql +++ b/ibis/backends/tests/snapshots/test_sql/test_union_aliasing/duckdb/out.sql @@ -27,24 +27,24 @@ WITH "t5" AS ( "t0"."field_of_study", UNNEST( CAST([ - ROW('1970-71', "t0"."1970-71"), - ROW('1975-76', "t0"."1975-76"), - ROW('1980-81', "t0"."1980-81"), - ROW('1985-86', "t0"."1985-86"), - ROW('1990-91', "t0"."1990-91"), - ROW('1995-96', "t0"."1995-96"), - ROW('2000-01', "t0"."2000-01"), - ROW('2005-06', "t0"."2005-06"), - ROW('2010-11', "t0"."2010-11"), - ROW('2011-12', "t0"."2011-12"), - ROW('2012-13', "t0"."2012-13"), - ROW('2013-14', "t0"."2013-14"), - ROW('2014-15', "t0"."2014-15"), - ROW('2015-16', "t0"."2015-16"), - ROW('2016-17', "t0"."2016-17"), - ROW('2017-18', "t0"."2017-18"), - ROW('2018-19', "t0"."2018-19"), - ROW('2019-20', "t0"."2019-20") + {'years': '1970-71', 'degrees': "t0"."1970-71"}, + {'years': '1975-76', 'degrees': "t0"."1975-76"}, + {'years': '1980-81', 'degrees': "t0"."1980-81"}, + {'years': '1985-86', 'degrees': "t0"."1985-86"}, + {'years': '1990-91', 'degrees': "t0"."1990-91"}, + {'years': '1995-96', 'degrees': "t0"."1995-96"}, + {'years': '2000-01', 'degrees': "t0"."2000-01"}, + {'years': '2005-06', 'degrees': "t0"."2005-06"}, + {'years': '2010-11', 'degrees': "t0"."2010-11"}, + {'years': '2011-12', 'degrees': "t0"."2011-12"}, + {'years': '2012-13', 'degrees': "t0"."2012-13"}, + {'years': '2013-14', 'degrees': "t0"."2013-14"}, + {'years': '2014-15', 'degrees': "t0"."2014-15"}, + {'years': '2015-16', 'degrees': "t0"."2015-16"}, + {'years': '2016-17', 'degrees': "t0"."2016-17"}, + {'years': '2017-18', 'degrees': "t0"."2017-18"}, + {'years': '2018-19', 'degrees': "t0"."2018-19"}, + {'years': '2019-20', 'degrees': "t0"."2019-20"} ] AS STRUCT("years" TEXT, "degrees" BIGINT)[]) ) AS "__pivoted__" FROM "humanities" AS "t0" diff --git a/ibis/backends/tests/test_aggregation.py b/ibis/backends/tests/test_aggregation.py index 91ff9c7f2d47b..3b86de2b1eb67 100644 --- a/ibis/backends/tests/test_aggregation.py +++ b/ibis/backends/tests/test_aggregation.py @@ -470,12 +470,19 @@ def mean_and_std(v): lambda t, where: t.string_col.approx_nunique(where=where), lambda t, where: t.string_col[where].nunique(), id="approx_nunique", - marks=pytest.mark.xfail_version( - duckdb=["duckdb>=1.1"], - raises=AssertionError, - reason="not exact, even at this tiny scale", - strict=False, - ), + marks=[ + pytest.mark.xfail_version( + duckdb=["duckdb>=1.1"], + raises=AssertionError, + reason="not exact, even at this tiny scale", + strict=False, + ), + pytest.mark.notimpl( + ["datafusion"], + reason="data type is not supported", + raises=Exception, + ), + ], ), param( lambda t, where: t.bigint_col.bit_and(where=where), @@ -640,23 +647,16 @@ def test_first_last(alltypes, method, filtered, include_null): raises=com.OperationNotDefinedError, ) @pytest.mark.parametrize("method", ["first", "last"]) -@pytest.mark.parametrize("filtered", [False, True]) +@pytest.mark.parametrize("filtered", [False, True], ids=["not-filtered", "filtered"]) @pytest.mark.parametrize( "include_null", [ - False, + param(False, id="exclude-null"), param( True, marks=[ pytest.mark.notimpl( - [ - "clickhouse", - "exasol", - "flink", - "postgres", - "risingwave", - "snowflake", - ], + ["clickhouse", "exasol", "flink", "postgres", "snowflake"], raises=com.UnsupportedOperationError, reason="`include_null=True` is not supported", ), @@ -667,6 +667,7 @@ def test_first_last(alltypes, method, filtered, include_null): strict=False, ), ], + id="include-null", ), ], ) diff --git a/ibis/backends/tests/test_array.py b/ibis/backends/tests/test_array.py index 4495f9628be77..cef10bed034fa 100644 --- a/ibis/backends/tests/test_array.py +++ b/ibis/backends/tests/test_array.py @@ -192,7 +192,13 @@ def test_array_concat_scalar(con, op): reason="doesn't support nullable arrays", ) @pytest.mark.notyet( - ["bigquery"], raises=AssertionError, reason="bigquery treats null arrays as empty" + ["bigquery"], + raises=ValueError, + reason=( + "bigquery treats null arrays as empty " + "and a ValueError is raised from `pd.isna` " + "when the value is not a truthy value" + ), ) def test_array_concat_with_null(con, op): non_null_value = ibis.array([2**31 - 1]) diff --git a/ibis/backends/tests/test_client.py b/ibis/backends/tests/test_client.py index 3b1164426d606..19fd3933266ae 100644 --- a/ibis/backends/tests/test_client.py +++ b/ibis/backends/tests/test_client.py @@ -927,27 +927,6 @@ def test_self_join_memory_table(backend, con, monkeypatch): param( lambda: pa.table({"a": ["a"], "b": [1]}).to_batches()[0], "df_arrow_single_batch", - marks=[ - pytest.mark.notimpl( - [ - "bigquery", - "clickhouse", - "duckdb", - "exasol", - "impala", - "mssql", - "mysql", - "oracle", - "postgres", - "pyspark", - "risingwave", - "snowflake", - "sqlite", - "trino", - "databricks", - ] - ) - ], id="pyarrow_single_batch", ), param( diff --git a/ibis/backends/tests/test_examples.py b/ibis/backends/tests/test_examples.py index 86cf2132873f8..56dd8040f7c58 100644 --- a/ibis/backends/tests/test_examples.py +++ b/ibis/backends/tests/test_examples.py @@ -16,7 +16,9 @@ reason="nix on linux cannot download duckdb extensions or data due to sandboxing", ) @pytest.mark.notimpl(["pyspark", "exasol", "databricks"]) -@pytest.mark.notyet(["clickhouse", "druid", "impala", "mssql", "trino", "risingwave"]) +@pytest.mark.notyet( + ["clickhouse", "druid", "impala", "mssql", "trino", "risingwave", "datafusion"] +) @pytest.mark.parametrize( ("example", "columns"), [ diff --git a/ibis/backends/tests/test_export.py b/ibis/backends/tests/test_export.py index f7ac43e4c22a6..189d38c98e5a1 100644 --- a/ibis/backends/tests/test_export.py +++ b/ibis/backends/tests/test_export.py @@ -432,9 +432,9 @@ def test_to_pyarrow_decimal(backend, dtype, pyarrow_dtype): @pytest.mark.notyet(["clickhouse"], raises=Exception) @pytest.mark.notyet(["mssql"], raises=PyDeltaTableError) @pytest.mark.xfail_version( - pyspark=["pyspark==3.5.3"], + pyspark=["pyspark<4"], condition=CI and IS_SPARK_REMOTE, - reason="unclear, but pyspark 3.5.3 fails to write delta on CI when using spark-connect", + reason="not supported until pyspark 4", ) def test_roundtrip_delta(backend, con, alltypes, tmp_path, monkeypatch): if con.name == "pyspark": @@ -586,9 +586,22 @@ def test_column_to_memory(limit, awards_players, output_format, expected_column_ method = methodcaller(f"to_{output_format}", limit=limit) res = method(awards_players.awardID) assert isinstance(res, getattr(mod, expected_column_type)) - assert (limit is not None and len(res) == limit) or len( - res - ) == awards_players.count().execute() + assert ( + (len(res) == limit) + if limit is not None + else len(res) == awards_players.count().execute() + ) + + +@pytest.mark.parametrize("limit", limit_no_limit) +def test_column_to_list(limit, awards_players): + res = awards_players.awardID.to_list(limit=limit) + assert isinstance(res, list) + assert ( + (len(res) == limit) + if limit is not None + else len(res) == awards_players.count().execute() + ) @pytest.mark.parametrize("limit", no_limit) diff --git a/ibis/backends/tests/test_expr_caching.py b/ibis/backends/tests/test_expr_caching.py index 164ba8273e608..9448da3c2e4e4 100644 --- a/ibis/backends/tests/test_expr_caching.py +++ b/ibis/backends/tests/test_expr_caching.py @@ -55,7 +55,7 @@ def test_persist_expression_contextmanager(backend, con, alltypes): assert non_cached_table.op() not in con._cache_op_to_entry -@mark.notimpl(["datafusion", "flink", "impala", "trino", "druid"]) +@mark.notimpl(["flink", "impala", "trino", "druid"]) @pytest.mark.never( ["risingwave"], raises=com.UnsupportedOperationError, @@ -83,6 +83,7 @@ def test_persist_expression_multiple_refs(backend, con, alltypes): backend.assert_frame_equal( non_cached_table.order_by("id").to_pandas(), cached_table.order_by("id").to_pandas(), + check_dtype=False, ) name = cached_table.op().name @@ -105,7 +106,7 @@ def test_persist_expression_multiple_refs(backend, con, alltypes): assert name not in con.list_tables() -@mark.notimpl(["datafusion", "flink", "impala", "trino", "druid"]) +@mark.notimpl(["flink", "impala", "trino", "druid"]) @mark.notimpl(["exasol"], reason="Exasol does not support temporary tables") @pytest.mark.never( ["risingwave"], @@ -127,7 +128,7 @@ def test_persist_expression_repeated_cache(alltypes, con): assert name not in con.list_tables() -@mark.notimpl(["datafusion", "flink", "impala", "trino", "druid"]) +@mark.notimpl(["flink", "impala", "trino", "druid"]) @mark.notimpl(["exasol"], reason="Exasol does not support temporary tables") @pytest.mark.never( ["risingwave"], diff --git a/ibis/backends/tests/test_generic.py b/ibis/backends/tests/test_generic.py index 634f26e520f9b..e6b2942ecadc1 100644 --- a/ibis/backends/tests/test_generic.py +++ b/ibis/backends/tests/test_generic.py @@ -1222,6 +1222,27 @@ def test_memtable_construct_from_pyarrow(backend, con, monkeypatch): ) +@pytest.mark.notimpl( + ["flink"], raises=TypeError, reason="doesn't support pyarrow objects yet" +) +def test_memtable_construct_from_pyarrow_c_stream(con): + pa = pytest.importorskip("pyarrow") + + class Opaque: + def __init__(self, table): + self._table = table + + def __arrow_c_stream__(self, *args, **kwargs): + return self._table.__arrow_c_stream__(*args, **kwargs) + + table = pa.table({"a": list("abc"), "b": [1, 2, 3]}) + + t = ibis.memtable(Opaque(table)) + + res = con.to_pyarrow(t.order_by("a")) + assert res.equals(table) + + @pytest.mark.parametrize("lazy", [False, True]) def test_memtable_construct_from_polars(backend, con, lazy): pl = pytest.importorskip("polars") @@ -1273,6 +1294,24 @@ def test_memtable_column_naming_mismatch(con, monkeypatch, df, columns): ibis.memtable(df, columns=columns) +@pytest.mark.notyet( + ["mssql", "mysql", "exasol", "impala"], reason="various syntax errors reported" +) +@pytest.mark.notyet( + ["snowflake"], + reason="unable to handle the varbinary geometry column", + raises=SnowflakeProgrammingError, +) +def test_memtable_from_geopandas_dataframe(con, data_dir): + gpd = pytest.importorskip("geopandas") + gdf = gpd.read_file(data_dir / "geojson" / "zones.geojson")[:5] + + # Read in memtable + t = ibis.memtable(gdf) + # Execute a few rows to force ingestion + con.to_pandas(t.limit(2).select("geometry")) + + @pytest.mark.notimpl(["oracle", "exasol"], raises=com.OperationNotDefinedError) @pytest.mark.notimpl(["druid"], raises=AssertionError) @pytest.mark.notyet( diff --git a/ibis/backends/tests/test_register.py b/ibis/backends/tests/test_io.py similarity index 55% rename from ibis/backends/tests/test_register.py rename to ibis/backends/tests/test_io.py index 1ca96eb422215..6d977f34cce04 100644 --- a/ibis/backends/tests/test_register.py +++ b/ibis/backends/tests/test_io.py @@ -48,314 +48,114 @@ def gzip_csv(data_dir, tmp_path): return str(f.absolute()) -# TODO: rewrite or delete test when register api is removed +@pytest.fixture(scope="module") +def num_diamonds(data_dir): + with open(data_dir / "csv" / "diamonds.csv") as f: + # subtract 1 for the header + return sum(1 for _ in f) - 1 + + +@pytest.fixture(scope="module") +def ft_data(data_dir): + pq = pytest.importorskip("pyarrow.parquet") + nrows = 5 + table = pq.read_table(data_dir.joinpath("parquet", "functional_alltypes.parquet")) + return table.slice(0, nrows) + + +DIAMONDS_COLUMN_TYPES = { + # snowflake's `INFER_SCHEMA` returns this for the diamonds CSV `price` + # column type + "snowflake": { + "carat": "decimal(3, 2)", + "depth": "decimal(3, 1)", + "table": "decimal(3, 1)", + "x": "decimal(4, 2)", + "y": "decimal(4, 2)", + "z": "decimal(4, 2)", + }, + "pyspark": {"price": "int32"}, +} + + @pytest.mark.parametrize( - ("fname", "in_table_name", "out_table_name"), - [ - param("diamonds.csv", None, "ibis_read_csv_", id="default"), - param( - "csv://diamonds.csv", - "Diamonds2", - "Diamonds2", - id="csv_name", - marks=pytest.mark.notyet( - ["pyspark"], reason="pyspark lowercases view names" - ), - ), - param( - "file://diamonds.csv", - "fancy_stones", - "fancy_stones", - id="file_name", - ), - param( - "file://diamonds.csv", - "fancy stones", - "fancy stones", - id="file_atypical_name", - marks=pytest.mark.notyet( - ["pyspark"], reason="no spaces allowed in view names" - ), - ), - param( - ["file://diamonds.csv", "diamonds.csv"], - "fancy_stones2", - "fancy_stones2", - id="multi_csv", - marks=pytest.mark.notyet( - ["datafusion"], - reason="doesn't accept multiple files to scan or read", - ), - ), - ], + "in_table_name", + [param(None, id="default"), param("fancy_stones", id="file_name")], ) @pytest.mark.notyet( - [ - "bigquery", - "clickhouse", - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "snowflake", - "sqlite", - "trino", - "databricks", - ] + ["flink", "impala", "mssql", "mysql", "postgres", "risingwave", "sqlite", "trino"] ) -def test_register_csv(con, data_dir, fname, in_table_name, out_table_name): +def test_read_csv(con, data_dir, in_table_name, num_diamonds): + fname = "diamonds.csv" with pushd(data_dir / "csv"): - with pytest.warns(FutureWarning, match="v9.1"): - table = con.register(fname, table_name=in_table_name) + if con.name == "pyspark": + # pyspark doesn't respect CWD + fname = str(Path(fname).absolute()) + table = con.read_csv(fname, table_name=in_table_name) - assert any(out_table_name in t for t in con.list_tables()) - if con.name != "datafusion": - table.count().execute() + if in_table_name is not None: + assert table.op().name == in_table_name + + special_types = DIAMONDS_COLUMN_TYPES.get(con.name, {}) + + assert table.schema() == ibis.schema( + { + "carat": "float64", + "cut": "string", + "color": "string", + "clarity": "string", + "depth": "float64", + "table": "float64", + "price": "int64", + "x": "float64", + "y": "float64", + "z": "float64", + **special_types, + } + ) + assert table.count().execute() == num_diamonds -# TODO: rewrite or delete test when register api is removed @pytest.mark.notimpl(["datafusion"]) @pytest.mark.notyet( [ - "bigquery", - "clickhouse", "flink", "impala", "mssql", "mysql", "postgres", "risingwave", - "snowflake", "sqlite", "trino", "databricks", ] ) -def test_register_csv_gz(con, data_dir, gzip_csv): +def test_read_csv_gz(con, data_dir, gzip_csv): with pushd(data_dir): - with pytest.warns(FutureWarning, match="v9.1"): - table = con.register(gzip_csv) + table = con.read_csv(gzip_csv) assert table.count().execute() -# TODO: rewrite or delete test when register api is removed @pytest.mark.notyet( - [ - "bigquery", - "clickhouse", - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "snowflake", - "sqlite", - "trino", - ] + ["flink", "impala", "mssql", "mysql", "postgres", "risingwave", "sqlite", "trino"] ) -def test_register_with_dotted_name(con, data_dir, tmp_path): +def test_read_csv_with_dotted_name(con, data_dir, tmp_path): basename = "foo.bar.baz/diamonds.csv" f = tmp_path.joinpath(basename) f.parent.mkdir() data = data_dir.joinpath("csv", "diamonds.csv").read_bytes() f.write_bytes(data) - with pytest.warns(FutureWarning, match="v9.1"): - table = con.register(str(f.absolute())) - - if con.name != "datafusion": - table.count().execute() - - -def read_table(path: Path) -> Iterator[tuple[str, pa.Table]]: - """For each csv `names` in `data_dir` return a `pyarrow.Table`.""" - pac = pytest.importorskip("pyarrow.csv") - - table_name = path.stem - schema = TEST_TABLES[table_name] - convert_options = pac.ConvertOptions( - column_types={name: typ.to_pyarrow() for name, typ in schema.items()} - ) - data_dir = path.parent - return pac.read_csv(data_dir / f"{table_name}.csv", convert_options=convert_options) - - -# TODO: rewrite or delete test when register api is removed -@pytest.mark.parametrize( - ("fname", "in_table_name", "out_table_name"), - [ - param( - "parquet://functional_alltypes.parquet", None, "ibis_read_parquet", id="url" - ), - param("functional_alltypes.parquet", "funk_all", "funk_all", id="basename"), - param( - "parquet://functional_alltypes.parq", "funk_all", "funk_all", id="url_parq" - ), - param( - "parquet://functional_alltypes", None, "ibis_read_parquet", id="url_no_ext" - ), - ], -) -@pytest.mark.notyet( - [ - "bigquery", - "clickhouse", - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "snowflake", - "sqlite", - "trino", - ] -) -def test_register_parquet( - con, tmp_path, data_dir, fname, in_table_name, out_table_name -): - pq = pytest.importorskip("pyarrow.parquet") - - fname = Path(fname) - table = read_table(data_dir / "csv" / fname.name) - - pq.write_table(table, tmp_path / fname.name) - - with pushd(tmp_path): - with pytest.warns(FutureWarning, match="v9.1"): - table = con.register(f"parquet://{fname.name}", table_name=in_table_name) - - assert any(out_table_name in t for t in con.list_tables()) + table = con.read_csv(str(f.absolute())) if con.name != "datafusion": table.count().execute() -# TODO: rewrite or delete test when register api is removed -@pytest.mark.notyet( - [ - "bigquery", - "clickhouse", - "datafusion", - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "pyspark", - "snowflake", - "sqlite", - "trino", - ] -) -def test_register_iterator_parquet( - con, - tmp_path, - data_dir, -): - pq = pytest.importorskip("pyarrow.parquet") - - table = read_table(data_dir / "csv" / "functional_alltypes.csv") - - pq.write_table(table, tmp_path / "functional_alltypes.parquet") - - with pushd(tmp_path): - with pytest.warns(FutureWarning, match="v9.1"): - table = con.register( - [ - "parquet://functional_alltypes.parquet", - "functional_alltypes.parquet", - ], - table_name=None, - ) - - assert any("ibis_read_parquet" in t for t in con.list_tables()) - assert table.count().execute() - - -# TODO: remove entirely when `register` is removed -# This same functionality is implemented across all backends -# via `create_table` and tested in `test_client.py` -@pytest.mark.notimpl(["datafusion"]) -@pytest.mark.notyet( - [ - "bigquery", - "clickhouse", - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "pyspark", - "snowflake", - "sqlite", - "trino", - ] -) -def test_register_pandas(con): - pd = pytest.importorskip("pandas") - df = pd.DataFrame({"x": [1, 2, 3], "y": ["a", "b", "c"]}) - - with pytest.warns(FutureWarning, match="v9.1"): - t = con.register(df) - assert t.x.sum().execute() == 6 - - with pytest.warns(FutureWarning, match="v9.1"): - t = con.register(df, "my_table") - assert t.op().name == "my_table" - assert t.x.sum().execute() == 6 - - -# TODO: remove entirely when `register` is removed -# This same functionality is implemented across all backends -# via `create_table` and tested in `test_client.py` -@pytest.mark.notimpl(["datafusion", "polars"]) -@pytest.mark.notyet( - [ - "bigquery", - "clickhouse", - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "pyspark", - "snowflake", - "sqlite", - "trino", - ] -) -def test_register_pyarrow_tables(con): - pa = pytest.importorskip("pyarrow") - pa_t = pa.Table.from_pydict({"x": [1, 2, 3], "y": ["a", "b", "c"]}) - - with pytest.warns(FutureWarning, match="v9.1"): - t = con.register(pa_t) - assert t.x.sum().execute() == 6 - - @pytest.mark.notyet( - [ - "bigquery", - "clickhouse", - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "snowflake", - "sqlite", - "trino", - ] + ["flink", "impala", "mssql", "mysql", "postgres", "risingwave", "sqlite", "trino"] ) -def test_csv_reregister_schema(con, tmp_path): +def test_read_csv_schema(con, tmp_path): foo = tmp_path.joinpath("foo.csv") with foo.open("w", newline="") as csvfile: csv.writer(csvfile, delimiter=",").writerows( @@ -367,47 +167,33 @@ def test_csv_reregister_schema(con, tmp_path): ] ) - with pytest.warns(FutureWarning, match="v9.1"): - # For a full file scan, expect correct schema based on final row - foo_table = con.register(foo, table_name="same") + # For a full file scan, expect correct schema based on final row + foo_table = con.read_csv(foo, table_name="same") result_schema = foo_table.schema() assert result_schema.names == ("cola", "colb", "colc") assert result_schema["cola"].is_integer() - assert result_schema["colb"].is_float64() + assert result_schema["colb"].is_numeric() assert result_schema["colc"].is_string() -@pytest.mark.notimpl( - [ - "bigquery", - "clickhouse", - "datafusion", - "flink", - "impala", - "mysql", - "mssql", - "polars", - "postgres", - "risingwave", - "pyspark", - "snowflake", - "sqlite", - "trino", - ] +@pytest.mark.notyet( + ["flink", "impala", "mssql", "mysql", "postgres", "risingwave", "sqlite", "trino"] ) -def test_register_garbage(con, monkeypatch): - # monkeypatch to avoid downloading extensions in tests - monkeypatch.setattr(con, "_load_extensions", lambda x: True) +def test_read_csv_glob(con, tmp_path, ft_data): + pc = pytest.importorskip("pyarrow.csv") - duckdb = pytest.importorskip("duckdb") - with pytest.raises( - duckdb.IOException, match="No files found that match the pattern" - ): - con.read_csv("garbage_notafile") + nrows = len(ft_data) + ntables = 2 + ext = "csv" - with pytest.raises((FileNotFoundError, duckdb.IOException)): - con.read_parquet("garbage_notafile") + fnames = [f"data{i}.{ext}" for i in range(ntables)] + for fname in fnames: + pc.write_csv(ft_data, tmp_path / fname) + + table = con.read_csv(tmp_path / f"*.{ext}") + + assert table.count().execute() == nrows * ntables @pytest.mark.parametrize( @@ -440,66 +226,75 @@ def test_read_parquet(con, tmp_path, data_dir, fname, in_table_name): assert table.count().execute() -@pytest.fixture(scope="module") -def ft_data(data_dir): - pq = pytest.importorskip("pyarrow.parquet") - nrows = 5 - table = pq.read_table(data_dir.joinpath("parquet", "functional_alltypes.parquet")) - return table.slice(0, nrows) +def read_table(path: Path) -> Iterator[tuple[str, pa.Table]]: + """For each csv `names` in `data_dir` return a `pyarrow.Table`.""" + pac = pytest.importorskip("pyarrow.csv") + + table_name = path.stem + schema = TEST_TABLES[table_name] + convert_options = pac.ConvertOptions( + column_types={name: typ.to_pyarrow() for name, typ in schema.items()} + ) + data_dir = path.parent + return pac.read_csv(data_dir / f"{table_name}.csv", convert_options=convert_options) @pytest.mark.notyet( [ + "bigquery", + "clickhouse", + "datafusion", "flink", "impala", "mssql", "mysql", "postgres", "risingwave", + "pyspark", + "snowflake", "sqlite", "trino", ] ) -def test_read_parquet_glob(con, tmp_path, ft_data): +def test_read_parquet_iterator( + con, + tmp_path, + data_dir, +): pq = pytest.importorskip("pyarrow.parquet") - nrows = len(ft_data) - ntables = 2 - ext = "parquet" + table = read_table(data_dir / "csv" / "functional_alltypes.csv") - fnames = [f"data{i}.{ext}" for i in range(ntables)] - for fname in fnames: - pq.write_table(ft_data, tmp_path / fname) + pq.write_table(table, tmp_path / "functional_alltypes.parquet") - table = con.read_parquet(tmp_path / f"*.{ext}") + with pushd(tmp_path): + table = con.read_parquet( + [ + "parquet://functional_alltypes.parquet", + "functional_alltypes.parquet", + ], + table_name=None, + ) - assert table.count().execute() == nrows * ntables + assert any("ibis_read_parquet" in t for t in con.list_tables()) + assert table.count().execute() @pytest.mark.notyet( - [ - "flink", - "impala", - "mssql", - "mysql", - "postgres", - "risingwave", - "sqlite", - "trino", - ] + ["flink", "impala", "mssql", "mysql", "postgres", "risingwave", "sqlite", "trino"] ) -def test_read_csv_glob(con, tmp_path, ft_data): - pc = pytest.importorskip("pyarrow.csv") +def test_read_parquet_glob(con, tmp_path, ft_data): + pq = pytest.importorskip("pyarrow.parquet") nrows = len(ft_data) ntables = 2 - ext = "csv" + ext = "parquet" fnames = [f"data{i}.{ext}" for i in range(ntables)] for fname in fnames: - pc.write_csv(ft_data, tmp_path / fname) + pq.write_table(ft_data, tmp_path / fname) - table = con.read_csv(tmp_path / f"*.{ext}") + table = con.read_parquet(tmp_path / f"*.{ext}") assert table.count().execute() == nrows * ntables @@ -539,61 +334,33 @@ def test_read_json_glob(con, tmp_path, ft_data): assert table.count().execute() == nrows * ntables -@pytest.fixture(scope="module") -def num_diamonds(data_dir): - with open(data_dir / "csv" / "diamonds.csv") as f: - # subtract 1 for the header - return sum(1 for _ in f) - 1 - - -DIAMONDS_COLUMN_TYPES = { - # snowflake's `INFER_SCHEMA` returns this for the diamonds CSV `price` - # column type - "snowflake": { - "carat": "decimal(3, 2)", - "depth": "decimal(3, 1)", - "table": "decimal(3, 1)", - "x": "decimal(4, 2)", - "y": "decimal(4, 2)", - "z": "decimal(4, 2)", - }, - "pyspark": {"price": "int32"}, -} - - -@pytest.mark.parametrize( - "in_table_name", - [param(None, id="default"), param("fancy_stones", id="file_name")], -) -@pytest.mark.notyet( - ["flink", "impala", "mssql", "mysql", "postgres", "risingwave", "sqlite", "trino"] +@pytest.mark.notimpl( + [ + "bigquery", + "clickhouse", + "datafusion", + "flink", + "impala", + "mysql", + "mssql", + "polars", + "postgres", + "risingwave", + "pyspark", + "snowflake", + "sqlite", + "trino", + ] ) -def test_read_csv(con, data_dir, in_table_name, num_diamonds): - fname = "diamonds.csv" - with pushd(data_dir / "csv"): - if con.name == "pyspark": - # pyspark doesn't respect CWD - fname = str(Path(fname).absolute()) - table = con.read_csv(fname, table_name=in_table_name) - - if in_table_name is not None: - assert table.op().name == in_table_name +def test_read_garbage(con, monkeypatch): + # monkeypatch to avoid downloading extensions in tests + monkeypatch.setattr(con, "_load_extensions", lambda x: True) - special_types = DIAMONDS_COLUMN_TYPES.get(con.name, {}) + duckdb = pytest.importorskip("duckdb") + with pytest.raises( + duckdb.IOException, match="No files found that match the pattern" + ): + con.read_csv("garbage_notafile") - assert table.schema() == ibis.schema( - { - "carat": "float64", - "cut": "string", - "color": "string", - "clarity": "string", - "depth": "float64", - "table": "float64", - "price": "int64", - "x": "float64", - "y": "float64", - "z": "float64", - **special_types, - } - ) - assert table.count().execute() == num_diamonds + with pytest.raises((FileNotFoundError, duckdb.IOException)): + con.read_parquet("garbage_notafile") diff --git a/ibis/backends/tests/test_numeric.py b/ibis/backends/tests/test_numeric.py index 6b6e608935100..fc09c9481eb9c 100644 --- a/ibis/backends/tests/test_numeric.py +++ b/ibis/backends/tests/test_numeric.py @@ -4,6 +4,7 @@ import decimal import math import operator +import sqlite3 from operator import and_, lshift, or_, rshift, xor import pytest @@ -30,6 +31,7 @@ PyODBCProgrammingError, PySparkArithmeticException, PySparkParseException, + PySparkValueError, SnowflakeProgrammingError, TrinoUserError, ) @@ -37,6 +39,7 @@ np = pytest.importorskip("numpy") pd = pytest.importorskip("pandas") +pa = pytest.importorskip("pyarrow") @pytest.mark.parametrize( @@ -1539,3 +1542,55 @@ def test_scalar_round_is_integer(con): assert result == 1 assert isinstance(result, int) + + +@pytest.mark.parametrize( + "numbers", + [ + param( + [1, 2, 3], + marks=[ + pytest.mark.notyet( + [ + "duckdb", + "clickhouse", + "datafusion", + "snowflake", + "databricks", + "bigquery", + ], + raises=pa.ArrowInvalid, + ), + pytest.mark.notyet( + ["pyspark"], + raises=( + # PySparkValueError is raised when using Spark connect + PySparkValueError, + TypeError, + ), + ), + ], + id="ints", + ), + param( + [decimal.Decimal("1.1"), decimal.Decimal("2.2"), decimal.Decimal("3.3")], + marks=[ + pytest.mark.notimpl( + ["sqlite"], + raises=( + sqlite3.ProgrammingError, + # With Python 3.10, the same code raises a different exception type :( + sqlite3.InterfaceError, + ), + ) + ], + id="decimals", + ), + ], +) +@pytest.mark.notyet(["exasol"], raises=ExaQueryError) +def test_memtable_decimal(con, numbers): + schema = ibis.schema(dict(numbers=dt.Decimal(38, 9))) + t = ibis.memtable({"numbers": numbers}, schema=schema) + assert t.schema() == schema + assert len(con.to_pyarrow(t)) == len(numbers) diff --git a/ibis/backends/tests/test_signatures.py b/ibis/backends/tests/test_signatures.py index 887c400d69b00..aa5f05f2817fc 100644 --- a/ibis/backends/tests/test_signatures.py +++ b/ibis/backends/tests/test_signatures.py @@ -126,15 +126,6 @@ def _scrape_methods(modules, params): "read_parquet", marks=pytest.mark.notyet(["duckdb", "flink"]), ), - "table": pytest.param( - BaseBackend, - "table", - marks=pytest.mark.notyet( - [ - "polars", - ] - ), - ), "to_parquet_dir": pytest.param( BaseBackend, "to_parquet_dir", diff --git a/ibis/backends/tests/test_sql.py b/ibis/backends/tests/test_sql.py index 748addce30149..bcb09dd110124 100644 --- a/ibis/backends/tests/test_sql.py +++ b/ibis/backends/tests/test_sql.py @@ -259,3 +259,13 @@ def test_sample(backend_name, snapshot, subquery): row = ibis.to_sql(t.sample(0.5, method="row"), dialect=backend_name) snapshot.assert_match(block, "block.sql") snapshot.assert_match(row, "row.sql") + + +@pytest.mark.parametrize("backend_name", _get_backends_to_test()) +@pytest.mark.notimpl(["polars"], raises=ValueError, reason="not a SQL backend") +def test_order_by_no_deference_literals(backend_name, snapshot): + t = ibis.table({"a": "int"}, name="test") + s = t.select("a", i=ibis.literal(9), s=ibis.literal("foo")) + o = s.order_by("a", "i", "s") + sql = ibis.to_sql(o, dialect=backend_name) + snapshot.assert_match(sql, "out.sql") diff --git a/ibis/backends/tests/test_string.py b/ibis/backends/tests/test_string.py index ff1a41ae2aff7..b849e365f82a9 100644 --- a/ibis/backends/tests/test_string.py +++ b/ibis/backends/tests/test_string.py @@ -827,8 +827,13 @@ def test_capitalize(con, inp, expected): assert pd.isnull(result) +@pytest.mark.notyet( + ["exasol", "impala", "mssql", "mysql", "sqlite"], + reason="Backend doesn't support arrays", + raises=(com.OperationNotDefinedError, com.UnsupportedBackendType), +) @pytest.mark.notimpl( - ["polars", "oracle", "flink", "sqlite", "mssql", "mysql", "exasol", "impala"], + ["polars", "oracle", "flink"], raises=com.OperationNotDefinedError, ) def test_array_string_join(con): @@ -1092,7 +1097,7 @@ def string_temp_table(backend, con): reason="Treats len(🐍) == 2", ), pytest.mark.notyet( - ["impala", "mysql"], + ["impala"], raises=AssertionError, reason="Treats len(🐍) == 4 and accented characters as len 2", ), @@ -1109,7 +1114,7 @@ def string_temp_table(backend, con): reason="Treats len(🐍) == 2", ), pytest.mark.notyet( - ["impala", "mysql"], + ["impala"], raises=AssertionError, reason="Treats len(🐍) == 4 and accented characters as len 2", ), @@ -1126,7 +1131,7 @@ def string_temp_table(backend, con): reason="Treats len(🐍) == 2", ), pytest.mark.notyet( - ["impala", "mysql"], + ["impala"], raises=AssertionError, reason="Treats len(🐍) == 4 and accented characters as len 2", ), @@ -1143,7 +1148,7 @@ def string_temp_table(backend, con): reason="Treats len(🐍) == 2", ), pytest.mark.notyet( - ["impala", "mysql"], + ["impala"], raises=AssertionError, reason="Treats len(🐍) == 4 and accented characters as len 2", ), @@ -1154,11 +1159,6 @@ def string_temp_table(backend, con): lambda t: t.str.len().astype("int32"), id="len", marks=[ - pytest.mark.notyet( - ["mysql"], - raises=AssertionError, - reason="thinks emoji are 4 characters long", - ), pytest.mark.notyet( ["impala", "polars"], raises=AssertionError, diff --git a/ibis/backends/tests/test_temporal.py b/ibis/backends/tests/test_temporal.py index df8010404c046..c8f49f17cb315 100644 --- a/ibis/backends/tests/test_temporal.py +++ b/ibis/backends/tests/test_temporal.py @@ -781,11 +781,6 @@ def convert_to_offset(x): raises=AssertionError, reason="duckdb returns dateoffsets", ), - pytest.mark.notimpl( - ["trino"], - raises=AssertionError, - reason="doesn't match pandas results, unclear what the issue is, perhaps timezones", - ), pytest.mark.notimpl( ["flink"], raises=Py4JJavaError, diff --git a/ibis/backends/tests/tpc/ds/test_queries.py b/ibis/backends/tests/tpc/ds/test_queries.py index 40b23e4ade0b6..11f5a108ef279 100644 --- a/ibis/backends/tests/tpc/ds/test_queries.py +++ b/ibis/backends/tests/tpc/ds/test_queries.py @@ -111,6 +111,7 @@ def test_03(date_dim, store_sales, item): @pytest.mark.notimpl( ["datafusion"], reason="Optimizer rule 'common_sub_expression_eliminate' failed" ) +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_04(customer, store_sales, catalog_sales, web_sales, date_dim): def profile(sales, *, name): char = name[0] @@ -1144,6 +1145,7 @@ def test_18( @tpc_test("ds") +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_19(date_dim, store_sales, item, customer, customer_address, store): return ( date_dim.join(store_sales, [("d_date_sk", "ss_sold_date_sk")]) @@ -1301,6 +1303,7 @@ def total_sales( @tpc_test("ds", result_is_empty=True) +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_24(store_sales, store_returns, store, item, customer, customer_address): ssales = ( store_sales.join( @@ -2072,11 +2075,6 @@ def test_40(catalog_sales, catalog_returns, warehouse, item, date_dim): @tpc_test("ds") -@pytest.mark.notyet( - ["datafusion"], - raises=Exception, - reason="Error during planning: Correlated column is not allowed in predicate", -) @pytest.mark.notyet( ["clickhouse"], raises=ClickHouseDatabaseError, @@ -2230,9 +2228,6 @@ def test_44(store_sales, item): @tpc_test("ds") -@pytest.mark.notyet( - ["datafusion"], raises=Exception, reason="Unsupported feature in DataFusion SQL" -) def test_45(web_sales, customer, customer_address, date_dim, item): return ( web_sales.join(customer, [("ws_bill_customer_sk", "c_customer_sk")]) @@ -3267,6 +3262,7 @@ def test_63(item, store_sales, date_dim, store): @tpc_test("ds", result_is_empty=True) +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_64( catalog_sales, catalog_returns, @@ -3430,6 +3426,7 @@ def test_64( @tpc_test("ds", result_is_empty=True) +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_65(store, item, store_sales, date_dim): sa = ( store_sales.join( @@ -3759,12 +3756,13 @@ def test_71(item, web_sales, date_dim, catalog_sales, store_sales, time_dim): ) +@tpc_test("ds") @pytest.mark.notyet( ["datafusion"], raises=OperationNotDefinedError, reason="No DateDelta op defined", ) -@tpc_test("ds") +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_72( catalog_sales, inventory, @@ -3897,6 +3895,7 @@ def test_73(store_sales, date_dim, store, household_demographics, customer): @tpc_test("ds") +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_74(customer, store_sales, date_dim, web_sales): renames = { "customer_id": "c_customer_id", @@ -4647,6 +4646,7 @@ def items(returns, *, prefix): @tpc_test("ds") +@pytest.mark.notyet(["datafusion"], reason="coercion failure", raises=Exception) def test_84( customer, customer_address, @@ -5065,6 +5065,7 @@ def test_94(web_sales, date_dim, customer_address, web_site, web_returns): @tpc_test("ds") +@pytest.mark.notyet(["clickhouse"], reason="Broken") def test_95(web_sales, date_dim, customer_address, web_site, web_returns): ws1 = web_sales.view() ws2 = web_sales.view() diff --git a/ibis/backends/trino/converter.py b/ibis/backends/trino/converter.py index 5488b60832196..0e8bc544168bc 100644 --- a/ibis/backends/trino/converter.py +++ b/ibis/backends/trino/converter.py @@ -9,16 +9,18 @@ class TrinoPandasData(PandasData): @classmethod def convert_Interval(cls, s, dtype, pandas_dtype): def parse_trino_timedelta(value): - # format is 'days hour:minute:second.millisecond' - days, rest = value.split(" ", 1) - hms, millis = rest.split(".", 1) - hours, minutes, seconds = hms.split(":") - return datetime.timedelta( - days=int(days), - hours=int(hours), - minutes=int(minutes), - seconds=int(seconds), - milliseconds=int(millis), - ) + if isinstance(value, str): + # format is 'days hour:minute:second.millisecond' + days, rest = value.split(" ", 1) + hms, millis = rest.split(".", 1) + hours, minutes, seconds = hms.split(":") + return datetime.timedelta( + days=int(days), + hours=int(hours), + minutes=int(minutes), + seconds=int(seconds), + milliseconds=int(millis), + ) + return value return s.map(parse_trino_timedelta, na_action="ignore") diff --git a/ibis/common/annotations.py b/ibis/common/annotations.py index fb63baf6de8d2..9c6ecf8e16bd4 100644 --- a/ibis/common/annotations.py +++ b/ibis/common/annotations.py @@ -39,7 +39,7 @@ class ValidationError(Exception): class AttributeValidationError(ValidationError): - __slots__ = ("name", "value", "pattern") + __slots__ = ("name", "pattern", "value") def __init__(self, name: str, value: AnyType, pattern: Pattern): self.name = name @@ -51,7 +51,7 @@ def __str__(self): class ReturnValidationError(ValidationError): - __slots__ = ("func", "value", "pattern") + __slots__ = ("func", "pattern", "value") def __init__(self, func: Callable, value: AnyType, pattern: Pattern): self.func = func @@ -63,7 +63,7 @@ def __str__(self): class SignatureValidationError(ValidationError): - __slots__ = ("msg", "sig", "func", "args", "kwargs", "errors") + __slots__ = ("args", "errors", "func", "kwargs", "msg", "sig") def __init__( self, @@ -102,7 +102,7 @@ class Annotation(Slotted, Immutable): Annotations are used to mark fields in a class and to validate them. """ - __slots__ = ("pattern", "default") + __slots__ = ("default", "pattern") pattern: Pattern default: AnyType @@ -204,7 +204,7 @@ class Argument(Annotation): """ - __slots__ = ("typehint", "kind") + __slots__ = ("kind", "typehint") typehint: AnyType kind: int diff --git a/ibis/common/collections.py b/ibis/common/collections.py index 31de94dac3720..612a06129ad5c 100644 --- a/ibis/common/collections.py +++ b/ibis/common/collections.py @@ -345,7 +345,7 @@ class RewindableIterator(Iterator[V]): """ - __slots__ = ("_iterator", "_checkpoint") + __slots__ = ("_checkpoint", "_iterator") def __init__(self, iterable): self._iterator = iter(iterable) diff --git a/ibis/common/deferred.py b/ibis/common/deferred.py index 81030ec88b6ba..f3963ddcb8050 100644 --- a/ibis/common/deferred.py +++ b/ibis/common/deferred.py @@ -80,7 +80,7 @@ class Deferred(Slotted, Immutable, Final): """ - __slots__ = ("_resolver", "_repr") + __slots__ = ("_repr", "_resolver") def __init__(self, obj, repr=None): super().__init__(_resolver=resolver(obj), _repr=repr) @@ -327,7 +327,7 @@ def resolve(self, context): class Attr(FrozenSlotted, Resolver): - __slots__ = ("obj", "name") + __slots__ = ("name", "obj") obj: Resolver name: str @@ -347,7 +347,7 @@ def resolve(self, context): class Item(FrozenSlotted, Resolver): - __slots__ = ("obj", "name") + __slots__ = ("name", "obj") obj: Resolver name: str @@ -382,7 +382,7 @@ class Call(FrozenSlotted, Resolver): """ - __slots__ = ("func", "args", "kwargs") + __slots__ = ("args", "func", "kwargs") func: Resolver args: tuple[Resolver, ...] kwargs: dict[str, Resolver] @@ -446,7 +446,7 @@ def __repr__(self): class UnaryOperator(FrozenSlotted, Resolver): - __slots__ = ("func", "arg") + __slots__ = ("arg", "func") func: Callable arg: Resolver diff --git a/ibis/common/egraph.py b/ibis/common/egraph.py index 5457549bff7d2..8b205f58a56b0 100644 --- a/ibis/common/egraph.py +++ b/ibis/common/egraph.py @@ -50,7 +50,7 @@ class DisjointSet(Mapping[K, set[K]]): """ - __slots__ = ("_parents", "_classes") + __slots__ = ("_classes", "_parents") _parents: dict _classes: dict @@ -320,7 +320,7 @@ class Pattern(Slotted): """ - __slots__ = ("head", "args", "name") + __slots__ = ("args", "head", "name") head: type args: tuple name: str | None @@ -455,7 +455,7 @@ def substitute(self, egraph, enode, subst): class Rewrite(Slotted): """A rewrite rule which matches a pattern and applies a pattern or a function.""" - __slots__ = ("matcher", "applier") + __slots__ = ("applier", "matcher") matcher: Pattern applier: Callable | Pattern | Variable @@ -484,7 +484,7 @@ class ENode(Slotted, Node): """ - __slots__ = ("head", "args") + __slots__ = ("args", "head") head: type args: tuple @@ -534,7 +534,7 @@ def mapper(node, _, **kwargs): class EGraph: - __slots__ = ("_nodes", "_etables", "_eclasses") + __slots__ = ("_eclasses", "_etables", "_nodes") _nodes: dict _etables: collections.defaultdict _eclasses: DisjointSet diff --git a/ibis/common/grounds.py b/ibis/common/grounds.py index 46f3309a3c2ff..9f87ebf2ba7c5 100644 --- a/ibis/common/grounds.py +++ b/ibis/common/grounds.py @@ -26,7 +26,7 @@ Immutable, Singleton, ) -from ibis.common.collections import FrozenDict # noqa: TCH001 +from ibis.common.collections import FrozenDict # noqa: TC001 from ibis.common.patterns import Pattern from ibis.common.typing import evaluate_annotations diff --git a/ibis/common/patterns.py b/ibis/common/patterns.py index 4c54abc2ec4b9..c819b09344b48 100644 --- a/ibis/common/patterns.py +++ b/ibis/common/patterns.py @@ -549,7 +549,7 @@ class Option(Slotted, Pattern): """ - __slots__ = ("pattern", "default") + __slots__ = ("default", "pattern") pattern: Pattern default: AnyType @@ -692,7 +692,7 @@ class GenericInstanceOf(Slotted, Pattern): """ - __slots__ = ("type", "origin", "fields") + __slots__ = ("fields", "origin", "type") origin: type fields: FrozenDict[str, Pattern] @@ -738,7 +738,7 @@ class LazyInstanceOf(Slotted, Pattern): """ __fields__ = ("qualname", "package") - __slots__ = ("qualname", "package", "loaded") + __slots__ = ("loaded", "package", "qualname") qualname: str package: str loaded: type @@ -775,7 +775,7 @@ class CoercedTo(Slotted, Pattern, Generic[T_co]): """ - __slots__ = ("type", "func") + __slots__ = ("func", "type") type: T_co def __init__(self, type): @@ -845,7 +845,7 @@ class GenericCoercedTo(Slotted, Pattern): """ - __slots__ = ("origin", "params", "checker") + __slots__ = ("checker", "origin", "params") origin: type params: FrozenDict[str, type] checker: GenericInstanceOf @@ -1164,7 +1164,7 @@ class GenericSequenceOf(Slotted, Pattern): """ - __slots__ = ("item", "type", "length") + __slots__ = ("item", "length", "type") item: Pattern type: Pattern length: Length @@ -1218,7 +1218,7 @@ class GenericMappingOf(Slotted, Pattern): """ - __slots__ = ("key", "value", "type") + __slots__ = ("key", "type", "value") key: Pattern value: Pattern type: Pattern @@ -1285,7 +1285,7 @@ class Object(Slotted, Pattern): """ - __slots__ = ("type", "args", "kwargs") + __slots__ = ("args", "kwargs", "type") type: Pattern args: tuple[Pattern, ...] kwargs: FrozenDict[str, Pattern] @@ -1341,7 +1341,7 @@ def match(self, value, context): class Node(Slotted, Pattern): - __slots__ = ("type", "each_arg") + __slots__ = ("each_arg", "type") type: Pattern def __init__(self, type, each_arg): @@ -1408,7 +1408,7 @@ def match(self, value, context): class SomeOf(Slotted, Pattern): - __slots__ = ("pattern", "delimiter") + __slots__ = ("delimiter", "pattern") @classmethod def __create__(cls, *args, **kwargs): @@ -1432,7 +1432,7 @@ class SomeChunksOf(Slotted, Pattern): Designed to be used inside a `PatternList` pattern with the `*` syntax. """ - __slots__ = ("pattern", "delimiter") + __slots__ = ("delimiter", "pattern") def __init__(self, *args, **kwargs): pattern = GenericSequenceOf(PatternList(args), **kwargs) diff --git a/ibis/common/selectors.py b/ibis/common/selectors.py index f7558fb0a92c0..5144faf18fda4 100644 --- a/ibis/common/selectors.py +++ b/ibis/common/selectors.py @@ -5,7 +5,7 @@ from ibis.common.bases import Abstract from ibis.common.grounds import Concrete -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 if TYPE_CHECKING: from collections.abc import Sequence diff --git a/ibis/common/tests/test_annotations.py b/ibis/common/tests/test_annotations.py index 6e4a22f3d24d1..ab214bc351704 100644 --- a/ibis/common/tests/test_annotations.py +++ b/ibis/common/tests/test_annotations.py @@ -80,14 +80,6 @@ def test_annotations_are_not_hashable(): hash(a) -def test_argument_repr(): - argument = Argument(is_int, typehint=int, default=None) - assert repr(argument) == ( - "Argument(pattern=InstanceOf(type=), default=None, " - "typehint=, kind=<_ParameterKind.POSITIONAL_OR_KEYWORD: 1>)" - ) - - def test_default_argument(): annotation = Argument(pattern=lambda x, context: int(x), default=3) assert annotation.pattern.match(1, {}) == 1 diff --git a/ibis/common/tests/test_collections.py b/ibis/common/tests/test_collections.py index 7a2187deab0a7..ea590ad3ec91c 100644 --- a/ibis/common/tests/test_collections.py +++ b/ibis/common/tests/test_collections.py @@ -61,7 +61,7 @@ def __reversed__(self): def test_iterator(): class MyIterator(Iterator): - __slots__ = ("n", "i") + __slots__ = ("i", "n") def __init__(self, n): self.n = n diff --git a/ibis/common/tests/test_deferred.py b/ibis/common/tests/test_deferred.py index 56bc1efb4a45b..e3600face7eb3 100644 --- a/ibis/common/tests/test_deferred.py +++ b/ibis/common/tests/test_deferred.py @@ -290,7 +290,7 @@ def __invert__(self): class ColumnMock(ValueMock): - __slots__ = ("name", "dtype") + __slots__ = ("dtype", "name") def __init__(self, name, dtype): super().__init__(name=name, dtype=dtype) @@ -303,14 +303,14 @@ def type(self): class UnaryMock(ValueMock): - __slots__ = ("name", "arg") + __slots__ = ("arg", "name") def __init__(self, name, arg): super().__init__(name=name, arg=arg) class BinaryMock(ValueMock): - __slots__ = ("name", "left", "right") + __slots__ = ("left", "name", "right") def __init__(self, name, left, right): super().__init__(name=name, left=left, right=right) diff --git a/ibis/common/tests/test_graph.py b/ibis/common/tests/test_graph.py index db4f466fdfd2c..1408b5cdfebae 100644 --- a/ibis/common/tests/test_graph.py +++ b/ibis/common/tests/test_graph.py @@ -24,7 +24,7 @@ class MyNode(Node): __match_args__ = ("name", "children") - __slots__ = ("name", "children") + __slots__ = ("children", "name") def __init__(self, name, children): self.name = name diff --git a/ibis/common/tests/test_patterns.py b/ibis/common/tests/test_patterns.py index a0bd329f05970..848837822a3dc 100644 --- a/ibis/common/tests/test_patterns.py +++ b/ibis/common/tests/test_patterns.py @@ -263,10 +263,10 @@ def test_generic_instance_of_with_covariant_typevar(): assert p.match(My(1, 2, "3"), context={}) == My(1, 2, "3") assert p.describe() == "a My[int, Any]" - assert match(My[int, AnyType], v := My(1, 2, "3")) == v # noqa: RUF018 - assert match(My[int, int], v := My(1, 2, "3")) == v # noqa: RUF018 + assert match(My[int, AnyType], v := My(1, 2, "3")) == v + assert match(My[int, int], v := My(1, 2, "3")) == v assert match(My[int, float], My(1, 2, "3")) is NoMatch - assert match(My[int, float], v := My(1, 2.0, "3")) == v # noqa: RUF018 + assert match(My[int, float], v := My(1, 2.0, "3")) == v def test_generic_instance_of_disallow_nested_coercion(): @@ -334,7 +334,7 @@ def dtype(self) -> T: ... def shape(self) -> S: ... class Literal(Value[T, Scalar]): - __slots__ = ("_value", "_dtype") + __slots__ = ("_dtype", "_value") def __init__(self, value, dtype): self._value = value @@ -798,12 +798,12 @@ def test_matching(): assert Capture("pi", InstanceOf(float)) == "pi" @ InstanceOf(float) assert Capture("pi", InstanceOf(float)) == "pi" @ InstanceOf(float) - assert match(Capture("pi", InstanceOf(float)), 3.14, ctx := {}) == 3.14 # noqa: RUF018 + assert match(Capture("pi", InstanceOf(float)), 3.14, ctx := {}) == 3.14 assert ctx == {"pi": 3.14} - assert match("pi" @ InstanceOf(float), 3.14, ctx := {}) == 3.14 # noqa: RUF018 + assert match("pi" @ InstanceOf(float), 3.14, ctx := {}) == 3.14 assert ctx == {"pi": 3.14} - assert match("pi" @ InstanceOf(float), 3.14, ctx := {}) == 3.14 # noqa: RUF018 + assert match("pi" @ InstanceOf(float), 3.14, ctx := {}) == 3.14 assert ctx == {"pi": 3.14} assert match(InstanceOf(int) | InstanceOf(float), 3) == 3 @@ -915,13 +915,13 @@ def test_matching_sequence_pattern_keeps_original_type(): def test_matching_sequence_with_captures(): v = list(range(1, 9)) assert match([1, 2, 3, 4, Some(...)], v) == v - assert match([1, 2, 3, 4, "rest" @ Some(...)], v, ctx := {}) == v # noqa: RUF018 + assert match([1, 2, 3, 4, "rest" @ Some(...)], v, ctx := {}) == v assert ctx == {"rest": [5, 6, 7, 8]} v = list(range(5)) - assert match([0, 1, x @ Some(...), 4], v, ctx := {}) == v # noqa: RUF018 + assert match([0, 1, x @ Some(...), 4], v, ctx := {}) == v assert ctx == {"x": [2, 3]} - assert match([0, 1, "var" @ Some(...), 4], v, ctx := {}) == v # noqa: RUF018 + assert match([0, 1, "var" @ Some(...), 4], v, ctx := {}) == v assert ctx == {"var": [2, 3]} p = [ @@ -932,7 +932,7 @@ def test_matching_sequence_with_captures(): 6, ] v = [0, 1, 2, 3, 4.0, 5.0, 6] - assert match(p, v, ctx := {}) == v # noqa: RUF018 + assert match(p, v, ctx := {}) == v assert ctx == {"ints": [2, 3], "last_float": 5.0} @@ -948,7 +948,7 @@ def test_matching_sequence_remaining(): assert match([1, 2, 3, Some(InstanceOf(int) & Between(0, 10))], five) == five assert match([1, 2, 3, Some(InstanceOf(int) & Between(0, 4))], five) is NoMatch assert match([1, 2, 3, Some(int, at_least=2)], four) is NoMatch - assert match([1, 2, 3, "res" @ Some(int, at_least=2)], five, ctx := {}) == five # noqa: RUF018 + assert match([1, 2, 3, "res" @ Some(int, at_least=2)], five, ctx := {}) == five assert ctx == {"res": [4, 5]} @@ -965,12 +965,12 @@ def test_matching_sequence_complicated(): "a": [2, 3], "b": [5, 6, 7], } - assert match(pat, range(1, 10), ctx := {}) == list(range(1, 10)) # noqa: RUF018 + assert match(pat, range(1, 10), ctx := {}) == list(range(1, 10)) assert ctx == expected pat = [1, 2, Capture("remaining", Some(...))] expected = {"remaining": [3, 4, 5, 6, 7, 8, 9]} - assert match(pat, range(1, 10), ctx := {}) == list(range(1, 10)) # noqa: RUF018 + assert match(pat, range(1, 10), ctx := {}) == list(range(1, 10)) assert ctx == expected v = [0, [1, 2, "3"], [1, 2, "4"], 3] diff --git a/ibis/config.py b/ibis/config.py index 151cabbb2d853..5a7ea8ed2dad1 100644 --- a/ibis/config.py +++ b/ibis/config.py @@ -1,6 +1,6 @@ from __future__ import annotations -from collections.abc import Callable # noqa: TCH003 +from collections.abc import Callable # noqa: TC003 from typing import Annotated, Any, Optional from public import public diff --git a/ibis/expr/api.py b/ibis/expr/api.py index 63148d7fb1cbb..2cb3126bdb2f8 100644 --- a/ibis/expr/api.py +++ b/ibis/expr/api.py @@ -47,6 +47,7 @@ from collections.abc import Iterable, Sequence from pathlib import Path + import geopandas as gpd import pandas as pd import polars as pl import pyarrow as pa @@ -412,42 +413,55 @@ def memtable( @lazy_singledispatch def _memtable( - data: pd.DataFrame | Any, + data: Any, *, columns: Iterable[str] | None = None, schema: SchemaLike | None = None, name: str | None = None, ) -> Table: - import pandas as pd - - from ibis.formats.pandas import PandasDataFrameProxy + if hasattr(data, "__arrow_c_stream__"): + # Support objects exposing arrow's PyCapsule interface + import pyarrow as pa - if not isinstance(data, pd.DataFrame): - df = pd.DataFrame(data, columns=columns) + data = pa.table(data) else: - df = data + import pandas as pd + + data = pd.DataFrame(data, columns=columns) + return _memtable(data, columns=columns, schema=schema, name=name) + - if df.columns.inferred_type != "string": - cols = df.columns +@_memtable.register("pandas.DataFrame") +def _memtable_from_pandas_dataframe( + data: pd.DataFrame, + *, + columns: Iterable[str] | None = None, + schema: SchemaLike | None = None, + name: str | None = None, +) -> Table: + from ibis.formats.pandas import PandasDataFrameProxy + + if data.columns.inferred_type != "string": + cols = data.columns newcols = getattr( schema, "names", (f"col{i:d}" for i in builtins.range(len(cols))), ) - df = df.rename(columns=dict(zip(cols, newcols))) + data = data.rename(columns=dict(zip(cols, newcols))) if columns is not None: - if (provided_col := len(columns)) != (exist_col := len(df.columns)): + if (provided_col := len(columns)) != (exist_col := len(data.columns)): raise ValueError( "Provided `columns` must have an entry for each column in `data`.\n" f"`columns` has {provided_col} elements but `data` has {exist_col} columns." ) - df = df.rename(columns=dict(zip(df.columns, columns))) + data = data.rename(columns=dict(zip(data.columns, columns))) # verify that the DataFrame has no duplicate column names because ibis # doesn't allow that - cols = df.columns + cols = data.columns dupes = [name for name, count in Counter(cols).items() if count > 1] if dupes: raise IbisInputError( @@ -456,8 +470,8 @@ def _memtable( op = ops.InMemoryTable( name=name if name is not None else util.gen_name("pandas_memtable"), - schema=sch.infer(df) if schema is None else schema, - data=PandasDataFrameProxy(df), + schema=sch.infer(data) if schema is None else schema, + data=PandasDataFrameProxy(data), ) return op.to_expr() @@ -499,6 +513,21 @@ def _memtable_from_pyarrow_dataset( ).to_expr() +@_memtable.register("pyarrow.RecordBatchReader") +def _memtable_from_pyarrow_RecordBatchReader( + data: pa.Table, + *, + name: str | None = None, + schema: SchemaLike | None = None, + columns: Iterable[str] | None = None, +): + raise TypeError( + "Creating an `ibis.memtable` from a `pyarrow.RecordBatchReader` would " + "load _all_ data into memory. If you want to do this, please do so " + "explicitly like `ibis.memtable(reader.read_all())`" + ) + + @_memtable.register("polars.LazyFrame") def _memtable_from_polars_lazyframe(data: pl.LazyFrame, **kwargs): return _memtable_from_polars_dataframe(data.collect(), **kwargs) @@ -524,6 +553,23 @@ def _memtable_from_polars_dataframe( ).to_expr() +@_memtable.register("geopandas.geodataframe.GeoDataFrame") +def _memtable_from_geopandas_geodataframe( + data: gpd.GeoDataFrame, + *, + name: str | None = None, + schema: SchemaLike | None = None, + columns: Iterable[str] | None = None, +): + # The Pandas data proxy and the `to_arrow` method on it can't handle + # geopandas geometry columns. But if we first make the geometry columns WKB, + # then the geo column gets treated (correctly) as just a binary blob, and + # DuckDB can cast it to a proper geometry column after import. + wkb_df = data.to_wkb() + + return _memtable(wkb_df, name=name, schema=schema, columns=columns) + + def _deferred_method_call(expr, method_name, **kwargs): method = operator.methodcaller(method_name, **kwargs) if isinstance(expr, str): @@ -545,7 +591,7 @@ def desc(expr: ir.Column | str, nulls_first: bool = False) -> ir.Value: expr The expression or column name to use for sorting nulls_first - Bool to indicate weather to put NULL values first or not. + Bool to indicate whether to put NULL values first or not. See Also -------- @@ -586,7 +632,7 @@ def asc(expr: ir.Column | str, nulls_first: bool = False) -> ir.Value: expr The expression or column name to use for sorting nulls_first - Bool to indicate weather to put NULL values first or not. + Bool to indicate whether to put NULL values first or not. See Also -------- @@ -1138,6 +1184,9 @@ def cases( Equivalent to a SQL `CASE` statement. + ::: {.callout-note title="Added in version 10.0.0"} + ::: + Parameters ---------- branch @@ -1688,6 +1737,8 @@ def set_backend(backend: str | BaseBackend) -> None: def get_backend(expr: Expr | None = None) -> BaseBackend: """Get the current Ibis backend to use for a given expression. + Parameters + ---------- expr An expression to get the backend from. If not passed, the default backend is returned. @@ -1697,6 +1748,25 @@ def get_backend(expr: Expr | None = None) -> BaseBackend: BaseBackend The Ibis backend. + Examples + -------- + >>> import ibis + + Get the default backend. + + >>> ibis.get_backend() # doctest: +ELLIPSIS + + + Get the backend for a specific expression. + + >>> polars_con = ibis.polars.connect() + >>> t = polars_con.create_table("t", ibis.memtable({"a": [1, 2, 3]})) + >>> ibis.get_backend(t) # doctest: +ELLIPSIS + + + See Also + -------- + [`get_backend()`](./expression-tables.qmd#ibis.expr.types.relations.Table.get_backend) """ if expr is None: from ibis.config import _default_backend @@ -2012,11 +2082,15 @@ def intersect(table: ir.Table, *rest: ir.Table, distinct: bool = True) -> ir.Tab Table A new table containing the intersection of all input tables. + See Also + -------- + [`Table.intersect`](./expression-tables.qmd#ibis.expr.types.relations.Table.intersect) + Examples -------- >>> import ibis >>> ibis.options.interactive = True - >>> t1 = ibis.memtable({"a": [1, 2]}) + >>> t1 = ibis.memtable({"a": [1, 2, 2]}) >>> t1 ┏━━━━━━━┓ ┃ a ┃ @@ -2025,8 +2099,9 @@ def intersect(table: ir.Table, *rest: ir.Table, distinct: bool = True) -> ir.Tab ├───────┤ │ 1 │ │ 2 │ + │ 2 │ └───────┘ - >>> t2 = ibis.memtable({"a": [2, 3]}) + >>> t2 = ibis.memtable({"a": [2, 2, 3]}) >>> t2 ┏━━━━━━━┓ ┃ a ┃ @@ -2034,6 +2109,7 @@ def intersect(table: ir.Table, *rest: ir.Table, distinct: bool = True) -> ir.Tab │ int64 │ ├───────┤ │ 2 │ + │ 2 │ │ 3 │ └───────┘ >>> ibis.intersect(t1, t2) @@ -2044,7 +2120,26 @@ def intersect(table: ir.Table, *rest: ir.Table, distinct: bool = True) -> ir.Tab ├───────┤ │ 2 │ └───────┘ + >>> ibis.intersect(t1, t2, distinct=False) + ┏━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━┩ + │ int64 │ + ├───────┤ + │ 2 │ + │ 2 │ + └───────┘ + More than two table expressions can be intersected at once. + >>> t3 = ibis.memtable({"a": [2, 3, 3]}) + >>> ibis.intersect(t1, t2, t3) + ┏━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━┩ + │ int64 │ + ├───────┤ + │ 2 │ + └───────┘ """ return table.intersect(*rest, distinct=distinct) if rest else table diff --git a/ibis/expr/builders.py b/ibis/expr/builders.py index b409d0ba35bdf..0c2f57642c2a6 100644 --- a/ibis/expr/builders.py +++ b/ibis/expr/builders.py @@ -13,8 +13,8 @@ from ibis.common.deferred import Deferred, Resolver, deferrable from ibis.common.exceptions import IbisInputError from ibis.common.grounds import Concrete -from ibis.common.selectors import Selector # noqa: TCH001 -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.selectors import Selector # noqa: TC001 +from ibis.common.typing import VarTuple # noqa: TC001 if TYPE_CHECKING: from typing_extensions import Self diff --git a/ibis/expr/datatypes/tests/test_core.py b/ibis/expr/datatypes/tests/test_core.py index 5caa7b2946b10..fa5276f24636e 100644 --- a/ibis/expr/datatypes/tests/test_core.py +++ b/ibis/expr/datatypes/tests/test_core.py @@ -1,8 +1,8 @@ from __future__ import annotations -import datetime # noqa: TCH003 -import decimal # noqa: TCH003 -import uuid # noqa: TCH003 +import datetime # noqa: TC003 +import decimal # noqa: TC003 +import uuid # noqa: TC003 from dataclasses import dataclass from typing import Annotated, NamedTuple diff --git a/ibis/expr/operations/arrays.py b/ibis/expr/operations/arrays.py index 03f368d1b3194..11687c752030e 100644 --- a/ibis/expr/operations/arrays.py +++ b/ibis/expr/operations/arrays.py @@ -10,7 +10,7 @@ import ibis.expr.datatypes as dt import ibis.expr.rules as rlz from ibis.common.annotations import attribute -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.core import Argument, Unary, Value diff --git a/ibis/expr/operations/generic.py b/ibis/expr/operations/generic.py index 0efabf0473079..8f75538f40a79 100644 --- a/ibis/expr/operations/generic.py +++ b/ibis/expr/operations/generic.py @@ -13,12 +13,12 @@ import ibis.expr.datatypes as dt import ibis.expr.rules as rlz from ibis.common.annotations import attribute -from ibis.common.deferred import Deferred # noqa: TCH001 +from ibis.common.deferred import Deferred from ibis.common.grounds import Singleton -from ibis.common.patterns import InstanceOf, Length # noqa: TCH001 -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.patterns import InstanceOf, Length +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.core import Scalar, Unary, Value -from ibis.expr.operations.relations import Relation # noqa: TCH001 +from ibis.expr.operations.relations import Relation # noqa: TC001 @public diff --git a/ibis/expr/operations/histograms.py b/ibis/expr/operations/histograms.py index 0f2ae705a9ced..9fdb7ba0a1165 100644 --- a/ibis/expr/operations/histograms.py +++ b/ibis/expr/operations/histograms.py @@ -2,7 +2,7 @@ from __future__ import annotations -import numbers # noqa: TCH003 +import numbers # noqa: TC003 from typing import Literal from public import public @@ -10,7 +10,7 @@ import ibis.expr.datashape as ds import ibis.expr.datatypes as dt from ibis.common.annotations import ValidationError, attribute -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.core import Column, Value diff --git a/ibis/expr/operations/logical.py b/ibis/expr/operations/logical.py index 7ea03f4d70e85..6dead3ecf4995 100644 --- a/ibis/expr/operations/logical.py +++ b/ibis/expr/operations/logical.py @@ -8,7 +8,7 @@ import ibis.expr.rules as rlz from ibis.common.annotations import ValidationError, attribute from ibis.common.exceptions import IbisTypeError -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.core import Binary, Unary, Value diff --git a/ibis/expr/operations/reductions.py b/ibis/expr/operations/reductions.py index a01413ac546fe..925fab51f9bec 100644 --- a/ibis/expr/operations/reductions.py +++ b/ibis/expr/operations/reductions.py @@ -10,10 +10,10 @@ import ibis.expr.datatypes as dt import ibis.expr.rules as rlz from ibis.common.annotations import ValidationError, attribute -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.core import Column, Value -from ibis.expr.operations.relations import Relation # noqa: TCH001 -from ibis.expr.operations.sortkeys import SortKey # noqa: TCH001 +from ibis.expr.operations.relations import Relation # noqa: TC001 +from ibis.expr.operations.sortkeys import SortKey # noqa: TC001 @public diff --git a/ibis/expr/operations/relations.py b/ibis/expr/operations/relations.py index 8bd06eac215cc..90dc400a8dedc 100644 --- a/ibis/expr/operations/relations.py +++ b/ibis/expr/operations/relations.py @@ -24,7 +24,7 @@ from ibis.expr.operations.core import Alias, Column, Node, Scalar, Value from ibis.expr.operations.sortkeys import SortKey from ibis.expr.schema import Schema -from ibis.formats import TableProxy # noqa: TCH001 +from ibis.formats import TableProxy # noqa: TC001 T = TypeVar("T") diff --git a/ibis/expr/operations/strings.py b/ibis/expr/operations/strings.py index 05056889e7c81..a4e435d5122bc 100644 --- a/ibis/expr/operations/strings.py +++ b/ibis/expr/operations/strings.py @@ -9,7 +9,7 @@ import ibis.expr.datatypes as dt import ibis.expr.rules as rlz from ibis.common.annotations import attribute -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.core import Unary, Value diff --git a/ibis/expr/operations/structs.py b/ibis/expr/operations/structs.py index 5b24f2aeb9110..2451f82e6e1d7 100644 --- a/ibis/expr/operations/structs.py +++ b/ibis/expr/operations/structs.py @@ -7,7 +7,7 @@ import ibis.expr.datatypes as dt import ibis.expr.rules as rlz from ibis.common.annotations import ValidationError, attribute -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.core import Value diff --git a/ibis/expr/operations/subqueries.py b/ibis/expr/operations/subqueries.py index 40d5f47ce66ee..ca60cbf028256 100644 --- a/ibis/expr/operations/subqueries.py +++ b/ibis/expr/operations/subqueries.py @@ -10,7 +10,7 @@ from ibis.common.annotations import attribute from ibis.common.exceptions import IntegrityError from ibis.expr.operations.core import Value -from ibis.expr.operations.relations import Relation # noqa: TCH001 +from ibis.expr.operations.relations import Relation # noqa: TC001 @public diff --git a/ibis/expr/operations/temporal_windows.py b/ibis/expr/operations/temporal_windows.py index ab7b8632f176d..4d9823e9beec0 100644 --- a/ibis/expr/operations/temporal_windows.py +++ b/ibis/expr/operations/temporal_windows.py @@ -9,7 +9,7 @@ import ibis.expr.datatypes as dt from ibis.common.annotations import attribute from ibis.common.collections import FrozenOrderedDict -from ibis.expr.operations.core import Column, Scalar # noqa: TCH001 +from ibis.expr.operations.core import Column, Scalar # noqa: TC001 from ibis.expr.operations.relations import Relation, Unaliased from ibis.expr.schema import Schema diff --git a/ibis/expr/operations/vectorized.py b/ibis/expr/operations/vectorized.py index f286c327063cd..4e16488f30592 100644 --- a/ibis/expr/operations/vectorized.py +++ b/ibis/expr/operations/vectorized.py @@ -1,13 +1,13 @@ from __future__ import annotations -from types import FunctionType, LambdaType # noqa: TCH003 +from types import FunctionType, LambdaType # noqa: TC003 from typing import Union from public import public import ibis.expr.datashape as ds import ibis.expr.datatypes as dt -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.operations.analytic import Analytic from ibis.expr.operations.core import Column, Value from ibis.expr.operations.reductions import Reduction diff --git a/ibis/expr/operations/window.py b/ibis/expr/operations/window.py index 6433f2405a560..317bd4516125b 100644 --- a/ibis/expr/operations/window.py +++ b/ibis/expr/operations/window.py @@ -13,13 +13,13 @@ import ibis.expr.datatypes as dt import ibis.expr.rules as rlz from ibis.common.patterns import CoercionError -from ibis.common.typing import VarTuple # noqa: TCH001 -from ibis.expr.operations.analytic import Analytic # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 +from ibis.expr.operations.analytic import Analytic # noqa: TC001 from ibis.expr.operations.core import Column, Value from ibis.expr.operations.generic import Literal from ibis.expr.operations.numeric import Negate -from ibis.expr.operations.reductions import Reduction # noqa: TCH001 -from ibis.expr.operations.sortkeys import SortKey # noqa: TCH001 +from ibis.expr.operations.reductions import Reduction # noqa: TC001 +from ibis.expr.operations.sortkeys import SortKey # noqa: TC001 T = TypeVar("T", bound=dt.Numeric | dt.Interval, covariant=True) S = TypeVar("S", bound=ds.DataShape, default=ds.Any, covariant=True) diff --git a/ibis/expr/rewrites.py b/ibis/expr/rewrites.py index 3b9d6760ce41b..18fa45a72f0da 100644 --- a/ibis/expr/rewrites.py +++ b/ibis/expr/rewrites.py @@ -7,14 +7,14 @@ import toolz import ibis.expr.operations as ops -from ibis.common.collections import FrozenDict # noqa: TCH001 +from ibis.common.collections import FrozenDict # noqa: TC001 from ibis.common.deferred import Item, _, deferred, var from ibis.common.exceptions import ExpressionError, IbisInputError from ibis.common.graph import Node as Traversable from ibis.common.graph import traverse from ibis.common.grounds import Concrete from ibis.common.patterns import Check, pattern, replace -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.util import Namespace, promote_list p = Namespace(pattern, module=ops) diff --git a/ibis/expr/sql.py b/ibis/expr/sql.py index c6fe415e9458c..6afc81ed228a9 100644 --- a/ibis/expr/sql.py +++ b/ibis/expr/sql.py @@ -465,6 +465,30 @@ def to_sql( str Formatted SQL string + Examples + -------- + >>> import ibis + >>> t = ibis.table({"a": "int", "b": "int"}, name="t") + >>> expr = t.mutate(c=t.a + t.b) + >>> ibis.to_sql(expr) # doctest: +SKIP + SELECT + "t0"."a", + "t0"."b", + "t0"."a" + "t0"."b" AS "c" + FROM "t" AS "t0" + + You can also specify the SQL dialect to use for compilation: + >>> ibis.to_sql(expr, dialect="mysql") # doctest: +SKIP + SELECT + `t0`.`a`, + `t0`.`b`, + `t0`.`a` + `t0`.`b` AS `c` + FROM `t` AS `t0` + + See Also + -------- + [`Table.compile()`](./expression-tables.qmd#ibis.expr.types.relations.Table.compile) + """ import ibis.backends.sql.compilers as sc diff --git a/ibis/expr/tests/test_format.py b/ibis/expr/tests/test_format.py index 6fe8b3cddf94f..2ecb831c4d25c 100644 --- a/ibis/expr/tests/test_format.py +++ b/ibis/expr/tests/test_format.py @@ -472,7 +472,7 @@ class ValueList(ops.Node): def test_arbitrary_traversables_are_supported(snapshot): class MyNode(Traversable): - __slots__ = ("obj", "children") + __slots__ = ("children", "obj") __argnames__ = ("obj", "children") def __init__(self, obj, children): diff --git a/ibis/expr/types/core.py b/ibis/expr/types/core.py index d2d73028f833c..195f4f45dfab8 100644 --- a/ibis/expr/types/core.py +++ b/ibis/expr/types/core.py @@ -388,11 +388,12 @@ def get_backend(self) -> BaseBackend: >>> import ibis >>> con = ibis.duckdb.connect() >>> t = con.create_table("t", {"id": [1, 2, 3]}) - >>> backend = t.get_backend() - >>> backend.name - 'duckdb' - >>> type(backend) - + >>> t.get_backend() # doctest: +ELLIPSIS + + + See Also + -------- + [`ibis.get_backend()`](./connection.qmd#ibis.get_backend) """ return self._find_backend(use_default=True) @@ -413,6 +414,41 @@ def execute( Mapping of scalar parameter expressions to value kwargs Keyword arguments + + Examples + -------- + >>> import ibis + >>> t = ibis.examples.penguins.fetch() + >>> t.execute() + species island bill_length_mm ... body_mass_g sex year + 0 Adelie Torgersen 39.1 ... 3750.0 male 2007 + 1 Adelie Torgersen 39.5 ... 3800.0 female 2007 + 2 Adelie Torgersen 40.3 ... 3250.0 female 2007 + 3 Adelie Torgersen NaN ... NaN None 2007 + 4 Adelie Torgersen 36.7 ... 3450.0 female 2007 + .. ... ... ... ... ... ... ... + 339 Chinstrap Dream 55.8 ... 4000.0 male 2009 + 340 Chinstrap Dream 43.5 ... 3400.0 female 2009 + 341 Chinstrap Dream 49.6 ... 3775.0 male 2009 + 342 Chinstrap Dream 50.8 ... 4100.0 male 2009 + 343 Chinstrap Dream 50.2 ... 3775.0 female 2009 + [344 rows x 8 columns] + + Scalar parameters can be supplied dynamically during execution. + >>> species = ibis.param("string") + >>> expr = t.filter(t.species == species).order_by(t.bill_length_mm) + >>> expr.execute(limit=3, params={species: "Gentoo"}) + species island bill_length_mm ... body_mass_g sex year + 0 Gentoo Biscoe 40.9 ... 4650 female 2007 + 1 Gentoo Biscoe 41.7 ... 4700 female 2009 + 2 Gentoo Biscoe 42.0 ... 4150 female 2007 + + [3 rows x 8 columns] + + See Also + -------- + [`Table.to_pandas()`](./expression-tables.qmd#ibis.expr.types.relations.Table.to_pandas) + [`Value.to_pandas()`](./expression-generic.qmd#ibis.expr.types.generic.Value.to_pandas) """ return self._find_backend(use_default=True).execute( self, limit=limit, params=params, **kwargs @@ -423,8 +459,8 @@ def compile( limit: int | None = None, params: Mapping[ir.Value, Any] | None = None, pretty: bool = False, - ): - """Compile to an execution target. + ) -> str: + r"""Compile to an execution target. Parameters ---------- @@ -435,6 +471,37 @@ def compile( Mapping of scalar parameter expressions to value pretty In case of SQL backends, return a pretty formatted SQL query. + + Returns + ------- + str + SQL query representation of the expression + + Examples + -------- + >>> import ibis + >>> d = {"a": [1, 2, 3], "b": [4, 5, 6]} + >>> con = ibis.duckdb.connect() + >>> t = con.create_table("t", d) + >>> expr = t.mutate(c=t.a + t.b) + >>> expr.compile() + 'SELECT "t0"."a", "t0"."b", "t0"."a" + "t0"."b" AS "c" FROM "memory"."main"."t" AS "t0"' + + If you want to see the pretty formatted SQL query, set `pretty` to `True`. + >>> expr.compile(pretty=True) + 'SELECT\n "t0"."a",\n "t0"."b",\n "t0"."a" + "t0"."b" AS "c"\nFROM "memory"."main"."t" AS "t0"' + + If the expression does not have a backend, an error will be raised. + >>> t = ibis.memtable(d) + >>> expr = t.mutate(c=t.a + t.b) + >>> expr.compile() # quartodoc: +EXPECTED_FAILURE + Traceback (most recent call last): + ... + ibis.common.exceptions.IbisError: Expression depends on no backends, and ... + + See Also + -------- + [`ibis.to_sql()`](./expression-generic.qmd#ibis.to_sql) """ return self._find_backend().compile( self, limit=limit, params=params, pretty=pretty diff --git a/ibis/expr/types/generic.py b/ibis/expr/types/generic.py index 8d256c9b06723..e741948a0b7e2 100644 --- a/ibis/expr/types/generic.py +++ b/ibis/expr/types/generic.py @@ -14,7 +14,7 @@ from ibis.common.grounds import Singleton from ibis.expr.rewrites import rewrite_window_input from ibis.expr.types.core import Expr, _binop, _FixedTextJupyterMixin, _is_null_literal -from ibis.util import deprecated, promote_list, warn_deprecated +from ibis.util import deprecated, promote_list if TYPE_CHECKING: import pandas as pd @@ -1192,15 +1192,101 @@ def __lt__(self, other: Value) -> ir.BooleanValue: return _binop(ops.Less, self, other) def asc(self, nulls_first: bool = False) -> ir.Value: - """Sort an expression ascending.""" + """Sort an expression ascending. + + Parameters + ---------- + nulls_first + Whether to sort `NULL` values first + + Returns + ------- + Value + Sorted expression + + See Also + -------- + [`ibis.asc()`](./expression-generic.qmd#ibis.asc) + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable({"a": [1, 2, 3, None]}) + >>> t.order_by(t.a.asc()) + ┏━━━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━━━┩ + │ float64 │ + ├─────────┤ + │ 1.0 │ + │ 2.0 │ + │ 3.0 │ + │ NULL │ + └─────────┘ + >>> t.order_by(t.a.asc(nulls_first=True)) + ┏━━━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━━━┩ + │ float64 │ + ├─────────┤ + │ NULL │ + │ 1.0 │ + │ 2.0 │ + │ 3.0 │ + └─────────┘ + """ return ops.SortKey(self, ascending=True, nulls_first=nulls_first).to_expr() def desc(self, nulls_first: bool = False) -> ir.Value: - """Sort an expression descending.""" + """Sort an expression descending. + + Parameters + ---------- + nulls_first + Whether to sort `NULL` values first. + + Returns + ------- + Value + Sorted expression + + See Also + -------- + [`ibis.desc()`](./expression-generic.qmd#ibis.desc) + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable({"a": [1, 2, 3, None]}) + >>> t.order_by(t.a.desc()) + ┏━━━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━━━┩ + │ float64 │ + ├─────────┤ + │ 3.0 │ + │ 2.0 │ + │ 1.0 │ + │ NULL │ + └─────────┘ + >>> t.order_by(t.a.desc(nulls_first=True)) + ┏━━━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━━━┩ + │ float64 │ + ├─────────┤ + │ NULL │ + │ 3.0 │ + │ 2.0 │ + │ 1.0 │ + └─────────┘ + """ return ops.SortKey(self, ascending=False, nulls_first=nulls_first).to_expr() def to_pandas(self, **kwargs) -> pd.Series: - """Convert a column expression to a pandas Series or scalar object. + """Convert an expression to a pandas or scalar object. Parameters ---------- @@ -1211,8 +1297,8 @@ def to_pandas(self, **kwargs) -> pd.Series: -------- >>> import ibis >>> ibis.options.interactive = True - >>> t = ibis.examples.penguins.fetch().limit(5) - >>> t.to_pandas() + >>> t = ibis.examples.penguins.fetch() + >>> t.to_pandas(limit=5) species island bill_length_mm ... body_mass_g sex year 0 Adelie Torgersen 39.1 ... 3750.0 male 2007 1 Adelie Torgersen 39.5 ... 3800.0 female 2007 @@ -1978,6 +2064,10 @@ def topk( Computes a Table containing the top `k` values by a certain metric (defaults to count). + ::: {.callout-note title="Changed in version 9.5.0"} + Added `name` parameter. + ::: + Parameters ---------- k @@ -2056,9 +2146,7 @@ def topk( return table.aggregate(metric, by=[self]).order_by(metric.desc()).limit(k) - def arbitrary( - self, where: ir.BooleanValue | None = None, how: Any = None - ) -> Scalar: + def arbitrary(self, where: ir.BooleanValue | None = None) -> Scalar: """Select an arbitrary value in a column. Returns an arbitrary (nondeterministic, backend-specific) value from @@ -2069,8 +2157,6 @@ def arbitrary( ---------- where A filter expression - how - DEPRECATED Returns ------- @@ -2102,13 +2188,6 @@ def arbitrary( │ 2 │ a │ 8.3 │ └───────┴────────┴─────────┘ """ - if how is not None: - warn_deprecated( - name="how", - as_of="9.0", - removed_in="10.0", - instead="call `first` or `last` explicitly", - ) return ops.Arbitrary(self, where=self._bind_to_parent_table(where)).to_expr() def count(self, where: ir.BooleanValue | None = None) -> ir.IntegerScalar: @@ -2193,6 +2272,9 @@ def value_counts(self, *, name: str | None = None) -> ir.Table: │ c │ 3 │ │ d │ 4 │ └────────┴───────┘ + + ::: {.callout-note title="Added in version 9.5.0"} + ::: """ colname = self.get_name() if name is None: @@ -2684,6 +2766,27 @@ def nth(self, n: int | ir.IntegerValue) -> Column: """ return ops.NthValue(self, n).to_expr() + def to_list(self, **kwargs) -> list: + """Convert a column expression to a list. + + Parameters + ---------- + kwargs + Same as keyword arguments to [`to_pyarrow`](#ibis.expr.types.core.Expr.to_pyarrow) + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.examples.penguins.fetch() + >>> t.bill_length_mm.to_list(limit=5) + [39.1, 39.5, 40.3, None, 36.7] + + ::: {.callout-note title="Added in version 10.0.0"} + ::: + """ + return self.to_pyarrow(**kwargs).to_pylist() + @public class UnknownValue(Value): @@ -2723,9 +2826,11 @@ def null(type: dt.DataType | str | None = None) -> Value: `NULL`s with an unspecified type are castable and comparable to values, but lack datatype-specific methods: + Examples + -------- >>> import ibis >>> ibis.options.interactive = True - >>> ibis.null().upper() + >>> ibis.null().upper() # quartodoc: +EXPECTED_FAILURE Traceback (most recent call last): ... AttributeError: 'NullScalar' object has no attribute 'upper' diff --git a/ibis/expr/types/groupby.py b/ibis/expr/types/groupby.py index 193e114a8c735..4fa18460029a8 100644 --- a/ibis/expr/types/groupby.py +++ b/ibis/expr/types/groupby.py @@ -25,8 +25,8 @@ import ibis.expr.operations as ops import ibis.expr.types as ir from ibis.common.grounds import Concrete -from ibis.common.patterns import Length # noqa: TCH001 -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.patterns import Length +from ibis.common.typing import VarTuple # noqa: TC001 from ibis.expr.rewrites import rewrite_window_input if TYPE_CHECKING: diff --git a/ibis/expr/types/numeric.py b/ibis/expr/types/numeric.py index 0f3d2a78ed16d..36c7b87b001c0 100644 --- a/ibis/expr/types/numeric.py +++ b/ibis/expr/types/numeric.py @@ -13,8 +13,6 @@ from ibis.util import deprecated if TYPE_CHECKING: - from collections.abc import Iterable - import ibis.expr.types as ir @@ -786,6 +784,33 @@ def std( ------- NumericScalar Standard deviation of `arg` + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable( + ... { + ... "values": [1, 3, 3, 4, 5, 7], + ... } + ... ) + >>> t.values.std() + ┌──────────┐ + │ 2.041241 │ + └──────────┘ + >>> t.mutate(std_col=t.values.std()) + ┏━━━━━━━━┳━━━━━━━━━━┓ + ┃ values ┃ std_col ┃ + ┡━━━━━━━━╇━━━━━━━━━━┩ + │ int64 │ float64 │ + ├────────┼──────────┤ + │ 1 │ 2.041241 │ + │ 3 │ 2.041241 │ + │ 3 │ 2.041241 │ + │ 4 │ 2.041241 │ + │ 5 │ 2.041241 │ + │ 7 │ 2.041241 │ + └────────┴──────────┘ """ return ops.StandardDev( self, how=how, where=self._bind_to_parent_table(where) @@ -809,6 +834,33 @@ def var( ------- NumericScalar Standard deviation of `arg` + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable( + ... { + ... "values": [1, 3, 3, 4, 5, 7], + ... } + ... ) + >>> t.values.var() + ┌──────────┐ + │ 4.166667 │ + └──────────┘ + >>> t.mutate(var_col=t.values.var()) + ┏━━━━━━━━┳━━━━━━━━━━┓ + ┃ values ┃ var_col ┃ + ┡━━━━━━━━╇━━━━━━━━━━┩ + │ int64 │ float64 │ + ├────────┼──────────┤ + │ 1 │ 4.166667 │ + │ 3 │ 4.166667 │ + │ 3 │ 4.166667 │ + │ 4 │ 4.166667 │ + │ 5 │ 4.166667 │ + │ 7 │ 4.166667 │ + └────────┴──────────┘ """ return ops.Variance( self, how=how, where=self._bind_to_parent_table(where) @@ -835,6 +887,34 @@ def corr( ------- NumericScalar The correlation of `left` and `right` + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable( + ... { + ... "left": [1, 3, 3, 4, 5, 7], + ... "right": [7, 5, 4, 3, 3, 1], + ... } + ... ) + >>> t.left.corr(t.right, how="pop") + ┌────────┐ + │ -0.968 │ + └────────┘ + >>> t.mutate(corr_col=t.left.corr(t.right, how="pop")) + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━━━┓ + ┃ left ┃ right ┃ corr_col ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━━━┩ + │ int64 │ int64 │ float64 │ + ├───────┼───────┼──────────┤ + │ 1 │ 7 │ -0.968 │ + │ 3 │ 5 │ -0.968 │ + │ 3 │ 4 │ -0.968 │ + │ 4 │ 3 │ -0.968 │ + │ 5 │ 3 │ -0.968 │ + │ 7 │ 1 │ -0.968 │ + └───────┴───────┴──────────┘ """ return ops.Correlation( self, @@ -864,6 +944,38 @@ def cov( ------- NumericScalar The covariance of `self` and `right` + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable( + ... { + ... "left": [1, 3, 3, 4, 5, 7], + ... "right": [7, 5, 4, 3, 3, 1], + ... } + ... ) + >>> t.left.cov(t.right) + ┌───────────┐ + │ -4.033333 │ + └───────────┘ + >>> t.left.cov(t.right, how="pop") + ┌───────────┐ + │ -3.361111 │ + └───────────┘ + >>> t.mutate(cov_col=t.left.cov(t.right, how="pop")) + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━━━━┓ + ┃ left ┃ right ┃ cov_col ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━━━━┩ + │ int64 │ int64 │ float64 │ + ├───────┼───────┼───────────┤ + │ 1 │ 7 │ -3.361111 │ + │ 3 │ 5 │ -3.361111 │ + │ 3 │ 4 │ -3.361111 │ + │ 4 │ 3 │ -3.361111 │ + │ 5 │ 3 │ -3.361111 │ + │ 7 │ 1 │ -3.361111 │ + └───────┴───────┴───────────┘ """ return ops.Covariance( self, @@ -887,6 +999,45 @@ def mean( ------- NumericScalar The mean of the input expression + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable( + ... { + ... "id": [1, 2, 3, 4, 5, 6], + ... "grouper": ["a", "a", "a", "b", "b", "c"], + ... "values": [3, 2, 1, 2, 3, 2], + ... } + ... ) + >>> t.mutate(mean_col=t.values.mean()) + ┏━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┓ + ┃ id ┃ grouper ┃ values ┃ mean_col ┃ + ┡━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━┩ + │ int64 │ string │ int64 │ float64 │ + ├───────┼─────────┼────────┼──────────┤ + │ 1 │ a │ 3 │ 2.166667 │ + │ 2 │ a │ 2 │ 2.166667 │ + │ 3 │ a │ 1 │ 2.166667 │ + │ 4 │ b │ 2 │ 2.166667 │ + │ 5 │ b │ 3 │ 2.166667 │ + │ 6 │ c │ 2 │ 2.166667 │ + └───────┴─────────┴────────┴──────────┘ + + >>> t.mutate(mean_col=t.values.mean(where=t.grouper != "c")) + ┏━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┓ + ┃ id ┃ grouper ┃ values ┃ mean_col ┃ + ┡━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━┩ + │ int64 │ string │ int64 │ float64 │ + ├───────┼─────────┼────────┼──────────┤ + │ 1 │ a │ 3 │ 2.2 │ + │ 2 │ a │ 2 │ 2.2 │ + │ 3 │ a │ 1 │ 2.2 │ + │ 4 │ b │ 2 │ 2.2 │ + │ 5 │ b │ 3 │ 2.2 │ + │ 6 │ c │ 2 │ 2.2 │ + └───────┴─────────┴────────┴──────────┘ """ # TODO(kszucs): remove the alias from the reduction method in favor # of default name generated by ops.Value operations @@ -1076,6 +1227,35 @@ def bucket( ------- IntegerColumn A categorical column expression + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable( + ... { + ... "values": [-1, 3, 5, 6, 8, 10, 11], + ... } + ... ) + >>> buckets = [0, 5, 10] + >>> t.mutate( + ... bucket_closed_left=t.values.bucket(buckets), + ... bucket_closed_right=t.values.bucket(buckets, closed="right"), + ... bucket_over_under=t.values.bucket(buckets, include_over=True, include_under=True), + ... ) + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ values ┃ bucket_closed_left ┃ bucket_closed_right ┃ bucket_over_under ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ int64 │ int8 │ int8 │ int8 │ + ├────────┼────────────────────┼─────────────────────┼───────────────────┤ + │ -1 │ NULL │ NULL │ 0 │ + │ 3 │ 0 │ 0 │ 1 │ + │ 5 │ 1 │ 0 │ 2 │ + │ 6 │ 1 │ 1 │ 2 │ + │ 8 │ 1 │ 1 │ 2 │ + │ 10 │ 1 │ 1 │ 2 │ + │ 11 │ NULL │ NULL │ 3 │ + └────────┴────────────────────┴─────────────────────┴───────────────────┘ """ return ops.Bucket( self, @@ -1111,6 +1291,53 @@ def histogram( ------- Column Bucketed column + + Examples + -------- + >>> import ibis + >>> ibis.options.interactive = True + >>> t = ibis.memtable( + ... { + ... "values": [-1, 3, 5, 6, 8, 10, 11, 23, 25], + ... } + ... ) + + Compute a histogram with 5 bins. + + >>> t.mutate(histogram=t.values.histogram(nbins=5)) + ┏━━━━━━━━┳━━━━━━━━━━━┓ + ┃ values ┃ histogram ┃ + ┡━━━━━━━━╇━━━━━━━━━━━┩ + │ int64 │ int64 │ + ├────────┼───────────┤ + │ -1 │ 0 │ + │ 3 │ 0 │ + │ 5 │ 1 │ + │ 6 │ 1 │ + │ 8 │ 1 │ + │ 10 │ 2 │ + │ 11 │ 2 │ + │ 23 │ 4 │ + │ 25 │ 4 │ + └────────┴───────────┘ + + Compute a histogram with a fixed bin width of 10. + >>> t.mutate(histogram=t.values.histogram(binwidth=10)) + ┏━━━━━━━━┳━━━━━━━━━━━┓ + ┃ values ┃ histogram ┃ + ┡━━━━━━━━╇━━━━━━━━━━━┩ + │ int64 │ int64 │ + ├────────┼───────────┤ + │ -1 │ 0 │ + │ 3 │ 0 │ + │ 5 │ 0 │ + │ 6 │ 0 │ + │ 8 │ 0 │ + │ 10 │ 1 │ + │ 11 │ 1 │ + │ 23 │ 2 │ + │ 25 │ 2 │ + └────────┴───────────┘ """ if nbins is not None and binwidth is not None: @@ -1365,41 +1592,6 @@ def __invert__(self) -> IntegerValue: else: return node.to_expr() - def label(self, labels: Iterable[str], nulls: str | None = None) -> ir.StringValue: - """Label a set of integer values with strings. - - Parameters - ---------- - labels - An iterable of string labels. Each integer value in `self` will be mapped to - a value in `labels`. - nulls - String label to use for `NULL` values - - Returns - ------- - StringValue - `self` labeled with `labels` - - Examples - -------- - >>> import ibis - >>> ibis.options.interactive = True - >>> t = ibis.memtable({"a": [0, 1, 0, 2]}) - >>> t.select(t.a, labeled=t.a.label(["a", "b", "c"])) - ┏━━━━━━━┳━━━━━━━━━┓ - ┃ a ┃ labeled ┃ - ┡━━━━━━━╇━━━━━━━━━┩ - │ int64 │ string │ - ├───────┼─────────┤ - │ 0 │ a │ - │ 1 │ b │ - │ 0 │ a │ - │ 2 │ c │ - └───────┴─────────┘ - """ - return self.cases(*enumerate(labels), else_=nulls) - @public class IntegerScalar(NumericScalar, IntegerValue): diff --git a/ibis/expr/types/pretty.py b/ibis/expr/types/pretty.py index 88f12170d6ea2..1052c48543c88 100644 --- a/ibis/expr/types/pretty.py +++ b/ibis/expr/types/pretty.py @@ -56,10 +56,15 @@ def _(dtype, values, **fmt_kwargs): def _(dtype, values, **fmt_kwargs): import shapely - return _format_nested( - [shapely.from_wkb(v) if isinstance(v, (bytes, str)) else v for v in values], - **fmt_kwargs, - ) + def try_parse(v): + if v is None: + return v + try: + return shapely.from_wkb(v) + except shapely.errors.GEOSException: + return shapely.from_wkt(v) + + return _format_nested(map(try_parse, values), **fmt_kwargs) @format_values.register(dt.JSON) diff --git a/ibis/expr/types/relations.py b/ibis/expr/types/relations.py index c7b6619639a84..c95c6f4d47233 100644 --- a/ibis/expr/types/relations.py +++ b/ibis/expr/types/relations.py @@ -1718,7 +1718,7 @@ def intersect(self, table: Table, *rest: Table, distinct: bool = True) -> Table: -------- >>> import ibis >>> ibis.options.interactive = True - >>> t1 = ibis.memtable({"a": [1, 2]}) + >>> t1 = ibis.memtable({"a": [1, 2, 2]}) >>> t1 ┏━━━━━━━┓ ┃ a ┃ @@ -1727,8 +1727,9 @@ def intersect(self, table: Table, *rest: Table, distinct: bool = True) -> Table: ├───────┤ │ 1 │ │ 2 │ + │ 2 │ └───────┘ - >>> t2 = ibis.memtable({"a": [2, 3]}) + >>> t2 = ibis.memtable({"a": [2, 2, 3]}) >>> t2 ┏━━━━━━━┓ ┃ a ┃ @@ -1736,6 +1737,7 @@ def intersect(self, table: Table, *rest: Table, distinct: bool = True) -> Table: │ int64 │ ├───────┤ │ 2 │ + │ 2 │ │ 3 │ └───────┘ >>> t1.intersect(t2) @@ -1746,6 +1748,26 @@ def intersect(self, table: Table, *rest: Table, distinct: bool = True) -> Table: ├───────┤ │ 2 │ └───────┘ + >>> t1.intersect(t2, distinct=False) + ┏━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━┩ + │ int64 │ + ├───────┤ + │ 2 │ + │ 2 │ + └───────┘ + + More than two table expressions can be intersected at once. + >>> t3 = ibis.memtable({"a": [2, 3, 3]}) + >>> t1.intersect(t2, t3) + ┏━━━━━━━┓ + ┃ a ┃ + ┡━━━━━━━┩ + │ int64 │ + ├───────┤ + │ 2 │ + └───────┘ """ return self._assemble_set_op(ops.Intersection, table, *rest, distinct=distinct) @@ -1812,13 +1834,8 @@ def difference(self, table: Table, *rest: Table, distinct: bool = True) -> Table @deprecated(as_of="9.0", instead="use table.as_scalar() instead") def to_array(self) -> ir.Column: - """View a single column table as an array. + """Deprecated - use `as_scalar` instead.""" - Returns - ------- - Value - A single column view of a table - """ schema = self.schema() if len(schema) != 1: raise com.ExpressionError( @@ -3215,6 +3232,88 @@ def asof_join( ------- Table Table expression + + Examples + -------- + >>> from datetime import datetime, timedelta + >>> import ibis + >>> ibis.options.interactive = True + >>> sensors = ibis.memtable( + ... { + ... "site": ["a", "b", "a", "b", "a"], + ... "humidity": [0.3, 0.4, 0.5, 0.6, 0.7], + ... "event_time": [ + ... datetime(2024, 11, 16, 12, 0, 15, 500000), + ... datetime(2024, 11, 16, 12, 0, 15, 700000), + ... datetime(2024, 11, 17, 18, 12, 14, 950000), + ... datetime(2024, 11, 17, 18, 12, 15, 120000), + ... datetime(2024, 11, 18, 18, 12, 15, 100000), + ... ], + ... } + ... ) + >>> events = ibis.memtable( + ... { + ... "site": ["a", "b", "a"], + ... "event_type": [ + ... "cloud coverage", + ... "rain start", + ... "rain stop", + ... ], + ... "event_time": [ + ... datetime(2024, 11, 16, 12, 0, 15, 400000), + ... datetime(2024, 11, 17, 18, 12, 15, 100000), + ... datetime(2024, 11, 18, 18, 12, 15, 100000), + ... ], + ... } + ... ) + + This setup simulates time-series data by pairing irregularly collected sensor + readings with weather events, enabling analysis of environmental conditions + before each event. We will use the `asof_join` method to match each event with + the most recent prior sensor reading from the sensors table at the same site. + + >>> sensors + ┏━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ site ┃ humidity ┃ event_time ┃ + ┡━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ string │ float64 │ timestamp │ + ├────────┼──────────┼─────────────────────────┤ + │ a │ 0.3 │ 2024-11-16 12:00:15.500 │ + │ b │ 0.4 │ 2024-11-16 12:00:15.700 │ + │ a │ 0.5 │ 2024-11-17 18:12:14.950 │ + │ b │ 0.6 │ 2024-11-17 18:12:15.120 │ + │ a │ 0.7 │ 2024-11-18 18:12:15.100 │ + └────────┴──────────┴─────────────────────────┘ + >>> events + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ site ┃ event_type ┃ event_time ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ string │ string │ timestamp │ + ├────────┼────────────────┼─────────────────────────┤ + │ a │ cloud coverage │ 2024-11-16 12:00:15.400 │ + │ b │ rain start │ 2024-11-17 18:12:15.100 │ + │ a │ rain stop │ 2024-11-18 18:12:15.100 │ + └────────┴────────────────┴─────────────────────────┘ + + We can find the closest event to each sensor reading with a 1 second tolerance. + Using the "site" column as a join predicate ensures we only match events that + occurred at or near the same site as the sensor reading. + + >>> tolerance = timedelta(seconds=1) + >>> sensors.asof_join(events, on="event_time", predicates="site", tolerance=tolerance).drop( + ... "event_time_right" + ... ).order_by("event_time") + ┏━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓ + ┃ site ┃ humidity ┃ event_time ┃ site_right ┃ event_type ┃ + ┡━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩ + │ string │ float64 │ timestamp │ string │ string │ + ├────────┼──────────┼─────────────────────────┼────────────┼────────────────┤ + │ a │ 0.3 │ 2024-11-16 12:00:15.500 │ a │ cloud coverage │ + │ b │ 0.4 │ 2024-11-16 12:00:15.700 │ NULL │ NULL │ + │ a │ 0.5 │ 2024-11-17 18:12:14.950 │ NULL │ NULL │ + │ b │ 0.6 │ 2024-11-17 18:12:15.120 │ b │ rain start │ + │ a │ 0.7 │ 2024-11-18 18:12:15.100 │ a │ rain stop │ + └────────┴──────────┴─────────────────────────┴────────────┴────────────────┘ """ from ibis.expr.types.joins import Join @@ -4589,6 +4688,10 @@ def window_by( def value_counts(self, *, name: str | None = None) -> ir.Table: """Compute a frequency table of this table's values. + ::: {.callout-note title="Changed in version 10.0.0"} + Added `name` parameter. + ::: + Parameters ---------- name diff --git a/ibis/expr/types/strings.py b/ibis/expr/types/strings.py index 6383fe6132562..1d54913d1be6a 100644 --- a/ibis/expr/types/strings.py +++ b/ibis/expr/types/strings.py @@ -410,13 +410,6 @@ def capitalize(self) -> StringValue: """ return ops.Capitalize(self).to_expr() - @util.deprecated( - instead="use the `capitalize` method", as_of="9.0", removed_in="10.0" - ) - def initcap(self) -> StringValue: - """Deprecated. Use `capitalize` instead.""" - return self.capitalize() - def __contains__(self, *_: Any) -> bool: raise TypeError("Use string_expr.contains(arg)") @@ -455,7 +448,7 @@ def hashbytes( self, how: Literal["md5", "sha1", "sha256", "sha512"] = "sha256", ) -> ir.BinaryValue: - """Compute the binary hash value of the input. + r"""Compute the binary hash value of the input. Parameters ---------- @@ -466,6 +459,12 @@ def hashbytes( ------- BinaryValue Binary expression + + Examples + -------- + >>> import ibis + >>> str_lit = ibis.literal("hello") + >>> result = str_lit.hashbytes("md5") # b']A@*\xbcK*v\xb9q\x9d\x91\x10\x17\xc5\x92' """ return ops.HashBytes(self, how).to_expr() @@ -492,7 +491,7 @@ def hexdigest( >>> t = ibis.memtable({"species": ["Adelie", "Chinstrap", "Gentoo"]}) >>> t.species.hexdigest() ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ HexDigest(species) ┃ + ┃ HexDigest(species) ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ ├──────────────────────────────────────────────────────────────────┤ diff --git a/ibis/expr/types/temporal_windows.py b/ibis/expr/types/temporal_windows.py index 170b3b29aa990..18e4076a6c1d9 100644 --- a/ibis/expr/types/temporal_windows.py +++ b/ibis/expr/types/temporal_windows.py @@ -7,9 +7,9 @@ import ibis.common.exceptions as com import ibis.expr.operations as ops import ibis.expr.types as ir -from ibis.common.collections import FrozenOrderedDict # noqa: TCH001 +from ibis.common.collections import FrozenOrderedDict # noqa: TC001 from ibis.common.grounds import Concrete -from ibis.expr.operations.relations import Unaliased # noqa: TCH001 +from ibis.expr.operations.relations import Unaliased # noqa: TC001 from ibis.expr.types.relations import unwrap_aliases if TYPE_CHECKING: diff --git a/ibis/formats/pyarrow.py b/ibis/formats/pyarrow.py index 93c41b7169aa7..fcc8d708f4b05 100644 --- a/ibis/formats/pyarrow.py +++ b/ibis/formats/pyarrow.py @@ -1,5 +1,6 @@ from __future__ import annotations +import contextlib from typing import TYPE_CHECKING, Any import pyarrow as pa @@ -43,6 +44,9 @@ pa.binary(): dt.Binary, } +with contextlib.suppress(AttributeError): + _from_pyarrow_types[pa.string_view()] = dt.String + _to_pyarrow_types = { dt.Null: pa.null(), diff --git a/ibis/selectors.py b/ibis/selectors.py index 09d881a9c1dfe..179e393908044 100644 --- a/ibis/selectors.py +++ b/ibis/selectors.py @@ -65,11 +65,11 @@ import ibis.expr.operations as ops import ibis.expr.types as ir from ibis import util -from ibis.common.collections import frozendict # noqa: TCH001 +from ibis.common.collections import frozendict # noqa: TC001 from ibis.common.deferred import Deferred, Resolver from ibis.common.grounds import Concrete, Singleton from ibis.common.selectors import All, Any, Expandable, Selector -from ibis.common.typing import VarTuple # noqa: TCH001 +from ibis.common.typing import VarTuple # noqa: TC001 def __getattr__(name): diff --git a/ibis/tests/expr/test_value_exprs.py b/ibis/tests/expr/test_value_exprs.py index 35e99e31458e9..4b6e349aaf6ef 100644 --- a/ibis/tests/expr/test_value_exprs.py +++ b/ibis/tests/expr/test_value_exprs.py @@ -442,7 +442,7 @@ def test_cast_same_type_noop(table): assert i.cast("int8") is i -def test_string_slice_step(table): +def test_string_slice_step(): s = ibis.literal("abcde") s[1:3] s[1:3:1] @@ -509,7 +509,7 @@ def test_negate_boolean_column(table): @pytest.mark.parametrize("column", ["a", "b"]) -@pytest.mark.parametrize("condition_fn", [lambda t: None, lambda t: t.a > 8]) +@pytest.mark.parametrize("condition_fn", [lambda _: None, lambda t: t.a > 8]) def test_arbitrary(table, column, condition_fn): col = table[column] where = condition_fn(table) @@ -519,12 +519,6 @@ def test_arbitrary(table, column, condition_fn): assert isinstance(expr.op(), ops.Arbitrary) -def test_arbitrary_how_deprecated(table): - with pytest.warns(FutureWarning, match="v9.0"): - out = table.a.arbitrary(how="last") - assert isinstance(out.op(), ops.Arbitrary) - - @pytest.mark.parametrize( ["column", "operation"], [ @@ -803,12 +797,12 @@ def test_literal_promotions(table, op, name, case, ex_type): @pytest.mark.parametrize( ("op", "left_fn", "right_fn", "ex_type"), [ - (operator.sub, lambda t: t["a"], lambda t: 0, "int8"), - (operator.sub, lambda t: 0, lambda t: t["a"], "int16"), - (operator.sub, lambda t: t["b"], lambda t: 0, "int16"), - (operator.sub, lambda t: 0, lambda t: t["b"], "int32"), - (operator.sub, lambda t: t["c"], lambda t: 0, "int32"), - (operator.sub, lambda t: 0, lambda t: t["c"], "int64"), + (operator.sub, lambda t: t["a"], lambda _: 0, "int8"), + (operator.sub, lambda _: 0, lambda t: t["a"], "int16"), + (operator.sub, lambda t: t["b"], lambda _: 0, "int16"), + (operator.sub, lambda _: 0, lambda t: t["b"], "int32"), + (operator.sub, lambda t: t["c"], lambda _: 0, "int32"), + (operator.sub, lambda _: 0, lambda t: t["c"], "int64"), ], ids=lambda arg: str(getattr(arg, "__name__", arg)), ) diff --git a/ibis/tests/expr/test_window_functions.py b/ibis/tests/expr/test_window_functions.py index fdc7be22f385e..954918334ec0c 100644 --- a/ibis/tests/expr/test_window_functions.py +++ b/ibis/tests/expr/test_window_functions.py @@ -38,7 +38,7 @@ def test_mutate_with_analytic_functions(alltypes): f.max(), ] - exprs = [expr.name("e%d" % i) for i, expr in enumerate(exprs)] + exprs = [expr.name(f"e{i:d}") for i, expr in enumerate(exprs)] proj = g.mutate(exprs) values = list(proj.op().values.values()) diff --git a/ibis/util.py b/ibis/util.py index 993e539dfa884..42d1d0e5b3fc7 100644 --- a/ibis/util.py +++ b/ibis/util.py @@ -640,7 +640,7 @@ def __getattr__(self, name: str): class PseudoHashable(Coercible, Generic[V]): """A wrapper that provides a best effort precomputed hash.""" - __slots__ = ("obj", "hash") + __slots__ = ("hash", "obj") obj: V def __init__(self, obj: V): diff --git a/justfile b/justfile index 169f187c362b7..20c86605ae265 100644 --- a/justfile +++ b/justfile @@ -273,11 +273,9 @@ build-jupyterlite: rm -rf dist/ ibis_dev_version="$(just bump-version)" - uvx --from=toml-cli toml set --toml-path=pyproject.toml project.version "$ibis_dev_version" - sed -i "s/__version__ = \".+\"/__version__ = \"$ibis_dev_version\"/" ibis/__init__.py uv build --wheel - git checkout pyproject.toml ibis/__init__.py + git checkout pyproject.toml ibis/__init__.py uv.lock jupyter lite build \ --debug \ @@ -303,6 +301,16 @@ docs-build-all: chat *args: zulip-term {{ args }} -# bump the version number to the next pre-release version -@bump-version: +# compute the next version number +@compute-version: uv run --only-group dev python ci/release/bump_version.py + +# bump the version number in necessary files +bump-version: + #!/usr/bin/env bash + + ibis_dev_version="$(just compute-version)" + uvx --from=toml-cli toml set --toml-path=pyproject.toml project.version "$ibis_dev_version" > /dev/null + sed -i 's/__version__ = .\+/__version__ = "'$ibis_dev_version'"/g' ibis/__init__.py + just lock > /dev/null + echo "$ibis_dev_version" diff --git a/nix/ibis.nix b/nix/ibis.nix deleted file mode 100644 index 7359fe6e039cd..0000000000000 --- a/nix/ibis.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ pkgs, python, mkEnv, stdenv, ... }: -let - pythonEnv = mkEnv python { - editable = false; - deps = { - ibis-framework = [ - # Groups - "tests" - # Extras - "duckdb" - "datafusion" - "sqlite" - "polars" - "decompiler" - "visualization" - ]; - }; - }; - -in -stdenv.mkDerivation { - name = "ibis-framework-test"; - nativeCheckInputs = [ pythonEnv pkgs.graphviz-nox ]; - src = ../.; - doCheck = true; - preCheck = '' - set -euo pipefail - - ln -s ${pkgs.ibisTestingData} $PWD/ci/ibis-testing-data - - HOME="$(mktemp -d)" - export HOME - ''; - checkPhase = '' - runHook preCheck - pytest -m datafusion - pytest -m 'core or duckdb or sqlite or polars' --numprocesses $NIX_BUILD_CORES --dist loadgroup - runHook postCheck - ''; - - # Don't run the fixup phase(s), to avoid permissions errors - dontFixup = true; - - # ibis-framework was already built as a part of the env, this is just running - # tests. Symlink the built test env for convenience. - # - # Note: Testing could technically be done as a part of the virtualenv - # constructor derivation. - installPhase = '' - runHook preInstall - ln -s ${pythonEnv} $out - runHook postInstall - ''; -} diff --git a/nix/overlay.nix b/nix/overlay.nix index 18534519e579b..65ede9bf6aee0 100644 --- a/nix/overlay.nix +++ b/nix/overlay.nix @@ -1,4 +1,7 @@ -{ uv2nix, pyproject-nix }: pkgs: super: +{ uv2nix +, pyproject-nix +, pyproject-build-systems +}: pkgs: super: let # Create package overlay from workspace. workspace = uv2nix.lib.workspace.loadWorkspace { workspaceRoot = ../.; }; @@ -7,33 +10,82 @@ let sourcePreference = "wheel"; }; + # Create an overlay enabling editable mode for all local dependencies. + # This is for usage with `nix develop` editableOverlay = - # Create an overlay enabling editable mode for all local dependencies. - # This is for usage with nix-nix develop workspace.mkEditablePyprojectOverlay { root = "$REPO_ROOT"; }; + # Build fixups overlay pyprojectOverrides = import ./pyproject-overrides.nix { inherit pkgs; }; - mkEnv = python: { deps ? workspace.deps.all, editable ? true }: - # This devShell uses uv2nix to construct a virtual environment purely from Nix, using the same dependency specification as the application. - # - # This means that any changes done to your local files do not require a rebuild. + # Adds tests to ibis-framework.passthru.tests + testOverlay = import ./tests.nix { + inherit pkgs; + deps = defaultDeps; + }; + + # Default dependencies for env + defaultDeps = { + ibis-framework = [ + "duckdb" + "datafusion" + "sqlite" + "polars" + "decompiler" + "visualization" + ]; + }; + + mkEnv' = + { + # Python dependency specification + deps + , # Installs ibis-framework as an editable package for use with `nix develop`. + # This means that any changes done to your local files do not require a rebuild. + editable + , + }: python: let # Construct package set pythonSet = # Use base package set from pyproject.nix builders (pkgs.callPackage pyproject-nix.build.packages { inherit python; + stdenv = pkgs.stdenv.override { + targetPlatform = pkgs.stdenv.targetPlatform // { + darwinSdkVersion = "12.0"; + }; + }; }).overrideScope (lib.composeManyExtensions ([ + pyproject-build-systems.overlays.default envOverlay pyprojectOverrides - ] ++ lib.optional editable editableOverlay)); + ] + ++ lib.optionals editable [ editableOverlay ] + ++ lib.optionals (!editable) [ testOverlay ])); in # Build virtual environment - pythonSet.mkVirtualEnv "ibis-${python.pythonVersion}" deps; + (pythonSet.mkVirtualEnv "ibis-${python.pythonVersion}" deps).overrideAttrs (_old: { + # Add passthru.tests from ibis-framework to venv passthru. + # This is used to build tests by CI. + passthru = { + inherit (pythonSet.ibis-framework.passthru) tests; + }; + }); + + mkEnv = mkEnv' { + deps = defaultDeps; + editable = false; + }; + + mkDevEnv = mkEnv' { + # Enable all dependencies for development shell + deps = workspace.deps.all; + editable = true; + }; inherit (pkgs) lib stdenv; in @@ -46,30 +98,24 @@ in sha256 = "sha256-1fenQNQB+Q0pbb0cbK2S/UIwZDE4PXXG15MH3aVbyLU="; }; - ibis310 = pkgs.callPackage ./ibis.nix { - python = pkgs.python310; - inherit mkEnv; - }; - - ibis311 = pkgs.callPackage ./ibis.nix { - python = pkgs.python311; - inherit mkEnv; - }; - - ibis312 = pkgs.callPackage ./ibis.nix { - python = pkgs.python312; - inherit mkEnv; - }; - - ibisDevEnv310 = mkEnv pkgs.python310 { }; - ibisDevEnv311 = mkEnv pkgs.python311 { }; - ibisDevEnv312 = mkEnv pkgs.python312 { }; - - ibisSmallDevEnv = mkEnv pkgs.python312 { - deps = { - ibis-framework = [ "dev" ]; - }; - }; + ibis310 = mkEnv pkgs.python310; + ibis311 = mkEnv pkgs.python311; + ibis312 = mkEnv pkgs.python312; + ibis313 = mkEnv pkgs.python313; + + ibisDevEnv310 = mkDevEnv pkgs.python310; + ibisDevEnv311 = mkDevEnv pkgs.python311; + ibisDevEnv312 = mkDevEnv pkgs.python312; + ibisDevEnv313 = mkDevEnv pkgs.python313; + + ibisSmallDevEnv = mkEnv' + { + deps = { + ibis-framework = [ "dev" ]; + }; + editable = false; + } + pkgs.python313; duckdb = super.duckdb.overrideAttrs ( _: lib.optionalAttrs (stdenv.isAarch64 && stdenv.isLinux) { @@ -110,7 +156,7 @@ in gen-examples = pkgs.writeShellApplication { name = "gen-examples"; runtimeInputs = [ - pkgs.ibisDevEnv312 + pkgs.ibisDevEnv313 (pkgs.rWrapper.override { packages = with pkgs.rPackages; [ Lahman diff --git a/nix/pyproject-overrides.nix b/nix/pyproject-overrides.nix index cde2a9780207a..c9c8bfffc1566 100644 --- a/nix/pyproject-overrides.nix +++ b/nix/pyproject-overrides.nix @@ -29,6 +29,10 @@ let tomli.flit-core = [ ]; toolz.setuptools = [ ]; typing-extensions.flit-core = [ ]; + debugpy.setuptools = [ ]; + google-crc32c.setuptools = [ ]; + lz4.setuptools = [ ]; + snowflake-connector-python.setuptools = [ ]; } // lib.optionalAttrs stdenv.hostPlatform.isDarwin { duckdb = { setuptools = [ ]; @@ -38,15 +42,23 @@ let }; in (lib.optionalAttrs stdenv.hostPlatform.isDarwin { - pyarrow = prev.pyarrow.overrideAttrs (attrs: { + pyproj = prev.pyproj.overrideAttrs (attrs: { nativeBuildInputs = attrs.nativeBuildInputs or [ ] ++ [ final.setuptools - final.setuptools-scm final.cython - final.numpy - pkgs.cmake - pkgs.arrow-cpp + pkgs.proj ]; + PROJ_DIR = "${lib.getBin pkgs.proj}"; + PROJ_INCDIR = "${lib.getDev pkgs.proj}"; + }); + + psygnal = prev.psygnal.overrideAttrs (_: { + src = pkgs.fetchFromGitHub { + owner = "pyapp-kit"; + repo = prev.psygnal.pname; + rev = "refs/tags/v${prev.psygnal.version}"; + hash = "sha256-eGJWtmw2Ps3jII4T8E6s3djzxfqcSdyPemvejal0cn4="; + }; }); }) // lib.mapAttrs (name: spec: addBuildSystems prev.${name} spec) buildSystemOverrides // { mysqlclient = prev.mysqlclient.overrideAttrs (attrs: { diff --git a/nix/quarto/default.nix b/nix/quarto/default.nix index 9c8bd0af7646c..ea10b5d8dc3a4 100644 --- a/nix/quarto/default.nix +++ b/nix/quarto/default.nix @@ -7,24 +7,29 @@ , rWrapper , rPackages , autoPatchelfHook +, libgcc }: let - platforms = { - "x86_64-linux" = "linux-amd64"; - "aarch64-linux" = "linux-arm64"; - "aarch64-darwin" = "macos"; + platforms = rec { + x86_64-linux = "linux-amd64"; + aarch64-linux = "linux-arm64"; + aarch64-darwin = "macos"; + x86_64-darwin = aarch64-darwin; }; - shas = { - "x86_64-linux" = "sha256-mVoFBQJJHGn5ZbwOtamshEQl9FzmRVEBye3bBXFUlUI="; - "aarch64-linux" = "sha256-TNik4+OdDqGwArw9wkrq4wNHt6tGgYo32V9KNPSsPWo="; - "aarch64-darwin" = "sha256-fjcmyVyPSHyHBICjpweuCnGtMAAlPNNzBMHEk+2emBA="; + shas = rec { + x86_64-linux = "sha256-15fHlnE6V8FNgRX0mkXWJqFkeGlwlqBCHy0tmA5fnUo="; + aarch64-linux = "sha256-yzzaMnKyeEGGI3Col7iD6FAF3a6bXlfsE8EHmNRu4LY="; + aarch64-darwin = "sha256-W0IvOWdW7g7iaJcK6FF3X+1+EAWuqYUA1Zt/Es2aThY="; + # hashes are the same for both macos architectures, because the packages + # are identical + x86_64-darwin = aarch64-darwin; }; inherit (stdenv.hostPlatform) system; in stdenv.mkDerivation rec { pname = "quarto"; - version = "1.6.32"; + version = "1.6.39"; src = fetchurl { url = "https://github.com/quarto-dev/quarto-cli/releases/download/v${version}/quarto-${version}-${platforms.${system}}.tar.gz"; sha256 = shas.${system}; @@ -34,7 +39,10 @@ stdenv.mkDerivation rec { sourceRoot = lib.optionalString stdenv.isDarwin "quarto-${version}"; unpackCmd = lib.optionalString stdenv.isDarwin "tar xzf $curSrc --directory=$sourceRoot"; - nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ] ++ [ makeWrapper ]; + nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ] ++ [ + makeWrapper + libgcc + ]; preFixup = let @@ -69,7 +77,7 @@ stdenv.mkDerivation rec { homepage = "https://quarto.org/"; changelog = "https://github.com/quarto-dev/quarto-cli/releases/tag/v${version}"; license = licenses.gpl2Plus; - platforms = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; + platforms = builtins.attrNames platforms; sourceProvenance = with sourceTypes; [ binaryNativeCode binaryBytecode ]; }; } diff --git a/nix/tests.nix b/nix/tests.nix new file mode 100644 index 0000000000000..eaa8cbceeca5d --- /dev/null +++ b/nix/tests.nix @@ -0,0 +1,41 @@ +{ pkgs, deps }: +let + inherit (pkgs) stdenv; +in +final: prev: { + ibis-framework = prev.ibis-framework.overrideAttrs (old: { + passthru = old.passthru // { + tests = old.passthru.tests or { } // { + pytest = + let + pythonEnv = final.mkVirtualEnv "ibis-framework-test-env" (deps // { + # Use default dependencies from overlay.nix + enabled tests group. + ibis-framework = deps.ibis-framework or [ ] ++ [ "tests" ]; + }); + in + stdenv.mkDerivation { + name = "ibis-framework-test"; + nativeCheckInputs = [ pythonEnv pkgs.graphviz-nox ]; + src = ../.; + doCheck = true; + preCheck = '' + set -euo pipefail + + ln -s ${pkgs.ibisTestingData} $PWD/ci/ibis-testing-data + + HOME="$(mktemp -d)" + export HOME + ''; + checkPhase = '' + runHook preCheck + pytest -m datafusion + pytest -m 'core or duckdb or sqlite or polars' --numprocesses $NIX_BUILD_CORES --dist loadgroup + runHook postCheck + ''; + + installPhase = "mkdir $out"; + }; + }; + }; + }); +} diff --git a/pyproject.toml b/pyproject.toml index f4e58d2e3a684..9ec602030778e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "parsy>=2,<3", "python-dateutil>=2.8.2,<3", "pytz>=2022.7", - "sqlglot>=23.4,<25.30", + "sqlglot>=23.4,<26.1", "toolz>=0.11,<2", "typing-extensions>=4.3.0,<5", ] @@ -47,7 +47,7 @@ bigquery = [ "db-dtypes>=0.3,<2", "google-cloud-bigquery>=3,<4", "google-cloud-bigquery-storage>=2,<3", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "pydata-google-auth>=1.4.0,<2", "numpy>=1.23.2,<3", @@ -56,7 +56,7 @@ bigquery = [ ] clickhouse = [ "clickhouse-connect[arrow,pandas,numpy]>=0.5.23,<1", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -64,15 +64,15 @@ clickhouse = [ ] databricks = [ "databricks-sql-connector-core>=4,<5", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", "rich>=12.4.4,<14", ] datafusion = [ - "datafusion>=0.6,<43", - "pyarrow>=10.0.1,<19", + "datafusion>=0.6,<44", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -80,7 +80,7 @@ datafusion = [ ] druid = [ "pydruid>=0.6.7,<1", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -88,7 +88,7 @@ druid = [ ] duckdb = [ "duckdb>=0.10,<1.2", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -97,14 +97,14 @@ duckdb = [ ] exasol = [ "pyexasol>=0.25.2,<1", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", "rich>=12.4.4,<14", ] flink = [ - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -112,7 +112,7 @@ flink = [ ] impala = [ "impyla>=0.17,<1", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -120,7 +120,7 @@ impala = [ ] mssql = [ "pyodbc>=4.0.39,<6", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -128,7 +128,7 @@ mssql = [ ] mysql = [ "mysqlclient>=2.2.4,<3", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -137,7 +137,7 @@ mysql = [ oracle = [ "oracledb>=1.3.1,<3", "packaging>=21.3,<25", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -146,7 +146,7 @@ oracle = [ polars = [ "polars>=1,<2", "packaging>=21.3,<25", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -154,7 +154,7 @@ polars = [ ] postgres = [ "psycopg2>=2.8.4,<3", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -163,7 +163,7 @@ postgres = [ pyspark = [ "pyspark>=3.3.3,<4", "packaging>=21.3,<25", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -171,7 +171,7 @@ pyspark = [ ] snowflake = [ "snowflake-connector-python>=3.0.2,<4,!=3.3.0b1", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -179,7 +179,7 @@ snowflake = [ ] sqlite = [ "regex>=2021.7.6", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -187,7 +187,7 @@ sqlite = [ ] risingwave = [ "psycopg2>=2.8.4,<3", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -195,7 +195,7 @@ risingwave = [ ] trino = [ "trino>=0.321,<1", - "pyarrow>=10.0.1,<19", + "pyarrow>=10.0.1", "pyarrow-hotfix>=0.4,<1", "numpy>=1.23.2,<3", "pandas>=1.5.3,<3", @@ -228,7 +228,7 @@ dev = [ tests = [ "cloudpickle", "filelock>=3.7.0,<4", - "fsspec<2024.10.1", + "fsspec<2024.12.1", "hypothesis>=6.58.0,<7", "packaging>=21.3,<25", "pytest>=8.2.0,<9", @@ -443,7 +443,6 @@ markers = [ line-length = 88 respect-gitignore = true exclude = [".direnv", "result-*", "*_py310.py", "decompiled.py", "out_tpch.py"] -target-version = "py310" [tool.ruff.lint] select = [ diff --git a/requirements-dev.txt b/requirements-dev.txt index 4afdc0b6c38d5..bad6b06b54278 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,26 +1,26 @@ -e . -aiohappyeyeballs==2.4.3 -aiohttp==3.10.10 -aiosignal==1.3.1 +aiohappyeyeballs==2.4.4 +aiohttp==3.11.11 +aiosignal==1.3.2 alembic==1.14.0 -altair==5.4.1 +altair==5.5.0 annotated-types==0.7.0 -anyio==4.6.2.post1 +anyio==4.7.0 anywidget==0.9.13 appdirs==1.4.4 appnope==0.1.4 ; platform_system == 'Darwin' argon2-cffi==23.1.0 argon2-cffi-bindings==21.2.0 -arro3-compute==0.4.2 -arro3-core==0.4.2 -arro3-io==0.4.2 +arro3-compute==0.4.5 +arro3-core==0.4.5 +arro3-io==0.4.5 arrow==1.3.0 asn1crypto==1.5.1 -asttokens==2.4.1 +asttokens==3.0.0 async-lru==2.0.4 -async-timeout==4.0.3 ; python_full_version < '3.11' +async-timeout==5.0.1 ; python_full_version < '3.11' atpublic==5.0 -attrs==24.2.0 +attrs==24.3.0 babel==2.16.0 beartype==0.19.0 beautifulsoup4==4.12.3 @@ -28,92 +28,92 @@ bitarray==3.0.0 black==24.10.0 bleach==6.2.0 cachetools==5.5.0 -certifi==2024.8.30 +certifi==2024.12.14 cffi==1.17.1 cfgv==3.4.0 chardet==5.2.0 charset-normalizer==3.4.0 -click==8.1.7 -clickhouse-connect==0.8.6 +click==8.1.8 +clickhouse-connect==0.8.11 cloudpickle==3.1.0 codespell==2.3.0 colorama==0.4.6 comm==0.2.2 -contourpy==1.3.0 -coverage==7.6.4 -cryptography==43.0.3 +contourpy==1.3.1 +coverage==7.6.9 +cryptography==44.0.0 cycler==0.12.1 databricks-sql-connector-core==4.0.1 -datafusion==42.0.0 -db-dtypes==1.3.0 -debugpy==1.8.8 +datafusion==43.1.0 +db-dtypes==1.3.1 +debugpy==1.8.11 decorator==5.1.1 defusedxml==0.7.1 -deltalake==0.21.0 +deltalake==0.22.3 distlib==0.3.9 doit==0.36.0 duckdb==1.1.3 -dunamai==1.22.0 +dunamai==1.23.0 et-xmlfile==2.0.0 exceptiongroup==1.2.2 ; python_full_version < '3.11' execnet==2.1.1 executing==2.1.0 -fastjsonschema==2.20.0 +fastjsonschema==2.21.1 filelock==3.16.1 -fonttools==4.54.1 +fonttools==4.55.3 fqdn==1.5.1 frozenlist==1.5.0 -fsspec==2024.10.0 -gcsfs==2024.10.0 +fsspec==2024.12.0 +gcsfs==2024.12.0 geoarrow-types==0.2.0 geopandas==1.0.1 -google-api-core==2.22.0 -google-auth==2.36.0 +google-api-core==2.24.0 +google-auth==2.37.0 google-auth-oauthlib==1.2.1 -google-cloud-bigquery==3.26.0 +google-cloud-bigquery==3.27.0 google-cloud-bigquery-storage==2.27.0 google-cloud-core==2.4.1 -google-cloud-storage==2.18.2 +google-cloud-storage==2.19.0 google-crc32c==1.6.0 google-resumable-media==2.7.2 -googleapis-common-protos==1.65.0 +googleapis-common-protos==1.66.0 graphviz==0.20.3 greenlet==3.1.1 ; (python_full_version < '3.13' and platform_machine == 'AMD64') or (python_full_version < '3.13' and platform_machine == 'WIN32') or (python_full_version < '3.13' and platform_machine == 'aarch64') or (python_full_version < '3.13' and platform_machine == 'amd64') or (python_full_version < '3.13' and platform_machine == 'ppc64le') or (python_full_version < '3.13' and platform_machine == 'win32') or (python_full_version < '3.13' and platform_machine == 'x86_64') griffe==0.49.0 -grpcio==1.67.1 -grpcio-status==1.67.1 +grpcio==1.68.1 +grpcio-status==1.68.1 h11==0.14.0 -httpcore==1.0.6 -httpx==0.27.2 +httpcore==1.0.7 +httpx==0.28.1 humanize==4.11.0 -hypothesis==6.118.7 -identify==2.6.2 +hypothesis==6.123.0 +identify==2.6.3 idna==3.10 importlib-metadata==8.5.0 importlib-resources==6.4.5 impyla==0.19.0 iniconfig==2.0.0 ipykernel==6.29.5 -ipython==8.29.0 +ipython==8.31.0 ipywidgets==8.1.5 isoduration==20.11.0 -itables==2.2.3 +itables==2.2.4 jedi==0.19.2 -jinja2==3.1.4 +jinja2==3.1.5 joblib==1.4.2 -json5==0.9.27 +json5==0.10.0 jsonpointer==3.0.0 jsonschema==4.23.0 jsonschema-specifications==2024.10.1 -jupyter-cache==1.0.0 +jupyter-cache==1.0.1 jupyter-client==8.6.3 jupyter-core==5.7.2 -jupyter-events==0.10.0 +jupyter-events==0.11.0 jupyter-lsp==2.2.5 -jupyter-server==2.14.2 +jupyter-server==2.15.0 jupyter-server-terminals==0.5.3 -jupyterlab==4.3.0 -jupyterlab-night==0.4.6 +jupyterlab==4.3.4 +jupyterlab-night==0.5.1 jupyterlab-pygments==0.3.0 jupyterlab-server==2.27.3 jupyterlab-widgets==3.0.13 @@ -122,28 +122,28 @@ jupyterlite-pyodide-kernel==0.3.2 kiwisolver==1.4.7 lonboard==0.10.3 lz4==4.3.3 -mako==1.3.6 +mako==1.3.8 markdown-it-py==3.0.0 markupsafe==3.0.2 -matplotlib==3.9.2 +matplotlib==3.10.0 matplotlib-inline==0.1.7 mdurl==0.1.2 mistune==3.0.2 -mizani==0.13.0 +mizani==0.13.1 multidict==6.1.0 mypy-extensions==1.0.0 -mysqlclient==2.2.5 -narwhals==1.13.3 -nbclient==0.10.0 +mysqlclient==2.2.6 +narwhals==1.19.1 +nbclient==0.10.2 nbconvert==7.16.4 nbformat==5.10.4 nest-asyncio==1.6.0 nodeenv==1.9.1 notebook-shim==0.2.4 -numpy==2.1.3 +numpy==2.2.1 oauthlib==3.2.2 openpyxl==3.1.5 -oracledb==2.5.0 +oracledb==2.5.1 overrides==7.7.0 packaging==24.2 pandas==2.2.3 @@ -151,25 +151,25 @@ pandocfilters==1.5.1 parso==0.8.4 parsy==2.1 pathspec==0.12.1 -patsy==0.5.6 +patsy==1.0.1 pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' pillow==11.0.0 -pins==0.8.6 -pkginfo==1.11.2 +pins==0.8.7 +pkginfo==1.12.0 platformdirs==4.3.6 plotly==5.24.1 -plotnine==0.14.1 +plotnine==0.14.4 pluggy==1.5.0 -plum-dispatch==2.5.2 -polars==1.12.0 +plum-dispatch==2.5.4 +polars==1.17.1 pprintpp==0.4.0 pre-commit==4.0.1 -prometheus-client==0.21.0 +prometheus-client==0.21.1 prompt-toolkit==3.0.48 -propcache==0.2.0 +propcache==0.2.1 proto-plus==1.25.0 -protobuf==5.28.3 -psutil==6.1.0 +protobuf==5.29.2 +psutil==6.1.1 psycopg2==2.9.10 psygnal==0.11.1 ptyprocess==0.7.0 ; os_name != 'nt' or (sys_platform != 'emscripten' and sys_platform != 'win32') @@ -177,26 +177,26 @@ pure-eval==0.2.3 pure-sasl==0.6.2 py-cpuinfo==9.0.0 py4j==0.10.9.7 -pyarrow==18.0.0 +pyarrow==18.1.0 pyarrow-hotfix==0.6 pyasn1==0.6.1 pyasn1-modules==0.4.1 pycparser==2.22 -pydantic==2.9.2 -pydantic-core==2.23.4 -pydata-google-auth==1.8.2 +pydantic==2.10.4 +pydantic-core==2.27.2 +pydata-google-auth==1.9.0 pydruid==0.6.9 pyexasol==0.27.0 pygments==2.18.0 pyinstrument==5.0.0 -pyjwt==2.9.0 +pyjwt==2.10.1 pyodbc==5.2.0 pyogrio==0.10.0 -pyopenssl==24.2.1 +pyopenssl==24.3.0 pyparsing==3.2.0 pyproj==3.7.0 -pyspark==3.5.3 -pytest==8.3.3 +pyspark==3.5.4 +pytest==8.3.4 pytest-benchmark==5.1.0 pytest-clarity==1.0.1 pytest-cov==6.0.0 @@ -209,7 +209,7 @@ pytest-snapshot==0.9.0 pytest-timeout==2.3.1 pytest-xdist==3.6.1 python-dateutil==2.9.0.post0 -python-json-logger==2.0.7 +python-json-logger==3.2.1 pytz==2024.2 pywin32==308 ; platform_python_implementation != 'PyPy' and sys_platform == 'win32' pywinpty==2.0.14 ; os_name == 'nt' @@ -223,23 +223,23 @@ requests-oauthlib==2.0.0 rfc3339-validator==0.1.4 rfc3986-validator==0.1.1 rich==13.9.4 -rpds-py==0.21.0 +rpds-py==0.22.3 rsa==4.9 -ruff==0.7.3 -scikit-learn==1.5.2 +ruff==0.8.4 +scikit-learn==1.6.0 scipy==1.14.1 seaborn==0.13.2 send2trash==1.8.3 -setuptools==75.3.0 +setuptools==75.6.0 shapely==2.0.6 -six==1.16.0 +six==1.17.0 sniffio==1.3.1 -snowflake-connector-python==3.12.3 +snowflake-connector-python==3.12.4 sortedcontainers==2.4.0 soupsieve==2.6 -sphobjinv==2.3.1.1 +sphobjinv==2.3.1.2 sqlalchemy==2.0.36 -sqlglot==25.29.0 +sqlglot==26.0.1 stack-data==0.6.3 statsmodels==0.14.4 tabulate==0.9.0 @@ -249,20 +249,20 @@ threadpoolctl==3.5.0 thrift==0.16.0 thrift-sasl==0.4.3 tinycss2==1.4.0 -tomli==2.0.2 +tomli==2.2.1 tomlkit==0.13.2 toolz==1.0.0 -tornado==6.4.1 -tqdm==4.67.0 +tornado==6.4.2 +tqdm==4.67.1 traitlets==5.14.3 -trino==0.330.0 -types-python-dateutil==2.9.0.20241003 +trino==0.331.0 +types-python-dateutil==2.9.0.20241206 typing-extensions==4.12.2 tzdata==2024.2 tzlocal==5.2 uri-template==1.3.0 -urllib3==2.2.3 -virtualenv==20.27.1 +urllib3==2.3.0 +virtualenv==20.28.0 watchdog==6.0.0 wcwidth==0.2.13 webcolors==24.11.1 @@ -271,6 +271,6 @@ websocket-client==1.8.0 werkzeug==3.1.3 widgetsnbextension==4.0.13 xxhash==3.5.0 -yarl==1.17.1 +yarl==1.18.3 zipp==3.21.0 zstandard==0.23.0 diff --git a/uv.lock b/uv.lock index ab8d2b1e9b646..c6a19f590dfd6 100644 --- a/uv.lock +++ b/uv.lock @@ -9,16 +9,16 @@ resolution-markers = [ [[package]] name = "aiohappyeyeballs" -version = "2.4.3" +version = "2.4.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/69/2f6d5a019bd02e920a3417689a89887b39ad1e350b562f9955693d900c40/aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586", size = 21809 } +sdist = { url = "https://files.pythonhosted.org/packages/7f/55/e4373e888fdacb15563ef6fa9fa8c8252476ea071e96fb46defac9f18bf2/aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745", size = 21977 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/d8/120cd0fe3e8530df0539e71ba9683eade12cae103dd7543e50d15f737917/aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572", size = 14742 }, + { url = "https://files.pythonhosted.org/packages/b9/74/fbb6559de3607b3300b9be3cc64e97548d55678e44623db17820dbd20002/aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8", size = 14756 }, ] [[package]] name = "aiohttp" -version = "3.10.10" +version = "3.11.11" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, @@ -27,82 +27,83 @@ dependencies = [ { name = "attrs" }, { name = "frozenlist" }, { name = "multidict" }, + { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/17/7e/16e57e6cf20eb62481a2f9ce8674328407187950ccc602ad07c685279141/aiohttp-3.10.10.tar.gz", hash = "sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a", size = 7542993 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/dd/3d40c0e67e79c5c42671e3e268742f1ff96c6573ca43823563d01abd9475/aiohttp-3.10.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be7443669ae9c016b71f402e43208e13ddf00912f47f623ee5994e12fc7d4b3f", size = 586969 }, - { url = "https://files.pythonhosted.org/packages/75/64/8de41b5555e5b43ef6d4ed1261891d33fe45ecc6cb62875bfafb90b9ab93/aiohttp-3.10.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b06b7843929e41a94ea09eb1ce3927865387e3e23ebe108e0d0d09b08d25be9", size = 399367 }, - { url = "https://files.pythonhosted.org/packages/96/36/27bd62ea7ce43906d1443a73691823fc82ffb8fa03276b0e2f7e1037c286/aiohttp-3.10.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:333cf6cf8e65f6a1e06e9eb3e643a0c515bb850d470902274239fea02033e9a8", size = 390720 }, - { url = "https://files.pythonhosted.org/packages/e8/4d/d516b050d811ce0dd26325c383013c104ffa8b58bd361b82e52833f68e78/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:274cfa632350225ce3fdeb318c23b4a10ec25c0e2c880eff951a3842cf358ac1", size = 1228820 }, - { url = "https://files.pythonhosted.org/packages/53/94/964d9327a3e336d89aad52260836e4ec87fdfa1207176550fdf384eaffe7/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9e5e4a85bdb56d224f412d9c98ae4cbd032cc4f3161818f692cd81766eee65a", size = 1264616 }, - { url = "https://files.pythonhosted.org/packages/0c/20/70ce17764b685ca8f5bf4d568881b4e1f1f4ea5e8170f512fdb1a33859d2/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b606353da03edcc71130b52388d25f9a30a126e04caef1fd637e31683033abd", size = 1298402 }, - { url = "https://files.pythonhosted.org/packages/d1/d1/5248225ccc687f498d06c3bca5af2647a361c3687a85eb3aedcc247ee1aa/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab5a5a0c7a7991d90446a198689c0535be89bbd6b410a1f9a66688f0880ec026", size = 1222205 }, - { url = "https://files.pythonhosted.org/packages/f2/a3/9296b27cc5d4feadf970a14d0694902a49a985f3fae71b8322a5f77b0baa/aiohttp-3.10.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:578a4b875af3e0daaf1ac6fa983d93e0bbfec3ead753b6d6f33d467100cdc67b", size = 1193804 }, - { url = "https://files.pythonhosted.org/packages/d9/07/f3760160feb12ac51a6168a6da251a4a8f2a70733d49e6ceb9b3e6ee2f03/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8105fd8a890df77b76dd3054cddf01a879fc13e8af576805d667e0fa0224c35d", size = 1193544 }, - { url = "https://files.pythonhosted.org/packages/7e/4c/93a70f9a4ba1c30183a6dd68bfa79cddbf9a674f162f9c62e823a74a5515/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3bcd391d083f636c06a68715e69467963d1f9600f85ef556ea82e9ef25f043f7", size = 1193047 }, - { url = "https://files.pythonhosted.org/packages/ff/a3/36a1e23ff00c7a0cd696c5a28db05db25dc42bfc78c508bd78623ff62a4a/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fbc6264158392bad9df19537e872d476f7c57adf718944cc1e4495cbabf38e2a", size = 1247201 }, - { url = "https://files.pythonhosted.org/packages/55/ae/95399848557b98bb2c402d640b2276ce3a542b94dba202de5a5a1fe29abe/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e48d5021a84d341bcaf95c8460b152cfbad770d28e5fe14a768988c461b821bc", size = 1264102 }, - { url = "https://files.pythonhosted.org/packages/38/f5/02e5c72c1b60d7cceb30b982679a26167e84ac029fd35a93dd4da52c50a3/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2609e9ab08474702cc67b7702dbb8a80e392c54613ebe80db7e8dbdb79837c68", size = 1215760 }, - { url = "https://files.pythonhosted.org/packages/30/17/1463840bad10d02d0439068f37ce5af0b383884b0d5838f46fb027e233bf/aiohttp-3.10.10-cp310-cp310-win32.whl", hash = "sha256:84afcdea18eda514c25bc68b9af2a2b1adea7c08899175a51fe7c4fb6d551257", size = 362678 }, - { url = "https://files.pythonhosted.org/packages/dd/01/a0ef707d93e867a43abbffee3a2cdf30559910750b9176b891628c7ad074/aiohttp-3.10.10-cp310-cp310-win_amd64.whl", hash = "sha256:9c72109213eb9d3874f7ac8c0c5fa90e072d678e117d9061c06e30c85b4cf0e6", size = 381097 }, - { url = "https://files.pythonhosted.org/packages/72/31/3c351d17596194e5a38ef169a4da76458952b2497b4b54645b9d483cbbb0/aiohttp-3.10.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f", size = 586501 }, - { url = "https://files.pythonhosted.org/packages/a4/a8/a559d09eb08478cdead6b7ce05b0c4a133ba27fcdfa91e05d2e62867300d/aiohttp-3.10.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb", size = 398993 }, - { url = "https://files.pythonhosted.org/packages/c5/47/7736d4174613feef61d25332c3bd1a4f8ff5591fbd7331988238a7299485/aiohttp-3.10.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871", size = 390647 }, - { url = "https://files.pythonhosted.org/packages/27/21/e9ba192a04b7160f5a8952c98a1de7cf8072ad150fa3abd454ead1ab1d7f/aiohttp-3.10.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3935f82f6f4a3820270842e90456ebad3af15810cf65932bd24da4463bc0a4c", size = 1306481 }, - { url = "https://files.pythonhosted.org/packages/cf/50/f364c01c8d0def1dc34747b2470969e216f5a37c7ece00fe558810f37013/aiohttp-3.10.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:413251f6fcf552a33c981c4709a6bba37b12710982fec8e558ae944bfb2abd38", size = 1344652 }, - { url = "https://files.pythonhosted.org/packages/1d/c2/74f608e984e9b585649e2e83883facad6fa3fc1d021de87b20cc67e8e5ae/aiohttp-3.10.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1720b4f14c78a3089562b8875b53e36b51c97c51adc53325a69b79b4b48ebcb", size = 1378498 }, - { url = "https://files.pythonhosted.org/packages/9f/a7/05a48c7c0a7a80a5591b1203bf1b64ca2ed6a2050af918d09c05852dc42b/aiohttp-3.10.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:679abe5d3858b33c2cf74faec299fda60ea9de62916e8b67e625d65bf069a3b7", size = 1292718 }, - { url = "https://files.pythonhosted.org/packages/7d/78/a925655018747e9790350180330032e27d6e0d7ed30bde545fae42f8c49c/aiohttp-3.10.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79019094f87c9fb44f8d769e41dbb664d6e8fcfd62f665ccce36762deaa0e911", size = 1251776 }, - { url = "https://files.pythonhosted.org/packages/47/9d/85c6b69f702351d1236594745a4fdc042fc43f494c247a98dac17e004026/aiohttp-3.10.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2fb38c2ed905a2582948e2de560675e9dfbee94c6d5ccdb1301c6d0a5bf092", size = 1271716 }, - { url = "https://files.pythonhosted.org/packages/7f/a7/55fc805ff9b14af818903882ece08e2235b12b73b867b521b92994c52b14/aiohttp-3.10.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a3f00003de6eba42d6e94fabb4125600d6e484846dbf90ea8e48a800430cc142", size = 1266263 }, - { url = "https://files.pythonhosted.org/packages/1f/ec/d2be2ca7b063e4f91519d550dbc9c1cb43040174a322470deed90b3d3333/aiohttp-3.10.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1bbb122c557a16fafc10354b9d99ebf2f2808a660d78202f10ba9d50786384b9", size = 1321617 }, - { url = "https://files.pythonhosted.org/packages/c9/a3/b29f7920e1cd0a9a68a45dd3eb16140074d2efb1518d2e1f3e140357dc37/aiohttp-3.10.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30ca7c3b94708a9d7ae76ff281b2f47d8eaf2579cd05971b5dc681db8caac6e1", size = 1339227 }, - { url = "https://files.pythonhosted.org/packages/8a/81/34b67235c47e232d807b4bbc42ba9b927c7ce9476872372fddcfd1e41b3d/aiohttp-3.10.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:df9270660711670e68803107d55c2b5949c2e0f2e4896da176e1ecfc068b974a", size = 1299068 }, - { url = "https://files.pythonhosted.org/packages/04/1f/26a7fe11b6ad3184f214733428353c89ae9fe3e4f605a657f5245c5e720c/aiohttp-3.10.10-cp311-cp311-win32.whl", hash = "sha256:aafc8ee9b742ce75044ae9a4d3e60e3d918d15a4c2e08a6c3c3e38fa59b92d94", size = 362223 }, - { url = "https://files.pythonhosted.org/packages/10/91/85dcd93f64011434359ce2666bece981f08d31bc49df33261e625b28595d/aiohttp-3.10.10-cp311-cp311-win_amd64.whl", hash = "sha256:362f641f9071e5f3ee6f8e7d37d5ed0d95aae656adf4ef578313ee585b585959", size = 381576 }, - { url = "https://files.pythonhosted.org/packages/ae/99/4c5aefe5ad06a1baf206aed6598c7cdcbc7c044c46801cd0d1ecb758cae3/aiohttp-3.10.10-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9294bbb581f92770e6ed5c19559e1e99255e4ca604a22c5c6397b2f9dd3ee42c", size = 583536 }, - { url = "https://files.pythonhosted.org/packages/a9/36/8b3bc49b49cb6d2da40ee61ff15dbcc44fd345a3e6ab5bb20844df929821/aiohttp-3.10.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a8fa23fe62c436ccf23ff930149c047f060c7126eae3ccea005f0483f27b2e28", size = 395693 }, - { url = "https://files.pythonhosted.org/packages/e1/77/0aa8660dcf11fa65d61712dbb458c4989de220a844bd69778dff25f2d50b/aiohttp-3.10.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5c6a5b8c7926ba5d8545c7dd22961a107526562da31a7a32fa2456baf040939f", size = 390898 }, - { url = "https://files.pythonhosted.org/packages/38/d2/b833d95deb48c75db85bf6646de0a697e7fb5d87bd27cbade4f9746b48b1/aiohttp-3.10.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:007ec22fbc573e5eb2fb7dec4198ef8f6bf2fe4ce20020798b2eb5d0abda6138", size = 1312060 }, - { url = "https://files.pythonhosted.org/packages/aa/5f/29fd5113165a0893de8efedf9b4737e0ba92dfcd791415a528f947d10299/aiohttp-3.10.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9627cc1a10c8c409b5822a92d57a77f383b554463d1884008e051c32ab1b3742", size = 1350553 }, - { url = "https://files.pythonhosted.org/packages/ad/cc/f835f74b7d344428469200105236d44606cfa448be1e7c95ca52880d9bac/aiohttp-3.10.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:50edbcad60d8f0e3eccc68da67f37268b5144ecc34d59f27a02f9611c1d4eec7", size = 1392646 }, - { url = "https://files.pythonhosted.org/packages/bf/fe/1332409d845ca601893bbf2d76935e0b93d41686e5f333841c7d7a4a770d/aiohttp-3.10.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a45d85cf20b5e0d0aa5a8dca27cce8eddef3292bc29d72dcad1641f4ed50aa16", size = 1306310 }, - { url = "https://files.pythonhosted.org/packages/e4/a1/25a7633a5a513278a9892e333501e2e69c83e50be4b57a62285fb7a008c3/aiohttp-3.10.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b00807e2605f16e1e198f33a53ce3c4523114059b0c09c337209ae55e3823a8", size = 1260255 }, - { url = "https://files.pythonhosted.org/packages/f2/39/30eafe89e0e2a06c25e4762844c8214c0c0cd0fd9ffc3471694a7986f421/aiohttp-3.10.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f2d4324a98062be0525d16f768a03e0bbb3b9fe301ceee99611dc9a7953124e6", size = 1271141 }, - { url = "https://files.pythonhosted.org/packages/5b/fc/33125df728b48391ef1fcb512dfb02072158cc10d041414fb79803463020/aiohttp-3.10.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:438cd072f75bb6612f2aca29f8bd7cdf6e35e8f160bc312e49fbecab77c99e3a", size = 1280244 }, - { url = "https://files.pythonhosted.org/packages/3b/61/e42bf2c2934b5caa4e2ec0b5e5fd86989adb022b5ee60c2572a9d77cf6fe/aiohttp-3.10.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:baa42524a82f75303f714108fea528ccacf0386af429b69fff141ffef1c534f9", size = 1316805 }, - { url = "https://files.pythonhosted.org/packages/18/32/f52a5e2ae9ad3bba10e026a63a7a23abfa37c7d97aeeb9004eaa98df3ce3/aiohttp-3.10.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a7d8d14fe962153fc681f6366bdec33d4356f98a3e3567782aac1b6e0e40109a", size = 1343930 }, - { url = "https://files.pythonhosted.org/packages/05/be/6a403b464dcab3631fe8e27b0f1d906d9e45c5e92aca97ee007e5a895560/aiohttp-3.10.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1277cd707c465cd09572a774559a3cc7c7a28802eb3a2a9472588f062097205", size = 1306186 }, - { url = "https://files.pythonhosted.org/packages/8e/fd/bb50fe781068a736a02bf5c7ad5f3ab53e39f1d1e63110da6d30f7605edc/aiohttp-3.10.10-cp312-cp312-win32.whl", hash = "sha256:59bb3c54aa420521dc4ce3cc2c3fe2ad82adf7b09403fa1f48ae45c0cbde6628", size = 359289 }, - { url = "https://files.pythonhosted.org/packages/70/9e/5add7e240f77ef67c275c82cc1d08afbca57b77593118c1f6e920ae8ad3f/aiohttp-3.10.10-cp312-cp312-win_amd64.whl", hash = "sha256:0e1b370d8007c4ae31ee6db7f9a2fe801a42b146cec80a86766e7ad5c4a259cf", size = 379313 }, - { url = "https://files.pythonhosted.org/packages/b1/eb/618b1b76c7fe8082a71c9d62e3fe84c5b9af6703078caa9ec57850a12080/aiohttp-3.10.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ad7593bb24b2ab09e65e8a1d385606f0f47c65b5a2ae6c551db67d6653e78c28", size = 576114 }, - { url = "https://files.pythonhosted.org/packages/aa/37/3126995d7869f8b30d05381b81a2d4fb4ec6ad313db788e009bc6d39c211/aiohttp-3.10.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1eb89d3d29adaf533588f209768a9c02e44e4baf832b08118749c5fad191781d", size = 391901 }, - { url = "https://files.pythonhosted.org/packages/3e/f2/8fdfc845be1f811c31ceb797968523813f8e1263ee3e9120d61253f6848f/aiohttp-3.10.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3fe407bf93533a6fa82dece0e74dbcaaf5d684e5a51862887f9eaebe6372cd79", size = 387418 }, - { url = "https://files.pythonhosted.org/packages/60/d5/33d2061d36bf07e80286e04b7e0a4de37ce04b5ebfed72dba67659a05250/aiohttp-3.10.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aed5155f819873d23520919e16703fc8925e509abbb1a1491b0087d1cd969e", size = 1287073 }, - { url = "https://files.pythonhosted.org/packages/00/52/affb55be16a4747740bd630b4c002dac6c5eac42f9bb64202fc3cf3f1930/aiohttp-3.10.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f05e9727ce409358baa615dbeb9b969db94324a79b5a5cea45d39bdb01d82e6", size = 1323612 }, - { url = "https://files.pythonhosted.org/packages/94/f2/cddb69b975387daa2182a8442566971d6410b8a0179bb4540d81c97b1611/aiohttp-3.10.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dffb610a30d643983aeb185ce134f97f290f8935f0abccdd32c77bed9388b42", size = 1368406 }, - { url = "https://files.pythonhosted.org/packages/c1/e4/afba7327da4d932da8c6e29aecaf855f9d52dace53ac15bfc8030a246f1b/aiohttp-3.10.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa6658732517ddabe22c9036479eabce6036655ba87a0224c612e1ae6af2087e", size = 1282761 }, - { url = "https://files.pythonhosted.org/packages/9f/6b/364856faa0c9031ea76e24ef0f7fef79cddd9fa8e7dba9a1771c6acc56b5/aiohttp-3.10.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:741a46d58677d8c733175d7e5aa618d277cd9d880301a380fd296975a9cdd7bc", size = 1236518 }, - { url = "https://files.pythonhosted.org/packages/46/af/c382846f8356fe64a7b5908bb9b477457aa23b71be7ed551013b7b7d4d87/aiohttp-3.10.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e00e3505cd80440f6c98c6d69269dcc2a119f86ad0a9fd70bccc59504bebd68a", size = 1250344 }, - { url = "https://files.pythonhosted.org/packages/87/53/294f87fc086fd0772d0ab82497beb9df67f0f27a8b3dd5742a2656db2bc6/aiohttp-3.10.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ffe595f10566f8276b76dc3a11ae4bb7eba1aac8ddd75811736a15b0d5311414", size = 1248956 }, - { url = "https://files.pythonhosted.org/packages/86/30/7d746717fe11bdfefb88bb6c09c5fc985d85c4632da8bb6018e273899254/aiohttp-3.10.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdfcf6443637c148c4e1a20c48c566aa694fa5e288d34b20fcdc58507882fed3", size = 1293379 }, - { url = "https://files.pythonhosted.org/packages/48/b9/45d670a834458db67a24258e9139ba61fa3bd7d69b98ecf3650c22806f8f/aiohttp-3.10.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d183cf9c797a5291e8301790ed6d053480ed94070637bfaad914dd38b0981f67", size = 1320108 }, - { url = "https://files.pythonhosted.org/packages/72/8c/804bb2e837a175635d2000a0659eafc15b2e9d92d3d81c8f69e141ecd0b0/aiohttp-3.10.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:77abf6665ae54000b98b3c742bc6ea1d1fb31c394bcabf8b5d2c1ac3ebfe7f3b", size = 1281546 }, - { url = "https://files.pythonhosted.org/packages/89/c0/862e6a9de3d6eeb126cd9d9ea388243b70df9b871ce1a42b193b7a4a77fc/aiohttp-3.10.10-cp313-cp313-win32.whl", hash = "sha256:4470c73c12cd9109db8277287d11f9dd98f77fc54155fc71a7738a83ffcc8ea8", size = 357516 }, - { url = "https://files.pythonhosted.org/packages/ae/63/3e1aee3e554263f3f1011cca50d78a4894ae16ce99bf78101ac3a2f0ef74/aiohttp-3.10.10-cp313-cp313-win_amd64.whl", hash = "sha256:486f7aabfa292719a2753c016cc3a8f8172965cabb3ea2e7f7436c7f5a22a151", size = 376785 }, +sdist = { url = "https://files.pythonhosted.org/packages/fe/ed/f26db39d29cd3cb2f5a3374304c713fe5ab5a0e4c8ee25a0c45cc6adf844/aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e", size = 7669618 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/7d/ff2e314b8f9e0b1df833e2d4778eaf23eae6b8cc8f922495d110ddcbf9e1/aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8", size = 708550 }, + { url = "https://files.pythonhosted.org/packages/09/b8/aeb4975d5bba233d6f246941f5957a5ad4e3def8b0855a72742e391925f2/aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5", size = 468430 }, + { url = "https://files.pythonhosted.org/packages/9c/5b/5b620279b3df46e597008b09fa1e10027a39467387c2332657288e25811a/aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2", size = 455593 }, + { url = "https://files.pythonhosted.org/packages/d8/75/0cdf014b816867d86c0bc26f3d3e3f194198dbf33037890beed629cd4f8f/aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43", size = 1584635 }, + { url = "https://files.pythonhosted.org/packages/df/2f/95b8f4e4dfeb57c1d9ad9fa911ede35a0249d75aa339edd2c2270dc539da/aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f", size = 1632363 }, + { url = "https://files.pythonhosted.org/packages/39/cb/70cf69ea7c50f5b0021a84f4c59c3622b2b3b81695f48a2f0e42ef7eba6e/aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d", size = 1668315 }, + { url = "https://files.pythonhosted.org/packages/2f/cc/3a3fc7a290eabc59839a7e15289cd48f33dd9337d06e301064e1e7fb26c5/aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef", size = 1589546 }, + { url = "https://files.pythonhosted.org/packages/15/b4/0f7b0ed41ac6000e283e7332f0f608d734b675a8509763ca78e93714cfb0/aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438", size = 1544581 }, + { url = "https://files.pythonhosted.org/packages/58/b9/4d06470fd85c687b6b0e31935ef73dde6e31767c9576d617309a2206556f/aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3", size = 1529256 }, + { url = "https://files.pythonhosted.org/packages/61/a2/6958b1b880fc017fd35f5dfb2c26a9a50c755b75fd9ae001dc2236a4fb79/aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55", size = 1536592 }, + { url = "https://files.pythonhosted.org/packages/0f/dd/b974012a9551fd654f5bb95a6dd3f03d6e6472a17e1a8216dd42e9638d6c/aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e", size = 1607446 }, + { url = "https://files.pythonhosted.org/packages/e0/d3/6c98fd87e638e51f074a3f2061e81fcb92123bcaf1439ac1b4a896446e40/aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33", size = 1628809 }, + { url = "https://files.pythonhosted.org/packages/a8/2e/86e6f85cbca02be042c268c3d93e7f35977a0e127de56e319bdd1569eaa8/aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c", size = 1564291 }, + { url = "https://files.pythonhosted.org/packages/0b/8d/1f4ef3503b767717f65e1f5178b0173ab03cba1a19997ebf7b052161189f/aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745", size = 416601 }, + { url = "https://files.pythonhosted.org/packages/ad/86/81cb83691b5ace3d9aa148dc42bacc3450d749fc88c5ec1973573c1c1779/aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9", size = 442007 }, + { url = "https://files.pythonhosted.org/packages/34/ae/e8806a9f054e15f1d18b04db75c23ec38ec954a10c0a68d3bd275d7e8be3/aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76", size = 708624 }, + { url = "https://files.pythonhosted.org/packages/c7/e0/313ef1a333fb4d58d0c55a6acb3cd772f5d7756604b455181049e222c020/aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538", size = 468507 }, + { url = "https://files.pythonhosted.org/packages/a9/60/03455476bf1f467e5b4a32a465c450548b2ce724eec39d69f737191f936a/aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/be/f9/469588603bd75bf02c8ffb8c8a0d4b217eed446b49d4a767684685aa33fd/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9", size = 1685694 }, + { url = "https://files.pythonhosted.org/packages/88/b9/1b7fa43faf6c8616fa94c568dc1309ffee2b6b68b04ac268e5d64b738688/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03", size = 1743660 }, + { url = "https://files.pythonhosted.org/packages/2a/8b/0248d19dbb16b67222e75f6aecedd014656225733157e5afaf6a6a07e2e8/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287", size = 1785421 }, + { url = "https://files.pythonhosted.org/packages/c4/11/f478e071815a46ca0a5ae974651ff0c7a35898c55063305a896e58aa1247/aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e", size = 1675145 }, + { url = "https://files.pythonhosted.org/packages/26/5d/284d182fecbb5075ae10153ff7374f57314c93a8681666600e3a9e09c505/aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665", size = 1619804 }, + { url = "https://files.pythonhosted.org/packages/1b/78/980064c2ad685c64ce0e8aeeb7ef1e53f43c5b005edcd7d32e60809c4992/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b", size = 1654007 }, + { url = "https://files.pythonhosted.org/packages/21/8d/9e658d63b1438ad42b96f94da227f2e2c1d5c6001c9e8ffcc0bfb22e9105/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34", size = 1650022 }, + { url = "https://files.pythonhosted.org/packages/85/fd/a032bf7f2755c2df4f87f9effa34ccc1ef5cea465377dbaeef93bb56bbd6/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d", size = 1732899 }, + { url = "https://files.pythonhosted.org/packages/c5/0c/c2b85fde167dd440c7ba50af2aac20b5a5666392b174df54c00f888c5a75/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2", size = 1755142 }, + { url = "https://files.pythonhosted.org/packages/bc/78/91ae1a3b3b3bed8b893c5d69c07023e151b1c95d79544ad04cf68f596c2f/aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773", size = 1692736 }, + { url = "https://files.pythonhosted.org/packages/77/89/a7ef9c4b4cdb546fcc650ca7f7395aaffbd267f0e1f648a436bec33c9b95/aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62", size = 416418 }, + { url = "https://files.pythonhosted.org/packages/fc/db/2192489a8a51b52e06627506f8ac8df69ee221de88ab9bdea77aa793aa6a/aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac", size = 442509 }, + { url = "https://files.pythonhosted.org/packages/69/cf/4bda538c502f9738d6b95ada11603c05ec260807246e15e869fc3ec5de97/aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886", size = 704666 }, + { url = "https://files.pythonhosted.org/packages/46/7b/87fcef2cad2fad420ca77bef981e815df6904047d0a1bd6aeded1b0d1d66/aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2", size = 464057 }, + { url = "https://files.pythonhosted.org/packages/5a/a6/789e1f17a1b6f4a38939fbc39d29e1d960d5f89f73d0629a939410171bc0/aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c", size = 455996 }, + { url = "https://files.pythonhosted.org/packages/b7/dd/485061fbfef33165ce7320db36e530cd7116ee1098e9c3774d15a732b3fd/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a", size = 1682367 }, + { url = "https://files.pythonhosted.org/packages/e9/d7/9ec5b3ea9ae215c311d88b2093e8da17e67b8856673e4166c994e117ee3e/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231", size = 1736989 }, + { url = "https://files.pythonhosted.org/packages/d6/fb/ea94927f7bfe1d86178c9d3e0a8c54f651a0a655214cce930b3c679b8f64/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e", size = 1793265 }, + { url = "https://files.pythonhosted.org/packages/40/7f/6de218084f9b653026bd7063cd8045123a7ba90c25176465f266976d8c82/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8", size = 1691841 }, + { url = "https://files.pythonhosted.org/packages/77/e2/992f43d87831cbddb6b09c57ab55499332f60ad6fdbf438ff4419c2925fc/aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8", size = 1619317 }, + { url = "https://files.pythonhosted.org/packages/96/74/879b23cdd816db4133325a201287c95bef4ce669acde37f8f1b8669e1755/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c", size = 1641416 }, + { url = "https://files.pythonhosted.org/packages/30/98/b123f6b15d87c54e58fd7ae3558ff594f898d7f30a90899718f3215ad328/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab", size = 1646514 }, + { url = "https://files.pythonhosted.org/packages/d7/38/257fda3dc99d6978ab943141d5165ec74fd4b4164baa15e9c66fa21da86b/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da", size = 1702095 }, + { url = "https://files.pythonhosted.org/packages/0c/f4/ddab089053f9fb96654df5505c0a69bde093214b3c3454f6bfdb1845f558/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853", size = 1734611 }, + { url = "https://files.pythonhosted.org/packages/c3/d6/f30b2bc520c38c8aa4657ed953186e535ae84abe55c08d0f70acd72ff577/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e", size = 1694576 }, + { url = "https://files.pythonhosted.org/packages/bc/97/b0a88c3f4c6d0020b34045ee6d954058abc870814f6e310c4c9b74254116/aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600", size = 411363 }, + { url = "https://files.pythonhosted.org/packages/7f/23/cc36d9c398980acaeeb443100f0216f50a7cfe20c67a9fd0a2f1a5a846de/aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d", size = 437666 }, + { url = "https://files.pythonhosted.org/packages/49/d1/d8af164f400bad432b63e1ac857d74a09311a8334b0481f2f64b158b50eb/aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9", size = 697982 }, + { url = "https://files.pythonhosted.org/packages/92/d1/faad3bf9fa4bfd26b95c69fc2e98937d52b1ff44f7e28131855a98d23a17/aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194", size = 460662 }, + { url = "https://files.pythonhosted.org/packages/db/61/0d71cc66d63909dabc4590f74eba71f91873a77ea52424401c2498d47536/aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f", size = 452950 }, + { url = "https://files.pythonhosted.org/packages/07/db/6d04bc7fd92784900704e16b745484ef45b77bd04e25f58f6febaadf7983/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104", size = 1665178 }, + { url = "https://files.pythonhosted.org/packages/54/5c/e95ade9ae29f375411884d9fd98e50535bf9fe316c9feb0f30cd2ac8f508/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff", size = 1717939 }, + { url = "https://files.pythonhosted.org/packages/6f/1c/1e7d5c5daea9e409ed70f7986001b8c9e3a49a50b28404498d30860edab6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3", size = 1775125 }, + { url = "https://files.pythonhosted.org/packages/5d/66/890987e44f7d2f33a130e37e01a164168e6aff06fce15217b6eaf14df4f6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1", size = 1677176 }, + { url = "https://files.pythonhosted.org/packages/8f/dc/e2ba57d7a52df6cdf1072fd5fa9c6301a68e1cd67415f189805d3eeb031d/aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4", size = 1603192 }, + { url = "https://files.pythonhosted.org/packages/6c/9e/8d08a57de79ca3a358da449405555e668f2c8871a7777ecd2f0e3912c272/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d", size = 1618296 }, + { url = "https://files.pythonhosted.org/packages/56/51/89822e3ec72db352c32e7fc1c690370e24e231837d9abd056490f3a49886/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87", size = 1616524 }, + { url = "https://files.pythonhosted.org/packages/2c/fa/e2e6d9398f462ffaa095e84717c1732916a57f1814502929ed67dd7568ef/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2", size = 1685471 }, + { url = "https://files.pythonhosted.org/packages/ae/5f/6bb976e619ca28a052e2c0ca7b0251ccd893f93d7c24a96abea38e332bf6/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12", size = 1715312 }, + { url = "https://files.pythonhosted.org/packages/79/c1/756a7e65aa087c7fac724d6c4c038f2faaa2a42fe56dbc1dd62a33ca7213/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5", size = 1672783 }, + { url = "https://files.pythonhosted.org/packages/73/ba/a6190ebb02176c7f75e6308da31f5d49f6477b651a3dcfaaaca865a298e2/aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d", size = 410229 }, + { url = "https://files.pythonhosted.org/packages/b8/62/c9fa5bafe03186a0e4699150a7fed9b1e73240996d0d2f0e5f70f3fdf471/aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99", size = 436081 }, ] [[package]] name = "aiosignal" -version = "1.3.1" +version = "1.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "frozenlist" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/67/0952ed97a9793b4958e5736f6d2b346b414a2cd63e82d05940032f45b32f/aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc", size = 19422 } +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17", size = 7617 }, + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, ] [[package]] @@ -121,18 +122,18 @@ wheels = [ [[package]] name = "altair" -version = "5.4.1" +version = "5.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jinja2" }, { name = "jsonschema" }, { name = "narwhals" }, { name = "packaging" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions", marker = "python_full_version < '3.14'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/09/38904138a49f29e529b61b4f39954a6837f443d828c1bc57814be7bd4813/altair-5.4.1.tar.gz", hash = "sha256:0ce8c2e66546cb327e5f2d7572ec0e7c6feece816203215613962f0ec1d76a82", size = 636465 } +sdist = { url = "https://files.pythonhosted.org/packages/16/b1/f2969c7bdb8ad8bbdda031687defdce2c19afba2aa2c8e1d2a17f78376d8/altair-5.5.0.tar.gz", hash = "sha256:d960ebe6178c56de3855a68c47b516be38640b73fb3b5111c2a9ca90546dd73d", size = 705305 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/52/4a86a4fa1cc2aae79137cc9510b7080c3e5aede2310d14fae5486feec7f7/altair-5.4.1-py3-none-any.whl", hash = "sha256:0fb130b8297a569d08991fb6fe763582e7569f8a04643bbd9212436e3be04aef", size = 658150 }, + { url = "https://files.pythonhosted.org/packages/aa/f3/0b6ced594e51cc95d8c1fc1640d3623770d01e4969d29c0bd09945fafefa/altair-5.5.0-py3-none-any.whl", hash = "sha256:91a310b926508d560fe0148d02a194f38b824122641ef528113d029fcd129f8c", size = 731200 }, ] [[package]] @@ -146,17 +147,17 @@ wheels = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/09/45b9b7a6d4e45c6bcb5bf61d19e3ab87df68e0601fa8c5293de3542546cc/anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c", size = 173422 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/40/318e58f669b1a9e00f5c4453910682e2d9dd594334539c7b7817dabb765f/anyio-4.7.0.tar.gz", hash = "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48", size = 177076 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/f5/f2b75d2fc6f1a260f340f0e7c6a060f4dd2961cc16884ed851b0d18da06a/anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d", size = 90377 }, + { url = "https://files.pythonhosted.org/packages/a0/7a/4daaf3b6c08ad7ceffea4634ec206faeff697526421c20f07628c7372156/anyio-4.7.0-py3-none-any.whl", hash = "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352", size = 93052 }, ] [[package]] @@ -226,137 +227,221 @@ wheels = [ [[package]] name = "arro3-compute" -version = "0.4.2" +version = "0.4.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arro3-core" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/7c/53f55a8846b81c7ac803b75e8ba99111df729eb934c3d043e830b5fed0b5/arro3_compute-0.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a40b0f110157a87fd472e6548b5a9f8a12211adab418d18602701e57f310b1f5", size = 2299289 }, - { url = "https://files.pythonhosted.org/packages/4a/c7/f9b1e088d05cc245388ca48ad19bf150b39b3be4cc9ca65e36e188a2dfa6/arro3_compute-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcf2f350f129a1ef3f2007ab954e45ae368af20043205a86cba2d3ace6f085da", size = 2576936 }, - { url = "https://files.pythonhosted.org/packages/c4/12/5b7a9cd69ceb9733aedfdd261e1c4494410b050a1f26f1c64a74420ab7fa/arro3_compute-0.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a1902b2f5dddbf292bcf6836f008367a09401a18f2252f1929d2a2aad4fb215", size = 3061447 }, - { url = "https://files.pythonhosted.org/packages/11/5e/c58d3f13c8713c6d5c1aa455e90aa6a0e5edc692d0f64149288279c120de/arro3_compute-0.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dcdf82f804c617b1a6bc5ad6b784f0657ca654751820fdd9095535f7b03ba00b", size = 2681286 }, - { url = "https://files.pythonhosted.org/packages/4b/1a/962ab662f863f194bf97520327dc6be4b0d10aa17590b88ed7dd3b5dd940/arro3_compute-0.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8994cfd347f30633185c5cde259e4ef4cbd66c7af77a508e476762d955de4f7a", size = 3721620 }, - { url = "https://files.pythonhosted.org/packages/4d/00/0b1f1191f6a20eb1aa578d51f1cf9b8c5d21748f98338eda110ac3527bdc/arro3_compute-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b13a752a99b352ab395452dd194001fe3077dbb4370b0ae0829b8bcdbfd2945", size = 2729570 }, - { url = "https://files.pythonhosted.org/packages/0f/de/187dcce9cfcafd3ab7d4eb5f0ff7862be673d28d03d9a9d3898a04d6415e/arro3_compute-0.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63d37a2a2479bf4632e578b3aa104012a6f82530c0c3fd15e716cb3fce79d789", size = 2957631 }, - { url = "https://files.pythonhosted.org/packages/c7/39/1eee3968c8a7f9476a7a86b9692b6860c36f78cc8f214c34bb85f7e554a8/arro3_compute-0.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b664b11aa281b1c75d4af5ac06227be80ad4a7547ddc1f6ba0b95fc105da4b71", size = 2720364 }, - { url = "https://files.pythonhosted.org/packages/8e/38/9dc25aa00bbc4a15449b343505ae5e1873f68afc1c5fcdb47af4d49b7e83/arro3_compute-0.4.2-cp310-none-win_amd64.whl", hash = "sha256:dc788d676a67fcb817a3248c924ae53f3b76df52938320ebcdf2c1429ab1ce26", size = 2652736 }, - { url = "https://files.pythonhosted.org/packages/bf/80/88fa9d2fac1a12672d9a5ebbc32f5034cbc71dce79c7267b3789314b2f4d/arro3_compute-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:181c93db95f4e398018bc57036f3d0d91b00cb55e3a3212796768ba24781888b", size = 2605919 }, - { url = "https://files.pythonhosted.org/packages/f3/8b/8ba83e9a1bf690bd1d5b1dcdb52b608a136d9689c2391595bcc8bf257054/arro3_compute-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b167bfc12dc12e35234a50066d8cacd15f890598259085d0d8474cd2b5c73ea3", size = 2299168 }, - { url = "https://files.pythonhosted.org/packages/90/7c/23b9e0c6327b32acfb60f09860a72dc164a9a5c7052c89ddf66845d57417/arro3_compute-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d5a5037831e6d967dca1ed9e639d838be07af6ccec4a074051ad64aea5e355f", size = 2576701 }, - { url = "https://files.pythonhosted.org/packages/b5/c7/3e9f96842ddfc5ad0add6a6003dfb2ebbe0020f759ff426915b3e65cc8c7/arro3_compute-0.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:082eb64765ad5724138580383f7ccadf0ba3a4b1ff7f347f30ef92d1d5174f75", size = 3061283 }, - { url = "https://files.pythonhosted.org/packages/0f/9c/950c164ba4343c2fafa7c01e3fb10b78f80768163312783d4b8405db01e1/arro3_compute-0.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f498f31ff24e3bd5139960e62eb706f3b3ab05b29d1c92a16e43359a25ec6ae", size = 2681288 }, - { url = "https://files.pythonhosted.org/packages/12/72/759837707124eb31e2306ce87a834fa1124d2811b63225cb41d8c27f0053/arro3_compute-0.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2877d4805620d06fbf20cb3776a59ea011100988ebcf223ca2617984b9b7136a", size = 3732661 }, - { url = "https://files.pythonhosted.org/packages/60/20/f978d5ae1a7fccabb4f7aa14aad643d1a35726ec222f9cb2e3592529b0c5/arro3_compute-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:729f3a2a77323c3e7dcbf484b7884676f437fe130ea1915c9664239284c35e2b", size = 2729385 }, - { url = "https://files.pythonhosted.org/packages/b2/11/6e95f1df788830ad1aa120c49f6868fc51ebdbedc98db9a25f965ffb4a5b/arro3_compute-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:81cab5ebe5d40c6427df4c0bb81c70bbc72298d37c74e88336073b15cec3daf4", size = 2957508 }, - { url = "https://files.pythonhosted.org/packages/da/eb/5df5d6dae875a5a947b1dc56dd974ddfc5f9621b853172230fb8f1b3d22e/arro3_compute-0.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fdf6a502906f8bd5974d4f8f061efa777866e820407daeb0990228d066d03a2a", size = 2720183 }, - { url = "https://files.pythonhosted.org/packages/c6/db/2adbfb97db40c6a5318eb850c575e2b9f5871df173eefd6a2e77fa9be138/arro3_compute-0.4.2-cp311-none-win_amd64.whl", hash = "sha256:c75fd49a3ea692f6de145cbb094d46393af6b80350e0146ed6d6d74bf392279e", size = 2652668 }, - { url = "https://files.pythonhosted.org/packages/bb/35/326bb437e1518e43dde8948ec27c9d4cd8f79f90f5180d5959bba092a0b2/arro3_compute-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:dc57c25f22f67a1da5155a4b4905d5e45a4cfe80e1b8abdab9c0eb099042c0e7", size = 2604515 }, - { url = "https://files.pythonhosted.org/packages/ba/e6/f885e1b54420039063651d169e3b26a99b1bd0d4fc1cca7dffbd4e1cf48c/arro3_compute-0.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7633adc9e9914688c9fa1e96b1201a4250377c1a1ac21a5089e2d06d02595c03", size = 2297752 }, - { url = "https://files.pythonhosted.org/packages/32/de/47cc0cc23f9fa4d5d1d9ffa756d775eab2f86804f4b05ea4eced15c5dd69/arro3_compute-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fbe0ae3ce3c29777d3925616150e46075f8ee94451259706aafd7c233b37f27", size = 2574092 }, - { url = "https://files.pythonhosted.org/packages/0a/e4/093b470b9b4b16362a6ea2a56c200f75e125082b3ac9585083fd6cd1fe07/arro3_compute-0.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aaa4117107cb79495fcff10daf6c479e220ad616121a03126811f85c07f43bb2", size = 3057539 }, - { url = "https://files.pythonhosted.org/packages/63/62/afd2a7ebf404dd1bb47d9f6fbd34818e4c5f845268c31f0dc5cffe87b195/arro3_compute-0.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5a127020f8c4c545f8f3d5f78803d59eab0d2bdfd601cac43ecad9dd8c32f36", size = 2680587 }, - { url = "https://files.pythonhosted.org/packages/c6/c0/97b5e0da8d7a73ab4b3b0dbafb4db1ffbbcd1e2c3b094be085058e7debd2/arro3_compute-0.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:804d03bcacc1ec11bfe45e895b571508325051c80c0a8b109a341f9d3acb61b6", size = 3732734 }, - { url = "https://files.pythonhosted.org/packages/cb/87/dfa6865b6229949f623c3c6917f39b3449804c9a950b441426e017a2eeb8/arro3_compute-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad0c9b9206aaef3896d42b3778e06fc13654f4accde19e15006bab55dac8ccf", size = 2727259 }, - { url = "https://files.pythonhosted.org/packages/bf/83/b05f63a72fe8a40ce1b35fe033ae5371fc2848e7a89b0c177a6a521d82ed/arro3_compute-0.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e424d2fad953760e60437ccb3009b0b4b0a5d299e81dcb9a0541c3eac3d39a0e", size = 2955124 }, - { url = "https://files.pythonhosted.org/packages/84/de/5dd5ef1583e89177fd3c4b45524afe3158a3dedcf1179f2720a2f645dff8/arro3_compute-0.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7b69d203cf1249fe0406d76458cb5069bb0c62dec03df88549ff9b68638fa2b6", size = 2718754 }, - { url = "https://files.pythonhosted.org/packages/b7/98/323ffca9d606146fe69a0507d0938d259dd2f06d261c1586856c1d69cdf1/arro3_compute-0.4.2-cp312-none-win_amd64.whl", hash = "sha256:02970d693a412c7b81e0d3fd528636cf21e30c6b2241a5d26002b65c24b5bc96", size = 2650699 }, - { url = "https://files.pythonhosted.org/packages/6f/4e/99c5f141bd1d16af6a22898e5232a1a56dce73327ac099941aeeec797da6/arro3_compute-0.4.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f0fe0e1dff8b07b22bf97fbdbb1f2660555ebe04443710a79a3d1d64d85925", size = 2576537 }, - { url = "https://files.pythonhosted.org/packages/23/e4/503c30f2086cdfd0a48f6a1ee2ffa199039ea63cf45248527ace7628e5bd/arro3_compute-0.4.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c37d88036433c36024e1678390585a9b4ad2ab212ad51ca609e85e402833317", size = 3061506 }, - { url = "https://files.pythonhosted.org/packages/24/af/3d62bad793c34b6351cf7cb3cb4e36f0ab8c66eb2dd159dca81308663630/arro3_compute-0.4.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a9ddb2962818f5f713441715eeccbdca223adf339f95f82bca8fcd3b1fcbe59", size = 2681403 }, - { url = "https://files.pythonhosted.org/packages/55/01/a9be7aa64e5a03f6dd26c3c95f07a1369770c0537e405e8e98c50d909802/arro3_compute-0.4.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac2209452bd95060cfcb643adf24c4c4c122a699c27061f9bd0cfb6a05f8b059", size = 3733141 }, - { url = "https://files.pythonhosted.org/packages/ab/85/344ce6136dfb3026ed07905b41fb2fad9203045c28b3d3203d9c563da6b6/arro3_compute-0.4.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13c32e86d977a1885ec35d176f355aaee14e3bfce9903430c0c6dfa779c6693e", size = 2729659 }, - { url = "https://files.pythonhosted.org/packages/d0/6d/b7f842cabceaf7bcb7d769733184d01668e612d98854ebcc0e9430b7bdfd/arro3_compute-0.4.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fb5ad3f2eaea686e01babe23d80b7c7776661671e91c30d26441bfd9a9eabca", size = 2957339 }, - { url = "https://files.pythonhosted.org/packages/d3/93/541483c55bb233db4fa52d856e10d95edd987d4fd14bbe743dea501556de/arro3_compute-0.4.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bc87efa5e4a776cefe9c9b904ff14519e738eb7f0463bafc46892bbc36c4a554", size = 2720990 }, + { url = "https://files.pythonhosted.org/packages/0a/50/3f4a96022880ff8754467c40e5e541b4e6f0c192e1a9aa72cc25ef48b67c/arro3_compute-0.4.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e2a3c4c6279f67bde02efd9824e2b6da2f77a366fc28c73c83694b634d64a896", size = 2600842 }, + { url = "https://files.pythonhosted.org/packages/2b/ff/6905b438194ecc803e3d97c7672e377f17a5c7f117c620b0d969598457d7/arro3_compute-0.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:776212ccac80c61db2fc4edde41528d7a46d8712170cb1f9342761d79b8178c7", size = 2299652 }, + { url = "https://files.pythonhosted.org/packages/bb/f0/570d401af1aaea4c576fe65de6ca424cfe6402c50c8868bb662862df3c4f/arro3_compute-0.4.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9def651fc3bf1b7a64a2c2fc3f8054bc079b70c3a835e852a5e3d3150cfdcfc6", size = 2987063 }, + { url = "https://files.pythonhosted.org/packages/2a/d5/dcaf1515b6ba50971948bd923622404cda2c3f58804fb43e18036de4e7a8/arro3_compute-0.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f1718279999f8b715a28f72795cf592c1743c6ba8fa5ed31da961316a51b7ff", size = 2692786 }, + { url = "https://files.pythonhosted.org/packages/89/37/fb980577d8b995694d695142fbbcc282a0038a6517debd49ba6d89650101/arro3_compute-0.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd38d3ef9a68346b110a8c29d832d10d0d0d0ab1258d6498daf80039c6bda37", size = 3843865 }, + { url = "https://files.pythonhosted.org/packages/91/12/91f503e64e31f28adcfb752933b320147c31fa7ac8622985b729450db79f/arro3_compute-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c02e83d6c60be69aa1a617b1aaeae5bdfe2e83090132381b579fb23ce8395", size = 2725975 }, + { url = "https://files.pythonhosted.org/packages/33/f9/f6671997988b5423642daa65a110d349c9e81089bb1c1de6bb6d9e9fcc96/arro3_compute-0.4.5-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:a5e220d1f7dd5cca9b94c67744fd6a48bdb3584a4d6fd8aa4cdb7ffe0d365171", size = 2516021 }, + { url = "https://files.pythonhosted.org/packages/92/a1/cb1d495e7f0b81b76295e7b014a9edb5dc12c72440eca92f58d6ac9a54cd/arro3_compute-0.4.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:133e0861acd457b15162982e9d35a9d8ddb8773440a786adfdab075c2cf7cff8", size = 2964803 }, + { url = "https://files.pythonhosted.org/packages/7a/8f/2c497a14186306efa6cd0276b4c0b047a6cc37a25ea40c9933d87c91ea0a/arro3_compute-0.4.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:addced861a2cbc0b4ca9eb54869e8f7bbf1168ae670df6d55b7d1742099cb4e2", size = 2647267 }, + { url = "https://files.pythonhosted.org/packages/e8/52/9b5f7c27ec042f8d300a4fc51e01b94136ae16078653505ce6f6c8b8c679/arro3_compute-0.4.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:710a5f0c47e07bd720b50b78b27f12e63396dd6e3613f20426bf5b894da2f87d", size = 3248841 }, + { url = "https://files.pythonhosted.org/packages/0b/54/fb27cc8e8eef342f73739eaec8e636010a53b14cbf09b5a92dbe74d97dd6/arro3_compute-0.4.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3ec30b1287be756aa0e596e795a76b7a17597d68d8b1dcd4af04a4a1817f5c7e", size = 3026315 }, + { url = "https://files.pythonhosted.org/packages/88/ed/50a14a1ce7505271bc39f364aaa07cc989103ac62d06fe390feac89ca0fd/arro3_compute-0.4.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:496080ab4b9f08b8fc772005e4b886f6f3e8d1a5781d529b8bdc7f58905c2ff5", size = 2899493 }, + { url = "https://files.pythonhosted.org/packages/2b/18/d64424ec2d8f02cec9e8ea9e7dc7645c59c05ecebdbe71453253a4b103ea/arro3_compute-0.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:66f1e5a62f0167d00d2118b01dfbc9f2c80d4642efe0ec48b7afdbafd7b99def", size = 2621904 }, + { url = "https://files.pythonhosted.org/packages/3f/dd/6b816f4786eefa141eb8a23f6d298df9a3c70b5bee515fe06c1b4dc1b637/arro3_compute-0.4.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c26ee984aacdc36fc9f06842d0085df739cd7b585f1efba5e170b7e3eb9f11f4", size = 2600511 }, + { url = "https://files.pythonhosted.org/packages/d2/e9/201d4da67bdef14b8ff772faac7090a757a3dd79c574fb3d6c9d9ae977bf/arro3_compute-0.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:df068ff9d8c5d1644d5cb06bf4f9f1d7b280237ec2b7e5a14c26754bec156a23", size = 2299492 }, + { url = "https://files.pythonhosted.org/packages/f7/17/0ded04137aa013ef488901313fc280e6da53ccbf26232edc496e6d49a731/arro3_compute-0.4.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:55f18557d6639399a945156916daef27904db8c8b67f4660cd9a913d2b594daf", size = 2986836 }, + { url = "https://files.pythonhosted.org/packages/91/31/ed48e23b3b576b4886d92959bc3f36b4f9c12cc8f82147ba0bb89a22a446/arro3_compute-0.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f929dcf2a6df4f39b3dab7ad2144998c488194b8cc2f0750cf5f92685745f48", size = 2692425 }, + { url = "https://files.pythonhosted.org/packages/c2/45/2a6cee7568f8b0472910a5a63ea6256b9195ea82f9332b9354d89a75f546/arro3_compute-0.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:21a536499d7f670599e242209e0e73eea6d35de2b9404cc78cc0515d4b391d04", size = 3833692 }, + { url = "https://files.pythonhosted.org/packages/cf/b5/d17de47a59f187c2a5299ed8b1578b34ac450179d2c23fbac2682148696d/arro3_compute-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88c0ef0e7e4568668738c4e16f7493100a171bcbfd2035e237fb3c1ceb16bb0a", size = 2725799 }, + { url = "https://files.pythonhosted.org/packages/c1/2b/80faf429a2ced85bc7a7186fe7f1561191b9242c6d8423f4b270a14874ed/arro3_compute-0.4.5-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:211de7a5f716d8e30019ba64c6c44c554f9dd50c98aca813289d65b04921562f", size = 2515701 }, + { url = "https://files.pythonhosted.org/packages/29/85/db78ab1ebdf04849c1d1e8025565c37b74c4a982298cc265345e1eb16f55/arro3_compute-0.4.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4c779718132e29daa49a2df77848da778deecc020b3fcb4b5b48400b8374fec", size = 2964590 }, + { url = "https://files.pythonhosted.org/packages/12/c0/3bfb23358e53a44ed204e37d7bf06e48364e85f6af973c126331a2704c87/arro3_compute-0.4.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5f324df292508f32341878bbd0ed724b360ec0bc36d70c13ee836559ce3b503d", size = 2646738 }, + { url = "https://files.pythonhosted.org/packages/68/6c/799b1325732ecf5e09dc33086b1d441ffb1684f5cf488b4afff773e53371/arro3_compute-0.4.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:90d73edbb77b2d80231787e2bc1e9cd205ac862622f30c66031abc41f7d3f5a0", size = 3248649 }, + { url = "https://files.pythonhosted.org/packages/bf/3a/49d22807ff9d5f75d39e38616a4ab0cbb7585a9424a518e4deddf24d2df9/arro3_compute-0.4.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:de408c6f8c9a986dd20b3f3dde4e39ccd1d4e931ef478c00a792ff001bd4d350", size = 3025800 }, + { url = "https://files.pythonhosted.org/packages/02/f1/257aba99c64b6c0349cb98054496e5ad7c06d1b9a03d6b428ab49e8b56fa/arro3_compute-0.4.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:70cf478c4ed55290834af729b0e55f5005b8449aa0aa3293f203a92e67317487", size = 2899452 }, + { url = "https://files.pythonhosted.org/packages/d7/93/395560b35aa8f7691960e619340c5a538a4defe83720588b5bf85192611c/arro3_compute-0.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:96e4de31eb46031b4b5fa61ddf1e7cab1ba5a3f0830c6788595a2122d23532b5", size = 2621864 }, + { url = "https://files.pythonhosted.org/packages/d4/04/6c92ce08d0c7f0cc86cd9130f5e2fc1e604249238f102478292ed7dc0817/arro3_compute-0.4.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f54964284a24cadb4b674be5b7fcc4139673194d53c0da262dc13aa4ffde4742", size = 2596727 }, + { url = "https://files.pythonhosted.org/packages/a2/cc/1065ff369651a089273abb7c064546a4fa9c641a452cc4bda67fc96e303f/arro3_compute-0.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e3e053478223fdad3a1dd53a765ab8c15f5cb1c11e57a91c3774b787faa537e0", size = 2296083 }, + { url = "https://files.pythonhosted.org/packages/16/e3/49c5e7e49592d614a8bf39ee974392eb36f2e5148b9b029aaac0c5a9e010/arro3_compute-0.4.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2197f42e823cd076f170176b9f6498d5fc2f9d19f370aae644fe0d08b0913beb", size = 2982587 }, + { url = "https://files.pythonhosted.org/packages/d9/1b/ad9700fc9233a7b4528743d64e8c2027c275488c731b99067be42894f8e6/arro3_compute-0.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1fd77ed4121c1a7102e5d3358b3db21f057ba2a198c6da68d5216e81f653805f", size = 2686858 }, + { url = "https://files.pythonhosted.org/packages/38/32/f37d57da977e5d525b29d8d184a8647d92e9319eb2cb4de367ff49cbe280/arro3_compute-0.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9f1acbd30da5f90439a7cf7b4e1c9e427691204950fd0745b8fc37d121a171c3", size = 3850442 }, + { url = "https://files.pythonhosted.org/packages/db/33/8efb3e620964033dcaabde2aaaab232cd4e2b2d1e71b369ae365230387b4/arro3_compute-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf9894585d81d5138f146f987ba3a7b9193677bc929e7a0cbebbbb348937175", size = 2720324 }, + { url = "https://files.pythonhosted.org/packages/9d/84/323b76fc86565cc6196c2e1a306334ccc9030e4a5cb2e8448ee292be84f9/arro3_compute-0.4.5-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9b43033fe5bf01b14b4c539825991671f2b05b1c9c968091bf8d5224413dcdcf", size = 2512741 }, + { url = "https://files.pythonhosted.org/packages/fa/c0/8189edfd4405019a0791104c8cab10e7425be112e461fc1321103dc4e85e/arro3_compute-0.4.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd26a9029bfdea4e67e1a44705580b34198cd64346a20c0394ff18f444c90b8e", size = 2958955 }, + { url = "https://files.pythonhosted.org/packages/02/28/f52c6148b8eaf4ca6a458acee191c5e00cb7cecc4aea0e30dda285152d05/arro3_compute-0.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:72a32685ca06e7ecfa0477794e7d6c6f974abac0b181bbe03206bfbff326493d", size = 2642088 }, + { url = "https://files.pythonhosted.org/packages/06/b0/0d9eabf9e0e0cbcd570f9d9720b969354e87085e6fdd68035103fccf8de2/arro3_compute-0.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1d7f7fdfc6353affdf2b5eaa3fae4ed9be999608489cbd2ab622fee112eb8bd4", size = 3243334 }, + { url = "https://files.pythonhosted.org/packages/e4/a6/930d5aa5201816ca06a23687a64b7619890874ceede069aed201b166e1c0/arro3_compute-0.4.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9802e7b4c093c3d0a3e6303d55c5cf48adc731a6cf07a6e2d75ba815db1c542f", size = 3019544 }, + { url = "https://files.pythonhosted.org/packages/57/22/ed3160c8582d7efffb6bf1f42a14e0b6a47923ce932b8e1c1eb50821f228/arro3_compute-0.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2bdad5ae7eb10fd16db20548e20f8b736d98149f77cde6b8d51e38d6646ade0a", size = 2894242 }, + { url = "https://files.pythonhosted.org/packages/aa/f8/9f760bc23b8dd5a95b44522a3ae80ae03e27a73c4f1809c2ce017d2e88f6/arro3_compute-0.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:6be3fc110e77b10c656b0b88f92c93716bd2a2efeebf3f2043e8298b5fa61aa0", size = 2618358 }, + { url = "https://files.pythonhosted.org/packages/ce/4d/82607009c90bf4f1218711390ff2a5952d933eaadba7186c99bbcf0874a4/arro3_compute-0.4.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:bbda955aa677befc3eb23e2e39d0e3effd42f3dbb91078bd899773d63abf8d5c", size = 2596729 }, + { url = "https://files.pythonhosted.org/packages/a8/90/44f6cf5902c300a63eb9752f943c9b599de051bc1a2318b3142b8bd7a3f2/arro3_compute-0.4.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37d3927057eb0c8d9f35d77e262f44c9cad6db3a7d74a4d837eca9f023d2fe15", size = 2296087 }, + { url = "https://files.pythonhosted.org/packages/c7/b6/dc6350a35e99f9425dee3e072bf1a3b196895d86a3bf654aab800f1e76c8/arro3_compute-0.4.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebc0f08e8f074daddac468ae11b58868452c4c427a96ac470db21905f0b65fb1", size = 2982588 }, + { url = "https://files.pythonhosted.org/packages/06/c7/edb678a4be15e9bdd7f69922ee71ba6102f33fd89ef09ed01e5acba02ffc/arro3_compute-0.4.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5edf196c22fc7cb5ba56e5e50776205f95ac2b8f2eb7045f2b4898afe827e333", size = 2686857 }, + { url = "https://files.pythonhosted.org/packages/dd/a3/811874fe38d4ff6871196c82533ecbcfbd0e1a6c80b6eb4000adf537bc7b/arro3_compute-0.4.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0cdadcdb2067375158229dc1da40d1957c9dcf8e0ca1fd03353fd63113b8c03", size = 3850440 }, + { url = "https://files.pythonhosted.org/packages/0a/fa/f2a1f6ef7187e43127676e800002f64659374ba2fe0c94821b26c01e583d/arro3_compute-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f48f9449d84a9c7c71f48f24485ccc7be6b2dc6b3b574552b319c96f6acfa46", size = 2720327 }, + { url = "https://files.pythonhosted.org/packages/7b/eb/5409a3cd9d24b31927b1b9b9edc8334eddb9cce5981b080ea12db94c8a80/arro3_compute-0.4.5-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:416c63475c7423626e47e0590767657a9fdda773b3a4dd7e1027a1b950801208", size = 2512741 }, + { url = "https://files.pythonhosted.org/packages/cb/bf/ff86d3507e9f29c014b915cc038a83076930ea07de1074bb61ddad11a710/arro3_compute-0.4.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:adb0596d62f894cdc9f0714df3a08a4676e0e3a7235ccd258a788ffd5fd51884", size = 2958955 }, + { url = "https://files.pythonhosted.org/packages/76/d6/6e1b569642dc2403f0ddec09bb780ac7d236d0bb7463ac3e80adbd54ad7d/arro3_compute-0.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:56b954d3805fe24a680f57b9cca13fe3e61c0e9c1ded74d41b27275488cf13c3", size = 2642087 }, + { url = "https://files.pythonhosted.org/packages/3c/1d/c2bef9978a3270d181f7a01f6cc8928d8e724931703a312b8f3fd9928c5d/arro3_compute-0.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:a0b6230bf3ee769b2cb2ba5da7b6937ed5d7771894d845c0b40f9d11dc4f3bc9", size = 3243333 }, + { url = "https://files.pythonhosted.org/packages/65/f6/0cd3c463ffc749e7d9998be7030612cdc1084cddb4bb25d43ed77d6884c1/arro3_compute-0.4.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:957a9b581d9368469f884b8989f751e4e5e9975391a04def4d699a6f696a4036", size = 3019542 }, + { url = "https://files.pythonhosted.org/packages/ad/f2/13763a39aa4562a3f6793e49f14d640b13e02ef8005a5e1b98f12de8274c/arro3_compute-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e06f3ba99915a60ab2a67730dfa7cc67e6eb43d02fd1e5f08008cd30c2d70ab6", size = 2894242 }, + { url = "https://files.pythonhosted.org/packages/d7/a9/2d59de01f49e4d8ca3a2454d954d759b4704154c89968d3ec7a3cec41010/arro3_compute-0.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:74fc55dc170b192071f68073c9993baa8bb52d1280aa269e328028222a23dd84", size = 2618363 }, + { url = "https://files.pythonhosted.org/packages/42/9d/79a18a268b4bb4d4f3abf6b1d53244db10338350afda5a9b189c55f77b45/arro3_compute-0.4.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee63351480e19f83e5974f7b55ad73549496d0f9968637eebddd84e035262ef0", size = 2600447 }, + { url = "https://files.pythonhosted.org/packages/69/f2/c05df50921a5f7f1be56d075e4978a13227fa01b18fa9bcf20a3eea4af83/arro3_compute-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f90d164008846a41f4d2183af3296ce324af3073247509acae902fee822e8fe1", size = 2299861 }, + { url = "https://files.pythonhosted.org/packages/85/f4/65b620ed68e3ffdaadf46e30371479dc3dbe7c24994053f8ff1e183c84c7/arro3_compute-0.4.5-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a88f48cf526cfc73962e40232cd19ff18965f06caee37d9262adc1f1d7a69d58", size = 2987132 }, + { url = "https://files.pythonhosted.org/packages/b8/28/a0d9fbf7bbb1322f5acb1a09f34919d40ca704e2a9979937f0a561cf22f0/arro3_compute-0.4.5-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe358b6f020df840fc17ae818d19799fa04b8e8bc3c44ca8cf1f4880d35b0c12", size = 2691862 }, + { url = "https://files.pythonhosted.org/packages/02/8f/888f732b0ed004b05ce6563866c6dd4c15ad4be10771ff6f36a98e6820e2/arro3_compute-0.4.5-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81f3335ec0bf083a0b8b728d0d9fd0a492f58e1d09590f69ef0758c238ff3536", size = 3843584 }, + { url = "https://files.pythonhosted.org/packages/ba/47/8604c5de4c3e363043f178bb5841a7871210477f8e831c2cff2847247625/arro3_compute-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ce1de42f420ec2362716be8390593b2f4eaab6b48a10277a4c7eafe0398a96f", size = 2725680 }, + { url = "https://files.pythonhosted.org/packages/b6/f8/0e1387fe3ccdbfeca71388ac7588ebd5ec907e6cdd1b9ee20ce2c42d2783/arro3_compute-0.4.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3e350c301d7068557af1dcaf90059c8d2b6f09788e416dbb2cac4b4721a29850", size = 2515862 }, + { url = "https://files.pythonhosted.org/packages/09/51/77dbed8dccf3a2a707e0c44d2b1090766dc70d862fd95ac4c12a565cb4fc/arro3_compute-0.4.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:502ec98e9f3ef73e849fb41097fde2c40b1ccf734171ae3b3044cfc11cdc744b", size = 2964515 }, + { url = "https://files.pythonhosted.org/packages/81/17/ee77e83fbfb6a4184b7454ea3b9b0d5e7b9111878c43bdca7dae09d933ee/arro3_compute-0.4.5-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8a62f832d9fe251d4ff53d18a57f6a7a3687bd932a809a600a6e2f622502df05", size = 2646826 }, + { url = "https://files.pythonhosted.org/packages/be/1b/8e0e095c557ea714205f7b6e206d3aec8f2556ba21b6071d2e3da9ec1226/arro3_compute-0.4.5-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:252e05c5c2cd8adaa20b33bea3cf1ecfc60f5fea3e8c76713ab119bdc28d6df7", size = 3248955 }, + { url = "https://files.pythonhosted.org/packages/67/64/a826d853f6aee830bc019fd55fc111cf3006b213afead48076969ca88212/arro3_compute-0.4.5-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:c2fc029cf61649acde34d0d6fec483447df621911455199af2cb21148f5cb81a", size = 3025758 }, + { url = "https://files.pythonhosted.org/packages/e9/4f/aa32a3f36babc591a28f84740f0084bfc6604cc1b7500d005b328107595d/arro3_compute-0.4.5-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:68dbfeac087e6931bc65ddf0783843e513146e428636ca4bb116a4acd431f393", size = 2899363 }, ] [[package]] name = "arro3-core" -version = "0.4.2" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/19/8af2b81856d4a3f897dbfe087b9cd70de0dfd247e0b391b6e2c77ed18f25/arro3_core-0.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:188b8f52dce3ee37944f655154cfa193481276e566ff7f7faf0c8aef6c021ec1", size = 2108927 }, - { url = "https://files.pythonhosted.org/packages/29/8f/cd7e92d08dc1ae1423eaa93b2da2c008e61a299559a1469e8952939967af/arro3_core-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:795525ca689246987296963b6510d2f20ea3fca72246310eac07f85235145cf1", size = 2378548 }, - { url = "https://files.pythonhosted.org/packages/32/f3/42615bde792ca33bdfcf75421ad3d8cba4437bf4a55fec803e54987c5929/arro3_core-0.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6f7c4c74fb47362fa1c1722899f33594152fc4c671309693e679758d4aabc71f", size = 2686957 }, - { url = "https://files.pythonhosted.org/packages/57/15/362828293929f3333f1f02680d1233b268a47d56db663200c89640fbd3aa/arro3_core-0.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fe1bd737d677cd808c79ae93f3d8dabbcf5645ce18e7a427a08e2aa656a38da", size = 2469204 }, - { url = "https://files.pythonhosted.org/packages/d5/69/a8d1e4df805deb7c66b230f018e757512b946a051b338f272f96b7cd6bb4/arro3_core-0.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88cdfb806b6c40c779c9a9b65fb1df6d079c1bf21e3c5890fc560746b5dc3a30", size = 3441155 }, - { url = "https://files.pythonhosted.org/packages/da/1c/f979aabf0518862f3c32db6841ac9f737c1127d49aecdd80b7bea4d5d283/arro3_core-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c633c375b6bf91fad9eea62a923c3f2b908209ef93dd5a40503dfc346595db81", size = 2466896 }, - { url = "https://files.pythonhosted.org/packages/8f/57/d099619f776fdaecb3e5c4b82c38afb8880038e46e5e4d34b04bc737348d/arro3_core-0.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b426c98e7596ed575a6f98b84c2497b479b834769970fd82437db25d8973e46b", size = 2625189 }, - { url = "https://files.pythonhosted.org/packages/e5/d5/cc38d97369d1eef062a569abc500a476893acc5a923e2244d2fac573726e/arro3_core-0.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5fc1557bdbb4339b70ddac824b0b2fd9e5befa1ec014331f6a5ee1100a949d33", size = 2523647 }, - { url = "https://files.pythonhosted.org/packages/0e/08/11473a1ba2672c085ab5fae82cdcc98596ed67bdb5fb0aff19e347e574d6/arro3_core-0.4.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0c4f423e51022d20dbcb248dce82b209996057a90b4f8ac0610132c948a26e19", size = 2967077 }, - { url = "https://files.pythonhosted.org/packages/82/84/8a053bce0bfc8f944db646ec43f0b6a683ec498a4d9d7d484c60dad4cfb3/arro3_core-0.4.2-cp310-none-win_amd64.whl", hash = "sha256:7b82b5fcae218f5bc04c4d2966d0460aae7421191b420c44fd5ffe9fa2269251", size = 2350885 }, - { url = "https://files.pythonhosted.org/packages/ed/a0/e0f302bc8d1f71bdf1da35f58ceea87ce28f98c3c138e1a68fb9ca936db7/arro3_core-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7132b800fb00f3b515e0c4ee0be4347d68ba0c83248f3cb12532811a074347b7", size = 2339721 }, - { url = "https://files.pythonhosted.org/packages/86/28/3cdbf0d84e3130ece43844c4d1ddd8c02913dfad48c1eaded684173a357b/arro3_core-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1dc027766e5ae91a8659113a32cc70a4a0146602d644d50254383a87e1b8d020", size = 2108762 }, - { url = "https://files.pythonhosted.org/packages/96/5f/408d99139bc1a1d445348876501e2a90df8c0c0d311cf13127e8b74f8dbf/arro3_core-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75bfacb4b0b62e92227bbf0b78f7a9e971382ca99eb8cc9ec13b01d3d169ad74", size = 2378271 }, - { url = "https://files.pythonhosted.org/packages/db/87/e2e7ec3ed0bb8576da5d50d4bcebcc6277aa0f38bc2daeef09f9b3ac2415/arro3_core-0.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0f6a80edb578a82c154254e6a1ae022aef8040d65e746515f98ec7a3c9977a3b", size = 2686987 }, - { url = "https://files.pythonhosted.org/packages/93/5c/a13ef6f2698e541965af600edf1863772de6e8936d565cda754d40a74e4a/arro3_core-0.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84874cb24aaea76845b6bdd633fc24cf2cb12fa25c6f65cbf5c1b3cda78671cd", size = 2468849 }, - { url = "https://files.pythonhosted.org/packages/e4/49/4784ccdcd9d5fb70a9bceaee3b3c1783c46e071c9155c675c65745381c77/arro3_core-0.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a710ea4003749272c0f98f34986686aed831de05fff03bab836dbd2c473bf652", size = 3430903 }, - { url = "https://files.pythonhosted.org/packages/80/2c/66016380d11e39e8f1f84f1390178af3b534a6fb71d1a896843f9c9b775d/arro3_core-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd621ccce42b30a5ab62f9587a9d11577bc3ad11fbe26af6756a44fb0beb122", size = 2466430 }, - { url = "https://files.pythonhosted.org/packages/1a/50/e5d8ff011ac5900bfff621356e726f3a7efbac19b9a92a2d75643123fc53/arro3_core-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1279a554bd04fa4b6f78af74cac181784796a8b22e26ee81d75d7a58d7b66e6", size = 2625081 }, - { url = "https://files.pythonhosted.org/packages/4b/f6/bc71e236a516ad247c87d0e34dd69657251ea0f5664d6b2228ad64663e0a/arro3_core-0.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2c34c727e4f6bdbe03734a10d63b58f58a6fd3b1a31383d1a4ee6ab7dbf7eac", size = 2523557 }, - { url = "https://files.pythonhosted.org/packages/5c/ad/636640e9d6c1b2dc61decc85b0a2d859dfa09333c9840e5153f9046d66c9/arro3_core-0.4.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:ff9173d2a8449774856dc490717ff049b763f19dbf6a8ceb6dda1e3993cd41a1", size = 2966756 }, - { url = "https://files.pythonhosted.org/packages/43/ca/be595d0b8ba2a1fdaa65203549ac77a094d80b6103861b5a963339a6c52a/arro3_core-0.4.2-cp311-none-win_amd64.whl", hash = "sha256:7dbab08ab5a11b53215761044ed5d488a9ed4565666af556829b1b90c668082b", size = 2350694 }, - { url = "https://files.pythonhosted.org/packages/f7/23/b456564a8eb2e3d50cc98e9c2e32c8709824ad70a6eb5eac9b828c7ebaaf/arro3_core-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4818c4aaee1f7a82015ce12f25438c1c5fcfee8dfb7101c2c7111400d1d63d65", size = 2339593 }, - { url = "https://files.pythonhosted.org/packages/64/db/12669fde7619198e038b8f96885c895be0e80d3e5c758fbb6f644eef5ee7/arro3_core-0.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dd8afe0d87afc971543885307ad15595e4f4bf10cf07826289c71feca99c52ee", size = 2110199 }, - { url = "https://files.pythonhosted.org/packages/d2/40/04cdec23879ff91758b77d30209cad99330ca71a9d72245e144a1e8b3caf/arro3_core-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19bdef051ec52dde34f529f840f4432ce3fe6473dafd1300ed14a3cc2c84750e", size = 2379144 }, - { url = "https://files.pythonhosted.org/packages/ed/29/753df145b86984ad4521636f4f0694abda264cd40730939d0516646ea058/arro3_core-0.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:17975f730e844655eb0e897abd60b5d796716fa1fe4ded586a66bc7b73a037c6", size = 2693330 }, - { url = "https://files.pythonhosted.org/packages/e5/71/47afa935bc7292c90762cd6e1c99f96238a79dbe49cf3bcf6ea4543b747c/arro3_core-0.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a922fd0e592ea0aeca26eb8b3fee523d70028281d20d069a753a9cda48de85a", size = 2470944 }, - { url = "https://files.pythonhosted.org/packages/57/4a/f8f244337375fb8fca7413f7b31bd9895c53a8c27f131bf6fd4d238758ea/arro3_core-0.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba82e64814e95b43059f19ba29f000e6faeedb95006f83e4b5bda3e24a7d4e02", size = 3432229 }, - { url = "https://files.pythonhosted.org/packages/ee/ea/607a57268e86069cb29314d9c4873a1e962b7e2f5597a72cc30e649a45b4/arro3_core-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:207b37364b0cb3b57b6aee0662813b609943d3b8950ec7746a8f424a856d471b", size = 2469231 }, - { url = "https://files.pythonhosted.org/packages/c1/f6/52b4497dbfd6691d1db25f0d9508e87222826c58e944b7c25ea0d61ba4e5/arro3_core-0.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba5499d4f314458ed1c7a6eca56823a0f03ce387f22c71c5f1fe1ceff2acadd6", size = 2630985 }, - { url = "https://files.pythonhosted.org/packages/2c/41/b0375557090b3f5a6bddf575de0690b8a4e2e2cc24d1a62251c5a5b819e8/arro3_core-0.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:55d7975169d676e64dcc5a69339ab6e2043cef654957b9121380abb9160cf8b3", size = 2518942 }, - { url = "https://files.pythonhosted.org/packages/5d/43/0ac2a65199491f1d6c778a73a0e84dee63d71c2b57281ea85b4a68ccaf52/arro3_core-0.4.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:3c84d0249d1558c21e4f0cef0794ac33e222d495640c315a8b75756764403bbe", size = 2958466 }, - { url = "https://files.pythonhosted.org/packages/d5/f2/ad051d6c6fc204fdd98ab3d44dc34104d5096bb98b4ac6f1648855ea7baf/arro3_core-0.4.2-cp312-none-win_amd64.whl", hash = "sha256:9318084172d378b54ddbfe8048d59ea2918ad5ebf5b1bc0ad3c97d6e241264a2", size = 2356892 }, - { url = "https://files.pythonhosted.org/packages/15/78/5dfb9ded5349914daa0bf241657580e443ff9c17dff25f42ffc43c74848e/arro3_core-0.4.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e28c2b208ce455a75dad8de73f6ac1d282d8dfa4b0dabf27f9c73920bc44530", size = 2376844 }, - { url = "https://files.pythonhosted.org/packages/44/f6/de068236c8ec27837d0a7874512873cedbb2f83e9b82c884803cc53ee46e/arro3_core-0.4.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0ae2eb0802f59310c4014dad6f0bda6f21ccadfc1bb86e1a8601d354ac148fd", size = 2685255 }, - { url = "https://files.pythonhosted.org/packages/68/9c/38c64751b65139685a7464841e6f3320e5dd7df86acea898eb7cd6011f74/arro3_core-0.4.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf646d4f5f46031bf5ec430b3beb7071ca08f5e7057163e8170c9fe9826c55ae", size = 2467314 }, - { url = "https://files.pythonhosted.org/packages/90/cb/4b49f55685771d9a825a841cbc49d8253296743c76d2654b00b7e3148a1a/arro3_core-0.4.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:082360665986302c8926497d6cabd32e1ae5695356a887d25f4886bcca5e468f", size = 3437400 }, - { url = "https://files.pythonhosted.org/packages/98/f5/fabb6809429a34e0947a74d5be6037c058a1321c37c3de9d7e6211a09b46/arro3_core-0.4.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9aa96c469a601bef4f9e4873ba90ba21d8c55db8b9bc564767993cfed7af91e0", size = 2464860 }, - { url = "https://files.pythonhosted.org/packages/da/97/8d70ca8e6586b01a0e1f3d886f4cd7aacf1683cc498002fd266ae0bba019/arro3_core-0.4.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8c4b18b60f2437e7453910b6ef67b6c9f21dbab621ea55cff3fbdd46d21104f", size = 2623209 }, - { url = "https://files.pythonhosted.org/packages/d1/47/b629893f52cf1b8c0b6e5a4219d7ebe3c15b4aa2d5607a59d2b77d7dfb32/arro3_core-0.4.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c94b41691bd918e546c4527ac99d40771dceba78f4d5e17d102c9e75c89a7c1e", size = 2523026 }, - { url = "https://files.pythonhosted.org/packages/95/32/a422be50d50bc2c902fb8babffe9e9e4eb65baae021ca7117391abf67e71/arro3_core-0.4.2-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:56525947619bf974e2825ff64c72e37874779f07fd861498abd5977a30dfee17", size = 2966876 }, +version = "0.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/28/05c9c72b8fff7e26c6422ffb8c59173bbe8f988b41c7b8c14d7f207dc0bb/arro3_core-0.4.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4ef5bb563689ac1e274c3cd9e15da379093906b0d01c442561f922935091bed7", size = 2383900 }, + { url = "https://files.pythonhosted.org/packages/ba/a9/43d53aba2a31966ec001573ab1fbaf1cb367e1e27b90e5ca8dad2d1d340e/arro3_core-0.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d6443c451e83f5761792cb4a3b3a0d106b83270e2af0c660382e4027f8d7e0b", size = 2144431 }, + { url = "https://files.pythonhosted.org/packages/35/0b/5a45651efd37ae2acd1ed82190089b679b2931bdbf316a2810044e96e1f3/arro3_core-0.4.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f61b4526313006935eabe01ad90f640984a77af519704f51ef93bbd3235d1bdb", size = 2667337 }, + { url = "https://files.pythonhosted.org/packages/2e/ef/a4c110f57a9b9a734461b04985a1af37c9722534a6aee9fa57dfbe183c98/arro3_core-0.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8255943f86750022e8810c438b9c9b50a50ccefdff56a7bcf4a334586ac320e", size = 2514949 }, + { url = "https://files.pythonhosted.org/packages/17/48/2b998890d9850a7edc33bab3cc81f51e98ad5cfbfa95357f6264067f2f4c/arro3_core-0.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63e5bfd37ef54ba39834b04c60ed019831378bf813777faac0b2ce2ece19b722", size = 3513869 }, + { url = "https://files.pythonhosted.org/packages/aa/c9/42e090290c2735b4375d14d846d40fc702b9cfe4eb31d47c6a8eeb3d3b8b/arro3_core-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:095223c0dae98cfdf79c185c44c9ead1487ee6f782f8131deea2b27aec1f1e3d", size = 2487277 }, + { url = "https://files.pythonhosted.org/packages/d7/1b/bea817a6380d74a6f3147163ff2ffed2e874c8bdd35894e83928b69f7e1a/arro3_core-0.4.5-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:19fb3264964cac3d0a9e1149d8a3bdec48209e1a5259f28eadd29e10268f5854", size = 2343661 }, + { url = "https://files.pythonhosted.org/packages/5d/f0/48a7e22465a18eab0218af87de35db661c1d608c9c0afe12b7f9be2a287f/arro3_core-0.4.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a361fa08d309e94851a14a9acda7fff9b191533e0eaa6fb041463454fe53b185", size = 2687322 }, + { url = "https://files.pythonhosted.org/packages/bd/2b/71a9b2b9f328c63e740c9cddbf5c25eaf2be6f347e3ecc333802c5918c9b/arro3_core-0.4.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cea943a3886b06bf1034d6ed539727aa93bc49748905320a8bd4f54547104eaa", size = 2485484 }, + { url = "https://files.pythonhosted.org/packages/69/84/d37b38034a76e5f56ec58f660d139a8d472e3077fafa6ee8db890461db67/arro3_core-0.4.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:107bfa3a4f34e1655a8a62ff1b57ebedcbb8941bab7dcad56f3d4dc837a2f9fe", size = 2928761 }, + { url = "https://files.pythonhosted.org/packages/a3/92/266096673243de9dafc23bc8677407c53e29728104439440c0ff5c264116/arro3_core-0.4.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:acda846128c830e996d6349aa2594130705a235c160df52e373dbb721c8ca8e4", size = 2771855 }, + { url = "https://files.pythonhosted.org/packages/aa/37/c4592c1312d137000f0e0e398357bd8c513616b3060fe9eb15222dea0346/arro3_core-0.4.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9721f38813ee0496262c8dcd1432f137c1069f41057bd71b406b50459dc188d", size = 2662354 }, + { url = "https://files.pythonhosted.org/packages/49/75/fb32538e4396baf9fcaabc1de8666fc7494089ca572e1c5119d36097693a/arro3_core-0.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:60618424cb75cde43490c8a48cf5215a7aa0c85c6524bf071e4e17712d7393c6", size = 2355223 }, + { url = "https://files.pythonhosted.org/packages/9c/b4/10821b5c995c30081a79d92de8bb8f65ce8b3fc873d5a0e7984332ce4bf2/arro3_core-0.4.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:1fb628fcb84030f1748f268018b15f0658d308ec9e52ea60811dd7445f14afd3", size = 2384112 }, + { url = "https://files.pythonhosted.org/packages/84/19/beaae377d0767456c462f33f95f8e9ba989ef8749a4e6a1da858271ec88b/arro3_core-0.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1226b5dd5e2912c52d8cb6ec2f629126b6937419ad25e5b298c1901843777246", size = 2144486 }, + { url = "https://files.pythonhosted.org/packages/6b/a9/1a80f6bc2f42612f919f3b138366d9f8ae29459347c376852e3fa564e982/arro3_core-0.4.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3507a6a33bc69f07015c2aa397fedc736121e4c190aab3a967659af42aa0ab4", size = 2667446 }, + { url = "https://files.pythonhosted.org/packages/52/8f/d600ad486555bdfde9860955acf702acdf80ea406e2cc22be982e2114246/arro3_core-0.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2542b68d63ddfb919cf48cc31a73bbfc49aefe942c1bc696010af7117b8becbe", size = 2514878 }, + { url = "https://files.pythonhosted.org/packages/22/4c/de47cc05e7ef011588208d5c95bb0d020b6ea9656e29a80537b89728f213/arro3_core-0.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30c59b680d1be504011706fac95983038ea90320e3c0a5df4a8785c8bd734e78", size = 3512989 }, + { url = "https://files.pythonhosted.org/packages/81/81/93a12524d53530dab18be2e65414d554938a97588ccdb1c53c2b7c1a1c52/arro3_core-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49f7685975ce0a4a10498433882a6bd31811d62304b15644b3738a4b56a32c67", size = 2487279 }, + { url = "https://files.pythonhosted.org/packages/9e/12/d2803be7e4c5f3ed787371dcdd0f9b1cbee5a301b10b5f54d953450de481/arro3_core-0.4.5-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:382319524b6986e8039c9b4eb04b9613cad962f5d3935e7b966a184590f40b4b", size = 2343701 }, + { url = "https://files.pythonhosted.org/packages/03/85/fb00f1c3271d29a44f0dd53cc45f20eafad5cff132467513dd1d817a3a8b/arro3_core-0.4.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:83a7b420833487b592fa55caf114ef3e68ee2c0684b3739c1f0390c4e268379e", size = 2687523 }, + { url = "https://files.pythonhosted.org/packages/77/5d/ea482ea48c437285515e278aab893934678cfb5b9e16798309836e372c56/arro3_core-0.4.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c12e1996885b79be9a5b5a26d195c50f335bd0057cf9cec4bc4e88e96d221548", size = 2485166 }, + { url = "https://files.pythonhosted.org/packages/22/36/d923ee86950245905297477b1dbedfc3026b742a1bb63c5a6a374b6a7907/arro3_core-0.4.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:b552f008a91da49068ada01d38c789f511c81652294909392fbe4dce3a4b5a36", size = 2928951 }, + { url = "https://files.pythonhosted.org/packages/09/0a/0202c304b11978c93b17c3e08dd422b61319645cd1d64e232362ca3a3657/arro3_core-0.4.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:284e7f70e38c6d6c61e53dd4c970721c6e2900c0985380796a76bfab5a2985ce", size = 2772054 }, + { url = "https://files.pythonhosted.org/packages/30/b4/2e33506d60a2ff2116cd78a3db7d8cef1d522ac2b9ac4468d032a909d042/arro3_core-0.4.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a34f4f9dc326b5d38bddd1009e5c69277ae315a28bdd2127aa3064ce9d56ca72", size = 2662343 }, + { url = "https://files.pythonhosted.org/packages/aa/e6/3969f54c8d7809cedc42e88e8e92c16775d8689c25f2a42f2dd8501252fe/arro3_core-0.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:d1823c2f0e623714519fcd3768a6fa59c769e6044fc66fc6a34a091dc701b84b", size = 2355366 }, + { url = "https://files.pythonhosted.org/packages/6d/de/4d70416eefb82cf1ee30e8e76814877664229293c9621e454e7adbc2af78/arro3_core-0.4.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:50495e2b643d390ac967a533ad181a497be7e3bfa91414cee12d4bb345c7e19f", size = 2369336 }, + { url = "https://files.pythonhosted.org/packages/60/66/2b8b5f74859fd5acb0e6df466ceb3fd7b01fdf361f6603fcceebcfcfc54b/arro3_core-0.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:550dd93c44f2462519c85e30bf88ab71dcada4c4ddf0cbef72cc016200479ea0", size = 2132754 }, + { url = "https://files.pythonhosted.org/packages/dc/59/b4845d5984ff126b146caf3b9fbe603e39e96703d48a19f21424041c35c8/arro3_core-0.4.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0d1f13ad10440066cd7d951c6796d2e30bca558dcedd9f70622a5f4540b70d7f", size = 2654942 }, + { url = "https://files.pythonhosted.org/packages/65/41/c890766a4a25928c12a1e45996aa70a5c79eecd2ab71c5e6ad8f317702a7/arro3_core-0.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3645ac0bea6d6e146998153b1bbc17cb7b94708ef51097d318d9fa23bb895098", size = 2508820 }, + { url = "https://files.pythonhosted.org/packages/15/af/5753cfa8f1b2bd9bec9e6f4cc597f39f9ab4aa59bd78067187849a5c41bb/arro3_core-0.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:113f658be221f5b1875905988fe73f265cf5ac2d0d551edaf8a377233b691c4f", size = 3546579 }, + { url = "https://files.pythonhosted.org/packages/dd/68/0f1b5a05f29d5aeef7c20d646d8598eaba08d19da9b195e0effe85ec5183/arro3_core-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7cbc6b7577e4c2bcca980db23e0be986d6889e3ef322c85f35c4cd8af210d2c", size = 2485782 }, + { url = "https://files.pythonhosted.org/packages/3c/a6/fa62a6af2e18232498e72f594d774855c3679c49f12954958f8531bcf30d/arro3_core-0.4.5-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d8e61a591f2f63c610fda80a9e10e1541674a3e582daaa3cedac351d10033af1", size = 2338831 }, + { url = "https://files.pythonhosted.org/packages/44/c9/99ce2eb3840ac02d9070206f37c4e5fd4ffb161dc5808ff4dd35b62e9e97/arro3_core-0.4.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3b47354ff584e9b129ad9c9f73552e2d15144081d6c05cd8244be59da1afda9", size = 2679555 }, + { url = "https://files.pythonhosted.org/packages/0c/fa/5cf21ac70a445c01869d64b8204fc84d61bcfebcf51851f2aa7d8bf5253c/arro3_core-0.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b69447fd9725c8c9b40d29a3149b44736e5e5993a048ee5980509713ede0cdb7", size = 2478985 }, + { url = "https://files.pythonhosted.org/packages/89/78/58e6cbc9acade1e5d7d019a10b8ce438125a45ada4cc55df7fab7f18e79b/arro3_core-0.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ef90c5cdf31a68eb98da024700096fe77a47fe4a1de24312cd8cf3472868e529", size = 2916793 }, + { url = "https://files.pythonhosted.org/packages/57/0f/1af0878d6ed28cc7251b655badeab8a3bb12d3e1ada7b0c044b3addad873/arro3_core-0.4.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e04504728f880c775e58abda44914e04e94d1bc8536da5ff3d2ca2ba77bef7bc", size = 2764614 }, + { url = "https://files.pythonhosted.org/packages/82/11/518aba36c488e32b94b231118530a4e8e328555944664c85a5977b55f16d/arro3_core-0.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:71278f35bee941324581a19b3de6d444e45f17358692a7920932ff7a9aeb390b", size = 2659801 }, + { url = "https://files.pythonhosted.org/packages/c1/dd/ae9ad933a10928431f728112ec9e4267fce7db61f87106a1bf938f24b666/arro3_core-0.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:6cd0552dacaba312c87f6062e6e6f5d707ca29eeab82f3d4d957b341d536ab87", size = 2356558 }, + { url = "https://files.pythonhosted.org/packages/d8/e2/6497744aeb2f0360592bf753eef3b3c9ae10b48b598279d3ef496924373c/arro3_core-0.4.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:db802a712a68a4bfc6ab167962ccf8fc2170569f6232993545958562bd48937f", size = 2368914 }, + { url = "https://files.pythonhosted.org/packages/d0/2d/546030085123e80e849575a222b307e5a45608453a54368bfafe644d6492/arro3_core-0.4.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5465c828b3e0093e68cc96fe845a75263dd4b89e9864086614147bf778112c87", size = 2132271 }, + { url = "https://files.pythonhosted.org/packages/9a/58/3760815ee9b1a769f22bba4705b5a84a0cb020415201e97c97d4142ac375/arro3_core-0.4.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:89a64014998c7bced9ee84e5b33c47096670f2a5d4250c9beb3aebbe70f64071", size = 2654427 }, + { url = "https://files.pythonhosted.org/packages/77/1b/20a25dbb5debf2a358130cacab0f66815384db6ed0fe2e761a59ee48d2bf/arro3_core-0.4.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8acb6cce103dfb56cdf69ba6a6471ba4beea062b2df7a0c061a6e04414ab42f6", size = 2508290 }, + { url = "https://files.pythonhosted.org/packages/2a/e7/877c88d1d797ab07a7293082214c52883927625594dce23094634aa72e87/arro3_core-0.4.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd82248bbd7971e73c5acdd42e3efbfee141413086c0ec6d9f527818fd17300c", size = 3554592 }, + { url = "https://files.pythonhosted.org/packages/6c/9d/698dd7c5a56197b9458f390840d8596dea65cb62bcbffdac8e8a40512398/arro3_core-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1d703238cd10ee52314b71620897a6830769128f8f665179778e773e2a7e18", size = 2485344 }, + { url = "https://files.pythonhosted.org/packages/11/96/60758cc7b7dbc9f52a55d81f973c6d3d6666038f993c37e06c8ae1ebb078/arro3_core-0.4.5-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:790bccb515dcd015d0f04128423f312ab6adaf226573f07bcd768c8af46f5814", size = 2338545 }, + { url = "https://files.pythonhosted.org/packages/c8/57/62b8443d8d7fe4dd8c4f5a90f2fad1b844ef7822966e9d6e5e0a5369a0f5/arro3_core-0.4.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8639e08e6f289976420c728572b97c60d339e4577568d4b148d962bd16f14e19", size = 2679301 }, + { url = "https://files.pythonhosted.org/packages/ef/85/def91d17cc77d8f5e37bd1b90be54aa74403f9f1eb0b9a840f367a792a7e/arro3_core-0.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e79129ed90b32159b627c25040222f6ab987aee347b1b942d4743d1bb6d27f1a", size = 2478468 }, + { url = "https://files.pythonhosted.org/packages/ea/36/e58dce0cd997758af9188f7085614ea8852ee5f0c13960579a658a5a39bc/arro3_core-0.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:53c7568699d185f3f75c39c4e476b5c871c461e4956769e627acdacdb1199951", size = 2916412 }, + { url = "https://files.pythonhosted.org/packages/c4/a6/9719dee21ec18a5556d5faa7bd15fac4249fe5b270bfc974afbe8e3782cc/arro3_core-0.4.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aa057de5d3f5e3624f1c4d4be924f42def0f96fb67673ff4cfb1bddc57ce5824", size = 2764217 }, + { url = "https://files.pythonhosted.org/packages/b0/e6/be087204b946059e8ae1276f8a557112cb8d47a5f4255f8fdf87b4ecca32/arro3_core-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8260cd4bffded2245718e011c595b1236e682863e7f8adcc0b3029272da34fe", size = 2659439 }, + { url = "https://files.pythonhosted.org/packages/8b/ec/eedb545901b067a0de06dc4fe2d1d21ce439fed1e7f0aca2d3ca87f5459c/arro3_core-0.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:fa90beff5023f02836a9943702cf4e258b112ae05edac6c7f6fffad1fa1ea3ed", size = 2356197 }, + { url = "https://files.pythonhosted.org/packages/31/0f/3a5456bebf4964910628331afde57bef8f7c3b87ae3636567c597d86ed22/arro3_core-0.4.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6b60cc70b6bb31976dc3ae3ce8c21ffab3f4a85ab73b5ce1f65424cf0dce7a7e", size = 2382370 }, + { url = "https://files.pythonhosted.org/packages/50/b2/d1b86f3d1fd253db05a62d5dd874f8c975f88f18c5235c8caabccc67a1b8/arro3_core-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9248a0cfad662270c03272b7ddd96c9b62fbf7d4b00287a6fdf222714418b2cb", size = 2144098 }, + { url = "https://files.pythonhosted.org/packages/bf/15/399abd3243569835143e0437dc1587da7e2668fdf15e402b86272b74cb22/arro3_core-0.4.5-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d718d968b2ad504ebcdffe36ff7078ea62fe9cc7cee1d175df0582668a95902e", size = 2665983 }, + { url = "https://files.pythonhosted.org/packages/ac/b3/0b7f9d83ecc3ceb934ebf548d0373299f80fd7930ea1fbca1a3e614ad395/arro3_core-0.4.5-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33faff8b19ebe8839e2e7dc2590c642c3023fe1bc70ba78ce18c5e345b523b89", size = 2513984 }, + { url = "https://files.pythonhosted.org/packages/7f/cc/135b5ba86a0110cc9cee2f572814f9b4d4faeaf0f5577c1b8268b6e65772/arro3_core-0.4.5-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8176ee4269c12a431786d21125979c326af1f9efc59b23400b4b28dacf4400af", size = 3509591 }, + { url = "https://files.pythonhosted.org/packages/73/c8/ebd3c18b94b3734a613e07004052b2717bc8ac0240a68257b33ca30abb9e/arro3_core-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:474f619583e88043213af7c8d1d381bfa6f3f52cc6f582f845b4a7b08ad609d0", size = 2486035 }, + { url = "https://files.pythonhosted.org/packages/0b/ea/4cf22b5ec372de2350f5ef10031bdbfbf016b40a9eca9e6210ec3f413e32/arro3_core-0.4.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a48cdf8ebb891e249dd5ccdb0e97e3a25bb394dedc0df968a330cada899f6e77", size = 2342692 }, + { url = "https://files.pythonhosted.org/packages/ec/5f/3fbb2c230b79a8ec0391abc83b680e493f697da31257f0174a0ce9632806/arro3_core-0.4.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e83c8d3fb1c06e396c2600b5e93efabd98ecc8e19e0c7f30024a0d72d4859868", size = 2686733 }, + { url = "https://files.pythonhosted.org/packages/b6/be/7cbb590594fdd2596c9300c0ee05ad03620c7f963a70d9fed01d2f507364/arro3_core-0.4.5-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c643b1540f326d213d9e910d99ed11258880bf3bedb753ee6f791fc6d01f86fb", size = 2484257 }, + { url = "https://files.pythonhosted.org/packages/19/9b/b3fe104338d0f4b9f1abddf172b24989d1bbdf9c10db38f53ebf2bfe5f18/arro3_core-0.4.5-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:f0d0f5044c9573e1b7443d1d383143bfe00adef17c5de3e085e3b33684876647", size = 2927734 }, + { url = "https://files.pythonhosted.org/packages/0c/4e/5b0f655462fe90ab13a892df29897e21cec2a5eb24aa0ad664ef93b99a1d/arro3_core-0.4.5-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:209a3ef1f9e89ddf02709b03e3c317c96158f5952a5e6ec2179707483990a0f9", size = 2771296 }, + { url = "https://files.pythonhosted.org/packages/be/ae/12bb4619ed78ad9845e8d425dc96b97d90728cb20e2eb75dc563ef124159/arro3_core-0.4.5-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:a08a76a48a756afdfdc34098810012fe2a86f87289b39cb6049691ae51a4744f", size = 2661378 }, ] [[package]] name = "arro3-io" -version = "0.4.2" +version = "0.4.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arro3-core" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/a0/be194e4b55960f4f2fa87b8bece49548b64bb7f5ebcf1c7e61f5cbdb3786/arro3_io-0.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b813524a097dd2f276cf15b0d709a358066fe940e222ee97f32b1b6be16306a", size = 4074385 }, - { url = "https://files.pythonhosted.org/packages/c0/20/84e60dbf7f8832fbbb6a80430e91e3a8d9116e8c76c32c8d91afed9fd164/arro3_io-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e24751e5158b5a1c69a5f53c2c093d318fe366c9fd10258981cc083351e3be6", size = 4530514 }, - { url = "https://files.pythonhosted.org/packages/c1/f5/7b0001d83531d105d357ad93ed470413ce4e5c48b6fa37eca2f32d04bcc8/arro3_io-0.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c0dd9b06f590834c4751b157d9204dbc21b7675e26fd9157703bacdcae800223", size = 4947143 }, - { url = "https://files.pythonhosted.org/packages/6e/ba/cbfe9f953324f9c4a3f6d9d4245317436a37835968c0e8442d7682f16873/arro3_io-0.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8e35e7768ca890db26ae56dba7c6bb2d9546371d06e358d490bd5aae2d6f18fc", size = 4779697 }, - { url = "https://files.pythonhosted.org/packages/56/04/58cc2984e328d0981eae2ef1b1cc95c6a254cb4c03eec84c082da3b03c91/arro3_io-0.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64472eab7a1f814965e8f463327bd1c0b7f34cbc11fe6a335b532bcfa334396", size = 6142936 }, - { url = "https://files.pythonhosted.org/packages/3b/5c/54e08f835cddfb168e2bc942cb5d576cbe073235b9eaecd7b425c126035f/arro3_io-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce2156efed8fc5ef9103c601e327e36d9e226706fd3b83939138f0b0191c3db2", size = 4736158 }, - { url = "https://files.pythonhosted.org/packages/89/f5/5a081665821e3aa85e1aa7a7dd814b7ca49258e1b862297f916cb67afa8d/arro3_io-0.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3df8c13af00737d97f9032a372f15d3e73e6633f30c6d8a79afb0306004be4cc", size = 4885453 }, - { url = "https://files.pythonhosted.org/packages/aa/da/45b0c151ae09b2e2a3bb73e65edb3e63db6d9fc94ec8dd618ddcafcbaf8a/arro3_io-0.4.2-cp310-none-win_amd64.whl", hash = "sha256:4d3f7bd5b577777eb4a727e85bd41de866156736b073bde513c674194920b07c", size = 4484754 }, - { url = "https://files.pythonhosted.org/packages/66/e7/90d67323032519ccf311cca376cf194108be497e4b04fafa562983977d2c/arro3_io-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fa2cc5fdd80b284883235224ede8947dcb7cbe2d6242881f206f2cbf6a4edde2", size = 4584623 }, - { url = "https://files.pythonhosted.org/packages/d6/96/4f666cd2c8670d3b28c96ceb4bdbe7602ee6d7af7f09696002d7b4f91d0f/arro3_io-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:31d25591bc299a4edcc43bfb3660fa66f0da2263428bdec5d198c4f718a81331", size = 4074294 }, - { url = "https://files.pythonhosted.org/packages/fd/cf/9422864bdc1c4ba80a6ac90bdca800e2625541834f80e5a86082062a141e/arro3_io-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8646aa2724d698e077ed05dab77d3386788466451c0f7fe21151e4b40cee33aa", size = 4530602 }, - { url = "https://files.pythonhosted.org/packages/e0/5d/5968ab8feed0cd3c5b156e8a26b7ba0c6de1928181c50524b5fe50284731/arro3_io-0.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7fa4c86d5c0347e854b003cb26661df700753a6ab44cbaa5d0a6e19d2a7938e7", size = 4946993 }, - { url = "https://files.pythonhosted.org/packages/3d/7b/66a369bb3abb545396b32c58c73dcd7d2b28de104dbcd113e946fc201185/arro3_io-0.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f81b337892975fb04ff195511abae673066ed54c2aa754d667ca5a324cb8ddf", size = 4780094 }, - { url = "https://files.pythonhosted.org/packages/c1/df/1c6fca4cb240e63ca8f3ed26b90be180042caad7f31077c23ced1999a4d2/arro3_io-0.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d5ad15aee0c3783aa444c695d08eea6eb4a7bac5cb6df783d6913339999a060", size = 6142336 }, - { url = "https://files.pythonhosted.org/packages/42/ce/b957f8926aaa6b23a8d11087d5e007f30d8a659735836ff0d84aa95c4b8a/arro3_io-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f7db7c8853798947f7c93b3426f8b744e043afafffd93ef9af1e690249b8310", size = 4736013 }, - { url = "https://files.pythonhosted.org/packages/68/5b/c1e73e59bec0256c0ec89e6c8b201ee160444478af8c8514aee075936d57/arro3_io-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e943c8573deb8304610d0fe6a8f7124139a6a845d7a456833ddfd8908d7646d0", size = 4885409 }, - { url = "https://files.pythonhosted.org/packages/71/8b/c05ec6879a6caa162693e87d24e5702c787341e6848dd1bd9b0b7ae45d6e/arro3_io-0.4.2-cp311-none-win_amd64.whl", hash = "sha256:08270e95880371157c383d5a992ee8745f0268ce2bea93b66916e240de5cbaf5", size = 4484781 }, - { url = "https://files.pythonhosted.org/packages/56/c7/653f38a539eab4561528d62afb5f4e0776cbe3e496548ad6b0ed73759956/arro3_io-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c3d587a62133784eb4cefc73cc998e726fe1bbcad08d790a94e4ea3b3e3fd45e", size = 4584161 }, - { url = "https://files.pythonhosted.org/packages/ac/6a/fb9d5c94f1d5cc2549238d06c227ddf801656b70508f292c47151d89f60a/arro3_io-0.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f2929cfffacdbf8210b7a60db0b0272d33e23bdc4f3c0a6ec17a8eecf16de1ad", size = 4075064 }, - { url = "https://files.pythonhosted.org/packages/76/86/75ef9b112639043d961093bb9e8f3e3cb119cc9aa8f39a70d1f22d78156c/arro3_io-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fdb50ddd7ee7d5d895f951ab430f17779c00365d2aeebc18457cf13bc7f938f", size = 4530497 }, - { url = "https://files.pythonhosted.org/packages/25/13/35934f443db844de02c797c5ee98162b2b47d25327c3cce03438e37305f9/arro3_io-0.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e3d6bcb3e9383dca126da8874ace7f82f9c5fd230a390132038b627cbf8924a", size = 4947110 }, - { url = "https://files.pythonhosted.org/packages/01/94/5b28a28324bd8e9a6eddbe05962d4e83994a309c0d8ed5503022cc460ecb/arro3_io-0.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4cda77e2c4ae965268d2437f57b6e277edf039b1b2322df3f9b0c24de5c0d6f", size = 4780035 }, - { url = "https://files.pythonhosted.org/packages/0b/e9/14f2ed5aa4f18b177b2e0032bbf0c2e9668e1fc4851934891bb89dcdf234/arro3_io-0.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e794f88c4927b04aecddae6390dc1422ddc0103d12f244430bc9b41f3e1f98d5", size = 6135878 }, - { url = "https://files.pythonhosted.org/packages/ef/19/b2f3d3e19d9fca09a4998d7dd0ce815a5c7c18a8484a70c84e3ff7a3b7b6/arro3_io-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5b0bf9468f3bb72b4ad101d075a497c2e34a8a3aa0d5a14207c2cee2305845e", size = 4736383 }, - { url = "https://files.pythonhosted.org/packages/fa/c4/a0b657b42c4c8eb7f93b68a641942c302fbaa3bd32fd2df3c78b6cce97c1/arro3_io-0.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:51e37b856f11f540bf3e5d637d29e57629876f6f5f5a80f9d3b5c3eb4eb47b41", size = 4885205 }, - { url = "https://files.pythonhosted.org/packages/45/6b/2271e6ceec832be401603cdebfb252f788a442c71e632ae138958029ab9d/arro3_io-0.4.2-cp312-none-win_amd64.whl", hash = "sha256:7cad7391806823517d7fae2881e356f8d042ac5d884931db2766b1d41cb4eadc", size = 4485014 }, - { url = "https://files.pythonhosted.org/packages/dd/6a/e4e7b2b02156ac79be980c68e549c210807912c9dc05930ae05645283444/arro3_io-0.4.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb7b296da15f4cdddb2b1c3e9bcc512bdeb36f191e6777e125178983d49846f2", size = 4531094 }, - { url = "https://files.pythonhosted.org/packages/b7/f8/dfbfcd6556db6fc4e551819567c328cc16f19023b5fa51f38ba84ab3da89/arro3_io-0.4.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f5a3194d8df6dbf60dcb3da02c3d21a07dda2ab5f18ae1a67ef6bc86915682c", size = 4947842 }, - { url = "https://files.pythonhosted.org/packages/5a/58/6fc73ef8014fa0f945067f98009ad1ab18d3bfd88010ef9ec7921cfaba7a/arro3_io-0.4.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d015797096996cd2b502a2e3f3091ccf92ba9ae2af866e916e44510ab5d21e69", size = 4780723 }, - { url = "https://files.pythonhosted.org/packages/5f/b2/0fb943145f908ef8d94867b13ecd4d5f322c60266e6dce7798001ba2a1d8/arro3_io-0.4.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8313f74640f1af23cea538107bb96fca70f6b5ebb7026d35491d9e909500bb6e", size = 6143170 }, - { url = "https://files.pythonhosted.org/packages/27/6c/0eb55ad4cfe20003a82538490c53dcfb47f998ff29297a840bfa3acef4da/arro3_io-0.4.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b2057dc6bdc868dbd912ba2ec69816bbd20907d601f8d52d04062a90b032abc", size = 4736787 }, - { url = "https://files.pythonhosted.org/packages/61/b9/85d02a838b28c08ec01078d596a728b6728c3e35ff98c964ffcdffe7b672/arro3_io-0.4.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca5200ec24605cf8433e4d01f71639c27afc259fcfb98aab46648e2c15ef44a7", size = 4886146 }, + { url = "https://files.pythonhosted.org/packages/6c/dd/e22c07d41300380cd85bead61607050d655653e27f01c19ee8a29abcdf54/arro3_io-0.4.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1fae3f423344e51f0dc0c43b92a384e7951604fffe0c0f45aed67dedc5cc1e3b", size = 7216421 }, + { url = "https://files.pythonhosted.org/packages/e7/90/41aa6563e5d17357c184e08db05e2a1f0bf1d94b9b35fc97be71234edfc9/arro3_io-0.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83f88f607849f6820d6d82cf0c48cb195bb94b7bed945caa457d6943211c7b90", size = 6603038 }, + { url = "https://files.pythonhosted.org/packages/94/98/5260511ab5af78cb85322b815a10f9443d927e760837f469272dd7cfdf22/arro3_io-0.4.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dbfdada5e1e10420aff9a0076f0f63758ac7aa0ceadc2cc36e33e881a0a6d708", size = 7468951 }, + { url = "https://files.pythonhosted.org/packages/76/19/b26759d0d7c64c349e141f1dd839fd5932d378a2bfabec9f64c510700e93/arro3_io-0.4.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:520a15914b57f545f9faab0f06cd3fa4ba714cc941fbc95f007c7c829e152578", size = 7594573 }, + { url = "https://files.pythonhosted.org/packages/d4/67/b48678925a64b2c80adf425084a236625ff573a5fd894dd5286abe855488/arro3_io-0.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff7874169ad80885ad1faab925fe2a7a042ab1314d57433c0fd53d03f7b17d89", size = 7676418 }, + { url = "https://files.pythonhosted.org/packages/80/6f/7e224030242fceabff17fb3a8eed07e25e026e175e818e2da5c163d2e15a/arro3_io-0.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5da426b7ab6a6d98eb0e7438c3b4569cff1413702c631f74dd1b7ef2612c3ae", size = 9582256 }, + { url = "https://files.pythonhosted.org/packages/2f/03/c419e044e1f72c692d59e24174d49c18860e7cc32b6776a4990a628e9301/arro3_io-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f49034efe759a29e9e26ed8473e9dea7f0c6ab013033b446abc66c4affe63d5", size = 7516478 }, + { url = "https://files.pythonhosted.org/packages/f6/ee/3fb18ca25bd7437d7dbc973d6ce8fc3cbeffec4b09ad826e22d7acebc4fc/arro3_io-0.4.5-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:5f9478bdea49dd00216637751ea0068758614bdafe96003cf9032638fd033c9e", size = 7124278 }, + { url = "https://files.pythonhosted.org/packages/29/93/857ebe9ce925dd207080053248e24f18d599c509573ae788e8cdb1a44f17/arro3_io-0.4.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:877b36409f6a2417f01b0be06afa4ea1a8e49a17a889ee27d4851ec5c260813f", size = 7262454 }, + { url = "https://files.pythonhosted.org/packages/8d/90/0a4a14a78885206853a829b0422cdfc6b8ea32048d3c4ab3a6eed52c1eee/arro3_io-0.4.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a32088af0a9825509b0af369d4a7d80a98005cca9219c23872f9eae2b91e950c", size = 7679872 }, + { url = "https://files.pythonhosted.org/packages/84/00/fdbf20b83fa78710783637ecdc7f3eaca2064c8f24fd2bbda7bfa5129165/arro3_io-0.4.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a463df3e05381ab8c9c52a950c6a2574bd7d0546ac2e8443bb30ea628e8c7c4d", size = 7545099 }, + { url = "https://files.pythonhosted.org/packages/18/56/0ca617d8358a3bb21d5b4c5b68e3b63ac7da494802f28e4f998a424e4905/arro3_io-0.4.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e18945c87687c0f63d5385db70b455e24f99af9c22162c71a34e7dab84d64a9a", size = 7685959 }, + { url = "https://files.pythonhosted.org/packages/93/5d/c3a24afc36da0462dfcadb7ec27dfede1368277f80bb5486cddae7fa454b/arro3_io-0.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:afc3c6506d9e2abaf0c943db98895f9bc3b2a9b13df6ad6389e19045544bae13", size = 7189697 }, + { url = "https://files.pythonhosted.org/packages/a4/86/f6c0e7518bf15aaa3bfb84cf8bb201acb5763cd84b720711f186174e0fc8/arro3_io-0.4.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:730de8cd9b038309f032b30d2df82388310cef3a93f55ceb844d0ecebcf62459", size = 7216655 }, + { url = "https://files.pythonhosted.org/packages/12/84/3c2c0854cda3611d49e3b728f2c2bf423e2916f6d462bd36ee6a54f7a057/arro3_io-0.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a0c8a5fc477515d5741bacf5b3f821c882e52d867cca7aea796029410ca60b6", size = 6603137 }, + { url = "https://files.pythonhosted.org/packages/01/d9/f3721bafdc2720e69c28276367d29cd530fdae44e7a0f8268b411ad4e8ae/arro3_io-0.4.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12cc142badd19b5e5b6d18955655f0facfa5ecfbe2f86a06d90e523d3e5957bc", size = 7469021 }, + { url = "https://files.pythonhosted.org/packages/b3/b0/7606161d7ab940ebc8824a8c3ab0f083c30c67dec0f020939812626cc8db/arro3_io-0.4.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd242e60bedbae84cd9f8d78f933c813a12b6ac49ad009c8b2efad129606cdf", size = 7594496 }, + { url = "https://files.pythonhosted.org/packages/f5/2c/eb3485eadb23c115256f13f3825210d4dcf9d4fac11913031c015e4abbae/arro3_io-0.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:702ad9a704a5026688b2d9f4dfbc39fea2739d4fe8e2e2731ddb1d68d9f459f0", size = 7676784 }, + { url = "https://files.pythonhosted.org/packages/36/26/ad87a9570d8797c2b86b632385f25564efc766ca35fc0a8bc6516a2ddfa6/arro3_io-0.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bca9e45cb106e23c1be4ab68cd25978ab03c94fe04bbfd3109c2362131d251d3", size = 9570187 }, + { url = "https://files.pythonhosted.org/packages/1c/77/d8b12c199e2f36c98bb200295cf94676996596b7ac34720d93e665d6a0b8/arro3_io-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ece915729eb446fa2d9f1608c5cb58d69ad743ebe2b8cf358371fdb447b5c38", size = 7516486 }, + { url = "https://files.pythonhosted.org/packages/4e/46/26e5d5c8ac86d53cb2a3b7e9b091bba603acc43fc157b25abcfaeba49bd3/arro3_io-0.4.5-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:8931eec8778c5ec656bfc6ec9bf19107685d40a74747d43814a9e534505d7d4f", size = 7124361 }, + { url = "https://files.pythonhosted.org/packages/4f/31/c9b85491e50cb9987f3cf91703dc6002aeb617f4c4a0e61c3f30d55c20a2/arro3_io-0.4.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:18d643b9d7586a41046984d018439341e3d8a7f14097742b087a7b04205b2d0b", size = 7262340 }, + { url = "https://files.pythonhosted.org/packages/92/3d/6bcd8e75eff1ff5c421be8acea9abd1c358626799ac6bc9c7ee3b87c4456/arro3_io-0.4.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:234e77f8fdb87c24ab076e947d3beeab9a24e74832fef07ab8af738d54b440c5", size = 7679799 }, + { url = "https://files.pythonhosted.org/packages/93/08/93e2be540bb782871f68dcc4a091d6df4e752a67f09c4d9ee5569dd33eca/arro3_io-0.4.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:eabca96f224ddd19ed19379e41aafddd7402126db7c67bbeb0222dd571bf3b10", size = 7545607 }, + { url = "https://files.pythonhosted.org/packages/fb/6c/6ec1829f67b3c5ae2ee06be5b3c9b1903e68f923e6d7210d0b31ea655543/arro3_io-0.4.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:040aec008616ca4d69bd057af4b93b78eedd6e2f2bf81ae4cf74d5e99df79cf2", size = 7686215 }, + { url = "https://files.pythonhosted.org/packages/b4/3d/89f5d210eabf0c42d29deb604c830beca07b162ef6e71677bceed3bf0298/arro3_io-0.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:679517d83176b5b80a3ff2ad999abd87f7572ced70767a8360c15c853cb377dc", size = 7189909 }, + { url = "https://files.pythonhosted.org/packages/b9/a2/0a49f1e56fa832c84a85b5d30d6295065b2ab8798a8effdf91f3fb3ab5f2/arro3_io-0.4.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8122a1822659a2210d6c3c280b855d421c08a1d5ca8b4eb815ed2b8426b2fb49", size = 7210346 }, + { url = "https://files.pythonhosted.org/packages/f3/95/15765518098a0d209ee5e55fc91b52640b39b2f3859e03c8420b66a9be57/arro3_io-0.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ff2e61e1d702c1f143137b0f58bb847d9f555ef2ffeeb7db51d504dfeb6f4d55", size = 6598795 }, + { url = "https://files.pythonhosted.org/packages/fb/10/3b930b76bc32efea5f188e23c5b220b3aaad2dee4e6fa7707a6c48ff3015/arro3_io-0.4.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ddb6b32750abe314c967240b7dae6f21eff233c6acb9873c1a4073383dea23f7", size = 7462508 }, + { url = "https://files.pythonhosted.org/packages/15/1e/b3396796adf56f624854313c843c9851a6f71354c2bbfce000c8a05868ac/arro3_io-0.4.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9162eb840133d72f706075898cc508c33e41ba1c702d94471ee83ab04f5c0a5f", size = 7585377 }, + { url = "https://files.pythonhosted.org/packages/43/3d/9324633c5170650fad23a424e541fc015e7c04ada6d77b08d69ced7f6d29/arro3_io-0.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b4c58968b5dc160b8ffb552d8410038097195ec89a09c4979d40d84902629dd", size = 7669853 }, + { url = "https://files.pythonhosted.org/packages/36/57/47053b6cd7c3388afec89c8b1985cdd314b862e80874986aff8e2b3ff0b5/arro3_io-0.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4f9c07c06ef444ed1e4dd55983104f7e9c9d9dbc306876aa3d2b1eeb2fdc2ba", size = 9590016 }, + { url = "https://files.pythonhosted.org/packages/46/67/adb64c7be3304f99ae9a7016649226eea36fd096b59674579f9ca229da55/arro3_io-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc00381836150d46734b74fa08a0ffd2ba65fed93e5a58ef9ab8defa4143645f", size = 7509817 }, + { url = "https://files.pythonhosted.org/packages/76/0a/634a49fed27d9a9f3bc2a609fea3a192ce166e701601c08b1acce8a143c9/arro3_io-0.4.5-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:7f373adc246e3387242eca3dbe512cae09ac7c414e62e5a35e7189066f97a7e7", size = 7115769 }, + { url = "https://files.pythonhosted.org/packages/38/ac/910a5006ba59bb43466600dfb790ef1aaebf3d7bd6ebd38b4ef9fdfcbc16/arro3_io-0.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f5bbd07b618a01db04acdd110598ef00c3aebfd7518e96fb8067de4b99faea89", size = 7255768 }, + { url = "https://files.pythonhosted.org/packages/c5/0c/2bd7e1acd1989c9cea663431d6a5f1d1d9751a9d493535b5cf1cfeba1273/arro3_io-0.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:8943b5a49fa7fbf660833fdc636482dfe6d6455eaac512ede3c263ce622b61ce", size = 7675277 }, + { url = "https://files.pythonhosted.org/packages/13/e7/539ec9f87f58a222c6a3881fc4ff5b75d2b5902394d138b4cd169a76a3e5/arro3_io-0.4.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:07b670e162b3aaa2b663418e321e2d4262c8f2c37198f41c61d79a13b79c6343", size = 7535502 }, + { url = "https://files.pythonhosted.org/packages/a8/40/7f8481fb35acdac5538713d7d20e6dac82f431421a57064c76cee57ba07a/arro3_io-0.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:69a04284c242ab7eea70282fcd425616d939a04deef766d9dfe4292b9a3a0cc9", size = 7681054 }, + { url = "https://files.pythonhosted.org/packages/50/45/0f2cddac4da9af4fca3db0c821c6e4de44628d6d977eeb0ad439cbfd4d78/arro3_io-0.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:bd457d7bdb451b67d90292e90e58ee4b32a9a23c3350a72cf40a59aba0fd36b5", size = 7188955 }, + { url = "https://files.pythonhosted.org/packages/cf/2d/5dee3651c9f6a9f84fe34960bc8f9e9cccb8e5e27f2cc17cd792134ef87e/arro3_io-0.4.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:c8b521f5b05fa956c2e4c0b59bc88f15370dc6722f5efe4746f659dd0f3a1045", size = 7210126 }, + { url = "https://files.pythonhosted.org/packages/ed/64/5196623e40bf2f517002809b5972e46c695e35999d44a83e28a1134343b6/arro3_io-0.4.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22b6b3b48a4b25534709fc445168bffe783cee112450b07bd03e316d3a9f82a4", size = 6598270 }, + { url = "https://files.pythonhosted.org/packages/d6/41/3ced04580bc89540069ea1b5d7ddfeee77f664a3ce4f1a72ad42e987fdc1/arro3_io-0.4.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0dc82139512e23f543aeda55b4a5c0f67665f1f466b66a6cdf64b9b8934fdb0b", size = 7462035 }, + { url = "https://files.pythonhosted.org/packages/0e/69/33455272d02f008cd1392a779be89f61d6a52a3727a6b099ac70e7642bcd/arro3_io-0.4.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bff78cf8bda79c7727dc0e04f511e856df8a5a5371f7858ef501588a0057c9ed", size = 7584978 }, + { url = "https://files.pythonhosted.org/packages/48/4e/9e9e459f4d9c157e208a73211a5b1d2d0a08b55536e2bbf746a96e5c2541/arro3_io-0.4.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d2aa3e606f4ac45f53162781642c06fa596c4bad0ae92307c359e606fd00374", size = 7669323 }, + { url = "https://files.pythonhosted.org/packages/6e/77/c6e6aeabea5337710fe83dcc56c4867f7887165284e8b7f9b57179f3e549/arro3_io-0.4.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5e1cf172fb59e204c8c5db6cc546cd5e2c88b6c8c74d872746998a64b69e0dd", size = 9602008 }, + { url = "https://files.pythonhosted.org/packages/aa/37/111cafdb9d27e53a336d6f95e1103fc8ecb1cbf0eb86ba9cf3c9a95a3946/arro3_io-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:561a065324d5d55de0529f69f4c4c1905a718a04e29d9a628f9f1e86eab9ff2a", size = 7509294 }, + { url = "https://files.pythonhosted.org/packages/6e/d4/f06cf9c114c3e2bc806dd44e5c94bc5f1a13d27346796b8768530365a965/arro3_io-0.4.5-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:a5dca181c565addde49c07cc91c343e18b5ef8910bb9819b24dc0865ede8ebdd", size = 7115026 }, + { url = "https://files.pythonhosted.org/packages/0f/4f/9fb2eaea0b63a816a76ecb5dfa454fbad0fa6fdcafa58dbee8211f47abfa/arro3_io-0.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76aa0581ee5fdcf1399eed6cf2113fc739d5055cc0f9052f9b58bc8eed3363c6", size = 7255680 }, + { url = "https://files.pythonhosted.org/packages/4c/43/a8244b2e04b4989ea383889a27cf5f8a51c89046d74f891fd9ed54e2098f/arro3_io-0.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9445accf70ba78ee5eafa8126217a1f16a8b9fb77ed1529f2e5350f54c3daf5a", size = 7674984 }, + { url = "https://files.pythonhosted.org/packages/94/bc/22ca07dcaffb8acb537237443bfd88cd43e188a393ab1fd0f331504a623d/arro3_io-0.4.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8ba7f7a8bcb07d8ca1a99210efa197770582841259d663d837533c4051c7bd91", size = 7534726 }, + { url = "https://files.pythonhosted.org/packages/4b/eb/ebbf5bb0b80f0c6134f6d9502a29b8150558206ba6e7585b7e5b18a2b1f7/arro3_io-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f529b9c6c65dd0c7d69ce63dce0e8e120876967a8daa2893b45181a32dc3eb0d", size = 7679619 }, + { url = "https://files.pythonhosted.org/packages/39/28/a5d92e3f14010f50cde0055d334d5d50c2091a09c03dd4acf98b6929bfe9/arro3_io-0.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:cd362d597b413335c8968c6039757c961efb86b3bfeaaf497b1c7cdc83f1eeac", size = 7188603 }, + { url = "https://files.pythonhosted.org/packages/79/e3/401b838349422c7ff9460328e6fec0516753d0e4458b6e03763000181c15/arro3_io-0.4.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:20f912c78ebda9ecfab22bdf864aa323b9f4d9f4a37b3448f7a2f2408189913c", size = 7216247 }, + { url = "https://files.pythonhosted.org/packages/12/cc/d587c8ced6ea94394805a7a812a7237f0b9471ecd96e6b47de476de2c70e/arro3_io-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:49a2e4f17f7bbd371f0babfe7b710b18c9c5d0edc9cae7ec76024ad1e3866ff3", size = 6602125 }, + { url = "https://files.pythonhosted.org/packages/b2/e9/3e64535839da6a9284974f1c1ee51d277f4c27cc6f0616f1e1e306b6082c/arro3_io-0.4.5-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:990e7f4e50767d1cb926a4b7bf8342269598d73855cfc84e377032e2db3543fb", size = 7469025 }, + { url = "https://files.pythonhosted.org/packages/fb/d7/0ed9dc8e5d9670bb3f81aa41ff02941dd339d7dcd405e15290aae95c68ad/arro3_io-0.4.5-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:027d7843e657bc79da885a258934f3105c3a76f48de266689f0b2363320f526b", size = 7594563 }, + { url = "https://files.pythonhosted.org/packages/7f/70/fa79e415109ad14e4eb9da7bebe25ae9c69aedaede4eef0bef36ca26b611/arro3_io-0.4.5-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70b5546306f27e8e7f2595be454113985305ccd99fef54cbae7c010e8755da3d", size = 7676031 }, + { url = "https://files.pythonhosted.org/packages/0b/a3/3b0bfa61de7ebf03225978ebd21c552c4af204ed823edc4be5477d76fa6b/arro3_io-0.4.5-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4458dfefa19e939c283f7170e3f04759668ec521aea95a516b7c56e896fbc21c", size = 9581566 }, + { url = "https://files.pythonhosted.org/packages/d7/18/b8114554f990437c745fa869f3db43e1008b6e85dec49ccfdb76945402e8/arro3_io-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfdbced66548e0f7a3fe6c30a6c6a71bca4c79b5fc3a2e79b34fc34bf3fccf32", size = 7515833 }, + { url = "https://files.pythonhosted.org/packages/a7/f3/b94100d9aa6efbfffe73f6b48c902fffcb060799aae9506cab0256d6e1a4/arro3_io-0.4.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9b73a72e7b6ec59bf748cf96372621bd873a22feed8bde1a28b9d9c54d7c4b1d", size = 7123675 }, + { url = "https://files.pythonhosted.org/packages/4b/fa/b0dc8d280d38e0f47072997e22756bc8af4c72a355f849f2ef5fd64947f2/arro3_io-0.4.5-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:514b101568b553412014e20de5cb912afe6486fac5fa15f977996842b115d7f7", size = 7264407 }, + { url = "https://files.pythonhosted.org/packages/d9/f0/8be3ef9c76c194c44542369001f913ce85359e84864eb3cf432e734c6605/arro3_io-0.4.5-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:452a3d9d152c1096de45dcc210d0c7a18fe678b13c7d13a06889e50865bf5960", size = 7679704 }, + { url = "https://files.pythonhosted.org/packages/f3/4e/7dd482f74b0665110388ddfbd1cb54787e2af5273cd4d2501b996faec63a/arro3_io-0.4.5-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:2cb97205eecede53c5cdc85f86620c949f2f00de7f8d248dbcee3402bf8545d4", size = 7545128 }, + { url = "https://files.pythonhosted.org/packages/d1/af/67b513304a5e529a43bd6cc4e243ea1c6ae2228a89fb9c19fcff01f58926/arro3_io-0.4.5-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:fc6b4dc936bcdf1525aba5dcd37827bf7e922ed5a0cb4f841d3d298ee308c23e", size = 7685804 }, ] [[package]] @@ -383,14 +468,11 @@ wheels = [ [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", size = 62284 } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", size = 27764 }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, ] [[package]] @@ -407,11 +489,11 @@ wheels = [ [[package]] name = "async-timeout" -version = "4.0.3" +version = "5.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/d6/21b30a550dafea84b1b8eee21b5e23fa16d010ae006011221f33dcd8d7f8/async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", size = 8345 } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/fa/e01228c2938de91d47b307831c62ab9e4001e747789d0b05baf779a6488c/async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028", size = 5721 }, + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, ] [[package]] @@ -425,11 +507,11 @@ wheels = [ [[package]] name = "attrs" -version = "24.2.0" +version = "24.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", size = 792678 } +sdist = { url = "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", size = 805984 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001 }, + { url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 }, ] [[package]] @@ -592,11 +674,11 @@ wheels = [ [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, ] [[package]] @@ -745,19 +827,19 @@ wheels = [ [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "platform_system == 'Windows'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, ] [[package]] name = "clickhouse-connect" -version = "0.8.6" +version = "0.8.11" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -766,54 +848,54 @@ dependencies = [ { name = "urllib3" }, { name = "zstandard" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ec/6d742aea9d113fb0244379590598d5011b0b6ea27040014394992b40f853/clickhouse-connect-0.8.6.tar.gz", hash = "sha256:70d683dade55bba2730e3ac2deb47f5501145be4cc8ee48ac595e73842a3d136", size = 88606 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/a4/13e157e1ef8085b4fdfb8562c50eff4992822901783d445035c8e9558a80/clickhouse_connect-0.8.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2e86f30182175018248b544bc8da5b1dac7928400ed9eb30f47b40aa6306c933", size = 255253 }, - { url = "https://files.pythonhosted.org/packages/c5/d5/9930aae67841a7585157828ba74c5211ac3356e372072ae6a6dcafdf4058/clickhouse_connect-0.8.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a8ad85945966c61e0b6fc036edb9861fe8e5e1efb8fd35dd1d7799103a85a96", size = 248613 }, - { url = "https://files.pythonhosted.org/packages/59/39/0fe319878b57046bb7133cefcadd849d3d28626fa31ceeec6e0227d5ff50/clickhouse_connect-0.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f876f087f3e1ebc0df53a8be911042160176666df7d9afb0e741a48a92434181", size = 962245 }, - { url = "https://files.pythonhosted.org/packages/c7/a9/e2a2d9829669ad1affe79701fdfa47af5713a897a78403e60993d8b88f94/clickhouse_connect-0.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b94cf18e7cb294d694325f14abc64b6f36c7ee42a99897ddd4f603df57d5f20d", size = 977645 }, - { url = "https://files.pythonhosted.org/packages/26/29/5916bd248b3b403b61d884dacd6f33b432481c51c79978b0b7ec7847408d/clickhouse_connect-0.8.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f79007a0c257184c5091bdc38dff83ea5d3b9db982b544e8a8c7b770f7880", size = 953605 }, - { url = "https://files.pythonhosted.org/packages/f8/c1/60c3f5224ed3de1c7928ea26aac75a4139b8b410c2201d80beefb372ddae/clickhouse_connect-0.8.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2121d9031d500af616f4ac2ef73b9434c7305c252a694b88565497ce98b29802", size = 968602 }, - { url = "https://files.pythonhosted.org/packages/84/bf/d82116fecf925a57d03f7a3855182250cf1e93f1bac9105e87dcaf47c187/clickhouse_connect-0.8.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d9a01a3cdcc71c557ac1dc4a225bd0d97591706d13899e4399fa643b04541eea", size = 991294 }, - { url = "https://files.pythonhosted.org/packages/9c/c6/ee270f1ae496965e503a8640b19006258cc8f22152fc58c5bb28c3c652c2/clickhouse_connect-0.8.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0842a86f814c085a072e38ffdf7974342ab63f4b23fce916a51ecc16c5d9e463", size = 1002435 }, - { url = "https://files.pythonhosted.org/packages/dd/38/4a54dac963431f4f7fd1135fe6009acf6536643a0a658baf760a14a48841/clickhouse_connect-0.8.6-cp310-cp310-win32.whl", hash = "sha256:d50cc0689247c740f0f015971413a866b245f9b36a42e2f54ade04810e1e5658", size = 227272 }, - { url = "https://files.pythonhosted.org/packages/96/a7/e8d140ca453fb23d28b305fed56f8317b97b0a1a17a7b63b93fd0c7342b4/clickhouse_connect-0.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:da0fcfcabb7881e29125fec604f4141666da483f9b450d8ca5ff3f97d6ae0d05", size = 244168 }, - { url = "https://files.pythonhosted.org/packages/ad/f6/779ab08c969f85aeb5b491949eb673af435af404716da8a9f845844eef9c/clickhouse_connect-0.8.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e3975c7edddf43b197c2a71c9fd25c8fac4f21b27628c2ea897cf8b70715529", size = 255634 }, - { url = "https://files.pythonhosted.org/packages/a6/f1/13f8a1f9b8c89fb4ed974542cd77e71d2af2ee42cba8308205ec410f80b0/clickhouse_connect-0.8.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fa6827e114eed5aed60671242aa97d52f0db5cc05f0f96dddbb306295d5121", size = 248667 }, - { url = "https://files.pythonhosted.org/packages/3c/c4/079d5ab001e867bbe4f2af4c3b541ce179644a07bcf03245960401a70e1a/clickhouse_connect-0.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d70a02ffe8902b99076dc4cc82733e6131e1c598b8104a7b4288ab019f55b909", size = 1059548 }, - { url = "https://files.pythonhosted.org/packages/66/85/0606cbd50b714cc845368e27b669a2f31a9692fff110399cf7de362267ff/clickhouse_connect-0.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:002875e14fd9a95df6d25e0c9600feb707aca0895b92b5b597aa1b3bff91baf5", size = 1070671 }, - { url = "https://files.pythonhosted.org/packages/85/e6/4f77fc74a0b5391b998c0885d4c1e5549f3539a885cdcbe0e63b6c37f425/clickhouse_connect-0.8.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bed4259cf266d11e76c8ff7dc2e6fb1543127a15a5c35d492114fa87eeb63410", size = 1032333 }, - { url = "https://files.pythonhosted.org/packages/1d/c9/80d38aa3060fcc7f55c1950e127c0e5fc8e6a44ec665f4de86160e7c986b/clickhouse_connect-0.8.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c9e25f313aaecae2d341ee1a008d0f35224bae23959d54e115f3a43e94b60790", size = 1064551 }, - { url = "https://files.pythonhosted.org/packages/9a/a1/114b17cee80f639c22637de946505fe93707c53b933de493815061282e6c/clickhouse_connect-0.8.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab9cbde8fc9bc06ae2af4c441fc10f966f151e59f44a212358e080796b219982", size = 1070688 }, - { url = "https://files.pythonhosted.org/packages/3d/ba/5838a15b120ce41982e9b7ab4d1ef44bd15b1954ab16d6a34c7e469bf4fe/clickhouse_connect-0.8.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:650f1e7f71e4eeba6ad1eaa2d927f8979a08281f026397228dbdcba28a945a2c", size = 1101744 }, - { url = "https://files.pythonhosted.org/packages/62/5f/886375cb191e04812b0c6e2b28bb39c5a1b3c7f1194ee56a22e50820237e/clickhouse_connect-0.8.6-cp311-cp311-win32.whl", hash = "sha256:45e5ab11af64705c901477d4f5442c8907b5ec060463f5f1155b9a76c663204c", size = 226903 }, - { url = "https://files.pythonhosted.org/packages/53/de/5c8e090c156d86e3f5b4ef4b5caed25ad5e0bff953f133756f7793714b95/clickhouse_connect-0.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:c645f755bb740e22828e8c52cef2bea19f74e313adccc0b1209ffe6f60bb9481", size = 244316 }, - { url = "https://files.pythonhosted.org/packages/8f/6a/2a89e014a5923d59393a6a6b328f051c05eb18671c113f0e9cac833c6ec6/clickhouse_connect-0.8.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5beaaec13fccf0b47679a1e5cd37bc81bdd83d45b807710489f82fbf5a13e369", size = 259141 }, - { url = "https://files.pythonhosted.org/packages/ff/4d/7b891338867a17d87b8cd178671f5419d468fc6bd364e2533b5f16a35c6b/clickhouse_connect-0.8.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c30e9b126079366c49b6182b8ac97aa6e179a8db41a058fb47db7bba5e79b9", size = 250830 }, - { url = "https://files.pythonhosted.org/packages/c1/db/59ceb9025cf88d5506f8ee2a0fc14f68b2ca0f138c8fd3192323cb0017eb/clickhouse_connect-0.8.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ac5f4b6674018552c853fa52a678f66e0e6fa9f65e44d09ad804c63333b3883", size = 1056038 }, - { url = "https://files.pythonhosted.org/packages/72/72/4bdb5dcc83be8f826489839d6428bf1774346a7b6d63fae57e17c41ebd42/clickhouse_connect-0.8.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e602c6f2f4f4cccd5b4bf1fb82fb567b340196ecba37849f2664609b697137a8", size = 1074338 }, - { url = "https://files.pythonhosted.org/packages/b1/59/9741816f33a681bf6a7be7c005311a1212e1b1d446a3a32910a863421806/clickhouse_connect-0.8.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e2ef9839c1839da7970f95abaed9406c84a93b2372169eadb2547c71c8e8fc", size = 1029450 }, - { url = "https://files.pythonhosted.org/packages/96/cd/ba47821db4aed8219a2b27b9b2867b7e5c5300989a8ad2f61c7f158a1671/clickhouse_connect-0.8.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:716338fd37c292450c1386bd07e2fbf34cd9eabfa50ac63c5debc764cebf20dd", size = 1055384 }, - { url = "https://files.pythonhosted.org/packages/58/04/ceb497aed9ec38130cca9657fa15c89720efa3484357f9fe7d7674a5241a/clickhouse_connect-0.8.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:84bd74fdcfac6be3f4ada42b7d7bed16eb9195c0431c8d8400e8d427d4838e75", size = 1070971 }, - { url = "https://files.pythonhosted.org/packages/6b/02/411612be555387df5c61ab68767d02648dcb775cef67888f85780c8f7e3a/clickhouse_connect-0.8.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2364602bd5c0b667313c5e9d4eac3d6a6d594f5d179b13927f1ce42022cca589", size = 1097383 }, - { url = "https://files.pythonhosted.org/packages/6a/cf/0f4b255ac7c7ad9d493a8136b7edae8ca791f014ca8b8fd16c1f1b8b9468/clickhouse_connect-0.8.6-cp312-cp312-win32.whl", hash = "sha256:775098feb6675af21467690dbfa88ddb6c91a84a15d03f668279e59596c4e660", size = 226673 }, - { url = "https://files.pythonhosted.org/packages/d5/35/2a220ee8cc1e9db56ba91c2ef79fdbcc0fccb23f860bb6a93d47530ad561/clickhouse_connect-0.8.6-cp312-cp312-win_amd64.whl", hash = "sha256:e70b0edafedbcdfe84f3610e3bf25eb789c12f13143ff34f022e62fbc40cd356", size = 244725 }, - { url = "https://files.pythonhosted.org/packages/14/af/f2b4a53e2cf2f7132a9ca883e498f925b660b1313e7198da6824fc2f3117/clickhouse_connect-0.8.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1ffd3c939157ba163d7b85847662cf12ff81dd2c75f91521391ba7519e7c235a", size = 256380 }, - { url = "https://files.pythonhosted.org/packages/71/f8/007a7adad3c8c32e1f340c9a1be677b01db14aaa85249c3c72cb562b6cd0/clickhouse_connect-0.8.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0014e92d98277ebf0c102eb10ea70837126873b4668c3b92a087ef4c58c94b7e", size = 248009 }, - { url = "https://files.pythonhosted.org/packages/dc/70/387d4ac740654347b5c8ae9c4a61c714e88962187c04b12518354121e7ad/clickhouse_connect-0.8.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58532c4bd4bbc21b7ccd5a341fbdb87677e9c1714c0ddfb2afc899c5b9ff963d", size = 1038984 }, - { url = "https://files.pythonhosted.org/packages/9c/fe/2f4cf3fa3ba4885f301952f3a0c80d39e642faf259616caa78e645252884/clickhouse_connect-0.8.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cec2bbd12abcbc26a8c8a27e6e04cc66d6519bc6fdd9cdd41d7dd4217a6cb21", size = 1057687 }, - { url = "https://files.pythonhosted.org/packages/37/48/501258adbb3a7682592e7e14d3d6b4fd432b4bf6f106181719af15f0aec3/clickhouse_connect-0.8.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89e7e86dbb6b5edc667ef50eeca1dca995409150563b58944f080411a82a4b0a", size = 1012980 }, - { url = "https://files.pythonhosted.org/packages/dd/7e/f1d0fc29fbec30026f371db878d5a81a8b97504c8f1fd77e4f033bc1e9f7/clickhouse_connect-0.8.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c3f0ecec40b768875804c5be67f949e62fe3cdae0373c8f3bf23ace3863c0f8f", size = 1040146 }, - { url = "https://files.pythonhosted.org/packages/d1/e9/abb0b12b23ec0c50f20249415f400ac93647968983b9d4c91117c53a18bf/clickhouse_connect-0.8.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:baec3b45f2fe7f3743e8b38d54487e6f950c07353951c5cf0cb0bbb2c884b456", size = 1055623 }, - { url = "https://files.pythonhosted.org/packages/6b/d8/27b8f78d470ec0978247530f7f739044e492f0f3d5fb3a4f1b02531b570e/clickhouse_connect-0.8.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:02920166879f78887f396a6307cda70d9bb1cccd43b706ffaef9d34a9df6bb72", size = 1083004 }, - { url = "https://files.pythonhosted.org/packages/27/0c/1aa11998fa4bb45676ea260ba55710fdb8ede6f3e47f352603bcf7c533a3/clickhouse_connect-0.8.6-cp313-cp313-win32.whl", hash = "sha256:52698acf3c777a1d5852f7d1a0e05b838f5a9bcc60f345c16d9080a45a6d5d01", size = 225949 }, - { url = "https://files.pythonhosted.org/packages/37/16/74d64e7d1748d3104af81388c061420c5516057fec221cc1fd2f57e118b2/clickhouse_connect-0.8.6-cp313-cp313-win_amd64.whl", hash = "sha256:1030b47adfce8e624075936639958508f9fee5f397e2a904163e5aa54123ceb4", size = 243667 }, - { url = "https://files.pythonhosted.org/packages/d4/c2/03a94a62b83ab8e0e0476f9889aeb6e77e55cf032ef8b983e4045b8dcd37/clickhouse_connect-0.8.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ac34c2722082f52aaba8b5b9ed21b2e9d019e7d4495324ddf688f54b0556d9b2", size = 227311 }, - { url = "https://files.pythonhosted.org/packages/77/77/687f55717f724cd8dab67cf7d2322c78d075680b8df34b4d423cdea43963/clickhouse_connect-0.8.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:55068ec6adbc1ed6492e24d058086cda924038fe1c912aad9137205e89ce43fb", size = 223373 }, - { url = "https://files.pythonhosted.org/packages/ce/95/ee2b515a879db87163aef17728bf7f9c10fe92cbc9666f39d682789fe2d1/clickhouse_connect-0.8.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c77ebe047703bb058601d0644e8fd3069fae10e7d2a21c5cb6ff02baca7254c", size = 252246 }, - { url = "https://files.pythonhosted.org/packages/cf/39/eb8a0e8e687872032ba6788a5796b301a2deb10ff9f213a0fc1d05170d55/clickhouse_connect-0.8.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbe53fb989c74ef9bad3d9f8430c9e4bfc81490c81884d94f37a71ea6956a7b5", size = 259451 }, - { url = "https://files.pythonhosted.org/packages/04/15/202ba86805bae5de2cbf8a490f1c5bae10478e992c5584ca2539a13482dc/clickhouse_connect-0.8.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80e90b7852972b55e4928f0aabc203aba1cd9e6c45305f1ea5e5aafa0c13c38a", size = 265454 }, - { url = "https://files.pythonhosted.org/packages/7b/fa/f4412c40b38fa985e47274ef2207eba45c5a825e90412ee824819786fd82/clickhouse_connect-0.8.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e356a5aa9883c5f19357058644549ebf5005213cd347505f8e3f5f9e8040a01", size = 231684 }, +sdist = { url = "https://files.pythonhosted.org/packages/85/46/f4ce13ecad06d1f207f0c7f1e381bb66cf523d68a9f6593e145cd471c344/clickhouse_connect-0.8.11.tar.gz", hash = "sha256:c5df47abd5524500df0f4e83aa9502fe0907664e7117ec04d2d3604a9839f15c", size = 89940 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/36/6a1c9a633444bd518792f41abf19a5a3d59bcb9cac8826fc622debfc82ed/clickhouse_connect-0.8.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c2df346f60dc8774d278a76864616100c117bb7b6ef9f4cd2762ce98f7f9a15f", size = 256813 }, + { url = "https://files.pythonhosted.org/packages/90/a8/ed130676934c5b71a907676293c34686bc366e14dcc49bed756b768a4a60/clickhouse_connect-0.8.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95150d7176b487b9723895c4f95c65ab8782015c173b0e17468a1616ed0d298d", size = 250157 }, + { url = "https://files.pythonhosted.org/packages/ce/2c/73edcfb3a26d506d50b8dbd457915da2198db840dd581e43f5b6509e0475/clickhouse_connect-0.8.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ac9a6d70b7cac87d5ed8b46c2b40012ef91299ff3901754286a063f58406714", size = 962777 }, + { url = "https://files.pythonhosted.org/packages/df/0f/b622729a9e93f4ae1685ae25de5e905aa87e38154276d0d2813941815db4/clickhouse_connect-0.8.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2ca0cda38821c15e7f815201fd187b4ac8ad90828c6158faef7ab1751392dbb", size = 978060 }, + { url = "https://files.pythonhosted.org/packages/23/9a/0d93724793983aa81818669ad85129dcb4ac5378041c8813455b8b8b33a1/clickhouse_connect-0.8.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c7050006e0bdd25dcbd8622ad57069153a5537240349388ed7445310b258831", size = 954158 }, + { url = "https://files.pythonhosted.org/packages/1c/4e/79b2aaf62c4e7ff45fa252dab34b2b418a503d8deae8c447e2984e456df7/clickhouse_connect-0.8.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fd233b2e070ca47b22d062ce8051889bddccc4f28f000f4c9a59e6df0ec7e744", size = 969416 }, + { url = "https://files.pythonhosted.org/packages/72/0d/7f7a70a283f27bf072dcb3dd6ced0130999432d119e20cfe911c72806113/clickhouse_connect-0.8.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:44df3f6ede5733c333a04f7bf449aa80d7f3f8c514d8b63a1e5bf8947a24a66b", size = 992052 }, + { url = "https://files.pythonhosted.org/packages/d9/3b/83677aa887ddbdb35db7eabb47e21fd8515fcd78c67f1f14187e67a5430e/clickhouse_connect-0.8.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ba22399dc472de6f3bfc5a696d6b303d9f133a880005ef1f2d2031b9c77c5109", size = 1003099 }, + { url = "https://files.pythonhosted.org/packages/e5/22/203c70b823bc972bd21ada642acc015f1dec6389126ad0f3cb66e2372537/clickhouse_connect-0.8.11-cp310-cp310-win32.whl", hash = "sha256:2041b89f0d0966fb63b31da403eff9a54eac88fd724b528fd65ffdbb29e2ee81", size = 228637 }, + { url = "https://files.pythonhosted.org/packages/58/d0/83380e6823f9ec9ca36a003ad1be9599467dac5585d573eb15b8dc81d307/clickhouse_connect-0.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:d8e1362ce7bc021457ee31bd2b9fc636779f1e20de6abd4c91238b9eb4e2d717", size = 245536 }, + { url = "https://files.pythonhosted.org/packages/ee/6c/0ca98fcbab5fa3b11c554707bfcf5ce80be1dcf4d114b17f62ee2573d1a5/clickhouse_connect-0.8.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c84f03a4c9eb494e767abc3cdafd73bf4e1455820948e45e7f0bf240ff4d4e3d", size = 257184 }, + { url = "https://files.pythonhosted.org/packages/34/13/0582175866bb430dac86ad7c4af65eb659633c0db9adb1fecfc8b7db1aad/clickhouse_connect-0.8.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:832abf4db00117730b7682347d5d0edfa3c8eccad79f64f890f6a0c821bd417d", size = 250225 }, + { url = "https://files.pythonhosted.org/packages/9e/2e/6d899332428bc200b09bcf44dac9672472af0b546157071c1ff8b8fa5954/clickhouse_connect-0.8.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cdbb12cecb6c432a0db8b1f895fcdc478ad03e532b209cdfba4b334d5dcff4a", size = 1060197 }, + { url = "https://files.pythonhosted.org/packages/09/b9/e08273c489731d85c7b0d6b4023da845ea187b9f8e45e1115993b3ae3946/clickhouse_connect-0.8.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b46edbd3b8a38fcb2a9010665ca6eabdcffcf806e533d15cc8cc37d1355d2b63", size = 1071038 }, + { url = "https://files.pythonhosted.org/packages/3c/06/4a91d9d25d0066c941bf473e38b9f476b466c85fae32de7306700281da11/clickhouse_connect-0.8.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d9b259f2af45d1092c3957e2f6c443f8dba4136ff05d96f7eb5c8f2cf59b6a4", size = 1032910 }, + { url = "https://files.pythonhosted.org/packages/b7/3a/ab5490c4694b2a3b420676ec5c1df3acd7de0e9b61ded9851cc0ab42ce26/clickhouse_connect-0.8.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:51f8f374d8e58d5a1807f3842b0aa18c481b5b6d8176e33f6b07beef4ecbff2c", size = 1065286 }, + { url = "https://files.pythonhosted.org/packages/4e/23/6fd1bbfb7f893bba13cef853bb32a576007678a7480d4c8272f3f98ded07/clickhouse_connect-0.8.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1a645d07bba9bbc80868d3aa9a4abc944df3ef5841845305c5a610bdaadce183", size = 1071309 }, + { url = "https://files.pythonhosted.org/packages/85/f2/762ad8f3094f8aee03871c3c238d8c4d602aba7e3fc1e0bed60f3f6c2b01/clickhouse_connect-0.8.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:53c362153f848096eb440bba0745c0f4c373d6ee0ac908aacab5a7d14d67a257", size = 1102308 }, + { url = "https://files.pythonhosted.org/packages/ac/db/d77a2a25354955850e137ce5ea90b88a2406e32c89213c7662c02daefd99/clickhouse_connect-0.8.11-cp311-cp311-win32.whl", hash = "sha256:a962209486a11ac3455c7a7430ed5201618315a6fd9d10088b6098844a93e7d2", size = 228345 }, + { url = "https://files.pythonhosted.org/packages/fe/7a/abc3fe728282606bd182d2e25f33a09dc4959033bbdf83a1d9392ca0f52d/clickhouse_connect-0.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:0e6856782b86cfcbf3ef4a4b6e7c53053e07e285191c7c5ce95d683f48a429aa", size = 245676 }, + { url = "https://files.pythonhosted.org/packages/12/ff/069b0d194dd9fd10adffe218353d72716958e7682aa9419386d5ad7336e8/clickhouse_connect-0.8.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e24a178c84e7f2c9a0e46550f153a7c3b37137f2b5eef3bffac414e85b6626ed", size = 260674 }, + { url = "https://files.pythonhosted.org/packages/a5/a9/4a385e11428cd6e02efa27f33e90e7f30b092842ce5b8db2763fa06b72a1/clickhouse_connect-0.8.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c232776f757c432ba9e5c5cae8e1d28acfb80513024d4b4717e40022dbc633a1", size = 252365 }, + { url = "https://files.pythonhosted.org/packages/f8/1b/a94876b9a792fb4876436f859a711c93312ec947677338b5053d4af2e341/clickhouse_connect-0.8.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf895c60e7266045c4bb5c65037b47e1a467fd88c03c1b0eb12347b4d0902ba", size = 1056610 }, + { url = "https://files.pythonhosted.org/packages/1e/b3/9f57a4dae612c40dea74b4f8ed2e6fd122adb67b96b4930d54b1e4870405/clickhouse_connect-0.8.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9ccfd929ae888f8d232bae60a383248d263c49da51a6a73a6ae7cf2ed9cae27", size = 1074975 }, + { url = "https://files.pythonhosted.org/packages/d7/e4/c51753e0a23754ac54495016a0fa522d439eaab56b783c00953fd8c70ce7/clickhouse_connect-0.8.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a90d1a99920339eefeb7492a3584d869e3959f9c73139b19ee2726582d611e2c", size = 1030237 }, + { url = "https://files.pythonhosted.org/packages/4d/32/3ac5ba11fab026b22b31ea9b800f13382e82bee60c2ca42ead1e527d796d/clickhouse_connect-0.8.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:47e2244da14da7b0bb9b98d1333989f3edb33ba09cf33ee0a5823d135a14d7f6", size = 1056026 }, + { url = "https://files.pythonhosted.org/packages/fd/76/8e1e25fa5e87e5d5d68baf8b8c2c71fe4f82de76fc6b15d0d60554638786/clickhouse_connect-0.8.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c32dc46df65dbd4a32de755e7b4e76dcc3333381fd8746a4bd2455c9cbfe9a1d", size = 1072695 }, + { url = "https://files.pythonhosted.org/packages/59/1d/e53bc770d16119d6a9b4eca24191ce14546763e268ac7467e2e674ffb2b9/clickhouse_connect-0.8.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f22bcb7f0f9e7bd68355e3040ca33a1029f023adc8ba23cfefb4b950b389ee64", size = 1097975 }, + { url = "https://files.pythonhosted.org/packages/d9/c0/d530eb2db8190cefedb8247ec90f354e2e6959219eabb8ec3e5fe76dc04c/clickhouse_connect-0.8.11-cp312-cp312-win32.whl", hash = "sha256:1380757ba05d5adfd342a65c72f5db10a1a79b8c743077f6212b3a07cdb2f68e", size = 228088 }, + { url = "https://files.pythonhosted.org/packages/e4/c6/5cc09a365704677cc4a263132b80d806043dbeeef2a4db649c33c14cf00e/clickhouse_connect-0.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:2c7486720bc6a98d0346b815cf5bf192b62559073cf3975d142de846997fe79a", size = 246041 }, + { url = "https://files.pythonhosted.org/packages/8b/11/76eea9f08ec19fabc8e3de91d6a9f0580d352b579f71ab11acd16f07e7f5/clickhouse_connect-0.8.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:080440911ea1caf8503c113e6171f4542ae30e8336fdb7e074188639095b4c26", size = 257911 }, + { url = "https://files.pythonhosted.org/packages/17/35/266662c96a94c4649753646c27352658378115cba20a37785eb19d05ca79/clickhouse_connect-0.8.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:873faef725731c191032d1c987e7de8c32c20399713c85f7eb52a79c4bfc0e94", size = 249581 }, + { url = "https://files.pythonhosted.org/packages/1d/49/a4afdb58f1fa25faa11965f59908c3c11634b7e94ddc3d700133ab3f2402/clickhouse_connect-0.8.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d639158b622cb3eabfa364f1be0e0099db2de448e896e2a5d9bd6f97cc290b3", size = 1039571 }, + { url = "https://files.pythonhosted.org/packages/27/4f/2c5c178e7a030364763100671744a2b040ec4bc6ff82423f6c4a77948a78/clickhouse_connect-0.8.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffa8e30df365464511683ba4d381fd8a5f5c3b5ad7d399307493ae9a1cc6fd1", size = 1057997 }, + { url = "https://files.pythonhosted.org/packages/f5/9f/2ad81824ef298882973554b395908b3f8328ab3e49778112013fcc857acd/clickhouse_connect-0.8.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4269333973fae477843be905ed738d0e40671afc8f4991e383d65aaa162c2cd", size = 1013599 }, + { url = "https://files.pythonhosted.org/packages/75/41/3b7c78e0fbf127ddd3ddca2e1782a782dcc70ed59462f937f68c442810aa/clickhouse_connect-0.8.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c81e908d77bfb6855a9e6a395065b4532e8b68ef7aaea2645ad903ffc11dbc71", size = 1040715 }, + { url = "https://files.pythonhosted.org/packages/01/9f/78c6577fd986508be34f14afc30af5032617e35e8695f7789478c4886b2e/clickhouse_connect-0.8.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6bdaf6315ca33bc0d7d93e2dd2057bd7cdb81c1891b4a9eb8363548b903f762d", size = 1056204 }, + { url = "https://files.pythonhosted.org/packages/a3/26/ac1fd238958b48d321734bdde35784f69f9a6d50a77cb4ab385181677214/clickhouse_connect-0.8.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f07bc6504c98cdf999218a0f6f14cd43321e9939bd41ddcb62ca4f1de3b28714", size = 1083520 }, + { url = "https://files.pythonhosted.org/packages/bc/f2/652e35228a8b4ff6f3f8e9979623657e44913ba272c27af60790e629b8f1/clickhouse_connect-0.8.11-cp313-cp313-win32.whl", hash = "sha256:f29daff275ceee4161495f175addd53836184b69feb73da45fcc9e52a1c56d1d", size = 227379 }, + { url = "https://files.pythonhosted.org/packages/f2/c2/34a1cf8a1602b41582c800d7dc8d314e66ec4897349fafd19310a9c83e2c/clickhouse_connect-0.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:9f725400248ca9ffbc85d5361a6c0c032b9d988c214178bea9ad22c72d35b5e3", size = 244980 }, + { url = "https://files.pythonhosted.org/packages/4b/5c/631341ef079bceb4ec5bce244b1cb1c49e5d0bb14131a88df601be24573a/clickhouse_connect-0.8.11-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d5dc6a5b00e6a62e8cdb99109631dad6289ebbe9028f20dc465e457c261ceaf1", size = 228840 }, + { url = "https://files.pythonhosted.org/packages/a0/11/5e8d55759e0e659101473e0b24f147979f6cfca9f59ef1bc198c179c71ff/clickhouse_connect-0.8.11-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:db6cc11824104b26f60b102ea4016debc6b37e81208de820cf6f498fc2358149", size = 224962 }, + { url = "https://files.pythonhosted.org/packages/e4/f0/b17cdd87b541087cff2a4fb31a2463cbae0bbf3704791273c73e4d9104c7/clickhouse_connect-0.8.11-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b001bb50d528d50b49ccd1a7b58e0927d58c035f8e7419e4a20aff4e94ea3ff", size = 253842 }, + { url = "https://files.pythonhosted.org/packages/ea/d6/5f27c5f938597409047aedac8f3ddb389efdac8e2c478b9a7a517b135d58/clickhouse_connect-0.8.11-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcefeb5e78820e09c9ee57584fde0e4b9df9cb3e71b426eeea2b01d219ddfc55", size = 260985 }, + { url = "https://files.pythonhosted.org/packages/d4/b8/adff79806f22c6c615a3c011256b64cbdc422bf624d730640feb8bdb9df2/clickhouse_connect-0.8.11-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d6e3c5d723de634cd9cff0340901f33fd84dafdcb7d016791f17adaa9be94fb", size = 267044 }, + { url = "https://files.pythonhosted.org/packages/3c/ac/bd3f13d7b2b789561c1ae7cf25ed5cb8c17ddca2205039354bdd50c3079d/clickhouse_connect-0.8.11-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e846a68476965181e531d80141d006b53829bc880a48b59da0ee5543a9d8678d", size = 233110 }, ] [package.optional-dependencies] @@ -876,123 +958,125 @@ wheels = [ [[package]] name = "contourpy" -version = "1.3.0" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f5/f6/31a8f28b4a2a4fa0e01085e542f3081ab0588eff8e589d39d775172c9792/contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4", size = 13464370 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/e0/be8dcc796cfdd96708933e0e2da99ba4bb8f9b2caa9d560a50f3f09a65f3/contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7", size = 265366 }, - { url = "https://files.pythonhosted.org/packages/50/d6/c953b400219443535d412fcbbc42e7a5e823291236bc0bb88936e3cc9317/contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42", size = 249226 }, - { url = "https://files.pythonhosted.org/packages/6f/b4/6fffdf213ffccc28483c524b9dad46bb78332851133b36ad354b856ddc7c/contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7", size = 308460 }, - { url = "https://files.pythonhosted.org/packages/cf/6c/118fc917b4050f0afe07179a6dcbe4f3f4ec69b94f36c9e128c4af480fb8/contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab", size = 347623 }, - { url = "https://files.pythonhosted.org/packages/f9/a4/30ff110a81bfe3abf7b9673284d21ddce8cc1278f6f77393c91199da4c90/contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589", size = 317761 }, - { url = "https://files.pythonhosted.org/packages/99/e6/d11966962b1aa515f5586d3907ad019f4b812c04e4546cc19ebf62b5178e/contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41", size = 322015 }, - { url = "https://files.pythonhosted.org/packages/4d/e3/182383743751d22b7b59c3c753277b6aee3637049197624f333dac5b4c80/contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d", size = 1262672 }, - { url = "https://files.pythonhosted.org/packages/78/53/974400c815b2e605f252c8fb9297e2204347d1755a5374354ee77b1ea259/contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223", size = 1321688 }, - { url = "https://files.pythonhosted.org/packages/52/29/99f849faed5593b2926a68a31882af98afbeac39c7fdf7de491d9c85ec6a/contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f", size = 171145 }, - { url = "https://files.pythonhosted.org/packages/a9/97/3f89bba79ff6ff2b07a3cbc40aa693c360d5efa90d66e914f0ff03b95ec7/contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b", size = 216019 }, - { url = "https://files.pythonhosted.org/packages/b3/1f/9375917786cb39270b0ee6634536c0e22abf225825602688990d8f5c6c19/contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad", size = 266356 }, - { url = "https://files.pythonhosted.org/packages/05/46/9256dd162ea52790c127cb58cfc3b9e3413a6e3478917d1f811d420772ec/contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49", size = 250915 }, - { url = "https://files.pythonhosted.org/packages/e1/5d/3056c167fa4486900dfbd7e26a2fdc2338dc58eee36d490a0ed3ddda5ded/contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66", size = 310443 }, - { url = "https://files.pythonhosted.org/packages/ca/c2/1a612e475492e07f11c8e267ea5ec1ce0d89971be496c195e27afa97e14a/contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081", size = 348548 }, - { url = "https://files.pythonhosted.org/packages/45/cf/2c2fc6bb5874158277b4faf136847f0689e1b1a1f640a36d76d52e78907c/contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1", size = 319118 }, - { url = "https://files.pythonhosted.org/packages/03/33/003065374f38894cdf1040cef474ad0546368eea7e3a51d48b8a423961f8/contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d", size = 323162 }, - { url = "https://files.pythonhosted.org/packages/42/80/e637326e85e4105a802e42959f56cff2cd39a6b5ef68d5d9aee3ea5f0e4c/contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c", size = 1265396 }, - { url = "https://files.pythonhosted.org/packages/7c/3b/8cbd6416ca1bbc0202b50f9c13b2e0b922b64be888f9d9ee88e6cfabfb51/contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb", size = 1324297 }, - { url = "https://files.pythonhosted.org/packages/4d/2c/021a7afaa52fe891f25535506cc861c30c3c4e5a1c1ce94215e04b293e72/contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c", size = 171808 }, - { url = "https://files.pythonhosted.org/packages/8d/2f/804f02ff30a7fae21f98198828d0857439ec4c91a96e20cf2d6c49372966/contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67", size = 217181 }, - { url = "https://files.pythonhosted.org/packages/c9/92/8e0bbfe6b70c0e2d3d81272b58c98ac69ff1a4329f18c73bd64824d8b12e/contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f", size = 267838 }, - { url = "https://files.pythonhosted.org/packages/e3/04/33351c5d5108460a8ce6d512307690b023f0cfcad5899499f5c83b9d63b1/contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6", size = 251549 }, - { url = "https://files.pythonhosted.org/packages/51/3d/aa0fe6ae67e3ef9f178389e4caaaa68daf2f9024092aa3c6032e3d174670/contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639", size = 303177 }, - { url = "https://files.pythonhosted.org/packages/56/c3/c85a7e3e0cab635575d3b657f9535443a6f5d20fac1a1911eaa4bbe1aceb/contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c", size = 341735 }, - { url = "https://files.pythonhosted.org/packages/dd/8d/20f7a211a7be966a53f474bc90b1a8202e9844b3f1ef85f3ae45a77151ee/contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06", size = 314679 }, - { url = "https://files.pythonhosted.org/packages/6e/be/524e377567defac0e21a46e2a529652d165fed130a0d8a863219303cee18/contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09", size = 320549 }, - { url = "https://files.pythonhosted.org/packages/0f/96/fdb2552a172942d888915f3a6663812e9bc3d359d53dafd4289a0fb462f0/contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd", size = 1263068 }, - { url = "https://files.pythonhosted.org/packages/2a/25/632eab595e3140adfa92f1322bf8915f68c932bac468e89eae9974cf1c00/contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35", size = 1322833 }, - { url = "https://files.pythonhosted.org/packages/73/e3/69738782e315a1d26d29d71a550dbbe3eb6c653b028b150f70c1a5f4f229/contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb", size = 172681 }, - { url = "https://files.pythonhosted.org/packages/0c/89/9830ba00d88e43d15e53d64931e66b8792b46eb25e2050a88fec4a0df3d5/contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b", size = 218283 }, - { url = "https://files.pythonhosted.org/packages/53/a1/d20415febfb2267af2d7f06338e82171824d08614084714fb2c1dac9901f/contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3", size = 267879 }, - { url = "https://files.pythonhosted.org/packages/aa/45/5a28a3570ff6218d8bdfc291a272a20d2648104815f01f0177d103d985e1/contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7", size = 251573 }, - { url = "https://files.pythonhosted.org/packages/39/1c/d3f51540108e3affa84f095c8b04f0aa833bb797bc8baa218a952a98117d/contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84", size = 303184 }, - { url = "https://files.pythonhosted.org/packages/00/56/1348a44fb6c3a558c1a3a0cd23d329d604c99d81bf5a4b58c6b71aab328f/contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0", size = 340262 }, - { url = "https://files.pythonhosted.org/packages/2b/23/00d665ba67e1bb666152131da07e0f24c95c3632d7722caa97fb61470eca/contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b", size = 313806 }, - { url = "https://files.pythonhosted.org/packages/5a/42/3cf40f7040bb8362aea19af9a5fb7b32ce420f645dd1590edcee2c657cd5/contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da", size = 319710 }, - { url = "https://files.pythonhosted.org/packages/05/32/f3bfa3fc083b25e1a7ae09197f897476ee68e7386e10404bdf9aac7391f0/contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14", size = 1264107 }, - { url = "https://files.pythonhosted.org/packages/1c/1e/1019d34473a736664f2439542b890b2dc4c6245f5c0d8cdfc0ccc2cab80c/contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8", size = 1322458 }, - { url = "https://files.pythonhosted.org/packages/22/85/4f8bfd83972cf8909a4d36d16b177f7b8bdd942178ea4bf877d4a380a91c/contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294", size = 172643 }, - { url = "https://files.pythonhosted.org/packages/cc/4a/fb3c83c1baba64ba90443626c228ca14f19a87c51975d3b1de308dd2cf08/contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087", size = 218301 }, - { url = "https://files.pythonhosted.org/packages/76/65/702f4064f397821fea0cb493f7d3bc95a5d703e20954dce7d6d39bacf378/contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8", size = 278972 }, - { url = "https://files.pythonhosted.org/packages/80/85/21f5bba56dba75c10a45ec00ad3b8190dbac7fd9a8a8c46c6116c933e9cf/contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b", size = 263375 }, - { url = "https://files.pythonhosted.org/packages/0a/64/084c86ab71d43149f91ab3a4054ccf18565f0a8af36abfa92b1467813ed6/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973", size = 307188 }, - { url = "https://files.pythonhosted.org/packages/3d/ff/d61a4c288dc42da0084b8d9dc2aa219a850767165d7d9a9c364ff530b509/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18", size = 345644 }, - { url = "https://files.pythonhosted.org/packages/ca/aa/00d2313d35ec03f188e8f0786c2fc61f589306e02fdc158233697546fd58/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8", size = 317141 }, - { url = "https://files.pythonhosted.org/packages/8d/6a/b5242c8cb32d87f6abf4f5e3044ca397cb1a76712e3fa2424772e3ff495f/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6", size = 323469 }, - { url = "https://files.pythonhosted.org/packages/6f/a6/73e929d43028a9079aca4bde107494864d54f0d72d9db508a51ff0878593/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2", size = 1260894 }, - { url = "https://files.pythonhosted.org/packages/2b/1e/1e726ba66eddf21c940821df8cf1a7d15cb165f0682d62161eaa5e93dae1/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927", size = 1314829 }, - { url = "https://files.pythonhosted.org/packages/d1/09/60e486dc2b64c94ed33e58dcfb6f808192c03dfc5574c016218b9b7680dc/contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c", size = 261886 }, - { url = "https://files.pythonhosted.org/packages/19/20/b57f9f7174fcd439a7789fb47d764974ab646fa34d1790551de386457a8e/contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779", size = 311008 }, - { url = "https://files.pythonhosted.org/packages/74/fc/5040d42623a1845d4f17a418e590fd7a79ae8cb2bad2b2f83de63c3bdca4/contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4", size = 215690 }, +sdist = { url = "https://files.pythonhosted.org/packages/25/c2/fc7193cc5383637ff390a712e88e4ded0452c9fbcf84abe3de5ea3df1866/contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", size = 13465753 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/a3/80937fe3efe0edacf67c9a20b955139a1a622730042c1ea991956f2704ad/contourpy-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab", size = 268466 }, + { url = "https://files.pythonhosted.org/packages/82/1d/e3eaebb4aa2d7311528c048350ca8e99cdacfafd99da87bc0a5f8d81f2c2/contourpy-1.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124", size = 253314 }, + { url = "https://files.pythonhosted.org/packages/de/f3/d796b22d1a2b587acc8100ba8c07fb7b5e17fde265a7bb05ab967f4c935a/contourpy-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1", size = 312003 }, + { url = "https://files.pythonhosted.org/packages/bf/f5/0e67902bc4394daee8daa39c81d4f00b50e063ee1a46cb3938cc65585d36/contourpy-1.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b", size = 351896 }, + { url = "https://files.pythonhosted.org/packages/1f/d6/e766395723f6256d45d6e67c13bb638dd1fa9dc10ef912dc7dd3dcfc19de/contourpy-1.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453", size = 320814 }, + { url = "https://files.pythonhosted.org/packages/a9/57/86c500d63b3e26e5b73a28b8291a67c5608d4aa87ebd17bd15bb33c178bc/contourpy-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3", size = 324969 }, + { url = "https://files.pythonhosted.org/packages/b8/62/bb146d1289d6b3450bccc4642e7f4413b92ebffd9bf2e91b0404323704a7/contourpy-1.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277", size = 1265162 }, + { url = "https://files.pythonhosted.org/packages/18/04/9f7d132ce49a212c8e767042cc80ae390f728060d2eea47058f55b9eff1c/contourpy-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595", size = 1324328 }, + { url = "https://files.pythonhosted.org/packages/46/23/196813901be3f97c83ababdab1382e13e0edc0bb4e7b49a7bff15fcf754e/contourpy-1.3.1-cp310-cp310-win32.whl", hash = "sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697", size = 173861 }, + { url = "https://files.pythonhosted.org/packages/e0/82/c372be3fc000a3b2005061ca623a0d1ecd2eaafb10d9e883a2fc8566e951/contourpy-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e", size = 218566 }, + { url = "https://files.pythonhosted.org/packages/12/bb/11250d2906ee2e8b466b5f93e6b19d525f3e0254ac8b445b56e618527718/contourpy-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b", size = 269555 }, + { url = "https://files.pythonhosted.org/packages/67/71/1e6e95aee21a500415f5d2dbf037bf4567529b6a4e986594d7026ec5ae90/contourpy-1.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc", size = 254549 }, + { url = "https://files.pythonhosted.org/packages/31/2c/b88986e8d79ac45efe9d8801ae341525f38e087449b6c2f2e6050468a42c/contourpy-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86", size = 313000 }, + { url = "https://files.pythonhosted.org/packages/c4/18/65280989b151fcf33a8352f992eff71e61b968bef7432fbfde3a364f0730/contourpy-1.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6", size = 352925 }, + { url = "https://files.pythonhosted.org/packages/f5/c7/5fd0146c93220dbfe1a2e0f98969293b86ca9bc041d6c90c0e065f4619ad/contourpy-1.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85", size = 323693 }, + { url = "https://files.pythonhosted.org/packages/85/fc/7fa5d17daf77306840a4e84668a48ddff09e6bc09ba4e37e85ffc8e4faa3/contourpy-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c", size = 326184 }, + { url = "https://files.pythonhosted.org/packages/ef/e7/104065c8270c7397c9571620d3ab880558957216f2b5ebb7e040f85eeb22/contourpy-1.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291", size = 1268031 }, + { url = "https://files.pythonhosted.org/packages/e2/4a/c788d0bdbf32c8113c2354493ed291f924d4793c4a2e85b69e737a21a658/contourpy-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f", size = 1325995 }, + { url = "https://files.pythonhosted.org/packages/a6/e6/a2f351a90d955f8b0564caf1ebe4b1451a3f01f83e5e3a414055a5b8bccb/contourpy-1.3.1-cp311-cp311-win32.whl", hash = "sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375", size = 174396 }, + { url = "https://files.pythonhosted.org/packages/a8/7e/cd93cab453720a5d6cb75588cc17dcdc08fc3484b9de98b885924ff61900/contourpy-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9", size = 219787 }, + { url = "https://files.pythonhosted.org/packages/37/6b/175f60227d3e7f5f1549fcb374592be311293132207e451c3d7c654c25fb/contourpy-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509", size = 271494 }, + { url = "https://files.pythonhosted.org/packages/6b/6a/7833cfae2c1e63d1d8875a50fd23371394f540ce809d7383550681a1fa64/contourpy-1.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc", size = 255444 }, + { url = "https://files.pythonhosted.org/packages/7f/b3/7859efce66eaca5c14ba7619791b084ed02d868d76b928ff56890d2d059d/contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454", size = 307628 }, + { url = "https://files.pythonhosted.org/packages/48/b2/011415f5e3f0a50b1e285a0bf78eb5d92a4df000553570f0851b6e309076/contourpy-1.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80", size = 347271 }, + { url = "https://files.pythonhosted.org/packages/84/7d/ef19b1db0f45b151ac78c65127235239a8cf21a59d1ce8507ce03e89a30b/contourpy-1.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec", size = 318906 }, + { url = "https://files.pythonhosted.org/packages/ba/99/6794142b90b853a9155316c8f470d2e4821fe6f086b03e372aca848227dd/contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9", size = 323622 }, + { url = "https://files.pythonhosted.org/packages/3c/0f/37d2c84a900cd8eb54e105f4fa9aebd275e14e266736778bb5dccbf3bbbb/contourpy-1.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b", size = 1266699 }, + { url = "https://files.pythonhosted.org/packages/3a/8a/deb5e11dc7d9cc8f0f9c8b29d4f062203f3af230ba83c30a6b161a6effc9/contourpy-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d", size = 1326395 }, + { url = "https://files.pythonhosted.org/packages/1a/35/7e267ae7c13aaf12322ccc493531f1e7f2eb8fba2927b9d7a05ff615df7a/contourpy-1.3.1-cp312-cp312-win32.whl", hash = "sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e", size = 175354 }, + { url = "https://files.pythonhosted.org/packages/a1/35/c2de8823211d07e8a79ab018ef03960716c5dff6f4d5bff5af87fd682992/contourpy-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d", size = 220971 }, + { url = "https://files.pythonhosted.org/packages/9a/e7/de62050dce687c5e96f946a93546910bc67e483fe05324439e329ff36105/contourpy-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2", size = 271548 }, + { url = "https://files.pythonhosted.org/packages/78/4d/c2a09ae014ae984c6bdd29c11e74d3121b25eaa117eca0bb76340efd7e1c/contourpy-1.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5", size = 255576 }, + { url = "https://files.pythonhosted.org/packages/ab/8a/915380ee96a5638bda80cd061ccb8e666bfdccea38d5741cb69e6dbd61fc/contourpy-1.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81", size = 306635 }, + { url = "https://files.pythonhosted.org/packages/29/5c/c83ce09375428298acd4e6582aeb68b1e0d1447f877fa993d9bf6cd3b0a0/contourpy-1.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2", size = 345925 }, + { url = "https://files.pythonhosted.org/packages/29/63/5b52f4a15e80c66c8078a641a3bfacd6e07106835682454647aca1afc852/contourpy-1.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7", size = 318000 }, + { url = "https://files.pythonhosted.org/packages/9a/e2/30ca086c692691129849198659bf0556d72a757fe2769eb9620a27169296/contourpy-1.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c", size = 322689 }, + { url = "https://files.pythonhosted.org/packages/6b/77/f37812ef700f1f185d348394debf33f22d531e714cf6a35d13d68a7003c7/contourpy-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3", size = 1268413 }, + { url = "https://files.pythonhosted.org/packages/3f/6d/ce84e79cdd128542ebeb268f84abb4b093af78e7f8ec504676673d2675bc/contourpy-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1", size = 1326530 }, + { url = "https://files.pythonhosted.org/packages/72/22/8282f4eae20c73c89bee7a82a19c4e27af9b57bb602ecaa00713d5bdb54d/contourpy-1.3.1-cp313-cp313-win32.whl", hash = "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82", size = 175315 }, + { url = "https://files.pythonhosted.org/packages/e3/d5/28bca491f65312b438fbf076589dcde7f6f966b196d900777f5811b9c4e2/contourpy-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd", size = 220987 }, + { url = "https://files.pythonhosted.org/packages/2f/24/a4b285d6adaaf9746e4700932f579f1a7b6f9681109f694cfa233ae75c4e/contourpy-1.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30", size = 285001 }, + { url = "https://files.pythonhosted.org/packages/48/1d/fb49a401b5ca4f06ccf467cd6c4f1fd65767e63c21322b29b04ec40b40b9/contourpy-1.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751", size = 268553 }, + { url = "https://files.pythonhosted.org/packages/79/1e/4aef9470d13fd029087388fae750dccb49a50c012a6c8d1d634295caa644/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342", size = 310386 }, + { url = "https://files.pythonhosted.org/packages/b0/34/910dc706ed70153b60392b5305c708c9810d425bde12499c9184a1100888/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c", size = 349806 }, + { url = "https://files.pythonhosted.org/packages/31/3c/faee6a40d66d7f2a87f7102236bf4780c57990dd7f98e5ff29881b1b1344/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f", size = 321108 }, + { url = "https://files.pythonhosted.org/packages/17/69/390dc9b20dd4bb20585651d7316cc3054b7d4a7b4f8b710b2b698e08968d/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda", size = 327291 }, + { url = "https://files.pythonhosted.org/packages/ef/74/7030b67c4e941fe1e5424a3d988080e83568030ce0355f7c9fc556455b01/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242", size = 1263752 }, + { url = "https://files.pythonhosted.org/packages/f0/ed/92d86f183a8615f13f6b9cbfc5d4298a509d6ce433432e21da838b4b63f4/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1", size = 1318403 }, + { url = "https://files.pythonhosted.org/packages/b3/0e/c8e4950c77dcfc897c71d61e56690a0a9df39543d2164040301b5df8e67b/contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1", size = 185117 }, + { url = "https://files.pythonhosted.org/packages/c1/31/1ae946f11dfbd229222e6d6ad8e7bd1891d3d48bde5fbf7a0beb9491f8e3/contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546", size = 236668 }, + { url = "https://files.pythonhosted.org/packages/3e/4f/e56862e64b52b55b5ddcff4090085521fc228ceb09a88390a2b103dccd1b/contourpy-1.3.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6", size = 265605 }, + { url = "https://files.pythonhosted.org/packages/b0/2e/52bfeeaa4541889f23d8eadc6386b442ee2470bd3cff9baa67deb2dd5c57/contourpy-1.3.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750", size = 315040 }, + { url = "https://files.pythonhosted.org/packages/52/94/86bfae441707205634d80392e873295652fc313dfd93c233c52c4dc07874/contourpy-1.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53", size = 218221 }, ] [[package]] name = "coverage" -version = "7.6.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/12/3669b6382792783e92046730ad3327f53b2726f0603f4c311c4da4824222/coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73", size = 798716 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/93/4ad92f71e28ece5c0326e5f4a6630aa4928a8846654a65cfff69b49b95b9/coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07", size = 206713 }, - { url = "https://files.pythonhosted.org/packages/01/ae/747a580b1eda3f2e431d87de48f0604bd7bc92e52a1a95185a4aa585bc47/coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0", size = 207149 }, - { url = "https://files.pythonhosted.org/packages/07/1a/1f573f8a6145f6d4c9130bbc120e0024daf1b24cf2a78d7393fa6eb6aba7/coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72", size = 235584 }, - { url = "https://files.pythonhosted.org/packages/40/42/c8523f2e4db34aa9389caee0d3688b6ada7a84fcc782e943a868a7f302bd/coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51", size = 233486 }, - { url = "https://files.pythonhosted.org/packages/8d/95/565c310fffa16ede1a042e9ea1ca3962af0d8eb5543bc72df6b91dc0c3d5/coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491", size = 234649 }, - { url = "https://files.pythonhosted.org/packages/d5/81/3b550674d98968ec29c92e3e8650682be6c8b1fa7581a059e7e12e74c431/coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b", size = 233744 }, - { url = "https://files.pythonhosted.org/packages/0d/70/d66c7f51b3e33aabc5ea9f9624c1c9d9655472962270eb5e7b0d32707224/coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea", size = 232204 }, - { url = "https://files.pythonhosted.org/packages/23/2d/2b3a2dbed7a5f40693404c8a09e779d7c1a5fbed089d3e7224c002129ec8/coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a", size = 233335 }, - { url = "https://files.pythonhosted.org/packages/5a/4f/92d1d2ad720d698a4e71c176eacf531bfb8e0721d5ad560556f2c484a513/coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa", size = 209435 }, - { url = "https://files.pythonhosted.org/packages/c7/b9/cdf158e7991e2287bcf9082670928badb73d310047facac203ff8dcd5ff3/coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172", size = 210243 }, - { url = "https://files.pythonhosted.org/packages/87/31/9c0cf84f0dfcbe4215b7eb95c31777cdc0483c13390e69584c8150c85175/coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b", size = 206819 }, - { url = "https://files.pythonhosted.org/packages/53/ed/a38401079ad320ad6e054a01ec2b61d270511aeb3c201c80e99c841229d5/coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25", size = 207263 }, - { url = "https://files.pythonhosted.org/packages/20/e7/c3ad33b179ab4213f0d70da25a9c214d52464efa11caeab438592eb1d837/coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546", size = 239205 }, - { url = "https://files.pythonhosted.org/packages/36/91/fc02e8d8e694f557752120487fd982f654ba1421bbaa5560debf96ddceda/coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b", size = 236612 }, - { url = "https://files.pythonhosted.org/packages/cc/57/cb08f0eda0389a9a8aaa4fc1f9fec7ac361c3e2d68efd5890d7042c18aa3/coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e", size = 238479 }, - { url = "https://files.pythonhosted.org/packages/d5/c9/2c7681a9b3ca6e6f43d489c2e6653a53278ed857fd6e7010490c307b0a47/coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718", size = 237405 }, - { url = "https://files.pythonhosted.org/packages/b5/4e/ebfc6944b96317df8b537ae875d2e57c27b84eb98820bc0a1055f358f056/coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db", size = 236038 }, - { url = "https://files.pythonhosted.org/packages/13/f2/3a0bf1841a97c0654905e2ef531170f02c89fad2555879db8fe41a097871/coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522", size = 236812 }, - { url = "https://files.pythonhosted.org/packages/b9/9c/66bf59226b52ce6ed9541b02d33e80a6e816a832558fbdc1111a7bd3abd4/coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf", size = 209400 }, - { url = "https://files.pythonhosted.org/packages/2a/a0/b0790934c04dfc8d658d4a62acb8f7ca0efdf3818456fcad757b11c6479d/coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19", size = 210243 }, - { url = "https://files.pythonhosted.org/packages/7d/e7/9291de916d084f41adddfd4b82246e68d61d6a75747f075f7e64628998d2/coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2", size = 207013 }, - { url = "https://files.pythonhosted.org/packages/27/03/932c2c5717a7fa80cd43c6a07d3177076d97b79f12f40f882f9916db0063/coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117", size = 207251 }, - { url = "https://files.pythonhosted.org/packages/d5/3f/0af47dcb9327f65a45455fbca846fe96eb57c153af46c4754a3ba678938a/coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613", size = 240268 }, - { url = "https://files.pythonhosted.org/packages/8a/3c/37a9d81bbd4b23bc7d46ca820e16174c613579c66342faa390a271d2e18b/coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27", size = 237298 }, - { url = "https://files.pythonhosted.org/packages/c0/70/6b0627e5bd68204ee580126ed3513140b2298995c1233bd67404b4e44d0e/coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52", size = 239367 }, - { url = "https://files.pythonhosted.org/packages/3c/eb/634d7dfab24ac3b790bebaf9da0f4a5352cbc125ce6a9d5c6cf4c6cae3c7/coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2", size = 238853 }, - { url = "https://files.pythonhosted.org/packages/d9/0d/8e3ed00f1266ef7472a4e33458f42e39492e01a64281084fb3043553d3f1/coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1", size = 237160 }, - { url = "https://files.pythonhosted.org/packages/ce/9c/4337f468ef0ab7a2e0887a9c9da0e58e2eada6fc6cbee637a4acd5dfd8a9/coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5", size = 238824 }, - { url = "https://files.pythonhosted.org/packages/5e/09/3e94912b8dd37251377bb02727a33a67ee96b84bbbe092f132b401ca5dd9/coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17", size = 209639 }, - { url = "https://files.pythonhosted.org/packages/01/69/d4f3a4101171f32bc5b3caec8ff94c2c60f700107a6aaef7244b2c166793/coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08", size = 210428 }, - { url = "https://files.pythonhosted.org/packages/c2/4d/2dede4f7cb5a70fb0bb40a57627fddf1dbdc6b9c1db81f7c4dcdcb19e2f4/coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9", size = 207039 }, - { url = "https://files.pythonhosted.org/packages/3f/f9/d86368ae8c79e28f1fb458ebc76ae9ff3e8bd8069adc24e8f2fed03c58b7/coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba", size = 207298 }, - { url = "https://files.pythonhosted.org/packages/64/c5/b4cc3c3f64622c58fbfd4d8b9a7a8ce9d355f172f91fcabbba1f026852f6/coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c", size = 239813 }, - { url = "https://files.pythonhosted.org/packages/8a/86/14c42e60b70a79b26099e4d289ccdfefbc68624d096f4481163085aa614c/coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06", size = 236959 }, - { url = "https://files.pythonhosted.org/packages/7f/f8/4436a643631a2fbab4b44d54f515028f6099bfb1cd95b13cfbf701e7f2f2/coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f", size = 238950 }, - { url = "https://files.pythonhosted.org/packages/49/50/1571810ddd01f99a0a8be464a4ac8b147f322cd1e8e296a1528984fc560b/coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b", size = 238610 }, - { url = "https://files.pythonhosted.org/packages/f3/8c/6312d241fe7cbd1f0cade34a62fea6f333d1a261255d76b9a87074d8703c/coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21", size = 236697 }, - { url = "https://files.pythonhosted.org/packages/ce/5f/fef33dfd05d87ee9030f614c857deb6df6556b8f6a1c51bbbb41e24ee5ac/coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a", size = 238541 }, - { url = "https://files.pythonhosted.org/packages/a9/64/6a984b6e92e1ea1353b7ffa08e27f707a5e29b044622445859200f541e8c/coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e", size = 209707 }, - { url = "https://files.pythonhosted.org/packages/5c/60/ce5a9e942e9543783b3db5d942e0578b391c25cdd5e7f342d854ea83d6b7/coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963", size = 210439 }, - { url = "https://files.pythonhosted.org/packages/78/53/6719677e92c308207e7f10561a1b16ab8b5c00e9328efc9af7cfd6fb703e/coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f", size = 207784 }, - { url = "https://files.pythonhosted.org/packages/fa/dd/7054928930671fcb39ae6a83bb71d9ab5f0afb733172543ced4b09a115ca/coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806", size = 208058 }, - { url = "https://files.pythonhosted.org/packages/b5/7d/fd656ddc2b38301927b9eb3aae3fe827e7aa82e691923ed43721fd9423c9/coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11", size = 250772 }, - { url = "https://files.pythonhosted.org/packages/90/d0/eb9a3cc2100b83064bb086f18aedde3afffd7de6ead28f69736c00b7f302/coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3", size = 246490 }, - { url = "https://files.pythonhosted.org/packages/45/44/3f64f38f6faab8a0cfd2c6bc6eb4c6daead246b97cf5f8fc23bf3788f841/coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a", size = 248848 }, - { url = "https://files.pythonhosted.org/packages/5d/11/4c465a5f98656821e499f4b4619929bd5a34639c466021740ecdca42aa30/coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc", size = 248340 }, - { url = "https://files.pythonhosted.org/packages/f1/96/ebecda2d016cce9da812f404f720ca5df83c6b29f65dc80d2000d0078741/coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70", size = 246229 }, - { url = "https://files.pythonhosted.org/packages/16/d9/3d820c00066ae55d69e6d0eae11d6149a5ca7546de469ba9d597f01bf2d7/coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef", size = 247510 }, - { url = "https://files.pythonhosted.org/packages/8f/c3/4fa1eb412bb288ff6bfcc163c11700ff06e02c5fad8513817186e460ed43/coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e", size = 210353 }, - { url = "https://files.pythonhosted.org/packages/7e/77/03fc2979d1538884d921c2013075917fc927f41cd8526909852fe4494112/coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1", size = 211502 }, - { url = "https://files.pythonhosted.org/packages/cc/56/e1d75e8981a2a92c2a777e67c26efa96c66da59d645423146eb9ff3a851b/coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e", size = 198954 }, +version = "7.6.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/d2/c25011f4d036cf7e8acbbee07a8e09e9018390aee25ba085596c4b83d510/coverage-7.6.9.tar.gz", hash = "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", size = 801710 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/f3/f830fb53bf7e4f1d5542756f61d9b740352a188f43854aab9409c8cdeb18/coverage-7.6.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85d9636f72e8991a1706b2b55b06c27545448baf9f6dbf51c4004609aacd7dcb", size = 207024 }, + { url = "https://files.pythonhosted.org/packages/4e/e3/ea5632a3a6efd00ab0a791adc0f3e48512097a757ee7dcbee5505f57bafa/coverage-7.6.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:608a7fd78c67bee8936378299a6cb9f5149bb80238c7a566fc3e6717a4e68710", size = 207463 }, + { url = "https://files.pythonhosted.org/packages/e4/ae/18ff8b5580e27e62ebcc888082aa47694c2772782ea7011ddf58e377e98f/coverage-7.6.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96d636c77af18b5cb664ddf12dab9b15a0cfe9c0bde715da38698c8cea748bfa", size = 235902 }, + { url = "https://files.pythonhosted.org/packages/6a/52/57030a8d15ab935624d298360f0a6704885578e39f7b4f68569e59f5902d/coverage-7.6.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75cded8a3cff93da9edc31446872d2997e327921d8eed86641efafd350e1df1", size = 233806 }, + { url = "https://files.pythonhosted.org/packages/d0/c5/4466602195ecaced298d55af1e29abceb812addabefd5bd9116a204f7bab/coverage-7.6.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7b15f589593110ae767ce997775d645b47e5cbbf54fd322f8ebea6277466cec", size = 234966 }, + { url = "https://files.pythonhosted.org/packages/b0/1c/55552c3009b7bf96732e36548596ade771c87f89cf1f5a8e3975b33539b5/coverage-7.6.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:44349150f6811b44b25574839b39ae35291f6496eb795b7366fef3bd3cf112d3", size = 234029 }, + { url = "https://files.pythonhosted.org/packages/bb/7d/da3dca6878701182ea42c51df47a47c80eaef2a76f5aa3e891dc2a8cce3f/coverage-7.6.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d891c136b5b310d0e702e186d70cd16d1119ea8927347045124cb286b29297e5", size = 232494 }, + { url = "https://files.pythonhosted.org/packages/28/cc/39de85ac1d5652bc34ff2bee39ae251b1fdcaae53fab4b44cab75a432bc0/coverage-7.6.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:db1dab894cc139f67822a92910466531de5ea6034ddfd2b11c0d4c6257168073", size = 233611 }, + { url = "https://files.pythonhosted.org/packages/d1/2b/7eb011a9378911088708f121825a71134d0c15fac96972a0ae7a8f5a4049/coverage-7.6.9-cp310-cp310-win32.whl", hash = "sha256:41ff7b0da5af71a51b53f501a3bac65fb0ec311ebed1632e58fc6107f03b9198", size = 209712 }, + { url = "https://files.pythonhosted.org/packages/5b/35/c3f40a2269b416db34ce1dedf682a7132c26f857e33596830fa4deebabf9/coverage-7.6.9-cp310-cp310-win_amd64.whl", hash = "sha256:35371f8438028fdccfaf3570b31d98e8d9eda8bb1d6ab9473f5a390969e98717", size = 210553 }, + { url = "https://files.pythonhosted.org/packages/b1/91/b3dc2f7f38b5cca1236ab6bbb03e84046dd887707b4ec1db2baa47493b3b/coverage-7.6.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:932fc826442132dde42ee52cf66d941f581c685a6313feebed358411238f60f9", size = 207133 }, + { url = "https://files.pythonhosted.org/packages/0d/2b/53fd6cb34d443429a92b3ec737f4953627e38b3bee2a67a3c03425ba8573/coverage-7.6.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:085161be5f3b30fd9b3e7b9a8c301f935c8313dcf928a07b116324abea2c1c2c", size = 207577 }, + { url = "https://files.pythonhosted.org/packages/74/f2/68edb1e6826f980a124f21ea5be0d324180bf11de6fd1defcf9604f76df0/coverage-7.6.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ccc660a77e1c2bf24ddbce969af9447a9474790160cfb23de6be4fa88e3951c7", size = 239524 }, + { url = "https://files.pythonhosted.org/packages/d3/83/8fec0ee68c2c4a5ab5f0f8527277f84ed6f2bd1310ae8a19d0c5532253ab/coverage-7.6.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c69e42c892c018cd3c8d90da61d845f50a8243062b19d228189b0224150018a9", size = 236925 }, + { url = "https://files.pythonhosted.org/packages/8b/20/8f50e7c7ad271144afbc2c1c6ec5541a8c81773f59352f8db544cad1a0ec/coverage-7.6.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0824a28ec542a0be22f60c6ac36d679e0e262e5353203bea81d44ee81fe9c6d4", size = 238792 }, + { url = "https://files.pythonhosted.org/packages/6f/62/4ac2e5ad9e7a5c9ec351f38947528e11541f1f00e8a0cdce56f1ba7ae301/coverage-7.6.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4401ae5fc52ad8d26d2a5d8a7428b0f0c72431683f8e63e42e70606374c311a1", size = 237682 }, + { url = "https://files.pythonhosted.org/packages/58/2f/9d2203f012f3b0533c73336c74134b608742be1ce475a5c72012573cfbb4/coverage-7.6.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98caba4476a6c8d59ec1eb00c7dd862ba9beca34085642d46ed503cc2d440d4b", size = 236310 }, + { url = "https://files.pythonhosted.org/packages/33/6d/31f6ab0b4f0f781636075f757eb02141ea1b34466d9d1526dbc586ed7078/coverage-7.6.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ee5defd1733fd6ec08b168bd4f5387d5b322f45ca9e0e6c817ea6c4cd36313e3", size = 237096 }, + { url = "https://files.pythonhosted.org/packages/7d/fb/e14c38adebbda9ed8b5f7f8e03340ac05d68d27b24397f8d47478927a333/coverage-7.6.9-cp311-cp311-win32.whl", hash = "sha256:f2d1ec60d6d256bdf298cb86b78dd715980828f50c46701abc3b0a2b3f8a0dc0", size = 209682 }, + { url = "https://files.pythonhosted.org/packages/a4/11/a782af39b019066af83fdc0e8825faaccbe9d7b19a803ddb753114b429cc/coverage-7.6.9-cp311-cp311-win_amd64.whl", hash = "sha256:0d59fd927b1f04de57a2ba0137166d31c1a6dd9e764ad4af552912d70428c92b", size = 210542 }, + { url = "https://files.pythonhosted.org/packages/60/52/b16af8989a2daf0f80a88522bd8e8eed90b5fcbdecf02a6888f3e80f6ba7/coverage-7.6.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:99e266ae0b5d15f1ca8d278a668df6f51cc4b854513daab5cae695ed7b721cf8", size = 207325 }, + { url = "https://files.pythonhosted.org/packages/0f/79/6b7826fca8846c1216a113227b9f114ac3e6eacf168b4adcad0cb974aaca/coverage-7.6.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9901d36492009a0a9b94b20e52ebfc8453bf49bb2b27bca2c9706f8b4f5a554a", size = 207563 }, + { url = "https://files.pythonhosted.org/packages/a7/07/0bc73da0ccaf45d0d64ef86d33b7d7fdeef84b4c44bf6b85fb12c215c5a6/coverage-7.6.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abd3e72dd5b97e3af4246cdada7738ef0e608168de952b837b8dd7e90341f015", size = 240580 }, + { url = "https://files.pythonhosted.org/packages/71/8a/9761f409910961647d892454687cedbaccb99aae828f49486734a82ede6e/coverage-7.6.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff74026a461eb0660366fb01c650c1d00f833a086b336bdad7ab00cc952072b3", size = 237613 }, + { url = "https://files.pythonhosted.org/packages/8b/10/ee7d696a17ac94f32f2dbda1e17e730bf798ae9931aec1fc01c1944cd4de/coverage-7.6.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65dad5a248823a4996724a88eb51d4b31587aa7aa428562dbe459c684e5787ae", size = 239684 }, + { url = "https://files.pythonhosted.org/packages/16/60/aa1066040d3c52fff051243c2d6ccda264da72dc6d199d047624d395b2b2/coverage-7.6.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:22be16571504c9ccea919fcedb459d5ab20d41172056206eb2994e2ff06118a4", size = 239112 }, + { url = "https://files.pythonhosted.org/packages/4e/e5/69f35344c6f932ba9028bf168d14a79fedb0dd4849b796d43c81ce75a3c9/coverage-7.6.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f957943bc718b87144ecaee70762bc2bc3f1a7a53c7b861103546d3a403f0a6", size = 237428 }, + { url = "https://files.pythonhosted.org/packages/32/20/adc895523c4a28f63441b8ac645abd74f9bdd499d2d175bef5b41fc7f92d/coverage-7.6.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ae1387db4aecb1f485fb70a6c0148c6cdaebb6038f1d40089b1fc84a5db556f", size = 239098 }, + { url = "https://files.pythonhosted.org/packages/a9/a6/e0e74230c9bb3549ec8ffc137cfd16ea5d56e993d6bffed2218bff6187e3/coverage-7.6.9-cp312-cp312-win32.whl", hash = "sha256:1a330812d9cc7ac2182586f6d41b4d0fadf9be9049f350e0efb275c8ee8eb692", size = 209940 }, + { url = "https://files.pythonhosted.org/packages/3e/18/cb5b88349d4aa2f41ec78d65f92ea32572b30b3f55bc2b70e87578b8f434/coverage-7.6.9-cp312-cp312-win_amd64.whl", hash = "sha256:b12c6b18269ca471eedd41c1b6a1065b2f7827508edb9a7ed5555e9a56dcfc97", size = 210726 }, + { url = "https://files.pythonhosted.org/packages/35/26/9abab6539d2191dbda2ce8c97b67d74cbfc966cc5b25abb880ffc7c459bc/coverage-7.6.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664", size = 207356 }, + { url = "https://files.pythonhosted.org/packages/44/da/d49f19402240c93453f606e660a6676a2a1fbbaa6870cc23207790aa9697/coverage-7.6.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c", size = 207614 }, + { url = "https://files.pythonhosted.org/packages/da/e6/93bb9bf85497816082ec8da6124c25efa2052bd4c887dd3b317b91990c9e/coverage-7.6.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014", size = 240129 }, + { url = "https://files.pythonhosted.org/packages/df/65/6a824b9406fe066835c1274a9949e06f084d3e605eb1a602727a27ec2fe3/coverage-7.6.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00", size = 237276 }, + { url = "https://files.pythonhosted.org/packages/9f/79/6c7a800913a9dd23ac8c8da133ebb556771a5a3d4df36b46767b1baffd35/coverage-7.6.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d", size = 239267 }, + { url = "https://files.pythonhosted.org/packages/57/e7/834d530293fdc8a63ba8ff70033d5182022e569eceb9aec7fc716b678a39/coverage-7.6.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a", size = 238887 }, + { url = "https://files.pythonhosted.org/packages/15/05/ec9d6080852984f7163c96984444e7cd98b338fd045b191064f943ee1c08/coverage-7.6.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077", size = 236970 }, + { url = "https://files.pythonhosted.org/packages/0a/d8/775937670b93156aec29f694ce37f56214ed7597e1a75b4083ee4c32121c/coverage-7.6.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb", size = 238831 }, + { url = "https://files.pythonhosted.org/packages/f4/58/88551cb7fdd5ec98cb6044e8814e38583436b14040a5ece15349c44c8f7c/coverage-7.6.9-cp313-cp313-win32.whl", hash = "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba", size = 210000 }, + { url = "https://files.pythonhosted.org/packages/b7/12/cfbf49b95120872785ff8d56ab1c7fe3970a65e35010c311d7dd35c5fd00/coverage-7.6.9-cp313-cp313-win_amd64.whl", hash = "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1", size = 210753 }, + { url = "https://files.pythonhosted.org/packages/7c/68/c1cb31445599b04bde21cbbaa6d21b47c5823cdfef99eae470dfce49c35a/coverage-7.6.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419", size = 208091 }, + { url = "https://files.pythonhosted.org/packages/11/73/84b02c6b19c4a11eb2d5b5eabe926fb26c21c080e0852f5e5a4f01165f9e/coverage-7.6.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a", size = 208369 }, + { url = "https://files.pythonhosted.org/packages/de/e0/ae5d878b72ff26df2e994a5c5b1c1f6a7507d976b23beecb1ed4c85411ef/coverage-7.6.9-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4", size = 251089 }, + { url = "https://files.pythonhosted.org/packages/ab/9c/0aaac011aef95a93ef3cb2fba3fde30bc7e68a6635199ed469b1f5ea355a/coverage-7.6.9-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae", size = 246806 }, + { url = "https://files.pythonhosted.org/packages/f8/19/4d5d3ae66938a7dcb2f58cef3fa5386f838f469575b0bb568c8cc9e3a33d/coverage-7.6.9-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030", size = 249164 }, + { url = "https://files.pythonhosted.org/packages/b3/0b/4ee8a7821f682af9ad440ae3c1e379da89a998883271f088102d7ca2473d/coverage-7.6.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be", size = 248642 }, + { url = "https://files.pythonhosted.org/packages/8a/12/36ff1d52be18a16b4700f561852e7afd8df56363a5edcfb04cf26a0e19e0/coverage-7.6.9-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e", size = 246516 }, + { url = "https://files.pythonhosted.org/packages/43/d0/8e258f6c3a527c1655602f4f576215e055ac704de2d101710a71a2affac2/coverage-7.6.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", size = 247783 }, + { url = "https://files.pythonhosted.org/packages/a9/0d/1e4a48d289429d38aae3babdfcadbf35ca36bdcf3efc8f09b550a845bdb5/coverage-7.6.9-cp313-cp313t-win32.whl", hash = "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", size = 210646 }, + { url = "https://files.pythonhosted.org/packages/26/74/b0729f196f328ac55e42b1e22ec2f16d8bcafe4b8158a26ec9f1cdd1d93e/coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", size = 211815 }, + { url = "https://files.pythonhosted.org/packages/15/0e/4ac9035ee2ee08d2b703fdad2d84283ec0bad3b46eb4ad6affb150174cb6/coverage-7.6.9-pp39.pp310-none-any.whl", hash = "sha256:f3ca78518bc6bc92828cd11867b121891d75cae4ea9e908d72030609b996db1b", size = 199270 }, ] [package.optional-dependencies] @@ -1002,35 +1086,39 @@ toml = [ [[package]] name = "cryptography" -version = "43.0.3" +version = "44.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", size = 686989 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/f3/01fdf26701a26f4b4dbc337a26883ad5bccaa6f1bbbdd29cd89e22f18a1c/cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e", size = 6225303 }, - { url = "https://files.pythonhosted.org/packages/a3/01/4896f3d1b392025d4fcbecf40fdea92d3df8662123f6835d0af828d148fd/cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e", size = 3760905 }, - { url = "https://files.pythonhosted.org/packages/0a/be/f9a1f673f0ed4b7f6c643164e513dbad28dd4f2dcdf5715004f172ef24b6/cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f", size = 3977271 }, - { url = "https://files.pythonhosted.org/packages/4e/49/80c3a7b5514d1b416d7350830e8c422a4d667b6d9b16a9392ebfd4a5388a/cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6", size = 3746606 }, - { url = "https://files.pythonhosted.org/packages/0e/16/a28ddf78ac6e7e3f25ebcef69ab15c2c6be5ff9743dd0709a69a4f968472/cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18", size = 3986484 }, - { url = "https://files.pythonhosted.org/packages/01/f5/69ae8da70c19864a32b0315049866c4d411cce423ec169993d0434218762/cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd", size = 3852131 }, - { url = "https://files.pythonhosted.org/packages/fd/db/e74911d95c040f9afd3612b1f732e52b3e517cb80de8bf183be0b7d413c6/cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73", size = 4075647 }, - { url = "https://files.pythonhosted.org/packages/56/48/7b6b190f1462818b324e674fa20d1d5ef3e24f2328675b9b16189cbf0b3c/cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2", size = 2623873 }, - { url = "https://files.pythonhosted.org/packages/eb/b1/0ebff61a004f7f89e7b65ca95f2f2375679d43d0290672f7713ee3162aff/cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd", size = 3068039 }, - { url = "https://files.pythonhosted.org/packages/30/d5/c8b32c047e2e81dd172138f772e81d852c51f0f2ad2ae8a24f1122e9e9a7/cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984", size = 6222984 }, - { url = "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", size = 3762968 }, - { url = "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", size = 3977754 }, - { url = "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", size = 3749458 }, - { url = "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", size = 3988220 }, - { url = "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", size = 3853898 }, - { url = "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", size = 4076592 }, - { url = "https://files.pythonhosted.org/packages/81/1e/ffcc41b3cebd64ca90b28fd58141c5f68c83d48563c88333ab660e002cd3/cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995", size = 2623145 }, - { url = "https://files.pythonhosted.org/packages/87/5c/3dab83cc4aba1f4b0e733e3f0c3e7d4386440d660ba5b1e3ff995feb734d/cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362", size = 3068026 }, - { url = "https://files.pythonhosted.org/packages/6f/db/d8b8a039483f25fc3b70c90bc8f3e1d4497a99358d610c5067bf3bd4f0af/cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c", size = 3144545 }, - { url = "https://files.pythonhosted.org/packages/93/90/116edd5f8ec23b2dc879f7a42443e073cdad22950d3c8ee834e3b8124543/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3", size = 3679828 }, - { url = "https://files.pythonhosted.org/packages/d8/32/1e1d78b316aa22c0ba6493cc271c1c309969e5aa5c22c830a1d7ce3471e6/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83", size = 3908132 }, - { url = "https://files.pythonhosted.org/packages/91/bb/cd2c13be3332e7af3cdf16154147952d39075b9f61ea5e6b5241bf4bf436/cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7", size = 2988811 }, +sdist = { url = "https://files.pythonhosted.org/packages/91/4c/45dfa6829acffa344e3967d6006ee4ae8be57af746ae2eba1c431949b32c/cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", size = 710657 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/09/8cc67f9b84730ad330b3b72cf867150744bf07ff113cda21a15a1c6d2c7c/cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123", size = 6541833 }, + { url = "https://files.pythonhosted.org/packages/7e/5b/3759e30a103144e29632e7cb72aec28cedc79e514b2ea8896bb17163c19b/cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", size = 3922710 }, + { url = "https://files.pythonhosted.org/packages/5f/58/3b14bf39f1a0cfd679e753e8647ada56cddbf5acebffe7db90e184c76168/cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", size = 4137546 }, + { url = "https://files.pythonhosted.org/packages/98/65/13d9e76ca19b0ba5603d71ac8424b5694415b348e719db277b5edc985ff5/cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", size = 3915420 }, + { url = "https://files.pythonhosted.org/packages/b1/07/40fe09ce96b91fc9276a9ad272832ead0fddedcba87f1190372af8e3039c/cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", size = 4154498 }, + { url = "https://files.pythonhosted.org/packages/75/ea/af65619c800ec0a7e4034207aec543acdf248d9bffba0533342d1bd435e1/cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", size = 3932569 }, + { url = "https://files.pythonhosted.org/packages/c7/af/d1deb0c04d59612e3d5e54203159e284d3e7a6921e565bb0eeb6269bdd8a/cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", size = 4016721 }, + { url = "https://files.pythonhosted.org/packages/bd/69/7ca326c55698d0688db867795134bdfac87136b80ef373aaa42b225d6dd5/cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", size = 4240915 }, + { url = "https://files.pythonhosted.org/packages/ef/d4/cae11bf68c0f981e0413906c6dd03ae7fa864347ed5fac40021df1ef467c/cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053", size = 2757925 }, + { url = "https://files.pythonhosted.org/packages/64/b1/50d7739254d2002acae64eed4fc43b24ac0cc44bf0a0d388d1ca06ec5bb1/cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd", size = 3202055 }, + { url = "https://files.pythonhosted.org/packages/11/18/61e52a3d28fc1514a43b0ac291177acd1b4de00e9301aaf7ef867076ff8a/cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591", size = 6542801 }, + { url = "https://files.pythonhosted.org/packages/1a/07/5f165b6c65696ef75601b781a280fc3b33f1e0cd6aa5a92d9fb96c410e97/cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", size = 3922613 }, + { url = "https://files.pythonhosted.org/packages/28/34/6b3ac1d80fc174812486561cf25194338151780f27e438526f9c64e16869/cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", size = 4137925 }, + { url = "https://files.pythonhosted.org/packages/d0/c7/c656eb08fd22255d21bc3129625ed9cd5ee305f33752ef2278711b3fa98b/cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", size = 3915417 }, + { url = "https://files.pythonhosted.org/packages/ef/82/72403624f197af0db6bac4e58153bc9ac0e6020e57234115db9596eee85d/cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", size = 4155160 }, + { url = "https://files.pythonhosted.org/packages/a2/cd/2f3c440913d4329ade49b146d74f2e9766422e1732613f57097fea61f344/cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", size = 3932331 }, + { url = "https://files.pythonhosted.org/packages/7f/df/8be88797f0a1cca6e255189a57bb49237402b1880d6e8721690c5603ac23/cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", size = 4017372 }, + { url = "https://files.pythonhosted.org/packages/af/36/5ccc376f025a834e72b8e52e18746b927f34e4520487098e283a719c205e/cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", size = 4239657 }, + { url = "https://files.pythonhosted.org/packages/46/b0/f4f7d0d0bcfbc8dd6296c1449be326d04217c57afb8b2594f017eed95533/cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", size = 2758672 }, + { url = "https://files.pythonhosted.org/packages/97/9b/443270b9210f13f6ef240eff73fd32e02d381e7103969dc66ce8e89ee901/cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede", size = 3202071 }, + { url = "https://files.pythonhosted.org/packages/77/d4/fea74422326388bbac0c37b7489a0fcb1681a698c3b875959430ba550daa/cryptography-44.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731", size = 3338857 }, + { url = "https://files.pythonhosted.org/packages/1a/aa/ba8a7467c206cb7b62f09b4168da541b5109838627f582843bbbe0235e8e/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4", size = 3850615 }, + { url = "https://files.pythonhosted.org/packages/89/fa/b160e10a64cc395d090105be14f399b94e617c879efd401188ce0fea39ee/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756", size = 4081622 }, + { url = "https://files.pythonhosted.org/packages/47/8f/20ff0656bb0cf7af26ec1d01f780c5cfbaa7666736063378c5f48558b515/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c", size = 3867546 }, + { url = "https://files.pythonhosted.org/packages/38/d9/28edf32ee2fcdca587146bcde90102a7319b2f2c690edfa627e46d586050/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa", size = 4090937 }, + { url = "https://files.pythonhosted.org/packages/cc/9d/37e5da7519de7b0b070a3fedd4230fe76d50d2a21403e0f2153d70ac4163/cryptography-44.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c", size = 3128774 }, ] [[package]] @@ -1063,24 +1151,24 @@ wheels = [ [[package]] name = "datafusion" -version = "42.0.0" +version = "43.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyarrow" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/46/cf91530c06a11a699e177aa02716531f31a009087827e6d71f47d0d8b86e/datafusion-42.0.0.tar.gz", hash = "sha256:c88955a9ac59504d9d302be03158e692b9f99c3bf53dca0e84252d81f8c5ca91", size = 135459 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/87/195496ccdc4bf557fcac60a6d42878ffc347eceab20509866291f6193930/datafusion-43.1.0.tar.gz", hash = "sha256:271fee9ed931e976bd095ceb50ba9907fd93267f4f9517a6ea83cd46c1aa42d5", size = 141499 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/2d/86a0e94e2efd7e87a83a3510d05ce71655bc02bf40aadb0286e08dea66c6/datafusion-42.0.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:e9506356ad5d5f7b0f2d636cea24c5fc72518305aacf81207ecb4d59d0ea6866", size = 19496219 }, - { url = "https://files.pythonhosted.org/packages/70/f4/b1270af3a0d0ec23f5cd593ec4ee7878b313dd0eb5b2ab4ec2eedcfa153a/datafusion-42.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:63a07e3779d3bdca0ecafd2eedf6948feff3ecd496a1fcf93baac122a48c6f4f", size = 17817291 }, - { url = "https://files.pythonhosted.org/packages/3a/53/7dd8a09dd759aa8ca1ebd0eef9dd36e741e046c1b9315c2d6257f0119dde/datafusion-42.0.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4f04adbef61e70a3f56c6fcf6b615f75bbc42610947092870acff03171a456b", size = 21748992 }, - { url = "https://files.pythonhosted.org/packages/5a/60/73945d35d612f09bf802269f1aaa57d6a3c6472a36b14ac4d8ac65529b5e/datafusion-42.0.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1fb4a7f34225948d7a5db2ee3b3a578dd6b95c2bae39fd940dfd2de90a34088d", size = 20612406 }, - { url = "https://files.pythonhosted.org/packages/d6/cc/f30443b500326a97def2ee17e972883ebf9048a89cd705ed6e4bec201c1a/datafusion-42.0.0-cp38-abi3-win_amd64.whl", hash = "sha256:71d9af5a9a6852f8121e4811a913cfec596f4c36240149edea57d27af7318749", size = 21140655 }, + { url = "https://files.pythonhosted.org/packages/88/71/180fb6861e3315a1df9aa719ab46f22479bd86bc5cfd3b8e082f4775dd2b/datafusion-43.1.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b40afe48762c7649d1ec3a0116e31d3ee5226812fc4896c0f309d3d490a855c8", size = 20362799 }, + { url = "https://files.pythonhosted.org/packages/f8/e6/024b1dba599897eaf538d11b107132188c74a33dcbf041b231c8531cbc51/datafusion-43.1.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:a61d3efa91578108631ae5f8f070e15656d8eb125a34fe9a1df13db72ce1bcde", size = 18561250 }, + { url = "https://files.pythonhosted.org/packages/32/8f/d6329d65ae83f5485b41b216138bab45bd206465cf6df537f5753178eee7/datafusion-43.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb46deaf625558819cff708acb115d1d249a18adf51e1eaabda898979b344b5b", size = 22558573 }, + { url = "https://files.pythonhosted.org/packages/2b/f4/b9ad6cec2702ff988b3d45386c2fb92744b3b13126da29abaec43d894573/datafusion-43.1.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0d9ae56162304475a147c8e7284b85bda1849659c4495da4d071834a2e6392cd", size = 21381501 }, + { url = "https://files.pythonhosted.org/packages/39/ea/5b14fa3866e7b2aad824a07b33fc719531443952cef8c0678f0cc545b9cb/datafusion-43.1.0-cp38-abi3-win_amd64.whl", hash = "sha256:930830dad47925b1a84b281184eafc00152f02a84a8acc770ac3ebd36b4db5ac", size = 22112172 }, ] [[package]] name = "db-dtypes" -version = "1.3.0" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -1088,34 +1176,34 @@ dependencies = [ { name = "pandas" }, { name = "pyarrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/0f/eb40ff92073723f8e5d4ee0b76e2395f65e84c422c425021c8226af6a8a4/db_dtypes-1.3.0.tar.gz", hash = "sha256:7bcbc8858b07474dc85b77bb2f3ae488978d1336f5ea73b58c39d9118bc3e91b", size = 31390 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/80/00d501391fc5450c37b5fe0c25596e629a9fa2868fe4f194d69c5622210e/db_dtypes-1.3.1.tar.gz", hash = "sha256:a058f05dab100891f3e76a7a3db9ad0f107f18dd3d1bdd13680749a2f07eae77", size = 32492 } wheels = [ - { url = "https://files.pythonhosted.org/packages/89/d0/f746b7f88e3f6e6c6753fb7a078d7d2db2b8f969c7913d51b3a54f0abe53/db_dtypes-1.3.0-py2.py3-none-any.whl", hash = "sha256:7e65c59f849ccbe6f7bc4d0253edcc212a7907662906921caba3e4aadd0bc277", size = 17297 }, + { url = "https://files.pythonhosted.org/packages/a2/e0/2eeacbe14b5a3a3b4ad5fd2c1e7959bd2201e4daeba851579fa78e5eccb1/db_dtypes-1.3.1-py2.py3-none-any.whl", hash = "sha256:fbc9d1740d94aaf2b5ae24601cfc875a69b4635bb9d049e3c3036e9f10203af8", size = 18742 }, ] [[package]] name = "debugpy" -version = "1.8.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/5e/7667b95c9d7ddb25c047143a3a47685f9be2a5d3d177a85a730b22dc6e5c/debugpy-1.8.8.zip", hash = "sha256:e6355385db85cbd666be703a96ab7351bc9e6c61d694893206f8001e22aee091", size = 4928684 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/79/677d71c342d5f24baf81d262c9e0c19cac3b17b4e4587c0574eaa3964ab1/debugpy-1.8.8-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e59b1607c51b71545cb3496876544f7186a7a27c00b436a62f285603cc68d1c6", size = 2088337 }, - { url = "https://files.pythonhosted.org/packages/11/b3/4119fa89b66bcc64a3b186ea52ee7c22bccc5d1765ee890887678b0e3e76/debugpy-1.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6531d952b565b7cb2fbd1ef5df3d333cf160b44f37547a4e7cf73666aca5d8d", size = 3567953 }, - { url = "https://files.pythonhosted.org/packages/e8/4a/01f70b44af27c13d720446ce9bf14467c90411e90e6c6ffbb7c45845d23d/debugpy-1.8.8-cp310-cp310-win32.whl", hash = "sha256:b01f4a5e5c5fb1d34f4ccba99a20ed01eabc45a4684f4948b5db17a319dfb23f", size = 5128658 }, - { url = "https://files.pythonhosted.org/packages/2b/a5/c4210f3842db0911a49b3030bfc217e0772bfd33d7aa50996bc762e8a334/debugpy-1.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:535f4fb1c024ddca5913bb0eb17880c8f24ba28aa2c225059db145ee557035e9", size = 5157545 }, - { url = "https://files.pythonhosted.org/packages/38/55/6b5596ea6d5490e17abc2896f1fbe83d31205a22629805daccd30686721c/debugpy-1.8.8-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:c399023146e40ae373753a58d1be0a98bf6397fadc737b97ad612886b53df318", size = 2187057 }, - { url = "https://files.pythonhosted.org/packages/3f/f7/c2ee07f6335c3620c1435aef2c4d3d4853f6b7fb0789aa2c52a84498ef90/debugpy-1.8.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cc7b162586ea2171eea055985da2702b0723f6f907a423c9b2da5996ad67ba", size = 3139844 }, - { url = "https://files.pythonhosted.org/packages/0d/68/01d335338b68bdebab11de573f4631c7bf0404666ccbf474621123497702/debugpy-1.8.8-cp311-cp311-win32.whl", hash = "sha256:eea8821d998ebeb02f0625dd0d76839ddde8cbf8152ebbe289dd7acf2cdc6b98", size = 5049405 }, - { url = "https://files.pythonhosted.org/packages/22/1d/3f69460b4b8f01dace3882513de71a446eb37ee57fe2112be948fadebde8/debugpy-1.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:d4483836da2a533f4b1454dffc9f668096ac0433de855f0c22cdce8c9f7e10c4", size = 5075025 }, - { url = "https://files.pythonhosted.org/packages/c2/04/8e79824c4d9100049bda056aeaf8f2765d1325a4521a87f8bb373c977236/debugpy-1.8.8-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:0cc94186340be87b9ac5a707184ec8f36547fb66636d1029ff4f1cc020e53996", size = 2514549 }, - { url = "https://files.pythonhosted.org/packages/a5/6b/c336d1eba1aedc9f654aefcdfe47ec41657d149f28ca1477c5f9009681c6/debugpy-1.8.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64674e95916e53c2e9540a056e5f489e0ad4872645399d778f7c598eacb7b7f9", size = 4229617 }, - { url = "https://files.pythonhosted.org/packages/63/9c/d9276c41e9e14164b31bcba789c87a355c091d0fc2d4e4e36a4881c9aa54/debugpy-1.8.8-cp312-cp312-win32.whl", hash = "sha256:5c6e885dbf12015aed73770f29dec7023cb310d0dc2ba8bfbeb5c8e43f80edc9", size = 5167033 }, - { url = "https://files.pythonhosted.org/packages/6d/1c/fd4bc22196b2d0defaa9f644ea4d676d0cb53b6434091b5fa2d4e49c85f2/debugpy-1.8.8-cp312-cp312-win_amd64.whl", hash = "sha256:19ffbd84e757a6ca0113574d1bf5a2298b3947320a3e9d7d8dc3377f02d9f864", size = 5209968 }, - { url = "https://files.pythonhosted.org/packages/90/45/6745f342bbf41bde7eb5dbf5567b794a4a5498a7a729146cb3101b875b30/debugpy-1.8.8-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:705cd123a773d184860ed8dae99becd879dfec361098edbefb5fc0d3683eb804", size = 2499523 }, - { url = "https://files.pythonhosted.org/packages/5c/39/0374610062a384648db9b7b315d0c906facf23613bfd19527135a7c0a420/debugpy-1.8.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890fd16803f50aa9cb1a9b9b25b5ec321656dd6b78157c74283de241993d086f", size = 4218219 }, - { url = "https://files.pythonhosted.org/packages/cc/19/5b8a68eb9bbafd6bfd27ba0ed93d411f3fd50935ecdd2df242de2110a7c9/debugpy-1.8.8-cp313-cp313-win32.whl", hash = "sha256:90244598214bbe704aa47556ec591d2f9869ff9e042e301a2859c57106649add", size = 5171845 }, - { url = "https://files.pythonhosted.org/packages/cd/04/7381dab68e40ca877d5beffc25ad1a0d3d2557cf7465405435fac9e27ef5/debugpy-1.8.8-cp313-cp313-win_amd64.whl", hash = "sha256:4b93e4832fd4a759a0c465c967214ed0c8a6e8914bced63a28ddb0dd8c5f078b", size = 5206890 }, - { url = "https://files.pythonhosted.org/packages/03/99/ec2190d03df5dbd610418919bd1c3d8e6f61d0a97894e11ade6d3260cfb8/debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f", size = 5157124 }, +version = "1.8.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/e7/666f4c9b0e24796af50aadc28d36d21c2e01e831a934535f956e09b3650c/debugpy-1.8.11.tar.gz", hash = "sha256:6ad2688b69235c43b020e04fecccdf6a96c8943ca9c2fb340b8adc103c655e57", size = 1640124 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/e6/4cf7422eaa591b4c7d6a9fde224095dac25283fdd99d90164f28714242b0/debugpy-1.8.11-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:2b26fefc4e31ff85593d68b9022e35e8925714a10ab4858fb1b577a8a48cb8cd", size = 2075100 }, + { url = "https://files.pythonhosted.org/packages/83/3a/e163de1df5995d95760a4d748b02fbefb1c1bf19e915b664017c40435dbf/debugpy-1.8.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61bc8b3b265e6949855300e84dc93d02d7a3a637f2aec6d382afd4ceb9120c9f", size = 3559724 }, + { url = "https://files.pythonhosted.org/packages/27/6c/327e19fd1bf428a1efe1a6f97b306689c54c2cebcf871b66674ead718756/debugpy-1.8.11-cp310-cp310-win32.whl", hash = "sha256:c928bbf47f65288574b78518449edaa46c82572d340e2750889bbf8cd92f3737", size = 5178068 }, + { url = "https://files.pythonhosted.org/packages/49/80/359ff8aa388f0bd4a48f0fa9ce3606396d576657ac149c6fba3cc7de8adb/debugpy-1.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:8da1db4ca4f22583e834dcabdc7832e56fe16275253ee53ba66627b86e304da1", size = 5210109 }, + { url = "https://files.pythonhosted.org/packages/7c/58/8e3f7ec86c1b7985a232667b5df8f3b1b1c8401028d8f4d75e025c9556cd/debugpy-1.8.11-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:85de8474ad53ad546ff1c7c7c89230db215b9b8a02754d41cb5a76f70d0be296", size = 2173656 }, + { url = "https://files.pythonhosted.org/packages/d2/03/95738a68ade2358e5a4d63a2fd8e7ed9ad911001cfabbbb33a7f81343945/debugpy-1.8.11-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffc382e4afa4aee367bf413f55ed17bd91b191dcaf979890af239dda435f2a1", size = 3132464 }, + { url = "https://files.pythonhosted.org/packages/ca/f4/18204891ab67300950615a6ad09b9de236203a9138f52b3b596fa17628ca/debugpy-1.8.11-cp311-cp311-win32.whl", hash = "sha256:40499a9979c55f72f4eb2fc38695419546b62594f8af194b879d2a18439c97a9", size = 5103637 }, + { url = "https://files.pythonhosted.org/packages/3b/90/3775e301cfa573b51eb8a108285681f43f5441dc4c3916feed9f386ef861/debugpy-1.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:987bce16e86efa86f747d5151c54e91b3c1e36acc03ce1ddb50f9d09d16ded0e", size = 5127862 }, + { url = "https://files.pythonhosted.org/packages/c6/ae/2cf26f3111e9d94384d9c01e9d6170188b0aeda15b60a4ac6457f7c8a26f/debugpy-1.8.11-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:84e511a7545d11683d32cdb8f809ef63fc17ea2a00455cc62d0a4dbb4ed1c308", size = 2498756 }, + { url = "https://files.pythonhosted.org/packages/b0/16/ec551789d547541a46831a19aa15c147741133da188e7e6acf77510545a7/debugpy-1.8.11-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce291a5aca4985d82875d6779f61375e959208cdf09fcec40001e65fb0a54768", size = 4219136 }, + { url = "https://files.pythonhosted.org/packages/72/6f/b2b3ce673c55f882d27a6eb04a5f0c68bcad6b742ac08a86d8392ae58030/debugpy-1.8.11-cp312-cp312-win32.whl", hash = "sha256:28e45b3f827d3bf2592f3cf7ae63282e859f3259db44ed2b129093ca0ac7940b", size = 5224440 }, + { url = "https://files.pythonhosted.org/packages/77/09/b1f05be802c1caef5b3efc042fc6a7cadd13d8118b072afd04a9b9e91e06/debugpy-1.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:44b1b8e6253bceada11f714acf4309ffb98bfa9ac55e4fce14f9e5d4484287a1", size = 5264578 }, + { url = "https://files.pythonhosted.org/packages/2e/66/931dc2479aa8fbf362dc6dcee707d895a84b0b2d7b64020135f20b8db1ed/debugpy-1.8.11-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:8988f7163e4381b0da7696f37eec7aca19deb02e500245df68a7159739bbd0d3", size = 2483651 }, + { url = "https://files.pythonhosted.org/packages/10/07/6c171d0fe6b8d237e35598b742f20ba062511b3a4631938cc78eefbbf847/debugpy-1.8.11-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f6a173d1140e557347419767d2b14ac1c9cd847e0b4c5444c7f3144697e4e", size = 4213770 }, + { url = "https://files.pythonhosted.org/packages/89/f1/0711da6ac250d4fe3bf7b3e9b14b4a86e82a98b7825075c07e19bab8da3d/debugpy-1.8.11-cp313-cp313-win32.whl", hash = "sha256:bb3b15e25891f38da3ca0740271e63ab9db61f41d4d8541745cfc1824252cb28", size = 5223911 }, + { url = "https://files.pythonhosted.org/packages/56/98/5e27fa39050749ed460025bcd0034a0a5e78a580a14079b164cc3abdeb98/debugpy-1.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:d8768edcbeb34da9e11bcb8b5c2e0958d25218df7a6e56adf415ef262cd7b6d1", size = 5264166 }, + { url = "https://files.pythonhosted.org/packages/77/0a/d29a5aacf47b4383ed569b8478c02d59ee3a01ad91224d2cff8562410e43/debugpy-1.8.11-py2.py3-none-any.whl", hash = "sha256:0e22f846f4211383e6a416d04b4c13ed174d24cc5d43f5fd52e7821d0ebc8920", size = 5226874 }, ] [[package]] @@ -1138,18 +1226,18 @@ wheels = [ [[package]] name = "deltalake" -version = "0.21.0" +version = "0.22.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyarrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/64/23/349519b4ec9b81bd3236c20db4641cf2270279e13f4aef7436fc04f15070/deltalake-0.21.0.tar.gz", hash = "sha256:88f92cede44b2737431dbf86d43ed3b3c8cb73db56e99138aea1a6d93e9c6821", size = 4865774 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/04/cc8e66e583888feb072cb60f891d69fb0fb816a7d91cf4acc1ae047e852d/deltalake-0.22.3.tar.gz", hash = "sha256:5e753a000a4710b0e2a3c3793fd5383599c7a7d4fb86846ed2513e8ca41f2d9a", size = 4902085 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/c3/d340e224bbdb0f4a4b0d6e2d019fc714c5e9a1ef680227c1e0accd098026/deltalake-0.21.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:4b4a352da534a173d837906357c808cd36dd216974b9df2c3998acb98d04954a", size = 31146730 }, - { url = "https://files.pythonhosted.org/packages/df/6f/82cb405d44c5fda7bcd06a5f3487301986a450cc7ba80b269e670c4d1e6e/deltalake-0.21.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:2e7762af03fed0a67ce8f89b6b75356a74e485f52923c73a5c850c6c574d3481", size = 29362572 }, - { url = "https://files.pythonhosted.org/packages/e5/55/a0c81b365451e29a049935d42bb1977d8de70c2194f425d11faccde084ab/deltalake-0.21.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02870db9dfe4694034fb209cb4822f85ba1a11885e353e11fd0dfb51b0af67d2", size = 35387264 }, - { url = "https://files.pythonhosted.org/packages/76/51/bc0eeb088c4bdea4628afcfeb0f4bbe254baa8ddfeba05ba2f34468a9d25/deltalake-0.21.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92ccd486243dbe17c45a6ca06b108351dfd07708d34e75405fcb13033c63d176", size = 36251662 }, - { url = "https://files.pythonhosted.org/packages/6a/3e/ca359eadd1385f23294fe517bec7aad04d0867c23051f8d6a957b1dd3322/deltalake-0.21.0-cp38-abi3-win_amd64.whl", hash = "sha256:dc84334a0f8df1f4f5c6ca9aaffbeffb896f43de6744d0c77c306ca8ba27041b", size = 28705433 }, + { url = "https://files.pythonhosted.org/packages/97/34/eadc901c7e5f22f98ccc8880c0a738b3b27dadf9f832da86cb4069250c65/deltalake-0.22.3-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:996b422432abf978aae1e39fe28a95df12fba6d057e4d1ba64b571f5a3f27576", size = 36935764 }, + { url = "https://files.pythonhosted.org/packages/07/1b/27567ac12cf8f11ebe33063a1c70e35916c6b2c352bba474163f8e7820f0/deltalake-0.22.3-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:bedb0cc865bcaaa20be4d7989ea46063e042b443cd0e07b71f4e5b9dfad27457", size = 34702543 }, + { url = "https://files.pythonhosted.org/packages/82/72/d0539a363440277b5d80acef57fde116b5b8426e98d56b02c97205420aa5/deltalake-0.22.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a80c51f4b44872a63dea2d6d544db07ec24cf359397c0cd25f71430088229af", size = 40972161 }, + { url = "https://files.pythonhosted.org/packages/7c/09/95abe066d746fb3be6c74dce78f3c847edf8b274062fb73b0b5afdae3d8f/deltalake-0.22.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636c657ac0a6f439c4f6a180f43f4d521e91ced8a8041cb69001de0e566518b9", size = 42479579 }, + { url = "https://files.pythonhosted.org/packages/f6/c4/10f33c1b6aee253fe88ba4ad02d7ab1532b2de9f91a9df5b1e435e9fabdb/deltalake-0.22.3-cp39-abi3-win_amd64.whl", hash = "sha256:65d9b477ff6e7ae2333da86d268551b3c7ff6654ba65f1c4900670f8ad6fba2b", size = 33800019 }, ] [[package]] @@ -1216,14 +1304,14 @@ wheels = [ [[package]] name = "dunamai" -version = "1.22.0" +version = "1.23.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a0/fe/aee602f08765de4dd753d2e5d6cbd480857182e345f161f7a19ad1979e4d/dunamai-1.22.0.tar.gz", hash = "sha256:375a0b21309336f0d8b6bbaea3e038c36f462318c68795166e31f9873fdad676", size = 44453 } +sdist = { url = "https://files.pythonhosted.org/packages/06/4e/a5c8c337a1d9ac0384298ade02d322741fb5998041a5ea74d1cd2a4a1d47/dunamai-1.23.0.tar.gz", hash = "sha256:a163746de7ea5acb6dacdab3a6ad621ebc612ed1e528aaa8beedb8887fccd2c4", size = 44681 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/01/0c3ba3dcf946e884ad8a153f6ac277e38cc8e87038059dbb751f89b9e258/dunamai-1.22.0-py3-none-any.whl", hash = "sha256:eab3894b31e145bd028a74b13491c57db01986a7510482c9b5fff3b4e53d77b7", size = 26187 }, + { url = "https://files.pythonhosted.org/packages/21/4c/963169386309fec4f96fd61210ac0a0666887d0fb0a50205395674d20b71/dunamai-1.23.0-py3-none-any.whl", hash = "sha256:a0906d876e92441793c6a423e16a4802752e723e9c9a5aabdc5535df02dbe041", size = 26342 }, ] [[package]] @@ -1264,11 +1352,11 @@ wheels = [ [[package]] name = "fastjsonschema" -version = "2.20.0" +version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/03/3f/3ad5e7be13b4b8b55f4477141885ab2364f65d5f6ad5f7a9daffd634d066/fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23", size = 373056 } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/ca/086311cdfc017ec964b2436fe0c98c1f4efcb7e4c328956a22456e497655/fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a", size = 23543 }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] [[package]] @@ -1282,41 +1370,43 @@ wheels = [ [[package]] name = "fonttools" -version = "4.54.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/1d/70b58e342e129f9c0ce030029fb4b2b0670084bbbfe1121d008f6a1e361c/fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285", size = 3463867 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/f9/285c9a2d0e86b9bf2babfe19bec00502361fda56cea144d6a269ab9a32e6/fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2", size = 2766970 }, - { url = "https://files.pythonhosted.org/packages/2f/9a/9d899e7ae55b0dd30632e6ca36c0f5fa1205b1b096ec171c9be903673058/fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882", size = 2254639 }, - { url = "https://files.pythonhosted.org/packages/16/6f/b99e0c347732fb003077a2cff38c26f381969b74329aa5597e344d540fe1/fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10", size = 4574346 }, - { url = "https://files.pythonhosted.org/packages/e5/12/9a45294a7c4520cc32936edd15df1d5c24af701d2f5f51070a9a43d7664b/fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e", size = 4630045 }, - { url = "https://files.pythonhosted.org/packages/64/52/ba4f00eb6003e4089264cd9ce126cddec2b39c78f1ab01be9dc389a197ca/fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e", size = 4569527 }, - { url = "https://files.pythonhosted.org/packages/41/ff/85f93a14c8acf978f332508f980dcaff5ed5f0cf284371eb101a78f0b1f4/fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44", size = 4741677 }, - { url = "https://files.pythonhosted.org/packages/6f/f0/06ea7d9f8b7b6d4758a50271517db04039c4c6da8fa0475d417e005624d0/fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02", size = 2166797 }, - { url = "https://files.pythonhosted.org/packages/71/73/545c817e34b8c34585291951722e1a5ae579380deb009576d9d244b13ab0/fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d", size = 2210552 }, - { url = "https://files.pythonhosted.org/packages/aa/2c/8b5d82fe2d9c7f260fb73121418f5e07d4e38c329ea3886a5b0e55586113/fonttools-4.54.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20", size = 2768112 }, - { url = "https://files.pythonhosted.org/packages/37/2e/f94118b92f7b6a9ec93840101b64bfdd09f295b266133857e8e852a5c35c/fonttools-4.54.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2", size = 2254739 }, - { url = "https://files.pythonhosted.org/packages/45/4b/8a32f56a13e78256192f77d6b65583c43538c7955f5420887bb574b91ddf/fonttools-4.54.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7", size = 4879772 }, - { url = "https://files.pythonhosted.org/packages/96/13/748b7f7239893ff0796de11074b0ad8aa4c3da2d9f4d79a128b0b16147f3/fonttools-4.54.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07", size = 4927686 }, - { url = "https://files.pythonhosted.org/packages/7c/82/91bc5a378b4a0593fa90ea706f68ce7e9e871c6873e0d91e134d107758db/fonttools-4.54.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8", size = 4890789 }, - { url = "https://files.pythonhosted.org/packages/ea/ca/82be5d4f8b78405cdb3f7f3f1316af5e8db93216121f19da9f684a35beee/fonttools-4.54.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a", size = 5061351 }, - { url = "https://files.pythonhosted.org/packages/da/2f/fd6e1b01c80c473c3ac52492dcf8d26cdf5f4a89b4f30875ecfbda55e7ff/fonttools-4.54.1-cp311-cp311-win32.whl", hash = "sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc", size = 2166210 }, - { url = "https://files.pythonhosted.org/packages/63/f1/3a081cd047d83b5966cb0d7ef3fea929ee6eddeb94d8fbfdb2a19bd60cc7/fonttools-4.54.1-cp311-cp311-win_amd64.whl", hash = "sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6", size = 2211946 }, - { url = "https://files.pythonhosted.org/packages/27/b6/f9d365932dcefefdcc794985f8846471e60932070c557e0f66ed195fccec/fonttools-4.54.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d", size = 2761873 }, - { url = "https://files.pythonhosted.org/packages/67/9d/cfbfe36e5061a8f68b154454ba2304eb01f40d4ba9b63e41d9058909baed/fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08", size = 2251828 }, - { url = "https://files.pythonhosted.org/packages/90/41/5573e074739efd9227dd23647724f01f6f07ad062fe09d02e91c5549dcf7/fonttools-4.54.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263", size = 4792544 }, - { url = "https://files.pythonhosted.org/packages/08/07/aa85cc62abcc940b25d14b542cf585eebf4830032a7f6a1395d696bb3231/fonttools-4.54.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab", size = 4875892 }, - { url = "https://files.pythonhosted.org/packages/47/23/c5726c2615446c498a976bed21c35a242a97eee39930a2655d616ca885cc/fonttools-4.54.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d", size = 4769822 }, - { url = "https://files.pythonhosted.org/packages/8f/7b/87f7f7d35e0732ac67422dfa6f05e2b568fb6ca2dcd7f3e4f500293cfd75/fonttools-4.54.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714", size = 5029455 }, - { url = "https://files.pythonhosted.org/packages/e0/09/241aa498587889576838aa73c78d22b70ce06970807a5475d372baa7ccb7/fonttools-4.54.1-cp312-cp312-win32.whl", hash = "sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac", size = 2154411 }, - { url = "https://files.pythonhosted.org/packages/b9/0a/a57caaff3bc880779317cb157e5b49dc47fad54effe027016abd355b0651/fonttools-4.54.1-cp312-cp312-win_amd64.whl", hash = "sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e", size = 2200412 }, - { url = "https://files.pythonhosted.org/packages/05/3d/cc515cae84a11d696f2cb7c139a90997b15f02e2e97ec09a5d79302cbcd7/fonttools-4.54.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff", size = 2749174 }, - { url = "https://files.pythonhosted.org/packages/03/03/05d4b22d1a674d066380657f60bbc0eda2d206446912e676d1a33a206878/fonttools-4.54.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb", size = 2246267 }, - { url = "https://files.pythonhosted.org/packages/52/c3/bb6086adb675e8b0963a7dbb7769e7118c95b687dd318cd660aefd4b4c8c/fonttools-4.54.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a", size = 4855090 }, - { url = "https://files.pythonhosted.org/packages/80/a1/d7192b6a104e3f9ea8e5b1c3463a6240399f0fa826a782eff636cbe0495a/fonttools-4.54.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c", size = 5005449 }, - { url = "https://files.pythonhosted.org/packages/5a/6c/ecfd5c6cd8c9006e85b128d073af26bb263e8aa47506374cb14b25bcf65f/fonttools-4.54.1-cp313-cp313-win32.whl", hash = "sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58", size = 2152496 }, - { url = "https://files.pythonhosted.org/packages/63/da/f7a1d837de419e3d4cccbd0dbf53c7399f610f65ceb9bcbf2480f3ae7950/fonttools-4.54.1-cp313-cp313-win_amd64.whl", hash = "sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d", size = 2197257 }, - { url = "https://files.pythonhosted.org/packages/57/5e/de2e6e51cb6894f2f2bc2641f6c845561361b622e96df3cca04df77222c9/fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd", size = 1096920 }, +version = "4.55.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/61/a300d1574dc381393424047c0396a0e213db212e28361123af9830d71a8d/fonttools-4.55.3.tar.gz", hash = "sha256:3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45", size = 3498155 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/f3/9ac8c6705e4a0ff3c29e524df1caeee6f2987b02fb630129f21cc99a8212/fonttools-4.55.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1dcc07934a2165ccdc3a5a608db56fb3c24b609658a5b340aee4ecf3ba679dc0", size = 2769857 }, + { url = "https://files.pythonhosted.org/packages/d8/24/e8b8edd280bdb7d0ecc88a5d952b1dec2ee2335be71cc5a33c64871cdfe8/fonttools-4.55.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f7d66c15ba875432a2d2fb419523f5d3d347f91f48f57b8b08a2dfc3c39b8a3f", size = 2299705 }, + { url = "https://files.pythonhosted.org/packages/f8/9e/e1ba20bd3b71870207fd45ca3b90208a7edd8ae3b001081dc31c45adb017/fonttools-4.55.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e4ae3592e62eba83cd2c4ccd9462dcfa603ff78e09110680a5444c6925d841", size = 4576104 }, + { url = "https://files.pythonhosted.org/packages/34/db/d423bc646e6703fe3e6aea0edd22a2df47b9d188c5f7f1b49070be4d2205/fonttools-4.55.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d65a3022c35e404d19ca14f291c89cc5890032ff04f6c17af0bd1927299674", size = 4618282 }, + { url = "https://files.pythonhosted.org/packages/75/a0/e5062ac960a385b984ba74e7b55132e7f2c65e449e8330ab0f595407a3de/fonttools-4.55.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d342e88764fb201286d185093781bf6628bbe380a913c24adf772d901baa8276", size = 4570539 }, + { url = "https://files.pythonhosted.org/packages/1f/33/0d744ff518ebe50020b63e5018b8b278efd6a930c1d2eedda7defc42153b/fonttools-4.55.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dd68c87a2bfe37c5b33bcda0fba39b65a353876d3b9006fde3adae31f97b3ef5", size = 4742411 }, + { url = "https://files.pythonhosted.org/packages/7e/6c/2f768652dba6b801f1567fc5d1829cda369bcd6e95e315a91e628f91c702/fonttools-4.55.3-cp310-cp310-win32.whl", hash = "sha256:1bc7ad24ff98846282eef1cbeac05d013c2154f977a79886bb943015d2b1b261", size = 2175132 }, + { url = "https://files.pythonhosted.org/packages/19/d1/4dcd865360fb2c499749a913fe80e41c26e8ae18629d87dfffa3de27e831/fonttools-4.55.3-cp310-cp310-win_amd64.whl", hash = "sha256:b54baf65c52952db65df39fcd4820668d0ef4766c0ccdf32879b77f7c804d5c5", size = 2219430 }, + { url = "https://files.pythonhosted.org/packages/4b/18/14be25545600bd100e5b74a3ac39089b7c1cb403dc513b7ca348be3381bf/fonttools-4.55.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c4491699bad88efe95772543cd49870cf756b019ad56294f6498982408ab03e", size = 2771005 }, + { url = "https://files.pythonhosted.org/packages/b2/51/2e1a5d3871cd7c2ae2054b54e92604e7d6abc3fd3656e9583c399648fe1c/fonttools-4.55.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5323a22eabddf4b24f66d26894f1229261021dacd9d29e89f7872dd8c63f0b8b", size = 2300654 }, + { url = "https://files.pythonhosted.org/packages/73/1a/50109bb2703bc6f774b52ea081db21edf2a9fa4b6d7485faadf9d1b997e9/fonttools-4.55.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5480673f599ad410695ca2ddef2dfefe9df779a9a5cda89503881e503c9c7d90", size = 4877541 }, + { url = "https://files.pythonhosted.org/packages/5d/52/c0b9857fa075da1b8806c5dc2d8342918a8cc2065fd14fbddb3303282693/fonttools-4.55.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da9da6d65cd7aa6b0f806556f4985bcbf603bf0c5c590e61b43aa3e5a0f822d0", size = 4906304 }, + { url = "https://files.pythonhosted.org/packages/0b/1b/55f85c7e962d295e456d5209581c919620ee3e877b95cd86245187a5050f/fonttools-4.55.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e894b5bd60d9f473bed7a8f506515549cc194de08064d829464088d23097331b", size = 4888087 }, + { url = "https://files.pythonhosted.org/packages/83/13/6f2809c612ea2ac51391f92468ff861c63473601530fca96458b453212bf/fonttools-4.55.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:aee3b57643827e237ff6ec6d28d9ff9766bd8b21e08cd13bff479e13d4b14765", size = 5056958 }, + { url = "https://files.pythonhosted.org/packages/c1/28/d0ea9e872fa4208b9dfca686e1dd9ca22f6c9ef33ecff2f0ebc2dbe7c29b/fonttools-4.55.3-cp311-cp311-win32.whl", hash = "sha256:eb6ca911c4c17eb51853143624d8dc87cdcdf12a711fc38bf5bd21521e79715f", size = 2173939 }, + { url = "https://files.pythonhosted.org/packages/be/36/d74ae1020bc41a1dff3e6f5a99f646563beecb97e386d27abdac3ba07650/fonttools-4.55.3-cp311-cp311-win_amd64.whl", hash = "sha256:6314bf82c54c53c71805318fcf6786d986461622dd926d92a465199ff54b1b72", size = 2220363 }, + { url = "https://files.pythonhosted.org/packages/89/58/fbcf5dff7e3ea844bb00c4d806ca1e339e1f2dce5529633bf4842c0c9a1f/fonttools-4.55.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f9e736f60f4911061235603a6119e72053073a12c6d7904011df2d8fad2c0e35", size = 2765380 }, + { url = "https://files.pythonhosted.org/packages/81/dd/da6e329e51919b4f421c8738f3497e2ab08c168e76aaef7b6d5351862bdf/fonttools-4.55.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a8aa2c5e5b8b3bcb2e4538d929f6589a5c6bdb84fd16e2ed92649fb5454f11c", size = 2297940 }, + { url = "https://files.pythonhosted.org/packages/00/44/f5ee560858425c99ef07e04919e736db09d6416408e5a8d3bbfb4a6623fd/fonttools-4.55.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07f8288aacf0a38d174445fc78377a97fb0b83cfe352a90c9d9c1400571963c7", size = 4793327 }, + { url = "https://files.pythonhosted.org/packages/24/da/0a001926d791c55e29ac3c52964957a20dbc1963615446b568b7432891c3/fonttools-4.55.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8d5e8916c0970fbc0f6f1bece0063363bb5857a7f170121a4493e31c3db3314", size = 4865624 }, + { url = "https://files.pythonhosted.org/packages/3d/d8/1edd8b13a427a9fb6418373437caa586c0caa57f260af8e0548f4d11e340/fonttools-4.55.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ae3b6600565b2d80b7c05acb8e24d2b26ac407b27a3f2e078229721ba5698427", size = 4774166 }, + { url = "https://files.pythonhosted.org/packages/9c/ec/ade054097976c3d6debc9032e09a351505a0196aa5493edf021be376f75e/fonttools-4.55.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:54153c49913f45065c8d9e6d0c101396725c5621c8aee744719300f79771d75a", size = 5001832 }, + { url = "https://files.pythonhosted.org/packages/e2/cd/233f0e31ad799bb91fc78099c8b4e5ec43b85a131688519640d6bae46f6a/fonttools-4.55.3-cp312-cp312-win32.whl", hash = "sha256:827e95fdbbd3e51f8b459af5ea10ecb4e30af50221ca103bea68218e9615de07", size = 2162228 }, + { url = "https://files.pythonhosted.org/packages/46/45/a498b5291f6c0d91b2394b1ed7447442a57d1c9b9cf8f439aee3c316a56e/fonttools-4.55.3-cp312-cp312-win_amd64.whl", hash = "sha256:e6e8766eeeb2de759e862004aa11a9ea3d6f6d5ec710551a88b476192b64fd54", size = 2209118 }, + { url = "https://files.pythonhosted.org/packages/9c/9f/00142a19bad96eeeb1aed93f567adc19b7f2c1af6f5bc0a1c3de90b4b1ac/fonttools-4.55.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a430178ad3e650e695167cb53242dae3477b35c95bef6525b074d87493c4bf29", size = 2752812 }, + { url = "https://files.pythonhosted.org/packages/b0/20/14b8250d63ba65e162091fb0dda07730f90c303bbf5257e9ddacec7230d9/fonttools-4.55.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:529cef2ce91dc44f8e407cc567fae6e49a1786f2fefefa73a294704c415322a4", size = 2291521 }, + { url = "https://files.pythonhosted.org/packages/34/47/a681cfd10245eb74f65e491a934053ec75c4af639655446558f29818e45e/fonttools-4.55.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e75f12c82127486fac2d8bfbf5bf058202f54bf4f158d367e41647b972342ca", size = 4770980 }, + { url = "https://files.pythonhosted.org/packages/d2/6c/a7066afc19db0705a12efd812e19c32cde2b9514eb714659522f2ebd60b6/fonttools-4.55.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:859c358ebf41db18fb72342d3080bce67c02b39e86b9fbcf1610cca14984841b", size = 4845534 }, + { url = "https://files.pythonhosted.org/packages/0c/a2/3c204fbabbfd845d9bdcab9ae35279d41e9a4bf5c80a0a2708f9c5a195d6/fonttools-4.55.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:546565028e244a701f73df6d8dd6be489d01617863ec0c6a42fa25bf45d43048", size = 4753910 }, + { url = "https://files.pythonhosted.org/packages/6e/8c/b4cb3592880340b89e4ef6601b531780bba73862332a6451d78fe135d6cb/fonttools-4.55.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aca318b77f23523309eec4475d1fbbb00a6b133eb766a8bdc401faba91261abe", size = 4976411 }, + { url = "https://files.pythonhosted.org/packages/fc/a8/4bf98840ff89fcc188470b59daec57322178bf36d2f4f756cd19a42a826b/fonttools-4.55.3-cp313-cp313-win32.whl", hash = "sha256:8c5ec45428edaa7022f1c949a632a6f298edc7b481312fc7dc258921e9399628", size = 2160178 }, + { url = "https://files.pythonhosted.org/packages/e6/57/4cc35004605416df3225ff362f3455cf09765db00df578ae9e46d0fefd23/fonttools-4.55.3-cp313-cp313-win_amd64.whl", hash = "sha256:11e5de1ee0d95af4ae23c1a138b184b7f06e0b6abacabf1d0db41c90b03d834b", size = 2206102 }, + { url = "https://files.pythonhosted.org/packages/99/3b/406d17b1f63e04a82aa621936e6e1c53a8c05458abd66300ac85ea7f9ae9/fonttools-4.55.3-py3-none-any.whl", hash = "sha256:f412604ccbeee81b091b420272841e5ec5ef68967a9790e80bffd0e30b8e2977", size = 1111638 }, ] [[package]] @@ -1399,16 +1489,16 @@ wheels = [ [[package]] name = "fsspec" -version = "2024.10.0" +version = "2024.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a0/52/f16a068ebadae42526484c31f4398e62962504e5724a8ba5dc3409483df2/fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493", size = 286853 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/11/de70dee31455c546fbc88301971ec03c328f3d1138cfba14263f651e9551/fsspec-2024.12.0.tar.gz", hash = "sha256:670700c977ed2fb51e0d9f9253177ed20cbde4a3e5c0283cc5385b5870c8533f", size = 291600 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871", size = 179641 }, + { url = "https://files.pythonhosted.org/packages/de/86/5486b0188d08aa643e127774a99bac51ffa6cf343e3deb0583956dca5b22/fsspec-2024.12.0-py3-none-any.whl", hash = "sha256:b520aed47ad9804237ff878b504267a3b0b441e97508bd6d2d8774e3db85cee2", size = 183862 }, ] [[package]] name = "gcsfs" -version = "2024.10.0" +version = "2024.12.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -1419,9 +1509,9 @@ dependencies = [ { name = "google-cloud-storage" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e5/1e/1d8c4593d9e2eb04918fec43253ab152823d67ad51ad9e3ab6b3a78c431a/gcsfs-2024.10.0.tar.gz", hash = "sha256:5df54cfe568e8fdeea5aafa7fed695cdc69a9a674e991ca8c1ce634f5df1d314", size = 79588 } +sdist = { url = "https://files.pythonhosted.org/packages/20/a2/310a6f1cfdb39b2385af38620f299a8acb427b5c1fc36aa1037a81eea0d8/gcsfs-2024.12.0.tar.gz", hash = "sha256:e672413922108300ebc1fe78b8f99f3c7c1b94e7e088f5a6dc88de6d5a93d156", size = 80258 } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/96/d60e835fb7d10166c77aef0c1fa30e634153c03a0f486786977b95f88fde/gcsfs-2024.10.0-py2.py3-none-any.whl", hash = "sha256:bb2d23547e61203ea2dda5fa6c4b91a0c34b74ebe8bb6ab1926f6c33381bceb2", size = 34953 }, + { url = "https://files.pythonhosted.org/packages/6b/0e/fb76438001cf6910be9f47b3ee1e3e1490caf0d44e2ff34625a97e3fbf63/gcsfs-2024.12.0-py2.py3-none-any.whl", hash = "sha256:ec88e48f77e466723705458af85dda238e43aa69fac071efd98829d06e9f095a", size = 35488 }, ] [[package]] @@ -1452,7 +1542,7 @@ wheels = [ [[package]] name = "google-api-core" -version = "2.22.0" +version = "2.24.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, @@ -1461,9 +1551,9 @@ dependencies = [ { name = "protobuf" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/c2/425f97c2087affbd452a05d3faa08d97de333f2ca554733e1becab55ee4e/google_api_core-2.22.0.tar.gz", hash = "sha256:26f8d76b96477db42b55fd02a33aae4a42ec8b86b98b94969b7333a2c828bf35", size = 159700 } +sdist = { url = "https://files.pythonhosted.org/packages/81/56/d70d66ed1b5ab5f6c27bf80ec889585ad8f865ff32acbafd3b2ef0bfb5d0/google_api_core-2.24.0.tar.gz", hash = "sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf", size = 162647 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/7b/1137a9811be73d8ff8238eb2d9f60f0bc0bb6a1edd87f9d47557ab937a2b/google_api_core-2.22.0-py3-none-any.whl", hash = "sha256:a6652b6bd51303902494998626653671703c420f6f4c88cfd3f50ed723e9d021", size = 156538 }, + { url = "https://files.pythonhosted.org/packages/a1/76/65b8b94e74bf1b6d1cc38d916089670c4da5029d25762441d8c5c19e51dd/google_api_core-2.24.0-py3-none-any.whl", hash = "sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9", size = 158576 }, ] [package.optional-dependencies] @@ -1474,16 +1564,16 @@ grpc = [ [[package]] name = "google-auth" -version = "2.36.0" +version = "2.37.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, { name = "pyasn1-modules" }, { name = "rsa" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6a/71/4c5387d8a3e46e3526a8190ae396659484377a73b33030614dd3b28e7ded/google_auth-2.36.0.tar.gz", hash = "sha256:545e9618f2df0bcbb7dcbc45a546485b1212624716975a1ea5ae8149ce769ab1", size = 268336 } +sdist = { url = "https://files.pythonhosted.org/packages/46/af/b25763b9d35dfc2c6f9c3ec34d8d3f1ba760af3a7b7e8d5c5f0579522c45/google_auth-2.37.0.tar.gz", hash = "sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00", size = 268878 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/9a/3d5087d27865c2f0431b942b5c4500b7d1b744dd3262fdc973a4c39d099e/google_auth-2.36.0-py2.py3-none-any.whl", hash = "sha256:51a15d47028b66fd36e5c64a82d2d57480075bccc7da37cde257fc94177a61fb", size = 209519 }, + { url = "https://files.pythonhosted.org/packages/8d/8d/4d5d5f9f500499f7bd4c93903b43e8d6976f3fc6f064637ded1a85d09b07/google_auth-2.37.0-py2.py3-none-any.whl", hash = "sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0", size = 209829 }, ] [[package]] @@ -1501,7 +1591,7 @@ wheels = [ [[package]] name = "google-cloud-bigquery" -version = "3.26.0" +version = "3.27.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core", extra = ["grpc"] }, @@ -1512,9 +1602,9 @@ dependencies = [ { name = "python-dateutil" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/b7/86336c193f7de63c68426005ebb130093ab81cdabf45b5e6ca378112c453/google_cloud_bigquery-3.26.0.tar.gz", hash = "sha256:edbdc788beea659e04c0af7fe4dcd6d9155344b98951a0d5055bd2f15da4ba23", size = 455586 } +sdist = { url = "https://files.pythonhosted.org/packages/c0/05/633ce6686b1fed2cd364fa4698bfa6d586263cd4795d012584f8097061e1/google_cloud_bigquery-3.27.0.tar.gz", hash = "sha256:379c524054d7b090fa56d0c22662cc6e6458a6229b6754c0e7177e3a73421d2c", size = 456964 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/91/e1c80ae2924efc047ca156662d6b0458d9a9ce99204ae7e719ff9a66123d/google_cloud_bigquery-3.26.0-py2.py3-none-any.whl", hash = "sha256:e0e9ad28afa67a18696e624cbccab284bf2c0a3f6eeb9eeb0426c69b943793a8", size = 239126 }, + { url = "https://files.pythonhosted.org/packages/f5/40/4b11a4a8839de8ce802a3ccd60b34e70ce10d13d434a560534ba98f0ea3f/google_cloud_bigquery-3.27.0-py2.py3-none-any.whl", hash = "sha256:b53b0431e5ba362976a4cd8acce72194b4116cdf8115030c7b339b884603fcc3", size = 240100 }, ] [[package]] @@ -1547,7 +1637,7 @@ wheels = [ [[package]] name = "google-cloud-storage" -version = "2.18.2" +version = "2.19.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core" }, @@ -1557,9 +1647,9 @@ dependencies = [ { name = "google-resumable-media" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/b7/1554cdeb55d9626a4b8720746cba8119af35527b12e1780164f9ba0f659a/google_cloud_storage-2.18.2.tar.gz", hash = "sha256:aaf7acd70cdad9f274d29332673fcab98708d0e1f4dceb5a5356aaef06af4d99", size = 5532864 } +sdist = { url = "https://files.pythonhosted.org/packages/36/76/4d965702e96bb67976e755bed9828fa50306dca003dbee08b67f41dd265e/google_cloud_storage-2.19.0.tar.gz", hash = "sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2", size = 5535488 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/da/95db7bd4f0bd1644378ac1702c565c0210b004754d925a74f526a710c087/google_cloud_storage-2.18.2-py2.py3-none-any.whl", hash = "sha256:97a4d45c368b7d401ed48c4fdfe86e1e1cb96401c9e199e419d289e2c0370166", size = 130466 }, + { url = "https://files.pythonhosted.org/packages/d5/94/6db383d8ee1adf45dc6c73477152b82731fa4c4a46d9c1932cc8757e0fd4/google_cloud_storage-2.19.0-py2.py3-none-any.whl", hash = "sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba", size = 131787 }, ] [[package]] @@ -1602,14 +1692,14 @@ wheels = [ [[package]] name = "googleapis-common-protos" -version = "1.65.0" +version = "1.66.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 } +sdist = { url = "https://files.pythonhosted.org/packages/ff/a7/8e9cccdb1c49870de6faea2a2764fa23f627dd290633103540209f03524c/googleapis_common_protos-1.66.0.tar.gz", hash = "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c", size = 114376 } 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 }, + { url = "https://files.pythonhosted.org/packages/a0/0f/c0713fb2b3d28af4b2fded3291df1c4d4f79a00d15c2374a9e010870016c/googleapis_common_protos-1.66.0-py2.py3-none-any.whl", hash = "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed", size = 221682 }, ] [[package]] @@ -1686,60 +1776,60 @@ wheels = [ [[package]] name = "grpcio" -version = "1.67.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/53/d9282a66a5db45981499190b77790570617a604a38f3d103d0400974aeb5/grpcio-1.67.1.tar.gz", hash = "sha256:3dc2ed4cabea4dc14d5e708c2b426205956077cc5de419b4d4079315017e9732", size = 12580022 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/cd/f6ca5c49aa0ae7bc6d0757f7dae6f789569e9490a635eaabe02bc02de7dc/grpcio-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:8b0341d66a57f8a3119b77ab32207072be60c9bf79760fa609c5609f2deb1f3f", size = 5112450 }, - { url = "https://files.pythonhosted.org/packages/d4/f0/d9bbb4a83cbee22f738ee7a74aa41e09ccfb2dcea2cc30ebe8dab5b21771/grpcio-1.67.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f5a27dddefe0e2357d3e617b9079b4bfdc91341a91565111a21ed6ebbc51b22d", size = 10937518 }, - { url = "https://files.pythonhosted.org/packages/5b/17/0c5dbae3af548eb76669887642b5f24b232b021afe77eb42e22bc8951d9c/grpcio-1.67.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:43112046864317498a33bdc4797ae6a268c36345a910de9b9c17159d8346602f", size = 5633610 }, - { url = "https://files.pythonhosted.org/packages/17/48/e000614e00153d7b2760dcd9526b95d72f5cfe473b988e78f0ff3b472f6c/grpcio-1.67.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9b929f13677b10f63124c1a410994a401cdd85214ad83ab67cc077fc7e480f0", size = 6240678 }, - { url = "https://files.pythonhosted.org/packages/64/19/a16762a70eeb8ddfe43283ce434d1499c1c409ceec0c646f783883084478/grpcio-1.67.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1797a8a3845437d327145959a2c0c47c05947c9eef5ff1a4c80e499dcc6fa", size = 5884528 }, - { url = "https://files.pythonhosted.org/packages/6b/dc/bd016aa3684914acd2c0c7fa4953b2a11583c2b844f3d7bae91fa9b98fbb/grpcio-1.67.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0489063974d1452436139501bf6b180f63d4977223ee87488fe36858c5725292", size = 6583680 }, - { url = "https://files.pythonhosted.org/packages/1a/93/1441cb14c874f11aa798a816d582f9da82194b6677f0f134ea53d2d5dbeb/grpcio-1.67.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9fd042de4a82e3e7aca44008ee2fb5da01b3e5adb316348c21980f7f58adc311", size = 6162967 }, - { url = "https://files.pythonhosted.org/packages/29/e9/9295090380fb4339b7e935b9d005fa9936dd573a22d147c9e5bb2df1b8d4/grpcio-1.67.1-cp310-cp310-win32.whl", hash = "sha256:638354e698fd0c6c76b04540a850bf1db27b4d2515a19fcd5cf645c48d3eb1ed", size = 3616336 }, - { url = "https://files.pythonhosted.org/packages/ce/de/7c783b8cb8f02c667ca075c49680c4aeb8b054bc69784bcb3e7c1bbf4985/grpcio-1.67.1-cp310-cp310-win_amd64.whl", hash = "sha256:608d87d1bdabf9e2868b12338cd38a79969eaf920c89d698ead08f48de9c0f9e", size = 4352071 }, - { url = "https://files.pythonhosted.org/packages/59/2c/b60d6ea1f63a20a8d09c6db95c4f9a16497913fb3048ce0990ed81aeeca0/grpcio-1.67.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:7818c0454027ae3384235a65210bbf5464bd715450e30a3d40385453a85a70cb", size = 5119075 }, - { url = "https://files.pythonhosted.org/packages/b3/9a/e1956f7ca582a22dd1f17b9e26fcb8229051b0ce6d33b47227824772feec/grpcio-1.67.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ea33986b70f83844cd00814cee4451055cd8cab36f00ac64a31f5bb09b31919e", size = 11009159 }, - { url = "https://files.pythonhosted.org/packages/43/a8/35fbbba580c4adb1d40d12e244cf9f7c74a379073c0a0ca9d1b5338675a1/grpcio-1.67.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c7a01337407dd89005527623a4a72c5c8e2894d22bead0895306b23c6695698f", size = 5629476 }, - { url = "https://files.pythonhosted.org/packages/77/c9/864d336e167263d14dfccb4dbfa7fce634d45775609895287189a03f1fc3/grpcio-1.67.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b866f73224b0634f4312a4674c1be21b2b4afa73cb20953cbbb73a6b36c3cc", size = 6239901 }, - { url = "https://files.pythonhosted.org/packages/f7/1e/0011408ebabf9bd69f4f87cc1515cbfe2094e5a32316f8714a75fd8ddfcb/grpcio-1.67.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fff78ba10d4250bfc07a01bd6254a6d87dc67f9627adece85c0b2ed754fa96", size = 5881010 }, - { url = "https://files.pythonhosted.org/packages/b4/7d/fbca85ee9123fb296d4eff8df566f458d738186d0067dec6f0aa2fd79d71/grpcio-1.67.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8a23cbcc5bb11ea7dc6163078be36c065db68d915c24f5faa4f872c573bb400f", size = 6580706 }, - { url = "https://files.pythonhosted.org/packages/75/7a/766149dcfa2dfa81835bf7df623944c1f636a15fcb9b6138ebe29baf0bc6/grpcio-1.67.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a65b503d008f066e994f34f456e0647e5ceb34cfcec5ad180b1b44020ad4970", size = 6161799 }, - { url = "https://files.pythonhosted.org/packages/09/13/5b75ae88810aaea19e846f5380611837de411181df51fd7a7d10cb178dcb/grpcio-1.67.1-cp311-cp311-win32.whl", hash = "sha256:e29ca27bec8e163dca0c98084040edec3bc49afd10f18b412f483cc68c712744", size = 3616330 }, - { url = "https://files.pythonhosted.org/packages/aa/39/38117259613f68f072778c9638a61579c0cfa5678c2558706b10dd1d11d3/grpcio-1.67.1-cp311-cp311-win_amd64.whl", hash = "sha256:786a5b18544622bfb1e25cc08402bd44ea83edfb04b93798d85dca4d1a0b5be5", size = 4354535 }, - { url = "https://files.pythonhosted.org/packages/6e/25/6f95bd18d5f506364379eabc0d5874873cc7dbdaf0757df8d1e82bc07a88/grpcio-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:267d1745894200e4c604958da5f856da6293f063327cb049a51fe67348e4f953", size = 5089809 }, - { url = "https://files.pythonhosted.org/packages/10/3f/d79e32e5d0354be33a12db2267c66d3cfeff700dd5ccdd09fd44a3ff4fb6/grpcio-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:85f69fdc1d28ce7cff8de3f9c67db2b0ca9ba4449644488c1e0303c146135ddb", size = 10981985 }, - { url = "https://files.pythonhosted.org/packages/21/f2/36fbc14b3542e3a1c20fb98bd60c4732c55a44e374a4eb68f91f28f14aab/grpcio-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f26b0b547eb8d00e195274cdfc63ce64c8fc2d3e2d00b12bf468ece41a0423a0", size = 5588770 }, - { url = "https://files.pythonhosted.org/packages/0d/af/bbc1305df60c4e65de8c12820a942b5e37f9cf684ef5e49a63fbb1476a73/grpcio-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4422581cdc628f77302270ff839a44f4c24fdc57887dc2a45b7e53d8fc2376af", size = 6214476 }, - { url = "https://files.pythonhosted.org/packages/92/cf/1d4c3e93efa93223e06a5c83ac27e32935f998bc368e276ef858b8883154/grpcio-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7616d2ded471231c701489190379e0c311ee0a6c756f3c03e6a62b95a7146e", size = 5850129 }, - { url = "https://files.pythonhosted.org/packages/ae/ca/26195b66cb253ac4d5ef59846e354d335c9581dba891624011da0e95d67b/grpcio-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8a00efecde9d6fcc3ab00c13f816313c040a28450e5e25739c24f432fc6d3c75", size = 6568489 }, - { url = "https://files.pythonhosted.org/packages/d1/94/16550ad6b3f13b96f0856ee5dfc2554efac28539ee84a51d7b14526da985/grpcio-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:699e964923b70f3101393710793289e42845791ea07565654ada0969522d0a38", size = 6149369 }, - { url = "https://files.pythonhosted.org/packages/33/0d/4c3b2587e8ad7f121b597329e6c2620374fccbc2e4e1aa3c73ccc670fde4/grpcio-1.67.1-cp312-cp312-win32.whl", hash = "sha256:4e7b904484a634a0fff132958dabdb10d63e0927398273917da3ee103e8d1f78", size = 3599176 }, - { url = "https://files.pythonhosted.org/packages/7d/36/0c03e2d80db69e2472cf81c6123aa7d14741de7cf790117291a703ae6ae1/grpcio-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:5721e66a594a6c4204458004852719b38f3d5522082be9061d6510b455c90afc", size = 4346574 }, - { url = "https://files.pythonhosted.org/packages/12/d2/2f032b7a153c7723ea3dea08bffa4bcaca9e0e5bdf643ce565b76da87461/grpcio-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa0162e56fd10a5547fac8774c4899fc3e18c1aa4a4759d0ce2cd00d3696ea6b", size = 5091487 }, - { url = "https://files.pythonhosted.org/packages/d0/ae/ea2ff6bd2475a082eb97db1104a903cf5fc57c88c87c10b3c3f41a184fc0/grpcio-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:beee96c8c0b1a75d556fe57b92b58b4347c77a65781ee2ac749d550f2a365dc1", size = 10943530 }, - { url = "https://files.pythonhosted.org/packages/07/62/646be83d1a78edf8d69b56647327c9afc223e3140a744c59b25fbb279c3b/grpcio-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:a93deda571a1bf94ec1f6fcda2872dad3ae538700d94dc283c672a3b508ba3af", size = 5589079 }, - { url = "https://files.pythonhosted.org/packages/d0/25/71513d0a1b2072ce80d7f5909a93596b7ed10348b2ea4fdcbad23f6017bf/grpcio-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6f255980afef598a9e64a24efce87b625e3e3c80a45162d111a461a9f92955", size = 6213542 }, - { url = "https://files.pythonhosted.org/packages/76/9a/d21236297111052dcb5dc85cd77dc7bf25ba67a0f55ae028b2af19a704bc/grpcio-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e838cad2176ebd5d4a8bb03955138d6589ce9e2ce5d51c3ada34396dbd2dba8", size = 5850211 }, - { url = "https://files.pythonhosted.org/packages/2d/fe/70b1da9037f5055be14f359026c238821b9bcf6ca38a8d760f59a589aacd/grpcio-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a6703916c43b1d468d0756c8077b12017a9fcb6a1ef13faf49e67d20d7ebda62", size = 6572129 }, - { url = "https://files.pythonhosted.org/packages/74/0d/7df509a2cd2a54814598caf2fb759f3e0b93764431ff410f2175a6efb9e4/grpcio-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:917e8d8994eed1d86b907ba2a61b9f0aef27a2155bca6cbb322430fc7135b7bb", size = 6149819 }, - { url = "https://files.pythonhosted.org/packages/0a/08/bc3b0155600898fd10f16b79054e1cca6cb644fa3c250c0fe59385df5e6f/grpcio-1.67.1-cp313-cp313-win32.whl", hash = "sha256:e279330bef1744040db8fc432becc8a727b84f456ab62b744d3fdb83f327e121", size = 3596561 }, - { url = "https://files.pythonhosted.org/packages/5a/96/44759eca966720d0f3e1b105c43f8ad4590c97bf8eb3cd489656e9590baa/grpcio-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:fa0c739ad8b1996bd24823950e3cb5152ae91fca1c09cc791190bf1627ffefba", size = 4346042 }, +version = "1.68.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/ec/b76ff6d86bdfd1737a5ec889394b54c18b1ec3832d91041e25023fbcb67d/grpcio-1.68.1.tar.gz", hash = "sha256:44a8502dd5de653ae6a73e2de50a401d84184f0331d0ac3daeb044e66d5c5054", size = 12694654 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/88/d1ac9676a0809e3efec154d45246474ec12a4941686da71ffb3d34190294/grpcio-1.68.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:d35740e3f45f60f3c37b1e6f2f4702c23867b9ce21c6410254c9c682237da68d", size = 5171054 }, + { url = "https://files.pythonhosted.org/packages/ec/cb/94ca41e100201fee8876a4b44d64e43ac7405929909afe1fa943d65b25ef/grpcio-1.68.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:d99abcd61760ebb34bdff37e5a3ba333c5cc09feda8c1ad42547bea0416ada78", size = 11078566 }, + { url = "https://files.pythonhosted.org/packages/d5/b0/ad4c66f2e3181b4eab99885686c960c403ae2300bacfe427526282facc07/grpcio-1.68.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:f8261fa2a5f679abeb2a0a93ad056d765cdca1c47745eda3f2d87f874ff4b8c9", size = 5690039 }, + { url = "https://files.pythonhosted.org/packages/67/1e/f5d3410674d021831c9fef2d1d7ca2357b08d09c840ad4e054ea8ffc302e/grpcio-1.68.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0feb02205a27caca128627bd1df4ee7212db051019a9afa76f4bb6a1a80ca95e", size = 6317470 }, + { url = "https://files.pythonhosted.org/packages/91/93/701d5f33b163a621c8f2d4453f9e22f6c14e996baed54118d0dea93fc8c7/grpcio-1.68.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:919d7f18f63bcad3a0f81146188e90274fde800a94e35d42ffe9eadf6a9a6330", size = 5941884 }, + { url = "https://files.pythonhosted.org/packages/67/44/06917ffaa35ca463b93dde60f324015fe4192312b0f4dd0faec061e7ca7f/grpcio-1.68.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:963cc8d7d79b12c56008aabd8b457f400952dbea8997dd185f155e2f228db079", size = 6646332 }, + { url = "https://files.pythonhosted.org/packages/d4/94/074db039532687ec8ef07ebbcc747c46547c94329016e22b97d97b9e5f3b/grpcio-1.68.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ccf2ebd2de2d6661e2520dae293298a3803a98ebfc099275f113ce1f6c2a80f1", size = 6212515 }, + { url = "https://files.pythonhosted.org/packages/c5/f2/0c939264c36c6038fae1732a2a3e01a7075ba171a2154d86842ee0ac9b0a/grpcio-1.68.1-cp310-cp310-win32.whl", hash = "sha256:2cc1fd04af8399971bcd4f43bd98c22d01029ea2e56e69c34daf2bf8470e47f5", size = 3650459 }, + { url = "https://files.pythonhosted.org/packages/b6/90/b0e9278e88f747879d13b79fb893c9acb381fb90541ad9e416c7816c5eaf/grpcio-1.68.1-cp310-cp310-win_amd64.whl", hash = "sha256:ee2e743e51cb964b4975de572aa8fb95b633f496f9fcb5e257893df3be854746", size = 4399144 }, + { url = "https://files.pythonhosted.org/packages/fe/0d/fde5a5777d65696c39bb3e622fe1239dd0a878589bf6c5066980e7d19154/grpcio-1.68.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:55857c71641064f01ff0541a1776bfe04a59db5558e82897d35a7793e525774c", size = 5180919 }, + { url = "https://files.pythonhosted.org/packages/07/fd/e5fa75b5ddf5d9f16606196973f9c2b4b1adf5a1735117eb7129fc33d2ec/grpcio-1.68.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4b177f5547f1b995826ef529d2eef89cca2f830dd8b2c99ffd5fde4da734ba73", size = 11150922 }, + { url = "https://files.pythonhosted.org/packages/86/1e/aaf5a1dae87fe47f277c5a1be72b31d2c209d095bebb0ce1d2df5cb8779c/grpcio-1.68.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:3522c77d7e6606d6665ec8d50e867f13f946a4e00c7df46768f1c85089eae515", size = 5685685 }, + { url = "https://files.pythonhosted.org/packages/a9/69/c4fdf87d5c5696207e2ed232e4bdde656d8c99ba91f361927f3f06aa41ca/grpcio-1.68.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d1fae6bbf0816415b81db1e82fb3bf56f7857273c84dcbe68cbe046e58e1ccd", size = 6316535 }, + { url = "https://files.pythonhosted.org/packages/6f/c6/539660516ea7db7bc3d39e07154512ae807961b14ec6b5b0c58d15657ff1/grpcio-1.68.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298ee7f80e26f9483f0b6f94cc0a046caf54400a11b644713bb5b3d8eb387600", size = 5939920 }, + { url = "https://files.pythonhosted.org/packages/38/f3/97a74dc4dd95bf195168d6da2ca4731ab7d3d0b03078f2833b4ff9c4f48f/grpcio-1.68.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cbb5780e2e740b6b4f2d208e90453591036ff80c02cc605fea1af8e6fc6b1bbe", size = 6644770 }, + { url = "https://files.pythonhosted.org/packages/cb/36/79a5e04073e58106aff442509a0c459151fa4f43202395db3eb8f77b78e9/grpcio-1.68.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ddda1aa22495d8acd9dfbafff2866438d12faec4d024ebc2e656784d96328ad0", size = 6211743 }, + { url = "https://files.pythonhosted.org/packages/73/0f/2250f4a0de1a0bec0726c47a021cbf71af6105f512ecaf67703e2eb1ad2f/grpcio-1.68.1-cp311-cp311-win32.whl", hash = "sha256:b33bd114fa5a83f03ec6b7b262ef9f5cac549d4126f1dc702078767b10c46ed9", size = 3650734 }, + { url = "https://files.pythonhosted.org/packages/4b/29/061c93a35f498238dc35eb8fb039ce168aa99cac2f0f1ce0c8a0a4bdb274/grpcio-1.68.1-cp311-cp311-win_amd64.whl", hash = "sha256:7f20ebec257af55694d8f993e162ddf0d36bd82d4e57f74b31c67b3c6d63d8b2", size = 4400816 }, + { url = "https://files.pythonhosted.org/packages/f5/15/674a1468fef234fa996989509bbdfc0d695878cbb385b9271f5d690d5cd3/grpcio-1.68.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:8829924fffb25386995a31998ccbbeaa7367223e647e0122043dfc485a87c666", size = 5148351 }, + { url = "https://files.pythonhosted.org/packages/62/f5/edce368682d6d0b3573b883b134df022a44b1c888ea416dd7d78d480ab24/grpcio-1.68.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3aed6544e4d523cd6b3119b0916cef3d15ef2da51e088211e4d1eb91a6c7f4f1", size = 11127559 }, + { url = "https://files.pythonhosted.org/packages/ce/14/a6fde3114eafd9e4e345d1ebd0291c544d83b22f0554b1678a2968ae39e1/grpcio-1.68.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:4efac5481c696d5cb124ff1c119a78bddbfdd13fc499e3bc0ca81e95fc573684", size = 5645221 }, + { url = "https://files.pythonhosted.org/packages/21/21/d1865bd6a22f9a26217e4e1b35f9105f7a0cdfb7a5fffe8be48e1a1afafc/grpcio-1.68.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ab2d912ca39c51f46baf2a0d92aa265aa96b2443266fc50d234fa88bf877d8e", size = 6292270 }, + { url = "https://files.pythonhosted.org/packages/3a/f6/19798be6c3515a7b1fb9570198c91710472e2eb21f1900109a76834829e3/grpcio-1.68.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c87ce2a97434dffe7327a4071839ab8e8bffd0054cc74cbe971fba98aedd60", size = 5905978 }, + { url = "https://files.pythonhosted.org/packages/9b/43/c3670a657445cd55be1246f64dbc3a6a33cab0f0141c5836df2e04f794c8/grpcio-1.68.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e4842e4872ae4ae0f5497bf60a0498fa778c192cc7a9e87877abd2814aca9475", size = 6630444 }, + { url = "https://files.pythonhosted.org/packages/80/69/fbbebccffd266bea4268b685f3e8e03613405caba69e93125dc783036465/grpcio-1.68.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:255b1635b0ed81e9f91da4fcc8d43b7ea5520090b9a9ad9340d147066d1d3613", size = 6200324 }, + { url = "https://files.pythonhosted.org/packages/65/5c/27a26c21916f94f0c1585111974a5d5a41d8420dcb42c2717ee514c97a97/grpcio-1.68.1-cp312-cp312-win32.whl", hash = "sha256:7dfc914cc31c906297b30463dde0b9be48e36939575eaf2a0a22a8096e69afe5", size = 3638381 }, + { url = "https://files.pythonhosted.org/packages/a3/ba/ba6b65ccc93c7df1031c6b41e45b79a5a37e46b81d816bb3ea68ba476d77/grpcio-1.68.1-cp312-cp312-win_amd64.whl", hash = "sha256:a0c8ddabef9c8f41617f213e527254c41e8b96ea9d387c632af878d05db9229c", size = 4389959 }, + { url = "https://files.pythonhosted.org/packages/37/1a/15ccc08da339a5536690e6f877963422a5abf3f6dfeed96b3175f5c816b9/grpcio-1.68.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:a47faedc9ea2e7a3b6569795c040aae5895a19dde0c728a48d3c5d7995fda385", size = 5149822 }, + { url = "https://files.pythonhosted.org/packages/bc/fe/91bb4b160cd251d5b5ee722e6342355f76d1ffe176c50a6ef0e8256fbb47/grpcio-1.68.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:390eee4225a661c5cd133c09f5da1ee3c84498dc265fd292a6912b65c421c78c", size = 11085016 }, + { url = "https://files.pythonhosted.org/packages/55/2d/0bb2478410f5896da1090b9f43c2979dd72e7e97d10bc223bfbdddcf8eca/grpcio-1.68.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:66a24f3d45c33550703f0abb8b656515b0ab777970fa275693a2f6dc8e35f1c1", size = 5645634 }, + { url = "https://files.pythonhosted.org/packages/f5/6c/e2d22d963b695f87a09965246beb1c3224b09ffc666fc0b285820926499a/grpcio-1.68.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c08079b4934b0bf0a8847f42c197b1d12cba6495a3d43febd7e99ecd1cdc8d54", size = 6291096 }, + { url = "https://files.pythonhosted.org/packages/6f/f6/21d9204e2c4c0804ad72be8c830c44f0e1355e649c173f87508b7f0e5488/grpcio-1.68.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8720c25cd9ac25dd04ee02b69256d0ce35bf8a0f29e20577427355272230965a", size = 5906528 }, + { url = "https://files.pythonhosted.org/packages/39/2a/bf6ae4fef13755ca236d587d630b82207cfad43cf956870adead97fd1ef1/grpcio-1.68.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:04cfd68bf4f38f5bb959ee2361a7546916bd9a50f78617a346b3aeb2b42e2161", size = 6634215 }, + { url = "https://files.pythonhosted.org/packages/5b/83/9c96a6adfbea5e8a9ed408410c0259942713be64173b8816c7bf6ac2d830/grpcio-1.68.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c28848761a6520c5c6071d2904a18d339a796ebe6b800adc8b3f474c5ce3c3ad", size = 6200750 }, + { url = "https://files.pythonhosted.org/packages/b4/3e/af42f87759c6301c4fed894b3dd801b13162ba1d8e2942412e788ac749eb/grpcio-1.68.1-cp313-cp313-win32.whl", hash = "sha256:77d65165fc35cff6e954e7fd4229e05ec76102d4406d4576528d3a3635fc6172", size = 3637594 }, + { url = "https://files.pythonhosted.org/packages/7e/d1/3bef33a3d5d26d4ea9284e1b464f481d6d21ed8ae1c3da381b05f62c701d/grpcio-1.68.1-cp313-cp313-win_amd64.whl", hash = "sha256:a8040f85dcb9830d8bbb033ae66d272614cec6faceee88d37a88a9bd1a7a704e", size = 4391184 }, ] [[package]] name = "grpcio-status" -version = "1.67.1" +version = "1.68.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "googleapis-common-protos" }, { name = "grpcio" }, { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/be/c7/fe0e79a80ac6346e0c6c0a24e9e3cbc3ae1c2a009acffb59eab484a6f69b/grpcio_status-1.67.1.tar.gz", hash = "sha256:2bf38395e028ceeecfd8866b081f61628114b384da7d51ae064ddc8d766a5d11", size = 13673 } +sdist = { url = "https://files.pythonhosted.org/packages/57/db/db3911a9009f03b55e60cf13e3e29dfce423c0e501ec976794c7cbbbcd1b/grpcio_status-1.68.1.tar.gz", hash = "sha256:e1378d036c81a1610d7b4c7a146cd663dd13fcc915cf4d7d053929dba5bbb6e1", size = 13667 } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/18/56999a1da3577d8ccc8698a575d6638e15fe25650cc88b2ce0a087f180b9/grpcio_status-1.67.1-py3-none-any.whl", hash = "sha256:16e6c085950bdacac97c779e6a502ea671232385e6e37f258884d6883392c2bd", size = 14427 }, + { url = "https://files.pythonhosted.org/packages/86/1c/59dfc81f27f252bef2cd52c57157bf381cb3738185d3087ac4c9ff3376b0/grpcio_status-1.68.1-py3-none-any.whl", hash = "sha256:66f3d8847f665acfd56221333d66f7ad8927903d87242a482996bdb45e8d28fd", size = 14427 }, ] [[package]] @@ -1753,31 +1843,30 @@ wheels = [ [[package]] name = "httpcore" -version = "1.0.6" +version = "1.0.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b6/44/ed0fa6a17845fb033bd885c03e842f08c1b9406c86a2e60ac1ae1b9206a6/httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f", size = 85180 } +sdist = { url = "https://files.pythonhosted.org/packages/6a/41/d7d0a89eb493922c37d343b607bc1b5da7f5be7e383740b4753ad8943e90/httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c", size = 85196 } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/89/b161908e2f51be56568184aeb4a880fd287178d176fd1c860d2217f41106/httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f", size = 78011 }, + { url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 }, ] [[package]] name = "httpx" -version = "0.27.2" +version = "0.28.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "certifi" }, { name = "httpcore" }, { name = "idna" }, - { name = "sniffio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/82/08f8c936781f67d9e6b9eeb8a0c8b4e406136ea4c3d1f89a5db71d42e0e6/httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2", size = 144189 } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } wheels = [ - { url = "https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0", size = 76395 }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, ] [[package]] @@ -1791,16 +1880,16 @@ wheels = [ [[package]] name = "hypothesis" -version = "6.118.7" +version = "6.123.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "sortedcontainers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/31/7cbfc717e2f529472695ab97d508a9b995f8e463a9b8a699762cdaa48ee3/hypothesis-6.118.7.tar.gz", hash = "sha256:604328f5d766a056182f54b4826f9b2d5f664f42bff68fd81b4d9d6c44b2398b", size = 410787 } +sdist = { url = "https://files.pythonhosted.org/packages/04/15/d493f4b19a07595b61474b81bb823891f43131351cc1e2c4a5a849357f55/hypothesis-6.123.0.tar.gz", hash = "sha256:d206c70e6919c8c76dd94b4ffc6daa05f55473b97988e63b88ad3ad66cc389d1", size = 417909 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/4c/b87dc5c9ca9a4cc0c6828a90c2d1de6089f844e0c5badcdeac14fdb386c3/hypothesis-6.118.7-py3-none-any.whl", hash = "sha256:5fe1d80f46d81c6160ef762e4e11a61bb4eb6838a8fb7bd3c5a2542fb107bc38", size = 471912 }, + { url = "https://files.pythonhosted.org/packages/cd/65/a7e123a607a071c4d9c64019b392b2af128046f0911390d3e379530a6a79/hypothesis-6.123.0-py3-none-any.whl", hash = "sha256:13fb3fe8879245d224be423ca2086150593d9fd8dcfd4585e62dea3c5c8cdddb", size = 479892 }, ] [[package]] @@ -2055,7 +2144,7 @@ requires-dist = [ { name = "black", marker = "extra == 'decompiler'", specifier = ">=22.1.0,<25" }, { name = "clickhouse-connect", extras = ["arrow", "pandas", "numpy"], marker = "extra == 'clickhouse'", specifier = ">=0.5.23,<1" }, { name = "databricks-sql-connector-core", marker = "extra == 'databricks'", specifier = ">=4,<5" }, - { name = "datafusion", marker = "extra == 'datafusion'", specifier = ">=0.6,<43" }, + { name = "datafusion", marker = "extra == 'datafusion'", specifier = ">=0.6,<44" }, { name = "db-dtypes", marker = "extra == 'bigquery'", specifier = ">=0.3,<2" }, { name = "deltalake", marker = "extra == 'deltalake'", specifier = ">=0.9.0,<1" }, { name = "duckdb", marker = "extra == 'duckdb'", specifier = ">=0.10,<1.2" }, @@ -2114,25 +2203,25 @@ requires-dist = [ { name = "polars", marker = "extra == 'polars'", specifier = ">=1,<2" }, { name = "psycopg2", marker = "extra == 'postgres'", specifier = ">=2.8.4,<3" }, { name = "psycopg2", marker = "extra == 'risingwave'", specifier = ">=2.8.4,<3" }, - { name = "pyarrow", marker = "extra == 'bigquery'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'clickhouse'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'databricks'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'datafusion'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'druid'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'duckdb'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'exasol'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'flink'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'impala'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'mssql'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'mysql'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'oracle'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'polars'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'postgres'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'pyspark'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'risingwave'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'snowflake'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'sqlite'", specifier = ">=10.0.1,<19" }, - { name = "pyarrow", marker = "extra == 'trino'", specifier = ">=10.0.1,<19" }, + { name = "pyarrow", marker = "extra == 'bigquery'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'clickhouse'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'databricks'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'datafusion'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'druid'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'duckdb'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'exasol'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'flink'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'impala'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'mssql'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'mysql'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'oracle'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'polars'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'postgres'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'pyspark'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'risingwave'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'snowflake'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'sqlite'", specifier = ">=10.0.1" }, + { name = "pyarrow", marker = "extra == 'trino'", specifier = ">=10.0.1" }, { name = "pyarrow-hotfix", marker = "extra == 'bigquery'", specifier = ">=0.4,<1" }, { name = "pyarrow-hotfix", marker = "extra == 'clickhouse'", specifier = ">=0.4,<1" }, { name = "pyarrow-hotfix", marker = "extra == 'databricks'", specifier = ">=0.4,<1" }, @@ -2182,7 +2271,7 @@ requires-dist = [ { name = "rich", marker = "extra == 'trino'", specifier = ">=12.4.4,<14" }, { name = "shapely", marker = "extra == 'geospatial'", specifier = ">=2,<3" }, { name = "snowflake-connector-python", marker = "extra == 'snowflake'", specifier = ">=3.0.2,!=3.3.0b1,<4" }, - { name = "sqlglot", specifier = ">=23.4,<25.30" }, + { name = "sqlglot", specifier = ">=23.4,<26.1" }, { name = "toolz", specifier = ">=0.11,<2" }, { name = "trino", marker = "extra == 'trino'", specifier = ">=0.321,<1" }, { name = "typing-extensions", specifier = ">=4.3.0,<5" }, @@ -2224,7 +2313,7 @@ docs = [ tests = [ { name = "cloudpickle" }, { name = "filelock", specifier = ">=3.7.0,<4" }, - { name = "fsspec", specifier = "<2024.10.1" }, + { name = "fsspec", specifier = "<2024.12.1" }, { name = "hypothesis", specifier = ">=6.58.0,<7" }, { name = "packaging", specifier = ">=21.3,<25" }, { name = "pytest", specifier = ">=8.2.0,<9" }, @@ -2245,11 +2334,11 @@ tests = [ [[package]] name = "identify" -version = "2.6.2" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/02/79/7a520fc5011e02ca3f3285b5f6820eaf80443eb73e3733f73c02fb42ba0b/identify-2.6.2.tar.gz", hash = "sha256:fab5c716c24d7a789775228823797296a2994b075fb6080ac83a102772a98cbd", size = 99113 } +sdist = { url = "https://files.pythonhosted.org/packages/1a/5f/05f0d167be94585d502b4adf8c7af31f1dc0b1c7e14f9938a88fdbbcf4a7/identify-2.6.3.tar.gz", hash = "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02", size = 99179 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/86/c4395700f3c5475424fb5c41e20c16be28d10c904aee4d005ba3217fc8e7/identify-2.6.2-py2.py3-none-any.whl", hash = "sha256:c097384259f49e372f4ea00a19719d95ae27dd5ff0fd77ad630aa891306b82f3", size = 98982 }, + { url = "https://files.pythonhosted.org/packages/c9/f5/09644a3ad803fae9eca8efa17e1f2aef380c7f0b02f7ec4e8d446e51d64a/identify-2.6.3-py2.py3-none-any.whl", hash = "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd", size = 99049 }, ] [[package]] @@ -2332,7 +2421,7 @@ wheels = [ [[package]] name = "ipython" -version = "8.29.0" +version = "8.31.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -2347,9 +2436,9 @@ dependencies = [ { name = "traitlets" }, { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/e0/a3f36dde97e12121106807d80485423ae4c5b27ce60d40d4ab0bab18a9db/ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb", size = 5497513 } +sdist = { url = "https://files.pythonhosted.org/packages/01/35/6f90fdddff7a08b7b715fccbd2427b5212c9525cd043d26fdc45bee0708d/ipython-8.31.0.tar.gz", hash = "sha256:b6a2274606bec6166405ff05e54932ed6e5cfecaca1fc05f2cacde7bb074d70b", size = 5501011 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/a5/c15ed187f1b3fac445bb42a2dedd8dec1eee1718b35129242049a13a962f/ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8", size = 819911 }, + { url = "https://files.pythonhosted.org/packages/04/60/d0feb6b6d9fe4ab89fe8fe5b47cbf6cd936bfd9f1e7ffa9d0015425aeed6/ipython-8.31.0-py3-none-any.whl", hash = "sha256:46ec58f8d3d076a61d128fe517a51eb730e3aaf0c184ea8c17d16e366660c6a6", size = 821583 }, ] [[package]] @@ -2382,16 +2471,16 @@ wheels = [ [[package]] name = "itables" -version = "2.2.3" +version = "2.2.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ipython" }, { name = "numpy" }, { name = "pandas" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8f/1d/830ec0ed4640b59987d49278cb3f76b9d7c2467c895a2af94fbbe94aa29e/itables-2.2.3.tar.gz", hash = "sha256:d1987c2f69b348d63d8184c30e05bd25710997a37894cf7b57b6e0a4ea969c10", size = 2436125 } +sdist = { url = "https://files.pythonhosted.org/packages/32/de/d088ee6e3b9c2a05e7565bcbb8b3138c6ee30e62b994df462afd4e77c03f/itables-2.2.4.tar.gz", hash = "sha256:6d2810fab5cc67260f69c9fa7c6930bd7a39f92aaff2264dc4e914eaa7a005e5", size = 2436243 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/c2/6bd82dd46a100dfea7732510c46ffa0f450c283ef23096b83a2807914f5f/itables-2.2.3-py3-none-any.whl", hash = "sha256:987919a3b8dfdac2cbc727949b0972de61bfddfabd372bfa0f7f3f34399ab197", size = 1407029 }, + { url = "https://files.pythonhosted.org/packages/00/a3/edfcffc33b9e23f5a5e87178c2ee7a882a6ec6654d0e0c96849cb88519f5/itables-2.2.4-py3-none-any.whl", hash = "sha256:94f0298a4778ac957eef1d0bf0ff6ebffd3c68c7faef741cc083c31c97316952", size = 1407012 }, ] [[package]] @@ -2408,14 +2497,14 @@ wheels = [ [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } +sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674 } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, + { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 }, ] [[package]] @@ -2429,11 +2518,11 @@ wheels = [ [[package]] name = "json5" -version = "0.9.27" +version = "0.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/04/69fff96cffa54cbd60645ea94d36f40f3e90f1cff0e4c7b27475753f1724/json5-0.9.27.tar.gz", hash = "sha256:5a19de4a6ca24ba664dc7d50307eb73ba9a16dea5d6bde85677ae85d3ed2d8e0", size = 41842 } +sdist = { url = "https://files.pythonhosted.org/packages/85/3d/bbe62f3d0c05a689c711cff57b2e3ac3d3e526380adb7c781989f075115c/json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559", size = 48202 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/55/4bd7bcf5be870b5806cab717d68fbf26a8d1bf54583337950c70f0dc729b/json5-0.9.27-py3-none-any.whl", hash = "sha256:17b43d78d3a6daeca4d7030e9bf22092dba29b1282cc2d0cfa56f6febee8dc93", size = 30894 }, + { url = "https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa", size = 34049 }, ] [[package]] @@ -2486,7 +2575,7 @@ wheels = [ [[package]] name = "jupyter-cache" -version = "1.0.0" +version = "1.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -2498,9 +2587,9 @@ dependencies = [ { name = "sqlalchemy" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1b/c1/1276395b634228946bca7da7cf410d133511d150524d2a60b06028a860fe/jupyter_cache-1.0.0.tar.gz", hash = "sha256:d0fa7d7533cd5798198d8889318269a8c1382ed3b22f622c09a9356521f48687", size = 31968 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/f7/3627358075f183956e8c4974603232b03afd4ddc7baf72c2bc9fff522291/jupyter_cache-1.0.1.tar.gz", hash = "sha256:16e808eb19e3fb67a223db906e131ea6e01f03aa27f49a7214ce6a5fec186fb9", size = 32048 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/2f/0bb8eacdd1102a20fecc759fb8ace695b9a1048563499a6dff8fa8da32a7/jupyter_cache-1.0.0-py3-none-any.whl", hash = "sha256:594b1c4e29b488b36547e12477645f489dbdc62cc939b2408df5679f79245078", size = 33875 }, + { url = "https://files.pythonhosted.org/packages/64/6b/67b87da9d36bff9df7d0efbd1a325fa372a43be7158effaf43ed7b22341d/jupyter_cache-1.0.1-py3-none-any.whl", hash = "sha256:9c3cafd825ba7da8b5830485343091143dff903e4d8c69db9349b728b140abf6", size = 33907 }, ] [[package]] @@ -2535,7 +2624,7 @@ wheels = [ [[package]] name = "jupyter-events" -version = "0.10.0" +version = "0.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonschema", extra = ["format-nongpl"] }, @@ -2546,9 +2635,9 @@ dependencies = [ { name = "rfc3986-validator" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8d/53/7537a1aa558229bb0b1b178d814c9d68a9c697d3aecb808a1cb2646acf1f/jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22", size = 61516 } +sdist = { url = "https://files.pythonhosted.org/packages/f4/65/5791c8a979b5646ca29ea50e42b6708908b789f7ff389d1a03c1b93a1c54/jupyter_events-0.11.0.tar.gz", hash = "sha256:c0bc56a37aac29c1fbc3bcfbddb8c8c49533f9cf11f1c4e6adadba936574ab90", size = 62039 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/94/059180ea70a9a326e1815176b2370da56376da347a796f8c4f0b830208ef/jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960", size = 18777 }, + { url = "https://files.pythonhosted.org/packages/3f/8c/9b65cb2cd4ea32d885993d5542244641590530836802a2e8c7449a4c61c9/jupyter_events-0.11.0-py3-none-any.whl", hash = "sha256:36399b41ce1ca45fe8b8271067d6a140ffa54cec4028e95491c93b78a855cacf", size = 19423 }, ] [[package]] @@ -2565,7 +2654,7 @@ wheels = [ [[package]] name = "jupyter-server" -version = "2.14.2" +version = "2.15.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -2588,9 +2677,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0c/34/88b47749c7fa9358e10eac356c4b97d94a91a67d5c935a73f69bc4a31118/jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b", size = 719933 } +sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227 } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/e1/085edea6187a127ca8ea053eb01f4e1792d778b4d192c74d32eb6730fed6/jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd", size = 383556 }, + { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826 }, ] [[package]] @@ -2608,7 +2697,7 @@ wheels = [ [[package]] name = "jupyterlab" -version = "4.3.0" +version = "4.3.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-lru" }, @@ -2626,18 +2715,18 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1b/19/67c3dd19789337396f2e43d9d8373d5e59b4ce6ad8df51edde83bf2156fd/jupyterlab-4.3.0.tar.gz", hash = "sha256:7c6835cbf8df0af0ec8a39332e85ff11693fb9a468205343b4fc0bfbc74817e5", size = 21797258 } +sdist = { url = "https://files.pythonhosted.org/packages/a7/45/1052f842e066902b1d78126df7e2269b1b9408991e1344e167b2e429f9e1/jupyterlab-4.3.4.tar.gz", hash = "sha256:f0bb9b09a04766e3423cccc2fc23169aa2ffedcdf8713e9e0fb33cac0b6859d0", size = 21797583 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/61/e87b188e224c040ff5a30fd63ea61d1767e419d23abb9c731693d6de0a64/jupyterlab-4.3.0-py3-none-any.whl", hash = "sha256:f67e1095ad61ae04349024f0b40345062ab108a0c6998d9810fec6a3c1a70cd5", size = 11662506 }, + { url = "https://files.pythonhosted.org/packages/61/48/af57263e53cfc220e522de047aa0993f53bab734fe812af1e03e33ac6d7c/jupyterlab-4.3.4-py3-none-any.whl", hash = "sha256:b754c2601c5be6adf87cb5a1d8495d653ffb945f021939f77776acaa94dae952", size = 11665373 }, ] [[package]] name = "jupyterlab-night" -version = "0.4.6" +version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/82/9ccafe5ed6789095a609f67768eca7c43878e9694d30863747afbe663fac/jupyterlab-night-0.4.6.tar.gz", hash = "sha256:1461f67c2218a51632721722bb5ffc29b3b1aaacbe50fbe32f41a7d842b356a9", size = 275249 } +sdist = { url = "https://files.pythonhosted.org/packages/f7/66/dce0432e709d0965ef00c866706fd9053a84cc2ca0af39b6017c5a7e3bfc/jupyterlab_night-0.5.1.tar.gz", hash = "sha256:8d41f2d443a84bfcd2ce29b5476c5faf93b2e3b49663f8c1ebeca2b33f431d01", size = 327280 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/f4/e4c759de9d6c3fa334519de67850b40e6c15e6728d22138af3260927efb1/jupyterlab_night-0.4.6-py3-none-any.whl", hash = "sha256:ec7577081cc59c1a88ce7838606c265ffef51555028e7a4372d63a83223d495a", size = 162378 }, + { url = "https://files.pythonhosted.org/packages/36/8c/e969b7b297b8b5a9f003508faace176b079275221d26da707b41cf3c3d8e/jupyterlab_night-0.5.1-py3-none-any.whl", hash = "sha256:c4392ebf8d5b6f3f34d147f6b3a2a7ce5acf8bded893a1fb42267ae6e50eb1d9", size = 16753 }, ] [[package]] @@ -2831,14 +2920,14 @@ wheels = [ [[package]] name = "mako" -version = "1.3.6" +version = "1.3.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fa/0b/29bc5a230948bf209d3ed3165006d257e547c02c3c2a96f6286320dfe8dc/mako-1.3.6.tar.gz", hash = "sha256:9ec3a1583713479fae654f83ed9fa8c9a4c16b7bb0daba0e6bbebff50c0d983d", size = 390206 } +sdist = { url = "https://files.pythonhosted.org/packages/5f/d9/8518279534ed7dace1795d5a47e49d5299dd0994eed1053996402a8902f9/mako-1.3.8.tar.gz", hash = "sha256:577b97e414580d3e088d47c2dbbe9594aa7a5146ed2875d4dfa9075af2dd3cc8", size = 392069 } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/22/bc14c6f02e6dccaafb3eba95764c8f096714260c2aa5f76f654fd16a23dd/Mako-1.3.6-py3-none-any.whl", hash = "sha256:a91198468092a2f1a0de86ca92690fb0cfc43ca90ee17e15d93662b4c04b241a", size = 78557 }, + { url = "https://files.pythonhosted.org/packages/1e/bf/7a6a36ce2e4cafdfb202752be68850e22607fccd692847c45c1ae3c17ba6/Mako-1.3.8-py3-none-any.whl", hash = "sha256:42f48953c7eb91332040ff567eb7eea69b22e7a4affbc5ba8e845e8f730f6627", size = 78569 }, ] [[package]] @@ -2913,7 +3002,7 @@ wheels = [ [[package]] name = "matplotlib" -version = "3.9.2" +version = "3.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "contourpy" }, @@ -2926,37 +3015,41 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9e/d8/3d7f706c69e024d4287c1110d74f7dabac91d9843b99eadc90de9efc8869/matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92", size = 36088381 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9d/84eeb82ecdd3ba71b12dd6ab5c820c5cc1e868003ecb3717d41b589ec02a/matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb", size = 7893310 }, - { url = "https://files.pythonhosted.org/packages/36/98/cbacbd30241369d099f9c13a2b6bc3b7068d85214f5b5795e583ac3d8aba/matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4", size = 7764089 }, - { url = "https://files.pythonhosted.org/packages/a8/a0/917f3c6d3a8774a3a1502d9f3dfc1456e07c1fa0c211a23b75a69e154180/matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64", size = 8192377 }, - { url = "https://files.pythonhosted.org/packages/8d/9d/d06860390f9d154fa884f1740a5456378fb153ff57443c91a4a32bab7092/matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66", size = 8303983 }, - { url = "https://files.pythonhosted.org/packages/9e/a7/c0e848ed7de0766c605af62d8097472a37f1a81d93e9afe94faa5890f24d/matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a", size = 9083318 }, - { url = "https://files.pythonhosted.org/packages/09/6c/0fa50c001340a45cde44853c116d6551aea741e59a7261c38f473b53553b/matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae", size = 7819628 }, - { url = "https://files.pythonhosted.org/packages/77/c2/f9d7fe80a8fcce9bb128d1381c6fe41a8d286d7e18395e273002e8e0fa34/matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772", size = 7902925 }, - { url = "https://files.pythonhosted.org/packages/28/ba/8be09886eb56ac04a218a1dc3fa728a5c4cac60b019b4f1687885166da00/matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41", size = 7773193 }, - { url = "https://files.pythonhosted.org/packages/e6/9a/5991972a560db3ab621312a7ca5efec339ae2122f25901c0846865c4b72f/matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f", size = 8202378 }, - { url = "https://files.pythonhosted.org/packages/01/75/6c7ce560e95714a10fcbb3367d1304975a1a3e620f72af28921b796403f3/matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447", size = 8314361 }, - { url = "https://files.pythonhosted.org/packages/6e/49/dc7384c6c092958e0b75e754efbd9e52500154939c3d715789cee9fb8a53/matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e", size = 9091428 }, - { url = "https://files.pythonhosted.org/packages/8b/ce/15b0bb2fb29b3d46211d8ca740b96b5232499fc49200b58b8d571292c9a6/matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7", size = 7829377 }, - { url = "https://files.pythonhosted.org/packages/82/de/54f7f38ce6de79cb77d513bb3eaa4e0b1031e9fd6022214f47943fa53a88/matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9", size = 7892511 }, - { url = "https://files.pythonhosted.org/packages/35/3e/5713b84a02b24b2a4bd4d6673bfc03017e6654e1d8793ece783b7ed4d484/matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d", size = 7769370 }, - { url = "https://files.pythonhosted.org/packages/5b/bd/c404502aa1824456d2862dd6b9b0c1917761a51a32f7f83ff8cf94b6d117/matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7", size = 8193260 }, - { url = "https://files.pythonhosted.org/packages/27/75/de5b9cd67648051cae40039da0c8cbc497a0d99acb1a1f3d087cd66d27b7/matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c", size = 8306310 }, - { url = "https://files.pythonhosted.org/packages/de/e3/2976e4e54d7ee76eaf54b7639fdc10a223d05c2bdded7045233e9871e469/matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e", size = 9086717 }, - { url = "https://files.pythonhosted.org/packages/d2/92/c2b9464a0562feb6ae780bdc152364810862e07ef5e6affa2b7686028db2/matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3", size = 7832805 }, - { url = "https://files.pythonhosted.org/packages/5c/7f/8932eac316b32f464b8f9069f151294dcd892c8fbde61fe8bcd7ba7f7f7e/matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9", size = 7893012 }, - { url = "https://files.pythonhosted.org/packages/90/89/9db9db3dd0ff3e2c49e452236dfe29e60b5586a88f8928ca1d153d0da8b5/matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa", size = 7769810 }, - { url = "https://files.pythonhosted.org/packages/67/26/d2661cdc2e1410b8929c5f12dfd521e4528abfed1b3c3d5a28ac48258b43/matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b", size = 8193779 }, - { url = "https://files.pythonhosted.org/packages/95/70/4839eaa672bf4eacc98ebc8d23633e02b6daf39e294e7433c4ab11a689be/matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413", size = 8306260 }, - { url = "https://files.pythonhosted.org/packages/88/62/7b263b2cb2724b45d3a4f9c8c6137696cc3ef037d44383fb01ac2a9555c2/matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b", size = 9086073 }, - { url = "https://files.pythonhosted.org/packages/b0/6d/3572fe243c74112fef120f0bc86f5edd21f49b60e8322fc7f6a01fe945dd/matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49", size = 7833041 }, - { url = "https://files.pythonhosted.org/packages/03/8f/9d505be3eb2f40ec731674fb6b47d10cc3147bbd6a9ea7a08c8da55415c6/matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03", size = 7933657 }, - { url = "https://files.pythonhosted.org/packages/5d/68/44b458b9794bcff2a66921f8c9a8110a50a0bb099bd5f7cabb428a1dc765/matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30", size = 7799276 }, - { url = "https://files.pythonhosted.org/packages/47/79/8486d4ddcaaf676314b5fb58e8fe19d1a6210a443a7c31fa72d4215fcb87/matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51", size = 8221027 }, - { url = "https://files.pythonhosted.org/packages/56/62/72a472181578c3d035dcda0d0fa2e259ba2c4cb91132588a348bb705b70d/matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c", size = 8329097 }, - { url = "https://files.pythonhosted.org/packages/01/8a/760f7fce66b39f447ad160800619d0bd5d0936d2b4633587116534a4afe0/matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e", size = 9093770 }, +sdist = { url = "https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz", hash = "sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278", size = 36686418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/ec/3cdff7b5239adaaacefcc4f77c316dfbbdf853c4ed2beec467e0fec31b9f/matplotlib-3.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6", size = 8160551 }, + { url = "https://files.pythonhosted.org/packages/41/f2/b518f2c7f29895c9b167bf79f8529c63383ae94eaf49a247a4528e9a148d/matplotlib-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e", size = 8034853 }, + { url = "https://files.pythonhosted.org/packages/ed/8d/45754b4affdb8f0d1a44e4e2bcd932cdf35b256b60d5eda9f455bb293ed0/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5", size = 8446724 }, + { url = "https://files.pythonhosted.org/packages/09/5a/a113495110ae3e3395c72d82d7bc4802902e46dc797f6b041e572f195c56/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6", size = 8583905 }, + { url = "https://files.pythonhosted.org/packages/12/b1/8b1655b4c9ed4600c817c419f7eaaf70082630efd7556a5b2e77a8a3cdaf/matplotlib-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1", size = 9395223 }, + { url = "https://files.pythonhosted.org/packages/5a/85/b9a54d64585a6b8737a78a61897450403c30f39e0bd3214270bb0b96f002/matplotlib-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3", size = 8025355 }, + { url = "https://files.pythonhosted.org/packages/0c/f1/e37f6c84d252867d7ddc418fff70fc661cfd363179263b08e52e8b748e30/matplotlib-3.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fd44fc75522f58612ec4a33958a7e5552562b7705b42ef1b4f8c0818e304a363", size = 8171677 }, + { url = "https://files.pythonhosted.org/packages/c7/8b/92e9da1f28310a1f6572b5c55097b0c0ceb5e27486d85fb73b54f5a9b939/matplotlib-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c58a9622d5dbeb668f407f35f4e6bfac34bb9ecdcc81680c04d0258169747997", size = 8044945 }, + { url = "https://files.pythonhosted.org/packages/c5/cb/49e83f0fd066937a5bd3bc5c5d63093703f3637b2824df8d856e0558beef/matplotlib-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:845d96568ec873be63f25fa80e9e7fae4be854a66a7e2f0c8ccc99e94a8bd4ef", size = 8458269 }, + { url = "https://files.pythonhosted.org/packages/b2/7d/2d873209536b9ee17340754118a2a17988bc18981b5b56e6715ee07373ac/matplotlib-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5439f4c5a3e2e8eab18e2f8c3ef929772fd5641876db71f08127eed95ab64683", size = 8599369 }, + { url = "https://files.pythonhosted.org/packages/b8/03/57d6cbbe85c61fe4cbb7c94b54dce443d68c21961830833a1f34d056e5ea/matplotlib-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4673ff67a36152c48ddeaf1135e74ce0d4bce1bbf836ae40ed39c29edf7e2765", size = 9405992 }, + { url = "https://files.pythonhosted.org/packages/14/cf/e382598f98be11bf51dd0bc60eca44a517f6793e3dc8b9d53634a144620c/matplotlib-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a", size = 8034580 }, + { url = "https://files.pythonhosted.org/packages/44/c7/6b2d8cb7cc251d53c976799cacd3200add56351c175ba89ab9cbd7c1e68a/matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59", size = 8172465 }, + { url = "https://files.pythonhosted.org/packages/42/2a/6d66d0fba41e13e9ca6512a0a51170f43e7e7ed3a8dfa036324100775612/matplotlib-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d44cb942af1693cced2604c33a9abcef6205601c445f6d0dc531d813af8a2f5a", size = 8043300 }, + { url = "https://files.pythonhosted.org/packages/90/60/2a60342b27b90a16bada939a85e29589902b41073f59668b904b15ea666c/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a994f29e968ca002b50982b27168addfd65f0105610b6be7fa515ca4b5307c95", size = 8448936 }, + { url = "https://files.pythonhosted.org/packages/a7/b2/d872fc3d753516870d520595ddd8ce4dd44fa797a240999f125f58521ad7/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8", size = 8594151 }, + { url = "https://files.pythonhosted.org/packages/f4/bd/b2f60cf7f57d014ab33e4f74602a2b5bdc657976db8196bbc022185f6f9c/matplotlib-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:503feb23bd8c8acc75541548a1d709c059b7184cde26314896e10a9f14df5f12", size = 9400347 }, + { url = "https://files.pythonhosted.org/packages/9f/6e/264673e64001b99d747aff5a288eca82826c024437a3694e19aed1decf46/matplotlib-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc", size = 8039144 }, + { url = "https://files.pythonhosted.org/packages/72/11/1b2a094d95dcb6e6edd4a0b238177c439006c6b7a9fe8d31801237bf512f/matplotlib-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96f2886f5c1e466f21cc41b70c5a0cd47bfa0015eb2d5793c88ebce658600e25", size = 8173073 }, + { url = "https://files.pythonhosted.org/packages/0d/c4/87b6ad2723070511a411ea719f9c70fde64605423b184face4e94986de9d/matplotlib-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:12eaf48463b472c3c0f8dbacdbf906e573013df81a0ab82f0616ea4b11281908", size = 8043892 }, + { url = "https://files.pythonhosted.org/packages/57/69/cb0812a136550b21361335e9ffb7d459bf6d13e03cb7b015555d5143d2d6/matplotlib-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fbbabc82fde51391c4da5006f965e36d86d95f6ee83fb594b279564a4c5d0d2", size = 8450532 }, + { url = "https://files.pythonhosted.org/packages/ea/3a/bab9deb4fb199c05e9100f94d7f1c702f78d3241e6a71b784d2b88d7bebd/matplotlib-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2e15300530c1a94c63cfa546e3b7864bd18ea2901317bae8bbf06a5ade6dcf", size = 8593905 }, + { url = "https://files.pythonhosted.org/packages/8b/66/742fd242f989adc1847ddf5f445815f73ad7c46aa3440690cc889cfa423c/matplotlib-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3547d153d70233a8496859097ef0312212e2689cdf8d7ed764441c77604095ae", size = 9399609 }, + { url = "https://files.pythonhosted.org/packages/fa/d6/54cee7142cef7d910a324a7aedf335c0c147b03658b54d49ec48166f10a6/matplotlib-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:c55b20591ced744aa04e8c3e4b7543ea4d650b6c3c4b208c08a05b4010e8b442", size = 8039076 }, + { url = "https://files.pythonhosted.org/packages/43/14/815d072dc36e88753433bfd0385113405efb947e6895ff7b4d2e8614a33b/matplotlib-3.10.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ade1003376731a971e398cc4ef38bb83ee8caf0aee46ac6daa4b0506db1fd06", size = 8211000 }, + { url = "https://files.pythonhosted.org/packages/9a/76/34e75f364194ec352678adcb540964be6f35ec7d3d8c75ebcb17e6839359/matplotlib-3.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95b710fea129c76d30be72c3b38f330269363fbc6e570a5dd43580487380b5ff", size = 8087707 }, + { url = "https://files.pythonhosted.org/packages/c3/2b/b6bc0dff6a72d333bc7df94a66e6ce662d224e43daa8ad8ae4eaa9a77f55/matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdbaf909887373c3e094b0318d7ff230b2ad9dcb64da7ade654182872ab2593", size = 8477384 }, + { url = "https://files.pythonhosted.org/packages/c2/2d/b5949fb2b76e9b47ab05e25a5f5f887c70de20d8b0cbc704a4e2ee71c786/matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e", size = 8610334 }, + { url = "https://files.pythonhosted.org/packages/d6/9a/6e3c799d5134d9af44b01c787e1360bee38cf51850506ea2e743a787700b/matplotlib-3.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede", size = 9406777 }, + { url = "https://files.pythonhosted.org/packages/0e/dd/e6ae97151e5ed648ab2ea48885bc33d39202b640eec7a2910e2c843f7ac0/matplotlib-3.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c", size = 8109742 }, + { url = "https://files.pythonhosted.org/packages/32/5f/29def7ce4e815ab939b56280976ee35afffb3bbdb43f332caee74cb8c951/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03", size = 8155500 }, + { url = "https://files.pythonhosted.org/packages/de/6d/d570383c9f7ca799d0a54161446f9ce7b17d6c50f2994b653514bcaa108f/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea", size = 8032398 }, + { url = "https://files.pythonhosted.org/packages/c9/b4/680aa700d99b48e8c4393fa08e9ab8c49c0555ee6f4c9c0a5e8ea8dfde5d/matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef", size = 8587361 }, ] [[package]] @@ -2991,7 +3084,7 @@ wheels = [ [[package]] name = "mizani" -version = "0.13.0" +version = "0.13.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -2999,9 +3092,9 @@ dependencies = [ { name = "scipy" }, { name = "tzdata", marker = "platform_system == 'Emscripten' or platform_system == 'Windows'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/58/63/0634d4da20015f3a818c2c38bd85cf5fb0ea764082e7d0d2f3952dd710fe/mizani-0.13.0.tar.gz", hash = "sha256:3d658df352a1c6342eb56b146ae242ab916bd717ecd75ffb14961559ccbc9cb8", size = 765107 } +sdist = { url = "https://files.pythonhosted.org/packages/91/c3/9f83c374314b2b42e7aec65f3bf87046415ab265f209fa8a04eb6da822ee/mizani-0.13.1.tar.gz", hash = "sha256:e3247ea12c746c8104767d7e42a2d16473173c7bc314f298d8294a58f4653353", size = 765181 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/18/be1a3bd88098cc7d9bc82b04422729569816bb3b1beed73a0b562312a93c/mizani-0.13.0-py3-none-any.whl", hash = "sha256:741d3ce79f1ee0bfa039bc6d84a395ae5024177893697973667b9ce73470c50e", size = 127851 }, + { url = "https://files.pythonhosted.org/packages/29/85/16e17e75831ec01808c5f07e578f1552df87a4f5c827caa8be28f97b4c19/mizani-0.13.1-py3-none-any.whl", hash = "sha256:7da0dcacd43fbcc01c279ea06a76f1f064ae90dbb387c4a985ba24a92d3c7d7a", size = 127896 }, ] [[package]] @@ -3087,29 +3180,29 @@ wheels = [ [[package]] name = "mysqlclient" -version = "2.2.5" +version = "2.2.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/95/1af2ee813d4f0b607082c18bb82aa05c98a95a402a1d2d5808999317cb16/mysqlclient-2.2.5.tar.gz", hash = "sha256:add8643c32f738014d252d2bdebb478623b04802e8396d5903905db36474d3ff", size = 90519 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/62/51fbcd851834c830c940ded80280f593bd031137603329dd89479c68c5be/mysqlclient-2.2.6.tar.gz", hash = "sha256:c0b46d9b78b461dbb62482089ca8040fa916595b1b30f831ebbd1b0a82b43d53", size = 91055 } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/78/5dc4d98b998e957968aa8ad807a6ca7f751ef79ce462da11156317d7ca08/mysqlclient-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78438314199504c64f69e1e3521f2c9b419f19fcd85158b44c997b64409a6af", size = 207205 }, - { url = "https://files.pythonhosted.org/packages/9a/12/0e10b29d0a880e0d2482fe93d502d537bddf647f1a35468c8b98bb517c91/mysqlclient-2.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b54511648c1455b43ac28f8b4c1f732c5b0c343e87f7a3bd6fc9f9fe0f91934e", size = 207207 }, - { url = "https://files.pythonhosted.org/packages/8b/96/962f16047ed35ee8c91c10c26a98057194242f6c8da3b78238909a8014fe/mysqlclient-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:e871ede4261d0d42b8ed20a2459db411c7deafedd8e77b7e4ba760be4a6a752b", size = 207349 }, - { url = "https://files.pythonhosted.org/packages/62/f9/4a43f9fde92eb463bdb08643c4a143751be2b68cd9ad0582d7ee80836ddc/mysqlclient-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:8012c633aab8c91ea8172ac479807135b171501b9cad1a7cd9b58c4dc8dcdab5", size = 207343 }, - { url = "https://files.pythonhosted.org/packages/be/17/cd1b80247f76968c1c5a643843c69c640a8548f4f5e131be6b10d4436def/mysqlclient-2.2.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1d2e2ca0fe8405d8d6464edd01bf059951279e4bc27284d39341bd4737b2bc64", size = 207267 }, + { url = "https://files.pythonhosted.org/packages/1a/04/f4e68d1a71b53ad81ac21e37729c1fcf38be46b88e3d47ab315e36abace0/mysqlclient-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:e94a92858203d97fd584bdb6d7ee8c56f2590db8d77fd44215c0dcf5e739bc37", size = 207533 }, + { url = "https://files.pythonhosted.org/packages/e2/f6/3ac198c2633dc49de56b4631353e7a8b241fbda77bddb635c0b2ae57b9e3/mysqlclient-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:43c5b30be0675080b9c815f457d73397f0442173e7be83d089b126835e2617ae", size = 207532 }, + { url = "https://files.pythonhosted.org/packages/f2/e0/d4806d4970136047ba247ad738d8d9e19655f114a91326fc790d86f4234e/mysqlclient-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:e940b41d85dfd7b190fa47d52f525f878cfa203d4653bf6a35b271b3c3be125b", size = 207811 }, + { url = "https://files.pythonhosted.org/packages/7f/92/9d67ec977119abf692429751b6ce5b84baef33cded260768d813e742be08/mysqlclient-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:794857bce4f9a1903a99786dd29ad7887f45a870b3d11585b8c51c4a753c4174", size = 207806 }, + { url = "https://files.pythonhosted.org/packages/db/b4/64d6a3b1e0c7d58dfce962595add65cd0fa181db2c2ecc524cc4c8f7c168/mysqlclient-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f3efb849d6f7ef4b9788a0eda2e896b975e0ebf1d6bf3dcabea63fd698e5b0b5", size = 207576 }, ] [[package]] name = "narwhals" -version = "1.13.3" +version = "1.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/8d/06dcee8c5fcc1fdc3b7fb36beedcf68e70e9591079111a7cd3c056339cab/narwhals-1.13.3.tar.gz", hash = "sha256:db95cb5b5a6b99bad9fe7f2e2dacf937d57dee1c76c4544d4354a324084e36b5", size = 168241 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/fe/8133d3a21978e333a70f42561167551482b42044fc12cbbb7908aa64e5f5/narwhals-1.19.1.tar.gz", hash = "sha256:e597e7ed9da42ffb2c80b21e174817b27592a8570edea8c46c90a726e3b796af", size = 222808 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/f9/574c34b4386d994a468cc844bc733638fd76b8cdbbd7cb8364b68ea5fbae/narwhals-1.13.3-py3-none-any.whl", hash = "sha256:cde49b59b4540885d822777b747ed3fad65632b3d34648040308afcf08e62547", size = 201122 }, + { url = "https://files.pythonhosted.org/packages/80/0c/c01eb700963a978b741a93c0ed233d613643ece0ad54f5e2765a307f26f2/narwhals-1.19.1-py3-none-any.whl", hash = "sha256:72476dcc95f1d3f2c0c1f047cdd4879346b2871fe13d1223025466d8a3dcaea4", size = 260574 }, ] [[package]] name = "nbclient" -version = "0.10.0" +version = "0.10.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-client" }, @@ -3117,9 +3210,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/d2/39bc36604f24bccd44d374ac34769bc58c53a1da5acd1e83f0165aa4940e/nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09", size = 62246 } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/e8/00517a23d3eeaed0513e718fbc94aab26eaa1758f5690fc8578839791c79/nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f", size = 25318 }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, ] [[package]] @@ -3195,64 +3288,64 @@ wheels = [ [[package]] name = "numpy" -version = "2.1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/25/ca/1166b75c21abd1da445b97bf1fa2f14f423c6cfb4fc7c4ef31dccf9f6a94/numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761", size = 20166090 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/80/d572a4737626372915bca41c3afbfec9d173561a39a0a61bacbbfd1dafd4/numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff", size = 21152472 }, - { url = "https://files.pythonhosted.org/packages/6f/bb/7bfba10c791ae3bb6716da77ad85a82d5fac07fc96fb0023ef0571df9d20/numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5", size = 13747967 }, - { url = "https://files.pythonhosted.org/packages/da/d6/2df7bde35f0478455f0be5934877b3e5a505f587b00230f54a519a6b55a5/numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1", size = 5354921 }, - { url = "https://files.pythonhosted.org/packages/d1/bb/75b945874f931494891eac6ca06a1764d0e8208791f3addadb2963b83527/numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd", size = 6888603 }, - { url = "https://files.pythonhosted.org/packages/68/a7/fde73636f6498dbfa6d82fc336164635fe592f1ad0d13285fcb6267fdc1c/numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3", size = 13889862 }, - { url = "https://files.pythonhosted.org/packages/05/db/5d9c91b2e1e2e72be1369278f696356d44975befcae830daf2e667dcb54f/numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098", size = 16328151 }, - { url = "https://files.pythonhosted.org/packages/3e/6a/7eb732109b53ae64a29e25d7e68eb9d6611037f6354875497008a49e74d3/numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c", size = 16704107 }, - { url = "https://files.pythonhosted.org/packages/88/cc/278113b66a1141053cbda6f80e4200c6da06b3079c2d27bda1fde41f2c1f/numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4", size = 14385789 }, - { url = "https://files.pythonhosted.org/packages/f5/69/eb20f5e1bfa07449bc67574d2f0f7c1e6b335fb41672e43861a7727d85f2/numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23", size = 6536706 }, - { url = "https://files.pythonhosted.org/packages/8e/8b/1c131ab5a94c1086c289c6e1da1d843de9dbd95fe5f5ee6e61904c9518e2/numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0", size = 12864165 }, - { url = "https://files.pythonhosted.org/packages/ad/81/c8167192eba5247593cd9d305ac236847c2912ff39e11402e72ae28a4985/numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d", size = 21156252 }, - { url = "https://files.pythonhosted.org/packages/da/74/5a60003fc3d8a718d830b08b654d0eea2d2db0806bab8f3c2aca7e18e010/numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41", size = 13784119 }, - { url = "https://files.pythonhosted.org/packages/47/7c/864cb966b96fce5e63fcf25e1e4d957fe5725a635e5f11fe03f39dd9d6b5/numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9", size = 5352978 }, - { url = "https://files.pythonhosted.org/packages/09/ac/61d07930a4993dd9691a6432de16d93bbe6aa4b1c12a5e573d468eefc1ca/numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09", size = 6892570 }, - { url = "https://files.pythonhosted.org/packages/27/2f/21b94664f23af2bb52030653697c685022119e0dc93d6097c3cb45bce5f9/numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a", size = 13896715 }, - { url = "https://files.pythonhosted.org/packages/7a/f0/80811e836484262b236c684a75dfc4ba0424bc670e765afaa911468d9f39/numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b", size = 16339644 }, - { url = "https://files.pythonhosted.org/packages/fa/81/ce213159a1ed8eb7d88a2a6ef4fbdb9e4ffd0c76b866c350eb4e3c37e640/numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee", size = 16712217 }, - { url = "https://files.pythonhosted.org/packages/7d/84/4de0b87d5a72f45556b2a8ee9fc8801e8518ec867fc68260c1f5dcb3903f/numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0", size = 14399053 }, - { url = "https://files.pythonhosted.org/packages/7e/1c/e5fabb9ad849f9d798b44458fd12a318d27592d4bc1448e269dec070ff04/numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9", size = 6534741 }, - { url = "https://files.pythonhosted.org/packages/1e/48/a9a4b538e28f854bfb62e1dea3c8fea12e90216a276c7777ae5345ff29a7/numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2", size = 12869487 }, - { url = "https://files.pythonhosted.org/packages/8a/f0/385eb9970309643cbca4fc6eebc8bb16e560de129c91258dfaa18498da8b/numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e", size = 20849658 }, - { url = "https://files.pythonhosted.org/packages/54/4a/765b4607f0fecbb239638d610d04ec0a0ded9b4951c56dc68cef79026abf/numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958", size = 13492258 }, - { url = "https://files.pythonhosted.org/packages/bd/a7/2332679479c70b68dccbf4a8eb9c9b5ee383164b161bee9284ac141fbd33/numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8", size = 5090249 }, - { url = "https://files.pythonhosted.org/packages/c1/67/4aa00316b3b981a822c7a239d3a8135be2a6945d1fd11d0efb25d361711a/numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564", size = 6621704 }, - { url = "https://files.pythonhosted.org/packages/5e/da/1a429ae58b3b6c364eeec93bf044c532f2ff7b48a52e41050896cf15d5b1/numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512", size = 13606089 }, - { url = "https://files.pythonhosted.org/packages/9e/3e/3757f304c704f2f0294a6b8340fcf2be244038be07da4cccf390fa678a9f/numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b", size = 16043185 }, - { url = "https://files.pythonhosted.org/packages/43/97/75329c28fea3113d00c8d2daf9bc5828d58d78ed661d8e05e234f86f0f6d/numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc", size = 16410751 }, - { url = "https://files.pythonhosted.org/packages/ad/7a/442965e98b34e0ae9da319f075b387bcb9a1e0658276cc63adb8c9686f7b/numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0", size = 14082705 }, - { url = "https://files.pythonhosted.org/packages/ac/b6/26108cf2cfa5c7e03fb969b595c93131eab4a399762b51ce9ebec2332e80/numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9", size = 6239077 }, - { url = "https://files.pythonhosted.org/packages/a6/84/fa11dad3404b7634aaab50733581ce11e5350383311ea7a7010f464c0170/numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a", size = 12566858 }, - { url = "https://files.pythonhosted.org/packages/4d/0b/620591441457e25f3404c8057eb924d04f161244cb8a3680d529419aa86e/numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f", size = 20836263 }, - { url = "https://files.pythonhosted.org/packages/45/e1/210b2d8b31ce9119145433e6ea78046e30771de3fe353f313b2778142f34/numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", size = 13507771 }, - { url = "https://files.pythonhosted.org/packages/55/44/aa9ee3caee02fa5a45f2c3b95cafe59c44e4b278fbbf895a93e88b308555/numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57", size = 5075805 }, - { url = "https://files.pythonhosted.org/packages/78/d6/61de6e7e31915ba4d87bbe1ae859e83e6582ea14c6add07c8f7eefd8488f/numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe", size = 6608380 }, - { url = "https://files.pythonhosted.org/packages/3e/46/48bdf9b7241e317e6cf94276fe11ba673c06d1fdf115d8b4ebf616affd1a/numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43", size = 13602451 }, - { url = "https://files.pythonhosted.org/packages/70/50/73f9a5aa0810cdccda9c1d20be3cbe4a4d6ea6bfd6931464a44c95eef731/numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56", size = 16039822 }, - { url = "https://files.pythonhosted.org/packages/ad/cd/098bc1d5a5bc5307cfc65ee9369d0ca658ed88fbd7307b0d49fab6ca5fa5/numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a", size = 16411822 }, - { url = "https://files.pythonhosted.org/packages/83/a2/7d4467a2a6d984549053b37945620209e702cf96a8bc658bc04bba13c9e2/numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef", size = 14079598 }, - { url = "https://files.pythonhosted.org/packages/e9/6a/d64514dcecb2ee70bfdfad10c42b76cab657e7ee31944ff7a600f141d9e9/numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f", size = 6236021 }, - { url = "https://files.pythonhosted.org/packages/bb/f9/12297ed8d8301a401e7d8eb6b418d32547f1d700ed3c038d325a605421a4/numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed", size = 12560405 }, - { url = "https://files.pythonhosted.org/packages/a7/45/7f9244cd792e163b334e3a7f02dff1239d2890b6f37ebf9e82cbe17debc0/numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f", size = 20859062 }, - { url = "https://files.pythonhosted.org/packages/b1/b4/a084218e7e92b506d634105b13e27a3a6645312b93e1c699cc9025adb0e1/numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4", size = 13515839 }, - { url = "https://files.pythonhosted.org/packages/27/45/58ed3f88028dcf80e6ea580311dc3edefdd94248f5770deb980500ef85dd/numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e", size = 5116031 }, - { url = "https://files.pythonhosted.org/packages/37/a8/eb689432eb977d83229094b58b0f53249d2209742f7de529c49d61a124a0/numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0", size = 6629977 }, - { url = "https://files.pythonhosted.org/packages/42/a3/5355ad51ac73c23334c7caaed01adadfda49544f646fcbfbb4331deb267b/numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408", size = 13575951 }, - { url = "https://files.pythonhosted.org/packages/c4/70/ea9646d203104e647988cb7d7279f135257a6b7e3354ea6c56f8bafdb095/numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6", size = 16022655 }, - { url = "https://files.pythonhosted.org/packages/14/ce/7fc0612903e91ff9d0b3f2eda4e18ef9904814afcae5b0f08edb7f637883/numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f", size = 16399902 }, - { url = "https://files.pythonhosted.org/packages/ef/62/1d3204313357591c913c32132a28f09a26357e33ea3c4e2fe81269e0dca1/numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17", size = 14067180 }, - { url = "https://files.pythonhosted.org/packages/24/d7/78a40ed1d80e23a774cb8a34ae8a9493ba1b4271dde96e56ccdbab1620ef/numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48", size = 6291907 }, - { url = "https://files.pythonhosted.org/packages/86/09/a5ab407bd7f5f5599e6a9261f964ace03a73e7c6928de906981c31c38082/numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4", size = 12644098 }, - { url = "https://files.pythonhosted.org/packages/00/e7/8d8bb791b62586cc432ecbb70632b4f23b7b7c88df41878de7528264f6d7/numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f", size = 20983893 }, - { url = "https://files.pythonhosted.org/packages/5e/f3/cb8118a044b5007586245a650360c9f5915b2f4232dd7658bb7a63dd1d02/numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4", size = 6752501 }, - { url = "https://files.pythonhosted.org/packages/53/f5/365b46439b518d2ec6ebb880cc0edf90f225145dfd4db7958334f7164530/numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d", size = 16142601 }, - { url = "https://files.pythonhosted.org/packages/03/c2/d1fee6ba999aa7cd41ca6856937f2baaf604c3eec1565eae63451ec31e5e/numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb", size = 12771397 }, +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/fdbf6a7871703df6160b5cf3dd774074b086d278172285c52c2758b76305/numpy-2.2.1.tar.gz", hash = "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918", size = 20227662 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/c4/5588367dc9f91e1a813beb77de46ea8cab13f778e1b3a0e661ab031aba44/numpy-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440", size = 21213214 }, + { url = "https://files.pythonhosted.org/packages/d8/8b/32dd9f08419023a4cf856c5ad0b4eba9b830da85eafdef841a104c4fc05a/numpy-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab", size = 14352248 }, + { url = "https://files.pythonhosted.org/packages/84/2d/0e895d02940ba6e12389f0ab5cac5afcf8dc2dc0ade4e8cad33288a721bd/numpy-2.2.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675", size = 5391007 }, + { url = "https://files.pythonhosted.org/packages/11/b9/7f1e64a0d46d9c2af6d17966f641fb12d5b8ea3003f31b2308f3e3b9a6aa/numpy-2.2.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308", size = 6926174 }, + { url = "https://files.pythonhosted.org/packages/2e/8c/043fa4418bc9364e364ab7aba8ff6ef5f6b9171ade22de8fbcf0e2fa4165/numpy-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957", size = 14330914 }, + { url = "https://files.pythonhosted.org/packages/f7/b6/d8110985501ca8912dfc1c3bbef99d66e62d487f72e46b2337494df77364/numpy-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf", size = 16379607 }, + { url = "https://files.pythonhosted.org/packages/e2/57/bdca9fb8bdaa810c3a4ff2eb3231379b77f618a7c0d24be9f7070db50775/numpy-2.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2", size = 15541760 }, + { url = "https://files.pythonhosted.org/packages/97/55/3b9147b3cbc3b6b1abc2a411dec5337a46c873deca0dd0bf5bef9d0579cc/numpy-2.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528", size = 18168476 }, + { url = "https://files.pythonhosted.org/packages/00/e7/7c2cde16c9b87a8e14fdd262ca7849c4681cf48c8a774505f7e6f5e3b643/numpy-2.2.1-cp310-cp310-win32.whl", hash = "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95", size = 6570985 }, + { url = "https://files.pythonhosted.org/packages/a1/a8/554b0e99fc4ac11ec481254781a10da180d0559c2ebf2c324232317349ee/numpy-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf", size = 12913384 }, + { url = "https://files.pythonhosted.org/packages/59/14/645887347124e101d983e1daf95b48dc3e136bf8525cb4257bf9eab1b768/numpy-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484", size = 21217379 }, + { url = "https://files.pythonhosted.org/packages/9f/fd/2279000cf29f58ccfd3778cbf4670dfe3f7ce772df5e198c5abe9e88b7d7/numpy-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7", size = 14388520 }, + { url = "https://files.pythonhosted.org/packages/58/b0/034eb5d5ba12d66ab658ff3455a31f20add0b78df8203c6a7451bd1bee21/numpy-2.2.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb", size = 5389286 }, + { url = "https://files.pythonhosted.org/packages/5d/69/6f3cccde92e82e7835fdb475c2bf439761cbf8a1daa7c07338e1e132dfec/numpy-2.2.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5", size = 6930345 }, + { url = "https://files.pythonhosted.org/packages/d1/72/1cd38e91ab563e67f584293fcc6aca855c9ae46dba42e6b5ff4600022899/numpy-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73", size = 14335748 }, + { url = "https://files.pythonhosted.org/packages/f2/d4/f999444e86986f3533e7151c272bd8186c55dda554284def18557e013a2a/numpy-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591", size = 16391057 }, + { url = "https://files.pythonhosted.org/packages/99/7b/85cef6a3ae1b19542b7afd97d0b296526b6ef9e3c43ea0c4d9c4404fb2d0/numpy-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8", size = 15556943 }, + { url = "https://files.pythonhosted.org/packages/69/7e/b83cc884c3508e91af78760f6b17ab46ad649831b1fa35acb3eb26d9e6d2/numpy-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0", size = 18180785 }, + { url = "https://files.pythonhosted.org/packages/b2/9f/eb4a9a38867de059dcd4b6e18d47c3867fbd3795d4c9557bb49278f94087/numpy-2.2.1-cp311-cp311-win32.whl", hash = "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd", size = 6568983 }, + { url = "https://files.pythonhosted.org/packages/6d/1e/be3b9f3073da2f8c7fa361fcdc231b548266b0781029fdbaf75eeab997fd/numpy-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16", size = 12917260 }, + { url = "https://files.pythonhosted.org/packages/62/12/b928871c570d4a87ab13d2cc19f8817f17e340d5481621930e76b80ffb7d/numpy-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab", size = 20909861 }, + { url = "https://files.pythonhosted.org/packages/3d/c3/59df91ae1d8ad7c5e03efd63fd785dec62d96b0fe56d1f9ab600b55009af/numpy-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa", size = 14095776 }, + { url = "https://files.pythonhosted.org/packages/af/4e/8ed5868efc8e601fb69419644a280e9c482b75691466b73bfaab7d86922c/numpy-2.2.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315", size = 5126239 }, + { url = "https://files.pythonhosted.org/packages/1a/74/dd0bbe650d7bc0014b051f092f2de65e34a8155aabb1287698919d124d7f/numpy-2.2.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355", size = 6659296 }, + { url = "https://files.pythonhosted.org/packages/7f/11/4ebd7a3f4a655764dc98481f97bd0a662fb340d1001be6050606be13e162/numpy-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7", size = 14047121 }, + { url = "https://files.pythonhosted.org/packages/7f/a7/c1f1d978166eb6b98ad009503e4d93a8c1962d0eb14a885c352ee0276a54/numpy-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d", size = 16096599 }, + { url = "https://files.pythonhosted.org/packages/3d/6d/0e22afd5fcbb4d8d0091f3f46bf4e8906399c458d4293da23292c0ba5022/numpy-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51", size = 15243932 }, + { url = "https://files.pythonhosted.org/packages/03/39/e4e5832820131ba424092b9610d996b37e5557180f8e2d6aebb05c31ae54/numpy-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046", size = 17861032 }, + { url = "https://files.pythonhosted.org/packages/5f/8a/3794313acbf5e70df2d5c7d2aba8718676f8d054a05abe59e48417fb2981/numpy-2.2.1-cp312-cp312-win32.whl", hash = "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2", size = 6274018 }, + { url = "https://files.pythonhosted.org/packages/17/c1/c31d3637f2641e25c7a19adf2ae822fdaf4ddd198b05d79a92a9ce7cb63e/numpy-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8", size = 12613843 }, + { url = "https://files.pythonhosted.org/packages/20/d6/91a26e671c396e0c10e327b763485ee295f5a5a7a48c553f18417e5a0ed5/numpy-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780", size = 20896464 }, + { url = "https://files.pythonhosted.org/packages/8c/40/5792ccccd91d45e87d9e00033abc4f6ca8a828467b193f711139ff1f1cd9/numpy-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821", size = 14111350 }, + { url = "https://files.pythonhosted.org/packages/c0/2a/fb0a27f846cb857cef0c4c92bef89f133a3a1abb4e16bba1c4dace2e9b49/numpy-2.2.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e", size = 5111629 }, + { url = "https://files.pythonhosted.org/packages/eb/e5/8e81bb9d84db88b047baf4e8b681a3e48d6390bc4d4e4453eca428ecbb49/numpy-2.2.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348", size = 6645865 }, + { url = "https://files.pythonhosted.org/packages/7a/1a/a90ceb191dd2f9e2897c69dde93ccc2d57dd21ce2acbd7b0333e8eea4e8d/numpy-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59", size = 14043508 }, + { url = "https://files.pythonhosted.org/packages/f1/5a/e572284c86a59dec0871a49cd4e5351e20b9c751399d5f1d79628c0542cb/numpy-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af", size = 16094100 }, + { url = "https://files.pythonhosted.org/packages/0c/2c/a79d24f364788386d85899dd280a94f30b0950be4b4a545f4fa4ed1d4ca7/numpy-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51", size = 15239691 }, + { url = "https://files.pythonhosted.org/packages/cf/79/1e20fd1c9ce5a932111f964b544facc5bb9bde7865f5b42f00b4a6a9192b/numpy-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716", size = 17856571 }, + { url = "https://files.pythonhosted.org/packages/be/5b/cc155e107f75d694f562bdc84a26cc930569f3dfdfbccb3420b626065777/numpy-2.2.1-cp313-cp313-win32.whl", hash = "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e", size = 6270841 }, + { url = "https://files.pythonhosted.org/packages/44/be/0e5cd009d2162e4138d79a5afb3b5d2341f0fe4777ab6e675aa3d4a42e21/numpy-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60", size = 12606618 }, + { url = "https://files.pythonhosted.org/packages/a8/87/04ddf02dd86fb17c7485a5f87b605c4437966d53de1e3745d450343a6f56/numpy-2.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e", size = 20921004 }, + { url = "https://files.pythonhosted.org/packages/6e/3e/d0e9e32ab14005425d180ef950badf31b862f3839c5b927796648b11f88a/numpy-2.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712", size = 14119910 }, + { url = "https://files.pythonhosted.org/packages/b5/5b/aa2d1905b04a8fb681e08742bb79a7bddfc160c7ce8e1ff6d5c821be0236/numpy-2.2.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008", size = 5153612 }, + { url = "https://files.pythonhosted.org/packages/ce/35/6831808028df0648d9b43c5df7e1051129aa0d562525bacb70019c5f5030/numpy-2.2.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84", size = 6668401 }, + { url = "https://files.pythonhosted.org/packages/b1/38/10ef509ad63a5946cc042f98d838daebfe7eaf45b9daaf13df2086b15ff9/numpy-2.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631", size = 14014198 }, + { url = "https://files.pythonhosted.org/packages/df/f8/c80968ae01df23e249ee0a4487fae55a4c0fe2f838dfe9cc907aa8aea0fa/numpy-2.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d", size = 16076211 }, + { url = "https://files.pythonhosted.org/packages/09/69/05c169376016a0b614b432967ac46ff14269eaffab80040ec03ae1ae8e2c/numpy-2.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5", size = 15220266 }, + { url = "https://files.pythonhosted.org/packages/f1/ff/94a4ce67ea909f41cf7ea712aebbe832dc67decad22944a1020bb398a5ee/numpy-2.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71", size = 17852844 }, + { url = "https://files.pythonhosted.org/packages/46/72/8a5dbce4020dfc595592333ef2fbb0a187d084ca243b67766d29d03e0096/numpy-2.2.1-cp313-cp313t-win32.whl", hash = "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2", size = 6326007 }, + { url = "https://files.pythonhosted.org/packages/7b/9c/4fce9cf39dde2562584e4cfd351a0140240f82c0e3569ce25a250f47037d/numpy-2.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268", size = 12693107 }, + { url = "https://files.pythonhosted.org/packages/f1/65/d36a76b811ffe0a4515e290cb05cb0e22171b1b0f0db6bee9141cf023545/numpy-2.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3", size = 21044672 }, + { url = "https://files.pythonhosted.org/packages/aa/3f/b644199f165063154df486d95198d814578f13dd4d8c1651e075bf1cb8af/numpy-2.2.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964", size = 6789873 }, + { url = "https://files.pythonhosted.org/packages/d7/df/2adb0bb98a3cbe8a6c3c6d1019aede1f1d8b83927ced228a46cc56c7a206/numpy-2.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800", size = 16194933 }, + { url = "https://files.pythonhosted.org/packages/13/3e/1959d5219a9e6d200638d924cedda6a606392f7186a4ed56478252e70d55/numpy-2.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e", size = 12820057 }, ] [[package]] @@ -3278,33 +3371,33 @@ wheels = [ [[package]] name = "oracledb" -version = "2.5.0" +version = "2.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/65/19/ae473c6e6b48bc0551daf32a72a16d7043fe4aa615aba7bb4fd4cab10764/oracledb-2.5.0.tar.gz", hash = "sha256:f3181a50268202fee224e5e9e7a66ecc20c482ec55cdfcb6615671284cd11cfc", size = 628246 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/f2/df8a675fd0de1c73a40b66481cd3652b0143b8c2602ed7213f37f2087e98/oracledb-2.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f349563fe956c4e30aaf82fb46497428483954479b766cba627fabc6430da257", size = 3756931 }, - { url = "https://files.pythonhosted.org/packages/f9/e6/cb8125f7f28265bb60be646db99c21b759b182db62eedc42f8845e5a76aa/oracledb-2.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2aa893e71b243b570831025037963ba07d01a1d7bf7d0dbb475e473e3bb43035", size = 2235147 }, - { url = "https://files.pythonhosted.org/packages/ce/1e/52b8bfbec627dd9e635f862b0c1743b813fe9cc7467060913203b53c6e6f/oracledb-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c667b1f8ac11c133a9c5f2c3fca1b2e067fdd892773afc822743ddd68f6b9a78", size = 2416133 }, - { url = "https://files.pythonhosted.org/packages/53/f0/05eb5fbce43d6b40c91a488dcbc5e5f18478973f6a1bdd7669a3772ca8da/oracledb-2.5.0-cp310-cp310-win32.whl", hash = "sha256:36f8fb3968dc420ecdc1cb3dfd52c492af30cabd0281a816d40ad925901a21ac", size = 1470555 }, - { url = "https://files.pythonhosted.org/packages/63/a5/404c252d387e971caee82d523b71500b23623b580e00a43517820c431bdb/oracledb-2.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:31bce6451c94deecd5ffac68fce6a1484e17df59d55d2cc35268d0df124892ec", size = 1790280 }, - { url = "https://files.pythonhosted.org/packages/a4/07/29d72eee991a6a8ddb02f8100459871441203eff171858f51580e2d1e4bb/oracledb-2.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c40e4b31a4f356daab6758e5afe3dd5e00f1db55c78a9c8a72287d61f5e28331", size = 3791855 }, - { url = "https://files.pythonhosted.org/packages/a8/29/7ab8d2cf99624b437129b7fc27acf268dafb1ab787db01e3702d6c8a3483/oracledb-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cd43abb71d9667ad25ea7d72fb2a4162f68d9d3f43f033e209d37bb88d2f6480", size = 2239143 }, - { url = "https://files.pythonhosted.org/packages/45/81/b431cfcbb45b34329399a26efc645f95b711db04463bd5167932c2b5e550/oracledb-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eb40845f4fb42221073c37d2e02967abb04353e472c7b8886e579d77aac3535", size = 2412906 }, - { url = "https://files.pythonhosted.org/packages/07/5d/4e6840d12bcafee59b5d05a7bc8d05483170823ffd940235b687312d8851/oracledb-2.5.0-cp311-cp311-win32.whl", hash = "sha256:1c5bae767b6ba1ad9511b5f6a267b875c32d59382d898bc2cbd05d9903cba189", size = 1473656 }, - { url = "https://files.pythonhosted.org/packages/ac/cf/5b395a9e3bcce270167dd3d34c423fab7ff7d0c8f5fc74c4448ebfd48616/oracledb-2.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:28f0869d6d3952b6a4431f1c4fb86d24a3cf5014e61663d092ab9a77e92a4349", size = 1799680 }, - { url = "https://files.pythonhosted.org/packages/b8/e6/ed5009b98aee21ac59c88d316cc642a1b96dc0ac8d286e08ff3e211ea159/oracledb-2.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9546b03afabab3ca53f4be3b2a6b00252ce5f5630af3a6560704c86368ce6631", size = 3828369 }, - { url = "https://files.pythonhosted.org/packages/26/17/a812fc7bf916212911167046b717b92bf012740ca75840ea4204e222618c/oracledb-2.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93d2ee2b66ad5b92e8ce355cc00fd6150b2c83b1b23d63b2e0a6b669201db17d", size = 2115762 }, - { url = "https://files.pythonhosted.org/packages/23/f6/f4e71cf64ff1475ec3599439de6499d6fb209862c59ed06601b590d8b5d7/oracledb-2.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f6e421d2cb017daaa46a7d92154cf4aa1421ec47471b722bf1483080df581812", size = 2286877 }, - { url = "https://files.pythonhosted.org/packages/c9/db/8980d47db8dd6bd1ca70b8c1505e4a74a8efe9205261f510e118f57b17fa/oracledb-2.5.0-cp312-cp312-win32.whl", hash = "sha256:d93e120e76cb425533fe3b24e4f98e48ec65b7a47d213924c58671b7f7414a22", size = 1435471 }, - { url = "https://files.pythonhosted.org/packages/d6/5a/8a07258443f3f70f2905908c87b56a431d6ff053da565bb83cf363b11a59/oracledb-2.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:6652b4e486151f3d50052d070b6e100f76bce543e235db214331d23139d9d87d", size = 1757325 }, - { url = "https://files.pythonhosted.org/packages/02/70/f3630110a9c9efa6c868a73072588fd25dbdeda8cf9fb51b87e84dcd195b/oracledb-2.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f4356aab32a3ec57c754262796acdaa8160e6504c946c673fb8ca93a93eb6b14", size = 3790254 }, - { url = "https://files.pythonhosted.org/packages/28/9f/adf14b7ddc9fe087c97b41094fa14a2ff1175c16014d39f9d8a30b6b4c04/oracledb-2.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b4eba8741b181784921410a78f53e86e896b1ae800f53933b8ba3d9a832fca7", size = 2126764 }, - { url = "https://files.pythonhosted.org/packages/9b/04/459c3f13cf9865917d4f89697291b1346b0c34ba04803b7c2f2f3f0a842a/oracledb-2.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:334aa34f28c9d0add9de6b3cd4e9a55bab045f8a2ef2381e06b41db3d42813f0", size = 2298994 }, - { url = "https://files.pythonhosted.org/packages/b0/d2/bab25f3682fe408a90c13abc20a5ac8e6e5047a89526219a864ee81e0f1d/oracledb-2.5.0-cp313-cp313-win32.whl", hash = "sha256:5349a8d4b1bf862610766323b35c70daa0f5540a6ed9479469efe2f005be1f37", size = 1433016 }, - { url = "https://files.pythonhosted.org/packages/75/49/2c4abd2e96995e12c222e3dc85bf8fba7df4825145ca6c9df7f267fa9f72/oracledb-2.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:b3c26b4be12df397b1bd67b7dcf76025e0dc90f97dd05dc1da4328b15d3669b3", size = 1755046 }, +sdist = { url = "https://files.pythonhosted.org/packages/9f/60/c7ea963536a46833f3c951e0d6a84f8f3db06fc47b0bba4edf22d3be9127/oracledb-2.5.1.tar.gz", hash = "sha256:63d17ebb95f9129d0ab9386cb632c9e667e3be2c767278cc11a8e4585468de33", size = 629297 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/92/3eabd488271f20d04e1431d73cabd7a296108250f4eddfa79258e07a94af/oracledb-2.5.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:54ea7b4da179eb3fefad338685b44fed657a9cd733fb0bfc09d344cfb266355e", size = 3757547 }, + { url = "https://files.pythonhosted.org/packages/ab/2a/036491526d862d8a600e7b9bf4d1fd3269fac87e88de5ce99a62e1bf4c39/oracledb-2.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:05df7a5a61f4d26c986e235fae6f64a81afaac8f1dbef60e2e9ecf9236218e58", size = 2233703 }, + { url = "https://files.pythonhosted.org/packages/c6/10/d33cb384db5783565a39b0307a767348a0819d0d49baec88f0b785ea155b/oracledb-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d17c80063375a5d87a7ab57c8343e5434a16ea74f7be3b56f9100300ef0b69d6", size = 2417161 }, + { url = "https://files.pythonhosted.org/packages/99/3e/e6dd5afcf79fad5eec3bc41fb9b0e8a59b3cf89ff3d4c7e4f1aabdd2b2a0/oracledb-2.5.1-cp310-cp310-win32.whl", hash = "sha256:51b3911ee822319e20f2e19d816351aac747591a59a0a96cf891c62c2a5c0c0d", size = 1469257 }, + { url = "https://files.pythonhosted.org/packages/8e/05/48a0d7ff9aa8509f721da35e5422904bfc1e72b01d5a4995de43c94b3c28/oracledb-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:e4e884625117e50b619c93828affbcffa594029ef8c8b40205394990e6af65a8", size = 1790076 }, + { url = "https://files.pythonhosted.org/packages/5d/f4/70f0e52a79c215b1fae0a229cf10b572bf9eff07c5373320b2e25a7d4414/oracledb-2.5.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:85318350fa4837b7b637e436fa5f99c17919d6329065e64d1e18e5a7cae52457", size = 3792081 }, + { url = "https://files.pythonhosted.org/packages/35/40/0d7ddabeebb9ea11e520d24880e511eb92a3e421a88c0559656b196a8714/oracledb-2.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:676c221227159d9cee25030c56ff9782f330115cb86164d92d3360f55b07654b", size = 2239512 }, + { url = "https://files.pythonhosted.org/packages/13/73/b33a8b4ba58ddce0d83f86e93acb3158d9b59595c8b0232ec7cdf4f8175f/oracledb-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e78c6de57b4b5df7f932337c57e59b62e34fc4527d2460c0cab10c2ab01825f8", size = 2410818 }, + { url = "https://files.pythonhosted.org/packages/0f/92/2d3aa9934ddc3d5988567b5dde69fd6ee4e635fcd25e65cfcf6e3f89f3bd/oracledb-2.5.1-cp311-cp311-win32.whl", hash = "sha256:0d5974327a1957538a144b073367104cdf8bb39cf056940995b75cb099535589", size = 1472481 }, + { url = "https://files.pythonhosted.org/packages/15/35/9d12555d43d5bcb09498de4b9da1cd8bcac40e3f3a9c16e056a04f7452e7/oracledb-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:541bb5a107917b9d9eba1346318b42f8b6024e7dd3bef1451f0745364f03399c", size = 1799457 }, + { url = "https://files.pythonhosted.org/packages/89/bc/eef07b9a4fd0eda9da07cb9c8c9c4ef695b28034c179a138c5267a22f52f/oracledb-2.5.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:970a9420cc351d650cc6716122e9aa50cfb8c27f425ffc9d83651fd3edff6090", size = 3829099 }, + { url = "https://files.pythonhosted.org/packages/bf/78/42a86c7e45bac215b9d93b5d69fb3c95c695f338ca435647536de1fd0642/oracledb-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6788c128af5a3a45689453fc4832f32b4a0dae2696d9917c7631a2e02865148", size = 2116133 }, + { url = "https://files.pythonhosted.org/packages/85/ba/ad70a08361fd2285b6942d898748876ab9918f3f45100c4fba98bd8a9037/oracledb-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8778daa3f08639232341d802b95ca6da4c0c798c8530e4df331b3286d32e49d5", size = 2286969 }, + { url = "https://files.pythonhosted.org/packages/a7/d6/f5181943b27fb14b13303e65072ba4861577cf523cf9dca90e22139de867/oracledb-2.5.1-cp312-cp312-win32.whl", hash = "sha256:a44613f3dfacb2b9462c3871ee333fa535fbd0ec21942e14019fcfd572487db0", size = 1433894 }, + { url = "https://files.pythonhosted.org/packages/ee/d3/12bd235547387f44c8d920ee35d24647699097e69424b6549961626bfeaf/oracledb-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:934d02da80bfc030c644c5c43fbe58119dc170f15b4dfdb6fe04c220a1f8730d", size = 1757662 }, + { url = "https://files.pythonhosted.org/packages/f2/26/de027f5e2ce04d9aea6d728eb6934d9cf3e6ad41f754622b26a734b0d823/oracledb-2.5.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0374481329fa873a2af24eb12de4fd597c6c111e148065200562eb75ea0c6be7", size = 3791626 }, + { url = "https://files.pythonhosted.org/packages/3d/39/4100808acad8b106c3790bc0e49ea913387a687d1e4e10adbbff33b27709/oracledb-2.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:66e885de106701d1f2a630d19e183e491e4f1ccb8d78855f60396ba15856fb66", size = 2128230 }, + { url = "https://files.pythonhosted.org/packages/db/65/1ab401bca79959812782046a5050a70d2ae741d2171ca3eb5ee1b4e99138/oracledb-2.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcf446f6250d8edad5367ff03ad73dbbe672a2e4b060c51a774821dd723b0283", size = 2299016 }, + { url = "https://files.pythonhosted.org/packages/3e/b8/269ea48150122094968ce3761ddc2962d63d9b9c95d0464f7a919cf58af1/oracledb-2.5.1-cp313-cp313-win32.whl", hash = "sha256:b02b93199a7073e9b5687fe2dfa83d25ea102ab261c577f9d55820d5ef193dda", size = 1432810 }, + { url = "https://files.pythonhosted.org/packages/69/27/55132d27ee64b5f851f52f8ea170e18d27a063aa5d17cff508ecad9d3cc2/oracledb-2.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:173b6d132b230f0617380272181e14fc53aec65aaffe68b557a9b6040716a267", size = 1754893 }, ] [[package]] @@ -3411,15 +3504,14 @@ wheels = [ [[package]] name = "patsy" -version = "0.5.6" +version = "1.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, - { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/18/12e76e52d589c4a812a2f1fb2406b486c226b7ac263ac8ef4b5f4bb04058/patsy-0.5.6.tar.gz", hash = "sha256:95c6d47a7222535f84bff7f63d7303f2e297747a598db89cf5c67f0c0c7d2cdb", size = 398011 } +sdist = { url = "https://files.pythonhosted.org/packages/d1/81/74f6a65b848ffd16c18f920620ce999fe45fe27f01ab3911260ce4ed85e4/patsy-1.0.1.tar.gz", hash = "sha256:e786a9391eec818c054e359b737bbce692f051aee4c661f4141cc88fb459c0c4", size = 396010 } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/f3/1d311a09c34f14f5973bb0bb0dc3a6e007e1eda90b5492d082689936ca51/patsy-0.5.6-py2.py3-none-any.whl", hash = "sha256:19056886fd8fa71863fa32f0eb090267f21fb74be00f19f5c70b2e9d76c883c6", size = 233945 }, + { url = "https://files.pythonhosted.org/packages/87/2b/b50d3d08ea0fc419c183a84210571eba005328efa62b6b98bc28e9ead32a/patsy-1.0.1-py2.py3-none-any.whl", hash = "sha256:751fb38f9e97e62312e921a1954b81e1bb2bcda4f5eeabaf94db251ee791509c", size = 232923 }, ] [[package]] @@ -3503,7 +3595,7 @@ wheels = [ [[package]] name = "pins" -version = "0.8.6" +version = "0.8.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appdirs" }, @@ -3518,9 +3610,9 @@ dependencies = [ { name = "requests" }, { name = "xxhash" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1f/d1/4114c97aef3c620cfb632860bedf2ef07ad2987083319ae4d746e2caa4e0/pins-0.8.6.tar.gz", hash = "sha256:49ba7b7bde43ad384b31bab58687ccf2d27d4aca434824c7696bb2d6ca3a398b", size = 111873 } +sdist = { url = "https://files.pythonhosted.org/packages/58/61/b68b19ee5ff98cc2fd783822680f1dbfba18d9519e9893ea3e7dd303ce38/pins-0.8.7.tar.gz", hash = "sha256:82678c649d9216662ac38c08d6f5cd2385c638dbbe3c6ea5b68951eb46cbd32e", size = 114860 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/aa/780696e3252b1ec3e9a29ee8f9419167da0b0fd32f3f68293e0f3f55f7b0/pins-0.8.6-py2.py3-none-any.whl", hash = "sha256:6ef17c0b617f93d7a4ab3ecb0e9d2ccc0fa9f1a7e26e8a2be3f43f2778567c9a", size = 114209 }, + { url = "https://files.pythonhosted.org/packages/ce/71/3e7bd343d1f400ab6e605c296a88c96957a425d6cdb10c39e93ca2041a14/pins-0.8.7-py2.py3-none-any.whl", hash = "sha256:7d873d7ad6b869744ce8d2c619e8e4f3030faa28eed64b1615f58185c43fdc87", size = 116312 }, ] [package.optional-dependencies] @@ -3530,11 +3622,11 @@ gcs = [ [[package]] name = "pkginfo" -version = "1.11.2" +version = "1.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/4f625ca754f4063200216658463a73106bf725dc27a66b84df35ebe7468c/pkginfo-1.11.2.tar.gz", hash = "sha256:c6bc916b8298d159e31f2c216e35ee5b86da7da18874f879798d0a1983537c86", size = 450821 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/a5/fa2432da887652e3a0c07661ebe4aabe7f4692936c742da489178acd34de/pkginfo-1.12.0.tar.gz", hash = "sha256:8ad91a0445a036782b9366ef8b8c2c50291f83a553478ba8580c73d3215700cf", size = 451375 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/b7/71f9fbebc37ecf55233407f348b9acc974482e6ee37d057a1e8e3baba081/pkginfo-1.11.2-py3-none-any.whl", hash = "sha256:9ec518eefccd159de7ed45386a6bb4c6ca5fa2cb3bd9b71154fae44f6f1b36a3", size = 31910 }, + { url = "https://files.pythonhosted.org/packages/21/11/4af184fbd8ae13daa13953212b27a212f4e63772ca8a0dd84d08b60ed206/pkginfo-1.12.0-py3-none-any.whl", hash = "sha256:dcd589c9be4da8973eceffa247733c144812759aa67eaf4bbf97016a02f39088", size = 32322 }, ] [[package]] @@ -3561,7 +3653,7 @@ wheels = [ [[package]] name = "plotnine" -version = "0.14.1" +version = "0.14.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "matplotlib" }, @@ -3571,9 +3663,9 @@ dependencies = [ { name = "scipy" }, { name = "statsmodels" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c1/8d/5b134e803a8c9c30882004812c488d65683a67c558bdf5dc895a1583848b/plotnine-0.14.1.tar.gz", hash = "sha256:c24cc5a5c38caf0296faa59fc5bf2a131bce0872991021eb1740a7567b93774a", size = 6412768 } +sdist = { url = "https://files.pythonhosted.org/packages/00/a6/29b7451fefb61fbb44ff9b42b2657155218598cfd458405c38619483937f/plotnine-0.14.4.tar.gz", hash = "sha256:634d7168bf6f5c97e810083718aaa4330fb10f32e0e3828746a678cbd461305a", size = 6424541 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/90/35facc8f88e2b0bde20d2d067a0f4fe68f1bcf3c69f5b2ca63e7688cef12/plotnine-0.14.1-py3-none-any.whl", hash = "sha256:66b53d73211d11e12173ef7920a5127a4acc896d2c086c9c8bab378b93ad6d39", size = 1300418 }, + { url = "https://files.pythonhosted.org/packages/9c/c1/a2953385c0f811cf03e9379c24365b8a42e25deb589adb256a119f467305/plotnine-0.14.4-py3-none-any.whl", hash = "sha256:b0b8a855ccd1b0326bb225c617f8f90f426479d7e0ae142c7c7b9584764ca837", size = 1301176 }, ] [[package]] @@ -3587,29 +3679,29 @@ wheels = [ [[package]] name = "plum-dispatch" -version = "2.5.2" +version = "2.5.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "beartype" }, { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1b/ee/397257908dbbe9dcb77019a4da8500f1e38ee1b5c3f1fe54e7f9cc93ef48/plum_dispatch-2.5.2.tar.gz", hash = "sha256:1abfccc5a9c751f20dcdb1020c645968dfbc1c33ad3a9a47780834ec332cfe9e", size = 35083 } +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/d6b9db4d70d4ba7857800089ea65dd5e81dbf1a482db04eee89dbb8f9c3b/plum_dispatch-2.5.4.tar.gz", hash = "sha256:db09f143ccf8f8c2ca4440349e895fe4655f2ad42102988693bea1e6991ead35", size = 35237 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/5c/7b14160bb6e70841915a246d42cba3cd177fd97eb0a60c9e8ee300fece40/plum_dispatch-2.5.2-py3-none-any.whl", hash = "sha256:49f1e1487028849451454c59e330f800aac6ec520a432a0ed3ea6e04b74e2e31", size = 42268 }, + { url = "https://files.pythonhosted.org/packages/a2/03/69d3df4a87d14c0afc62a5492234d95a51a5abcc10bddbbebe0d08693d0e/plum_dispatch-2.5.4-py3-none-any.whl", hash = "sha256:8c05b120dd93a42f51adb0fb5e3e5f9b46129cd4d576872ad2ceb692ce1f6759", size = 42412 }, ] [[package]] name = "polars" -version = "1.12.0" +version = "1.17.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5f/df/55127a3099e990b45ce3a29ab6789a083451e76e7109fb754aad5525360b/polars-1.12.0.tar.gz", hash = "sha256:fb5c92de1a8f7d0a3f923fe48ea89eb518bdf55315ae917012350fa072bd64f4", size = 4090738 } +sdist = { url = "https://files.pythonhosted.org/packages/32/3b/40b42c6b0e54b001fbaaa55d3d769283e0d54541be783783e08da6a9c54a/polars-1.17.1.tar.gz", hash = "sha256:5a3dac3cb7cbe174d1fa898cba9afbede0c08e8728feeeab515554d762127019", size = 4220337 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/ae/77c7ec395d9361ae2086693af1947c9a2b21346ba3faf092bb154b735227/polars-1.12.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8f3c4e4e423c373dda07b4c8a7ff12aa02094b524767d0ca306b1eba67f2d99e", size = 32923786 }, - { url = "https://files.pythonhosted.org/packages/97/1c/60736d5588309eb528c52538e116593cb275310bab82ba28702cd87a76d1/polars-1.12.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:aa6f9862f0cec6353243920d9b8d858c21ec8f25f91af203dea6ff91980e140d", size = 28887255 }, - { url = "https://files.pythonhosted.org/packages/5a/3e/31257118e7e087fa27c230b8fadf8ff15d521140bf58558dc889ee0c9c5e/polars-1.12.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afb03647b5160737d2119532ee8ffe825de1d19d87f81bbbb005131786f7d59b", size = 34126501 }, - { url = "https://files.pythonhosted.org/packages/ad/e6/d03053e6064d262f2ec41172a5092b08fc20d10c059dda6c9460371cfd7e/polars-1.12.0-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:ea96aba5eb3dab8f0e6abf05ab3fc2136b329261860ef8661d20f5456a2d78e0", size = 30479546 }, - { url = "https://files.pythonhosted.org/packages/d5/28/3d44ddf56a5c95272b202ce8aa0e9b818a1310e83525c4c29176b538ae7c/polars-1.12.0-cp39-abi3-win_amd64.whl", hash = "sha256:a228a4b320a36d03a9ec9dfe7241b6d80a2f119b2dceb1da953166655e4cf43c", size = 33790337 }, + { url = "https://files.pythonhosted.org/packages/5b/24/a7d97fb8988a3ccf9e285311fe9b04e8cec95657fc2b9f9a8ebedbcdd06f/polars-1.17.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d3a2172f7cf332010f0b034345111e9c86d59b5a5b0fc5aa0509121f40d9e43c", size = 32993574 }, + { url = "https://files.pythonhosted.org/packages/84/4f/b892993474850e85ac05ffa6d0f312c207dcbb1e4a55dc6383f826d5a87d/polars-1.17.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:82e98c69197df0d8ddc341a6175008508ceaea88f723f32044027810bcdb43fa", size = 28773084 }, + { url = "https://files.pythonhosted.org/packages/29/08/54fe197c9d5f951cf85944ff9cfe0a706dc9d2230e98814a125eda8a1d09/polars-1.17.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59abdab015ed2ecfa0c63862b960816c35096e1f4df057dde3c44cd973af5029", size = 36360758 }, + { url = "https://files.pythonhosted.org/packages/9b/0c/f5a100da6184f11838520a423a5830dabe194a0812c9fdbef419f2276a92/polars-1.17.1-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:6d2f922c403b8900b3ae3c23a27b2cae3a2db40ad790cc4fc368402b92629b11", size = 32685903 }, + { url = "https://files.pythonhosted.org/packages/4b/59/cf2e88bebdffb7efb7e4f65f4ec9e293040c313d37e3628db87e4f64dca4/polars-1.17.1-cp39-abi3-win_amd64.whl", hash = "sha256:d38156c8259554cbcb17874d91e6dfa9c404335f08a3307496aadfdee46baa31", size = 35931768 }, ] [[package]] @@ -3639,11 +3731,11 @@ wheels = [ [[package]] name = "prometheus-client" -version = "0.21.0" +version = "0.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/54/a369868ed7a7f1ea5163030f4fc07d85d22d7a1d270560dab675188fb612/prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e", size = 78634 } +sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551 } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/2d/46ed6436849c2c88228c3111865f44311cff784b4aabcdef4ea2545dbc3d/prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166", size = 54686 }, + { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682 }, ] [[package]] @@ -3660,75 +3752,75 @@ wheels = [ [[package]] name = "propcache" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/4d/5e5a60b78dbc1d464f8a7bbaeb30957257afdc8512cbb9dfd5659304f5cd/propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70", size = 40951 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/08/1963dfb932b8d74d5b09098507b37e9b96c835ba89ab8aad35aa330f4ff3/propcache-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58", size = 80712 }, - { url = "https://files.pythonhosted.org/packages/e6/59/49072aba9bf8a8ed958e576182d46f038e595b17ff7408bc7e8807e721e1/propcache-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b", size = 46301 }, - { url = "https://files.pythonhosted.org/packages/33/a2/6b1978c2e0d80a678e2c483f45e5443c15fe5d32c483902e92a073314ef1/propcache-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:33ac8f098df0585c0b53009f039dfd913b38c1d2edafed0cedcc0c32a05aa110", size = 45581 }, - { url = "https://files.pythonhosted.org/packages/43/95/55acc9adff8f997c7572f23d41993042290dfb29e404cdadb07039a4386f/propcache-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e48e8875e6c13909c800fa344cd54cc4b2b0db1d5f911f840458a500fde2c2", size = 208659 }, - { url = "https://files.pythonhosted.org/packages/bd/2c/ef7371ff715e6cd19ea03fdd5637ecefbaa0752fee5b0f2fe8ea8407ee01/propcache-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388f3217649d6d59292b722d940d4d2e1e6a7003259eb835724092a1cca0203a", size = 222613 }, - { url = "https://files.pythonhosted.org/packages/5e/1c/fef251f79fd4971a413fa4b1ae369ee07727b4cc2c71e2d90dfcde664fbb/propcache-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f571aea50ba5623c308aa146eb650eebf7dbe0fd8c5d946e28343cb3b5aad577", size = 221067 }, - { url = "https://files.pythonhosted.org/packages/8d/e7/22e76ae6fc5a1708bdce92bdb49de5ebe89a173db87e4ef597d6bbe9145a/propcache-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dfafb44f7bb35c0c06eda6b2ab4bfd58f02729e7c4045e179f9a861b07c9850", size = 208920 }, - { url = "https://files.pythonhosted.org/packages/04/3e/f10aa562781bcd8a1e0b37683a23bef32bdbe501d9cc7e76969becaac30d/propcache-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3ebe9a75be7ab0b7da2464a77bb27febcb4fab46a34f9288f39d74833db7f61", size = 200050 }, - { url = "https://files.pythonhosted.org/packages/d0/98/8ac69f638358c5f2a0043809c917802f96f86026e86726b65006830f3dc6/propcache-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d2f0d0f976985f85dfb5f3d685697ef769faa6b71993b46b295cdbbd6be8cc37", size = 202346 }, - { url = "https://files.pythonhosted.org/packages/ee/78/4acfc5544a5075d8e660af4d4e468d60c418bba93203d1363848444511ad/propcache-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a3dc1a4b165283bd865e8f8cb5f0c64c05001e0718ed06250d8cac9bec115b48", size = 199750 }, - { url = "https://files.pythonhosted.org/packages/a2/8f/90ada38448ca2e9cf25adc2fe05d08358bda1b9446f54a606ea38f41798b/propcache-0.2.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e0f07b42d2a50c7dd2d8675d50f7343d998c64008f1da5fef888396b7f84630", size = 201279 }, - { url = "https://files.pythonhosted.org/packages/08/31/0e299f650f73903da851f50f576ef09bfffc8e1519e6a2f1e5ed2d19c591/propcache-0.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e63e3e1e0271f374ed489ff5ee73d4b6e7c60710e1f76af5f0e1a6117cd26394", size = 211035 }, - { url = "https://files.pythonhosted.org/packages/85/3e/e356cc6b09064bff1c06d0b2413593e7c925726f0139bc7acef8a21e87a8/propcache-0.2.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:56bb5c98f058a41bb58eead194b4db8c05b088c93d94d5161728515bd52b052b", size = 215565 }, - { url = "https://files.pythonhosted.org/packages/8b/54/4ef7236cd657e53098bd05aa59cbc3cbf7018fba37b40eaed112c3921e51/propcache-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7665f04d0c7f26ff8bb534e1c65068409bf4687aa2534faf7104d7182debb336", size = 207604 }, - { url = "https://files.pythonhosted.org/packages/1f/27/d01d7799c068443ee64002f0655d82fb067496897bf74b632e28ee6a32cf/propcache-0.2.0-cp310-cp310-win32.whl", hash = "sha256:7cf18abf9764746b9c8704774d8b06714bcb0a63641518a3a89c7f85cc02c2ad", size = 40526 }, - { url = "https://files.pythonhosted.org/packages/bb/44/6c2add5eeafb7f31ff0d25fbc005d930bea040a1364cf0f5768750ddf4d1/propcache-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:cfac69017ef97db2438efb854edf24f5a29fd09a536ff3a992b75990720cdc99", size = 44958 }, - { url = "https://files.pythonhosted.org/packages/e0/1c/71eec730e12aec6511e702ad0cd73c2872eccb7cad39de8ba3ba9de693ef/propcache-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354", size = 80811 }, - { url = "https://files.pythonhosted.org/packages/89/c3/7e94009f9a4934c48a371632197406a8860b9f08e3f7f7d922ab69e57a41/propcache-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de", size = 46365 }, - { url = "https://files.pythonhosted.org/packages/c0/1d/c700d16d1d6903aeab28372fe9999762f074b80b96a0ccc953175b858743/propcache-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87", size = 45602 }, - { url = "https://files.pythonhosted.org/packages/2e/5e/4a3e96380805bf742712e39a4534689f4cddf5fa2d3a93f22e9fd8001b23/propcache-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016", size = 236161 }, - { url = "https://files.pythonhosted.org/packages/a5/85/90132481183d1436dff6e29f4fa81b891afb6cb89a7306f32ac500a25932/propcache-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb", size = 244938 }, - { url = "https://files.pythonhosted.org/packages/4a/89/c893533cb45c79c970834274e2d0f6d64383ec740be631b6a0a1d2b4ddc0/propcache-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2", size = 243576 }, - { url = "https://files.pythonhosted.org/packages/8c/56/98c2054c8526331a05f205bf45cbb2cda4e58e56df70e76d6a509e5d6ec6/propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4", size = 236011 }, - { url = "https://files.pythonhosted.org/packages/2d/0c/8b8b9f8a6e1abd869c0fa79b907228e7abb966919047d294ef5df0d136cf/propcache-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504", size = 224834 }, - { url = "https://files.pythonhosted.org/packages/18/bb/397d05a7298b7711b90e13108db697732325cafdcd8484c894885c1bf109/propcache-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178", size = 224946 }, - { url = "https://files.pythonhosted.org/packages/25/19/4fc08dac19297ac58135c03770b42377be211622fd0147f015f78d47cd31/propcache-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d", size = 217280 }, - { url = "https://files.pythonhosted.org/packages/7e/76/c79276a43df2096ce2aba07ce47576832b1174c0c480fe6b04bd70120e59/propcache-0.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2", size = 220088 }, - { url = "https://files.pythonhosted.org/packages/c3/9a/8a8cf428a91b1336b883f09c8b884e1734c87f724d74b917129a24fe2093/propcache-0.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db", size = 233008 }, - { url = "https://files.pythonhosted.org/packages/25/7b/768a8969abd447d5f0f3333df85c6a5d94982a1bc9a89c53c154bf7a8b11/propcache-0.2.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b", size = 237719 }, - { url = "https://files.pythonhosted.org/packages/ed/0d/e5d68ccc7976ef8b57d80613ac07bbaf0614d43f4750cf953f0168ef114f/propcache-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b", size = 227729 }, - { url = "https://files.pythonhosted.org/packages/05/64/17eb2796e2d1c3d0c431dc5f40078d7282f4645af0bb4da9097fbb628c6c/propcache-0.2.0-cp311-cp311-win32.whl", hash = "sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1", size = 40473 }, - { url = "https://files.pythonhosted.org/packages/83/c5/e89fc428ccdc897ade08cd7605f174c69390147526627a7650fb883e0cd0/propcache-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71", size = 44921 }, - { url = "https://files.pythonhosted.org/packages/7c/46/a41ca1097769fc548fc9216ec4c1471b772cc39720eb47ed7e38ef0006a9/propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2", size = 80800 }, - { url = "https://files.pythonhosted.org/packages/75/4f/93df46aab9cc473498ff56be39b5f6ee1e33529223d7a4d8c0a6101a9ba2/propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7", size = 46443 }, - { url = "https://files.pythonhosted.org/packages/0b/17/308acc6aee65d0f9a8375e36c4807ac6605d1f38074b1581bd4042b9fb37/propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8", size = 45676 }, - { url = "https://files.pythonhosted.org/packages/65/44/626599d2854d6c1d4530b9a05e7ff2ee22b790358334b475ed7c89f7d625/propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793", size = 246191 }, - { url = "https://files.pythonhosted.org/packages/f2/df/5d996d7cb18df076debae7d76ac3da085c0575a9f2be6b1f707fe227b54c/propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09", size = 251791 }, - { url = "https://files.pythonhosted.org/packages/2e/6d/9f91e5dde8b1f662f6dd4dff36098ed22a1ef4e08e1316f05f4758f1576c/propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89", size = 253434 }, - { url = "https://files.pythonhosted.org/packages/3c/e9/1b54b7e26f50b3e0497cd13d3483d781d284452c2c50dd2a615a92a087a3/propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e", size = 248150 }, - { url = "https://files.pythonhosted.org/packages/a7/ef/a35bf191c8038fe3ce9a414b907371c81d102384eda5dbafe6f4dce0cf9b/propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9", size = 233568 }, - { url = "https://files.pythonhosted.org/packages/97/d9/d00bb9277a9165a5e6d60f2142cd1a38a750045c9c12e47ae087f686d781/propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4", size = 229874 }, - { url = "https://files.pythonhosted.org/packages/8e/78/c123cf22469bdc4b18efb78893e69c70a8b16de88e6160b69ca6bdd88b5d/propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c", size = 225857 }, - { url = "https://files.pythonhosted.org/packages/31/1b/fd6b2f1f36d028820d35475be78859d8c89c8f091ad30e377ac49fd66359/propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887", size = 227604 }, - { url = "https://files.pythonhosted.org/packages/99/36/b07be976edf77a07233ba712e53262937625af02154353171716894a86a6/propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57", size = 238430 }, - { url = "https://files.pythonhosted.org/packages/0d/64/5822f496c9010e3966e934a011ac08cac8734561842bc7c1f65586e0683c/propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23", size = 244814 }, - { url = "https://files.pythonhosted.org/packages/fd/bd/8657918a35d50b18a9e4d78a5df7b6c82a637a311ab20851eef4326305c1/propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348", size = 235922 }, - { url = "https://files.pythonhosted.org/packages/a8/6f/ec0095e1647b4727db945213a9f395b1103c442ef65e54c62e92a72a3f75/propcache-0.2.0-cp312-cp312-win32.whl", hash = "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5", size = 40177 }, - { url = "https://files.pythonhosted.org/packages/20/a2/bd0896fdc4f4c1db46d9bc361c8c79a9bf08ccc08ba054a98e38e7ba1557/propcache-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3", size = 44446 }, - { url = "https://files.pythonhosted.org/packages/a8/a7/5f37b69197d4f558bfef5b4bceaff7c43cc9b51adf5bd75e9081d7ea80e4/propcache-0.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7", size = 78120 }, - { url = "https://files.pythonhosted.org/packages/c8/cd/48ab2b30a6b353ecb95a244915f85756d74f815862eb2ecc7a518d565b48/propcache-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763", size = 45127 }, - { url = "https://files.pythonhosted.org/packages/a5/ba/0a1ef94a3412aab057bd996ed5f0ac7458be5bf469e85c70fa9ceb43290b/propcache-0.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d", size = 44419 }, - { url = "https://files.pythonhosted.org/packages/b4/6c/ca70bee4f22fa99eacd04f4d2f1699be9d13538ccf22b3169a61c60a27fa/propcache-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a", size = 229611 }, - { url = "https://files.pythonhosted.org/packages/19/70/47b872a263e8511ca33718d96a10c17d3c853aefadeb86dc26e8421184b9/propcache-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b", size = 234005 }, - { url = "https://files.pythonhosted.org/packages/4f/be/3b0ab8c84a22e4a3224719099c1229ddfdd8a6a1558cf75cb55ee1e35c25/propcache-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb", size = 237270 }, - { url = "https://files.pythonhosted.org/packages/04/d8/f071bb000d4b8f851d312c3c75701e586b3f643fe14a2e3409b1b9ab3936/propcache-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf", size = 231877 }, - { url = "https://files.pythonhosted.org/packages/93/e7/57a035a1359e542bbb0a7df95aad6b9871ebee6dce2840cb157a415bd1f3/propcache-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2", size = 217848 }, - { url = "https://files.pythonhosted.org/packages/f0/93/d1dea40f112ec183398fb6c42fde340edd7bab202411c4aa1a8289f461b6/propcache-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f", size = 216987 }, - { url = "https://files.pythonhosted.org/packages/62/4c/877340871251145d3522c2b5d25c16a1690ad655fbab7bb9ece6b117e39f/propcache-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136", size = 212451 }, - { url = "https://files.pythonhosted.org/packages/7c/bb/a91b72efeeb42906ef58ccf0cdb87947b54d7475fee3c93425d732f16a61/propcache-0.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325", size = 212879 }, - { url = "https://files.pythonhosted.org/packages/9b/7f/ee7fea8faac57b3ec5d91ff47470c6c5d40d7f15d0b1fccac806348fa59e/propcache-0.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44", size = 222288 }, - { url = "https://files.pythonhosted.org/packages/ff/d7/acd67901c43d2e6b20a7a973d9d5fd543c6e277af29b1eb0e1f7bd7ca7d2/propcache-0.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83", size = 228257 }, - { url = "https://files.pythonhosted.org/packages/8d/6f/6272ecc7a8daad1d0754cfc6c8846076a8cb13f810005c79b15ce0ef0cf2/propcache-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544", size = 221075 }, - { url = "https://files.pythonhosted.org/packages/7c/bd/c7a6a719a6b3dd8b3aeadb3675b5783983529e4a3185946aa444d3e078f6/propcache-0.2.0-cp313-cp313-win32.whl", hash = "sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032", size = 39654 }, - { url = "https://files.pythonhosted.org/packages/88/e7/0eef39eff84fa3e001b44de0bd41c7c0e3432e7648ffd3d64955910f002d/propcache-0.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e", size = 43705 }, - { url = "https://files.pythonhosted.org/packages/3d/b6/e6d98278f2d49b22b4d033c9f792eda783b9ab2094b041f013fc69bcde87/propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036", size = 11603 }, +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a5/0ea64c9426959ef145a938e38c832fc551843481d356713ececa9a8a64e8/propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6", size = 79296 }, + { url = "https://files.pythonhosted.org/packages/76/5a/916db1aba735f55e5eca4733eea4d1973845cf77dfe67c2381a2ca3ce52d/propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2", size = 45622 }, + { url = "https://files.pythonhosted.org/packages/2d/62/685d3cf268b8401ec12b250b925b21d152b9d193b7bffa5fdc4815c392c2/propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea", size = 45133 }, + { url = "https://files.pythonhosted.org/packages/4d/3d/31c9c29ee7192defc05aa4d01624fd85a41cf98e5922aaed206017329944/propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212", size = 204809 }, + { url = "https://files.pythonhosted.org/packages/10/a1/e4050776f4797fc86140ac9a480d5dc069fbfa9d499fe5c5d2fa1ae71f07/propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3", size = 219109 }, + { url = "https://files.pythonhosted.org/packages/c9/c0/e7ae0df76343d5e107d81e59acc085cea5fd36a48aa53ef09add7503e888/propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d", size = 217368 }, + { url = "https://files.pythonhosted.org/packages/fc/e1/e0a2ed6394b5772508868a977d3238f4afb2eebaf9976f0b44a8d347ad63/propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634", size = 205124 }, + { url = "https://files.pythonhosted.org/packages/50/c1/e388c232d15ca10f233c778bbdc1034ba53ede14c207a72008de45b2db2e/propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2", size = 195463 }, + { url = "https://files.pythonhosted.org/packages/0a/fd/71b349b9def426cc73813dbd0f33e266de77305e337c8c12bfb0a2a82bfb/propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958", size = 198358 }, + { url = "https://files.pythonhosted.org/packages/02/f2/d7c497cd148ebfc5b0ae32808e6c1af5922215fe38c7a06e4e722fe937c8/propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c", size = 195560 }, + { url = "https://files.pythonhosted.org/packages/bb/57/f37041bbe5e0dfed80a3f6be2612a3a75b9cfe2652abf2c99bef3455bbad/propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583", size = 196895 }, + { url = "https://files.pythonhosted.org/packages/83/36/ae3cc3e4f310bff2f064e3d2ed5558935cc7778d6f827dce74dcfa125304/propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf", size = 207124 }, + { url = "https://files.pythonhosted.org/packages/8c/c4/811b9f311f10ce9d31a32ff14ce58500458443627e4df4ae9c264defba7f/propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034", size = 210442 }, + { url = "https://files.pythonhosted.org/packages/18/dd/a1670d483a61ecac0d7fc4305d91caaac7a8fc1b200ea3965a01cf03bced/propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b", size = 203219 }, + { url = "https://files.pythonhosted.org/packages/f9/2d/30ced5afde41b099b2dc0c6573b66b45d16d73090e85655f1a30c5a24e07/propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4", size = 40313 }, + { url = "https://files.pythonhosted.org/packages/23/84/bd9b207ac80da237af77aa6e153b08ffa83264b1c7882495984fcbfcf85c/propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba", size = 44428 }, + { url = "https://files.pythonhosted.org/packages/bc/0f/2913b6791ebefb2b25b4efd4bb2299c985e09786b9f5b19184a88e5778dd/propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16", size = 79297 }, + { url = "https://files.pythonhosted.org/packages/cf/73/af2053aeccd40b05d6e19058419ac77674daecdd32478088b79375b9ab54/propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717", size = 45611 }, + { url = "https://files.pythonhosted.org/packages/3c/09/8386115ba7775ea3b9537730e8cf718d83bbf95bffe30757ccf37ec4e5da/propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3", size = 45146 }, + { url = "https://files.pythonhosted.org/packages/03/7a/793aa12f0537b2e520bf09f4c6833706b63170a211ad042ca71cbf79d9cb/propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9", size = 232136 }, + { url = "https://files.pythonhosted.org/packages/f1/38/b921b3168d72111769f648314100558c2ea1d52eb3d1ba7ea5c4aa6f9848/propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787", size = 239706 }, + { url = "https://files.pythonhosted.org/packages/14/29/4636f500c69b5edea7786db3c34eb6166f3384b905665ce312a6e42c720c/propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465", size = 238531 }, + { url = "https://files.pythonhosted.org/packages/85/14/01fe53580a8e1734ebb704a3482b7829a0ef4ea68d356141cf0994d9659b/propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af", size = 231063 }, + { url = "https://files.pythonhosted.org/packages/33/5c/1d961299f3c3b8438301ccfbff0143b69afcc30c05fa28673cface692305/propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7", size = 220134 }, + { url = "https://files.pythonhosted.org/packages/00/d0/ed735e76db279ba67a7d3b45ba4c654e7b02bc2f8050671ec365d8665e21/propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f", size = 220009 }, + { url = "https://files.pythonhosted.org/packages/75/90/ee8fab7304ad6533872fee982cfff5a53b63d095d78140827d93de22e2d4/propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54", size = 212199 }, + { url = "https://files.pythonhosted.org/packages/eb/ec/977ffaf1664f82e90737275873461695d4c9407d52abc2f3c3e24716da13/propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505", size = 214827 }, + { url = "https://files.pythonhosted.org/packages/57/48/031fb87ab6081764054821a71b71942161619549396224cbb242922525e8/propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82", size = 228009 }, + { url = "https://files.pythonhosted.org/packages/1a/06/ef1390f2524850838f2390421b23a8b298f6ce3396a7cc6d39dedd4047b0/propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca", size = 231638 }, + { url = "https://files.pythonhosted.org/packages/38/2a/101e6386d5a93358395da1d41642b79c1ee0f3b12e31727932b069282b1d/propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e", size = 222788 }, + { url = "https://files.pythonhosted.org/packages/db/81/786f687951d0979007e05ad9346cd357e50e3d0b0f1a1d6074df334b1bbb/propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034", size = 40170 }, + { url = "https://files.pythonhosted.org/packages/cf/59/7cc7037b295d5772eceb426358bb1b86e6cab4616d971bd74275395d100d/propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3", size = 44404 }, + { url = "https://files.pythonhosted.org/packages/4c/28/1d205fe49be8b1b4df4c50024e62480a442b1a7b818e734308bb0d17e7fb/propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a", size = 79588 }, + { url = "https://files.pythonhosted.org/packages/21/ee/fc4d893f8d81cd4971affef2a6cb542b36617cd1d8ce56b406112cb80bf7/propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0", size = 45825 }, + { url = "https://files.pythonhosted.org/packages/4a/de/bbe712f94d088da1d237c35d735f675e494a816fd6f54e9db2f61ef4d03f/propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d", size = 45357 }, + { url = "https://files.pythonhosted.org/packages/7f/14/7ae06a6cf2a2f1cb382586d5a99efe66b0b3d0c6f9ac2f759e6f7af9d7cf/propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4", size = 241869 }, + { url = "https://files.pythonhosted.org/packages/cc/59/227a78be960b54a41124e639e2c39e8807ac0c751c735a900e21315f8c2b/propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d", size = 247884 }, + { url = "https://files.pythonhosted.org/packages/84/58/f62b4ffaedf88dc1b17f04d57d8536601e4e030feb26617228ef930c3279/propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5", size = 248486 }, + { url = "https://files.pythonhosted.org/packages/1c/07/ebe102777a830bca91bbb93e3479cd34c2ca5d0361b83be9dbd93104865e/propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24", size = 243649 }, + { url = "https://files.pythonhosted.org/packages/ed/bc/4f7aba7f08f520376c4bb6a20b9a981a581b7f2e385fa0ec9f789bb2d362/propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff", size = 229103 }, + { url = "https://files.pythonhosted.org/packages/fe/d5/04ac9cd4e51a57a96f78795e03c5a0ddb8f23ec098b86f92de028d7f2a6b/propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f", size = 226607 }, + { url = "https://files.pythonhosted.org/packages/e3/f0/24060d959ea41d7a7cc7fdbf68b31852331aabda914a0c63bdb0e22e96d6/propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec", size = 221153 }, + { url = "https://files.pythonhosted.org/packages/77/a7/3ac76045a077b3e4de4859a0753010765e45749bdf53bd02bc4d372da1a0/propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348", size = 222151 }, + { url = "https://files.pythonhosted.org/packages/e7/af/5e29da6f80cebab3f5a4dcd2a3240e7f56f2c4abf51cbfcc99be34e17f0b/propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6", size = 233812 }, + { url = "https://files.pythonhosted.org/packages/8c/89/ebe3ad52642cc5509eaa453e9f4b94b374d81bae3265c59d5c2d98efa1b4/propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6", size = 238829 }, + { url = "https://files.pythonhosted.org/packages/e9/2f/6b32f273fa02e978b7577159eae7471b3cfb88b48563b1c2578b2d7ca0bb/propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518", size = 230704 }, + { url = "https://files.pythonhosted.org/packages/5c/2e/f40ae6ff5624a5f77edd7b8359b208b5455ea113f68309e2b00a2e1426b6/propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246", size = 40050 }, + { url = "https://files.pythonhosted.org/packages/3b/77/a92c3ef994e47180862b9d7d11e37624fb1c00a16d61faf55115d970628b/propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1", size = 44117 }, + { url = "https://files.pythonhosted.org/packages/0f/2a/329e0547cf2def8857157f9477669043e75524cc3e6251cef332b3ff256f/propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc", size = 77002 }, + { url = "https://files.pythonhosted.org/packages/12/2d/c4df5415e2382f840dc2ecbca0eeb2293024bc28e57a80392f2012b4708c/propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9", size = 44639 }, + { url = "https://files.pythonhosted.org/packages/d0/5a/21aaa4ea2f326edaa4e240959ac8b8386ea31dedfdaa636a3544d9e7a408/propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439", size = 44049 }, + { url = "https://files.pythonhosted.org/packages/4e/3e/021b6cd86c0acc90d74784ccbb66808b0bd36067a1bf3e2deb0f3845f618/propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536", size = 224819 }, + { url = "https://files.pythonhosted.org/packages/3c/57/c2fdeed1b3b8918b1770a133ba5c43ad3d78e18285b0c06364861ef5cc38/propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629", size = 229625 }, + { url = "https://files.pythonhosted.org/packages/9d/81/70d4ff57bf2877b5780b466471bebf5892f851a7e2ca0ae7ffd728220281/propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b", size = 232934 }, + { url = "https://files.pythonhosted.org/packages/3c/b9/bb51ea95d73b3fb4100cb95adbd4e1acaf2cbb1fd1083f5468eeb4a099a8/propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052", size = 227361 }, + { url = "https://files.pythonhosted.org/packages/f1/20/3c6d696cd6fd70b29445960cc803b1851a1131e7a2e4ee261ee48e002bcd/propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce", size = 213904 }, + { url = "https://files.pythonhosted.org/packages/a1/cb/1593bfc5ac6d40c010fa823f128056d6bc25b667f5393781e37d62f12005/propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d", size = 212632 }, + { url = "https://files.pythonhosted.org/packages/6d/5c/e95617e222be14a34c709442a0ec179f3207f8a2b900273720501a70ec5e/propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce", size = 207897 }, + { url = "https://files.pythonhosted.org/packages/8e/3b/56c5ab3dc00f6375fbcdeefdede5adf9bee94f1fab04adc8db118f0f9e25/propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95", size = 208118 }, + { url = "https://files.pythonhosted.org/packages/86/25/d7ef738323fbc6ebcbce33eb2a19c5e07a89a3df2fded206065bd5e868a9/propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf", size = 217851 }, + { url = "https://files.pythonhosted.org/packages/b3/77/763e6cef1852cf1ba740590364ec50309b89d1c818e3256d3929eb92fabf/propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f", size = 222630 }, + { url = "https://files.pythonhosted.org/packages/4f/e9/0f86be33602089c701696fbed8d8c4c07b6ee9605c5b7536fd27ed540c5b/propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30", size = 216269 }, + { url = "https://files.pythonhosted.org/packages/cc/02/5ac83217d522394b6a2e81a2e888167e7ca629ef6569a3f09852d6dcb01a/propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6", size = 39472 }, + { url = "https://files.pythonhosted.org/packages/f4/33/d6f5420252a36034bc8a3a01171bc55b4bff5df50d1c63d9caa50693662f/propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1", size = 43363 }, + { url = "https://files.pythonhosted.org/packages/41/b6/c5319caea262f4821995dca2107483b94a3345d4607ad797c76cb9c36bcc/propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54", size = 11818 }, ] [[package]] @@ -3745,31 +3837,31 @@ wheels = [ [[package]] name = "protobuf" -version = "5.28.3" +version = "5.29.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/74/6e/e69eb906fddcb38f8530a12f4b410699972ab7ced4e21524ece9d546ac27/protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b", size = 422479 } +sdist = { url = "https://files.pythonhosted.org/packages/a5/73/4e6295c1420a9d20c9c351db3a36109b4c9aa601916cb7c6871e3196a1ca/protobuf-5.29.2.tar.gz", hash = "sha256:b2cc8e8bb7c9326996f0e160137b0861f1a82162502658df2951209d0cb0309e", size = 424901 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/c5/05163fad52d7c43e124a545f1372d18266db36036377ad29de4271134a6a/protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24", size = 419624 }, - { url = "https://files.pythonhosted.org/packages/9c/4c/4563ebe001ff30dca9d7ed12e471fa098d9759712980cde1fd03a3a44fb7/protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868", size = 431464 }, - { url = "https://files.pythonhosted.org/packages/1c/f2/baf397f3dd1d3e4af7e3f5a0382b868d25ac068eefe1ebde05132333436c/protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687", size = 414743 }, - { url = "https://files.pythonhosted.org/packages/85/50/cd61a358ba1601f40e7d38bcfba22e053f40ef2c50d55b55926aecc8fec7/protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584", size = 316511 }, - { url = "https://files.pythonhosted.org/packages/5d/ae/3257b09328c0b4e59535e497b0c7537d4954038bdd53a2f0d2f49d15a7c4/protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135", size = 316624 }, - { url = "https://files.pythonhosted.org/packages/ad/c3/2377c159e28ea89a91cf1ca223f827ae8deccb2c9c401e5ca233cd73002f/protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed", size = 169511 }, + { url = "https://files.pythonhosted.org/packages/f3/42/6db5387124708d619ffb990a846fb123bee546f52868039f8fa964c5bc54/protobuf-5.29.2-cp310-abi3-win32.whl", hash = "sha256:c12ba8249f5624300cf51c3d0bfe5be71a60c63e4dcf51ffe9a68771d958c851", size = 422697 }, + { url = "https://files.pythonhosted.org/packages/6c/38/2fcc968b377b531882d6ab2ac99b10ca6d00108394f6ff57c2395fb7baff/protobuf-5.29.2-cp310-abi3-win_amd64.whl", hash = "sha256:842de6d9241134a973aab719ab42b008a18a90f9f07f06ba480df268f86432f9", size = 434495 }, + { url = "https://files.pythonhosted.org/packages/cb/26/41debe0f6615fcb7e97672057524687ed86fcd85e3da3f031c30af8f0c51/protobuf-5.29.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a0c53d78383c851bfa97eb42e3703aefdc96d2036a41482ffd55dc5f529466eb", size = 417812 }, + { url = "https://files.pythonhosted.org/packages/e4/20/38fc33b60dcfb380507b99494aebe8c34b68b8ac7d32808c4cebda3f6f6b/protobuf-5.29.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:494229ecd8c9009dd71eda5fd57528395d1eacdf307dbece6c12ad0dd09e912e", size = 319562 }, + { url = "https://files.pythonhosted.org/packages/90/4d/c3d61e698e0e41d926dbff6aa4e57428ab1a6fc3b5e1deaa6c9ec0fd45cf/protobuf-5.29.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b6b0d416bbbb9d4fbf9d0561dbfc4e324fd522f61f7af0fe0f282ab67b22477e", size = 319662 }, + { url = "https://files.pythonhosted.org/packages/f3/fd/c7924b4c2a1c61b8f4b64edd7a31ffacf63432135a2606f03a2f0d75a750/protobuf-5.29.2-py3-none-any.whl", hash = "sha256:fde4554c0e578a5a0bcc9a276339594848d1e89f9ea47b4427c80e5d72f90181", size = 172539 }, ] [[package]] name = "psutil" -version = "6.1.0" +version = "6.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/10/2a30b13c61e7cf937f4adf90710776b7918ed0a9c434e2c38224732af310/psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a", size = 508565 } +sdist = { url = "https://files.pythonhosted.org/packages/1f/5a/07871137bb752428aa4b659f910b399ba6f291156bdea939be3e96cae7cb/psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5", size = 508502 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/9e/8be43078a171381953cfee33c07c0d628594b5dbfc5157847b85022c2c1b/psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688", size = 247762 }, - { url = "https://files.pythonhosted.org/packages/1d/cb/313e80644ea407f04f6602a9e23096540d9dc1878755f3952ea8d3d104be/psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e", size = 248777 }, - { url = "https://files.pythonhosted.org/packages/65/8e/bcbe2025c587b5d703369b6a75b65d41d1367553da6e3f788aff91eaf5bd/psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38", size = 284259 }, - { url = "https://files.pythonhosted.org/packages/58/4d/8245e6f76a93c98aab285a43ea71ff1b171bcd90c9d238bf81f7021fb233/psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b", size = 287255 }, - { url = "https://files.pythonhosted.org/packages/27/c2/d034856ac47e3b3cdfa9720d0e113902e615f4190d5d1bdb8df4b2015fb2/psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a", size = 288804 }, - { url = "https://files.pythonhosted.org/packages/ea/55/5389ed243c878725feffc0d6a3bc5ef6764312b6fc7c081faaa2cfa7ef37/psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e", size = 250386 }, - { url = "https://files.pythonhosted.org/packages/11/91/87fa6f060e649b1e1a7b19a4f5869709fbf750b7c8c262ee776ec32f3028/psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be", size = 254228 }, + { url = "https://files.pythonhosted.org/packages/61/99/ca79d302be46f7bdd8321089762dd4476ee725fce16fc2b2e1dbba8cac17/psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8", size = 247511 }, + { url = "https://files.pythonhosted.org/packages/0b/6b/73dbde0dd38f3782905d4587049b9be64d76671042fdcaf60e2430c6796d/psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377", size = 248985 }, + { url = "https://files.pythonhosted.org/packages/17/38/c319d31a1d3f88c5b79c68b3116c129e5133f1822157dd6da34043e32ed6/psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003", size = 284488 }, + { url = "https://files.pythonhosted.org/packages/9c/39/0f88a830a1c8a3aba27fededc642da37613c57cbff143412e3536f89784f/psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160", size = 287477 }, + { url = "https://files.pythonhosted.org/packages/47/da/99f4345d4ddf2845cb5b5bd0d93d554e84542d116934fde07a0c50bd4e9f/psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3", size = 289017 }, + { url = "https://files.pythonhosted.org/packages/38/53/bd755c2896f4461fd4f36fa6a6dcb66a88a9e4b9fd4e5b66a77cf9d4a584/psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53", size = 250602 }, + { url = "https://files.pythonhosted.org/packages/7b/d7/7831438e6c3ebbfa6e01a927127a6cb42ad3ab844247f3c5b96bea25d73d/psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649", size = 254444 }, ] [[package]] @@ -3851,44 +3943,44 @@ wheels = [ [[package]] name = "pyarrow" -version = "18.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/41/6bfd027410ba2cc35da4682394fdc4285dc345b1d99f7bd55e96255d0c7d/pyarrow-18.0.0.tar.gz", hash = "sha256:a6aa027b1a9d2970cf328ccd6dbe4a996bc13c39fd427f502782f5bdb9ca20f5", size = 1118457 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/de/f11a218ecc75e7af307058cb68cecff52b261d00cb59abf3ecdb51863cf1/pyarrow-18.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2333f93260674e185cfbf208d2da3007132572e56871f451ba1a556b45dae6e2", size = 29508785 }, - { url = "https://files.pythonhosted.org/packages/d1/c9/de5d8997aa1c140043006beefe527ed377c8820192f14866f31f3659ffcb/pyarrow-18.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:4c381857754da44326f3a49b8b199f7f87a51c2faacd5114352fc78de30d3aba", size = 30813634 }, - { url = "https://files.pythonhosted.org/packages/b8/07/d1c7e83ab5be551ecd6acafa9dfbabd486038d351ef99c25fa9e7736f582/pyarrow-18.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:603cd8ad4976568954598ef0a6d4ed3dfb78aff3d57fa8d6271f470f0ce7d34f", size = 39179444 }, - { url = "https://files.pythonhosted.org/packages/ad/ed/c601fb60c4360fcc49a40b8db5c600c17670a26e3a803d8c9ab01c7023c8/pyarrow-18.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58a62549a3e0bc9e03df32f350e10e1efb94ec6cf63e3920c3385b26663948ce", size = 40092678 }, - { url = "https://files.pythonhosted.org/packages/e8/8b/f9fee7f9a69896ad888e2545a1b75bae205acdcc9feb18671f5c48880820/pyarrow-18.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bc97316840a349485fbb137eb8d0f4d7057e1b2c1272b1a20eebbbe1848f5122", size = 38590888 }, - { url = "https://files.pythonhosted.org/packages/90/d2/ea2413fcf338634530b71c617d45c87b004149575d142d906c0f92b618e0/pyarrow-18.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2e549a748fa8b8715e734919923f69318c953e077e9c02140ada13e59d043310", size = 40025239 }, - { url = "https://files.pythonhosted.org/packages/d9/0b/7ef63050a163ea2cb14ca0506bae8a2f6aab6760857cb4a99a4a8a55de09/pyarrow-18.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:606e9a3dcb0f52307c5040698ea962685fb1c852d72379ee9412be7de9c5f9e2", size = 25102382 }, - { url = "https://files.pythonhosted.org/packages/d6/63/a4854246fb3d1387e176e2989d919b8186ce3806ca244fbed27217608708/pyarrow-18.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d5795e37c0a33baa618c5e054cd61f586cf76850a251e2b21355e4085def6280", size = 29532160 }, - { url = "https://files.pythonhosted.org/packages/53/dc/9a6672fb35d36323f4548b08064fb264353024538f60adaedf0c6df6b31d/pyarrow-18.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:5f0510608ccd6e7f02ca8596962afb8c6cc84c453e7be0da4d85f5f4f7b0328a", size = 30844030 }, - { url = "https://files.pythonhosted.org/packages/8e/f9/cfcee70dcb48bc0fee6265a5d2502ea85ccdab54957fd2dd5b327dfc8807/pyarrow-18.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616ea2826c03c16e87f517c46296621a7c51e30400f6d0a61be645f203aa2b93", size = 39177238 }, - { url = "https://files.pythonhosted.org/packages/17/de/cd37c379dc1aa379956b15d9c89ff920cf48c239f64fbed0ca97dffa3acc/pyarrow-18.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1824f5b029ddd289919f354bc285992cb4e32da518758c136271cf66046ef22", size = 40089208 }, - { url = "https://files.pythonhosted.org/packages/dd/80/83453dcceaa49d7aa42b0b6aaa7a0797231b9aee1cc213f286e0be3bdf89/pyarrow-18.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6dd1b52d0d58dd8f685ced9971eb49f697d753aa7912f0a8f50833c7a7426319", size = 38606715 }, - { url = "https://files.pythonhosted.org/packages/18/f4/5687ead1672920b5ed8840398551cc3a96a1389be68b68d18aca3944e525/pyarrow-18.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:320ae9bd45ad7ecc12ec858b3e8e462578de060832b98fc4d671dee9f10d9954", size = 40040879 }, - { url = "https://files.pythonhosted.org/packages/49/11/ea314ad45f45d3245f0768dba711fd3d5deb25a9e08af298d0924ab94aee/pyarrow-18.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:2c992716cffb1088414f2b478f7af0175fd0a76fea80841b1706baa8fb0ebaad", size = 25105360 }, - { url = "https://files.pythonhosted.org/packages/e4/ea/a7f77688e6c529723b37589af4db3e7179414e223878301907c5bd49d6bc/pyarrow-18.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:e7ab04f272f98ebffd2a0661e4e126036f6936391ba2889ed2d44c5006237802", size = 29493113 }, - { url = "https://files.pythonhosted.org/packages/79/8a/a3af902af623a1cf4f9d4d27d81e634caf1585a819b7530728a8147e391c/pyarrow-18.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:03f40b65a43be159d2f97fd64dc998f769d0995a50c00f07aab58b0b3da87e1f", size = 30833386 }, - { url = "https://files.pythonhosted.org/packages/46/1e/f38b22e12e2ce9ee7c9d805ce234f68b23a0568b9a6bea223e3a99ca0068/pyarrow-18.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be08af84808dff63a76860847c48ec0416928a7b3a17c2f49a072cac7c45efbd", size = 39170798 }, - { url = "https://files.pythonhosted.org/packages/f8/fb/fd0ef3e0f03227ab183f8dc941f4ef59636d8c382e246954601dd29cf1b0/pyarrow-18.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70c1965cde991b711a98448ccda3486f2a336457cf4ec4dca257a926e149c9", size = 40103326 }, - { url = "https://files.pythonhosted.org/packages/7c/bd/5de139adba486db5ccc1b7ecab51e328a9dce354c82c6d26c2f642b178d3/pyarrow-18.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:00178509f379415a3fcf855af020e3340254f990a8534294ec3cf674d6e255fd", size = 38583592 }, - { url = "https://files.pythonhosted.org/packages/8d/1f/9bb3b3a644892d631dbbe99053cdb5295092d2696b4bcd3d21f29624c689/pyarrow-18.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:a71ab0589a63a3e987beb2bc172e05f000a5c5be2636b4b263c44034e215b5d7", size = 40043128 }, - { url = "https://files.pythonhosted.org/packages/74/39/323621402c2b1ce7ba600d03c81cf9645b862350d7c495f3fcef37850d1d/pyarrow-18.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe92efcdbfa0bcf2fa602e466d7f2905500f33f09eb90bf0bcf2e6ca41b574c8", size = 25075300 }, - { url = "https://files.pythonhosted.org/packages/13/38/4a8f8e97301adbb51c0bae7e0bc39e6878609c9337543bbbd2e9b1b3046e/pyarrow-18.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:907ee0aa8ca576f5e0cdc20b5aeb2ad4d3953a3b4769fc4b499e00ef0266f02f", size = 29475921 }, - { url = "https://files.pythonhosted.org/packages/11/75/43aad9b0678dfcdf5cc4d632f0ead92abe5666ce5b5cc985abab75e0d410/pyarrow-18.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:66dcc216ebae2eb4c37b223feaf82f15b69d502821dde2da138ec5a3716e7463", size = 30811777 }, - { url = "https://files.pythonhosted.org/packages/1e/b7/477bcba6ff7e65d8045d0b6c04b36f12051385f533189617a652f551e742/pyarrow-18.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc1daf7c425f58527900876354390ee41b0ae962a73ad0959b9d829def583bb1", size = 39163582 }, - { url = "https://files.pythonhosted.org/packages/c8/a7/37be6828370a98b3ed1125daf41dc651b27e2a9506a3682da305db757f32/pyarrow-18.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871b292d4b696b09120ed5bde894f79ee2a5f109cb84470546471df264cae136", size = 40095799 }, - { url = "https://files.pythonhosted.org/packages/5a/a0/a4eb68c3495c5e72b404c9106c4af2d02860b0a64bc9450023ed9a412c0b/pyarrow-18.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:082ba62bdcb939824ba1ce10b8acef5ab621da1f4c4805e07bfd153617ac19d4", size = 38575191 }, - { url = "https://files.pythonhosted.org/packages/95/1f/6c629156ed4b8e2262da57868930cbb8cffba318b8413043acd02db9ad97/pyarrow-18.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:2c664ab88b9766413197733c1720d3dcd4190e8fa3bbdc3710384630a0a7207b", size = 40031824 }, - { url = "https://files.pythonhosted.org/packages/00/4f/5add0884b3ee6f4f1875e9cd0e69a30905798fa1497a80ab6df4645b54b4/pyarrow-18.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:dc892be34dbd058e8d189b47db1e33a227d965ea8805a235c8a7286f7fd17d3a", size = 25068305 }, - { url = "https://files.pythonhosted.org/packages/84/f7/fa53f3062dd2e390b8b021ce2d8de064a141b4bffc2add05471b5b2ee0eb/pyarrow-18.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:28f9c39a56d2c78bf6b87dcc699d520ab850919d4a8c7418cd20eda49874a2ea", size = 29503390 }, - { url = "https://files.pythonhosted.org/packages/2b/d3/03bc8a5356d95098878c0fa076e69992c6abc212898cd7286cfeab0f2c60/pyarrow-18.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:f1a198a50c409ab2d009fbf20956ace84567d67f2c5701511d4dd561fae6f32e", size = 30806216 }, - { url = "https://files.pythonhosted.org/packages/75/04/3b27d1352d3252abf42b0a83a2e7f6fcb7665cc98a5d3777f427eaa166bc/pyarrow-18.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5bd7fd32e3ace012d43925ea4fc8bd1b02cc6cc1e9813b518302950e89b5a22", size = 39086243 }, - { url = "https://files.pythonhosted.org/packages/30/97/861dfbe3987156f817f3d7e6feb239de1e085a6b576f62454b7bc42c2713/pyarrow-18.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:336addb8b6f5208be1b2398442c703a710b6b937b1a046065ee4db65e782ff5a", size = 40055188 }, - { url = "https://files.pythonhosted.org/packages/25/3a/14f024a1c8fb5ff67d79b616fe218bbfa06f23f198e762c6a900a843796a/pyarrow-18.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:45476490dd4adec5472c92b4d253e245258745d0ccaabe706f8d03288ed60a79", size = 38511444 }, - { url = "https://files.pythonhosted.org/packages/92/a2/81c1dd744b322c0c548f793deb521bf23500806d754128ddf6f978736dff/pyarrow-18.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:b46591222c864e7da7faa3b19455196416cd8355ff6c2cc2e65726a760a3c420", size = 40006508 }, +version = "18.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/7b/640785a9062bb00314caa8a387abce547d2a420cf09bd6c715fe659ccffb/pyarrow-18.1.0.tar.gz", hash = "sha256:9386d3ca9c145b5539a1cfc75df07757dff870168c959b473a0bccbc3abc8c73", size = 1118671 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/bb/8d4a1573f66e0684f190dd2b55fd0b97a7214de8882d58a3867e777bf640/pyarrow-18.1.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e21488d5cfd3d8b500b3238a6c4b075efabc18f0f6d80b29239737ebd69caa6c", size = 29531620 }, + { url = "https://files.pythonhosted.org/packages/30/90/893acfad917533b624a97b9e498c0e8393908508a0a72d624fe935e632bf/pyarrow-18.1.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b516dad76f258a702f7ca0250885fc93d1fa5ac13ad51258e39d402bd9e2e1e4", size = 30836521 }, + { url = "https://files.pythonhosted.org/packages/a3/2a/526545a7464b5fb2fa6e2c4bad16ca90e59e1843025c534fd907b7f73e5a/pyarrow-18.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f443122c8e31f4c9199cb23dca29ab9427cef990f283f80fe15b8e124bcc49b", size = 39213905 }, + { url = "https://files.pythonhosted.org/packages/8a/77/4b3fab91a30e19e233e738d0c5eca5a8f6dd05758bc349a2ca262c65de79/pyarrow-18.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a03da7f2758645d17b7b4f83c8bffeae5bbb7f974523fe901f36288d2eab71", size = 40128881 }, + { url = "https://files.pythonhosted.org/packages/aa/e2/a88e16c5e45e562449c52305bd3bc2f9d704295322d3434656e7ccac1444/pyarrow-18.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ba17845efe3aa358ec266cf9cc2800fa73038211fb27968bfa88acd09261a470", size = 38627517 }, + { url = "https://files.pythonhosted.org/packages/6d/84/8037c20005ccc7b869726465be0957bd9c29cfc88612962030f08292ad06/pyarrow-18.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3c35813c11a059056a22a3bef520461310f2f7eea5c8a11ef9de7062a23f8d56", size = 40060187 }, + { url = "https://files.pythonhosted.org/packages/2a/38/d6435c723ff73df8ae74626ea778262fbcc2b9b0d1a4f3db915b61711b05/pyarrow-18.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9736ba3c85129d72aefa21b4f3bd715bc4190fe4426715abfff90481e7d00812", size = 25118314 }, + { url = "https://files.pythonhosted.org/packages/9e/4d/a4988e7d82f4fbc797715db4185939a658eeffb07a25bab7262bed1ea076/pyarrow-18.1.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:eaeabf638408de2772ce3d7793b2668d4bb93807deed1725413b70e3156a7854", size = 29554860 }, + { url = "https://files.pythonhosted.org/packages/59/03/3a42c5c1e4bd4c900ab62aa1ff6b472bdb159ba8f1c3e5deadab7222244f/pyarrow-18.1.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:3b2e2239339c538f3464308fd345113f886ad031ef8266c6f004d49769bb074c", size = 30867076 }, + { url = "https://files.pythonhosted.org/packages/75/7e/332055ac913373e89256dce9d14b7708f55f7bd5be631456c897f0237738/pyarrow-18.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f39a2e0ed32a0970e4e46c262753417a60c43a3246972cfc2d3eb85aedd01b21", size = 39212135 }, + { url = "https://files.pythonhosted.org/packages/8c/64/5099cdb325828722ef7ffeba9a4696f238eb0cdeae227f831c2d77fcf1bd/pyarrow-18.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31e9417ba9c42627574bdbfeada7217ad8a4cbbe45b9d6bdd4b62abbca4c6f6", size = 40125195 }, + { url = "https://files.pythonhosted.org/packages/83/88/1938d783727db1b178ff71bc6a6143d7939e406db83a9ec23cad3dad325c/pyarrow-18.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:01c034b576ce0eef554f7c3d8c341714954be9b3f5d5bc7117006b85fcf302fe", size = 38641884 }, + { url = "https://files.pythonhosted.org/packages/5e/b5/9e14e9f7590e0eaa435ecea84dabb137284a4dbba7b3c337b58b65b76d95/pyarrow-18.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f266a2c0fc31995a06ebd30bcfdb7f615d7278035ec5b1cd71c48d56daaf30b0", size = 40076877 }, + { url = "https://files.pythonhosted.org/packages/4d/a3/817ac7fe0891a2d66e247e223080f3a6a262d8aefd77e11e8c27e6acf4e1/pyarrow-18.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4f13eee18433f99adefaeb7e01d83b59f73360c231d4782d9ddfaf1c3fbde0a", size = 25119811 }, + { url = "https://files.pythonhosted.org/packages/6a/50/12829e7111b932581e51dda51d5cb39207a056c30fe31ef43f14c63c4d7e/pyarrow-18.1.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:9f3a76670b263dc41d0ae877f09124ab96ce10e4e48f3e3e4257273cee61ad0d", size = 29514620 }, + { url = "https://files.pythonhosted.org/packages/d1/41/468c944eab157702e96abab3d07b48b8424927d4933541ab43788bb6964d/pyarrow-18.1.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:da31fbca07c435be88a0c321402c4e31a2ba61593ec7473630769de8346b54ee", size = 30856494 }, + { url = "https://files.pythonhosted.org/packages/68/f9/29fb659b390312a7345aeb858a9d9c157552a8852522f2c8bad437c29c0a/pyarrow-18.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:543ad8459bc438efc46d29a759e1079436290bd583141384c6f7a1068ed6f992", size = 39203624 }, + { url = "https://files.pythonhosted.org/packages/6e/f6/19360dae44200e35753c5c2889dc478154cd78e61b1f738514c9f131734d/pyarrow-18.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0743e503c55be0fdb5c08e7d44853da27f19dc854531c0570f9f394ec9671d54", size = 40139341 }, + { url = "https://files.pythonhosted.org/packages/bb/e6/9b3afbbcf10cc724312e824af94a2e993d8ace22994d823f5c35324cebf5/pyarrow-18.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d4b3d2a34780645bed6414e22dda55a92e0fcd1b8a637fba86800ad737057e33", size = 38618629 }, + { url = "https://files.pythonhosted.org/packages/3a/2e/3b99f8a3d9e0ccae0e961978a0d0089b25fb46ebbcfb5ebae3cca179a5b3/pyarrow-18.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c52f81aa6f6575058d8e2c782bf79d4f9fdc89887f16825ec3a66607a5dd8e30", size = 40078661 }, + { url = "https://files.pythonhosted.org/packages/76/52/f8da04195000099d394012b8d42c503d7041b79f778d854f410e5f05049a/pyarrow-18.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ad4892617e1a6c7a551cfc827e072a633eaff758fa09f21c4ee548c30bcaf99", size = 25092330 }, + { url = "https://files.pythonhosted.org/packages/cb/87/aa4d249732edef6ad88899399047d7e49311a55749d3c373007d034ee471/pyarrow-18.1.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:84e314d22231357d473eabec709d0ba285fa706a72377f9cc8e1cb3c8013813b", size = 29497406 }, + { url = "https://files.pythonhosted.org/packages/3c/c7/ed6adb46d93a3177540e228b5ca30d99fc8ea3b13bdb88b6f8b6467e2cb7/pyarrow-18.1.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:f591704ac05dfd0477bb8f8e0bd4b5dc52c1cadf50503858dce3a15db6e46ff2", size = 30835095 }, + { url = "https://files.pythonhosted.org/packages/41/d7/ed85001edfb96200ff606943cff71d64f91926ab42828676c0fc0db98963/pyarrow-18.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acb7564204d3c40babf93a05624fc6a8ec1ab1def295c363afc40b0c9e66c191", size = 39194527 }, + { url = "https://files.pythonhosted.org/packages/59/16/35e28eab126342fa391593415d79477e89582de411bb95232f28b131a769/pyarrow-18.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74de649d1d2ccb778f7c3afff6085bd5092aed4c23df9feeb45dd6b16f3811aa", size = 40131443 }, + { url = "https://files.pythonhosted.org/packages/0c/95/e855880614c8da20f4cd74fa85d7268c725cf0013dc754048593a38896a0/pyarrow-18.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f96bd502cb11abb08efea6dab09c003305161cb6c9eafd432e35e76e7fa9b90c", size = 38608750 }, + { url = "https://files.pythonhosted.org/packages/54/9d/f253554b1457d4fdb3831b7bd5f8f00f1795585a606eabf6fec0a58a9c38/pyarrow-18.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:36ac22d7782554754a3b50201b607d553a8d71b78cdf03b33c1125be4b52397c", size = 40066690 }, + { url = "https://files.pythonhosted.org/packages/2f/58/8912a2563e6b8273e8aa7b605a345bba5a06204549826f6493065575ebc0/pyarrow-18.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:25dbacab8c5952df0ca6ca0af28f50d45bd31c1ff6fcf79e2d120b4a65ee7181", size = 25081054 }, + { url = "https://files.pythonhosted.org/packages/82/f9/d06ddc06cab1ada0c2f2fd205ac8c25c2701182de1b9c4bf7a0a44844431/pyarrow-18.1.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6a276190309aba7bc9d5bd2933230458b3521a4317acfefe69a354f2fe59f2bc", size = 29525542 }, + { url = "https://files.pythonhosted.org/packages/ab/94/8917e3b961810587ecbdaa417f8ebac0abb25105ae667b7aa11c05876976/pyarrow-18.1.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:ad514dbfcffe30124ce655d72771ae070f30bf850b48bc4d9d3b25993ee0e386", size = 30829412 }, + { url = "https://files.pythonhosted.org/packages/5e/e3/3b16c3190f3d71d3b10f6758d2d5f7779ef008c4fd367cedab3ed178a9f7/pyarrow-18.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aebc13a11ed3032d8dd6e7171eb6e86d40d67a5639d96c35142bd568b9299324", size = 39119106 }, + { url = "https://files.pythonhosted.org/packages/1d/d6/5d704b0d25c3c79532f8c0639f253ec2803b897100f64bcb3f53ced236e5/pyarrow-18.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6cf5c05f3cee251d80e98726b5c7cc9f21bab9e9783673bac58e6dfab57ecc8", size = 40090940 }, + { url = "https://files.pythonhosted.org/packages/37/29/366bc7e588220d74ec00e497ac6710c2833c9176f0372fe0286929b2d64c/pyarrow-18.1.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:11b676cd410cf162d3f6a70b43fb9e1e40affbc542a1e9ed3681895f2962d3d9", size = 38548177 }, + { url = "https://files.pythonhosted.org/packages/c8/11/fabf6ecabb1fe5b7d96889228ca2a9158c4c3bb732e3b8ee3f7f6d40b703/pyarrow-18.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:b76130d835261b38f14fc41fdfb39ad8d672afb84c447126b84d5472244cfaba", size = 40043567 }, ] [[package]] @@ -3932,97 +4024,105 @@ wheels = [ [[package]] name = "pydantic" -version = "2.9.2" +version = "2.10.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/b7/d9e3f12af310e1120c21603644a1cd86f59060e040ec5c3a80b8f05fae30/pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", size = 769917 } +sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 } wheels = [ - { url = "https://files.pythonhosted.org/packages/df/e4/ba44652d562cbf0bf320e0f3810206149c8a4e99cdbf66da82e97ab53a15/pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12", size = 434928 }, + { url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 }, ] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.27.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/aa/6b6a9b9f8537b872f552ddd46dd3da230367754b6f707b8e1e963f515ea3/pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", size = 402156 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/8b/d3ae387f66277bd8104096d6ec0a145f4baa2966ebb2cad746c0920c9526/pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b", size = 1867835 }, - { url = "https://files.pythonhosted.org/packages/46/76/f68272e4c3a7df8777798282c5e47d508274917f29992d84e1898f8908c7/pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166", size = 1776689 }, - { url = "https://files.pythonhosted.org/packages/cc/69/5f945b4416f42ea3f3bc9d2aaec66c76084a6ff4ff27555bf9415ab43189/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb", size = 1800748 }, - { url = "https://files.pythonhosted.org/packages/50/ab/891a7b0054bcc297fb02d44d05c50e68154e31788f2d9d41d0b72c89fdf7/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916", size = 1806469 }, - { url = "https://files.pythonhosted.org/packages/31/7c/6e3fa122075d78f277a8431c4c608f061881b76c2b7faca01d317ee39b5d/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07", size = 2002246 }, - { url = "https://files.pythonhosted.org/packages/ad/6f/22d5692b7ab63fc4acbc74de6ff61d185804a83160adba5e6cc6068e1128/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232", size = 2659404 }, - { url = "https://files.pythonhosted.org/packages/11/ac/1e647dc1121c028b691028fa61a4e7477e6aeb5132628fde41dd34c1671f/pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2", size = 2053940 }, - { url = "https://files.pythonhosted.org/packages/91/75/984740c17f12c3ce18b5a2fcc4bdceb785cce7df1511a4ce89bca17c7e2d/pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f", size = 1921437 }, - { url = "https://files.pythonhosted.org/packages/a0/74/13c5f606b64d93f0721e7768cd3e8b2102164866c207b8cd6f90bb15d24f/pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3", size = 1966129 }, - { url = "https://files.pythonhosted.org/packages/18/03/9c4aa5919457c7b57a016c1ab513b1a926ed9b2bb7915bf8e506bf65c34b/pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071", size = 2110908 }, - { url = "https://files.pythonhosted.org/packages/92/2c/053d33f029c5dc65e5cf44ff03ceeefb7cce908f8f3cca9265e7f9b540c8/pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119", size = 1735278 }, - { url = "https://files.pythonhosted.org/packages/de/81/7dfe464eca78d76d31dd661b04b5f2036ec72ea8848dd87ab7375e185c23/pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f", size = 1917453 }, - { url = "https://files.pythonhosted.org/packages/5d/30/890a583cd3f2be27ecf32b479d5d615710bb926d92da03e3f7838ff3e58b/pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8", size = 1865160 }, - { url = "https://files.pythonhosted.org/packages/1d/9a/b634442e1253bc6889c87afe8bb59447f106ee042140bd57680b3b113ec7/pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d", size = 1776777 }, - { url = "https://files.pythonhosted.org/packages/75/9a/7816295124a6b08c24c96f9ce73085032d8bcbaf7e5a781cd41aa910c891/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e", size = 1799244 }, - { url = "https://files.pythonhosted.org/packages/a9/8f/89c1405176903e567c5f99ec53387449e62f1121894aa9fc2c4fdc51a59b/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607", size = 1805307 }, - { url = "https://files.pythonhosted.org/packages/d5/a5/1a194447d0da1ef492e3470680c66048fef56fc1f1a25cafbea4bc1d1c48/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd", size = 2000663 }, - { url = "https://files.pythonhosted.org/packages/13/a5/1df8541651de4455e7d587cf556201b4f7997191e110bca3b589218745a5/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea", size = 2655941 }, - { url = "https://files.pythonhosted.org/packages/44/31/a3899b5ce02c4316865e390107f145089876dff7e1dfc770a231d836aed8/pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e", size = 2052105 }, - { url = "https://files.pythonhosted.org/packages/1b/aa/98e190f8745d5ec831f6d5449344c48c0627ac5fed4e5340a44b74878f8e/pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b", size = 1919967 }, - { url = "https://files.pythonhosted.org/packages/ae/35/b6e00b6abb2acfee3e8f85558c02a0822e9a8b2f2d812ea8b9079b118ba0/pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0", size = 1964291 }, - { url = "https://files.pythonhosted.org/packages/13/46/7bee6d32b69191cd649bbbd2361af79c472d72cb29bb2024f0b6e350ba06/pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64", size = 2109666 }, - { url = "https://files.pythonhosted.org/packages/39/ef/7b34f1b122a81b68ed0a7d0e564da9ccdc9a2924c8d6c6b5b11fa3a56970/pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f", size = 1732940 }, - { url = "https://files.pythonhosted.org/packages/2f/76/37b7e76c645843ff46c1d73e046207311ef298d3f7b2f7d8f6ac60113071/pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3", size = 1916804 }, - { url = "https://files.pythonhosted.org/packages/74/7b/8e315f80666194b354966ec84b7d567da77ad927ed6323db4006cf915f3f/pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231", size = 1856459 }, - { url = "https://files.pythonhosted.org/packages/14/de/866bdce10ed808323d437612aca1ec9971b981e1c52e5e42ad9b8e17a6f6/pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee", size = 1770007 }, - { url = "https://files.pythonhosted.org/packages/dc/69/8edd5c3cd48bb833a3f7ef9b81d7666ccddd3c9a635225214e044b6e8281/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87", size = 1790245 }, - { url = "https://files.pythonhosted.org/packages/80/33/9c24334e3af796ce80d2274940aae38dd4e5676298b4398eff103a79e02d/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8", size = 1801260 }, - { url = "https://files.pythonhosted.org/packages/a5/6f/e9567fd90104b79b101ca9d120219644d3314962caa7948dd8b965e9f83e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327", size = 1996872 }, - { url = "https://files.pythonhosted.org/packages/2d/ad/b5f0fe9e6cfee915dd144edbd10b6e9c9c9c9d7a56b69256d124b8ac682e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2", size = 2661617 }, - { url = "https://files.pythonhosted.org/packages/06/c8/7d4b708f8d05a5cbfda3243aad468052c6e99de7d0937c9146c24d9f12e9/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36", size = 2071831 }, - { url = "https://files.pythonhosted.org/packages/89/4d/3079d00c47f22c9a9a8220db088b309ad6e600a73d7a69473e3a8e5e3ea3/pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126", size = 1917453 }, - { url = "https://files.pythonhosted.org/packages/e9/88/9df5b7ce880a4703fcc2d76c8c2d8eb9f861f79d0c56f4b8f5f2607ccec8/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e", size = 1968793 }, - { url = "https://files.pythonhosted.org/packages/e3/b9/41f7efe80f6ce2ed3ee3c2dcfe10ab7adc1172f778cc9659509a79518c43/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24", size = 2116872 }, - { url = "https://files.pythonhosted.org/packages/63/08/b59b7a92e03dd25554b0436554bf23e7c29abae7cce4b1c459cd92746811/pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84", size = 1738535 }, - { url = "https://files.pythonhosted.org/packages/88/8d/479293e4d39ab409747926eec4329de5b7129beaedc3786eca070605d07f/pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9", size = 1917992 }, - { url = "https://files.pythonhosted.org/packages/ad/ef/16ee2df472bf0e419b6bc68c05bf0145c49247a1095e85cee1463c6a44a1/pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc", size = 1856143 }, - { url = "https://files.pythonhosted.org/packages/da/fa/bc3dbb83605669a34a93308e297ab22be82dfb9dcf88c6cf4b4f264e0a42/pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd", size = 1770063 }, - { url = "https://files.pythonhosted.org/packages/4e/48/e813f3bbd257a712303ebdf55c8dc46f9589ec74b384c9f652597df3288d/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05", size = 1790013 }, - { url = "https://files.pythonhosted.org/packages/b4/e0/56eda3a37929a1d297fcab1966db8c339023bcca0b64c5a84896db3fcc5c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d", size = 1801077 }, - { url = "https://files.pythonhosted.org/packages/04/be/5e49376769bfbf82486da6c5c1683b891809365c20d7c7e52792ce4c71f3/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510", size = 1996782 }, - { url = "https://files.pythonhosted.org/packages/bc/24/e3ee6c04f1d58cc15f37bcc62f32c7478ff55142b7b3e6d42ea374ea427c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6", size = 2661375 }, - { url = "https://files.pythonhosted.org/packages/c1/f8/11a9006de4e89d016b8de74ebb1db727dc100608bb1e6bbe9d56a3cbbcce/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b", size = 2071635 }, - { url = "https://files.pythonhosted.org/packages/7c/45/bdce5779b59f468bdf262a5bc9eecbae87f271c51aef628d8c073b4b4b4c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327", size = 1916994 }, - { url = "https://files.pythonhosted.org/packages/d8/fa/c648308fe711ee1f88192cad6026ab4f925396d1293e8356de7e55be89b5/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6", size = 1968877 }, - { url = "https://files.pythonhosted.org/packages/16/16/b805c74b35607d24d37103007f899abc4880923b04929547ae68d478b7f4/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f", size = 2116814 }, - { url = "https://files.pythonhosted.org/packages/d1/58/5305e723d9fcdf1c5a655e6a4cc2a07128bf644ff4b1d98daf7a9dbf57da/pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769", size = 1738360 }, - { url = "https://files.pythonhosted.org/packages/a5/ae/e14b0ff8b3f48e02394d8acd911376b7b66e164535687ef7dc24ea03072f/pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", size = 1919411 }, - { url = "https://files.pythonhosted.org/packages/13/a9/5d582eb3204464284611f636b55c0a7410d748ff338756323cb1ce721b96/pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5", size = 1857135 }, - { url = "https://files.pythonhosted.org/packages/2c/57/faf36290933fe16717f97829eabfb1868182ac495f99cf0eda9f59687c9d/pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec", size = 1740583 }, - { url = "https://files.pythonhosted.org/packages/91/7c/d99e3513dc191c4fec363aef1bf4c8af9125d8fa53af7cb97e8babef4e40/pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480", size = 1793637 }, - { url = "https://files.pythonhosted.org/packages/29/18/812222b6d18c2d13eebbb0f7cdc170a408d9ced65794fdb86147c77e1982/pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068", size = 1941963 }, - { url = "https://files.pythonhosted.org/packages/0f/36/c1f3642ac3f05e6bb4aec3ffc399fa3f84895d259cf5f0ce3054b7735c29/pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801", size = 1915332 }, - { url = "https://files.pythonhosted.org/packages/f7/ca/9c0854829311fb446020ebb540ee22509731abad886d2859c855dd29b904/pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728", size = 1957926 }, - { url = "https://files.pythonhosted.org/packages/c0/1c/7836b67c42d0cd4441fcd9fafbf6a027ad4b79b6559f80cf11f89fd83648/pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433", size = 2100342 }, - { url = "https://files.pythonhosted.org/packages/a9/f9/b6bcaf874f410564a78908739c80861a171788ef4d4f76f5009656672dfe/pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753", size = 1920344 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938 }, + { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684 }, + { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169 }, + { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227 }, + { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695 }, + { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662 }, + { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370 }, + { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813 }, + { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287 }, + { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414 }, + { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301 }, + { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685 }, + { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876 }, + { url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 }, + { url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 }, + { url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 }, + { url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 }, + { url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 }, + { url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 }, + { url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 }, + { url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 }, + { url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 }, + { url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 }, + { url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 }, + { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 }, + { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 }, + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, + { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 }, + { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 }, + { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 }, + { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797 }, + { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839 }, + { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861 }, + { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582 }, + { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985 }, + { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 }, ] [[package]] name = "pydata-google-auth" -version = "1.8.2" +version = "1.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, { name = "google-auth-oauthlib" }, { name = "setuptools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/dd/52/ce9837060f4d1e842dc6aa9c6cf2231e4aab1bf5fdea1e4c8c83bf1f229c/pydata-google-auth-1.8.2.tar.gz", hash = "sha256:547b6c0fbea657dcecd50887c5db8640ebec062a59a2b88e8ff8e53a04818303", size = 29663 } +sdist = { url = "https://files.pythonhosted.org/packages/96/92/51140850fa44d33f41a393df4767d3f7bd63169e1edc2358397f2a5b57bb/pydata-google-auth-1.9.0.tar.gz", hash = "sha256:2f546e88f007dfdb050087556eb46d6008e351386a7b368096797fae5df374f2", size = 29791 } wheels = [ - { url = "https://files.pythonhosted.org/packages/28/6b/3320c9ddbfc572108917e8432a07e8bd1e40054d94b5ad40c755afdc1160/pydata_google_auth-1.8.2-py2.py3-none-any.whl", hash = "sha256:a9dce59af4a170ea60c4b2ebbc83ee1f74d34255a4f97b2469ae9a4a0dc98e99", size = 15293 }, + { url = "https://files.pythonhosted.org/packages/07/34/91cf24101f7c456c0d9be43b975396772481c26e4b218c78f71769ee0555/pydata_google_auth-1.9.0-py2.py3-none-any.whl", hash = "sha256:e17a44ce8de5b48883667357c03595b85d80938bf1fb714d65bfac9a9f9c8add", size = 15552 }, ] [[package]] @@ -4108,11 +4208,11 @@ wheels = [ [[package]] name = "pyjwt" -version = "2.9.0" +version = "2.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fb/68/ce067f09fca4abeca8771fe667d89cc347d1e99da3e093112ac329c6020e/pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c", size = 78825 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850", size = 22344 }, + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, ] [[package]] @@ -4186,14 +4286,14 @@ wheels = [ [[package]] name = "pyopenssl" -version = "24.2.1" +version = "24.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5d/70/ff56a63248562e77c0c8ee4aefc3224258f1856977e0c1472672b62dadb8/pyopenssl-24.2.1.tar.gz", hash = "sha256:4247f0dbe3748d560dcbb2ff3ea01af0f9a1a001ef5f7c4c647956ed8cbf0e95", size = 184323 } +sdist = { url = "https://files.pythonhosted.org/packages/c1/d4/1067b82c4fc674d6f6e9e8d26b3dff978da46d351ca3bac171544693e085/pyopenssl-24.3.0.tar.gz", hash = "sha256:49f7a019577d834746bc55c5fce6ecbcec0f2b4ec5ce1cf43a9a173b8138bb36", size = 178944 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/dd/e0aa7ebef5168c75b772eda64978c597a9129b46be17779054652a7999e4/pyOpenSSL-24.2.1-py3-none-any.whl", hash = "sha256:967d5719b12b243588573f39b0c677637145c7a1ffedcd495a487e58177fbb8d", size = 58390 }, + { url = "https://files.pythonhosted.org/packages/42/22/40f9162e943f86f0fc927ebc648078be87def360d9d8db346619fb97df2b/pyOpenSSL-24.3.0-py3-none-any.whl", hash = "sha256:e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a", size = 56111 }, ] [[package]] @@ -4242,16 +4342,16 @@ wheels = [ [[package]] name = "pyspark" -version = "3.5.3" +version = "3.5.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "py4j" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9a/90/cb80c8cf194958ab9a3242851c62fa5aef1a0b42f2d9642f1e2eca098005/pyspark-3.5.3.tar.gz", hash = "sha256:68b7cc0c0c570a7d8644f49f40d2da8709b01d30c9126cc8cf93b4f84f3d9747", size = 317304325 } +sdist = { url = "https://files.pythonhosted.org/packages/4e/18/6bb8c4e857122fc898f32336cb6e9e98415a7802c2a3738e907b4bd60953/pyspark-3.5.4.tar.gz", hash = "sha256:1c2926d63020902163f58222466adf6f8016f6c43c1f319b8e7a71dbaa05fc51", size = 317313656 } [[package]] name = "pytest" -version = "8.3.3" +version = "8.3.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -4261,9 +4361,9 @@ dependencies = [ { name = "pluggy" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, ] [[package]] @@ -4414,11 +4514,11 @@ wheels = [ [[package]] name = "python-json-logger" -version = "2.0.7" +version = "3.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4f/da/95963cebfc578dabd323d7263958dfb68898617912bb09327dd30e9c8d13/python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c", size = 10508 } +sdist = { url = "https://files.pythonhosted.org/packages/e3/c4/358cd13daa1d912ef795010897a483ab2f0b41c9ea1b35235a8b2f7d15a7/python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008", size = 16287 } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/a6/145655273568ee78a581e734cf35beb9e33a370b29c5d3c8fee3744de29f/python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd", size = 8067 }, + { url = "https://files.pythonhosted.org/packages/4b/72/2f30cf26664fcfa0bd8ec5ee62ec90c03bd485e4a294d92aabc76c5203a5/python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090", size = 14924 }, ] [[package]] @@ -4749,74 +4849,87 @@ wheels = [ [[package]] name = "rpds-py" -version = "0.21.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/80/afdf96daf9b27d61483ef05b38f282121db0e38f5fd4e89f40f5c86c2a4f/rpds_py-0.21.0.tar.gz", hash = "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db", size = 26335 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/a4/91747f902f166c589f1753cbd8bda713aceb75817c8bb597058a38aa85e6/rpds_py-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a017f813f24b9df929674d0332a374d40d7f0162b326562daae8066b502d0590", size = 327473 }, - { url = "https://files.pythonhosted.org/packages/8a/72/75a30a07f96ae210e732c50c7339e742945fdc83661e65a1c80fcf39ceea/rpds_py-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:20cc1ed0bcc86d8e1a7e968cce15be45178fd16e2ff656a243145e0b439bd250", size = 318359 }, - { url = "https://files.pythonhosted.org/packages/dc/63/87d469d7628cd71366fd1baa32573acd37385843b8d39b6e2b69f16eec48/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad116dda078d0bc4886cb7840e19811562acdc7a8e296ea6ec37e70326c1b41c", size = 361377 }, - { url = "https://files.pythonhosted.org/packages/dd/b1/78da258a4cafa1d8606a21b7d9ed4cc9d72d1c663583060ab02444b9bd9c/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:808f1ac7cf3b44f81c9475475ceb221f982ef548e44e024ad5f9e7060649540e", size = 369494 }, - { url = "https://files.pythonhosted.org/packages/44/47/6fdb7273cc80066d434e83cd49a3cfedb6d96ff70908480870877fb64b1e/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de552f4a1916e520f2703ec474d2b4d3f86d41f353e7680b597512ffe7eac5d0", size = 403639 }, - { url = "https://files.pythonhosted.org/packages/5f/4a/8c6c46afc050b5243be579be7f7b194d00b9731e83cc0845e9c70db127bb/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efec946f331349dfc4ae9d0e034c263ddde19414fe5128580f512619abed05f1", size = 430551 }, - { url = "https://files.pythonhosted.org/packages/d4/31/2dd40abc26fc0fc037b86006583276dc375d38ac821d4ca2394274e8045b/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b80b4690bbff51a034bfde9c9f6bf9357f0a8c61f548942b80f7b66356508bf5", size = 360795 }, - { url = "https://files.pythonhosted.org/packages/9d/2a/665b9ebef76f54764f1437ac03373a95a69480b7ce56c480360f88730cae/rpds_py-0.21.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:085ed25baac88953d4283e5b5bd094b155075bb40d07c29c4f073e10623f9f2e", size = 382663 }, - { url = "https://files.pythonhosted.org/packages/e8/8c/e056f0c887d29baa256f8c8d7f7079a72d80395c35c14219de45ab19dce2/rpds_py-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:daa8efac2a1273eed2354397a51216ae1e198ecbce9036fba4e7610b308b6153", size = 546477 }, - { url = "https://files.pythonhosted.org/packages/33/11/588568f6c2ed5c9d6d121c188c71ca0f76e0e369a6d66f835737189e5a75/rpds_py-0.21.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:95a5bad1ac8a5c77b4e658671642e4af3707f095d2b78a1fdd08af0dfb647624", size = 549477 }, - { url = "https://files.pythonhosted.org/packages/15/86/c1401e2f70fbdf963c2ac9157994ebeb00c101ddf87975a90507f27cb2f4/rpds_py-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3e53861b29a13d5b70116ea4230b5f0f3547b2c222c5daa090eb7c9c82d7f664", size = 527966 }, - { url = "https://files.pythonhosted.org/packages/66/f2/452420f1493112825e975c87b3b4fd8b334e0e228cdb641597a92e0c3267/rpds_py-0.21.0-cp310-none-win32.whl", hash = "sha256:ea3a6ac4d74820c98fcc9da4a57847ad2cc36475a8bd9683f32ab6d47a2bd682", size = 200978 }, - { url = "https://files.pythonhosted.org/packages/35/4c/674b2e2d75607acdbc7a162ace36dcaad225c9e760cef5defa5c0f5ddd2d/rpds_py-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:b8f107395f2f1d151181880b69a2869c69e87ec079c49c0016ab96860b6acbe5", size = 218549 }, - { url = "https://files.pythonhosted.org/packages/80/61/615929ea79f5fd0b3aca000411a33bcc1753607ccc1af0ce7b05b56e6e56/rpds_py-0.21.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5555db3e618a77034954b9dc547eae94166391a98eb867905ec8fcbce1308d95", size = 327267 }, - { url = "https://files.pythonhosted.org/packages/a5/f5/28e89dda55b731d78cbfea284dc9789d265a8a06523f0adf60e9b05cade7/rpds_py-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:97ef67d9bbc3e15584c2f3c74bcf064af36336c10d2e21a2131e123ce0f924c9", size = 318227 }, - { url = "https://files.pythonhosted.org/packages/e4/ef/eb90feb3e384543c48e2f867551075c43a429aa4c9a44e9c4bd71f4f786b/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab2c2a26d2f69cdf833174f4d9d86118edc781ad9a8fa13970b527bf8236027", size = 361235 }, - { url = "https://files.pythonhosted.org/packages/ed/e7/8ea2d3d3398266c5c8ddd957d86003493b6d14f8f158b726dd09c8f43dee/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4e8921a259f54bfbc755c5bbd60c82bb2339ae0324163f32868f63f0ebb873d9", size = 369467 }, - { url = "https://files.pythonhosted.org/packages/51/25/a286abda9da7820c971a0b1abcf1d31fb81c44a1088a128ad26c77206622/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a7ff941004d74d55a47f916afc38494bd1cfd4b53c482b77c03147c91ac0ac3", size = 403482 }, - { url = "https://files.pythonhosted.org/packages/7a/1e/9c3c0463fe142456dcd9e9be0ffd15b66a77adfcdf3ecf94fa2b12d95fcb/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5145282a7cd2ac16ea0dc46b82167754d5e103a05614b724457cffe614f25bd8", size = 429943 }, - { url = "https://files.pythonhosted.org/packages/e1/fd/f1fd7e77fef8e5a442ce7fd80ba957730877515fe18d7195f646408a60ce/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de609a6f1b682f70bb7163da745ee815d8f230d97276db049ab447767466a09d", size = 360437 }, - { url = "https://files.pythonhosted.org/packages/55/83/347932db075847f4f8172c3b53ad70fe725edd9058f0d4098080ad45e3bc/rpds_py-0.21.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40c91c6e34cf016fa8e6b59d75e3dbe354830777fcfd74c58b279dceb7975b75", size = 382400 }, - { url = "https://files.pythonhosted.org/packages/22/9b/2a6eeab4e6752adba751cfee19bdf35d11e1073509f74883cbf14d42d682/rpds_py-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d2132377f9deef0c4db89e65e8bb28644ff75a18df5293e132a8d67748397b9f", size = 546560 }, - { url = "https://files.pythonhosted.org/packages/3c/19/6e51a141fe6f017d07b7d899b10a4af9e0f268deffacc1107d70fcd9257b/rpds_py-0.21.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0a9e0759e7be10109645a9fddaaad0619d58c9bf30a3f248a2ea57a7c417173a", size = 549334 }, - { url = "https://files.pythonhosted.org/packages/cf/40/4ae09a07e4531278e6bee41ef3e4f166c23468135afc2c6c98917bfc28e6/rpds_py-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e20da3957bdf7824afdd4b6eeb29510e83e026473e04952dca565170cd1ecc8", size = 527855 }, - { url = "https://files.pythonhosted.org/packages/eb/45/2135be31543677687a426117c56d8b33e8b581bc4a8b7abfa53721012162/rpds_py-0.21.0-cp311-none-win32.whl", hash = "sha256:f71009b0d5e94c0e86533c0b27ed7cacc1239cb51c178fd239c3cfefefb0400a", size = 200968 }, - { url = "https://files.pythonhosted.org/packages/68/fa/e66c3aaf13ef91c203ba47c102cd7c5dca92dde8837e5093577968d6d36d/rpds_py-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:e168afe6bf6ab7ab46c8c375606298784ecbe3ba31c0980b7dcbb9631dcba97e", size = 218502 }, - { url = "https://files.pythonhosted.org/packages/d9/5a/3aa6f5d8bacbe4f55ebf9a3c9628dad40cdb57f845124cf13c78895ea156/rpds_py-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:30b912c965b2aa76ba5168fd610087bad7fcde47f0a8367ee8f1876086ee6d1d", size = 329516 }, - { url = "https://files.pythonhosted.org/packages/df/c0/67c8c8ac850c6e3681e356a59d46315bf73bc77cb50c9a32db8ae44325b7/rpds_py-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca9989d5d9b1b300bc18e1801c67b9f6d2c66b8fd9621b36072ed1df2c977f72", size = 321245 }, - { url = "https://files.pythonhosted.org/packages/64/83/bf31341f21fa594035891ff04a497dc86b210cc1a903a9cc01b097cc614f/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f54e7106f0001244a5f4cf810ba8d3f9c542e2730821b16e969d6887b664266", size = 363951 }, - { url = "https://files.pythonhosted.org/packages/a2/e1/8218bba36737621262df316fbb729639af25ff611cc07bfeaadc1bfa6292/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fed5dfefdf384d6fe975cc026886aece4f292feaf69d0eeb716cfd3c5a4dd8be", size = 373113 }, - { url = "https://files.pythonhosted.org/packages/39/8d/4afcd688e3ad33ec273900f42e6a41e9bd9f43cfc509b6d498683d2d0338/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590ef88db231c9c1eece44dcfefd7515d8bf0d986d64d0caf06a81998a9e8cab", size = 405944 }, - { url = "https://files.pythonhosted.org/packages/fa/65/3326efa721b6ecd70262aab69a26c9bc19398cdb0a2a416ef30b58326460/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f983e4c2f603c95dde63df633eec42955508eefd8d0f0e6d236d31a044c882d7", size = 422874 }, - { url = "https://files.pythonhosted.org/packages/31/fb/48a647d0afab74289dd21a4128002d58684c22600a22c4bfb76cb9e3bfb0/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b229ce052ddf1a01c67d68166c19cb004fb3612424921b81c46e7ea7ccf7c3bf", size = 364227 }, - { url = "https://files.pythonhosted.org/packages/f1/b0/1cdd179d7382dd52d65b1fd19c54d090b6bd0688dfbe259bb5ab7548c359/rpds_py-0.21.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebf64e281a06c904a7636781d2e973d1f0926a5b8b480ac658dc0f556e7779f4", size = 386447 }, - { url = "https://files.pythonhosted.org/packages/dc/41/84ace07f31aac3a96b73a374d89106cf252f7d3274e7cae85d17a27c602d/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:998a8080c4495e4f72132f3d66ff91f5997d799e86cec6ee05342f8f3cda7dca", size = 549386 }, - { url = "https://files.pythonhosted.org/packages/33/ce/bf51bc5a3aa539171ea8c7737ab5ac06cef54c79b6b2a0511afc41533c89/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98486337f7b4f3c324ab402e83453e25bb844f44418c066623db88e4c56b7c7b", size = 554777 }, - { url = "https://files.pythonhosted.org/packages/76/b1/950568e55a94c2979c2b61ec24e76e648a525fbc7551ccfc1f2841e39d44/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a78d8b634c9df7f8d175451cfeac3810a702ccb85f98ec95797fa98b942cea11", size = 530918 }, - { url = "https://files.pythonhosted.org/packages/78/84/93f00e3613426c8a7a9ca16782d2828f2ac55296dd5c6b599379d9f59ee2/rpds_py-0.21.0-cp312-none-win32.whl", hash = "sha256:a58ce66847711c4aa2ecfcfaff04cb0327f907fead8945ffc47d9407f41ff952", size = 203112 }, - { url = "https://files.pythonhosted.org/packages/e6/08/7a186847dd78881a781d2be9b42c8e49c3261c0f4a6d0289ba9a1e4cde71/rpds_py-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:e860f065cc4ea6f256d6f411aba4b1251255366e48e972f8a347cf88077b24fd", size = 220735 }, - { url = "https://files.pythonhosted.org/packages/32/3a/e69ec108eefb9b1f19ee00dde7a800b485942e62b123f01d9156a6d8569c/rpds_py-0.21.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ee4eafd77cc98d355a0d02f263efc0d3ae3ce4a7c24740010a8b4012bbb24937", size = 329206 }, - { url = "https://files.pythonhosted.org/packages/f6/c0/fa689498fa3415565306398c8d2a596207c2a13d3cc03724f32514bddfbc/rpds_py-0.21.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:688c93b77e468d72579351a84b95f976bd7b3e84aa6686be6497045ba84be560", size = 320245 }, - { url = "https://files.pythonhosted.org/packages/68/d0/466b61007005f1b2fd8501f23e4bdee4d71c7381b61358750920d1882ac9/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38dbf31c57032667dd5a2f0568ccde66e868e8f78d5a0d27dcc56d70f3fcd3b", size = 363585 }, - { url = "https://files.pythonhosted.org/packages/1e/e2/787ea3a0f4b197893c62c254e6f14929c40bbcff86922928ac4eafaa8edf/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2d6129137f43f7fa02d41542ffff4871d4aefa724a5fe38e2c31a4e0fd343fb0", size = 372302 }, - { url = "https://files.pythonhosted.org/packages/b5/ef/99f2cfe6aa128c21f1b30c66ecd348cbd59792953ca35eeb6efa38b88aa1/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520ed8b99b0bf86a176271f6fe23024323862ac674b1ce5b02a72bfeff3fff44", size = 405344 }, - { url = "https://files.pythonhosted.org/packages/30/3c/9d12d0b76ecfe80a7ba4770459828dda495d72b18cafd6dfd54c67b2e282/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaeb25ccfb9b9014a10eaf70904ebf3f79faaa8e60e99e19eef9f478651b9b74", size = 422322 }, - { url = "https://files.pythonhosted.org/packages/f9/22/387aec1cd6e124adbc3b1f40c4e4152c3963ae47d78d3ca650102ea72c4f/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af04ac89c738e0f0f1b913918024c3eab6e3ace989518ea838807177d38a2e94", size = 363739 }, - { url = "https://files.pythonhosted.org/packages/d1/3e/0ad65b776db13d13f002ab363fe3821cd1adec500d8e05e0a81047a75f9d/rpds_py-0.21.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9b76e2afd585803c53c5b29e992ecd183f68285b62fe2668383a18e74abe7a3", size = 386579 }, - { url = "https://files.pythonhosted.org/packages/4f/3b/c68c1067b24a7df47edcc0325a825908601aba399e2d372a156edc631ad1/rpds_py-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5afb5efde74c54724e1a01118c6e5c15e54e642c42a1ba588ab1f03544ac8c7a", size = 548924 }, - { url = "https://files.pythonhosted.org/packages/ab/1c/35f1a5cce4bca71c49664f00140010a96b126e5f443ebaf6db741c25b9b7/rpds_py-0.21.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:52c041802a6efa625ea18027a0723676a778869481d16803481ef6cc02ea8cb3", size = 554217 }, - { url = "https://files.pythonhosted.org/packages/c8/d0/48154c152f9adb8304b21d867d28e79be3b352633fb195c03c7107a4da9a/rpds_py-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee1e4fc267b437bb89990b2f2abf6c25765b89b72dd4a11e21934df449e0c976", size = 530540 }, - { url = "https://files.pythonhosted.org/packages/50/e8/78847f4e112e99fd5b7bc30fea3e4a44c20b811473d6755f944c5bf0aec7/rpds_py-0.21.0-cp313-none-win32.whl", hash = "sha256:0c025820b78817db6a76413fff6866790786c38f95ea3f3d3c93dbb73b632202", size = 202604 }, - { url = "https://files.pythonhosted.org/packages/60/31/083e6337775e133fb0217ed0ab0752380efa6e5112f2250d592d4135a228/rpds_py-0.21.0-cp313-none-win_amd64.whl", hash = "sha256:320c808df533695326610a1b6a0a6e98f033e49de55d7dc36a13c8a30cfa756e", size = 220448 }, - { url = "https://files.pythonhosted.org/packages/ff/d3/ffb04445d29c03d380047c62bed01b979adb9204424e2c833817012f679e/rpds_py-0.21.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6b4ef7725386dc0762857097f6b7266a6cdd62bfd209664da6712cb26acef035", size = 328265 }, - { url = "https://files.pythonhosted.org/packages/dc/9d/894ff29a2be8f85fd1acff6e0c1b52b629aee019da8651125af9ee4894e1/rpds_py-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6bc0e697d4d79ab1aacbf20ee5f0df80359ecf55db33ff41481cf3e24f206919", size = 319238 }, - { url = "https://files.pythonhosted.org/packages/43/3d/0e5b835c22933a5bdc4413e4a91de55a8c1ef33f55eb2514a5cf24729173/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da52d62a96e61c1c444f3998c434e8b263c384f6d68aca8274d2e08d1906325c", size = 362136 }, - { url = "https://files.pythonhosted.org/packages/67/81/c9f29da910ac19758f170633c0937fc2f0898b84389bd05bfc255c985f19/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98e4fe5db40db87ce1c65031463a760ec7906ab230ad2249b4572c2fc3ef1f9f", size = 370411 }, - { url = "https://files.pythonhosted.org/packages/a8/df/b989044f90b81093e454eb54799e7ee5b085ebf957a75d07d5e21eac2fb5/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30bdc973f10d28e0337f71d202ff29345320f8bc49a31c90e6c257e1ccef4333", size = 404598 }, - { url = "https://files.pythonhosted.org/packages/8f/09/f79cd575f503932f41138c4bec4c902eb3b71ea8570436688145cc77b8ef/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:faa5e8496c530f9c71f2b4e1c49758b06e5f4055e17144906245c99fa6d45356", size = 430224 }, - { url = "https://files.pythonhosted.org/packages/34/46/7fae3500bc188df2feee09dd72df262b97d31e8e4bd2ff4a8be4e28bf1d3/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32eb88c30b6a4f0605508023b7141d043a79b14acb3b969aa0b4f99b25bc7d4a", size = 361660 }, - { url = "https://files.pythonhosted.org/packages/5b/1d/d850242d30e68f99ad80815576f38b378b5aba393613e3357ed5e593499e/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a89a8ce9e4e75aeb7fa5d8ad0f3fecdee813802592f4f46a15754dcb2fd6b061", size = 384008 }, - { url = "https://files.pythonhosted.org/packages/c9/16/df4cfd1de216c25de24f8631f17380f8edee92201ec7810d1e2ba1dd9f85/rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:241e6c125568493f553c3d0fdbb38c74babf54b45cef86439d4cd97ff8feb34d", size = 546855 }, - { url = "https://files.pythonhosted.org/packages/c0/b8/03d4561095d4fbf2ab62ed651a2b5cb674fe5245b1ab2f7909e8056bd014/rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b766a9f57663396e4f34f5140b3595b233a7b146e94777b97a8413a1da1be18", size = 550599 }, - { url = "https://files.pythonhosted.org/packages/f4/54/d93867e2bf4acf57314798181faf3bd7d1a4f51a3aa81cb6211d56f74d3f/rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:af4a644bf890f56e41e74be7d34e9511e4954894d544ec6b8efe1e21a1a8da6c", size = 528963 }, - { url = "https://files.pythonhosted.org/packages/66/86/6f72984a284d720d84fba5ee7b0d1b0d320978b516497cbfd6e335e95a3e/rpds_py-0.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3e30a69a706e8ea20444b98a49f386c17b26f860aa9245329bab0851ed100677", size = 219621 }, +version = "0.22.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/2a/ead1d09e57449b99dcc190d8d2323e3a167421d8f8fdf0f217c6f6befe47/rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", size = 359514 }, + { url = "https://files.pythonhosted.org/packages/8f/7e/1254f406b7793b586c68e217a6a24ec79040f85e030fff7e9049069284f4/rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", size = 349031 }, + { url = "https://files.pythonhosted.org/packages/aa/da/17c6a2c73730d426df53675ff9cc6653ac7a60b6438d03c18e1c822a576a/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", size = 381485 }, + { url = "https://files.pythonhosted.org/packages/aa/13/2dbacd820466aa2a3c4b747afb18d71209523d353cf865bf8f4796c969ea/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", size = 386794 }, + { url = "https://files.pythonhosted.org/packages/6d/62/96905d0a35ad4e4bc3c098b2f34b2e7266e211d08635baa690643d2227be/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", size = 423523 }, + { url = "https://files.pythonhosted.org/packages/eb/1b/d12770f2b6a9fc2c3ec0d810d7d440f6d465ccd8b7f16ae5385952c28b89/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", size = 446695 }, + { url = "https://files.pythonhosted.org/packages/4d/cf/96f1fd75512a017f8e07408b6d5dbeb492d9ed46bfe0555544294f3681b3/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", size = 381959 }, + { url = "https://files.pythonhosted.org/packages/ab/f0/d1c5b501c8aea85aeb938b555bfdf7612110a2f8cdc21ae0482c93dd0c24/rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", size = 410420 }, + { url = "https://files.pythonhosted.org/packages/33/3b/45b6c58fb6aad5a569ae40fb890fc494c6b02203505a5008ee6dc68e65f7/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", size = 557620 }, + { url = "https://files.pythonhosted.org/packages/83/62/3fdd2d3d47bf0bb9b931c4c73036b4ab3ec77b25e016ae26fab0f02be2af/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", size = 584202 }, + { url = "https://files.pythonhosted.org/packages/04/f2/5dced98b64874b84ca824292f9cee2e3f30f3bcf231d15a903126684f74d/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", size = 552787 }, + { url = "https://files.pythonhosted.org/packages/67/13/2273dea1204eda0aea0ef55145da96a9aa28b3f88bb5c70e994f69eda7c3/rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", size = 220088 }, + { url = "https://files.pythonhosted.org/packages/4e/80/8c8176b67ad7f4a894967a7a4014ba039626d96f1d4874d53e409b58d69f/rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", size = 231737 }, + { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773 }, + { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214 }, + { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477 }, + { url = "https://files.pythonhosted.org/packages/9a/e9/835196a69cb229d5c31c13b8ae603bd2da9a6695f35fe4270d398e1db44c/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", size = 386171 }, + { url = "https://files.pythonhosted.org/packages/f9/8e/33fc4eba6683db71e91e6d594a2cf3a8fbceb5316629f0477f7ece5e3f75/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", size = 422676 }, + { url = "https://files.pythonhosted.org/packages/37/47/2e82d58f8046a98bb9497a8319604c92b827b94d558df30877c4b3c6ccb3/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", size = 446152 }, + { url = "https://files.pythonhosted.org/packages/e1/78/79c128c3e71abbc8e9739ac27af11dc0f91840a86fce67ff83c65d1ba195/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", size = 381300 }, + { url = "https://files.pythonhosted.org/packages/c9/5b/2e193be0e8b228c1207f31fa3ea79de64dadb4f6a4833111af8145a6bc33/rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", size = 409636 }, + { url = "https://files.pythonhosted.org/packages/c2/3f/687c7100b762d62186a1c1100ffdf99825f6fa5ea94556844bbbd2d0f3a9/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", size = 556708 }, + { url = "https://files.pythonhosted.org/packages/8c/a2/c00cbc4b857e8b3d5e7f7fc4c81e23afd8c138b930f4f3ccf9a41a23e9e4/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", size = 583554 }, + { url = "https://files.pythonhosted.org/packages/d0/08/696c9872cf56effdad9ed617ac072f6774a898d46b8b8964eab39ec562d2/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", size = 552105 }, + { url = "https://files.pythonhosted.org/packages/18/1f/4df560be1e994f5adf56cabd6c117e02de7c88ee238bb4ce03ed50da9d56/rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", size = 220199 }, + { url = "https://files.pythonhosted.org/packages/b8/1b/c29b570bc5db8237553002788dc734d6bd71443a2ceac2a58202ec06ef12/rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", size = 231775 }, + { url = "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", size = 352334 }, + { url = "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", size = 342111 }, + { url = "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", size = 384286 }, + { url = "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", size = 391739 }, + { url = "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", size = 427306 }, + { url = "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", size = 442717 }, + { url = "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", size = 385721 }, + { url = "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", size = 415824 }, + { url = "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", size = 561227 }, + { url = "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", size = 587424 }, + { url = "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", size = 555953 }, + { url = "https://files.pythonhosted.org/packages/e6/52/c921dc6d5f5d45b212a456c1f5b17df1a471127e8037eb0972379e39dff4/rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", size = 221339 }, + { url = "https://files.pythonhosted.org/packages/f2/c7/f82b5be1e8456600395366f86104d1bd8d0faed3802ad511ef6d60c30d98/rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", size = 235786 }, + { url = "https://files.pythonhosted.org/packages/d0/bf/36d5cc1f2c609ae6e8bf0fc35949355ca9d8790eceb66e6385680c951e60/rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", size = 351657 }, + { url = "https://files.pythonhosted.org/packages/24/2a/f1e0fa124e300c26ea9382e59b2d582cba71cedd340f32d1447f4f29fa4e/rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", size = 341829 }, + { url = "https://files.pythonhosted.org/packages/cf/c2/0da1231dd16953845bed60d1a586fcd6b15ceaeb965f4d35cdc71f70f606/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", size = 384220 }, + { url = "https://files.pythonhosted.org/packages/c7/73/a4407f4e3a00a9d4b68c532bf2d873d6b562854a8eaff8faa6133b3588ec/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", size = 391009 }, + { url = "https://files.pythonhosted.org/packages/a9/c3/04b7353477ab360fe2563f5f0b176d2105982f97cd9ae80a9c5a18f1ae0f/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", size = 426989 }, + { url = "https://files.pythonhosted.org/packages/8d/e6/e4b85b722bcf11398e17d59c0f6049d19cd606d35363221951e6d625fcb0/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", size = 441544 }, + { url = "https://files.pythonhosted.org/packages/27/fc/403e65e56f65fff25f2973216974976d3f0a5c3f30e53758589b6dc9b79b/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", size = 385179 }, + { url = "https://files.pythonhosted.org/packages/57/9b/2be9ff9700d664d51fd96b33d6595791c496d2778cb0b2a634f048437a55/rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", size = 415103 }, + { url = "https://files.pythonhosted.org/packages/bb/a5/03c2ad8ca10994fcf22dd2150dd1d653bc974fa82d9a590494c84c10c641/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", size = 560916 }, + { url = "https://files.pythonhosted.org/packages/ba/2e/be4fdfc8b5b576e588782b56978c5b702c5a2307024120d8aeec1ab818f0/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", size = 587062 }, + { url = "https://files.pythonhosted.org/packages/67/e0/2034c221937709bf9c542603d25ad43a68b4b0a9a0c0b06a742f2756eb66/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", size = 555734 }, + { url = "https://files.pythonhosted.org/packages/ea/ce/240bae07b5401a22482b58e18cfbabaa392409b2797da60223cca10d7367/rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", size = 220663 }, + { url = "https://files.pythonhosted.org/packages/cb/f0/d330d08f51126330467edae2fa4efa5cec8923c87551a79299380fdea30d/rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", size = 235503 }, + { url = "https://files.pythonhosted.org/packages/f7/c4/dbe1cc03df013bf2feb5ad00615038050e7859f381e96fb5b7b4572cd814/rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", size = 347698 }, + { url = "https://files.pythonhosted.org/packages/a4/3a/684f66dd6b0f37499cad24cd1c0e523541fd768576fa5ce2d0a8799c3cba/rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", size = 337330 }, + { url = "https://files.pythonhosted.org/packages/82/eb/e022c08c2ce2e8f7683baa313476492c0e2c1ca97227fe8a75d9f0181e95/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", size = 380022 }, + { url = "https://files.pythonhosted.org/packages/e4/21/5a80e653e4c86aeb28eb4fea4add1f72e1787a3299687a9187105c3ee966/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", size = 390754 }, + { url = "https://files.pythonhosted.org/packages/37/a4/d320a04ae90f72d080b3d74597074e62be0a8ecad7d7321312dfe2dc5a6a/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", size = 423840 }, + { url = "https://files.pythonhosted.org/packages/87/70/674dc47d93db30a6624279284e5631be4c3a12a0340e8e4f349153546728/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", size = 438970 }, + { url = "https://files.pythonhosted.org/packages/3f/64/9500f4d66601d55cadd21e90784cfd5d5f4560e129d72e4339823129171c/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", size = 383146 }, + { url = "https://files.pythonhosted.org/packages/4d/45/630327addb1d17173adcf4af01336fd0ee030c04798027dfcb50106001e0/rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", size = 408294 }, + { url = "https://files.pythonhosted.org/packages/5f/ef/8efb3373cee54ea9d9980b772e5690a0c9e9214045a4e7fa35046e399fee/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", size = 556345 }, + { url = "https://files.pythonhosted.org/packages/54/01/151d3b9ef4925fc8f15bfb131086c12ec3c3d6dd4a4f7589c335bf8e85ba/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", size = 582292 }, + { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855 }, + { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100 }, + { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794 }, + { url = "https://files.pythonhosted.org/packages/8b/63/e29f8ee14fcf383574f73b6bbdcbec0fbc2e5fc36b4de44d1ac389b1de62/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", size = 360786 }, + { url = "https://files.pythonhosted.org/packages/d3/e0/771ee28b02a24e81c8c0e645796a371350a2bb6672753144f36ae2d2afc9/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", size = 350589 }, + { url = "https://files.pythonhosted.org/packages/cf/49/abad4c4a1e6f3adf04785a99c247bfabe55ed868133e2d1881200aa5d381/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", size = 381848 }, + { url = "https://files.pythonhosted.org/packages/3a/7d/f4bc6d6fbe6af7a0d2b5f2ee77079efef7c8528712745659ec0026888998/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", size = 387879 }, + { url = "https://files.pythonhosted.org/packages/13/b0/575c797377fdcd26cedbb00a3324232e4cb2c5d121f6e4b0dbf8468b12ef/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", size = 423916 }, + { url = "https://files.pythonhosted.org/packages/54/78/87157fa39d58f32a68d3326f8a81ad8fb99f49fe2aa7ad9a1b7d544f9478/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", size = 448410 }, + { url = "https://files.pythonhosted.org/packages/59/69/860f89996065a88be1b6ff2d60e96a02b920a262d8aadab99e7903986597/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", size = 382841 }, + { url = "https://files.pythonhosted.org/packages/bd/d7/bc144e10d27e3cb350f98df2492a319edd3caaf52ddfe1293f37a9afbfd7/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", size = 409662 }, + { url = "https://files.pythonhosted.org/packages/14/2a/6bed0b05233c291a94c7e89bc76ffa1c619d4e1979fbfe5d96024020c1fb/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", size = 558221 }, + { url = "https://files.pythonhosted.org/packages/11/23/cd8f566de444a137bc1ee5795e47069a947e60810ba4152886fe5308e1b7/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", size = 583780 }, + { url = "https://files.pythonhosted.org/packages/8d/63/79c3602afd14d501f751e615a74a59040328da5ef29ed5754ae80d236b84/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", size = 553619 }, + { url = "https://files.pythonhosted.org/packages/9f/2e/c5c1689e80298d4e94c75b70faada4c25445739d91b94c211244a3ed7ed1/rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", size = 233338 }, ] [[package]] @@ -4833,32 +4946,32 @@ wheels = [ [[package]] name = "ruff" -version = "0.7.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4b/06/09d1276df977eece383d0ed66052fc24ec4550a61f8fbc0a11200e690496/ruff-0.7.3.tar.gz", hash = "sha256:e1d1ba2e40b6e71a61b063354d04be669ab0d39c352461f3d789cac68b54a313", size = 3243664 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/56/933d433c2489e4642487b835f53dd9ff015fb3d8fa459b09bb2ce42d7c4b/ruff-0.7.3-py3-none-linux_armv6l.whl", hash = "sha256:34f2339dc22687ec7e7002792d1f50712bf84a13d5152e75712ac08be565d344", size = 10372090 }, - { url = "https://files.pythonhosted.org/packages/20/ea/1f0a22a6bcdd3fc26c73f63a025d05bd565901b729d56bcb093c722a6c4c/ruff-0.7.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:fb397332a1879b9764a3455a0bb1087bda876c2db8aca3a3cbb67b3dbce8cda0", size = 10190037 }, - { url = "https://files.pythonhosted.org/packages/16/74/aca75666e0d481fe394e76a8647c44ea919087748024924baa1a17371e3e/ruff-0.7.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:37d0b619546103274e7f62643d14e1adcbccb242efda4e4bdb9544d7764782e9", size = 9811998 }, - { url = "https://files.pythonhosted.org/packages/20/a1/cf446a0d7f78ea1f0bd2b9171c11dfe746585c0c4a734b25966121eb4f5d/ruff-0.7.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d59f0c3ee4d1a6787614e7135b72e21024875266101142a09a61439cb6e38a5", size = 10620626 }, - { url = "https://files.pythonhosted.org/packages/cd/c1/82b27d09286ae855f5d03b1ad37cf243f21eb0081732d4d7b0d658d439cb/ruff-0.7.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:44eb93c2499a169d49fafd07bc62ac89b1bc800b197e50ff4633aed212569299", size = 10177598 }, - { url = "https://files.pythonhosted.org/packages/b9/42/c0acac22753bf74013d035a5ef6c5c4c40ad4d6686bfb3fda7c6f37d9b37/ruff-0.7.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d0242ce53f3a576c35ee32d907475a8d569944c0407f91d207c8af5be5dae4e", size = 11171963 }, - { url = "https://files.pythonhosted.org/packages/43/18/bb0befb7fb9121dd9009e6a72eb98e24f1bacb07c6f3ecb55f032ba98aed/ruff-0.7.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6b6224af8b5e09772c2ecb8dc9f3f344c1aa48201c7f07e7315367f6dd90ac29", size = 11856157 }, - { url = "https://files.pythonhosted.org/packages/5e/91/04e98d7d6e32eca9d1372be595f9abc7b7f048795e32eb2edbd8794d50bd/ruff-0.7.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c50f95a82b94421c964fae4c27c0242890a20fe67d203d127e84fbb8013855f5", size = 11440331 }, - { url = "https://files.pythonhosted.org/packages/f5/dc/3fe99f2ce10b76d389041a1b9f99e7066332e479435d4bebcceea16caff5/ruff-0.7.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f3eff9961b5d2644bcf1616c606e93baa2d6b349e8aa8b035f654df252c8c67", size = 12725354 }, - { url = "https://files.pythonhosted.org/packages/43/7b/1daa712de1c5bc6cbbf9fa60e9c41cc48cda962dc6d2c4f2a224d2c3007e/ruff-0.7.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8963cab06d130c4df2fd52c84e9f10d297826d2e8169ae0c798b6221be1d1d2", size = 11010091 }, - { url = "https://files.pythonhosted.org/packages/b6/db/1227a903587432eb569e57a95b15a4f191a71fe315cde4c0312df7bc85da/ruff-0.7.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:61b46049d6edc0e4317fb14b33bd693245281a3007288b68a3f5b74a22a0746d", size = 10610687 }, - { url = "https://files.pythonhosted.org/packages/db/e2/dc41ee90c3085aadad4da614d310d834f641aaafddf3dfbba08210c616ce/ruff-0.7.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:10ebce7696afe4644e8c1a23b3cf8c0f2193a310c18387c06e583ae9ef284de2", size = 10254843 }, - { url = "https://files.pythonhosted.org/packages/6f/09/5f6cac1c91542bc5bd33d40b4c13b637bf64d7bb29e091dadb01b62527fe/ruff-0.7.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3f36d56326b3aef8eeee150b700e519880d1aab92f471eefdef656fd57492aa2", size = 10730962 }, - { url = "https://files.pythonhosted.org/packages/d3/42/89a4b9a24ef7d00269e24086c417a006f9a3ffeac2c80f2629eb5ce140ee/ruff-0.7.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5d024301109a0007b78d57ab0ba190087b43dce852e552734ebf0b0b85e4fb16", size = 11101907 }, - { url = "https://files.pythonhosted.org/packages/b0/5c/efdb4777686683a8edce94ffd812783bddcd3d2454d38c5ac193fef7c500/ruff-0.7.3-py3-none-win32.whl", hash = "sha256:4ba81a5f0c5478aa61674c5a2194de8b02652f17addf8dfc40c8937e6e7d79fc", size = 8611095 }, - { url = "https://files.pythonhosted.org/packages/bb/b8/28fbc6a4efa50178f973972d1c84b2d0a33cdc731588522ab751ac3da2f5/ruff-0.7.3-py3-none-win_amd64.whl", hash = "sha256:588a9ff2fecf01025ed065fe28809cd5a53b43505f48b69a1ac7707b1b7e4088", size = 9418283 }, - { url = "https://files.pythonhosted.org/packages/3f/77/b587cba6febd5e2003374f37eb89633f79f161e71084f94057c8653b7fb3/ruff-0.7.3-py3-none-win_arm64.whl", hash = "sha256:1713e2c5545863cdbfe2cbce21f69ffaf37b813bfd1fb3b90dc9a6f1963f5a8c", size = 8725228 }, +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/37/9c02181ef38d55b77d97c68b78e705fd14c0de0e5d085202bb2b52ce5be9/ruff-0.8.4.tar.gz", hash = "sha256:0d5f89f254836799af1615798caa5f80b7f935d7a670fad66c5007928e57ace8", size = 3402103 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/67/f480bf2f2723b2e49af38ed2be75ccdb2798fca7d56279b585c8f553aaab/ruff-0.8.4-py3-none-linux_armv6l.whl", hash = "sha256:58072f0c06080276804c6a4e21a9045a706584a958e644353603d36ca1eb8a60", size = 10546415 }, + { url = "https://files.pythonhosted.org/packages/eb/7a/5aba20312c73f1ce61814e520d1920edf68ca3b9c507bd84d8546a8ecaa8/ruff-0.8.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ffb60904651c00a1e0b8df594591770018a0f04587f7deeb3838344fe3adabac", size = 10346113 }, + { url = "https://files.pythonhosted.org/packages/76/f4/c41de22b3728486f0aa95383a44c42657b2db4062f3234ca36fc8cf52d8b/ruff-0.8.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:6ddf5d654ac0d44389f6bf05cee4caeefc3132a64b58ea46738111d687352296", size = 9943564 }, + { url = "https://files.pythonhosted.org/packages/0e/f0/afa0d2191af495ac82d4cbbfd7a94e3df6f62a04ca412033e073b871fc6d/ruff-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e248b1f0fa2749edd3350a2a342b67b43a2627434c059a063418e3d375cfe643", size = 10805522 }, + { url = "https://files.pythonhosted.org/packages/12/57/5d1e9a0fd0c228e663894e8e3a8e7063e5ee90f8e8e60cf2085f362bfa1a/ruff-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf197b98ed86e417412ee3b6c893f44c8864f816451441483253d5ff22c0e81e", size = 10306763 }, + { url = "https://files.pythonhosted.org/packages/04/df/f069fdb02e408be8aac6853583572a2873f87f866fe8515de65873caf6b8/ruff-0.8.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c41319b85faa3aadd4d30cb1cffdd9ac6b89704ff79f7664b853785b48eccdf3", size = 11359574 }, + { url = "https://files.pythonhosted.org/packages/d3/04/37c27494cd02e4a8315680debfc6dfabcb97e597c07cce0044db1f9dfbe2/ruff-0.8.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9f8402b7c4f96463f135e936d9ab77b65711fcd5d72e5d67597b543bbb43cf3f", size = 12094851 }, + { url = "https://files.pythonhosted.org/packages/81/b1/c5d7fb68506cab9832d208d03ea4668da9a9887a4a392f4f328b1bf734ad/ruff-0.8.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e56b3baa9c23d324ead112a4fdf20db9a3f8f29eeabff1355114dd96014604", size = 11655539 }, + { url = "https://files.pythonhosted.org/packages/ef/38/8f8f2c8898dc8a7a49bc340cf6f00226917f0f5cb489e37075bcb2ce3671/ruff-0.8.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:736272574e97157f7edbbb43b1d046125fce9e7d8d583d5d65d0c9bf2c15addf", size = 12912805 }, + { url = "https://files.pythonhosted.org/packages/06/dd/fa6660c279f4eb320788876d0cff4ea18d9af7d9ed7216d7bd66877468d0/ruff-0.8.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fe710ab6061592521f902fca7ebcb9fabd27bc7c57c764298b1c1f15fff720", size = 11205976 }, + { url = "https://files.pythonhosted.org/packages/a8/d7/de94cc89833b5de455750686c17c9e10f4e1ab7ccdc5521b8fe911d1477e/ruff-0.8.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:13e9ec6d6b55f6da412d59953d65d66e760d583dd3c1c72bf1f26435b5bfdbae", size = 10792039 }, + { url = "https://files.pythonhosted.org/packages/6d/15/3e4906559248bdbb74854af684314608297a05b996062c9d72e0ef7c7097/ruff-0.8.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:97d9aefef725348ad77d6db98b726cfdb075a40b936c7984088804dfd38268a7", size = 10400088 }, + { url = "https://files.pythonhosted.org/packages/a2/21/9ed4c0e8133cb4a87a18d470f534ad1a8a66d7bec493bcb8bda2d1a5d5be/ruff-0.8.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ab78e33325a6f5374e04c2ab924a3367d69a0da36f8c9cb6b894a62017506111", size = 10900814 }, + { url = "https://files.pythonhosted.org/packages/0d/5d/122a65a18955bd9da2616b69bc839351f8baf23b2805b543aa2f0aed72b5/ruff-0.8.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8ef06f66f4a05c3ddbc9121a8b0cecccd92c5bf3dd43b5472ffe40b8ca10f0f8", size = 11268828 }, + { url = "https://files.pythonhosted.org/packages/43/a9/1676ee9106995381e3d34bccac5bb28df70194167337ed4854c20f27c7ba/ruff-0.8.4-py3-none-win32.whl", hash = "sha256:552fb6d861320958ca5e15f28b20a3d071aa83b93caee33a87b471f99a6c0835", size = 8805621 }, + { url = "https://files.pythonhosted.org/packages/10/98/ed6b56a30ee76771c193ff7ceeaf1d2acc98d33a1a27b8479cbdb5c17a23/ruff-0.8.4-py3-none-win_amd64.whl", hash = "sha256:f21a1143776f8656d7f364bd264a9d60f01b7f52243fbe90e7670c0dfe0cf65d", size = 9660086 }, + { url = "https://files.pythonhosted.org/packages/13/9f/026e18ca7d7766783d779dae5e9c656746c6ede36ef73c6d934aaf4a6dec/ruff-0.8.4-py3-none-win_arm64.whl", hash = "sha256:9183dd615d8df50defa8b1d9a074053891ba39025cf5ae88e8bcb52edcc4bf08", size = 9074500 }, ] [[package]] name = "scikit-learn" -version = "1.5.2" +version = "1.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "joblib" }, @@ -4866,28 +4979,32 @@ dependencies = [ { name = "scipy" }, { name = "threadpoolctl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/37/59/44985a2bdc95c74e34fef3d10cb5d93ce13b0e2a7baefffe1b53853b502d/scikit_learn-1.5.2.tar.gz", hash = "sha256:b4237ed7b3fdd0a4882792e68ef2545d5baa50aca3bb45aa7df468138ad8f94d", size = 7001680 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/89/be41419b4bec629a4691183a5eb1796f91252a13a5ffa243fd958cad7e91/scikit_learn-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:299406827fb9a4f862626d0fe6c122f5f87f8910b86fe5daa4c32dcd742139b6", size = 12106070 }, - { url = "https://files.pythonhosted.org/packages/bf/e0/3b6d777d375f3b685f433c93384cdb724fb078e1dc8f8ff0950467e56c30/scikit_learn-1.5.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2d4cad1119c77930b235579ad0dc25e65c917e756fe80cab96aa3b9428bd3fb0", size = 10971758 }, - { url = "https://files.pythonhosted.org/packages/7b/31/eb7dd56c371640753953277de11356c46a3149bfeebb3d7dcd90b993715a/scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c412ccc2ad9bf3755915e3908e677b367ebc8d010acbb3f182814524f2e5540", size = 12500080 }, - { url = "https://files.pythonhosted.org/packages/4c/1e/a7c7357e704459c7d56a18df4a0bf08669442d1f8878cc0864beccd6306a/scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a686885a4b3818d9e62904d91b57fa757fc2bed3e465c8b177be652f4dd37c8", size = 13347241 }, - { url = "https://files.pythonhosted.org/packages/48/76/154ebda6794faf0b0f3ccb1b5cd9a19f0a63cb9e1f3d2c61b6114002677b/scikit_learn-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:c15b1ca23d7c5f33cc2cb0a0d6aaacf893792271cddff0edbd6a40e8319bc113", size = 11000477 }, - { url = "https://files.pythonhosted.org/packages/ff/91/609961972f694cb9520c4c3d201e377a26583e1eb83bc5a334c893729214/scikit_learn-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03b6158efa3faaf1feea3faa884c840ebd61b6484167c711548fce208ea09445", size = 12088580 }, - { url = "https://files.pythonhosted.org/packages/cd/7a/19fe32c810c5ceddafcfda16276d98df299c8649e24e84d4f00df4a91e01/scikit_learn-1.5.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1ff45e26928d3b4eb767a8f14a9a6efbf1cbff7c05d1fb0f95f211a89fd4f5de", size = 10975994 }, - { url = "https://files.pythonhosted.org/packages/4c/75/62e49f8a62bf3c60b0e64d0fce540578ee4f0e752765beb2e1dc7c6d6098/scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f763897fe92d0e903aa4847b0aec0e68cadfff77e8a0687cabd946c89d17e675", size = 12465782 }, - { url = "https://files.pythonhosted.org/packages/49/21/3723de321531c9745e40f1badafd821e029d346155b6c79704e0b7197552/scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8b0ccd4a902836493e026c03256e8b206656f91fbcc4fde28c57a5b752561f1", size = 13322034 }, - { url = "https://files.pythonhosted.org/packages/17/1c/ccdd103cfcc9435a18819856fbbe0c20b8fa60bfc3343580de4be13f0668/scikit_learn-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:6c16d84a0d45e4894832b3c4d0bf73050939e21b99b01b6fd59cbb0cf39163b6", size = 11015224 }, - { url = "https://files.pythonhosted.org/packages/a4/db/b485c1ac54ff3bd9e7e6b39d3cc6609c4c76a65f52ab0a7b22b6c3ab0e9d/scikit_learn-1.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f932a02c3f4956dfb981391ab24bda1dbd90fe3d628e4b42caef3e041c67707a", size = 12110344 }, - { url = "https://files.pythonhosted.org/packages/54/1a/7deb52fa23aebb855431ad659b3c6a2e1709ece582cb3a63d66905e735fe/scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3b923d119d65b7bd555c73be5423bf06c0105678ce7e1f558cb4b40b0a5502b1", size = 11033502 }, - { url = "https://files.pythonhosted.org/packages/a1/32/4a7a205b14c11225609b75b28402c196e4396ac754dab6a81971b811781c/scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd", size = 12085794 }, - { url = "https://files.pythonhosted.org/packages/c6/29/044048c5e911373827c0e1d3051321b9183b2a4f8d4e2f11c08fcff83f13/scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6", size = 12945797 }, - { url = "https://files.pythonhosted.org/packages/aa/ce/c0b912f2f31aeb1b756a6ba56bcd84dd1f8a148470526a48515a3f4d48cd/scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1", size = 10985467 }, - { url = "https://files.pythonhosted.org/packages/a4/50/8891028437858cc510e13578fe7046574a60c2aaaa92b02d64aac5b1b412/scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5", size = 12025584 }, - { url = "https://files.pythonhosted.org/packages/d2/79/17feef8a1c14149436083bec0e61d7befb4812e272d5b20f9d79ea3e9ab1/scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908", size = 10959795 }, - { url = "https://files.pythonhosted.org/packages/b1/c8/f08313f9e2e656bd0905930ae8bf99a573ea21c34666a813b749c338202f/scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3", size = 12077302 }, - { url = "https://files.pythonhosted.org/packages/a7/48/fbfb4dc72bed0fe31fe045fb30e924909ad03f717c36694351612973b1a9/scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12", size = 13002811 }, - { url = "https://files.pythonhosted.org/packages/a5/e7/0c869f9e60d225a77af90d2aefa7a4a4c0e745b149325d1450f0f0ce5399/scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f", size = 10951354 }, +sdist = { url = "https://files.pythonhosted.org/packages/fa/19/5aa2002044afc297ecaf1e3517ed07bba4aece3b5613b5160c1212995fc8/scikit_learn-1.6.0.tar.gz", hash = "sha256:9d58481f9f7499dff4196927aedd4285a0baec8caa3790efbe205f13de37dd6e", size = 7074944 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/97/55060f91a5e7c4df945e5a69b16148b5f2256e6e1ea3f17da8e27edf9953/scikit_learn-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:366fb3fa47dce90afed3d6106183f4978d6f24cfd595c2373424171b915ee718", size = 12060299 }, + { url = "https://files.pythonhosted.org/packages/36/7b/8c5dfc64a8344ebf2ae493d59af4b3650588051f654e164ff4f9952877b3/scikit_learn-1.6.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:59cd96a8d9f8dfd546f5d6e9787e1b989e981388d7803abbc9efdcde61e47460", size = 11105443 }, + { url = "https://files.pythonhosted.org/packages/25/9f/61544f2a5cae1bc27c97f0ec9ffcc9837e469f215817608840a4ccbb277a/scikit_learn-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7a579606c73a0b3d210e33ea410ea9e1af7933fe324cb7e6fbafae4ea5948", size = 12637137 }, + { url = "https://files.pythonhosted.org/packages/50/79/d21599fc44d2d497ced440480670b6314ebc00308e3bae0d0ebca44cd481/scikit_learn-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a46d3ca0f11a540b8eaddaf5e38172d8cd65a86cb3e3632161ec96c0cffb774c", size = 13490128 }, + { url = "https://files.pythonhosted.org/packages/ff/87/788da20cfefcd261123d4bb015b2de076e49cdd3b811b55e6811acd3cb21/scikit_learn-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:5be4577769c5dde6e1b53de8e6520f9b664ab5861dd57acee47ad119fd7405d6", size = 11118524 }, + { url = "https://files.pythonhosted.org/packages/07/95/070d6e70f735d13f1c10afebb65ba3526125b7d6c6fc7022651a4a061148/scikit_learn-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1f50b4f24cf12a81c3c09958ae3b864d7534934ca66ded3822de4996d25d7285", size = 12095168 }, + { url = "https://files.pythonhosted.org/packages/72/3d/0381e3a59ebd4154e6a61b0ceaf299c3c141035033dd3b868776cd9af02d/scikit_learn-1.6.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:eb9ae21f387826da14b0b9cb1034f5048ddb9182da429c689f5f4a87dc96930b", size = 11108880 }, + { url = "https://files.pythonhosted.org/packages/fe/2d/0999ae3eed2ac67b1b3cd7fc33370bd5ca59a7514ffe43ae2b6f3cd85b9b/scikit_learn-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0baa91eeb8c32632628874a5c91885eaedd23b71504d24227925080da075837a", size = 12585449 }, + { url = "https://files.pythonhosted.org/packages/0e/ec/1b15b59c6cc7a993320a52234369e787f50345a4753e50d5a015a91e1a20/scikit_learn-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c716d13ba0a2f8762d96ff78d3e0cde90bc9c9b5c13d6ab6bb9b2d6ca6705fd", size = 13489728 }, + { url = "https://files.pythonhosted.org/packages/96/a2/cbfb5743de748d574ffdfd557e9cb29ba4f8b8a3e07836c6c176f713de2f/scikit_learn-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:9aafd94bafc841b626681e626be27bf1233d5a0f20f0a6fdb4bee1a1963c6643", size = 11132946 }, + { url = "https://files.pythonhosted.org/packages/18/0c/a5de627aa57b028aea7026cb3bbeaf63be3158adc118212d6cc7843d939a/scikit_learn-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:04a5ba45c12a5ff81518aa4f1604e826a45d20e53da47b15871526cda4ff5174", size = 12096999 }, + { url = "https://files.pythonhosted.org/packages/a3/7d/02a96e6fb28ddb213e84b1b4a44148d26ec96fc9db9c74e050277e009892/scikit_learn-1.6.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:21fadfc2ad7a1ce8bd1d90f23d17875b84ec765eecbbfc924ff11fb73db582ce", size = 11160579 }, + { url = "https://files.pythonhosted.org/packages/70/28/77b071f541d75247e6c3403f19aaa634371e972691f6aa1838ca9fd4cc52/scikit_learn-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30f34bb5fde90e020653bb84dcb38b6c83f90c70680dbd8c38bd9becbad7a127", size = 12246543 }, + { url = "https://files.pythonhosted.org/packages/17/0e/e6bb84074f1081245a165c0ee775ecef24beae9d2f2e24bcac0c9f155f13/scikit_learn-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dad624cffe3062276a0881d4e441bc9e3b19d02d17757cd6ae79a9d192a0027", size = 13140402 }, + { url = "https://files.pythonhosted.org/packages/21/1d/3df58df8bd425f425df9f90b316618ace62b7f1f838ac1580191025cc735/scikit_learn-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2fce7950a3fad85e0a61dc403df0f9345b53432ac0e47c50da210d22c60b6d85", size = 11103596 }, + { url = "https://files.pythonhosted.org/packages/2e/f4/c3b51920cf310169d19d07855a7bdf51a9b065314877d9a58c0c60d08eea/scikit_learn-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e5453b2e87ef8accedc5a8a4e6709f887ca01896cd7cc8a174fe39bd4bb00aef", size = 12002532 }, + { url = "https://files.pythonhosted.org/packages/e4/76/cfb0778a84c30df272f1c41fc7b3bd3ffac6e8b02ee6a078a592d35cf73f/scikit_learn-1.6.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5fe11794236fb83bead2af26a87ced5d26e3370b8487430818b915dafab1724e", size = 11088997 }, + { url = "https://files.pythonhosted.org/packages/2b/8d/4563419d742b852e50871fa3494a8dd0304610601359209a2e614e200260/scikit_learn-1.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61fe3dcec0d82ae280877a818ab652f4988371e32dd5451e75251bece79668b1", size = 12203192 }, + { url = "https://files.pythonhosted.org/packages/15/a4/f4fdcdd11d82837804c888097ad02aa6381c4bbd57b9d3074ecf9eba8f42/scikit_learn-1.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44e3a51e181933bdf9a4953cc69c6025b40d2b49e238233f149b98849beb4bf", size = 13164436 }, + { url = "https://files.pythonhosted.org/packages/1a/e1/32bdcf8f918de5a156da6886aba24a3b5718d267954bd34555be896289f0/scikit_learn-1.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:a17860a562bac54384454d40b3f6155200c1c737c9399e6a97962c63fce503ac", size = 11064779 }, + { url = "https://files.pythonhosted.org/packages/c6/8d/14464bea220bc02879f9e8d905c4b0a44b5c12afde6c375720b6f41d9407/scikit_learn-1.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:98717d3c152f6842d36a70f21e1468fb2f1a2f8f2624d9a3f382211798516426", size = 11962472 }, + { url = "https://files.pythonhosted.org/packages/b4/69/66899cdc65986188e0e255e52ee93dee5101a72f139ee05f263dfff2053a/scikit_learn-1.6.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:34e20bfac8ff0ebe0ff20fb16a4d6df5dc4cc9ce383e00c2ab67a526a3c67b18", size = 11104864 }, + { url = "https://files.pythonhosted.org/packages/3c/32/2c63bc108cc5438b116a0c6fd25c6126dd14c03118724385f10a3d218ee8/scikit_learn-1.6.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba06d75815406091419e06dd650b91ebd1c5f836392a0d833ff36447c2b1bfa", size = 12435734 }, + { url = "https://files.pythonhosted.org/packages/0c/f5/9434dff19e04a334bfb30df90511904263c48a422a9952d91d8de5c3aa62/scikit_learn-1.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b6916d1cec1ff163c7d281e699d7a6a709da2f2c5ec7b10547e08cc788ddd3ae", size = 11329803 }, ] [[package]] @@ -4958,11 +5075,11 @@ wheels = [ [[package]] name = "setuptools" -version = "75.3.0" +version = "75.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ed/22/a438e0caa4576f8c383fa4d35f1cc01655a46c75be358960d815bfbb12bd/setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686", size = 1351577 } +sdist = { url = "https://files.pythonhosted.org/packages/43/54/292f26c208734e9a7f067aea4a7e282c080750c4546559b58e2e45413ca0/setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6", size = 1337429 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/12/282ee9bce8b58130cb762fbc9beabd531549952cac11fc56add11dcb7ea0/setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd", size = 1251070 }, + { url = "https://files.pythonhosted.org/packages/55/21/47d163f615df1d30c094f6c8bbb353619274edccf0327b185cc2493c2c33/setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d", size = 1224032 }, ] [[package]] @@ -5002,11 +5119,11 @@ wheels = [ [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] @@ -5020,7 +5137,7 @@ wheels = [ [[package]] name = "snowflake-connector-python" -version = "3.12.3" +version = "3.12.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asn1crypto" }, @@ -5040,23 +5157,23 @@ dependencies = [ { name = "tomlkit" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/14/93/cc9bd420bb4fc58f16470009613e98e2626af2711bc3caed566b2c601763/snowflake_connector_python-3.12.3.tar.gz", hash = "sha256:02873c7f7a3b10322e28dddc2be6907f8ab8ecad93d6d6af14c77c2f53091b88", size = 742358 } +sdist = { url = "https://files.pythonhosted.org/packages/6b/de/f43d9c827ccc1974696ffd3c0495e2d4e98b0414b2353b7de932621f23dd/snowflake_connector_python-3.12.4.tar.gz", hash = "sha256:289e0691dfbf8ec8b7a8f58bcbb95a819890fe5e5b278fdbfc885059a63a946f", size = 743445 } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/88/56aece3e52d954bbaa91a92ca30376900f6647eae612e9572bdcdecd1352/snowflake_connector_python-3.12.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:497a096fc379ef0846b2f1cf11a8d7620f0d090f08a77d9e93473845014d57d1", size = 957280 }, - { url = "https://files.pythonhosted.org/packages/2d/7d/700e16bf3d7aa8d586d3379bf52fd7d636fe22f002d1b3e2d232fc7b5f47/snowflake_connector_python-3.12.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:055c5808d524497213e4cc9ae91ec3e46cb8342b314e78bc3e139d733dc16741", size = 969915 }, - { url = "https://files.pythonhosted.org/packages/0e/4a/812b15c132d755fc97da7e60aefe722dcb43fa260deb5b7c0ab82db8f5d9/snowflake_connector_python-3.12.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a5dc512d62ef693041ed2ad82931231caddc16e14ffc2842da3e3dd4240b83d", size = 2496130 }, - { url = "https://files.pythonhosted.org/packages/6b/e0/bd56fdeb8449227b2e6372cbe4ee927dd082ebb7f401300e1f712284d2dc/snowflake_connector_python-3.12.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a46448f7279d444084eb84a9cddea67662e80ccfaddf41713b9e9aab2b1242e9", size = 2519376 }, - { url = "https://files.pythonhosted.org/packages/2e/22/25ef9474304d0fa72aa6e9dc41e1ca6981d9481209b6ee74f4d338810bc6/snowflake_connector_python-3.12.3-cp310-cp310-win_amd64.whl", hash = "sha256:821b774b77129ce9f03729456ac1f21d69fedb50e5ce957178131c7bb3d8279f", size = 917514 }, - { url = "https://files.pythonhosted.org/packages/1b/9d/f7de603214ad94bee73a699528b1b4fff3143dd0636b1726141a797899b0/snowflake_connector_python-3.12.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82290134978d11628026b447052219ce8d880e36937204f1f0332dfc3f2e92e9", size = 957377 }, - { url = "https://files.pythonhosted.org/packages/dd/af/7c3bd6f0018f97dbfeac25b95cdb38c76799cfae7a835f5cb07ff42fdf53/snowflake_connector_python-3.12.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:20b5c8000ee9cee11b0f9a6ae26640f0d498ce77f7e2ec649a2f0d306523792d", size = 970013 }, - { url = "https://files.pythonhosted.org/packages/73/d5/3b379cbe724a5a1c6bd63d41390b680d322a562f4e16d521d1ebc532c89a/snowflake_connector_python-3.12.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6500d16bdbd37da88e589cc3e82b90272471d3aabfe4a79ec1cf4696675acf", size = 2519194 }, - { url = "https://files.pythonhosted.org/packages/39/7f/e8b9805090843b730d0eea59725d8fce5a184736bc9d24dfc508c94867a5/snowflake_connector_python-3.12.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b455ba117a68da436e253899674fae1a93669eaefdde8a903c03eb65b7e87c86", size = 2541605 }, - { url = "https://files.pythonhosted.org/packages/0f/c3/9dc2397aa4c06fb7338ebf91c6973b272b19022665c515ba4096df5a232e/snowflake_connector_python-3.12.3-cp311-cp311-win_amd64.whl", hash = "sha256:205219fcaeee2d33db5d0d023d60518e3bd8272ce1679be2199d7f362d255054", size = 917606 }, - { url = "https://files.pythonhosted.org/packages/cb/5b/46525d837038d430dd5a992c1c25d96df4ab015e95df62b534475bbd58d4/snowflake_connector_python-3.12.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3d830ca32c864b730cba5d92900d850752199635c4fb0ae0a70ee677f62aee70", size = 956807 }, - { url = "https://files.pythonhosted.org/packages/87/0e/0fb0f8c924a55a6044e43d03a90222b9680f9ab9a62aeaa074d1c7a49fb4/snowflake_connector_python-3.12.3-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:597b0c74ec57ba693191ae2de8db9536e349ee32cab152df657473e498b6fd87", size = 968290 }, - { url = "https://files.pythonhosted.org/packages/40/0b/ec592cc0fed94b4d30c82a1a1a9cc6e85f186a86de66b7e0278f0295b681/snowflake_connector_python-3.12.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2215d8a4c5e25ea0d2183fe693c3fdf058cd6035e5c84710d532dc04ab4ffd31", size = 2533488 }, - { url = "https://files.pythonhosted.org/packages/88/3b/d127590967f20a145199141916a40c61e47e9509ef3d6204d2d3b58c76e9/snowflake_connector_python-3.12.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ba9c261904c1ba7cae6035c7881224cf979da39c8b7c7cb10236fdfc57e505", size = 2557098 }, - { url = "https://files.pythonhosted.org/packages/5b/a3/778daf70f6ef40d268eddd02e49e6107d6b5b63d4b942ad6c55190834901/snowflake_connector_python-3.12.3-cp312-cp312-win_amd64.whl", hash = "sha256:f0d0fcb948ef0812ab162ec9767622f345554043a07439c0c1a9474c86772320", size = 915868 }, + { url = "https://files.pythonhosted.org/packages/53/6c/edc8909e424654a7a3c18cbf804d8a35c17a65a2131f866a87ed8e762bd0/snowflake_connector_python-3.12.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f141c159e3244bd660279f87f32e39351b2845fcb75f8138f31d2219f983b05", size = 958038 }, + { url = "https://files.pythonhosted.org/packages/93/a3/34c5082dfb9b555c914f4233224b8bc1f2c4d5668bc71bb587680b8dcd73/snowflake_connector_python-3.12.4-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:091458ba777c24adff659c5c28f0f5bb0bcca8a9b6ecc5641ae25b7c20a8f43d", size = 970665 }, + { url = "https://files.pythonhosted.org/packages/f8/87/9eceaaba58b2ec4f9094fc3a04d953bbabbfdcc05a6b14ef12610c1039f9/snowflake_connector_python-3.12.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23049d341da681ec7131cead71cdf7b1761ae5bcc08bcbdb931dcef6c25e8a5f", size = 2496731 }, + { url = "https://files.pythonhosted.org/packages/66/0a/e35e9e0a142f3779007b0246166a245305858b198ed0dd3a41a3d2405512/snowflake_connector_python-3.12.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc88a09d77a8ce7e445094b2409b606ddb208b5fc9f7c7a379d0255a8d566e9d", size = 2520041 }, + { url = "https://files.pythonhosted.org/packages/79/77/9a238c153600adff8fbd1136d9f4be1e42cb827cbe1865924bfe84653e85/snowflake_connector_python-3.12.4-cp310-cp310-win_amd64.whl", hash = "sha256:3c33fbba036805c1767ea48eb40ffc3fb79d61f2a4bb4e77b571ea6f6a998be8", size = 918272 }, + { url = "https://files.pythonhosted.org/packages/0d/95/e8aac28d6913e4b59f96e6d361f31b9576b5f0abe4d2c4f7decf9f075932/snowflake_connector_python-3.12.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ec5cfaa1526084cf4d0e7849d5ace601245cb4ad9675ab3cd7d799b3abea481", size = 958125 }, + { url = "https://files.pythonhosted.org/packages/67/b6/a847a94e03bdf39010048feacd57f250a91a655eed333d7d32b165f65201/snowflake_connector_python-3.12.4-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:ff225824b3a0fa5e822442de72172f97028f04ae183877f1305d538d8d6c5d11", size = 970770 }, + { url = "https://files.pythonhosted.org/packages/0e/91/f97812ae9946944bcd9bfe1965af1cb9b1844919da879d90b90dfd3e5086/snowflake_connector_python-3.12.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9beced2789dc75e8f1e749aa637e7ec9b03302b4ed4b793ae0f1ff32823370e", size = 2519875 }, + { url = "https://files.pythonhosted.org/packages/37/52/500d72079bfb322ebdf3892180ecf3dc73c117b3a966ee8d4bb1378882b2/snowflake_connector_python-3.12.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ea47450a04ff713f3adf28053e34103bd990291e62daee9721c76597af4b2b5", size = 2542320 }, + { url = "https://files.pythonhosted.org/packages/59/92/74ead6bee8dd29fe372002ce59477221e04b9da96ad7aafe584afce02937/snowflake_connector_python-3.12.4-cp311-cp311-win_amd64.whl", hash = "sha256:748f9125854dca07ea471bb2bb3c5bb932a53f9b8a77ba348b50b738c77203ce", size = 918363 }, + { url = "https://files.pythonhosted.org/packages/a5/a3/1cbe0b52b810f069bdc96c372b2d91ac51aeac32986c2832aa3fe0b0b0e5/snowflake_connector_python-3.12.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bcd0371b20d199f15e6a3c0b489bf18e27f2a88c84cf3194b2569ca039fa7d1", size = 957561 }, + { url = "https://files.pythonhosted.org/packages/f4/05/8a5e16bd908a89f36d59686d356890c4bd6a976a487f86274181010f4b49/snowflake_connector_python-3.12.4-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:7900d82a450b206fa2ed6c42cd65d9b3b9fd4547eca1696937175fac2a03ba37", size = 969045 }, + { url = "https://files.pythonhosted.org/packages/79/1b/8f5ab15d224d7bf76533c55cfd8ce73b185ce94d84241f0e900739ce3f37/snowflake_connector_python-3.12.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:300f0562aeea55e40ee03b45205dbef7b78f5ba2f1787a278c7b807e7d8db22c", size = 2533969 }, + { url = "https://files.pythonhosted.org/packages/6e/d9/2e2fd72e0251691b5c54a219256c455141a2d3c104e411b82de598c62553/snowflake_connector_python-3.12.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6762a00948f003be55d7dc5de9de690315d01951a94371ec3db069d9303daba", size = 2558052 }, + { url = "https://files.pythonhosted.org/packages/e8/cb/e0ab230ad5adc9932e595bdbec693b2499d446666daf6cb9cae306a41dd2/snowflake_connector_python-3.12.4-cp312-cp312-win_amd64.whl", hash = "sha256:83ca896790a7463b6c8cd42e1a29b8ea197cc920839ae6ee96a467475eab4ec2", size = 916627 }, ] [[package]] @@ -5079,16 +5196,16 @@ wheels = [ [[package]] name = "sphobjinv" -version = "2.3.1.1" +version = "2.3.1.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "certifi" }, { name = "jsonschema" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/b6/1b601e15bd109d0c5314c8c346d3b04f7de516c9622ac3e5c2d4ef9010da/sphobjinv-2.3.1.1.tar.gz", hash = "sha256:47c603fefd3150fd594b3c68feabfaa1d28f4a67b703494154cac8a7447aa483", size = 267053 } +sdist = { url = "https://files.pythonhosted.org/packages/8c/5e/cf2c54fcc6cc999f64d3a34edeee1ca69d6e1f8aee40772c5f3f036296dc/sphobjinv-2.3.1.2.tar.gz", hash = "sha256:1c874a368460851352d45c92afa172b5c42653b47e2e70d78d61dac93308aa9d", size = 268026 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/ed/3e44fb29ed17193f83ca0dbbb5393ff4a96070b3477d932efc577f24dc1f/sphobjinv-2.3.1.1-py3-none-any.whl", hash = "sha256:d6b4c22d73c2f757794a76f6d32850804062fdc1b4530f35f6c53891fe5ec943", size = 50750 }, + { url = "https://files.pythonhosted.org/packages/9c/4d/103e541e2533df159e1070cd4372b447a0b689e08a49d271b7b950e21f92/sphobjinv-2.3.1.2-py3-none-any.whl", hash = "sha256:66478d1787d28ef3ebeeedad57c592fdea04cf10eeed0df56307c85ab4eee789", size = 50820 }, ] [[package]] @@ -5138,11 +5255,11 @@ wheels = [ [[package]] name = "sqlglot" -version = "25.29.0" +version = "26.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/61/23/fbd5e87750e93471f80499ed2bba978a11144274939bf9b1d22b829c00bb/sqlglot-25.29.0.tar.gz", hash = "sha256:fcb4e2f5cb9a17ca3f003f6c165afcbe0001c0a57d477252727fef56b8f8b352", size = 19594726 } +sdist = { url = "https://files.pythonhosted.org/packages/99/39/35cee255a3de5a4bfbe8780d200761423bb1949249ff541ba81420eebbf5/sqlglot-26.0.1.tar.gz", hash = "sha256:588cde7739029fda310fb7dd49afdc0a20b79e760e4cd6d5e1cd083e7e458b90", size = 19785413 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/6d/97b60d4d5249a1bea207e7319b818e25cba1bf993e132f050ea533fe0867/sqlglot-25.29.0-py3-none-any.whl", hash = "sha256:ab79c50439d77860eb49a0e5d7e0d0b8d19024796f21dec3fd607a3d969c013b", size = 426192 }, + { url = "https://files.pythonhosted.org/packages/62/ac/7cf4f8c133cd2cec68937c87322a5052987f3995f21b87e3d545b4d4aa02/sqlglot-26.0.1-py3-none-any.whl", hash = "sha256:ced4967ce3a4a713d35e2037492fbe1a5187936fdfbd72d7b9ace7815c2d2225", size = 437917 }, ] [[package]] @@ -5276,11 +5393,41 @@ wheels = [ [[package]] name = "tomli" -version = "2.0.2" +version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/b9/de2a5c0144d7d75a57ff355c0c24054f965b2dc3036456ae03a51ea6264b/tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed", size = 16096 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/db/ce8eda256fa131af12e0a76d481711abe4681b6923c27efb9a255c9e4594/tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38", size = 13237 }, +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, ] [[package]] @@ -5303,32 +5450,32 @@ wheels = [ [[package]] name = "tornado" -version = "6.4.1" +version = "6.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/66/398ac7167f1c7835406888a386f6d0d26ee5dbf197d8a571300be57662d3/tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9", size = 500623 } +sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/d9/c33be3c1a7564f7d42d87a8d186371a75fd142097076767a5c27da941fef/tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8", size = 435924 }, - { url = "https://files.pythonhosted.org/packages/2e/0f/721e113a2fac2f1d7d124b3279a1da4c77622e104084f56119875019ffab/tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14", size = 433883 }, - { url = "https://files.pythonhosted.org/packages/13/cf/786b8f1e6fe1c7c675e79657448178ad65e41c1c9765ef82e7f6f765c4c5/tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4", size = 437224 }, - { url = "https://files.pythonhosted.org/packages/e4/8e/a6ce4b8d5935558828b0f30f3afcb2d980566718837b3365d98e34f6067e/tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842", size = 436597 }, - { url = "https://files.pythonhosted.org/packages/22/d4/54f9d12668b58336bd30defe0307e6c61589a3e687b05c366f804b7faaf0/tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3", size = 436797 }, - { url = "https://files.pythonhosted.org/packages/cf/3f/2c792e7afa7dd8b24fad7a2ed3c2f24a5ec5110c7b43a64cb6095cc106b8/tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f", size = 437516 }, - { url = "https://files.pythonhosted.org/packages/71/63/c8fc62745e669ac9009044b889fc531b6f88ac0f5f183cac79eaa950bb23/tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4", size = 436958 }, - { url = "https://files.pythonhosted.org/packages/94/d4/f8ac1f5bd22c15fad3b527e025ce219bd526acdbd903f52053df2baecc8b/tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698", size = 436882 }, - { url = "https://files.pythonhosted.org/packages/4b/3e/a8124c21cc0bbf144d7903d2a0cadab15cadaf683fa39a0f92bc567f0d4d/tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d", size = 438092 }, - { url = "https://files.pythonhosted.org/packages/d9/2f/3f2f05e84a7aff787a96d5fb06821323feb370fe0baed4db6ea7b1088f32/tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7", size = 438532 }, + { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299 }, + { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253 }, + { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602 }, + { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972 }, + { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173 }, + { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892 }, + { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334 }, + { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261 }, + { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463 }, + { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907 }, ] [[package]] name = "tqdm" -version = "4.67.0" +version = "4.67.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "platform_system == 'Windows'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e8/4f/0153c21dc5779a49a0598c445b1978126b1344bab9ee71e53e44877e14e0/tqdm-4.67.0.tar.gz", hash = "sha256:fe5a6f95e6fe0b9755e9469b77b9c3cf850048224ecaa8293d7d2d31f97d869a", size = 169739 } +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/78/57043611a16c655c8350b4c01b8d6abfb38cc2acb475238b62c2146186d7/tqdm-4.67.0-py3-none-any.whl", hash = "sha256:0cd8af9d56911acab92182e88d763100d4788bdf421d251616040cc4d44863be", size = 78590 }, + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, ] [[package]] @@ -5342,7 +5489,7 @@ wheels = [ [[package]] name = "trino" -version = "0.330.0" +version = "0.331.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, @@ -5350,18 +5497,18 @@ dependencies = [ { name = "requests" }, { name = "tzlocal" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/4e/9ac0c8acfff93f8cf34a332e1878d05ad0295a62af1a5355a06c0960cc16/trino-0.330.0.tar.gz", hash = "sha256:1e731be22bc6fb4ce6537287419c3d221faaa8d089f5a05b0f01ef25b860e96e", size = 50675 } +sdist = { url = "https://files.pythonhosted.org/packages/99/80/56716b9ee69e769cd2babc2dfe58d601ea7f244a2e67a7ef02f7fd3bd3df/trino-0.331.0.tar.gz", hash = "sha256:2d9acdf7b19d136c97c98e55599fb9a5556e124282b0a40afb93bdfbb5371708", size = 50851 } wheels = [ - { url = "https://files.pythonhosted.org/packages/53/7e/e73e9ffd871387997f13c96e1ae1db558e678f6606aa1d067dac81f1f6fb/trino-0.330.0-py3-none-any.whl", hash = "sha256:535f612d754338cfefa4b3fe86b63c8c000d21cb5ea476ae4ec4390d5cc37659", size = 53500 }, + { url = "https://files.pythonhosted.org/packages/2d/aa/cce7a726e314fbeae9fed8ed5d6bd4af19796286d7ee82f120e3633da74c/trino-0.331.0-py3-none-any.whl", hash = "sha256:4f909e6c2966d23917e2538bc7f342d5dcc6e512102811fb1e53bdaf15bd49e3", size = 53771 }, ] [[package]] name = "types-python-dateutil" -version = "2.9.0.20241003" +version = "2.9.0.20241206" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/f8/f6ee4c803a7beccffee21bb29a71573b39f7037c224843eff53e5308c16e/types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446", size = 9210 } +sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802 } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/d6/ba5f61958f358028f2e2ba1b8e225b8e263053bd57d3a79e2d2db64c807b/types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d", size = 9693 }, + { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, ] [[package]] @@ -5405,25 +5552,25 @@ wheels = [ [[package]] name = "urllib3" -version = "2.2.3" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, + { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, ] [[package]] name = "virtualenv" -version = "20.27.1" +version = "20.28.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8c/b3/7b6a79c5c8cf6d90ea681310e169cf2db2884f4d583d16c6e1d5a75a4e04/virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba", size = 6491145 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/75/53316a5a8050069228a2f6d11f32046cfa94fbb6cc3f08703f59b873de2e/virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa", size = 7650368 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/92/78324ff89391e00c8f4cf6b8526c41c6ef36b4ea2d2c132250b1a6fc2b8d/virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4", size = 3117838 }, + { url = "https://files.pythonhosted.org/packages/10/f9/0919cf6f1432a8c4baa62511f8f8da8225432d22e83e3476f5be1a1edc6e/virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0", size = 4276702 }, ] [[package]] @@ -5590,80 +5737,80 @@ wheels = [ [[package]] name = "yarl" -version = "1.17.1" +version = "1.18.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/9c/9c0a9bfa683fc1be7fdcd9687635151544d992cccd48892dc5e0a5885a29/yarl-1.17.1.tar.gz", hash = "sha256:067a63fcfda82da6b198fa73079b1ca40b7c9b7994995b6ee38acda728b64d47", size = 178163 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/63/0e1e3626a323f366a8ff8eeb4d2835d403cb505393c2fce00c68c2be9d1a/yarl-1.17.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1794853124e2f663f0ea54efb0340b457f08d40a1cef78edfa086576179c91", size = 140627 }, - { url = "https://files.pythonhosted.org/packages/ff/ef/80c92e43f5ca5dfe964f42080252b669097fdd37d40e8c174e5a10d67d2c/yarl-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fbea1751729afe607d84acfd01efd95e3b31db148a181a441984ce9b3d3469da", size = 93563 }, - { url = "https://files.pythonhosted.org/packages/05/43/add866f8c7e99af126a3ff4a673165537617995a5ae90e86cb95f9a1d4ad/yarl-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ee427208c675f1b6e344a1f89376a9613fc30b52646a04ac0c1f6587c7e46ec", size = 91400 }, - { url = "https://files.pythonhosted.org/packages/b9/44/464aba5761fb7ab448d8854520d98355217481746d2421231b8d07d2de8c/yarl-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b74ff4767d3ef47ffe0cd1d89379dc4d828d4873e5528976ced3b44fe5b0a21", size = 313746 }, - { url = "https://files.pythonhosted.org/packages/c1/0f/3a08d81f1e4ff88b07d62f3bb271603c0e2d063cea12239e500defa800d3/yarl-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:62a91aefff3d11bf60e5956d340eb507a983a7ec802b19072bb989ce120cd948", size = 329234 }, - { url = "https://files.pythonhosted.org/packages/7d/0f/98f29b8637cf13d7589bb7a1fdc4357bcfc0cfc3f20bc65a6970b71a22ec/yarl-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:846dd2e1243407133d3195d2d7e4ceefcaa5f5bf7278f0a9bda00967e6326b04", size = 325776 }, - { url = "https://files.pythonhosted.org/packages/3c/8c/f383fc542a3d2a1837fb0543ce698653f1760cc18954c29e6d6d49713376/yarl-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e844be8d536afa129366d9af76ed7cb8dfefec99f5f1c9e4f8ae542279a6dc3", size = 318659 }, - { url = "https://files.pythonhosted.org/packages/2b/35/742b4a03ca90e116f70a44b24a36d2138f1b1d776a532ddfece4d60cd93d/yarl-1.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc7c92c1baa629cb03ecb0c3d12564f172218fb1739f54bf5f3881844daadc6d", size = 310172 }, - { url = "https://files.pythonhosted.org/packages/9b/fc/f1aba4194861f44673d9b432310cbee2e7c3ffa8ff9bdf165c7eaa9c6e38/yarl-1.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae3476e934b9d714aa8000d2e4c01eb2590eee10b9d8cd03e7983ad65dfbfcba", size = 318283 }, - { url = "https://files.pythonhosted.org/packages/27/0f/2b20100839064d1c75fb85fa6b5cbd68249d96a4b06a5cf25f9eaaf9b32a/yarl-1.17.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c7e177c619342e407415d4f35dec63d2d134d951e24b5166afcdfd1362828e17", size = 317599 }, - { url = "https://files.pythonhosted.org/packages/7b/da/3f2d6643d8cf3003c72587f28a9d9c76829a5b45186cae8f978bac113fc5/yarl-1.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64cc6e97f14cf8a275d79c5002281f3040c12e2e4220623b5759ea7f9868d6a5", size = 323398 }, - { url = "https://files.pythonhosted.org/packages/9e/f8/881c97cc35603ec63b48875d47e36e1b984648826b36ce7affac16e08261/yarl-1.17.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:84c063af19ef5130084db70ada40ce63a84f6c1ef4d3dbc34e5e8c4febb20822", size = 337601 }, - { url = "https://files.pythonhosted.org/packages/81/da/049b354e00b33019c32126f2a40ecbcc320859f619c4304c556cf23a5dc3/yarl-1.17.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:482c122b72e3c5ec98f11457aeb436ae4aecca75de19b3d1de7cf88bc40db82f", size = 338975 }, - { url = "https://files.pythonhosted.org/packages/26/64/e36e808b249d64cfc33caca7e9ef2d7e636e4f9e8529e4fe5ed4813ac5b0/yarl-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:380e6c38ef692b8fd5a0f6d1fa8774d81ebc08cfbd624b1bca62a4d4af2f9931", size = 331078 }, - { url = "https://files.pythonhosted.org/packages/82/cb/6fe205b528cc889f8e13d6d180adbc8721a21a6aac67fc3158294575add3/yarl-1.17.1-cp310-cp310-win32.whl", hash = "sha256:16bca6678a83657dd48df84b51bd56a6c6bd401853aef6d09dc2506a78484c7b", size = 83573 }, - { url = "https://files.pythonhosted.org/packages/55/96/4dcb7110ae4cd53768254fb50ace7bca00e110459e6eff1d16983c513219/yarl-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:561c87fea99545ef7d692403c110b2f99dced6dff93056d6e04384ad3bc46243", size = 89761 }, - { url = "https://files.pythonhosted.org/packages/ec/0f/ce6a2c8aab9946446fb27f1e28f0fd89ce84ae913ab18a92d18078a1c7ed/yarl-1.17.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cbad927ea8ed814622305d842c93412cb47bd39a496ed0f96bfd42b922b4a217", size = 140727 }, - { url = "https://files.pythonhosted.org/packages/9d/df/204f7a502bdc3973cd9fc29e7dfad18ae48b3acafdaaf1ae07c0f41025aa/yarl-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fca4b4307ebe9c3ec77a084da3a9d1999d164693d16492ca2b64594340999988", size = 93560 }, - { url = "https://files.pythonhosted.org/packages/a2/e1/f4d522ae0560c91a4ea31113a50f00f85083be885e1092fc6e74eb43cb1d/yarl-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff5c6771c7e3511a06555afa317879b7db8d640137ba55d6ab0d0c50425cab75", size = 91497 }, - { url = "https://files.pythonhosted.org/packages/f1/82/783d97bf4a226f1a2e59b1966f2752244c2bf4dc89bc36f61d597b8e34e5/yarl-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b29beab10211a746f9846baa39275e80034e065460d99eb51e45c9a9495bcca", size = 339446 }, - { url = "https://files.pythonhosted.org/packages/e5/ff/615600647048d81289c80907165de713fbc566d1e024789863a2f6563ba3/yarl-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a52a1ffdd824fb1835272e125385c32fd8b17fbdefeedcb4d543cc23b332d74", size = 354616 }, - { url = "https://files.pythonhosted.org/packages/a5/04/bfb7adb452bd19dfe0c35354ffce8ebc3086e028e5f8270e409d17da5466/yarl-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:58c8e9620eb82a189c6c40cb6b59b4e35b2ee68b1f2afa6597732a2b467d7e8f", size = 351801 }, - { url = "https://files.pythonhosted.org/packages/10/e0/efe21edacdc4a638ce911f8cabf1c77cac3f60e9819ba7d891b9ceb6e1d4/yarl-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d216e5d9b8749563c7f2c6f7a0831057ec844c68b4c11cb10fc62d4fd373c26d", size = 343381 }, - { url = "https://files.pythonhosted.org/packages/63/f9/7bc7e69857d6fc3920ecd173592f921d5701f4a0dd3f2ae293b386cfa3bf/yarl-1.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881764d610e3269964fc4bb3c19bb6fce55422828e152b885609ec176b41cf11", size = 337093 }, - { url = "https://files.pythonhosted.org/packages/93/52/99da61947466275ff17d7bc04b0ac31dfb7ec699bd8d8985dffc34c3a913/yarl-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8c79e9d7e3d8a32d4824250a9c6401194fb4c2ad9a0cec8f6a96e09a582c2cc0", size = 346619 }, - { url = "https://files.pythonhosted.org/packages/91/8a/8aaad86a35a16e485ba0e5de0d2ae55bf8dd0c9f1cccac12be4c91366b1d/yarl-1.17.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:299f11b44d8d3a588234adbe01112126010bd96d9139c3ba7b3badd9829261c3", size = 344347 }, - { url = "https://files.pythonhosted.org/packages/af/b6/97f29f626b4a1768ffc4b9b489533612cfcb8905c90f745aade7b2eaf75e/yarl-1.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cc7d768260f4ba4ea01741c1b5fe3d3a6c70eb91c87f4c8761bbcce5181beafe", size = 350316 }, - { url = "https://files.pythonhosted.org/packages/d7/98/8e0e8b812479569bdc34d66dd3e2471176ca33be4ff5c272a01333c4b269/yarl-1.17.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:de599af166970d6a61accde358ec9ded821234cbbc8c6413acfec06056b8e860", size = 361336 }, - { url = "https://files.pythonhosted.org/packages/9e/d3/d1507efa0a85c25285f8eb51df9afa1ba1b6e446dda781d074d775b6a9af/yarl-1.17.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2b24ec55fad43e476905eceaf14f41f6478780b870eda5d08b4d6de9a60b65b4", size = 365350 }, - { url = "https://files.pythonhosted.org/packages/22/ba/ee7f1830449c96bae6f33210b7d89e8aaf3079fbdaf78ac398e50a9da404/yarl-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9fb815155aac6bfa8d86184079652c9715c812d506b22cfa369196ef4e99d1b4", size = 357689 }, - { url = "https://files.pythonhosted.org/packages/a0/85/321c563dc5afe1661108831b965c512d185c61785400f5606006507d2e18/yarl-1.17.1-cp311-cp311-win32.whl", hash = "sha256:7615058aabad54416ddac99ade09a5510cf77039a3b903e94e8922f25ed203d7", size = 83635 }, - { url = "https://files.pythonhosted.org/packages/bc/da/543a32c00860588ff1235315b68f858cea30769099c32cd22b7bb266411b/yarl-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:14bc88baa44e1f84164a392827b5defb4fa8e56b93fecac3d15315e7c8e5d8b3", size = 90218 }, - { url = "https://files.pythonhosted.org/packages/5d/af/e25615c7920396219b943b9ff8b34636ae3e1ad30777649371317d7f05f8/yarl-1.17.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:327828786da2006085a4d1feb2594de6f6d26f8af48b81eb1ae950c788d97f61", size = 141839 }, - { url = "https://files.pythonhosted.org/packages/83/5e/363d9de3495c7c66592523f05d21576a811015579e0c87dd38c7b5788afd/yarl-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc353841428d56b683a123a813e6a686e07026d6b1c5757970a877195f880c2d", size = 94125 }, - { url = "https://files.pythonhosted.org/packages/e3/a2/b65447626227ebe36f18f63ac551790068bf42c69bb22dfa3ae986170728/yarl-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c73df5b6e8fabe2ddb74876fb82d9dd44cbace0ca12e8861ce9155ad3c886139", size = 92048 }, - { url = "https://files.pythonhosted.org/packages/a1/f5/2ef86458446f85cde10582054fd5113495ef8ce8477da35aaaf26d2970ef/yarl-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bdff5e0995522706c53078f531fb586f56de9c4c81c243865dd5c66c132c3b5", size = 331472 }, - { url = "https://files.pythonhosted.org/packages/f3/6b/1ba79758ba352cdf2ad4c20cab1b982dd369aa595bb0d7601fc89bf82bee/yarl-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06157fb3c58f2736a5e47c8fcbe1afc8b5de6fb28b14d25574af9e62150fcaac", size = 341260 }, - { url = "https://files.pythonhosted.org/packages/2d/41/4e07c2afca3f9ed3da5b0e38d43d0280d9b624a3d5c478c425e5ce17775c/yarl-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1654ec814b18be1af2c857aa9000de7a601400bd4c9ca24629b18486c2e35463", size = 340882 }, - { url = "https://files.pythonhosted.org/packages/c3/c0/cd8e94618983c1b811af082e1a7ad7764edb3a6af2bc6b468e0e686238ba/yarl-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6595c852ca544aaeeb32d357e62c9c780eac69dcd34e40cae7b55bc4fb1147", size = 336648 }, - { url = "https://files.pythonhosted.org/packages/ac/fc/73ec4340d391ffbb8f34eb4c55429784ec9f5bd37973ce86d52d67135418/yarl-1.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:459e81c2fb920b5f5df744262d1498ec2c8081acdcfe18181da44c50f51312f7", size = 325019 }, - { url = "https://files.pythonhosted.org/packages/57/48/da3ebf418fc239d0a156b3bdec6b17a5446f8d2dea752299c6e47b143a85/yarl-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e48cdb8226644e2fbd0bdb0a0f87906a3db07087f4de77a1b1b1ccfd9e93685", size = 342841 }, - { url = "https://files.pythonhosted.org/packages/5d/79/107272745a470a8167924e353a5312eb52b5a9bb58e22686adc46c94f7ec/yarl-1.17.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d9b6b28a57feb51605d6ae5e61a9044a31742db557a3b851a74c13bc61de5172", size = 341433 }, - { url = "https://files.pythonhosted.org/packages/30/9c/6459668b3b8dcc11cd061fc53e12737e740fb6b1575b49c84cbffb387b3a/yarl-1.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e594b22688d5747b06e957f1ef822060cb5cb35b493066e33ceac0cf882188b7", size = 344927 }, - { url = "https://files.pythonhosted.org/packages/c5/0b/93a17ed733aca8164fc3a01cb7d47b3f08854ce4f957cce67a6afdb388a0/yarl-1.17.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5f236cb5999ccd23a0ab1bd219cfe0ee3e1c1b65aaf6dd3320e972f7ec3a39da", size = 355732 }, - { url = "https://files.pythonhosted.org/packages/9a/63/ead2ed6aec3c59397e135cadc66572330325a0c24cd353cd5c94f5e63463/yarl-1.17.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a2a64e62c7a0edd07c1c917b0586655f3362d2c2d37d474db1a509efb96fea1c", size = 362123 }, - { url = "https://files.pythonhosted.org/packages/89/bf/f6b75b4c2fcf0e7bb56edc0ed74e33f37fac45dc40e5a52a3be66b02587a/yarl-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d0eea830b591dbc68e030c86a9569826145df485b2b4554874b07fea1275a199", size = 356355 }, - { url = "https://files.pythonhosted.org/packages/45/1f/50a0257cd07eef65c8c65ad6a21f5fb230012d659e021aeb6ac8a7897bf6/yarl-1.17.1-cp312-cp312-win32.whl", hash = "sha256:46ddf6e0b975cd680eb83318aa1d321cb2bf8d288d50f1754526230fcf59ba96", size = 83279 }, - { url = "https://files.pythonhosted.org/packages/bc/82/fafb2c1268d63d54ec08b3a254fbe51f4ef098211501df646026717abee3/yarl-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:117ed8b3732528a1e41af3aa6d4e08483c2f0f2e3d3d7dca7cf538b3516d93df", size = 89590 }, - { url = "https://files.pythonhosted.org/packages/06/1e/5a93e3743c20eefbc68bd89334d9c9f04f3f2334380f7bbf5e950f29511b/yarl-1.17.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5d1d42556b063d579cae59e37a38c61f4402b47d70c29f0ef15cee1acaa64488", size = 139974 }, - { url = "https://files.pythonhosted.org/packages/a1/be/4e0f6919013c7c5eaea5c31811c551ccd599d2fc80aa3dd6962f1bbdcddd/yarl-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0167540094838ee9093ef6cc2c69d0074bbf84a432b4995835e8e5a0d984374", size = 93364 }, - { url = "https://files.pythonhosted.org/packages/73/f0/650f994bc491d0cb85df8bb45392780b90eab1e175f103a5edc61445ff67/yarl-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2f0a6423295a0d282d00e8701fe763eeefba8037e984ad5de44aa349002562ac", size = 91177 }, - { url = "https://files.pythonhosted.org/packages/f3/e8/9945ed555d14b43ede3ae8b1bd73e31068a694cad2b9d3cad0a28486c2eb/yarl-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b078134f48552c4d9527db2f7da0b5359abd49393cdf9794017baec7506170", size = 333086 }, - { url = "https://files.pythonhosted.org/packages/a6/c0/7d167e48e14d26639ca066825af8da7df1d2fcdba827e3fd6341aaf22a3b/yarl-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d401f07261dc5aa36c2e4efc308548f6ae943bfff20fcadb0a07517a26b196d8", size = 343661 }, - { url = "https://files.pythonhosted.org/packages/fa/81/80a266517531d4e3553aecd141800dbf48d02e23ebd52909e63598a80134/yarl-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5f1ac7359e17efe0b6e5fec21de34145caef22b260e978336f325d5c84e6938", size = 345196 }, - { url = "https://files.pythonhosted.org/packages/b0/77/6adc482ba7f2dc6c0d9b3b492e7cd100edfac4cfc3849c7ffa26fd7beb1a/yarl-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f63d176a81555984e91f2c84c2a574a61cab7111cc907e176f0f01538e9ff6e", size = 338743 }, - { url = "https://files.pythonhosted.org/packages/6d/cc/f0c4c0b92ff3ada517ffde2b127406c001504b225692216d969879ada89a/yarl-1.17.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e275792097c9f7e80741c36de3b61917aebecc08a67ae62899b074566ff8556", size = 326719 }, - { url = "https://files.pythonhosted.org/packages/18/3b/7bfc80d3376b5fa162189993a87a5a6a58057f88315bd0ea00610055b57a/yarl-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:81713b70bea5c1386dc2f32a8f0dab4148a2928c7495c808c541ee0aae614d67", size = 345826 }, - { url = "https://files.pythonhosted.org/packages/2e/66/cf0b0338107a5c370205c1a572432af08f36ca12ecce127f5b558398b4fd/yarl-1.17.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:aa46dce75078fceaf7cecac5817422febb4355fbdda440db55206e3bd288cfb8", size = 340335 }, - { url = "https://files.pythonhosted.org/packages/2f/52/b084b0eec0fd4d2490e1d33ace3320fad704c5f1f3deaa709f929d2d87fc/yarl-1.17.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1ce36ded585f45b1e9bb36d0ae94765c6608b43bd2e7f5f88079f7a85c61a4d3", size = 345301 }, - { url = "https://files.pythonhosted.org/packages/ef/38/9e2036d948efd3bafcdb4976cb212166fded76615f0dfc6c1492c4ce4784/yarl-1.17.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2d374d70fdc36f5863b84e54775452f68639bc862918602d028f89310a034ab0", size = 354205 }, - { url = "https://files.pythonhosted.org/packages/81/c1/13dfe1e70b86811733316221c696580725ceb1c46d4e4db852807e134310/yarl-1.17.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2d9f0606baaec5dd54cb99667fcf85183a7477f3766fbddbe3f385e7fc253299", size = 360501 }, - { url = "https://files.pythonhosted.org/packages/91/87/756e05c74cd8bf9e71537df4a2cae7e8211a9ebe0d2350a3e26949e1e41c/yarl-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b0341e6d9a0c0e3cdc65857ef518bb05b410dbd70d749a0d33ac0f39e81a4258", size = 359452 }, - { url = "https://files.pythonhosted.org/packages/06/b2/b2bb09c1e6d59e1c9b1b36a86caa473e22c3dbf26d1032c030e9bfb554dc/yarl-1.17.1-cp313-cp313-win32.whl", hash = "sha256:2e7ba4c9377e48fb7b20dedbd473cbcbc13e72e1826917c185157a137dac9df2", size = 308904 }, - { url = "https://files.pythonhosted.org/packages/f3/27/f084d9a5668853c1f3b246620269b14ee871ef3c3cc4f3a1dd53645b68ec/yarl-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:949681f68e0e3c25377462be4b658500e85ca24323d9619fdc41f68d46a1ffda", size = 314637 }, - { url = "https://files.pythonhosted.org/packages/52/ad/1fe7ff5f3e8869d4c5070f47b96bac2b4d15e67c100a8278d8e7876329fc/yarl-1.17.1-py3-none-any.whl", hash = "sha256:f1790a4b1e8e8e028c391175433b9c8122c39b46e1663228158e61e6f915bf06", size = 44352 }, +sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/98/e005bc608765a8a5569f58e650961314873c8469c333616eb40bff19ae97/yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34", size = 141458 }, + { url = "https://files.pythonhosted.org/packages/df/5d/f8106b263b8ae8a866b46d9be869ac01f9b3fb7f2325f3ecb3df8003f796/yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7", size = 94365 }, + { url = "https://files.pythonhosted.org/packages/56/3e/d8637ddb9ba69bf851f765a3ee288676f7cf64fb3be13760c18cbc9d10bd/yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed", size = 92181 }, + { url = "https://files.pythonhosted.org/packages/76/f9/d616a5c2daae281171de10fba41e1c0e2d8207166fc3547252f7d469b4e1/yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde", size = 315349 }, + { url = "https://files.pythonhosted.org/packages/bb/b4/3ea5e7b6f08f698b3769a06054783e434f6d59857181b5c4e145de83f59b/yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b", size = 330494 }, + { url = "https://files.pythonhosted.org/packages/55/f1/e0fc810554877b1b67420568afff51b967baed5b53bcc983ab164eebf9c9/yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5", size = 326927 }, + { url = "https://files.pythonhosted.org/packages/a9/42/b1753949b327b36f210899f2dd0a0947c0c74e42a32de3f8eb5c7d93edca/yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc", size = 319703 }, + { url = "https://files.pythonhosted.org/packages/f0/6d/e87c62dc9635daefb064b56f5c97df55a2e9cc947a2b3afd4fd2f3b841c7/yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd", size = 310246 }, + { url = "https://files.pythonhosted.org/packages/e3/ef/e2e8d1785cdcbd986f7622d7f0098205f3644546da7919c24b95790ec65a/yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990", size = 319730 }, + { url = "https://files.pythonhosted.org/packages/fc/15/8723e22345bc160dfde68c4b3ae8b236e868f9963c74015f1bc8a614101c/yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db", size = 321681 }, + { url = "https://files.pythonhosted.org/packages/86/09/bf764e974f1516efa0ae2801494a5951e959f1610dd41edbfc07e5e0f978/yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62", size = 324812 }, + { url = "https://files.pythonhosted.org/packages/f6/4c/20a0187e3b903c97d857cf0272d687c1b08b03438968ae8ffc50fe78b0d6/yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760", size = 337011 }, + { url = "https://files.pythonhosted.org/packages/c9/71/6244599a6e1cc4c9f73254a627234e0dad3883ece40cc33dce6265977461/yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b", size = 338132 }, + { url = "https://files.pythonhosted.org/packages/af/f5/e0c3efaf74566c4b4a41cb76d27097df424052a064216beccae8d303c90f/yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690", size = 331849 }, + { url = "https://files.pythonhosted.org/packages/8a/b8/3d16209c2014c2f98a8f658850a57b716efb97930aebf1ca0d9325933731/yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6", size = 84309 }, + { url = "https://files.pythonhosted.org/packages/fd/b7/2e9a5b18eb0fe24c3a0e8bae994e812ed9852ab4fd067c0107fadde0d5f0/yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8", size = 90484 }, + { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555 }, + { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351 }, + { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286 }, + { url = "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8", size = 340649 }, + { url = "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca", size = 356623 }, + { url = "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8", size = 354007 }, + { url = "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae", size = 344145 }, + { url = "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3", size = 336133 }, + { url = "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb", size = 347967 }, + { url = "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e", size = 346397 }, + { url = "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59", size = 350206 }, + { url = "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d", size = 362089 }, + { url = "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e", size = 366267 }, + { url = "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a", size = 359141 }, + { url = "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1", size = 84402 }, + { url = "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5", size = 91030 }, + { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 }, + { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 }, + { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 }, + { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 }, + { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 }, + { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 }, + { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 }, + { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 }, + { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 }, + { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 }, + { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 }, + { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 }, + { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 }, + { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 }, + { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 }, + { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 }, + { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789 }, + { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144 }, + { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974 }, + { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587 }, + { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386 }, + { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421 }, + { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384 }, + { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689 }, + { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453 }, + { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872 }, + { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497 }, + { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981 }, + { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229 }, + { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383 }, + { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152 }, + { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723 }, + { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, ] [[package]]