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 bac2f50826d [main] CI: Upgrade important CI environment
add a427286b8d2 Add screenshots and a review loop example to the task
loops docs (#76435)
add 6e6e0f7ae9b Document how to create a TypeScript SDK project (#76374)
add 31b0dfef865 Fix docs build on Task SDK task handler page ref (#76440)
add cf5017be3c1 UI: Complete the Italian translation (#76411)
add 37d4d9395f7 UI: Fix task groups not expanding when localStorage is
full (#76302)
add 11baedfd86c Add OpenLineage e2e tests for manual state changes, clears
and failures (#75908)
add 629729a9913 Describe where the dependency upgrade summary runs now
(#76439)
add caf26246c1c Stop pydantic-ai providers that models cannot use from
failing the common.ai vendor check (#76312)
add bcfe0128623 Bump UI dependencies and fix log tests for react-virtual
(#76444)
add 77c29134b37 Load Java Dags from a bundle path that holds a colon
(#76432)
add 3fd90eb41c0 UI: Complete the Spanish (es) translation (#76087)
add 4ef770b91d6 Let asset watchers write asset state over the Execution
API (#76376)
add cd3ae408a1a Keep mapped tasks when clearing with run on latest version
(#76420)
add 5d70b49e9ea UI: Label the Dag bundle file table as Parsed Files and
say what it lists (#76462)
add 240e6eed65c Parametrize GCS-to-GCS wildcard and retention tests.
(#76094)
add d07cb5f727d Fix airflowctl backfill create-dry-run printing one
all-null row (#76224)
add bc99f138dda [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 (bac2f50826d)
\
N -- N -- N refs/heads/ci-upgrade-main (bc99f138dda)
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:
.agents/skills/airflow-translations/locales/es.md | 34 +-
.agents/skills/airflow-translations/locales/it.md | 65 +-
Dockerfile | 2 +-
Dockerfile.ci | 2 +-
.../language-sdks/java.rst | 21 +
.../language-sdks/typescript.rst | 42 +-
.../docs/authoring-and-scheduling/loops.rst | 155 +-
.../docs/authoring-and-scheduling/yaml-dags.rst | 2 +-
airflow-core/docs/img/ui-dark/loops_clear.png | Bin 0 -> 271661 bytes
airflow-core/docs/img/ui-dark/loops_decision.png | Bin 0 -> 73779 bytes
airflow-core/docs/img/ui-dark/loops_graph.png | Bin 0 -> 77163 bytes
airflow-core/docs/img/ui-dark/loops_iterations.png | Bin 0 -> 191319 bytes
.../docs/img/ui-dark/loops_iterations_tab.png | Bin 0 -> 156522 bytes
airflow-core/docs/img/ui-dark/loops_mapped.png | Bin 0 -> 179885 bytes
airflow-core/docs/img/ui-dark/loops_review.png | Bin 0 -> 244676 bytes
airflow-core/docs/img/ui-light/loops_clear.png | Bin 0 -> 268407 bytes
airflow-core/docs/img/ui-light/loops_decision.png | Bin 0 -> 72201 bytes
airflow-core/docs/img/ui-light/loops_graph.png | Bin 0 -> 78174 bytes
.../docs/img/ui-light/loops_iterations.png | Bin 0 -> 189121 bytes
.../docs/img/ui-light/loops_iterations_tab.png | Bin 0 -> 155523 bytes
airflow-core/docs/img/ui-light/loops_mapped.png | Bin 0 -> 177810 bytes
airflow-core/docs/img/ui-light/loops_review.png | Bin 0 -> 243231 bytes
.../api_fastapi/execution_api/in_process.py | 3 +-
.../execution_api/routes/asset_state_store.py | 18 +-
.../airflow/api_fastapi/execution_api/security.py | 38 +-
.../execution_api/versions/v2026_10_30.py | 11 +-
.../src/airflow/example_dags/example_task_loops.py | 4 +-
airflow-core/src/airflow/models/dagrun.py | 11 +-
airflow-core/src/airflow/ui/package.json | 50 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 784 ++---
.../airflow/ui/public/i18n/locales/ar/browse.json | 13 +-
.../airflow/ui/public/i18n/locales/ca/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/de/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/el/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/en/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/es/admin.json | 15 +
.../airflow/ui/public/i18n/locales/es/assets.json | 5 +
.../airflow/ui/public/i18n/locales/es/browse.json | 35 +
.../airflow/ui/public/i18n/locales/es/common.json | 82 +-
.../ui/public/i18n/locales/es/components.json | 41 +-
.../src/airflow/ui/public/i18n/locales/es/dag.json | 134 +
.../airflow/ui/public/i18n/locales/es/dags.json | 38 +-
.../ui/public/i18n/locales/es/dashboard.json | 22 +-
.../airflow/ui/public/i18n/locales/es/hitl.json | 3 +
.../airflow/ui/public/i18n/locales/fr/browse.json | 7 +-
.../airflow/ui/public/i18n/locales/he/browse.json | 7 +-
.../airflow/ui/public/i18n/locales/hi/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/it/admin.json | 55 +-
.../airflow/ui/public/i18n/locales/it/assets.json | 46 +-
.../airflow/ui/public/i18n/locales/it/browse.json | 86 +-
.../airflow/ui/public/i18n/locales/it/common.json | 352 ++-
.../ui/public/i18n/locales/it/components.json | 115 +-
.../src/airflow/ui/public/i18n/locales/it/dag.json | 267 +-
.../airflow/ui/public/i18n/locales/it/dags.json | 69 +-
.../ui/public/i18n/locales/it/dashboard.json | 47 +-
.../airflow/ui/public/i18n/locales/it/hitl.json | 18 +-
.../airflow/ui/public/i18n/locales/ko/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/pl/browse.json | 9 +-
.../ui/public/i18n/locales/zh-CN/browse.json | 5 +-
.../ui/public/i18n/locales/zh-TW/browse.json | 5 +-
.../ui/src/context/groups/GroupsProvider.test.tsx | 34 +-
.../ui/src/context/groups/GroupsProvider.tsx | 45 +-
.../airflow/ui/src/pages/DagBundle/BundleFiles.tsx | 7 +-
.../airflow/ui/src/pages/Run/CallbackLogs.test.tsx | 1 +
.../airflow/ui/src/pages/Run/Callbacks.test.tsx | 1 +
.../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 3 +
.../pages/TaskInstance/Logs/LogsSelection.test.tsx | 3 +
.../api_fastapi/execution_api/test_security.py | 6 +-
.../versions/head/test_asset_state_store.py | 80 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 48 +-
airflow-core/tests/unit/models/test_cleartasks.py | 77 +
airflow-core/tests/unit/models/test_dagrun.py | 19 +-
.../airflowctl_tests/test_airflowctl_commands.py | 18 +
airflow-ctl/src/airflowctl/api/operations.py | 7 +-
.../tests/airflow_ctl/api/test_operations.py | 24 +-
airflow-e2e-tests/docker/openlineage.yml | 69 +-
.../tests/airflow_e2e_tests/conftest.py | 5 +
.../dags_extra/openlineage_inlet_assets_dag.py | 64 +
.../airflow_e2e_tests/openlineage_tests/harness.py | 256 +-
.../openlineage_tests/prepare_dags.py | 2 +-
.../openlineage_tests/remove_unused_providers.py | 89 +
.../openlineage_tests/test_openlineage_e2e.py | 13 +-
dev/breeze/doc/ci/05_workflows.md | 20 +-
.../files/hardened_python_image_digests.json | 8 +-
devel-common/src/sphinx_exts/exampleinclude.py | 47 +-
providers/amazon/docs/index.rst | 4 +-
.../ai/example_dags/example_llm_review_loop.py | 81 +
.../tests/unit/common/ai/test_provider_metadata.py | 101 +-
providers/google/docs/index.rst | 28 +-
.../unit/google/cloud/transfers/test_gcs_to_gcs.py | 110 +-
providers/hashicorp/docs/index.rst | 2 +-
.../tests/system/openlineage/constants.py | 6 +
.../openlineage/example_openlineage_clear_dag.py | 169 ++
.../example_openlineage_edge_labels_dag.py | 16 +-
.../example_openlineage_manual_lineage_dag.py | 17 +-
.../example_openlineage_manual_state_dag.py | 274 ++
.../example_openlineage_mapped_simple_dag.py | 7 +-
.../example_openlineage_policy_conf_locked_dag.py | 59 -
...le_openlineage_policy_dag_events_trigger_dag.py | 6 +-
...xample_openlineage_policy_full_task_info_dag.py | 57 -
...ample_openlineage_schedule_asset_or_time_dag.py | 2 +-
.../example_openlineage_schedule_cron_dag.py | 2 +-
...openlineage_schedule_list_complex_assets_dag.py | 2 +-
...penlineage_schedule_list_multiple_assets_dag.py | 2 +-
...e_openlineage_schedule_list_single_asset_dag.py | 2 +-
...ple_openlineage_schedule_multiple_assets_dag.py | 2 +-
...xample_openlineage_schedule_single_asset_dag.py | 2 +-
.../example_openlineage_schedule_timetable_dag.py | 2 +-
.../example_openlineage_short_circuit_dag.py | 4 +-
.../example_openlineage_task_groups_dag.py | 4 +-
.../example_openlineage_task_loop_dag.py | 4 +-
.../example_openlineage_task_loop_groups_dag.py | 4 +-
.../example_openlineage_task_loop_state_dag.py | 240 ++
.../example_openlineage_task_outcomes_dag.py | 285 ++
.../example_openlineage_task_states_dag.py | 8 +-
.../openlineage/example_openlineage_trigger_dag.py | 74 +-
.../example_openlineage_trigger_dag_deferrable.py | 65 +-
.../example_openlineage_trigger_failed_dag.py | 11 +-
.../openlineage_all_facets_dag.json | 1 +
.../openlineage_base_complex_dag__af3.json | 114 +-
.../openlineage_base_simple_dag__af3.json | 12 +-
.../expected_events/openlineage_clear_dag.json | 1268 ++++++++
.../openlineage_custom_operator_failure_dag.json | 16 +-
...openlineage_custom_operator_ol_methods_dag.json | 1 +
.../openlineage_defer_simple_dag__af2.json | 13 +-
.../openlineage_defer_simple_dag__af3.json | 1 +
...openlineage_defer_simple_dag__af3_2_2_plus.json | 1 +
.../expected_events/openlineage_docs_file_dag.json | 26 +
.../expected_events/openlineage_hitl_dag.json | 83 +
.../openlineage_manual_lineage_dag.json | 171 +-
.../openlineage_manual_state_dag.json | 1195 ++++++++
.../openlineage_mapped_simple_dag.json | 13 +-
.../openlineage_policy_conf_locked_dag.json | 26 -
.../openlineage_policy_full_task_info_dag.json | 38 -
.../openlineage_sensor_reschedule_dag.json | 8 +-
.../openlineage_sensor_reschedule_dag__af3_0.json | 8 +-
.../openlineage_setup_teardown_dag__af3.json | 104 +
.../openlineage_short_circuit_dag.json | 50 +-
.../openlineage_task_groups_dag.json | 29 +
.../openlineage_task_loop_state_dag.json | 3062 ++++++++++++++++++++
.../openlineage_task_outcomes_dag.json | 1164 ++++++++
.../openlineage_task_states_dag.json | 30 +
.../openlineage_task_states_dag__af3_0.json | 30 +
.../openlineage_taskflow_simple_dag.json | 12 +-
.../expected_events/openlineage_trigger_dag.json | 309 ++
.../openlineage_trigger_dag__af3_3_plus.json | 309 ++
.../openlineage_trigger_dag_deferrable.json | 61 +-
...lineage_trigger_dag_deferrable__af3_3_plus.json | 61 +-
.../openlineage_trigger_failed_dag.json | 87 +-
...openlineage_trigger_failed_dag__af3_3_plus.json | 87 +-
.../openlineage_versioned_dag__af3.json | 14 +-
.../tests/system/openlineage/manual_state.py | 438 +++
.../tests/system/openlineage/operator.py | 79 +-
.../tests/system/openlineage/triggers.py | 34 +-
.../ci/prek/check_airflowctl_command_coverage.py | 1 -
.../airflow/sdk/coordinators/java/coordinator.py | 95 +-
.../task_sdk/coordinators/java/test_coordinator.py | 240 ++
uv.lock | 18 +-
158 files changed, 13316 insertions(+), 1339 deletions(-)
create mode 100644 airflow-core/docs/img/ui-dark/loops_clear.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_decision.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_graph.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_iterations.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_iterations_tab.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_mapped.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_review.png
create mode 100644 airflow-core/docs/img/ui-light/loops_clear.png
create mode 100644 airflow-core/docs/img/ui-light/loops_decision.png
create mode 100644 airflow-core/docs/img/ui-light/loops_graph.png
create mode 100644 airflow-core/docs/img/ui-light/loops_iterations.png
create mode 100644 airflow-core/docs/img/ui-light/loops_iterations_tab.png
create mode 100644 airflow-core/docs/img/ui-light/loops_mapped.png
create mode 100644 airflow-core/docs/img/ui-light/loops_review.png
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/openlineage_tests/dags_extra/openlineage_inlet_assets_dag.py
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/openlineage_tests/remove_unused_providers.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_llm_review_loop.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_clear_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_manual_state_dag.py
delete mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_policy_conf_locked_dag.py
delete mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_policy_full_task_info_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_task_loop_state_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_task_outcomes_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_clear_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_manual_state_dag.json
delete mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_policy_conf_locked_dag.json
delete mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_policy_full_task_info_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_task_loop_state_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_task_outcomes_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/manual_state.py
copy airflow-core/tests/unit/listeners/asset_listener.py =>
providers/openlineage/tests/system/openlineage/triggers.py (60%)