This is an automated email from the ASF dual-hosted git repository.
vikramkoka pushed a change to branch aip99_example
in repository https://gitbox.apache.org/repos/asf/airflow.git
from 6d60bff29b8 Interactive LLM example based on the Airflow survey data
add 91270c76da1 Bump `google-cloud-aiplatform[evaluation]>=1.145.0`
(#64786)
add 8c0e5354660 Add `EksPodTrigger` (#64187)
add d53a7ad5c7e CI: Upgrade important CI environment (#64813)
add c2f83ea7c97 Add OpenLineage parent and transport info injection to
`EmrServerlessStartJobOperator` (#64807)
add d5bd2af0a1e Remove dependabot alarms in edge provider plugin (#64788)
add 4b0e876b470 feat: add `write_to_os` writing task logs to opensearch
(#64364)
add 9b3ed326f1c Add cooldown parameter to constraints-version-check
command (#64844)
add dd0ff5ad8d2 Replace upgrade-check build failure with scheduled upgrade
PR workflow (#64836)
add 0a03b4e87db Docs: Add JWT authentication docs and strengthen security
model (#64760)
add bf8de7f97b2 Chart: Default airflow version to 3.2.0 (#64841)
add a06896fe1de Allow UI theme config without tokens (CSS-only or empty
fallback) (#64552)
add 0b2efb99e6f Fix Gantt view "Error invalid date" on running DagRun
(#64752)
add 545baf44bae fix(ui): prevent duplicate nav sidebar when iframe
navigates away from auth pages (#63873)
add da38bd616df Remove dependabot alarms in fab provider npm dependencies
(#64789)
add d9baf3e96b1 Add uv.lock conflict resolution instructions (#64848)
add 8c1d4cc5abf Add workers.celery.waitForMigrations section (#62054)
add 8b03304883c Fix list-envs auth status for env names containing .json
(#64677)
add 063e4829323 Add missing custom command in airflowctl integration tests
(#64795)
add fc315f3d77f Incorrect fallback logic (#64586)
add cacc2eb8dca Add exclude-newer-package=false for all workspace
components in uv config (#64859)
add a02fbaa00cc fix(DagCalendarTab): improve background color retrieval
and loading overlay handling (#64189)
add 59ddf5698ab Add workers.celery.serviceAccount &
workers.kubernetes.serviceAccount (#64730)
add 1f0709c8961 Docs: Add gh pr create example to provider release
instructions (#64865)
add 15faf7eadfa Airflow 3.2.0 has been released (#64839)
add 93552c2bcb5 Bugfix/skip commit checks on automated ci upgrades (#64856)
add c68d1027048 Add workers.celery.hpa (#64734)
add f00a6769ec0 Fix ruff on client-py (#64868)
add f431a3eba7b Prepare providers release 2026-04-07 (#64864)
add 1d679538f21 Move "Free up disk space" step into
prepare_breeze_and_image action (#64872)
add 9096d072030 Fix RST syntax error in SSH provider changelog (#64881)
add 4a499ad4241 Fix spelling issues in ssh (#64883)
add aaab2be5ca9 Fix OpenLineage SQL utils emitting duplicate datasets for
tables in multiple schemas (#64622)
add 47ce5f32b4f Add Ipregistry to INTHEWILD.md (#61955)
add 40902de7e7d Skip newsfragment check on label events to avoid approval
requirement (#64901)
add bdc2747cc41 feat: Add dagrun partition info to OpenLineage events
(#64897)
add 4d75f0ad93b fix(ui): cancel debounce on clear to prevent stale search
value (#64893)
add bc26d6b135d (squashed) adds Vespa provider (#63988)
add c35d1d77fa2 Add workers.celery.affinity & workers.kubernetes.affinity
(#64860)
add 26a700fc7ad docs: remove outdated reference to Dag Dependencies view
(#64787)
add e62a12d06f8 Fix CARGO_HOME location for airflow user builds (#64899)
add 11a0aa8a36d open task group when navigating via group name; preserve
arrow toggl… (#64284)
add 44708bdb2a3 [main] CI: Upgrade important CI environment (#64912)
add 27258d56788 Speed up cleanup_python_generated_files by skipping
irrelevant dirs (#64927)
add 636213e7d33 Add workers.celery.extraContainers &
workers.kubernetes.extraContainers (#64739)
add 06101dc5daa Fix broken RST link in New PMC Member Onboarding steps
(#64934)
add 666879c6735 fix(migrations): move UPDATEs inside disable_sqlite_fkeys
in migration 0097 (#64876)
add 6fd0142229e Fix elasticsearch provider to use SDK imports for Airflow
3.2+ (#64931)
add 3ac0d74db71 Fix read out-of-order issue with send method in
CommsDecoder (#64894)
add f089b5b2e93 Fix trigger template rendering failure when operator
template_fields differ from trigger attributes (#64715)
add 1171c9b397f Fix broken markdown links in boring-cyborg first PR
welcome comment (#64937)
add 1ffd2da4fbe Update python client version/changelog for 3.2.0 release
(#64951)
add a06082660ed fix bulk connection delete banner (#64735)
add a42955b8816 Update accepting provider guide with more examples (#64958)
add 7efa37252e1 Update gen ai batch api system test (#64964)
add f4f48b9abfb Add vault data layer for auto-triage (#64590)
add 35d76bc147b UI: Implement automatic link target detection for
extra_links (#64404)
add 645413bc845 Hide legacy sql connection (#64923)
add 6f56aa1fe0a build(prek-hook): Check whether new "raise
AirflowException" is added (#55416)
add 52c4d32c0c0 Add workers.celery.extraInitContainers &
workers.kubernetes.extraInitContainers (#64741)
add 220ba208844 Fix broken pytest/main after PR 64923 (#64978)
add 431c40ba13d Remove AirflowException from Edge Example Dag (#64975)
add ee27b294c50 Improve auto-triage TUI: vault fallback, check TTL,
search, review questions (#64969)
add bcb489c8880 add more debugging logs when emr_eks system tests fail
(#64817)
add 7348e09bed6 Remove unused/dead code in migration utils (#64947)
add bfa22c05a82 Added plugins command to airflowctl (#64935)
add 9465591c0f6 feat: restore os provider on core library (#64764)
add 8418e1320d2 Fix release check tooling for providers (#64920)
add 7bbd8a79283 Breeze: Show local reproduction commands in all breeze CI
steps (#63901)
add e25114571ec Bump axios from 1.13.6 to 1.15.0 in
/airflow-core/src/airflow/ui (#65005)
add cd851646fba Expose queueing/scheduled time in the Gantt Chart (#63372)
add e55d90f0692 fix(glue): Fix GlueJobOperator verbose logs not showing in
deferrable mode (#64342)
add 6cbf4c8bc41 Add workers.celery.extraVolumes &
workers.kubernetes.extraVolumes (#64746)
add 17c4db97c4e Bump axios in
/providers/edge3/src/airflow/providers/edge3/plugins/www (#65004)
add 34497e5f3c6 fix the bulk (#65015)
add 74283fb2a86 Add FAQ entry for API server memory growth with gunicorn
worker recycling (#65036)
add 3ce9681214d Add v3-2-stable branch protection for Airflow 3.2.0
release (#65038)
add 2c9f34cf778 Fix HITL review plugin crash on Airflow < 3.1 due to
unconditional im… (#64981)
add d5cbfe52e78 Add workers.celery.tolerations &
workers.kubernetes.tolerations (#64976)
add d212f624cf4 Sync default image Python version references (#64994)
add 99e5127f6d5 add ttlSecondsAfterFinished to databaseCleanup job (#64164)
add 7d3364b22f3 Validate operator arg types at decoration time in @task
decorator (#65041)
add 511af0a7dd5 Add workers.celery.topologySpreadConstraints &
workers.kubernetes.topologySpreadConstraints (#64980)
add 3564d44ee3d Add workers.celery.annotations field (#64982)
add cbcd5636f07 Fixed incorrect image path for helm/core issues in breeze
docs (#65060)
add 6d02bae165d fix: update dependencies to fix dependabot alarms in
registry (#65051)
add 4ecbd59c0be Fix missing dag_id in get_task_instance (#64957) (#64968)
add 8a02c43dcb7 Add workers.celery.podAnnotations &
workers.kubernetes.podAnnotations (#65027)
add 7c633b6f8f6 Fix RESOURCE_ASSET compatibility with Airflow 2.x in
common-compat (#64933)
add 9e92ac9e46f Fix stale system test documentation links (#65071)
add 8ff744f7e4a Fix opensearch provider to use SDK imports for Airflow
3.2+ (#65076)
add 88eccf4e939 Add workers.celery.extraVolumeMounts &
workers.kubernetes.extraVolumeMounts (#65059)
add 3a458dea5e9 [Helm]Support tpl rendering in ServiceAccount annotations,
metadataConnection, and config ConfigMap names (#64763)
add 9f8678a3efc Fix CLI error handling and exit codes for failed commands
(#65052)
add 556380f86e4 Add workers.celery.logGroomerSidecar section (#65033)
add 30c170e6748 add yaml-based help texts for auto-generated airflowctl
commands (#65073)
add 6ef5165a2b6 fix(cli): change is_alive default to None in jobs list
(#65065)
add f13b71371da Trigger unit tests when only shared/*.py files change
(#64999)
add eae5f754463 Prevent path traversal via AIRFLOW_CLI_ENVIRONMENT in
airflowctl (#64618)
add 6a63b1e1c6b Fix publishing failure when new providers are added to
main (#65093)
add 2ebfc0ed762 Update providers metadata 2026-04-12 (#65102)
add 977c119a050 Add workers.celery.labels & workers.kubernetes.labels
(#65030)
add 4c0535857bc Generate JWT Secret of recommended length (#65082)
add b24538b0bc3 Added breeze generate issue content for airflow-ctl
(#65042)
add 0ecfcee859b Add workers.celery.env & workers.kubernetes.env (#65056)
add 0c023531d0c Prepare providers release 2026-04-12 (#65106)
add 93c1d17741b Interactive LLM example based on the Airflow survey data
add 152d3f4cdec Add scheduled variant and schema validation to survey
analysis example
add 7521c04d049 Merge branch 'aip99_example' of
https://github.com/apache/airflow into aip99_example
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 5 +
.github/CODEOWNERS | 1 +
.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml | 1 +
.../actions/prepare_breeze_and_image/action.yml | 3 +
.github/boring-cyborg.yml | 5 +-
.github/instructions/code-review.instructions.md | 2 +-
.github/workflows/basic-tests.yml | 83 --
.github/workflows/check-newsfragment-pr-number.yml | 2 +-
.github/workflows/ci-amd-arm.yml | 3 -
.github/workflows/k8s-tests.yml | 3 -
.../workflows/scheduled-upgrade-check-main.yml | 27 +-
.../scheduled-upgrade-check-v3-2-test.yml} | 21 +-
.github/workflows/test-providers.yml | 6 -
.github/workflows/upgrade-check.yml | 125 ++
.pre-commit-config.yaml | 8 +-
AGENTS.md | 33 +-
COMMITTERS.rst | 2 +-
Dockerfile | 6 +-
Dockerfile.ci | 4 +-
INTHEWILD.md | 1 +
README.md | 26 +-
RELEASE_NOTES.rst | 649 ++++++++++
airflow-core/.pre-commit-config.yaml | 10 +
.../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/extra-packages-ref.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 +
.../src/airflow/api_fastapi/common/types.py | 8 +-
.../api_fastapi/core_api/datamodels/ui/config.py | 10 +
.../api_fastapi/core_api/datamodels/ui/gantt.py | 2 +
.../api_fastapi/core_api/openapi/_private_ui.yaml | 99 +-
.../api_fastapi/core_api/routes/ui/gantt.py | 6 +
.../config_templates/airflow_local_settings.py | 44 +-
.../src/airflow/config_templates/config.yml | 10 +-
airflow-core/src/airflow/migrations/utils.py | 246 ----
..._enforce_log_event_and_dag_is_stale_not_null.py | 9 +-
airflow-core/src/airflow/models/taskinstance.py | 1 +
airflow-core/src/airflow/triggers/base.py | 23 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 135 ++-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 28 +-
airflow-core/src/airflow/ui/package.json | 2 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 27 +-
.../airflow/ui/src/components/SearchBar.test.tsx | 42 +-
.../src/airflow/ui/src/components/SearchBar.tsx | 10 +-
.../ui/src/layouts/Details/Gantt/utils.test.ts | 350 ++++++
.../airflow/ui/src/layouts/Details/Gantt/utils.ts | 58 +-
.../ui/src/layouts/Details/Grid/TaskNames.tsx | 19 +-
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/queries/useBulkDeleteConnections.tsx | 4 +-
airflow-core/src/airflow/ui/src/theme.ts | 20 +-
.../airflow/ui/tests/e2e/pages/DagCalendarTab.ts | 52 +-
airflow-core/tests/system/example_empty.py | 2 +-
.../tests/unit/api_fastapi/common/test_types.py | 31 +-
.../api_fastapi/core_api/routes/ui/test_config.py | 24 +
.../api_fastapi/core_api/routes/ui/test_gantt.py | 24 +
airflow-core/tests/unit/core/test_configuration.py | 1 +
.../tests/unit/models/test_taskinstance.py | 75 ++
.../tests/unit/triggers/test_base_trigger.py | 71 ++
.../airflowctl_tests/test_airflowctl_commands.py | 23 +-
airflow-ctl/.pre-commit-config.yaml | 9 +
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 +-
airflow-ctl/src/airflowctl/api/client.py | 74 +-
airflow-ctl/src/airflowctl/api/operations.py | 32 +-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 27 +-
.../src/airflowctl/ctl/commands/auth_command.py | 6 +-
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 | 85 ++
.../airflow_ctl/ctl/commands/test_auth_command.py | 18 +
.../tests/airflow_ctl/ctl/test_cli_config.py | 115 ++
chart/Chart.yaml | 20 +-
chart/docs/customizing-labels.rst | 7 +-
chart/docs/production-guide.rst | 11 +
chart/docs/setting-resources-for-containers.rst | 2 +-
chart/docs/using-additional-containers.rst | 16 +-
chart/files/pod-template-file.kubernetes-helm-yaml | 42 +-
chart/newsfragments/62054.significant.rst | 1 +
chart/newsfragments/64730.significant.rst | 1 +
chart/newsfragments/64734.significant.rst | 1 +
chart/newsfragments/64739.significant.rst | 1 +
chart/newsfragments/64741.significant.rst | 1 +
chart/newsfragments/64746.significant.rst | 1 +
chart/newsfragments/64841.significant.rst | 3 +
chart/newsfragments/64860.significant.rst | 1 +
chart/newsfragments/64976.significant.rst | 1 +
chart/newsfragments/64980.significant.rst | 1 +
chart/newsfragments/64982.significant.rst | 1 +
chart/newsfragments/65027.significant.rst | 1 +
chart/newsfragments/65030.significant.rst | 1 +
chart/newsfragments/65033.significant.rst | 1 +
chart/newsfragments/65056.significant.rst | 1 +
chart/newsfragments/65059.significant.rst | 1 +
chart/templates/NOTES.txt | 280 +++++
chart/templates/_helpers.yaml | 55 +-
.../api-server/api-server-serviceaccount.yaml | 3 +-
.../dag-processor-serviceaccount.yaml | 3 +-
.../database-cleanup/database-cleanup-cronjob.yaml | 3 +
.../pgbouncer/pgbouncer-serviceaccount.yaml | 3 +-
.../scheduler/scheduler-serviceaccount.yaml | 4 +-
chart/templates/secrets/jwt-secret.yaml | 2 +-
.../secrets/metadata-connection-secret.yaml | 9 +-
.../triggerer/triggerer-serviceaccount.yaml | 3 +-
.../webserver/webserver-serviceaccount.yaml | 3 +-
chart/templates/workers/worker-deployment.yaml | 4 +-
.../worker-kubernetes-serviceaccount.yaml} | 24 +-
chart/templates/workers/worker-serviceaccount.yaml | 3 +-
chart/values.schema.json | 1006 ++++++++++++++--
chart/values.yaml | 385 +++++-
clients/python/CHANGELOG.md | 47 +
clients/python/version.txt | 2 +-
contributing-docs/10_working_with_git.rst | 7 +-
contributing-docs/12_provider_distributions.rst | 2 +-
contributing-docs/testing/system_tests.rst | 6 +-
dev/README_RELEASE_PROVIDERS.md | 17 +
dev/breeze/doc/09_release_management_tasks.rst | 14 +-
dev/breeze/doc/images/output_build-docs.svg | 2 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
dev/breeze/doc/images/output_ci_upgrade.svg | 68 +-
dev/breeze/doc/images/output_ci_upgrade.txt | 2 +-
dev/breeze/doc/images/output_pr_auto-triage.svg | 12 +-
dev/breeze/doc/images/output_pr_auto-triage.txt | 2 +-
.../doc/images/output_release-management.svg | 42 +-
.../doc/images/output_release-management.txt | 2 +-
...tput_release-management_add-back-references.svg | 2 +-
...tput_release-management_add-back-references.txt | 2 +-
...elease-management_constraints-version-check.svg | 32 +-
...elease-management_constraints-version-check.txt | 2 +-
...nagement_generate-issue-content-airflow-ctl.svg | 134 ++
...nagement_generate-issue-content-airflow-ctl.txt | 1 +
...management_generate-issue-content-providers.svg | 2 +-
...management_generate-issue-content-providers.txt | 2 +-
...ease-management_generate-providers-metadata.svg | 2 +-
...ease-management_generate-providers-metadata.txt | 2 +-
...e-management_prepare-provider-distributions.svg | 2 +-
...e-management_prepare-provider-distributions.txt | 2 +-
...e-management_prepare-provider-documentation.svg | 2 +-
...e-management_prepare-provider-documentation.txt | 2 +-
.../output_release-management_publish-docs.svg | 2 +-
.../output_release-management_publish-docs.txt | 2 +-
...output_sbom_generate-providers-requirements.svg | 2 +-
...output_sbom_generate-providers-requirements.txt | 2 +-
.../output_setup_check-all-params-in-groups.svg | 4 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 72 +-
.../output_setup_regenerate-command-images.txt | 2 +-
.../images/output_workflow-run_publish-docs.svg | 2 +-
.../images/output_workflow-run_publish-docs.txt | 2 +-
.../src/airflow_breeze/commands/ci_commands.py | 113 +-
.../airflow_breeze/commands/ci_commands_config.py | 1 +
.../src/airflow_breeze/commands/pr_commands.py | 117 +-
.../commands/release_management_commands.py | 76 +-
.../commands/release_management_commands_config.py | 17 +-
dev/breeze/src/airflow_breeze/global_constants.py | 10 +-
.../airflow_breeze/utils/check_release_files.py | 3 +-
dev/breeze/src/airflow_breeze/utils/click_utils.py | 28 +-
.../utils/constraints_version_check.py | 43 +-
.../src/airflow_breeze/utils/docs_publisher.py | 4 +
dev/breeze/src/airflow_breeze/utils/llm_utils.py | 15 +-
dev/breeze/src/airflow_breeze/utils/path_utils.py | 36 +-
dev/breeze/src/airflow_breeze/utils/pr_cache.py | 43 +-
dev/breeze/src/airflow_breeze/utils/pr_vault.py | 210 ++++
.../src/airflow_breeze/utils/reproduce_ci.py | 239 ++++
.../src/airflow_breeze/utils/selective_checks.py | 1 +
dev/breeze/src/airflow_breeze/utils/tui_display.py | 26 +-
dev/breeze/tests/test_author_cache.py | 80 ++
dev/breeze/tests/test_cache_validation.py | 117 ++
dev/breeze/tests/test_pr_vault.py | 253 ++++
.../tests/test_pytest_args_for_test_types.py | 1 +
dev/breeze/tests/test_reproduce_ci.py | 432 +++++++
dev/breeze/tests/test_selective_checks.py | 10 +
dev/breeze/uv.lock | 50 +-
devel-common/pyproject.toml | 2 +-
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 +-
.../restricted/restricted_environments.sh | 2 +-
docs/spelling_wordlist.txt | 11 +
generated/PYPI_README.md | 24 +-
generated/provider_metadata.json | 612 ++++++++--
helm-tests/tests/chart_utils/log_groomer.py | 145 ++-
.../helm_tests/airflow_aux/test_annotations.py | 384 ++++--
.../airflow_aux/test_basic_helm_chart.py | 7 +
.../airflow_aux/test_container_lifecycle.py | 71 +-
.../airflow_aux/test_database_cleanup.py | 26 +
.../airflow_aux/test_pod_template_file.py | 483 ++++++--
.../helm_tests/airflow_core/test_pdb_worker.py | 31 +-
.../tests/helm_tests/airflow_core/test_worker.py | 1274 +++++++++++++++-----
.../helm_tests/airflow_core/test_worker_sets.py | 544 +++++++--
helm-tests/tests/helm_tests/other/test_hpa.py | 140 ++-
.../security/test_metadata_connection_secret.py | 40 +
.../helm_tests/security/test_security_context.py | 75 +-
providers/.last_release_date.txt | 2 +-
providers/ACCEPTING_PROVIDERS.rst | 11 +-
providers/airbyte/README.rst | 6 +-
providers/airbyte/docs/changelog.rst | 11 +
providers/airbyte/docs/index.rst | 6 +-
providers/airbyte/provider.yaml | 3 +-
providers/airbyte/pyproject.toml | 6 +-
.../src/airflow/providers/airbyte/__init__.py | 2 +-
.../system/airbyte/example_airbyte_trigger_job.py | 2 +-
providers/alibaba/README.rst | 17 +-
providers/alibaba/docs/changelog.rst | 14 +
providers/alibaba/docs/index.rst | 6 +-
providers/alibaba/provider.yaml | 3 +-
providers/alibaba/pyproject.toml | 6 +-
.../src/airflow/providers/alibaba/__init__.py | 2 +-
.../system/alibaba/example_adb_spark_batch.py | 2 +-
.../tests/system/alibaba/example_adb_spark_sql.py | 2 +-
.../tests/system/alibaba/example_maxcompute_sql.py | 2 +-
.../tests/system/alibaba/example_oss_bucket.py | 2 +-
.../tests/system/alibaba/example_oss_object.py | 2 +-
providers/amazon/README.rst | 11 +-
providers/amazon/docs/changelog.rst | 38 +
providers/amazon/docs/index.rst | 8 +-
providers/amazon/provider.yaml | 3 +-
providers/amazon/pyproject.toml | 8 +-
.../src/airflow/providers/amazon/__init__.py | 2 +-
.../src/airflow/providers/amazon/aws/hooks/glue.py | 36 +-
.../airflow/providers/amazon/aws/operators/eks.py | 77 ++
.../airflow/providers/amazon/aws/operators/emr.py | 37 +-
.../airflow/providers/amazon/aws/triggers/eks.py | 130 ++
.../airflow/providers/amazon/aws/triggers/glue.py | 135 ++-
.../amazon/tests/system/amazon/CONTRIBUTING.md | 2 +-
.../tests/system/amazon/aws/example_appflow.py | 2 +-
.../tests/system/amazon/aws/example_appflow_run.py | 2 +-
.../tests/system/amazon/aws/example_athena.py | 2 +-
.../system/amazon/aws/example_azure_blob_to_s3.py | 2 +-
.../tests/system/amazon/aws/example_batch.py | 2 +-
.../tests/system/amazon/aws/example_bedrock.py | 2 +-
.../amazon/aws/example_bedrock_batch_inference.py | 2 +-
.../aws/example_bedrock_retrieve_and_generate.py | 2 +-
.../system/amazon/aws/example_cloudformation.py | 2 +-
.../tests/system/amazon/aws/example_comprehend.py | 2 +-
.../aws/example_comprehend_document_classifier.py | 2 +-
.../tests/system/amazon/aws/example_datasync.py | 2 +-
.../amazon/tests/system/amazon/aws/example_dms.py | 2 +-
.../system/amazon/aws/example_dms_serverless.py | 2 +-
.../tests/system/amazon/aws/example_dynamodb.py | 2 +-
.../system/amazon/aws/example_dynamodb_to_s3.py | 2 +-
.../amazon/tests/system/amazon/aws/example_ec2.py | 2 +-
.../amazon/tests/system/amazon/aws/example_ecs.py | 2 +-
.../tests/system/amazon/aws/example_ecs_fargate.py | 2 +-
.../system/amazon/aws/example_eks_templated.py | 2 +-
.../aws/example_eks_with_fargate_in_one_step.py | 2 +-
.../amazon/aws/example_eks_with_fargate_profile.py | 2 +-
.../aws/example_eks_with_nodegroup_in_one_step.py | 2 +-
.../amazon/aws/example_eks_with_nodegroups.py | 2 +-
.../amazon/tests/system/amazon/aws/example_emr.py | 2 +-
.../tests/system/amazon/aws/example_emr_eks.py | 8 +-
.../amazon/aws/example_emr_notebook_execution.py | 2 +-
.../system/amazon/aws/example_emr_serverless.py | 2 +-
.../tests/system/amazon/aws/example_eventbridge.py | 2 +-
.../tests/system/amazon/aws/example_ftp_to_s3.py | 2 +-
.../tests/system/amazon/aws/example_gcs_to_s3.py | 2 +-
.../system/amazon/aws/example_glacier_to_gcs.py | 2 +-
.../amazon/tests/system/amazon/aws/example_glue.py | 2 +-
.../system/amazon/aws/example_glue_data_quality.py | 2 +-
...xample_glue_data_quality_with_recommendation.py | 2 +-
.../system/amazon/aws/example_glue_databrew.py | 2 +-
.../amazon/aws/example_google_api_sheets_to_s3.py | 2 +-
.../amazon/aws/example_google_api_youtube_to_s3.py | 2 +-
.../system/amazon/aws/example_hive_to_dynamodb.py | 2 +-
.../tests/system/amazon/aws/example_http_to_s3.py | 2 +-
.../amazon/aws/example_imap_attachment_to_s3.py | 2 +-
.../system/amazon/aws/example_kinesis_analytics.py | 2 +-
.../tests/system/amazon/aws/example_lambda.py | 2 +-
.../tests/system/amazon/aws/example_local_to_s3.py | 2 +-
.../tests/system/amazon/aws/example_mongo_to_s3.py | 2 +-
.../amazon/tests/system/amazon/aws/example_mwaa.py | 2 +-
.../system/amazon/aws/example_mwaa_airflow2.py | 2 +-
.../tests/system/amazon/aws/example_neptune.py | 2 +-
.../tests/system/amazon/aws/example_quicksight.py | 2 +-
.../tests/system/amazon/aws/example_rds_event.py | 2 +-
.../tests/system/amazon/aws/example_rds_export.py | 2 +-
.../system/amazon/aws/example_rds_instance.py | 2 +-
.../system/amazon/aws/example_rds_snapshot.py | 2 +-
.../tests/system/amazon/aws/example_redshift.py | 2 +-
.../amazon/aws/example_redshift_s3_transfers.py | 2 +-
.../amazon/tests/system/amazon/aws/example_s3.py | 2 +-
.../system/amazon/aws/example_s3_to_dynamodb.py | 2 +-
.../tests/system/amazon/aws/example_s3_to_ftp.py | 2 +-
.../tests/system/amazon/aws/example_s3_to_sftp.py | 2 +-
.../tests/system/amazon/aws/example_s3_to_sql.py | 2 +-
.../tests/system/amazon/aws/example_sagemaker.py | 2 +-
.../amazon/aws/example_sagemaker_condition.py | 2 +-
.../amazon/aws/example_sagemaker_endpoint.py | 2 +-
.../amazon/aws/example_sagemaker_notebook.py | 2 +-
.../amazon/aws/example_sagemaker_pipeline.py | 2 +-
.../amazon/aws/example_sagemaker_unified_studio.py | 2 +-
.../system/amazon/aws/example_salesforce_to_s3.py | 2 +-
.../amazon/tests/system/amazon/aws/example_ses.py | 2 +-
.../tests/system/amazon/aws/example_sftp_to_s3.py | 2 +-
.../amazon/tests/system/amazon/aws/example_sns.py | 2 +-
.../tests/system/amazon/aws/example_sql_to_s3.py | 2 +-
.../amazon/tests/system/amazon/aws/example_sqs.py | 2 +-
.../amazon/tests/system/amazon/aws/example_ssm.py | 2 +-
.../system/amazon/aws/example_step_functions.py | 2 +-
.../amazon/tests/system/amazon/aws/utils/k8s.py | 38 +-
.../tests/unit/amazon/aws/operators/test_eks.py | 58 +
.../amazon/aws/operators/test_emr_serverless.py | 221 ++++
.../tests/unit/amazon/aws/triggers/test_eks.py | 128 +-
.../tests/unit/amazon/aws/triggers/test_glue.py | 245 ++++
.../beam/tests/system/apache/beam/example_beam.py | 2 +-
.../system/apache/beam/example_beam_java_flink.py | 2 +-
.../system/apache/beam/example_beam_java_spark.py | 2 +-
.../beam/tests/system/apache/beam/example_go.py | 2 +-
.../system/apache/beam/example_go_dataflow.py | 2 +-
.../system/apache/beam/example_java_dataflow.py | 2 +-
.../tests/system/apache/beam/example_python.py | 2 +-
.../system/apache/beam/example_python_async.py | 2 +-
.../system/apache/beam/example_python_dataflow.py | 2 +-
providers/apache/cassandra/README.rst | 6 +-
providers/apache/cassandra/docs/changelog.rst | 11 +
providers/apache/cassandra/docs/index.rst | 6 +-
providers/apache/cassandra/provider.yaml | 3 +-
providers/apache/cassandra/pyproject.toml | 6 +-
.../airflow/providers/apache/cassandra/__init__.py | 2 +-
.../apache/cassandra/example_cassandra_dag.py | 2 +-
providers/apache/drill/README.rst | 6 +-
providers/apache/drill/docs/changelog.rst | 11 +
providers/apache/drill/docs/index.rst | 6 +-
providers/apache/drill/provider.yaml | 3 +-
providers/apache/drill/pyproject.toml | 6 +-
.../src/airflow/providers/apache/drill/__init__.py | 2 +-
.../tests/system/apache/drill/example_drill_dag.py | 2 +-
providers/apache/druid/README.rst | 6 +-
providers/apache/druid/docs/changelog.rst | 11 +
providers/apache/druid/docs/index.rst | 6 +-
providers/apache/druid/provider.yaml | 3 +-
providers/apache/druid/pyproject.toml | 6 +-
.../src/airflow/providers/apache/druid/__init__.py | 2 +-
.../tests/system/apache/druid/example_druid_dag.py | 2 +-
providers/apache/hdfs/README.rst | 6 +-
providers/apache/hdfs/docs/changelog.rst | 12 +
providers/apache/hdfs/docs/index.rst | 6 +-
providers/apache/hdfs/provider.yaml | 3 +-
providers/apache/hdfs/pyproject.toml | 6 +-
.../src/airflow/providers/apache/hdfs/__init__.py | 2 +-
providers/apache/hive/README.rst | 6 +-
providers/apache/hive/docs/changelog.rst | 11 +
providers/apache/hive/docs/index.rst | 6 +-
providers/apache/hive/provider.yaml | 3 +-
providers/apache/hive/pyproject.toml | 6 +-
.../src/airflow/providers/apache/hive/__init__.py | 2 +-
.../hive/tests/system/apache/hive/example_hive.py | 2 +-
.../system/apache/hive/example_twitter_dag.py | 2 +-
providers/apache/iceberg/README.rst | 6 +-
providers/apache/iceberg/docs/changelog.rst | 11 +
providers/apache/iceberg/docs/index.rst | 6 +-
providers/apache/iceberg/provider.yaml | 3 +-
providers/apache/iceberg/pyproject.toml | 6 +-
.../airflow/providers/apache/iceberg/__init__.py | 2 +-
.../tests/system/apache/iceberg/example_iceberg.py | 2 +-
providers/apache/impala/README.rst | 6 +-
providers/apache/impala/docs/changelog.rst | 11 +
providers/apache/impala/docs/index.rst | 6 +-
providers/apache/impala/provider.yaml | 3 +-
providers/apache/impala/pyproject.toml | 6 +-
.../airflow/providers/apache/impala/__init__.py | 2 +-
.../tests/system/apache/impala/example_impala.py | 2 +-
providers/apache/kafka/README.rst | 6 +-
providers/apache/kafka/docs/changelog.rst | 11 +
providers/apache/kafka/docs/index.rst | 6 +-
providers/apache/kafka/provider.yaml | 3 +-
providers/apache/kafka/pyproject.toml | 6 +-
.../src/airflow/providers/apache/kafka/__init__.py | 2 +-
.../apache/kafka/example_dag_event_listener.py | 2 +-
.../system/apache/kafka/example_dag_hello_kafka.py | 2 +-
.../example_dag_kafka_message_queue_trigger.py | 2 +-
.../kafka/example_dag_message_queue_trigger.py | 2 +-
providers/apache/kylin/README.rst | 6 +-
providers/apache/kylin/docs/changelog.rst | 11 +
providers/apache/kylin/docs/index.rst | 6 +-
providers/apache/kylin/provider.yaml | 3 +-
providers/apache/kylin/pyproject.toml | 6 +-
.../src/airflow/providers/apache/kylin/__init__.py | 2 +-
.../tests/system/apache/kylin/example_kylin_dag.py | 2 +-
providers/apache/livy/README.rst | 6 +-
providers/apache/livy/docs/changelog.rst | 11 +
providers/apache/livy/docs/index.rst | 6 +-
providers/apache/livy/provider.yaml | 3 +-
providers/apache/livy/pyproject.toml | 6 +-
.../src/airflow/providers/apache/livy/__init__.py | 2 +-
.../livy/tests/system/apache/livy/example_livy.py | 2 +-
providers/apache/pig/README.rst | 6 +-
providers/apache/pig/docs/changelog.rst | 11 +
providers/apache/pig/docs/index.rst | 6 +-
providers/apache/pig/provider.yaml | 3 +-
providers/apache/pig/pyproject.toml | 6 +-
.../src/airflow/providers/apache/pig/__init__.py | 2 +-
.../pig/tests/system/apache/pig/example_pig.py | 2 +-
providers/apache/pinot/README.rst | 6 +-
providers/apache/pinot/docs/changelog.rst | 11 +
providers/apache/pinot/docs/index.rst | 6 +-
providers/apache/pinot/provider.yaml | 3 +-
providers/apache/pinot/pyproject.toml | 6 +-
.../src/airflow/providers/apache/pinot/__init__.py | 2 +-
.../tests/system/apache/pinot/example_pinot_dag.py | 2 +-
providers/apache/spark/README.rst | 6 +-
providers/apache/spark/docs/changelog.rst | 12 +
providers/apache/spark/docs/index.rst | 6 +-
providers/apache/spark/provider.yaml | 3 +-
providers/apache/spark/pyproject.toml | 6 +-
.../src/airflow/providers/apache/spark/__init__.py | 2 +-
.../tests/system/apache/spark/example_pyspark.py | 2 +-
.../tests/system/apache/spark/example_spark_dag.py | 2 +-
providers/apache/tinkerpop/README.rst | 6 +-
providers/apache/tinkerpop/docs/changelog.rst | 11 +
providers/apache/tinkerpop/docs/index.rst | 6 +-
providers/apache/tinkerpop/provider.yaml | 3 +-
providers/apache/tinkerpop/pyproject.toml | 6 +-
.../airflow/providers/apache/tinkerpop/__init__.py | 2 +-
.../system/apache/tinkerpop/example_gremlin_dag.py | 2 +-
providers/apprise/README.rst | 6 +-
providers/apprise/docs/changelog.rst | 11 +
providers/apprise/docs/index.rst | 6 +-
providers/apprise/provider.yaml | 3 +-
providers/apprise/pyproject.toml | 6 +-
.../src/airflow/providers/apprise/__init__.py | 2 +-
providers/arangodb/README.rst | 6 +-
providers/arangodb/docs/changelog.rst | 11 +
providers/arangodb/docs/index.rst | 6 +-
providers/arangodb/provider.yaml | 3 +-
providers/arangodb/pyproject.toml | 6 +-
.../src/airflow/providers/arangodb/__init__.py | 2 +-
providers/asana/README.rst | 6 +-
providers/asana/docs/changelog.rst | 11 +
providers/asana/docs/index.rst | 6 +-
providers/asana/provider.yaml | 3 +-
providers/asana/pyproject.toml | 6 +-
.../asana/src/airflow/providers/asana/__init__.py | 2 +-
.../asana/tests/system/asana/example_asana.py | 2 +-
providers/atlassian/jira/README.rst | 6 +-
providers/atlassian/jira/docs/changelog.rst | 12 +
providers/atlassian/jira/docs/index.rst | 6 +-
providers/atlassian/jira/provider.yaml | 3 +-
providers/atlassian/jira/pyproject.toml | 6 +-
.../airflow/providers/atlassian/jira/__init__.py | 2 +-
providers/celery/README.rst | 6 +-
providers/celery/docs/changelog.rst | 23 +
providers/celery/docs/index.rst | 6 +-
providers/celery/provider.yaml | 3 +-
providers/celery/pyproject.toml | 6 +-
.../src/airflow/providers/celery/__init__.py | 2 +-
providers/cloudant/README.rst | 6 +-
providers/cloudant/docs/changelog.rst | 11 +
providers/cloudant/docs/index.rst | 6 +-
providers/cloudant/provider.yaml | 3 +-
providers/cloudant/pyproject.toml | 6 +-
.../src/airflow/providers/cloudant/__init__.py | 2 +-
providers/cncf/kubernetes/README.rst | 6 +-
providers/cncf/kubernetes/docs/changelog.rst | 26 +
providers/cncf/kubernetes/docs/index.rst | 6 +-
providers/cncf/kubernetes/provider.yaml | 3 +-
providers/cncf/kubernetes/pyproject.toml | 6 +-
.../airflow/providers/cncf/kubernetes/__init__.py | 2 +-
.../system/cncf/kubernetes/example_kubernetes.py | 2 +-
.../cncf/kubernetes/example_kubernetes_async.py | 2 +-
.../kubernetes/example_kubernetes_cmd_decorator.py | 2 +-
.../kubernetes/example_kubernetes_decorator.py | 2 +-
.../cncf/kubernetes/example_kubernetes_job.py | 2 +-
.../cncf/kubernetes/example_kubernetes_kueue.py | 2 +-
.../cncf/kubernetes/example_kubernetes_resource.py | 2 +-
.../cncf/kubernetes/example_spark_kubernetes.py | 2 +-
providers/cohere/README.rst | 6 +-
providers/cohere/docs/changelog.rst | 11 +
providers/cohere/docs/index.rst | 6 +-
providers/cohere/provider.yaml | 3 +-
providers/cohere/pyproject.toml | 6 +-
.../src/airflow/providers/cohere/__init__.py | 2 +-
.../cohere/example_cohere_embedding_operator.py | 2 +-
providers/common/ai/README.rst | 59 +-
providers/common/ai/docs/commits.rst | 5 +-
.../ai/example_dags/example_llm_survey_analysis.py | 210 +++-
.../providers/common/ai/plugins/hitl_review.py | 858 +++++++------
.../common/ai/plugins/test_hitl_review_compat.py} | 24 +-
providers/common/compat/README.rst | 6 +-
providers/common/compat/docs/changelog.rst | 14 +
providers/common/compat/docs/index.rst | 6 +-
providers/common/compat/provider.yaml | 3 +-
providers/common/compat/pyproject.toml | 6 +-
.../airflow/providers/common/compat/__init__.py | 2 +-
.../common/compat/openlineage/utils/spark.py | 26 +
.../common/compat/security/permissions.py | 9 +-
.../common/io/example_file_transfer_local_to_s3.py | 2 +-
.../messaging/example_message_queue_trigger.py | 2 +-
.../system/common/sql/example_generic_transfer.py | 2 +-
.../common/sql/example_sql_column_table_check.py | 2 +-
.../system/common/sql/example_sql_execute_query.py | 2 +-
.../system/common/sql/example_sql_insert_rows.py | 2 +-
.../common/sql/example_sql_threshold_check.py | 2 +-
.../system/common/sql/example_sql_value_check.py | 2 +-
providers/databricks/README.rst | 6 +-
providers/databricks/docs/changelog.rst | 11 +
providers/databricks/docs/index.rst | 6 +-
providers/databricks/provider.yaml | 3 +-
providers/databricks/pyproject.toml | 6 +-
.../src/airflow/providers/databricks/__init__.py | 2 +-
.../tests/system/databricks/example_databricks.py | 2 +-
.../system/databricks/example_databricks_repos.py | 2 +-
.../databricks/example_databricks_sensors.py | 2 +-
.../system/databricks/example_databricks_sql.py | 2 +-
.../databricks/example_databricks_workflow.py | 2 +-
providers/datadog/README.rst | 6 +-
providers/datadog/docs/changelog.rst | 11 +
providers/datadog/docs/index.rst | 6 +-
providers/datadog/provider.yaml | 3 +-
providers/datadog/pyproject.toml | 6 +-
.../src/airflow/providers/datadog/__init__.py | 2 +-
providers/dbt/cloud/README.rst | 6 +-
providers/dbt/cloud/docs/changelog.rst | 11 +
providers/dbt/cloud/docs/index.rst | 6 +-
providers/dbt/cloud/provider.yaml | 3 +-
providers/dbt/cloud/pyproject.toml | 6 +-
.../src/airflow/providers/dbt/cloud/__init__.py | 2 +-
.../tests/system/dbt/cloud/example_dbt_cloud.py | 2 +-
providers/dingding/README.rst | 6 +-
providers/dingding/docs/changelog.rst | 11 +
providers/dingding/docs/index.rst | 6 +-
providers/dingding/provider.yaml | 3 +-
providers/dingding/pyproject.toml | 6 +-
.../src/airflow/providers/dingding/__init__.py | 2 +-
.../tests/system/dingding/example_dingding.py | 2 +-
providers/discord/README.rst | 6 +-
providers/discord/docs/changelog.rst | 11 +
providers/discord/docs/index.rst | 6 +-
providers/discord/provider.yaml | 3 +-
providers/discord/pyproject.toml | 6 +-
.../src/airflow/providers/discord/__init__.py | 2 +-
providers/docker/README.rst | 6 +-
providers/docker/docs/changelog.rst | 11 +
providers/docker/docs/index.rst | 6 +-
providers/docker/provider.yaml | 3 +-
providers/docker/pyproject.toml | 6 +-
.../src/airflow/providers/docker/__init__.py | 2 +-
.../docker/tests/system/docker/example_docker.py | 2 +-
.../system/docker/example_docker_copy_data.py | 2 +-
.../tests/system/docker/example_docker_swarm.py | 2 +-
.../example_taskflow_api_docker_virtualenv.py | 4 +-
providers/edge3/README.rst | 6 +-
providers/edge3/docs/changelog.rst | 27 +
providers/edge3/docs/index.rst | 6 +-
providers/edge3/provider.yaml | 3 +-
providers/edge3/pyproject.toml | 6 +-
.../edge3/src/airflow/providers/edge3/__init__.py | 2 +-
.../providers/edge3/example_dags/win_test.py | 11 +-
.../providers/edge3/plugins/www/package.json | 9 +-
.../providers/edge3/plugins/www/pnpm-lock.yaml | 52 +-
.../www/src/components/BulkWorkerOperations.tsx | 159 ++-
.../providers/edge3/plugins/www/src/constants.ts | 12 +
.../plugins/www/src/hooks/useBulkWorkerActions.ts | 73 +-
providers/elasticsearch/README.rst | 6 +-
providers/elasticsearch/docs/changelog.rst | 23 +
providers/elasticsearch/docs/index.rst | 6 +-
providers/elasticsearch/provider.yaml | 3 +-
providers/elasticsearch/pyproject.toml | 6 +-
.../airflow/providers/elasticsearch/__init__.py | 2 +-
.../providers/elasticsearch/log/es_task_handler.py | 3 +-
.../elasticsearch/example_elasticsearch_query.py | 2 +-
providers/exasol/README.rst | 6 +-
providers/exasol/docs/changelog.rst | 11 +
providers/exasol/docs/index.rst | 6 +-
providers/exasol/provider.yaml | 3 +-
providers/exasol/pyproject.toml | 6 +-
.../src/airflow/providers/exasol/__init__.py | 2 +-
.../exasol/tests/system/exasol/example_exasol.py | 2 +-
providers/fab/README.rst | 7 +-
providers/fab/docs/changelog.rst | 25 +
providers/fab/docs/index.rst | 6 +-
providers/fab/provider.yaml | 3 +-
providers/fab/pyproject.toml | 6 +-
.../fab/src/airflow/providers/fab/__init__.py | 2 +-
.../fab/src/airflow/providers/fab/www/package.json | 4 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 10 +-
providers/facebook/README.rst | 6 +-
providers/facebook/docs/changelog.rst | 11 +
providers/facebook/docs/index.rst | 6 +-
providers/facebook/provider.yaml | 3 +-
providers/facebook/pyproject.toml | 6 +-
.../src/airflow/providers/facebook/__init__.py | 2 +-
providers/ftp/README.rst | 6 +-
providers/ftp/docs/changelog.rst | 11 +
providers/ftp/docs/index.rst | 6 +-
providers/ftp/provider.yaml | 3 +-
providers/ftp/pyproject.toml | 6 +-
.../ftp/src/airflow/providers/ftp/__init__.py | 2 +-
providers/ftp/tests/system/ftp/example_ftp.py | 2 +-
providers/git/README.rst | 6 +-
providers/git/docs/changelog.rst | 12 +
providers/git/docs/index.rst | 6 +-
providers/git/provider.yaml | 3 +-
providers/git/pyproject.toml | 6 +-
.../git/src/airflow/providers/git/__init__.py | 2 +-
providers/github/README.rst | 6 +-
providers/github/docs/changelog.rst | 12 +
providers/github/docs/index.rst | 6 +-
providers/github/provider.yaml | 3 +-
providers/github/pyproject.toml | 6 +-
.../src/airflow/providers/github/__init__.py | 2 +-
.../github/tests/system/github/example_github.py | 2 +-
providers/google/README.rst | 8 +-
providers/google/docs/changelog.rst | 33 +
providers/google/docs/index.rst | 8 +-
providers/google/provider.yaml | 3 +-
providers/google/pyproject.toml | 8 +-
.../src/airflow/providers/google/__init__.py | 2 +-
.../google/tests/system/google/ads/example_ads.py | 2 +-
.../google/cloud/alloy_db/example_alloy_db.py | 2 +-
.../cloud/azure/example_azure_blob_to_gcs.py | 2 +-
.../cloud/azure/example_azure_fileshare_to_gcs.py | 2 +-
.../cloud/bigquery/example_bigquery_dataset.py | 2 +-
.../google/cloud/bigquery/example_bigquery_dts.py | 2 +-
.../google/cloud/bigquery/example_bigquery_jobs.py | 2 +-
.../cloud/bigquery/example_bigquery_operations.py | 2 +-
.../cloud/bigquery/example_bigquery_queries.py | 2 +-
.../bigquery/example_bigquery_queries_async.py | 2 +-
.../cloud/bigquery/example_bigquery_sensors.py | 2 +-
.../cloud/bigquery/example_bigquery_tables.py | 2 +-
.../cloud/bigquery/example_bigquery_to_bigquery.py | 2 +-
.../cloud/bigquery/example_bigquery_to_gcs.py | 2 +-
.../cloud/bigquery/example_bigquery_to_mssql.py | 2 +-
.../cloud/bigquery/example_bigquery_to_mysql.py | 2 +-
.../cloud/bigquery/example_bigquery_to_postgres.py | 2 +-
.../cloud/bigquery/example_bigquery_transfer.py | 2 +-
.../cloud/bigquery/example_bigquery_value_check.py | 4 +-
.../google/cloud/bigtable/example_bigtable.py | 2 +-
.../cloud/cloud_batch/example_cloud_batch.py | 2 +-
.../cloud/cloud_build/example_cloud_build.py | 2 +-
.../cloud_build/example_cloud_build_trigger.py | 2 +-
.../cloud/cloud_functions/example_functions.py | 2 +-
.../example_cloud_memorystore_memcached.py | 2 +-
.../example_cloud_memorystore_redis.py | 2 +-
.../google/cloud/cloud_run/example_cloud_run.py | 2 +-
.../cloud/cloud_run/example_cloud_run_service.py | 2 +-
.../google/cloud/cloud_sql/example_cloud_sql.py | 2 +-
.../cloud/cloud_sql/example_cloud_sql_query.py | 2 +-
.../cloud/cloud_sql/example_cloud_sql_query_iam.py | 2 +-
.../cloud/cloud_sql/example_cloud_sql_query_ssl.py | 2 +-
.../cloud/composer/example_cloud_composer.py | 2 +-
.../system/google/cloud/compute/example_compute.py | 2 +-
.../google/cloud/compute/example_compute_igm.py | 2 +-
.../google/cloud/compute/example_compute_ssh.py | 2 +-
.../cloud/compute/example_compute_ssh_os_login.py | 2 +-
.../cloud/compute/example_compute_ssh_parallel.py | 2 +-
.../example_dlp_deidentify_content.py | 2 +-
.../data_loss_prevention/example_dlp_info_types.py | 2 +-
.../example_dlp_inspect_template.py | 2 +-
.../cloud/data_loss_prevention/example_dlp_job.py | 2 +-
.../example_dlp_job_trigger.py | 2 +-
.../google/cloud/dataflow/example_dataflow_go.py | 2 +-
.../dataflow/example_dataflow_java_streaming.py | 2 +-
.../cloud/dataflow/example_dataflow_native_java.py | 2 +-
.../dataflow/example_dataflow_native_python.py | 2 +-
.../example_dataflow_native_python_async.py | 2 +-
.../cloud/dataflow/example_dataflow_pipeline.py | 2 +-
.../example_dataflow_pipeline_streaming.py | 2 +-
.../example_dataflow_sensors_deferrable.py | 2 +-
.../dataflow/example_dataflow_streaming_python.py | 2 +-
.../cloud/dataflow/example_dataflow_template.py | 2 +-
.../google/cloud/dataflow/example_dataflow_yaml.py | 2 +-
.../google/cloud/dataform/example_dataform.py | 2 +-
.../google/cloud/datafusion/example_datafusion.py | 2 +-
.../google/cloud/dataplex/example_dataplex.py | 2 +-
.../cloud/dataplex/example_dataplex_catalog.py | 2 +-
.../google/cloud/dataplex/example_dataplex_dp.py | 2 +-
.../google/cloud/dataplex/example_dataplex_dq.py | 2 +-
.../google/cloud/dataprep/example_dataprep.py | 2 +-
.../cloud/dataproc/example_dataproc_batch.py | 2 +-
.../dataproc/example_dataproc_batch_deferrable.py | 2 +-
.../dataproc/example_dataproc_batch_persistent.py | 2 +-
...proc_cluster_create_existing_stopped_cluster.py | 2 +-
.../example_dataproc_cluster_deferrable.py | 2 +-
.../dataproc/example_dataproc_cluster_diagnose.py | 2 +-
.../dataproc/example_dataproc_cluster_generator.py | 2 +-
.../example_dataproc_cluster_start_stop.py | 2 +-
.../dataproc/example_dataproc_cluster_update.py | 2 +-
.../cloud/dataproc/example_dataproc_flink.py | 2 +-
.../google/cloud/dataproc/example_dataproc_gke.py | 2 +-
.../cloud/dataproc/example_dataproc_hadoop.py | 2 +-
.../google/cloud/dataproc/example_dataproc_hive.py | 2 +-
.../google/cloud/dataproc/example_dataproc_pig.py | 2 +-
.../cloud/dataproc/example_dataproc_presto.py | 2 +-
.../cloud/dataproc/example_dataproc_pyspark.py | 2 +-
.../cloud/dataproc/example_dataproc_spark.py | 2 +-
.../cloud/dataproc/example_dataproc_spark_async.py | 2 +-
.../dataproc/example_dataproc_spark_deferrable.py | 2 +-
.../cloud/dataproc/example_dataproc_spark_sql.py | 2 +-
.../cloud/dataproc/example_dataproc_sparkr.py | 2 +-
.../cloud/dataproc/example_dataproc_trino.py | 2 +-
.../cloud/dataproc/example_dataproc_workflow.py | 2 +-
.../example_dataproc_workflow_deferrable.py | 2 +-
.../example_dataproc_metastore.py | 2 +-
.../example_dataproc_metastore_backup.py | 2 +-
...ple_dataproc_metastore_hive_partition_sensor.py | 2 +-
.../cloud/datastore/example_datastore_commit.py | 2 +-
.../cloud/datastore/example_datastore_query.py | 2 +-
.../cloud/datastore/example_datastore_rollback.py | 2 +-
.../google/cloud/gcs/example_calendar_to_gcs.py | 2 +-
.../system/google/cloud/gcs/example_firestore.py | 2 +-
.../system/google/cloud/gcs/example_gcs_acl.py | 2 +-
.../google/cloud/gcs/example_gcs_copy_delete.py | 2 +-
.../system/google/cloud/gcs/example_gcs_sensor.py | 2 +-
.../google/cloud/gcs/example_gcs_to_bigquery.py | 2 +-
.../cloud/gcs/example_gcs_to_bigquery_async.py | 2 +-
.../system/google/cloud/gcs/example_gcs_to_gcs.py | 2 +-
.../google/cloud/gcs/example_gcs_to_gdrive.py | 2 +-
.../system/google/cloud/gcs/example_gcs_to_sftp.py | 2 +-
.../google/cloud/gcs/example_gcs_to_sheets.py | 2 +-
.../google/cloud/gcs/example_gcs_transform.py | 2 +-
.../cloud/gcs/example_gcs_transform_timespan.py | 2 +-
.../cloud/gcs/example_gcs_upload_download.py | 2 +-
.../google/cloud/gcs/example_gdrive_to_gcs.py | 2 +-
.../system/google/cloud/gcs/example_http_to_gcs.py | 2 +-
.../google/cloud/gcs/example_mssql_to_gcs.py | 2 +-
.../google/cloud/gcs/example_mysql_to_gcs.py | 2 +-
.../google/cloud/gcs/example_oracle_to_gcs.py | 2 +-
.../google/cloud/gcs/example_presto_to_gcs.py | 2 +-
.../system/google/cloud/gcs/example_s3_to_gcs.py | 2 +-
.../google/cloud/gcs/example_salesforce_to_gcs.py | 2 +-
.../system/google/cloud/gcs/example_sftp_to_gcs.py | 2 +-
.../system/google/cloud/gcs/example_sheets.py | 2 +-
.../google/cloud/gcs/example_sheets_to_gcs.py | 2 +-
.../google/cloud/gcs/example_trino_to_gcs.py | 2 +-
.../gen_ai/example_gen_ai_gemini_batch_api.py | 5 +-
.../gen_ai/example_gen_ai_generative_model.py | 2 +-
.../example_gen_ai_generative_model_tuning.py | 2 +-
.../kubernetes_engine/example_kubernetes_engine.py | 2 +-
.../example_kubernetes_engine_async.py | 2 +-
.../example_kubernetes_engine_job.py | 2 +-
.../example_kubernetes_engine_kueue.py | 2 +-
.../example_kubernetes_engine_ray.py | 2 +-
.../example_kubernetes_engine_resource.py | 2 +-
.../system/google/cloud/looker/example_looker.py | 2 +-
.../managed_kafka/example_managed_kafka_cluster.py | 2 +-
.../example_managed_kafka_consumer_group.py | 2 +-
.../managed_kafka/example_managed_kafka_topic.py | 2 +-
.../google/cloud/ml_engine/example_mlengine.py | 2 +-
.../natural_language/example_natural_language.py | 2 +-
.../system/google/cloud/pubsub/example_pubsub.py | 2 +-
.../cloud/pubsub/example_pubsub_deferrable.py | 2 +-
.../system/google/cloud/ray/example_ray_job.py | 2 +-
.../system/google/cloud/spanner/example_spanner.py | 2 +-
.../cloud/speech_to_text/example_speech_to_text.py | 2 +-
.../cloud/sql_to_sheets/example_sql_to_sheets.py | 2 +-
.../cloud/stackdriver/example_stackdriver.py | 2 +-
.../example_cloud_storage_transfer_service_aws.py | 2 +-
.../example_cloud_storage_transfer_service_gcp.py | 2 +-
...le_cloud_storage_transfer_service_gcs_to_gcs.py | 2 +-
.../system/google/cloud/tasks/example_queue.py | 2 +-
.../system/google/cloud/tasks/example_tasks.py | 2 +-
.../cloud/text_to_speech/example_text_to_speech.py | 2 +-
.../cloud/transfers/example_facebook_ads_to_gcs.py | 2 +-
.../google/cloud/transfers/example_gcs_to_sftp.py | 2 +-
.../cloud/transfers/example_gdrive_to_local.py | 2 +-
.../cloud/transfers/example_postgres_to_gcs.py | 2 +-
.../google/cloud/translate/example_translate.py | 2 +-
.../cloud/translate/example_translate_dataset.py | 2 +-
.../cloud/translate/example_translate_document.py | 2 +-
.../cloud/translate/example_translate_glossary.py | 2 +-
.../cloud/translate/example_translate_model.py | 2 +-
.../cloud/translate/example_translate_text.py | 2 +-
.../translate_speech/example_translate_speech.py | 2 +-
...ample_vertex_ai_auto_ml_forecasting_training.py | 2 +-
...ple_vertex_ai_auto_ml_image_object_detection.py | 2 +-
.../example_vertex_ai_auto_ml_list_training.py | 2 +-
.../example_vertex_ai_auto_ml_tabular_training.py | 2 +-
.../example_vertex_ai_batch_prediction_job.py | 2 +-
.../example_vertex_ai_custom_container.py | 2 +-
.../vertex_ai/example_vertex_ai_custom_job.py | 2 +-
.../example_vertex_ai_custom_job_python_package.py | 2 +-
.../cloud/vertex_ai/example_vertex_ai_dataset.py | 2 +-
.../cloud/vertex_ai/example_vertex_ai_endpoint.py | 2 +-
.../example_vertex_ai_experiment_service.py | 2 +-
.../vertex_ai/example_vertex_ai_feature_store.py | 2 +-
.../example_vertex_ai_hyperparameter_tuning_job.py | 2 +-
.../example_vertex_ai_list_custom_jobs.py | 2 +-
.../vertex_ai/example_vertex_ai_model_service.py | 2 +-
.../vertex_ai/example_vertex_ai_pipeline_job.py | 2 +-
.../cloud/vertex_ai/example_vertex_ai_ray.py | 2 +-
.../example_video_intelligence.py | 2 +-
.../cloud/vision/example_vision_annotate_image.py | 2 +-
.../cloud/vision/example_vision_autogenerated.py | 2 +-
.../google/cloud/vision/example_vision_explicit.py | 2 +-
.../google/cloud/workflows/example_workflows.py | 2 +-
.../example_event_schedule_pubsub.py | 2 +-
.../tests/system/google/leveldb/example_leveldb.py | 2 +-
.../marketing_platform/example_analytics_admin.py | 2 +-
.../marketing_platform/example_bid_manager.py | 2 +-
.../marketing_platform/example_campaign_manager.py | 2 +-
.../marketing_platform/example_display_video.py | 2 +-
.../marketing_platform/example_search_ads.py | 2 +-
.../system/google/suite/example_local_to_drive.py | 2 +-
providers/grpc/README.rst | 6 +-
providers/grpc/docs/changelog.rst | 11 +
providers/grpc/docs/index.rst | 6 +-
providers/grpc/provider.yaml | 3 +-
providers/grpc/pyproject.toml | 6 +-
.../grpc/src/airflow/providers/grpc/__init__.py | 2 +-
providers/hashicorp/README.rst | 6 +-
providers/hashicorp/docs/changelog.rst | 11 +
providers/hashicorp/docs/index.rst | 6 +-
providers/hashicorp/provider.yaml | 3 +-
providers/hashicorp/pyproject.toml | 6 +-
.../src/airflow/providers/hashicorp/__init__.py | 2 +-
providers/http/README.rst | 6 +-
providers/http/docs/changelog.rst | 11 +
providers/http/docs/index.rst | 6 +-
providers/http/provider.yaml | 3 +-
providers/http/pyproject.toml | 6 +-
.../http/src/airflow/providers/http/__init__.py | 2 +-
providers/http/tests/system/http/example_http.py | 2 +-
providers/imap/README.rst | 6 +-
providers/imap/docs/changelog.rst | 11 +
providers/imap/docs/index.rst | 6 +-
providers/imap/provider.yaml | 3 +-
providers/imap/pyproject.toml | 6 +-
.../imap/src/airflow/providers/imap/__init__.py | 2 +-
providers/influxdb/README.rst | 6 +-
providers/influxdb/docs/changelog.rst | 11 +
providers/influxdb/docs/index.rst | 6 +-
providers/influxdb/provider.yaml | 3 +-
providers/influxdb/pyproject.toml | 6 +-
.../src/airflow/providers/influxdb/__init__.py | 2 +-
.../tests/system/influxdb/example_influxdb.py | 2 +-
.../system/influxdb/example_influxdb_query.py | 2 +-
providers/informatica/README.rst | 6 +-
providers/informatica/docs/changelog.rst | 12 +
providers/informatica/docs/index.rst | 6 +-
providers/informatica/provider.yaml | 3 +-
providers/informatica/pyproject.toml | 6 +-
.../src/airflow/providers/informatica/__init__.py | 2 +-
providers/jdbc/README.rst | 6 +-
providers/jdbc/docs/changelog.rst | 11 +
providers/jdbc/docs/index.rst | 6 +-
providers/jdbc/provider.yaml | 3 +-
providers/jdbc/pyproject.toml | 6 +-
.../jdbc/src/airflow/providers/jdbc/__init__.py | 2 +-
.../jdbc/tests/system/jdbc/example_jdbc_queries.py | 2 +-
providers/jenkins/README.rst | 6 +-
providers/jenkins/docs/changelog.rst | 11 +
providers/jenkins/docs/index.rst | 6 +-
providers/jenkins/provider.yaml | 3 +-
providers/jenkins/pyproject.toml | 6 +-
.../src/airflow/providers/jenkins/__init__.py | 2 +-
.../system/jenkins/example_jenkins_job_trigger.py | 2 +-
providers/keycloak/README.rst | 6 +-
providers/keycloak/docs/changelog.rst | 11 +
providers/keycloak/docs/index.rst | 6 +-
providers/keycloak/provider.yaml | 3 +-
providers/keycloak/pyproject.toml | 6 +-
.../src/airflow/providers/keycloak/__init__.py | 2 +-
providers/microsoft/azure/README.rst | 6 +-
providers/microsoft/azure/docs/changelog.rst | 18 +
providers/microsoft/azure/docs/index.rst | 6 +-
providers/microsoft/azure/provider.yaml | 3 +-
providers/microsoft/azure/pyproject.toml | 6 +-
.../airflow/providers/microsoft/azure/__init__.py | 2 +-
.../microsoft/azure/example_adf_run_pipeline.py | 2 +-
.../system/microsoft/azure/example_adls_create.py | 2 +-
.../system/microsoft/azure/example_adls_delete.py | 2 +-
.../system/microsoft/azure/example_adls_list.py | 2 +-
.../azure/example_azure_batch_operator.py | 2 +-
.../azure/example_azure_container_instances.py | 2 +-
.../microsoft/azure/example_azure_cosmosdb.py | 2 +-
.../microsoft/azure/example_azure_service_bus.py | 2 +-
.../microsoft/azure/example_azure_synapse.py | 2 +-
.../microsoft/azure/example_event_schedule_asb.py | 2 +-
.../system/microsoft/azure/example_fileshare.py | 2 +-
.../microsoft/azure/example_local_to_adls.py | 2 +-
.../microsoft/azure/example_local_to_wasb.py | 2 +-
.../system/microsoft/azure/example_msfabric.py | 2 +-
.../system/microsoft/azure/example_msgraph.py | 2 +-
.../system/microsoft/azure/example_powerbi.py | 2 +-
.../azure/example_powerbi_dataset_list.py | 2 +-
.../azure/example_powerbi_dataset_refresh.py | 2 +-
.../azure/example_powerbi_workspace_list.py | 2 +-
.../system/microsoft/azure/example_s3_to_wasb.py | 2 +-
.../system/microsoft/azure/example_sftp_to_wasb.py | 2 +-
.../azure/example_synapse_run_pipeline.py | 2 +-
.../system/microsoft/azure/example_wasb_sensors.py | 2 +-
providers/microsoft/mssql/README.rst | 6 +-
providers/microsoft/mssql/docs/changelog.rst | 11 +
providers/microsoft/mssql/docs/index.rst | 6 +-
providers/microsoft/mssql/provider.yaml | 3 +-
providers/microsoft/mssql/pyproject.toml | 6 +-
.../airflow/providers/microsoft/mssql/__init__.py | 2 +-
.../tests/system/microsoft/mssql/example_mssql.py | 2 +-
providers/microsoft/psrp/README.rst | 6 +-
providers/microsoft/psrp/docs/changelog.rst | 11 +
providers/microsoft/psrp/docs/index.rst | 6 +-
providers/microsoft/psrp/provider.yaml | 3 +-
providers/microsoft/psrp/pyproject.toml | 6 +-
.../airflow/providers/microsoft/psrp/__init__.py | 2 +-
providers/microsoft/winrm/README.rst | 6 +-
providers/microsoft/winrm/docs/changelog.rst | 16 +
providers/microsoft/winrm/docs/index.rst | 6 +-
providers/microsoft/winrm/provider.yaml | 3 +-
providers/microsoft/winrm/pyproject.toml | 6 +-
.../airflow/providers/microsoft/winrm/__init__.py | 2 +-
.../tests/system/microsoft/winrm/example_winrm.py | 2 +-
providers/mongo/README.rst | 6 +-
providers/mongo/docs/changelog.rst | 11 +
providers/mongo/docs/index.rst | 6 +-
providers/mongo/provider.yaml | 3 +-
providers/mongo/pyproject.toml | 6 +-
.../mongo/src/airflow/providers/mongo/__init__.py | 2 +-
providers/mysql/README.rst | 6 +-
providers/mysql/docs/changelog.rst | 16 +
providers/mysql/docs/index.rst | 6 +-
providers/mysql/provider.yaml | 3 +-
providers/mysql/pyproject.toml | 6 +-
.../mysql/src/airflow/providers/mysql/__init__.py | 2 +-
.../mysql/tests/system/mysql/example_mysql.py | 2 +-
providers/neo4j/README.rst | 6 +-
providers/neo4j/docs/changelog.rst | 11 +
providers/neo4j/docs/index.rst | 6 +-
providers/neo4j/provider.yaml | 3 +-
providers/neo4j/pyproject.toml | 6 +-
.../neo4j/src/airflow/providers/neo4j/__init__.py | 2 +-
.../neo4j/tests/system/neo4j/example_neo4j.py | 2 +-
.../tests/system/neo4j/example_neo4j_query.py | 2 +-
.../tests/system/neo4j/example_neo4j_sensor.py | 2 +-
providers/odbc/README.rst | 6 +-
providers/odbc/docs/changelog.rst | 11 +
providers/odbc/docs/index.rst | 6 +-
providers/odbc/provider.yaml | 3 +-
providers/odbc/pyproject.toml | 6 +-
.../odbc/src/airflow/providers/odbc/__init__.py | 2 +-
providers/openai/README.rst | 6 +-
providers/openai/docs/changelog.rst | 11 +
providers/openai/docs/index.rst | 6 +-
providers/openai/provider.yaml | 3 +-
providers/openai/pyproject.toml | 6 +-
.../src/airflow/providers/openai/__init__.py | 2 +-
.../openai/tests/system/openai/example_openai.py | 2 +-
.../openai/example_trigger_batch_operator.py | 2 +-
providers/openfaas/README.rst | 6 +-
providers/openfaas/docs/changelog.rst | 11 +
providers/openfaas/docs/index.rst | 6 +-
providers/openfaas/provider.yaml | 3 +-
providers/openfaas/pyproject.toml | 6 +-
.../src/airflow/providers/openfaas/__init__.py | 2 +-
providers/openlineage/README.rst | 8 +-
providers/openlineage/docs/changelog.rst | 21 +
providers/openlineage/docs/index.rst | 8 +-
providers/openlineage/provider.yaml | 3 +-
providers/openlineage/pyproject.toml | 8 +-
.../src/airflow/providers/openlineage/__init__.py | 2 +-
.../airflow/providers/openlineage/utils/spark.py | 90 ++
.../src/airflow/providers/openlineage/utils/sql.py | 36 +-
.../airflow/providers/openlineage/utils/utils.py | 2 +
.../example_openlineage_base_complex_dag.py | 2 +-
.../example_openlineage_base_simple_dag.py | 2 +-
.../example_openlineage_defer_simple_dag.py | 2 +-
.../example_openlineage_docs_file_dag.py | 2 +-
.../example_openlineage_mapped_simple_dag.py | 2 +-
...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_setup_teardown_dag.py | 2 +-
.../example_openlineage_short_circuit_dag.py | 2 +-
.../example_openlineage_task_groups_dag.py | 2 +-
.../example_openlineage_taskflow_simple_dag.py | 2 +-
.../openlineage/example_openlineage_trigger_dag.py | 2 +-
.../example_openlineage_trigger_dag_deferrable.py | 2 +-
.../example_openlineage_versioned_dag.py | 2 +-
.../tests/unit/openlineage/utils/test_spark.py | 145 +++
.../tests/unit/openlineage/utils/test_sql.py | 100 +-
.../tests/unit/openlineage/utils/test_utils.py | 12 +
providers/opensearch/README.rst | 8 +-
providers/opensearch/docs/changelog.rst | 16 +
providers/opensearch/docs/index.rst | 10 +-
providers/opensearch/docs/logging/index.rst | 22 +
providers/opensearch/provider.yaml | 17 +-
providers/opensearch/pyproject.toml | 8 +-
.../src/airflow/providers/opensearch/__init__.py | 6 +-
.../providers/opensearch/get_provider_info.py | 14 +
.../providers/opensearch/log/os_task_handler.py | 404 ++++++-
.../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 +-
.../tests/system/opensearch/example_opensearch.py | 2 +-
.../opensearch/tests/unit/opensearch/conftest.py | 49 -
.../unit/opensearch/log/test_os_task_handler.py | 913 +++++++-------
providers/opsgenie/README.rst | 6 +-
providers/opsgenie/docs/changelog.rst | 11 +
providers/opsgenie/docs/index.rst | 6 +-
providers/opsgenie/provider.yaml | 3 +-
providers/opsgenie/pyproject.toml | 6 +-
.../src/airflow/providers/opsgenie/__init__.py | 2 +-
.../system/opsgenie/example_opsgenie_alert.py | 2 +-
.../system/opsgenie/example_opsgenie_notifier.py | 2 +-
providers/oracle/README.rst | 6 +-
providers/oracle/docs/changelog.rst | 11 +
providers/oracle/docs/index.rst | 6 +-
providers/oracle/provider.yaml | 3 +-
providers/oracle/pyproject.toml | 6 +-
.../src/airflow/providers/oracle/__init__.py | 2 +-
.../oracle/tests/system/oracle/example_oracle.py | 2 +-
providers/pagerduty/README.rst | 6 +-
providers/pagerduty/docs/changelog.rst | 11 +
providers/pagerduty/docs/index.rst | 6 +-
providers/pagerduty/provider.yaml | 3 +-
providers/pagerduty/pyproject.toml | 6 +-
.../src/airflow/providers/pagerduty/__init__.py | 2 +-
providers/papermill/README.rst | 6 +-
providers/papermill/docs/changelog.rst | 11 +
providers/papermill/docs/index.rst | 6 +-
providers/papermill/provider.yaml | 3 +-
providers/papermill/pyproject.toml | 6 +-
.../src/airflow/providers/papermill/__init__.py | 2 +-
.../tests/system/papermill/example_papermill.py | 2 +-
.../papermill/example_papermill_remote_verify.py | 2 +-
.../system/papermill/example_papermill_verify.py | 2 +-
.../tests/system/pgvector/example_pgvector.py | 2 +-
.../system/pgvector/example_pgvector_openai.py | 2 +-
providers/pinecone/README.rst | 6 +-
providers/pinecone/docs/changelog.rst | 12 +
providers/pinecone/docs/index.rst | 6 +-
providers/pinecone/provider.yaml | 3 +-
providers/pinecone/pyproject.toml | 6 +-
.../src/airflow/providers/pinecone/__init__.py | 2 +-
.../system/pinecone/example_create_pod_index.py | 2 +-
.../pinecone/example_create_serverless_index.py | 2 +-
.../tests/system/pinecone/example_dag_pinecone.py | 2 +-
.../system/pinecone/example_pinecone_cohere.py | 2 +-
.../system/pinecone/example_pinecone_openai.py | 2 +-
providers/postgres/README.rst | 6 +-
providers/postgres/docs/changelog.rst | 11 +
providers/postgres/docs/index.rst | 6 +-
providers/postgres/provider.yaml | 3 +-
providers/postgres/pyproject.toml | 6 +-
.../src/airflow/providers/postgres/__init__.py | 2 +-
.../tests/system/postgres/example_postgres.py | 2 +-
providers/presto/README.rst | 6 +-
providers/presto/docs/changelog.rst | 11 +
providers/presto/docs/index.rst | 6 +-
providers/presto/provider.yaml | 3 +-
providers/presto/pyproject.toml | 6 +-
.../src/airflow/providers/presto/__init__.py | 2 +-
.../tests/system/presto/example_gcs_to_presto.py | 2 +-
.../presto/tests/system/presto/example_presto.py | 2 +-
providers/qdrant/README.rst | 6 +-
providers/qdrant/docs/changelog.rst | 11 +
providers/qdrant/docs/index.rst | 6 +-
providers/qdrant/provider.yaml | 3 +-
providers/qdrant/pyproject.toml | 6 +-
.../src/airflow/providers/qdrant/__init__.py | 2 +-
.../tests/system/qdrant/example_dag_qdrant.py | 2 +-
providers/redis/README.rst | 6 +-
providers/redis/docs/changelog.rst | 12 +
providers/redis/docs/index.rst | 6 +-
providers/redis/provider.yaml | 3 +-
providers/redis/pyproject.toml | 6 +-
.../redis/src/airflow/providers/redis/__init__.py | 2 +-
.../redis/example_dag_message_queue_trigger.py | 2 +-
.../tests/system/redis/example_redis_publish.py | 2 +-
providers/salesforce/README.rst | 6 +-
providers/salesforce/docs/changelog.rst | 16 +
providers/salesforce/docs/index.rst | 6 +-
providers/salesforce/provider.yaml | 3 +-
providers/salesforce/pyproject.toml | 6 +-
.../src/airflow/providers/salesforce/__init__.py | 2 +-
.../tests/system/salesforce/example_bulk.py | 2 +-
.../salesforce/example_salesforce_apex_rest.py | 2 +-
providers/samba/README.rst | 6 +-
providers/samba/docs/changelog.rst | 11 +
providers/samba/docs/index.rst | 6 +-
providers/samba/provider.yaml | 3 +-
providers/samba/pyproject.toml | 6 +-
.../samba/src/airflow/providers/samba/__init__.py | 2 +-
.../tests/system/samba/example_gcs_to_samba.py | 2 +-
providers/segment/README.rst | 6 +-
providers/segment/docs/changelog.rst | 11 +
providers/segment/docs/index.rst | 6 +-
providers/segment/provider.yaml | 3 +-
providers/segment/pyproject.toml | 6 +-
.../src/airflow/providers/segment/__init__.py | 2 +-
providers/sftp/README.rst | 6 +-
providers/sftp/docs/changelog.rst | 11 +
providers/sftp/docs/index.rst | 8 +-
providers/sftp/provider.yaml | 3 +-
providers/sftp/pyproject.toml | 8 +-
.../sftp/src/airflow/providers/sftp/__init__.py | 2 +-
.../sftp/tests/system/sftp/example_sftp_sensor.py | 2 +-
.../system/singularity/example_singularity.py | 2 +-
providers/slack/README.rst | 6 +-
providers/slack/docs/changelog.rst | 16 +
providers/slack/docs/index.rst | 6 +-
providers/slack/provider.yaml | 3 +-
providers/slack/pyproject.toml | 6 +-
.../slack/src/airflow/providers/slack/__init__.py | 2 +-
.../slack/tests/system/slack/example_slack.py | 2 +-
.../tests/system/slack/example_slack_webhook.py | 2 +-
.../tests/system/slack/example_sql_to_slack.py | 2 +-
.../system/slack/example_sql_to_slack_webhook.py | 2 +-
providers/smtp/README.rst | 6 +-
providers/smtp/docs/changelog.rst | 11 +
providers/smtp/docs/index.rst | 6 +-
providers/smtp/provider.yaml | 3 +-
providers/smtp/pyproject.toml | 6 +-
.../smtp/src/airflow/providers/smtp/__init__.py | 2 +-
providers/snowflake/README.rst | 6 +-
providers/snowflake/docs/changelog.rst | 16 +
providers/snowflake/docs/index.rst | 6 +-
providers/snowflake/provider.yaml | 3 +-
providers/snowflake/pyproject.toml | 6 +-
.../src/airflow/providers/snowflake/__init__.py | 2 +-
.../snowflake/example_copy_into_snowflake.py | 2 +-
.../tests/system/snowflake/example_snowflake.py | 2 +-
.../system/snowflake/example_snowpark_decorator.py | 2 +-
.../system/snowflake/example_snowpark_operator.py | 2 +-
providers/sqlite/README.rst | 6 +-
providers/sqlite/docs/changelog.rst | 11 +
providers/sqlite/docs/index.rst | 6 +-
providers/sqlite/provider.yaml | 3 +-
providers/sqlite/pyproject.toml | 6 +-
.../src/airflow/providers/sqlite/__init__.py | 2 +-
.../sqlite/tests/system/sqlite/example_sqlite.py | 2 +-
providers/ssh/README.rst | 7 +-
providers/ssh/docs/changelog.rst | 47 +
providers/ssh/docs/index.rst | 8 +-
providers/ssh/provider.yaml | 3 +-
providers/ssh/pyproject.toml | 8 +-
.../ssh/src/airflow/providers/ssh/__init__.py | 2 +-
providers/standard/README.rst | 6 +-
providers/standard/docs/changelog.rst | 18 +
providers/standard/docs/index.rst | 6 +-
providers/standard/provider.yaml | 3 +-
providers/standard/pyproject.toml | 6 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
providers/tableau/README.rst | 6 +-
providers/tableau/docs/changelog.rst | 16 +
providers/tableau/docs/index.rst | 6 +-
providers/tableau/provider.yaml | 3 +-
providers/tableau/pyproject.toml | 6 +-
.../src/airflow/providers/tableau/__init__.py | 2 +-
.../tests/system/tableau/example_tableau.py | 2 +-
providers/telegram/README.rst | 6 +-
providers/telegram/docs/changelog.rst | 11 +
providers/telegram/docs/index.rst | 6 +-
providers/telegram/provider.yaml | 3 +-
providers/telegram/pyproject.toml | 6 +-
.../src/airflow/providers/telegram/__init__.py | 2 +-
.../tests/system/telegram/example_telegram.py | 2 +-
providers/teradata/README.rst | 6 +-
providers/teradata/docs/changelog.rst | 11 +
providers/teradata/docs/index.rst | 6 +-
providers/teradata/provider.yaml | 3 +-
providers/teradata/pyproject.toml | 6 +-
.../src/airflow/providers/teradata/__init__.py | 2 +-
.../example_azure_blob_to_teradata_transfer.py | 2 +-
.../teradata/tests/system/teradata/example_bteq.py | 2 +-
.../tests/system/teradata/example_remote_bteq.py | 2 +-
.../tests/system/teradata/example_remote_tpt.py | 2 +-
.../teradata/example_s3_to_teradata_transfer.py | 2 +-
.../tests/system/teradata/example_ssl_teradata.py | 2 +-
.../tests/system/teradata/example_teradata.py | 2 +-
.../system/teradata/example_teradata_call_sp.py | 2 +-
.../teradata/example_teradata_compute_cluster.py | 2 +-
.../example_teradata_to_teradata_transfer.py | 2 +-
.../teradata/tests/system/teradata/example_tpt.py | 2 +-
providers/trino/README.rst | 6 +-
providers/trino/docs/changelog.rst | 11 +
providers/trino/docs/index.rst | 6 +-
providers/trino/provider.yaml | 3 +-
providers/trino/pyproject.toml | 6 +-
.../trino/src/airflow/providers/trino/__init__.py | 2 +-
.../tests/system/trino/example_gcs_to_trino.py | 2 +-
.../trino/tests/system/trino/example_trino.py | 2 +-
providers/vertica/README.rst | 6 +-
providers/vertica/docs/changelog.rst | 11 +
providers/vertica/docs/index.rst | 6 +-
providers/vertica/provider.yaml | 3 +-
providers/vertica/pyproject.toml | 6 +-
.../src/airflow/providers/vertica/__init__.py | 2 +-
{airflow-core => providers/vespa}/.gitignore | 0
LICENSE => providers/vespa/LICENSE | 0
NOTICE => providers/vespa/NOTICE | 0
providers/{imap => vespa}/README.rst | 19 +-
.../vespa/docs/changelog.rst | 20 +-
providers/{common/io => vespa}/docs/commits.rst | 6 +-
providers/{vertica => vespa}/docs/conf.py | 2 +-
providers/vespa/docs/connections.rst | 71 ++
providers/{imap => vespa}/docs/index.rst | 42 +-
.../docs/installing-providers-from-sources.rst | 0
.../qdrant.rst => vespa/docs/operators/vespa.rst} | 28 +-
providers/{airbyte => vespa}/docs/security.rst | 0
providers/vespa/provider.yaml | 156 +++
providers/{imap => vespa}/pyproject.toml | 17 +-
.../vespa/src/airflow}/__init__.py | 0
.../vespa/src/airflow/providers}/__init__.py | 0
.../src/airflow/providers/vespa}/__init__.py | 4 +-
.../airflow/providers/vespa/get_provider_info.py | 110 ++
.../src/airflow/providers/vespa/hooks}/__init__.py | 0
.../src/airflow/providers/vespa/hooks/vespa.py | 356 ++++++
.../airflow/providers/vespa/operators}/__init__.py | 0
.../providers/vespa/operators/vespa_ingest.py | 101 ++
.../airflow/providers/vespa/triggers}/__init__.py | 0
.../providers/vespa/triggers/vespa_feed_trigger.py | 104 ++
providers/{airbyte => vespa}/tests/conftest.py | 0
.../vespa/tests/system}/__init__.py | 0
.../vespa/tests/system/vespa}/__init__.py | 0
.../vespa/tests/system/vespa/example_dag_vespa.py | 112 ++
.../vespa/tests/unit}/__init__.py | 0
.../vespa/tests/unit/vespa}/__init__.py | 0
.../vespa/tests/unit/vespa/hooks}/__init__.py | 0
.../vespa/tests/unit/vespa/hooks/test_vespa.py | 727 +++++++++++
.../vespa/tests/unit/vespa/operators}/__init__.py | 0
.../unit/vespa/operators/test_vespa_ingest.py | 243 ++++
.../vespa/tests/unit/vespa/triggers}/__init__.py | 0
.../unit/vespa/triggers/test_vespa_feed_trigger.py | 243 ++++
providers/weaviate/README.rst | 6 +-
providers/weaviate/docs/changelog.rst | 11 +
providers/weaviate/docs/index.rst | 6 +-
providers/weaviate/provider.yaml | 3 +-
providers/weaviate/pyproject.toml | 6 +-
.../src/airflow/providers/weaviate/__init__.py | 2 +-
.../system/weaviate/example_weaviate_cohere.py | 2 +-
.../example_weaviate_dynamic_mapping_dag.py | 2 +-
.../system/weaviate/example_weaviate_openai.py | 2 +-
.../system/weaviate/example_weaviate_operator.py | 2 +-
.../system/weaviate/example_weaviate_using_hook.py | 2 +-
.../weaviate/example_weaviate_vectorizer_dag.py | 2 +-
.../example_weaviate_without_vectorizer_dag.py | 2 +-
providers/yandex/README.rst | 10 +-
providers/yandex/docs/changelog.rst | 13 +
providers/yandex/docs/index.rst | 6 +-
providers/yandex/provider.yaml | 3 +-
providers/yandex/pyproject.toml | 6 +-
.../src/airflow/providers/yandex/__init__.py | 2 +-
.../tests/system/yandex/example_yandexcloud.py | 2 +-
.../system/yandex/example_yandexcloud_dataproc.py | 2 +-
.../example_yandexcloud_dataproc_lightweight.py | 2 +-
.../tests/system/yandex/example_yandexcloud_yq.py | 2 +-
providers/ydb/README.rst | 6 +-
providers/ydb/docs/changelog.rst | 11 +
providers/ydb/docs/index.rst | 6 +-
providers/ydb/provider.yaml | 3 +-
providers/ydb/pyproject.toml | 6 +-
.../ydb/src/airflow/providers/ydb/__init__.py | 2 +-
providers/ydb/tests/system/ydb/example_ydb.py | 2 +-
providers/zendesk/README.rst | 6 +-
providers/zendesk/docs/changelog.rst | 11 +
providers/zendesk/docs/index.rst | 6 +-
providers/zendesk/provider.yaml | 3 +-
providers/zendesk/pyproject.toml | 6 +-
.../src/airflow/providers/zendesk/__init__.py | 2 +-
.../system/zendesk/example_zendesk_custom_get.py | 2 +-
pyproject.toml | 283 ++++-
registry/pnpm-lock.yaml | 11 +-
registry/pnpm-workspace.yaml | 3 +
reproducible_build.yaml | 4 +-
scripts/ci/docker-compose/remove-sources.yml | 7 +-
scripts/ci/docker-compose/tests-sources.yml | 1 +
.../ci/prek/check_airflowctl_command_coverage.py | 34 +-
scripts/ci/prek/check_airflowctl_help_texts.py | 87 ++
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 +++++++
scripts/ci/prek/common_prek_utils.py | 61 +-
scripts/ci/prek/known_airflow_exceptions.txt | 432 +++++++
scripts/ci/prek/ruff_format.py | 2 +-
scripts/ci/prek/supported_versions.py | 2 +-
scripts/ci/prek/update_airflow_pyproject_toml.py | 41 +
scripts/ci/prek/upgrade_important_versions.py | 10 +-
.../in_container/install_airflow_and_providers.py | 5 +-
.../in_container/run_capture_airflowctl_help.py | 1 +
scripts/tests/ci/prek/test_common_prek_utils.py | 14 +
.../src/airflow_shared/configuration/parser.py | 1 +
task-sdk/src/airflow/sdk/_shared/AGENTS.md | 2 +-
task-sdk/src/airflow/sdk/bases/decorator.py | 8 +
task-sdk/src/airflow/sdk/execution_time/comms.py | 2 +-
task-sdk/tests/task_sdk/bases/test_decorator.py | 33 +
.../tests/task_sdk/execution_time/test_comms.py | 49 +-
uv.lock | 930 ++++++++------
1312 files changed, 22116 insertions(+), 5565 deletions(-)
copy scripts/ci/docker-compose/debug-ports.yml =>
.github/workflows/scheduled-upgrade-check-main.yml (67%)
copy .github/{zizmor.yml => workflows/scheduled-upgrade-check-v3-2-test.yml}
(65%)
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/src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstance/ExtraLinks.test.tsx
create mode 100644 airflow-ctl/docs/images/output_plugins.svg
create mode 100644 airflow-ctl/src/airflowctl/ctl/help_texts.yaml
create mode 100644 chart/newsfragments/62054.significant.rst
create mode 100644 chart/newsfragments/64730.significant.rst
create mode 100644 chart/newsfragments/64734.significant.rst
create mode 100644 chart/newsfragments/64739.significant.rst
create mode 100644 chart/newsfragments/64741.significant.rst
create mode 100644 chart/newsfragments/64746.significant.rst
create mode 100644 chart/newsfragments/64841.significant.rst
create mode 100644 chart/newsfragments/64860.significant.rst
create mode 100644 chart/newsfragments/64976.significant.rst
create mode 100644 chart/newsfragments/64980.significant.rst
create mode 100644 chart/newsfragments/64982.significant.rst
create mode 100644 chart/newsfragments/65027.significant.rst
create mode 100644 chart/newsfragments/65030.significant.rst
create mode 100644 chart/newsfragments/65033.significant.rst
create mode 100644 chart/newsfragments/65056.significant.rst
create mode 100644 chart/newsfragments/65059.significant.rst
copy chart/templates/{dag-processor/dag-processor-serviceaccount.yaml =>
workers/worker-kubernetes-serviceaccount.yaml} (52%)
create mode 100644
dev/breeze/doc/images/output_release-management_generate-issue-content-airflow-ctl.svg
create mode 100644
dev/breeze/doc/images/output_release-management_generate-issue-content-airflow-ctl.txt
create mode 100644 dev/breeze/src/airflow_breeze/utils/pr_vault.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/reproduce_ci.py
create mode 100644 dev/breeze/tests/test_author_cache.py
create mode 100644 dev/breeze/tests/test_cache_validation.py
create mode 100644 dev/breeze/tests/test_pr_vault.py
create mode 100644 dev/breeze/tests/test_reproduce_ci.py
copy providers/{fab/src/airflow/providers/fab/www/airflow_flask_app.py =>
common/ai/tests/unit/common/ai/plugins/test_hitl_review_compat.py} (54%)
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%)
copy {airflow-core => providers/vespa}/.gitignore (100%)
copy LICENSE => providers/vespa/LICENSE (100%)
copy NOTICE => providers/vespa/NOTICE (100%)
copy providers/{imap => vespa}/README.rst (86%)
copy providers-summary-docs/core-extensions/configurations.rst =>
providers/vespa/docs/changelog.rst (66%)
copy providers/{common/io => vespa}/docs/commits.rst (94%)
copy providers/{vertica => vespa}/docs/conf.py (99%)
create mode 100644 providers/vespa/docs/connections.rst
copy providers/{imap => vespa}/docs/index.rst (74%)
copy providers/{airbyte => vespa}/docs/installing-providers-from-sources.rst
(100%)
copy providers/{qdrant/docs/operators/qdrant.rst =>
vespa/docs/operators/vespa.rst} (52%)
copy providers/{airbyte => vespa}/docs/security.rst (100%)
create mode 100644 providers/vespa/provider.yaml
copy providers/{imap => vespa}/pyproject.toml (90%)
copy {airflow-core/tests/integration =>
providers/vespa/src/airflow}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/vespa/src/airflow/providers}/__init__.py (100%)
copy providers/{redis/src/airflow/providers/redis =>
vespa/src/airflow/providers/vespa}/__init__.py (94%)
create mode 100644
providers/vespa/src/airflow/providers/vespa/get_provider_info.py
copy {airflow-core/src/airflow/_shared =>
providers/vespa/src/airflow/providers/vespa/hooks}/__init__.py (100%)
create mode 100644 providers/vespa/src/airflow/providers/vespa/hooks/vespa.py
copy {airflow-core/src/airflow/_shared =>
providers/vespa/src/airflow/providers/vespa/operators}/__init__.py (100%)
create mode 100644
providers/vespa/src/airflow/providers/vespa/operators/vespa_ingest.py
copy {airflow-core/src/airflow/_shared =>
providers/vespa/src/airflow/providers/vespa/triggers}/__init__.py (100%)
create mode 100644
providers/vespa/src/airflow/providers/vespa/triggers/vespa_feed_trigger.py
copy providers/{airbyte => vespa}/tests/conftest.py (100%)
copy {airflow-core/tests/integration =>
providers/vespa/tests/system}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/vespa/tests/system/vespa}/__init__.py (100%)
create mode 100644 providers/vespa/tests/system/vespa/example_dag_vespa.py
copy {airflow-core/tests/integration =>
providers/vespa/tests/unit}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/vespa/tests/unit/vespa}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/vespa/tests/unit/vespa/hooks}/__init__.py (100%)
create mode 100644 providers/vespa/tests/unit/vespa/hooks/test_vespa.py
copy {airflow-core/src/airflow/_shared =>
providers/vespa/tests/unit/vespa/operators}/__init__.py (100%)
create mode 100644
providers/vespa/tests/unit/vespa/operators/test_vespa_ingest.py
copy {airflow-core/src/airflow/_shared =>
providers/vespa/tests/unit/vespa/triggers}/__init__.py (100%)
create mode 100644
providers/vespa/tests/unit/vespa/triggers/test_vespa_feed_trigger.py
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