[project] name = "traceloop-sdk" version = "0.62.4" description = "Traceloop Software Development Kit (SDK) for Python" authors = [ { name = "Gal Kleinman", email = "gal@traceloop.com" }, { name = "Nir Gazit", email = "nir@traceloop.com" }, { name = "Tomer Friedman", email = "tomer@traceloop.com" }, ] license = "Apache-2.0" readme = "README.md" requires-python = ">=3.10,<4" dependencies = [ "colorama>=0.4.6,<0.5.0", "tenacity>=8.2.3,<10.0", "pydantic>=1", "jinja2>=3.1.5,<4", "deprecated>=1.2.14,<2", "aiohttp>=3.11.11,<4", "requests>=2.31.0,<3", "httpx>=0.23.0,<1", "cuid>=0.4,<0.5", ] [project.urls] Repository = "https://github.com/traceloop/openllmetry" Documentation = "https://traceloop.com/docs/openllmetry" [project.optional-dependencies] datasets = ["pandas"] all = [ "opentelemetry-instrumentation-agno", "opentelemetry-instrumentation-mistralai", "opentelemetry-instrumentation-openai", "opentelemetry-instrumentation-openai-agents", "opentelemetry-instrumentation-ollama", "opentelemetry-instrumentation-anthropic", "opentelemetry-instrumentation-cohere", "opentelemetry-instrumentation-crewai", "opentelemetry-instrumentation-google-generativeai", "opentelemetry-instrumentation-pinecone", "opentelemetry-instrumentation-qdrant", "opentelemetry-instrumentation-langchain", "opentelemetry-instrumentation-litellm", "opentelemetry-instrumentation-lancedb", "opentelemetry-instrumentation-chromadb", "opentelemetry-instrumentation-transformers", "opentelemetry-instrumentation-together", "opentelemetry-instrumentation-llamaindex", "opentelemetry-instrumentation-milvus", "opentelemetry-instrumentation-haystack", "opentelemetry-instrumentation-bedrock", "opentelemetry-instrumentation-sagemaker", "opentelemetry-instrumentation-replicate", "opentelemetry-instrumentation-vertexai", "opentelemetry-instrumentation-voyageai", "opentelemetry-instrumentation-watsonx", "opentelemetry-instrumentation-weaviate", "opentelemetry-instrumentation-writer", "opentelemetry-instrumentation-alephalpha", "opentelemetry-instrumentation-marqo", "opentelemetry-instrumentation-groq", "opentelemetry-instrumentation-mcp", ] [dependency-groups] dev = [ "autopep8>=2.2.0,<3", "ruff>=0.4.0", "pytest>=8.2.2,<10", "pytest-sugar==1.1.1", "mypy>=1.18.2,<2", "types-requests>=2.31.0,<3", "types-colorama>=0.4.15,<0.5.0", "pandas-stubs", "datamodel-code-generator>=0.26.0,<0.55.0", ] test = [ "openai>=1.31.1,<3", "vcrpy>=8.0.0,<9", "pytest-recording>=0.13.1,<0.14.0", "pydantic<3", "pytest-asyncio>=0.23.7,<1.4.0", "anthropic>=0.86.0,<1", "langchain>=1.0.0,<2.0.0", "langchain-openai>=1.0.0,<2.0.0", "pandas>=1.0.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["traceloop"] [tool.coverage.run] branch = true source = ["traceloop/sdk"] [tool.coverage.report] exclude_lines = ["if TYPE_CHECKING:"] show_missing = true [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_any_unimported = false no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true check_untyped_defs = true strict_equality = true namespace_packages = true explicit_package_bases = true plugins = ["pydantic.mypy"] exclude = [ "traceloop/sdk/decorators", "traceloop/sdk/prompts", "traceloop/sdk/tracing", "traceloop/sdk/utils", "traceloop/sdk/__init__.py", "traceloop/sdk/experiment/utils.py", "tests/", ] [[tool.mypy.overrides]] module = [ "cuid.*", "posthog.*", "opentelemetry.semconv_ai.*", ] ignore_missing_imports = true [pydantic-mypy] init_forbid_extra = true init_typed = true warn_required_dynamic_aliases = true [tool.ruff] line-length = 120 exclude = [".git", "__pycache__", "build", "dist", ".venv", ".pytest_cache"] [tool.ruff.lint] select = ["E", "F", "W"] [tool.uv] constraint-dependencies = ["urllib3>=2.6.3", "pip>=25.3"] [tool.uv.sources] opentelemetry-instrumentation-agno = { path = "../opentelemetry-instrumentation-agno", editable = true } opentelemetry-instrumentation-alephalpha = { path = "../opentelemetry-instrumentation-alephalpha", editable = true } opentelemetry-instrumentation-anthropic = { path = "../opentelemetry-instrumentation-anthropic", editable = true } opentelemetry-instrumentation-bedrock = { path = "../opentelemetry-instrumentation-bedrock", editable = true } opentelemetry-instrumentation-chromadb = { path = "../opentelemetry-instrumentation-chromadb", editable = true } opentelemetry-instrumentation-cohere = { path = "../opentelemetry-instrumentation-cohere", editable = true } opentelemetry-instrumentation-crewai = { path = "../opentelemetry-instrumentation-crewai", editable = true } opentelemetry-instrumentation-google-generativeai = { path = "../opentelemetry-instrumentation-google-generativeai", editable = true } opentelemetry-instrumentation-groq = { path = "../opentelemetry-instrumentation-groq", editable = true } opentelemetry-instrumentation-haystack = { path = "../opentelemetry-instrumentation-haystack", editable = true } opentelemetry-instrumentation-lancedb = { path = "../opentelemetry-instrumentation-lancedb", editable = true } opentelemetry-instrumentation-langchain = { path = "../opentelemetry-instrumentation-langchain", editable = true } opentelemetry-instrumentation-litellm = { path = "../opentelemetry-instrumentation-litellm", editable = true } opentelemetry-instrumentation-llamaindex = { path = "../opentelemetry-instrumentation-llamaindex", editable = true } opentelemetry-instrumentation-marqo = { path = "../opentelemetry-instrumentation-marqo", editable = true } opentelemetry-instrumentation-mcp = { path = "../opentelemetry-instrumentation-mcp", editable = true } opentelemetry-instrumentation-milvus = { path = "../opentelemetry-instrumentation-milvus", editable = true } opentelemetry-instrumentation-mistralai = { path = "../opentelemetry-instrumentation-mistralai", editable = true } opentelemetry-instrumentation-ollama = { path = "../opentelemetry-instrumentation-ollama", editable = true } opentelemetry-instrumentation-openai = { path = "../opentelemetry-instrumentation-openai", editable = true } opentelemetry-instrumentation-openai-agents = { path = "../opentelemetry-instrumentation-openai-agents", editable = true } opentelemetry-instrumentation-pinecone = { path = "../opentelemetry-instrumentation-pinecone", editable = true } opentelemetry-instrumentation-qdrant = { path = "../opentelemetry-instrumentation-qdrant", editable = true } opentelemetry-instrumentation-replicate = { path = "../opentelemetry-instrumentation-replicate", editable = true } opentelemetry-instrumentation-sagemaker = { path = "../opentelemetry-instrumentation-sagemaker", editable = true } opentelemetry-instrumentation-together = { path = "../opentelemetry-instrumentation-together", editable = true } opentelemetry-instrumentation-transformers = { path = "../opentelemetry-instrumentation-transformers", editable = true } opentelemetry-instrumentation-vertexai = { path = "../opentelemetry-instrumentation-vertexai", editable = true } opentelemetry-instrumentation-voyageai = { path = "../opentelemetry-instrumentation-voyageai", editable = true } opentelemetry-instrumentation-watsonx = { path = "../opentelemetry-instrumentation-watsonx", editable = true } opentelemetry-instrumentation-weaviate = { path = "../opentelemetry-instrumentation-weaviate", editable = true } opentelemetry-instrumentation-writer = { path = "../opentelemetry-instrumentation-writer", editable = true }