This is an automated email from the ASF dual-hosted git repository. vatsrahul1001 pushed a commit to annotated tag constraints-latest in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 0510a170ccb99452710bcc67d3e191c8fd905ead Merge: bc3e2d62318 8572ede43d1 Author: Rahul Vats <[email protected]> AuthorDate: Mon Aug 3 14:01:43 2026 +0530 Merge remote-tracking branch 'refs/remotes/origin/main' .github/dependabot.yml | 6 + .github/workflows/asf-allowlist-check.yml | 2 +- .github/workflows/basic-tests.yml | 8 +- .github/workflows/ci-image-build.yml | 16 +- .github/workflows/ci-image-checks.yml | 4 +- .github/workflows/prod-image-build.yml | 2 +- .github/workflows/publish-docs-to-s3.yml | 6 +- .github/workflows/recheck-old-bug-report.yml | 2 +- .github/workflows/stale.yml | 4 +- ISSUE_TRIAGE_PROCESS.rst | 2 +- airflow-core/docs/howto/deadline-alerts.rst | 7 + airflow-core/newsfragments/69675.bugfix.rst | 1 + airflow-core/newsfragments/70708.bugfix.rst | 1 + airflow-core/newsfragments/70759.significant.rst | 24 + airflow-core/newsfragments/70791.significant.rst | 35 + .../api_fastapi/auth/managers/base_auth_manager.py | 48 +- .../auth/managers/models/resource_details.py | 4 + .../auth/managers/simple/simple_auth_manager.py | 7 +- .../auth/managers/simple/ui/package.json | 4 +- .../auth/managers/simple/ui/pnpm-lock.yaml | 218 +- .../api_fastapi/core_api/openapi/_private_ui.yaml | 8 + .../api_fastapi/core_api/routes/public/assets.py | 2 +- .../core_api/routes/public/backfills.py | 2 +- .../api_fastapi/core_api/routes/public/dag_run.py | 2 +- .../api_fastapi/core_api/routes/public/hitl.py | 2 +- .../api_fastapi/core_api/routes/ui/deadlines.py | 22 +- .../src/airflow/api_fastapi/core_api/security.py | 64 +- .../core_api/services/ui/connections.py | 4 +- .../api_fastapi/core_api/services/ui/dag_run.py | 4 +- .../execution_api/routes/task_state_store.py | 6 +- .../execution_api/versions/v2026_06_30.py | 6 +- .../src/airflow/secrets/environment_variables.py | 38 +- airflow-core/src/airflow/ui/eslint.config.js | 1 - .../src/airflow/ui/openapi-gen/queries/common.ts | 5 +- .../ui/openapi-gen/queries/ensureQueryData.ts | 6 +- .../src/airflow/ui/openapi-gen/queries/prefetch.ts | 6 +- .../src/airflow/ui/openapi-gen/queries/queries.ts | 6 +- .../src/airflow/ui/openapi-gen/queries/suspense.ts | 6 +- .../ui/openapi-gen/requests/services.gen.ts | 2 + .../airflow/ui/openapi-gen/requests/types.gen.ts | 1 + airflow-core/src/airflow/ui/package.json | 18 +- airflow-core/src/airflow/ui/pnpm-lock.yaml | 463 +--- .../ui/public/i18n/locales/ko/components.json | 13 +- airflow-core/src/airflow/ui/rules/core.js | 1 - airflow-core/src/airflow/ui/rules/i18n.js | 2 - airflow-core/src/airflow/ui/rules/i18next.js | 1 - airflow-core/src/airflow/ui/rules/perfectionist.js | 1 - airflow-core/src/airflow/ui/rules/prettier.js | 1 - airflow-core/src/airflow/ui/rules/react.js | 1 - airflow-core/src/airflow/ui/rules/stylistic.js | 1 - airflow-core/src/airflow/ui/rules/typescript.js | 1 - airflow-core/src/airflow/ui/rules/unicorn.js | 1 - .../ui/src/components/FlexibleForm/FieldBool.tsx | 2 + .../airflow/ui/src/components/StoreValueCell.tsx | 1 - .../airflow/ui/src/components/ui/Select/Item.tsx | 1 - .../src/airflow/ui/src/i18n/config.test.ts | 2 +- .../src/pages/Dag/Calendar/DailyCalendarView.tsx | 1 - .../src/pages/Dag/Calendar/HourlyCalendarView.tsx | 1 - airflow-core/src/airflow/ui/src/theme.ts | 1 - .../airflow/ui/src/utils/detectLanguage.test.ts | 1 - airflow-core/src/airflow/ui/src/utils/logs.ts | 2 - airflow-core/src/airflow/ui/src/utils/slots.tsx | 1 - .../airflow/ui/tests/e2e/fixtures/asset-data.ts | 1 - .../ui/tests/e2e/fixtures/audit-log-data.ts | 1 - .../airflow/ui/tests/e2e/fixtures/calendar-data.ts | 1 - .../airflow/ui/tests/e2e/fixtures/dag-runs-data.ts | 1 - .../ui/tests/e2e/fixtures/dashboard-data.ts | 1 - .../src/airflow/ui/tests/e2e/fixtures/data.ts | 2 - .../src/airflow/ui/tests/e2e/fixtures/pom.ts | 1 - .../ui/tests/e2e/fixtures/task-instances-data.ts | 1 - .../src/airflow/ui/tests/e2e/fixtures/xcom-data.ts | 1 - .../airflow/ui/tests/e2e/utils/api/backfills.ts | 1 - .../src/airflow/ui/tests/e2e/utils/api/dag-runs.ts | 1 - .../src/airflow/ui/tests/e2e/utils/api/hitl.ts | 1 - .../airflow/ui/tests/e2e/utils/api/variables.ts | 1 - .../src/airflow/ui/tests/e2e/utils/shared.ts | 1 - .../src/airflow/ui/tests/e2e/utils/ui/waits.ts | 1 - airflow-core/src/airflow/utils/email.py | 2 +- airflow-core/src/airflow/utils/sqlalchemy.py | 4 +- .../always/test_secrets_environment_variables.py | 144 + .../managers/simple/test_simple_auth_manager.py | 27 + .../auth/managers/test_base_auth_manager.py | 20 + .../core_api/routes/public/test_assets.py | 75 + .../core_api/routes/public/test_backfills.py | 23 + .../core_api/routes/public/test_dag_run.py | 19 + .../core_api/routes/public/test_event_logs.py | 89 +- .../core_api/routes/public/test_hitl.py | 20 + .../core_api/routes/ui/test_deadlines.py | 67 + .../core_api/services/ui/test_dag_run.py | 25 +- .../unit/api_fastapi/core_api/test_security.py | 57 +- .../versions/head/test_task_state_store.py | 26 + airflow-core/tests/unit/jobs/test_triggerer_job.py | 27 +- airflow-core/tests/unit/models/test_deadline.py | 39 + airflow-core/tests/unit/utils/test_email.py | 19 + airflow-ctl/src/airflowctl/api/client.py | 3 - airflow-ctl/src/airflowctl/api/operations.py | 22 +- airflow-ctl/src/airflowctl/ctl/cli_config.py | 4 - airflow-ctl/tests/airflow_ctl/api/test_client.py | 46 + chart/.pre-commit-config.yaml | 7 + chart/values.schema.json | 478 ++-- contributing-docs/18_contribution_workflow.rst | 2 +- contributing-docs/30_new_language_sdk.rst | 161 +- .../airflow_breeze/commands/kubernetes_commands.py | 54 +- .../airflow_breeze/utils/provider_dependencies.py | 20 +- .../tests/test_kubernetes_lang_sdk_commands.py | 9 + dev/breeze/tests/test_provider_dependencies.py | 81 + dev/breeze/uv.lock | 66 +- .../react_plugin_template/package.json | 44 +- .../react_plugin_template/pnpm-lock.yaml | 2820 ++++++++++---------- docs/spelling_wordlist.txt | 1 + generated/known_airflow_exceptions.txt | 7 +- go-sdk/edge/commands/root.go | 1 - go-sdk/go.mod | 4 +- go-sdk/go.sum | 14 - go-sdk/pkg/config/config.go | 37 +- kubernetes-tests/lang_sdk/README.md | 6 + kubernetes-tests/lang_sdk/go_example/go.mod | 2 - kubernetes-tests/lang_sdk/go_example/go.sum | 14 - providers/.last_release_date.txt | 2 +- providers/airbyte/README.rst | 6 +- providers/airbyte/docs/changelog.rst | 11 + providers/airbyte/docs/index.rst | 6 +- providers/airbyte/provider.yaml | 3 +- providers/airbyte/pyproject.toml | 6 +- .../src/airflow/providers/airbyte/__init__.py | 2 +- .../airflow/providers/airbyte/sensors/airbyte.py | 25 +- .../tests/unit/airbyte/sensors/test_airbyte.py | 34 + providers/alibaba/README.rst | 6 +- providers/alibaba/docs/changelog.rst | 14 + providers/alibaba/docs/index.rst | 6 +- providers/alibaba/provider.yaml | 7 +- providers/alibaba/pyproject.toml | 6 +- .../src/airflow/providers/alibaba/__init__.py | 2 +- .../alibaba/cloud/log/oss_task_handler.py | 26 + .../airflow/providers/alibaba/get_provider_info.py | 6 + .../unit/alibaba/cloud/hooks/test_maxcompute.py | 18 +- .../alibaba/cloud/log/test_oss_task_handler.py | 83 +- providers/amazon/README.rst | 16 +- providers/amazon/docs/changelog.rst | 52 + providers/amazon/docs/index.rst | 16 +- providers/amazon/docs/logging/s3-task-handler.rst | 20 + providers/amazon/provider.yaml | 18 +- providers/amazon/pyproject.toml | 23 +- .../src/airflow/providers/amazon/__init__.py | 2 +- .../providers/amazon/aws/log/s3_task_handler.py | 7 + .../airflow/providers/amazon/aws/operators/dms.py | 11 +- .../airflow/providers/amazon/aws/operators/eks.py | 44 +- .../amazon/aws/operators/redshift_data.py | 8 + .../providers/amazon/aws/operators/sagemaker.py | 18 +- .../amazon/aws/secrets/secrets_manager.py | 55 +- .../amazon/aws/secrets/systems_manager.py | 55 +- .../airflow/providers/amazon/aws/triggers/eks.py | 30 +- .../providers/amazon/aws/triggers/redshift_data.py | 31 + .../airflow/providers/amazon/aws/utils/__init__.py | 42 +- .../airflow/providers/amazon/get_provider_info.py | 7 + .../aws/example_eks_with_fargate_in_one_step.py | 5 - .../amazon/aws/example_eks_with_fargate_profile.py | 5 - .../aws/example_eks_with_nodegroup_in_one_step.py | 4 - .../amazon/aws/example_eks_with_nodegroups.py | 4 - ...xample_glue_data_quality_with_recommendation.py | 5 + .../unit/amazon/aws/log/test_s3_task_handler.py | 53 + .../tests/unit/amazon/aws/operators/test_dms.py | 36 +- .../tests/unit/amazon/aws/operators/test_eks.py | 119 + .../amazon/aws/operators/test_redshift_data.py | 41 + .../aws/operators/test_sagemaker_notebook.py | 19 + .../aws/operators/test_sagemaker_processing.py | 15 +- .../amazon/aws/secrets/test_secrets_manager.py | 68 +- .../amazon/aws/secrets/test_systems_manager.py | 80 +- .../tests/unit/amazon/aws/triggers/test_eks.py | 44 + .../unit/amazon/aws/triggers/test_redshift_data.py | 81 + .../tests/unit/amazon/aws/utils/test_utils.py | 66 + providers/anthropic/README.rst | 6 +- providers/anthropic/docs/changelog.rst | 11 + providers/anthropic/docs/index.rst | 6 +- providers/anthropic/provider.yaml | 3 +- providers/anthropic/pyproject.toml | 6 +- .../src/airflow/providers/anthropic/__init__.py | 2 +- providers/apache/hdfs/README.rst | 18 +- providers/apache/hdfs/docs/changelog.rst | 12 + providers/apache/hdfs/docs/index.rst | 18 +- providers/apache/hdfs/provider.yaml | 3 +- providers/apache/hdfs/pyproject.toml | 21 +- .../src/airflow/providers/apache/hdfs/__init__.py | 2 +- providers/apache/hive/README.rst | 18 +- providers/apache/hive/docs/changelog.rst | 17 + providers/apache/hive/docs/index.rst | 18 +- providers/apache/hive/provider.yaml | 3 +- providers/apache/hive/pyproject.toml | 21 +- .../src/airflow/providers/apache/hive/__init__.py | 2 +- providers/apache/kafka/README.rst | 6 +- providers/apache/kafka/docs/changelog.rst | 15 + providers/apache/kafka/docs/index.rst | 6 +- providers/apache/kafka/provider.yaml | 3 +- providers/apache/kafka/pyproject.toml | 6 +- .../src/airflow/providers/apache/kafka/__init__.py | 2 +- .../airflow/providers/apache/kafka/hooks/base.py | 27 +- .../providers/apache/kafka/operators/consume.py | 112 +- .../providers/apache/kafka/sensors/kafka.py | 10 + .../apache/kafka/triggers/await_message.py | 13 +- .../tests/unit/apache/kafka/hooks/test_base.py | 25 +- .../unit/apache/kafka/operators/test_consume.py | 42 + .../tests/unit/apache/kafka/sensors/test_kafka.py | 22 + .../apache/kafka/triggers/test_await_message.py | 72 + providers/apache/livy/README.rst | 6 +- providers/apache/livy/docs/changelog.rst | 13 + providers/apache/livy/docs/index.rst | 6 +- providers/apache/livy/provider.yaml | 3 +- providers/apache/livy/pyproject.toml | 6 +- .../src/airflow/providers/apache/livy/__init__.py | 2 +- .../providers/apache/livy/operators/livy.py | 66 +- .../tests/unit/apache/livy/operators/test_livy.py | 127 +- providers/apache/spark/README.rst | 6 +- providers/apache/spark/docs/changelog.rst | 18 + providers/apache/spark/docs/index.rst | 6 +- providers/apache/spark/provider.yaml | 3 +- providers/apache/spark/pyproject.toml | 6 +- .../src/airflow/providers/apache/spark/__init__.py | 2 +- providers/arangodb/README.rst | 6 +- providers/arangodb/docs/changelog.rst | 13 + providers/arangodb/docs/index.rst | 6 +- providers/arangodb/provider.yaml | 3 +- providers/arangodb/pyproject.toml | 6 +- .../src/airflow/providers/arangodb/__init__.py | 2 +- .../providers/arangodb/operators/arangodb.py | 4 +- .../tests/unit/arangodb/operators/test_arangodb.py | 12 + providers/celery/README.rst | 6 +- providers/celery/docs/changelog.rst | 11 + providers/celery/docs/index.rst | 6 +- providers/celery/provider.yaml | 3 +- providers/celery/pyproject.toml | 6 +- .../src/airflow/providers/celery/__init__.py | 2 +- providers/clickhousedb/docs/changelog.rst | 1 + providers/clickhousedb/provider.yaml | 2 +- providers/cncf/kubernetes/README.rst | 6 +- providers/cncf/kubernetes/docs/changelog.rst | 38 + providers/cncf/kubernetes/docs/index.rst | 7 +- providers/cncf/kubernetes/docs/kubernetes_rbac.rst | 179 ++ providers/cncf/kubernetes/provider.yaml | 3 +- providers/cncf/kubernetes/pyproject.toml | 6 +- .../airflow/providers/cncf/kubernetes/__init__.py | 2 +- .../providers/cncf/kubernetes/hooks/kubernetes.py | 9 +- .../providers/cncf/kubernetes/utils/pod_manager.py | 6 +- .../unit/cncf/kubernetes/hooks/test_kubernetes.py | 24 + .../unit/cncf/kubernetes/utils/test_pod_manager.py | 20 + providers/cohere/README.rst | 6 +- providers/cohere/docs/changelog.rst | 18 + providers/cohere/docs/index.rst | 6 +- providers/cohere/provider.yaml | 3 +- providers/cohere/pyproject.toml | 6 +- .../src/airflow/providers/cohere/__init__.py | 2 +- providers/common/ai/README.rst | 5 +- providers/common/ai/docs/changelog.rst | 25 +- providers/common/ai/provider.yaml | 2 +- .../ai/tests/unit/common/ai/policies/test_retry.py | 4 +- providers/common/compat/README.rst | 6 +- providers/common/compat/docs/changelog.rst | 12 + providers/common/compat/docs/index.rst | 6 +- providers/common/compat/provider.yaml | 3 +- providers/common/compat/pyproject.toml | 6 +- .../airflow/providers/common/compat/__init__.py | 2 +- .../common/compat/security/access_view.py | 10 +- .../common/compat/security/test_access_view.py | 28 +- .../common/io/docs/.latest-doc-only-change.txt | 2 +- providers/common/io/docs/xcom_backend.rst | 4 +- providers/common/sql/README.rst | 14 +- providers/common/sql/docs/changelog.rst | 24 + providers/common/sql/docs/index.rst | 14 +- providers/common/sql/provider.yaml | 3 +- providers/common/sql/pyproject.toml | 21 +- .../src/airflow/providers/common/sql/__init__.py | 2 +- .../airflow/providers/common/sql/operators/sql.py | 56 +- .../tests/unit/common/sql/operators/test_sql.py | 76 + providers/databricks/README.rst | 18 +- providers/databricks/docs/changelog.rst | 22 + providers/databricks/docs/index.rst | 18 +- providers/databricks/provider.yaml | 3 +- providers/databricks/pyproject.toml | 21 +- .../src/airflow/providers/databricks/__init__.py | 2 +- providers/dbt/cloud/README.rst | 6 +- providers/dbt/cloud/docs/changelog.rst | 20 + providers/dbt/cloud/docs/index.rst | 6 +- providers/dbt/cloud/provider.yaml | 3 +- providers/dbt/cloud/pyproject.toml | 6 +- .../src/airflow/providers/dbt/cloud/__init__.py | 2 +- providers/docker/README.rst | 6 +- providers/docker/docs/changelog.rst | 11 + providers/docker/docs/index.rst | 6 +- providers/docker/provider.yaml | 3 +- providers/docker/pyproject.toml | 6 +- .../src/airflow/providers/docker/__init__.py | 2 +- providers/edge3/README.rst | 6 +- providers/edge3/docs/changelog.rst | 24 + providers/edge3/docs/index.rst | 6 +- providers/edge3/provider.yaml | 3 +- providers/edge3/pyproject.toml | 6 +- .../edge3/src/airflow/providers/edge3/__init__.py | 2 +- .../providers/edge3/example_dags/win_notepad.py | 2 +- .../providers/edge3/example_dags/win_test.py | 2 +- .../providers/edge3/plugins/www/package.json | 4 +- .../providers/edge3/plugins/www/pnpm-lock.yaml | 184 +- providers/elasticsearch/README.rst | 6 +- providers/elasticsearch/docs/changelog.rst | 22 + providers/elasticsearch/docs/index.rst | 6 +- providers/elasticsearch/docs/logging/index.rst | 11 + providers/elasticsearch/provider.yaml | 7 +- providers/elasticsearch/pyproject.toml | 6 +- .../airflow/providers/elasticsearch/__init__.py | 2 +- .../providers/elasticsearch/get_provider_info.py | 6 + .../providers/elasticsearch/log/es_task_handler.py | 30 +- .../unit/elasticsearch/log/test_es_task_handler.py | 70 +- providers/exasol/README.rst | 18 +- providers/exasol/docs/changelog.rst | 11 + providers/exasol/docs/index.rst | 18 +- providers/exasol/provider.yaml | 3 +- providers/exasol/pyproject.toml | 21 +- .../src/airflow/providers/exasol/__init__.py | 2 +- providers/fab/README.rst | 8 +- providers/fab/docs/auth-manager/access-control.rst | 6 +- providers/fab/docs/changelog.rst | 24 + providers/fab/docs/index.rst | 8 +- providers/fab/provider.yaml | 3 +- providers/fab/pyproject.toml | 8 +- .../fab/src/airflow/providers/fab/__init__.py | 2 +- .../providers/fab/auth_manager/fab_auth_manager.py | 13 +- .../fab/auth_manager/security_manager/override.py | 1 + .../providers/fab/www/security/permissions.py | 1 + providers/git/README.rst | 6 +- providers/git/docs/changelog.rst | 11 + providers/git/docs/index.rst | 6 +- providers/git/provider.yaml | 3 +- providers/git/pyproject.toml | 6 +- .../git/src/airflow/providers/git/__init__.py | 2 +- .../git/src/airflow/providers/git/bundles/git.py | 8 +- providers/git/tests/unit/git/bundles/test_git.py | 58 + providers/google/README.rst | 12 +- providers/google/docs/changelog.rst | 36 +- providers/google/docs/index.rst | 12 +- .../google/docs/operators/cloud/cloud_sql.rst | 39 + .../google-cloud-secret-manager-backend.rst | 42 + providers/google/provider.yaml | 7 +- providers/google/pyproject.toml | 15 +- .../src/airflow/providers/google/ads/hooks/ads.py | 8 +- .../providers/google/cloud/hooks/cloud_sql.py | 32 + .../providers/google/cloud/hooks/dataform.py | 2 - .../google/cloud/log/stackdriver_task_handler.py | 38 +- .../providers/google/cloud/operators/gen_ai.py | 18 +- .../google/cloud/secrets/secret_manager.py | 85 +- .../providers/google/cloud/sensors/cloud_sql.py | 147 + .../google/cloud/transfers/bigquery_to_mssql.py | 22 +- .../google/cloud/transfers/bigquery_to_sql.py | 11 +- .../providers/google/cloud/transfers/gcs_to_gcs.py | 40 +- .../google/cloud/triggers/cloud_composer.py | 7 +- .../providers/google/cloud/triggers/cloud_sql.py | 81 +- .../airflow/providers/google/get_provider_info.py | 10 +- .../operators/analytics_admin.py | 2 +- .../google/tests/system/google/ads/example_ads.py | 2 +- .../google/cloud/cloud_sql/example_cloud_sql.py | 11 + .../unit/google/cloud/hooks/test_cloud_sql.py | 20 + .../tests/unit/google/cloud/hooks/test_dataform.py | 23 +- .../cloud/log/test_stackdriver_task_handler.py | 63 + .../unit/google/cloud/operators/test_gen_ai.py | 50 + .../google/cloud/secrets/test_secret_manager.py | 193 +- .../unit/google/cloud/sensors/test_cloud_sql.py | 127 + .../cloud/transfers/test_bigquery_to_mssql.py | 53 + .../unit/google/cloud/transfers/test_gcs_to_gcs.py | 63 +- .../google/cloud/triggers/test_cloud_composer.py | 59 + .../unit/google/cloud/triggers/test_cloud_sql.py | 82 +- .../operators/test_analytics_admin.py | 25 + providers/hashicorp/README.rst | 6 +- providers/hashicorp/docs/changelog.rst | 20 + providers/hashicorp/docs/index.rst | 6 +- providers/hashicorp/provider.yaml | 3 +- providers/hashicorp/pyproject.toml | 6 +- .../src/airflow/providers/hashicorp/__init__.py | 2 +- providers/http/docs/.latest-doc-only-change.txt | 2 +- providers/imap/README.rst | 6 +- providers/imap/docs/changelog.rst | 12 + providers/imap/docs/index.rst | 6 +- providers/imap/provider.yaml | 3 +- providers/imap/pyproject.toml | 6 +- .../imap/src/airflow/providers/imap/__init__.py | 2 +- .../imap/src/airflow/providers/imap/hooks/imap.py | 28 +- providers/imap/tests/unit/imap/hooks/test_imap.py | 64 +- providers/keycloak/README.rst | 8 +- providers/keycloak/docs/changelog.rst | 23 + providers/keycloak/docs/index.rst | 8 +- providers/keycloak/provider.yaml | 3 +- providers/keycloak/pyproject.toml | 8 +- .../src/airflow/providers/keycloak/__init__.py | 2 +- .../providers/keycloak/auth_manager/constants.py | 6 +- .../keycloak/auth_manager/keycloak_auth_manager.py | 255 +- .../providers/keycloak/auth_manager/middleware.py | 246 ++ .../keycloak/auth_manager/routes/login.py | 15 - .../airflow/providers/keycloak/version_compat.py | 1 + .../keycloak/auth_manager/routes/test_login.py | 2 + .../auth_manager/test_keycloak_auth_manager.py | 243 +- .../unit/keycloak/auth_manager/test_middleware.py | 372 +++ providers/microsoft/azure/README.rst | 6 +- providers/microsoft/azure/docs/changelog.rst | 25 + providers/microsoft/azure/docs/index.rst | 6 +- providers/microsoft/azure/provider.yaml | 7 +- providers/microsoft/azure/pyproject.toml | 6 +- .../airflow/providers/microsoft/azure/__init__.py | 2 +- .../providers/microsoft/azure/get_provider_info.py | 6 + .../microsoft/azure/log/wasb_task_handler.py | 35 +- .../providers/microsoft/azure/secrets/key_vault.py | 56 +- .../microsoft/azure/transfers/local_to_adls.py | 4 +- .../microsoft/azure/log/test_wasb_task_handler.py | 153 ++ .../unit/microsoft/azure/secrets/test_key_vault.py | 102 + .../azure/transfers/test_local_to_adls.py | 3 +- providers/neo4j/README.rst | 6 +- providers/neo4j/docs/changelog.rst | 13 + providers/neo4j/docs/index.rst | 6 +- providers/neo4j/provider.yaml | 3 +- providers/neo4j/pyproject.toml | 6 +- .../neo4j/src/airflow/providers/neo4j/__init__.py | 2 +- providers/openai/README.rst | 6 +- providers/openai/docs/changelog.rst | 44 + providers/openai/docs/index.rst | 6 +- providers/openai/provider.yaml | 3 +- providers/openai/pyproject.toml | 6 +- .../src/airflow/providers/openai/__init__.py | 2 +- .../src/airflow/providers/openai/exceptions.py | 4 + .../src/airflow/providers/openai/hooks/openai.py | 26 +- .../airflow/providers/openai/operators/openai.py | 8 +- .../airflow/providers/openai/triggers/openai.py | 89 +- .../openai/tests/unit/openai/hooks/test_openai.py | 39 +- .../tests/unit/openai/operators/test_openai.py | 40 + .../tests/unit/openai/triggers/test_openai.py | 133 +- providers/openlineage/README.rst | 4 +- providers/openlineage/docs/changelog.rst | 11 +- providers/openlineage/docs/index.rst | 4 +- providers/openlineage/provider.yaml | 2 +- providers/openlineage/pyproject.toml | 4 +- .../airflow/providers/openlineage/utils/utils.py | 35 +- .../tests/unit/openlineage/utils/test_utils.py | 154 +- providers/opensearch/README.rst | 6 +- providers/opensearch/docs/changelog.rst | 12 + providers/opensearch/docs/index.rst | 6 +- providers/opensearch/provider.yaml | 3 +- providers/opensearch/pyproject.toml | 6 +- .../src/airflow/providers/opensearch/__init__.py | 2 +- .../providers/opensearch/log/os_task_handler.py | 8 +- .../unit/opensearch/log/test_os_task_handler.py | 8 +- providers/papermill/README.rst | 18 +- providers/papermill/docs/changelog.rst | 16 + providers/papermill/docs/index.rst | 18 +- providers/papermill/provider.yaml | 3 +- providers/papermill/pyproject.toml | 21 +- .../src/airflow/providers/papermill/__init__.py | 2 +- providers/postgres/README.rst | 14 +- providers/postgres/docs/changelog.rst | 17 + providers/postgres/docs/index.rst | 14 +- providers/postgres/provider.yaml | 3 +- providers/postgres/pyproject.toml | 21 +- .../src/airflow/providers/postgres/__init__.py | 2 +- .../airflow/providers/postgres/hooks/postgres.py | 7 +- .../tests/unit/postgres/hooks/test_postgres.py | 4 +- providers/presto/README.rst | 18 +- providers/presto/docs/changelog.rst | 18 + providers/presto/docs/index.rst | 18 +- providers/presto/provider.yaml | 3 +- providers/presto/pyproject.toml | 21 +- .../src/airflow/providers/presto/__init__.py | 2 +- providers/salesforce/README.rst | 18 +- providers/salesforce/docs/changelog.rst | 12 + providers/salesforce/docs/index.rst | 18 +- providers/salesforce/provider.yaml | 3 +- providers/salesforce/pyproject.toml | 21 +- .../src/airflow/providers/salesforce/__init__.py | 2 +- providers/sftp/README.rst | 6 +- providers/sftp/docs/changelog.rst | 17 + providers/sftp/docs/index.rst | 6 +- providers/sftp/provider.yaml | 3 +- providers/sftp/pyproject.toml | 6 +- .../sftp/src/airflow/providers/sftp/__init__.py | 2 +- .../sftp/src/airflow/providers/sftp/hooks/sftp.py | 6 +- providers/sftp/tests/unit/sftp/hooks/test_sftp.py | 5 +- providers/smtp/README.rst | 6 +- providers/smtp/docs/changelog.rst | 11 + providers/smtp/docs/index.rst | 6 +- providers/smtp/provider.yaml | 3 +- providers/smtp/pyproject.toml | 6 +- .../smtp/src/airflow/providers/smtp/__init__.py | 2 +- .../smtp/src/airflow/providers/smtp/hooks/smtp.py | 2 +- providers/smtp/tests/unit/smtp/hooks/test_smtp.py | 20 + providers/snowflake/README.rst | 12 +- providers/snowflake/docs/changelog.rst | 28 + providers/snowflake/docs/index.rst | 12 +- providers/snowflake/provider.yaml | 3 +- providers/snowflake/pyproject.toml | 21 +- .../src/airflow/providers/snowflake/__init__.py | 2 +- .../snowflake/operators/snowpark_containers.py | 4 +- .../operators/test_snowpark_containers.py | 11 +- providers/ssh/README.rst | 6 +- providers/ssh/docs/changelog.rst | 21 + providers/ssh/docs/index.rst | 6 +- providers/ssh/provider.yaml | 3 +- providers/ssh/pyproject.toml | 6 +- .../ssh/src/airflow/providers/ssh/__init__.py | 2 +- .../providers/ssh/operators/ssh_remote_job.py | 4 +- .../src/airflow/providers/ssh/utils/remote_job.py | 52 +- providers/ssh/tests/unit/ssh/hooks/test_ssh.py | 49 +- .../unit/ssh/operators/test_ssh_remote_job.py | 24 + .../ssh/tests/unit/ssh/utils/test_remote_job.py | 53 +- providers/standard/README.rst | 6 +- providers/standard/docs/changelog.rst | 38 + providers/standard/docs/index.rst | 6 +- providers/standard/provider.yaml | 3 +- providers/standard/pyproject.toml | 6 +- .../src/airflow/providers/standard/__init__.py | 2 +- .../airflow/providers/standard/operators/hitl.py | 24 +- .../providers/standard/sensors/date_time.py | 13 +- .../providers/standard/sensors/external_task.py | 41 +- .../providers/standard/sensors/filesystem.py | 17 +- .../src/airflow/providers/standard/sensors/time.py | 9 +- .../providers/standard/sensors/time_delta.py | 21 +- .../tests/unit/standard/operators/test_hitl.py | 11 + .../tests/unit/standard/sensors/test_date_time.py | 32 + .../standard/sensors/test_external_task_sensor.py | 145 + .../tests/unit/standard/sensors/test_filesystem.py | 25 + .../tests/unit/standard/sensors/test_time.py | 19 + .../tests/unit/standard/sensors/test_time_delta.py | 25 + providers/telegram/README.rst | 6 +- providers/telegram/docs/changelog.rst | 12 + providers/telegram/docs/index.rst | 6 +- providers/telegram/provider.yaml | 3 +- providers/telegram/pyproject.toml | 6 +- .../src/airflow/providers/telegram/__init__.py | 2 +- .../providers/telegram/operators/telegram.py | 2 +- .../tests/unit/telegram/operators/test_telegram.py | 17 +- providers/teradata/README.rst | 6 +- providers/teradata/docs/changelog.rst | 16 + providers/teradata/docs/index.rst | 6 +- providers/teradata/provider.yaml | 3 +- providers/teradata/pyproject.toml | 6 +- .../src/airflow/providers/teradata/__init__.py | 2 +- .../airflow/providers/teradata/operators/bteq.py | 3 +- .../tests/unit/teradata/operators/test_bteq.py | 3 +- providers/trino/README.rst | 18 +- providers/trino/docs/changelog.rst | 18 + providers/trino/docs/index.rst | 18 +- providers/trino/provider.yaml | 3 +- providers/trino/pyproject.toml | 21 +- .../trino/src/airflow/providers/trino/__init__.py | 2 +- providers/weaviate/README.rst | 18 +- providers/weaviate/docs/changelog.rst | 21 + providers/weaviate/docs/connections.rst | 2 +- providers/weaviate/docs/index.rst | 18 +- providers/weaviate/provider.yaml | 3 +- providers/weaviate/pyproject.toml | 21 +- .../src/airflow/providers/weaviate/__init__.py | 2 +- providers/yandex/README.rst | 6 +- providers/yandex/docs/changelog.rst | 12 + providers/yandex/docs/index.rst | 6 +- providers/yandex/provider.yaml | 3 +- providers/yandex/pyproject.toml | 6 +- .../src/airflow/providers/yandex/__init__.py | 2 +- .../airflow/providers/yandex/secrets/lockbox.py | 38 +- .../tests/unit/yandex/secrets/test_lockbox.py | 73 + .../sort_helm_values_schema_file_type_field.py | 64 + .../ci/prek/validate_operators_init_exemptions.txt | 4 - task-sdk/pyproject.toml | 15 +- task-sdk/src/airflow/sdk/api/client.py | 6 +- task-sdk/src/airflow/sdk/definitions/deadline.py | 46 +- .../src/airflow/sdk/serde/serializers/pandas.py | 45 + task-sdk/tests/task_sdk/api/test_client.py | 41 + task-sdk/tests/task_sdk/serde/test_serializers.py | 28 + uv.lock | 190 +- 569 files changed, 11494 insertions(+), 3925 deletions(-)
