From 829cbffb3d01f661cb310a8a282917c83ce1ea37 Mon Sep 17 00:00:00 2001 From: Ivana Kellyer Date: Thu, 4 Sep 2025 16:14:18 +0200 Subject: [PATCH 1/4] tests: Move boto3 tests under toxgen --- .github/workflows/test-integrations-cloud.yml | 4 +-- scripts/populate_tox/config.py | 6 ++++ scripts/populate_tox/populate_tox.py | 1 - scripts/populate_tox/tox.jinja | 14 --------- tox.ini | 31 ++++++++++--------- 5 files changed, 24 insertions(+), 32 deletions(-) diff --git a/.github/workflows/test-integrations-cloud.yml b/.github/workflows/test-integrations-cloud.yml index a04d57497a..8688a1d48e 100644 --- a/.github/workflows/test-integrations-cloud.yml +++ b/.github/workflows/test-integrations-cloud.yml @@ -29,7 +29,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8","3.11","3.12","3.13"] + python-version: ["3.8","3.12","3.13"] # python3.6 reached EOL and is no longer being supported on # new versions of hosted runners on Github Actions # ubuntu-20.04 is the last version that supported python3.6 @@ -108,7 +108,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.6","3.7","3.8","3.9","3.11","3.12","3.13"] + python-version: ["3.6","3.7","3.8","3.9","3.10","3.11","3.12","3.13"] # python3.6 reached EOL and is no longer being supported on # new versions of hosted runners on Github Actions # ubuntu-20.04 is the last version that supported python3.6 diff --git a/scripts/populate_tox/config.py b/scripts/populate_tox/config.py index 1dbc78ccf0..55aaa65452 100644 --- a/scripts/populate_tox/config.py +++ b/scripts/populate_tox/config.py @@ -47,6 +47,12 @@ "package": "apache-beam", "python": ">=3.7", }, + "boto3": { + "package": "boto3", + "deps": { + "py3.7,py3.8": ["urllib3<2.0.0"], + }, + }, "bottle": { "package": "bottle", "deps": { diff --git a/scripts/populate_tox/populate_tox.py b/scripts/populate_tox/populate_tox.py index 076a8358f7..12e279d5a4 100644 --- a/scripts/populate_tox/populate_tox.py +++ b/scripts/populate_tox/populate_tox.py @@ -67,7 +67,6 @@ "potel", # Integrations that can be migrated -- we should eventually remove all # of these from the IGNORE list - "boto3", "chalice", "gcp", "httpx", diff --git a/scripts/populate_tox/tox.jinja b/scripts/populate_tox/tox.jinja index 0ad9af8321..e552356323 100755 --- a/scripts/populate_tox/tox.jinja +++ b/scripts/populate_tox/tox.jinja @@ -42,12 +42,6 @@ envlist = # AWS Lambda {py3.8,py3.9,py3.11,py3.13}-aws_lambda - # Boto3 - {py3.6,py3.7}-boto3-v{1.12} - {py3.7,py3.11,py3.12}-boto3-v{1.23} - {py3.11,py3.12}-boto3-v{1.34} - {py3.11,py3.12,py3.13}-boto3-latest - # Chalice {py3.6,py3.9}-chalice-v{1.16} {py3.8,py3.12,py3.13}-chalice-latest @@ -164,12 +158,6 @@ deps = aws_lambda: requests aws_lambda: uvicorn - # Boto3 - boto3-v1.12: boto3~=1.12.0 - boto3-v1.23: boto3~=1.23.0 - boto3-v1.34: boto3~=1.34.0 - boto3-latest: boto3 - # Chalice chalice: pytest-chalice==0.0.5 chalice-v1.16: chalice~=1.16.0 @@ -393,8 +381,6 @@ basepython = linters: python3.12 commands = - {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 - ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1" diff --git a/tox.ini b/tox.ini index 1627cf2458..b61d8f50e8 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ # The file (and all resulting CI YAMLs) then need to be regenerated via # "scripts/generate-test-files.sh". # -# Last generated: 2025-09-04T13:56:54.117272+00:00 +# Last generated: 2025-09-04T14:13:56.642511+00:00 [tox] requires = @@ -42,12 +42,6 @@ envlist = # AWS Lambda {py3.8,py3.9,py3.11,py3.13}-aws_lambda - # Boto3 - {py3.6,py3.7}-boto3-v{1.12} - {py3.7,py3.11,py3.12}-boto3-v{1.23} - {py3.11,py3.12}-boto3-v{1.34} - {py3.11,py3.12,py3.13}-boto3-latest - # Chalice {py3.6,py3.9}-chalice-v{1.16} {py3.8,py3.12,py3.13}-chalice-latest @@ -152,6 +146,13 @@ envlist = {py3.8,py3.12,py3.13}-huggingface_hub-v0.35.0rc0 + # ~~~ Cloud ~~~ + {py3.6,py3.7}-boto3-v1.12.49 + {py3.6,py3.9,py3.10}-boto3-v1.20.54 + {py3.7,py3.11,py3.12}-boto3-v1.28.85 + {py3.9,py3.12,py3.13}-boto3-v1.40.23 + + # ~~~ DBs ~~~ {py3.7,py3.8,py3.9}-asyncpg-v0.23.0 {py3.7,py3.9,py3.10}-asyncpg-v0.25.0 @@ -371,12 +372,6 @@ deps = aws_lambda: requests aws_lambda: uvicorn - # Boto3 - boto3-v1.12: boto3~=1.12.0 - boto3-v1.23: boto3~=1.23.0 - boto3-v1.34: boto3~=1.34.0 - boto3-latest: boto3 - # Chalice chalice: pytest-chalice==0.0.5 chalice-v1.16: chalice~=1.16.0 @@ -539,6 +534,14 @@ deps = huggingface_hub-v0.35.0rc0: huggingface_hub==0.35.0rc0 + # ~~~ Cloud ~~~ + boto3-v1.12.49: boto3==1.12.49 + boto3-v1.20.54: boto3==1.20.54 + boto3-v1.28.85: boto3==1.28.85 + boto3-v1.40.23: boto3==1.40.23 + py3.7,py3.8-boto3: urllib3<2.0.0 + + # ~~~ DBs ~~~ asyncpg-v0.23.0: asyncpg==0.23.0 asyncpg-v0.25.0: asyncpg==0.25.0 @@ -913,8 +916,6 @@ basepython = linters: python3.12 commands = - {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 - ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1" From c1cf3ca2e7880871429860f91a0c534ee8523ac8 Mon Sep 17 00:00:00 2001 From: Ivana Kellyer Date: Thu, 4 Sep 2025 16:50:18 +0200 Subject: [PATCH 2/4] . --- scripts/populate_tox/tox.jinja | 2 ++ tox.ini | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/populate_tox/tox.jinja b/scripts/populate_tox/tox.jinja index e552356323..7f23d1fbc7 100755 --- a/scripts/populate_tox/tox.jinja +++ b/scripts/populate_tox/tox.jinja @@ -381,6 +381,8 @@ basepython = linters: python3.12 commands = + {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 + ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1" diff --git a/tox.ini b/tox.ini index b61d8f50e8..b8deb3bd6a 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ # The file (and all resulting CI YAMLs) then need to be regenerated via # "scripts/generate-test-files.sh". # -# Last generated: 2025-09-04T14:13:56.642511+00:00 +# Last generated: 2025-09-04T14:38:22.828289+00:00 [tox] requires = @@ -916,6 +916,8 @@ basepython = linters: python3.12 commands = + {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 + ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1" From 9144c142a2a2aff7a358b9ce2a6e3fa5095158df Mon Sep 17 00:00:00 2001 From: Ivana Kellyer Date: Fri, 5 Sep 2025 08:40:11 +0200 Subject: [PATCH 3/4] . --- scripts/populate_tox/populate_tox.py | 2 +- scripts/populate_tox/tox.jinja | 2 -- tox.ini | 28 +++++++++++++--------------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/scripts/populate_tox/populate_tox.py b/scripts/populate_tox/populate_tox.py index 12e279d5a4..b8cc988fda 100644 --- a/scripts/populate_tox/populate_tox.py +++ b/scripts/populate_tox/populate_tox.py @@ -438,7 +438,7 @@ def _render_dependencies(integration: str, releases: list[Version]) -> list[str] rendered.append(f"{integration}: {dep}") elif constraint.startswith("py3"): for dep in deps: - rendered.append(f"{constraint}-{integration}: {dep}") + rendered.append(f"{{{constraint}}}-{integration}: {dep}") else: restriction = SpecifierSet(constraint) for release in releases: diff --git a/scripts/populate_tox/tox.jinja b/scripts/populate_tox/tox.jinja index 7f23d1fbc7..e552356323 100755 --- a/scripts/populate_tox/tox.jinja +++ b/scripts/populate_tox/tox.jinja @@ -381,8 +381,6 @@ basepython = linters: python3.12 commands = - {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 - ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1" diff --git a/tox.ini b/tox.ini index b8deb3bd6a..ac67d02fbe 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ # The file (and all resulting CI YAMLs) then need to be regenerated via # "scripts/generate-test-files.sh". # -# Last generated: 2025-09-04T14:38:22.828289+00:00 +# Last generated: 2025-09-05T06:35:53.297690+00:00 [tox] requires = @@ -125,12 +125,12 @@ envlist = {py3.8,py3.11,py3.12}-openai-base-v1.0.1 {py3.8,py3.11,py3.12}-openai-base-v1.36.1 {py3.8,py3.11,py3.12}-openai-base-v1.71.0 - {py3.8,py3.12,py3.13}-openai-base-v1.106.0 + {py3.8,py3.12,py3.13}-openai-base-v1.106.1 {py3.8,py3.11,py3.12}-openai-notiktoken-v1.0.1 {py3.8,py3.11,py3.12}-openai-notiktoken-v1.36.1 {py3.8,py3.11,py3.12}-openai-notiktoken-v1.71.0 - {py3.8,py3.12,py3.13}-openai-notiktoken-v1.106.0 + {py3.8,py3.12,py3.13}-openai-notiktoken-v1.106.1 {py3.9,py3.12,py3.13}-langgraph-v0.6.6 {py3.10,py3.12,py3.13}-langgraph-v1.0.0a2 @@ -150,7 +150,7 @@ envlist = {py3.6,py3.7}-boto3-v1.12.49 {py3.6,py3.9,py3.10}-boto3-v1.20.54 {py3.7,py3.11,py3.12}-boto3-v1.28.85 - {py3.9,py3.12,py3.13}-boto3-v1.40.23 + {py3.9,py3.12,py3.13}-boto3-v1.40.24 # ~~~ DBs ~~~ @@ -505,7 +505,7 @@ deps = openai-base-v1.0.1: openai==1.0.1 openai-base-v1.36.1: openai==1.36.1 openai-base-v1.71.0: openai==1.71.0 - openai-base-v1.106.0: openai==1.106.0 + openai-base-v1.106.1: openai==1.106.1 openai-base: pytest-asyncio openai-base: tiktoken openai-base-v1.0.1: httpx<0.28 @@ -514,7 +514,7 @@ deps = openai-notiktoken-v1.0.1: openai==1.0.1 openai-notiktoken-v1.36.1: openai==1.36.1 openai-notiktoken-v1.71.0: openai==1.71.0 - openai-notiktoken-v1.106.0: openai==1.106.0 + openai-notiktoken-v1.106.1: openai==1.106.1 openai-notiktoken: pytest-asyncio openai-notiktoken-v1.0.1: httpx<0.28 openai-notiktoken-v1.36.1: httpx<0.28 @@ -538,8 +538,8 @@ deps = boto3-v1.12.49: boto3==1.12.49 boto3-v1.20.54: boto3==1.20.54 boto3-v1.28.85: boto3==1.28.85 - boto3-v1.40.23: boto3==1.40.23 - py3.7,py3.8-boto3: urllib3<2.0.0 + boto3-v1.40.24: boto3==1.40.24 + {py3.7,py3.8}-boto3: urllib3<2.0.0 # ~~~ DBs ~~~ @@ -607,7 +607,7 @@ deps = graphene: fastapi graphene: flask graphene: httpx - py3.6-graphene: aiocontextvars + {py3.6}-graphene: aiocontextvars strawberry-v0.209.8: strawberry-graphql[fastapi,flask]==0.209.8 strawberry-v0.233.3: strawberry-graphql[fastapi,flask]==0.233.3 @@ -651,7 +651,7 @@ deps = celery-v5.5.3: celery==5.5.3 celery: newrelic celery: redis - py3.7-celery: importlib-metadata<5.0 + {py3.7}-celery: importlib-metadata<5.0 dramatiq-v1.9.0: dramatiq==1.9.0 dramatiq-v1.12.3: dramatiq==1.12.3 @@ -720,7 +720,7 @@ deps = starlette-v0.16.0: httpx<0.28.0 starlette-v0.26.1: httpx<0.28.0 starlette-v0.36.3: httpx<0.28.0 - py3.6-starlette: aiocontextvars + {py3.6}-starlette: aiocontextvars fastapi-v0.79.1: fastapi==0.79.1 fastapi-v0.91.0: fastapi==0.91.0 @@ -734,7 +734,7 @@ deps = fastapi-v0.79.1: httpx<0.28.0 fastapi-v0.91.0: httpx<0.28.0 fastapi-v0.103.2: httpx<0.28.0 - py3.6-fastapi: aiocontextvars + {py3.6}-fastapi: aiocontextvars # ~~~ Web 2 ~~~ @@ -790,7 +790,7 @@ deps = tornado: pytest tornado-v6.0.4: pytest<8.2 tornado-v6.2: pytest<8.2 - py3.6-tornado: aiocontextvars + {py3.6}-tornado: aiocontextvars # ~~~ Misc ~~~ @@ -916,8 +916,6 @@ basepython = linters: python3.12 commands = - {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 - ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1" From 0d923f63384b1e7a36aca749acc29bce09b21b84 Mon Sep 17 00:00:00 2001 From: Ivana Kellyer Date: Fri, 5 Sep 2025 09:13:00 +0200 Subject: [PATCH 4/4] . --- scripts/populate_tox/tox.jinja | 2 ++ tox.ini | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/populate_tox/tox.jinja b/scripts/populate_tox/tox.jinja index e552356323..7f23d1fbc7 100755 --- a/scripts/populate_tox/tox.jinja +++ b/scripts/populate_tox/tox.jinja @@ -381,6 +381,8 @@ basepython = linters: python3.12 commands = + {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 + ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1" diff --git a/tox.ini b/tox.ini index ac67d02fbe..567a66ce5a 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ # The file (and all resulting CI YAMLs) then need to be regenerated via # "scripts/generate-test-files.sh". # -# Last generated: 2025-09-05T06:35:53.297690+00:00 +# Last generated: 2025-09-05T07:07:00.296971+00:00 [tox] requires = @@ -916,6 +916,8 @@ basepython = linters: python3.12 commands = + {py3.7,py3.8}-boto3: pip install urllib3<2.0.0 + ; https://github.com/pallets/flask/issues/4455 {py3.7,py3.8,py3.9,py3.10,py3.11}-flask-v{1}: pip install "itsdangerous>=0.24,<2.0" "markupsafe<2.0.0" "jinja2<3.1.1"