From 29b9e8ea10de7a82ad40a7a2160c64a84004a45e Mon Sep 17 00:00:00 2001 From: Jarek Potiuk Date: Sat, 25 Jan 2025 23:27:19 +0100 Subject: [PATCH] move standard, alibaba and common.sql provider to the new structure (#45964) This one also adds some missing steps in provider migration script. improves the output and instructions and make it more robust for various variations of provider features and usage of imports. With those changes `standard` provider was 100% moved automatically. Also common.sql needs to be added in order to migrate standard in order to build production image. Alibaba was added accidentally during demo at dev call so we are committing it as well since it is already migrated. --- .github/actions/install-pre-commit/action.yml | 4 +- .github/boring-cyborg.yml | 18 +- .github/workflows/test-provider-packages.yml | 4 + .pre-commit-config.yaml | 46 ++- Dockerfile | 2 +- Dockerfile.ci | 11 +- airflow/utils/dag_parsing_context.py | 3 +- contributing-docs/08_static_code_checks.rst | 4 +- dev/breeze/doc/ci/02_images.md | 4 +- ...se-management_prepare-task-sdk-package.svg | 30 +- ...se-management_prepare-task-sdk-package.txt | 2 +- .../doc/images/output_static-checks.svg | 18 +- .../doc/images/output_static-checks.txt | 2 +- .../commands/release_management_commands.py | 162 ++++++-- .../release_management_commands_config.py | 1 + .../commands/testing_commands.py | 2 +- .../src/airflow_breeze/global_constants.py | 2 +- .../src/airflow_breeze/params/shell_params.py | 2 +- .../src/airflow_breeze/pre_commit_ids.py | 2 +- .../templates/pyproject_TEMPLATE.toml.jinja2 | 4 +- .../src/airflow_breeze/utils/run_tests.py | 19 +- .../tests/test_pytest_args_for_test_types.py | 11 +- dev/breeze/tests/test_selective_checks.py | 8 +- dev/moving_providers/README.md | 41 +- dev/moving_providers/move_providers.py | 364 +++++++++++++---- docs/.gitignore | 3 + .../changelog.rst | 25 -- .../operators/athena/athena_sql.rst | 4 +- .../operators/redshift/redshift_sql.rst | 2 +- .../changelog.rst | 25 -- .../changelog.rst | 25 -- providers/__init__.py | 9 - .../Airbyte.png | Bin providers/airbyte/provider.yaml | 2 +- providers/airbyte/pyproject.toml | 7 +- .../providers/airbyte/get_provider_info.py | 2 +- .../airbyte/tests/provider_tests/__init__.py | 2 - providers/alibaba/README.rst | 64 +++ .../docs}/.latest-doc-only-change.txt | 0 .../docs/changelog.rst} | 0 .../alibaba/docs}/commits.rst | 0 .../alibaba/docs}/connections/alibaba.rst | 0 .../alibaba/docs}/index.rst | 0 .../installing-providers-from-sources.rst | 0 .../integration-logos}/alibabacloud-oss.png | Bin .../alibaba/docs}/logging/index.rst | 0 .../docs}/logging/oss-task-handler.rst | 0 .../docs}/operators/analyticdb_spark.rst | 2 +- .../alibaba/docs}/operators/index.rst | 0 .../alibaba/docs}/operators/oss.rst | 2 +- .../alibaba/docs}/redirects.txt | 0 .../alibaba/docs}/security.rst | 0 .../providers => }/alibaba/provider.yaml | 8 +- providers/alibaba/pyproject.toml | 80 ++++ .../src/airflow/providers/alibaba/LICENSE | 201 +++++++++ .../src/airflow/providers/alibaba/__init__.py | 0 .../providers/alibaba/cloud/__init__.py | 0 .../providers/alibaba/cloud/hooks/__init__.py | 0 .../alibaba/cloud/hooks/analyticdb_spark.py | 0 .../providers/alibaba/cloud/hooks/oss.py | 0 .../providers/alibaba/cloud/log/__init__.py | 0 .../alibaba/cloud/log/oss_task_handler.py | 0 .../alibaba/cloud/operators/__init__.py | 0 .../cloud/operators/analyticdb_spark.py | 0 .../providers/alibaba/cloud/operators/oss.py | 0 .../alibaba/cloud/sensors/__init__.py | 0 .../alibaba/cloud/sensors/analyticdb_spark.py | 0 .../alibaba/cloud/sensors/oss_key.py | 0 .../providers/alibaba/get_provider_info.py | 120 ++++++ providers/alibaba/tests/conftest.py | 32 ++ .../alibaba/tests/provider_tests/__init__.py | 17 + .../tests/provider_tests/alibaba}/__init__.py | 0 .../provider_tests/alibaba/cloud}/__init__.py | 0 .../alibaba/cloud/hooks}/__init__.py | 0 .../cloud/hooks/test_analyticdb_spark.py | 3 +- .../alibaba/cloud/hooks/test_oss.py | 3 +- .../alibaba/cloud/log}/__init__.py | 0 .../cloud/log/test_oss_task_handler.py | 0 .../alibaba/cloud/operators}/__init__.py | 0 .../cloud/operators/test_analyticdb_spark.py | 0 .../alibaba/cloud/operators/test_oss.py | 0 .../alibaba/cloud/sensors}/__init__.py | 0 .../cloud/sensors/test_analyticdb_spark.py | 0 .../alibaba/cloud/sensors/test_oss_key.py | 0 .../alibaba/cloud/utils}/__init__.py | 0 .../cloud/utils/analyticdb_spark_mock.py | 0 .../alibaba/cloud/utils/oss_mock.py | 0 .../alibaba/cloud/utils/test_utils.py | 0 .../tests/system/alibaba}/__init__.py | 0 .../system/alibaba/example_adb_spark_batch.py | 0 .../system/alibaba/example_adb_spark_sql.py | 0 .../system/alibaba/example_oss_bucket.py | 0 .../system/alibaba/example_oss_object.py | 0 .../iceberg.png | Bin providers/apache/iceberg/provider.yaml | 2 +- providers/apache/iceberg/pyproject.toml | 7 +- .../apache/iceberg/get_provider_info.py | 2 +- .../iceberg/tests/provider_tests/__init__.py | 2 - .../tests/provider_tests/apache/__init__.py | 2 - .../Celery.png | Bin providers/celery/provider.yaml | 2 +- providers/celery/pyproject.toml | 7 +- .../celery/executors/celery_executor_utils.py | 2 +- .../providers/celery/get_provider_info.py | 2 +- .../celery/tests/provider_tests/__init__.py | 2 - providers/common/sql/README.rst | 82 ++++ .../sql/docs}/.latest-doc-only-change.txt | 0 .../sql/docs/changelog.rst} | 2 +- .../common/sql/docs}/commits.rst | 0 .../common/sql/docs}/connections.rst | 0 .../common/sql/docs}/dialects.rst | 0 .../common/sql/docs}/index.rst | 0 .../installing-providers-from-sources.rst | 0 .../sql/docs/integration-logos}/sql.png | Bin .../common/sql/docs}/operators.rst | 8 +- .../common/sql/docs}/security.rst | 0 .../sql/docs}/supported-database-types.rst | 0 .../providers => }/common/sql/provider.yaml | 17 +- providers/common/sql/pyproject.toml | 93 +++++ .../src/airflow/providers/common/sql/LICENSE | 201 +++++++++ .../providers/common/sql/README_API.md | 0 .../airflow/providers/common/sql/__init__.py | 0 .../common/sql/dialects}/__init__.py | 0 .../providers/common/sql/dialects/dialect.py | 0 .../providers/common/sql/dialects/dialect.pyi | 10 +- .../adr/0001-record-architecture-decisions.md | 0 ...-structure-from-dbapihook-derived-hooks.md | 0 ...troduce-notion-of-dialects-in-dbapihook.md | 0 .../providers/common/sql/get_provider_info.py | 109 +++++ .../common/sql/get_provider_info.pyi | 35 ++ .../providers/common/sql/hooks}/__init__.py | 0 .../providers/common/sql/hooks/handlers.py | 0 .../providers/common/sql/hooks/handlers.pyi | 5 +- .../airflow/providers/common/sql/hooks/sql.py | 0 .../providers/common/sql/hooks/sql.pyi | 25 +- .../common/sql/operators}/__init__.py | 0 .../providers/common/sql/operators/sql.py | 3 +- .../providers/common/sql/sensors}/__init__.py | 0 .../providers/common/sql/sensors/sql.py | 0 .../providers/common/sql/sensors/sql.pyi | 8 +- providers/common/sql/tests/conftest.py | 32 ++ .../sql/tests/provider_tests/__init__.py | 17 + .../tests/provider_tests/common/__init__.py | 17 + .../provider_tests/common/sql}/__init__.py | 0 .../common/sql/dialects}/__init__.py | 0 .../common/sql/dialects/test_dialect.py | 0 .../common/sql/hooks}/__init__.py | 0 .../common/sql/hooks/test_dbapi.py | 6 +- .../common/sql/hooks/test_handlers.py | 0 .../common/sql/hooks/test_sql.py | 18 +- .../common/sql/hooks/test_sqlparse.py | 0 .../common/sql/operators}/__init__.py | 0 .../common/sql/operators/test_sql.py | 0 .../common/sql/operators/test_sql_execute.py | 0 .../common/sql/sensors}/__init__.py | 0 .../common/sql/sensors/test_sql.py | 0 .../sql/tests/system/common/sql}/__init__.py | 0 .../sql/example_sql_column_table_check.py | 0 .../common/sql/example_sql_execute_query.py | 0 .../common/sql/example_sql_threshold_check.py | 0 providers/edge/pyproject.toml | 7 +- .../edge/tests/provider_tests/__init__.py | 2 - .../providers/common/sql/operators/sql.pyi | 256 ------------ .../fab/www/extensions/init_jinja_globals.py | 4 +- .../providers/snowflake/hooks/snowflake.py | 2 +- providers/standard/README.rst | 62 +++ .../docs/changelog.rst} | 0 .../standard/docs}/commits.rst | 0 .../standard/docs}/configurations-ref.rst | 0 .../standard/docs}/index.rst | 0 .../installing-providers-from-sources.rst | 0 .../standard/docs}/operators/bash.rst | 0 .../standard/docs}/operators/datetime.rst | 0 .../standard/docs}/operators/index.rst | 0 .../standard/docs}/operators/python.rst | 0 .../standard/docs}/security.rst | 0 .../standard/docs}/sensors/bash.rst | 0 .../standard/docs}/sensors/datetime.rst | 0 .../docs}/sensors/external_task_sensor.rst | 0 .../standard/docs}/sensors/file.rst | 0 .../standard/docs}/sensors/index.rst | 0 .../standard/docs}/sensors/python.rst | 0 .../providers => }/standard/provider.yaml | 4 - providers/standard/pyproject.toml | 78 ++++ .../src/airflow/providers/standard/LICENSE | 201 +++++++++ .../airflow/providers/standard/__init__.py | 0 .../providers/standard/get_provider_info.py | 108 +++++ .../providers/standard}/hooks/__init__.py | 0 .../providers/standard/hooks/filesystem.py | 0 .../providers/standard/hooks/package_index.py | 0 .../providers/standard/hooks/subprocess.py | 0 .../providers/standard}/operators/__init__.py | 0 .../providers/standard/operators/bash.py | 0 .../providers/standard/operators/datetime.py | 0 .../standard/operators/generic_transfer.py | 0 .../standard/operators/latest_only.py | 0 .../providers/standard/operators/python.py | 0 .../standard/operators/trigger_dagrun.py | 0 .../providers/standard/operators/weekday.py | 0 .../providers/standard}/sensors/__init__.py | 0 .../providers/standard/sensors/bash.py | 0 .../providers/standard/sensors/date_time.py | 0 .../standard/sensors/external_task.py | 0 .../providers/standard/sensors/filesystem.py | 0 .../providers/standard/sensors/python.py | 0 .../providers/standard/sensors/time.py | 0 .../providers/standard/sensors/time_delta.py | 0 .../providers/standard/sensors/weekday.py | 0 .../providers/standard/triggers}/__init__.py | 0 .../standard/triggers/external_task.py | 0 .../providers/standard/triggers/file.py | 0 .../providers/standard/triggers/temporal.py | 0 .../providers/standard/utils}/__init__.py | 0 .../standard/utils/python_virtualenv.py | 5 +- .../utils/python_virtualenv_script.jinja2 | 0 .../providers/standard/utils/sensor_helper.py | 0 .../providers/standard/version_compat.py | 0 providers/standard/tests/conftest.py | 32 ++ .../standard/tests/provider_tests/__init__.py | 17 + .../provider_tests/standard}/__init__.py | 0 .../standard/decorators}/__init__.py | 0 .../standard}/decorators/test_python.py | 45 +- .../standard/hooks}/__init__.py | 0 .../standard/hooks/test_filesystem.py | 0 .../standard/hooks/test_package_index.py | 0 .../standard/hooks/test_subprocess.py | 0 .../standard/operators}/__init__.py | 0 .../standard/operators/test_bash.py | 0 .../standard/operators/test_datetime.py | 0 .../operators/test_generic_transfer.py | 0 .../operators/test_latest_only_operator.py | 0 .../standard/operators/test_python.py | 5 +- .../standard/operators/test_weekday.py | 0 .../standard/sensors}/__init__.py | 0 .../standard/sensors/test_bash.py | 0 .../standard/sensors/test_date_time.py | 0 .../standard/sensors/test_python.py | 3 +- .../standard/sensors/test_time.py | 0 .../standard/sensors/test_time_delta.py | 0 .../standard/sensors/test_weekday.py | 0 .../standard/triggers}/__init__.py | 0 .../standard/triggers/test_external_task.py | 0 .../standard/triggers/test_file.py | 0 .../standard/triggers/test_temporal.py | 0 .../provider_tests/standard/utils/__init__.py | 16 + .../standard/utils/test_python_virtualenv.py | 0 providers/tests/__init__.py | 1 + providers/tests/odbc/hooks/test_odbc.py | 64 +-- pyproject.toml | 27 +- .../providers-and-tests-sources.yml | 3 +- scripts/ci/docker-compose/remove-sources.yml | 18 + scripts/ci/docker-compose/tests-sources.yml | 19 +- scripts/ci/install_breeze.sh | 2 +- scripts/ci/kubernetes/k8s_requirements.txt | 1 + .../generate_volumes_for_sources.py | 44 ++ .../pre_commit/update_common_sql_api_stubs.py | 383 ------------------ scripts/docker/entrypoint_ci.sh | 7 - .../install_airflow_and_providers.py | 126 +++++- scripts/in_container/run_fix_ownership.py | 4 +- .../run_prepare_airflow_packages.py | 45 +- .../run_provider_yaml_files_check.py | 73 +++- scripts/tools/setup_breeze | 2 +- tests_common/test_utils/__init__.py | 2 +- .../test_utils/common_sql.py | 2 +- 264 files changed, 2621 insertions(+), 1171 deletions(-) delete mode 100644 docs/apache-airflow-providers-alibaba/changelog.rst delete mode 100644 docs/apache-airflow-providers-common-sql/changelog.rst delete mode 100644 docs/apache-airflow-providers-standard/changelog.rst rename providers/airbyte/docs/{integration-logo => integration-logos}/Airbyte.png (100%) create mode 100644 providers/alibaba/README.rst rename providers/{src/airflow/providers/alibaba => alibaba/docs}/.latest-doc-only-change.txt (100%) rename providers/{src/airflow/providers/alibaba/CHANGELOG.rst => alibaba/docs/changelog.rst} (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/commits.rst (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/connections/alibaba.rst (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/index.rst (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/installing-providers-from-sources.rst (100%) rename {docs/integration-logos/alibaba/cloud => providers/alibaba/docs/integration-logos}/alibabacloud-oss.png (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/logging/index.rst (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/logging/oss-task-handler.rst (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/operators/analyticdb_spark.rst (94%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/operators/index.rst (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/operators/oss.rst (95%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/redirects.txt (100%) rename {docs/apache-airflow-providers-alibaba => providers/alibaba/docs}/security.rst (100%) rename providers/{src/airflow/providers => }/alibaba/provider.yaml (93%) create mode 100644 providers/alibaba/pyproject.toml create mode 100644 providers/alibaba/src/airflow/providers/alibaba/LICENSE rename providers/{ => alibaba}/src/airflow/providers/alibaba/__init__.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/__init__.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/hooks/__init__.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/hooks/analyticdb_spark.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/hooks/oss.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/log/__init__.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/log/oss_task_handler.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/operators/__init__.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/operators/analyticdb_spark.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/operators/oss.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/sensors/__init__.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/sensors/analyticdb_spark.py (100%) rename providers/{ => alibaba}/src/airflow/providers/alibaba/cloud/sensors/oss_key.py (100%) create mode 100644 providers/alibaba/src/airflow/providers/alibaba/get_provider_info.py create mode 100644 providers/alibaba/tests/conftest.py create mode 100644 providers/alibaba/tests/provider_tests/__init__.py rename providers/{src/airflow/providers/common/sql/dialects => alibaba/tests/provider_tests/alibaba}/__init__.py (100%) rename providers/{src/airflow/providers/common/sql/hooks => alibaba/tests/provider_tests/alibaba/cloud}/__init__.py (100%) rename providers/{src/airflow/providers/common/sql/operators => alibaba/tests/provider_tests/alibaba/cloud/hooks}/__init__.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/hooks/test_analyticdb_spark.py (98%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/hooks/test_oss.py (98%) rename providers/{src/airflow/providers/common/sql/sensors => alibaba/tests/provider_tests/alibaba/cloud/log}/__init__.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/log/test_oss_task_handler.py (100%) rename providers/{src/airflow/providers/standard/hooks => alibaba/tests/provider_tests/alibaba/cloud/operators}/__init__.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/operators/test_analyticdb_spark.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/operators/test_oss.py (100%) rename providers/{src/airflow/providers/standard/operators => alibaba/tests/provider_tests/alibaba/cloud/sensors}/__init__.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/sensors/test_analyticdb_spark.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/sensors/test_oss_key.py (100%) rename providers/{src/airflow/providers/standard/sensors => alibaba/tests/provider_tests/alibaba/cloud/utils}/__init__.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/utils/analyticdb_spark_mock.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/utils/oss_mock.py (100%) rename providers/{tests => alibaba/tests/provider_tests}/alibaba/cloud/utils/test_utils.py (100%) rename providers/{src/airflow/providers/standard/triggers => alibaba/tests/system/alibaba}/__init__.py (100%) rename providers/{ => alibaba}/tests/system/alibaba/example_adb_spark_batch.py (100%) rename providers/{ => alibaba}/tests/system/alibaba/example_adb_spark_sql.py (100%) rename providers/{ => alibaba}/tests/system/alibaba/example_oss_bucket.py (100%) rename providers/{ => alibaba}/tests/system/alibaba/example_oss_object.py (100%) rename providers/apache/iceberg/docs/{integration-logo => integration-logos}/iceberg.png (100%) rename providers/celery/docs/{integration-logo => integration-logos}/Celery.png (100%) create mode 100644 providers/common/sql/README.rst rename providers/{src/airflow/providers/common/sql => common/sql/docs}/.latest-doc-only-change.txt (100%) rename providers/{src/airflow/providers/common/sql/CHANGELOG.rst => common/sql/docs/changelog.rst} (99%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/commits.rst (100%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/connections.rst (100%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/dialects.rst (100%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/index.rst (100%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/installing-providers-from-sources.rst (100%) rename {docs/integration-logos/common/sql => providers/common/sql/docs/integration-logos}/sql.png (100%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/operators.rst (94%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/security.rst (100%) rename {docs/apache-airflow-providers-common-sql => providers/common/sql/docs}/supported-database-types.rst (100%) rename providers/{src/airflow/providers => }/common/sql/provider.yaml (80%) create mode 100644 providers/common/sql/pyproject.toml create mode 100644 providers/common/sql/src/airflow/providers/common/sql/LICENSE rename providers/{ => common/sql}/src/airflow/providers/common/sql/README_API.md (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/__init__.py (100%) rename providers/{src/airflow/providers/standard/utils => common/sql/src/airflow/providers/common/sql/dialects}/__init__.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/dialects/dialect.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/dialects/dialect.pyi (95%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/doc/adr/0001-record-architecture-decisions.md (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/doc/adr/0002-return-common-data-structure-from-dbapihook-derived-hooks.md (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/doc/adr/0003-introduce-notion-of-dialects-in-dbapihook.md (100%) create mode 100644 providers/common/sql/src/airflow/providers/common/sql/get_provider_info.py create mode 100644 providers/common/sql/src/airflow/providers/common/sql/get_provider_info.pyi rename providers/{tests/alibaba => common/sql/src/airflow/providers/common/sql/hooks}/__init__.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/hooks/handlers.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/hooks/handlers.pyi (95%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/hooks/sql.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/hooks/sql.pyi (96%) rename providers/{tests/alibaba/cloud => common/sql/src/airflow/providers/common/sql/operators}/__init__.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/operators/sql.py (99%) rename providers/{tests/alibaba/cloud/hooks => common/sql/src/airflow/providers/common/sql/sensors}/__init__.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/sensors/sql.py (100%) rename providers/{ => common/sql}/src/airflow/providers/common/sql/sensors/sql.pyi (94%) create mode 100644 providers/common/sql/tests/conftest.py create mode 100644 providers/common/sql/tests/provider_tests/__init__.py create mode 100644 providers/common/sql/tests/provider_tests/common/__init__.py rename providers/{tests/alibaba/cloud/log => common/sql/tests/provider_tests/common/sql}/__init__.py (100%) rename providers/{tests/alibaba/cloud/operators => common/sql/tests/provider_tests/common/sql/dialects}/__init__.py (100%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/dialects/test_dialect.py (100%) rename providers/{tests/alibaba/cloud/sensors => common/sql/tests/provider_tests/common/sql/hooks}/__init__.py (100%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/hooks/test_dbapi.py (99%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/hooks/test_handlers.py (100%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/hooks/test_sql.py (95%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/hooks/test_sqlparse.py (100%) rename providers/{tests/alibaba/cloud/utils => common/sql/tests/provider_tests/common/sql/operators}/__init__.py (100%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/operators/test_sql.py (100%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/operators/test_sql_execute.py (100%) rename providers/{tests/common/sql => common/sql/tests/provider_tests/common/sql/sensors}/__init__.py (100%) rename providers/{tests => common/sql/tests/provider_tests}/common/sql/sensors/test_sql.py (100%) rename providers/{tests/common/sql/dialects => common/sql/tests/system/common/sql}/__init__.py (100%) rename providers/{ => common/sql}/tests/system/common/sql/example_sql_column_table_check.py (100%) rename providers/{ => common/sql}/tests/system/common/sql/example_sql_execute_query.py (100%) rename providers/{ => common/sql}/tests/system/common/sql/example_sql_threshold_check.py (100%) delete mode 100644 providers/src/airflow/providers/common/sql/operators/sql.pyi create mode 100644 providers/standard/README.rst rename providers/{src/airflow/providers/standard/CHANGELOG.rst => standard/docs/changelog.rst} (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/commits.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/configurations-ref.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/index.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/installing-providers-from-sources.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/operators/bash.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/operators/datetime.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/operators/index.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/operators/python.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/security.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/sensors/bash.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/sensors/datetime.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/sensors/external_task_sensor.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/sensors/file.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/sensors/index.rst (100%) rename {docs/apache-airflow-providers-standard => providers/standard/docs}/sensors/python.rst (100%) rename providers/{src/airflow/providers => }/standard/provider.yaml (97%) create mode 100644 providers/standard/pyproject.toml create mode 100644 providers/standard/src/airflow/providers/standard/LICENSE rename providers/{ => standard}/src/airflow/providers/standard/__init__.py (100%) create mode 100644 providers/standard/src/airflow/providers/standard/get_provider_info.py rename providers/{tests/common/sql => standard/src/airflow/providers/standard}/hooks/__init__.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/hooks/filesystem.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/hooks/package_index.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/hooks/subprocess.py (100%) rename providers/{tests/common/sql => standard/src/airflow/providers/standard}/operators/__init__.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/operators/bash.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/operators/datetime.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/operators/generic_transfer.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/operators/latest_only.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/operators/python.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/operators/trigger_dagrun.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/operators/weekday.py (100%) rename providers/{tests/common/sql => standard/src/airflow/providers/standard}/sensors/__init__.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/bash.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/date_time.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/external_task.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/filesystem.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/python.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/time.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/time_delta.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/sensors/weekday.py (100%) rename providers/{tests/standard => standard/src/airflow/providers/standard/triggers}/__init__.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/triggers/external_task.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/triggers/file.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/triggers/temporal.py (100%) rename providers/{tests/standard/hooks => standard/src/airflow/providers/standard/utils}/__init__.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/utils/python_virtualenv.py (97%) rename providers/{ => standard}/src/airflow/providers/standard/utils/python_virtualenv_script.jinja2 (100%) rename providers/{ => standard}/src/airflow/providers/standard/utils/sensor_helper.py (100%) rename providers/{ => standard}/src/airflow/providers/standard/version_compat.py (100%) create mode 100644 providers/standard/tests/conftest.py create mode 100644 providers/standard/tests/provider_tests/__init__.py rename providers/{tests/standard/operators => standard/tests/provider_tests/standard}/__init__.py (100%) rename providers/{tests/standard/sensors => standard/tests/provider_tests/standard/decorators}/__init__.py (100%) rename {tests => providers/standard/tests/provider_tests/standard}/decorators/test_python.py (96%) rename providers/{tests/standard/triggers => standard/tests/provider_tests/standard/hooks}/__init__.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/hooks/test_filesystem.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/hooks/test_package_index.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/hooks/test_subprocess.py (100%) rename providers/{tests/standard/utils => standard/tests/provider_tests/standard/operators}/__init__.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/operators/test_bash.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/operators/test_datetime.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/operators/test_generic_transfer.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/operators/test_latest_only_operator.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/operators/test_python.py (99%) rename providers/{tests => standard/tests/provider_tests}/standard/operators/test_weekday.py (100%) rename providers/{tests/system/alibaba => standard/tests/provider_tests/standard/sensors}/__init__.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/sensors/test_bash.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/sensors/test_date_time.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/sensors/test_python.py (97%) rename providers/{tests => standard/tests/provider_tests}/standard/sensors/test_time.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/sensors/test_time_delta.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/sensors/test_weekday.py (100%) rename providers/{tests/system/common/sql => standard/tests/provider_tests/standard/triggers}/__init__.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/triggers/test_external_task.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/triggers/test_file.py (100%) rename providers/{tests => standard/tests/provider_tests}/standard/triggers/test_temporal.py (100%) create mode 100644 providers/standard/tests/provider_tests/standard/utils/__init__.py rename providers/{tests => standard/tests/provider_tests}/standard/utils/test_python_virtualenv.py (100%) create mode 100755 scripts/ci/pre_commit/generate_volumes_for_sources.py delete mode 100755 scripts/ci/pre_commit/update_common_sql_api_stubs.py rename providers/tests/common/sql/test_utils.py => tests_common/test_utils/common_sql.py (95%) diff --git a/.github/actions/install-pre-commit/action.yml b/.github/actions/install-pre-commit/action.yml index 30a3367710a92..d2aeecd397470 100644 --- a/.github/actions/install-pre-commit/action.yml +++ b/.github/actions/install-pre-commit/action.yml @@ -24,10 +24,10 @@ inputs: default: "3.9" uv-version: description: 'uv version to use' - default: "0.5.20" # Keep this comment to allow automatic replacement of uv version + default: "0.5.23" # Keep this comment to allow automatic replacement of uv version pre-commit-version: description: 'pre-commit version to use' - default: "4.0.1" # Keep this comment to allow automatic replacement of pre-commit version + default: "4.1.0" # Keep this comment to allow automatic replacement of pre-commit version pre-commit-uv-version: description: 'pre-commit-uv version to use' default: "4.1.4" # Keep this comment to allow automatic replacement of pre-commit-uv version diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml index 2c97219a4e5bd..ddcc4fefaca25 100644 --- a/.github/boring-cyborg.yml +++ b/.github/boring-cyborg.yml @@ -22,10 +22,7 @@ labelPRBasedOnFilePath: - providers/airbyte/** provider:alibaba: - - providers/src/airflow/providers/alibaba/**/* - - docs/apache-airflow-providers-alibaba/**/* - - providers/tests/alibaba/**/* - - providers/tests/system/alibaba/**/* + - providers/alibaba/** provider:amazon: - providers/src/airflow/providers/amazon/**/* @@ -173,15 +170,10 @@ labelPRBasedOnFilePath: - providers/tests/system/common/io/**/* provider:common-sql: - - providers/src/airflow/providers/common/sql/**/* - - docs/apache-airflow-providers-common-sql/**/* - - providers/tests/common/sql/**/* - - providers/tests/system/common/sql/**/* + - providers/common/sql/** provider:standard: - - providers/src/airflow/providers/standard/**/* - - docs/apache-airflow-providers-standard/**/* - - providers/tests/standard/**/* + - providers/standard/** provider:databricks: - providers/src/airflow/providers/databricks/**/* @@ -647,12 +639,12 @@ labelPRBasedOnFilePath: - airflow/cli/commands/local_commands/triggerer_command.py - airflow/jobs/triggerer_job_runner.py - airflow/models/trigger.py - - providers/src/airflow/providers/standard/triggers/**/* + - providers/standard/src/airflow/providers/standard/triggers/**/* - tests/cli/commands/local_commands/test_triggerer_command.py - tests/jobs/test_triggerer_job.py - tests/models/test_trigger.py - tests/jobs/test_triggerer_job_logging.py - - providers/tests/standard/triggers/**/* + - providers/standard/tests/provider_tests/standard/triggers/**/* area:Serialization: - airflow/serialization/**/* diff --git a/.github/workflows/test-provider-packages.yml b/.github/workflows/test-provider-packages.yml index b0912fa6dfe37..7cdeab6be887b 100644 --- a/.github/workflows/test-provider-packages.yml +++ b/.github/workflows/test-provider-packages.yml @@ -109,6 +109,10 @@ jobs: run: > breeze release-management prepare-airflow-package --version-suffix-for-pypi dev0 --package-format ${{ matrix.package-format }} + - name: "Prepare task-sdk package: ${{ matrix.package-format }}" + run: > + breeze release-management prepare-task-sdk-package --version-suffix-for-pypi dev0 + --package-format ${{ matrix.package-format }} - name: "Verify ${{ matrix.package-format }} packages with twine" run: | uv tool uninstall twine || true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8431755955c12..3c04521b32b50 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -180,14 +180,6 @@ repos: additional_dependencies: ['rich>=12.4.4', "ruff==0.8.1"] files: ^providers/src/airflow/providers/.*\.py$ require_serial: true - - id: update-common-sql-api-stubs - name: Check and update common.sql API stubs - entry: ./scripts/ci/pre_commit/update_common_sql_api_stubs.py - language: python - files: ^scripts/ci/pre_commit/update_common_sql_api\.py|^providers/src/airflow/providers/common/sql/.*\.pyi?$ - additional_dependencies: ['rich>=12.4.4', 'mypy==1.9.0', 'black==24.10.0', 'jinja2'] - pass_filenames: false - require_serial: true - id: update-black-version name: Update black versions everywhere (manual) entry: ./scripts/ci/pre_commit/update_black_version.py @@ -475,9 +467,7 @@ repos: language: python files: | (?x) - ^providers/src/airflow/providers/.*\.py$ | - ^providers/src/airflow/providers/.*/provider\.yaml$ | - ^providers/tests/.*\.py$ | + ^providers/.*/provider\.yaml$| ^scripts/ci/pre_commit/update_providers_dependencies\.py$ pass_filenames: false additional_dependencies: ['setuptools', 'rich>=12.4.4', 'pyyaml', 'tomli'] @@ -517,6 +507,14 @@ repos: files: ^docs/.*/diagram_[^/]*\.py$ pass_filenames: true additional_dependencies: ['rich>=12.4.4', "diagrams>=0.23.4"] + - id: generate-volumes-for-sources + name: Generate volumes for docker compose + entry: ./scripts/ci/pre_commit/generate_volumes_for_sources.py + language: python + files: ^providers/.*/provider.yaml$ + pass_filenames: false + require_serial: true + additional_dependencies: ['rich>=12.4.4'] - id: update-supported-versions name: Updates supported versions in documentation entry: ./scripts/ci/pre_commit/supported_versions.py @@ -623,6 +621,8 @@ repos: ^airflow/config_templates/| ^airflow/models/baseoperator.py$| ^airflow/operators/__init__.py$| + ^providers/common/sql/tests/provider_tests/common/sql/operators/test_sql_execute.py$| + ^providers/src/airflow/providers/fab/www/static/css/bootstrap-theme.css$| ^providers/src/airflow/providers/amazon/aws/hooks/emr.py$| ^providers/src/airflow/providers/amazon/aws/operators/emr.py$| ^providers/src/airflow/providers/apache/cassandra/hooks/cassandra.py$| @@ -672,8 +672,11 @@ repos: ^scripts/ci/docker-compose/keycloak/keycloak-entrypoint.sh$| ^tests/| ^providers/tests/| + ^providers/.*/tests/| ^.pre-commit-config\.yaml$| ^.*CHANGELOG\.(rst|txt)$| + ^.*changelog\.(rst|txt)$| + ^.*commits\.(rst|txt)$| ^.*RELEASE_NOTES\.rst$| ^contributing-docs/03_contributors_quick_start.rst$| ^.*\.(png|gif|jp[e]?g|tgz|lock)$| @@ -724,6 +727,8 @@ repos: ^airflow/operators/.*$| ^providers/src/airflow/providers/.*$| ^providers/src/airflow/providers/standard/sensors/.*$| + ^providers/.*/src/airflow/providers/.*$| + ^providers/.*/src/airflow/providers/standard/sensors/.*$| ^dev/provider_packages/.*$ - id: check-base-operator-usage language: pygrep @@ -733,8 +738,9 @@ repos: pass_filenames: true files: > (?x) - ^providers/src/airflow/providers/.*\.py$ - exclude: providers/src/airflow/providers/standard/operators/bash.py|providers/src/airflow/providers/standard/operators/python.py|providers/src/airflow/providers/standard/sensors/external_task.py + ^providers/src/airflow/providers/.*\.py$| + ^providers/.*/src/airflow/providers/.*\.py$ + exclude: providers/standard/.*/.*\.py$ - id: check-get-lineage-collector-providers language: python name: Check providers import hook lineage code from compat @@ -1205,10 +1211,12 @@ repos: ^airflow/utils/file.py$ | ^airflow/utils/helpers.py$ | ^airflow/utils/log/secrets_masker.py$ | - ^providers/src/airflow/providers/ | - ^(providers/)?tests/ | - task_sdk/src/airflow/sdk/definitions/dag.py$ | - task_sdk/src/airflow/sdk/definitions/_internal/node.py$ | + ^providers/ | + ^tests/ | + ^providers/tests/ | + ^providers/.*/tests/ | + ^task_sdk/src/airflow/sdk/definitions/dag.py$ | + ^task_sdk/src/airflow/sdk/definitions/_internal/node.py$ | ^dev/.*\.py$ | ^scripts/.*\.py$ | ^docker_tests/.*$ | @@ -1343,7 +1351,7 @@ repos: name: Run mypy for providers language: python entry: ./scripts/ci/pre_commit/mypy.py --namespace-packages - files: ^providers/src/airflow/providers/.*\.py$|^providers/tests//.*\.py$|^providers/.*/src/.*\.py$|^providers/.*/tests/.*\.py$ + files: ^providers/.*\.py$ require_serial: true additional_dependencies: ['rich>=12.4.4'] - id: mypy-providers @@ -1392,7 +1400,7 @@ repos: name: Validate provider.yaml files entry: ./scripts/ci/pre_commit/check_provider_yaml_files.py language: python - files: ^providers/src/airflow/providers/.*/provider\.yaml$|^providers/.*/src/provider\.yaml$ + files: ^providers/.*/provider\.yaml$ additional_dependencies: ['rich>=12.4.4'] require_serial: true - id: check-template-fields-valid diff --git a/Dockerfile b/Dockerfile index 9b7e8a4391f3e..8c6cf1397ddd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,7 +55,7 @@ ARG PYTHON_BASE_IMAGE="python:3.9-slim-bookworm" # Also use `force pip` label on your PR to swap all places we use `uv` to `pip` ARG AIRFLOW_PIP_VERSION=24.3.1 # ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main" -ARG AIRFLOW_UV_VERSION=0.5.20 +ARG AIRFLOW_UV_VERSION=0.5.23 ARG AIRFLOW_USE_UV="false" ARG UV_HTTP_TIMEOUT="300" ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow" diff --git a/Dockerfile.ci b/Dockerfile.ci index 4e80ff1050abd..fc10f521bed93 100644 --- a/Dockerfile.ci +++ b/Dockerfile.ci @@ -915,13 +915,6 @@ function determine_airflow_to_use() { # Some packages might leave legacy typing module which causes test issues # shellcheck disable=SC2086 ${PACKAGING_TOOL_CMD} uninstall ${EXTRA_UNINSTALL_FLAGS} typing || true - if [[ ${LINK_PROVIDERS_TO_AIRFLOW_PACKAGE=} == "true" ]]; then - echo - echo "${COLOR_BLUE}Linking providers to airflow package as we are using them from mounted sources.${COLOR_RESET}" - echo - rm -rf /usr/local/lib/python${PYTHON_MAJOR_MINOR_VERSION}/site-packages/airflow/providers - ln -s "${AIRFLOW_SOURCES}/providers/src/airflow/providers" "/usr/local/lib/python${PYTHON_MAJOR_MINOR_VERSION}/site-packages/airflow/providers" - fi fi if [[ "${USE_AIRFLOW_VERSION}" =~ ^2\.2\..*|^2\.1\..*|^2\.0\..* && "${AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=}" != "" ]]; then @@ -1268,9 +1261,9 @@ COPY --from=scripts common.sh install_packaging_tools.sh install_additional_depe # Also use `force pip` label on your PR to swap all places we use `uv` to `pip` ARG AIRFLOW_PIP_VERSION=24.3.1 # ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main" -ARG AIRFLOW_UV_VERSION=0.5.20 +ARG AIRFLOW_UV_VERSION=0.5.23 # TODO(potiuk): automate with upgrade check (possibly) -ARG AIRFLOW_PRE_COMMIT_VERSION="4.0.1" +ARG AIRFLOW_PRE_COMMIT_VERSION="4.1.0" ARG AIRFLOW_PRE_COMMIT_UV_VERSION="4.1.4" ENV AIRFLOW_PIP_VERSION=${AIRFLOW_PIP_VERSION} \ diff --git a/airflow/utils/dag_parsing_context.py b/airflow/utils/dag_parsing_context.py index 1ba90097366a5..4c534cea116bd 100644 --- a/airflow/utils/dag_parsing_context.py +++ b/airflow/utils/dag_parsing_context.py @@ -19,6 +19,7 @@ import warnings +from airflow.sdk.definitions._internal.dag_parsing_context import _airflow_parsing_context_manager from airflow.sdk.definitions.context import get_parsing_context # TODO: Remove this module in Airflow 3.2 @@ -30,4 +31,4 @@ stacklevel=2, ) -__all__ = ["get_parsing_context"] +__all__ = ["get_parsing_context", "_airflow_parsing_context_manager"] diff --git a/contributing-docs/08_static_code_checks.rst b/contributing-docs/08_static_code_checks.rst index a0bff418b0762..b8ec98923166f 100644 --- a/contributing-docs/08_static_code_checks.rst +++ b/contributing-docs/08_static_code_checks.rst @@ -280,6 +280,8 @@ require Breeze Docker image to be built locally. +-----------------------------------------------------------+--------------------------------------------------------+---------+ | generate-pypi-readme | Generate PyPI README | | +-----------------------------------------------------------+--------------------------------------------------------+---------+ +| generate-volumes-for-sources | Generate volumes for docker compose | | ++-----------------------------------------------------------+--------------------------------------------------------+---------+ | identity | Print checked files | | +-----------------------------------------------------------+--------------------------------------------------------+---------+ | insert-license | * Add license for all SQL files | | @@ -364,8 +366,6 @@ require Breeze Docker image to be built locally. +-----------------------------------------------------------+--------------------------------------------------------+---------+ | update-chart-dependencies | Update chart dependencies to latest (manual) | | +-----------------------------------------------------------+--------------------------------------------------------+---------+ -| update-common-sql-api-stubs | Check and update common.sql API stubs | | -+-----------------------------------------------------------+--------------------------------------------------------+---------+ | update-er-diagram | Update ER diagram | * | +-----------------------------------------------------------+--------------------------------------------------------+---------+ | update-extras | Update extras in documentation | | diff --git a/dev/breeze/doc/ci/02_images.md b/dev/breeze/doc/ci/02_images.md index 84f71f34c3f1d..1301ad33edfa4 100644 --- a/dev/breeze/doc/ci/02_images.md +++ b/dev/breeze/doc/ci/02_images.md @@ -443,8 +443,8 @@ can be used for CI images: | `ADDITIONAL_DEV_APT_DEPS` | | Additional apt dev dependencies installed in the first part of the image | | `ADDITIONAL_DEV_APT_ENV` | | Additional env variables defined when installing dev deps | | `AIRFLOW_PIP_VERSION` | `24.3.1` | `pip` version used. | -| `AIRFLOW_UV_VERSION` | `0.5.20` | `uv` version used. | -| `AIRFLOW_PRE_COMMIT_VERSION` | `4.0.1` | `pre-commit` version used. | +| `AIRFLOW_UV_VERSION` | `0.5.23` | `uv` version used. | +| `AIRFLOW_PRE_COMMIT_VERSION` | `4.1.0` | `pre-commit` version used. | | `AIRFLOW_PRE_COMMIT_UV_VERSION` | `4.1.4` | `pre-commit-uv` version used. | | `AIRFLOW_USE_UV` | `true` | Whether to use UV for installation. | | `PIP_PROGRESS_BAR` | `on` | Progress bar for PIP installation | diff --git a/dev/breeze/doc/images/output_release-management_prepare-task-sdk-package.svg b/dev/breeze/doc/images/output_release-management_prepare-task-sdk-package.svg index 63bb39a5189e8..3237bf9a944b7 100644 --- a/dev/breeze/doc/images/output_release-management_prepare-task-sdk-package.svg +++ b/dev/breeze/doc/images/output_release-management_prepare-task-sdk-package.svg @@ -1,4 +1,4 @@ - +