This is an automated email from the ASF dual-hosted git repository.
jason810496 pushed a change to branch jason/lang-sdk-e2e/05-node-dag-importer
in repository https://gitbox.apache.org/repos/asf/airflow.git
omit 20bb96f96bf Say tasks list runs a native TypeScript Dag's bundle
omit 22bee30e295 Document how a NodeCoordinator is picked for parsing
TypeScript Dags
omit d48c017631f Run a native TypeScript Dag's own bundle through the
native task branch
omit 9349473c47c Let the Node Dag importer find its coordinator
omit 7353f9afa8d Hand out the Node Dag importer through get_dag_importer
omit cb06b9e7096 Pin the Code view to the entry module in Node bundle tests
omit 19bba96a323 Let NodeDagImporter source read errors reach the caller
omit 161badc0241 Import NodeDagImporter at the top of the Node coordinator
omit 23d26808e65 Warn against defining a Dag in both TypeScript and Python
omit 4ea57fb3845 Align the TypeScript build docs with the Code view
omit 954fb3d7162 Say when the Dag processor needs Node.js for TypeScript
bundles
omit 3baaf1e3276 Run a native TypeScript Dag's task from its own bundle
omit d8ee44ca2d4 Share the bundle section mutation helper between Node tests
omit 9758b219837 Document parsing native TypeScript Dags
omit 285b5509387 Parse native TypeScript Dags with the Node coordinator
omit 57ee09e1ac3 Say tasks list runs a native Java Dag's main class
omit 6503cbe10bd Fail a native task cleanly when its file or coordinator
class cannot load
omit 4b0526d431d Run a native Dag's task from its own Dag file
omit d4b46a43417 Fail a task cleanly when its runtime cannot be launched
omit 152ba86f919 Let the Java Dag importer find its coordinator
omit 605ea5627fa Read Java Dag sources from the bundle's sources.json index
omit e4262aa62c7 Hand out the Java Dag importer through get_dag_importer
omit f08c5723ce9 Keep the Java parse_dag test from changing the pytest
worker
omit d8ca6aef4e3 Stop promising that Java dependency JARs are not parsed
omit fe0952a3893 Reject a Java Dag JAR whose SDK cannot answer a parse
omit 609f01a1871 Run the JAR a native Java Dag was parsed from
omit 2f6e4cb74a0 Report why a Java Dag JAR cannot be read
omit 137ae76ef30 Pass the task's Dag file to the coordinator's command
builder
omit c1cd8ba8881 Run a task on its run's version when dag_bundle_name names
its bundle
omit 1117cb11e51 Document native Java Dag parsing
omit 16e2d068b6b Name the JAR manifest attributes the Java coordinator reads
omit 7b9e73bbef4 Test the Java Dag source placeholder for a JAR without a
manifest
omit e6d32e362ab Treat an unreadable JAR like one without a manifest
omit 4953f116c3b Parse native Java Dags with their coordinator
omit 7364ed93213 Build the JVM command that parses a Dag JAR
omit 2515c2bbf52 Read JAR manifests per the JAR specification
omit 1724f567cc6 Default a Dag file processor's parse log to os.devnull
omit 02da4901465 Let a Dag file processor run without a parse log file
omit 87f4d3541c9 Ignore the bagged Dag union in the external task sensor
test
omit d90c9e30918 List the tasks of a native Lang-SDK Dag
omit 2e8d1f2a676 Bag native Lang-SDK Dags in core, only when asked
omit 89396f186ea Let a Dag file processor run without an API client
omit 05fc6dae5e9 Parse coordinator-claimed Dag files with their runtime in
a Dag bag
omit edca3246501 Apply the team rules to the Dag that validation returns
omit 17ed2288524 Test the import errors of a bundle with several
coordinators of a class
omit 84da01d4cd7 Find a claiming Dag importer instead of its coordinator in
Dag processing
omit 7aef9c68bca Name the coordinator class a native Dag task must be
routed to
omit ac5378598a7 Stub Dag file discovery with DagFileInfo in the Lang-SDK
manager tests
omit 0e176450f11 Pass a parse log handle to the Lang-SDK processor in tests
omit 49e05dd9988 Find a native Dag's coordinator key through its importer
omit aee15031875 Wait for the killed leftover in the Lang-SDK processor test
omit 359f8449cb4 Move the client-less Lang-SDK parse out of this change
omit 303d6255397 Note in ADR-0010 that the manager routes claimed files for
now
omit ae441ffba17 Clear import errors after the native-file Dag bag sync test
omit 6cb611d6be3 Apply the multi-team task checks to Lang-SDK Dags
omit eabe577bd7d Spec the mocks of a hand-built Lang-SDK processor in tests
omit f442ee85584 Name the setting in a Lang-SDK parse timeout error
omit 8b7641f14c2 Kill what a Lang-SDK runtime leaves in its process group
omit 2da7ac9fe97 Match the schema error's JSON path in a Lang-SDK parse test
omit c879d3f1a69 Fail a native Dag's task on a Python worker without retries
omit 0e1b2cadf6f Find the claiming coordinator in the Task SDK and wrap it
in core
omit 87ad555f970 Start each Dag file processor with explicit arguments
omit eb3982e6a70 Drop callbacks for Lang-SDK Dag files before queuing the
file
omit faa3e2857c2 Report a native Dag's task that reaches a Python worker
omit a359ae7da5d Report a Lang-SDK parse past its import timeout as an
import error
omit fe6a6853722 Parse coordinator-claimed Dag files with their runtime in
the Dag processor
omit 1e177e60233 Break the new dag_bundle_name docs only at sentence ends
omit 122154d8737 Say which failures fall back to a Python file in ADR-0010
omit eafec25b77c Add a newsfragment for the removed coordinator artifact
roots
omit 8364bb2737d Describe how a Dag importer finds its coordinator in
ADR-0010
omit fb6c4bfa6a8 Say dag_bundle_name only names the stub task artifact
bundle
omit 58aade928ed Find a Dag importer's coordinator from its class
omit 0022eedf09d Explain dag_bundle_name by the coordinator that parses a
Dag file
omit 95a9ed9f3d1 Hand out a coordinator's Dag importer through
get_dag_importer alone
omit ce8aac3144b Say dag_bundle_name is only needed for two coordinators of
one class
omit d38901621ad Drop serves_bundle so get_parsed_bundles is the only answer
omit 68a619133ec Check Dag file claims per bundle on the parse path
omit 90e3aad2a39 Import the coordinator manager at the top of the importer
base
omit 82fa8626f8d Let a coordinator parse the Dag files of the bundles it
serves
omit a7efc7c851c Report a schema error's path the same way under every
jsonschema version
omit 2bcf0508832 Check a serialized Dag as the SDK Dag is checked and
return it
omit e2b4e2972c7 Sync the Go SDK copy of the Dag schema
omit e840e922684 Sync the Java SDK copy of the Dag schema
omit ac2244adbfb Serialize the SDK Dag in tests that write a dag_maker Dag
omit 973cf03f119 Note in the parsing ADR that runtimes may omit
config-backed fields
omit 6158ada8ab3 Check SDK Dags with the Dag processor's validation in
conformance
omit 8636b093e38 Reject malformed task entries in a serialized Dag
omit 9ef13d3ca8c Fill a serialized Dag's unset settings from the Airflow
config
omit b5e58c96bb4 Check that a serialized Dag can be stored and loaded
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 e004a3b2173 Let a Dag importer find the coordinator that parses its
files
add aef23367721 Describe how a Dag importer finds its coordinator in
ADR-0010
add 5a6e21b7028 Parse coordinator-claimed Dag files with their runtime in
the Dag processor
add 5bd17e7f5bf Report a Lang-SDK parse past its import timeout as an
import error
add 4fce878ad09 Report a native Dag's task that reaches a Python worker
add f27abd6d039 Drop callbacks for Lang-SDK Dag files before queuing the
file
add 1178207f30b Start each Dag file processor with explicit arguments
add 3e770671eef Find the claiming coordinator in the Task SDK and wrap it
in core
add caf13de7d4e Fail a native Dag's task on a Python worker without retries
add 02514169e3d Match the schema error's JSON path in a Lang-SDK parse test
add 4c55b0eb242 Kill what a Lang-SDK runtime leaves in its process group
add e2bf0eae0b9 Name the setting in a Lang-SDK parse timeout error
add 1b85bc0960e Spec the mocks of a hand-built Lang-SDK processor in tests
add 8fb2981a4a2 Apply the multi-team task checks to Lang-SDK Dags
add a7834487346 Clear import errors after the native-file Dag bag sync test
add 032c5ab5f99 Note in ADR-0010 that the manager routes claimed files for
now
add bdcc2fd2ad4 Move the client-less Lang-SDK parse out of this change
add eefea5e14ac Wait for the killed leftover in the Lang-SDK processor test
add dc169f9d9cf Find a native Dag's coordinator key through its importer
add d71778333f3 Pass a parse log handle to the Lang-SDK processor in tests
add b8ed37b1f2b Stub Dag file discovery with DagFileInfo in the Lang-SDK
manager tests
add 24b328eb48a Name the coordinator class a native Dag task must be
routed to
add b8f8b5b16c0 Find a claiming Dag importer instead of its coordinator in
Dag processing
add 1c8d7863183 Test the import errors of a bundle with several
coordinators of a class
add e5e417fbd53 Apply the team rules to the Dag that validation returns
add bcaea2f28ed Parse coordinator-claimed Dag files with their runtime in
a Dag bag
add 6bf3a055282 Let a Dag file processor run without an API client
add 4b86f5cc1a2 Bag native Lang-SDK Dags in core, only when asked
add 0b8b60419fb List the tasks of a native Lang-SDK Dag
add 34fa7c0da38 Ignore the bagged Dag union in the external task sensor
test
add ec0b47f90df Let a Dag file processor run without a parse log file
add abfadb45b6f Default a Dag file processor's parse log to os.devnull
add 3825dc5cc41 Read JAR manifests per the JAR specification
add d0c206bb2c1 Build the JVM command that parses a Dag JAR
add 80a56a7b5f5 Parse native Java Dags with their coordinator
add 6250b9b8f94 Treat an unreadable JAR like one without a manifest
add 04894b2a832 Test the Java Dag source placeholder for a JAR without a
manifest
add e8d945f0ec3 Name the JAR manifest attributes the Java coordinator reads
add 85e112423a6 Document native Java Dag parsing
add 6de0fa4f193 Run a task on its run's version when dag_bundle_name names
its bundle
add 50df78c2c74 Pass the task's Dag file to the coordinator's command
builder
add adefab3b67c Report why a Java Dag JAR cannot be read
add 681bd073dc9 Run the JAR a native Java Dag was parsed from
add adbb8bad3e4 Reject a Java Dag JAR whose SDK cannot answer a parse
add 0bf92aaf9f1 Stop promising that Java dependency JARs are not parsed
add eb73ea59e55 Keep the Java parse_dag test from changing the pytest
worker
add baf894a9e3a Hand out the Java Dag importer through get_dag_importer
add 61a9c95e5dc Read Java Dag sources from the bundle's sources.json index
add 5ed36220862 Let the Java Dag importer find its coordinator
add 5910f41ae21 Fail a task cleanly when its runtime cannot be launched
add 0cfc33b704c Run a native Dag's task from its own Dag file
add 78310ebca0a Fail a native task cleanly when its file or coordinator
class cannot load
add 332ef5f66a1 Say tasks list runs a native Java Dag's main class
add 1673f86962b Say a JRE parses native Java Dags, and keep main's bundle
test mocks
add 3e21b81ebc6 Parse native TypeScript Dags with the Node coordinator
add e4cc4012019 Document parsing native TypeScript Dags
add d0c157838bb Share the bundle section mutation helper between Node tests
add 297f19fbf6c Run a native TypeScript Dag's task from its own bundle
add 99f154c7a81 Say when the Dag processor needs Node.js for TypeScript
bundles
add ce6dd97e974 Align the TypeScript build docs with the Code view
add dcc382a1314 Warn against defining a Dag in both TypeScript and Python
add 386b57a8b9b Import NodeDagImporter at the top of the Node coordinator
add 6d5b6af3c3a Let NodeDagImporter source read errors reach the caller
add 056bed2b140 Pin the Code view to the entry module in Node bundle tests
add af94abca7aa Hand out the Node Dag importer through get_dag_importer
add ed613049bec Let the Node Dag importer find its coordinator
add 570c7d563e7 Run a native TypeScript Dag's own bundle through the
native task branch
add 7dbf51b8470 Document how a NodeCoordinator is picked for parsing
TypeScript Dags
add 133a9c3c24e Say tasks list runs a native TypeScript Dag's bundle
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 (20bb96f96bf)
\
N -- N -- N refs/heads/jason/lang-sdk-e2e/05-node-dag-importer
(133a9c3c24e)
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 | 10 +-
.agents/skills/airflow-publish-changes/SKILL.md | 2 +-
AGENTS.md | 1 +
README.md | 16 +-
.../adr/lang-sdk/0010-native-dag-processing.md | 11 +-
.../0013-persisted-task-handler-bindings.md | 2 +-
.../authoring-and-scheduling/language-sdks/go.rst | 93 ++--
.../language-sdks/index.rst | 6 +-
.../language-sdks/java.rst | 131 +++--
.../language-sdks/typescript.rst | 94 ++--
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/73970.significant.rst | 5 +
airflow-core/newsfragments/74042.significant.rst | 8 -
.../src/airflow/api_fastapi/auth/tokens.py | 24 +-
.../core_api/datamodels/dag_versions.py | 158 ++++++
.../core_api/openapi/v2-rest-api-generated.yaml | 273 ++++++++++
.../api_fastapi/core_api/routes/public/auth.py | 9 +-
.../core_api/routes/public/dag_versions.py | 98 +++-
.../api_fastapi/execution_api/routes/variables.py | 10 +-
.../src/airflow/config_templates/config.yml | 19 +-
airflow-core/src/airflow/provider.yaml.schema.json | 5 +-
.../src/airflow/serialization/dag_version_diff.py | 3 +-
.../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 | 188 +++++++
.../ui/openapi-gen/requests/services.gen.ts | 72 ++-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 143 +++++
airflow-core/src/airflow/ui/package.json | 16 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 591 +++++++++------------
.../ui/public/i18n/locales/en/components.json | 1 +
.../src/airflow/ui/public/i18n/locales/en/dag.json | 63 +++
.../src/components/VersionCompareSelect.test.tsx | 82 +++
.../Code => components}/VersionCompareSelect.tsx | 4 +-
.../src/airflow/ui/src/constants/searchParams.ts | 3 +
airflow-core/src/airflow/ui/src/constants/tab.ts | 1 +
.../src/airflow/ui/src/pages/Dag/Code/Code.tsx | 2 +-
airflow-core/src/airflow/ui/src/pages/Dag/Dag.tsx | 3 +-
.../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-core/src/airflow/ui/src/router.tsx | 6 +
.../tests/unit/always/test_project_structure.py | 3 -
.../tests/unit/always/test_provider_yaml_schema.py | 10 +
.../tests/unit/api_fastapi/auth/test_tokens.py | 43 ++
.../core_api/routes/public/test_auth.py | 45 +-
.../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 +-
.../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 | 157 ++++++
airflow-ctl/src/airflowctl/ctl/cli_config.py | 17 +
.../src/airflowctl/ctl/commands/task_command.py | 53 +-
.../airflow_ctl/ctl/commands/test_task_command.py | 275 +++++++++-
airflow-e2e-tests/docker/go.yml | 9 +-
airflow-e2e-tests/docker/java.yml | 13 +-
airflow-e2e-tests/docker/ts.yml | 9 +-
.../tests/airflow_e2e_tests/conftest.py | 84 ++-
chart/README.md | 2 +-
contributing-docs/08_static_code_checks.rst | 1 +
contributing-docs/30_new_language_sdk.rst | 7 +-
dev/breeze/doc/03_developer_tasks.rst | 55 ++
dev/breeze/doc/ci/04_selective_checks.md | 5 +
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 +-
.../src/airflow_breeze/utils/reproduce_ci.py | 10 +-
.../src/airflow_breeze/utils/verification_plan.py | 170 ++++++
dev/breeze/tests/test_packages.py | 27 +
dev/breeze/tests/test_reproduce_ci.py | 12 +
dev/breeze/tests/test_run_test_args.py | 35 +-
dev/breeze/tests/test_selective_checks.py | 15 +-
dev/breeze/tests/test_verification_plan.py | 244 +++++++++
dev/breeze/tests/test_verify_commands.py | 327 ++++++++++++
dev/skill-evals/last-eval-hash.txt | 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 ++++
docs/spelling_wordlist.txt | 3 +
generated/PYPI_README.md | 16 +-
generated/known_airflow_exceptions.txt | 4 +-
go-sdk/README.md | 37 +-
go-sdk/example/bundle/Justfile | 3 +-
java-sdk/README.md | 31 +-
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 | 17 +-
java-sdk/sdk/build.gradle.kts | 4 +-
kubernetes-tests/lang_sdk/README.md | 14 +-
kubernetes-tests/lang_sdk/config/values.yaml | 12 +-
.../lang_sdk/pod_templates/lang_sdk_golang.yaml | 3 +-
.../lang_sdk/pod_templates/lang_sdk_java.yaml | 5 +-
kubernetes-tests/lang_sdk/stage_artifacts.py | 8 +-
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/provider.yaml | 15 +
.../providers/amazon/aws/auth_manager/constants.py | 1 +
.../amazon/aws/auth_manager/routes/login.py | 200 ++++++-
.../providers/amazon/aws/executors/batch/utils.py | 6 +-
.../airflow/providers/amazon/get_provider_info.py | 7 +
.../amazon/aws/auth_manager/routes/test_login.py | 359 +++++++++++--
.../airflow/providers/apache/beam/hooks/beam.py | 45 +-
.../beam/tests/unit/apache/beam/hooks/test_beam.py | 42 ++
.../providers/apache/spark/hooks/spark_submit.py | 98 +++-
.../unit/apache/spark/hooks/test_spark_submit.py | 118 ++++
.../providers/celery/executors/celery_executor.py | 4 +-
.../unit/celery/executors/test_celery_executor.py | 29 +-
.../providers/cncf/kubernetes/triggers/job.py | 4 +-
.../unit/cncf/kubernetes/triggers/test_job.py | 13 +-
.../connection/test_connection_supervisor.py | 214 ++++++++
providers/fab/docs/auth-manager/access-control.rst | 4 +
.../providers/google/cloud/hooks/bigtable.py | 24 +
.../providers/google/cloud/hooks/cloud_sql.py | 57 +-
.../providers/google/cloud/hooks/compute.py | 3 -
.../google/cloud/hooks/vertex_ai/auto_ml.py | 2 +-
.../tests/unit/google/cloud/hooks/test_bigtable.py | 26 +
.../unit/google/cloud/hooks/test_cloud_sql.py | 78 ++-
.../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/microsoft/azure/pyproject.toml | 2 +-
.../providers/microsoft/azure/hooks/msgraph.py | 13 +-
.../unit/microsoft/azure/hooks/test_msgraph.py | 17 +
.../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 | 32 +-
.../opensearch/log/test_os_remote_log_io.py | 18 +
.../unit/opensearch/log/test_os_task_handler.py | 102 +++-
.../providers/snowflake/hooks/snowflake_sql_api.py | 12 +-
.../unit/snowflake/hooks/test_snowflake_sql_api.py | 35 +-
.../tests/unit/standard/operators/test_empty.py | 56 ++
...ternal_task_sensor.py => test_external_task.py} | 32 ++
.../prek/check_contextmanager_class_decorators.py | 1 +
scripts/ci/prek/check_excluded_provider_markers.py | 36 +-
scripts/ci/prek/update_airflow_pyproject_toml.py | 35 +-
scripts/ci/testing/run_unit_tests.sh | 7 +-
.../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 +
task-sdk/docs/deferred-vs-async-operators.rst | 2 +-
task-sdk/docs/executable-bundle-spec.rst | 31 +-
task-sdk/docs/ts-bundle-spec.rst | 25 +-
.../src/airflow/sdk/coordinators/_subprocess.py | 65 +--
.../sdk/coordinators/executable/coordinator.py | 12 +-
.../airflow/sdk/coordinators/java/coordinator.py | 19 +-
.../airflow/sdk/coordinators/node/coordinator.py | 15 +-
.../src/airflow/sdk/execution_time/coordinator.py | 21 +-
.../coordinators/executable/test_coordinator.py | 49 +-
.../task_sdk/coordinators/java/test_coordinator.py | 76 +--
.../coordinators/java/test_dag_importer.py | 2 +-
.../task_sdk/coordinators/node/test_coordinator.py | 14 +-
.../coordinators/node/test_dag_importer.py | 2 +-
.../tests/task_sdk/coordinators/test_subprocess.py | 173 +++---
.../task_sdk/execution_time/test_coordinator.py | 85 ++-
ts-sdk/README.md | 24 +-
ts-sdk/example/README.md | 17 +-
217 files changed, 8293 insertions(+), 1573 deletions(-)
create mode 100644 airflow-core/newsfragments/73970.significant.rst
delete mode 100644 airflow-core/newsfragments/74042.significant.rst
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%)
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 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
providers/common/compat/tests/unit/common/compat/connection/test_connection_supervisor.py
create mode 100644 providers/google/tests/unit/google/test_go_module_utils.py
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