This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a change to branch fork-ci-pilot-volunteers
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 0311f0e3842 Add the first external contributors to the fork CI pilot
add dac0a7adc44 Keep common.ai on anthropic 1.x until pydantic-ai supports
anthropic 2 (#75640)
add b19bc48f96f Let the EKS executor run per team and next to
KubernetesExecutor (#75449)
add 3f0cea0e8ba Add task instance state store commands to airflowctl
(#72746)
add 562977d11bf Make the Kubernetes, E2E and Helm release jobs pass on
fork CI (#75699)
add 2ae00f1606a Retry GitHub calls that fail to connect in the fork CI
monitor (#75701)
add ad6ec79c73e Deprecate airflow.utils.email in favor of the SMTP
provider (#75414)
add df03024a9a3 Fix BigQuery durable recovery for regional jobs (#75430)
add b70a439a238 Allow FastAPI 0.137+ by requiring cadwyn 8.1 (#75689)
add 04afd601aee Restart crashed Breeze components under mprocs (#75585)
add ec8737c5417 Handle empty or corrupted JSON in airflowctl credentials
loading (#75279)
add e3f5e6ff3af Skip scheduling tasks when their Dag cannot be
deserialized (#75263)
add 3a37fb1c33e Fix BigQuery cancellation and links with inferred job
locations (#75717)
add bec92bcad02 Let listeners see the end date of a skipped task instance
(#75685)
add 34a955c17dd Remove unused type: ignore comments in airflow-ctl (#75203)
add 750f849cc23 Run a language SDK runtime in its own process group
(#75707)
add 5243901c818 Add dag_id and task_id tags to resumable_job metrics
(#75721)
add c79293ea4b9 Wait for a maintainer when a fork PR changes any
CI-defining file (#75718)
add d340be05a4e Add metrics for task and asset state store access (#75729)
add 91fbcbff93b Fix airflowctl config lint filters matching partial config
names (#75690)
add 8eb5357fb13 Keep cancelled CI runs from showing a failed CI passed
check (#75720)
add 968cca0c7e4 Add a dag_run index on (dag_id, run_after) (#74481)
add fa9c935035d airflowctl: fix datetime.datetime CLI parameters rejecting
all input (#70249)
add 21a8a98ba96 Report language SDK runtime launch failures in the task
log (#75561)
add aee26d49b6b Fix airflowctl ignoring --env for non-auth commands
(#73808)
add ead86184fb5 Emit resumable_job metrics from KubernetesPodOperator
(#75734)
add 6cac8fcddc1 Handle None response from airflowctl connections
create-defaults (#68853)
add a22fcb9a67b Stop importing airflow.utils.email in the Amazon SES hook
(#75711)
add 8b5306690ac Fix 'lineage' export in airflow.sdk (#75744)
add c4ab82253de Report AwsEksExecutor as the caller in its AWS user agent
(#75698)
add 4ace0a1deb7 Run automatic backport PRs on RunsOn runners (#75749)
add 7c7157b124e Stop breeze k8s commands from silently rewriting uv.lock
(#75763)
add cb582009a0b Raise the stale bot operation budget so it reaches older
PRs (#75761)
add 7de5ac36770 UI: Remove unused filter count helper (#75760)
add 455f5125c9a UI: Remove unused clipboard wrappers (#75759)
add 36767cb0073 UI: Remove unused quick filter button (#75758)
add aaba5c37195 UI: Don't fire keyboard shortcuts while typing in a Monaco
editor (#75684)
add d92a4805a92 UI: Fix labels that render as raw translation keys (#75326)
add 91ca0ac42c8 UI: Fix slow pending Dag run checks on large databases
(#75674)
add 8f7a8e4ff58 Hide empty log groups in the task log view (#75686)
add df37268410b Fix UI crash by validating unresolvable Windows PT
timezone (#75723)
add ae50f958ea2 Surface errors from OpenLineage database info lookups
without losing lineage (#74805)
add d583ffe5984 Hide the scheduled run icon in the grid legend (#75775)
add de5798196d2 Make Breeze Kubernetes image tests independent of the
branch (#75724)
add a5ff71dffd3 Keep breeze verify working when dry-run is on (#75713)
add be28f7fe9c2 Tell agents to stop when breeze cannot run, not use a host
venv (#75599)
add efd28053bed Stop Google Cloud Logging handler from starting a thread
on close (#75596)
add 70a78162261 Page SqlToS3Operator like GenericTransfer (#75730)
add 55b3c58dea7 Return None from relative_path_from_logger for logs
outside base_log_folder (#75572)
add 4d9fb9e841f Remove unused airflowctl lowercase argument helper (#75768)
add da767b24133 Bump the fab-ui-package-updates group across 1 directory
with 2 updates (#75807)
add a462d683469 UI: Scope partitioned Dag run asset list to readable
assets (#75213)
add 891e83dce5d Tell contributors when their fork CI workflow stops
running (#75814)
add a9a04a52f5e Clarify which Snowflake connectors need the
session_parameters copy (#75457)
add 8058c889b27 Harden the fork CI reconciler and protect the fork CI gate
(#74909)
add 8442ef02563 Remove unused Dataflow job state checker (#75784)
add ba6750c2fd0 Remove unused Cloud SQL OS bitness helper (#75788)
add eb2e644bec3 Remove unused Dataproc job template helper (#75790)
add 850466814ba Remove unused SDK variable result converter (#75766)
add a6eb4900ed9 Close German Translation Gaps 2026-10-27 (#75813)
add 12489292d1c Remove unused SQLAlchemy dialect keyword wrapper (#75782)
add 0135f75e6c1 Remove unused datetime to nanoseconds converter (#75781)
add 674f39115da Remove unused log filename template renderer (#75780)
add 5f8b01416ea Remove unused CLI Dag file location loader (#75779)
add 2dffae53785 Remove unused active asset query helpers (#75778)
add 9a0ee6f0c66 Remove unused task deferral logging bridge (#75777)
add db06a68a791 Remove unused Dag processor path converter (#75776)
add 347343ca259 Remove unused ExecuteTaskActivity model (#75767)
add e539a1b051c Remove unused shared provider discovery definitions
(#75783)
add 62df1cc8bb3 Remove unused Teradata operation classifier (#75785)
add d2c865ff014 Remove unused Postgres cursor name generator (#75786)
add b785c05164e Remove unused Spark pod try number helper (#75787)
add e401fafafb2 Remove unused Cloud SQL settings version helper (#75789)
add fccfbf8ad2b Skip airflowctl state store tests on servers older than
3.3 (#75753)
add d17f1213630 Widen the Spot pool for RunsOn runners: more families,
capacity-optimized, size ranges (#75822)
add e35d3ee59a3 Add the first external contributors to the fork CI pilot
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 (0311f0e3842)
\
N -- N -- N refs/heads/fork-ci-pilot-volunteers (e35d3ee59a3)
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:
.../setup-isolated-setup-install.md | 5 +
.github/fork-ci-gate.toml | 5 +
.github/workflows/additional-ci-image-checks.yml | 2 +-
.github/workflows/additional-prod-image-tests.yml | 30 +-
.github/workflows/basic-tests.yml | 29 +-
.github/workflows/ci-amd.yml | 114 ++-
.github/workflows/ci-arm.yml | 109 ++-
.github/workflows/ci-image-build.yml | 2 +-
.github/workflows/ci-image-checks.yml | 19 +-
.github/workflows/finalize-tests.yml | 4 +-
.github/workflows/fork-ci-monitor.yml | 3 +
.github/workflows/generate-constraints.yml | 2 +-
.github/workflows/helm-tests.yml | 8 +-
.github/workflows/integration-system-tests.yml | 6 +-
.github/workflows/k8s-tests.yml | 4 +-
.github/workflows/kustomize-overlays-tests.yml | 2 +-
.github/workflows/prod-image-build.yml | 4 +-
.github/workflows/push-image-cache.yml | 4 +-
.github/workflows/special-tests.yml | 22 +-
.github/workflows/stale.yml | 1 +
.github/workflows/test-providers.yml | 4 +-
.github/workflows/ui-e2e-tests.yml | 2 +-
AGENTS.md | 4 +-
airflow-core/docs/howto/email-config.rst | 80 +-
airflow-core/docs/migrations-ref.rst | 4 +-
airflow-core/newsfragments/75414.significant.rst | 20 +
airflow-core/pyproject.toml | 11 +-
airflow-core/src/airflow/api_fastapi/app.py | 2 +
.../src/airflow/api_fastapi/common/http_metrics.py | 25 +-
.../src/airflow/api_fastapi/common/telemetry.py | 21 +-
.../api_fastapi/core_api/datamodels/common.py | 16 +
.../core_api/datamodels/ui/partitioned_dag_runs.py | 12 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 16 +-
.../api_fastapi/core_api/routes/public/dags.py | 25 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 8 +-
.../core_api/routes/ui/partitioned_dag_runs.py | 28 +-
.../src/airflow/api_fastapi/execution_api/app.py | 41 +-
.../execution_api/datamodels/taskinstance.py | 3 +-
.../airflow/api_fastapi/execution_api/security.py | 10 +-
airflow-core/src/airflow/dag_processing/manager.py | 6 -
.../src/airflow/jobs/scheduler_job_runner.py | 20 +-
...50_3_5_0_add_dag_run_dag_id_run_after_index.py} | 28 +-
airflow-core/src/airflow/models/asset.py | 22 -
airflow-core/src/airflow/models/dagrun.py | 1 +
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 32 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 7 +-
.../airflow/ui/public/i18n/locales/de/browse.json | 1 +
.../airflow/ui/public/i18n/locales/de/common.json | 1 +
.../ui/public/i18n/locales/de/components.json | 1 +
.../airflow/ui/public/i18n/locales/en/browse.json | 1 +
.../airflow/ui/public/i18n/locales/en/common.json | 1 +
.../ui/public/i18n/locales/en/components.json | 1 +
.../ui/src/components/AssetProgressCell.test.tsx | 63 +-
.../ui/src/components/AssetProgressCell.tsx | 54 +-
.../src/airflow/ui/src/components/ConfigForm.tsx | 2 +-
.../ui/src/components/QuickFilterButton.tsx | 40 -
.../src/context/timezone/TimezoneProvider.test.tsx | 59 ++
.../ui/src/context/timezone/TimezoneProvider.tsx | 17 +-
.../src/airflow/ui/src/hooks/useShortcut.test.tsx | 64 +-
.../src/airflow/ui/src/hooks/useShortcut.ts | 16 +-
.../src/airflow/ui/src/i18n/locales.test.ts | 60 +-
.../ui/src/layouts/Details/Grid/RunTypeLegend.tsx | 7 +-
.../ui/src/pages/Connections/ConnectionForm.tsx | 3 +-
.../src/airflow/ui/src/pages/DagsList/Schedule.tsx | 14 +-
.../src/airflow/ui/src/pages/Pools/PoolForm.tsx | 2 +-
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 2 +-
.../src/airflow/ui/src/queries/useLogs.test.ts | 38 +
.../src/airflow/ui/src/queries/useLogs.tsx | 11 +-
.../airflow/ui/src/system-components/Clipboard.tsx | 42 +-
.../src/airflow/ui/src/utils/filterUtils.test.ts | 106 ---
.../src/airflow/ui/src/utils/filterUtils.ts | 27 -
.../src/airflow/ui/src/utils/query.test.ts | 50 ++
airflow-core/src/airflow/ui/src/utils/query.ts | 7 +-
airflow-core/src/airflow/utils/cli.py | 17 -
airflow-core/src/airflow/utils/dates.py | 15 -
airflow-core/src/airflow/utils/db.py | 2 +-
airflow-core/src/airflow/utils/email.py | 350 +--------
airflow-core/src/airflow/utils/helpers.py | 23 -
.../src/airflow/utils/log/file_task_handler.py | 19 -
.../src/airflow/utils/serve_logs/log_server.py | 3 +-
airflow-core/src/airflow/utils/sqlalchemy.py | 7 -
.../unit/api_fastapi/common/test_http_metrics.py | 13 +-
.../core_api/routes/public/test_assets.py | 5 +-
.../core_api/routes/public/test_dags.py | 41 +
.../api_fastapi/core_api/routes/test_routes.py | 8 +-
.../api_fastapi/core_api/routes/ui/test_dags.py | 36 +
.../routes/ui/test_partitioned_dag_runs.py | 122 ++-
.../unit/api_fastapi/execution_api/test_app.py | 29 +-
.../execution_api/test_token_scope_boundaries.py | 27 +-
.../unit/api_fastapi/logging/test_decorators.py | 18 +-
airflow-core/tests/unit/api_fastapi/test_app.py | 25 +
airflow-core/tests/unit/jobs/test_scheduler_job.py | 129 ++++
.../tests/unit/partition_mappers/test_init.py | 4 +-
airflow-core/tests/unit/utils/test_email.py | 447 ++---------
.../tests/airflowctl_tests/conftest.py | 8 +
.../airflowctl_tests/test_airflowctl_commands.py | 46 +-
airflow-ctl/docs/images/command_hashes.txt | 2 +-
airflow-ctl/docs/images/output_taskinstances.svg | 82 +-
airflow-ctl/src/airflowctl/api/client.py | 18 +-
airflow-ctl/src/airflowctl/api/operations.py | 113 ++-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 107 ++-
airflow-ctl/src/airflowctl/ctl/cli_parser.py | 2 +
.../src/airflowctl/ctl/commands/config_command.py | 16 +-
.../src/airflowctl/ctl/commands/version_command.py | 3 +-
airflow-ctl/src/airflowctl/ctl/help_texts.yaml | 9 +
airflow-ctl/tests/airflow_ctl/api/test_client.py | 55 ++
.../tests/airflow_ctl/api/test_operations.py | 143 ++++
.../ctl/commands/test_config_command.py | 96 +++
.../ctl/commands/test_version_command.py | 10 +-
.../tests/airflow_ctl/ctl/test_cli_config.py | 143 +++-
.../tests/airflow_e2e_tests/conftest.py | 16 +-
contributing-docs/05_pull_requests.rst | 10 +-
contributing-docs/18_contribution_workflow.rst | 15 +-
contributing-docs/25_maintainer_pr_triage.md | 6 +-
contributing-docs/mprocs/mprocs.yaml | 14 +-
contributing-docs/testing/unit_tests.rst | 7 +
dev/README_AIRFLOW3_DEV.md | 5 +-
dev/breeze/doc/08_ci_tasks.rst | 4 +-
dev/breeze/doc/ci/04_selective_checks.md | 21 +-
dev/breeze/doc/ci/05_workflows.md | 14 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 123 ++-
.../doc/images/output_k8s_build-k8s-image.svg | 48 +-
.../doc/images/output_k8s_build-k8s-image.txt | 2 +-
.../doc/images/output_k8s_deploy-airflow.svg | 46 +-
.../doc/images/output_k8s_deploy-airflow.txt | 2 +-
.../doc/images/output_k8s_deploy-cluster.svg | 30 +-
.../doc/images/output_k8s_deploy-cluster.txt | 2 +-
dev/breeze/doc/images/output_k8s_dev.svg | 22 +-
dev/breeze/doc/images/output_k8s_dev.txt | 2 +-
.../doc/images/output_k8s_run-complete-tests.svg | 84 +-
.../doc/images/output_k8s_run-complete-tests.txt | 2 +-
.../doc/images/output_k8s_setup-lang-sdk-test.svg | 22 +-
.../doc/images/output_k8s_setup-lang-sdk-test.txt | 2 +-
.../doc/images/output_k8s_upload-k8s-image.svg | 46 +-
.../doc/images/output_k8s_upload-k8s-image.txt | 2 +-
.../airflow_breeze/commands/kubernetes_commands.py | 76 +-
.../commands/kubernetes_commands_config.py | 11 +-
.../commands/kubernetes_kustomize_commands.py | 2 +-
.../src/airflow_breeze/commands/verify_commands.py | 10 +-
dev/breeze/src/airflow_breeze/global_constants.py | 13 +-
dev/breeze/src/airflow_breeze/utils/ci_audit.py | 12 -
.../src/airflow_breeze/utils/fork_ci_gate.py | 5 +
.../src/airflow_breeze/utils/fork_ci_github.py | 33 +-
.../src/airflow_breeze/utils/fork_ci_messages.py | 53 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 409 ++++++++--
.../src/airflow_breeze/utils/kubernetes_utils.py | 3 +-
.../src/airflow_breeze/utils/selective_checks.py | 17 +-
.../airflow_breeze/utils/workflow_run_approval.py | 14 +-
dev/breeze/tests/test_ci_audit.py | 4 +-
dev/breeze/tests/test_fork_ci_github.py | 29 +-
dev/breeze/tests/test_fork_ci_messages.py | 11 +
dev/breeze/tests/test_fork_ci_reconcile.py | 550 ++++++++++++-
dev/breeze/tests/test_kubernetes_commands.py | 144 ++++
.../tests/test_kubernetes_kustomize_commands.py | 20 +
.../tests/test_kubernetes_lang_sdk_commands.py | 18 +-
dev/breeze/tests/test_kubernetes_utils.py | 7 +
dev/breeze/tests/test_selective_checks.py | 71 +-
dev/breeze/tests/test_verify_commands.py | 15 +
dev/breeze/tests/test_workflow_run_approval.py | 17 +
dev/skill-evals/last-eval-hash.txt | 2 +-
.../src/tests_common/test_utils/api_fastapi.py | 23 +
generated/known_airflow_exceptions.txt | 6 +-
providers/amazon/docs/changelog.rst | 6 +
providers/amazon/docs/executors/eks-executor.rst | 52 +-
providers/amazon/docs/transfer/sql_to_s3.rst | 19 +
providers/amazon/pyproject.toml | 2 +-
.../amazon/aws/executors/eks/_client_factory.py | 38 +-
.../amazon/aws/executors/eks/eks_executor.py | 106 +--
.../providers/amazon/aws/executors/eks/utils.py | 5 +
.../src/airflow/providers/amazon/aws/hooks/ses.py | 80 +-
.../providers/amazon/aws/transfers/sql_to_s3.py | 130 +++-
.../src/airflow/providers/amazon/version_compat.py | 2 -
.../tests/system/amazon/aws/example_sql_to_s3.py | 13 +
.../aws/executors/eks/test__client_factory.py | 61 +-
.../amazon/aws/executors/eks/test_eks_executor.py | 330 ++++----
.../amazon/tests/unit/amazon/aws/hooks/test_ses.py | 66 +-
.../unit/amazon/aws/transfers/test_sql_to_s3.py | 188 +++++
.../providers/cncf/kubernetes/operators/pod.py | 16 +-
.../cncf/kubernetes/operators/spark_kubernetes.py | 6 -
.../unit/cncf/kubernetes/operators/test_pod.py | 134 ++++
providers/common/ai/docs/index.rst | 2 +-
providers/common/ai/pyproject.toml | 8 +-
.../common/compat/openlineage/utils/sql.py | 29 +-
.../common/compat/openlineage/utils/test_sql.py | 60 ++
.../airflow/providers/common/sql/operators/sql.py | 55 +-
.../unit/common/sql/operators/test_sql_execute.py | 89 +++
.../edge3/tests/unit/edge3/worker_api/test_app.py | 5 +-
.../fab/src/airflow/providers/fab/www/package.json | 4 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 850 +++++++++++----------
.../providers/google/cloud/hooks/cloud_sql.py | 4 -
.../providers/google/cloud/hooks/dataflow.py | 49 --
.../google/cloud/log/cloud_logging_task_handler.py | 8 +-
.../providers/google/cloud/operators/bigquery.py | 41 +-
.../providers/google/cloud/operators/cloud_sql.py | 4 -
.../providers/google/cloud/operators/dataproc.py | 6 -
.../cloud/log/test_cloud_logging_task_handler.py | 14 +
.../unit/google/cloud/operators/test_bigquery.py | 311 +++++++-
.../src/airflow/providers/openlineage/sqlparser.py | 45 +-
.../openlineage/utils/sql_hook_lineage.py | 21 +-
.../tests/unit/openlineage/test_sqlparser.py | 53 +-
.../openlineage/utils/test_sql_hook_lineage.py | 84 ++
.../airflow/providers/postgres/hooks/postgres.py | 6 -
.../airflow/providers/snowflake/hooks/snowflake.py | 5 +-
.../teradata/operators/teradata_compute_cluster.py | 16 -
.../ci/prek/check_airflowctl_command_coverage.py | 24 +-
scripts/ci/prek/check_ci_gate_needs.py | 15 +
scripts/ci/prek/check_ci_workflows_in_sync.py | 21 +-
scripts/in_container/bin/generate_mprocs_config.py | 18 +-
scripts/in_container/in_container_utils.py | 18 +-
scripts/tests/ci/prek/test_check_ci_gate_needs.py | 23 +
.../in_container/test_generate_mprocs_config.py | 30 +
.../observability/metrics/metrics_template.yaml | 84 +-
.../providers_discovery/providers_discovery.py | 72 +-
task-sdk/pyproject.toml | 2 +-
task-sdk/src/airflow/sdk/__init__.py | 227 +++---
.../src/airflow/sdk/api/datamodels/activities.py | 31 -
.../src/airflow/sdk/bases/resumablejobmixin.py | 7 +-
.../src/airflow/sdk/coordinators/_subprocess.py | 332 +++++---
task-sdk/src/airflow/sdk/execution_time/context.py | 62 +-
.../src/airflow/sdk/execution_time/coordinator.py | 14 +-
.../src/airflow/sdk/execution_time/supervisor.py | 60 +-
.../src/airflow/sdk/execution_time/task_runner.py | 12 +-
task-sdk/src/airflow/sdk/log.py | 6 +-
.../tests/task_sdk/bases/test_resumablejobmixin.py | 47 +-
.../tests/task_sdk/coordinators/test_subprocess.py | 485 +++++++++++-
task-sdk/tests/task_sdk/docs/test_public_api.py | 26 +-
.../tests/task_sdk/execution_time/test_context.py | 124 ++-
.../task_sdk/execution_time/test_task_runner.py | 16 +-
task-sdk/tests/task_sdk/test_log.py | 20 +
uv.lock | 26 +-
230 files changed, 7472 insertions(+), 3181 deletions(-)
create mode 100644 airflow-core/newsfragments/75414.significant.rst
copy
providers/common/compat/tests/unit/common/compat/openlineage/utils/test_utils.py
=> airflow-core/src/airflow/api_fastapi/common/telemetry.py (58%)
copy
airflow-core/src/airflow/migrations/versions/{0037_3_0_0_add_backfill_to_dag_run_model.py
=> 0150_3_5_0_add_dag_run_dag_id_run_after_index.py} (62%)
delete mode 100644
airflow-core/src/airflow/ui/src/components/QuickFilterButton.tsx
create mode 100644
airflow-core/src/airflow/ui/src/context/timezone/TimezoneProvider.test.tsx
delete mode 100644 airflow-core/src/airflow/ui/src/utils/filterUtils.test.ts
delete mode 100644 airflow-core/src/airflow/ui/src/utils/filterUtils.ts
create mode 100644 airflow-core/src/airflow/ui/src/utils/query.test.ts
create mode 100644 dev/breeze/tests/test_kubernetes_commands.py
delete mode 100644 task-sdk/src/airflow/sdk/api/datamodels/activities.py