Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 10 additions & 89 deletions .github/workflows/test-integrations-ai.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,89 +22,6 @@ env:
CACHED_BUILD_PATHS: |
${{ github.workspace }}/dist-serverless
jobs:
test-ai-latest:
name: AI (latest)
timeout-minutes: 30
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.9","3.11","3.12"]
# 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
# see https://github.com/actions/setup-python/issues/544#issuecomment-1332535877
os: [ubuntu-22.04]
# Use Docker container only for Python 3.6
container: ${{ matrix.python-version == '3.6' && 'python:3.6' || null }}
steps:
- uses: actions/checkout@v5.0.0
- uses: actions/setup-python@v5
if: ${{ matrix.python-version != '3.6' }}
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Setup Test Env
run: |
pip install "coverage[toml]" tox
- name: Erase coverage
run: |
coverage erase
- name: Test anthropic latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-anthropic-latest"
- name: Test cohere latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-cohere-latest"
- name: Test langchain latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-langchain-latest"
- name: Test openai_base latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-openai_base-latest"
- name: Test openai_notiktoken latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-openai_notiktoken-latest"
- name: Test openai_agents latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-openai_agents-latest"
- name: Test huggingface_hub latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-huggingface_hub-latest"
- name: Generate coverage XML (Python 3.6)
if: ${{ !cancelled() && matrix.python-version == '3.6' }}
run: |
export COVERAGE_RCFILE=.coveragerc36
coverage combine .coverage-sentry-*
coverage xml --ignore-errors
- name: Generate coverage XML
if: ${{ !cancelled() && matrix.python-version != '3.6' }}
run: |
coverage combine .coverage-sentry-*
coverage xml
- name: Upload coverage to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5.5.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
# make sure no plugins alter our coverage reports
plugins: noop
verbose: true
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: .junitxml
verbose: true
test-ai-pinned:
name: AI (pinned)
timeout-minutes: 30
Expand Down Expand Up @@ -141,18 +58,22 @@ jobs:
run: |
set -x # print commands that are executed
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-cohere"
- name: Test langchain pinned
- name: Test langchain-base pinned
run: |
set -x # print commands that are executed
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-langchain-base"
- name: Test langchain-notiktoken pinned
run: |
set -x # print commands that are executed
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-langchain"
- name: Test openai_base pinned
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-langchain-notiktoken"
- name: Test openai-base pinned
run: |
set -x # print commands that are executed
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-openai_base"
- name: Test openai_notiktoken pinned
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-openai-base"
- name: Test openai-notiktoken pinned
run: |
set -x # print commands that are executed
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-openai_notiktoken"
./scripts/runtox.sh --exclude-latest "py${{ matrix.python-version }}-openai-notiktoken"
- name: Test openai_agents pinned
run: |
set -x # print commands that are executed
Expand Down
24 changes: 22 additions & 2 deletions scripts/populate_tox/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,26 @@
"huggingface_hub": {
"package": "huggingface_hub",
},
"langchain-base": {
"package": "langchain",
"integration_name": "langchain",
"deps": {
"*": ["openai", "tiktoken", "langchain-openai"],
"<=0.1": ["httpx<0.28.0"],
">=0.3": ["langchain-community"],
},
"include": "<1.0",
},
"langchain-notiktoken": {
"package": "langchain",
"integration_name": "langchain",
"deps": {
"*": ["openai", "langchain-openai"],
"<=0.1": ["httpx<0.28.0"],
">=0.3": ["langchain-community"],
},
"include": "<1.0",
},
"launchdarkly": {
"package": "launchdarkly-server-sdk",
},
Expand All @@ -139,7 +159,7 @@
"loguru": {
"package": "loguru",
},
"openai_base": {
"openai-base": {
"package": "openai",
"integration_name": "openai",
"deps": {
Expand All @@ -148,7 +168,7 @@
},
"python": ">=3.8",
},
"openai_notiktoken": {
"openai-notiktoken": {
"package": "openai",
"integration_name": "openai",
"deps": {
Expand Down
27 changes: 4 additions & 23 deletions scripts/populate_tox/tox.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,6 @@ envlist =
{py3.9,py3.11,py3.12}-httpx-v{0.25,0.27}
{py3.9,py3.12,py3.13}-httpx-latest

# Langchain
{py3.9,py3.11,py3.12}-langchain-v0.1
{py3.9,py3.11,py3.12}-langchain-v0.3
{py3.9,py3.11,py3.12}-langchain-latest
{py3.9,py3.11,py3.12}-langchain-notiktoken

# OpenTelemetry (OTel)
{py3.7,py3.9,py3.12,py3.13}-opentelemetry

Expand Down Expand Up @@ -231,20 +225,6 @@ deps =
httpx-v0.27: httpx~=0.27.0
httpx-latest: httpx

# Langchain
langchain-v0.1: openai~=1.0.0
langchain-v0.1: langchain~=0.1.11
langchain-v0.1: tiktoken~=0.6.0
langchain-v0.1: httpx<0.28.0
langchain-v0.3: langchain~=0.3.0
langchain-v0.3: langchain-community
langchain-v0.3: tiktoken
langchain-v0.3: openai
langchain-{latest,notiktoken}: langchain
langchain-{latest,notiktoken}: langchain-openai
langchain-{latest,notiktoken}: openai>=1.6.1
langchain-latest: tiktoken~=0.6.0

# OpenTelemetry (OTel)
opentelemetry: opentelemetry-distro

Expand Down Expand Up @@ -376,12 +356,13 @@ setenv =
httpx: TESTPATH=tests/integrations/httpx
huey: TESTPATH=tests/integrations/huey
huggingface_hub: TESTPATH=tests/integrations/huggingface_hub
langchain: TESTPATH=tests/integrations/langchain
langchain-base: TESTPATH=tests/integrations/langchain
langchain-notiktoken: TESTPATH=tests/integrations/langchain
launchdarkly: TESTPATH=tests/integrations/launchdarkly
litestar: TESTPATH=tests/integrations/litestar
loguru: TESTPATH=tests/integrations/loguru
openai_base: TESTPATH=tests/integrations/openai
openai_notiktoken: TESTPATH=tests/integrations/openai
openai-base: TESTPATH=tests/integrations/openai
openai-notiktoken: TESTPATH=tests/integrations/openai
openai_agents: TESTPATH=tests/integrations/openai_agents
openfeature: TESTPATH=tests/integrations/openfeature
opentelemetry: TESTPATH=tests/integrations/opentelemetry
Expand Down
7 changes: 4 additions & 3 deletions scripts/split_tox_gh_actions/split_tox_gh_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,10 @@
"AI": [
"anthropic",
"cohere",
"langchain",
"openai_base",
"openai_notiktoken",
"langchain-base",
"langchain-notiktoken",
"openai-base",
"openai-notiktoken",
"openai_agents",
"huggingface_hub",
],
Expand Down
2 changes: 1 addition & 1 deletion sentry_sdk/integrations/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def iter_default_integrations(with_auto_enabling_integrations):
"graphene": (3, 3),
"grpc": (1, 32, 0), # grpcio
"huggingface_hub": (0, 22),
"langchain": (0, 0, 210),
"langchain": (0, 1, 0),
"launchdarkly": (9, 8, 0),
"loguru": (0, 7, 0),
"openai": (1, 0, 0),
Expand Down
100 changes: 52 additions & 48 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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-01T14:09:50.564158+00:00
# Last generated: 2025-09-02T10:59:55.249513+00:00

[tox]
requires =
Expand Down Expand Up @@ -77,12 +77,6 @@ envlist =
{py3.9,py3.11,py3.12}-httpx-v{0.25,0.27}
{py3.9,py3.12,py3.13}-httpx-latest

# Langchain
{py3.9,py3.11,py3.12}-langchain-v0.1
{py3.9,py3.11,py3.12}-langchain-v0.3
{py3.9,py3.11,py3.12}-langchain-latest
{py3.9,py3.11,py3.12}-langchain-notiktoken

# OpenTelemetry (OTel)
{py3.7,py3.9,py3.12,py3.13}-opentelemetry

Expand Down Expand Up @@ -138,15 +132,23 @@ envlist =
{py3.9,py3.11,py3.12}-cohere-v5.13.12
{py3.9,py3.11,py3.12}-cohere-v5.17.0

{py3.8,py3.11,py3.12}-openai_base-v1.0.1
{py3.8,py3.11,py3.12}-openai_base-v1.35.15
{py3.8,py3.11,py3.12}-openai_base-v1.69.0
{py3.8,py3.12,py3.13}-openai_base-v1.102.0
{py3.9,py3.11,py3.12}-langchain-base-v0.1.20
{py3.9,py3.11,py3.12}-langchain-base-v0.2.17
{py3.9,py3.12,py3.13}-langchain-base-v0.3.27

{py3.9,py3.11,py3.12}-langchain-notiktoken-v0.1.20
{py3.9,py3.11,py3.12}-langchain-notiktoken-v0.2.17
{py3.9,py3.12,py3.13}-langchain-notiktoken-v0.3.27

{py3.8,py3.11,py3.12}-openai_notiktoken-v1.0.1
{py3.8,py3.11,py3.12}-openai_notiktoken-v1.35.15
{py3.8,py3.11,py3.12}-openai_notiktoken-v1.69.0
{py3.8,py3.12,py3.13}-openai_notiktoken-v1.102.0
{py3.8,py3.11,py3.12}-openai-base-v1.0.1
{py3.8,py3.11,py3.12}-openai-base-v1.35.15
{py3.8,py3.11,py3.12}-openai-base-v1.69.0
{py3.8,py3.12,py3.13}-openai-base-v1.102.0

{py3.8,py3.11,py3.12}-openai-notiktoken-v1.0.1
{py3.8,py3.11,py3.12}-openai-notiktoken-v1.35.15
{py3.8,py3.11,py3.12}-openai-notiktoken-v1.69.0
{py3.8,py3.12,py3.13}-openai-notiktoken-v1.102.0

{py3.10,py3.11,py3.12}-openai_agents-v0.0.19
{py3.10,py3.12,py3.13}-openai_agents-v0.1.0
Expand Down Expand Up @@ -412,20 +414,6 @@ deps =
httpx-v0.27: httpx~=0.27.0
httpx-latest: httpx

# Langchain
langchain-v0.1: openai~=1.0.0
langchain-v0.1: langchain~=0.1.11
langchain-v0.1: tiktoken~=0.6.0
langchain-v0.1: httpx<0.28.0
langchain-v0.3: langchain~=0.3.0
langchain-v0.3: langchain-community
langchain-v0.3: tiktoken
langchain-v0.3: openai
langchain-{latest,notiktoken}: langchain
langchain-{latest,notiktoken}: langchain-openai
langchain-{latest,notiktoken}: openai>=1.6.1
langchain-latest: tiktoken~=0.6.0

# OpenTelemetry (OTel)
opentelemetry: opentelemetry-distro

Expand Down Expand Up @@ -516,22 +504,37 @@ deps =
cohere-v5.13.12: cohere==5.13.12
cohere-v5.17.0: cohere==5.17.0

openai_base-v1.0.1: openai==1.0.1
openai_base-v1.35.15: openai==1.35.15
openai_base-v1.69.0: openai==1.69.0
openai_base-v1.102.0: openai==1.102.0
openai_base: pytest-asyncio
openai_base: tiktoken
openai_base-v1.0.1: httpx<0.28
openai_base-v1.35.15: httpx<0.28

openai_notiktoken-v1.0.1: openai==1.0.1
openai_notiktoken-v1.35.15: openai==1.35.15
openai_notiktoken-v1.69.0: openai==1.69.0
openai_notiktoken-v1.102.0: openai==1.102.0
openai_notiktoken: pytest-asyncio
openai_notiktoken-v1.0.1: httpx<0.28
openai_notiktoken-v1.35.15: httpx<0.28
langchain-base-v0.1.20: langchain==0.1.20
langchain-base-v0.2.17: langchain==0.2.17
langchain-base-v0.3.27: langchain==0.3.27
langchain-base: openai
langchain-base: tiktoken
langchain-base: langchain-openai
langchain-base-v0.3.27: langchain-community

langchain-notiktoken-v0.1.20: langchain==0.1.20
langchain-notiktoken-v0.2.17: langchain==0.2.17
langchain-notiktoken-v0.3.27: langchain==0.3.27
langchain-notiktoken: openai
langchain-notiktoken: langchain-openai
langchain-notiktoken-v0.3.27: langchain-community

openai-base-v1.0.1: openai==1.0.1
openai-base-v1.35.15: openai==1.35.15
openai-base-v1.69.0: openai==1.69.0
openai-base-v1.102.0: openai==1.102.0
openai-base: pytest-asyncio
openai-base: tiktoken
openai-base-v1.0.1: httpx<0.28
openai-base-v1.35.15: httpx<0.28

openai-notiktoken-v1.0.1: openai==1.0.1
openai-notiktoken-v1.35.15: openai==1.35.15
openai-notiktoken-v1.69.0: openai==1.69.0
openai-notiktoken-v1.102.0: openai==1.102.0
openai-notiktoken: pytest-asyncio
openai-notiktoken-v1.0.1: httpx<0.28
openai-notiktoken-v1.35.15: httpx<0.28

openai_agents-v0.0.19: openai-agents==0.0.19
openai_agents-v0.1.0: openai-agents==0.1.0
Expand Down Expand Up @@ -833,12 +836,13 @@ setenv =
httpx: TESTPATH=tests/integrations/httpx
huey: TESTPATH=tests/integrations/huey
huggingface_hub: TESTPATH=tests/integrations/huggingface_hub
langchain: TESTPATH=tests/integrations/langchain
langchain-base: TESTPATH=tests/integrations/langchain
langchain-notiktoken: TESTPATH=tests/integrations/langchain
launchdarkly: TESTPATH=tests/integrations/launchdarkly
litestar: TESTPATH=tests/integrations/litestar
loguru: TESTPATH=tests/integrations/loguru
openai_base: TESTPATH=tests/integrations/openai
openai_notiktoken: TESTPATH=tests/integrations/openai
openai-base: TESTPATH=tests/integrations/openai
openai-notiktoken: TESTPATH=tests/integrations/openai
openai_agents: TESTPATH=tests/integrations/openai_agents
openfeature: TESTPATH=tests/integrations/openfeature
opentelemetry: TESTPATH=tests/integrations/opentelemetry
Expand Down