openlit 1.34.23__tar.gz → 1.34.25__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.
Files changed (162) hide show
  1. {openlit-1.34.23 → openlit-1.34.25}/PKG-INFO +1 -1
  2. {openlit-1.34.23 → openlit-1.34.25}/pyproject.toml +1 -1
  3. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/__helpers.py +48 -3
  4. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/chroma/__init__.py +38 -34
  5. openlit-1.34.25/src/openlit/instrumentation/chroma/chroma.py +59 -0
  6. openlit-1.34.25/src/openlit/instrumentation/chroma/utils.py +227 -0
  7. openlit-1.34.25/src/openlit/instrumentation/pinecone/__init__.py +174 -0
  8. openlit-1.34.25/src/openlit/instrumentation/pinecone/async_pinecone.py +58 -0
  9. openlit-1.34.25/src/openlit/instrumentation/pinecone/pinecone.py +58 -0
  10. openlit-1.34.25/src/openlit/instrumentation/pinecone/utils.py +186 -0
  11. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/semcov/__init__.py +13 -1
  12. openlit-1.34.23/src/openlit/instrumentation/chroma/chroma.py +0 -199
  13. openlit-1.34.23/src/openlit/instrumentation/pinecone/__init__.py +0 -66
  14. openlit-1.34.23/src/openlit/instrumentation/pinecone/pinecone.py +0 -173
  15. {openlit-1.34.23 → openlit-1.34.25}/LICENSE +0 -0
  16. {openlit-1.34.23 → openlit-1.34.25}/README.md +0 -0
  17. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/__init__.py +0 -0
  18. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/__init__.py +0 -0
  19. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/all.py +0 -0
  20. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/bias_detection.py +0 -0
  21. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/hallucination.py +0 -0
  22. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/toxicity.py +0 -0
  23. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/evals/utils.py +0 -0
  24. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/__init__.py +0 -0
  25. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/all.py +0 -0
  26. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/prompt_injection.py +0 -0
  27. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/restrict_topic.py +0 -0
  28. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/sensitive_topic.py +0 -0
  29. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/guard/utils.py +0 -0
  30. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/__init__.py +0 -0
  31. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/ag2.py +0 -0
  32. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/async_ag2.py +0 -0
  33. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ag2/utils.py +0 -0
  34. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/__init__.py +0 -0
  35. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/ai21.py +0 -0
  36. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/async_ai21.py +0 -0
  37. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ai21/utils.py +0 -0
  38. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/__init__.py +0 -0
  39. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/anthropic.py +0 -0
  40. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/async_anthropic.py +0 -0
  41. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/anthropic/utils.py +0 -0
  42. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/assemblyai/__init__.py +0 -0
  43. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/assemblyai/assemblyai.py +0 -0
  44. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/assemblyai/utils.py +0 -0
  45. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/__init__.py +0 -0
  46. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/astra.py +0 -0
  47. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/async_astra.py +0 -0
  48. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/astra/utils.py +0 -0
  49. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/__init__.py +0 -0
  50. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/async_azure_ai_inference.py +0 -0
  51. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/azure_ai_inference.py +0 -0
  52. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/azure_ai_inference/utils.py +0 -0
  53. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/bedrock/__init__.py +0 -0
  54. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/bedrock/bedrock.py +0 -0
  55. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/bedrock/utils.py +0 -0
  56. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/__init__.py +0 -0
  57. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/async_cohere.py +0 -0
  58. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/cohere.py +0 -0
  59. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/cohere/utils.py +0 -0
  60. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/controlflow/__init__.py +0 -0
  61. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/controlflow/controlflow.py +0 -0
  62. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crawl4ai/__init__.py +0 -0
  63. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crawl4ai/async_crawl4ai.py +0 -0
  64. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crawl4ai/crawl4ai.py +0 -0
  65. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crewai/__init__.py +0 -0
  66. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/crewai/crewai.py +0 -0
  67. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/dynamiq/__init__.py +0 -0
  68. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/dynamiq/dynamiq.py +0 -0
  69. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/__init__.py +0 -0
  70. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/async_elevenlabs.py +0 -0
  71. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/elevenlabs.py +0 -0
  72. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/elevenlabs/utils.py +0 -0
  73. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/embedchain/__init__.py +0 -0
  74. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/embedchain/embedchain.py +0 -0
  75. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/firecrawl/__init__.py +0 -0
  76. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/firecrawl/firecrawl.py +0 -0
  77. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/__init__.py +0 -0
  78. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/async_google_ai_studio.py +0 -0
  79. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/google_ai_studio.py +0 -0
  80. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/google_ai_studio/utils.py +0 -0
  81. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpt4all/__init__.py +0 -0
  82. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpt4all/gpt4all.py +0 -0
  83. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpt4all/utils.py +0 -0
  84. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/gpu/__init__.py +0 -0
  85. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/__init__.py +0 -0
  86. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/async_groq.py +0 -0
  87. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/groq.py +0 -0
  88. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/groq/utils.py +0 -0
  89. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/haystack/__init__.py +0 -0
  90. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/haystack/haystack.py +0 -0
  91. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/julep/__init__.py +0 -0
  92. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/julep/async_julep.py +0 -0
  93. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/julep/julep.py +0 -0
  94. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/__init__.py +0 -0
  95. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/async_langchain.py +0 -0
  96. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/langchain.py +0 -0
  97. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain/utils.py +0 -0
  98. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/__init__.py +0 -0
  99. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/async_langchain_community.py +0 -0
  100. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/langchain_community.py +0 -0
  101. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/langchain_community/utils.py +0 -0
  102. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/letta/__init__.py +0 -0
  103. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/letta/letta.py +0 -0
  104. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/__init__.py +0 -0
  105. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/async_litellm.py +0 -0
  106. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/litellm.py +0 -0
  107. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/litellm/utils.py +0 -0
  108. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/llamaindex/__init__.py +0 -0
  109. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/llamaindex/llamaindex.py +0 -0
  110. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mem0/__init__.py +0 -0
  111. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mem0/mem0.py +0 -0
  112. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/milvus/__init__.py +0 -0
  113. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/milvus/milvus.py +0 -0
  114. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/__init__.py +0 -0
  115. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/async_mistral.py +0 -0
  116. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/mistral.py +0 -0
  117. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/mistral/utils.py +0 -0
  118. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/multion/__init__.py +0 -0
  119. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/multion/async_multion.py +0 -0
  120. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/multion/multion.py +0 -0
  121. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/__init__.py +0 -0
  122. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/async_ollama.py +0 -0
  123. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/ollama.py +0 -0
  124. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/ollama/utils.py +0 -0
  125. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/__init__.py +0 -0
  126. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/async_openai.py +0 -0
  127. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/openai.py +0 -0
  128. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai/utils.py +0 -0
  129. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai_agents/__init__.py +0 -0
  130. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/openai_agents/openai_agents.py +0 -0
  131. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/phidata/__init__.py +0 -0
  132. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/phidata/phidata.py +0 -0
  133. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/premai/__init__.py +0 -0
  134. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/premai/premai.py +0 -0
  135. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/premai/utils.py +0 -0
  136. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/pydantic_ai/__init__.py +0 -0
  137. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/pydantic_ai/pydantic_ai.py +0 -0
  138. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/pydantic_ai/utils.py +0 -0
  139. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/qdrant/__init__.py +0 -0
  140. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/qdrant/async_qdrant.py +0 -0
  141. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/qdrant/qdrant.py +0 -0
  142. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/__init__.py +0 -0
  143. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/async_reka.py +0 -0
  144. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/reka.py +0 -0
  145. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/reka/utils.py +0 -0
  146. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/__init__.py +0 -0
  147. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/async_together.py +0 -0
  148. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/together.py +0 -0
  149. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/together/utils.py +0 -0
  150. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/transformers/__init__.py +0 -0
  151. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/transformers/transformers.py +0 -0
  152. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/transformers/utils.py +0 -0
  153. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/__init__.py +0 -0
  154. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/async_vertexai.py +0 -0
  155. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/utils.py +0 -0
  156. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vertexai/vertexai.py +0 -0
  157. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vllm/__init__.py +0 -0
  158. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vllm/utils.py +0 -0
  159. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/instrumentation/vllm/vllm.py +0 -0
  160. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/otel/events.py +0 -0
  161. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/otel/metrics.py +0 -0
  162. {openlit-1.34.23 → openlit-1.34.25}/src/openlit/otel/tracing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openlit
3
- Version: 1.34.23
3
+ Version: 1.34.25
4
4
  Summary: OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications and GPUs, facilitating the integration of observability into your GenAI-driven projects
5
5
  License: Apache-2.0
6
6
  Keywords: OpenTelemetry,otel,otlp,llm,tracing,openai,anthropic,claude,cohere,llm monitoring,observability,monitoring,gpt,Generative AI,chatGPT,gpu
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "openlit"
3
- version = "1.34.23"
3
+ version = "1.34.25"
4
4
  description = "OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications and GPUs, facilitating the integration of observability into your GenAI-driven projects"
5
5
  authors = ["OpenLIT"]
6
6
  license = "Apache-2.0"
@@ -205,11 +205,22 @@ def set_server_address_and_port(client_instance: Any,
205
205
  config = getattr(client_instance, 'sdk_configuration', None)
206
206
  base_url = getattr(config, 'server_url', None)
207
207
 
208
+ if not base_url:
209
+ # Attempt to get host from instance.config.host (used by Pinecone and other vector DBs)
210
+ config = getattr(client_instance, 'config', None)
211
+ base_url = getattr(config, 'host', None)
212
+
208
213
  if base_url:
209
214
  if isinstance(base_url, str):
210
- url = urlparse(base_url)
211
- server_address = url.hostname or default_server_address
212
- server_port = url.port if url.port is not None else default_server_port
215
+ # Check if it's a full URL or just a hostname
216
+ if base_url.startswith(('http://', 'https://')):
217
+ url = urlparse(base_url)
218
+ server_address = url.hostname or default_server_address
219
+ server_port = url.port if url.port is not None else default_server_port
220
+ else:
221
+ # If it's just a hostname (like Pinecone's case), use it directly
222
+ server_address = base_url
223
+ server_port = default_server_port
213
224
  else: # base_url might not be a str; handle as an object.
214
225
  server_address = getattr(base_url, 'host', None) or default_server_address
215
226
  port_attr = getattr(base_url, 'port', None)
@@ -442,3 +453,37 @@ def record_image_metrics(metrics, gen_ai_operation, gen_ai_system, server_addres
442
453
  metrics["genai_client_operation_duration"].record(end_time - start_time, attributes)
443
454
  metrics["genai_requests"].add(1, attributes)
444
455
  metrics["genai_cost"].record(cost, attributes)
456
+
457
+ def common_db_span_attributes(scope, db_system, server_address, server_port,
458
+ environment, application_name, version):
459
+ """
460
+ Set common span attributes for database operations.
461
+ """
462
+
463
+ scope._span.set_attribute(TELEMETRY_SDK_NAME, "openlit")
464
+ scope._span.set_attribute(SemanticConvention.GEN_AI_OPERATION, SemanticConvention.GEN_AI_OPERATION_TYPE_VECTORDB)
465
+ scope._span.set_attribute(SemanticConvention.DB_SYSTEM_NAME, db_system)
466
+ scope._span.set_attribute(SemanticConvention.SERVER_ADDRESS, server_address)
467
+ scope._span.set_attribute(SemanticConvention.SERVER_PORT, server_port)
468
+ scope._span.set_attribute(DEPLOYMENT_ENVIRONMENT, environment)
469
+ scope._span.set_attribute(SERVICE_NAME, application_name)
470
+ scope._span.set_attribute(SemanticConvention.DB_SDK_VERSION, version)
471
+
472
+ def record_db_metrics(metrics, db_system, server_address, server_port,
473
+ environment, application_name, start_time, end_time):
474
+ """
475
+ Record database-specific metrics for the operation.
476
+ """
477
+
478
+ attributes = create_metrics_attributes(
479
+ operation=SemanticConvention.GEN_AI_OPERATION_TYPE_VECTORDB,
480
+ system=db_system,
481
+ request_model=db_system,
482
+ server_address=server_address,
483
+ server_port=server_port,
484
+ response_model=db_system,
485
+ service_name=application_name,
486
+ deployment_environment=environment,
487
+ )
488
+ metrics["db_requests"].add(1, attributes)
489
+ metrics["db_client_operation_duration"].record(end_time - start_time, attributes)
@@ -1,5 +1,7 @@
1
- # pylint: disable=useless-return, bad-staticmethod-argument, disable=duplicate-code
2
- """Initializer of Auto Instrumentation of Chromadb Functions"""
1
+ """
2
+ OpenLIT ChromaDB Instrumentation
3
+ """
4
+
3
5
  from typing import Collection
4
6
  import importlib.metadata
5
7
  from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
@@ -10,77 +12,79 @@ from openlit.instrumentation.chroma.chroma import general_wrap
10
12
  _instruments = ("chromadb >= 0.4.0",)
11
13
 
12
14
  class ChromaInstrumentor(BaseInstrumentor):
13
- """An instrumentor for Chromadb's client library."""
15
+ """
16
+ An instrumentor for ChromaDB's client library.
17
+ """
14
18
 
15
19
  def instrumentation_dependencies(self) -> Collection[str]:
16
20
  return _instruments
17
21
 
18
22
  def _instrument(self, **kwargs):
19
- application_name = kwargs.get("application_name")
20
- environment = kwargs.get("environment")
23
+ version = importlib.metadata.version("chromadb")
24
+ environment = kwargs.get("environment", "default")
25
+ application_name = kwargs.get("application_name", "default")
21
26
  tracer = kwargs.get("tracer")
27
+ pricing_info = kwargs.get("pricing_info", {})
28
+ capture_message_content = kwargs.get("capture_message_content", False)
22
29
  metrics = kwargs.get("metrics_dict")
23
- pricing_info = kwargs.get("pricing_info")
24
- capture_message_content = kwargs.get("capture_message_content")
25
30
  disable_metrics = kwargs.get("disable_metrics")
26
- version = importlib.metadata.version("chromadb")
27
31
 
32
+ # Sync operations
28
33
  wrap_function_wrapper(
29
- "chromadb.db",
30
- "DB.create_collection",
34
+ "chromadb.db",
35
+ "DB.create_collection",
31
36
  general_wrap("chroma.create_collection", version, environment, application_name,
32
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
37
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
33
38
  )
34
39
 
35
40
  wrap_function_wrapper(
36
- "chromadb",
37
- "Collection.add",
41
+ "chromadb",
42
+ "Collection.add",
38
43
  general_wrap("chroma.add", version, environment, application_name,
39
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
44
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
40
45
  )
41
46
 
42
47
  wrap_function_wrapper(
43
- "chromadb",
44
- "Collection.get",
48
+ "chromadb",
49
+ "Collection.get",
45
50
  general_wrap("chroma.get", version, environment, application_name,
46
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
51
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
47
52
  )
48
53
 
49
54
  wrap_function_wrapper(
50
- "chromadb",
51
- "Collection.peek",
55
+ "chromadb",
56
+ "Collection.peek",
52
57
  general_wrap("chroma.peek", version, environment, application_name,
53
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
58
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
54
59
  )
55
60
 
56
61
  wrap_function_wrapper(
57
- "chromadb",
58
- "Collection.query",
62
+ "chromadb",
63
+ "Collection.query",
59
64
  general_wrap("chroma.query", version, environment, application_name,
60
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
65
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
61
66
  )
62
67
 
63
68
  wrap_function_wrapper(
64
- "chromadb",
65
- "Collection.update",
69
+ "chromadb",
70
+ "Collection.update",
66
71
  general_wrap("chroma.update", version, environment, application_name,
67
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
72
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
68
73
  )
69
74
 
70
75
  wrap_function_wrapper(
71
- "chromadb",
72
- "Collection.upsert",
76
+ "chromadb",
77
+ "Collection.upsert",
73
78
  general_wrap("chroma.upsert", version, environment, application_name,
74
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
79
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
75
80
  )
81
+
76
82
  wrap_function_wrapper(
77
- "chromadb",
78
- "Collection.delete",
83
+ "chromadb",
84
+ "Collection.delete",
79
85
  general_wrap("chroma.delete", version, environment, application_name,
80
- tracer, pricing_info, capture_message_content, metrics, disable_metrics),
86
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
81
87
  )
82
88
 
83
-
84
- @staticmethod
85
89
  def _uninstrument(self, **kwargs):
86
90
  pass
@@ -0,0 +1,59 @@
1
+ """
2
+ Module for monitoring ChromaDB API calls.
3
+ """
4
+
5
+ import time
6
+ from opentelemetry.trace import SpanKind
7
+ from opentelemetry import context as context_api
8
+ from openlit.__helpers import (
9
+ handle_exception,
10
+ set_server_address_and_port,
11
+ )
12
+ from openlit.instrumentation.chroma.utils import (
13
+ process_vectordb_response,
14
+ DB_OPERATION_MAP,
15
+ )
16
+
17
+ def general_wrap(gen_ai_endpoint, version, environment, application_name,
18
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics):
19
+ """
20
+ Generates a telemetry wrapper for ChromaDB function calls.
21
+ """
22
+
23
+ def wrapper(wrapped, instance, args, kwargs):
24
+ """
25
+ Wraps the ChromaDB function call.
26
+ """
27
+
28
+ if context_api.get_value(context_api._SUPPRESS_INSTRUMENTATION_KEY):
29
+ return wrapped(*args, **kwargs)
30
+
31
+ # Get server address and port using the standard helper
32
+ server_address, server_port = set_server_address_and_port(instance, "localhost", 8000)
33
+
34
+ db_operation = DB_OPERATION_MAP.get(gen_ai_endpoint, "unknown")
35
+ if db_operation == "create_collection":
36
+ namespace = kwargs.get("name") or (args[0] if args else "unknown")
37
+ else:
38
+ namespace = getattr(instance, "name", "unknown")
39
+ span_name = f"{db_operation} {namespace}"
40
+
41
+ with tracer.start_as_current_span(span_name, kind=SpanKind.CLIENT) as span:
42
+ try:
43
+ start_time = time.time()
44
+ response = wrapped(*args, **kwargs)
45
+
46
+ # Process response and generate telemetry
47
+ response = process_vectordb_response(
48
+ response, db_operation, server_address, server_port,
49
+ environment, application_name, metrics, start_time, span,
50
+ capture_message_content, disable_metrics, version, instance, args, endpoint=gen_ai_endpoint, **kwargs
51
+ )
52
+
53
+ except Exception as e:
54
+ handle_exception(span, e)
55
+
56
+ return response
57
+
58
+
59
+ return wrapper
@@ -0,0 +1,227 @@
1
+ """
2
+ ChromaDB OpenTelemetry instrumentation utility functions
3
+ """
4
+ import time
5
+
6
+ from opentelemetry.trace import Status, StatusCode
7
+
8
+ from openlit.__helpers import (
9
+ common_db_span_attributes,
10
+ record_db_metrics,
11
+ )
12
+ from openlit.semcov import SemanticConvention
13
+
14
+ # Operation mapping for simple span naming
15
+ DB_OPERATION_MAP = {
16
+ "chroma.create_collection": SemanticConvention.DB_OPERATION_CREATE_COLLECTION,
17
+ "chroma.add": SemanticConvention.DB_OPERATION_INSERT,
18
+ "chroma.get": SemanticConvention.DB_OPERATION_GET,
19
+ "chroma.peek": SemanticConvention.DB_OPERATION_PEEK,
20
+ "chroma.query": SemanticConvention.DB_OPERATION_GET,
21
+ "chroma.update": SemanticConvention.DB_OPERATION_UPDATE,
22
+ "chroma.upsert": SemanticConvention.DB_OPERATION_UPSERT,
23
+ "chroma.delete": SemanticConvention.DB_OPERATION_DELETE,
24
+ }
25
+
26
+ def object_count(obj):
27
+ """
28
+ Counts length of object if it exists, else returns 0.
29
+ """
30
+ return len(obj) if obj else 0
31
+
32
+ def common_vectordb_logic(scope, environment, application_name,
33
+ metrics, capture_message_content, disable_metrics, version, instance=None, endpoint=None):
34
+ """
35
+ Process vector database request and generate telemetry.
36
+ """
37
+
38
+ scope._end_time = time.time()
39
+
40
+ # Set common database span attributes using helper
41
+ common_db_span_attributes(scope, SemanticConvention.DB_SYSTEM_CHROMA, scope._server_address, scope._server_port,
42
+ environment, application_name, version)
43
+
44
+ # Set DB operation specific attributes
45
+ scope._span.set_attribute(SemanticConvention.DB_OPERATION_NAME, scope._db_operation)
46
+ scope._span.set_attribute(SemanticConvention.DB_CLIENT_OPERATION_DURATION, scope._end_time - scope._start_time)
47
+
48
+ # Set collection name from instance
49
+ if hasattr(instance, "name"):
50
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, instance.name)
51
+
52
+ # Set Create Collection operation specific attributes
53
+ if scope._db_operation == SemanticConvention.DB_OPERATION_CREATE_COLLECTION:
54
+ # Standard database attributes
55
+ collection_name = scope._kwargs.get("name") or (scope._args[0] if scope._args else "unknown")
56
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
57
+
58
+ # Vector database specific attributes (extensions)
59
+ metadata = scope._kwargs.get("metadata", {})
60
+ if metadata:
61
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_METADATA, str(metadata))
62
+
63
+ elif scope._db_operation == SemanticConvention.DB_OPERATION_INSERT:
64
+ collection_name = getattr(instance, "name", "unknown")
65
+ query = scope._kwargs.get("ids", [])
66
+
67
+ # Standard database attributes
68
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
69
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
70
+ scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
71
+
72
+ # Vector database specific attributes (extensions)
73
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
74
+ f"{scope._db_operation} {collection_name} "
75
+ f"ids={query} "
76
+ f"documents={scope._kwargs.get('documents', [])}")
77
+
78
+ elif scope._db_operation == SemanticConvention.DB_OPERATION_GET:
79
+ collection_name = getattr(instance, "name", "unknown")
80
+
81
+ # Handle different GET operations based on endpoint
82
+ if endpoint == "chroma.get":
83
+ # Collection.get() - retrieve documents by IDs
84
+ query = scope._kwargs.get("ids", [])
85
+
86
+ # Standard database attributes
87
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
88
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
89
+ scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
90
+
91
+ # Vector database specific attributes (extensions)
92
+ scope._span.set_attribute(SemanticConvention.DB_FILTER, str(scope._kwargs.get("where", "")))
93
+
94
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
95
+ f"{scope._db_operation} {collection_name} "
96
+ f"ids={query} "
97
+ f"limit={scope._kwargs.get('limit', 'None')} "
98
+ f"offset={scope._kwargs.get('offset', 'None')}")
99
+
100
+ elif endpoint == "chroma.query":
101
+ query_texts = scope._kwargs.get("query_texts", [])
102
+ query_embeddings = scope._kwargs.get("query_embeddings", [])
103
+
104
+ # Create comprehensive query text (can be either embeddings or texts)
105
+ if query_texts:
106
+ query_content = f"texts={query_texts}"
107
+ elif query_embeddings:
108
+ query_content = f"embeddings={len(query_embeddings) if query_embeddings else 0} vectors"
109
+ else:
110
+ query_content = "no query provided"
111
+
112
+ # Standard database attributes
113
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, query_content)
114
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
115
+
116
+ # Vector database specific attributes (extensions)
117
+ scope._span.set_attribute(SemanticConvention.DB_VECTOR_QUERY_TOP_K, scope._kwargs.get("n_results", 10))
118
+ scope._span.set_attribute(SemanticConvention.DB_FILTER, str(scope._kwargs.get("where", "")))
119
+
120
+ # Extract response metrics if available
121
+ if scope._response:
122
+ # Get number of results returned
123
+ if hasattr(scope._response, 'get') and scope._response.get('ids'):
124
+ returned_rows = object_count(scope._response['ids'][0]) if scope._response['ids'] else 0
125
+ scope._span.set_attribute(SemanticConvention.DB_RESPONSE_RETURNED_ROWS, returned_rows)
126
+
127
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
128
+ f"{scope._db_operation} {collection_name} "
129
+ f"n_results={scope._kwargs.get('n_results', 10)} "
130
+ f"{query_content} "
131
+ f"filter={scope._kwargs.get('where', 'None')}")
132
+
133
+ elif scope._db_operation == SemanticConvention.DB_OPERATION_UPDATE:
134
+ collection_name = getattr(instance, "name", "unknown")
135
+ query = scope._kwargs.get("ids", [])
136
+
137
+ # Standard database attributes
138
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
139
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
140
+ scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
141
+
142
+ # Vector database specific attributes (extensions)
143
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
144
+ f"{scope._db_operation} {collection_name} "
145
+ f"ids={query} "
146
+ f"embeddings={scope._kwargs.get('embeddings', 'None')} "
147
+ f"metadatas={scope._kwargs.get('metadatas', 'None')} "
148
+ f"documents={scope._kwargs.get('documents', 'None')}")
149
+
150
+ elif scope._db_operation == SemanticConvention.DB_OPERATION_UPSERT:
151
+ collection_name = getattr(instance, "name", "unknown")
152
+ query = scope._kwargs.get("ids", [])
153
+
154
+ # Standard database attributes
155
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
156
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
157
+ scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
158
+
159
+ # Vector database specific attributes (extensions)
160
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
161
+ f"{scope._db_operation} {collection_name} "
162
+ f"ids={query} "
163
+ f"embeddings={scope._kwargs.get('embeddings', 'None')} "
164
+ f"metadatas={scope._kwargs.get('metadatas', 'None')} "
165
+ f"documents={scope._kwargs.get('documents', 'None')}")
166
+
167
+ elif scope._db_operation == SemanticConvention.DB_OPERATION_DELETE:
168
+ collection_name = getattr(instance, "name", "unknown")
169
+ query = scope._kwargs.get("ids", [])
170
+
171
+ # Standard database attributes
172
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, str(query))
173
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
174
+ scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, object_count(query))
175
+
176
+ # Vector database specific attributes (extensions)
177
+ scope._span.set_attribute(SemanticConvention.DB_FILTER, str(scope._kwargs.get("where", "")))
178
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
179
+ f"{scope._db_operation} {collection_name} "
180
+ f"ids={query} "
181
+ f"filter={scope._kwargs.get('where', 'None')} "
182
+ f"delete_all={scope._kwargs.get('delete_all', False)}")
183
+
184
+ elif scope._db_operation == SemanticConvention.DB_OPERATION_PEEK:
185
+ collection_name = getattr(instance, "name", "unknown")
186
+ query = f"PEEK limit={scope._kwargs.get('limit', '')}"
187
+
188
+ # Standard database attributes
189
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_TEXT, query)
190
+ scope._span.set_attribute(SemanticConvention.DB_COLLECTION_NAME, collection_name)
191
+ scope._span.set_attribute(SemanticConvention.DB_VECTOR_COUNT, scope._kwargs.get("limit", ""))
192
+
193
+ # Vector database specific attributes (extensions)
194
+ scope._span.set_attribute(SemanticConvention.DB_QUERY_SUMMARY,
195
+ f"{scope._db_operation} {collection_name} "
196
+ f"limit={scope._kwargs.get('limit', 'None')}")
197
+
198
+ scope._span.set_status(Status(StatusCode.OK))
199
+
200
+ # Record metrics using helper
201
+ if not disable_metrics:
202
+ record_db_metrics(metrics, SemanticConvention.DB_SYSTEM_CHROMA, scope._server_address, scope._server_port,
203
+ environment, application_name, scope._start_time, scope._end_time)
204
+
205
+ def process_vectordb_response(response, db_operation, server_address, server_port,
206
+ environment, application_name, metrics, start_time, span,
207
+ capture_message_content=False, disable_metrics=False,
208
+ version="1.0.0", instance=None, args=None, endpoint=None, **kwargs):
209
+ """
210
+ Process vector database response and generate telemetry following OpenTelemetry conventions.
211
+ """
212
+
213
+ scope = type("GenericScope", (), {})()
214
+
215
+ scope._start_time = start_time
216
+ scope._span = span
217
+ scope._kwargs = kwargs
218
+ scope._args = args or []
219
+ scope._db_operation = db_operation
220
+ scope._response = response
221
+ scope._server_address = server_address
222
+ scope._server_port = server_port
223
+
224
+ common_vectordb_logic(scope, environment, application_name,
225
+ metrics, capture_message_content, disable_metrics, version, instance, endpoint)
226
+
227
+ return response
@@ -0,0 +1,174 @@
1
+ """Initializer of Auto Instrumentation of Pinecone Functions"""
2
+
3
+ from typing import Collection
4
+ import importlib.metadata
5
+ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
6
+ from wrapt import wrap_function_wrapper
7
+
8
+ from openlit.instrumentation.pinecone.pinecone import general_wrap
9
+ from openlit.instrumentation.pinecone.async_pinecone import async_general_wrap
10
+
11
+ _instruments = ("pinecone >= 7.3.0",)
12
+
13
+ class PineconeInstrumentor(BaseInstrumentor):
14
+ """
15
+ An instrumentor for Pinecone's client library.
16
+ """
17
+
18
+ def instrumentation_dependencies(self) -> Collection[str]:
19
+ return _instruments
20
+
21
+ def _instrument(self, **kwargs):
22
+ version = importlib.metadata.version("pinecone")
23
+ environment = kwargs.get("environment", "default")
24
+ application_name = kwargs.get("application_name", "default")
25
+ tracer = kwargs.get("tracer")
26
+ pricing_info = kwargs.get("pricing_info", {})
27
+ capture_message_content = kwargs.get("capture_message_content", False)
28
+ metrics = kwargs.get("metrics_dict")
29
+ disable_metrics = kwargs.get("disable_metrics")
30
+
31
+ # Sync operations
32
+ wrap_function_wrapper(
33
+ "pinecone.pinecone",
34
+ "Pinecone.create_index",
35
+ general_wrap("pinecone.create_collection", version, environment, application_name,
36
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
37
+ )
38
+
39
+ wrap_function_wrapper(
40
+ "pinecone.pinecone",
41
+ "Pinecone.create_index_for_model",
42
+ general_wrap("pinecone.create_collection", version, environment, application_name,
43
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
44
+ )
45
+
46
+ wrap_function_wrapper(
47
+ "pinecone.db_data.index",
48
+ "Index.upsert",
49
+ general_wrap("pinecone.upsert", version, environment, application_name,
50
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
51
+ )
52
+
53
+ wrap_function_wrapper(
54
+ "pinecone.db_data.index",
55
+ "Index.upsert_records",
56
+ general_wrap("pinecone.upsert_records", version, environment, application_name,
57
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
58
+ )
59
+
60
+ wrap_function_wrapper(
61
+ "pinecone.db_data.index",
62
+ "Index.query",
63
+ general_wrap("pinecone.query", version, environment, application_name,
64
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
65
+ )
66
+
67
+ wrap_function_wrapper(
68
+ "pinecone.db_data.index",
69
+ "Index.search",
70
+ general_wrap("pinecone.search", version, environment, application_name,
71
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
72
+ )
73
+
74
+ wrap_function_wrapper(
75
+ "pinecone.db_data.index",
76
+ "Index.fetch",
77
+ general_wrap("pinecone.fetch", version, environment, application_name,
78
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
79
+ )
80
+
81
+ wrap_function_wrapper(
82
+ "pinecone.db_data.index",
83
+ "Index.search_records",
84
+ general_wrap("pinecone.search_records", version, environment, application_name,
85
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
86
+ )
87
+
88
+ wrap_function_wrapper(
89
+ "pinecone.db_data.index",
90
+ "Index.update",
91
+ general_wrap("pinecone.update", version, environment, application_name,
92
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
93
+ )
94
+
95
+ wrap_function_wrapper(
96
+ "pinecone.db_data.index",
97
+ "Index.delete",
98
+ general_wrap("pinecone.delete", version, environment, application_name,
99
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
100
+ )
101
+
102
+ # Async operations
103
+ wrap_function_wrapper(
104
+ "pinecone.pinecone_asyncio",
105
+ "PineconeAsyncio.create_index",
106
+ async_general_wrap("pinecone.create_index", version, environment, application_name,
107
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
108
+ )
109
+
110
+ wrap_function_wrapper(
111
+ "pinecone.pinecone_asyncio",
112
+ "PineconeAsyncio.create_index_for_model",
113
+ async_general_wrap("pinecone.create_index", version, environment, application_name,
114
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
115
+ )
116
+
117
+ wrap_function_wrapper(
118
+ "pinecone.db_data.index_asyncio",
119
+ "_IndexAsyncio.upsert",
120
+ async_general_wrap("pinecone.upsert", version, environment, application_name,
121
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
122
+ )
123
+
124
+ wrap_function_wrapper(
125
+ "pinecone.db_data.index_asyncio",
126
+ "_IndexAsyncio.upsert_records",
127
+ async_general_wrap("pinecone.upsert_records", version, environment, application_name,
128
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
129
+ )
130
+
131
+ wrap_function_wrapper(
132
+ "pinecone.db_data.index_asyncio",
133
+ "_IndexAsyncio.query",
134
+ async_general_wrap("pinecone.query", version, environment, application_name,
135
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
136
+ )
137
+
138
+ wrap_function_wrapper(
139
+ "pinecone.db_data.index_asyncio",
140
+ "_IndexAsyncio.search",
141
+ async_general_wrap("pinecone.search", version, environment, application_name,
142
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
143
+ )
144
+
145
+ wrap_function_wrapper(
146
+ "pinecone.db_data.index_asyncio",
147
+ "_IndexAsyncio.fetch",
148
+ async_general_wrap("pinecone.fetch", version, environment, application_name,
149
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
150
+ )
151
+
152
+ wrap_function_wrapper(
153
+ "pinecone.db_data.index_asyncio",
154
+ "_IndexAsyncio.search_records",
155
+ async_general_wrap("pinecone.search_records", version, environment, application_name,
156
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
157
+ )
158
+
159
+ wrap_function_wrapper(
160
+ "pinecone.db_data.index_asyncio",
161
+ "_IndexAsyncio.update",
162
+ async_general_wrap("pinecone.update", version, environment, application_name,
163
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
164
+ )
165
+
166
+ wrap_function_wrapper(
167
+ "pinecone.db_data.index_asyncio",
168
+ "_IndexAsyncio.delete",
169
+ async_general_wrap("pinecone.delete", version, environment, application_name,
170
+ tracer, pricing_info, capture_message_content, metrics, disable_metrics),
171
+ )
172
+
173
+ def _uninstrument(self, **kwargs):
174
+ pass