This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a change to branch
dependabot/uv/dev/breeze/uv-dependency-updates-978a95c9ac
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard de4a2bc5002 Bump rich-click
add 708777c2059 Update path creation for simulation of SVC checkout in CI
(#61692)
add 4045e045df8 AIP-99: Create common ai provider Skelton (#61561)
add cfed2a87f39 Bump axios from 1.13.2 to 1.13.5 in
/airflow-core/src/airflow/ui (#61694)
add 1aaa87bc624 Make private dag-processing functions look private (#61661)
add 9f250d15ef2 remove N+1 db queries for team names (#61471)
add ff03c74542f Fix Triggerer crashing if Trigger uses builtin print
function (#60258)
add 246a386a986 Fix CloudDataTransferServiceUpdateJobOperator AWS
credential injection for S3 sources (#61611)
add 0a4436c98c0 Return list of GCS URIs from Azure*ToGCS operators (#61048)
add c56b84ce201 Migrate ADLSListOperator from ADLS Gen1 to Gen2 (#61188)
add 734f10e88e8 Fix Gantt chart crash on null task datetime (#61552)
add b8597262c01 Update Stackdriver docstrings to Cloud Monitoring (#61635)
add c02000bb958 Return list of destination URIs from
LocalFilesystemToGCSOperator (#61355)
add c7f48143b32 Update cassandra driver specification for various python
versions (#61685)
add 9a5b225491e Fix deferrable mode in CloudRunExecuteJobOperator (#61546)
add 4e006ad802b Return list of destination URIs from GCSToGCSOperator
(#61320)
add e84abc1b26b Remove to_upstream contract from PartitionMapper (#61706)
add d5b50a56427 Bump axios from 1.13.4 to 1.13.5 in
/providers/edge3/src/airflow/providers/edge3/plugins/www (#61695)
add dcb40503d4f Fix ModuleNotFoundError in kubernetes cleanup cronjob
(#61673)
add f139d6b16eb Specify the mypy hook as part of the error message (#61712)
add c36678f9a5a Add XCom serilizer for pendulum.date.Date (#61176)
add 4ce8fc40a46 Bump rich-click>=1.9.7 (#61708)
add 9a7d314312a Bump rich-click
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 (de4a2bc5002)
\
N -- N -- N
refs/heads/dependabot/uv/dev/breeze/uv-dependency-updates-978a95c9ac
(9a7d314312a)
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/CODEOWNERS | 1 +
.../3-airflow_providers_bug_report.yml | 1 +
.github/boring-cyborg.yml | 3 +
airflow-core/docs/extra-packages-ref.rst | 2 +
.../api_fastapi/core_api/datamodels/tasks.py | 14 +-
.../src/airflow/jobs/scheduler_job_runner.py | 42 +-
airflow-core/src/airflow/partition_mapper/base.py | 10 +-
.../src/airflow/partition_mapper/identity.py | 9 +-
.../airflow/serialization/serialized_objects.py | 52 +-
airflow-core/src/airflow/ui/package.json | 2 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 129 +-
.../airflow/ui/src/layouts/Details/Gantt/utils.ts | 34 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 50 +-
dev/breeze/doc/images/output-commands.svg | 200 +-
dev/breeze/doc/images/output_build-docs.svg | 76 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
dev/breeze/doc/images/output_ci-image.txt | 2 +-
dev/breeze/doc/images/output_ci-image_build.svg | 188 +-
dev/breeze/doc/images/output_ci-image_build.txt | 2 +-
.../images/output_ci-image_export-mount-cache.svg | 10 +-
.../images/output_ci-image_export-mount-cache.txt | 2 +-
.../images/output_ci-image_import-mount-cache.svg | 10 +-
.../images/output_ci-image_import-mount-cache.txt | 2 +-
dev/breeze/doc/images/output_ci-image_load.svg | 68 +-
dev/breeze/doc/images/output_ci-image_load.txt | 2 +-
dev/breeze/doc/images/output_ci-image_pull.svg | 52 +-
dev/breeze/doc/images/output_ci-image_pull.txt | 2 +-
dev/breeze/doc/images/output_ci-image_save.svg | 16 +-
dev/breeze/doc/images/output_ci-image_save.txt | 2 +-
dev/breeze/doc/images/output_ci-image_verify.svg | 54 +-
dev/breeze/doc/images/output_ci-image_verify.txt | 2 +-
dev/breeze/doc/images/output_ci.txt | 2 +-
dev/breeze/doc/images/output_ci_fix-ownership.svg | 4 +-
dev/breeze/doc/images/output_ci_fix-ownership.txt | 2 +-
dev/breeze/doc/images/output_ci_free-space.svg | 4 +-
dev/breeze/doc/images/output_ci_free-space.txt | 2 +-
.../doc/images/output_ci_get-workflow-info.svg | 4 +-
.../doc/images/output_ci_get-workflow-info.txt | 2 +-
dev/breeze/doc/images/output_ci_resource-check.svg | 2 +-
dev/breeze/doc/images/output_ci_resource-check.txt | 2 +-
.../doc/images/output_ci_selective-check.svg | 44 +-
.../doc/images/output_ci_selective-check.txt | 2 +-
dev/breeze/doc/images/output_ci_upgrade.svg | 16 +-
dev/breeze/doc/images/output_ci_upgrade.txt | 2 +-
dev/breeze/doc/images/output_cleanup.svg | 6 +-
dev/breeze/doc/images/output_cleanup.txt | 2 +-
dev/breeze/doc/images/output_doctor.svg | 4 +-
dev/breeze/doc/images/output_doctor.txt | 2 +-
dev/breeze/doc/images/output_down.svg | 6 +-
dev/breeze/doc/images/output_down.txt | 2 +-
dev/breeze/doc/images/output_exec.svg | 2 +-
dev/breeze/doc/images/output_exec.txt | 2 +-
.../doc/images/output_generate-migration-file.svg | 6 +-
.../doc/images/output_generate-migration-file.txt | 2 +-
dev/breeze/doc/images/output_k8s.txt | 2 +-
.../doc/images/output_k8s_build-k8s-image.svg | 60 +-
.../doc/images/output_k8s_build-k8s-image.txt | 2 +-
.../doc/images/output_k8s_configure-cluster.svg | 62 +-
.../doc/images/output_k8s_configure-cluster.txt | 2 +-
.../doc/images/output_k8s_create-cluster.svg | 68 +-
.../doc/images/output_k8s_create-cluster.txt | 2 +-
.../doc/images/output_k8s_delete-cluster.svg | 32 +-
.../doc/images/output_k8s_delete-cluster.txt | 2 +-
.../doc/images/output_k8s_deploy-airflow.svg | 86 +-
.../doc/images/output_k8s_deploy-airflow.txt | 2 +-
dev/breeze/doc/images/output_k8s_dev.svg | 64 +-
dev/breeze/doc/images/output_k8s_dev.txt | 2 +-
dev/breeze/doc/images/output_k8s_k9s.svg | 32 +-
dev/breeze/doc/images/output_k8s_k9s.txt | 2 +-
dev/breeze/doc/images/output_k8s_logs.svg | 32 +-
dev/breeze/doc/images/output_k8s_logs.txt | 2 +-
.../doc/images/output_k8s_run-complete-tests.svg | 90 +-
.../doc/images/output_k8s_run-complete-tests.txt | 2 +-
dev/breeze/doc/images/output_k8s_setup-env.svg | 4 +-
dev/breeze/doc/images/output_k8s_setup-env.txt | 2 +-
dev/breeze/doc/images/output_k8s_shell.svg | 44 +-
dev/breeze/doc/images/output_k8s_shell.txt | 2 +-
dev/breeze/doc/images/output_k8s_status.svg | 38 +-
dev/breeze/doc/images/output_k8s_status.txt | 2 +-
dev/breeze/doc/images/output_k8s_tests.svg | 74 +-
dev/breeze/doc/images/output_k8s_tests.txt | 2 +-
.../doc/images/output_k8s_upload-k8s-image.svg | 58 +-
.../doc/images/output_k8s_upload-k8s-image.txt | 2 +-
dev/breeze/doc/images/output_prod-image.txt | 2 +-
dev/breeze/doc/images/output_prod-image_build.svg | 230 +-
dev/breeze/doc/images/output_prod-image_build.txt | 2 +-
dev/breeze/doc/images/output_prod-image_load.svg | 56 +-
dev/breeze/doc/images/output_prod-image_load.txt | 2 +-
dev/breeze/doc/images/output_prod-image_pull.svg | 52 +-
dev/breeze/doc/images/output_prod-image_pull.txt | 2 +-
dev/breeze/doc/images/output_prod-image_save.svg | 16 +-
dev/breeze/doc/images/output_prod-image_save.txt | 2 +-
dev/breeze/doc/images/output_prod-image_verify.svg | 58 +-
dev/breeze/doc/images/output_prod-image_verify.txt | 2 +-
.../doc/images/output_release-management.txt | 2 +-
...tput_release-management_add-back-references.svg | 20 +-
...tput_release-management_add-back-references.txt | 2 +-
...tput_release-management_check-release-files.svg | 50 +-
...tput_release-management_check-release-files.txt | 2 +-
...ase-management_clean-old-provider-artifacts.svg | 8 +-
...ase-management_clean-old-provider-artifacts.txt | 2 +-
...elease-management_constraints-version-check.svg | 54 +-
...elease-management_constraints-version-check.txt | 2 +-
...tput_release-management_create-minor-branch.svg | 10 +-
...tput_release-management_create-minor-branch.txt | 2 +-
...put_release-management_generate-constraints.svg | 56 +-
...put_release-management_generate-constraints.txt | 2 +-
...ease-management_generate-issue-content-core.svg | 34 +-
...ease-management_generate-issue-content-core.txt | 2 +-
...anagement_generate-issue-content-helm-chart.svg | 34 +-
...anagement_generate-issue-content-helm-chart.txt | 2 +-
...management_generate-issue-content-providers.svg | 30 +-
...management_generate-issue-content-providers.txt | 2 +-
...ease-management_generate-providers-metadata.svg | 60 +-
...ease-management_generate-providers-metadata.txt | 2 +-
...e-management_install-provider-distributions.svg | 180 +-
...e-management_install-provider-distributions.txt | 2 +-
...output_release-management_merge-prod-images.svg | 60 +-
...output_release-management_merge-prod-images.txt | 2 +-
...anagement_prepare-airflow-ctl-distributions.svg | 12 +-
...anagement_prepare-airflow-ctl-distributions.txt | 2 +-
...se-management_prepare-airflow-distributions.svg | 12 +-
...se-management_prepare-airflow-distributions.txt | 2 +-
...lease-management_prepare-helm-chart-package.svg | 28 +-
...lease-management_prepare-helm-chart-package.txt | 2 +-
...lease-management_prepare-helm-chart-tarball.svg | 52 +-
...lease-management_prepare-helm-chart-tarball.txt | 2 +-
...e-management_prepare-provider-distributions.svg | 54 +-
...e-management_prepare-provider-distributions.txt | 2 +-
...e-management_prepare-provider-documentation.svg | 84 +-
...e-management_prepare-provider-documentation.txt | 2 +-
...ut_release-management_prepare-python-client.svg | 42 +-
...ut_release-management_prepare-python-client.txt | 2 +-
.../output_release-management_prepare-tarball.svg | 46 +-
.../output_release-management_prepare-tarball.txt | 2 +-
...e-management_prepare-task-sdk-distributions.svg | 12 +-
...e-management_prepare-task-sdk-distributions.txt | 2 +-
...utput_release-management_publish-docs-to-s3.svg | 50 +-
...utput_release-management_publish-docs-to-s3.txt | 2 +-
.../output_release-management_publish-docs.svg | 58 +-
.../output_release-management_publish-docs.txt | 2 +-
...tput_release-management_release-prod-images.svg | 72 +-
...tput_release-management_release-prod-images.txt | 2 +-
.../output_release-management_start-rc-process.svg | 20 +-
.../output_release-management_start-rc-process.txt | 2 +-
.../output_release-management_start-release.svg | 12 +-
.../output_release-management_start-release.txt | 2 +-
.../output_release-management_tag-providers.svg | 34 +-
.../output_release-management_tag-providers.txt | 2 +-
...utput_release-management_update-constraints.svg | 64 +-
...utput_release-management_update-constraints.txt | 2 +-
...se-management_update-providers-next-version.svg | 2 +-
...se-management_update-providers-next-version.txt | 2 +-
...se-management_verify-provider-distributions.svg | 160 +-
...se-management_verify-provider-distributions.txt | 2 +-
.../output_release-management_verify-rc-by-pmc.svg | 50 +-
.../output_release-management_verify-rc-by-pmc.txt | 2 +-
dev/breeze/doc/images/output_run.svg | 104 +-
dev/breeze/doc/images/output_run.txt | 2 +-
dev/breeze/doc/images/output_sbom.txt | 2 +-
.../output_sbom_build-all-airflow-images.svg | 48 +-
.../output_sbom_build-all-airflow-images.txt | 2 +-
.../output_sbom_export-dependency-information.svg | 66 +-
.../output_sbom_export-dependency-information.txt | 2 +-
...output_sbom_generate-providers-requirements.svg | 84 +-
...output_sbom_generate-providers-requirements.txt | 2 +-
.../images/output_sbom_update-sbom-information.svg | 106 +-
.../images/output_sbom_update-sbom-information.txt | 2 +-
dev/breeze/doc/images/output_setup.txt | 2 +-
.../doc/images/output_setup_autocomplete.svg | 4 +-
.../doc/images/output_setup_autocomplete.txt | 2 +-
.../output_setup_check-all-params-in-groups.svg | 94 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
dev/breeze/doc/images/output_setup_config.svg | 52 +-
dev/breeze/doc/images/output_setup_config.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 78 +-
.../output_setup_regenerate-command-images.txt | 2 +-
.../doc/images/output_setup_self-upgrade.txt | 2 +-
.../output_setup_synchronize-local-mounts.svg | 2 +-
.../output_setup_synchronize-local-mounts.txt | 2 +-
dev/breeze/doc/images/output_setup_version.svg | 2 +-
dev/breeze/doc/images/output_setup_version.txt | 2 +-
dev/breeze/doc/images/output_shell.svg | 406 ++-
dev/breeze/doc/images/output_shell.txt | 2 +-
dev/breeze/doc/images/output_start-airflow.svg | 344 +--
dev/breeze/doc/images/output_start-airflow.txt | 2 +-
dev/breeze/doc/images/output_testing.txt | 2 +-
...utput_testing_airflow-ctl-integration-tests.svg | 40 +-
...utput_testing_airflow-ctl-integration-tests.txt | 2 +-
.../images/output_testing_airflow-ctl-tests.svg | 10 +-
.../images/output_testing_airflow-ctl-tests.txt | 2 +-
.../images/output_testing_airflow-e2e-tests.svg | 38 +-
.../images/output_testing_airflow-e2e-tests.txt | 2 +-
.../output_testing_core-integration-tests.svg | 100 +-
.../output_testing_core-integration-tests.txt | 2 +-
.../doc/images/output_testing_core-tests.svg | 246 +-
.../doc/images/output_testing_core-tests.txt | 2 +-
.../images/output_testing_docker-compose-tests.svg | 36 +-
.../images/output_testing_docker-compose-tests.txt | 2 +-
.../doc/images/output_testing_helm-tests.svg | 60 +-
.../doc/images/output_testing_helm-tests.txt | 2 +-
.../output_testing_providers-integration-tests.svg | 104 +-
.../output_testing_providers-integration-tests.txt | 2 +-
.../doc/images/output_testing_providers-tests.svg | 268 +-
.../doc/images/output_testing_providers-tests.txt | 2 +-
.../output_testing_python-api-client-tests.svg | 80 +-
.../output_testing_python-api-client-tests.txt | 2 +-
.../doc/images/output_testing_system-tests.svg | 162 +-
.../doc/images/output_testing_system-tests.txt | 2 +-
.../output_testing_task-sdk-integration-tests.svg | 50 +-
.../output_testing_task-sdk-integration-tests.txt | 2 +-
.../doc/images/output_testing_task-sdk-tests.svg | 68 +-
.../doc/images/output_testing_task-sdk-tests.txt | 2 +-
.../doc/images/output_testing_ui-e2e-tests.svg | 34 +-
.../doc/images/output_testing_ui-e2e-tests.txt | 2 +-
dev/breeze/doc/images/output_ui.txt | 2 +-
.../output_ui_check-translation-completeness.svg | 6 +-
.../output_ui_check-translation-completeness.txt | 2 +-
dev/breeze/doc/images/output_ui_compile-assets.svg | 8 +-
dev/breeze/doc/images/output_ui_compile-assets.txt | 2 +-
dev/breeze/doc/images/output_workflow-run.txt | 2 +-
.../images/output_workflow-run_publish-docs.svg | 78 +-
.../images/output_workflow-run_publish-docs.txt | 2 +-
dev/breeze/pyproject.toml | 4 +-
.../commands/release_candidate_command.py | 2 +-
dev/breeze/src/airflow_breeze/global_constants.py | 2 +-
dev/breeze/src/airflow_breeze/utils/recording.py | 7 +-
dev/breeze/tests/test_release_candidate_command.py | 2 +-
dev/breeze/uv.lock | 2 +-
dev/prepare_bulk_issues.py | 2 +-
dev/pyproject.toml | 2 +-
devel-common/pyproject.toml | 4 +-
docs/spelling_wordlist.txt | 1 +
providers/apache/cassandra/docs/index.rst | 10 +-
providers/apache/cassandra/pyproject.toml | 8 +-
.../cncf/kubernetes/cli/kubernetes_command.py | 8 +-
LICENSE => providers/common/ai/LICENSE | 0
NOTICE => providers/common/ai/NOTICE | 0
providers/common/{messaging => ai}/README.rst | 32 +-
.../docs/.latest-doc-only-change.txt | 0
.../common/ai/docs/changelog.rst | 22 +-
providers/{grpc => common/ai}/docs/commits.rst | 7 +-
providers/{celery => common/ai}/docs/conf.py | 2 +-
providers/common/{messaging => ai}/docs/index.rst | 35 +-
.../ai}/docs/installing-providers-from-sources.rst | 0
.../{apache/beam => common/ai}/docs/security.rst | 0
.../http.yaml => common/ai/provider.yaml} | 17 +-
providers/{git => common/ai}/pyproject.toml | 19 +-
.../{airbyte => common/ai}/src/airflow/__init__.py | 1 +
.../ai/src/airflow/providers}/__init__.py | 1 +
.../ai/src/airflow/providers/common}/__init__.py | 1 +
.../src/airflow/providers/common/ai}/__init__.py | 4 +-
.../providers/common/ai}/get_provider_info.py | 6 +-
providers/{airbyte => common/ai}/tests/conftest.py | 0
.../airflow => common/ai/tests/system}/__init__.py | 1 +
.../ai/tests/system/common}/__init__.py | 1 +
.../common/ai/tests/system/common/ai}/__init__.py | 0
.../airflow => common/ai/tests/unit}/__init__.py | 1 +
.../ai/tests/unit/common}/__init__.py | 1 +
.../common/ai/tests/unit/common/ai}/__init__.py | 0
.../common/ai/tests/unit/common/ai/test_empty.py | 7 +-
.../providers/edge3/plugins/www/dist/main.umd.cjs | 16 +-
.../providers/edge3/plugins/www/package.json | 31 +-
.../providers/edge3/plugins/www/pnpm-lock.yaml | 2654 ++++++++++----------
providers/edge3/www-hash.txt | 2 +-
.../google/docs/operators/cloud/cloud_run.rst | 27 +
.../cloud/cloud_storage_transfer_service.rst | 27 +-
providers/google/pyproject.toml | 2 +-
.../providers/google/cloud/hooks/cloud_run.py | 42 +-
.../providers/google/cloud/links/stackdriver.py | 6 +-
.../operators/cloud_storage_transfer_service.py | 23 +-
.../google/cloud/transfers/adls_to_gcs.py | 20 +-
.../google/cloud/transfers/azure_blob_to_gcs.py | 24 +-
.../cloud/transfers/azure_fileshare_to_gcs.py | 21 +-
.../providers/google/cloud/transfers/gcs_to_gcs.py | 67 +-
.../google/cloud/transfers/local_to_gcs.py | 17 +-
.../providers/google/cloud/triggers/cloud_run.py | 2 +-
.../cloud/azure/example_azure_fileshare_to_gcs.py | 2 +-
.../google/cloud/cloud_run/example_cloud_run.py | 84 +-
.../example_cloud_storage_transfer_service_aws.py | 29 +
.../unit/google/cloud/hooks/test_cloud_run.py | 78 +-
.../test_cloud_storage_transfer_service.py | 83 +
.../google/cloud/transfers/test_adls_to_gcs.py | 14 +-
.../cloud/transfers/test_azure_blob_to_gcs.py | 17 +-
.../cloud/transfers/test_azure_fileshare_to_gcs.py | 15 +-
.../unit/google/cloud/transfers/test_gcs_to_gcs.py | 62 +
.../google/cloud/transfers/test_local_to_gcs.py | 41 +
.../providers/microsoft/azure/operators/adls.py | 22 +-
.../system/microsoft/azure/example_adls_list.py | 3 +-
.../microsoft/azure/operators/test_adls_list.py | 14 +-
pyproject.toml | 8 +
scripts/ci/docker-compose/remove-sources.yml | 1 +
scripts/ci/docker-compose/tests-sources.yml | 2 +
scripts/ci/prek/mypy_folder.py | 4 +-
.../airflow_shared/logging/percent_formatter.py | 9 +-
.../tests/logging/test_percent_formatter.py | 11 +
.../src/airflow/sdk/serde/serializers/datetime.py | 13 +-
task-sdk/tests/task_sdk/serde/test_serializers.py | 5 +-
298 files changed, 5125 insertions(+), 5320 deletions(-)
copy LICENSE => providers/common/ai/LICENSE (100%)
copy NOTICE => providers/common/ai/NOTICE (100%)
copy providers/common/{messaging => ai}/README.rst (63%)
copy providers/common/{messaging => ai}/docs/.latest-doc-only-change.txt (100%)
copy providers-summary-docs/core-extensions/deprecations.rst =>
providers/common/ai/docs/changelog.rst (56%)
copy providers/{grpc => common/ai}/docs/commits.rst (94%)
copy providers/{celery => common/ai}/docs/conf.py (99%)
copy providers/common/{messaging => ai}/docs/index.rst (73%)
copy providers/{apache/beam =>
common/ai}/docs/installing-providers-from-sources.rst (100%)
copy providers/{apache/beam => common/ai}/docs/security.rst (100%)
copy
providers/{openlineage/tests/unit/openlineage/plugins/openlineage_configs/http.yaml
=> common/ai/provider.yaml} (74%)
copy providers/{git => common/ai}/pyproject.toml (88%)
copy providers/{airbyte => common/ai}/src/airflow/__init__.py (99%)
copy providers/{airbyte/src/airflow =>
common/ai/src/airflow/providers}/__init__.py (99%)
copy providers/{airbyte/src/airflow =>
common/ai/src/airflow/providers/common}/__init__.py (99%)
copy providers/{edge3/src/airflow/providers/edge3 =>
common/ai/src/airflow/providers/common/ai}/__init__.py (91%)
copy providers/{sendgrid/src/airflow/providers/sendgrid =>
common/ai/src/airflow/providers/common/ai}/get_provider_info.py (87%)
copy providers/{airbyte => common/ai}/tests/conftest.py (100%)
copy providers/{airbyte/src/airflow => common/ai/tests/system}/__init__.py
(99%)
copy providers/{airbyte/src/airflow =>
common/ai/tests/system/common}/__init__.py (99%)
copy {airflow-core/src/airflow/_shared =>
providers/common/ai/tests/system/common/ai}/__init__.py (100%)
copy providers/{airbyte/src/airflow => common/ai/tests/unit}/__init__.py (99%)
copy providers/{airbyte/src/airflow =>
common/ai/tests/unit/common}/__init__.py (99%)
copy {airflow-core/src/airflow/_shared =>
providers/common/ai/tests/unit/common/ai}/__init__.py (100%)
copy airflow-ctl/src/airflowctl/__init__.py =>
providers/common/ai/tests/unit/common/ai/test_empty.py (89%)