This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a change to branch ci-upgrade-main
in repository https://gitbox.apache.org/repos/asf/airflow.git
omit 5368987164e [main] CI: Upgrade important CI environment
add fd42d8694e1 Clarify testing standard related to caplog assertions in
AGENTS.md (#69803)
add c382278eaca Add quick start guide to common.ai provider docs (#69552)
add 06f8c4772c0 Fix DatabricksSqlHook sqlalchemy_url missing http_path
from connection extra (#69747)
add 7f60646cd99 Uncouple skill-eval harness string match from promptfoo
version banner (#69804)
add 5de1b18a012 Restrict MSGraph pagination nextLink to the configured
host (#69742)
add 8302ba498ae Add a DagRun and TaskInstance event listener under the
Kafka provider (#68082)
add f2403ccb58b Fix scheduler firing on_failure_callback for
heartbeat-timed-out retries (#66767)
add 4fa9816eef6 derive keycloak oauth redirect_uri from configured base
url (#69801)
add 5271c99bd50 Add deadlines to Calendar Tab (#69559)
add eb986f642a7 Fix pending partition run lookups for slash keys and
duplicate rows (#69700)
add ea5b6af530d Update providers metadata 2026-07-13 (#69829)
add f663060f405 Fix AUTH_ROLE_PUBLIC returning 401 in FastAPI API server
(#69773)
add c1c7b126d11 Remove unnecessary line break (#69497)
add 120af8c1cb6 Fix the broken document reference in contribution docs
(#69714)
add cc36bf86a18 Bump prettier (#69835)
add fdfe2150eff Fix Google Cloud Batch error messages to include job name
(#69783)
add 6323bd98d14 Fix dead Managed Agents link and incomplete first-party
note in Anthropic provider docs (#69709)
add ef1a92bd803 Remove unused [datalib] extra from OpenAI provider base
install (#69408)
add 90b8ee44d78 Fix Google Links for TPC (Trusted Partner Cloud) (#69805)
add a1cec525543 Fix airflowctl JSON parsing for Dag run conf (#68985)
add ae9dbd7681f Allow embedding a Dag run in an external trace via run
conf (#69633)
add 2e511e6b7ee Add Common Data Quality provider skeleton (#69795)
add 96b820cad5d Add durable execution to SnowflakeSqlApiOperator (#69477)
add 4112a4aa4ff Fix `VaultBackend.get_connection()` breaking
`PythonVirtualenvOperator` in Airflow 3 (#68305)
add d6cd4595dbd Fix airflow db clean hang on MySQL when delete fails
(#66296)
add 22a2fdb930e Link task state store docs in durable execution across
providers (#69851)
add c8f1d7ea810 Fix Openlineage E2E compat tests docker compose error
(#69860)
add 98b4b01394c Pin databricks-sql-connector>=4.0.0 in generated
constraints (#69863)
add 50c5629b41c Run OpenLineage e2e compat tests when the compat setup
changes (#69866)
add 69ee7a3b7fc Fix flaky
test_adjust_maintenance_mode_based_on_sysinfo_exit (#69738)
add 10529542d48 Update retired model ids and fill doc gaps in common.ai
provider docs (#69711)
add f60a9211551 Update SQLAlchemy documentation link from 1.4 to 2.0
(#69775)
add cad6220034e Speed up dynamic task mapping expansion (#69565)
add 26c2c123a3c Allow `AthenaOperator` queries without a `database`
argument (#69846)
add 46ea26b769d Make Redshift system-test clusters non-public in
sql_to_s3/s3_to_sql (#69890)
add fc51ac92017 Make cheat-sheet test independent of rich table padding
(#69802)
add c22cc6d345f Pin lang-SDK k8s test's Go/Java SDKs to upstream main
(#69545)
add d3a57b6f783 Construct default token_endpoint for msgraph filesystem
(#69463) (#69522)
add 771f6f17b95 [main] CI: Upgrade important CI environment
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (5368987164e)
\
N -- N -- N refs/heads/ci-upgrade-main (771f6f17b95)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml | 1 +
.github/boring-cyborg.yml | 3 +
.pre-commit-config.yaml | 4 +-
AGENTS.md | 2 +-
.../logging-monitoring/traces.rst | 30 +
airflow-core/docs/best-practices.rst | 2 +-
airflow-core/docs/extra-packages-ref.rst | 92 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 4 +-
.../core_api/routes/ui/partitioned_dag_runs.py | 19 +-
.../src/airflow/config_templates/config.yml | 2 +-
.../src/airflow/jobs/scheduler_job_runner.py | 9 +
airflow-core/src/airflow/models/dagrun.py | 82 +-
airflow-core/src/airflow/models/taskinstance.py | 23 +
airflow-core/src/airflow/models/taskmap.py | 16 +-
.../ui/openapi-gen/requests/services.gen.ts | 6 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 2 +-
.../airflow/ui/src/pages/Dag/Calendar/Calendar.tsx | 32 +-
.../ui/src/pages/Dag/Calendar/CalendarCell.tsx | 31 +-
.../ui/src/pages/Dag/Calendar/CalendarLegend.tsx | 73 +-
.../ui/src/pages/Dag/Calendar/CalendarTooltip.tsx | 72 +-
.../src/pages/Dag/Calendar/DailyCalendarView.tsx | 14 +-
.../src/pages/Dag/Calendar/HourlyCalendarView.tsx | 11 +-
.../ui/src/pages/Dag/Calendar/LegendIcon.tsx | 64 ++
.../src/pages/Dag/Calendar/calendarUtils.test.ts | 67 +-
.../ui/src/pages/Dag/Calendar/calendarUtils.ts | 54 +-
.../src/airflow/ui/src/pages/Dag/Calendar/types.ts | 6 +
.../src/airflow/ui/src/utils/datetimeUtils.ts | 3 +-
airflow-core/src/airflow/utils/db_cleanup.py | 44 +-
airflow-core/tests/integration/otel/test_otel.py | 200 +----
.../core_api/routes/public/test_plugins.py | 15 +-
.../routes/ui/test_partitioned_dag_runs.py | 161 +++-
.../unit/cli/commands/test_cheat_sheet_command.py | 18 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 115 +++
airflow-core/tests/unit/models/test_dagrun.py | 123 ++-
.../tests/unit/models/test_taskinstance.py | 184 ++++
.../tests/unit/plugins/test_plugins_manager.py | 2 +-
airflow-core/tests/unit/utils/test_db_cleanup.py | 318 ++++++-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 18 +-
.../tests/airflow_ctl/ctl/test_cli_config.py | 44 +-
.../tests/airflow_e2e_tests/conftest.py | 7 +-
.../03a_contributors_quick_start_beginners.rst | 4 +-
contributing-docs/08_static_code_checks.rst | 1 -
dev/breeze/doc/ci/04_selective_checks.md | 10 +-
dev/breeze/doc/images/output_build-docs.svg | 16 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
...tput_release-management_add-back-references.svg | 16 +-
...tput_release-management_add-back-references.txt | 2 +-
...elease-management_classify-provider-changes.svg | 16 +-
...elease-management_classify-provider-changes.txt | 2 +-
...management_generate-issue-content-providers.svg | 16 +-
...management_generate-issue-content-providers.txt | 2 +-
...ease-management_generate-providers-metadata.svg | 18 +-
...ease-management_generate-providers-metadata.txt | 2 +-
...e-management_prepare-provider-distributions.svg | 16 +-
...e-management_prepare-provider-distributions.txt | 2 +-
...e-management_prepare-provider-documentation.svg | 16 +-
...e-management_prepare-provider-documentation.txt | 2 +-
.../output_release-management_publish-docs.svg | 16 +-
.../output_release-management_publish-docs.txt | 2 +-
...output_sbom_generate-providers-requirements.svg | 18 +-
...output_sbom_generate-providers-requirements.txt | 2 +-
.../images/output_workflow-run_publish-docs.svg | 16 +-
.../images/output_workflow-run_publish-docs.txt | 2 +-
.../airflow_breeze/commands/kubernetes_commands.py | 158 +++-
dev/breeze/src/airflow_breeze/global_constants.py | 2 +-
.../src/airflow_breeze/utils/selective_checks.py | 21 +-
.../tests/test_kubernetes_lang_sdk_commands.py | 244 +++++-
dev/breeze/tests/test_selective_checks.py | 35 +-
dev/breeze/uv.lock | 24 +-
dev/skill-evals/eval.py | 6 +-
dev/skill-evals/last-eval-hash.txt | 2 +-
devel-common/pyproject.toml | 2 +-
.../tests_common/test_utils/integration_setup.py | 201 +++++
docs/spelling_wordlist.txt | 1 +
generated/provider_metadata.json | 332 +++++---
kubernetes-tests/lang_sdk/README.md | 11 +
.../docs/operators/redshift/redshift_data.rst | 6 +-
.../providers/amazon/aws/operators/athena.py | 17 +-
.../tests/system/amazon/aws/example_s3_to_sql.py | 1 +
.../tests/system/amazon/aws/example_sql_to_s3.py | 1 +
.../tests/unit/amazon/aws/operators/test_athena.py | 35 +
providers/anthropic/docs/connections.rst | 10 +-
providers/anthropic/docs/operators/anthropic.rst | 2 +-
providers/apache/kafka/docs/configurations-ref.rst | 106 +++
providers/apache/kafka/docs/index.rst | 1 +
providers/apache/kafka/provider.yaml | 126 +++
providers/apache/kafka/pyproject.toml | 3 +
.../providers/apache/kafka/get_provider_info.py | 104 +++
.../airflow/providers/apache/kafka/hooks/base.py | 16 +
.../providers/apache/kafka/hooks/consume.py | 7 +-
.../providers/apache/kafka/plugins}/__init__.py | 0
.../providers/apache/kafka/plugins/listener.py | 470 ++++++++++
.../integration/apache/kafka/plugins}/__init__.py | 0
.../apache/kafka/plugins/dags}/__init__.py | 0
.../apache/kafka/plugins/dags/demo_dag.py | 14 +-
.../apache/kafka/plugins/test_listener.py | 167 ++++
.../tests/unit/apache/kafka/hooks/test_base.py | 29 +
.../tests/unit/apache/kafka/hooks/test_consume.py | 28 +-
.../tests/unit/apache/kafka/hooks/test_produce.py | 16 +
.../tests/unit/apache/kafka/plugins}/__init__.py | 0
.../unit/apache/kafka/plugins/test_listener.py | 538 ++++++++++++
providers/apache/spark/docs/operators.rst | 6 +-
providers/common/ai/docs/connections/mcp.rst | 8 +-
.../common/ai/docs/connections/pydantic_ai.rst | 11 +-
providers/common/ai/docs/hitl_review.rst | 6 +-
providers/common/ai/docs/hooks/index.rst | 4 +
providers/common/ai/docs/hooks/langchain.rst | 2 +-
providers/common/ai/docs/index.rst | 27 +
providers/common/ai/docs/operators/agent.rst | 39 +-
providers/common/ai/docs/operators/index.rst | 2 +-
.../ai/docs/operators/llamaindex_retrieval.rst | 2 +-
providers/common/ai/docs/operators/llm.rst | 12 +-
providers/common/ai/docs/operators/llm_branch.rst | 4 +-
.../common/ai/docs/operators/llm_file_analysis.rst | 15 +-
providers/common/ai/docs/quickstart.rst | 92 ++
providers/common/ai/docs/retry_policies.rst | 5 +-
providers/common/ai/docs/toolsets.rst | 18 +-
providers/common/ai/provider.yaml | 4 +-
.../common/ai/example_dags/example_quickstart.py | 23 +-
.../providers/common/ai/get_provider_info.py | 4 +-
.../providers/common/ai/hooks/pydantic_ai.py | 6 +-
.../tests/unit/common/ai/hooks/test_pydantic_ai.py | 34 +-
.../common/dataquality}/.gitignore | 0
LICENSE => providers/common/dataquality/LICENSE | 0
NOTICE => providers/common/dataquality/NOTICE | 0
.../index.rst => common/dataquality/README.rst} | 29 +-
.../mq => common/dataquality}/docs/changelog.rst | 11 +-
.../dataquality}/docs/commits.rst | 6 +-
.../{celery => common/dataquality}/docs/conf.py | 2 +-
.../{grpc => common/dataquality}/docs/index.rst | 47 +-
.../docs/installing-providers-from-sources.rst | 0
.../beam => common/dataquality}/docs/security.rst | 0
.../{sendgrid => common/dataquality}/provider.yaml | 44 +-
.../{git => common/dataquality}/pyproject.toml | 20 +-
.../common/dataquality/src/airflow}/__init__.py | 0
.../dataquality/src/airflow/providers}/__init__.py | 0
.../src/airflow/providers/common}/__init__.py | 0
.../providers/common/dataquality}/__init__.py | 2 +-
.../common/dataquality}/get_provider_info.py | 6 +-
.../dataquality}/tests/conftest.py | 0
.../common/dataquality/tests/system}/__init__.py | 0
.../dataquality/tests/system/common}/__init__.py | 0
.../tests/system/common/dataquality}/__init__.py | 0
.../common/dataquality/tests/unit}/__init__.py | 0
.../dataquality/tests/unit/common}/__init__.py | 0
.../tests/unit/common/dataquality}/__init__.py | 0
.../tests/unit/common/dataquality/test_example.py | 17 +-
providers/databricks/docs/operators/run_now.rst | 7 +-
providers/databricks/docs/operators/submit_run.rst | 7 +-
.../providers/databricks/hooks/databricks_sql.py | 44 +-
.../unit/databricks/hooks/test_databricks_sql.py | 38 +-
.../edge3/tests/unit/edge3/cli/test_worker.py | 12 +
.../providers/fab/auth_manager/middleware.py | 11 +
.../fab/src/airflow/providers/fab/www/package.json | 2 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 10 +-
.../tests/unit/fab/auth_manager/test_middleware.py | 13 +
providers/google/docs/operators/cloud/bigquery.rst | 7 +-
.../providers/google/cloud/hooks/cloud_batch.py | 4 +-
.../airflow/providers/google/cloud/links/base.py | 3 +-
.../google/cloud/links/cloud_functions.py | 4 +-
.../google/cloud/links/cloud_storage_transfer.py | 4 +-
.../providers/google/cloud/links/compute.py | 4 +-
.../google/cloud/links/data_loss_prevention.py | 4 +-
.../providers/google/cloud/links/datafusion.py | 8 +-
.../google/cloud/operators/cloud_composer.py | 4 +-
.../google/cloud/operators/dataproc_metastore.py | 3 +-
.../providers/google/common/hooks/base_google.py | 7 +-
.../providers/google/common/links/storage.py | 3 +-
.../unit/google/cloud/hooks/test_cloud_batch.py | 2 +-
.../airflow/providers/hashicorp/secrets/vault.py | 33 +-
.../tests/unit/hashicorp/secrets/test_vault.py | 101 ++-
.../keycloak/auth_manager/routes/login.py | 20 +-
.../keycloak/auth_manager/routes/test_login.py | 52 ++
.../providers/microsoft/azure/fs/msgraph.py | 6 +
.../providers/microsoft/azure/hooks/msgraph.py | 19 +-
.../tests/unit/microsoft/azure/fs/test_msgraph.py | 18 +
.../unit/microsoft/azure/hooks/test_msgraph.py | 23 +
providers/openai/README.rst | 2 +-
providers/openai/docs/changelog.rst | 17 +
providers/openai/docs/index.rst | 2 +-
providers/openai/pyproject.toml | 8 +-
providers/snowflake/docs/operators/snowflake.rst | 43 +
.../providers/snowflake/operators/snowflake.py | 132 ++-
.../unit/snowflake/operators/test_snowflake.py | 342 +++++++-
pyproject.toml | 10 +
scripts/ci/docker-compose/integration-kafka.yml | 4 +
scripts/ci/docker-compose/remove-sources.yml | 1 +
scripts/ci/docker-compose/tests-sources.yml | 1 +
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/ruff_format.py | 2 +-
scripts/in_container/run_generate_constraints.py | 7 +-
.../observability/traces/__init__.py | 37 +-
.../tests/observability/test_traces.py | 78 +-
uv.lock | 945 ++++++++++-----------
194 files changed, 6012 insertions(+), 1510 deletions(-)
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Calendar/LegendIcon.tsx
create mode 100644
devel-common/src/tests_common/test_utils/integration_setup.py
create mode 100644 providers/apache/kafka/docs/configurations-ref.rst
copy {airflow-core/src/airflow/_shared =>
providers/apache/kafka/src/airflow/providers/apache/kafka/plugins}/__init__.py
(100%)
create mode 100644
providers/apache/kafka/src/airflow/providers/apache/kafka/plugins/listener.py
copy {airflow-core/src/airflow/_shared =>
providers/apache/kafka/tests/integration/apache/kafka/plugins}/__init__.py
(100%)
copy {airflow-core/src/airflow/_shared =>
providers/apache/kafka/tests/integration/apache/kafka/plugins/dags}/__init__.py
(100%)
copy airflow-core/tests/integration/otel/dags/otel_test_dag.py =>
providers/apache/kafka/tests/integration/apache/kafka/plugins/dags/demo_dag.py
(77%)
create mode 100644
providers/apache/kafka/tests/integration/apache/kafka/plugins/test_listener.py
copy {airflow-core/src/airflow/_shared =>
providers/apache/kafka/tests/unit/apache/kafka/plugins}/__init__.py (100%)
create mode 100644
providers/apache/kafka/tests/unit/apache/kafka/plugins/test_listener.py
create mode 100644 providers/common/ai/docs/quickstart.rst
copy airflow-core/src/airflow/example_dags/example_simplest_dag.py =>
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_quickstart.py
(63%)
copy {airflow-core => providers/common/dataquality}/.gitignore (100%)
copy LICENSE => providers/common/dataquality/LICENSE (100%)
copy NOTICE => providers/common/dataquality/NOTICE (100%)
copy providers/{grpc/docs/connections/index.rst =>
common/dataquality/README.rst} (53%)
copy providers/{ibm/mq => common/dataquality}/docs/changelog.rst (70%)
copy providers/{airbyte => common/dataquality}/docs/commits.rst (92%)
copy providers/{celery => common/dataquality}/docs/conf.py (98%)
copy providers/{grpc => common/dataquality}/docs/index.rst (56%)
copy providers/{apache/beam =>
common/dataquality}/docs/installing-providers-from-sources.rst (100%)
copy providers/{apache/beam => common/dataquality}/docs/security.rst (100%)
copy providers/{sendgrid => common/dataquality}/provider.yaml (70%)
copy providers/{git => common/dataquality}/pyproject.toml (88%)
copy {airflow-core/tests/integration =>
providers/common/dataquality/src/airflow}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/common/dataquality/src/airflow/providers}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/common/dataquality/src/airflow/providers/common}/__init__.py (100%)
copy providers/{anthropic/src/airflow/providers/anthropic =>
common/dataquality/src/airflow/providers/common/dataquality}/__init__.py (92%)
copy providers/{sendgrid/src/airflow/providers/sendgrid =>
common/dataquality/src/airflow/providers/common/dataquality}/get_provider_info.py
(86%)
copy providers/{airbyte => common/dataquality}/tests/conftest.py (100%)
copy {airflow-core/tests/integration =>
providers/common/dataquality/tests/system}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/common/dataquality/tests/system/common}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/common/dataquality/tests/system/common/dataquality}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/common/dataquality/tests/unit}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/common/dataquality/tests/unit/common}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/common/dataquality/tests/unit/common/dataquality}/__init__.py (100%)
copy airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui/teams.py =>
providers/common/dataquality/tests/unit/common/dataquality/test_example.py (73%)