This is an automated email from the ASF dual-hosted git repository.
vatsrahul1001 pushed a change to branch v3-4-stable
in repository https://gitbox.apache.org/repos/asf/airflow.git
from 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 df2433ef06d Add release notes for 3.4.0rc2
add b7be9b34b47 Bump pypdf to 6.21.4 to fix high-severity advisories
No new revisions were added by this update.
Summary of changes:
.../skills/airflow-translations/locales/zh-TW.md | 44 +-
.github/actions/breeze/action.yml | 6 +
.../actions/prepare_breeze_and_image/action.yml | 5 +
.github/actions/runs-on-cost-summary/action.yml | 4 +-
.github/workflows/additional-prod-image-tests.yml | 26 +-
.github/workflows/airflow-e2e-tests.yml | 12 +-
.github/workflows/basic-tests.yml | 4 +-
.github/workflows/ci-amd.yml | 105 +-
.github/workflows/ci-arm.yml | 100 +-
.github/workflows/finalize-tests.yml | 2 +-
.github/workflows/generate-constraints.yml | 14 +-
.github/workflows/helm-tests.yml | 2 +-
.github/workflows/integration-system-tests.yml | 2 +-
.github/workflows/mirror-hardened-base-images.yml | 84 +-
.github/workflows/publish-docs-to-s3.yml | 74 +-
.github/workflows/refresh-image-registry-cache.yml | 7 +-
.github/workflows/registry-backfill.yml | 6 +
.github/workflows/registry-build.yml | 9 +
.github/workflows/release-constraints.yml | 15 +-
.github/workflows/release_dockerhub_image.yml | 11 +-
.../scheduled-legacy-prod-image-canary.yml | 9 +-
.github/workflows/scheduled-upgrade-check-main.yml | 2 +
.../scheduled-upgrade-check-v3-4-test.yml | 2 +
.github/workflows/special-tests.yml | 22 +-
.../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 | 85 +-
Dockerfile.ci | 81 +-
RELEASE_NOTES.rst | 21 +-
airflow-core/docs/ui.rst | 432 ++--
.../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 +
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 2 +
.../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/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_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_local_executor.py | 8 +-
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 ++-
.../src/airflowctl/api/datamodels/generated.py | 14 +
.../docker/{elasticsearch.yml => yaml-dag.yml} | 31 +-
airflow-e2e-tests/pyproject.toml | 2 +-
.../tests/airflow_e2e_tests/conftest.py | 79 +-
.../tests/airflow_e2e_tests/constants.py | 6 +
.../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 +
contributing-docs/08_static_code_checks.rst | 6 +
...UALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md | 6 +
dev/README_RELEASE_AIRFLOW.md | 88 +-
dev/breeze/doc/05_test_commands.rst | 2 +-
dev/breeze/doc/09_release_management_tasks.rst | 62 +-
dev/breeze/doc/ci/02_images.md | 4 +-
dev/breeze/doc/ci/04_selective_checks.md | 80 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 23 +-
dev/breeze/doc/images/output_ci_upgrade.svg | 114 +-
dev/breeze/doc/images/output_ci_upgrade.txt | 2 +-
...put_release-management_generate-constraints.svg | 78 +-
...put_release-management_generate-constraints.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 +
.../src/airflow_breeze/commands/ci_commands.py | 158 +-
.../airflow_breeze/commands/ci_commands_config.py | 2 +
.../src/airflow_breeze/commands/common_options.py | 7 +
.../airflow_breeze/commands/kubernetes_commands.py | 106 +-
.../commands/release_management_commands.py | 131 +-
.../commands/release_management_commands_config.py | 3 +
.../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 | 89 +-
.../src/airflow_breeze/params/build_prod_params.py | 11 +-
.../src/airflow_breeze/params/shell_params.py | 4 +
.../airflow_breeze/utils/ci_minutes_estimate.py | 6 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 135 +-
.../src/airflow_breeze/utils/gh_workflow_utils.py | 42 +
.../airflow_breeze/utils/publish_docs_helpers.py | 32 -
.../src/airflow_breeze/utils/publish_docs_to_s3.py | 6 +-
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 +
.../src/airflow_breeze/utils/workflow_status.py | 4 +
dev/breeze/tests/test_build_prod_params.py | 44 +-
dev/breeze/tests/test_ci_upgrade.py | 100 +
dev/breeze/tests/test_fork_ci_reconcile.py | 134 +-
dev/breeze/tests/test_gh_workflow_utils.py | 54 +
.../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 | 25 +
.../tests/test_pytest_args_for_test_types.py | 65 +-
.../tests/test_release_management_commands.py | 70 +
dev/breeze/tests/test_run_test_args.py | 93 +
dev/breeze/tests/test_selective_checks.py | 304 ++-
dev/breeze/tests/test_set_milestone.py | 48 -
dev/breeze/tests/test_shell_params.py | 21 +-
dev/breeze/tests/test_workflow_commands.py | 57 +
.../breeze/tests/test_workflow_status.py | 34 +-
dev/breeze/uv.lock | 12 +-
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 +-
.../test_examples_of_prod_image_building.py | 2 +
docs/spelling_wordlist.txt | 1 +
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/sdk/build.gradle.kts | 2 +-
kubernetes-tests/lang_sdk/README.md | 18 +-
kubernetes-tests/lang_sdk/config/values.yaml | 9 +-
.../kubernetes_tests/test_lang_sdk_native_dag.py | 110 +-
providers/amazon/README.rst | 4 +-
providers/amazon/docs/index.rst | 4 +-
providers/amazon/pyproject.toml | 4 +-
providers/google/README.rst | 2 +-
providers/google/docs/index.rst | 2 +-
providers/google/pyproject.toml | 2 +-
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 2 +-
providers/microsoft/azure/README.rst | 2 +-
providers/microsoft/azure/docs/index.rst | 2 +-
providers/microsoft/azure/pyproject.toml | 2 +-
pyproject.toml | 8 +-
reproducible_build.yaml | 4 +-
scripts/ci/configure_runner_for_parallel_tests.sh | 46 +
.../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 | 5 +-
scripts/ci/prek/check_init_decorator_arguments.py | 15 -
scripts/ci/prek/check_prek_parallel_hooks.py | 97 +
scripts/ci/prek/upgrade_important_versions.py | 141 +-
scripts/ci/spot_interruptions.py | 5 +-
scripts/docker/entrypoint_ci.sh | 2 +
scripts/docker/install_os_dependencies.sh | 62 +-
scripts/docker/install_postgres.sh | 6 +
scripts/in_container/run_generate_constraints.py | 129 +-
.../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_prek_cache_optimizations.py | 38 +-
scripts/tests/ci/test_spot_interruptions.py | 36 +-
.../in_container/test_run_generate_constraints.py | 167 +-
scripts/tools/setup_breeze | 2 +-
ts-sdk/.pre-commit-config.yaml | 16 -
ts-sdk/src/coordinator/log-channel.ts | 94 +-
ts-sdk/tests/conformance/serialize_typescript.ts | 2 +-
ts-sdk/tests/coordinator/log-channel.test.ts | 173 ++
uv.lock | 2063 ++++++++++----------
245 files changed, 9409 insertions(+), 2725 deletions(-)
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
copy
airflow-core/src/airflow/migrations/versions/0070_3_1_0_add_deadline_to_dag.py
=> dev/breeze/tests/test_workflow_status.py (58%)
create mode 100644 go-sdk/example/bundle/yamldag/handlers.go
create mode 100755 scripts/ci/configure_runner_for_parallel_tests.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