You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ep...@apache.org on 2025/12/10 11:58:45 UTC
(airflow) branch prepare-python-client314 updated (3002fd37a40 -> 2531e01a24b)
This is an automated email from the ASF dual-hosted git repository.
ephraimanierobi pushed a change to branch prepare-python-client314
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 3002fd37a40 Update version and add changelog for 3.1.4 Python Client Release
add 68275ced21c Remove tags from AWS system tests (#59206)
add a178d00aa5e Remove team ID and use team name as PK (#59109)
add 51064ba2409 Fix mypy error in `scheduler_job_runner.py` (#59204)
add 479acd8a77d i18n(Ko): add missing translation (Dec 8) (#59199)
add 6d57acfa779 Remove labels from unexisted sections (#59213)
add 4ea1ebf56c8 Added paginated_run method to KiotaRequestAdapterHook in MSGraph (#57536)
add cfd82c7f9c5 Add newsfragment for 52357 PR (#59214)
add 442979423f7 Fix outdated dependency documentation (#58970)
add 84568391f21 Add is_watcher field to TriggerDetails TypedDict (#59161)
add b20d1f62cd5 Fix broken syntax highlighting in AIR rules note section (#59188)
add 0bf6f82d3d6 Fix side-effect of running version suffix replacements (#58937)
add 3c2163729d3 Fix composer sys test (#59200)
add 95658615b68 Keycloak CLI: add dry run functionality (#59134)
add 216e7a722f7 Add max_trigger_to_select_per_loop conf to respect Triggerer HA setup (#58803)
add 697ad4a3d40 Import empty operator from compat module for AF2/AF3 support (#59222)
add a0b3a3b8b48 Update BulkDeleteAction to use generic type (#59207)
add be94a60ecc7 Remove unused functions in Core expandinput (#59225)
add 087c656cf2a Completing stubbed tests for AssetEvent operations (#59182)
add 4438c28bee1 Remove UUID case for sqlalachemy 2 from tests (#59230)
add 7218cf04581 Fix links for DurationChart (#59095)
add ac6e893af73 Add common: namespace to translation keys in AssetsList component for consistency. (#59227)
add 787b8186b62 docs: adjust misleading docs (#59228)
add 42d82cbc17a Permit `airflow db migrate -r` with an empty database (#59205)
add a6c9066120a Fix incorrect state query parameter for task_instances (#59086)
add c12afbdda46 Fix migration to add TI primary key for sqlite dialect (#59241)
add 3b74a8d6920 Complete Hebrew translation 2025-12-09 (#59133)
add 740da666b58 Don't depend upon FastAPI inside Task-SDK client (#59250)
add 12a66dbccab Keycloak: implement connection pooling (#59252)
add 11e127ba5fc Create `create_token` method in FAB auth manager (#59245)
add 10558d8d154 Conditionally import from task sdk (#59254)
add 861cf546cf0 Close the gaps in PL translation 2025-12-09 (#59251)
add af5e469f8c2 Passwords from stdin in Keycloak Provider (#59119)
add dac53df3ade Fix airflow version in migration (#59240)
add 8e3f689e14e Fix remote logging S3 connection retrieval in supervisor context (#59247)
add 38cf2147567 Prepare providers release 2025-12-09 (#59249)
add afd53fd8b4c Fetch asset event source dag run (#59090)
add 91ae1733791 Add wildcard support for dag_id and dag_run_id in bulk ti endpoint (#57441)
add 4983b2a0236 Extract shared "module_loading" distribution (#59139)
add 1e7e40ee595 Add CI workflow for UI e2e tests (#58901)
add 0b6d2589df0 Fix an odd import of pendulum from sqlalchemy_utils instead of elsewhere. (#59258)
add 2531e01a24b Update version and add changelog for 3.1.4 Python Client Release
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 (3002fd37a40)
\
N -- N -- N refs/heads/prepare-python-client314 (2531e01a24b)
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/workflows/additional-prod-image-tests.yml | 40 +
.github/workflows/ci-amd-arm.yml | 2 +
.../{airflow-e2e-tests.yml => ui-e2e-tests.yml} | 68 +-
airflow-core/.pre-commit-config.yaml | 4 +-
.../docs/authoring-and-scheduling/deferring.rst | 13 +
.../docs/authoring-and-scheduling/serializers.rst | 2 +-
airflow-core/docs/img/airflow_erd.sha256 | 2 +-
airflow-core/docs/img/airflow_erd.svg | 4954 +++++++++++---------
airflow-core/docs/installation/dependencies.rst | 22 +-
.../docs/installation/upgrading_to_airflow3.rst | 2 +-
airflow-core/docs/migrations-ref.rst | 9 +-
airflow-core/pyproject.toml | 6 +-
airflow-core/src/airflow/_shared/module_loading | 1 +
.../api_fastapi/auth/managers/base_auth_manager.py | 13 +-
.../api_fastapi/core_api/datamodels/common.py | 3 +-
.../core_api/datamodels/task_instances.py | 2 +
.../api_fastapi/core_api/datamodels/ui/teams.py | 3 -
.../api_fastapi/core_api/datamodels/variables.py | 5 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 11 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 29 +-
.../api_fastapi/core_api/routes/ui/teams.py | 2 +-
.../core_api/services/public/task_instances.py | 353 +-
.../api_fastapi/execution_api/routes/dag_runs.py | 130 +-
.../api_fastapi/execution_api/versions/__init__.py | 5 +
.../versions/{v2025_09_23.py => v2025_12_08.py} | 21 +-
airflow-core/src/airflow/cli/cli_config.py | 2 +-
.../src/airflow/cli/commands/db_manager_command.py | 2 +-
.../src/airflow/cli/commands/team_command.py | 13 +-
.../src/airflow/config_templates/config.yml | 9 +
airflow-core/src/airflow/configuration.py | 2 +-
.../src/airflow/dag_processing/bundles/base.py | 5 +-
.../src/airflow/dag_processing/bundles/manager.py | 2 +-
airflow-core/src/airflow/exceptions.py | 2 +-
.../src/airflow/executors/executor_loader.py | 2 +-
.../src/airflow/jobs/scheduler_job_runner.py | 2 +
.../src/airflow/jobs/triggerer_job_runner.py | 3 +-
airflow-core/src/airflow/logging_config.py | 2 +-
.../versions/0000_2_6_2_squashed_migrations.py | 848 ++++
.../0001_2_7_0_add_index_to_task_instance_table.py | 4 +-
...3_0_0_add_uuid_primary_key_to_task_instance_.py | 22 +-
.../versions/0094_3_2_0_remove_team_id.py | 148 +
airflow-core/src/airflow/models/__init__.py | 2 +-
airflow-core/src/airflow/models/connection.py | 26 +-
airflow-core/src/airflow/models/expandinput.py | 15 +-
airflow-core/src/airflow/models/pool.py | 12 +-
airflow-core/src/airflow/models/team.py | 31 +-
airflow-core/src/airflow/models/trigger.py | 7 +
airflow-core/src/airflow/models/variable.py | 42 +-
airflow-core/src/airflow/plugins_manager.py | 2 +-
airflow-core/src/airflow/providers_manager.py | 2 +-
airflow-core/src/airflow/serialization/decoders.py | 2 +-
airflow-core/src/airflow/serialization/encoders.py | 2 +-
airflow-core/src/airflow/serialization/serde.py | 2 +-
.../airflow/serialization/serialized_objects.py | 2 +-
.../airflow/serialization/serializers/bignum.py | 2 +-
.../airflow/serialization/serializers/builtin.py | 2 +-
.../airflow/serialization/serializers/datetime.py | 2 +-
.../airflow/serialization/serializers/deltalake.py | 2 +-
.../airflow/serialization/serializers/iceberg.py | 2 +-
.../serialization/serializers/kubernetes.py | 2 +-
.../src/airflow/serialization/serializers/numpy.py | 2 +-
.../airflow/serialization/serializers/pandas.py | 2 +-
.../airflow/serialization/serializers/pydantic.py | 2 +-
.../airflow/serialization/serializers/timezone.py | 2 +-
airflow-core/src/airflow/task/priority_strategy.py | 2 +-
airflow-core/src/airflow/triggers/callback.py | 2 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 2 +-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 2 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 2 +-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 2 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 50 +-
.../ui/openapi-gen/requests/services.gen.ts | 2 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 15 +-
.../airflow/ui/public/i18n/locales/he/assets.json | 7 +
.../airflow/ui/public/i18n/locales/he/browse.json | 4 -
.../airflow/ui/public/i18n/locales/he/common.json | 10 +-
.../ui/public/i18n/locales/he/components.json | 10 +
.../src/airflow/ui/public/i18n/locales/he/dag.json | 12 +
.../airflow/ui/public/i18n/locales/he/dags.json | 5 +
.../airflow/ui/public/i18n/locales/he/hitl.json | 5 +-
.../airflow/ui/public/i18n/locales/ko/common.json | 1 +
.../airflow/ui/public/i18n/locales/pl/assets.json | 1 +
.../airflow/ui/public/i18n/locales/pl/browse.json | 4 -
.../airflow/ui/public/i18n/locales/pl/common.json | 3 +
.../ui/public/i18n/locales/pl/components.json | 3 +
.../airflow/ui/src/components/DurationChart.tsx | 17 +-
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 4 +-
.../Dashboard/HistoricalMetrics/MetricSection.tsx | 3 +-
airflow-core/src/airflow/ui/tests/e2e/README.md | 141 +-
airflow-core/src/airflow/utils/db.py | 7 +-
airflow-core/src/airflow/utils/db_manager.py | 2 +-
.../src/airflow/utils/serve_logs/log_server.py | 2 +-
.../tests/unit/always/test_project_structure.py | 1 -
.../auth/managers/test_base_auth_manager.py | 6 +-
.../unit/api_fastapi/common/test_exceptions.py | 15 +-
.../core_api/routes/public/test_dag_run.py | 2 +-
.../core_api/routes/public/test_task_instances.py | 170 +-
.../core_api/routes/public/test_variables.py | 45 +-
.../api_fastapi/core_api/routes/ui/test_teams.py | 5 -
.../services/public/test_task_instances.py | 340 +-
.../execution_api/versions/head/test_dag_runs.py | 105 +-
.../versions/v2025_11_07}/__init__.py | 0
.../versions/v2025_11_07/test_dag_runs.py | 62 +
.../tests/unit/cli/commands/test_team_command.py | 24 +-
.../tests/unit/core/test_example_dags_system.py | 2 +-
.../tests/unit/dag_processing/test_processor.py | 2 +
airflow-core/tests/unit/jobs/test_triggerer_job.py | 6 +-
airflow-core/tests/unit/models/test_connection.py | 7 +-
airflow-core/tests/unit/models/test_dag.py | 2 +-
airflow-core/tests/unit/models/test_pool.py | 9 +-
airflow-core/tests/unit/models/test_team.py | 50 +-
airflow-core/tests/unit/models/test_trigger.py | 91 +
airflow-core/tests/unit/models/test_variable.py | 15 +-
.../tests/unit/plugins/test_plugins_manager.py | 2 +-
.../serialization/serializers/test_serializers.py | 2 +-
.../unit/serialization/test_dag_serialization.py | 2 +-
.../tests/unit/serialization/test_serde.py | 2 +-
.../tests/unit/utils/test_module_loading.py | 35 -
.../src/airflowctl/api/datamodels/generated.py | 132 +-
chart/newsfragments/52357.improvement.rst | 1 +
.../workers/worker-celery-serviceaccount.yaml | 4 +-
.../workers/worker-kubernetes-serviceaccount.yaml | 4 +-
.../doc/images/output_testing_ui-e2e-tests.svg | 80 +-
.../doc/images/output_testing_ui-e2e-tests.txt | 2 +-
.../src/airflow_breeze/commands/common_options.py | 6 +-
.../airflow_breeze/commands/testing_commands.py | 153 +-
.../commands/testing_commands_config.py | 8 +
.../airflow_breeze/utils/docker_compose_utils.py | 165 +
.../src/airflow_breeze/utils/selective_checks.py | 4 +
dev/breeze/tests/test_packages.py | 46 +-
devel-common/src/tests_common/pytest_plugin.py | 3 +-
.../src/tests_common/test_utils/providers.py | 2 +-
providers/.last_release_date.txt | 2 +-
providers/airbyte/README.rst | 8 +-
providers/airbyte/docs/changelog.rst | 11 +
providers/airbyte/docs/index.rst | 8 +-
providers/airbyte/provider.yaml | 3 +-
providers/airbyte/pyproject.toml | 8 +-
.../src/airflow/providers/airbyte/__init__.py | 2 +-
providers/alibaba/README.rst | 8 +-
providers/alibaba/docs/changelog.rst | 11 +
providers/alibaba/docs/index.rst | 8 +-
providers/alibaba/provider.yaml | 3 +-
providers/alibaba/pyproject.toml | 8 +-
.../src/airflow/providers/alibaba/__init__.py | 2 +-
providers/amazon/README.rst | 9 +-
providers/amazon/docs/changelog.rst | 25 +
providers/amazon/docs/index.rst | 8 +-
providers/amazon/provider.yaml | 3 +-
providers/amazon/pyproject.toml | 8 +-
.../src/airflow/providers/amazon/__init__.py | 2 +-
.../tests/system/amazon/aws/example_appflow.py | 1 -
.../tests/system/amazon/aws/example_appflow_run.py | 1 -
.../tests/system/amazon/aws/example_athena.py | 1 -
.../system/amazon/aws/example_azure_blob_to_s3.py | 1 -
.../tests/system/amazon/aws/example_batch.py | 1 -
.../tests/system/amazon/aws/example_bedrock.py | 1 -
.../amazon/aws/example_bedrock_batch_inference.py | 1 -
.../aws/example_bedrock_retrieve_and_generate.py | 3 +-
.../system/amazon/aws/example_cloudformation.py | 1 -
.../tests/system/amazon/aws/example_comprehend.py | 1 -
.../aws/example_comprehend_document_classifier.py | 1 -
.../tests/system/amazon/aws/example_datasync.py | 1 -
.../amazon/tests/system/amazon/aws/example_dms.py | 1 -
.../tests/system/amazon/aws/example_dynamodb.py | 1 -
.../system/amazon/aws/example_dynamodb_to_s3.py | 1 -
.../amazon/tests/system/amazon/aws/example_ec2.py | 1 -
.../amazon/tests/system/amazon/aws/example_ecs.py | 1 -
.../tests/system/amazon/aws/example_ecs_fargate.py | 1 -
.../system/amazon/aws/example_eks_templated.py | 1 -
.../aws/example_eks_with_fargate_in_one_step.py | 1 -
.../amazon/aws/example_eks_with_fargate_profile.py | 1 -
.../aws/example_eks_with_nodegroup_in_one_step.py | 1 -
.../amazon/aws/example_eks_with_nodegroups.py | 1 -
.../amazon/tests/system/amazon/aws/example_emr.py | 1 -
.../tests/system/amazon/aws/example_emr_eks.py | 1 -
.../amazon/aws/example_emr_notebook_execution.py | 1 -
.../system/amazon/aws/example_emr_serverless.py | 1 -
.../tests/system/amazon/aws/example_eventbridge.py | 1 -
.../tests/system/amazon/aws/example_ftp_to_s3.py | 1 -
.../tests/system/amazon/aws/example_gcs_to_s3.py | 1 -
.../system/amazon/aws/example_glacier_to_gcs.py | 1 -
.../amazon/tests/system/amazon/aws/example_glue.py | 1 -
.../system/amazon/aws/example_glue_data_quality.py | 1 -
...xample_glue_data_quality_with_recommendation.py | 1 -
.../amazon/aws/example_google_api_sheets_to_s3.py | 1 -
.../amazon/aws/example_google_api_youtube_to_s3.py | 1 -
.../system/amazon/aws/example_hive_to_dynamodb.py | 1 -
.../tests/system/amazon/aws/example_http_to_s3.py | 1 -
.../amazon/aws/example_imap_attachment_to_s3.py | 1 -
.../system/amazon/aws/example_kinesis_analytics.py | 1 -
.../tests/system/amazon/aws/example_lambda.py | 1 -
.../tests/system/amazon/aws/example_local_to_s3.py | 1 -
.../tests/system/amazon/aws/example_mongo_to_s3.py | 1 -
.../amazon/tests/system/amazon/aws/example_mwaa.py | 1 -
.../system/amazon/aws/example_mwaa_airflow2.py | 1 -
.../tests/system/amazon/aws/example_neptune.py | 1 -
.../tests/system/amazon/aws/example_quicksight.py | 1 -
.../tests/system/amazon/aws/example_rds_event.py | 1 -
.../tests/system/amazon/aws/example_rds_export.py | 1 -
.../system/amazon/aws/example_rds_instance.py | 1 -
.../system/amazon/aws/example_rds_snapshot.py | 1 -
.../tests/system/amazon/aws/example_redshift.py | 1 -
.../amazon/aws/example_redshift_s3_transfers.py | 1 -
.../amazon/tests/system/amazon/aws/example_s3.py | 1 -
.../system/amazon/aws/example_s3_to_dynamodb.py | 1 -
.../tests/system/amazon/aws/example_s3_to_ftp.py | 1 -
.../tests/system/amazon/aws/example_s3_to_sftp.py | 1 -
.../tests/system/amazon/aws/example_s3_to_sql.py | 1 -
.../tests/system/amazon/aws/example_sagemaker.py | 1 -
.../amazon/aws/example_sagemaker_endpoint.py | 1 -
.../amazon/aws/example_sagemaker_notebook.py | 1 -
.../amazon/aws/example_sagemaker_pipeline.py | 1 -
.../amazon/aws/example_sagemaker_unified_studio.py | 1 -
.../system/amazon/aws/example_salesforce_to_s3.py | 1 -
.../tests/system/amazon/aws/example_sftp_to_s3.py | 1 -
.../amazon/tests/system/amazon/aws/example_sns.py | 1 -
.../tests/system/amazon/aws/example_sql_to_s3.py | 1 -
.../amazon/tests/system/amazon/aws/example_sqs.py | 1 -
.../amazon/tests/system/amazon/aws/example_ssm.py | 12 +-
.../system/amazon/aws/example_step_functions.py | 1 -
.../amazon/aws/log/test_cloudwatch_task_handler.py | 2 +-
.../unit/amazon/aws/log/test_s3_task_handler.py | 2 +-
providers/apache/beam/README.rst | 38 +-
providers/apache/beam/docs/changelog.rst | 11 +
providers/apache/beam/docs/index.rst | 27 +-
providers/apache/beam/provider.yaml | 3 +-
providers/apache/beam/pyproject.toml | 8 +-
.../src/airflow/providers/apache/beam/__init__.py | 2 +-
providers/apache/druid/README.rst | 8 +-
providers/apache/druid/docs/changelog.rst | 11 +
providers/apache/druid/docs/index.rst | 8 +-
providers/apache/druid/provider.yaml | 3 +-
providers/apache/druid/pyproject.toml | 8 +-
.../src/airflow/providers/apache/druid/__init__.py | 2 +-
providers/apache/flink/README.rst | 16 +-
providers/apache/flink/docs/changelog.rst | 11 +
providers/apache/flink/docs/index.rst | 7 +-
providers/apache/flink/provider.yaml | 3 +-
providers/apache/flink/pyproject.toml | 8 +-
.../src/airflow/providers/apache/flink/__init__.py | 2 +-
providers/apache/hdfs/README.rst | 34 +-
providers/apache/hdfs/docs/changelog.rst | 11 +
providers/apache/hdfs/docs/index.rst | 25 +-
providers/apache/hdfs/provider.yaml | 3 +-
providers/apache/hdfs/pyproject.toml | 8 +-
.../src/airflow/providers/apache/hdfs/__init__.py | 2 +-
providers/apache/hive/README.rst | 8 +-
providers/apache/hive/docs/changelog.rst | 11 +
providers/apache/hive/docs/index.rst | 8 +-
providers/apache/hive/provider.yaml | 3 +-
providers/apache/hive/pyproject.toml | 8 +-
.../src/airflow/providers/apache/hive/__init__.py | 2 +-
providers/apache/kafka/README.rst | 22 +-
providers/apache/kafka/docs/changelog.rst | 11 +
providers/apache/kafka/docs/index.rst | 21 +-
providers/apache/kafka/provider.yaml | 3 +-
providers/apache/kafka/pyproject.toml | 8 +-
.../src/airflow/providers/apache/kafka/__init__.py | 2 +-
.../providers/apache/kafka/hooks/consume.py | 2 +-
.../providers/apache/kafka/operators/consume.py | 2 +-
.../providers/apache/kafka/operators/produce.py | 2 +-
.../apache/kafka/triggers/await_message.py | 2 +-
providers/apache/kylin/README.rst | 8 +-
providers/apache/kylin/docs/changelog.rst | 11 +
providers/apache/kylin/docs/index.rst | 8 +-
providers/apache/kylin/provider.yaml | 3 +-
providers/apache/kylin/pyproject.toml | 8 +-
.../src/airflow/providers/apache/kylin/__init__.py | 2 +-
providers/apache/livy/README.rst | 8 +-
providers/apache/livy/docs/changelog.rst | 11 +
providers/apache/livy/docs/index.rst | 8 +-
providers/apache/livy/provider.yaml | 3 +-
providers/apache/livy/pyproject.toml | 8 +-
.../src/airflow/providers/apache/livy/__init__.py | 2 +-
providers/apache/pig/README.rst | 26 +-
providers/apache/pig/docs/changelog.rst | 11 +
providers/apache/pig/docs/index.rst | 17 +-
providers/apache/pig/provider.yaml | 3 +-
providers/apache/pig/pyproject.toml | 8 +-
.../src/airflow/providers/apache/pig/__init__.py | 2 +-
providers/apache/pinot/README.rst | 30 +-
providers/apache/pinot/docs/changelog.rst | 11 +
providers/apache/pinot/docs/index.rst | 21 +-
providers/apache/pinot/provider.yaml | 3 +-
providers/apache/pinot/pyproject.toml | 8 +-
.../src/airflow/providers/apache/pinot/__init__.py | 2 +-
providers/apache/spark/README.rst | 8 +-
providers/apache/spark/docs/changelog.rst | 11 +
providers/apache/spark/docs/index.rst | 8 +-
providers/apache/spark/provider.yaml | 3 +-
providers/apache/spark/pyproject.toml | 8 +-
.../src/airflow/providers/apache/spark/__init__.py | 2 +-
providers/arangodb/README.rst | 8 +-
providers/arangodb/docs/changelog.rst | 11 +
providers/arangodb/docs/index.rst | 8 +-
providers/arangodb/provider.yaml | 3 +-
providers/arangodb/pyproject.toml | 8 +-
.../src/airflow/providers/arangodb/__init__.py | 2 +-
.../jira/docs/.latest-doc-only-change.txt | 2 +-
providers/atlassian/jira/pyproject.toml | 2 +-
providers/celery/README.rst | 8 +-
providers/celery/docs/changelog.rst | 13 +
providers/celery/docs/index.rst | 8 +-
providers/celery/provider.yaml | 3 +-
providers/celery/pyproject.toml | 8 +-
.../src/airflow/providers/celery/__init__.py | 2 +-
providers/cloudant/README.rst | 8 +-
providers/cloudant/docs/changelog.rst | 11 +
providers/cloudant/docs/index.rst | 8 +-
providers/cloudant/provider.yaml | 3 +-
providers/cloudant/pyproject.toml | 8 +-
.../src/airflow/providers/cloudant/__init__.py | 2 +-
providers/cncf/kubernetes/README.rst | 9 +-
providers/cncf/kubernetes/docs/changelog.rst | 19 +
providers/cncf/kubernetes/docs/index.rst | 9 +-
providers/cncf/kubernetes/provider.yaml | 3 +-
providers/cncf/kubernetes/pyproject.toml | 8 +-
.../airflow/providers/cncf/kubernetes/__init__.py | 2 +-
providers/common/compat/README.rst | 6 +-
providers/common/compat/docs/changelog.rst | 13 +
providers/common/compat/docs/index.rst | 6 +-
providers/common/compat/provider.yaml | 3 +-
providers/common/compat/pyproject.toml | 6 +-
.../airflow/providers/common/compat/__init__.py | 2 +-
.../common/compat/module_loading/__init__.py | 64 +-
.../messaging/docs/.latest-doc-only-change.txt | 2 +-
providers/common/sql/README.rst | 8 +-
providers/common/sql/docs/changelog.rst | 12 +
providers/common/sql/docs/index.rst | 8 +-
providers/common/sql/provider.yaml | 3 +-
providers/common/sql/pyproject.toml | 8 +-
.../src/airflow/providers/common/sql/__init__.py | 2 +-
.../src/airflow/providers/common/sql/hooks/sql.py | 4 +-
providers/databricks/README.rst | 8 +-
providers/databricks/docs/changelog.rst | 12 +
providers/databricks/docs/index.rst | 8 +-
providers/databricks/provider.yaml | 3 +-
providers/databricks/pyproject.toml | 8 +-
.../src/airflow/providers/databricks/__init__.py | 2 +-
providers/datadog/README.rst | 8 +-
providers/datadog/docs/changelog.rst | 11 +
providers/datadog/docs/index.rst | 8 +-
providers/datadog/provider.yaml | 3 +-
providers/datadog/pyproject.toml | 8 +-
.../src/airflow/providers/datadog/__init__.py | 2 +-
providers/dbt/cloud/README.rst | 8 +-
providers/dbt/cloud/docs/changelog.rst | 17 +
providers/dbt/cloud/docs/index.rst | 8 +-
providers/dbt/cloud/provider.yaml | 3 +-
providers/dbt/cloud/pyproject.toml | 8 +-
.../src/airflow/providers/dbt/cloud/__init__.py | 2 +-
providers/dingding/README.rst | 8 +-
providers/dingding/docs/changelog.rst | 11 +
providers/dingding/docs/index.rst | 8 +-
providers/dingding/provider.yaml | 3 +-
providers/dingding/pyproject.toml | 8 +-
.../src/airflow/providers/dingding/__init__.py | 2 +-
providers/discord/README.rst | 8 +-
providers/discord/docs/changelog.rst | 11 +
providers/discord/docs/index.rst | 8 +-
providers/discord/provider.yaml | 3 +-
providers/discord/pyproject.toml | 8 +-
.../src/airflow/providers/discord/__init__.py | 2 +-
providers/docker/README.rst | 8 +-
providers/docker/docs/changelog.rst | 16 +
providers/docker/docs/index.rst | 8 +-
providers/docker/provider.yaml | 3 +-
providers/docker/pyproject.toml | 8 +-
.../src/airflow/providers/docker/__init__.py | 2 +-
providers/edge3/README.rst | 14 +-
providers/edge3/docs/changelog.rst | 18 +
providers/edge3/docs/index.rst | 14 +-
providers/edge3/provider.yaml | 3 +-
providers/edge3/pyproject.toml | 8 +-
.../edge3/src/airflow/providers/edge3/__init__.py | 2 +-
providers/elasticsearch/README.rst | 8 +-
providers/elasticsearch/docs/changelog.rst | 11 +
providers/elasticsearch/docs/index.rst | 8 +-
providers/elasticsearch/provider.yaml | 3 +-
providers/elasticsearch/pyproject.toml | 8 +-
.../airflow/providers/elasticsearch/__init__.py | 2 +-
.../providers/elasticsearch/log/es_task_handler.py | 2 +-
providers/fab/README.rst | 8 +-
providers/fab/docs/auth-manager/access-control.rst | 2 +-
.../fab/docs/auth-manager/api-authentication.rst | 6 +-
providers/fab/docs/auth-manager/token.rst | 118 +-
providers/fab/docs/changelog.rst | 31 +
providers/fab/docs/index.rst | 8 +-
providers/fab/provider.yaml | 3 +-
providers/fab/pyproject.toml | 8 +-
.../fab/src/airflow/providers/fab/__init__.py | 2 +-
.../auth_manager/api_fastapi/datamodels/login.py | 7 -
.../openapi/v2-fab-auth-manager-generated.yaml | 22 +-
.../fab/auth_manager/api_fastapi/routes/login.py | 15 +-
.../fab/auth_manager/api_fastapi/services/login.py | 37 +-
.../providers/fab/auth_manager/fab_auth_manager.py | 27 +
...y => 0000_1_4_0_create_ab_tables_if_missing.py} | 0
.../auth_manager/api_fastapi/routes/test_login.py | 8 +-
.../api_fastapi/services/test_login.py | 62 +-
.../unit/fab/auth_manager/test_fab_auth_manager.py | 45 +-
providers/facebook/README.rst | 8 +-
providers/facebook/docs/changelog.rst | 11 +
providers/facebook/docs/index.rst | 8 +-
providers/facebook/provider.yaml | 3 +-
providers/facebook/pyproject.toml | 8 +-
.../src/airflow/providers/facebook/__init__.py | 2 +-
providers/git/README.rst | 8 +-
providers/git/docs/changelog.rst | 17 +
providers/git/docs/index.rst | 8 +-
providers/git/provider.yaml | 3 +-
providers/git/pyproject.toml | 8 +-
.../git/src/airflow/providers/git/__init__.py | 2 +-
providers/github/README.rst | 8 +-
providers/github/docs/changelog.rst | 11 +
providers/github/docs/index.rst | 8 +-
providers/github/provider.yaml | 3 +-
providers/github/pyproject.toml | 8 +-
.../src/airflow/providers/github/__init__.py | 2 +-
providers/google/README.rst | 8 +-
providers/google/docs/changelog.rst | 18 +
providers/google/docs/index.rst | 8 +-
providers/google/provider.yaml | 3 +-
providers/google/pyproject.toml | 8 +-
.../src/airflow/providers/google/__init__.py | 2 +-
.../cloud/composer/example_cloud_composer.py | 2 +-
providers/http/README.rst | 8 +-
providers/http/docs/changelog.rst | 16 +
providers/http/docs/index.rst | 8 +-
providers/http/provider.yaml | 3 +-
providers/http/pyproject.toml | 8 +-
.../http/src/airflow/providers/http/__init__.py | 2 +-
providers/imap/README.rst | 8 +-
providers/imap/docs/changelog.rst | 11 +
providers/imap/docs/index.rst | 8 +-
providers/imap/provider.yaml | 3 +-
providers/imap/pyproject.toml | 8 +-
.../imap/src/airflow/providers/imap/__init__.py | 2 +-
providers/jdbc/README.rst | 8 +-
providers/jdbc/docs/changelog.rst | 11 +
providers/jdbc/docs/index.rst | 8 +-
providers/jdbc/provider.yaml | 3 +-
providers/jdbc/pyproject.toml | 8 +-
.../jdbc/src/airflow/providers/jdbc/__init__.py | 2 +-
providers/jenkins/README.rst | 8 +-
providers/jenkins/docs/changelog.rst | 11 +
providers/jenkins/docs/index.rst | 8 +-
providers/jenkins/provider.yaml | 3 +-
providers/jenkins/pyproject.toml | 8 +-
.../src/airflow/providers/jenkins/__init__.py | 2 +-
providers/keycloak/README.rst | 38 +-
.../docs/auth-manager/manage/permissions.rst | 6 +-
providers/keycloak/docs/changelog.rst | 27 +
providers/keycloak/docs/index.rst | 43 +-
providers/keycloak/provider.yaml | 19 +-
providers/keycloak/pyproject.toml | 8 +-
.../src/airflow/providers/keycloak/__init__.py | 2 +-
.../keycloak/auth_manager/cli/commands.py | 227 +-
.../keycloak/auth_manager/cli/definition.py | 32 +-
.../providers/keycloak/auth_manager/cli/utils.py | 81 +
.../providers/keycloak/auth_manager/constants.py | 2 +
.../keycloak/auth_manager/keycloak_auth_manager.py | 39 +-
.../providers/keycloak/get_provider_info.py | 14 +
.../keycloak/auth_manager/cli/test_commands.py | 278 +-
.../keycloak/auth_manager/cli/test_definition.py | 85 +-
.../unit/keycloak/auth_manager/cli/test_utils.py | 61 +
.../auth_manager/test_keycloak_auth_manager.py | 74 +-
providers/microsoft/azure/README.rst | 8 +-
providers/microsoft/azure/docs/changelog.rst | 21 +
providers/microsoft/azure/docs/index.rst | 8 +-
providers/microsoft/azure/provider.yaml | 3 +-
providers/microsoft/azure/pyproject.toml | 8 +-
.../airflow/providers/microsoft/azure/__init__.py | 2 +-
.../providers/microsoft/azure/hooks/msgraph.py | 159 +-
.../providers/microsoft/azure/operators/msgraph.py | 21 +-
.../providers/microsoft/azure/triggers/msgraph.py | 2 +-
.../unit/microsoft/azure/hooks/test_msgraph.py | 99 +
providers/microsoft/psrp/README.rst | 8 +-
providers/microsoft/psrp/docs/changelog.rst | 11 +
providers/microsoft/psrp/docs/index.rst | 8 +-
providers/microsoft/psrp/provider.yaml | 3 +-
providers/microsoft/psrp/pyproject.toml | 8 +-
.../airflow/providers/microsoft/psrp/__init__.py | 2 +-
providers/microsoft/winrm/README.rst | 8 +-
providers/microsoft/winrm/docs/changelog.rst | 11 +
providers/microsoft/winrm/docs/index.rst | 8 +-
providers/microsoft/winrm/provider.yaml | 3 +-
providers/microsoft/winrm/pyproject.toml | 8 +-
.../airflow/providers/microsoft/winrm/__init__.py | 2 +-
providers/neo4j/README.rst | 8 +-
providers/neo4j/docs/changelog.rst | 11 +
providers/neo4j/docs/index.rst | 8 +-
providers/neo4j/provider.yaml | 3 +-
providers/neo4j/pyproject.toml | 8 +-
.../neo4j/src/airflow/providers/neo4j/__init__.py | 2 +-
providers/openai/README.rst | 8 +-
providers/openai/docs/changelog.rst | 11 +
providers/openai/docs/index.rst | 8 +-
providers/openai/provider.yaml | 3 +-
providers/openai/pyproject.toml | 8 +-
.../src/airflow/providers/openai/__init__.py | 2 +-
providers/openfaas/README.rst | 8 +-
providers/openfaas/docs/changelog.rst | 11 +
providers/openfaas/docs/index.rst | 8 +-
providers/openfaas/provider.yaml | 3 +-
providers/openfaas/pyproject.toml | 8 +-
.../src/airflow/providers/openfaas/__init__.py | 2 +-
providers/openlineage/README.rst | 8 +-
providers/openlineage/docs/changelog.rst | 15 +
providers/openlineage/docs/index.rst | 8 +-
providers/openlineage/provider.yaml | 3 +-
providers/openlineage/pyproject.toml | 8 +-
.../src/airflow/providers/openlineage/__init__.py | 2 +-
.../airflow/providers/openlineage/utils/utils.py | 2 +-
providers/opensearch/README.rst | 8 +-
providers/opensearch/docs/changelog.rst | 11 +
providers/opensearch/docs/index.rst | 8 +-
providers/opensearch/provider.yaml | 3 +-
providers/opensearch/pyproject.toml | 8 +-
.../src/airflow/providers/opensearch/__init__.py | 2 +-
.../providers/opensearch/log/os_task_handler.py | 2 +-
providers/pagerduty/README.rst | 8 +-
providers/pagerduty/docs/changelog.rst | 11 +
providers/pagerduty/docs/index.rst | 8 +-
providers/pagerduty/provider.yaml | 3 +-
providers/pagerduty/pyproject.toml | 8 +-
.../src/airflow/providers/pagerduty/__init__.py | 2 +-
providers/postgres/README.rst | 8 +-
providers/postgres/docs/changelog.rst | 11 +
providers/postgres/docs/index.rst | 8 +-
providers/postgres/provider.yaml | 3 +-
providers/postgres/pyproject.toml | 8 +-
.../src/airflow/providers/postgres/__init__.py | 2 +-
providers/presto/README.rst | 8 +-
providers/presto/docs/changelog.rst | 11 +
providers/presto/docs/index.rst | 8 +-
providers/presto/provider.yaml | 3 +-
providers/presto/pyproject.toml | 8 +-
.../src/airflow/providers/presto/__init__.py | 2 +-
providers/redis/README.rst | 8 +-
providers/redis/docs/changelog.rst | 16 +
providers/redis/docs/index.rst | 8 +-
providers/redis/provider.yaml | 3 +-
providers/redis/pyproject.toml | 8 +-
.../redis/src/airflow/providers/redis/__init__.py | 2 +-
providers/salesforce/README.rst | 8 +-
providers/salesforce/docs/changelog.rst | 11 +
providers/salesforce/docs/index.rst | 8 +-
providers/salesforce/provider.yaml | 3 +-
providers/salesforce/pyproject.toml | 8 +-
.../src/airflow/providers/salesforce/__init__.py | 2 +-
providers/samba/README.rst | 8 +-
providers/samba/docs/changelog.rst | 11 +
providers/samba/docs/index.rst | 8 +-
providers/samba/provider.yaml | 3 +-
providers/samba/pyproject.toml | 8 +-
.../samba/src/airflow/providers/samba/__init__.py | 2 +-
providers/segment/README.rst | 8 +-
providers/segment/docs/changelog.rst | 11 +
providers/segment/docs/index.rst | 8 +-
providers/segment/provider.yaml | 3 +-
providers/segment/pyproject.toml | 8 +-
.../src/airflow/providers/segment/__init__.py | 2 +-
providers/sftp/README.rst | 8 +-
providers/sftp/docs/changelog.rst | 16 +
providers/sftp/docs/index.rst | 8 +-
providers/sftp/provider.yaml | 3 +-
providers/sftp/pyproject.toml | 8 +-
.../sftp/src/airflow/providers/sftp/__init__.py | 2 +-
providers/singularity/README.rst | 8 +-
providers/singularity/docs/changelog.rst | 11 +
providers/singularity/docs/index.rst | 8 +-
providers/singularity/provider.yaml | 3 +-
providers/singularity/pyproject.toml | 8 +-
.../src/airflow/providers/singularity/__init__.py | 2 +-
providers/slack/README.rst | 8 +-
providers/slack/docs/changelog.rst | 11 +
providers/slack/docs/index.rst | 8 +-
providers/slack/provider.yaml | 3 +-
providers/slack/pyproject.toml | 8 +-
.../slack/src/airflow/providers/slack/__init__.py | 2 +-
providers/smtp/README.rst | 8 +-
providers/smtp/docs/changelog.rst | 11 +
providers/smtp/docs/index.rst | 8 +-
providers/smtp/provider.yaml | 3 +-
providers/smtp/pyproject.toml | 8 +-
.../smtp/src/airflow/providers/smtp/__init__.py | 2 +-
providers/snowflake/README.rst | 8 +-
providers/snowflake/docs/changelog.rst | 17 +
providers/snowflake/docs/index.rst | 8 +-
providers/snowflake/provider.yaml | 3 +-
providers/snowflake/pyproject.toml | 8 +-
.../src/airflow/providers/snowflake/__init__.py | 2 +-
providers/ssh/README.rst | 8 +-
providers/ssh/docs/changelog.rst | 11 +
providers/ssh/docs/index.rst | 8 +-
providers/ssh/provider.yaml | 3 +-
providers/ssh/pyproject.toml | 8 +-
.../ssh/src/airflow/providers/ssh/__init__.py | 2 +-
providers/standard/README.rst | 8 +-
providers/standard/docs/changelog.rst | 18 +
providers/standard/docs/index.rst | 8 +-
providers/standard/provider.yaml | 3 +-
providers/standard/pyproject.toml | 8 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
providers/tableau/README.rst | 8 +-
providers/tableau/docs/changelog.rst | 11 +
providers/tableau/docs/index.rst | 8 +-
providers/tableau/provider.yaml | 3 +-
providers/tableau/pyproject.toml | 8 +-
.../src/airflow/providers/tableau/__init__.py | 2 +-
providers/telegram/README.rst | 8 +-
providers/telegram/docs/changelog.rst | 11 +
providers/telegram/docs/index.rst | 8 +-
providers/telegram/provider.yaml | 3 +-
providers/telegram/pyproject.toml | 8 +-
.../src/airflow/providers/telegram/__init__.py | 2 +-
providers/teradata/README.rst | 8 +-
providers/teradata/docs/changelog.rst | 11 +
providers/teradata/docs/index.rst | 8 +-
providers/teradata/provider.yaml | 3 +-
providers/teradata/pyproject.toml | 8 +-
.../src/airflow/providers/teradata/__init__.py | 2 +-
providers/trino/README.rst | 8 +-
providers/trino/docs/changelog.rst | 11 +
providers/trino/docs/index.rst | 8 +-
providers/trino/provider.yaml | 3 +-
providers/trino/pyproject.toml | 8 +-
.../trino/src/airflow/providers/trino/__init__.py | 2 +-
providers/ydb/README.rst | 36 +-
providers/ydb/docs/changelog.rst | 11 +
providers/ydb/docs/index.rst | 36 +-
providers/ydb/provider.yaml | 3 +-
providers/ydb/pyproject.toml | 8 +-
.../ydb/src/airflow/providers/ydb/__init__.py | 2 +-
pyproject.toml | 3 +
scripts/in_container/run_migration_reference.py | 2 +-
shared/configuration/pyproject.toml | 1 +
.../src/airflow_shared/configuration/parser.py | 2 +-
.../{timezones => module_loading}/pyproject.toml | 6 +-
.../src/airflow_shared/module_loading/__init__.py | 22 +
.../tests/conftest.py | 0
.../tests/module_loading}/__init__.py | 0
.../tests/module_loading}/test_module_loading.py | 20 +-
task-sdk-integration-tests/dags/test_asset_dag.py | 11 +-
.../tests/task_sdk_tests/conftest.py | 1 +
.../task_sdk_tests/test_asset_event_operations.py | 56 +-
.../task_sdk_tests/test_dag_run_operations.py | 4 +-
task-sdk/pyproject.toml | 6 +-
task-sdk/src/airflow/sdk/_shared/module_loading | 1 +
task-sdk/src/airflow/sdk/api/client.py | 11 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 2 +-
task-sdk/src/airflow/sdk/configuration.py | 2 +-
task-sdk/src/airflow/sdk/definitions/callback.py | 2 +-
task-sdk/src/airflow/sdk/definitions/connection.py | 2 +-
task-sdk/src/airflow/sdk/definitions/dag.py | 2 +-
task-sdk/src/airflow/sdk/execution_time/comms.py | 102 +-
.../src/airflow/sdk/execution_time/supervisor.py | 21 +-
task-sdk/src/airflow/sdk/io/fs.py | 2 +-
task-sdk/src/airflow/sdk/io/store.py | 2 +-
task-sdk/src/airflow/sdk/module_loading.py | 71 +-
task-sdk/tests/task_sdk/api/test_client.py | 23 +-
.../tests/task_sdk/definitions/test_callback.py | 2 +-
.../tests/task_sdk/definitions/test_connection.py | 2 +-
.../task_sdk/definitions/test_module_loading.py | 23 -
.../tests/task_sdk/execution_time/test_context.py | 93 +-
.../tests/task_sdk/execution_time/test_sentry.py | 2 +-
.../task_sdk/execution_time/test_supervisor.py | 114 +-
task-sdk/tests/task_sdk/io/test_path.py | 2 +-
669 files changed, 9394 insertions(+), 4869 deletions(-)
copy .github/workflows/{airflow-e2e-tests.yml => ui-e2e-tests.yml} (68%)
create mode 120000 airflow-core/src/airflow/_shared/module_loading
copy airflow-core/src/airflow/api_fastapi/execution_api/versions/{v2025_09_23.py => v2025_12_08.py} (59%)
create mode 100644 airflow-core/src/airflow/migrations/versions/0000_2_6_2_squashed_migrations.py
create mode 100644 airflow-core/src/airflow/migrations/versions/0094_3_2_0_remove_team_id.py
copy airflow-core/{src/airflow/_shared => tests/unit/api_fastapi/execution_api/versions/v2025_11_07}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/versions/v2025_11_07/test_dag_runs.py
delete mode 100644 airflow-core/tests/unit/utils/test_module_loading.py
create mode 100644 chart/newsfragments/52357.improvement.rst
create mode 100644 dev/breeze/src/airflow_breeze/utils/docker_compose_utils.py
copy airflow-core/tests/unit/listeners/lifecycle_listener.py => providers/common/compat/src/airflow/providers/common/compat/module_loading/__init__.py (52%)
rename providers/fab/src/airflow/providers/fab/migrations/versions/{0001_1_4_0_create_ab_tables_if_missing.py => 0000_1_4_0_create_ab_tables_if_missing.py} (100%)
create mode 100644 providers/keycloak/src/airflow/providers/keycloak/auth_manager/cli/utils.py
create mode 100644 providers/keycloak/tests/unit/keycloak/auth_manager/cli/test_utils.py
copy shared/{timezones => module_loading}/pyproject.toml (89%)
rename airflow-core/src/airflow/utils/module_loading.py => shared/module_loading/src/airflow_shared/module_loading/__init__.py (77%)
copy shared/{observability => module_loading}/tests/conftest.py (100%)
copy {airflow-core/src/airflow/api/common => shared/module_loading/tests/module_loading}/__init__.py (100%)
copy {task-sdk/tests/task_sdk/definitions => shared/module_loading/tests/module_loading}/test_module_loading.py (72%)
create mode 120000 task-sdk/src/airflow/sdk/_shared/module_loading