This is an automated email from the ASF dual-hosted git repository.
rahulvats pushed a change to branch v3-2-stable
in repository https://gitbox.apache.org/repos/asf/airflow.git
from 37069948c09 Update python client version/changelog for 3.2.0 release
add 5708962c8ff [v3-2-test] add concurrency in update-constrants-on-push
(#64645) (#64671)
add 17fe2493d21 [v3-2-test] Skip UI E2E tests on derived full tests
needed, canary, and scheduled builds (#64673) (#64675)
add 201e763cff0 [v3-2-test] Temporarily upgrade allowlist-check to latest
version (#64713) (#64717)
add a4b7e250b63 Bump the github-actions-updates group with 3 updates
(#64686)
add 41f81185e07 [v3-2-test] Simplify ci_image_build and add test coverage
for remote logging e2e (#64697) (#64698)
add c8e99239950 [v3-2-test] Add --frozen to uv run commands in run_tests
and document uv lock behavior (#64699) (#64721)
add ce8dce427e6 [v3-2-test] Fix start_date in example DAGs to avoid TZ
conversion overflow (#63882) (#64758)
add 68c40e688df i18n: add missing keys and fix Taiwanese Mandarin
terminology
add e4d0c265012 [v3-2-test] Fix OTel metrics lost in forked task processes
(#64703) (#64720)
add abbab2a66d9 [v3-2-test] Fix #62414: Remove spurious blank lines in
filtered task log download (#64235) (#64640)
add c58f4e21e0e [v3-2-test] [main] Force building CI image on upgrade
important CI environment (#64536) (#64769)
add 15b0952adff [v3-2-test] CI: Build CI image after Dockerfiles are
updated in breeze ci upgrade (#64777) (#64781)
add c24a440828d [v3-2-test] UI: Filter DagVersionSelect options based on
selected DagRun (#64736) (#64771)
add ec2b8a1eae4 [v3-2-test] fix(ui): correct external link target and add
rel attributes (#64542) (#64772)
add 5d6f07d7722 [v3-2-test] Allow revent packages when testing RC versions
(#64774) (#64783)
add cd562c46678 [v3-2-test] Add --path-to-airflow-svn definitions to
release verification (#64798) (#64805)
add e82585d0901 CI: Upgrade important CI environment (#64797)
add 196808b8c64 [v3-2-test] Fix group/extra bug in initialize_virtualenv
(#62230) (#64808)
add a796c633d48 [v3-2-test] Exclude text non-doc files from triggering
full CI test runs (#64584) (#64809)
add ec9f46a0f96 [v3-2-test] Run non-provider mypy checks as regular prek
static checks instead of separate CI jobs (#64780) (#64810)
add 10e95ae0d1b [v3-2-test] Backport #62849: Fix structlog positional
formatting for single-dict arguments (#64773)
add 28a8071d2d6 [v3-2-test] Remove dependabot alarms in airflow core npm
dependencies (#64791)\n(cherry picked from commit
529b49c57e8b776ca49fc180d877457570d53f1c)\n\nCo-authored-by: Jens Scheffler
<[email protected]> (#64811)
add 0860c23e6c1 [v3-2-test] Install rustup and cargo in CI and prod build
images (#64725) (#64729)
add 0070a18956d [v3-2-test] fix mypy error due to 1.20.0 upgrade (#64832)
add 4477f673b77 [v3-2-test] Allow UI theme config without tokens (CSS-only
or empty fallback) (#64552) (#64852)
add 6ad033c0908 [v3-2-test] connections import now returns non-zero exit
code on failure (#64416) (#64449)
add 1ab48e57da5 [v3-2-test] Fix Gantt view "Error invalid date" on running
DagRun (#64752) (#64853)
add 116a82beca3 [v3-2-test] fix(ui): prevent duplicate nav sidebar when
iframe navigates away from auth pages (#63873) (#64854)
add e2c04cd2f65 [v3-2-test] Move "Free up disk space" step into
prepare_breeze_and_image action (#64872) (#64873)
add d509ec5bb61 [v3-2-test] Docs: Add gh pr create example to provider
release instructions (#64865) (#64866)
add 69efac21d70 [v3-2-test] Fix TypeError in GET /dags/{dag_id}/tasks when
order_by field has None values (#64384) (#64587)
add 9e3c10874e4 [v3-2-test] Fix N+1 query pattern in task instance states
and count endpoints (#60352) (#64695)
add 63c6799bf8d [v3-2-test] Run `uv lock --upgrade` locally in `breeze ci
upgrade` instead of inside CI image (#64804) (#64806)
add f40c6d7c130 [v3-2-test] Docs: Add JWT authentication docs and
strengthen security model (#64760) (#64849)
add 7d1035b8ea7 [v3-2-test] Update ASF allowlist-check action to latest
version (#64728) (#64733)
add 9e09434ab01 [v3-2-test] airflow-ctl: fix variable import to correctly
handle falsy values (#64362) (#64448)
add 541ff409de4 [v3-2-test] fix(scheduler): skip asset-triggered dags
without SerializedDagModel (#64322) (#64738)
add a4ee379bc0c [v3-2-test] Return 410 Gone for heartbeat when cleared TI
exists in TIH (#61631) (#64693)
add 46fbde00707 [v3-2-test] Skip newsfragment check on label events to
avoid approval requirement (#64901) (#64903)
add b8ec8c3b9fe [v3-2-test] docs: remove outdated reference to Dag
Dependencies view (#64787) (#64911)
add 72e6b7c04e8 [v3-2-test] Fix CARGO_HOME location for airflow user
builds (#64899) (#64914)
add 9edb2dca9fe [v3-2-test] Replace upgrade-check build failure with
scheduled upgrade PR workflow (#64836) (#64915)
add 47636981a54 [v3-2-test] Bugfix/skip commit checks on automated ci
upgrades (#64856) (#64916)
add d949f948298 [v3-2-test] CI: Upgrade important CI environment (#64917)
add 0a9adc4926c [v3-2-test] fix(migrations): move UPDATEs inside
disable_sqlite_fkeys in migration 0097 (#64876) (#64940)
add 71c5483782a [v3-2-test] open task group when navigating via group
name; preserve arrow toggl… (#64284) (#64919)
add 7b694fcc957 [v3-2-test] fix bulk connection delete banner (#64735)
(#64961)
add dac85d71dbb [v3-2-test] UI: Implement automatic link target detection
for extra_links (#64404) (#64967)
add 60a08929e0a [v3-2-test] Hide legacy sql connection (#64923) (#64973)
add 7ee8494f033 [v3-2-test] Fix broken pytest/main after PR 64923 (#64978)
(#64983)
add 3fe6d52bdee [v3-2-test] Fix read out-of-order issue with send method
in CommsDecoder (#64894) (#64946)
add 80ce36d6b22 [v3-2-test] build(prek-hook): Check whether new "raise
AirflowException" is added (#55416) (#64992)
add 1ee348bbd62 [v3-2-test] fix(ui): cancel debounce on clear to prevent
stale search value (#64893) (#64907)
add 62b9e93484b [v3-2-test] Fix release check tooling for providers
(#64920) (#65008)
add 34916cfeeb4 [v3-2-test] Add FAQ entry for API server memory growth
with gunicorn worker recycling (#65036) (#65037)
add 1d1f8bcb262 [v3-2-test] Sync default image Python version references
(#64994) (#65045)
add 0979f145483 [v3-2-test] Fixed incorrect image path for helm/core
issues in breeze docs (#65060) (#65064)
add adb01b9784d [v3-2-test] Fix missing dag_id in get_task_instance
(#64957) (#64968) (#65067)
add 50c67cc835d [v3-2-test] Added plugins command to airflowctl (#64935)
(#65001)
add c00c50a1829 [v3-2-test] add yaml-based help texts for auto-generated
airflowctl commands (#65073) (#65090)
add eefab38c0d7 [v3-2-test] fix(cli): change is_alive default to None in
jobs list (#65065) (#65091)
add 3b3c058ec7f sync airflowctl from main to v3-2-test (#65069)
add 89d66a29015 [v3-2-test] Trigger unit tests when only shared/*.py files
change (#64999) (#65094)
add 6e377b61e8e [v3-2-test] Prevent path traversal via
AIRFLOW_CLI_ENVIRONMENT in airflowctl (#64618) (#65096)
add a51d98b39f6 [v3-2-test] Fix CLI error handling and exit codes for
failed commands (#65052) (#65097)
add 64ea23d83da Bump aws-actions/configure-aws-credentials (#65023)
add 208755255e1 [v3-2-test] Remove breeze k8s configure-k8s-cluster
(#65088) (#65117)
add 3ab86f2106d [v3-2-test] Speed up Publish Docs to S3 workflow with main
CI image cache (#65108) (#65144)
add 621e91c4f0e [v3-2-test] Fix E2E Flaky Tests Report failing with gh api
404 (#65120) (#65157)
add 285acafa5f3 [v3-2-test] Validate operator arg types at decoration time
in @task decorator (#65041) (#65050)
add 589b0ee66e6 [v3-2-test] restore OpenSearch log integration (#64764)
(#65003)
add 8d0d0a7c992 [v3-2-test] Fix publishing failure when new providers are
added to main (#65093) (#65101)
add d68aa631285 [v3-2-test] Grant write permissions to scheduled CI
upgrade check workflows (#65168) (#65176)
add 339d1c8f1b3 Bump actions/github-script in the github-actions-updates
group (#65149)
add 6976a23250c [v3-2-test] Re export AirflowPlugin to fix mypy errors in
plugins (#65132) (#65163)
add d752dba1247 [v3-2-test] Fix redirect loop when stale root-path
`_token` cookie exists from older Airflow instance (#64955) (#65177)
add 04045f3bbbe [v3-2-test] MD files only optimization only on PUSH
(#65181) (#65182)
add 5a4ddb28e84 Prevent Session leak from StreamingResponse API endpoints.
(#65162) (#65193)
add c0d967c2132 Prevent Session from staying opened between yields
(#65179) (#65195)
add b2479e15897 [v3-2-test] fix sdk configuration to use $AIRFLOW_CONFIG
env (#64936) (#65200)
add 667f7547ea8 feat: add `write_to_os` writing task logs to opensearch
(#64364) (#65201)
add cb4c9ec10f8 [v3-2-test] Fix CI Slack notifications never firing
recovery alerts (#65119) (#65164)
add a0063e1606e [v3-2-test] Fix backport test for log line number gap fix
(#65039) (#65187)
add ea7de094a9e [v3-2-test] fix(ui): sync SearchBar value with
defaultValue changes (#65054) (#65140)
add 839b1186ee0 [v3-2-test] fix(ui): use fixed menu positioning for
dropdowns in connection forms (#65007) (#65085) (#65138)
add 9fe4ed18d1c [v3-2-test] Pin pyarrow>=22.0.0 on Python 3.14 in
highest-resolution constraints (#65216) (#65219)
add 091b095fdf0 [v3-2-test] Fix serializer for empty string extra
connection (#65014) (#65215)
add 42f820e8b61 Reduce per-DAG queries during DAG serialization with bulk
prefetch (#64929) (#65208)
add 36e0ee64732 [v3-2-test] UI: Show deactivated state for stale DAGs
(#65214) (#65218)
add 34f4262bed0 [v3-2-test] CI: Upgrade important CI environment (#65213)
add a4b1ee121a0 [v3-2-test] Run release calendar verification on its own
schedule (#65118) (#65165)
add 665c495eca5 [v3-2-test] Bump actions/github-script in the
github-actions-updates group (#65150) (#65160)
add b0c82079255 [v3-2-test] Add exclude-newer-package=false for all
workspace components in uv config (#64859) (#65238)
add fff97962c83 [v3-2-test] Added breeze generate issue content for
airflow-ctl (#65042) (#65241)
add fe929694853 [v3-2-test] Run release calendar verification on its own
schedule (#65118) (#65242)
add 8cff08aebda [v3-2-test] Fix scheduled CI upgrade job: extract versions
from uv.lock + Slack alerts (#65211) (#65243)
add 458aeccc594 [v3-2-test] update footer summary table for constraints
version check script (#64117) (#65249)
add 991725b3cf7 [v3-2-test] Add "# Days Stale" column and distinct status
colors to `constraints-version-check` (#64331) (#65250)
add 4bb1c430f56 [v3-2-test] Adjust column length for
constraints_version_check (#64403) (#65251)
add 54d782da30e [v3-2-test] Shift constraints-version-check staleness
coloring by --cooldown-days (#65233) (#65252)
add 800c9fa3455 Synchronize v3-2-test with main
add 1e96d03d5e6 [v3-2-test] fix(ui): avoid false unused plural keys in
translation completeness check (#65259) (#65270)
add 29f055c9a56 [v3-2-test] Add missing Polish translations to reach 100%
coverage (#65272)
add 7c2a9b6b813 [v3-2-test] Bump `pagefind>=1.5.0` (#65253) (#65266)
add 3402c30c7de [v3-2-test] Add fast-path heartbeat UPDATE to avoid row
lock in the common case (#65029) (#65137)
add 8b0d7bac633 [v3-2-test] Fix: add RUN, HITL_DETAIL, TASK_INSTANCE
entities to /dags endpoint as it returns nested entities in response (#64822)
(#65225)
add 2f585e7436a [v3-2-test] fix: update dependencies to fix dependabot
alarms in core#65049 (#65245)
add bf5a82a363b [v3-2-test] Fix asset graph view leaking DAGs outside the
user's permissions (#65273) (#65280)
add 2e8cc397f43 [v3-2-test] Fix get_team_name_dep creating wasted async
sessions when multi_team=False (#65275) (#65282)
add 2f65b79b348 [v3-2-test] Pin airflow package versions in
highest-resolution constraints (#65244) (#65255)
add 0090e9ae4db [v3-2-test] Lock TriggerCommsDecoder sync req-res cycle
(#64882) (#65285)
add fde9fb5550e Fix dispose_orm() not disposing async engine on shutdown
(#65274) (#65284)
add 5d5f95bd3a7 [v3-2-test] fix(migration): add missing
disable_sqlite_fkeys to 0108 migraiton (#65288) (#65290)
add 9f2643f16f4 Remove gunicorn upper bound now that 25.2.0 is released
with the fix (#64193) (#65292)
add f55ed5c070d Add overridable metadata engine creation hooks in
`settings.py` (#62184) (#65293)
add f6dc7714270 fix(connection-model): RFC3896 `conn_type` warning
(#63167) (#65294)
add 8a3af783639 Remove outdated TODO comment about permissions (#64169)
(#65295)
add 7ba62fcc392 Fix zip DAG import errors being cleared during bundle
refresh (#63617) (#65296)
add 7c4dbf9ead4 Change default sort to 'id' for list task instances
(#64168) (#65297)
add 519c4f1cf2d fix: use Dag form when materializing asset (#64211)
(#65303)
add daae7bbfef9 Restore `deactivate_deleted_dags` signature broken by
#63617 (#64245) (#65312)
add 3abf7e0d9fc update release notes of 3.2.0 specifying
`sqlalchemy[asyncio]>=2.0.48` (#65133) (#65311)
add 200a7e13a62 Update version to 3.2.1
add b457a3001f0 update release notes for 3.2.1rc1
No new revisions were added by this update.
Summary of changes:
.github/SECURITY.md | 1 +
.github/actions/breeze/action.yml | 16 +-
.github/actions/install-prek/action.yml | 31 +-
.../actions/prepare_breeze_and_image/action.yml | 3 +
.github/instructions/code-review.instructions.md | 2 +-
.github/skills/airflow-translations/locales/pl.md | 19 +
.github/workflows/additional-ci-image-checks.yml | 8 +-
.github/workflows/asf-allowlist-check.yml | 2 +-
.github/workflows/automatic-backport.yml | 2 +-
.github/workflows/basic-tests.yml | 126 +-
.github/workflows/check-newsfragment-pr-number.yml | 2 +-
.github/workflows/ci-amd-arm.yml | 68 +-
.github/workflows/ci-image-checks.yml | 59 +-
.github/workflows/codeql-analysis.yml | 6 +-
.github/workflows/k8s-tests.yml | 3 -
.github/workflows/milestone-tag-assistant.yml | 2 +-
.github/workflows/publish-docs-to-s3.yml | 30 +-
.github/workflows/registry-backfill.yml | 6 +-
.github/workflows/registry-build.yml | 2 +-
.github/workflows/registry-tests.yml | 2 +-
.github/workflows/release_dockerhub_image.yml | 3 -
.../workflows/scheduled-upgrade-check-main.yml | 28 +-
.../scheduled-upgrade-check-v3-2-test.yml} | 22 +-
.../scheduled-verify-release-calendar.yml | 79 +
.github/workflows/test-providers.yml | 6 -
.github/workflows/update-constraints-on-push.yml | 6 +-
.github/workflows/upgrade-check.yml | 158 +
.pre-commit-config.yaml | 52 +-
AGENTS.md | 34 +-
Dockerfile | 38 +-
Dockerfile.ci | 41 +-
README.md | 12 +-
RELEASE_NOTES.rst | 77 +
airflow-core/.pre-commit-config.yaml | 24 +-
.../cluster-policies.rst | 44 +
.../production-deployment.rst | 9 +-
airflow-core/docs/best-practices.rst | 8 +-
airflow-core/docs/configurations-ref.rst | 25 +-
airflow-core/docs/core-concepts/dags.rst | 5 +-
airflow-core/docs/core-concepts/multi-team.rst | 2 +-
airflow-core/docs/faq.rst | 37 +
airflow-core/docs/howto/customize-ui.rst | 1 +
airflow-core/docs/howto/set-config.rst | 23 +-
.../docs/installation/supported-versions.rst | 2 +-
.../docs/installation/upgrading_to_airflow3.rst | 2 +-
airflow-core/docs/public-airflow-interface.rst | 7 +-
.../docs/security/jwt_token_authentication.rst | 398 +++
airflow-core/docs/security/security_model.rst | 493 ++-
airflow-core/docs/security/workload.rst | 83 +
airflow-core/newsfragments/64552.improvement.rst | 1 +
airflow-core/newsfragments/64822.significant.rst | 1 +
airflow-core/pyproject.toml | 11 +-
airflow-core/src/airflow/__init__.py | 2 +-
.../auth/managers/simple/ui/package.json | 20 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 673 ++--
.../api_fastapi/auth/middlewares/refresh_token.py | 15 +-
.../src/airflow/api_fastapi/common/db/common.py | 10 -
.../src/airflow/api_fastapi/common/types.py | 8 +-
.../api_fastapi/core_api/datamodels/assets.py | 27 +-
.../api_fastapi/core_api/datamodels/connections.py | 8 +-
.../api_fastapi/core_api/datamodels/ui/config.py | 10 +
.../api_fastapi/core_api/openapi/_private_ui.yaml | 85 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 59 +
.../api_fastapi/core_api/routes/public/assets.py | 16 +-
.../api_fastapi/core_api/routes/public/auth.py | 12 +-
.../api_fastapi/core_api/routes/public/tasks.py | 40 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 3 +
.../api_fastapi/core_api/routes/ui/dependencies.py | 2 +
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 48 +-
.../core_api/services/ui/dependencies.py | 24 +-
.../execution_api/routes/task_instances.py | 71 +-
.../airflow/api_fastapi/execution_api/security.py | 17 +-
airflow-core/src/airflow/assets/manager.py | 2 +
.../config_templates/airflow_local_settings.py | 89 +-
.../src/airflow/config_templates/config.yml | 10 +-
.../src/airflow/dag_processing/collection.py | 21 +-
airflow-core/src/airflow/dag_processing/manager.py | 33 +-
.../example_dags/example_inlet_event_extra.py | 4 +-
.../example_dags/example_outlet_event_extra.py | 6 +-
.../src/airflow/jobs/triggerer_job_runner.py | 6 +-
..._enforce_log_event_and_dag_is_stale_not_null.py | 9 +-
...3_2_0_fix_migration_file_ORM_inconsistencies.py | 47 +-
airflow-core/src/airflow/models/connection.py | 13 +-
airflow-core/src/airflow/models/dag.py | 17 +-
airflow-core/src/airflow/models/serialized_dag.py | 102 +-
airflow-core/src/airflow/models/taskinstance.py | 1 +
airflow-core/src/airflow/plugins_manager.py | 2 +-
airflow-core/src/airflow/settings.py | 59 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 7 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 211 +-
.../ui/openapi-gen/requests/services.gen.ts | 3 +
.../airflow/ui/openapi-gen/requests/types.gen.ts | 43 +-
airflow-core/src/airflow/ui/package.json | 10 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 631 ++--
.../src/airflow/ui/public/i18n/locales/en/dag.json | 3 +
.../airflow/ui/public/i18n/locales/pl/admin.json | 3 +-
.../airflow/ui/public/i18n/locales/pl/common.json | 24 +-
.../ui/public/i18n/locales/pl/components.json | 3 -
.../src/airflow/ui/public/i18n/locales/pl/dag.json | 6 +-
.../ui/public/i18n/locales/zh-TW/admin.json | 3 +-
.../ui/public/i18n/locales/zh-TW/assets.json | 2 +-
.../ui/public/i18n/locales/zh-TW/browse.json | 4 +-
.../ui/public/i18n/locales/zh-TW/common.json | 20 +
.../ui/public/i18n/locales/zh-TW/components.json | 4 +-
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 3 +-
.../airflow/ui/public/i18n/locales/zh-TW/dags.json | 2 +-
.../ActionBar/index.ts => DagDeactivatedBadge.tsx} | 12 +-
.../ui/src/components/DagVersionSelect.test.tsx | 120 +
.../airflow/ui/src/components/DagVersionSelect.tsx | 23 +-
.../src/components/FlexibleForm/FieldDropdown.tsx | 1 +
.../components/FlexibleForm/FieldMultiSelect.tsx | 1 +
.../airflow/ui/src/components/SearchBar.test.tsx | 76 +-
.../src/airflow/ui/src/components/SearchBar.tsx | 17 +-
.../src/components/TriggerDag/TriggerDAGForm.tsx | 37 +-
.../src/components/TriggerDag/TriggerDAGModal.tsx | 6 +-
.../ui/src/components/renderStructuredLog.tsx | 2 +-
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 5 +-
.../ui/src/layouts/Details/DetailsLayout.tsx | 6 +-
.../ui/src/layouts/Details/Gantt/utils.test.ts | 261 ++
.../airflow/ui/src/layouts/Details/Gantt/utils.ts | 8 +-
.../ui/src/layouts/Details/Grid/TaskNames.tsx | 19 +-
.../ui/src/pages/Asset/CreateAssetEventModal.tsx | 119 +-
.../Connections/NothingFoundInfo.test.tsx} | 24 +-
.../ui/src/pages/Connections/NothingFoundInfo.tsx | 2 +-
.../src/airflow/ui/src/pages/Dag/Header.test.tsx | 65 +
.../src/airflow/ui/src/pages/Dag/Header.tsx | 36 +-
airflow-core/src/airflow/ui/src/pages/Security.tsx | 12 +
.../ui/src/pages/TaskInstance/ExtraLinks.test.tsx | 124 +
.../ui/src/pages/TaskInstance/ExtraLinks.tsx | 26 +-
.../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 21 +
.../ui/src/pages/TaskInstance/Logs/Logs.tsx | 5 +-
.../TaskInstance/Logs/logDownloadContent.test.ts | 131 +
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 2 +-
.../ui/src/queries/useBulkDeleteConnections.tsx | 4 +-
.../src/airflow/ui/src/queries/useLogs.tsx | 16 +-
airflow-core/src/airflow/ui/src/theme.ts | 20 +-
.../airflow/utils/log/non_caching_file_handler.py | 2 +-
.../auth/middlewares/test_refresh_token.py | 38 +-
.../tests/unit/api_fastapi/common/test_types.py | 31 +-
.../core_api/routes/public/test_assets.py | 53 +
.../core_api/routes/public/test_auth.py | 6 +-
.../core_api/routes/public/test_connections.py | 13 +
.../core_api/routes/public/test_task_instances.py | 4 +-
.../core_api/routes/public/test_tasks.py | 16 +-
.../api_fastapi/core_api/routes/ui/test_config.py | 24 +
.../api_fastapi/core_api/routes/ui/test_dags.py | 25 +
.../core_api/routes/ui/test_dependencies.py | 28 +
.../tests/unit/api_fastapi/core_api/test_app.py | 81 +
.../api_fastapi/execution_api/test_security.py | 26 +-
.../versions/head/test_task_instances.py | 206 ++
airflow-core/tests/unit/core/test_configuration.py | 1 +
airflow-core/tests/unit/core/test_settings.py | 213 ++
.../tests/unit/dag_processing/test_collection.py | 1 +
.../tests/unit/dag_processing/test_manager.py | 155 +-
airflow-core/tests/unit/models/test_connection.py | 50 +
airflow-core/tests/unit/models/test_dag.py | 130 +-
.../tests/unit/models/test_serialized_dag.py | 42 +
.../tests/unit/models/test_taskinstance.py | 75 +
.../airflowctl_tests/test_airflowctl_commands.py | 3 +
airflow-ctl/.pre-commit-config.yaml | 23 +-
airflow-ctl/docs/images/command_hashes.txt | 23 +-
airflow-ctl/docs/images/output_assets.svg | 186 +-
airflow-ctl/docs/images/output_backfill.svg | 122 +-
airflow-ctl/docs/images/output_config.svg | 98 +-
airflow-ctl/docs/images/output_connections.svg | 88 +-
airflow-ctl/docs/images/output_dagrun.svg | 86 +-
airflow-ctl/docs/images/output_dags.svg | 170 +-
airflow-ctl/docs/images/output_jobs.svg | 80 +-
airflow-ctl/docs/images/output_main.svg | 130 +-
airflow-ctl/docs/images/output_plugins.svg | 105 +
airflow-ctl/docs/images/output_pools.svg | 116 +-
airflow-ctl/docs/images/output_providers.svg | 80 +-
airflow-ctl/docs/images/output_variables.svg | 76 +-
.../docs/installation/installing-from-pypi.rst | 34 +-
airflow-ctl/pyproject.toml | 2 +
airflow-ctl/src/airflowctl/api/client.py | 74 +-
.../src/airflowctl/api/datamodels/generated.py | 18 +
airflow-ctl/src/airflowctl/api/operations.py | 56 +-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 27 +-
.../src/airflowctl/ctl/commands/auth_command.py | 6 +-
.../airflowctl/ctl/commands/connection_command.py | 4 +-
.../airflowctl/ctl/commands/variable_command.py | 2 +-
airflow-ctl/src/airflowctl/ctl/help_texts.yaml | 102 +
airflow-ctl/tests/airflow_ctl/api/test_client.py | 37 +-
.../tests/airflow_ctl/api/test_operations.py | 176 +-
.../airflow_ctl/ctl/commands/test_auth_command.py | 18 +
.../ctl/commands/test_connections_command.py | 3 +-
.../ctl/commands/test_variable_command.py | 31 +
.../tests/airflow_ctl/ctl/test_cli_config.py | 115 +
contributing-docs/07_local_virtualenv.rst | 75 +-
contributing-docs/08_static_code_checks.rst | 64 +-
.../13_airflow_dependencies_and_extras.rst | 11 +-
dev/PROJECT_GUIDELINES.md | 1 +
dev/README_RELEASE_AIRFLOW.md | 4 +-
dev/README_RELEASE_AIRFLOWCTL.md | 2 +-
dev/README_RELEASE_PROVIDERS.md | 17 +
dev/README_RELEASE_PYTHON_CLIENT.md | 2 +-
dev/breeze/doc/09_release_management_tasks.rst | 4 +-
.../doc/adr/0001-record-architecture-decisions.md | 1 +
dev/breeze/doc/ci/02_images.md | 2 +-
dev/breeze/doc/images/output_ci_upgrade.svg | 26 +-
dev/breeze/doc/images/output_ci_upgrade.txt | 2 +-
.../src/airflow_breeze/commands/ci_commands.py | 130 +-
.../airflow_breeze/commands/ci_commands_config.py | 2 +-
.../airflow_breeze/commands/developer_commands.py | 8 +
.../commands/kubernetes_commands_config.py | 21 -
.../airflow_breeze/commands/registry_commands.py | 2 +-
.../commands/release_management_commands.py | 2 +-
.../src/airflow_breeze/commands/ui_commands.py | 14 +-
dev/breeze/src/airflow_breeze/global_constants.py | 8 +-
.../airflow_breeze/utils/check_release_files.py | 3 +-
.../utils/constraints_version_check.py | 157 +-
.../src/airflow_breeze/utils/docs_publisher.py | 4 +
dev/breeze/src/airflow_breeze/utils/packages.py | 2 +-
dev/breeze/src/airflow_breeze/utils/run_tests.py | 13 +-
.../src/airflow_breeze/utils/selective_checks.py | 119 +-
dev/breeze/tests/test_packages.py | 4 +-
.../tests/test_pytest_args_for_test_types.py | 1 +
dev/breeze/tests/test_selective_checks.py | 371 +-
dev/breeze/tests/test_ui_commands.py | 51 +
dev/breeze/uv.lock | 464 +--
.../react_plugin_template/package.json | 14 +-
.../react_plugin_template/pnpm-lock.yaml | 551 ++-
devel-common/pyproject.toml | 10 +-
.../src/sphinx_exts/docs_build/package_filter.py | 2 +-
docker-stack-docs/README.md | 10 +-
docker-stack-docs/build-arg-ref.rst | 2 +-
.../customizing/add-build-essential-custom.sh | 2 +-
.../docker-examples/customizing/custom-sources.sh | 2 +-
.../customizing/pypi-dev-runtime-deps.sh | 2 +-
.../customizing/pypi-extras-and-deps.sh | 2 +-
.../customizing/pypi-selected-version.sh | 2 +-
.../extending/add-airflow-configuration/Dockerfile | 2 +-
.../extending/add-apt-packages/Dockerfile | 2 +-
.../add-build-essential-extend/Dockerfile | 2 +-
.../extending/add-providers/Dockerfile | 2 +-
.../add-pypi-packages-constraints/Dockerfile | 2 +-
.../extending/add-pypi-packages-uv/Dockerfile | 2 +-
.../extending/add-pypi-packages/Dockerfile | 2 +-
.../extending/add-requirement-packages/Dockerfile | 2 +-
.../extending/custom-providers/Dockerfile | 2 +-
.../extending/embedding-dags/Dockerfile | 2 +-
.../extending/writable-directory/Dockerfile | 2 +-
.../restricted/restricted_environments.sh | 2 +-
docker-stack-docs/entrypoint.rst | 14 +-
docker-tests/tests/docker_tests/test_prod_image.py | 2 +-
docs/spelling_wordlist.txt | 4 +
generated/PYPI_README.md | 10 +-
providers/opensearch/docs/index.rst | 4 +-
providers/opensearch/docs/logging/index.rst | 22 +
providers/opensearch/provider.yaml | 14 +
providers/opensearch/pyproject.toml | 2 +-
.../src/airflow/providers/opensearch/__init__.py | 4 +-
.../providers/opensearch/get_provider_info.py | 14 +
.../providers/opensearch/log/os_task_handler.py | 399 ++-
.../airflow/providers/opensearch/version_compat.py | 2 +
.../opensearch}/tests/integration/__init__.py | 0
.../tests/integration/opensearch}/__init__.py | 0
.../tests/integration/opensearch/log}/__init__.py | 0
.../opensearch/log/test_os_remote_log_io.py} | 79 +-
.../opensearch/tests/unit/opensearch/conftest.py | 49 -
.../unit/opensearch/log/test_os_task_handler.py | 913 ++---
pyproject.toml | 284 +-
reproducible_build.yaml | 4 +-
scripts/ci/analyze_e2e_flaky_tests.py | 9 +-
scripts/ci/docker-compose/remove-sources.yml | 6 +-
.../ci/prek/check_airflowctl_command_coverage.py | 34 +-
scripts/ci/prek/check_airflowctl_help_texts.py | 87 +
scripts/ci/prek/check_extra_packages_ref.py | 2 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
.../ci/prek/check_new_airflow_exception_usage.py | 265 ++
scripts/ci/prek/check_security_doc_constants.py | 427 +++
.../prek/check_shared_distributions_structure.py | 2 +-
.../ci/prek/check_shared_distributions_usage.py | 2 +-
scripts/ci/prek/check_version_consistency.py | 2 +-
scripts/ci/prek/common_prek_utils.py | 61 +-
scripts/ci/prek/known_airflow_exceptions.txt | 432 +++
scripts/ci/prek/mypy_local_folder.py | 223 ++
scripts/ci/prek/ruff_format.py | 2 +-
scripts/ci/prek/supported_versions.py | 2 +-
scripts/ci/prek/update_airflow_pyproject_toml.py | 45 +-
scripts/ci/prek/update_providers_dependencies.py | 2 +-
scripts/ci/prek/upgrade_important_versions.py | 16 +-
scripts/ci/slack_notification_state.py | 5 +
scripts/docker/install_os_dependencies.sh | 30 +
.../in_container/install_airflow_and_providers.py | 7 +-
.../in_container/run_capture_airflowctl_help.py | 1 +
scripts/in_container/run_generate_constraints.py | 45 +-
scripts/tests/ci/prek/test_common_prek_utils.py | 14 +
scripts/tests/ci/test_analyze_e2e_flaky_tests.py | 13 +
scripts/tests/ci/test_slack_notification_state.py | 71 +
scripts/tools/initialize_virtualenv.py | 24 +-
scripts/tools/setup_breeze | 2 +-
.../src/airflow_shared/configuration/parser.py | 1 +
.../src/airflow_shared/logging/structlog.py | 39 +-
shared/logging/tests/logging/test_structlog.py | 75 +
.../observability/metrics/otel_logger.py | 16 +
.../observability/metrics/test_otel_logger.py | 43 +
task-sdk/.pre-commit-config.yaml | 10 +-
task-sdk/src/airflow/sdk/__init__.py | 2 +-
task-sdk/src/airflow/sdk/_shared/AGENTS.md | 2 +-
task-sdk/src/airflow/sdk/bases/decorator.py | 8 +
task-sdk/src/airflow/sdk/configuration.py | 10 +-
task-sdk/src/airflow/sdk/execution_time/comms.py | 2 +-
.../src/airflow/sdk/execution_time/supervisor.py | 2 +-
task-sdk/src/airflow/sdk/plugins_manager.py | 2 +-
task-sdk/tests/task_sdk/bases/test_decorator.py | 33 +
.../tests/task_sdk/execution_time/test_comms.py | 49 +-
task-sdk/tests/task_sdk/test_configuration.py | 30 +-
uv.lock | 3602 ++++++++++----------
310 files changed, 13800 insertions(+), 5176 deletions(-)
copy scripts/ci/docker-compose/debug-ports.yml =>
.github/workflows/scheduled-upgrade-check-main.yml (65%)
copy .github/{zizmor.yml => workflows/scheduled-upgrade-check-v3-2-test.yml}
(63%)
create mode 100644 .github/workflows/scheduled-verify-release-calendar.yml
create mode 100644 .github/workflows/upgrade-check.yml
create mode 100644 airflow-core/docs/security/jwt_token_authentication.rst
create mode 100644 airflow-core/newsfragments/64552.improvement.rst
create mode 100644 airflow-core/newsfragments/64822.significant.rst
copy airflow-core/src/airflow/ui/src/components/{ui/ActionBar/index.ts =>
DagDeactivatedBadge.tsx} (75%)
create mode 100644
airflow-core/src/airflow/ui/src/components/DagVersionSelect.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts
copy airflow-core/src/airflow/ui/src/{utils/ChakraWrapper.test.tsx =>
pages/Connections/NothingFoundInfo.test.tsx} (63%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Header.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstance/ExtraLinks.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/logDownloadContent.test.ts
create mode 100644 airflow-ctl/docs/images/output_plugins.svg
create mode 100644 airflow-ctl/src/airflowctl/ctl/help_texts.yaml
copy {airflow-core => providers/opensearch}/tests/integration/__init__.py
(100%)
copy {airflow-core/src/airflow/_shared =>
providers/opensearch/tests/integration/opensearch}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/opensearch/tests/integration/opensearch/log}/__init__.py (100%)
copy
providers/{elasticsearch/tests/integration/elasticsearch/log/test_es_remote_log_io.py
=> opensearch/tests/integration/opensearch/log/test_os_remote_log_io.py} (53%)
create mode 100755 scripts/ci/prek/check_airflowctl_help_texts.py
create mode 100755 scripts/ci/prek/check_new_airflow_exception_usage.py
create mode 100755 scripts/ci/prek/check_security_doc_constants.py
create mode 100644 scripts/ci/prek/known_airflow_exceptions.txt
create mode 100755 scripts/ci/prek/mypy_local_folder.py
create mode 100644 scripts/tests/ci/test_slack_notification_state.py