This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a change to branch ci-upgrade-main
in repository https://gitbox.apache.org/repos/asf/airflow.git
omit 311e7c9a98c [main] CI: Upgrade important CI environment
add 0e729051dc0 Make task and asset store row size limits configurable
(#68133)
add 2217dbc7d73 Backfill partitioned Dags by partition-date range (#67537)
add 1dc71d8b9b5 fix: fix missing rename in test_spark_submit (#68565)
add 91cce6484ce Escape URL for DagOperations lookup in task sdk client
(#68129)
add 14ab6a03ca7 Add Deadline in Dashboard Page (#68038)
add e09ad45c785 Refresh bundle version in place when DAG serialization is
unchanged (#68336)
add 774b5b50e96 Determine latest Dag version by version_number, not
created_at (#68389)
add 6783f4f7483 Fix airflow partitions clear date range for non-UTC
partitioned timetables (#68460)
add dc9abd4c028 Document apache-airflow-mypy package in core docs (#68561)
add 61f87adf525 feat: fill Taiwanese Mandarin translation gap (#68563)
add 92f1aa3edf4 Reload serialized Dag when a version is updated in place
(#68558)
add 88a1b329a0e Validate partition keys are non-empty and within column
length (#68443)
add 362cc1637a3 Fix Dag run partition key filter breaking on composite
keys with | (#68459)
add 6efd2185859 Fix `DataprocCreateBatchOperator` stuck in deferred state
for a long time (#67638)
add 6f5172b7703 Informatica provider: Add SQL auto-lineage and selective
lineage control (#66612)
add 3576a71ef15 Bump eslint-plugin-unicorn (#68467)
add 2cc26a96ba2 Bump UI dependencies to remove dependabot alarms in core,
esbuild (#68516)
add beb5956ec2d Go-SDK: support UP_FOR_RETRY in coordinator mode with e2e
coverage (#68554)
add 0ce2db5c13d Bump aiohttp in
/providers/informatica/dev/informatica_simulator (#68571)
add bdebdbd80c0 Fix typos/format test in Fundamentals docs (#68524)
add 30958e59c81 Bump requests in
/providers/informatica/dev/informatica_simulator (#68572)
add 8445434051c Defer `InProcessExecutionAPI` import (#68569)
add 69637835c52 Tighten test-scope guidance: test only what the PR changes
(#68502)
add f2ccc97b128 Add producer-side ack channel to shared-stream triggers
(#67523)
add d0ced937ac0 Factor out a shared base for the database error handlers
(#68512)
add a5684bf8d03 Check destination team permission when using bulk APIs
with connections, variables and pools (#68573)
add ecc04df016e Bump prettier (#68576)
add 24304609b59 Bump vite in /dev/react-plugin-tools/react_plugin_template
(#68581)
add b4ae8743ab1 Bump vite (#68580)
add d0201c51596 Bump vite from 8.0.8 to 8.0.16 in
/airflow-core/src/airflow/ui (#68579)
add eee0b99826e Fix `LlamaIndexEmbeddingOperator` returning `vector=None`
for every chunk (#68491)
add 033aeb1a7c1 Upload task logs even when final state update fails
(#67935)
add 07a7a5297d6 Java-SDK: support UP_FOR_RETRY in coordinator mode with
e2e coverage (#68555)
add 19163e949a2 Add team_name tag to executor metrics for multi-team
deployments (#68593)
add 34e8803c9ba docs: readme 2.11 deprecate (#68559)
add 41f20d5f6c5 Remote logging fix (#68370)
add c9861d6750d Cap fastapi <0.137 and fix execution API health empty-path
route (#68578)
add 2c15b448095 UI: Complete Hindi (hi) translation coverage (#68574)
add ec850dfd627 Improve HITL form UX (#68397)
add c921eaaacbd Collapse unreleased Execution API versions under
2026-06-30 (#68611)
add 92a2b0d7249 Some more notes for Java SDK publishing (#68440)
add 376cecdb9f2 Add ServiceNow to INTHEWILD.md (#68409)
add b35ecd59e18 Add configurable UPSERT update fields to PostgresHook
(#67045)
add 18506de1629 Feat note modal (#68362)
add c03460ed9dd common.ai: Park approval reviews in awaiting_input on
Airflow 3.3+ (#68489)
add b193ced28a7 Enforce SQLToolset allowed_tables on queries, not just
discovery (#68487)
add 5b84fc006af Bump aiohttp in
/providers/informatica/dev/informatica_simulator (#68607)
add 98ea29a1e9f Upload log with `put_object` in `s3_task_handler` (#68619)
add aa9f6a0d0d2 Add conventional commit (#68631)
add b637e193b6f Document commit and PR title and body conventions in
AGENTS.md (#68632)
add 1b6e47afa54 Fix task scheduling when multi_team is enabled (#68634)
add 89e9f41dd83 Fix sensitive data leak in SparkSubmitOperator truncated
templates (#68624)
add 250fbb22be1 Add notification UX for HITL actions (#68346)
add f6bd8b48d29 Add team_name tag to scheduler metrics for multi-team
deployments (#68594)
add 86a75201759 Fix task runner failure on duplicate TI success update
conflict (#63355)
add 826999928ae Add agent guidance to comment sparingly (#68640)
add 58480dd8386 Fix common.ai example DAGs failing to parse without the
sql extra (#68497)
add b191f539330 Add team_name tag to deadline metrics for multi-team
deployments (#68589)
add 9d92c221454 Warn release managers to verify
prepare-providers-documentation output (#68641)
add a42fdb94ea3 Sync uv.lock and provider-deps checksum for #66612 (#68620)
add 7e9bdb245e0 Remove dead AIP-44 trigger-over-BaseSerialization path
(DAT.BASE_TRIGGER) (#68528)
add 5129c1f0d0e Fix flaky shared-stream overflow test that times out in CI
(#68651)
add 853d84ed950 Fix contributing-docs broken links (#68655)
add f3037c173f6 Document that the Google OpenID auth backend matches users
by their (mutable) email (#68391)
add 0385bae7055 Validate destination paths derived from GCS object names
(#67667)
add 58ba6620616 Fix misleading comment and pin reprocess behaviour for
partitioned backfill (#68618)
add c006c184df6 Forward Google Cloud Run container logs to Airflow log via
verbose flag (#67140)
add 28ca0b66260 Harden S3 sync target paths (#67847)
add 2963064c06f Derive partition_date for composite keys with one temporal
dimension (#68442)
add 48d0ad5f89f Add tests for links/base and links/bigquery in Google
provider (#68066)
add bb859bde5a4 Add opensearch to default PROD image extras (#68659)
add 317f4cf4254 [main] CI: Upgrade important CI environment
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 (311e7c9a98c)
\
N -- N -- N refs/heads/ci-upgrade-main (317f4cf4254)
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:
.github/instructions/code-review.instructions.md | 4 +-
.pre-commit-config.yaml | 6 +-
AGENTS.md | 14 +-
Dockerfile | 4 +-
Dockerfile.ci | 2 +-
INTHEWILD.md | 1 +
README.md | 2 +-
.../authoring-and-scheduling/event-scheduling.rst | 296 ++-
airflow-core/docs/best-practices.rst | 12 +-
airflow-core/docs/core-concepts/backfill.rst | 26 +-
airflow-core/docs/howto/index.rst | 1 +
airflow-core/docs/howto/static-type-checking.rst | 75 +
airflow-core/docs/tutorial/fundamentals.rst | 10 +-
airflow-core/newsfragments/67523.feature.rst | 1 +
airflow-core/pyproject.toml | 6 +-
.../auth/managers/simple/ui/package.json | 5 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 436 +---
.../src/airflow/api_fastapi/common/exceptions.py | 134 +-
.../src/airflow/api_fastapi/common/parameters.py | 41 +-
.../core_api/datamodels/asset_state_store.py | 11 +-
.../core_api/datamodels/task_state_store.py | 19 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 16 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 176 +-
.../src/airflow/api_fastapi/core_api/security.py | 55 +-
.../api_fastapi/execution_api/routes/__init__.py | 6 +-
.../api_fastapi/execution_api/routes/health.py | 4 +-
.../execution_api/routes/task_instances.py | 63 +-
.../api_fastapi/execution_api/versions/__init__.py | 13 +-
.../execution_api/versions/v2026_06_16.py | 80 -
.../execution_api/versions/v2026_06_30.py | 65 +-
airflow-core/src/airflow/cli/cli_config.py | 18 +-
.../src/airflow/cli/commands/partition_command.py | 24 +-
.../src/airflow/config_templates/config.yml | 27 +
airflow-core/src/airflow/dag_processing/manager.py | 14 +-
airflow-core/src/airflow/exceptions.py | 4 +
.../src/airflow/executors/base_executor.py | 7 +-
.../src/airflow/jobs/scheduler_job_runner.py | 69 +-
.../src/airflow/jobs/triggerer_job_runner.py | 74 +-
airflow-core/src/airflow/models/backfill.py | 49 +-
airflow-core/src/airflow/models/dag_version.py | 9 +-
airflow-core/src/airflow/models/dagbag.py | 83 +-
airflow-core/src/airflow/models/deadline.py | 23 +-
airflow-core/src/airflow/models/serialized_dag.py | 105 +-
.../src/airflow/partition_mappers/product.py | 31 +-
.../src/airflow/serialization/definitions/dag.py | 79 +-
airflow-core/src/airflow/serialization/enums.py | 1 -
.../airflow/serialization/serialized_objects.py | 17 +-
airflow-core/src/airflow/timetables/base.py | 21 +-
airflow-core/src/airflow/timetables/trigger.py | 57 +-
airflow-core/src/airflow/triggers/base.py | 72 +-
airflow-core/src/airflow/triggers/shared_stream.py | 999 +++++++-
.../ui/openapi-gen/queries/ensureQueryData.ts | 88 +-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 88 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 90 +-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 88 +-
.../ui/openapi-gen/requests/services.gen.ts | 90 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 90 +-
airflow-core/src/airflow/ui/package.json | 6 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 534 +---
.../airflow/ui/public/i18n/locales/en/common.json | 5 +-
.../ui/public/i18n/locales/en/dashboard.json | 12 +
.../airflow/ui/public/i18n/locales/en/hitl.json | 14 +
.../airflow/ui/public/i18n/locales/hi/admin.json | 3 +-
.../airflow/ui/public/i18n/locales/hi/assets.json | 17 +
.../airflow/ui/public/i18n/locales/hi/browse.json | 18 +
.../airflow/ui/public/i18n/locales/hi/common.json | 85 +-
.../ui/public/i18n/locales/hi/components.json | 9 +-
.../src/airflow/ui/public/i18n/locales/hi/dag.json | 85 +-
.../airflow/ui/public/i18n/locales/hi/dags.json | 5 +
.../ui/public/i18n/locales/hi/dashboard.json | 14 +
.../ui/public/i18n/locales/zh-TW/common.json | 13 +-
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 4 -
.../ui/src/components/EditableMarkdownArea.tsx | 85 -
.../ui/src/components/EditableMarkdownButton.tsx | 60 +-
.../src/components/FlexibleForm/FlexibleForm.tsx | 74 +
.../HITLReview/HITLReviewDetail.tsx} | 46 +-
.../HITLReview/HITLReviewDetailSummary.tsx | 74 +
.../src/components/HITLReview/HITLReviewDrawer.tsx | 65 +
.../src/components/HITLReview/HITLReviewList.tsx | 115 +
.../HITLReview/HITLReviewListSection.tsx | 57 +
.../components/HITLReview/HITLReviewModal.test.tsx | 109 +
.../src/components/HITLReview/HITLReviewModal.tsx | 155 ++
.../useHITLReviewModalRouteSync.test.tsx | 78 +
.../HITLReview/useHITLReviewModalRouteSync.ts | 58 +
.../HITLReview/useHITLReviewModalSelection.test.ts | 72 +
.../HITLReview/useHITLReviewModalSelection.ts | 54 +
.../src/airflow/ui/src/components/HeaderCard.tsx | 8 +-
.../ui/src/components/MarkdownModal.test.tsx | 131 +
.../airflow/ui/src/components/MarkdownModal.tsx | 181 ++
.../airflow/ui/src/components/NeedsReviewBadge.tsx | 42 +-
.../ui/src/components/NeedsReviewButton.tsx | 143 +-
.../levels.js => ui/src/components/NoteIcon.tsx} | 12 +-
.../airflow/ui/src/components/NotePreview.test.tsx | 98 +
.../src/airflow/ui/src/components/NotePreview.tsx | 104 +
.../airflow/ui/src/components/ReactMarkdown.tsx | 34 +-
.../ui/src/components/ui/ResizableWrapper.tsx | 10 +-
.../src/airflow/ui/src/constants/filterConfigs.tsx | 2 +-
airflow-core/src/airflow/ui/src/pages/Dag/Dag.tsx | 13 +-
.../src/airflow/ui/src/pages/Dag/Header.tsx | 2 +
.../airflow/ui/src/pages/Dag/Overview/Overview.tsx | 2 -
.../src/airflow/ui/src/pages/DagRuns/DagRuns.tsx | 2 +
.../DagRuns/RunNoteButton.tsx} | 35 +-
.../src/airflow/ui/src/pages/DagsList/DagCard.tsx | 10 +-
.../DagsList/DagsFilters/RequiredActionFilter.tsx | 5 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 4 +-
.../airflow/ui/src/pages/Dashboard/Dashboard.tsx | 24 +-
.../Dashboard/Deadlines/DashboardDeadlines.tsx | 114 +
.../src/pages/Dashboard/Deadlines/DeadlineItem.tsx | 53 +
.../pages/Dashboard/Deadlines/DeadlineSection.tsx | 85 +
.../Dashboard/Deadlines}/index.ts | 2 +-
.../HistoricalMetrics/HistoricalMetrics.tsx | 19 +-
.../airflow/ui/src/pages/Dashboard/Stats/Stats.tsx | 4 +-
.../Dashboard/useDashboardDeadlines.ts} | 59 +-
.../pages/HITLTaskInstances/HITLResponseForm.tsx | 23 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 81 +-
.../src/airflow/ui/src/pages/Run/Header.tsx | 45 +-
airflow-core/src/airflow/ui/src/pages/Run/Run.tsx | 10 +-
.../airflow/ui/src/pages/TaskInstance/Header.tsx | 52 +-
.../TaskInstances/TaskInstanceNoteButton.tsx} | 35 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 2 +
.../useDagRunNote.ts} | 35 +-
.../src/queries/useNoteEditor.ts} | 47 +-
.../airflow/ui/src/queries/useTaskInstanceNote.ts | 52 +
.../airflow/ui/src/queries/useUpdateHITLDetail.ts | 13 +-
airflow-core/src/airflow/ui/src/router.tsx | 10 +-
airflow-core/src/airflow/ui/src/utils/hitl.ts | 6 +-
.../ui/tests/e2e/components/HITLReviewDrawer.ts | 20 +-
.../ui/tests/e2e/components/HITLReviewModal.ts | 20 +-
.../src/airflow/ui/tests/e2e/fixtures/data.ts | 26 +
.../src/airflow/ui/tests/e2e/fixtures/pom.ts | 10 +
.../airflow/ui/tests/e2e/pages/DagDetailPage.ts | 48 +
.../src/airflow/ui/tests/e2e/pages/DagRunPage.ts | 48 +
.../src/airflow/ui/tests/e2e/pages/DagsPage.ts | 21 +
.../src/airflow/ui/tests/e2e/pages/HomePage.ts | 5 +
.../ui/tests/e2e/pages/RequiredActionsPage.ts | 29 +-
.../{configuration.spec.ts => dag-detail.spec.ts} | 29 +-
.../{configuration.spec.ts => dag-run.spec.ts} | 29 +-
.../airflow/ui/tests/e2e/specs/dags-list.spec.ts | 42 +
.../ui/tests/e2e/specs/home-dashboard.spec.ts | 15 +
.../ui/tests/e2e/specs/requiredAction.spec.ts | 11 +
.../src/airflow/ui/tests/e2e/utils/api/hitl.ts | 22 +
.../tests/unit/always/test_project_structure.py | 2 -
.../unit/api_fastapi/common/test_parameters.py | 42 +
.../routes/public/test_asset_state_store.py | 12 +-
.../core_api/routes/public/test_backfills.py | 128 +
.../core_api/routes/public/test_dag_run.py | 87 +-
.../routes/public/test_task_state_store.py | 25 +
.../api_fastapi/core_api/routes/ui/test_grid.py | 13 +-
.../unit/api_fastapi/core_api/test_security.py | 99 +
.../api_fastapi/execution_api/routes}/__init__.py | 0
.../execution_api/routes/test_health_routes.py | 38 +
.../versions/head/test_task_instances.py | 96 +
.../versions/v2026_06_30/test_connection_tests.py | 2 +-
.../versions/v2026_06_30/test_variables.py | 2 +-
.../unit/cli/commands/test_backfill_command.py | 26 +
.../unit/cli/commands/test_partition_command.py | 227 +-
.../tests/unit/executors/test_base_executor.py | 42 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 139 +-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 228 +-
airflow-core/tests/unit/models/test_backfill.py | 555 +++-
airflow-core/tests/unit/models/test_dag.py | 81 +-
airflow-core/tests/unit/models/test_dag_version.py | 61 +-
airflow-core/tests/unit/models/test_dagbag.py | 162 +-
airflow-core/tests/unit/models/test_deadline.py | 120 +
.../tests/unit/models/test_serialized_dag.py | 106 +
.../tests/unit/partition_mappers/test_product.py | 40 +
.../tests/unit/serialization/test_helpers.py | 23 +
.../unit/serialization/test_serialized_objects.py | 32 +-
.../unit/timetables/test_trigger_timetable.py | 238 ++
.../tests/unit/triggers/test_base_trigger.py | 11 +
.../tests/unit/triggers/test_shared_stream.py | 2652 +++++++++++++++++++-
.../go_sdk_tests/test_go_sdk_dag.py | 60 +-
.../java_sdk_tests/test_java_sdk_dag.py | 44 +-
contributing-docs/01_roles_in_airflow_project.rst | 6 +-
contributing-docs/02_how_to_communicate.rst | 2 +-
contributing-docs/05_pull_requests.rst | 14 +-
contributing-docs/30_new_language_sdk.rst | 4 +
dev/README_RELEASE_PROVIDERS.md | 20 +-
dev/breeze/doc/ci/02_images.md | 2 +-
dev/breeze/doc/images/output_prod-image_build.svg | 4 +-
dev/breeze/doc/images/output_prod-image_build.txt | 2 +-
.../airflow_breeze/commands/kubernetes_commands.py | 2 +-
.../commands/release_management_commands.py | 2 +-
dev/breeze/src/airflow_breeze/global_constants.py | 3 +-
dev/breeze/tests/test_selective_checks.py | 2 +-
dev/breeze/uv.lock | 197 +-
.../react_plugin_template/package.json | 8 +-
.../react_plugin_template/pnpm-lock.yaml | 553 +---
devel-common/pyproject.toml | 4 +-
docker-stack-docs/build-arg-ref.rst | 1 +
docs/spelling_wordlist.txt | 1 +
generated/PYPI_README.md | 2 +-
generated/provider_dependencies.json | 5 +-
generated/provider_dependencies.json.sha256sum | 2 +-
go-sdk/dags/go_examples.py | 20 +-
go-sdk/example/bundle/main.go | 15 +-
go-sdk/pkg/execution/frames.go | 13 +
go-sdk/pkg/execution/integration_test.go | 56 +
go-sdk/pkg/execution/messages.go | 26 +-
go-sdk/pkg/execution/messages_test.go | 13 +
go-sdk/pkg/execution/task_runner.go | 29 +-
java-sdk/README.md | 12 +
.../apache/airflow/example/AnnotationExample.java | 12 +-
.../example/src/resources/dags/java_examples.py | 7 +
.../org/apache/airflow/sdk/execution/Task.kt | 15 +-
.../org/apache/airflow/sdk/execution/TaskTest.kt | 11 +
.../test_kubernetes_pod_operator.py | 2 +-
.../src/airflow/providers/amazon/aws/exceptions.py | 4 +
.../src/airflow/providers/amazon/aws/hooks/s3.py | 9 +-
.../providers/amazon/aws/log/s3_task_handler.py | 18 +-
.../amazon/tests/unit/amazon/aws/hooks/test_s3.py | 13 +-
.../unit/amazon/aws/log/test_s3_task_handler.py | 15 +
.../apache/spark/operators/test_spark_submit.py | 14 +-
.../cncf/kubernetes/utils/xcom_sidecar.py | 2 +-
.../system/cncf/kubernetes/example_kubernetes.py | 2 +-
.../cncf/kubernetes/example_kubernetes_async.py | 2 +-
.../unit/cncf/kubernetes/operators/test_pod.py | 6 +-
.../ai/docs/operators/llamaindex_embedding.rst | 12 +-
providers/common/ai/docs/toolsets.rst | 78 +-
providers/common/ai/pyproject.toml | 2 +-
.../common/ai/example_dags/example_agent.py | 162 +-
.../ai/example_dags/example_agent_capabilities.py | 57 +-
.../ai/example_dags/example_agent_durable.py | 102 +-
.../common/ai/example_dags/example_agent_skills.py | 49 +-
.../common/ai/example_dags/example_llm_sql.py | 251 +-
.../ai/example_dags/example_llm_survey_agentic.py | 241 +-
.../ai/example_dags/example_llm_survey_analysis.py | 450 ++--
.../airflow/providers/common/ai/mixins/approval.py | 39 +-
.../common/ai/operators/llamaindex_embedding.py | 47 +-
.../providers/common/ai/plugins/www/package.json | 2 +-
.../providers/common/ai/plugins/www/pnpm-lock.yaml | 241 +-
.../airflow/providers/common/ai/toolsets/sql.py | 155 +-
.../common/ai/utils/dataquality}/__init__.py | 0
.../providers/common/ai/utils/sql_validation.py | 259 +-
.../tests/unit/common/ai/mixins/test_approval.py | 62 +-
.../ai/operators/test_llamaindex_embedding.py | 130 +-
.../ai/tests/unit/common/ai/operators/test_llm.py | 55 +-
.../common/ai/operators/test_llm_file_analysis.py | 23 +-
.../tests/unit/common/ai/operators/test_llm_sql.py | 18 +-
.../ai/tests/unit/common/ai/toolsets/test_sql.py | 282 +++
.../unit/common/ai/utils/test_sql_validation.py | 192 ++
.../fab/src/airflow/providers/fab/www/package.json | 2 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 46 +-
.../google/docs/api-auth-backend/google-openid.rst | 16 +
.../google/docs/operators/cloud/cloud_run.rst | 32 +
.../providers/google/cloud/hooks/dataproc.py | 19 +-
.../providers/google/cloud/operators/cloud_run.py | 103 +-
.../google/cloud/transfers/gcs_to_sftp.py | 23 +-
.../providers/google/cloud/triggers/cloud_run.py | 15 +
.../providers/google/cloud/triggers/dataproc.py | 4 +-
.../tests/unit/google/cloud/links/test_base.py | 167 ++
.../tests/unit/google/cloud/links/test_bigquery.py | 143 ++
.../unit/google/cloud/operators/test_cloud_run.py | 363 ++-
.../google/cloud/transfers/test_gcs_to_sftp.py | 99 +
.../unit/google/cloud/triggers/test_cloud_run.py | 26 +-
.../unit/google/cloud/triggers/test_dataproc.py | 35 +
providers/informatica/README.rst | 1 +
providers/informatica/dev/docker-compose.yml | 90 +
.../dev/informatica_simulator/Dockerfile} | 64 +-
.../dev/informatica_simulator/app/main.py | 372 +++
.../dev/informatica_simulator/requirements.txt | 8 +
.../informatica/dev/init/001_schema_and_seed.sql | 152 ++
providers/informatica/docs/changelog.rst | 13 +
providers/informatica/docs/guides/api.rst | 2 +-
.../informatica/docs/guides/configuration.rst | 81 +-
providers/informatica/docs/guides/usage.rst | 153 +-
providers/informatica/docs/index.rst | 2 +
providers/informatica/provider.yaml | 29 +
providers/informatica/pyproject.toml | 8 +-
.../src/airflow/providers/informatica/conf.py | 61 +
.../informatica/example_dags}/__init__.py | 0
.../example_dags/example_informatica_lineage.py | 353 +++
.../informatica/extractors/informatica.py | 82 +-
.../providers/informatica/get_provider_info.py | 21 +
.../src/airflow/providers/informatica/hooks/edc.py | 69 +-
.../providers/informatica/lineage}/__init__.py | 15 +-
.../providers/informatica/lineage/resolver.py | 161 ++
.../providers/informatica/lineage/selective.py | 68 +
.../providers/informatica/lineage/sql_parser.py | 133 +
.../providers/informatica/lineage/validation.py | 298 +++
.../providers/informatica/plugins/informatica.py | 4 +-
.../providers/informatica/plugins/listener.py | 176 +-
.../tests/unit/informatica/hooks/test_edc.py | 91 +-
.../tests/unit/informatica/lineage}/__init__.py | 0
.../unit/informatica/lineage/test_resolver.py | 155 ++
.../unit/informatica/lineage/test_selective.py | 78 +
.../unit/informatica/lineage/test_sql_parser.py | 148 ++
.../unit/informatica/lineage/test_validation.py | 314 +++
.../unit/informatica/plugins/test_listener.py | 434 +++-
.../tests/unit/informatica/test_conf.py | 86 +
.../providers/postgres/dialects/postgres.py | 12 +-
.../airflow/providers/postgres/hooks/postgres.py | 41 +-
.../tests/unit/postgres/dialects/test_postgres.py | 57 +
.../tests/unit/postgres/hooks/test_postgres.py | 29 +
pyproject.toml | 9 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/ruff_format.py | 2 +-
scripts/tools/setup_breeze | 2 +-
.../secrets_masker/secrets_masker.py | 3 +-
.../tests/secrets_masker/test_secrets_masker.py | 7 +
task-sdk/src/airflow/sdk/api/client.py | 3 +-
task-sdk/src/airflow/sdk/execution_time/context.py | 48 +-
.../src/airflow/sdk/execution_time/supervisor.py | 14 +-
task-sdk/tests/task_sdk/api/test_client.py | 31 +
.../tests/task_sdk/execution_time/test_context.py | 57 +
.../task_sdk/execution_time/test_supervisor.py | 63 +
uv.lock | 852 ++++---
307 files changed, 18818 insertions(+), 4494 deletions(-)
create mode 100644 airflow-core/docs/howto/static-type-checking.rst
create mode 100644 airflow-core/newsfragments/67523.feature.rst
delete mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/versions/v2026_06_16.py
delete mode 100644
airflow-core/src/airflow/ui/src/components/EditableMarkdownArea.tsx
copy
airflow-core/src/airflow/ui/src/{pages/DagsList/DagsFilters/RequiredActionFilter.tsx
=> components/HITLReview/HITLReviewDetail.tsx} (50%)
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/HITLReviewDetailSummary.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/HITLReviewDrawer.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/HITLReviewList.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/HITLReviewListSection.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/HITLReviewModal.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/HITLReviewModal.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/useHITLReviewModalRouteSync.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/useHITLReviewModalRouteSync.ts
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/useHITLReviewModalSelection.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/components/HITLReview/useHITLReviewModalSelection.ts
create mode 100644
airflow-core/src/airflow/ui/src/components/MarkdownModal.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/MarkdownModal.tsx
copy
airflow-core/src/airflow/{api_fastapi/auth/managers/simple/ui/rules/levels.js
=> ui/src/components/NoteIcon.tsx} (75%)
create mode 100644
airflow-core/src/airflow/ui/src/components/NotePreview.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/NotePreview.tsx
copy airflow-core/src/airflow/ui/src/{layouts/Nav/LanguageModal.tsx =>
pages/DagRuns/RunNoteButton.tsx} (59%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dashboard/Deadlines/DashboardDeadlines.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dashboard/Deadlines/DeadlineItem.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dashboard/Deadlines/DeadlineSection.tsx
copy airflow-core/src/airflow/ui/src/{components/SearchDags =>
pages/Dashboard/Deadlines}/index.ts (93%)
copy airflow-core/src/airflow/ui/src/{queries/useDeadlines.ts =>
pages/Dashboard/useDashboardDeadlines.ts} (50%)
copy airflow-core/src/airflow/ui/src/{layouts/Nav/LanguageModal.tsx =>
pages/TaskInstances/TaskInstanceNoteButton.tsx} (56%)
copy airflow-core/src/airflow/ui/src/{utils/RouterWrapper.test.tsx =>
queries/useDagRunNote.ts} (52%)
copy
airflow-core/src/airflow/{api_fastapi/auth/managers/simple/ui/src/queries/useCreateToken.ts
=> ui/src/queries/useNoteEditor.ts} (50%)
create mode 100644
airflow-core/src/airflow/ui/src/queries/useTaskInstanceNote.ts
copy registry/src/_data/utils.js =>
airflow-core/src/airflow/ui/tests/e2e/components/HITLReviewDrawer.ts (67%)
copy registry/src/_data/utils.js =>
airflow-core/src/airflow/ui/tests/e2e/components/HITLReviewModal.ts (66%)
create mode 100644 airflow-core/src/airflow/ui/tests/e2e/pages/DagDetailPage.ts
create mode 100644 airflow-core/src/airflow/ui/tests/e2e/pages/DagRunPage.ts
copy airflow-core/src/airflow/ui/tests/e2e/specs/{configuration.spec.ts =>
dag-detail.spec.ts} (53%)
copy airflow-core/src/airflow/ui/tests/e2e/specs/{configuration.spec.ts =>
dag-run.spec.ts} (53%)
copy airflow-core/{src/airflow/_shared =>
tests/unit/api_fastapi/execution_api/routes}/__init__.py (100%)
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/routes/test_health_routes.py
copy {airflow-core/src/airflow/_shared =>
providers/common/ai/src/airflow/providers/common/ai/utils/dataquality}/__init__.py
(100%)
create mode 100644 providers/google/tests/unit/google/cloud/links/test_base.py
create mode 100644
providers/google/tests/unit/google/cloud/links/test_bigquery.py
create mode 100644 providers/informatica/dev/docker-compose.yml
copy providers/{jdbc/docs/conf.py =>
informatica/dev/informatica_simulator/Dockerfile} (61%)
create mode 100644 providers/informatica/dev/informatica_simulator/app/main.py
create mode 100644
providers/informatica/dev/informatica_simulator/requirements.txt
create mode 100644 providers/informatica/dev/init/001_schema_and_seed.sql
create mode 100644
providers/informatica/src/airflow/providers/informatica/conf.py
copy {airflow-core/src/airflow/_shared =>
providers/informatica/src/airflow/providers/informatica/example_dags}/__init__.py
(100%)
create mode 100644
providers/informatica/src/airflow/providers/informatica/example_dags/example_informatica_lineage.py
copy {shared/configuration/src/airflow_shared/configuration =>
providers/informatica/src/airflow/providers/informatica/lineage}/__init__.py
(80%)
create mode 100644
providers/informatica/src/airflow/providers/informatica/lineage/resolver.py
create mode 100644
providers/informatica/src/airflow/providers/informatica/lineage/selective.py
create mode 100644
providers/informatica/src/airflow/providers/informatica/lineage/sql_parser.py
create mode 100644
providers/informatica/src/airflow/providers/informatica/lineage/validation.py
copy {airflow-core/tests/integration =>
providers/informatica/tests/unit/informatica/lineage}/__init__.py (100%)
create mode 100644
providers/informatica/tests/unit/informatica/lineage/test_resolver.py
create mode 100644
providers/informatica/tests/unit/informatica/lineage/test_selective.py
create mode 100644
providers/informatica/tests/unit/informatica/lineage/test_sql_parser.py
create mode 100644
providers/informatica/tests/unit/informatica/lineage/test_validation.py
create mode 100644 providers/informatica/tests/unit/informatica/test_conf.py