Skip to content

Commit 49c914e

Browse files
committed
.
1 parent 1883f67 commit 49c914e

File tree

7 files changed

+130
-48
lines changed

7 files changed

+130
-48
lines changed

.github/workflows/test-integrations-aws.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
strategy:
6262
fail-fast: false
6363
matrix:
64-
python-version: ["3.6","3.8"]
64+
python-version: ["3.9"]
6565
# python3.6 reached EOL and is no longer being supported on
6666
# new versions of hosted runners on Github Actions
6767
# ubuntu-20.04 is the last version that supported python3.6

.github/workflows/test-integrations-cloud.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
strategy:
3030
fail-fast: false
3131
matrix:
32-
python-version: ["3.6","3.7","3.8","3.11","3.12","3.13"]
32+
python-version: ["3.6","3.7","3.8","3.10","3.11","3.12","3.13"]
3333
# python3.6 reached EOL and is no longer being supported on
3434
# new versions of hosted runners on Github Actions
3535
# ubuntu-20.04 is the last version that supported python3.6

.github/workflows/test-integrations-flags.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
branches:
99
- master
1010
- release/**
11-
- sentry-sdk-2.0
11+
- potel-base
1212
pull_request:
1313
# Cancel in progress workflows on pull_requests.
1414
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value

scripts/populate_tox/dependencies.py

Lines changed: 101 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
"pytest-aiohttp",
1111
"pytest-asyncio",
1212
],
13+
# XXX anthropic-v{0.16,0.28}: httpx<0.28.0
1314
"anthropic": [
1415
"anthropic",
15-
"httpx", # TODO has an upper bound anthropic-v{0.16,0.28}: httpx<0.28.0
1616
"pytest-asyncio",
1717
],
1818
"ariadne": [
@@ -21,9 +21,9 @@
2121
"flask",
2222
"httpx",
2323
],
24+
# XXX arq-v0.23: pydantic<2
2425
"arq": [
2526
"arq",
26-
"pydantic", # TODO arq-v0.23: pydantic<2
2727
"fakeredis>=2.2.0,<2.8",
2828
"pytest-asyncio",
2929
"async-timeout",
@@ -32,20 +32,19 @@
3232
"asyncpg",
3333
"pytest-asyncio",
3434
],
35-
"aws_lambda": [
36-
"boto3",
35+
"beam": [
36+
"apache-beam",
3737
],
38-
"beam": ["apache-beam"],
3938
"boto3": [
4039
"boto3",
4140
],
4241
"bottle": [
4342
"bottle",
4443
"werkzeug<2.1.0",
4544
],
45+
# XXX {py3.7}-celery: importlib-metadata<5.0
4646
"celery": [
4747
"celery",
48-
"importlib-metadata", # {py3.7}-celery: importlib-metadata<5.0
4948
"newrelic",
5049
"redis",
5150
],
@@ -59,15 +58,31 @@
5958
"cohere": [
6059
"cohere",
6160
],
61+
# XXX
62+
# django: psycopg2-binary
63+
# django-v{1.11,2.0,2.1,2.2,3.0,3.1,3.2}: djangorestframework>=3.0.0,<4.0.0
64+
# django-v{2.0,2.2,3.0,3.2,4.0,4.1,4.2,5.0,5.1}: channels[daphne]
65+
# django-v{2.2,3.0}: six
66+
# django-v{1.11,2.0,2.2,3.0,3.2}: Werkzeug<2.1.0
67+
# django-v{1.11,2.0,2.2,3.0}: pytest-django<4.0
68+
# django-v{3.2,4.0,4.1,4.2,5.0,5.1}: pytest-django
69+
# django-v{4.0,4.1,4.2,5.0,5.1}: djangorestframework
70+
# django-v{4.0,4.1,4.2,5.0,5.1}: pytest-asyncio
71+
# django-v{4.0,4.1,4.2,5.0,5.1}: Werkzeug
72+
# django-latest: djangorestframework
73+
# django-latest: pytest-asyncio
74+
# django-latest: pytest-django
75+
# django-latest: Werkzeug
76+
# django-latest: channels[daphne]
6277
"django": [
6378
"django",
64-
"channels[daphne]", # django-v{2.0,2.2,3.0,3.2,4.0,4.1,4.2,5.0,5.1}: channels[daphne]
65-
"djangorestframework", # django-v{1.11,2.0,2.1,2.2,3.0,3.1,3.2}: djangorestframework>=3.0.0,<4.0.0
79+
"channels[daphne]",
80+
"djangorestframework",
6681
"psycopg2-binary",
6782
"pytest-asyncio",
68-
"pytest-django", # django-v{1.11,2.0,2.2,3.0}: pytest-django<4.0
69-
"six", # django-v{2.2,3.0}: six
70-
"werkzeug", # django-v{1.11,2.0,2.2,3.0,3.2}: Werkzeug<2.1.0
83+
"pytest-django",
84+
"six",
85+
"werkzeug",
7186
],
7287
"dramatiq": [
7388
"dramatiq",
@@ -83,11 +98,13 @@
8398
"pytest-asyncio",
8499
"requests",
85100
],
101+
# XXX
102+
# flask-v{1,2.0}: Werkzeug<2.1.0
103+
# flask-v{1,2.0}: markupsafe<2.1.0
86104
"flask": [
87105
"flask",
88106
"flask-login",
89-
"werkzeug", # flask-v{1,2.0}: Werkzeug<2.1.0
90-
"markupsafe", # flask-v{1,2.0}: markupsafe<2.1.0
107+
"werkzeug",
91108
],
92109
"gql": [
93110
"gql[all]",
@@ -106,6 +123,17 @@
106123
"types-protobuf",
107124
"pytest-asyncio",
108125
],
126+
# XXX
127+
# httpx-v0.16: pytest-httpx==0.10.0
128+
# httpx-v0.18: pytest-httpx==0.12.0
129+
# httpx-v0.20: pytest-httpx==0.14.0
130+
# httpx-v0.22: pytest-httpx==0.19.0
131+
# httpx-v0.23: pytest-httpx==0.21.0
132+
# httpx-v0.24: pytest-httpx==0.22.0
133+
# httpx-v0.25: pytest-httpx==0.25.0
134+
# httpx: pytest-httpx
135+
# anyio is a dep of httpx
136+
# httpx: anyio<4.0.0
109137
"httpx": [
110138
"httpx",
111139
"anyio<4.0.0",
@@ -116,6 +144,19 @@
116144
"huggingface_hub": [
117145
"huggingface_hub",
118146
],
147+
# XXX
148+
# langchain-v0.1: openai~=1.0.0
149+
# langchain-v0.1: langchain~=0.1.11
150+
# langchain-v0.1: tiktoken~=0.6.0
151+
# langchain-v0.1: httpx<0.28.0
152+
# langchain-v0.3: langchain~=0.3.0
153+
# langchain-v0.3: langchain-community
154+
# langchain-v0.3: tiktoken
155+
# langchain-v0.3: openai
156+
# langchain-{latest,notiktoken}: langchain
157+
# langchain-{latest,notiktoken}: langchain-openai
158+
# langchain-{latest,notiktoken}: openai>=1.6.1
159+
# langchain-latest: tiktoken~=0.6.0
119160
"langchain": [
120161
"langchain",
121162
"langchain-community",
@@ -128,17 +169,29 @@
128169
"langchain-openai",
129170
"openai",
130171
],
172+
# litestar-v{2.0,2.6}: httpx<0.28
131173
"litestar": [
132174
"litestar",
133175
"pytest-asyncio",
134176
"python-multipart",
135177
"requests",
136178
"cryptography",
137-
"httpx",
138179
],
139180
"loguru": [
140181
"loguru",
141182
],
183+
# XXX
184+
# openai-v1.0: openai~=1.0.0
185+
# openai-v1.0: tiktoken
186+
# openai-v1.0: httpx<0.28.0
187+
# openai-v1.22: openai~=1.22.0
188+
# openai-v1.22: tiktoken
189+
# openai-v1.22: httpx<0.28.0
190+
# openai-v1.55: openai~=1.55.0
191+
# openai-v1.55: tiktoken
192+
# openai-latest: openai
193+
# openai-latest: tiktoken~=0.6.0
194+
# openai-notiktoken: openai
142195
"openai": [
143196
"openai",
144197
"pytest-asyncio",
@@ -169,34 +222,55 @@
169222
"pyramid",
170223
"werkzeug<2.1.0",
171224
],
225+
# XXX
226+
# quart-v0.16: blinker<1.6
227+
# quart-v0.16: jinja2<3.1.0
228+
# quart-v0.16: Werkzeug<2.1.0
229+
# quart-v0.16: hypercorn<0.15.0
230+
# quart-v0.16: quart~=0.16.0
231+
# quart-v0.19: Werkzeug>=3.0.0
232+
# quart-v0.19: quart~=0.19.0
233+
# {py3.8}-quart: taskgroup==0.0.0a4
172234
"quart": [
173235
"quart",
174236
"quart-auth",
175237
"pytest-asyncio",
176-
"blinker",
177-
"jinja2",
178-
"hypercorn",
179-
"taskgroup",
180238
],
181239
"ray": [
182240
"ray",
183241
],
242+
# XXX
243+
# {py3.6,py3.7}-redis: fakeredis!=2.26.0 # https://github.com/cunla/fakeredis-py/issues/341
184244
"redis": [
185245
"redis",
186-
"fakeredis",
246+
"fakeredis!=1.7.4",
187247
"pytest<8.0.0",
188248
"pytest-asyncio",
189249
],
190250
"redis-py-cluster-legacy": [
191251
"redis-py-cluster",
192252
],
253+
# XXX requests: requests>=2.0
193254
"requests": [
194255
"requests",
195256
],
257+
# XXX
258+
# https://github.com/jamesls/fakeredis/issues/245
259+
# rq-v{0.6}: fakeredis<1.0
260+
# rq-v{0.6}: redis<3.2.2
261+
# rq-v{0.13,1.0,1.5,1.10}: fakeredis>=1.0,<1.7.4
262+
# rq-v{1.15,1.16}: fakeredis
263+
# {py3.6,py3.7}-rq-v{1.15,1.16}: fakeredis!=2.26.0 # https://github.com/cunla/fakeredis-py/issues/341
264+
# rq-latest: fakeredis
265+
# {py3.6,py3.7}-rq-latest: fakeredis!=2.26.0 # https://github.com/cunla/fakeredis-py/issues/341
196266
"rq": [
197267
"rq",
198268
"fakeredis",
199269
],
270+
# XXX
271+
# sanic-v{22,23}: sanic_testing
272+
# sanic-latest: sanic_testing
273+
# {py3.6}-sanic: aiocontextvars==0.2.1
200274
"sanic": [
201275
"sanic",
202276
"websockets<11.0",
@@ -207,6 +281,8 @@
207281
"spark": [
208282
"pyspark",
209283
],
284+
# XXX
285+
# starlette-v{0.19,0.24,0.28,0.32,0.36}: httpx<0.28.0
210286
"starlette": [
211287
"starlette",
212288
"pytest-asyncio",
@@ -234,10 +310,16 @@
234310
"flask",
235311
"httpx",
236312
],
313+
# XXX
314+
# Tornado <6.4.1 is incompatible with Pytest ≥8.2
315+
# See https://github.com/tornadoweb/tornado/pull/3382.
316+
# tornado-{v6.0,v6.2}: pytest<8.2
237317
"tornado": [
238318
"tornado",
239319
"pytest",
240320
],
321+
# XXX
322+
# trytond-v4: werkzeug<1.0
241323
"trytond": [
242324
"trytond",
243325
"werkzeug",

scripts/populate_tox/populate_tox.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
# - allow to specify version dependent dependencies
1818
# - (optional) use a proper version parser for requires_python
1919
# - (optional) order by alphabet, not group then alphabet
20+
# - clean up the hardcoded stuff in tox.ini
21+
# - fix otel (since it only has prereleases)
22+
# - better picking of releases (e.g., if multiple majors, pick from each, etc.)
2023

2124
# Only consider package versions going back this far
2225
CUTOFF = datetime.now() - timedelta(days=365 * 5)
@@ -32,8 +35,6 @@
3235
PYPI_VERSION_URL = "https://pypi.python.org/pypi/{project}/{version}/json"
3336
CLASSIFIER_PREFIX = "Programming Language :: Python :: "
3437

35-
INTEGRATIONS_MIN_VERSIONS = {}
36-
3738
GROUPS = {
3839
"Common": [
3940
"common",
@@ -124,12 +125,13 @@
124125
IGNORE = {
125126
# Do not try auto-generating the tox entries for these. They will be
126127
# hardcoded in tox.ini.
127-
"common",
128-
"gevent",
129128
"asgi",
129+
"aws_lambda",
130130
"cloud_resource_context",
131-
"potel",
131+
"common",
132132
"gcp",
133+
"gevent",
134+
"potel",
133135
}
134136

135137
packages = {}
@@ -394,8 +396,6 @@ def write_tox_file(packages: dict) -> None:
394396
f"The SDK supports Python versions {LOWEST_SUPPORTED_PYTHON_VERSION} to {HIGHEST_SUPPORTED_PYTHON_VERSION}."
395397
)
396398

397-
print(INTEGRATIONS_MIN_VERSIONS)
398-
399399
packages = defaultdict(list)
400400

401401
for group, integrations in GROUPS.items():

scripts/populate_tox/tox.jinja

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ envlist =
3030
# OpenTelemetry Experimental (POTel)
3131
{py3.8,py3.9,py3.10,py3.11,py3.12,py3.13}-potel
3232

33+
# AWS Lambda
34+
# The aws_lambda tests deploy to the real AWS and have their own
35+
# matrix of Python versions to run the test lambda function in.
36+
# see `lambda_runtime` fixture in tests/integrations/aws_lambda.py
37+
{py3.9}-aws_lambda
38+
3339
# === Integrations ===
3440
{% for group, integrations in groups.items() %}
3541
# ~~~ {{ group }} ~~~
@@ -76,6 +82,9 @@ deps =
7682
# OpenTelemetry Experimental (POTel)
7783
potel: -e .[opentelemetry-experimental]
7884
85+
# AWS Lambda
86+
aws_lambda: boto3
87+
7988
# === Integrations ===
8089
{% for group, integrations in groups.items() %}
8190
# ~~~ {{ group }} ~~~

0 commit comments

Comments
 (0)