This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a change to branch ci-upgrade-v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
omit c7275c9eb36 [v3-4-test] CI: Upgrade important CI environment
omit ca07390c804 [v3-4-test] Keep release-candidate provider pins until
each is released or yanked (#75919) (#75924)
add 4786e740a7a Add release notes for 3.4.0rc1
add cf53ceba96e [v3-4-test] Keep release-candidate provider pins until
each is released or yanked (#75919) (#75924)
add 9b1ea19852a [v3-4-test] Support Python 3.11.0 in prek cache test
(#75520) (#75850)
add 91508249689 [v3-4-test] Run the slow root prek checks in parallel
(#75437) (#75933)
add f9e0702c0ab [v3-4-test] Run lang-SDK serialization conformance checks
in CI instead of prek (#75872) (#75914)
add 736fe690a95 [v3-4-test] Avoid unbounded IN lists for queued asset
events (#75943) (#75948)
add 6ffa3f0f764 [v3-4-test] Stop requesting the details of an empty Dag id
after a bulk selection (#75862) (#75867)
add f9fc6143fa5 [v3-4-test] Fix hourly cron schedules running an hour off
across a DST change (#75847) (#75953)
add 63f59d8b333 [v3-4-test] Remove unused milestone selection helpers
(#75848) (#75925)
add 74d5606ec5d [v3-4-test] Remove unused decorator default comparison
helper (#75849) (#75926)
add 9d6202a91bf [v3-4-test] Stop a stale callback stat from forcing
constant Dag file reparsing (#73433) (#75939)
add eb1ef3a210e [v3-4-test] Show UI doc screenshots in synced dark/light
tabs (#75957) (#75960)
add bf15b25c3bf [v3-4-test] Don't force dags reserialize in e2e startup
(races dag-processor) (#75739) (#75941)
add ca7a88b0f3b [v3-4-test] Fix dashboard Active Dags filtering (#75350)
(#75949)
add 77e8f5582d9 [v3-4-test] Preserve XCom value types when editing in the
UI (#75496) (#75951)
add 7b1c64ca7d8 [v3-4-test] Document the zh-TW translation workflow
(#75702) (#75999)
add c7f0d791067 [v3-4-test] Reject non-object JSON files when importing
variables (#75384) (#75950)
add 273f4776934 [v3-4-test] Refuse to publish constraints when the branch
moved during generation (#75989) (#75990)
add e290855d0a2 [v3-4-test] Run the lang-SDK native Dag tests on
Kubernetes (#75930) (#76008)
add 6463e20c788 [v3-4-test] Make the bundle name less prominent in the Dag
import error modals (#75958) (#75987)
add ae879e3c5ab [v3-4-test] UI: Show a loop's iterations and why each one
decided (#75984) (#75993)
add 6c9a2c34523 [v3-4-test] Size CI test jobs on RunsOn runners to the
parallelism they can use (#75833) (#75992)
add 4dc6ebf167a [v3-4-test] Serialise the workflows that publish shared
state (#75996) (#76022)
add 188e2a3aa72 [v3-4-test] Store and show the retry deadline; start
retries with empty run fields (#76027) (#76028)
add b8216f347e4 Fix stale queued asset rows in scheduler cleanup and
readiness (#76002) (#76039)
add 4e2c764a994 Pin the hardened base images to digests the CI has passed
on (#76023) (#76038)
add 18a51dfadba [v3-4-test] Add an end-to-end test for a Dag written in
YAML (#75928) (#76026)
add d855565d901 [v3-4-test] Remove unused Breeze snippet helpers (#75854)
(#75866)
add 9f79f221389 [v3-4-test] UI: Stop Recent Configurations flashing on the
trigger form (#75991) (#75994)
add caffeafaa25 [v3-4-test] Freeze the GC before the triggerer's forks so
memory stays flat (#76016) (#76029)
add 8744696c21e [v3-4-test] Honor Airflow logging levels in TypeScript SDK
(#76005) (#76030)
add 9318f0c2d26 [v3-4-test] Retry GitHub calls that drop the connection in
the Spot interruption notices (#75829) (#76051)
add 0d9a5be73e8 [v3-4-test] CI: Upgrade important CI environment
add c72a8be9a71 [v3-4-test] Close fork CI pull requests that change jobs
running in gated runs (#75827) (#76058)
add 41f11eecf76 [v3-4-test] Fix 404 error on looped task group breadcrump
and add test (#76050) (#76062)
add 2cad30fa2b8 Bump the 3-4-auth-ui-package-updates group across 1
directory with 8 updates (#76065)
add 067d19a8963 [v3-4-test] Stop bundling the ELK worker twice in the UI
(#75864) (#76037)
add 2587ff2ccd9 [v3-4-test] Make asset state store entries scrollable
(#75870) (#76079)
add 1c8d1679221 Fix flaky LocalExecutor concurrent result refill test
(#75030) (#76117)
add 29fd4976404 [v3-4-test] Keep RunsOn runners off the Spot pools
reclaimed most often (#76084) (#76114)
add 9987f4021c8 [v3-4-test] UI: Fix Portuguese and Hungarian labels that
show a raw placeholder (#75964) (#76080)
add 7c9cbbea72a [v3-4-test] CI: Re-pin 3.12 hardened base image to the
digest main uses
add e05256c0a0c Fix cron mixin DST tests failing with tzdata 2026f (#76112)
add 3bd6107ada1 Revert "[v3-4-test] CI: Re-pin 3.12 hardened base image to
the digest main uses"
add 6593eadb474 [v3-4-test] Stop triggerer tests leaking runner processes
(#76139) (#76140)
add d7a14b91c24 Bump pypdf to 6.21.4 to fix high-severity advisories
add 5f5d54dba4a [v3-4-test] Lowercase the fork's image name in the PROD
image example tests (#76143) (#76146)
add f142b72859e [v3-4-test] Show fork CI progress sooner and gate rebased
pilot pull requests (#76148) (#76149)
add 5450cf58712 [v3-4-test] Keep retrying CI image downloads through
artifact egress throttling (#76150) (#76152)
add 9bc9fb31098 [v3-4-test] Do not draft fork CI pull requests while their
fork run is in progress (#76151) (#76153)
add 634ba4700d9 [v3-4-test] Spend fewer GitHub writes on fork CI job
statuses and watch the limits (#76154) (#76158)
add 440668df568 [v3-4-test] TS-SDK: inherit the Dag queue when a task
passes queue undefined (#76123) (#76159)
add a3370f89dc5 Remove the certifi cooldown bypass
add 0ba62b88035 [v3-4-test] Keep Java SDK snapshot docs out of the
published documentation (#76165) (#76166)
add a3dbd99a833 [v3-4-test] Mount the checkout read-only in the hadolint
and RAT prek hooks (#76162) (#76167)
add d5efaac9f57 [v3-4-test] Reuse locked CI dependencies across workspace
source changes (#74466) (#76177)
add a187d8ac2b0 [v3-4-test] Run dependency explanations separately from
main AMD canaries (#74311) (#76182)
add 5941209499e [v3-4-test] Accelerate CI image materialization with
same-run snapshots (#74173) (#76183)
add beae4cd54f0 [v3-4-test] Run docs publishing and provider registry
workflows on self-hosted runners (#76168) (#76176)
add 2c4e0c5c678 [v3-4-test] Install OS dependencies on hardened images
after dhi.io renumbering (#76200) (#76202)
add 4e566b0c785 Derive the expected CI image name from the branch in
Breeze CI image tests (#76207)
add 0db67267709 [v3-4-test] Fix LocalExecutor deadlock when a workload put
blocks (#75086) (#76223)
add f2cf8bf1d39 [v3-4-test] Report CI run started for release branches
that do not run ci-amd.yml (#76226) (#76232)
add bc39d9cae4e [v3-4-test] Run the RunsOn jobs on the Flex stack in all
three us-east-2 zones (#76239) (#76240)
add 1246e653357 [v3-4-test] Scope asset event created Dag runs to readable
Dags (#76234) (#76236)
add b704bb9283d [v3-4-test] Format the RunsOn label constants in the
selective checks tests (#76246) (#76247)
add b12326bf61a [v3-4-test] Keep executor loader tests patched after
another test reloads the module (#76233) (#76248)
add 8aa136de10d [v3-4-test] Skip scheduled workflows in forks that enable
Actions (#76243) (#76253)
add 3762c32197c [v3-4-test] Skip CI runs deleted while the Spot
interruption notices handle them (#76249) (#76254)
add 03139d689d1 [v3-4-test] Start the whole test matrix at once on the
RunsOn runners (#76250) (#76258)
add 23830fd8fe8 [v3-4-test] Rename TypeScript SDK npm package to
@apache-airflow/ts-sdk (#75959) (#76293)
add 68cd9015f37 [v3-4-test] Bump TypeScript SDK to 1.0.0-beta2 (#76299)
(#76301)
add 33a40d2b2d2 [v3-4-test] Fix Dag id collision in the Java SDK example
bundle (#76019) (#76337)
add 585cfc1dedf [v3-4-test] 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 (c7275c9eb36)
\
N -- N -- N refs/heads/ci-upgrade-v3-4-test (585cfc1dedf)
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:
.../skills/airflow-translations/locales/zh-TW.md | 44 +-
.asf.yaml | 10 +-
.github/actions/breeze/action.yml | 6 +
.github/actions/load_image/action.yml | 116 +
.../actions/prepare_breeze_and_image/action.yml | 30 +-
.github/actions/prepare_single_ci_image/action.yml | 19 +-
.github/actions/runs-on-cost-summary/action.yml | 4 +-
.github/actions/stash-restore/action.yml | 14 +
.github/workflows/additional-prod-image-tests.yml | 28 +-
.github/workflows/airflow-distributions-tests.yml | 4 +-
.github/workflows/airflow-e2e-tests.yml | 12 +-
.github/workflows/basic-tests.yml | 4 +-
.github/workflows/ci-amd.yml | 109 +-
.github/workflows/ci-arm.yml | 100 +-
.github/workflows/ci-duration-monitor.yml | 1 +
.github/workflows/ci-image-build.yml | 59 +
.github/workflows/ci-notification.yml | 1 +
.github/workflows/codeql-analysis.yml | 1 +
.github/workflows/dependency-upgrade-report.yml | 254 ++
.github/workflows/e2e-flaky-tests-report.yml | 1 +
.github/workflows/finalize-tests.yml | 31 +-
.github/workflows/helm-tests.yml | 6 +-
.github/workflows/integration-system-tests.yml | 10 +-
.github/workflows/java-sdk-dependency-security.yml | 1 +
.github/workflows/k8s-tests.yml | 4 +-
.github/workflows/mirror-hardened-base-images.yml | 84 +-
.github/workflows/publish-docs-to-s3.yml | 136 +-
.github/workflows/recheck-old-bug-report.yml | 1 +
.github/workflows/refresh-image-registry-cache.yml | 7 +-
.github/workflows/registry-backfill.yml | 48 +-
.github/workflows/registry-build.yml | 50 +-
.github/workflows/release-constraints.yml | 12 +-
.github/workflows/release_dockerhub_image.yml | 11 +-
.github/workflows/run-unit-tests.yml | 4 +-
.../scheduled-legacy-prod-image-canary.yml | 9 +-
.github/workflows/scheduled-upgrade-check-main.yml | 3 +
.../scheduled-upgrade-check-v3-4-test.yml | 3 +
.../scheduled-verify-release-calendar.yml | 1 +
.github/workflows/special-tests.yml | 22 +-
.github/workflows/stale.yml | 1 +
.github/workflows/ts-sdk-release.yml | 15 +-
.../update-constraints-on-push-stable.yml | 11 +-
.github/workflows/update-constraints-on-push.yml | 40 +-
.github/workflows/upgrade-check.yml | 78 +-
.pre-commit-config.yaml | 108 +-
Dockerfile | 153 +-
Dockerfile.ci | 177 +-
RELEASE_NOTES.rst | 294 ++-
.../language-sdks/typescript.rst | 24 +-
airflow-core/docs/best-practices.rst | 2 +-
airflow-core/docs/ui.rst | 432 ++-
airflow-core/newsfragments/74896.bugfix.rst | 1 -
airflow-core/newsfragments/75414.significant.rst | 20 -
airflow-core/newsfragments/76234.bugfix.rst | 1 +
airflow-core/pyproject.toml | 2 +-
.../auth/managers/simple/ui/package.json | 16 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 386 ++-
.../core_api/datamodels/task_instance_history.py | 4 +
.../core_api/datamodels/task_instances.py | 5 +
.../api_fastapi/core_api/datamodels/ui/grid.py | 1 +
.../api_fastapi/core_api/openapi/_private_ui.yaml | 14 +
.../core_api/openapi/v2-rest-api-generated.yaml | 16 +
.../api_fastapi/core_api/routes/public/assets.py | 4 +-
.../api_fastapi/core_api/routes/public/dag_run.py | 4 +-
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 2 +
.../api_fastapi/core_api/services/public/assets.py | 17 +-
.../api_fastapi/core_api/services/ui/grid.py | 5 +
.../execution_api/routes/task_instances.py | 5 +-
airflow-core/src/airflow/assets/manager.py | 27 +-
.../src/airflow/cli/commands/triggerer_command.py | 9 +-
airflow-core/src/airflow/dag_processing/manager.py | 19 +-
.../src/airflow/executors/local_executor.py | 66 +-
.../src/airflow/jobs/scheduler_job_runner.py | 358 +--
.../src/airflow/jobs/triggerer_job_runner.py | 7 +
.../0142_3_4_0_unify_task_attempt_ownership.py | 3 +-
airflow-core/src/airflow/models/asset.py | 44 +-
airflow-core/src/airflow/models/dag.py | 13 +-
airflow-core/src/airflow/models/dagrun.py | 12 +
airflow-core/src/airflow/models/taskinstance.py | 88 +-
.../serialization/definitions/baseoperator.py | 2 +-
.../serialization/definitions/mappedoperator.py | 2 +-
.../ti_deps/deps/not_in_retry_period_dep.py | 6 +-
airflow-core/src/airflow/timetables/_cron.py | 69 +-
airflow-core/src/airflow/timetables/base.py | 4 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 38 +
.../airflow/ui/openapi-gen/requests/types.gen.ts | 9 +
.../airflow/ui/public/i18n/locales/en/common.json | 1 +
.../ui/public/i18n/locales/en/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/hu/hitl.json | 2 +-
.../airflow/ui/public/i18n/locales/pt/common.json | 8 +-
...learTaskInstanceDialog.emptySelection.test.tsx} | 29 +-
.../Clear/TaskInstance/ClearTaskInstanceDialog.tsx | 9 +-
.../ui/src/components/DagImportErrorDetails.tsx | 14 +-
.../ui/src/components/DagImportErrorModal.test.tsx | 27 +-
.../FilterBar/filters/pausedStateParams.ts | 19 +-
.../ui/src/components/Graph/useGraphLayout.ts | 3 +-
.../ui/src/components/TaskInstanceTooltip.test.tsx | 46 +-
.../ui/src/components/TaskInstanceTooltip.tsx | 7 +
.../TriggerDag/RecentConfigSelect.test.tsx | 39 +-
.../components/TriggerDag/RecentConfigSelect.tsx | 79 +-
.../components/TriggerDag/TriggerDAGForm.test.tsx | 4 +-
.../src/airflow/ui/src/constants/filterConfigs.tsx | 2 +
.../src/airflow/ui/src/i18n/locales.test.ts | 78 +
.../ui/src/layouts/Details/DagBreadcrumb.test.tsx | 21 +-
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 1 -
.../src/airflow/ui/src/mocks/handlers/dags.ts | 4 +
.../src/airflow/ui/src/pages/Asset/AssetLayout.tsx | 3 +
.../Asset/AssetStateStore/AssetStateStore.tsx | 2 +-
.../DagsList/DagsFilters/DagsFilters.test.tsx | 24 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 4 +-
.../pages/Dashboard/Stats/DagImportErrorsModal.tsx | 14 +-
.../pages/GroupTaskInstance/GroupTaskInstance.tsx | 11 +-
.../LoopIterations/LoopIterations.test.tsx | 136 +
.../LoopIterations/LoopIterations.tsx | 137 +
.../GroupTaskInstance/LoopIterations/loopUtils.ts | 2 +-
.../ui/src/pages/GroupTaskInstance/index.ts | 1 +
.../ui/src/pages/TaskInstance/Details.test.tsx | 24 +
.../airflow/ui/src/pages/TaskInstance/Details.tsx | 8 +
.../pages/Variables/ImportVariablesForm.test.tsx | 83 +
.../ui/src/pages/Variables/ImportVariablesForm.tsx | 12 +-
.../airflow/ui/src/pages/XCom/XComModal.test.tsx | 60 +
.../src/airflow/ui/src/pages/XCom/XComModal.tsx | 6 +-
.../useHasMultipleDagBundles.ts} | 15 +-
airflow-core/src/airflow/ui/src/router.tsx | 7 +-
.../src/airflow/ui/tests/e2e/specs/asset.spec.ts | 75 +
.../core_api/routes/public/test_assets.py | 42 +-
.../core_api/routes/public/test_dag_run.py | 54 +
.../core_api/routes/public/test_hitl.py | 1 +
.../core_api/routes/public/test_task_instances.py | 92 +-
.../api_fastapi/core_api/routes/ui/test_grid.py | 25 +
.../versions/head/test_task_instances.py | 1 +
airflow-core/tests/unit/assets/test_manager.py | 4 +-
.../unit/cli/commands/test_triggerer_command.py | 27 +
.../tests/unit/dag_processing/test_manager.py | 112 +-
.../tests/unit/executors/test_executor_loader.py | 6 +-
.../tests/unit/executors/test_local_executor.py | 240 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 471 +++-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 44 +-
airflow-core/tests/unit/models/test_dag.py | 45 +
airflow-core/tests/unit/models/test_dagrun.py | 20 +
.../tests/unit/models/test_taskinstance.py | 64 +-
airflow-core/tests/unit/models/test_trigger.py | 4 +-
.../tests/unit/timetables/test_cron_mixin.py | 279 +-
airflow-ctl-tests/pyproject.toml | 2 +-
airflow-ctl/pyproject.toml | 2 +-
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 16 +-
.../docker/{elasticsearch.yml => yaml-dag.yml} | 31 +-
airflow-e2e-tests/pyproject.toml | 4 +-
.../tests/airflow_e2e_tests/conftest.py | 79 +-
.../tests/airflow_e2e_tests/constants.py | 6 +
.../java_sdk_tests/test_java_sdk_dag.py | 10 +-
.../airflow_e2e_tests/yaml_dag_tests}/__init__.py | 0
.../yaml_dag_tests/test_yaml_dag.py | 204 ++
airflow-e2e-tests/yaml-dags/yaml_s3_roundtrip.yaml | 88 +
chart/pyproject.toml | 2 +-
clients/python/pyproject.toml | 2 +-
contributing-docs/05_pull_requests.rst | 3 +-
contributing-docs/08_static_code_checks.rst | 6 +
contributing-docs/18_contribution_workflow.rst | 5 +-
dev/AGENTS.md | 8 +-
...UALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md | 6 +
dev/README_RELEASE_AIRFLOW.md | 51 +-
dev/breeze/doc/05_test_commands.rst | 2 +-
dev/breeze/doc/09_release_management_tasks.rst | 47 +
dev/breeze/doc/ci/02_images.md | 6 +-
dev/breeze/doc/ci/04_selective_checks.md | 80 +-
dev/breeze/doc/ci/05_workflows.md | 45 +
.../doc/ci/08_fork_ci_for_external_contributors.md | 170 +-
dev/breeze/doc/images/output_ci-image_load.svg | 32 +-
dev/breeze/doc/images/output_ci-image_load.txt | 2 +-
dev/breeze/doc/images/output_ci-image_save.svg | 26 +-
dev/breeze/doc/images/output_ci-image_save.txt | 2 +-
dev/breeze/doc/images/output_ci_upgrade.svg | 114 +-
dev/breeze/doc/images/output_ci_upgrade.txt | 2 +-
...elease-management_constraints-version-check.svg | 60 +-
...elease-management_constraints-version-check.txt | 2 +-
...utput_release-management_publish-docs-to-s3.svg | 64 +-
...utput_release-management_publish-docs-to-s3.txt | 2 +-
.../output_setup_check-all-params-in-groups.svg | 24 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 4 +-
.../output_setup_regenerate-command-images.txt | 2 +-
.../images/output_testing_airflow-e2e-tests.svg | 2 +-
.../images/output_testing_airflow-e2e-tests.txt | 2 +-
dev/breeze/doc/images/output_workflow-run.svg | 34 +-
dev/breeze/doc/images/output_workflow-run.txt | 2 +-
.../output_workflow-run_mirror-base-images.svg | 111 +
.../output_workflow-run_mirror-base-images.txt | 1 +
.../images/output_workflow-run_upgrade-check.svg | 116 +
.../images/output_workflow-run_upgrade-check.txt | 1 +
dev/breeze/pyproject.toml | 8 +-
.../src/airflow_breeze/commands/ci_commands.py | 158 +-
.../airflow_breeze/commands/ci_commands_config.py | 2 +
.../airflow_breeze/commands/ci_image_commands.py | 53 +-
.../commands/ci_image_commands_config.py | 2 +
.../commands/common_image_options.py | 12 +
.../airflow_breeze/commands/kubernetes_commands.py | 106 +-
.../commands/release_management_commands.py | 152 +-
.../commands/release_management_commands_config.py | 4 +
.../airflow_breeze/commands/testing_commands.py | 30 +-
.../airflow_breeze/commands/workflow_commands.py | 72 +-
.../commands/workflow_commands_config.py | 24 +-
.../files/hardened_python_image_digests.json | 10 +
.../files/legacy_python_versions.json | 6 +
dev/breeze/src/airflow_breeze/global_constants.py | 90 +-
.../src/airflow_breeze/params/build_prod_params.py | 11 +-
.../src/airflow_breeze/params/shell_params.py | 2 +
.../templates/pyproject_TEMPLATE.toml.jinja2 | 2 +-
.../airflow_breeze/utils/ci_minutes_estimate.py | 6 +-
.../utils/constraints_version_check.py | 67 +-
.../src/airflow_breeze/utils/fork_ci_gate.py | 53 +-
.../src/airflow_breeze/utils/fork_ci_github.py | 3 +
.../src/airflow_breeze/utils/fork_ci_messages.py | 16 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 584 +++-
.../src/airflow_breeze/utils/gh_workflow_utils.py | 42 +
dev/breeze/src/airflow_breeze/utils/github.py | 58 +-
.../airflow_breeze/utils/publish_docs_helpers.py | 32 -
.../src/airflow_breeze/utils/publish_docs_to_s3.py | 37 +-
dev/breeze/src/airflow_breeze/utils/run_tests.py | 101 +-
.../src/airflow_breeze/utils/selective_checks.py | 157 +-
.../src/airflow_breeze/utils/verification_plan.py | 1 +
.../airflow_breeze/utils/workflow_run_approval.py | 42 +-
dev/breeze/tests/test_build_prod_params.py | 44 +-
dev/breeze/tests/test_ci_image_commands.py | 105 +-
dev/breeze/tests/test_ci_upgrade.py | 100 +
dev/breeze/tests/test_constraints_version_check.py | 140 +
dev/breeze/tests/test_dependency_upgrade_report.py | 396 +++
dev/breeze/tests/test_fork_ci_gate.py | 110 +
dev/breeze/tests/test_fork_ci_github.py | 6 +-
dev/breeze/tests/test_fork_ci_reconcile.py | 827 +++++-
dev/breeze/tests/test_gh_workflow_utils.py | 54 +
dev/breeze/tests/test_github_utils.py | 81 +
.../tests/test_kubernetes_lang_sdk_commands.py | 44 +-
dev/breeze/tests/test_mirror_base_images.py | 142 +-
dev/breeze/tests/test_publish_docs_to_s3.py | 65 +-
.../tests/test_pytest_args_for_test_types.py | 65 +-
.../tests/test_release_management_commands.py | 72 +-
dev/breeze/tests/test_run_test_args.py | 93 +
dev/breeze/tests/test_selective_checks.py | 312 ++-
dev/breeze/tests/test_set_milestone.py | 48 -
dev/breeze/tests/test_shell_params.py | 15 +-
dev/breeze/tests/test_workflow_commands.py | 57 +
dev/breeze/tests/test_workflow_run_approval.py | 62 +
dev/breeze/uv.lock | 140 +-
dev/mypy/pyproject.toml | 2 +-
dev/pyproject.toml | 2 +-
dev/registry/pyproject.toml | 2 +-
devel-common/pyproject.toml | 6 +-
docker-stack-docs/build-arg-ref.rst | 26 +-
docker-stack-docs/build.rst | 21 +-
.../customizing/add-build-essential-custom.sh | 3 +-
.../docker-examples/customizing/custom-sources.sh | 3 +-
.../customizing/pypi-dev-runtime-deps.sh | 3 +-
.../customizing/pypi-extras-and-deps.sh | 3 +-
.../customizing/pypi-selected-version.sh | 3 +-
.../restricted/restricted_environments.sh | 3 +-
docker-stack-docs/pyproject.toml | 2 +-
docker-tests/pyproject.toml | 2 +-
.../test_examples_of_prod_image_building.py | 2 +
docs/spelling_wordlist.txt | 2 +
go-sdk/DEVELOPMENT.md | 10 +-
go-sdk/airflow/conformance_test.go | 4 +-
.../cmd/airflow-go-pack/pack_integration_test.go | 3 +
go-sdk/example/bundle/main.go | 5 +
go-sdk/example/bundle/yamldag/handlers.go | 43 +
java-sdk/example/README.md | 16 +-
.../apache/airflow/example/AnnotationExample.java | 10 +-
.../airflow/example/ExampleBundleBuilder.java | 11 +-
.../airflow/example/InterfaceExampleBuilder.java | 7 -
.../apache/airflow/example/XComCastingExample.java | 16 +-
.../example/src/resources/dags/java_examples.py | 18 +-
java-sdk/sdk/build.gradle.kts | 2 +-
kubernetes-tests/lang_sdk/README.md | 18 +-
kubernetes-tests/lang_sdk/config/values.yaml | 9 +-
kubernetes-tests/lang_sdk/ts_example/package.json | 4 +-
.../lang_sdk/ts_example/pnpm-lock.yaml | 34 +-
kubernetes-tests/lang_sdk/ts_example/src/main.ts | 2 +-
kubernetes-tests/pyproject.toml | 2 +-
.../kubernetes_tests/test_lang_sdk_native_dag.py | 110 +-
performance/pyproject.toml | 2 +-
providers-summary-docs/pyproject.toml | 2 +-
providers/airbyte/pyproject.toml | 2 +-
providers/akeyless/pyproject.toml | 2 +-
providers/alibaba/pyproject.toml | 2 +-
providers/amazon/README.rst | 4 +-
providers/amazon/docs/index.rst | 4 +-
providers/amazon/pyproject.toml | 6 +-
providers/anthropic/pyproject.toml | 2 +-
providers/apache/arrow/pyproject.toml | 2 +-
providers/apache/beam/pyproject.toml | 2 +-
providers/apache/cassandra/pyproject.toml | 2 +-
providers/apache/drill/pyproject.toml | 2 +-
providers/apache/druid/pyproject.toml | 2 +-
providers/apache/flink/pyproject.toml | 2 +-
providers/apache/hdfs/pyproject.toml | 2 +-
providers/apache/hive/pyproject.toml | 2 +-
providers/apache/iceberg/pyproject.toml | 2 +-
providers/apache/impala/pyproject.toml | 2 +-
providers/apache/kafka/pyproject.toml | 2 +-
providers/apache/kylin/pyproject.toml | 2 +-
providers/apache/livy/pyproject.toml | 2 +-
providers/apache/pig/pyproject.toml | 2 +-
providers/apache/pinot/pyproject.toml | 2 +-
providers/apache/spark/pyproject.toml | 2 +-
providers/apache/tinkerpop/pyproject.toml | 2 +-
providers/apprise/pyproject.toml | 2 +-
providers/arangodb/pyproject.toml | 2 +-
providers/asana/pyproject.toml | 2 +-
providers/atlassian/jira/pyproject.toml | 2 +-
providers/celery/pyproject.toml | 2 +-
providers/clickhousedb/pyproject.toml | 2 +-
providers/cloudant/pyproject.toml | 2 +-
providers/cncf/kubernetes/pyproject.toml | 2 +-
providers/cohere/pyproject.toml | 2 +-
providers/common/ai/pyproject.toml | 2 +-
providers/common/compat/pyproject.toml | 2 +-
providers/common/dataquality/pyproject.toml | 2 +-
providers/common/io/pyproject.toml | 2 +-
providers/common/messaging/pyproject.toml | 2 +-
providers/common/sql/pyproject.toml | 2 +-
providers/databricks/pyproject.toml | 2 +-
providers/datadog/pyproject.toml | 2 +-
providers/dbt/cloud/pyproject.toml | 2 +-
providers/dingding/pyproject.toml | 2 +-
providers/discord/pyproject.toml | 2 +-
providers/docker/pyproject.toml | 2 +-
providers/duckdb/pyproject.toml | 2 +-
providers/edge3/pyproject.toml | 2 +-
providers/elasticsearch/pyproject.toml | 2 +-
providers/exasol/pyproject.toml | 2 +-
providers/fab/pyproject.toml | 2 +-
providers/facebook/pyproject.toml | 2 +-
providers/ftp/pyproject.toml | 2 +-
providers/git/pyproject.toml | 2 +-
providers/github/pyproject.toml | 2 +-
providers/google/README.rst | 4 +-
providers/google/docs/index.rst | 4 +-
providers/google/pyproject.toml | 6 +-
providers/grpc/pyproject.toml | 2 +-
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 4 +-
providers/http/pyproject.toml | 2 +-
providers/ibm/db2/pyproject.toml | 2 +-
providers/ibm/mq/pyproject.toml | 2 +-
providers/imap/pyproject.toml | 2 +-
providers/influxdb/pyproject.toml | 2 +-
providers/informatica/pyproject.toml | 2 +-
providers/jdbc/pyproject.toml | 2 +-
providers/jenkins/pyproject.toml | 2 +-
providers/keycloak/pyproject.toml | 2 +-
providers/microsoft/azure/pyproject.toml | 2 +-
providers/microsoft/mssql/pyproject.toml | 2 +-
providers/microsoft/psrp/pyproject.toml | 2 +-
providers/microsoft/winrm/pyproject.toml | 2 +-
providers/modal/pyproject.toml | 2 +-
providers/mongo/pyproject.toml | 2 +-
providers/mysql/pyproject.toml | 2 +-
providers/neo4j/pyproject.toml | 2 +-
providers/odbc/pyproject.toml | 2 +-
providers/openai/pyproject.toml | 2 +-
providers/openfaas/pyproject.toml | 2 +-
providers/openlineage/pyproject.toml | 2 +-
providers/opensearch/pyproject.toml | 2 +-
providers/opsgenie/pyproject.toml | 2 +-
providers/oracle/pyproject.toml | 2 +-
providers/pagerduty/pyproject.toml | 2 +-
providers/papermill/pyproject.toml | 2 +-
providers/pgvector/pyproject.toml | 2 +-
providers/pinecone/pyproject.toml | 2 +-
providers/postgres/pyproject.toml | 2 +-
providers/presto/pyproject.toml | 2 +-
providers/qdrant/pyproject.toml | 2 +-
providers/redis/pyproject.toml | 2 +-
providers/salesforce/pyproject.toml | 2 +-
providers/samba/pyproject.toml | 2 +-
providers/segment/pyproject.toml | 2 +-
providers/sendgrid/pyproject.toml | 2 +-
providers/sftp/pyproject.toml | 2 +-
providers/singularity/pyproject.toml | 2 +-
providers/slack/pyproject.toml | 2 +-
providers/smtp/pyproject.toml | 2 +-
providers/snowflake/pyproject.toml | 2 +-
providers/sqlite/pyproject.toml | 2 +-
providers/ssh/pyproject.toml | 2 +-
providers/standard/pyproject.toml | 2 +-
providers/tableau/pyproject.toml | 2 +-
providers/telegram/pyproject.toml | 2 +-
providers/teradata/pyproject.toml | 2 +-
providers/trino/pyproject.toml | 2 +-
providers/vertica/pyproject.toml | 2 +-
providers/vespa/pyproject.toml | 2 +-
providers/weaviate/pyproject.toml | 2 +-
providers/yandex/pyproject.toml | 2 +-
providers/ydb/pyproject.toml | 2 +-
providers/zendesk/pyproject.toml | 2 +-
pyproject.toml | 14 +-
reproducible_build.yaml | 4 +-
scripts/ci/configure_runner_for_parallel_tests.sh | 46 +
scripts/ci/docker_data_root_snapshot.sh | 207 ++
scripts/ci/install_breeze.sh | 2 +-
.../check_go_sdk.py} | 2 +-
.../ci/lang_sdk_serialization/check_java_sdk.py | 4 +-
.../ci/lang_sdk_serialization/check_ts_sdk.py | 7 +-
scripts/ci/lang_sdk_serialization/compare.py | 4 +-
scripts/ci/prek/AGENTS.md | 30 +-
scripts/ci/prek/check_ci_workflows_in_sync.py | 9 +-
scripts/ci/prek/check_extra_packages_ref.py | 2 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/check_init_decorator_arguments.py | 15 -
scripts/ci/prek/check_license.py | 2 +-
scripts/ci/prek/check_prek_parallel_hooks.py | 97 +
scripts/ci/prek/lint_dockerfile.py | 2 +-
scripts/ci/prek/ruff_format.py | 2 +-
scripts/ci/prek/upgrade_important_versions.py | 141 +-
scripts/ci/spot_interruptions.py | 21 +-
scripts/docker/entrypoint_ci.sh | 2 +
.../docker/install_airflow_when_building_images.sh | 48 +-
scripts/docker/install_os_dependencies.sh | 87 +-
scripts/docker/install_postgres.sh | 6 +
scripts/pyproject.toml | 2 +-
.../test_check_go_sdk.py} | 4 +-
.../ci/prek/test_check_prek_parallel_hooks.py | 75 +
.../ci/prek/test_upgrade_important_versions.py | 153 ++
scripts/tests/ci/test_docker_data_root_snapshot.py | 459 ++++
scripts/tests/ci/test_prek_cache_optimizations.py | 38 +-
scripts/tests/ci/test_spot_interruptions.py | 78 +-
scripts/tools/setup_breeze | 2 +-
shared/configuration/pyproject.toml | 2 +-
shared/dagnode/pyproject.toml | 2 +-
shared/listeners/pyproject.toml | 2 +-
shared/logging/pyproject.toml | 2 +-
shared/module_loading/pyproject.toml | 2 +-
shared/observability/pyproject.toml | 2 +-
shared/plugins_manager/pyproject.toml | 2 +-
shared/providers_discovery/pyproject.toml | 2 +-
shared/secrets_backend/pyproject.toml | 2 +-
shared/secrets_masker/pyproject.toml | 2 +-
shared/serialization/pyproject.toml | 2 +-
shared/state/pyproject.toml | 2 +-
shared/template_rendering/pyproject.toml | 2 +-
shared/timezones/pyproject.toml | 2 +-
task-sdk-integration-tests/pyproject.toml | 2 +-
task-sdk/docs/ts-bundle-spec.rst | 2 +-
task-sdk/pyproject.toml | 2 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 2 +-
.../coordinators/node/test_bundle_reader.py | 2 +-
ts-sdk/.pre-commit-config.yaml | 16 -
ts-sdk/DEVELOPMENT.md | 22 +-
ts-sdk/README.md | 6 +-
ts-sdk/adr/0001-mixed-lang-dag-interface.md | 2 +-
ts-sdk/adr/0002-native-dag-interface.md | 2 +-
ts-sdk/docs/index.md | 6 +-
ts-sdk/docs/package-lock.json | 4 +-
ts-sdk/docs/package.json | 2 +-
ts-sdk/docs/tests/deployment-checks.test.mjs | 4 +-
ts-sdk/example/package.json | 4 +-
ts-sdk/example/src/ai-approval.ts | 6 +-
ts-sdk/example/src/dynamic.ts | 2 +-
ts-sdk/example/src/hitl.ts | 6 +-
ts-sdk/example/src/main.ts | 2 +-
ts-sdk/example/src/native.ts | 2 +-
ts-sdk/example/src/taskflow.ts | 2 +-
ts-sdk/package.json | 5 +-
ts-sdk/pnpm-lock.yaml | 34 +-
ts-sdk/scripts/validate-release-inputs.mjs | 7 +-
ts-sdk/scripts/validate-release-inputs.test.mjs | 6 +-
ts-sdk/scripts/verify-package.test.mjs | 10 +-
ts-sdk/src/coordinator/arg-binding.ts | 2 +-
ts-sdk/src/coordinator/log-channel.ts | 94 +-
ts-sdk/src/coordinator/serde.ts | 2 +-
ts-sdk/src/sdk/brand.ts | 2 +-
ts-sdk/src/sdk/client-types.ts | 2 +-
ts-sdk/tests/cli/fixtures/bundle-v1.min.mjs | 4 +-
ts-sdk/tests/cli/pack.test.ts | 2 +-
ts-sdk/tests/conformance/serialize_typescript.ts | 2 +-
ts-sdk/tests/coordinator/arg-binding.test.ts | 2 +-
ts-sdk/tests/coordinator/log-channel.test.ts | 173 ++
ts-sdk/tests/coordinator/serde.test.ts | 8 +
ts-sdk/tests/hitl/operator.test.ts | 2 +-
ts-sdk/tests/public-api.test.ts | 2 +-
ts-sdk/tests/sdk/bundle.test.ts | 2 +-
ts-sdk/tsconfig.json | 6 +-
ts-sdk/vitest.config.ts | 6 +-
uv.lock | 2790 ++++++++++----------
485 files changed, 14486 insertions(+), 3857 deletions(-)
create mode 100644 .github/actions/load_image/action.yml
create mode 100644 .github/workflows/dependency-upgrade-report.yml
delete mode 100644 airflow-core/newsfragments/74896.bugfix.rst
delete mode 100644 airflow-core/newsfragments/75414.significant.rst
create mode 100644 airflow-core/newsfragments/76234.bugfix.rst
copy airflow-core/src/airflow/ui/src/components/{StatsCard.test.tsx =>
Clear/TaskInstance/ClearTaskInstanceDialog.emptySelection.test.tsx} (57%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/LoopIterations/LoopIterations.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/LoopIterations/LoopIterations.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Variables/ImportVariablesForm.test.tsx
copy airflow-core/src/airflow/ui/src/{context/groups/useGroups.ts =>
queries/useHasMultipleDagBundles.ts} (70%)
copy airflow-e2e-tests/docker/{elasticsearch.yml => yaml-dag.yml} (57%)
copy {airflow-core/src/airflow/_shared =>
airflow-e2e-tests/tests/airflow_e2e_tests/yaml_dag_tests}/__init__.py (100%)
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/yaml_dag_tests/test_yaml_dag.py
create mode 100644 airflow-e2e-tests/yaml-dags/yaml_s3_roundtrip.yaml
create mode 100644
dev/breeze/doc/images/output_workflow-run_mirror-base-images.svg
create mode 100644
dev/breeze/doc/images/output_workflow-run_mirror-base-images.txt
create mode 100644 dev/breeze/doc/images/output_workflow-run_upgrade-check.svg
create mode 100644 dev/breeze/doc/images/output_workflow-run_upgrade-check.txt
create mode 100644
dev/breeze/src/airflow_breeze/files/hardened_python_image_digests.json
create mode 100644
dev/breeze/src/airflow_breeze/files/legacy_python_versions.json
create mode 100644 dev/breeze/tests/test_dependency_upgrade_report.py
create mode 100644 go-sdk/example/bundle/yamldag/handlers.go
create mode 100755 scripts/ci/configure_runner_for_parallel_tests.sh
create mode 100755 scripts/ci/docker_data_root_snapshot.sh
rename scripts/ci/{prek/check_go_sdk_serialization_conformance.py =>
lang_sdk_serialization/check_go_sdk.py} (96%)
rename java-sdk/scripts/ci/prek/check_serialization_conformance.py =>
scripts/ci/lang_sdk_serialization/check_java_sdk.py (94%)
rename ts-sdk/scripts/ci/prek/check_serialization_conformance.py =>
scripts/ci/lang_sdk_serialization/check_ts_sdk.py (92%)
create mode 100755 scripts/ci/prek/check_prek_parallel_hooks.py
rename scripts/tests/ci/{prek/test_check_go_sdk_serialization_conformance.py
=> lang_sdk_serialization/test_check_go_sdk.py} (94%)
create mode 100644 scripts/tests/ci/prek/test_check_prek_parallel_hooks.py
create mode 100644 scripts/tests/ci/test_docker_data_root_snapshot.py