Skip to content

Commit 3697471

Browse files
ci: Add tests for deactivating integrations to misc workflow (#5061)
Adds a new tox environment to run the tests for auto-deactivating integrations that result in duplicate spans. The tests in the new environment are run as part of the `Test Misc` workflow.
1 parent 4db7783 commit 3697471

File tree

7 files changed

+85
-61
lines changed

7 files changed

+85
-61
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ jobs:
7474
run: |
7575
set -x # print commands that are executed
7676
./scripts/runtox.sh "py${{ matrix.python-version }}-typer"
77+
- name: Test integration_deactivation
78+
run: |
79+
set -x # print commands that are executed
80+
./scripts/runtox.sh "py${{ matrix.python-version }}-integration_deactivation"
7781
- name: Generate coverage XML (Python 3.6)
7882
if: ${{ !cancelled() && matrix.python-version == '3.6' }}
7983
run: |

scripts/populate_tox/package_dependencies.jsonl

Lines changed: 7 additions & 7 deletions
Large diffs are not rendered by default.

scripts/populate_tox/populate_tox.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"aws_lambda",
6565
"cloud_resource_context",
6666
"common",
67+
"integration_deactivation",
6768
"gcp",
6869
"gevent",
6970
"opentelemetry",

scripts/populate_tox/releases.jsonl

Lines changed: 16 additions & 16 deletions
Large diffs are not rendered by default.

scripts/populate_tox/tox.jinja

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ envlist =
2323
# === Gevent ===
2424
{py3.6,py3.8,py3.10,py3.11,py3.12}-gevent
2525

26+
# === Integration Deactivation ===
27+
{py3.9,py3.10,py3.11,py3.12,py3.13,py3.14}-integration_deactivation
28+
2629
# === Integrations ===
2730

2831
# Asgi
@@ -88,6 +91,11 @@ deps =
8891
{py3.10,py3.11}-gevent: zope.event<5.0.0
8992
{py3.10,py3.11}-gevent: zope.interface<8.0
9093
94+
# === Integration Deactivation ===
95+
integration_deactivation: openai
96+
integration_deactivation: anthropic
97+
integration_deactivation: langchain
98+
9199
# === Integrations ===
92100
93101
# Asgi
@@ -144,6 +152,7 @@ setenv =
144152
# TESTPATH definitions for test suites not managed by toxgen
145153
common: TESTPATH=tests
146154
gevent: TESTPATH=tests
155+
integration_deactivation: TESTPATH=tests/test_ai_integration_deactivation.py
147156
asgi: TESTPATH=tests/integrations/asgi
148157
aws_lambda: TESTPATH=tests/integrations/aws_lambda
149158
cloud_resource_context: TESTPATH=tests/integrations/cloud_resource_context

scripts/split_tox_gh_actions/split_tox_gh_actions.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@
154154
"pure_eval",
155155
"trytond",
156156
"typer",
157+
"integration_deactivation",
157158
],
158159
}
159160

tox.ini

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ envlist =
2323
# === Gevent ===
2424
{py3.6,py3.8,py3.10,py3.11,py3.12}-gevent
2525

26+
# === Integration Deactivation ===
27+
{py3.9,py3.10,py3.11,py3.12,py3.13,py3.14}-integration_deactivation
28+
2629
# === Integrations ===
2730

2831
# Asgi
@@ -60,31 +63,31 @@ envlist =
6063
{py3.9,py3.12,py3.13}-google_genai-v1.29.0
6164
{py3.9,py3.12,py3.13}-google_genai-v1.35.0
6265
{py3.9,py3.12,py3.13}-google_genai-v1.41.0
63-
{py3.9,py3.13,py3.14,py3.14t}-google_genai-v1.46.0
66+
{py3.9,py3.13,py3.14,py3.14t}-google_genai-v1.47.0
6467

6568
{py3.8,py3.10,py3.11}-huggingface_hub-v0.24.7
6669
{py3.8,py3.12,py3.13}-huggingface_hub-v0.36.0
6770
{py3.9,py3.12,py3.13}-huggingface_hub-v1.0.1
6871

6972
{py3.9,py3.11,py3.12}-langchain-base-v0.1.20
7073
{py3.9,py3.12,py3.13}-langchain-base-v0.3.27
71-
{py3.10,py3.13,py3.14}-langchain-base-v1.0.2
74+
{py3.10,py3.13,py3.14}-langchain-base-v1.0.3
7275

7376
{py3.9,py3.11,py3.12}-langchain-notiktoken-v0.1.20
7477
{py3.9,py3.12,py3.13}-langchain-notiktoken-v0.3.27
75-
{py3.10,py3.13,py3.14}-langchain-notiktoken-v1.0.2
78+
{py3.10,py3.13,py3.14}-langchain-notiktoken-v1.0.3
7679

7780
{py3.9,py3.13,py3.14}-langgraph-v0.6.11
78-
{py3.10,py3.12,py3.13}-langgraph-v1.0.1
81+
{py3.10,py3.12,py3.13}-langgraph-v1.0.2
7982

8083
{py3.9,py3.12,py3.13}-litellm-v1.77.7
8184
{py3.9,py3.12,py3.13}-litellm-v1.78.7
82-
{py3.9,py3.12,py3.13}-litellm-v1.79.0
85+
{py3.9,py3.12,py3.13}-litellm-v1.79.1
8386

8487
{py3.10,py3.12,py3.13}-mcp-v1.15.0
85-
{py3.10,py3.12,py3.13}-mcp-v1.16.0
8688
{py3.10,py3.12,py3.13}-mcp-v1.17.0
8789
{py3.10,py3.12,py3.13}-mcp-v1.19.0
90+
{py3.10,py3.12,py3.13}-mcp-v1.20.0
8891

8992
{py3.8,py3.11,py3.12}-openai-base-v1.0.1
9093
{py3.8,py3.12,py3.13}-openai-base-v1.109.1
@@ -100,16 +103,16 @@ envlist =
100103
{py3.10,py3.12,py3.13}-openai_agents-v0.4.2
101104

102105
{py3.10,py3.12,py3.13}-pydantic_ai-v1.0.18
103-
{py3.10,py3.12,py3.13}-pydantic_ai-v1.2.1
104-
{py3.10,py3.12,py3.13}-pydantic_ai-v1.4.0
105-
{py3.10,py3.12,py3.13}-pydantic_ai-v1.7.0
106+
{py3.10,py3.12,py3.13}-pydantic_ai-v1.3.0
107+
{py3.10,py3.12,py3.13}-pydantic_ai-v1.6.0
108+
{py3.10,py3.12,py3.13}-pydantic_ai-v1.9.1
106109

107110

108111
# ~~~ Cloud ~~~
109112
{py3.6,py3.7}-boto3-v1.12.49
110113
{py3.6,py3.9,py3.10}-boto3-v1.20.54
111114
{py3.7,py3.11,py3.12}-boto3-v1.28.85
112-
{py3.9,py3.13,py3.14,py3.14t}-boto3-v1.40.61
115+
{py3.9,py3.13,py3.14,py3.14t}-boto3-v1.40.64
113116

114117
{py3.6,py3.7,py3.8}-chalice-v1.16.0
115118
{py3.9,py3.12,py3.13}-chalice-v1.32.0
@@ -144,13 +147,13 @@ envlist =
144147

145148
# ~~~ Flags ~~~
146149
{py3.8,py3.12,py3.13}-launchdarkly-v9.8.1
147-
{py3.9,py3.13,py3.14,py3.14t}-launchdarkly-v9.12.2
150+
{py3.9,py3.13,py3.14,py3.14t}-launchdarkly-v9.12.3
148151

149152
{py3.8,py3.13,py3.14,py3.14t}-openfeature-v0.7.5
150153
{py3.9,py3.13,py3.14,py3.14t}-openfeature-v0.8.3
151154

152155
{py3.7,py3.13,py3.14}-statsig-v0.55.3
153-
{py3.7,py3.13,py3.14}-statsig-v0.66.0
156+
{py3.7,py3.13,py3.14}-statsig-v0.66.1
154157

155158
{py3.8,py3.12,py3.13}-unleash-v6.0.1
156159
{py3.8,py3.12,py3.13}-unleash-v6.3.0
@@ -195,7 +198,7 @@ envlist =
195198

196199
{py3.6,py3.7,py3.8}-celery-v4.4.7
197200
{py3.8,py3.12,py3.13}-celery-v5.5.3
198-
{py3.9,py3.12,py3.13}-celery-v5.6.0b2
201+
{py3.9,py3.12,py3.13}-celery-v5.6.0rc1
199202

200203
{py3.6,py3.7}-dramatiq-v1.9.0
201204
{py3.9,py3.12,py3.13}-dramatiq-v1.18.0
@@ -204,7 +207,7 @@ envlist =
204207
{py3.6,py3.11,py3.12}-huey-v2.5.4
205208

206209
{py3.9,py3.10}-ray-v2.7.2
207-
{py3.9,py3.12,py3.13}-ray-v2.51.0
210+
{py3.9,py3.12,py3.13}-ray-v2.51.1
208211

209212
{py3.6}-rq-v0.8.2
210213
{py3.6,py3.7}-rq-v0.13.0
@@ -231,12 +234,12 @@ envlist =
231234
{py3.6,py3.9,py3.10}-starlette-v0.16.0
232235
{py3.7,py3.10,py3.11}-starlette-v0.27.0
233236
{py3.8,py3.12,py3.13}-starlette-v0.38.6
234-
{py3.9,py3.13,py3.14,py3.14t}-starlette-v0.49.1
237+
{py3.10,py3.13,py3.14,py3.14t}-starlette-v0.50.0
235238

236239
{py3.6,py3.9,py3.10}-fastapi-v0.79.1
237240
{py3.7,py3.10,py3.11}-fastapi-v0.93.0
238241
{py3.8,py3.10,py3.11}-fastapi-v0.107.0
239-
{py3.8,py3.13,py3.14,py3.14t}-fastapi-v0.120.1
242+
{py3.8,py3.13,py3.14,py3.14t}-fastapi-v0.121.0
240243

241244

242245
# ~~~ Web 2 ~~~
@@ -287,7 +290,7 @@ envlist =
287290
{py3.6}-trytond-v4.8.18
288291
{py3.6,py3.7,py3.8}-trytond-v5.8.16
289292
{py3.8,py3.10,py3.11}-trytond-v6.8.17
290-
{py3.9,py3.12,py3.13}-trytond-v7.6.9
293+
{py3.9,py3.12,py3.13}-trytond-v7.6.10
291294

292295
{py3.7,py3.12,py3.13}-typer-v0.15.4
293296
{py3.8,py3.13,py3.14,py3.14t}-typer-v0.20.0
@@ -325,6 +328,11 @@ deps =
325328
{py3.10,py3.11}-gevent: zope.event<5.0.0
326329
{py3.10,py3.11}-gevent: zope.interface<8.0
327330

331+
# === Integration Deactivation ===
332+
integration_deactivation: openai
333+
integration_deactivation: anthropic
334+
integration_deactivation: langchain
335+
328336
# === Integrations ===
329337

330338
# Asgi
@@ -365,7 +373,7 @@ deps =
365373
google_genai-v1.29.0: google-genai==1.29.0
366374
google_genai-v1.35.0: google-genai==1.35.0
367375
google_genai-v1.41.0: google-genai==1.41.0
368-
google_genai-v1.46.0: google-genai==1.46.0
376+
google_genai-v1.47.0: google-genai==1.47.0
369377
google_genai: pytest-asyncio
370378

371379
huggingface_hub-v0.24.7: huggingface_hub==0.24.7
@@ -376,34 +384,34 @@ deps =
376384

377385
langchain-base-v0.1.20: langchain==0.1.20
378386
langchain-base-v0.3.27: langchain==0.3.27
379-
langchain-base-v1.0.2: langchain==1.0.2
387+
langchain-base-v1.0.3: langchain==1.0.3
380388
langchain-base: openai
381389
langchain-base: tiktoken
382390
langchain-base: langchain-openai
383391
langchain-base-v0.3.27: langchain-community
384-
langchain-base-v1.0.2: langchain-community
385-
langchain-base-v1.0.2: langchain-classic
392+
langchain-base-v1.0.3: langchain-community
393+
langchain-base-v1.0.3: langchain-classic
386394

387395
langchain-notiktoken-v0.1.20: langchain==0.1.20
388396
langchain-notiktoken-v0.3.27: langchain==0.3.27
389-
langchain-notiktoken-v1.0.2: langchain==1.0.2
397+
langchain-notiktoken-v1.0.3: langchain==1.0.3
390398
langchain-notiktoken: openai
391399
langchain-notiktoken: langchain-openai
392400
langchain-notiktoken-v0.3.27: langchain-community
393-
langchain-notiktoken-v1.0.2: langchain-community
394-
langchain-notiktoken-v1.0.2: langchain-classic
401+
langchain-notiktoken-v1.0.3: langchain-community
402+
langchain-notiktoken-v1.0.3: langchain-classic
395403

396404
langgraph-v0.6.11: langgraph==0.6.11
397-
langgraph-v1.0.1: langgraph==1.0.1
405+
langgraph-v1.0.2: langgraph==1.0.2
398406

399407
litellm-v1.77.7: litellm==1.77.7
400408
litellm-v1.78.7: litellm==1.78.7
401-
litellm-v1.79.0: litellm==1.79.0
409+
litellm-v1.79.1: litellm==1.79.1
402410

403411
mcp-v1.15.0: mcp==1.15.0
404-
mcp-v1.16.0: mcp==1.16.0
405412
mcp-v1.17.0: mcp==1.17.0
406413
mcp-v1.19.0: mcp==1.19.0
414+
mcp-v1.20.0: mcp==1.20.0
407415
mcp: pytest-asyncio
408416

409417
openai-base-v1.0.1: openai==1.0.1
@@ -426,17 +434,17 @@ deps =
426434
openai_agents: pytest-asyncio
427435

428436
pydantic_ai-v1.0.18: pydantic-ai==1.0.18
429-
pydantic_ai-v1.2.1: pydantic-ai==1.2.1
430-
pydantic_ai-v1.4.0: pydantic-ai==1.4.0
431-
pydantic_ai-v1.7.0: pydantic-ai==1.7.0
437+
pydantic_ai-v1.3.0: pydantic-ai==1.3.0
438+
pydantic_ai-v1.6.0: pydantic-ai==1.6.0
439+
pydantic_ai-v1.9.1: pydantic-ai==1.9.1
432440
pydantic_ai: pytest-asyncio
433441

434442

435443
# ~~~ Cloud ~~~
436444
boto3-v1.12.49: boto3==1.12.49
437445
boto3-v1.20.54: boto3==1.20.54
438446
boto3-v1.28.85: boto3==1.28.85
439-
boto3-v1.40.61: boto3==1.40.61
447+
boto3-v1.40.64: boto3==1.40.64
440448
{py3.7,py3.8}-boto3: urllib3<2.0.0
441449

442450
chalice-v1.16.0: chalice==1.16.0
@@ -480,13 +488,13 @@ deps =
480488

481489
# ~~~ Flags ~~~
482490
launchdarkly-v9.8.1: launchdarkly-server-sdk==9.8.1
483-
launchdarkly-v9.12.2: launchdarkly-server-sdk==9.12.2
491+
launchdarkly-v9.12.3: launchdarkly-server-sdk==9.12.3
484492

485493
openfeature-v0.7.5: openfeature-sdk==0.7.5
486494
openfeature-v0.8.3: openfeature-sdk==0.8.3
487495

488496
statsig-v0.55.3: statsig==0.55.3
489-
statsig-v0.66.0: statsig==0.66.0
497+
statsig-v0.66.1: statsig==0.66.1
490498
statsig: typing_extensions
491499

492500
unleash-v6.0.1: UnleashClient==6.0.1
@@ -556,7 +564,7 @@ deps =
556564

557565
celery-v4.4.7: celery==4.4.7
558566
celery-v5.5.3: celery==5.5.3
559-
celery-v5.6.0b2: celery==5.6.0b2
567+
celery-v5.6.0rc1: celery==5.6.0rc1
560568
celery: newrelic<10.17.0
561569
celery: redis
562570
{py3.7}-celery: importlib-metadata<5.0
@@ -568,7 +576,7 @@ deps =
568576
huey-v2.5.4: huey==2.5.4
569577

570578
ray-v2.7.2: ray==2.7.2
571-
ray-v2.51.0: ray==2.51.0
579+
ray-v2.51.1: ray==2.51.1
572580

573581
rq-v0.8.2: rq==0.8.2
574582
rq-v0.13.0: rq==0.13.0
@@ -626,7 +634,7 @@ deps =
626634
starlette-v0.16.0: starlette==0.16.0
627635
starlette-v0.27.0: starlette==0.27.0
628636
starlette-v0.38.6: starlette==0.38.6
629-
starlette-v0.49.1: starlette==0.49.1
637+
starlette-v0.50.0: starlette==0.50.0
630638
starlette: pytest-asyncio
631639
starlette: python-multipart
632640
starlette: requests
@@ -640,7 +648,7 @@ deps =
640648
fastapi-v0.79.1: fastapi==0.79.1
641649
fastapi-v0.93.0: fastapi==0.93.0
642650
fastapi-v0.107.0: fastapi==0.107.0
643-
fastapi-v0.120.1: fastapi==0.120.1
651+
fastapi-v0.121.0: fastapi==0.121.0
644652
fastapi: httpx
645653
fastapi: pytest-asyncio
646654
fastapi: python-multipart
@@ -735,7 +743,7 @@ deps =
735743
trytond-v4.8.18: trytond==4.8.18
736744
trytond-v5.8.16: trytond==5.8.16
737745
trytond-v6.8.17: trytond==6.8.17
738-
trytond-v7.6.9: trytond==7.6.9
746+
trytond-v7.6.10: trytond==7.6.10
739747
trytond: werkzeug
740748
trytond-v4.6.22: werkzeug<1.0
741749
trytond-v4.8.18: werkzeug<1.0
@@ -760,6 +768,7 @@ setenv =
760768
# TESTPATH definitions for test suites not managed by toxgen
761769
common: TESTPATH=tests
762770
gevent: TESTPATH=tests
771+
integration_deactivation: TESTPATH=tests/test_ai_integration_deactivation.py
763772
asgi: TESTPATH=tests/integrations/asgi
764773
aws_lambda: TESTPATH=tests/integrations/aws_lambda
765774
cloud_resource_context: TESTPATH=tests/integrations/cloud_resource_context

0 commit comments

Comments
 (0)