mseep-agentops 0.4.18__tar.gz → 0.4.22__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mseep_agentops-0.4.22/.gitattributes +1 -0
- mseep_agentops-0.4.22/.gitignore +183 -0
- mseep_agentops-0.4.22/.pre-commit-config.yaml +9 -0
- mseep_agentops-0.4.22/CONTRIBUTING.md +390 -0
- {mseep_agentops-0.4.18/mseep_agentops.egg-info → mseep_agentops-0.4.22}/PKG-INFO +30 -40
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/README.md +14 -7
- mseep_agentops-0.4.22/TOS.md +5 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/api/base.py +28 -30
- mseep_agentops-0.4.22/agentops/client/api/versions/v3.py +69 -0
- mseep_agentops-0.4.22/agentops/client/api/versions/v4.py +145 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/client.py +98 -29
- mseep_agentops-0.4.22/agentops/client/http/README.md +87 -0
- mseep_agentops-0.4.22/agentops/client/http/http_client.py +169 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/config.py +8 -2
- mseep_agentops-0.4.22/agentops/instrumentation/OpenTelemetry.md +133 -0
- mseep_agentops-0.4.22/agentops/instrumentation/README.md +167 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/__init__.py +13 -1
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/ag2/__init__.py +18 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/ag2/instrumentor.py +922 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/__init__.py +19 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/attributes/__init__.py +20 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/attributes/agent.py +250 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/attributes/metrics.py +214 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/attributes/storage.py +158 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/attributes/team.py +195 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/attributes/tool.py +210 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/attributes/workflow.py +254 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/agno/instrumentor.py +1313 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/crewai/LICENSE +201 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/crewai/NOTICE.md +10 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/crewai/__init__.py +6 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/crewai/crewai_span_attributes.py +335 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/crewai/instrumentation.py +535 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/crewai/version.py +1 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/google_adk/__init__.py +19 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/google_adk/instrumentor.py +68 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/google_adk/patch.py +767 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/haystack/__init__.py +1 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/haystack/instrumentor.py +186 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/langgraph/__init__.py +3 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/langgraph/attributes.py +54 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/langgraph/instrumentation.py +598 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/langgraph/version.py +1 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/README.md +156 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/SPANS.md +145 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/TRACING_API.md +144 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/__init__.py +30 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/attributes/common.py +549 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/attributes/completion.py +172 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/attributes/model.py +58 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/attributes/tokens.py +275 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/exporter.py +469 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/instrumentor.py +107 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/processor.py +58 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/smolagents/README.md +88 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/smolagents/__init__.py +12 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/smolagents/attributes/agent.py +354 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/smolagents/attributes/model.py +205 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/smolagents/instrumentor.py +286 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/smolagents/stream_wrapper.py +258 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/xpander/__init__.py +15 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/xpander/context.py +112 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/xpander/instrumentor.py +877 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/xpander/trace_probe.py +86 -0
- mseep_agentops-0.4.22/agentops/instrumentation/agentic/xpander/version.py +3 -0
- mseep_agentops-0.4.22/agentops/instrumentation/common/README.md +65 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/attributes.py +1 -2
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/__init__.py +24 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/attributes/__init__.py +23 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/attributes/common.py +64 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/attributes/message.py +541 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/attributes/tools.py +231 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/event_handler_wrapper.py +90 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/instrumentor.py +146 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/anthropic/stream_wrapper.py +436 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/README.md +33 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/__init__.py +24 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/attributes/__init__.py +25 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/attributes/chat.py +125 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/attributes/common.py +88 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/attributes/model.py +284 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/instrumentor.py +170 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/google_genai/stream_wrapper.py +238 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/ibm_watsonx_ai/__init__.py +28 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/ibm_watsonx_ai/attributes/__init__.py +27 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/ibm_watsonx_ai/attributes/attributes.py +277 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/ibm_watsonx_ai/attributes/common.py +104 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/ibm_watsonx_ai/instrumentor.py +162 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/ibm_watsonx_ai/stream_wrapper.py +302 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/mem0/__init__.py +45 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/mem0/common.py +377 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/mem0/instrumentor.py +270 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/mem0/memory.py +430 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/__init__.py +21 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/attributes/__init__.py +7 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/attributes/common.py +55 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/attributes/response.py +607 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/config.py +36 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/instrumentor.py +312 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/stream_wrapper.py +941 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/utils.py +44 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/v0.py +176 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/v0_wrappers.py +483 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/__init__.py +30 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/assistant.py +277 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/chat.py +259 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/completion.py +109 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/embeddings.py +94 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/image_gen.py +75 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/responses.py +191 -0
- mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/wrappers/shared.py +81 -0
- mseep_agentops-0.4.22/agentops/instrumentation/utilities/concurrent_futures/__init__.py +10 -0
- mseep_agentops-0.4.22/agentops/instrumentation/utilities/concurrent_futures/instrumentation.py +206 -0
- mseep_agentops-0.4.22/agentops/integration/callbacks/dspy/__init__.py +11 -0
- mseep_agentops-0.4.22/agentops/integration/callbacks/dspy/callback.py +471 -0
- mseep_agentops-0.4.22/agentops/integration/callbacks/langchain/README.md +59 -0
- mseep_agentops-0.4.22/agentops/integration/callbacks/langchain/__init__.py +15 -0
- mseep_agentops-0.4.22/agentops/integration/callbacks/langchain/callback.py +791 -0
- mseep_agentops-0.4.22/agentops/integration/callbacks/langchain/utils.py +54 -0
- mseep_agentops-0.4.22/agentops/legacy/crewai.md +121 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/logging/instrument_logging.py +4 -0
- mseep_agentops-0.4.22/agentops/sdk/README.md +220 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/core.py +75 -32
- mseep_agentops-0.4.22/agentops/sdk/descriptors/classproperty.py +28 -0
- mseep_agentops-0.4.22/agentops/sdk/exporters.py +206 -0
- mseep_agentops-0.4.22/agentops/semconv/README.md +125 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/span_kinds.py +0 -2
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/validation.py +102 -63
- mseep_agentops-0.4.22/llms.txt +4092 -0
- mseep_agentops-0.4.22/pyproject.toml +180 -0
- mseep_agentops-0.4.22/uv.lock +2990 -0
- mseep_agentops-0.4.18/PKG-INFO +0 -49
- mseep_agentops-0.4.18/agentops/client/api/versions/v3.py +0 -65
- mseep_agentops-0.4.18/agentops/client/api/versions/v4.py +0 -104
- mseep_agentops-0.4.18/agentops/client/http/http_client.py +0 -215
- mseep_agentops-0.4.18/agentops/sdk/exporters.py +0 -87
- mseep_agentops-0.4.18/mseep_agentops.egg-info/SOURCES.txt +0 -97
- mseep_agentops-0.4.18/mseep_agentops.egg-info/dependency_links.txt +0 -1
- mseep_agentops-0.4.18/mseep_agentops.egg-info/requires.txt +0 -22
- mseep_agentops-0.4.18/mseep_agentops.egg-info/top_level.txt +0 -2
- mseep_agentops-0.4.18/setup.cfg +0 -4
- mseep_agentops-0.4.18/setup.py +0 -23
- mseep_agentops-0.4.18/tests/conftest.py +0 -10
- mseep_agentops-0.4.18/tests/unit/client/__init__.py +0 -1
- mseep_agentops-0.4.18/tests/unit/client/test_http_adapter.py +0 -221
- mseep_agentops-0.4.18/tests/unit/client/test_http_client.py +0 -206
- mseep_agentops-0.4.18/tests/unit/conftest.py +0 -54
- mseep_agentops-0.4.18/tests/unit/sdk/__init__.py +0 -1
- mseep_agentops-0.4.18/tests/unit/sdk/instrumentation_tester.py +0 -207
- mseep_agentops-0.4.18/tests/unit/sdk/test_attributes.py +0 -392
- mseep_agentops-0.4.18/tests/unit/sdk/test_concurrent_instrumentation.py +0 -468
- mseep_agentops-0.4.18/tests/unit/sdk/test_decorators.py +0 -763
- mseep_agentops-0.4.18/tests/unit/sdk/test_exporters.py +0 -241
- mseep_agentops-0.4.18/tests/unit/sdk/test_factory.py +0 -1188
- mseep_agentops-0.4.18/tests/unit/sdk/test_internal_span_processor.py +0 -397
- mseep_agentops-0.4.18/tests/unit/sdk/test_resource_attributes.py +0 -35
- mseep_agentops-0.4.18/tests/unit/test_config.py +0 -82
- mseep_agentops-0.4.18/tests/unit/test_context_manager.py +0 -777
- mseep_agentops-0.4.18/tests/unit/test_events.py +0 -27
- mseep_agentops-0.4.18/tests/unit/test_host_env.py +0 -54
- mseep_agentops-0.4.18/tests/unit/test_init_py.py +0 -501
- mseep_agentops-0.4.18/tests/unit/test_serialization.py +0 -433
- mseep_agentops-0.4.18/tests/unit/test_session.py +0 -676
- mseep_agentops-0.4.18/tests/unit/test_user_agent.py +0 -34
- mseep_agentops-0.4.18/tests/unit/test_validation.py +0 -405
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/LICENSE +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/api/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/api/types.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/api/versions/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/http/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/client/http/http_adapter.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/enums.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/exceptions.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/dashboard.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/deprecation.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/env.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/serialization.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/system.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/time.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/helpers/version.py +0 -0
- {mseep_agentops-0.4.18/tests → mseep_agentops-0.4.22/agentops/instrumentation/agentic/openai_agents/attributes}/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/instrumentor.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/metrics.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/objects.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/span_management.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/streaming.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/token_counting.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/version.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/instrumentation/common/wrappers.py +0 -0
- /mseep_agentops-0.4.18/tests/unit/__init__.py → /mseep_agentops-0.4.22/agentops/instrumentation/providers/openai/attributes/tools.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/legacy/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/legacy/event.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/logging/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/logging/config.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/logging/formatters.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/attributes.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/decorators/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/decorators/factory.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/decorators/utility.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/processors.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/sdk/types.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/__init__.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/agent.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/core.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/enum.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/instrumentation.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/langchain.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/message.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/meters.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/resource.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/span_attributes.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/status.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/tool.py +0 -0
- {mseep_agentops-0.4.18 → mseep_agentops-0.4.22}/agentops/semconv/workflow.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
uv.lock binary
|
@@ -0,0 +1,183 @@
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
2
|
+
__pycache__/
|
3
|
+
*.py[cod]
|
4
|
+
*$py.class
|
5
|
+
|
6
|
+
# C extensions
|
7
|
+
*.so
|
8
|
+
|
9
|
+
# Distribution / packaging
|
10
|
+
.Python
|
11
|
+
build/
|
12
|
+
develop-eggs/
|
13
|
+
dist/
|
14
|
+
downloads/
|
15
|
+
eggs/
|
16
|
+
.eggs/
|
17
|
+
lib/
|
18
|
+
!app/dashboard/lib/
|
19
|
+
lib64/
|
20
|
+
parts/
|
21
|
+
sdist/
|
22
|
+
var/
|
23
|
+
wheels/
|
24
|
+
share/python-wheels/
|
25
|
+
*.egg-info/
|
26
|
+
.installed.cfg
|
27
|
+
*.egg
|
28
|
+
MANIFEST
|
29
|
+
|
30
|
+
# PyInstaller
|
31
|
+
# Usually these files are written by a python script from a template
|
32
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
33
|
+
*.manifest
|
34
|
+
*.spec
|
35
|
+
|
36
|
+
# Installer logs
|
37
|
+
pip-log.txt
|
38
|
+
pip-delete-this-directory.txt
|
39
|
+
|
40
|
+
# Unit test / coverage reports
|
41
|
+
htmlcov/
|
42
|
+
.tox/
|
43
|
+
.nox/
|
44
|
+
.coverage
|
45
|
+
.coverage.*
|
46
|
+
.cache
|
47
|
+
nosetests.xml
|
48
|
+
coverage.xml
|
49
|
+
*.cover
|
50
|
+
*.py,cover
|
51
|
+
.hypothesis/
|
52
|
+
.pytest_cache/
|
53
|
+
cover/
|
54
|
+
|
55
|
+
# Translations
|
56
|
+
*.mo
|
57
|
+
*.pot
|
58
|
+
|
59
|
+
# Django stuff:
|
60
|
+
*.log
|
61
|
+
local_settings.py
|
62
|
+
db.sqlite3
|
63
|
+
db.sqlite3-journal
|
64
|
+
|
65
|
+
# Flask stuff:
|
66
|
+
instance/
|
67
|
+
.webassets-cache
|
68
|
+
|
69
|
+
# Scrapy stuff:
|
70
|
+
.scrapy
|
71
|
+
|
72
|
+
# Sphinx documentation
|
73
|
+
docs/_build/
|
74
|
+
|
75
|
+
# PyBuilder
|
76
|
+
.pybuilder/
|
77
|
+
target/
|
78
|
+
|
79
|
+
# Jupyter Notebook
|
80
|
+
.ipynb_checkpoints
|
81
|
+
|
82
|
+
# IPython
|
83
|
+
profile_default/
|
84
|
+
ipython_config.py
|
85
|
+
|
86
|
+
# pyenv
|
87
|
+
# For a library or package, you might want to ignore these files since the code is
|
88
|
+
# intended to run in multiple environments; otherwise, check them in:
|
89
|
+
.python-version
|
90
|
+
|
91
|
+
# pipenv
|
92
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
93
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
94
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
95
|
+
# install all needed dependencies.
|
96
|
+
#Pipfile.lock
|
97
|
+
|
98
|
+
# poetry
|
99
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
100
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
101
|
+
# commonly ignored for libraries.
|
102
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
103
|
+
#poetry.lock
|
104
|
+
|
105
|
+
# pdm
|
106
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
107
|
+
#pdm.lock
|
108
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
109
|
+
# in version control.
|
110
|
+
# https://pdm.fming.dev/#use-with-ide
|
111
|
+
.pdm.toml
|
112
|
+
|
113
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
114
|
+
__pypackages__/
|
115
|
+
|
116
|
+
# Celery stuff
|
117
|
+
celerybeat-schedule
|
118
|
+
celerybeat.pid
|
119
|
+
|
120
|
+
# SageMath parsed files
|
121
|
+
*.sage.py
|
122
|
+
|
123
|
+
# Environments
|
124
|
+
.env
|
125
|
+
.venv
|
126
|
+
env/
|
127
|
+
venv/
|
128
|
+
ENV/
|
129
|
+
env.bak/
|
130
|
+
venv.bak/
|
131
|
+
|
132
|
+
# Spyder project settings
|
133
|
+
.spyderproject
|
134
|
+
.spyproject
|
135
|
+
|
136
|
+
# Rope project settings
|
137
|
+
.ropeproject
|
138
|
+
|
139
|
+
# mkdocs documentation
|
140
|
+
/site
|
141
|
+
|
142
|
+
# mypy
|
143
|
+
.mypy_cache/
|
144
|
+
.dmypy.json
|
145
|
+
dmypy.json
|
146
|
+
|
147
|
+
# Pyre type checker
|
148
|
+
.pyre/
|
149
|
+
|
150
|
+
# pytype static type analyzer
|
151
|
+
.pytype/
|
152
|
+
|
153
|
+
# Cython debug symbols
|
154
|
+
cython_debug/
|
155
|
+
|
156
|
+
# PyCharm
|
157
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
158
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
159
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
160
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
161
|
+
.idea/
|
162
|
+
|
163
|
+
# VSCode
|
164
|
+
.vscode/
|
165
|
+
|
166
|
+
# Cursor
|
167
|
+
.cursorrules
|
168
|
+
|
169
|
+
# Benchmarks
|
170
|
+
.benchmarks/
|
171
|
+
|
172
|
+
# MacOS
|
173
|
+
.DS_Store
|
174
|
+
|
175
|
+
# Database
|
176
|
+
.db
|
177
|
+
|
178
|
+
# Time travel
|
179
|
+
agentops_time_travel.json
|
180
|
+
.agentops_time_travel.yaml
|
181
|
+
|
182
|
+
# Node
|
183
|
+
node_modules
|
@@ -0,0 +1,390 @@
|
|
1
|
+
# Contributing to AgentOps
|
2
|
+
|
3
|
+
Thanks for checking out AgentOps. We're building tools to help developers like you make AI agents that actually work reliably. If you've ever tried to build an agent system, you know the pain - they're a nightmare to debug, impossible to monitor, and when something goes wrong... good luck figuring out why.
|
4
|
+
|
5
|
+
We created AgentOps to solve these headaches, and we'd love your help making it even better. Our SDK hooks into all the major Python frameworks (AG2, CrewAI, LangChain) and LLM providers (OpenAI, Anthropic, Cohere, etc.) to give you visibility into what your agents are actually doing.
|
6
|
+
|
7
|
+
## How You Can Help
|
8
|
+
|
9
|
+
There are tons of ways to contribute, and we genuinely appreciate all of them:
|
10
|
+
|
11
|
+
1. **Add More Providers**: Help us support new LLM providers. Each one helps more developers monitor their agents.
|
12
|
+
2. **Improve Framework Support**: Using a framework we don't support yet? Help us add it!
|
13
|
+
3. **Make Docs Better**: Found our docs confusing? Help us fix them! Clear documentation makes everyone's life easier.
|
14
|
+
4. **Share Your Experience**: Using AgentOps? Let us know what's working and what isn't. Your feedback shapes our roadmap.
|
15
|
+
|
16
|
+
Even if you're not ready to contribute code, we'd love to hear your thoughts. Drop into our Discord, open an issue, or start a discussion. We're building this for developers like you, so your input matters.
|
17
|
+
|
18
|
+
## Table of Contents
|
19
|
+
- [Getting Started](#getting-started)
|
20
|
+
- [Development Environment](#development-environment)
|
21
|
+
- [Testing](#testing)
|
22
|
+
- [Adding LLM Providers](#adding-llm-providers)
|
23
|
+
- [Code Style](#code-style)
|
24
|
+
- [Pull Request Process](#pull-request-process)
|
25
|
+
- [Documentation](#documentation)
|
26
|
+
|
27
|
+
## Getting Started
|
28
|
+
|
29
|
+
1. **Fork and Clone**:
|
30
|
+
First, fork the repository by clicking the 'Fork' button in the top right of the [AgentOps repository](https://github.com/AgentOps-AI/agentops). This creates your own copy of the repository where you can make changes.
|
31
|
+
|
32
|
+
Then clone your fork:
|
33
|
+
```bash
|
34
|
+
git clone https://github.com/YOUR_USERNAME/agentops.git
|
35
|
+
cd agentops
|
36
|
+
```
|
37
|
+
|
38
|
+
Add the upstream repository to stay in sync:
|
39
|
+
```bash
|
40
|
+
git remote add upstream https://github.com/AgentOps-AI/agentops.git
|
41
|
+
git fetch upstream
|
42
|
+
```
|
43
|
+
|
44
|
+
Before starting work on a new feature:
|
45
|
+
```bash
|
46
|
+
git checkout main
|
47
|
+
git pull upstream main
|
48
|
+
git checkout -b feature/your-feature-name
|
49
|
+
```
|
50
|
+
|
51
|
+
2. **Install Dependencies**:
|
52
|
+
```bash
|
53
|
+
pip install -e .
|
54
|
+
```
|
55
|
+
|
56
|
+
3. **Set Up Pre-commit Hooks**:
|
57
|
+
```bash
|
58
|
+
pre-commit install
|
59
|
+
```
|
60
|
+
|
61
|
+
## Development Environment
|
62
|
+
|
63
|
+
1. **Environment Variables**:
|
64
|
+
Create a `.env` file:
|
65
|
+
```
|
66
|
+
AGENTOPS_API_KEY=your_api_key
|
67
|
+
OPENAI_API_KEY=your_openai_key # For testing
|
68
|
+
ANTHROPIC_API_KEY=your_anthropic_key # For testing
|
69
|
+
# Other keys...
|
70
|
+
```
|
71
|
+
|
72
|
+
2. **Virtual Environment**:
|
73
|
+
We recommend using `poetry` or `venv`:
|
74
|
+
```bash
|
75
|
+
python -m venv venv
|
76
|
+
source venv/bin/activate # Unix
|
77
|
+
.\venv\Scripts\activate # Windows
|
78
|
+
```
|
79
|
+
|
80
|
+
3. **Pre-commit Setup**:
|
81
|
+
We use pre-commit hooks to automatically format and lint code. Set them up with:
|
82
|
+
```bash
|
83
|
+
pip install pre-commit
|
84
|
+
pre-commit install
|
85
|
+
```
|
86
|
+
|
87
|
+
That's it! The hooks will run automatically when you commit. To manually check all files:
|
88
|
+
```bash
|
89
|
+
pre-commit run --all-files
|
90
|
+
```
|
91
|
+
|
92
|
+
## Testing
|
93
|
+
|
94
|
+
We use a comprehensive testing stack to ensure code quality and reliability. Our testing framework includes pytest and several specialized testing tools.
|
95
|
+
|
96
|
+
### Testing Dependencies
|
97
|
+
|
98
|
+
Install all testing dependencies:
|
99
|
+
```bash
|
100
|
+
pip install -e ".[dev]"
|
101
|
+
```
|
102
|
+
|
103
|
+
We use the following testing packages:
|
104
|
+
- `pytest==7.4.0`: Core testing framework
|
105
|
+
- `pytest-depends`: Manage test dependencies
|
106
|
+
- `pytest-asyncio`: Test async code
|
107
|
+
- `pytest-vcr`: Record and replay HTTP interactions
|
108
|
+
- `pytest-mock`: Mocking functionality
|
109
|
+
- `pyfakefs`: Mock filesystem operations
|
110
|
+
- `requests_mock==1.11.0`: Mock HTTP requests
|
111
|
+
|
112
|
+
### Using Tox
|
113
|
+
|
114
|
+
We use tox to automate and standardize testing. Tox:
|
115
|
+
- Creates isolated virtual environments for testing
|
116
|
+
- Tests against multiple Python versions (3.7-3.12)
|
117
|
+
- Runs all test suites consistently
|
118
|
+
- Ensures dependencies are correctly specified
|
119
|
+
- Verifies the package installs correctly
|
120
|
+
|
121
|
+
Run tox:
|
122
|
+
```bash
|
123
|
+
tox
|
124
|
+
```
|
125
|
+
|
126
|
+
This will:
|
127
|
+
1. Create fresh virtual environments
|
128
|
+
2. Install dependencies
|
129
|
+
3. Run pytest with our test suite
|
130
|
+
4. Generate coverage reports
|
131
|
+
|
132
|
+
### Running Tests
|
133
|
+
|
134
|
+
1. **Run All Tests**:
|
135
|
+
```bash
|
136
|
+
tox
|
137
|
+
```
|
138
|
+
|
139
|
+
2. **Run Specific Test File**:
|
140
|
+
```bash
|
141
|
+
pytest tests/llms/test_anthropic.py -v
|
142
|
+
```
|
143
|
+
|
144
|
+
3. **Run with Coverage**:
|
145
|
+
```bash
|
146
|
+
coverage run -m pytest
|
147
|
+
coverage report
|
148
|
+
```
|
149
|
+
|
150
|
+
### Writing Tests
|
151
|
+
|
152
|
+
1. **Test Structure**:
|
153
|
+
```python
|
154
|
+
import pytest
|
155
|
+
from pytest_mock import MockerFixture
|
156
|
+
from unittest.mock import Mock, patch
|
157
|
+
|
158
|
+
@pytest.mark.asyncio # For async tests
|
159
|
+
async def test_async_function():
|
160
|
+
# Test implementation
|
161
|
+
|
162
|
+
@pytest.mark.depends(on=['test_prerequisite']) # Declare test dependencies
|
163
|
+
def test_dependent_function():
|
164
|
+
# Test implementation
|
165
|
+
```
|
166
|
+
|
167
|
+
2. **Recording HTTP Interactions**:
|
168
|
+
```python
|
169
|
+
@pytest.mark.vcr() # Records HTTP interactions
|
170
|
+
def test_api_call():
|
171
|
+
response = client.make_request()
|
172
|
+
assert response.status_code == 200
|
173
|
+
```
|
174
|
+
|
175
|
+
3. **Mocking Filesystem**:
|
176
|
+
```python
|
177
|
+
def test_file_operations(fs): # fs fixture provided by pyfakefs
|
178
|
+
fs.create_file('/fake/file.txt', contents='test')
|
179
|
+
assert os.path.exists('/fake/file.txt')
|
180
|
+
```
|
181
|
+
|
182
|
+
4. **Mocking HTTP Requests**:
|
183
|
+
```python
|
184
|
+
def test_http_client(requests_mock):
|
185
|
+
requests_mock.get('http://api.example.com', json={'key': 'value'})
|
186
|
+
response = make_request()
|
187
|
+
assert response.json()['key'] == 'value'
|
188
|
+
```
|
189
|
+
|
190
|
+
### Testing Best Practices
|
191
|
+
|
192
|
+
1. **Test Categories**:
|
193
|
+
- Unit tests: Test individual components
|
194
|
+
- Integration tests: Test component interactions
|
195
|
+
- End-to-end tests: Test complete workflows
|
196
|
+
- Performance tests: Test response times and resource usage
|
197
|
+
|
198
|
+
2. **Fixtures**:
|
199
|
+
Create reusable test fixtures in `conftest.py`:
|
200
|
+
```python
|
201
|
+
@pytest.fixture
|
202
|
+
def mock_llm_client():
|
203
|
+
client = Mock()
|
204
|
+
client.chat.completions.create.return_value = Mock()
|
205
|
+
return client
|
206
|
+
```
|
207
|
+
|
208
|
+
3. **Test Data**:
|
209
|
+
- Store test data in `tests/data/`
|
210
|
+
- Use meaningful test data names
|
211
|
+
- Document data format and purpose
|
212
|
+
|
213
|
+
4. **VCR Cassettes**:
|
214
|
+
- Store in `tests/cassettes/`
|
215
|
+
- Sanitize sensitive information
|
216
|
+
- Update cassettes when API changes
|
217
|
+
|
218
|
+
### CI Testing Strategy
|
219
|
+
|
220
|
+
We use Jupyter notebooks as integration tests for LLM providers. This approach:
|
221
|
+
- Tests real-world usage patterns
|
222
|
+
- Verifies end-to-end functionality
|
223
|
+
- Ensures examples stay up-to-date
|
224
|
+
- Tests against actual LLM APIs
|
225
|
+
|
226
|
+
1. **Notebook Tests**:
|
227
|
+
- Located in `examples/` directory
|
228
|
+
- Each LLM provider has example notebooks
|
229
|
+
- CI runs notebooks on PR merges to main
|
230
|
+
- Tests run against multiple Python versions
|
231
|
+
|
232
|
+
2. **Test Workflow**:
|
233
|
+
The `test-notebooks.yml` workflow:
|
234
|
+
```yaml
|
235
|
+
name: Test Notebooks
|
236
|
+
on:
|
237
|
+
pull_request:
|
238
|
+
paths:
|
239
|
+
- "agentops/**"
|
240
|
+
- "examples/**"
|
241
|
+
- "tests/**"
|
242
|
+
```
|
243
|
+
- Runs on PR merges and manual triggers
|
244
|
+
- Sets up environment with provider API keys
|
245
|
+
- Installs AgentOps from main branch
|
246
|
+
- Executes each notebook
|
247
|
+
- Excludes specific notebooks that require manual testing
|
248
|
+
|
249
|
+
3. **Provider Coverage**:
|
250
|
+
Each provider should have notebooks demonstrating:
|
251
|
+
- Basic completion calls
|
252
|
+
- Streaming responses
|
253
|
+
- Async operations (if supported)
|
254
|
+
- Error handling
|
255
|
+
- Tool usage (if applicable)
|
256
|
+
|
257
|
+
4. **Adding Provider Tests**:
|
258
|
+
- Create notebook in `examples/provider_name/`
|
259
|
+
- Include all provider functionality
|
260
|
+
- Add necessary secrets to GitHub Actions
|
261
|
+
- Update `exclude_notebooks` in workflow if manual testing needed
|
262
|
+
|
263
|
+
## Adding LLM Providers
|
264
|
+
|
265
|
+
The `agentops/llms/` directory contains provider implementations. Each provider must:
|
266
|
+
|
267
|
+
1. **Inherit from BaseProvider**:
|
268
|
+
```python
|
269
|
+
@singleton
|
270
|
+
class NewProvider(BaseProvider):
|
271
|
+
def __init__(self, client):
|
272
|
+
super().__init__(client)
|
273
|
+
self._provider_name = "ProviderName"
|
274
|
+
```
|
275
|
+
|
276
|
+
2. **Implement Required Methods**:
|
277
|
+
- `handle_response()`: Process LLM responses
|
278
|
+
- `override()`: Patch the provider's methods
|
279
|
+
- `undo_override()`: Restore original methods
|
280
|
+
|
281
|
+
3. **Handle Events**:
|
282
|
+
Track:
|
283
|
+
- Prompts and completions
|
284
|
+
- Token usage
|
285
|
+
- Timestamps
|
286
|
+
- Errors
|
287
|
+
- Tool usage (if applicable)
|
288
|
+
|
289
|
+
4. **Example Implementation Structure**:
|
290
|
+
```python
|
291
|
+
def handle_response(self, response, kwargs, init_timestamp, session=None):
|
292
|
+
llm_event = LLMEvent(init_timestamp=init_timestamp, params=kwargs)
|
293
|
+
try:
|
294
|
+
# Process response
|
295
|
+
llm_event.returns = response.model_dump()
|
296
|
+
llm_event.prompt = kwargs["messages"]
|
297
|
+
# ... additional processing
|
298
|
+
self._safe_record(session, llm_event)
|
299
|
+
except Exception as e:
|
300
|
+
self._safe_record(session, ErrorEvent(trigger_event=llm_event, exception=e))
|
301
|
+
```
|
302
|
+
|
303
|
+
## Code Style
|
304
|
+
|
305
|
+
1. **Formatting**:
|
306
|
+
- Use Black for Python code formatting
|
307
|
+
- Maximum line length: 88 characters
|
308
|
+
- Use type hints
|
309
|
+
|
310
|
+
2. **Documentation**:
|
311
|
+
- Docstrings for all public methods
|
312
|
+
- Clear inline comments
|
313
|
+
- Update relevant documentation
|
314
|
+
|
315
|
+
3. **Error Handling**:
|
316
|
+
- Use specific exception types
|
317
|
+
- Log errors with meaningful messages
|
318
|
+
- Include context in error messages
|
319
|
+
|
320
|
+
## Pull Request Process
|
321
|
+
|
322
|
+
1. **Branch Naming**:
|
323
|
+
- `feature/description`
|
324
|
+
- `fix/description`
|
325
|
+
- `docs/description`
|
326
|
+
|
327
|
+
2. **Commit Messages**:
|
328
|
+
- Clear and descriptive
|
329
|
+
- Reference issues when applicable
|
330
|
+
|
331
|
+
3. **PR Requirements**:
|
332
|
+
- Pass all tests
|
333
|
+
- Maintain or improve code coverage
|
334
|
+
- Include relevant documentation
|
335
|
+
- Update CHANGELOG.md if applicable
|
336
|
+
|
337
|
+
4. **Review Process**:
|
338
|
+
- At least one approval required
|
339
|
+
- Address all review comments
|
340
|
+
- Maintain PR scope
|
341
|
+
|
342
|
+
## Documentation
|
343
|
+
|
344
|
+
1. **Types of Documentation**:
|
345
|
+
- API reference
|
346
|
+
- Integration guides
|
347
|
+
- Examples
|
348
|
+
- Troubleshooting guides
|
349
|
+
|
350
|
+
2. **Documentation Location**:
|
351
|
+
- Code documentation in docstrings
|
352
|
+
- User guides in `docs/`
|
353
|
+
- Examples in `examples/`
|
354
|
+
|
355
|
+
3. **Documentation Style**:
|
356
|
+
- Clear and concise
|
357
|
+
- Include code examples
|
358
|
+
- Explain the why, not just the what
|
359
|
+
|
360
|
+
## Getting Help & Community
|
361
|
+
|
362
|
+
We encourage active community participation and are here to help!
|
363
|
+
|
364
|
+
### Preferred Communication Channels
|
365
|
+
|
366
|
+
1. **GitHub Issues & Discussions**:
|
367
|
+
- Open an [issue](https://github.com/AgentOps-AI/agentops/issues) for:
|
368
|
+
- Bug reports
|
369
|
+
- Feature requests
|
370
|
+
- Documentation improvements
|
371
|
+
- Start a [discussion](https://github.com/AgentOps-AI/agentops/discussions) for:
|
372
|
+
- Questions about usage
|
373
|
+
- Ideas for new features
|
374
|
+
- Community showcase
|
375
|
+
- General feedback
|
376
|
+
|
377
|
+
2. **Discord Community**:
|
378
|
+
- Join our [Discord server](https://discord.gg/FagdcwwXRR) for:
|
379
|
+
- Real-time help
|
380
|
+
- Community discussions
|
381
|
+
- Feature announcements
|
382
|
+
- Sharing your projects
|
383
|
+
|
384
|
+
3. **Contact Form**:
|
385
|
+
- For private inquiries, use our [contact form](https://agentops.ai/contact)
|
386
|
+
- Please note that public channels are preferred for technical discussions
|
387
|
+
|
388
|
+
## License
|
389
|
+
|
390
|
+
By contributing to AgentOps, you agree that your contributions will be licensed under the MIT License.
|
@@ -1,49 +1,39 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mseep-agentops
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.22
|
4
4
|
Summary: Observability and DevTool Platform for AI Agents
|
5
|
-
|
6
|
-
|
7
|
-
Author-email: support@skydeck.ai
|
8
|
-
|
9
|
-
Maintainer-email: support@skydeck.ai
|
10
|
-
Keywords: mseep
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
5
|
+
Project-URL: Homepage, https://github.com/AgentOps-AI/agentops
|
6
|
+
Project-URL: Issues, https://github.com/AgentOps-AI/agentops/issues
|
7
|
+
Author-email: mseep <support@skydeck.ai>
|
8
|
+
License-File: LICENSE
|
12
9
|
Classifier: License :: OSI Approved :: MIT License
|
13
10
|
Classifier: Operating System :: OS Independent
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
Requires-
|
21
|
-
Requires-Dist:
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
12
|
+
Classifier: Programming Language :: Python :: 3.9
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
17
|
+
Requires-Python: >=3.9
|
18
|
+
Requires-Dist: aiohttp<4.0.0,>=3.8.0
|
22
19
|
Requires-Dist: httpx<0.29.0,>=0.24.0
|
23
|
-
Requires-Dist: opentelemetry-
|
24
|
-
Requires-Dist: opentelemetry-
|
25
|
-
Requires-Dist: opentelemetry-
|
26
|
-
Requires-Dist: opentelemetry-
|
27
|
-
Requires-Dist: opentelemetry-
|
28
|
-
Requires-Dist: opentelemetry-
|
20
|
+
Requires-Dist: opentelemetry-api==1.29.0; python_version < '3.10'
|
21
|
+
Requires-Dist: opentelemetry-api>1.29.0; python_version >= '3.10'
|
22
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.29.0; python_version < '3.10'
|
23
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http>1.29.0; python_version >= '3.10'
|
24
|
+
Requires-Dist: opentelemetry-instrumentation==0.50b0; python_version < '3.10'
|
25
|
+
Requires-Dist: opentelemetry-instrumentation>=0.50b0; python_version >= '3.10'
|
26
|
+
Requires-Dist: opentelemetry-sdk==1.29.0; python_version < '3.10'
|
27
|
+
Requires-Dist: opentelemetry-sdk>1.29.0; python_version >= '3.10'
|
28
|
+
Requires-Dist: opentelemetry-semantic-conventions==0.50b0; python_version < '3.10'
|
29
|
+
Requires-Dist: opentelemetry-semantic-conventions>=0.50b0; python_version >= '3.10'
|
29
30
|
Requires-Dist: ordered-set<5.0.0,>=4.0.0
|
31
|
+
Requires-Dist: packaging<25.0,>=21.0
|
32
|
+
Requires-Dist: psutil<7.0.1,>=5.9.8
|
33
|
+
Requires-Dist: pyyaml<7.0,>=5.3
|
34
|
+
Requires-Dist: requests<3.0.0,>=2.0.0
|
35
|
+
Requires-Dist: termcolor<2.5.0,>=2.3.0
|
30
36
|
Requires-Dist: wrapt<2.0.0,>=1.0.0
|
31
|
-
|
32
|
-
Requires-Dist: opentelemetry-instrumentation>=0.50b0; python_version >= "3.10"
|
33
|
-
Requires-Dist: opentelemetry-semantic-conventions==0.50b0; python_version < "3.10"
|
34
|
-
Requires-Dist: opentelemetry-semantic-conventions>=0.50b0; python_version >= "3.10"
|
35
|
-
Dynamic: author
|
36
|
-
Dynamic: author-email
|
37
|
-
Dynamic: classifier
|
38
|
-
Dynamic: description
|
39
|
-
Dynamic: description-content-type
|
40
|
-
Dynamic: home-page
|
41
|
-
Dynamic: keywords
|
42
|
-
Dynamic: license-file
|
43
|
-
Dynamic: maintainer
|
44
|
-
Dynamic: maintainer-email
|
45
|
-
Dynamic: requires-dist
|
46
|
-
Dynamic: requires-python
|
47
|
-
Dynamic: summary
|
37
|
+
Description-Content-Type: text/plain
|
48
38
|
|
49
|
-
Package managed by MseeP.ai
|
39
|
+
Package managed by MseeP.ai
|