This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new efbead9fe7 Update min-sqlalchemy version to account for latest
features used (#34293)
efbead9fe7 is described below
commit efbead9fe7462b3634b6d9c842bd9a7ac78a0207
Author: Jarek Potiuk <[email protected]>
AuthorDate: Tue Sep 12 11:49:56 2023 +0200
Update min-sqlalchemy version to account for latest features used (#34293)
Some of the recent sqlalchemy changes are not working with minimum
version of sqlalchemy of ours - for example `where` syntax does
not allow moe than one clause and we are already passing more
in _do_delete_old_records (added in #33527). This syntax however
was added in SQL Alchemy 1.4.28 and our minimum version was
1.4.27.
This change bumps the minimum SQLAlchemy version to 1.4.28 but it also
adds a special test job that only runs on Postgres that downgrades
the SQLAlchemy to the minimum supported version (retrieved from
setup.cfg). This way, we will be able to detect such incompatible
changes at the PR time. This is a new flag `--downgrade-sqlalchemy`
on test command that works similar to earlier `--upgrade-boto`.
We also enable the `--upgrade-boto` and `--downgrade-sqlalchemy` flags
to be used for `breeze shell` command - thanks to that we can
easily test both flags with `breeze shell` command.
---
.github/workflows/ci.yml | 49 ++++++++++++++++++++++
Dockerfile.ci | 23 ++++++----
.../airflow_breeze/commands/developer_commands.py | 8 ++++
.../commands/developer_commands_config.py | 7 ++++
.../airflow_breeze/commands/testing_commands.py | 12 +++---
.../commands/testing_commands_config.py | 1 +
.../src/airflow_breeze/params/shell_params.py | 1 +
.../src/airflow_breeze/utils/common_options.py | 12 ++++++
.../airflow_breeze/utils/docker_command_utils.py | 2 +
images/breeze/output-commands-hash.txt | 6 +--
images/breeze/output_shell.svg | 24 +++++++----
images/breeze/output_testing_tests.svg | 26 +++++++-----
scripts/ci/docker-compose/_docker.env | 1 +
scripts/ci/docker-compose/base.yml | 1 +
scripts/ci/docker-compose/devcontainer.env | 1 +
scripts/docker/entrypoint_ci.sh | 23 ++++++----
setup.cfg | 2 +-
17 files changed, 156 insertions(+), 43 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index df31ab2d38..7a2d6998f0 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1024,6 +1024,55 @@ jobs:
uses: ./.github/actions/post_tests_failure
if: failure()
+ tests-postgres-min-sqlalchemy:
+ timeout-minutes: 130
+ name: >
+ MinSQLAlchemy${{needs.build-info.outputs.default-postgres-version}},
+ Py${{needs.build-info.outputs.default-python-version}}:
+ ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
+ needs: [build-info, wait-for-ci-images]
+ env:
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ PARALLEL_TEST_TYPES:
"${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
+ PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
+ FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
+ DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
+ BACKEND: "postgres"
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
+ PYTHON_VERSION: "${needs.build-info.outputs.default-python-version}}"
+ POSTGRES_VERSION:
"${{needs.build-info.outputs.default-postgres-version}}"
+ BACKEND_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
+ DOWNGRADE_SQLALCHEMY: "true"
+ JOB_ID: >
+
postgres-min-sqlalchemy-${{needs.build-info.outputs.default-python-version}}-
+ ${{needs.build-info.outputs.default-postgres-version}}
+ COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
+ if: needs.build-info.outputs.run-tests == 'true'
+ steps:
+ - name: Cleanup repo
+ shell: bash
+ run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
+ - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+ uses: actions/checkout@v3
+ with:
+ persist-credentials: false
+ - name: >
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: >
+ Tests: ${{needs.build-info.outputs.default-python-version}}:
+ ${{needs.build-info.outputs.parallel-test-types-list-as-string}}
+ run: breeze testing tests --run-in-parallel
+ - name: >
+ Post Tests success:
${{needs.build-info.outputs.default-python-version}}:Boto"
+ uses: ./.github/actions/post_tests_success
+ if: success()
+ - name: >
+ Post Tests failure:
${{needs.build-info.outputs.default-python-version}}:Boto"
+ uses: ./.github/actions/post_tests_failure
+ if: failure()
+
tests-postgres-in-progress-features-disabled:
timeout-minutes: 130
name: >
diff --git a/Dockerfile.ci b/Dockerfile.ci
index 48e626e570..55fc05cc0e 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -949,6 +949,22 @@ fi
rm -f "${AIRFLOW_SOURCES}/pytest.ini"
rm -f "${AIRFLOW_SOURCES}/.coveragerc"
+if [[ ${UPGRADE_BOTO=} == "true" ]]; then
+ echo
+ echo "${COLOR_BLUE}Upgrading boto3, botocore to latest version to run
Amazon tests with them${COLOR_RESET}"
+ echo
+ pip uninstall --root-user-action ignore aiobotocore -y || true
+ pip install --root-user-action ignore --upgrade boto3 botocore
+ pip check
+fi
+if [[ ${DOWNGRADE_SQLALCHEMY=} == "true" ]]; then
+ min_sqlalchemy_version=$(grep "sqlalchemy>=" setup.cfg | sed
"s/.*>=\([0-9\.]*\).*/\1/")
+ echo
+ echo "${COLOR_BLUE}Downgrading sqlalchemy to minimum supported version:
${min_sqlalchemy_version}${COLOR_RESET}"
+ echo
+ pip install --root-user-action ignore
"sqlalchemy==${min_sqlalchemy_version}"
+ pip check
+fi
set +u
if [[ "${RUN_TESTS}" != "true" ]]; then
@@ -1179,13 +1195,6 @@ else
exit 1
fi
fi
-if [[ ${UPGRADE_BOTO=} == "true" ]]; then
- echo
- echo "${COLOR_BLUE}Upgrading boto3, botocore to latest version to run
Amazon tests with them${COLOR_RESET}"
- echo
- pip uninstall aiobotocore -y || true
- pip install --upgrade boto3 botocore
-fi
readonly SELECTED_TESTS CLI_TESTS API_TESTS PROVIDERS_TESTS CORE_TESTS
WWW_TESTS \
ALL_TESTS ALL_PRESELECTED_TESTS
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 21f2852951..60ac45d4cf 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -51,6 +51,7 @@ from airflow_breeze.utils.common_options import (
option_celery_broker,
option_celery_flower,
option_db_reset,
+ option_downgrade_sqlalchemy,
option_dry_run,
option_executor,
option_force_build,
@@ -70,6 +71,7 @@ from airflow_breeze.utils.common_options import (
option_platform_single,
option_postgres_version,
option_python,
+ option_upgrade_boto,
option_use_airflow_version,
option_use_packages_from_dist,
option_verbose,
@@ -161,6 +163,8 @@ class TimerThread(threading.Thread):
@option_image_tag_for_running
@option_max_time
@option_include_mypy_volume
+@option_upgrade_boto
+@option_downgrade_sqlalchemy
@option_verbose
@option_dry_run
@option_github_repository
@@ -196,6 +200,8 @@ def shell(
celery_broker: str,
celery_flower: bool,
extra_args: tuple,
+ upgrade_boto: bool,
+ downgrade_sqlalchemy: bool,
):
"""Enter breeze environment. this is the default command use when no other
is selected."""
if get_verbose() or get_dry_run():
@@ -233,6 +239,8 @@ def shell(
executor=executor,
celery_broker=celery_broker,
celery_flower=celery_flower,
+ upgrade_boto=upgrade_boto,
+ downgrade_sqlalchemy=downgrade_sqlalchemy,
)
sys.exit(result.returncode)
diff --git
a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
index 81c99e793f..9ef4f8ca96 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
@@ -99,6 +99,13 @@ DEVELOPER_PARAMETERS: dict[str, list[dict[str, str |
list[str]]]] = {
"--package-format",
],
},
+ {
+ "name": "Upgrading/downgrading selected packages",
+ "options": [
+ "--upgrade-boto",
+ "--downgrade-sqlalchemy",
+ ],
+ },
],
"breeze compile-www-assets": [
{
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index ee3b445cb3..b5d09c944b 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -38,6 +38,7 @@ from airflow_breeze.utils.common_options import (
option_backend,
option_db_reset,
option_debug_resources,
+ option_downgrade_sqlalchemy,
option_dry_run,
option_github_repository,
option_image_name,
@@ -52,6 +53,7 @@ from airflow_breeze.utils.common_options import (
option_python,
option_run_in_parallel,
option_skip_cleanup,
+ option_upgrade_boto,
option_use_airflow_version,
option_verbose,
)
@@ -359,12 +361,8 @@ def run_tests_in_parallel(
show_default=True,
envvar="PARALLEL_TEST_TYPES",
)
[email protected](
- "--upgrade-boto",
- help="Remove aiobotocore and upgrade botocore and boto to the latest
version.",
- is_flag=True,
- envvar="UPGRADE_BOTO",
-)
+@option_upgrade_boto
+@option_downgrade_sqlalchemy
@click.option(
"--collect-only",
help="Collect tests only, do not run them.",
@@ -408,6 +406,7 @@ def command_for_tests(
mount_sources: str,
extra_pytest_args: tuple,
upgrade_boto: bool,
+ downgrade_sqlalchemy: bool,
collect_only: bool,
remove_arm_packages: bool,
github_repository: str,
@@ -428,6 +427,7 @@ def command_for_tests(
forward_ports=False,
test_type=test_type,
upgrade_boto=upgrade_boto,
+ downgrade_sqlalchemy=downgrade_sqlalchemy,
collect_only=collect_only,
remove_arm_packages=remove_arm_packages,
github_repository=github_repository,
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
index 0c91145b5e..b1913d9f05 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -56,6 +56,7 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str |
list[str]]]] = {
"--use-airflow-version",
"--mount-sources",
"--upgrade-boto",
+ "--downgrade-sqlalchemy",
"--remove-arm-packages",
"--skip-docker-compose-down",
],
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py
b/dev/breeze/src/airflow_breeze/params/shell_params.py
index 99bc8c4d3c..b2240a42c9 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -120,6 +120,7 @@ class ShellParams:
dry_run: bool = False
verbose: bool = False
upgrade_boto: bool = False
+ downgrade_sqlalchemy: bool = False
executor: str = START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS
celery_broker: str = DEFAULT_CELERY_BROKER
celery_flower: bool = False
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py
b/dev/breeze/src/airflow_breeze/utils/common_options.py
index 95a0b46ebe..f443587913 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -623,3 +623,15 @@ option_airflow_site_directory = click.option(
help="Local directory path of cloned airflow-site repo.",
required=True,
)
+option_upgrade_boto = click.option(
+ "--upgrade-boto",
+ help="Remove aiobotocore and upgrade botocore and boto to the latest
version.",
+ is_flag=True,
+ envvar="UPGRADE_BOTO",
+)
+option_downgrade_sqlalchemy = click.option(
+ "--downgrade-sqlalchemy",
+ help="Downgrade SQLAlchemy to minimum supported version.",
+ is_flag=True,
+ envvar="DOWNGRADE_SQLALCHEMY",
+)
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 82527e6710..3dd9b4ffb6 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -596,6 +596,7 @@ def update_expected_environment_variables(env: dict[str,
str]) -> None:
set_value_to_default_if_not_set(env, "TEST_TYPE", "")
set_value_to_default_if_not_set(env, "TEST_TIMEOUT", "60")
set_value_to_default_if_not_set(env, "UPGRADE_BOTO", "false")
+ set_value_to_default_if_not_set(env, "DOWNGRADE_SQLALCHEMY", "false")
set_value_to_default_if_not_set(env, "UPGRADE_TO_NEWER_DEPENDENCIES",
"false")
set_value_to_default_if_not_set(env, "USE_PACKAGES_FROM_DIST", "false")
set_value_to_default_if_not_set(env, "VERBOSE", "false")
@@ -643,6 +644,7 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
"SQLITE_URL": "sqlite_url",
"START_AIRFLOW": "start_airflow",
"UPGRADE_BOTO": "upgrade_boto",
+ "DOWNGRADE_SQLALCHEMY": "downgrade_sqlalchemy",
"USE_AIRFLOW_VERSION": "use_airflow_version",
"USE_PACKAGES_FROM_DIST": "use_packages_from_dist",
"VERSION_SUFFIX_FOR_PYPI": "version_suffix_for_pypi",
diff --git a/images/breeze/output-commands-hash.txt
b/images/breeze/output-commands-hash.txt
index 3d22259a4b..9331ce8e37 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -62,11 +62,11 @@
setup:regenerate-command-images:d5e29ec6acb1a6af7d83772c2962f89d
setup:self-upgrade:4af905a147fcd6670a0e33d3d369a94b
setup:version:be116d90a21c2afe01087f7609774e1e
setup:fd391bab5277ad3aca65987a84144d51
-shell:1462cde6f7e11a73cb42d4eec93c598e
+shell:1d7a1d16c4c9da86a3d8dc19ee698278
start-airflow:d4815dea2cfc0af7038697c1d9a13996
static-checks:19926b8fcea5784b28d4a0d99865363c
testing:docker-compose-tests:fd154a058082fcfda12eb877a9a89338
testing:helm-tests:0669be17b744ba057adbf38681bd8e68
testing:integration-tests:e745af9dd595adaa6f17ef02fbaae3b5
-testing:tests:29da9579379b1d013c02dd6c4471b958
-testing:355a33f1e38298dba301d638d956fb55
+testing:tests:f5b196d717b2099172595063a7a3d0aa
+testing:a9bdfb94a0d08deee7aaf4037cc55a34
diff --git a/images/breeze/output_shell.svg b/images/breeze/output_shell.svg
index e9414eda1e..2fbccea481 100644
--- a/images/breeze/output_shell.svg
+++ b/images/breeze/output_shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1611.6"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1660.3999999999999"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-shell-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1560.6" />
+ <rect x="0" y="0" width="1463.0" height="1609.3999999999999" />
</clipPath>
<clipPath id="breeze-shell-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -234,9 +234,15 @@
<clipPath id="breeze-shell-line-62">
<rect x="0" y="1514.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-shell-line-63">
+ <rect x="0" y="1538.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-shell-line-64">
+ <rect x="0" y="1563.1" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1609.6" rx="8"/><text
class="breeze-shell-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: shell</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1658.4" rx="8"/><text
class="breeze-shell-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: shell</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -305,11 +311,13 @@
</text><text class="breeze-shell-r4" x="0" y="1386.4" textLength="12.2"
clip-path="url(#breeze-shell-line-56)">│</text><text class="breeze-shell-r4"
x="451.4" y="1386.4" textLength="658.8"
clip-path="url(#breeze-shell-line-56)">[default: wheel]                                      </text><text
cl [...]
</text><text class="breeze-shell-r4" x="0" y="1410.8" textLength="1464"
clip-path="url(#breeze-shell-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-shell-r2" x="1464" y="1410.8" textLength="12.2"
clip-path="url(#breeze-shell-line-57)">
</text><text class="breeze-shell-r4" x="0" y="1435.2" textLength="24.4"
clip-path="url(#breeze-shell-line-58)">╭─</text><text class="breeze-shell-r4"
x="24.4" y="1435.2" textLength="195.2"
clip-path="url(#breeze-shell-line-58)"> Common options </text><text
class="breeze-shell-r4" x="219.6" y="1435.2" textLength="1220"
clip-path="url(#breeze-shell-line-58)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
class [...]
-</text><text class="breeze-shell-r4" x="0" y="1459.6" textLength="12.2"
clip-path="url(#breeze-shell-line-59)">│</text><text class="breeze-shell-r5"
x="24.4" y="1459.6" textLength="12.2"
clip-path="url(#breeze-shell-line-59)">-</text><text class="breeze-shell-r5"
x="36.6" y="1459.6" textLength="97.6"
clip-path="url(#breeze-shell-line-59)">-verbose</text><text
class="breeze-shell-r6" x="158.6" y="1459.6" textLength="24.4"
clip-path="url(#breeze-shell-line-59)">-v</text><text class="breeze [...]
-</text><text class="breeze-shell-r4" x="0" y="1484" textLength="12.2"
clip-path="url(#breeze-shell-line-60)">│</text><text class="breeze-shell-r5"
x="24.4" y="1484" textLength="12.2"
clip-path="url(#breeze-shell-line-60)">-</text><text class="breeze-shell-r5"
x="36.6" y="1484" textLength="48.8"
clip-path="url(#breeze-shell-line-60)">-dry</text><text class="breeze-shell-r5"
x="85.4" y="1484" textLength="48.8"
clip-path="url(#breeze-shell-line-60)">-run</text><text class="breeze-shell-r6"
[...]
-</text><text class="breeze-shell-r4" x="0" y="1508.4" textLength="12.2"
clip-path="url(#breeze-shell-line-61)">│</text><text class="breeze-shell-r5"
x="24.4" y="1508.4" textLength="12.2"
clip-path="url(#breeze-shell-line-61)">-</text><text class="breeze-shell-r5"
x="36.6" y="1508.4" textLength="85.4"
clip-path="url(#breeze-shell-line-61)">-answer</text><text
class="breeze-shell-r6" x="158.6" y="1508.4" textLength="24.4"
clip-path="url(#breeze-shell-line-61)">-a</text><text class="breeze- [...]
-</text><text class="breeze-shell-r4" x="0" y="1532.8" textLength="12.2"
clip-path="url(#breeze-shell-line-62)">│</text><text class="breeze-shell-r5"
x="24.4" y="1532.8" textLength="12.2"
clip-path="url(#breeze-shell-line-62)">-</text><text class="breeze-shell-r5"
x="36.6" y="1532.8" textLength="61"
clip-path="url(#breeze-shell-line-62)">-help</text><text
class="breeze-shell-r6" x="158.6" y="1532.8" textLength="24.4"
clip-path="url(#breeze-shell-line-62)">-h</text><text class="breeze-shel [...]
-</text><text class="breeze-shell-r4" x="0" y="1557.2" textLength="1464"
clip-path="url(#breeze-shell-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-shell-r2" x="1464" y="1557.2" textLength="12.2"
clip-path="url(#breeze-shell-line-63)">
+</text><text class="breeze-shell-r4" x="0" y="1459.6" textLength="12.2"
clip-path="url(#breeze-shell-line-59)">│</text><text class="breeze-shell-r5"
x="24.4" y="1459.6" textLength="12.2"
clip-path="url(#breeze-shell-line-59)">-</text><text class="breeze-shell-r5"
x="36.6" y="1459.6" textLength="97.6"
clip-path="url(#breeze-shell-line-59)">-upgrade</text><text
class="breeze-shell-r5" x="134.2" y="1459.6" textLength="61"
clip-path="url(#breeze-shell-line-59)">-boto</text><text class="breez [...]
+</text><text class="breeze-shell-r4" x="0" y="1484" textLength="12.2"
clip-path="url(#breeze-shell-line-60)">│</text><text class="breeze-shell-r5"
x="24.4" y="1484" textLength="12.2"
clip-path="url(#breeze-shell-line-60)">-</text><text class="breeze-shell-r5"
x="36.6" y="1484" textLength="122"
clip-path="url(#breeze-shell-line-60)">-downgrade</text><text
class="breeze-shell-r5" x="158.6" y="1484" textLength="134.2"
clip-path="url(#breeze-shell-line-60)">-sqlalchemy</text><text class="bre [...]
+</text><text class="breeze-shell-r4" x="0" y="1508.4" textLength="12.2"
clip-path="url(#breeze-shell-line-61)">│</text><text class="breeze-shell-r5"
x="24.4" y="1508.4" textLength="12.2"
clip-path="url(#breeze-shell-line-61)">-</text><text class="breeze-shell-r5"
x="36.6" y="1508.4" textLength="97.6"
clip-path="url(#breeze-shell-line-61)">-verbose</text><text
class="breeze-shell-r6" x="317.2" y="1508.4" textLength="24.4"
clip-path="url(#breeze-shell-line-61)">-v</text><text class="breeze [...]
+</text><text class="breeze-shell-r4" x="0" y="1532.8" textLength="12.2"
clip-path="url(#breeze-shell-line-62)">│</text><text class="breeze-shell-r5"
x="24.4" y="1532.8" textLength="12.2"
clip-path="url(#breeze-shell-line-62)">-</text><text class="breeze-shell-r5"
x="36.6" y="1532.8" textLength="48.8"
clip-path="url(#breeze-shell-line-62)">-dry</text><text class="breeze-shell-r5"
x="85.4" y="1532.8" textLength="48.8"
clip-path="url(#breeze-shell-line-62)">-run</text><text class="breeze-sh [...]
+</text><text class="breeze-shell-r4" x="0" y="1557.2" textLength="12.2"
clip-path="url(#breeze-shell-line-63)">│</text><text class="breeze-shell-r5"
x="24.4" y="1557.2" textLength="12.2"
clip-path="url(#breeze-shell-line-63)">-</text><text class="breeze-shell-r5"
x="36.6" y="1557.2" textLength="85.4"
clip-path="url(#breeze-shell-line-63)">-answer</text><text
class="breeze-shell-r6" x="317.2" y="1557.2" textLength="24.4"
clip-path="url(#breeze-shell-line-63)">-a</text><text class="breeze- [...]
+</text><text class="breeze-shell-r4" x="0" y="1581.6" textLength="12.2"
clip-path="url(#breeze-shell-line-64)">│</text><text class="breeze-shell-r5"
x="24.4" y="1581.6" textLength="12.2"
clip-path="url(#breeze-shell-line-64)">-</text><text class="breeze-shell-r5"
x="36.6" y="1581.6" textLength="61"
clip-path="url(#breeze-shell-line-64)">-help</text><text
class="breeze-shell-r6" x="317.2" y="1581.6" textLength="24.4"
clip-path="url(#breeze-shell-line-64)">-h</text><text class="breeze-shel [...]
+</text><text class="breeze-shell-r4" x="0" y="1606" textLength="1464"
clip-path="url(#breeze-shell-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-shell-r2" x="1464" y="1606" textLength="12.2"
clip-path="url(#breeze-shell-line-65)">
</text>
</g>
</g>
diff --git a/images/breeze/output_testing_tests.svg
b/images/breeze/output_testing_tests.svg
index 1799ff0437..062258fcbc 100644
--- a/images/breeze/output_testing_tests.svg
+++ b/images/breeze/output_testing_tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1465.1999999999998"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1489.6"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-testing-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1414.1999999999998" />
+ <rect x="0" y="0" width="1463.0" height="1438.6" />
</clipPath>
<clipPath id="breeze-testing-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -216,9 +216,12 @@
<clipPath id="breeze-testing-tests-line-56">
<rect x="0" y="1367.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-tests-line-57">
+ <rect x="0" y="1392.3" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1463.2" rx="8"/><text
class="breeze-testing-tests-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: testing tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1487.6" rx="8"/><text
class="breeze-testing-tests-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: testing tests</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -278,14 +281,15 @@
</text><text class="breeze-testing-tests-r4" x="0" y="1166.8"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-47)">│</text><text
class="breeze-testing-tests-r7" x="390.4" y="1166.8" textLength="1049.2"
clip-path="url(#breeze-testing-tests-line-47)">(selected | all | skip | remove)                            &
[...]
</text><text class="breeze-testing-tests-r4" x="0" y="1191.2"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-48)">│</text><text
class="breeze-testing-tests-r4" x="390.4" y="1191.2" textLength="1049.2"
clip-path="url(#breeze-testing-tests-line-48)">[default: selected]                                  
[...]
</text><text class="breeze-testing-tests-r4" x="0" y="1215.6"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1215.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-49)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1215.6" textLength="97.6"
clip-path="url(#breeze-testing-tests-line-49)">-upgrade</text><text
class="breeze-testing-tests-r5" x="134.2" y="1215.6" textLength="61"
clip-path="ur [...]
-</text><text class="breeze-testing-tests-r4" x="0" y="1240" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-50)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1240" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-50)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1240" textLength="85.4"
clip-path="url(#breeze-testing-tests-line-50)">-remove</text><text
class="breeze-testing-tests-r5" x="122" y="1240" textLength="158.6"
clip-path="url(#breez [...]
-</text><text class="breeze-testing-tests-r4" x="0" y="1264.4"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-51)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1264.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-51)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1264.4" textLength="61"
clip-path="url(#breeze-testing-tests-line-51)">-skip</text><text
class="breeze-testing-tests-r5" x="97.6" y="1264.4" textLength="244"
clip-path="url(#br [...]
-</text><text class="breeze-testing-tests-r4" x="0" y="1288.8"
textLength="1464"
clip-path="url(#breeze-testing-tests-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-tests-r2" x="1464" y="1288.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-52)">
-</text><text class="breeze-testing-tests-r4" x="0" y="1313.2"
textLength="24.4" clip-path="url(#breeze-testing-tests-line-53)">╭─</text><text
class="breeze-testing-tests-r4" x="24.4" y="1313.2" textLength="195.2"
clip-path="url(#breeze-testing-tests-line-53)"> Common options </text><text
class="breeze-testing-tests-r4" x="219.6" y="1313.2" textLength="1220"
clip-path="url(#breeze-testing-tests-line-53)">──────────────────────────────────────────────────────────────────────
[...]
-</text><text class="breeze-testing-tests-r4" x="0" y="1337.6"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-54)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1337.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-54)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1337.6" textLength="97.6"
clip-path="url(#breeze-testing-tests-line-54)">-verbose</text><text
class="breeze-testing-tests-r6" x="158.6" y="1337.6" textLength="24.4"
clip-path=" [...]
-</text><text class="breeze-testing-tests-r4" x="0" y="1362" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-55)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1362" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-55)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1362" textLength="48.8"
clip-path="url(#breeze-testing-tests-line-55)">-dry</text><text
class="breeze-testing-tests-r5" x="85.4" y="1362" textLength="48.8"
clip-path="url(#breeze-t [...]
-</text><text class="breeze-testing-tests-r4" x="0" y="1386.4"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-56)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1386.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-56)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1386.4" textLength="61"
clip-path="url(#breeze-testing-tests-line-56)">-help</text><text
class="breeze-testing-tests-r6" x="158.6" y="1386.4" textLength="24.4"
clip-path="url(# [...]
-</text><text class="breeze-testing-tests-r4" x="0" y="1410.8"
textLength="1464"
clip-path="url(#breeze-testing-tests-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-tests-r2" x="1464" y="1410.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-57)">
+</text><text class="breeze-testing-tests-r4" x="0" y="1240" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-50)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1240" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-50)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1240" textLength="122"
clip-path="url(#breeze-testing-tests-line-50)">-downgrade</text><text
class="breeze-testing-tests-r5" x="158.6" y="1240" textLength="134.2"
clip-path="url(#b [...]
+</text><text class="breeze-testing-tests-r4" x="0" y="1264.4"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-51)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1264.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-51)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1264.4" textLength="85.4"
clip-path="url(#breeze-testing-tests-line-51)">-remove</text><text
class="breeze-testing-tests-r5" x="122" y="1264.4" textLength="158.6"
clip-path="ur [...]
+</text><text class="breeze-testing-tests-r4" x="0" y="1288.8"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-52)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1288.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-52)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1288.8" textLength="61"
clip-path="url(#breeze-testing-tests-line-52)">-skip</text><text
class="breeze-testing-tests-r5" x="97.6" y="1288.8" textLength="244"
clip-path="url(#br [...]
+</text><text class="breeze-testing-tests-r4" x="0" y="1313.2"
textLength="1464"
clip-path="url(#breeze-testing-tests-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-tests-r2" x="1464" y="1313.2" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-53)">
+</text><text class="breeze-testing-tests-r4" x="0" y="1337.6"
textLength="24.4" clip-path="url(#breeze-testing-tests-line-54)">╭─</text><text
class="breeze-testing-tests-r4" x="24.4" y="1337.6" textLength="195.2"
clip-path="url(#breeze-testing-tests-line-54)"> Common options </text><text
class="breeze-testing-tests-r4" x="219.6" y="1337.6" textLength="1220"
clip-path="url(#breeze-testing-tests-line-54)">──────────────────────────────────────────────────────────────────────
[...]
+</text><text class="breeze-testing-tests-r4" x="0" y="1362" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-55)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1362" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-55)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1362" textLength="97.6"
clip-path="url(#breeze-testing-tests-line-55)">-verbose</text><text
class="breeze-testing-tests-r6" x="158.6" y="1362" textLength="24.4"
clip-path="url(#bre [...]
+</text><text class="breeze-testing-tests-r4" x="0" y="1386.4"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-56)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1386.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-56)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1386.4" textLength="48.8"
clip-path="url(#breeze-testing-tests-line-56)">-dry</text><text
class="breeze-testing-tests-r5" x="85.4" y="1386.4" textLength="48.8"
clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r4" x="0" y="1410.8"
textLength="12.2" clip-path="url(#breeze-testing-tests-line-57)">│</text><text
class="breeze-testing-tests-r5" x="24.4" y="1410.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-57)">-</text><text
class="breeze-testing-tests-r5" x="36.6" y="1410.8" textLength="61"
clip-path="url(#breeze-testing-tests-line-57)">-help</text><text
class="breeze-testing-tests-r6" x="158.6" y="1410.8" textLength="24.4"
clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r4" x="0" y="1435.2"
textLength="1464"
clip-path="url(#breeze-testing-tests-line-58)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-testing-tests-r2" x="1464" y="1435.2" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-58)">
</text>
</g>
</g>
diff --git a/scripts/ci/docker-compose/_docker.env
b/scripts/ci/docker-compose/_docker.env
index 2cd4bc0f7d..aa21804e9b 100644
--- a/scripts/ci/docker-compose/_docker.env
+++ b/scripts/ci/docker-compose/_docker.env
@@ -75,6 +75,7 @@ TEST_TIMEOUT
TEST_TYPE
UPGRADE_BOTO
UPGRADE_TO_NEWER_DEPENDENCIES
+DOWNGRADE_SQLALCHEMY
VERBOSE
VERBOSE_COMMANDS
VERSION_SUFFIX_FOR_PYPI
diff --git a/scripts/ci/docker-compose/base.yml
b/scripts/ci/docker-compose/base.yml
index 17b2a197c8..1ce740d801 100644
--- a/scripts/ci/docker-compose/base.yml
+++ b/scripts/ci/docker-compose/base.yml
@@ -84,6 +84,7 @@ services:
- TEST_TYPE=${TEST_TYPE}
- TEST_TIMEOUT=${TEST_TIMEOUT}
- UPGRADE_BOTO=${UPGRADE_BOTO}
+ - DOWNGRADE_SQLALCHEMY=${DOWNGRADE_SQLALCHEMY}
- UPGRADE_TO_NEWER_DEPENDENCIES=${UPGRADE_TO_NEWER_DEPENDENCIES}
- VERBOSE=${VERBOSE}
- VERBOSE_COMMANDS=${VERBOSE_COMMANDS}
diff --git a/scripts/ci/docker-compose/devcontainer.env
b/scripts/ci/docker-compose/devcontainer.env
index d66767fa02..f71a0e1e39 100644
--- a/scripts/ci/docker-compose/devcontainer.env
+++ b/scripts/ci/docker-compose/devcontainer.env
@@ -69,6 +69,7 @@ START_AIRFLOW="false"
SUSPENDED_PROVIDERS_FOLDERS=""
TEST_TYPE=
UPGRADE_BOTO="false"
+DOWNGRADE_SQLALCHEMY="false"
UPGRADE_TO_NEWER_DEPENDENCIES="false"
VERBOSE="false"
VERBOSE_COMMANDS="false"
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index 67eb96defc..23ad3c5328 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -328,6 +328,22 @@ fi
rm -f "${AIRFLOW_SOURCES}/pytest.ini"
rm -f "${AIRFLOW_SOURCES}/.coveragerc"
+if [[ ${UPGRADE_BOTO=} == "true" ]]; then
+ echo
+ echo "${COLOR_BLUE}Upgrading boto3, botocore to latest version to run
Amazon tests with them${COLOR_RESET}"
+ echo
+ pip uninstall --root-user-action ignore aiobotocore -y || true
+ pip install --root-user-action ignore --upgrade boto3 botocore
+ pip check
+fi
+if [[ ${DOWNGRADE_SQLALCHEMY=} == "true" ]]; then
+ min_sqlalchemy_version=$(grep "sqlalchemy>=" setup.cfg | sed
"s/.*>=\([0-9\.]*\).*/\1/")
+ echo
+ echo "${COLOR_BLUE}Downgrading sqlalchemy to minimum supported version:
${min_sqlalchemy_version}${COLOR_RESET}"
+ echo
+ pip install --root-user-action ignore
"sqlalchemy==${min_sqlalchemy_version}"
+ pip check
+fi
set +u
# If we do not want to run tests, we simply drop into bash
@@ -561,13 +577,6 @@ else
exit 1
fi
fi
-if [[ ${UPGRADE_BOTO=} == "true" ]]; then
- echo
- echo "${COLOR_BLUE}Upgrading boto3, botocore to latest version to run
Amazon tests with them${COLOR_RESET}"
- echo
- pip uninstall aiobotocore -y || true
- pip install --upgrade boto3 botocore
-fi
readonly SELECTED_TESTS CLI_TESTS API_TESTS PROVIDERS_TESTS CORE_TESTS
WWW_TESTS \
ALL_TESTS ALL_PRESELECTED_TESTS
diff --git a/setup.cfg b/setup.cfg
index 367924d82d..26c8cb2e03 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -142,7 +142,7 @@ install_requires =
# See https://sqlalche.me/e/b8d9 for details of deprecated features
# you can set environment variable SQLALCHEMY_WARN_20=1 to show all
deprecation warnings.
# The issue tracking it is https://github.com/apache/airflow/issues/28723
- sqlalchemy>=1.4.24,<2.0
+ sqlalchemy>=1.4.28,<2.0
sqlalchemy_jsonfield>=1.0
tabulate>=0.7.5
tenacity>=6.2.0,!=8.2.0