Files
opentelemetry-python-contrib/tox.ini
Teja a025a206da Anthropic agents boilerplate (#4179)
* Add initial implementation of Anthropic Agents instrumentation

- Introduced `opentelemetry-instrumentation-anthropic-agents` package for tracing LLM requests using the Anthropic Python SDK.
- Added support for capturing request and response attributes in accordance with GenAI semantic conventions.
- Included examples for both manual and zero-code instrumentation.
- Created a CHANGELOG.md to document notable changes.
- Added LICENSE and README files for package details and usage instructions.

This commit lays the groundwork for enhanced observability in applications utilizing Anthropic's capabilities.

* Enhance instrumentation for Anthropic Agents

- Added support for the `opentelemetry-instrumentation-anthropic-agents` package, enabling tracing of requests made through the Claude Agent SDK.
- Updated `pyproject.toml` and `tox.ini` to include new test environments and dependencies for the Anthropic Agents instrumentation.
- Modified GitHub workflows to incorporate linting and testing for the new instrumentation.
- Improved documentation in README files and examples to reflect changes in usage and setup.
- Introduced new examples demonstrating both manual and zero-code instrumentation approaches.

This commit strengthens observability for applications utilizing Claude Agents, ensuring comprehensive tracing and logging capabilities.

* Remove outdated entries from CHANGELOG.md for Anthropic Agents instrumentation, streamlining the document to reflect current features and improvements.

* Update Anthropic Agents instrumentation to use Claude Agent SDK

- Changed dependency from `anthropic >= 0.16.0` to `claude-agent-sdk >= 0.1.14` in `README.md`, `pyproject.toml`, and related files.
- Refactored `AnthropicAgentsInstrumentor` to align with the new SDK, including updates to initialization and logging.
- Removed unused utility functions and cleaned up test configurations to reflect the new dependency.
- Updated tests to ensure compatibility with the Claude Agent SDK.

This commit enhances the instrumentation for applications using the Claude Agent SDK, ensuring accurate tracing and logging capabilities.

* Update Python version requirements and clean up workflows for Anthropic Agents instrumentation

- Updated `tox.ini` and `pyproject.toml` to require Python 3.10 or higher, removing support for Python 3.9.
- Cleaned up GitHub workflows by removing outdated test jobs for Python 3.9 and adding new jobs for Python 3.10.
- Updated `README.md` to reflect the new dependency on `claude-agent-sdk` and removed references to the old SDK.
- Made minor code cleanups in example scripts and test files to improve readability.

These changes ensure compatibility with the latest Python versions and streamline the testing process for the Anthropic Agents instrumentation.

* Add Anirudha as a component owner for Anthropic instrumentation.

* fixing precommit errors.

* Update version comment in `version.py` to indicate future stable release

* Refactor imports in `__init__.py` for Anthropic Agents instrumentation.

* regenerate uv.lock file.

* Update uv.lock to standardize package source URLs with trailing slashes

* Rename instrumentation for Anthropic Agents to Claude Agent SDK, updating references in configuration files, workflows, and documentation. Add new files for the Claude Agent SDK instrumentation, including README, examples, and changelog. Ensure proper setup for testing and linting in CI/CD workflows.

* Update release documentation and workflows to include new instrumentation for Anthropic and Claude Agent SDK.

* Add Mike Goldsmith as a component owner for Anthropic and Claude Agent SDK instrumentation

* Revert "Merge remote-tracking branch 'upstream/main' into feat/anthropic-agents-boilerplate"

This reverts commit 7ed01ecb2d, reversing
changes made to 7e83cd7d74.

* Reapply "Merge remote-tracking branch 'upstream/main' into feat/anthropic-agents-boilerplate"

This reverts commit 7714e3c544.

* Update Python version in workflows and adjust dependencies in uv.lock.

* Fix source URLs in uv.lock to ensure proper registry formatting.
2026-02-19 20:57:06 -05:00

1138 lines
60 KiB
INI

[tox]
requires =
tox-uv>=1
isolated_build = True
skipsdist = True
skip_missing_interpreters = True
envlist =
; Environments are organized by individual package, allowing
; for specifying supported Python versions per package.
; instrumentation-openai
py3{9,10,11,12,13,14}-test-instrumentation-openai-v2-{oldest,latest}
pypy3-test-instrumentation-openai-v2-{oldest,latest}
lint-instrumentation-openai-v2
; instrumentation-openai-agents
py3{10,11,12,13,14}-test-instrumentation-openai_agents-v2-{oldest,latest}
lint-instrumentation-openai_agents-v2
; instrumentation-vertexai
py3{9,10,11,12,13,14}-test-instrumentation-vertexai-{oldest,latest}
# Disabling pypy3 as shapely does not have wheels and fails to compile
# pypy3-test-instrumentation-vertexai-{oldest,latest}
lint-instrumentation-vertexai
; instrumentation-google-genai
py3{9,10,11,12,13,14}-test-instrumentation-google-genai-{oldest,latest}
# Disabling pypy3 as shapely does not have wheels and fails to compile
# pypy3-test-instrumentation-google-genai-{0,1}
lint-instrumentation-google-genai
; instrumentation-anthropic
py3{9,10,11,12,13,14}-test-instrumentation-anthropic-{oldest,latest}
# Disabling pypy3 as jiter (anthropic dep) requires PyPy 3.11+
# pypy3-test-instrumentation-anthropic-{oldest,latest}
lint-instrumentation-anthropic
; instrumentation-claude-agent-sdk
py3{10,11,12,13}-test-instrumentation-claude-agent-sdk-{oldest,latest}
# Disabling pypy3 as jiter (anthropic dep) requires PyPy 3.11+
# pypy3-test-instrumentation-claude-agent-sdk-{oldest,latest}
lint-instrumentation-claude-agent-sdk
; opentelemetry-resource-detector-containerid
py3{9,10,11,12,13,14}-test-resource-detector-containerid
pypy3-test-resource-detector-containerid
lint-resource-detector-containerid
; opentelemetry-resource-detector-azure
py3{9,10,11,12,13,14}-test-resource-detector-azure-{0,1}
pypy3-test-resource-detector-azure-{0,1}
lint-resource-detector-azure
; opentelemetry-sdk-extension-aws
py3{9,10,11,12,13,14}-test-sdk-extension-aws-{0,1}
pypy3-test-sdk-extension-aws-{0,1}
lint-sdk-extension-aws
benchmark-sdk-extension-aws
; opentelemetry-distro
py3{9,10,11,12,13,14}-test-distro
pypy3-test-distro
lint-distro
; opentelemetry-instrumentation
py3{9,10,11,12,13,14}-test-opentelemetry-instrumentation
pypy3-test-opentelemetry-instrumentation
lint-opentelemetry-instrumentation
; opentelemetry-instrumentation-aiohttp-client
py3{9,10,11,12,13,14}-test-instrumentation-aiohttp-client
pypy3-test-instrumentation-aiohttp-client
lint-instrumentation-aiohttp-client
; opentelemetry-instrumentation-aiohttp-server
py3{9,10,11,12,13,14}-test-instrumentation-aiohttp-server
pypy3-test-instrumentation-aiohttp-server
lint-instrumentation-aiohttp-server
; opentelemetry-instrumentation-aiopg
py3{9,10,11,12,13,14}-test-instrumentation-aiopg
; instrumentation-aiopg intentionally excluded from pypy3
lint-instrumentation-aiopg
; opentelemetry-instrumentation-aws-lambda
py3{9,10,11,12,13,14}-test-instrumentation-aws-lambda
pypy3-test-instrumentation-aws-lambda
lint-instrumentation-aws-lambda
; opentelemetry-instrumentation-botocore
py3{9,10,11,12,13,14}-test-instrumentation-botocore-{0,1}
; FIXME: see https://github.com/open-telemetry/opentelemetry-python-contrib/issues/1736
; pypy3-test-instrumentation-botocore
lint-instrumentation-botocore
; opentelemetry-instrumentation-boto3sqs
py3{9,10,11,12,13,14}-test-instrumentation-boto3sqs
pypy3-test-instrumentation-boto3sqs
lint-instrumentation-boto3sqs
; opentelemetry-instrumentation-django
; Only officially supported Python versions are tested for each Django
; major release. Updated list can be found at:
; https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: django~=2.0
; 1: django~=3.0
; 2: django>=4.0b1,<5.0 backports.zoneinfo==0.2.1
; 3: django>=5.2<6.0
py3{9}-test-instrumentation-django-{0,1,2}
py3{10,11,12}-test-instrumentation-django-{1,3}
py3{13,14}-test-instrumentation-django-3
pypy3-test-instrumentation-django-{0,1}
lint-instrumentation-django
; opentelemetry-instrumentation-dbapi
py3{9,10,11,12,13,14}-test-instrumentation-dbapi
pypy3-test-instrumentation-dbapi
lint-instrumentation-dbapi
; opentelemetry-instrumentation-boto
py3{9,10,11}-test-instrumentation-boto
; FIXME: see https://github.com/open-telemetry/opentelemetry-python-contrib/issues/1736
; pypy3-test-instrumentation-boto
lint-instrumentation-boto
; opentelemetry-instrumentation-asyncclick
py3{9,10,11,12,13,14}-test-instrumentation-asyncclick
pypy3-test-instrumentation-asyncclick
lint-instrumentation-asyncclick
; opentelemetry-instrumentation-click
py3{9,10,11,12,13,14}-test-instrumentation-click
pypy3-test-instrumentation-click
lint-instrumentation-click
; opentelemetry-instrumentation-elasticsearch
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: elasticsearch-dsl==6.4.0 elasticsearch==6.8.2
; 1: elasticsearch-dsl==7.4.1 elasticsearch==7.17.9
; 2: elasticsearch-dsl==8.13.1 elasticsearch==8.13.1
py3{9,10,11,12,13,14}-test-instrumentation-elasticsearch-{0,1,2}
pypy3-test-instrumentation-elasticsearch-{0,1,2}
lint-instrumentation-elasticsearch
; opentelemetry-instrumentation-falcon
; py310 does not work with falcon 1
; py3{9} will be dropped for falcon 4
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: falcon ==1.4.1
; 1: falcon >=2.0.0,<3.0.0
; 2: falcon >=3.0.0,<3.1.2
; 3: falcon >=3.1.2,<4.0.0
; 4: falcon >=4.0.0,<5.0.0
py3{9}-test-instrumentation-falcon-{0,1,2,3}
py3{10,11,12}-test-instrumentation-falcon-{1,2,3,4}
py3{13,14}-test-instrumentation-falcon-4
pypy3-test-instrumentation-falcon-{0,1,2,3,4}
lint-instrumentation-falcon
; opentelemetry-instrumentation-fastapi
py3{9,10,11,12,13,14}-test-instrumentation-fastapi
pypy3-test-instrumentation-fastapi
lint-instrumentation-fastapi
; opentelemetry-instrumentation-flask
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: Flask ==2.1.3 Werkzeug <3.0.0
; 1: Flask ==2.2.0 Werkzeug <3.0.0
; 2: Flask >=3.0.0 Werkzeug >=3.0.0
; 3: Flask >=3.1.0 Werkzeug >=3.1.0
py3{9,10,11,12,13,14}-test-instrumentation-flask-{0,1,2,3}
pypy3-test-instrumentation-flask-{0,1}
lint-instrumentation-flask
; opentelemetry-instrumentation-urllib
py3{9,10,11,12,13,14}-test-instrumentation-urllib
pypy3-test-instrumentation-urllib
lint-instrumentation-urllib
; opentelemetry-instrumentation-urllib3
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: urllib3 >=1.0.0,<2.0.0
; 1: urllib3 >=2.0.0,<3.0.0
; TODO #4200 Add py314 testing after replacing httpretty -- problem with https tests in 3.14
py3{9,10,11,12,13}-test-instrumentation-urllib3-{0,1}
pypy3-test-instrumentation-urllib3-{0,1}
lint-instrumentation-urllib3
; opentelemetry-instrumentation-requests
py3{9,10,11,12,13,14}-test-instrumentation-requests
;pypy3-test-instrumentation-requests
lint-instrumentation-requests
; opentelemetry-instrumentation-starlette
py3{9,10,11,12,13,14}-test-instrumentation-starlette-{oldest,latest}
pypy3-test-instrumentation-starlette-{oldest,latest}
lint-instrumentation-starlette
; opentelemetry-instrumentation-jinja2
py3{9,10,11,12,13,14}-test-instrumentation-jinja2
pypy3-test-instrumentation-jinja2
lint-instrumentation-jinja2
; opentelemetry-instrumentation-logging
py3{9,10,11,12,13,14}-test-instrumentation-logging
pypy3-test-instrumentation-logging
lint-instrumentation-logging
; opentelemetry-exporter-richconsole
py3{9,10,11,12,13,14}-test-exporter-richconsole
pypy3-test-exporter-richconsole
lint-exporter-richconsole
; opentelemetry-exporter-prometheus-remote-write
py3{9,10,11,12,13,14}-test-exporter-prometheus-remote-write
# excluded from pypy3 due to missing wheel
pypy310-test-exporter-prometheus-remote-write
lint-exporter-prometheus-remote-write
; opentelemetry-instrumentation-mysql
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: mysql-connector-python >=8.0.0,<9.0.0
; 1: mysql-connector-python ~=9.0.0
py3{9,10,11,12,13,14}-test-instrumentation-mysql-{0,1}
pypy3-test-instrumentation-mysql-{0,1}
lint-instrumentation-mysql
; opentelemetry-instrumentation-mysqlclient
py3{9,10,11,12,13,14}-test-instrumentation-mysqlclient
pypy3-test-instrumentation-mysqlclient
; prerequisite: follow the instructions here
; https://github.com/PyMySQL/mysqlclient#install
; for your OS to install the required dependencies
lint-instrumentation-mysqlclient
; opentelemetry-instrumentation-psycopg2
py3{9,10,11,12,13,14}-test-instrumentation-psycopg2
py3{9,10,11,12,13,14}-test-instrumentation-psycopg2-binary
; ext-psycopg2 intentionally excluded from pypy3
lint-instrumentation-psycopg2
; opentelemetry-instrumentation-psycopg
py3{9,10,11,12,13,14}-test-instrumentation-psycopg
pypy3-test-instrumentation-psycopg
lint-instrumentation-psycopg
; opentelemetry-instrumentation-pymemcache
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: pymemcache ==1.3.5
; 1: pymemcache >2.0.0,<3.0.0
; 2: pymemcache >3.0.0,<3.4.2
; 3: pymemcache ==3.4.2
; 4: pymemcache ==4.0.0
py3{9,10,11,12,13,14}-test-instrumentation-pymemcache-{0,1,2,3,4}
pypy3-test-instrumentation-pymemcache-{0,1,2,3,4}
lint-instrumentation-pymemcache
; opentelemetry-instrumentation-pymongo
py3{9,10,11,12,13,14}-test-instrumentation-pymongo
pypy3-test-instrumentation-pymongo
lint-instrumentation-pymongo
; opentelemetry-instrumentation-pymysql
py3{9,10,11,12,13,14}-test-instrumentation-pymysql
pypy3-test-instrumentation-pymysql
lint-instrumentation-pymysql
; opentelemetry-instrumentation-pymssql
py3{9,10,11,12,13,14}-test-instrumentation-pymssql
; pymssql has no support for pypy: see https://github.com/pymssql/pymssql/pull/517
; pypy3-test-instrumentation-pymssql
lint-instrumentation-pymssql
; opentelemetry-instrumentation-pyramid
py3{9,10,11,12,13,14}-test-instrumentation-pyramid
pypy3-test-instrumentation-pyramid
lint-instrumentation-pyramid
; opentelemetry-instrumentation-asgi
py3{9,10,11,12,13,14}-test-instrumentation-asgi
pypy3-test-instrumentation-asgi
lint-instrumentation-asgi
; opentelemetry-instrumentation-asyncpg
py3{9,10,11,12,13,14}-test-instrumentation-asyncpg
; ext-asyncpg intentionally excluded from pypy3
lint-instrumentation-asyncpg
; opentelemetry-instrumentation-sqlite3
py3{9,10,11,12,13,14}-test-instrumentation-sqlite3
pypy3-test-instrumentation-sqlite3
lint-instrumentation-sqlite3
; opentelemetry-instrumentation-wsgi
py3{9,10,11,12,13,14}-test-instrumentation-wsgi
pypy3-test-instrumentation-wsgi
lint-instrumentation-wsgi
; opentelemetry-instrumentation-grpc
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: grpcio==1.62.0
; 1: grpcio==1.75.1
; TODO #4201 simplify tests-requirements here to use latest|oldest testing pattern
py3{9,10,11,12}-test-instrumentation-grpc-{0,1}
py3{13,14}-test-instrumentation-grpc-1
lint-instrumentation-grpc
; opentelemetry-instrumentation-sqlalchemy
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: sqlalchemy>=1.1,<1.2
; 1: sqlalchemy~=1.4 aiosqlite
; 2: sqlalchemy~=2.0.0
py3{9,10,11,12,13}-test-instrumentation-sqlalchemy-{1,2}
py314-test-instrumentation-sqlalchemy-2
pypy3-test-instrumentation-sqlalchemy-{0,1,2}
lint-instrumentation-sqlalchemy
; opentelemetry-instrumentation-redis
py3{9,10,11,12,13,14}-test-instrumentation-redis
pypy3-test-instrumentation-redis
lint-instrumentation-redis
; opentelemetry-instrumentation-remoulade
py3{9,10,11,12,13,14}-test-instrumentation-remoulade
; instrumentation-remoulade intentionally excluded from pypy3
lint-instrumentation-remoulade
; opentelemetry-instrumentation-celery
py3{9,10,11,12,13,14}-test-instrumentation-celery
pypy3-test-instrumentation-celery
lint-instrumentation-celery
; opentelemetry-instrumentation-system-metrics
py3{9,10,11,12,13,14}-test-instrumentation-system-metrics
pypy3-test-instrumentation-system-metrics
lint-instrumentation-system-metrics
; opentelemetry-instrumentation-threading
py3{9,10,11,12,13,14}-test-instrumentation-threading
pypy3-test-instrumentation-threading
lint-instrumentation-threading
; opentelemetry-instrumentation-tornado
py3{9,10,11,12,13,14}-test-instrumentation-tornado
pypy3-test-instrumentation-tornado
lint-instrumentation-tornado
; opentelemetry-instrumentation-tortoiseorm
py3{9,10,11,12,13,14}-test-instrumentation-tortoiseorm
pypy3-test-instrumentation-tortoiseorm
lint-instrumentation-tortoiseorm
; opentelemetry-instrumentation-httpx
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: httpx>=0.18.0,<0.19.0 respx~=0.17.0
; 1: httpx>=0.19.0 respx~=0.20.1
py3{9,10,11,12}-test-instrumentation-httpx-{0,1}
py3{13,14}-test-instrumentation-httpx-1
pypy3-test-instrumentation-httpx-{0,1}
lint-instrumentation-httpx
; opentelemetry-util-http
py3{9,10,11,12,13,14}-test-util-http
pypy3-test-util-http
lint-util-http
; opentelemetry-exporter-credential-provider-gcp
py3{9,10,11,12,13,14}-test-exporter-credential-provider-gcp
lint-exporter-credential-provider-gcp
; opentelemetry-util-genai
py3{9,10,11,12,13,14}-test-util-genai
pypy3-test-util-genai
lint-util-genai
; opentelemetry-propagator-aws-xray
py3{9,10,11,12,13,14}-test-propagator-aws-xray-{0,1}
pypy3-test-propagator-aws-xray-{0,1}
lint-propagator-aws-xray
benchmark-propagator-aws-xray
; opentelemetry-propagator-ot-trace
py3{9,10,11,12,13,14}-test-propagator-ot-trace
pypy3-test-propagator-ot-trace
lint-propagator-ot-trace
; opentelemetry-instrumentation-sio-pika
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: pika>=0.12.0,<1.0.0
; 1: pika>=1.0.0
py3{9,10,11,12,13,14}-test-instrumentation-sio-pika-{0,1}
pypy3-test-instrumentation-sio-pika-{0,1}
lint-instrumentation-sio-pika
; opentelemetry-instrumentation-aio-pika
; The numbers at the end of the environment names
; below mean these dependencies are being used:
; 0: aio_pika==7.2.0
; 1: aio_pika==8.3.0
; 2: aio_pika==9.0.5
; 3: aio_pika==9.4.1
py3{9,10,11,12,13,14}-test-instrumentation-aio-pika-{0,1,2,3}
pypy3-test-instrumentation-aio-pika-{0,1,2,3}
lint-instrumentation-aio-pika
; opentelemetry-instrumentation-aiokafka
py3{9,10,11,12,13,14}-test-instrumentation-aiokafka
pypy3-test-instrumentation-aiokafka
lint-instrumentation-aiokafka
; opentelemetry-instrumentation-kafka-python
py3{9,10,11}-test-instrumentation-kafka-python
py3{9,10,11,12,13,14}-test-instrumentation-kafka-pythonng
pypy3-test-instrumentation-kafka-python
pypy3-test-instrumentation-kafka-pythonng
lint-instrumentation-kafka-python
; opentelemetry-instrumentation-confluent-kafka
py3{9,10,11,12,13,14}-test-instrumentation-confluent-kafka
lint-instrumentation-confluent-kafka
; opentelemetry-instrumentation-asyncio
py3{9,10,11,12,13,14}-test-instrumentation-asyncio
lint-instrumentation-asyncio
; opentelemetry-instrumentation-cassandra
py3{9,10,11,12,13,14}-test-instrumentation-cassandra-{driver,scylla}
pypy3-test-instrumentation-cassandra-scylla
lint-instrumentation-cassandra
; opentelemetry-processor-baggage
py3{9,10,11,12,13,14}-test-processor-baggage
pypy3-test-processor-baggage
; requires snappy headers to be available on the system
lint-processor-baggage
spellcheck
docker-tests
docs
generate
generate-workflows
shellcheck
precommit
typecheck
[testenv]
test_deps =
opentelemetry-api@{env:CORE_REPO}\#egg=opentelemetry-api&subdirectory=opentelemetry-api
opentelemetry-semantic-conventions@{env:CORE_REPO}\#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions
opentelemetry-sdk@{env:CORE_REPO}\#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk
opentelemetry-test-utils@{env:CORE_REPO}\#egg=opentelemetry-test-utils&subdirectory=tests/opentelemetry-test-utils
deps =
lint: -r dev-requirements.txt
coverage: pytest
coverage: pytest-cov
opentelemetry-instrumentation: {[testenv]test_deps}
opentelemetry-instrumentation: -r {toxinidir}/opentelemetry-instrumentation/test-requirements.txt
distro: {[testenv]test_deps}
distro: -r {toxinidir}/opentelemetry-distro/test-requirements.txt
# packages that are released individually should provide a test-requirements.txt with the lowest version of OTel API
# and SDK supported to test we are honoring it
openai-oldest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.oldest.txt
# and the latest version of OTel API and SDK
openai-latest: {[testenv]test_deps}
openai-latest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.latest.txt
lint-instrumentation-openai-v2: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.oldest.txt
openai_agents-oldest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-agents-v2/tests/requirements.oldest.txt
openai_agents-latest: {[testenv]test_deps}
openai_agents-latest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-agents-v2/tests/requirements.latest.txt
lint-instrumentation-openai_agents-v2: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-agents-v2/tests/requirements.oldest.txt
vertexai-oldest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests/requirements.oldest.txt
vertexai-latest: {[testenv]test_deps}
vertexai-latest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests/requirements.latest.txt
lint-instrumentation-vertexai: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests/requirements.oldest.txt
google-genai-oldest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-google-genai/tests/requirements.oldest.txt
google-genai-latest: {[testenv]test_deps}
google-genai-latest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-google-genai/tests/requirements.latest.txt
lint-instrumentation-google-genai: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-google-genai/tests/requirements.oldest.txt
anthropic-oldest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.oldest.txt
anthropic-latest: {[testenv]test_deps}
anthropic-latest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.latest.txt
lint-instrumentation-anthropic: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.oldest.txt
claude-agent-sdk-oldest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk/tests/requirements.oldest.txt
claude-agent-sdk-latest: {[testenv]test_deps}
claude-agent-sdk-latest: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk/tests/requirements.latest.txt
lint-instrumentation-claude-agent-sdk: -r {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk/tests/requirements.oldest.txt
asgi: {[testenv]test_deps}
asgi: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-asgi/test-requirements.txt
celery: {[testenv]test_deps}
py3{9}-test-instrumentation-celery: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-celery/test-requirements-0.txt
py3{10,11,12,13,14}-test-instrumentation-celery: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-celery/test-requirements-1.txt
pypy3-test-instrumentation-celery: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-celery/test-requirements-1.txt
lint-instrumentation-celery: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-celery/test-requirements-1.txt
asyncclick: {[testenv]test_deps}
asyncclick: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncclick/test-requirements.txt
click: {[testenv]test_deps}
click: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-click/test-requirements.txt
sio-pika: {[testenv]test_deps}
sio-pika-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pika/test-requirements-0.txt
sio-pika-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pika/test-requirements-1.txt
lint-instrumentation-sio-pika: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pika/test-requirements-1.txt
aio-pika: {[testenv]test_deps}
aio-pika-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-0.txt
aio-pika-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-1.txt
aio-pika-2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-2.txt
aio-pika-3: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-3.txt
lint-instrumentation-aio-pika: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-3.txt
aiokafka: {[testenv]test_deps}
aiokafka: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aiokafka/test-requirements.txt
kafka-python: {[testenv]test_deps}
kafka-python: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements.txt
kafka-pythonng: {[testenv]test_deps}
kafka-pythonng: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements-ng.txt
confluent-kafka: {[testenv]test_deps}
confluent-kafka: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-confluent-kafka/test-requirements.txt
grpc: {[testenv]test_deps}
grpc-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-0.txt
grpc-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-1.txt
lint-instrumentation-grpc: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-1.txt
wsgi: {[testenv]test_deps}
wsgi: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi/test-requirements.txt
asyncpg: {[testenv]test_deps}
asyncpg: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg/test-requirements.txt
aws-lambda: {[testenv]test_deps}
aws-lambda: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aws-lambda/test-requirements.txt
boto: {[testenv]test_deps}
boto: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt
boto3sqs: {[testenv]test_deps}
boto3sqs: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-boto3sqs/test-requirements.txt
falcon: {[testenv]test_deps}
falcon-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-0.txt
falcon-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-1.txt
falcon-2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-2.txt
falcon-3: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-3.txt
falcon-4: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-4.txt
lint-instrumentation-falcon: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-4.txt
flask: {[testenv]test_deps}
flask-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-flask/test-requirements-0.txt
flask-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-flask/test-requirements-1.txt
flask-2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-flask/test-requirements-2.txt
flask-3: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-flask/test-requirements-3.txt
lint-instrumentation-flask: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-flask/test-requirements-2.txt
urllib: {[testenv]test_deps}
urllib: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib/test-requirements.txt
urllib3: {[testenv]test_deps}
urllib3-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-0.txt
urllib3-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-1.txt
lint-instrumentation-urllib3: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-1.txt
botocore: {[testenv]test_deps}
botocore-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-botocore/test-requirements-0.txt
botocore-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-botocore/test-requirements-1.txt
lint-instrumentation-botocore: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-botocore/test-requirements-1.txt
cassandra: {[testenv]test_deps}
cassandra-driver: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-cassandra/test-requirements.txt
cassandra-scylla: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-cassandra/test-requirements-scylla.txt
lint-instrumentation-cassandra: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-cassandra/test-requirements.txt
dbapi: {[testenv]test_deps}
dbapi: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi/test-requirements.txt
django: {[testenv]test_deps}
py3{9}-test-instrumentation-django-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-0.txt
py3{9}-test-instrumentation-django-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-1.txt
py3{9}-test-instrumentation-django-2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-2.txt
py3{10,11,12}-test-instrumentation-django-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-1.txt
py3{10,11,12,13,14}-test-instrumentation-django-3: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-3.txt
pypy3-test-instrumentation-django-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-0.txt
pypy3-test-instrumentation-django-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-1.txt
lint-instrumentation-django: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-django/test-requirements-3.txt
fastapi: {[testenv]test_deps}
fastapi: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt
mysql: {[testenv]test_deps}
mysql-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-0.txt
mysql-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-1.txt
lint-instrumentation-mysql: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-1.txt
mysqlclient: {[testenv]test_deps}
mysqlclient: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-mysqlclient/test-requirements.txt
pymemcache: {[testenv]test_deps}
pymemcache-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-0.txt
pymemcache-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-1.txt
pymemcache-2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-2.txt
pymemcache-3: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-3.txt
pymemcache-4: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-4.txt
lint-instrumentation-pymemcache: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-4.txt
pymongo: {[testenv]test_deps}
pymongo: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymongo/test-requirements.txt
psycopg: {[testenv]test_deps}
py3{9}-test-instrumentation-psycopg: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-0.txt
py3{10,11,12,13,14}-test-instrumentation-psycopg: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-1.txt
pypy3-test-instrumentation-psycopg: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-1.txt
lint-instrumentation-psycopg: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-1.txt
psycopg2: {[testenv]test_deps}
psycopg2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg2/test-requirements.txt
psycopg2-binary: {[testenv]test_deps}
psycopg2-binary: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg2/test-requirements-binary.txt
pymysql: {[testenv]test_deps}
pymysql: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymysql/test-requirements.txt
pymssql: {[testenv]test_deps}
pymssql: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pymssql/test-requirements.txt
pyramid: {[testenv]test_deps}
pyramid: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-pyramid/test-requirements.txt
sqlite3: {[testenv]test_deps}
sqlite3: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlite3/test-requirements.txt
redis: {[testenv]test_deps}
redis: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-redis/test-requirements.txt
remoulade: {[testenv]test_deps}
remoulade: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-remoulade/test-requirements.txt
requests: {[testenv]test_deps}
requests: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-requests/test-requirements.txt
starlette: {[testenv]test_deps}
starlette-{oldest,lint}: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-starlette/test-requirements.oldest.txt
starlette-latest: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-starlette/test-requirements.latest.txt
system-metrics: {[testenv]test_deps}
system-metrics: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-system-metrics/test-requirements.txt
threading: {[testenv]test_deps}
threading: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt
tornado: {[testenv]test_deps}
tornado: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-tornado/test-requirements.txt
tortoiseorm: {[testenv]test_deps}
tortoiseorm: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-tortoiseorm/test-requirements.txt
jinja2: {[testenv]test_deps}
jinja2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-jinja2/test-requirements.txt
logging: {[testenv]test_deps}
logging: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-logging/test-requirements.txt
aiohttp-client: {[testenv]test_deps}
aiohttp-client: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-client/test-requirements.txt
aiohttp-server: {[testenv]test_deps}
aiohttp-server: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-server/test-requirements.txt
aiopg: {[testenv]test_deps}
aiopg: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-aiopg/test-requirements.txt
richconsole: {[testenv]test_deps}
richconsole: -r {toxinidir}/exporter/opentelemetry-exporter-richconsole/test-requirements.txt
prometheus: {[testenv]test_deps}
prometheus: -r {toxinidir}/exporter/opentelemetry-exporter-prometheus-remote-write/test-requirements.txt
sqlalchemy: {[testenv]test_deps}
sqlalchemy-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-0.txt
sqlalchemy-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-1.txt
sqlalchemy-2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-2.txt
lint-instrumentation-sqlalchemy: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-2.txt
elasticsearch: {[testenv]test_deps}
elasticsearch-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-0.txt
elasticsearch-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-1.txt
elasticsearch-2: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt
lint-instrumentation-elasticsearch: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt
asyncio: {[testenv]test_deps}
asyncio: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncio/test-requirements.txt
httpx: {[testenv]test_deps}
httpx-0: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-0.txt
httpx-1: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-1.txt
lint-instrumentation-httpx: -r {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-1.txt
# packages that are released individually should provide a test-requirements.txt with the lowest version of OTel API
# and SDK supported to test we are honoring it
sdk-extension-aws-0: -r {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws/test-requirements-0.txt
# and the latest version of OTel API and SDK
sdk-extension-aws-1: {[testenv]test_deps}
sdk-extension-aws-1: -r {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws/test-requirements-1.txt
lint-sdk-extension-aws: -r {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws/test-requirements-0.txt
benchmark-sdk-extension-aws: -r {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws/benchmark-requirements.txt
resource-detector-containerid: {[testenv]test_deps}
resource-detector-containerid: -r {toxinidir}/resource/opentelemetry-resource-detector-containerid/test-requirements.txt
# packages that are released individually should provide a test-requirements.txt with the lowest version of OTel API
# and SDK supported to test we are honoring it
resource-detector-azure-0: -r {toxinidir}/resource/opentelemetry-resource-detector-azure/test-requirements-0.txt
# and the latest version of OTel API and SDK
resource-detector-azure-1: {[testenv]test_deps}
resource-detector-azure-1: -r {toxinidir}/resource/opentelemetry-resource-detector-azure/test-requirements-1.txt
lint-resource-detector-azure: -r {toxinidir}/resource/opentelemetry-resource-detector-azure/test-requirements-0.txt
propagator-ot-trace: {[testenv]test_deps}
propagator-ot-trace: -r {toxinidir}/propagator/opentelemetry-propagator-ot-trace/test-requirements.txt
# packages that are released individually should provide a test-requirements.txt with the lowest version of OTel API
# and SDK supported to test we are honoring it
propagator-aws-xray-0: -r {toxinidir}/propagator/opentelemetry-propagator-aws-xray/test-requirements-0.txt
# and the latest version of OTel API and SDK
propagator-aws-xray-1: {[testenv]test_deps}
propagator-aws-xray-1: -r {toxinidir}/propagator/opentelemetry-propagator-aws-xray/test-requirements-1.txt
lint-propagator-aws-xray: -r {toxinidir}/propagator/opentelemetry-propagator-aws-xray/test-requirements-0.txt
benchmark-propagator-aws-xray: -r {toxinidir}/propagator/opentelemetry-propagator-aws-xray/benchmark-requirements.txt
processor-baggage: {[testenv]test_deps}
processor-baggage: -r {toxinidir}/processor/opentelemetry-processor-baggage/test-requirements.txt
util-http: {[testenv]test_deps}
util-http: -r {toxinidir}/util/opentelemetry-util-http/test-requirements.txt
util-http: {toxinidir}/util/opentelemetry-util-http
exporter-credential-provider-gcp: -r {toxinidir}/exporter/opentelemetry-exporter-credential-provider-gcp/test-requirements.txt
exporter-credential-provider-gcp: {toxinidir}/exporter/opentelemetry-exporter-credential-provider-gcp
util-genai: {[testenv]test_deps}
util-genai: -r {toxinidir}/util/opentelemetry-util-genai/test-requirements.txt
util-genai: {toxinidir}/util/opentelemetry-util-genai
; FIXME: add coverage testing
allowlist_externals =
sh
pytest
setenv =
; override CORE_REPO_SHA via env variable when testing other branches/commits than main
; i.e: CORE_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e <env to test>
CORE_REPO_SHA={env:CORE_REPO_SHA:main}
CORE_REPO=git+https://github.com/open-telemetry/opentelemetry-python.git@{env:CORE_REPO_SHA}
UV_CONFIG_FILE={toxinidir}/tox-uv.toml
PIP_CONSTRAINTS={toxinidir}/test-constraints.txt
UV_BUILD_CONSTRAINT={toxinidir}/test-constraints.txt
commands_pre =
; In order to get a health coverage report,
; we have to install packages in editable mode.
coverage: python {toxinidir}/scripts/eachdist.py install --editable
commands =
test-distro: pytest {toxinidir}/opentelemetry-distro/tests {posargs}
lint-distro: pylint {toxinidir}/opentelemetry-distro
test-opentelemetry-instrumentation: pytest {toxinidir}/opentelemetry-instrumentation/tests {posargs}
lint-opentelemetry-instrumentation: pylint {toxinidir}/opentelemetry-instrumentation
test-instrumentation-aiohttp-client: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-client/tests {posargs}
lint-instrumentation-aiohttp-client: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-aiohttp-client"
test-instrumentation-aiohttp-server: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-server/tests {posargs}
lint-instrumentation-aiohttp-server: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-aiohttp-server"
test-instrumentation-aiopg: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-aiopg/tests {posargs}
lint-instrumentation-aiopg: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-aiopg"
test-instrumentation-asgi: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-asgi/tests {posargs}
lint-instrumentation-asgi: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-asgi"
test-instrumentation-asyncclick: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncclick/tests {posargs}
lint-instrumentation-asyncclick: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-asyncclick"
test-instrumentation-asyncpg: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg/tests {posargs}
lint-instrumentation-asyncpg: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-asyncpg"
test-instrumentation-aws-lambda: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-aws-lambda/tests {posargs}
lint-instrumentation-aws-lambda: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-aws-lambda"
test-instrumentation-boto: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-boto/tests {posargs}
lint-instrumentation-boto: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-boto"
test-instrumentation-botocore: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-botocore/tests {posargs}
lint-instrumentation-botocore: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-botocore"
test-instrumentation-boto3sqs: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-boto3sqs/tests {posargs}
lint-instrumentation-boto3sqs: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-boto3sqs"
test-instrumentation-cassandra: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-cassandra/tests {posargs}
lint-instrumentation-cassandra: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-cassandra"
test-instrumentation-celery: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-celery/tests {posargs}
lint-instrumentation-celery: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-celery"
test-instrumentation-click: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-click/tests {posargs}
lint-instrumentation-click: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-click"
test-instrumentation-dbapi: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi/tests {posargs}
lint-instrumentation-dbapi: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-dbapi"
test-instrumentation-django: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-django/tests {posargs}
lint-instrumentation-django: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-django"
test-instrumentation-elasticsearch: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch/tests {posargs}
lint-instrumentation-elasticsearch: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-elasticsearch"
test-instrumentation-falcon: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon/tests {posargs}
lint-instrumentation-falcon: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-falcon"
test-instrumentation-fastapi: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/tests {posargs}
lint-instrumentation-fastapi: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-fastapi"
test-instrumentation-flask: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-flask/tests {posargs}
lint-instrumentation-flask: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-flask"
test-instrumentation-urllib: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib/tests {posargs}
lint-instrumentation-urllib: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-urllib"
test-instrumentation-urllib3: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3/tests {posargs}
lint-instrumentation-urllib3: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-urllib3"
test-instrumentation-grpc: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc/tests {posargs}
lint-instrumentation-grpc: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-grpc"
test-instrumentation-jinja2: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-jinja2/tests {posargs}
lint-instrumentation-jinja2: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-jinja2"
test-instrumentation-aiokafka: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-aiokafka/tests {posargs}
lint-instrumentation-aiokafka: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-aiokafka"
test-instrumentation-kafka-python: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python/tests {posargs}
lint-instrumentation-kafka-python: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-kafka-python"
; Test only for kafka-pythonng instrumentation as the only difference between kafka-python and kafka-pythonng is the version of kafka-python
test-instrumentation-kafka-pythonng: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python/tests {posargs}
test-instrumentation-confluent-kafka: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests {posargs}
lint-instrumentation-confluent-kafka: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-confluent-kafka"
test-instrumentation-logging: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-logging/tests {posargs}
lint-instrumentation-logging: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-logging"
test-instrumentation-mysql: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-mysql/tests {posargs}
lint-instrumentation-mysql: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-mysql"
test-instrumentation-mysqlclient: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-mysqlclient/tests {posargs}
lint-instrumentation-mysqlclient: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-mysqlclient"
test-instrumentation-openai-v2: pytest {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests {posargs}
lint-instrumentation-openai-v2: sh -c "cd instrumentation-genai && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-openai-v2"
test-instrumentation-openai_agents-v2: pytest {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-openai-agents-v2/tests {posargs}
lint-instrumentation-openai_agents-v2: sh -c "cd instrumentation-genai && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-openai-agents-v2"
test-instrumentation-vertexai: pytest {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests --vcr-record=none {posargs}
lint-instrumentation-vertexai: sh -c "cd instrumentation-genai && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-vertexai"
test-instrumentation-google-genai: pytest {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-google-genai/tests --vcr-record=none {posargs}
lint-instrumentation-google-genai: sh -c "cd instrumentation-genai && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-google-genai"
test-instrumentation-anthropic: pytest {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests --vcr-record=none {posargs}
lint-instrumentation-anthropic: sh -c "cd instrumentation-genai && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-anthropic"
test-instrumentation-claude-agent-sdk: pytest {toxinidir}/instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk/tests --vcr-record=none {posargs}
lint-instrumentation-claude-agent-sdk: sh -c "cd instrumentation-genai && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-claude-agent-sdk"
test-instrumentation-sio-pika: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-pika/tests {posargs}
lint-instrumentation-sio-pika: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-pika"
test-instrumentation-aio-pika: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika/tests {posargs}
lint-instrumentation-aio-pika: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-aio-pika"
test-instrumentation-psycopg: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg/tests {posargs}
lint-instrumentation-psycopg: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-psycopg"
test-instrumentation-psycopg2: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg2/tests {posargs}
lint-instrumentation-psycopg2: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-psycopg2"
; Test only for psycopg2-binary instrumentation as the only difference between psycopg2 and psycopg2-binary is the install method
test-instrumentation-psycopg2-binary: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg2/tests {posargs}
test-instrumentation-pymemcache: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache/tests {posargs}
lint-instrumentation-pymemcache: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-pymemcache"
test-instrumentation-pymongo: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-pymongo/tests {posargs}
lint-instrumentation-pymongo: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-pymongo"
test-instrumentation-pymysql: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-pymysql/tests {posargs}
lint-instrumentation-pymysql: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-pymysql"
test-instrumentation-pymssql: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-pymssql/tests {posargs}
lint-instrumentation-pymssql: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-pymssql"
test-instrumentation-pyramid: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-pyramid/tests {posargs}
lint-instrumentation-pyramid: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-pyramid"
test-instrumentation-redis: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-redis/tests {posargs}
lint-instrumentation-redis: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-redis"
test-instrumentation-remoulade: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-remoulade/tests {posargs}
lint-instrumentation-remoulade: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-remoulade"
test-instrumentation-requests: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-requests/tests {posargs}
lint-instrumentation-requests: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-requests"
test-instrumentation-sqlalchemy: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy/tests {posargs}
lint-instrumentation-sqlalchemy: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-sqlalchemy"
test-instrumentation-sqlite3: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlite3/tests {posargs}
lint-instrumentation-sqlite3: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-sqlite3"
test-instrumentation-starlette: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-starlette/tests {posargs}
lint-instrumentation-starlette: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-starlette"
test-instrumentation-system-metrics: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-system-metrics/tests {posargs}
lint-instrumentation-system-metrics: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-system-metrics"
test-instrumentation-threading: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-threading/tests {posargs}
lint-instrumentation-threading: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-threading"
test-instrumentation-tornado: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-tornado/tests {posargs}
lint-instrumentation-tornado: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-tornado"
test-instrumentation-tortoiseorm: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-tortoiseorm/tests {posargs}
lint-instrumentation-tortoiseorm: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-tortoiseorm"
test-instrumentation-wsgi: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi/tests {posargs}
lint-instrumentation-wsgi: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-wsgi"
test-instrumentation-httpx: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx/tests {posargs}
lint-instrumentation-httpx: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-httpx"
test-instrumentation-asyncio: pytest {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncio/tests {posargs}
lint-instrumentation-asyncio: sh -c "cd instrumentation && pylint --rcfile ../.pylintrc opentelemetry-instrumentation-asyncio"
test-util-http: pytest {toxinidir}/util/opentelemetry-util-http/tests {posargs}
lint-util-http: sh -c "cd util && pylint --rcfile ../.pylintrc opentelemetry-util-http"
test-exporter-credential-provider-gcp: pytest {toxinidir}/exporter/opentelemetry-exporter-credential-provider-gcp/tests {posargs}
lint-exporter-credential-provider-gcp: sh -c "cd exporter && pylint --rcfile ../.pylintrc opentelemetry-exporter-credential-provider-gcp"
test-util-genai: pytest {toxinidir}/util/opentelemetry-util-genai/tests {posargs}
lint-util-genai: sh -c "cd util && pylint --rcfile ../.pylintrc opentelemetry-util-genai"
test-sdk-extension-aws: pytest {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws/tests {posargs}
lint-sdk-extension-aws: sh -c "cd sdk-extension && pylint --rcfile ../.pylintrc opentelemetry-sdk-extension-aws"
benchmark-sdk-extension-aws: pytest {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws/benchmarks {posargs} --benchmark-json=sdk-extension-aws-benchmark.json
test-resource-detector-containerid: pytest {toxinidir}/resource/opentelemetry-resource-detector-containerid/tests {posargs}
lint-resource-detector-containerid: sh -c "cd resource && pylint --rcfile ../.pylintrc opentelemetry-resource-detector-containerid"
test-resource-detector-azure: pytest {toxinidir}/resource/opentelemetry-resource-detector-azure/tests {posargs}
lint-resource-detector-azure: sh -c "cd resource && pylint --rcfile ../.pylintrc opentelemetry-resource-detector-azure"
test-processor-baggage: pytest {toxinidir}/processor/opentelemetry-processor-baggage/tests {posargs}
lint-processor-baggage: sh -c "cd processor && pylint --rcfile ../.pylintrc opentelemetry-processor-baggage"
test-propagator-aws-xray: pytest {toxinidir}/propagator/opentelemetry-propagator-aws-xray/tests {posargs}
lint-propagator-aws-xray: sh -c "cd propagator && pylint --rcfile ../.pylintrc opentelemetry-propagator-aws-xray"
benchmark-propagator-aws-xray: pytest {toxinidir}/propagator/opentelemetry-propagator-aws-xray/benchmarks {posargs} --benchmark-json=propagator-aws-xray-benchmark.json
test-propagator-ot-trace: pytest {toxinidir}/propagator/opentelemetry-propagator-ot-trace/tests {posargs}
lint-propagator-ot-trace: sh -c "cd propagator && pylint --rcfile ../.pylintrc opentelemetry-propagator-ot-trace"
test-exporter-richconsole: pytest {toxinidir}/exporter/opentelemetry-exporter-richconsole/tests {posargs}
lint-exporter-richconsole: sh -c "cd exporter && pylint --rcfile ../.pylintrc opentelemetry-exporter-richconsole"
test-exporter-prometheus-remote-write: pytest {toxinidir}/exporter/opentelemetry-exporter-prometheus-remote-write/tests {posargs}
lint-exporter-prometheus-remote-write: sh -c "cd exporter && pylint --rcfile ../.pylintrc opentelemetry-exporter-prometheus-remote-write"
coverage: {toxinidir}/scripts/coverage.sh
[testenv:docs]
deps =
-c {toxinidir}/dev-requirements.txt
-r {toxinidir}/docs-requirements.txt
pytest
{[testenv]test_deps}
{toxinidir}/opentelemetry-instrumentation
{toxinidir}/util/opentelemetry-util-http
{toxinidir}/util/opentelemetry-util-genai
{toxinidir}/exporter/opentelemetry-exporter-credential-provider-gcp
changedir = docs
commands =
sphinx-build -E -a -W -b html -T . _build/html
[testenv:spellcheck]
basepython: python3
recreate = True
deps =
codespell==2.2.6
commands =
codespell
[testenv:docker-tests]
basepython: python3
deps =
{[testenv]test_deps}
-r {toxinidir}/tests/opentelemetry-docker-tests/tests/test-requirements.txt
-e {toxinidir}/opentelemetry-instrumentation
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-celery
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-pika
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiokafka
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-confluent-kafka
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-django
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-flask
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-mysql
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-mysqlclient
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg2
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymongo
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymysql
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymssql
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiopg
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-redis
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-remoulade
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi
-e {toxinidir}/util/opentelemetry-util-http
opentelemetry-exporter-opencensus@{env:CORE_REPO}\#egg=opentelemetry-exporter-opencensus&subdirectory=exporter/opentelemetry-exporter-opencensus
changedir =
tests/opentelemetry-docker-tests/tests
commands_pre =
sh -c "sudo apt update -y && sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 unixodbc-dev unixodbc"
python -c "import pyodbc; print(pyodbc.drivers())"
docker-compose up -d
python check_availability.py
commands =
pytest {posargs}
commands_post =
docker-compose down -v
[testenv:generate]
deps =
-r {toxinidir}/gen-requirements.txt
allowlist_externals =
{toxinidir}/scripts/generate_instrumentation_bootstrap.py
{toxinidir}/scripts/generate_instrumentation_readme.py
{toxinidir}/scripts/generate_instrumentation_metapackage.py
pytest
commands =
{toxinidir}/scripts/generate_instrumentation_bootstrap.py
{toxinidir}/scripts/generate_instrumentation_readme.py
{toxinidir}/scripts/generate_instrumentation_metapackage.py
[testenv:generate-workflows]
recreate = True
deps =
{toxinidir}/.github/workflows/generate_workflows_lib
commands =
python {toxinidir}/.github/workflows/generate_workflows.py
[testenv:shellcheck]
commands_pre =
sh -c "sudo apt update -y && sudo apt install --assume-yes shellcheck"
commands =
sh -c "find {toxinidir} -name \*.sh | xargs shellcheck --severity=warning"
[testenv:{precommit,ruff}]
basepython: python3
deps =
-c {toxinidir}/dev-requirements.txt
pre-commit
commands =
pre-commit run --color=always --all-files {posargs}
[testenv:typecheck]
deps =
-c {toxinidir}/dev-requirements.txt
pyright
{[testenv]test_deps}
{toxinidir}/opentelemetry-instrumentation
{toxinidir}/util/opentelemetry-util-http
{toxinidir}/util/opentelemetry-util-genai[upload]
{toxinidir}/instrumentation-genai/opentelemetry-instrumentation-vertexai[instruments]
{toxinidir}/instrumentation-genai/opentelemetry-instrumentation-google-genai[instruments]
{toxinidir}/instrumentation-genai/opentelemetry-instrumentation-anthropic[instruments]
{toxinidir}/instrumentation-genai/opentelemetry-instrumentation-langchain[instruments]
{toxinidir}/instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk[instruments]
{toxinidir}/instrumentation/opentelemetry-instrumentation-aiokafka[instruments]
{toxinidir}/instrumentation/opentelemetry-instrumentation-asyncclick[instruments]
{toxinidir}/exporter/opentelemetry-exporter-credential-provider-gcp
{toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-client[instruments]
commands =
pyright