This is an automated email from the ASF dual-hosted git repository. taragolis pushed a change to branch pytest-import-mode-importlib in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 5be23afeab Add importlib to the other tests discard f177c7d46d [Experiment] Use `importlib` import mode for `pytest` add 3f4872beea Hide internals of some groupped workflows (#38604) add 75264404cf Remove image tag from Helm test name (#38621) add 6e27ba99af Conditionally skip few more tests for "Pydantic Removed" test (#38620) add ff491a6732 Configure retention policy for temporary files which created by `tmp_path` fixture (#38613) add a4ee43024a Avoid to use `functools.lru_cache` in class methods in dev (#38627) add a24860ab82 Use generic utils for cleanup db and operate with temp objects in TestXcomObjectStoreBackend (#37166) add 50a4c951fc Raise an error on Airflow Deprecation warnings in tests (#38504) add 90e7b3fd05 Fix `total_entries` count on the event logs endpoint (#38625) add 0f513472a7 Add `impersonation_scopes` to BigQuery (#38169) add 0723a8f01d Introduce Amazon Bedrock service (#38602) add e700f4150a Rename `allowed_filter_attrs` to `allowed_sort_attrs` (#38626) add f6637eef01 add templated field support for extra containers (#38510) add 6d4746f899 Consolidate HttpOperator http request between sync and async mode (#37293) add ec6091d498 Fix spark operator log retrieval from driver (#38106) add 35d1899931 Mark more fields on API as dump-only (#38616) add 46b30b23b2 Upgrade gitpython as build dependency (#38644) add ee87046350 Revert "Temporarily remove protection on v2-9-stable to create beta 2 (#38431)" (#38645) add 2660188559 Disable support of a legacy `LocalPath` in favor of stdlib `pathlib.Path` (#38624) add 9da08a525e Use explicit and easier to use runs-on approach for CI workflows (#38601) add 39b684d91a add repair_run support to DatabricksRunNowOperator in deferrable mode (#38619) add 13e9a0d0d5 Fix credentials error for S3ToGCSOperator trigger (#37518) add 6f0e5bce59 Add a migration script for encrypted trigger kwargs (#38358) add 1cac59ed6f Introducing --latest for generate-issue-content-helm-chart command (#38648) add d3dc88f084 Avoid to use `functools.lru_cache` in class methods in `google` provider (#38652) add f1301daef0 Improve stability of remove_task_decorator function (#38649) add 8455eb26c1 bump ruff to 0.3.5 (#38656) add 39b3eb2491 More human friendly "show tables" output for db cleanup (#38654) add bc7b68b83a Move cleanup-docker to a shell scripts from composite action (#38659) add 51b34bb146 Ensure orm models loaded when using RPC API (#38568) add a059ba4f74 Fix duplicate "health" line in internal api openapi config (#38661) add 9c611477c3 bump uv to 0.1.27 (#38657) add e20a710587 Remove display of param from the UI (#38660) add 12d38e1a55 Clean up unused triggers in a single query for all dialects except MySQL (#38663) add 725a9b6cab Rename pre-commit scripts, drop pre_commit_ prefix (#38667) add ba41e5a472 Fixed wrong links in the ci documentation (#38670) add 1934c8b86e Rename build arg for upgrade-to-newer-dependencies (#38637) add 32c88a2906 Add exclude/include events filters to audit log (#38506) add 8246a892b2 Improve trigger assign_unassigned by merging alive_triggerer_ids and get_sorted_triggers queries (#38664) add e2df442bd3 Add a task instance dependency for mapped dependencies (#37498) add 6ef381b94b Update known issue with Pendulum 3 in 2.8.1 release notes (#38675) add eb541aeb5c Check-out the target commit when preparing PROD build artifacts (#38678) add 279b45625b Update render filename to use internal API (#38558) add 399854fb7d Update `pytest_collection_modifyitems` to use correct properties (#38665) add 67cb3023af Don't create session in _execute_callable if using internal API (#38566) add 31e119a0e6 Add executor field to the DB and parameter to the operators (#38474) add eba50465a6 Don't create session in get_dag if not reading dags from database (#38553) add 583fa2da38 Remove select_column option in TaskInstance.get_task_instance (#38571) add ab5aabe50b Implement delete_on_status parameter for KubernetesDeleteJobOperator (#38458) add 0010bf1269 Make _get_template_context an RPC call (#38567) add c4439713cf Revert "Delete deprecated AutoML operators and deprecate AutoML hook and links (#38418)" (#38633) add 40dbe4b734 Can update RenderedTaskInstanceFields over RPC (#38565) add 98c613e829 Update UI doc screenshots (#38680) add 76c92c3e0a Extract checkout target commit to a composite action (#38682) add e58cd4b519 Raise deprecated warning in `airflow dags backfill` only if `-I`/`--ignore-first-depends-on-past` provided (#38676) add 3dcd17a922 Add entry to INTHEWILD.md (#38686) add d212b119e1 Fix kubeconform pre-commit to not leave around containers (#38688) add 62f948cd30 Improve XComObjectStorageBackend implementation (#38608) add 26b5bc9801 Add type annotations to `conftest.py` (#38691) add b255012cf0 Ensure internal api command get the "ready" prefix on start (#38550) add c65b08399d Use `methodtools.lru_cache` instead of `functools.lru_cache` in class methods (#37757) add 201e1aabe7 Upgrade Airflow in main to be 2.10.0dev0 (#38699) add 649d643d19 Resolve `PT012` in `amazon` provider tests (#38603) add 091d5e6267 fix(google,log): Avoid log name overriding (#38071) add 12944002aa Add fallback `region_name` value to AWS Executors (#38704) add 0c07142eef Fix few nits in tag-providers command (#38705) add 1759336c6b Drop pre-release specification from pre-installed provider versions (#38703) add bfcb7658ac Remove obtain postgres APT repo signing key from mysql install script (#38700) add 9b2d7cb712 Reorder OpenAPI Spec tags alphabetically (#38717) add 537e0e695b docs: add timeout description to DockerOperator. (#38710) add 40c70e3d03 Restore airflow_local_settings after the `test_should_use_configured_log_name` (#38722) add 17eaf8eae3 Resolve `PT012` in `SFTP` provider tests (#38518) add e2cf24f4d6 Remove FAB provider from "chicken-egg" providers. (#38698) add c65ebdac32 Update providers metadata 2024-04-03 (#38706) add 10db7d543a Fix minor typo in Breeze cheatsheet (#38692) add f142e9ba4e Add support for OrbStack in breeze (#38725) add 0f7f2fa6a2 The dev0 suffix should only be applied in main (#38727) add 6c217ae342 bump uv to 0.1.28 (#38690) add 5337066492 Fix grid header rendering (#38720) add ecd69955f9 fix: Remove redundant operator information from facets (#38264) add 329c76d2e3 Rename UV_REQUEST_TIMEOUT to UV_HTTP_TIMEOUT and make it more usable (#38739) add 2b61725f58 feat: Add mobuchowski ad Code Owner for OpenLineage provider code (#38738) add 02ce3a0238 Edited timetable docs (#38505) add 586a67d5bf Better cleanup `LazyDictWithCache` and `ProviderManager` (#38730) add fb7f82ccd5 Make UV_HTTP_TIMEOUT default value bigger in WSL2 environment (#38742) add 6172b44218 Unhide CI instructions when dependencies need regeneration (#38748) add be893001ce Switch to `pip` for all PROD images built in the release branches (#38749) add 901c3a6504 Feature/refactor azure synapse pipeline class (#38723) add c2981fec55 Adding support to hive hook for high availability Hive installations (#38651) add b606b96e50 Respect `@pytest.mark.filterwarnings` in prohibited warnings (#38684) add b094da448f Improve audit log events filter (#38719) add 567246f1b1 Fix decryption of trigger kwargs when downgrading. (#38743) add 370998d8a8 Also disable UV for PROD cache build in release branches (#38752) add ff33a05335 Bump undici from 5.28.3 to 5.28.4 in /airflow/www (#38751) add b80e17c48b add Wei Lee to committer list (#38740) add e6eec0cfad Use async db calls in WorkflowTrigger (#38689) add 0e1a789119 Improve `DockerOperator` to support multiple Docker hosts (#38466) add cc901cdaab Replace to broad exceptions into the dev (#38489) add 4d868e0d6b [Experiment] Use `importlib` import mode for `pytest` add 4d06d33870 Add importlib to the other tests 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 (5be23afeab) \ N -- N -- N refs/heads/pytest-import-mode-importlib (4d06d33870) 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: .asf.yaml | 9 +- .github/CODEOWNERS | 43 +- .github/actions/checkout_target_commit/action.yml | 78 ++ .github/workflows/additional-ci-image-checks.yml | 32 +- .github/workflows/additional-prod-image-tests.yml | 23 +- .github/workflows/basic-tests.yml | 40 +- .github/workflows/build-images.yml | 17 +- .github/workflows/check-providers.yml | 27 +- .github/workflows/ci-image-build.yml | 82 +- .github/workflows/ci.yml | 73 +- .github/workflows/finalize-tests.yml | 29 +- .github/workflows/generate-constraints.yml | 10 +- .github/workflows/helm-tests.yml | 33 +- .github/workflows/integration-tests.yml | 13 +- .github/workflows/k8s-tests.yml | 13 +- .github/workflows/prod-image-build.yml | 99 +- .github/workflows/prod-image-extra-checks.yml | 17 +- .github/workflows/push-image-cache.yml | 37 +- .github/workflows/release_dockerhub_image.yml | 14 +- .github/workflows/run-unit-tests.yml | 19 +- .github/workflows/special-tests.yml | 31 +- .github/workflows/static-checks-mypy-docs.yml | 27 +- .pre-commit-config.yaml | 197 +-- Dockerfile | 19 +- Dockerfile.ci | 18 +- INTHEWILD.md | 1 + README.md | 2 +- RELEASE_NOTES.rst | 5 + airflow/__init__.py | 2 +- .../api_connexion/endpoints/connection_endpoint.py | 4 +- .../api_connexion/endpoints/dag_run_endpoint.py | 4 +- .../endpoints/dag_warning_endpoint.py | 4 +- .../api_connexion/endpoints/event_log_endpoint.py | 10 +- .../endpoints/import_error_endpoint.py | 4 +- airflow/api_connexion/endpoints/pool_endpoint.py | 4 +- .../api_connexion/endpoints/variable_endpoint.py | 4 +- airflow/api_connexion/openapi/v1.yaml | 12 +- airflow/api_connexion/schemas/dag_schema.py | 20 +- .../api_connexion/schemas/dag_warning_schema.py | 6 +- airflow/api_connexion/schemas/error_schema.py | 8 +- airflow/api_connexion/schemas/log_schema.py | 4 +- airflow/api_connexion/schemas/plugin_schema.py | 26 +- .../api_connexion/schemas/task_instance_schema.py | 54 +- airflow/api_internal/endpoints/rpc_api_endpoint.py | 5 + .../api_internal/gunicorn_config.py | 19 +- airflow/api_internal/openapi/internal_api_v1.yaml | 1 - airflow/cli/commands/dag_command.py | 13 +- airflow/cli/commands/internal_api_command.py | 2 + airflow/cli/commands/task_command.py | 4 + airflow/config_templates/airflow_local_settings.py | 2 +- .../0140_2_9_0_update_trigger_kwargs_type.py | 50 + .../0141_2_10_0_add_new_executor_field_to_db.py} | 40 +- airflow/models/abstractoperator.py | 5 +- airflow/models/baseoperator.py | 15 + airflow/models/mappedoperator.py | 13 +- airflow/models/renderedtifields.py | 21 +- airflow/models/taskinstance.py | 85 +- airflow/models/trigger.py | 31 +- .../amazon/aws/executors/batch/batch_executor.py | 2 +- .../amazon/aws/executors/ecs/ecs_executor.py | 2 +- .../providers/amazon/aws/hooks/bedrock.py | 22 +- airflow/providers/amazon/aws/operators/bedrock.py | 93 ++ airflow/providers/amazon/provider.yaml | 12 + airflow/providers/apache/hive/hooks/hive.py | 21 +- .../providers/cncf/kubernetes/hooks/kubernetes.py | 43 +- airflow/providers/cncf/kubernetes/operators/job.py | 45 +- .../cncf/kubernetes/operators/spark_kubernetes.py | 18 +- airflow/providers/common/io/xcom/backend.py | 99 +- airflow/providers/databricks/hooks/databricks.py | 2 +- .../providers/databricks/operators/databricks.py | 119 +- .../providers/databricks/triggers/databricks.py | 4 + airflow/providers/docker/hooks/docker.py | 52 +- airflow/providers/docker/operators/docker.py | 5 +- .../api_endpoints/role_and_permission_endpoint.py | 4 +- .../auth_manager/api_endpoints/user_endpoint.py | 4 +- airflow/providers/google/cloud/hooks/automl.py | 758 +++++++++--- airflow/providers/google/cloud/hooks/bigquery.py | 19 + .../cloud/hooks/cloud_storage_transfer_service.py | 13 +- .../providers/google/cloud/hooks/compute_ssh.py | 2 +- airflow/providers/google/cloud/links/automl.py | 17 +- .../google/cloud/log/stackdriver_task_handler.py | 21 +- airflow/providers/google/cloud/operators/automl.py | 1255 +++++++++++++++++++- .../providers/google/cloud/operators/bigquery.py | 3 + .../providers/google/cloud/transfers/s3_to_gcs.py | 1 + .../triggers/cloud_storage_transfer_service.py | 16 +- .../providers/google/common/hooks/base_google.py | 2 +- airflow/providers/google/provider.yaml | 11 + airflow/providers/http/hooks/http.py | 5 +- airflow/providers/microsoft/azure/CHANGELOG.rst | 9 + airflow/providers/microsoft/azure/hooks/synapse.py | 76 +- airflow/providers/microsoft/azure/provider.yaml | 5 +- airflow/providers/openlineage/extractors/bash.py | 22 +- .../providers/openlineage/extractors/manager.py | 17 +- airflow/providers/openlineage/extractors/python.py | 22 +- airflow/providers/openlineage/plugins/facets.py | 11 + airflow/providers/openlineage/utils/utils.py | 78 +- airflow/providers/sftp/triggers/sftp.py | 2 +- airflow/providers_manager.py | 6 +- airflow/reproducible_build.yaml | 4 +- airflow/serialization/enums.py | 1 + airflow/serialization/pydantic/taskinstance.py | 1 + airflow/serialization/schema.json | 1 + airflow/serialization/serialized_objects.py | 16 +- airflow/ti_deps/deps/mapped_task_upstream_dep.py | 104 ++ airflow/triggers/external_task.py | 46 +- airflow/utils/cli.py | 3 +- airflow/utils/db.py | 41 +- airflow/utils/db_cleanup.py | 10 +- airflow/utils/decorators.py | 10 +- airflow/utils/log/file_task_handler.py | 58 +- airflow/utils/task_group.py | 4 +- airflow/utils/weight_rule.py | 4 +- airflow/www/extensions/init_jinja_globals.py | 2 + airflow/www/static/js/api/useEventLogs.tsx | 12 + airflow/www/static/js/dag/details/AuditLog.tsx | 92 +- airflow/www/static/js/dag/details/Header.tsx | 30 +- airflow/www/static/js/dag/details/index.tsx | 6 +- airflow/www/static/js/datasets/SearchBar.tsx | 77 +- airflow/www/templates/airflow/dag.html | 5 +- airflow/www/views.py | 5 + airflow/www/yarn.lock | 6 +- airflow_pre_installed_providers.txt | 2 +- .../dag-processor/dag-processor-deployment.yaml | 2 +- chart/templates/flower/flower-deployment.yaml | 2 +- chart/templates/jobs/create-user-job.yaml | 2 +- chart/templates/jobs/migrate-database-job.yaml | 2 +- .../templates/pgbouncer/pgbouncer-deployment.yaml | 2 +- .../templates/scheduler/scheduler-deployment.yaml | 2 +- .../templates/triggerer/triggerer-deployment.yaml | 2 +- .../templates/webserver/webserver-deployment.yaml | 2 +- chart/templates/workers/worker-deployment.yaml | 2 +- contributing-docs/05_pull_requests.rst | 2 +- contributing-docs/08_static_code_checks.rst | 2 + contributing-docs/testing/unit_tests.rst | 43 +- dev/README_RELEASE_AIRFLOW.md | 4 +- dev/breeze/README.md | 2 +- dev/breeze/doc/ci/02_images.md | 2 +- dev/breeze/doc/ci/04_selective_checks.md | 8 +- dev/breeze/doc/ci/README.md | 4 +- dev/breeze/doc/images/output-commands.svg | 96 +- dev/breeze/doc/images/output_ci-image_build.svg | 2 +- dev/breeze/doc/images/output_ci-image_build.txt | 2 +- dev/breeze/doc/images/output_prod-image_build.svg | 2 +- dev/breeze/doc/images/output_prod-image_build.txt | 2 +- ...anagement_generate-issue-content-helm-chart.svg | 40 +- ...anagement_generate-issue-content-helm-chart.txt | 2 +- dev/breeze/doc/images/output_shell.svg | 160 +-- dev/breeze/doc/images/output_shell.txt | 2 +- dev/breeze/doc/images/output_start-airflow.svg | 130 +- dev/breeze/doc/images/output_start-airflow.txt | 2 +- dev/breeze/doc/images/output_static-checks.svg | 26 +- dev/breeze/doc/images/output_static-checks.txt | 2 +- dev/breeze/pyproject.toml | 3 + .../airflow_breeze/commands/ci_image_commands.py | 10 +- .../commands/ci_image_commands_config.py | 2 +- .../src/airflow_breeze/commands/common_options.py | 9 +- .../airflow_breeze/commands/developer_commands.py | 16 +- .../commands/developer_commands_config.py | 6 + .../src/airflow_breeze/commands/main_command.py | 4 + .../commands/production_image_commands.py | 8 +- .../commands/production_image_commands_config.py | 2 +- .../commands/release_management_commands.py | 69 +- .../commands/release_management_commands_config.py | 1 + dev/breeze/src/airflow_breeze/global_constants.py | 12 +- .../src/airflow_breeze/params/build_ci_params.py | 7 +- .../src/airflow_breeze/params/build_prod_params.py | 5 +- .../airflow_breeze/params/common_build_params.py | 3 +- .../src/airflow_breeze/params/shell_params.py | 2 + dev/breeze/src/airflow_breeze/pre_commit_ids.py | 1 + .../airflow_breeze/utils/docker_command_utils.py | 2 +- .../src/airflow_breeze/utils/docs_publisher.py | 8 +- .../src/airflow_breeze/utils/kubernetes_utils.py | 3 +- .../src/airflow_breeze/utils/md5_build_check.py | 7 +- dev/breeze/src/airflow_breeze/utils/packages.py | 15 +- dev/breeze/src/airflow_breeze/utils/platforms.py | 63 + .../src/airflow_breeze/utils/selective_checks.py | 78 +- dev/breeze/src/airflow_breeze/utils/uv_utils.py | 43 + .../src/airflow_breeze/utils/version_utils.py | 35 +- dev/breeze/src/airflow_breeze/utils/visuals.py | 2 +- dev/breeze/tests/test_selective_checks.py | 14 +- docker_tests/pyproject.toml | 3 + docker_tests/test_prod_image.py | 1 + .../operators/bedrock.rst | 72 ++ .../connections/hive_cli.rst | 4 + .../logging/stackdriver.rst | 4 +- .../operators/cloud/automl.rst | 229 ++++ .../authoring-and-scheduling/timetable.rst | 135 ++- docs/apache-airflow/database-erd-ref.rst | 2 +- docs/apache-airflow/img/airflow_erd.sha256 | 2 +- docs/apache-airflow/img/airflow_erd.svg | 917 +++++++------- docs/apache-airflow/img/audit_log.png | Bin 0 -> 456601 bytes docs/apache-airflow/img/code.png | Bin 506092 -> 504063 bytes docs/apache-airflow/img/duration.png | Bin 150876 -> 358076 bytes docs/apache-airflow/img/gantt.png | Bin 352148 -> 313750 bytes docs/apache-airflow/img/graph.png | Bin 429818 -> 417210 bytes docs/apache-airflow/img/grid.png | Bin 249561 -> 334128 bytes docs/apache-airflow/img/grid_task_details.png | Bin 0 -> 227349 bytes docs/apache-airflow/img/landing_times.png | Bin 84125 -> 303523 bytes docs/apache-airflow/img/run_types.png | Bin 0 -> 5950 bytes .../img/task_manual_vs_scheduled.png | Bin 5686 -> 0 bytes .../installation/supported-versions.rst | 2 +- docs/apache-airflow/migrations-ref.rst | 8 +- docs/apache-airflow/project.rst | 1 + docs/apache-airflow/ui.rst | 23 +- docs/conf.py | 2 +- docs/docker-stack/README.md | 10 +- docs/docker-stack/build-arg-ref.rst | 122 +- .../extending/add-airflow-configuration/Dockerfile | 2 +- .../extending/add-apt-packages/Dockerfile | 2 +- .../add-build-essential-extend/Dockerfile | 2 +- .../extending/add-providers/Dockerfile | 2 +- .../add-pypi-packages-constraints/Dockerfile | 2 +- .../extending/add-pypi-packages-uv/Dockerfile | 2 +- .../extending/add-pypi-packages/Dockerfile | 2 +- .../extending/add-requirement-packages/Dockerfile | 2 +- .../extending/custom-providers/Dockerfile | 2 +- .../extending/embedding-dags/Dockerfile | 2 +- .../extending/writable-directory/Dockerfile | 2 +- docs/docker-stack/entrypoint.rst | 14 +- docs/exts/docs_build/docs_builder.py | 16 - docs/exts/operators_and_hooks_ref.py | 4 +- docs/exts/provider_yaml_utils.py | 5 +- .../aws/amazon-bedrock_light...@4x.png | Bin 0 -> 12621 bytes generated/provider_dependencies.json | 1 + generated/provider_metadata.json | 56 +- hatch_build.py | 22 +- helm_tests/airflow_aux/test_create_user_job.py | 4 +- .../airflow_aux/test_migrate_database_job.py | 4 +- helm_tests/airflow_core/test_dag_processor.py | 4 +- helm_tests/airflow_core/test_scheduler.py | 4 +- helm_tests/airflow_core/test_triggerer.py | 4 +- helm_tests/airflow_core/test_worker.py | 4 +- helm_tests/other/test_flower.py | 4 +- helm_tests/other/test_pgbouncer.py | 4 +- helm_tests/webserver/test_webserver.py | 4 +- kubernetes_tests/pyproject.toml | 3 + newsfragments/38071.significant.rst | 26 + pyproject.toml | 57 +- .../action.yml => scripts/ci/cleanup_docker.sh | 16 +- scripts/ci/docker-compose/devcontainer.env | 2 +- ...ments.py => base_operator_partial_arguments.py} | 0 ...re_commit_boring_cyborg.py => boring_cyborg.py} | 0 ...ommit_breeze_cmd_line.py => breeze_cmd_line.py} | 0 ...gelog_duplicates.py => changelog_duplicates.py} | 0 ...{pre_commit_chart_schema.py => chart_schema.py} | 0 ...e_optional.py => check_aiobotocore_optional.py} | 0 ...ate.py => check_airflow_bug_report_template.py} | 0 ...s_not_used.py => check_airflow_k8s_not_used.py} | 0 ...> check_cncf_k8s_used_for_k8s_executor_only.py} | 0 ...ependency.py => check_common_sql_dependency.py} | 0 ...able_default.py => check_deferrable_default.py} | 0 ...packages_ref.py => check_extra_packages_ref.py} | 0 ..._re2_imports.py => check_google_re2_imports.py} | 0 ...eck_init_in_tests.py => check_init_in_tests.py} | 0 ...grations_list.py => check_integrations_list.py} | 0 ...check_lazy_logging.py => check_lazy_logging.py} | 0 ...re_commit_check_license.py => check_license.py} | 0 ..._extras.py => check_order_dockerfile_extras.py} | 0 ...r_hatch_build.py => check_order_hatch_build.py} | 0 ...e_commit_hooks.py => check_pre_commit_hooks.py} | 0 ....py => check_provider_airflow_compatibility.py} | 0 ...eck_provider_docs.py => check_provider_docs.py} | 0 ..._yaml_files.py => check_provider_yaml_files.py} | 0 ...k_providers_init.py => check_providers_init.py} | 0 ...> check_providers_subpackages_all_have_init.py} | 0 ...check_system_tests.py => check_system_tests.py} | 0 ...ex.py => check_system_tests_hidden_in_index.py} | 0 ..._folders.py => check_tests_in_right_folders.py} | 2 +- ...o_credentials.py => checkout_no_credentials.py} | 0 scripts/ci/pre_commit/compat_cache_on_methods.py | 69 ++ ...compile_www_assets.py => compile_www_assets.py} | 0 ...www_assets_dev.py => compile_www_assets_dev.py} | 0 ...> decorator_operator_implements_custom_name.py} | 0 ...tring_param_type.py => docstring_param_type.py} | 0 ...ow_diagrams.py => generate_airflow_diagrams.py} | 0 ...rate_pypi_readme.py => generate_pypi_readme.py} | 2 +- .../{pre_commit_helm_lint.py => helm_lint.py} | 0 ...ts_in_docker.py => inline_scripts_in_docker.py} | 0 ...re_commit_insert_extras.py => insert_extras.py} | 4 +- .../{pre_commit_json_schema.py => json_schema.py} | 4 +- .../{pre_commit_kubeconform.py => kubeconform.py} | 2 +- ...ommit_lint_dockerfile.py => lint_dockerfile.py} | 0 ...mit_local_yml_mounts.py => local_yml_mounts.py} | 0 ...gration_reference.py => migration_reference.py} | 0 .../ci/pre_commit/{pre_commit_mypy.py => mypy.py} | 0 .../{pre_commit_mypy_folder.py => mypy_folder.py} | 0 ...ession.py => new_session_in_provide_session.py} | 0 ...re_commit_newsfragments.py => newsfragments.py} | 0 ...bad_characters.py => replace_bad_characters.py} | 2 +- .../{pre_commit_ruff_format.py => ruff_format.py} | 0 ...mit_sort_in_the_wild.py => sort_in_the_wild.py} | 0 ...ed_providers.py => sort_installed_providers.py} | 0 ...lling_wordlist.py => sort_spelling_wordlist.py} | 0 ...supported_versions.py => supported_versions.py} | 0 ...nc_init_decorator.py => sync_init_decorator.py} | 0 ...xt_key_sync.py => template_context_key_sync.py} | 0 ...t_unittest_testcase.py => unittest_testcase.py} | 0 ...te_black_version.py => update_black_version.py} | 0 ...config_hash.py => update_breeze_config_hash.py} | 0 ...ependencies.py => update_build_dependencies.py} | 0 ...ependencies.py => update_chart_dependencies.py} | 4 +- ...api_stubs.py => update_common_sql_api_stubs.py} | 0 ...t_update_er_diagram.py => update_er_diagram.py} | 0 ..._dags_paths.py => update_example_dags_paths.py} | 0 ...t_update_installers.py => update_installers.py} | 0 ...dencies.py => update_providers_dependencies.py} | 2 + ...sum => update_providers_dependencies.py.md5sum} | 0 ...e_date_epoch.py => update_source_date_epoch.py} | 0 ...ommit_update_versions.py => update_versions.py} | 2 +- ...perators_init.py => validate_operators_init.py} | 0 ...8s_json_schema.py => vendor_k8s_json_schema.py} | 0 ...t_version_heads_map.py => version_heads_map.py} | 2 +- .../{pre_commit_www_lint.py => www_lint.py} | 0 scripts/docker/install_additional_dependencies.sh | 3 +- scripts/docker/install_airflow.sh | 6 +- scripts/docker/install_mysql.sh | 1 - .../in_container/run_provider_yaml_files_check.py | 14 +- .../in_container/update_quarantined_test_status.py | 4 +- scripts/tools/check_if_limited_dependencies.py | 2 +- scripts/tools/list-integrations.py | 2 +- tests/always/test_project_structure.py | 2 + tests/always/test_providers_manager.py | 71 ++ .../endpoints/test_event_log_endpoint.py | 18 +- tests/api_experimental/common/test_mark_tasks.py | 18 +- tests/cli/commands/test_dag_command.py | 35 +- tests/cli/commands/test_internal_api_command.py | 2 + tests/conftest.py | 118 +- tests/dag_processing/test_processor.py | 115 +- tests/deprecations_ignore.yml | 1076 +++++++++++++++++ tests/jobs/test_backfill_job.py | 8 +- tests/models/test_taskinstance.py | 14 + .../aws/executors/batch/test_batch_executor.py | 17 +- .../amazon/aws/executors/ecs/test_ecs_executor.py | 207 ++-- tests/providers/amazon/aws/hooks/test_base_aws.py | 8 +- .../providers/amazon/aws/hooks/test_bedrock.py | 14 +- tests/providers/amazon/aws/hooks/test_datasync.py | 7 +- tests/providers/amazon/aws/hooks/test_eks.py | 10 +- .../amazon/aws/hooks/test_redshift_data.py | 3 +- tests/providers/amazon/aws/hooks/test_s3.py | 6 +- .../providers/amazon/aws/operators/test_bedrock.py | 59 + .../amazon/aws/operators/test_emr_serverless.py | 4 +- .../amazon/aws/operators/test_redshift_data.py | 2 +- tests/providers/amazon/aws/sensors/test_glacier.py | 2 +- tests/providers/amazon/aws/sensors/test_glue.py | 12 +- .../amazon/aws/sensors/test_lambda_function.py | 7 +- .../amazon/aws/system/utils/test_helpers.py | 4 +- .../amazon/aws/transfers/test_redshift_to_s3.py | 16 +- tests/providers/amazon/aws/triggers/test_ecs.py | 7 +- tests/providers/amazon/aws/waiters/test_neptune.py | 8 +- tests/providers/apache/hive/hooks/test_hive.py | 40 + .../cncf/kubernetes/hooks/test_kubernetes.py | 57 + .../cncf/kubernetes/operators/test_job.py | 112 +- .../kubernetes/operators/test_spark_kubernetes.py | 48 + tests/providers/common/io/xcom/test_backend.py | 109 +- .../databricks/operators/test_databricks.py | 34 + .../databricks/triggers/test_databricks.py | 3 + tests/providers/docker/hooks/test_docker.py | 9 + tests/providers/google/cloud/hooks/test_automl.py | 302 +++-- .../test_cloud_storage_transfer_service_async.py | 10 +- .../google/cloud/hooks/test_compute_ssh.py | 56 +- .../google/cloud/hooks/vertex_ai/test_auto_ml.py | 4 + .../cloud/hooks/vertex_ai/test_custom_job.py | 4 + .../google/cloud/hooks/vertex_ai/test_dataset.py | 4 + .../cloud/hooks/vertex_ai/test_endpoint_service.py | 4 + .../cloud/hooks/vertex_ai/test_generative_model.py | 5 + .../vertex_ai/test_hyperparameter_tuning_job.py | 4 + .../cloud/hooks/vertex_ai/test_model_service.py | 4 + .../cloud/hooks/vertex_ai/test_pipeline_job.py | 4 + .../cloud/log/test_stackdriver_task_handler.py | 34 + .../google/cloud/operators/test_automl.py | 640 +++++++++- .../google/cloud/operators/test_bigquery.py | 15 + .../google/cloud/operators/test_vertex_ai.py | 4 + .../operators/vertex_ai/test_generative_model.py | 5 + .../test_cloud_storage_transfer_service.py | 7 +- .../google/cloud/triggers/test_vertex_ai.py | 4 + tests/providers/http/triggers/test_http.py | 17 +- .../microsoft/azure/hooks/test_synapse_pipeline.py | 248 ++-- .../microsoft/azure/operators/test_synapse.py | 2 +- .../providers/openlineage/extractors/test_bash.py | 35 +- .../openlineage/extractors/test_python.py | 33 +- tests/providers/sftp/hooks/test_sftp.py | 13 +- tests/providers/sftp/operators/test_sftp.py | 47 +- tests/providers/sftp/sensors/test_sftp.py | 1 - tests/providers/sftp/triggers/test_sftp.py | 12 +- tests/serialization/test_dag_serialization.py | 4 + tests/system/conftest.py | 9 +- .../system/providers/amazon/aws/example_bedrock.py | 76 ++ .../cncf/kubernetes/example_kubernetes_job.py | 9 +- .../google/cloud/automl/example_automl_dataset.py | 201 ++++ .../google/cloud/automl/example_automl_model.py | 288 +++++ .../example_automl_nl_text_classification.py | 2 + .../automl/example_automl_nl_text_extraction.py | 7 +- .../automl/example_automl_nl_text_sentiment.py | 7 +- .../cloud/automl/example_automl_translation.py | 181 +++ tests/task/task_runner/test_task_runner.py | 4 +- .../ti_deps/deps/test_mapped_task_upstream_dep.py | 496 ++++++++ tests/triggers/test_external_task.py | 153 ++- tests/utils/test_db_cleanup.py | 10 +- tests/utils/test_log_handlers.py | 39 +- tests/utils/test_python_virtualenv.py | 5 + .../www/api/experimental/test_dag_runs_endpoint.py | 8 +- tests/www/views/conftest.py | 12 +- tests/www/views/test_views.py | 2 + tests/www/views/test_views_tasks.py | 7 + 404 files changed, 10092 insertions(+), 3093 deletions(-) create mode 100644 .github/actions/checkout_target_commit/action.yml copy scripts/ci/pre_commit/pre_commit_ruff_format.py => airflow/api_internal/gunicorn_config.py (71%) mode change 100755 => 100644 create mode 100644 airflow/migrations/versions/0140_2_9_0_update_trigger_kwargs_type.py copy airflow/{utils/weight_rule.py => migrations/versions/0141_2_10_0_add_new_executor_field_to_db.py} (56%) copy dev/breeze/src/airflow_breeze/utils/platforms.py => airflow/providers/amazon/aws/hooks/bedrock.py (55%) create mode 100644 airflow/providers/amazon/aws/operators/bedrock.py create mode 100644 airflow/ti_deps/deps/mapped_task_upstream_dep.py create mode 100644 dev/breeze/src/airflow_breeze/utils/uv_utils.py copy airflow/utils/weight_rule.py => dev/breeze/src/airflow_breeze/utils/version_utils.py (58%) create mode 100644 docs/apache-airflow-providers-amazon/operators/bedrock.rst create mode 100644 docs/apache-airflow-providers-google/operators/cloud/automl.rst create mode 100644 docs/apache-airflow/img/audit_log.png create mode 100644 docs/apache-airflow/img/grid_task_details.png create mode 100644 docs/apache-airflow/img/run_types.png delete mode 100644 docs/apache-airflow/img/task_manual_vs_scheduled.png create mode 100644 docs/integration-logos/aws/amazon-bedrock_light...@4x.png create mode 100644 newsfragments/38071.significant.rst rename .github/actions/cleanup-docker/action.yml => scripts/ci/cleanup_docker.sh (79%) mode change 100644 => 100755 rename scripts/ci/pre_commit/{pre_commit_base_operator_partial_arguments.py => base_operator_partial_arguments.py} (100%) rename scripts/ci/pre_commit/{pre_commit_boring_cyborg.py => boring_cyborg.py} (100%) rename scripts/ci/pre_commit/{pre_commit_breeze_cmd_line.py => breeze_cmd_line.py} (100%) rename scripts/ci/pre_commit/{pre_commit_changelog_duplicates.py => changelog_duplicates.py} (100%) rename scripts/ci/pre_commit/{pre_commit_chart_schema.py => chart_schema.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_aiobotocore_optional.py => check_aiobotocore_optional.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_airflow_bug_report_template.py => check_airflow_bug_report_template.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_airflow_k8s_not_used.py => check_airflow_k8s_not_used.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_cncf_k8s_used_for_k8s_executor_only.py => check_cncf_k8s_used_for_k8s_executor_only.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_common_sql_dependency.py => check_common_sql_dependency.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_deferrable_default.py => check_deferrable_default.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_extra_packages_ref.py => check_extra_packages_ref.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_google_re2_imports.py => check_google_re2_imports.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_init_in_tests.py => check_init_in_tests.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_integrations_list.py => check_integrations_list.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_lazy_logging.py => check_lazy_logging.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_license.py => check_license.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_order_dockerfile_extras.py => check_order_dockerfile_extras.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_order_hatch_build.py => check_order_hatch_build.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_pre_commit_hooks.py => check_pre_commit_hooks.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_provider_airflow_compatibility.py => check_provider_airflow_compatibility.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_provider_docs.py => check_provider_docs.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_provider_yaml_files.py => check_provider_yaml_files.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_providers_init.py => check_providers_init.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_providers_subpackages_all_have_init.py => check_providers_subpackages_all_have_init.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_system_tests.py => check_system_tests.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_system_tests_hidden_in_index.py => check_system_tests_hidden_in_index.py} (100%) rename scripts/ci/pre_commit/{pre_commit_check_tests_in_right_folders.py => check_tests_in_right_folders.py} (96%) rename scripts/ci/pre_commit/{pre_commit_checkout_no_credentials.py => checkout_no_credentials.py} (100%) create mode 100755 scripts/ci/pre_commit/compat_cache_on_methods.py rename scripts/ci/pre_commit/{pre_commit_compile_www_assets.py => compile_www_assets.py} (100%) rename scripts/ci/pre_commit/{pre_commit_compile_www_assets_dev.py => compile_www_assets_dev.py} (100%) rename scripts/ci/pre_commit/{pre_commit_decorator_operator_implements_custom_name.py => decorator_operator_implements_custom_name.py} (100%) rename scripts/ci/pre_commit/{pre_commit_docstring_param_type.py => docstring_param_type.py} (100%) rename scripts/ci/pre_commit/{pre_commit_generate_airflow_diagrams.py => generate_airflow_diagrams.py} (100%) rename scripts/ci/pre_commit/{pre_commit_generate_pypi_readme.py => generate_pypi_readme.py} (97%) rename scripts/ci/pre_commit/{pre_commit_helm_lint.py => helm_lint.py} (100%) rename scripts/ci/pre_commit/{pre_commit_inline_scripts_in_docker.py => inline_scripts_in_docker.py} (100%) rename scripts/ci/pre_commit/{pre_commit_insert_extras.py => insert_extras.py} (95%) rename scripts/ci/pre_commit/{pre_commit_json_schema.py => json_schema.py} (97%) rename scripts/ci/pre_commit/{pre_commit_kubeconform.py => kubeconform.py} (95%) rename scripts/ci/pre_commit/{pre_commit_lint_dockerfile.py => lint_dockerfile.py} (100%) rename scripts/ci/pre_commit/{pre_commit_local_yml_mounts.py => local_yml_mounts.py} (100%) rename scripts/ci/pre_commit/{pre_commit_migration_reference.py => migration_reference.py} (100%) rename scripts/ci/pre_commit/{pre_commit_mypy.py => mypy.py} (100%) rename scripts/ci/pre_commit/{pre_commit_mypy_folder.py => mypy_folder.py} (100%) rename scripts/ci/pre_commit/{pre_commit_new_session_in_provide_session.py => new_session_in_provide_session.py} (100%) rename scripts/ci/pre_commit/{pre_commit_newsfragments.py => newsfragments.py} (100%) rename scripts/ci/pre_commit/{pre_commit_replace_bad_characters.py => replace_bad_characters.py} (99%) rename scripts/ci/pre_commit/{pre_commit_ruff_format.py => ruff_format.py} (100%) rename scripts/ci/pre_commit/{pre_commit_sort_in_the_wild.py => sort_in_the_wild.py} (100%) rename scripts/ci/pre_commit/{pre_commit_sort_installed_providers.py => sort_installed_providers.py} (100%) rename scripts/ci/pre_commit/{pre_commit_sort_spelling_wordlist.py => sort_spelling_wordlist.py} (100%) rename scripts/ci/pre_commit/{pre_commit_supported_versions.py => supported_versions.py} (100%) rename scripts/ci/pre_commit/{pre_commit_sync_init_decorator.py => sync_init_decorator.py} (100%) rename scripts/ci/pre_commit/{pre_commit_template_context_key_sync.py => template_context_key_sync.py} (100%) rename scripts/ci/pre_commit/{pre_commit_unittest_testcase.py => unittest_testcase.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_black_version.py => update_black_version.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_breeze_config_hash.py => update_breeze_config_hash.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_build_dependencies.py => update_build_dependencies.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_chart_dependencies.py => update_chart_dependencies.py} (97%) rename scripts/ci/pre_commit/{pre_commit_update_common_sql_api_stubs.py => update_common_sql_api_stubs.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_er_diagram.py => update_er_diagram.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_example_dags_paths.py => update_example_dags_paths.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_installers.py => update_installers.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_providers_dependencies.py => update_providers_dependencies.py} (98%) rename scripts/ci/pre_commit/{pre_commit_update_providers_dependencies.py.md5sum => update_providers_dependencies.py.md5sum} (100%) rename scripts/ci/pre_commit/{pre_commit_update_source_date_epoch.py => update_source_date_epoch.py} (100%) rename scripts/ci/pre_commit/{pre_commit_update_versions.py => update_versions.py} (96%) rename scripts/ci/pre_commit/{pre_commit_validate_operators_init.py => validate_operators_init.py} (100%) rename scripts/ci/pre_commit/{pre_commit_vendor_k8s_json_schema.py => vendor_k8s_json_schema.py} (100%) rename scripts/ci/pre_commit/{pre_commit_version_heads_map.py => version_heads_map.py} (97%) rename scripts/ci/pre_commit/{pre_commit_www_lint.py => www_lint.py} (100%) create mode 100644 tests/deprecations_ignore.yml rename airflow/compat/functools.pyi => tests/providers/amazon/aws/hooks/test_bedrock.py (72%) create mode 100644 tests/providers/amazon/aws/operators/test_bedrock.py create mode 100644 tests/system/providers/amazon/aws/example_bedrock.py create mode 100644 tests/system/providers/google/cloud/automl/example_automl_dataset.py create mode 100644 tests/system/providers/google/cloud/automl/example_automl_model.py create mode 100644 tests/system/providers/google/cloud/automl/example_automl_translation.py create mode 100644 tests/ti_deps/deps/test_mapped_task_upstream_dep.py