This is an automated email from the ASF dual-hosted git repository.
jason810496 pushed a change to branch jason/java-sdk/pack-dag-sources
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard ecdfaf97cb0 Java SDK: Pack each native Dag's source file into the
bundle JAR
discard a20a19693ac Java SDK: Record the class that declares each Dag and
describe it on request
discard f3a4f20456f Java SDK: Check native Dag serialization against Airflow's
discard 84ce9b9dc7e Java SDK: Write each Dag tag once, as Python does
discard 86b419352d9 Java SDK: Serialize a native Dag's task groups
discard b39e0189a2e Java SDK: Leave out the email flags a Java task cannot act
on
discard 01b33f80ac5 Java SDK: Leave config-backed Dag fields for Airflow to
fill in
discard 4fb2373f527 Test that the conformance check compares Dag params
discard d383540ea09 Java SDK: Serialize native Dags to DagSerialization v3 on
parse requests
discard ed72edce7a9 Java SDK: Group a native Dag's tasks with task groups
omit ff8ec8f1a91 Java SDK: Fix the Dag examples a required wiring class
invalidates
omit 162a3ffaa4e Java SDK: Reject overloaded task and task-handler methods
omit c394f9d7589 Java SDK: Back the k8s test's stub tasks with task handlers
omit 23be1d072a6 Java SDK: Require a @Builder.Deps class on every
@Builder.Dag class
omit 0dc60cd77a3 Java SDK: Drop Bundle tests that repeat existing coverage
omit 4dadc5dc96f Java SDK: Reword the native-Dag docs without em-dashes
omit 14c180a8278 Java SDK: Reject a raw null wiring argument and test the
recorder's guards
omit 37a076564fc Java SDK: Register both the Dag and handlers of a class,
unwrapping builder failures
omit 202e9c772c3 Java SDK: Type a wired numeric input by its parameter's
own type
omit 79e339556d5 Java SDK: Reject task method names that clash with the
wiring view
omit 2e4bec76b5f Java SDK: Validate the @Builder.Deps class at compile time
omit 8d92b50fc44 Java SDK: Quote wired task ids as Java string literals
omit 0ae164080c0 Java SDK: Declare a Dag's task graph with @Builder.Deps
add e3dd28607b9 Document team-scoped plugins in multi-team mode (#73995)
add b62299ced8a Cap microsoft-kiota-http below 1.13 in the Microsoft Azure
provider (#74090)
add d7b672f44e0 Update docs and diagrams for the Airflow 3 Dag processor
(#74073)
add ec5b621a9cc Prepare ad-hoc providers release 2026-10-02 (#74097)
add 7800fc44c07 Fix scheduler crash on restart with queued or running Edge
tasks (#73832)
add 49a52987956 Stop version-check hooks from clobbering the committing
worktree's index (#74115)
add d7b88f36197 UI: Fix external plugin nav links not navigating on click
(#73913)
add 66d751bfd22 Skip already-released providers in
update-providers-next-version (#74098)
add 04194b1de1f Fix flaky Kafka trigger tests by awaiting the event
instead of a fixed sleep (#74124)
add 4c0ba9e41da Make Edge executor adoption test immune to executor_loader
reloads (#74122)
add 7a8ce83f385 Go SDK: reject a task function whose last result type is
not error (#74077)
add 9c14681a4a0 Add create and update support to Snowflake Cortex Agent
hook (#70703)
add e029fcef2bb Bump the registry-security-updates group across 1
directory with 3 updates (#74099)
add da28f1fcac4 Bump the auth-ui-package-updates group across 1 directory
with 5 updates (#74101)
add 971e8db54ea Bump the edge-ui-package-updates group across 1 directory
with 12 updates (#74107)
add 536f535d9dd Bump the core-ui-package-updates group across 1 directory
with 12 updates (#74105)
add 95826e38547 Bump the uv-dependency-updates group in /dev/breeze with 3
updates (#74100)
add df76e2e0d5e Bump the ui-plugin-template-package-updates group across 1
directory with 7 updates (#74102)
add 954d21df92d Bump vitest from 4.1.7 to 5.0.1 in /ts-sdk (#73483)
add 0adf1378017 Bump swagger-ui-dist from 5.32.15 to 5.33.0 in /registry
(#73480)
add e37a39aa34e Bump pyjwt from 2.14.0 to 2.15.0 in /dev/breeze (#73969)
add da53196d812 Time-box and retry pre-extras SDK downloads (#71544)
add 232c264968f Deprecate Dataproc ClusterGenerator helper class (#71427)
add b9c52951378 Create GCS folder markers as directories in
GCSToSFTPOperator (#73880)
add 91353550246 Honor download_num_attempts and upload_num_attempts in
GCSTimeSpanFileTransformOperator (#72953)
add 02f2c852c80 Shrink the CI image by skipping unused Rust docs and the
Go archive (#74076)
add 5523443d98c Set end date and duration on tasks skipped by a Dag run
timeout (#74128)
add 0f3a356e768 Add a user setting for the default search match mode
(#74021)
add 12ee0862774 Carry task attempt UUIDs through remote executor providers
(#73917)
add 867327c48dd Run only the tests that import a changed test helper
(#74055)
add da5af33fd02 Create the Athena Spark work group and results bucket in
the system test (#73929)
add c011b5960ac Install ibmmq from a wheel in IBM MQ lowest-dependency
tests (#74132)
add 855a2ce92f9 Isolate Edge job state by task attempt UUID (#73918)
add 79de1d48039 Fix `refresh_from_task` not applied on retries (#65932)
add bf558f6f29a Go SDK: add dag.If with Then and Else so native Dags can
branch (#74075)
add d21496f7581 Fetch existing task instances in instead of rebuilding
them in tests (#74146)
add 11d25a587ac Run leaking provider tests with providers changed after
them in CI (#74123)
add a89208e5405 Bump the github-actions-updates group across 1 directory
with 5 updates (#74110)
add 4ae133cd807 Bump @chakra-ui/react from 3.36.1 to 3.37.0 in
/airflow-core/src/airflow/ui (#72524)
add 484a87b54bc Add get_async_extra_dejson to the common.compat connection
helpers (#74147)
add e4736b46968 Pass ClientTimeout to aiohttp in Cloud Composer async hook
(#74164)
add f070997ba63 Go SDK: order tasks with Before, After and Label (#74119)
add 803cc82370d Update supported Kubernetes versions (#73798)
add 4a73cb7d5fa Keep builtin annotations from resolving to project
attributes in Sphinx 9 (#74168)
add 79bc6439a9c Always clear the session cookie on logout (#73788)
add a1b02e26f3d Support Python patch exclusions in provider metadata
(#73598)
add bdfc5555305 Add configurable request timeout for the Airbyte API
(#71092)
add b2c215cc037 Fix Beam async hook launching pipelines through a shell
(#72510)
add d2883eead5c Fix Cloud SQL 409 operationInProgress on import/export
operations (#68361)
add c688a6f0abc Add breeze verify to list local checks for changed files
(#73241)
add 07c9ceba527 Fail provider DB test jobs when their tests fail (#74172)
add 043f97c2b00 Test get_async_extra_dejson against the real supervisor
comms (#74166)
add 592cf3ffdd2 Use the current user in the HITL detail tests instead of
hardcoding (#74184)
add 8331bb485c5 Read the msgraph connection extra with
get_async_extra_dejson (#74161)
add b156582855c Fix OpenSearch provider log pagination (#73947)
add c8b136358ce Allow OpensearchTaskHandler and OpensearchRemoteLogIO to
take empty username and password (#71692)
add cc94831e213 Fix docstring cross-references that Sphinx 9 cannot
resolve (#74169)
add b58cfa912a9 Add an API endpoint and UI tab comparing two stored Dag
versions (#73322)
add d1d5b1af26e Adapt GCP BigtableHook to run in private cloud (#73181)
add b3674d43be0 `SparkSubmitHook`: Mask `_mask_cmd` secrets in linear time
(#71711)
add 8d5814c09d5 Bump the react group across 1 directory with 4 updates
(#73334)
add 7e448f70af5 Use async database access for Variable key listing (#73407)
add 523567e47d0 Add tests for Google Go module subprocess utility (#73268)
add 4a766db2b03 Bump the typescript group across 1 directory with 4
updates (#72994)
add 7fad35d9c99 Add deadline alert coverage to Dag endpoint tests (#72296)
add 6f5d5d06b17 Align standard provider tests with source paths (#73267)
add c2f600f6ec6 Add airflowctl tasks state command (#71206)
add 86b8a521837 Bind the AWS auth manager SAML response to the browser
that started the login (#73698)
add cefc0c3239d Bump the java-sdk-dependency-updates group across 1
directory with 3 updates (#74108)
add 2a274ab3c93 Refuse nested secret ids looked up with no team in
multi-team mode (#73789)
add 8055f6a8717 Skip creating an empty hook lineage collector for
OpenLineage events (#74190)
add 38fefc1ca95 Fix invalid cron expression in OpenLineage system test Dag
(#74187)
add 27f827fcdce Honor the polling interval for deferred Kubernetes jobs
(#74143)
add 3bd4df6b2da Fix Snowflake SQL API wait_for_query timing out on
finished queries (#73761)
add f74a685978c Use configured default queue for Celery executor callbacks
(#73552)
add ad3bb1f676c Replace coordinator artifact roots with
task_handler_bundle_name (#73970)
add 1c3f78e1d57 Validate a serialized Dag and fill its unset settings from
the Airflow config (#74041)
add a44fd6d1f31 Allow explicit runs to drain a paused Dag (#73763)
add 40832901c59 Improve LocalExecutor bookkeeping: correctly add tasks to
the `running` list (#74142)
add 5487c080bea Add Azure Blob Storage support to the DataFusion object
storage layer (#73374)
add b191cc4767b Fail instead of silently falling behind when a Lang-SDK
vendored Dag schema drifts from airflow-core (#74091)
add e0202f40c78 Let a Dag importer find the coordinator that parses its
files (#74042)
add 94a677e8f87 Keep callback triggers assigned to healthy triggerers
(#72848)
add 4e1f2aca67f Keep the Dag trigger button one-click when a run has
config (#74039)
add bfe84598a52 Fix destination path validation in GCS-to-SFTP transfers
(#74186)
add 8239997bf20 Scope UI next_run_assets endpoint to assets the caller may
read (#72862)
add 7df6f0e69cc Parse native Lang-SDK Dags in the Dag processor with their
runtime (#74035)
add cffc14d173b Parse native Lang-SDK Dags in a Dag bag (#74043)
add e08216d0081 Go SDK: delete the XComs of earlier tries before a task
runs (#74178)
add ae082ab651f Go SDK: add dag.TaskGroup with nesting and group-level
edges (#74214)
add fa65343163d Remove FAB-related exclusion in SQLA tests (#74180)
add dbee3c6c11b Fix concurrent SFTP directory transfers dropping parent
hook's connection overrides (#73647)
add b79acc8a8d6 Fix google provider BQ openlineage checks (#71777)
add d6ab1aad3c6 Register TypeScript, Java and Go grammars for the Dag Code
tab (#74231)
add 747f69b1a8c Warn when db clean skips only some rows of a batch (#73568)
add 9b2cc1352c3 Handle plain Step Functions execution errors (#73881)
add d339bb2767a Fix Dataproc triggers swallowing task cancellation (#74192)
add e0e3454998f Add v3-4-test to CI, dependabot, backport, and fork-sync
configuration (#74219)
add 98e753847a3 Distinguish credential failures from AWS waiter exhaustion
(#73870)
add 71f98d3ac00 UI: Group digits of counters according to the selected
locale (#73713)
add 2d734dc9842 UI: Deflake backfill e2e tests on WebKit (#74200)
add 20f90a6e105 UI: Keep Dags list table rows on a single line (#74002)
add dafa0555a0e Bump stylelint (#74252)
add 08fae625769 Add datafusion handler for google cleanup script (#74234)
add 11bf87404c2 Restrict the second render pass in
SqlToSlackWebhookOperator (#71402)
add a048842a72a Fix google provider system tests dag version increase
issues (#72194)
add 48f6b517397 Require moto 5.2.2 or newer for the Amazon provider tests
(#74224)
add eb89b4092b9 Fix SSH commands failing when the task holds over 1024
file descriptors (#74211)
add 86aef85e35c Keep S3 Dag bundle downloads within the configured
directory (#73756)
add 1ab53cd8e38 Keep the Dag asset schedule the same shape for every
caller (#73805)
add fbdec9503c7 Support Table objects in BigQueryHook.create_table
table_resource (#73099)
add 67853607ab2 Add async Variable methods (aget, aset, adelete, akeys)
(#72329)
add 353d856281c Stop Kafka hook tests from leaving live clients behind
(#74285)
add b2786de47b7 Close German Translation Gaps 2026-10-05 (#74264)
add 2b33f02539a UI: Open provider connection fields by default and title
them by connection type (#74273)
add d4a47caaf09 Notify downstream Dags when COPY INTO writes a Unity
(Databricks) table (#74191)
add 51184d53a52 Clarify Dag processor scoping and team config in
Multi-Team docs (#73958)
add c9abbdbdb87 Bump the auth-ui-package-updates group across 1 directory
with 5 updates (#74254)
add 2793a170be5 Fix connection screenshots missing from the msgraph and
IBM MQ docs (#74287)
add f5774789ea0 Pr/split storage tab (#73989)
add 3a7e6031c6f corrected label for filter (#74189)
add 758ebbd35f4 Document decision models served over the System One API in
common.ai (#74266)
add 37df9a5a4ac Wait for the Lang-SDK runtime's descriptors to settle
before checking them (#74288)
add fd7ac131553 Clarify how the providers vote result lists voters (#73883)
add ed1435c2b57 UI: Surface Dag run conf in the header (#73987)
add 9c1bb68c41f Increase worker startup timeout in LocalExecutor process
death test (#74292)
add 5ec2045d474 Fix PostgresToGCSOperator fetching one row at a time with
psycopg3 (#73324)
add 00bc44480c7 Apply impersonation_chain to deferred BigQuery existence
checks (#71648)
add 69f98974344 Look up task logs by task try UUID (#74204)
add 65596fb5ae6 Bump the eslint group across 1 directory with 5 updates
(#73488)
add 9081eda445e Support Pydantic structured outputs in
`OpenAIResponseOperator` (#69812)
add 31b774803ce Correct usage_limits=None docstring on AgentOperator and
LLMOperator (#74307)
add ab4da0b5636 Java SDK: Declare a Dag's task graph with @Builder.Deps
(#71189)
add 81e6d36f676 Java SDK: Group a native Dag's tasks with task groups
add e41b8613d25 Java SDK: Serialize native Dags to DagSerialization v3 on
parse requests
add 8612ff72cdb Test that the conformance check compares Dag params
add 4e41209eb68 Java SDK: Leave config-backed Dag fields for Airflow to
fill in
add 011b248e26b Java SDK: Leave out the email flags a Java task cannot act
on
add 3e25da5c719 Java SDK: Serialize a native Dag's task groups
add ad6c51a5179 Java SDK: Write each Dag tag once, as Python does
add a1c826eefc3 Java SDK: Check native Dag serialization against Airflow's
add 2e38a8cf2dc Java SDK: Record the class that declares each Dag and
describe it on request
add 7c5001f627f Java SDK: Pack each native Dag's source file into the
bundle JAR
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (ecdfaf97cb0)
\
N -- N -- N refs/heads/jason/java-sdk/pack-dag-sources
(7c5001f627f)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.agents/skills/airflow-java-sdk/SKILL.md | 11 +-
.agents/skills/airflow-publish-changes/SKILL.md | 2 +-
.../prepare-providers-documentation/SKILL.md | 6 +-
.apache-magpie-overrides/release-vote-tally.md | 63 +
.github/boring-cyborg.yml | 6 +-
.github/dependabot.yml | 34 +-
.github/workflows/ci-notification.yml | 4 +-
.github/workflows/codeql-analysis.yml | 6 +-
.github/workflows/java-sdk-dependency-security.yml | 6 +-
.github/workflows/milestone-tag-assistant.yml | 1 +
.github/workflows/notify-uv-lock-conflicts.yml | 2 +-
.github/workflows/registry-tests.yml | 2 +-
...t.yml => scheduled-upgrade-check-v3-4-test.yml} | 8 +-
.../scheduled-verify-release-calendar.yml | 2 +-
.pre-commit-config.yaml | 42 +-
AGENTS.md | 1 +
Dockerfile | 5 +-
Dockerfile.ci | 14 +-
README.md | 16 +-
airflow-core/adr/lang-sdk/0004-dag-parsing.md | 12 +-
.../adr/lang-sdk/0010-native-dag-processing.md | 118 +-
.../0013-persisted-task-handler-bindings.md | 2 +-
.../cluster-policies.rst | 11 +-
.../modules_management.rst | 2 +-
.../docs/administration-and-deployment/plugins.rst | 172 +-
.../authoring-and-scheduling/language-sdks/go.rst | 93 +-
.../language-sdks/index.rst | 6 +-
.../language-sdks/java.rst | 112 +-
.../language-sdks/typescript.rst | 85 +-
airflow-core/docs/best-practices.rst | 10 +-
airflow-core/docs/core-concepts/backfill.rst | 7 +-
airflow-core/docs/core-concepts/dags.rst | 19 +-
airflow-core/docs/core-concepts/multi-team.rst | 85 +-
airflow-core/docs/core-concepts/overview.rst | 4 +-
.../img/diagram_basic_airflow_architecture.md5sum | 2 +-
.../img/diagram_basic_airflow_architecture.png | Bin 116194 -> 127853
bytes
.../docs/img/diagram_basic_airflow_architecture.py | 9 +-
...agram_dag_processor_airflow_architecture.md5sum | 2 +-
.../diagram_dag_processor_airflow_architecture.png | Bin 237657 -> 237572
bytes
.../diagram_dag_processor_airflow_architecture.py | 23 +-
...diagram_distributed_airflow_architecture.md5sum | 2 +-
.../diagram_distributed_airflow_architecture.png | Bin 192497 -> 215541
bytes
.../diagram_distributed_airflow_architecture.py | 20 +-
airflow-core/docs/installation/prerequisites.rst | 2 +-
airflow-core/docs/security/api_permissions_ref.rst | 4 +
airflow-core/docs/security/security_model.rst | 9 +
airflow-core/newsfragments/72407.significant.rst | 10 +-
airflow-core/newsfragments/73970.significant.rst | 5 +
.../auth/managers/simple/ui/package.json | 18 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 411 +--
.../src/airflow/api_fastapi/auth/tokens.py | 24 +-
.../api_fastapi/core_api/datamodels/backfills.py | 8 +
.../api_fastapi/core_api/datamodels/dag_run.py | 7 +
.../core_api/datamodels/dag_versions.py | 158 ++
.../api_fastapi/core_api/datamodels/ui/assets.py | 6 +
.../api_fastapi/core_api/openapi/_private_ui.yaml | 4 +
.../core_api/openapi/v2-rest-api-generated.yaml | 301 +++
.../api_fastapi/core_api/routes/public/assets.py | 10 +
.../api_fastapi/core_api/routes/public/auth.py | 9 +-
.../core_api/routes/public/backfills.py | 17 +-
.../api_fastapi/core_api/routes/public/dag_run.py | 11 +
.../core_api/routes/public/dag_versions.py | 98 +-
.../api_fastapi/core_api/routes/ui/assets.py | 19 +-
.../api_fastapi/execution_api/routes/variables.py | 10 +-
.../src/airflow/cli/commands/dag_command.py | 9 +-
.../src/airflow/cli/commands/task_command.py | 5 +-
.../src/airflow/config_templates/config.yml | 31 +-
airflow-core/src/airflow/dag_processing/dagbag.py | 157 +-
.../src/airflow/dag_processing/importer_routing.py | 52 +
.../airflow/dag_processing/lang_sdk_processor.py | 579 +++++
airflow-core/src/airflow/dag_processing/manager.py | 48 +-
.../src/airflow/dag_processing/processor.py | 71 +-
.../src/airflow/executors/local_executor.py | 75 +-
.../src/airflow/jobs/scheduler_job_runner.py | 3 +-
airflow-core/src/airflow/models/backfill.py | 3 +
airflow-core/src/airflow/models/dag.py | 16 +
airflow-core/src/airflow/models/dagrun.py | 4 +
airflow-core/src/airflow/models/trigger.py | 1 +
airflow-core/src/airflow/provider.yaml.schema.json | 5 +-
.../src/airflow/serialization/dag_version_diff.py | 3 +-
.../src/airflow/serialization/definitions/dag.py | 2 +
airflow-core/src/airflow/serialization/schema.json | 13 +-
.../airflow/serialization/serialized_objects.py | 96 +
.../src/airflow/ui/openapi-gen/queries/common.ts | 18 +
.../ui/openapi-gen/queries/ensureQueryData.ts | 38 +
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 38 +
.../src/airflow/ui/openapi-gen/queries/queries.ts | 38 +
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 38 +
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 211 ++
.../ui/openapi-gen/requests/services.gen.ts | 72 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 156 ++
airflow-core/src/airflow/ui/package.json | 52 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 2700 ++++++++++----------
.../airflow/ui/public/i18n/locales/ar/admin.json | 1 -
.../ui/public/i18n/locales/ar/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/ar/dag.json | 1 -
.../airflow/ui/public/i18n/locales/ca/admin.json | 1 -
.../ui/public/i18n/locales/ca/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/ca/dag.json | 1 -
.../airflow/ui/public/i18n/locales/de/admin.json | 1 -
.../airflow/ui/public/i18n/locales/de/common.json | 7 +
.../ui/public/i18n/locales/de/components.json | 16 +-
.../src/airflow/ui/public/i18n/locales/de/dag.json | 64 +-
.../airflow/ui/public/i18n/locales/de/dags.json | 7 +
.../airflow/ui/public/i18n/locales/el/admin.json | 1 -
.../ui/public/i18n/locales/el/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/el/dag.json | 1 -
.../airflow/ui/public/i18n/locales/en/admin.json | 2 +-
.../airflow/ui/public/i18n/locales/en/common.json | 7 +
.../ui/public/i18n/locales/en/components.json | 16 +-
.../src/airflow/ui/public/i18n/locales/en/dag.json | 64 +-
.../airflow/ui/public/i18n/locales/es/admin.json | 1 -
.../ui/public/i18n/locales/es/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/es/dag.json | 1 -
.../airflow/ui/public/i18n/locales/fr/admin.json | 1 -
.../ui/public/i18n/locales/fr/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/fr/dag.json | 1 -
.../airflow/ui/public/i18n/locales/he/admin.json | 1 -
.../ui/public/i18n/locales/he/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/he/dag.json | 1 -
.../airflow/ui/public/i18n/locales/hi/admin.json | 1 -
.../ui/public/i18n/locales/hi/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/hi/dag.json | 1 -
.../airflow/ui/public/i18n/locales/hu/admin.json | 1 -
.../ui/public/i18n/locales/hu/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/hu/dag.json | 1 -
.../airflow/ui/public/i18n/locales/it/admin.json | 1 -
.../ui/public/i18n/locales/it/components.json | 4 +-
.../airflow/ui/public/i18n/locales/ja/admin.json | 1 -
.../ui/public/i18n/locales/ja/components.json | 4 +-
.../airflow/ui/public/i18n/locales/ko/admin.json | 1 -
.../ui/public/i18n/locales/ko/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/ko/dag.json | 1 -
.../airflow/ui/public/i18n/locales/nl/admin.json | 1 -
.../ui/public/i18n/locales/nl/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/nl/dag.json | 1 -
.../airflow/ui/public/i18n/locales/pl/admin.json | 1 -
.../ui/public/i18n/locales/pl/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/pl/dag.json | 1 -
.../airflow/ui/public/i18n/locales/pt/admin.json | 1 -
.../ui/public/i18n/locales/pt/components.json | 4 +-
.../airflow/ui/public/i18n/locales/ru/admin.json | 1 -
.../ui/public/i18n/locales/ru/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/ru/dag.json | 1 -
.../airflow/ui/public/i18n/locales/th/admin.json | 1 -
.../ui/public/i18n/locales/th/components.json | 4 +-
.../airflow/ui/public/i18n/locales/tr/admin.json | 1 -
.../ui/public/i18n/locales/tr/components.json | 4 +-
.../ui/public/i18n/locales/zh-CN/admin.json | 1 -
.../ui/public/i18n/locales/zh-CN/components.json | 4 +-
.../airflow/ui/public/i18n/locales/zh-CN/dag.json | 1 -
.../ui/public/i18n/locales/zh-TW/admin.json | 1 -
.../ui/public/i18n/locales/zh-TW/components.json | 4 +-
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 1 -
airflow-core/src/airflow/ui/rules/i18n.js | 8 +-
airflow-core/src/airflow/ui/rules/rem.js | 11 +-
.../components/ActionAccordion/ActionAccordion.tsx | 6 +-
.../src/airflow/ui/src/components/AnsiRenderer.tsx | 6 +-
.../src/components/AssetExpression/AssetNode.tsx | 7 +-
.../ui/src/components/AssetProgressCell.tsx | 6 +-
.../ui/src/components/Assets/AssetEvents.tsx | 6 +-
.../ui/src/components/Assets/ListPopover.tsx | 46 +-
.../ui/src/components/Assets/TriggeredRuns.tsx | 6 +-
.../ClearTaskInstanceConfirmationDialog.tsx | 4 +-
.../Clear/TaskInstance/ClearTaskInstanceDialog.tsx | 3 +-
.../DAGWarningsModal.test.tsx} | 25 +-
.../airflow/ui/src/components/DAGWarningsModal.tsx | 4 +
.../components/DagActions/RunBackfillForm.test.tsx | 97 +-
.../src/components/DagActions/RunBackfillForm.tsx | 35 +-
.../ui/src/components/DataTable/DataTable.tsx | 4 +-
.../airflow/ui/src/components/DateTimeInput.tsx | 7 +-
.../airflow/ui/src/components/DurationChart.tsx | 2 +-
.../ui/src/components/FilterBar/FilterBar.tsx | 6 +-
.../FilterBar/filters/DateRangeCalendar.tsx | 10 +-
.../FilterBar/filters/DateRangeInputs.tsx | 5 +-
.../airflow/ui/src/components/FilterBar/utils.ts | 6 +-
.../components/FlexibleForm/FieldMultiSelect.tsx | 9 +-
.../src/components/FlexibleForm/FieldSelector.tsx | 14 +-
.../airflow/ui/src/components/Graph/DagNode.tsx | 2 +-
.../ui/src/components/Graph/SegmentedStateBar.tsx | 8 +-
.../airflow/ui/src/components/Graph/TaskLink.tsx | 6 +-
.../ImportErrorCount.test.tsx} | 36 +-
.../airflow/ui/src/components/ImportErrorCount.tsx | 7 +-
.../src/components/MonacoEditor/configureMonaco.ts | 122 +-
.../ui/src/components/MonacoEditor/index.tsx | 12 +-
.../airflow/ui/src/components/NeedsReviewBadge.tsx | 6 +-
.../src/airflow/ui/src/components/PoolBar.test.tsx | 24 +-
.../src/airflow/ui/src/components/PoolBar.tsx | 7 +-
.../ui/src/components/ReactMarkdownBlocks.tsx | 10 +-
.../ui/src/components/RenderedJsonField.tsx | 6 +-
.../ui/src/components/RollupKeyChecklist.tsx | 51 +-
.../ui/src/components/SqlParserProvider.tsx | 6 +-
.../StatsCard.test.tsx} | 23 +-
.../src/airflow/ui/src/components/StatsCard.tsx | 7 +-
.../ui/src/components/TaskInstanceTooltip.test.tsx | 30 +-
.../ui/src/components/TaskInstanceTooltip.tsx | 6 +-
.../src/airflow/ui/src/components/TaskName.tsx | 9 +-
.../airflow/ui/src/components/TrendCountButton.tsx | 12 +-
.../TriggerDag/PausedDagOptions.test.tsx | 250 ++
.../src/components/TriggerDag/PausedDagOptions.tsx | 123 +
.../TriggerDag/TriggerDAGButton.test.tsx | 102 +-
.../src/components/TriggerDag/TriggerDAGButton.tsx | 171 +-
.../components/TriggerDag/TriggerDAGForm.test.tsx | 78 +-
.../src/components/TriggerDag/TriggerDAGForm.tsx | 32 +-
.../components/TriggerDag/TriggerDAGModal.test.tsx | 238 ++
.../src/components/TriggerDag/TriggerDAGModal.tsx | 21 +-
.../airflow/ui/src/components/TriggerDag/types.ts | 3 +
.../src/components/VersionCompareSelect.test.tsx | 82 +
.../Code => components}/VersionCompareSelect.tsx | 4 +-
.../src/airflow/ui/src/constants/filterConfigs.tsx | 2 +-
.../src/airflow/ui/src/constants/localStorage.ts | 1 +
.../src/airflow/ui/src/constants/searchParams.ts | 3 +
airflow-core/src/airflow/ui/src/constants/tab.ts | 1 +
.../ui/src/hooks/navigation/useNavigation.ts | 7 +-
.../ui/src/hooks/useAdvancedSearch.test.tsx | 29 +-
.../src/airflow/ui/src/hooks/useAdvancedSearch.ts | 15 +-
.../airflow/ui/src/hooks/useUserSettings.test.tsx | 21 +
.../src/airflow/ui/src/hooks/useUserSettings.ts | 7 +
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 4 +-
.../ui/src/layouts/Details/DetailsLayout.tsx | 9 +-
.../ui/src/layouts/Details/Gantt/GanttTimeline.tsx | 12 +-
.../Graph/hooks/useFilteredNodesAndEdges.ts | 5 +-
.../layouts/Details/Graph/useGraphFilteredNodes.ts | 6 +-
.../airflow/ui/src/layouts/Nav/NavButton.test.tsx | 14 +
.../src/airflow/ui/src/layouts/Nav/NavButton.tsx | 8 +-
.../src/airflow/ui/src/layouts/StorageLayout.tsx | 40 -
.../src/airflow/ui/src/mocks/handlers/dags.ts | 5 +-
.../src/pages/Asset/CreateAssetEventModal.test.tsx | 161 +-
.../ui/src/pages/Asset/CreateAssetEventModal.tsx | 20 +-
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 6 +-
.../ui/src/pages/AssetsList/DependencyPopover.tsx | 6 +-
.../src/pages/Connections/ConnectionForm.test.tsx | 121 +
.../ui/src/pages/Connections/ConnectionForm.tsx | 14 +-
.../ui/src/pages/Connections/Connections.tsx | 6 +-
.../pages/Dag/Backfills/BackfillDagRunsModal.tsx | 22 +-
.../ui/src/pages/Dag/Calendar/CalendarCell.tsx | 5 +-
.../ui/src/pages/Dag/Calendar/CalendarTooltip.tsx | 25 +-
.../src/airflow/ui/src/pages/Dag/Code/Code.tsx | 2 +-
airflow-core/src/airflow/ui/src/pages/Dag/Dag.tsx | 18 +-
.../src/airflow/ui/src/pages/Dag/Details.tsx | 12 +-
.../src/airflow/ui/src/pages/Dag/Header.test.tsx | 12 +
.../src/airflow/ui/src/pages/Dag/Header.tsx | 7 +-
.../pages/Dag/Versions/VersionDiff.i18n.test.tsx | 83 +
.../ui/src/pages/Dag/Versions/VersionDiff.test.tsx | 275 ++
.../ui/src/pages/Dag/Versions/VersionDiff.tsx | 197 ++
.../ui/src/pages/Dag/Versions/Versions.test.tsx | 227 ++
.../airflow/ui/src/pages/Dag/Versions/Versions.tsx | 182 ++
.../Details/Gantt => pages/Dag/Versions}/index.ts | 3 +-
.../airflow/ui/src/pages/DagBundle/BundleFiles.tsx | 7 +-
.../src/airflow/ui/src/pages/DagBundle/Header.tsx | 5 +-
.../src/pages/DagRuns/BulkDeleteDagRunsButton.tsx | 5 +-
.../src/pages/DagRuns/BulkMarkDagRunsAsButton.tsx | 5 +-
.../src/airflow/ui/src/pages/DagRuns/DagRuns.tsx | 6 +-
.../ui/src/pages/DagsList/AssetSchedule.test.tsx | 125 +
.../ui/src/pages/DagsList/AssetSchedule.tsx | 12 +-
.../pages/DagsList/BulkPauseDrainDagsButton.tsx | 5 +-
.../src/pages/DagsList/BulkUnpauseDagsButton.tsx | 5 +-
.../ui/src/pages/DagsList/DagCardActions.tsx | 1 -
.../src/pages/DagsList/DagRunStateCounts.test.tsx | 13 +-
.../ui/src/pages/DagsList/DagRunStateCounts.tsx | 5 +-
.../ui/src/pages/DagsList/DagsList.test.tsx | 34 +
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 46 +-
.../DagsList/Schedule.test.tsx} | 47 +-
.../src/airflow/ui/src/pages/DagsList/Schedule.tsx | 2 +-
.../Dashboard/HistoricalMetrics/MetricSection.tsx | 3 +-
.../Dashboard/PoolSummary/PoolSummary.test.tsx | 9 +-
.../pages/Dashboard/PoolSummary/PoolSummary.tsx | 2 +-
.../src/pages/Dashboard/Stats/DagImportErrors.tsx | 4 +-
.../pages/Dashboard/Stats/DagImportErrorsModal.tsx | 3 +-
.../pages/Dashboard/Stats/PluginImportErrors.tsx | 4 +-
.../ui/src/pages/Dashboard/Stats/Stats.test.tsx | 5 +-
.../src/airflow/ui/src/pages/Deadlines/index.tsx | 3 +-
.../ui/src/pages/GroupTaskInstance/Header.tsx | 6 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 2 +-
.../src/airflow/ui/src/pages/LandingPage.tsx | 6 +-
.../ui/src/pages/MappedTaskInstance/Details.tsx | 6 +-
.../ui/src/pages/MappedTaskInstance/Header.tsx | 8 +-
.../MappedTaskInstance/MappedTaskInstance.tsx | 10 +-
.../src/airflow/ui/src/pages/Pools/PoolBarCard.tsx | 7 +-
.../src/airflow/ui/src/pages/Pools/PoolForm.tsx | 15 +-
.../src/airflow/ui/src/pages/Run/AssetEvents.tsx | 4 +-
.../src/airflow/ui/src/pages/Run/Details.tsx | 14 +-
.../src/airflow/ui/src/pages/Run/Header.tsx | 19 +-
airflow-core/src/airflow/ui/src/pages/Run/Run.tsx | 2 +-
.../ui/src/pages/Settings/Settings.test.tsx | 18 +
.../src/airflow/ui/src/pages/Settings/Settings.tsx | 16 +
.../ui/src/pages/TaskInstance/AssetEvents.tsx | 2 +-
.../airflow/ui/src/pages/TaskInstance/Details.tsx | 14 +-
.../ui/src/pages/TaskInstance/HITLResponse.tsx | 2 +-
.../ui/src/pages/TaskInstance/Logs/logSelection.ts | 16 +-
.../src/pages/TaskInstance/Logs/useLogGroups.tsx | 14 +-
.../ui/src/pages/TaskInstance/Logs/utils.ts | 24 +-
.../src/pages/TaskInstance/TaskInstance.test.tsx | 3 +-
.../ui/src/pages/TaskInstance/TaskInstance.tsx | 23 +-
.../BulkDeleteTaskInstancesButton.tsx | 5 +-
.../BulkMarkTaskInstancesAsButton.tsx | 5 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 6 +-
.../ui/src/pages/TaskStateStore/TaskStateStore.tsx | 2 +-
.../pages/TaskStateStore/TaskStateStoreModal.tsx | 5 +-
.../airflow/ui/src/pages/Variables/Variables.tsx | 6 +-
.../ui/src/queries/useCreateBackfill.test.tsx | 99 +
.../airflow/ui/src/queries/useCreateBackfill.ts | 39 +-
.../ui/src/queries/useDagBundleRefetchInterval.ts | 8 +-
.../ui/src/queries/useDagRunStateCounts.tsx | 3 +-
.../src/airflow/ui/src/queries/useDags.tsx | 17 +-
.../src/airflow/ui/src/queries/useDeadlines.ts | 2 +-
.../src/airflow/ui/src/queries/useLogs.tsx | 7 +-
.../src/airflow/ui/src/queries/useParamStore.ts | 8 +-
.../ui/src/queries/useRefreshOnNewDagRuns.ts | 2 +-
.../src/airflow/ui/src/queries/useTrigger.test.tsx | 98 +
.../src/airflow/ui/src/queries/useTrigger.ts | 31 +-
airflow-core/src/airflow/ui/src/queryClient.ts | 8 +-
airflow-core/src/airflow/ui/src/router.tsx | 16 +-
.../ui/src/system-components/Menu/MenuTrigger.tsx | 2 +-
.../ui/src/system-components/Pagination/Item.tsx | 6 +-
.../src/system-components/Pagination/PageText.tsx | 10 +-
.../ui/src/system-components/Select/ValueText.tsx | 11 +-
.../src/airflow/ui/src/utils/datetimeUtils.ts | 65 +-
.../context.ts => utils/formatNumber.test.ts} | 24 +-
.../ui/selectors.ts => src/utils/formatNumber.ts} | 14 +-
airflow-core/src/airflow/ui/src/utils/index.ts | 1 +
airflow-core/src/airflow/ui/src/utils/intlCache.ts | 48 +
.../src/airflow/ui/src/utils/jsonPreview.ts | 16 +-
airflow-core/src/airflow/ui/src/utils/links.ts | 21 +-
airflow-core/src/airflow/ui/src/utils/logs.ts | 8 +-
.../src/airflow/ui/src/utils/pluginAppliesTo.ts | 15 +-
airflow-core/src/airflow/ui/src/utils/query.ts | 6 +-
airflow-core/src/airflow/ui/src/utils/tab.ts | 6 +-
airflow-core/src/airflow/ui/src/vite-env.d.ts | 23 +-
.../src/airflow/ui/tests/e2e/pages/BackfillPage.ts | 26 +-
.../airflow/ui/tests/e2e/pages/ConnectionsPage.ts | 26 +-
.../src/airflow/ui/tests/e2e/pages/DagsPage.ts | 8 +-
.../src/airflow/ui/tests/e2e/pages/EventsPage.ts | 6 +-
.../airflow/ui/tests/e2e/specs/dag-tasks.spec.ts | 8 +-
.../src/airflow/ui/tests/e2e/utils/shared.ts | 6 +-
airflow-core/src/airflow/utils/cli.py | 48 +-
airflow-core/src/airflow/utils/db_cleanup.py | 30 +-
.../tests/unit/always/test_project_structure.py | 4 -
.../tests/unit/always/test_provider_yaml_schema.py | 10 +
.../tests/unit/api_fastapi/auth/test_tokens.py | 43 +
airflow-core/tests/unit/api_fastapi/conftest.py | 13 +
.../core_api/routes/public/test_assets.py | 48 +-
.../core_api/routes/public/test_auth.py | 45 +-
.../core_api/routes/public/test_backfills.py | 72 +-
.../core_api/routes/public/test_dag_run.py | 75 +-
.../core_api/routes/public/test_dag_versions.py | 296 +++
.../core_api/routes/public/test_dags.py | 175 +-
.../core_api/routes/public/test_hitl.py | 3 +-
.../api_fastapi/core_api/routes/ui/test_assets.py | 113 +-
.../tests/unit/cli/commands/test_dag_command.py | 3 +
.../tests/unit/cli/commands/test_task_command.py | 26 +
.../tests/unit/dag_processing/fake_lang_sdk.py | 144 ++
.../lang_sdk_fixtures/java_native.json | 151 ++
.../lang_sdk_fixtures/ts_conformance.json | 661 +++++
.../tests/unit/dag_processing/test_dagbag.py | 304 +++
.../unit/dag_processing/test_importer_routing.py | 63 +
.../unit/dag_processing/test_lang_sdk_processor.py | 855 +++++++
.../tests/unit/dag_processing/test_manager.py | 241 +-
.../tests/unit/dag_processing/test_processor.py | 69 +-
.../tests/unit/executors/test_local_executor.py | 462 +++-
.../executors/test_local_executor_check_workers.py | 5 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 83 +-
airflow-core/tests/unit/models/test_backfill.py | 133 +-
airflow-core/tests/unit/models/test_dag.py | 40 +
airflow-core/tests/unit/models/test_dagrun.py | 79 +-
.../tests/unit/models/test_serialized_dag.py | 4 +-
.../tests/unit/models/test_taskinstance.py | 25 +-
airflow-core/tests/unit/models/test_trigger.py | 45 +
.../unit/serialization/test_dag_serialization.py | 215 ++
.../unit/serialization/test_dag_version_diff.py | 1 -
airflow-core/tests/unit/utils/test_cli_util.py | 79 +
airflow-core/tests/unit/utils/test_db_cleanup.py | 62 +-
.../airflowctl_tests/test_airflowctl_commands.py | 2 +
airflow-ctl/docs/images/command_hashes.txt | 2 +-
airflow-ctl/docs/images/output_tasks.svg | 78 +-
.../src/airflowctl/api/datamodels/generated.py | 178 ++
airflow-ctl/src/airflowctl/api/operations.py | 7 +-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 17 +
.../src/airflowctl/ctl/commands/task_command.py | 53 +-
.../tests/airflow_ctl/api/test_operations.py | 54 +-
.../airflow_ctl/ctl/commands/test_task_command.py | 275 +-
.../tests/airflow_e2e_tests/conftest.py | 56 +-
chart/README.md | 2 +-
contributing-docs/08_static_code_checks.rst | 1 +
contributing-docs/12_provider_distributions.rst | 14 +-
contributing-docs/30_new_language_sdk.rst | 8 +-
dev/README_RELEASE_PROVIDERS.md | 35 +-
dev/breeze/doc/03_developer_tasks.rst | 55 +
dev/breeze/doc/ci/04_selective_checks.md | 38 +-
dev/breeze/doc/images/output-commands.svg | 68 +-
.../doc/images/output_k8s_configure-cluster.svg | 8 +-
.../doc/images/output_k8s_configure-cluster.txt | 2 +-
.../doc/images/output_k8s_create-cluster.svg | 8 +-
.../doc/images/output_k8s_create-cluster.txt | 2 +-
.../doc/images/output_k8s_delete-cluster.svg | 4 +-
.../doc/images/output_k8s_delete-cluster.txt | 2 +-
.../doc/images/output_k8s_deploy-airflow.svg | 8 +-
.../doc/images/output_k8s_deploy-airflow.txt | 2 +-
.../doc/images/output_k8s_deploy-cluster.svg | 4 +-
.../doc/images/output_k8s_deploy-cluster.txt | 2 +-
dev/breeze/doc/images/output_k8s_dev.svg | 4 +-
dev/breeze/doc/images/output_k8s_dev.txt | 2 +-
dev/breeze/doc/images/output_k8s_k9s.svg | 4 +-
dev/breeze/doc/images/output_k8s_k9s.txt | 2 +-
dev/breeze/doc/images/output_k8s_logs.svg | 4 +-
dev/breeze/doc/images/output_k8s_logs.txt | 2 +-
.../doc/images/output_k8s_run-complete-tests.svg | 8 +-
.../doc/images/output_k8s_run-complete-tests.txt | 2 +-
.../doc/images/output_k8s_setup-lang-sdk-test.svg | 4 +-
.../doc/images/output_k8s_setup-lang-sdk-test.txt | 2 +-
dev/breeze/doc/images/output_k8s_shell.svg | 4 +-
dev/breeze/doc/images/output_k8s_shell.txt | 2 +-
.../doc/images/output_k8s_smoke-test-overlay.svg | 4 +-
.../doc/images/output_k8s_smoke-test-overlay.txt | 2 +-
dev/breeze/doc/images/output_k8s_status.svg | 4 +-
dev/breeze/doc/images/output_k8s_status.txt | 2 +-
dev/breeze/doc/images/output_k8s_tests.svg | 8 +-
dev/breeze/doc/images/output_k8s_tests.txt | 2 +-
.../doc/images/output_k8s_upload-k8s-image.svg | 8 +-
.../doc/images/output_k8s_upload-k8s-image.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 | 4 +-
.../output_setup_regenerate-command-images.txt | 2 +-
.../doc/images/output_testing_helm-tests.svg | 4 +-
.../doc/images/output_testing_helm-tests.txt | 2 +-
dev/breeze/doc/images/output_verify.svg | 128 +
dev/breeze/doc/images/output_verify.txt | 1 +
dev/breeze/src/airflow_breeze/breeze.py | 1 +
.../commands/developer_commands_config.py | 11 +
.../airflow_breeze/commands/testing_commands.py | 10 +
.../src/airflow_breeze/commands/verify_commands.py | 180 ++
dev/breeze/src/airflow_breeze/global_constants.py | 16 +-
dev/breeze/src/airflow_breeze/utils/packages.py | 26 +
.../src/airflow_breeze/utils/reproduce_ci.py | 10 +-
.../src/airflow_breeze/utils/selective_checks.py | 235 +-
.../src/airflow_breeze/utils/verification_plan.py | 170 ++
dev/breeze/tests/test_packages.py | 63 +
dev/breeze/tests/test_reproduce_ci.py | 12 +
dev/breeze/tests/test_run_test_args.py | 35 +-
dev/breeze/tests/test_selective_checks.py | 358 ++-
dev/breeze/tests/test_verification_plan.py | 244 ++
dev/breeze/tests/test_verify_commands.py | 327 +++
dev/breeze/uv.lock | 44 +-
.../react_plugin_template/package.json | 14 +-
.../react_plugin_template/pnpm-lock.yaml | 369 +--
dev/skill-evals/last-eval-hash.txt | 2 +-
dev/sync_fork.sh | 2 +-
devel-common/src/docs/utils/conf_constants.py | 1 +
.../src/sphinx_exts/python_builtin_xrefs.py | 66 +
.../unit/sphinx_exts/test_python_builtin_xrefs.py | 92 +
docker-tests/tests/docker_tests/test_prod_image.py | 3 -
docs/spelling_wordlist.txt | 4 +
generated/PYPI_README.md | 16 +-
generated/known_airflow_exceptions.txt | 4 +-
generated/known_sdk_imports_in_core.txt | 2 +
go-sdk/Justfile | 2 +-
go-sdk/README.md | 50 +-
go-sdk/adr/0008-native-dag-interface.md | 21 +-
go-sdk/airflow/bundle.go | 20 +-
go-sdk/airflow/bundle_test.go | 54 +
go-sdk/airflow/dag.go | 239 +-
go-sdk/airflow/dag_test.go | 5 +
go-sdk/airflow/if.go | 234 ++
go-sdk/airflow/if_test.go | 684 +++++
go-sdk/airflow/inputs.go | 53 +-
go-sdk/airflow/inputs_test.go | 4 +-
go-sdk/airflow/node.go | 471 ++++
go-sdk/airflow/node_test.go | 541 ++++
go-sdk/airflow/spec.gen.go | 31 +-
go-sdk/airflow/spec.go | 6 +-
go-sdk/airflow/task_group.go | 553 ++++
go-sdk/airflow/task_group_test.go | 1274 +++++++++
go-sdk/airflow/task_handler_test.go | 9 +
go-sdk/airflow/task_option.go | 12 +-
.../{foreigntaskoption => foreignnode}/main.go | 19 +-
go-sdk/airflow/trigger_dag_run.go | 4 +-
go-sdk/example/bundle/Justfile | 5 +-
go-sdk/internal/bundle/task.go | 119 +-
go-sdk/internal/bundle/task_test.go | 217 ++
go-sdk/internal/genspec/authoring.go | 35 +-
go-sdk/internal/genspec/authoring_test.go | 22 +-
go-sdk/internal/genspec/main.go | 4 +-
go-sdk/internal/genspec/normalize.go | 14 +-
go-sdk/internal/genspec/normalize_test.go | 33 +-
go-sdk/pkg/execution/client.go | 40 +-
go-sdk/pkg/execution/client_test.go | 106 +
go-sdk/pkg/execution/integration_test.go | 436 +++-
go-sdk/pkg/execution/task_runner.go | 65 +-
go-sdk/schema/dag-schema.json | 13 +-
java-sdk/README.md | 30 +-
java-sdk/buildSrc/build.gradle.kts | 2 +-
java-sdk/gradle/verification-metadata.xml | 410 +--
.../apache/airflow/sdk/plugin/AirflowSdkPlugin.kt | 4 +-
java-sdk/scala_spark_example/README.md | 6 +-
java-sdk/sdk/build.gradle.kts | 19 +-
java-sdk/sdk/schema/dag-schema.json | 13 +-
kubernetes-tests/lang_sdk/README.md | 14 +-
kubernetes-tests/lang_sdk/config/values.yaml | 14 +-
.../lang_sdk/pod_templates/lang_sdk_golang.yaml | 3 +-
.../lang_sdk/pod_templates/lang_sdk_java.yaml | 3 +-
kubernetes-tests/lang_sdk/stage_artifacts.py | 8 +-
.../kubernetes_tests/test_kubernetes_executor.py | 89 +-
providers/.last_release_date.txt | 2 +-
providers/MANAGING_PROVIDERS_LIFECYCLE.rst | 20 +
providers/airbyte/docs/connections.rst | 10 +-
.../src/airflow/providers/airbyte/hooks/airbyte.py | 37 +-
.../tests/unit/airbyte/hooks/test_airbyte.py | 61 +
providers/akeyless/docs/changelog.rst | 7 +
.../airflow/providers/akeyless/secrets/akeyless.py | 28 +-
.../tests/unit/akeyless/secrets/test_akeyless.py | 27 +-
.../docs/auth-manager/setup/identity-center.rst | 36 +
providers/amazon/docs/bundles/index.rst | 5 +
providers/amazon/docs/changelog.rst | 6 +
providers/amazon/docs/executors/batch-executor.rst | 4 +
providers/amazon/docs/executors/ecs-executor.rst | 4 +
providers/amazon/docs/executors/general.rst | 13 +
.../amazon/docs/executors/lambda-executor.rst | 5 +
providers/amazon/docs/operators/step_functions.rst | 11 +
providers/amazon/provider.yaml | 15 +
providers/amazon/pyproject.toml | 2 +-
.../providers/amazon/aws/auth_manager/constants.py | 1 +
.../amazon/aws/auth_manager/routes/login.py | 200 +-
.../src/airflow/providers/amazon/aws/bundles/s3.py | 6 +-
.../src/airflow/providers/amazon/aws/exceptions.py | 4 +
.../aws/executors/aws_lambda/lambda_executor.py | 67 +-
.../amazon/aws/executors/batch/batch_executor.py | 15 +-
.../providers/amazon/aws/executors/batch/utils.py | 6 +-
.../amazon/aws/executors/ecs/ecs_executor.py | 5 +-
.../amazon/aws/operators/step_function.py | 5 +-
.../amazon/aws/utils/waiter_with_logging.py | 24 +-
.../airflow/providers/amazon/get_provider_info.py | 7 +
.../system/amazon/aws/example_athena_spark.py | 52 +-
.../amazon/aws/auth_manager/routes/test_login.py | 359 ++-
.../tests/unit/amazon/aws/bundles/test_s3.py | 33 +
.../executors/aws_lambda/test_lambda_executor.py | 150 +-
.../aws/executors/batch/test_batch_executor.py | 105 +-
.../tests/unit/amazon/aws/executors/conftest.py} | 41 +-
.../amazon/aws/executors/ecs/test_ecs_executor.py | 135 +-
.../amazon/aws/operators/test_step_function.py | 51 +
.../amazon/aws/utils/test_waiter_with_logging.py | 135 +-
.../airflow/providers/apache/beam/hooks/beam.py | 45 +-
.../beam/tests/unit/apache/beam/hooks/test_beam.py | 42 +
.../tests/unit/apache/kafka/hooks/test_consume.py | 9 +-
.../tests/unit/apache/kafka/hooks/test_produce.py | 9 +-
.../apache/kafka/triggers/test_await_message.py | 49 +-
.../unit/apache/kafka/triggers/test_msg_queue.py | 5 +-
.../providers/apache/spark/hooks/spark_submit.py | 98 +-
.../unit/apache/spark/hooks/test_spark_submit.py | 118 +
providers/celery/docs/celery_executor.rst | 8 +
.../providers/celery/executors/celery_executor.py | 34 +-
.../integration/celery/test_celery_executor.py | 30 +-
.../unit/celery/executors/test_celery_executor.py | 287 ++-
providers/cncf/kubernetes/docs/changelog.rst | 5 +
.../cncf/kubernetes/docs/kubernetes_executor.rst | 9 +
providers/cncf/kubernetes/provider.yaml | 2 +-
.../kubernetes/executors/kubernetes_executor.py | 126 +-
.../executors/kubernetes_executor_types.py | 44 +-
.../executors/kubernetes_executor_utils.py | 39 +-
.../providers/cncf/kubernetes/triggers/job.py | 4 +-
.../executors/test_kubernetes_executor.py | 847 +++++-
.../executors/test_kubernetes_executor_types.py | 89 +
.../unit/cncf/kubernetes/triggers/test_job.py | 13 +-
providers/common/ai/docs/approval_gates.rst | 4 +-
.../{classifier_models.rst => decision_models.rst} | 158 +-
providers/common/ai/docs/examples.rst | 6 +-
providers/common/ai/docs/installation.rst | 5 +-
providers/common/ai/docs/model_providers.rst | 12 +-
providers/common/ai/docs/operators/llm_branch.rst | 14 +-
.../ai/docs/operators/llm_schema_compare.rst | 2 +-
providers/common/ai/docs/operators/llm_sql.rst | 2 +-
providers/common/ai/docs/redirects.txt | 1 +
providers/common/ai/docs/retry_policies.rst | 15 +-
providers/common/ai/docs/self_hosted_models.rst | 3 +
providers/common/ai/docs/stability.rst | 2 +-
providers/common/ai/docs/toolsets/datafusion.rst | 2 +-
providers/common/ai/docs/use_cases/index.rst | 3 +-
.../ai/docs/use_cases/route_pipeline_failures.rst | 25 +-
...assifier_model.py => example_decision_model.py} | 79 +-
.../common/ai/example_dags/example_llm_branch.py | 5 +-
.../ai/example_dags/example_llm_retry_policy.py | 22 +-
.../airflow/providers/common/ai/operators/agent.py | 11 +-
.../airflow/providers/common/ai/operators/llm.py | 25 +-
.../providers/common/ai/operators/llm_branch.py | 14 +-
.../providers/common/ai/policies/decision.py | 4 +-
.../airflow/providers/common/ai/policies/retry.py | 19 +-
.../airflow/providers/common/ai/utils/decision.py | 12 +-
.../unit/common/ai/operators/test_llm_branch.py | 2 +-
.../ai/tests/unit/common/ai/policies/test_retry.py | 2 +-
.../providers/common/compat/connection/__init__.py | 30 +-
.../common/compat/connection/test_connection.py | 58 +-
.../connection/test_connection_supervisor.py | 214 ++
providers/common/sql/docs/operators.rst | 60 +-
.../sql/src/airflow/providers/common/sql/config.py | 3 +
.../providers/common/sql/datafusion/engine.py | 185 ++
.../sql/datafusion/object_storage_provider.py | 36 +-
.../common/sql/example_dags/example_analytics.py | 13 +
.../unit/common/sql/datafusion/test_engine.py | 447 ++++
.../sql/datafusion/test_object_storage_provider.py | 48 +
.../sql/tests/unit/common/sql/test_config.py | 1 +
providers/databricks/docs/operators/copy_into.rst | 81 +
.../providers/databricks/assets/databricks.py | 37 +
.../databricks/operators/databricks_sql.py | 82 +-
.../unit/databricks/assets/test_databricks.py | 55 +
.../databricks/operators/test_databricks_copy.py | 215 +-
providers/duckdb/provider.yaml | 2 +-
providers/edge3/docs/changelog.rst | 8 +
providers/edge3/docs/migrations-ref.rst | 4 +-
providers/edge3/provider.yaml | 14 +-
.../src/airflow/providers/edge3/cli/api_client.py | 14 +-
.../src/airflow/providers/edge3/cli/worker.py | 22 +-
.../providers/edge3/executors/edge_executor.py | 214 +-
.../airflow/providers/edge3/get_provider_info.py | 12 +-
.../0006_5_0_0_add_task_instance_id_to_edge_job.py | 71 +
.../edge3/src/airflow/providers/edge3/models/db.py | 1 +
.../src/airflow/providers/edge3/models/edge_job.py | 10 +
.../www/openapi-gen/requests/schemas.gen.ts | 12 +
.../plugins/www/openapi-gen/requests/types.gen.ts | 10 +
.../providers/edge3/plugins/www/package.json | 24 +-
.../providers/edge3/plugins/www/pnpm-lock.yaml | 817 +++---
.../edge3/plugins/www/src/pages/JobsPage.test.tsx | 105 +
.../edge3/plugins/www/src/pages/JobsPage.tsx | 17 +-
.../providers/edge3/plugins/www/vite.config.ts | 4 +-
.../providers/edge3/worker_api/datamodels.py | 7 +
.../providers/edge3/worker_api/datamodels_ui.py | 2 +
.../providers/edge3/worker_api/routes/jobs.py | 84 +-
.../providers/edge3/worker_api/routes/ui.py | 1 +
.../edge3/worker_api/v2-edge-generated.yaml | 39 +
.../edge3/tests/unit/edge3/cli/test_api_client.py | 76 +-
.../edge3/tests/unit/edge3/cli/test_worker.py | 46 +-
.../unit/edge3/executors/test_edge_executor.py | 456 +++-
.../migrations/test_task_instance_identity.py | 170 ++
providers/edge3/tests/unit/edge3/models/test_db.py | 30 +-
.../unit/edge3/worker_api/routes/test_jobs.py | 144 +-
.../tests/unit/edge3/worker_api/routes/test_ui.py | 31 +
providers/elasticsearch/docs/logging/index.rst | 5 +
.../providers/elasticsearch/log/es_task_handler.py | 43 +-
.../providers/elasticsearch/version_compat.py | 2 +
.../elasticsearch/log/test_es_remote_log_io.py | 32 +
.../unit/elasticsearch/log/test_es_task_handler.py | 44 +-
providers/fab/docs/auth-manager/access-control.rst | 4 +
.../fab/src/airflow/providers/fab/www/package.json | 2 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 165 +-
providers/google/docs/changelog.rst | 9 +
providers/google/docs/operators/cloud/dataproc.rst | 14 +-
.../providers/google/cloud/hooks/bigquery.py | 13 +-
.../providers/google/cloud/hooks/bigtable.py | 24 +
.../providers/google/cloud/hooks/cloud_composer.py | 4 +-
.../providers/google/cloud/hooks/cloud_sql.py | 57 +-
.../providers/google/cloud/hooks/compute.py | 3 -
.../google/cloud/hooks/vertex_ai/auto_ml.py | 2 +-
.../google/cloud/log/cloud_logging_task_handler.py | 26 +-
.../providers/google/cloud/operators/dataproc.py | 19 +-
.../providers/google/cloud/operators/gcs.py | 24 +-
.../providers/google/cloud/sensors/bigquery.py | 2 +
.../google/cloud/transfers/gcs_to_sftp.py | 84 +-
.../google/cloud/transfers/postgres_to_gcs.py | 14 +-
.../providers/google/cloud/triggers/dataproc.py | 3 +
.../src/airflow/providers/google/version_compat.py | 9 +-
.../google/cloud/bigquery/example_bigquery_dts.py | 3 +-
.../cloud/bigquery/example_bigquery_sensors.py | 3 -
.../cloud/bigquery/example_bigquery_tables.py | 21 +-
.../cloud/bigquery/example_bigquery_value_check.py | 2 +-
.../resources/openlineage/bigquery_dts.json | 18 +-
.../resources/openlineage/bigquery_operations.json | 8 +-
.../resources/openlineage/bigquery_tables.json | 12 +-
.../resources/openlineage/bigquery_transfer.json | 8 +-
.../cloud/composer/example_cloud_composer.py | 4 +-
.../google/cloud/dataplex/example_dataplex_dp.py | 2 +-
.../dataproc/example_dataproc_batch_persistent.py | 32 +-
.../dataproc/example_dataproc_cluster_generator.py | 156 --
.../example_cloud_storage_transfer_service_aws.py | 64 +-
.../example_cloud_storage_transfer_service_gcp.py | 55 +-
.../system/google/cloud/tasks/example_tasks.py | 15 +-
.../marketing_platform/example_campaign_manager.py | 6 +-
.../system/google/resources_cleanup/README.md | 8 +
.../handlers/__init__.py | 2 +
.../handlers/{sqladmin.py => datafusion.py} | 42 +-
.../tests/unit/google/cloud/hooks/test_bigquery.py | 55 +-
.../tests/unit/google/cloud/hooks/test_bigtable.py | 26 +
.../unit/google/cloud/hooks/test_cloud_composer.py | 24 +
.../unit/google/cloud/hooks/test_cloud_sql.py | 78 +-
.../cloud/log/test_cloud_logging_task_handler.py | 112 +-
.../unit/google/cloud/operators/test_dataproc.py | 7 +-
.../tests/unit/google/cloud/operators/test_gcs.py | 135 +
.../unit/google/cloud/sensors/test_bigquery.py | 37 +
.../google/cloud/transfers/test_gcs_to_sftp.py | 122 +-
.../google/cloud/transfers/test_postgres_to_gcs.py | 61 +-
.../unit/google/cloud/triggers/test_dataproc.py | 63 +-
.../google/resources_cleanup/test_cmd_delete.py | 1 +
.../resources_cleanup/test_datafusion_handler.py | 67 +
.../tests/unit/google/test_go_module_utils.py | 73 +
providers/hashicorp/docs/changelog.rst | 7 +
.../airflow/providers/hashicorp/secrets/vault.py | 31 +-
.../tests/unit/hashicorp/secrets/test_vault.py | 55 +
providers/ibm/mq/docs/connections/ibmmq.rst | 9 +-
providers/ibm/mq/docs/index.rst | 2 +-
providers/ibm/mq/pre_extras_install.yaml | 33 -
providers/ibm/mq/pyproject.toml | 4 +-
providers/ibm/mq/tests/conftest.py | 8 +-
providers/microsoft/azure/README.rst | 2 +-
.../microsoft/azure/docs/connections/msgraph.rst | 9 +-
providers/microsoft/azure/docs/index.rst | 2 +-
providers/microsoft/azure/pyproject.toml | 9 +-
.../providers/microsoft/azure/hooks/msgraph.py | 13 +-
.../unit/microsoft/azure/hooks/test_msgraph.py | 17 +
providers/openai/docs/operators/openai.rst | 42 +-
.../src/airflow/providers/openai/hooks/openai.py | 35 +-
.../airflow/providers/openai/operators/openai.py | 150 +-
.../openai/tests/system/openai/example_openai.py | 14 +
.../openai/tests/unit/openai/hooks/test_openai.py | 34 +
.../tests/unit/openai/operators/test_openai.py | 307 ++-
.../providers/openlineage/extractors/manager.py | 31 +
...schedule_multiple_cron_trigger_timetable_dag.py | 2 +-
...hedule_multiple_cron_trigger_timetable_dag.json | 12 +-
.../unit/openlineage/extractors/test_manager.py | 71 +-
.../providers/opensearch/log/os_task_handler.py | 75 +-
.../airflow/providers/opensearch/version_compat.py | 2 +
.../opensearch/log/test_os_remote_log_io.py | 50 +
.../unit/opensearch/log/test_os_task_handler.py | 150 +-
.../sftp/src/airflow/providers/sftp/hooks/sftp.py | 44 +-
providers/sftp/tests/unit/sftp/hooks/test_sftp.py | 92 +
.../slack/transfers/sql_to_slack_webhook.py | 28 +-
.../slack/transfers/test_sql_to_slack_webhook.py | 61 +
.../snowflake/hooks/snowflake_cortex_agent.py | 176 ++
.../providers/snowflake/hooks/snowflake_sql_api.py | 12 +-
.../snowflake/hooks/test_snowflake_cortex_agent.py | 211 ++
.../unit/snowflake/hooks/test_snowflake_sql_api.py | 35 +-
.../ssh/src/airflow/providers/ssh/hooks/ssh.py | 68 +-
providers/ssh/tests/unit/ssh/hooks/test_ssh.py | 106 +-
.../tests/unit/standard/operators/test_empty.py | 56 +
...ternal_task_sensor.py => test_external_task.py} | 34 +-
registry/package.json | 2 +-
registry/pnpm-lock.yaml | 44 +-
.../ci/lang_sdk_serialization/serialize_python.py | 23 +-
.../prek/check_contextmanager_class_decorators.py | 1 +
scripts/ci/prek/check_excluded_provider_markers.py | 36 +-
scripts/ci/prek/check_execution_api_versions.py | 15 +-
scripts/ci/prek/check_go_sdk_generated_drift.py | 5 +-
.../ci/prek/check_supervisor_schemas_versions.py | 11 +-
scripts/ci/prek/common_prek_utils.py | 21 +
scripts/ci/prek/sync_go_sdk_schemas.py | 21 +-
scripts/ci/prek/update_airflow_pyproject_toml.py | 35 +-
scripts/ci/testing/run_unit_tests.sh | 7 +-
scripts/docker/entrypoint_ci.sh | 9 +-
scripts/docker/install_os_dependencies.sh | 5 +-
scripts/in_container/run_pre_extras_install.py | 64 +-
.../test_check_contextmanager_class_decorators.py | 80 +
.../prek/test_check_excluded_provider_markers.py | 56 +
.../ci/prek/test_update_airflow_pyproject_toml.py | 58 +
scripts/tests/ci/testing/test_run_unit_tests.py | 15 +
.../in_container/test_run_pre_extras_install.py | 142 +
task-sdk/docs/deferred-vs-async-operators.rst | 2 +-
task-sdk/docs/executable-bundle-spec.rst | 31 +-
task-sdk/docs/ts-bundle-spec.rst | 26 +-
.../airflow/sdk/coordinators/_bundle_metadata.py | 45 +-
.../src/airflow/sdk/coordinators/_dag_importer.py | 162 ++
.../src/airflow/sdk/coordinators/_subprocess.py | 258 +-
.../sdk/coordinators/executable/coordinator.py | 30 +-
.../airflow/sdk/coordinators/java/coordinator.py | 34 +-
.../airflow/sdk/coordinators/node/coordinator.py | 31 +-
task-sdk/src/airflow/sdk/definitions/variable.py | 55 +-
task-sdk/src/airflow/sdk/execution_time/context.py | 155 ++
.../src/airflow/sdk/execution_time/coordinator.py | 190 +-
.../src/airflow/sdk/execution_time/task_runner.py | 38 +-
task-sdk/src/airflow/sdk/importers/base.py | 51 +-
.../coordinators/executable/test_coordinator.py | 73 +-
.../task_sdk/coordinators/java/test_coordinator.py | 96 +-
.../task_sdk/coordinators/node/test_coordinator.py | 45 +-
.../task_sdk/coordinators/test_dag_importer.py | 214 ++
.../tests/task_sdk/coordinators/test_subprocess.py | 309 ++-
.../tests/task_sdk/definitions/test_variables.py | 139 +-
.../tests/task_sdk/execution_time/test_context.py | 350 ++-
.../task_sdk/execution_time/test_coordinator.py | 412 ++-
.../task_sdk/execution_time/test_task_runner.py | 130 +
task-sdk/tests/task_sdk/importers/test_registry.py | 138 +
ts-sdk/README.md | 23 +-
ts-sdk/example/README.md | 14 +-
ts-sdk/package.json | 2 +-
ts-sdk/pnpm-lock.yaml | 413 +--
ts-sdk/schema/dag-schema.json | 13 +-
uv.lock | 12 +-
782 files changed, 35301 insertions(+), 6913 deletions(-)
create mode 100644 .apache-magpie-overrides/release-vote-tally.md
rename .github/workflows/{scheduled-upgrade-check-v3-3-test.yml =>
scheduled-upgrade-check-v3-4-test.yml} (89%)
create mode 100644 airflow-core/newsfragments/73970.significant.rst
create mode 100644 airflow-core/src/airflow/dag_processing/importer_routing.py
create mode 100644
airflow-core/src/airflow/dag_processing/lang_sdk_processor.py
copy airflow-core/src/airflow/ui/src/{system-components/Pagination/context.ts
=> components/DAGWarningsModal.test.tsx} (64%)
copy airflow-core/src/airflow/ui/src/{pages/Dag/Code/FileLocation.test.tsx =>
components/ImportErrorCount.test.tsx} (54%)
copy
airflow-core/src/airflow/ui/src/{pages/Connections/NothingFoundInfo.test.tsx =>
components/StatsCard.test.tsx} (63%)
create mode 100644
airflow-core/src/airflow/ui/src/components/TriggerDag/PausedDagOptions.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/TriggerDag/PausedDagOptions.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGModal.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/VersionCompareSelect.test.tsx
rename airflow-core/src/airflow/ui/src/{pages/Dag/Code =>
components}/VersionCompareSelect.tsx (97%)
delete mode 100644 airflow-core/src/airflow/ui/src/layouts/StorageLayout.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Versions/VersionDiff.i18n.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Versions/VersionDiff.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Versions/VersionDiff.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Versions/Versions.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Versions/Versions.tsx
copy airflow-core/src/airflow/ui/src/{layouts/Details/Gantt =>
pages/Dag/Versions}/index.ts (95%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/DagsList/AssetSchedule.test.tsx
copy airflow-core/src/airflow/ui/src/{layouts/Details/Grid/GridButton.test.tsx
=> pages/DagsList/Schedule.test.tsx} (52%)
create mode 100644
airflow-core/src/airflow/ui/src/queries/useCreateBackfill.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/queries/useTrigger.test.tsx
copy airflow-core/src/airflow/ui/src/{system-components/Pagination/context.ts
=> utils/formatNumber.test.ts} (64%)
copy airflow-core/src/airflow/ui/{tests/e2e/utils/ui/selectors.ts =>
src/utils/formatNumber.ts} (54%)
create mode 100644 airflow-core/src/airflow/ui/src/utils/intlCache.ts
create mode 100644 airflow-core/tests/unit/dag_processing/fake_lang_sdk.py
create mode 100644
airflow-core/tests/unit/dag_processing/lang_sdk_fixtures/java_native.json
create mode 100644
airflow-core/tests/unit/dag_processing/lang_sdk_fixtures/ts_conformance.json
create mode 100644
airflow-core/tests/unit/dag_processing/test_importer_routing.py
create mode 100644
airflow-core/tests/unit/dag_processing/test_lang_sdk_processor.py
create mode 100644 dev/breeze/doc/images/output_verify.svg
create mode 100644 dev/breeze/doc/images/output_verify.txt
create mode 100644 dev/breeze/src/airflow_breeze/commands/verify_commands.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/verification_plan.py
create mode 100644 dev/breeze/tests/test_verification_plan.py
create mode 100644 dev/breeze/tests/test_verify_commands.py
create mode 100644 devel-common/src/sphinx_exts/python_builtin_xrefs.py
create mode 100644
devel-common/tests/unit/sphinx_exts/test_python_builtin_xrefs.py
create mode 100644 go-sdk/airflow/if.go
create mode 100644 go-sdk/airflow/if_test.go
create mode 100644 go-sdk/airflow/node.go
create mode 100644 go-sdk/airflow/node_test.go
create mode 100644 go-sdk/airflow/task_group.go
create mode 100644 go-sdk/airflow/task_group_test.go
copy go-sdk/airflow/testdata/{foreigntaskoption => foreignnode}/main.go (64%)
copy providers/{keycloak/tests/unit/keycloak/auth_manager/test_user.py =>
amazon/tests/unit/amazon/aws/executors/conftest.py} (56%)
create mode 100644
providers/cncf/kubernetes/tests/unit/cncf/kubernetes/executors/test_kubernetes_executor_types.py
rename providers/common/ai/docs/{classifier_models.rst => decision_models.rst}
(52%)
rename
providers/common/ai/src/airflow/providers/common/ai/example_dags/{example_classifier_model.py
=> example_decision_model.py} (60%)
create mode 100644
providers/common/compat/tests/unit/common/compat/connection/test_connection_supervisor.py
create mode 100644
providers/edge3/src/airflow/providers/edge3/migrations/versions/0006_5_0_0_add_task_instance_id_to_edge_job.py
create mode 100644
providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.test.tsx
create mode 100644
providers/edge3/tests/unit/edge3/migrations/test_task_instance_identity.py
delete mode 100644
providers/google/tests/system/google/cloud/dataproc/example_dataproc_cluster_generator.py
copy
providers/google/tests/system/google/resources_cleanup/airflow_google_provider_resource_cleanup/handlers/{sqladmin.py
=> datafusion.py} (56%)
create mode 100644
providers/google/tests/unit/google/resources_cleanup/test_datafusion_handler.py
create mode 100644 providers/google/tests/unit/google/test_go_module_utils.py
delete mode 100644 providers/ibm/mq/pre_extras_install.yaml
create mode 100644
providers/standard/tests/unit/standard/operators/test_empty.py
rename
providers/standard/tests/unit/standard/sensors/{test_external_task_sensor.py =>
test_external_task.py} (98%)
create mode 100644
scripts/tests/ci/prek/test_check_contextmanager_class_decorators.py
create mode 100644 scripts/tests/ci/prek/test_update_airflow_pyproject_toml.py
create mode 100644 scripts/tests/in_container/test_run_pre_extras_install.py
create mode 100644 task-sdk/src/airflow/sdk/coordinators/_dag_importer.py
create mode 100644 task-sdk/tests/task_sdk/coordinators/test_dag_importer.py