This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-3-test by this push:
new ebca37fd955 [v3-3-test] Keep not-ready providers out of the all extra
(#71165) (#71167)
ebca37fd955 is described below
commit ebca37fd955ee683e5a019bc5a67d06fc8495d14
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Aug 5 17:43:27 2026 +0800
[v3-3-test] Keep not-ready providers out of the all extra (#71165) (#71167)
A not-ready provider has never been published, so naming it in an extra
makes
that extra impossible to satisfy - there is no version on PyPI to resolve
to.
It broke constraints generation for 3.3.1rc1, where apache-airflow[all]
could
not resolve because it required apache-airflow-providers-ibm-mq.
Only the extras change. The source tree still holds those providers, so they
stay in the workspace and under mypy - which is how CI installs and checks
them.
(cherry picked from commit fb459dec5072051563d1924b57fa6f85fb265381)
---
.github/workflows/additional-ci-image-checks.yml | 17 +-
.github/workflows/refresh-image-cache.yml | 136 +++++++++
dev/breeze/tests/test_selective_checks.py | 38 +++
.../providers/apache/kafka/plugins/__init__.py | 16 +
.../providers/openai/example_dags/__init__.py | 16 +
pyproject.toml | 4 -
scripts/ci/prek/common_prek_utils.py | 17 +-
scripts/ci/prek/update_airflow_pyproject_toml.py | 20 +-
uv.lock | 338 ++++++++++-----------
9 files changed, 415 insertions(+), 187 deletions(-)
diff --git a/.github/workflows/additional-ci-image-checks.yml
b/.github/workflows/additional-ci-image-checks.yml
index d0a4cb55fa6..051fbd02029 100644
--- a/.github/workflows/additional-ci-image-checks.yml
+++ b/.github/workflows/additional-ci-image-checks.yml
@@ -91,15 +91,18 @@ jobs:
# We only push CI cache as PROD cache usually does not gain as much from
fresh cache because
# it uses prepared airflow and provider distributions that invalidate the
cache anyway most of the time
#
- # Runs on `push` as well, not only on the scheduled canary. Release branches
(`v*-*-test`) are built
- # by `push` only, and their other refresh path -- the Regular cache push in
`finalize-tests.yml` -- sits
- # behind the whole test matrix. A branch that is red therefore never
refreshes its cache at all, and the
- # staler the cache gets the slower it is to turn green again. `main` is
unaffected either way: it is not
- # built on push, so it keeps refreshing through the scheduled canary.
+ # Only for the scheduled canary and manual dispatch -- both of which run to
completion. Push events
+ # are refreshed by `refresh-image-cache.yml` instead: this workflow is part
of the CI run, which
+ # cancels in progress on the next push, and a cache refresh that keeps being
cancelled leaves the
+ # branch building cold forever (see that workflow's header for the loop it
broke).
#
# Pull requests stay excluded -- `canary-run` is also true for a PR carrying
the `canary` label, and
# pushing cache from an unmerged branch is not something a label should
authorise. This is the same
# condition the Regular cache push uses.
+ #
+ # Both paths cover every Python version: `refresh-image-cache.yml` forces
it, and on `schedule` /
+ # `workflow_dispatch` selective checks always resolves `python-versions` to
all of them
+ # (`_should_run_all_tests_and_versions`), which
`test_all_python_versions_on_scheduled_canary` pins.
push-early-buildx-cache-to-github-registry:
name: Push Early Image Cache
uses: ./.github/workflows/push-image-cache.yml
@@ -121,7 +124,9 @@ jobs:
include-success-outputs: ${{ inputs.include-success-outputs }}
docker-cache: ${{ inputs.docker-cache }}
disable-airflow-repo-cache: ${{ inputs.disable-airflow-repo-cache }}
- if: inputs.canary-run == 'true' && github.event_name != 'pull_request'
+ if: >
+ inputs.canary-run == 'true' && github.event_name != 'pull_request'
+ && github.event_name != 'push'
# Check that after earlier cache push, breeze command will build quickly
# This build is a bit slow from in-the scratch builds, so we should run it
only in
diff --git a/.github/workflows/refresh-image-cache.yml
b/.github/workflows/refresh-image-cache.yml
new file mode 100644
index 00000000000..43e9e5facd4
--- /dev/null
+++ b/.github/workflows/refresh-image-cache.yml
@@ -0,0 +1,136 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+name: Refresh image cache
+# Refreshes the CI image cache in the GitHub registry, in its own workflow run.
+#
+# It lives outside `ci-amd.yml` / `ci-arm.yml` because those cancel in
progress runs on the next
+# push (`cancel-in-progress: true`), and a cache refresh is precisely the job
that must not be
+# cancelled: a branch with no cache builds cold (~20 minutes per Python
version), which widens the
+# window in which the next push cancels the run, which leaves the cache
missing. `v3-3-test` sat in
+# exactly that loop -- its `linux/amd64` cache existed for the default Python
version only, because
+# that was the single matrix entry that finished before the next push killed
the rest.
+#
+# Cancelling here would recreate the loop, so this workflow does not cancel. A
newer run queues
+# behind the one in flight instead of replacing it.
+on: # yamllint disable-line rule:truthy
+ workflow_dispatch:
+ inputs:
+ platform:
+ description: "Platform to refresh the cache for"
+ type: choice
+ options:
+ - "both"
+ - "linux/amd64"
+ - "linux/arm64"
+ default: "both"
+ push:
+ # Release-prep and providers branches only. `main` refreshes its cache
through the scheduled
+ # canary in `ci-amd.yml` / `ci-arm.yml`, which nothing cancels -- it is
not built on push.
+ branches:
+ - v[0-9]+-[0-9]+-test
+ - providers-[a-z]+-?[a-z]*/v[0-9]+-[0-9]+
+permissions:
+ contents: read
+concurrency:
+ group: refresh-image-cache-${{ github.ref }}
+ cancel-in-progress: false
+jobs:
+ build-info:
+ name: "Build info"
+ # No outputs yet at this stage, so the runner has to be hard-coded to a
public one.
+ runs-on: ["ubuntu-22.04"]
+ outputs:
+ default-branch: ${{ steps.selective-checks.outputs.default-branch }}
+ default-constraints-branch: ${{
steps.selective-checks.outputs.default-constraints-branch }}
+ disable-airflow-repo-cache: ${{
steps.selective-checks.outputs.disable-airflow-repo-cache }}
+ docker-cache: ${{ steps.selective-checks.outputs.docker-cache }}
+ include-success-outputs: ${{
steps.selective-checks.outputs.include-success-outputs }}
+ python-versions: ${{ steps.selective-checks.outputs.python-versions }}
+ use-uv: ${{ steps.selective-checks.outputs.force-pip == 'true' &&
'false' || 'true' }}
+ steps:
+ - name: "Cleanup repo"
+ shell: bash
+ run: sudo rm -rf ${GITHUB_WORKSPACE}/*
+ - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #
v7.0.1
+ with:
+ persist-credentials: false
+ - name: "Install Breeze"
+ uses: ./.github/actions/breeze
+ - name: Selective checks
+ id: selective-checks
+ env:
+ # A cache is only useful for the Python versions that are actually
built, so the refresh
+ # always covers all of them. Selective checks would otherwise narrow
`python-versions`
+ # down to the default one -- on a push where only text files changed
it does exactly
+ # that (`_should_run_all_tests_and_versions`), which is the other
way a branch ends up
+ # with cache for one Python version and nothing for the rest.
+ PR_LABELS: '["all versions"]'
+ COMMIT_REF: "${{ github.sha }}"
+ VERBOSE: "false"
+ run: breeze ci selective-check 2>> ${GITHUB_OUTPUT}
+
+ refresh-ci-cache-amd:
+ name: "Refresh cache linux/amd64"
+ needs: [build-info]
+ uses: ./.github/workflows/push-image-cache.yml
+ permissions:
+ contents: read
+ # Only granted for `push` / `workflow_dispatch` on apache/airflow
itself, never for forks.
+ packages: write
+ with:
+ runners: '["ubuntu-22.04"]'
+ platform: "linux/amd64"
+ cache-type: "Refresh"
+ # PROD cache is built from distributions prepared earlier in a CI run,
which a standalone
+ # refresh has no artifact for. CI cache is also where the build time
actually goes.
+ include-prod-images: "false"
+ # `latest` is what CI pulls when it has no cache at all; moving it
belongs to a full canary
+ # run that ran the tests, not to a cache refresh.
+ push-latest-images: "false"
+ python-versions: ${{ needs.build-info.outputs.python-versions }}
+ branch: ${{ needs.build-info.outputs.default-branch }}
+ constraints-branch: ${{
needs.build-info.outputs.default-constraints-branch }}
+ use-uv: ${{ needs.build-info.outputs.use-uv }}
+ include-success-outputs: ${{
needs.build-info.outputs.include-success-outputs }}
+ docker-cache: ${{ needs.build-info.outputs.docker-cache }}
+ disable-airflow-repo-cache: ${{
needs.build-info.outputs.disable-airflow-repo-cache }}
+ if: inputs.platform == 'both' || inputs.platform == 'linux/amd64' ||
github.event_name == 'push'
+
+ refresh-ci-cache-arm:
+ name: "Refresh cache linux/arm64"
+ needs: [build-info]
+ uses: ./.github/workflows/push-image-cache.yml
+ permissions:
+ contents: read
+ packages: write
+ with:
+ runners: '["ubuntu-22.04-arm"]'
+ platform: "linux/arm64"
+ cache-type: "Refresh"
+ include-prod-images: "false"
+ push-latest-images: "false"
+ python-versions: ${{ needs.build-info.outputs.python-versions }}
+ branch: ${{ needs.build-info.outputs.default-branch }}
+ constraints-branch: ${{
needs.build-info.outputs.default-constraints-branch }}
+ use-uv: ${{ needs.build-info.outputs.use-uv }}
+ include-success-outputs: ${{
needs.build-info.outputs.include-success-outputs }}
+ docker-cache: ${{ needs.build-info.outputs.docker-cache }}
+ disable-airflow-repo-cache: ${{
needs.build-info.outputs.disable-airflow-repo-cache }}
+ if: inputs.platform == 'both' || inputs.platform == 'linux/arm64' ||
github.event_name == 'push'
diff --git a/dev/breeze/tests/test_selective_checks.py
b/dev/breeze/tests/test_selective_checks.py
index b0ff2703d46..535d4786934 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -27,6 +27,7 @@ from rich.console import Console
from airflow_breeze.global_constants import (
ALLOWED_KUBERNETES_VERSIONS,
ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
+ CURRENT_PYTHON_MAJOR_MINOR_VERSIONS,
DEFAULT_KUBERNETES_VERSION,
DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
JAVA_SDK_VERSION,
@@ -55,6 +56,9 @@ ALL_KUBERNETES_VERSIONS_AS_STRING = "
".join(ALLOWED_KUBERNETES_VERSIONS)
ALL_KUBERNETES_VERSIONS_AS_LIST = "[" + ", ".join([f"'{v}'" for v in
ALLOWED_KUBERNETES_VERSIONS]) + "]"
ALL_PYTHON_VERSIONS_AS_STRING = " ".join(ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS)
ALL_PYTHON_VERSIONS_AS_LIST = "[" + ", ".join([f"'{v}'" for v in
ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS]) + "]"
+CURRENT_PYTHON_VERSIONS_AS_LIST = (
+ "[" + ", ".join([f"'{v}'" for v in CURRENT_PYTHON_MAJOR_MINOR_VERSIONS]) +
"]"
+)
DEFAULT_HELM_K8S_VERSION = ALLOWED_KUBERNETES_VERSIONS[0].lstrip("v")
LAST_HELM_K8S_VERSION = ALLOWED_KUBERNETES_VERSIONS[-1].lstrip("v")
@@ -2692,6 +2696,40 @@ def
test_no_commit_provided_trigger_full_build_for_any_event_type(mock_get, gith
)
+# The image cache is pushed for `python-versions`, so a narrowed list leaves
the remaining
+# versions with no cache at all and they build cold on every run. The two
tests below pin the
+# two paths that refresh it: the canary in `additional-ci-image-checks.yml`
and the standalone
+# `refresh-image-cache.yml`.
+
+
[email protected](
+ "github_event",
+ [GithubEvents.SCHEDULE, GithubEvents.WORKFLOW_DISPATCH],
+)
+def test_all_python_versions_on_scheduled_canary(github_event):
+ """Only a `push` may narrow to the default version on a text-only change;
the canary may not."""
+ stderr = SelectiveChecks(
+ files=("INTHEWILD.md",),
+ commit_ref=NEUTRAL_COMMIT,
+ github_event=github_event,
+ pr_labels=(),
+ default_branch="main",
+ )
+ assert_outputs_are_printed({"python-versions":
CURRENT_PYTHON_VERSIONS_AS_LIST}, str(stderr))
+
+
+def test_all_python_versions_with_all_versions_label():
+ """`refresh-image-cache.yml` forces this label, on the event that would
otherwise narrow."""
+ stderr = SelectiveChecks(
+ files=("INTHEWILD.md",),
+ commit_ref=NEUTRAL_COMMIT,
+ github_event=GithubEvents.PUSH,
+ pr_labels=("all versions",),
+ default_branch="main",
+ )
+ assert_outputs_are_printed({"python-versions":
CURRENT_PYTHON_VERSIONS_AS_LIST}, str(stderr))
+
+
@pytest.mark.parametrize(
"github_event",
[
diff --git
a/providers/apache/kafka/src/airflow/providers/apache/kafka/plugins/__init__.py
b/providers/apache/kafka/src/airflow/providers/apache/kafka/plugins/__init__.py
new file mode 100644
index 00000000000..13a83393a91
--- /dev/null
+++
b/providers/apache/kafka/src/airflow/providers/apache/kafka/plugins/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git
a/providers/openai/src/airflow/providers/openai/example_dags/__init__.py
b/providers/openai/src/airflow/providers/openai/example_dags/__init__.py
new file mode 100644
index 00000000000..13a83393a91
--- /dev/null
+++ b/providers/openai/src/airflow/providers/openai/example_dags/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/pyproject.toml b/pyproject.toml
index 19b006906ca..ce33605869e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -251,9 +251,6 @@ apache-airflow = "airflow.__main__:main"
"http" = [
"apache-airflow-providers-http>=4.13.2"
]
-"ibm.mq" = [
- "apache-airflow-providers-ibm-mq>=0.1.0; platform_machine !=\"aarch64\"
and platform_machine !=\"arm64\""
-]
"imap" = [
"apache-airflow-providers-imap>=3.8.0"
]
@@ -458,7 +455,6 @@ apache-airflow = "airflow.__main__:main"
"apache-airflow-providers-grpc>=3.7.0",
"apache-airflow-providers-hashicorp>=4.0.0",
"apache-airflow-providers-http>=4.13.2",
- "apache-airflow-providers-ibm-mq>=0.1.0; platform_machine !=\"aarch64\"
and platform_machine !=\"arm64\"",
"apache-airflow-providers-imap>=3.8.0",
"apache-airflow-providers-influxdb>=2.8.0",
"apache-airflow-providers-informatica>=0.1.1",
diff --git a/scripts/ci/prek/common_prek_utils.py
b/scripts/ci/prek/common_prek_utils.py
index 5574294e39e..61b914c891f 100644
--- a/scripts/ci/prek/common_prek_utils.py
+++ b/scripts/ci/prek/common_prek_utils.py
@@ -588,19 +588,30 @@ def get_provider_base_dir_from_path(file_path: Path) ->
Path | None:
return None
-def get_all_provider_ids(exclude_suspended_providers: bool = False) ->
list[str]:
+def get_all_provider_ids(
+ exclude_suspended_providers: bool = False, exclude_not_ready_providers:
bool = False
+) -> list[str]:
"""
Get all providers from the new provider structure
+
+ :param exclude_suspended_providers: skip providers whose state is
``suspended``
+ :param exclude_not_ready_providers: skip providers whose state is
``not-ready`` - those have
+ never been published, so anything describing what is installable must
leave them out
"""
all_provider_ids = []
+ excluded_states = set()
+ if exclude_suspended_providers:
+ excluded_states.add("suspended")
+ if exclude_not_ready_providers:
+ excluded_states.add("not-ready")
for provider_file in AIRFLOW_PROVIDERS_ROOT_PATH.rglob("provider.yaml"):
if provider_file.is_relative_to(AIRFLOW_PROVIDERS_ROOT_PATH / "src"):
continue
- if exclude_suspended_providers:
+ if excluded_states:
import yaml
provider_info = yaml.safe_load(provider_file.read_text())
- if provider_info.get("state") == "suspended":
+ if provider_info.get("state") in excluded_states:
continue
provider_id = get_provider_id_from_path(provider_file)
if provider_id:
diff --git a/scripts/ci/prek/update_airflow_pyproject_toml.py
b/scripts/ci/prek/update_airflow_pyproject_toml.py
index 2313790e0a5..f66a3d7ba5d 100755
--- a/scripts/ci/prek/update_airflow_pyproject_toml.py
+++ b/scripts/ci/prek/update_airflow_pyproject_toml.py
@@ -269,9 +269,20 @@ if __name__ == "__main__":
all_optional_dependencies.append(f'"{optional}" = [\n
"apache-airflow-core[{optional}]"\n]\n')
optional_airflow_task_sdk_dependencies =
get_optional_dependencies(AIRFLOW_TASK_SDK_PYPROJECT_TOML_FILE)
all_optional_dependencies.append('"all-task-sdk" = [\n
"apache-airflow-task-sdk[all]"\n]\n')
+ # Two lists, because the sections below describe two different things.
+ #
+ # `all_providers` describes the source tree: mypy has to type-check a
not-ready provider and uv
+ # has to keep it in the workspace, which is how CI installs it. Only
suspended providers drop out.
+ #
+ # `released_providers` describes what is installable from PyPI. A
not-ready provider has never
+ # been published, so naming it in an extra makes that extra unsatisfiable
- there is no version
+ # of it to resolve to.
all_providers =
sorted(get_all_provider_ids(exclude_suspended_providers=True))
+ released_providers = sorted(
+ get_all_provider_ids(exclude_suspended_providers=True,
exclude_not_ready_providers=True)
+ )
all_provider_lines = []
- for provider_id in all_providers:
+ for provider_id in released_providers:
distribution_name = provider_distribution_name(provider_id)
min_provider_version, comment = find_min_provider_version(provider_id)
exclusion_marker =
get_exclusion_marker(all_providers_dependencies.get(provider_id, {}))
@@ -288,10 +299,15 @@ if __name__ == "__main__":
all_provider_lines.append(f' "{distribution_name}",\n')
all_optional_dependencies.append('"all" = [\n')
optional_apache_airflow_dependencies =
get_optional_dependencies(AIRFLOW_PYPROJECT_TOML_FILE)
+ # Filtered against every provider id rather than against `all_providers`:
a provider left out of
+ # `all_providers` still has an extra named after it, and testing only
against the included ones
+ # would sweep that extra in here instead of dropping it - which is how a
not-ready provider would
+ # come back into `all` through the side door.
+ every_provider_id = set(get_all_provider_ids())
all_local_extras = [
extra
for extra in sorted(optional_apache_airflow_dependencies)
- if extra not in all_providers and not extra.startswith("all")
+ if extra not in every_provider_id and not extra.startswith("all")
]
all_optional_dependencies.append(f'
"apache-airflow[{",".join(all_local_extras)}]",\n')
all_optional_dependencies.append(' "apache-airflow-core[all]",\n')
diff --git a/uv.lock b/uv.lock
index 36ead8dbe94..b339636011f 100644
--- a/uv.lock
+++ b/uv.lock
@@ -333,7 +333,7 @@ name = "adbc-driver-manager"
version = "1.11.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+ { name = "typing-extensions" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/e9/5e/50aab18cb501e42d3aca3cd2cc26c6637094fcaf5b6576e350c444188f1f/adbc_driver_manager-1.11.0.tar.gz",
hash =
"sha256:c64aaabeb5810109ab3d2961008f1b014e9f2d87b3df4416c2a080a40237af50", size
= 233059, upload-time = "2026-04-07T00:17:28.263Z" }
wheels = [
@@ -378,8 +378,8 @@ name = "adbc-driver-postgresql"
version = "1.11.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "adbc-driver-manager", marker = "python_full_version < '3.13'" },
- { name = "importlib-resources", marker = "python_full_version < '3.13'" },
+ { name = "adbc-driver-manager" },
+ { name = "importlib-resources" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/68/10/2962c25035887cd03af3b348eac3302493936f45048c220021a802d07f12/adbc_driver_postgresql-1.11.0.tar.gz",
hash =
"sha256:f5688b8648ac7a86d8b89340231bb3686ac5df56ee95d1ca0b875dad5d52b48a", size
= 32328, upload-time = "2026-04-07T00:17:29.232Z" }
wheels = [
@@ -395,8 +395,8 @@ name = "adbc-driver-sqlite"
version = "1.11.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "adbc-driver-manager", marker = "python_full_version < '3.13'" },
- { name = "importlib-resources", marker = "python_full_version < '3.13'" },
+ { name = "adbc-driver-manager" },
+ { name = "importlib-resources" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/3a/dd/8a5f4908aa4bdec64dcd672734fa314d692517458ce169591639d0123fe1/adbc_driver_sqlite-1.11.0.tar.gz",
hash =
"sha256:a4c6b4962610f7cd67cd754c42dd74e18a2c11fabeec9488c5501d73ae62dc62", size
= 28885, upload-time = "2026-04-07T00:17:31.325Z" }
wheels = [
@@ -459,7 +459,7 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "caio", marker = "python_full_version < '3.11'" },
+ { name = "caio" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/67/e2/d7cb819de8df6b5c1968a2756c3cb4122d4fa2b8fc768b53b7c9e5edb646/aiofile-3.9.0.tar.gz",
hash =
"sha256:e5ad718bb148b265b6df1b3752c4d1d83024b93da9bd599df74b9d9ffcf7919b", size
= 17943, upload-time = "2024-10-08T10:39:35.846Z" }
wheels = [
@@ -491,7 +491,7 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "caio", marker = "python_full_version >= '3.11'" },
+ { name = "caio" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/48/41/2fea7e193e061ce54eacc3b7bc0e6a99e4fcff43c78cf0a76dd781ed8334/aiofile-3.11.1.tar.gz",
hash =
"sha256:1f91912c6643d2a4e49ca4ae3514f0bf3867ce948a36d99a6411b8f4755f4cf9", size
= 19342, upload-time = "2026-05-16T08:18:33.538Z" }
wheels = [
@@ -658,7 +658,7 @@ name = "aiohttp-cors"
version = "0.8.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "aiohttp", marker = "python_full_version < '3.15'" },
+ { name = "aiohttp" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/6f/6d/d89e846a5444b3d5eb8985a6ddb0daef3774928e1bfbce8e84ec97b0ffa7/aiohttp_cors-0.8.1.tar.gz",
hash =
"sha256:ccacf9cb84b64939ea15f859a146af1f662a6b1d68175754a07315e305fb1403", size
= 38626, upload-time = "2025-03-31T14:16:20.048Z" }
wheels = [
@@ -1050,7 +1050,6 @@ all = [
{ name = "apache-airflow-providers-grpc" },
{ name = "apache-airflow-providers-hashicorp" },
{ name = "apache-airflow-providers-http" },
- { name = "apache-airflow-providers-ibm-mq", marker = "platform_machine !=
'aarch64' and platform_machine != 'arm64'" },
{ name = "apache-airflow-providers-imap" },
{ name = "apache-airflow-providers-influxdb" },
{ name = "apache-airflow-providers-informatica" },
@@ -1289,9 +1288,6 @@ hashicorp = [
http = [
{ name = "apache-airflow-providers-http" },
]
-ibm-mq = [
- { name = "apache-airflow-providers-ibm-mq", marker = "platform_machine !=
'aarch64' and platform_machine != 'arm64'" },
-]
imap = [
{ name = "apache-airflow-providers-imap" },
]
@@ -1668,8 +1664,6 @@ requires-dist = [
{ name = "apache-airflow-providers-hashicorp", marker = "extra ==
'hashicorp'", editable = "providers/hashicorp" },
{ name = "apache-airflow-providers-http", marker = "extra == 'all'",
editable = "providers/http" },
{ name = "apache-airflow-providers-http", marker = "extra == 'http'",
editable = "providers/http" },
- { name = "apache-airflow-providers-ibm-mq", marker = "platform_machine !=
'aarch64' and platform_machine != 'arm64' and extra == 'all'", editable =
"providers/ibm/mq" },
- { name = "apache-airflow-providers-ibm-mq", marker = "platform_machine !=
'aarch64' and platform_machine != 'arm64' and extra == 'ibm-mq'", editable =
"providers/ibm/mq" },
{ name = "apache-airflow-providers-imap", marker = "extra == 'all'",
editable = "providers/imap" },
{ name = "apache-airflow-providers-imap", marker = "extra == 'imap'",
editable = "providers/imap" },
{ name = "apache-airflow-providers-influxdb", marker = "extra == 'all'",
editable = "providers/influxdb" },
@@ -1780,7 +1774,7 @@ requires-dist = [
{ name = "sentry-sdk", marker = "extra == 'sentry'", specifier =
">=2.30.0" },
{ name = "uv", marker = "extra == 'uv'", specifier = ">=0.11.21" },
]
-provides-extras = ["all-core", "async", "graphviz", "gunicorn", "kerberos",
"memray", "otel", "statsd", "all-task-sdk", "airbyte", "akeyless", "alibaba",
"amazon", "apache-cassandra", "apache-drill", "apache-druid", "apache-flink",
"apache-hdfs", "apache-hive", "apache-iceberg", "apache-impala",
"apache-kafka", "apache-kylin", "apache-livy", "apache-pig", "apache-pinot",
"apache-spark", "apache-tinkerpop", "apprise", "arangodb", "asana",
"atlassian-jira", "celery", "clickhousedb", "cloud [...]
+provides-extras = ["all-core", "async", "graphviz", "gunicorn", "kerberos",
"memray", "otel", "statsd", "all-task-sdk", "airbyte", "akeyless", "alibaba",
"amazon", "apache-cassandra", "apache-drill", "apache-druid", "apache-flink",
"apache-hdfs", "apache-hive", "apache-iceberg", "apache-impala",
"apache-kafka", "apache-kylin", "apache-livy", "apache-pig", "apache-pinot",
"apache-spark", "apache-tinkerpop", "apprise", "arangodb", "asana",
"atlassian-jira", "celery", "clickhousedb", "cloud [...]
[package.metadata.requires-dev]
ci-image = [
@@ -2700,7 +2694,7 @@ requires-dist = [
{ name = "types-deprecated", marker = "extra == 'mypy'", specifier =
">=1.2.9.20240311" },
{ name = "types-docutils", marker = "extra == 'mypy'", specifier =
">=0.21.0.20240704" },
{ name = "types-markdown", marker = "extra == 'mypy'", specifier =
">=3.6.0.20240316" },
- { name = "types-paramiko", marker = "extra == 'mypy'", specifier =
">=3.4.0.20240423,<4.0.0" },
+ { name = "types-paramiko", marker = "extra == 'mypy'", specifier =
">=4.0.0.20260402" },
{ name = "types-protobuf", marker = "extra == 'mypy'", specifier =
">=5.26.0.20240422" },
{ name = "types-pymysql", marker = "extra == 'mypy'", specifier =
">=1.1.0.20240425" },
{ name = "types-python-dateutil", marker = "extra == 'mypy'", specifier =
">=2.9.0.20240316" },
@@ -10328,8 +10322,8 @@ name = "cassandra-driver"
version = "3.30.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "deprecated", marker = "python_full_version < '3.14'" },
- { name = "geomet", marker = "python_full_version < '3.14'" },
+ { name = "deprecated" },
+ { name = "geomet" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/bb/ed/4e16210e194660f107929ee494f1cf18557252655067d9b39029c241be2d/cassandra_driver-3.30.1.tar.gz",
hash =
"sha256:0c6a3e1428f7c6a9aa6c944b9c47a37cd2cdbeb5b5a82d42c33afdd56f14e398", size
= 289233, upload-time = "2026-07-06T20:14:31.37Z" }
wheels = [
@@ -10927,7 +10921,7 @@ name = "colorful"
version = "0.5.8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "python_full_version < '3.15' and
sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/82/31/109ef4bedeb32b4202e02ddb133162457adc4eb890a9ed9c05c9dd126ed0/colorful-0.5.8.tar.gz",
hash =
"sha256:bb16502b198be2f1c42ba3c52c703d5f651d826076817185f0294c1a549a7445", size
= 209361, upload-time = "2025-10-29T11:53:21.663Z" }
wheels = [
@@ -12418,7 +12412,7 @@ name = "geomet"
version = "1.1.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "click", marker = "python_full_version < '3.14'" },
+ { name = "click" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/2a/8c/dde022aa6747b114f6b14a7392871275dea8867e2bd26cddb80cc6d66620/geomet-1.1.0.tar.gz",
hash =
"sha256:51e92231a0ef6aaa63ac20c443377ba78a303fd2ecd179dc3567de79f3c11605", size
= 28732, upload-time = "2023-11-14T15:43:36.764Z" }
wheels = [
@@ -13850,7 +13844,7 @@ name = "gssapi"
version = "1.11.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "decorator", marker = "python_full_version < '3.11' or
sys_platform != 'win32'" },
+ { name = "decorator" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/23/52/c1e90623c259a42ab0587078bb04f959867b970add46ff66750ead8fc7c5/gssapi-1.11.1.tar.gz",
hash =
"sha256:2049ee4b1d0c363163a1344b7282a363f9f4094e51d2c36de0cf01d4735e0ae2", size
= 95233, upload-time = "2026-01-26T21:01:39.463Z" }
wheels = [
@@ -14616,17 +14610,17 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "colorama", marker = "python_full_version < '3.11' and
sys_platform == 'win32'" },
- { name = "decorator", marker = "python_full_version < '3.11'" },
- { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
- { name = "jedi", marker = "python_full_version < '3.11'" },
- { name = "matplotlib-inline", marker = "python_full_version < '3.11'" },
- { name = "pexpect", marker = "python_full_version < '3.11' and
sys_platform != 'emscripten' and sys_platform != 'win32'" },
- { name = "prompt-toolkit", marker = "python_full_version < '3.11'" },
- { name = "pygments", marker = "python_full_version < '3.11'" },
- { name = "stack-data", marker = "python_full_version < '3.11'" },
- { name = "traitlets", marker = "python_full_version < '3.11'" },
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "decorator" },
+ { name = "exceptiongroup" },
+ { name = "jedi" },
+ { name = "matplotlib-inline" },
+ { name = "pexpect", marker = "sys_platform != 'emscripten' and
sys_platform != 'win32'" },
+ { name = "prompt-toolkit" },
+ { name = "pygments" },
+ { name = "stack-data" },
+ { name = "traitlets" },
+ { name = "typing-extensions" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/40/18/f8598d287006885e7136451fdea0755af4ebcbfe342836f24deefaed1164/ipython-8.39.0.tar.gz",
hash =
"sha256:4110ae96012c379b8b6db898a07e186c40a2a1ef5d57a7fa83166047d9da7624", size
= 5513971, upload-time = "2026-03-27T10:02:13.94Z" }
wheels = [
@@ -14658,18 +14652,18 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "colorama", marker = "python_full_version >= '3.11' and
sys_platform == 'win32'" },
- { name = "decorator", marker = "python_full_version >= '3.11'" },
- { name = "ipython-pygments-lexers", marker = "python_full_version >=
'3.11'" },
- { name = "jedi", marker = "python_full_version >= '3.11'" },
- { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" },
- { name = "pexpect", marker = "python_full_version >= '3.11' and
sys_platform != 'emscripten' and sys_platform != 'win32'" },
- { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" },
- { name = "psutil", marker = "python_full_version >= '3.11' and
sys_platform != 'cygwin' and sys_platform != 'emscripten'" },
- { name = "pygments", marker = "python_full_version >= '3.11'" },
- { name = "stack-data", marker = "python_full_version >= '3.11'" },
- { name = "traitlets", marker = "python_full_version >= '3.11'" },
- { name = "typing-extensions", marker = "python_full_version == '3.11.*'" },
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "decorator" },
+ { name = "ipython-pygments-lexers" },
+ { name = "jedi" },
+ { name = "matplotlib-inline" },
+ { name = "pexpect", marker = "sys_platform != 'emscripten' and
sys_platform != 'win32'" },
+ { name = "prompt-toolkit" },
+ { name = "psutil", marker = "sys_platform != 'cygwin' and sys_platform !=
'emscripten'" },
+ { name = "pygments" },
+ { name = "stack-data" },
+ { name = "traitlets" },
+ { name = "typing-extensions", marker = "python_full_version < '3.12'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/53/59/165d3b4d75cc34add3122c4417ecb229085140ac573103c223cd01dde96f/ipython-9.15.0.tar.gz",
hash =
"sha256:da2819ce2aa83135257df830660b1176d986c3d2876db24df01974fa955b2756", size
= 4442580, upload-time = "2026-06-26T11:03:35.913Z" }
wheels = [
@@ -14681,7 +14675,7 @@ name = "ipython-pygments-lexers"
version = "1.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pygments", marker = "python_full_version >= '3.11'" },
+ { name = "pygments" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz",
hash =
"sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size
= 8393, upload-time = "2025-01-17T11:24:34.505Z" }
wheels = [
@@ -17518,9 +17512,9 @@ name = "opencensus"
version = "0.11.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "google-api-core", marker = "python_full_version < '3.15'" },
- { name = "opencensus-context", marker = "python_full_version < '3.15'" },
- { name = "six", marker = "python_full_version < '3.15'" },
+ { name = "google-api-core" },
+ { name = "opencensus-context" },
+ { name = "six" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/15/a7/a46dcffa1b63084f9f17fe3c8cb20724c4c8f91009fd0b2cfdb27d5d2b35/opencensus-0.11.4.tar.gz",
hash =
"sha256:cbef87d8b8773064ab60e5c2a1ced58bbaa38a6d052c41aec224958ce544eff2", size
= 64966, upload-time = "2024-01-03T18:04:07.085Z" }
wheels = [
@@ -18092,9 +18086,9 @@ wheels = [
[package.optional-dependencies]
sql-other = [
- { name = "adbc-driver-postgresql", marker = "python_full_version < '3.13'"
},
- { name = "adbc-driver-sqlite", marker = "python_full_version < '3.13'" },
- { name = "sqlalchemy", marker = "python_full_version < '3.13'" },
+ { name = "adbc-driver-postgresql" },
+ { name = "adbc-driver-sqlite" },
+ { name = "sqlalchemy" },
]
[[package]]
@@ -18131,8 +18125,8 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "numpy", version = "2.2.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
- { name = "types-pytz", marker = "python_full_version < '3.11'" },
+ { name = "numpy", version = "2.2.6", source = { registry =
"https://pypi.org/simple" } },
+ { name = "types-pytz" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/92/5d/be23854a73fda69f1dbdda7bc10fbd6f930bd1fa87aaec389f00c901c1e8/pandas_stubs-2.3.3.260113.tar.gz",
hash =
"sha256:076e3724bcaa73de78932b012ec64b3010463d377fa63116f4e6850643d93800", size
= 116131, upload-time = "2026-01-13T22:30:16.704Z" }
wheels = [
@@ -18164,7 +18158,7 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "numpy", version = "2.4.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "numpy", version = "2.4.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
{ name = "numpy", version = "2.5.1", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/3d/aa/c41a8a0ff86fd85dbb3ec0c1f3fa488ca64a8b5f82654ae1b07d84acefe5/pandas_stubs-3.0.3.260530.tar.gz",
hash =
"sha256:d1efe47b2e5a312c047d7feabec5cb7a55365747983420077e9fcbe9ab74f714", size
= 113183, upload-time = "2026-05-30T17:47:40.34Z" }
@@ -20618,9 +20612,9 @@ name = "python3-saml"
version = "1.16.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "isodate", marker = "python_full_version < '3.13'" },
- { name = "lxml", marker = "python_full_version < '3.13'" },
- { name = "xmlsec", marker = "python_full_version < '3.13'" },
+ { name = "isodate" },
+ { name = "lxml" },
+ { name = "xmlsec" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/5d/98/6e0268c3a9893af3d4c5cf670183e0314cd6b5cb034a612d6a7cc5060df8/python3-saml-1.16.0.tar.gz",
hash =
"sha256:97c9669aecabc283c6e5fb4eb264f446b6e006f5267d01c9734f9d8bffdac133", size
= 83468, upload-time = "2023-10-09T10:37:43.128Z" }
wheels = [
@@ -20933,14 +20927,14 @@ name = "ray"
version = "2.56.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "click", marker = "python_full_version < '3.15'" },
- { name = "filelock", marker = "python_full_version < '3.15'" },
- { name = "jsonschema", marker = "python_full_version < '3.15'" },
- { name = "msgpack", marker = "python_full_version < '3.15'" },
- { name = "packaging", marker = "python_full_version < '3.15'" },
- { name = "protobuf", marker = "python_full_version < '3.15'" },
- { name = "pyyaml", marker = "python_full_version < '3.15'" },
- { name = "requests", marker = "python_full_version < '3.15'" },
+ { name = "click" },
+ { name = "filelock" },
+ { name = "jsonschema" },
+ { name = "msgpack" },
+ { name = "packaging" },
+ { name = "protobuf" },
+ { name = "pyyaml" },
+ { name = "requests" },
]
wheels = [
{ url =
"https://files.pythonhosted.org/packages/62/f5/89dc8571f35355a7f889cd4709b440abf6db2c5fc8b5427b614d5084e9cb/ray-2.56.1-cp310-cp310-macosx_12_0_arm64.whl",
hash =
"sha256:58b8c037a9f2b7b7866439cb6fe19d452ba3961f2b62d0a247dc3adf2ca45265", size
= 66364186, upload-time = "2026-07-17T21:27:58.09Z" },
@@ -20965,20 +20959,20 @@ wheels = [
[package.optional-dependencies]
default = [
- { name = "aiohttp", marker = "python_full_version < '3.15'" },
- { name = "aiohttp-cors", marker = "python_full_version < '3.15'" },
- { name = "colorful", marker = "python_full_version < '3.15'" },
- { name = "grpcio", marker = "python_full_version < '3.15'" },
- { name = "opencensus", marker = "python_full_version < '3.15'" },
- { name = "opentelemetry-exporter-prometheus", marker =
"python_full_version < '3.15'" },
- { name = "opentelemetry-proto", marker = "python_full_version < '3.15'" },
- { name = "opentelemetry-sdk", marker = "python_full_version < '3.15'" },
- { name = "prometheus-client", marker = "python_full_version < '3.15'" },
- { name = "py-spy", marker = "python_full_version < '3.15'" },
- { name = "pydantic", marker = "python_full_version < '3.15'" },
- { name = "requests", marker = "python_full_version < '3.15'" },
- { name = "smart-open", marker = "python_full_version < '3.15'" },
- { name = "virtualenv", marker = "python_full_version < '3.15'" },
+ { name = "aiohttp" },
+ { name = "aiohttp-cors" },
+ { name = "colorful" },
+ { name = "grpcio" },
+ { name = "opencensus" },
+ { name = "opentelemetry-exporter-prometheus" },
+ { name = "opentelemetry-proto" },
+ { name = "opentelemetry-sdk" },
+ { name = "prometheus-client" },
+ { name = "py-spy" },
+ { name = "pydantic" },
+ { name = "requests" },
+ { name = "smart-open" },
+ { name = "virtualenv" },
]
[[package]]
@@ -21761,10 +21755,10 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "joblib", marker = "python_full_version < '3.11'" },
- { name = "numpy", version = "2.2.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
- { name = "scipy", version = "1.15.3", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
- { name = "threadpoolctl", marker = "python_full_version < '3.11'" },
+ { name = "joblib" },
+ { name = "numpy", version = "2.2.6", source = { registry =
"https://pypi.org/simple" } },
+ { name = "scipy", version = "1.15.3", source = { registry =
"https://pypi.org/simple" } },
+ { name = "threadpoolctl" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/37/59/44985a2bdc95c74e34fef3d10cb5d93ce13b0e2a7baefffe1b53853b502d/scikit_learn-1.5.2.tar.gz",
hash =
"sha256:b4237ed7b3fdd0a4882792e68ef2545d5baa50aca3bb45aa7df468138ad8f94d", size
= 7001680, upload-time = "2024-09-11T15:50:10.957Z" }
wheels = [
@@ -21815,13 +21809,13 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "joblib", marker = "python_full_version >= '3.11'" },
- { name = "narwhals", marker = "python_full_version >= '3.11'" },
- { name = "numpy", version = "2.4.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "joblib" },
+ { name = "narwhals" },
+ { name = "numpy", version = "2.4.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
{ name = "numpy", version = "2.5.1", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
- { name = "scipy", version = "1.17.1", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "scipy", version = "1.17.1", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
{ name = "scipy", version = "1.18.0", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
- { name = "threadpoolctl", marker = "python_full_version >= '3.11'" },
+ { name = "threadpoolctl" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz",
hash =
"sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size
= 7750767, upload-time = "2026-06-02T11:54:32.706Z" }
wheels = [
@@ -21866,7 +21860,7 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "numpy", version = "2.2.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
+ { name = "numpy", version = "2.2.6", source = { registry =
"https://pypi.org/simple" } },
]
sdist = { url =
"https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz",
hash =
"sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size
= 59419214, upload-time = "2025-05-08T16:13:05.955Z" }
wheels = [
@@ -21928,7 +21922,7 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "numpy", version = "2.4.6", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "numpy", version = "2.4.6", source = { registry =
"https://pypi.org/simple" } },
]
sdist = { url =
"https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz",
hash =
"sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size
= 30573822, upload-time = "2026-02-23T00:26:24.851Z" }
wheels = [
@@ -22015,7 +22009,7 @@ resolution-markers = [
"(python_full_version == '3.12.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.12.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "numpy", version = "2.5.1", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
+ { name = "numpy", version = "2.5.1", source = { registry =
"https://pypi.org/simple" } },
]
sdist = { url =
"https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz",
hash =
"sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size
= 30774447, upload-time = "2026-06-19T15:01:43.456Z" }
wheels = [
@@ -22100,8 +22094,8 @@ name = "secretstorage"
version = "3.5.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "cryptography", marker = "(python_full_version >= '3.14' and
sys_platform == 'darwin') or (python_full_version < '3.11' and sys_platform ==
'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or
(platform_machine != 'arm64' and sys_platform == 'darwin') or (sys_platform !=
'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "jeepney", marker = "(python_full_version >= '3.14' and
sys_platform == 'darwin') or (python_full_version < '3.11' and sys_platform ==
'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or
(platform_machine != 'arm64' and sys_platform == 'darwin') or (sys_platform !=
'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "cryptography" },
+ { name = "jeepney" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz",
hash =
"sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size
= 19884, upload-time = "2025-11-23T19:02:53.191Z" }
wheels = [
@@ -22300,7 +22294,7 @@ name = "smart-open"
version = "8.0.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "wrapt", marker = "python_full_version < '3.15'" },
+ { name = "wrapt" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/76/53/9c513747547fd595d5c143259129ea8b9c3ea2f6b7bb9dcea2b1966ded3c/smart_open-8.0.1.tar.gz",
hash =
"sha256:18b1c4496003c6902be17c15f032b5c319f307c89c6ae9e6b028b508bed8b2cf", size
= 61882, upload-time = "2026-07-15T13:56:10.492Z" }
wheels = [
@@ -22404,15 +22398,15 @@ name = "snowflake-snowpark-python"
version = "1.53.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "cloudpickle", version = "3.1.1", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
- { name = "protobuf", marker = "python_full_version < '3.14'" },
- { name = "python-dateutil", marker = "python_full_version < '3.14'" },
- { name = "pyyaml", marker = "python_full_version < '3.14'" },
- { name = "setuptools", marker = "python_full_version < '3.14'" },
- { name = "snowflake-connector-python", marker = "python_full_version <
'3.14'" },
- { name = "typing-extensions", marker = "python_full_version < '3.14'" },
- { name = "tzlocal", marker = "python_full_version < '3.14'" },
- { name = "wheel", marker = "python_full_version < '3.14'" },
+ { name = "cloudpickle", version = "3.1.1", source = { registry =
"https://pypi.org/simple" } },
+ { name = "protobuf" },
+ { name = "python-dateutil" },
+ { name = "pyyaml" },
+ { name = "setuptools" },
+ { name = "snowflake-connector-python" },
+ { name = "typing-extensions" },
+ { name = "tzlocal" },
+ { name = "wheel" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/72/5b/4a0eb18191c98d62b8a0a363a4c2d9ee5f01f0f33f32ecd59ddea7b56e3e/snowflake_snowpark_python-1.53.1.tar.gz",
hash =
"sha256:5a0bcbf01aac54336c7763b748837281762e57214b6425c84ed412706fb58df7", size
= 1784995, upload-time = "2026-07-15T23:06:44.704Z" }
wheels = [
@@ -22459,23 +22453,23 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "alabaster", marker = "python_full_version < '3.11'" },
- { name = "babel", marker = "python_full_version < '3.11'" },
- { name = "colorama", marker = "python_full_version < '3.11' and
sys_platform == 'win32'" },
- { name = "docutils", version = "0.21.2", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
- { name = "imagesize", marker = "python_full_version < '3.11'" },
- { name = "jinja2", marker = "python_full_version < '3.11'" },
- { name = "packaging", marker = "python_full_version < '3.11'" },
- { name = "pygments", marker = "python_full_version < '3.11'" },
- { name = "requests", marker = "python_full_version < '3.11'" },
- { name = "snowballstemmer", marker = "python_full_version < '3.11'" },
- { name = "sphinxcontrib-applehelp", marker = "python_full_version <
'3.11'" },
- { name = "sphinxcontrib-devhelp", marker = "python_full_version < '3.11'"
},
- { name = "sphinxcontrib-htmlhelp", marker = "python_full_version < '3.11'"
},
- { name = "sphinxcontrib-jsmath", marker = "python_full_version < '3.11'" },
- { name = "sphinxcontrib-qthelp", marker = "python_full_version < '3.11'" },
- { name = "sphinxcontrib-serializinghtml", marker = "python_full_version <
'3.11'" },
- { name = "tomli", marker = "python_full_version < '3.11'" },
+ { name = "alabaster" },
+ { name = "babel" },
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "docutils", version = "0.21.2", source = { registry =
"https://pypi.org/simple" } },
+ { name = "imagesize" },
+ { name = "jinja2" },
+ { name = "packaging" },
+ { name = "pygments" },
+ { name = "requests" },
+ { name = "snowballstemmer" },
+ { name = "sphinxcontrib-applehelp" },
+ { name = "sphinxcontrib-devhelp" },
+ { name = "sphinxcontrib-htmlhelp" },
+ { name = "sphinxcontrib-jsmath" },
+ { name = "sphinxcontrib-qthelp" },
+ { name = "sphinxcontrib-serializinghtml" },
+ { name = "tomli" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz",
hash =
"sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size
= 8184611, upload-time = "2024-10-13T20:27:13.93Z" }
wheels = [
@@ -22493,23 +22487,23 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "alabaster", marker = "python_full_version == '3.11.*'" },
- { name = "babel", marker = "python_full_version == '3.11.*'" },
- { name = "colorama", marker = "python_full_version == '3.11.*' and
sys_platform == 'win32'" },
- { name = "docutils", version = "0.22.4", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
- { name = "imagesize", marker = "python_full_version == '3.11.*'" },
- { name = "jinja2", marker = "python_full_version == '3.11.*'" },
- { name = "packaging", marker = "python_full_version == '3.11.*'" },
- { name = "pygments", marker = "python_full_version == '3.11.*'" },
- { name = "requests", marker = "python_full_version == '3.11.*'" },
- { name = "roman-numerals", marker = "python_full_version == '3.11.*'" },
- { name = "snowballstemmer", marker = "python_full_version == '3.11.*'" },
- { name = "sphinxcontrib-applehelp", marker = "python_full_version ==
'3.11.*'" },
- { name = "sphinxcontrib-devhelp", marker = "python_full_version ==
'3.11.*'" },
- { name = "sphinxcontrib-htmlhelp", marker = "python_full_version ==
'3.11.*'" },
- { name = "sphinxcontrib-jsmath", marker = "python_full_version ==
'3.11.*'" },
- { name = "sphinxcontrib-qthelp", marker = "python_full_version ==
'3.11.*'" },
- { name = "sphinxcontrib-serializinghtml", marker = "python_full_version ==
'3.11.*'" },
+ { name = "alabaster" },
+ { name = "babel" },
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "docutils", version = "0.22.4", source = { registry =
"https://pypi.org/simple" } },
+ { name = "imagesize" },
+ { name = "jinja2" },
+ { name = "packaging" },
+ { name = "pygments" },
+ { name = "requests" },
+ { name = "roman-numerals" },
+ { name = "snowballstemmer" },
+ { name = "sphinxcontrib-applehelp" },
+ { name = "sphinxcontrib-devhelp" },
+ { name = "sphinxcontrib-htmlhelp" },
+ { name = "sphinxcontrib-jsmath" },
+ { name = "sphinxcontrib-qthelp" },
+ { name = "sphinxcontrib-serializinghtml" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/42/50/a8c6ccc36d5eacdfd7913ddccd15a9cee03ecafc5ee2bc40e1f168d85022/sphinx-9.0.4.tar.gz",
hash =
"sha256:594ef59d042972abbc581d8baa577404abe4e6c3b04ef61bd7fc2acbd51f3fa3", size
= 8710502, upload-time = "2025-12-04T07:45:27.343Z" }
wheels = [
@@ -22537,23 +22531,23 @@ resolution-markers = [
"(python_full_version == '3.12.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.12.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "alabaster", marker = "python_full_version >= '3.12'" },
- { name = "babel", marker = "python_full_version >= '3.12'" },
- { name = "colorama", marker = "python_full_version >= '3.12' and
sys_platform == 'win32'" },
- { name = "docutils", version = "0.22.4", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
- { name = "imagesize", marker = "python_full_version >= '3.12'" },
- { name = "jinja2", marker = "python_full_version >= '3.12'" },
- { name = "packaging", marker = "python_full_version >= '3.12'" },
- { name = "pygments", marker = "python_full_version >= '3.12'" },
- { name = "requests", marker = "python_full_version >= '3.12'" },
- { name = "roman-numerals", marker = "python_full_version >= '3.12'" },
- { name = "snowballstemmer", marker = "python_full_version >= '3.12'" },
- { name = "sphinxcontrib-applehelp", marker = "python_full_version >=
'3.12'" },
- { name = "sphinxcontrib-devhelp", marker = "python_full_version >= '3.12'"
},
- { name = "sphinxcontrib-htmlhelp", marker = "python_full_version >=
'3.12'" },
- { name = "sphinxcontrib-jsmath", marker = "python_full_version >= '3.12'"
},
- { name = "sphinxcontrib-qthelp", marker = "python_full_version >= '3.12'"
},
- { name = "sphinxcontrib-serializinghtml", marker = "python_full_version >=
'3.12'" },
+ { name = "alabaster" },
+ { name = "babel" },
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "docutils", version = "0.22.4", source = { registry =
"https://pypi.org/simple" } },
+ { name = "imagesize" },
+ { name = "jinja2" },
+ { name = "packaging" },
+ { name = "pygments" },
+ { name = "requests" },
+ { name = "roman-numerals" },
+ { name = "snowballstemmer" },
+ { name = "sphinxcontrib-applehelp" },
+ { name = "sphinxcontrib-devhelp" },
+ { name = "sphinxcontrib-htmlhelp" },
+ { name = "sphinxcontrib-jsmath" },
+ { name = "sphinxcontrib-qthelp" },
+ { name = "sphinxcontrib-serializinghtml" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/cd/bd/f08eb0f4eed5c83f1ba2a3bd18f7745a2b1525fad70660a1c00224ec468a/sphinx-9.1.0.tar.gz",
hash =
"sha256:7741722357dd75f8190766926071fed3bdc211c74dd2d7d4df5404da95930ddb", size
= 8718324, upload-time = "2025-12-31T15:09:27.646Z" }
wheels = [
@@ -22619,12 +22613,12 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "colorama", marker = "python_full_version < '3.11'" },
- { name = "sphinx", version = "8.1.3", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
- { name = "starlette", marker = "python_full_version < '3.11'" },
- { name = "uvicorn", marker = "python_full_version < '3.11'" },
- { name = "watchfiles", marker = "python_full_version < '3.11'" },
- { name = "websockets", marker = "python_full_version < '3.11'" },
+ { name = "colorama" },
+ { name = "sphinx", version = "8.1.3", source = { registry =
"https://pypi.org/simple" } },
+ { name = "starlette" },
+ { name = "uvicorn" },
+ { name = "watchfiles" },
+ { name = "websockets" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/a5/2c/155e1de2c1ba96a72e5dba152c509a8b41e047ee5c2def9e9f0d812f8be7/sphinx_autobuild-2024.10.3.tar.gz",
hash =
"sha256:248150f8f333e825107b6d4b86113ab28fa51750e5f9ae63b59dc339be951fb1", size
= 14023, upload-time = "2024-10-02T23:15:30.172Z" }
wheels = [
@@ -22656,13 +22650,13 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "colorama", marker = "python_full_version >= '3.11'" },
- { name = "sphinx", version = "9.0.4", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "colorama" },
+ { name = "sphinx", version = "9.0.4", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
{ name = "sphinx", version = "9.1.0", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
- { name = "starlette", marker = "python_full_version >= '3.11'" },
- { name = "uvicorn", marker = "python_full_version >= '3.11'" },
- { name = "watchfiles", marker = "python_full_version >= '3.11'" },
- { name = "websockets", marker = "python_full_version >= '3.11'" },
+ { name = "starlette" },
+ { name = "uvicorn" },
+ { name = "watchfiles" },
+ { name = "websockets" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/e0/3c/a59a3a453d4133777f7ed2e83c80b7dc817d43c74b74298ca0af869662ad/sphinx_autobuild-2025.8.25.tar.gz",
hash =
"sha256:9cf5aab32853c8c31af572e4fecdc09c997e2b8be5a07daf2a389e270e85b213", size
= 15200, upload-time = "2025-08-25T18:44:55.436Z" }
wheels = [
@@ -22692,7 +22686,7 @@ resolution-markers = [
"(python_full_version < '3.11' and platform_machine != 'arm64') or
(python_full_version < '3.11' and sys_platform != 'darwin')",
]
dependencies = [
- { name = "sphinx", version = "8.1.3", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
+ { name = "sphinx", version = "8.1.3", source = { registry =
"https://pypi.org/simple" } },
]
sdist = { url =
"https://files.pythonhosted.org/packages/2b/69/b34e0cb5336f09c6866d53b4a19d76c227cdec1bbc7ac4de63ca7d58c9c7/sphinx_design-0.6.1.tar.gz",
hash =
"sha256:b44eea3719386d04d765c1a8257caca2b3e6f8421d7b3a5e742c0fd45f84e632", size
= 2193689, upload-time = "2024-08-02T13:48:44.277Z" }
wheels = [
@@ -22724,7 +22718,7 @@ resolution-markers = [
"(python_full_version == '3.11.*' and platform_machine != 'arm64' and
sys_platform == 'darwin') or (python_full_version == '3.11.*' and sys_platform
!= 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')",
]
dependencies = [
- { name = "sphinx", version = "9.0.4", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "sphinx", version = "9.0.4", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
{ name = "sphinx", version = "9.1.0", source = { registry =
"https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/13/7b/804f311da4663a4aecc6cf7abd83443f3d4ded970826d0c958edc77d4527/sphinx_design-0.7.0.tar.gz",
hash =
"sha256:d2a3f5b19c24b916adb52f97c5f00efab4009ca337812001109084a740ec9b7a", size
= 2203582, upload-time = "2026-01-19T13:12:53.297Z" }
@@ -23835,14 +23829,14 @@ wheels = [
[[package]]
name = "types-paramiko"
-version = "3.5.0.20250801"
+version = "5.0.0.20260724"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cryptography" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/d5/c4/4df427c835e9c795662241410732ab936c6f58be798ec25ce7015771c448/types_paramiko-3.5.0.20250801.tar.gz",
hash =
"sha256:e79ff84eaf44f2a5ad811743edef5d9c0cd6632a264a526f00405b87db1ec99b", size
= 28838, upload-time = "2025-08-01T03:48:52.777Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/66/c2/445549ed6f0944352f2b91d88d16bbdc3993a4d6dbbedb81c557b3cad85a/types_paramiko-5.0.0.20260724.tar.gz",
hash =
"sha256:37e7f3f2196cf187c89649ad836621c675bc318369d80fa78051507a4ae770c9", size
= 28548, upload-time = "2026-07-24T04:59:59.889Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/bd/5b/0f0bb1e45f7547d081ae9d490a88c6f6031d0f2c97459236e0a2a8b27207/types_paramiko-3.5.0.20250801-py3-none-any.whl",
hash =
"sha256:3e02a0fcf2b7e7b213e0cd569f7223ff9af417052a4d149d84172ebaa6fd742e", size
= 39705, upload-time = "2025-08-01T03:48:51.855Z" },
+ { url =
"https://files.pythonhosted.org/packages/4c/16/fca52784f979821e2205ff514322d0e83452536acc4807a79ddb2085bbb2/types_paramiko-5.0.0.20260724-py3-none-any.whl",
hash =
"sha256:40c7083803a5a28ab7a8d2fe4cd9b7746d0a03538598582ce68f60967a2ad272", size
= 37125, upload-time = "2026-07-24T04:59:58.955Z" },
]
[[package]]
@@ -24771,7 +24765,7 @@ name = "xmlsec"
version = "1.3.17"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "lxml", marker = "python_full_version < '3.13'" },
+ { name = "lxml" },
]
sdist = { url =
"https://files.pythonhosted.org/packages/49/14/538b75379e6ab8f688f14d8663e2ab138d9c778bac4999d155b5f33c71c1/xmlsec-1.3.17.tar.gz",
hash =
"sha256:f3fac9ae679f66585925cc00c5f6839ae36c1d03157619571dee18acc05b9c01", size
= 115637, upload-time = "2025-11-11T16:20:46.019Z" }
wheels = [