langtrace-python-sdk 2.1.8__tar.gz → 2.1.10__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 (150) hide show
  1. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/PKG-INFO +1 -1
  2. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/pinecone_example/basic.py +2 -2
  3. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/__init__.py +2 -2
  4. langtrace_python_sdk-2.1.10/src/langtrace_python_sdk/constants/__init__.py +1 -0
  5. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/anthropic/patch.py +4 -1
  6. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/chroma/patch.py +4 -1
  7. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/cohere/patch.py +7 -4
  8. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/groq/patch.py +5 -2
  9. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain/patch.py +2 -1
  10. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain_community/patch.py +4 -1
  11. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain_core/patch.py +5 -2
  12. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langgraph/patch.py +4 -1
  13. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/llamaindex/patch.py +5 -2
  14. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/openai/patch.py +9 -6
  15. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/pinecone/patch.py +4 -1
  16. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/qdrant/patch.py +4 -1
  17. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/weaviate/patch.py +4 -1
  18. langtrace_python_sdk-2.1.10/src/langtrace_python_sdk/utils/sdk_version_checker.py +53 -0
  19. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/utils/with_root_span.py +72 -56
  20. langtrace_python_sdk-2.1.10/src/langtrace_python_sdk/version.py +1 -0
  21. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/anthropic/test_anthropic.py +4 -2
  22. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/test_cohere_chat.py +4 -2
  23. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/test_cohere_embed.py +5 -5
  24. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/test_cohere_rerank.py +4 -7
  25. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/test_chat_completion.py +7 -13
  26. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/test_image_generation.py +5 -9
  27. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/pinecone/test_pinecone.py +5 -9
  28. langtrace_python_sdk-2.1.8/src/langtrace_python_sdk/utils/sdk_version_checker.py +0 -48
  29. langtrace_python_sdk-2.1.8/src/langtrace_python_sdk/version.py +0 -1
  30. langtrace_python_sdk-2.1.8/src/tests/__init__.py +0 -0
  31. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/.gitignore +0 -0
  32. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/LICENSE +0 -0
  33. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/README.md +0 -0
  34. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/pyproject.toml +0 -0
  35. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/__init__.py +0 -0
  36. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/__init__.py +0 -0
  37. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/anthropic_example/__init__.py +0 -0
  38. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/anthropic_example/completion.py +0 -0
  39. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/chroma_example/__init__.py +0 -0
  40. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/chroma_example/basic.py +0 -0
  41. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/cohere_example/__init__.py +0 -0
  42. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/cohere_example/chat.py +0 -0
  43. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/cohere_example/chat_stream.py +0 -0
  44. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/cohere_example/embed.py +0 -0
  45. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/cohere_example/rerank.py +0 -0
  46. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/cohere_example/tools.py +0 -0
  47. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/fastapi_example/basic_route.py +0 -0
  48. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/hiveagent_example/basic.py +0 -0
  49. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/langchain_example/__init__.py +0 -0
  50. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/langchain_example/basic.py +0 -0
  51. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/langchain_example/groq_example.py +0 -0
  52. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/langchain_example/langgraph_example.py +0 -0
  53. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/langchain_example/tool.py +0 -0
  54. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/llamaindex_example/__init__.py +0 -0
  55. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/llamaindex_example/agent.py +0 -0
  56. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/llamaindex_example/basic.py +0 -0
  57. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/llamaindex_example/data/abramov.txt +0 -0
  58. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/__init__.py +0 -0
  59. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/async_tool_calling_nonstreaming.py +0 -0
  60. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/async_tool_calling_streaming.py +0 -0
  61. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/chat_completion.py +0 -0
  62. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/embeddings_create.py +0 -0
  63. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/function_calling.py +0 -0
  64. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/images_generate.py +0 -0
  65. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/tool_calling.py +0 -0
  66. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/tool_calling_nonstreaming.py +0 -0
  67. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/openai_example/tool_calling_streaming.py +0 -0
  68. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/perplexity_example/basic.py +0 -0
  69. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/pinecone_example/__init__.py +0 -0
  70. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/qdrant_example/__init__.py +0 -0
  71. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/qdrant_example/basic.py +0 -0
  72. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/examples/weaviate_example/query_text.py +0 -0
  73. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/exporter/langtrace_exporter.py +0 -0
  74. {langtrace_python_sdk-2.1.8/src/langtrace_python_sdk/constants → langtrace_python_sdk-2.1.10/src/langtrace_python_sdk/constants/instrumentation}/__init__.py +0 -0
  75. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/anthropic.py +0 -0
  76. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/chroma.py +0 -0
  77. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/cohere.py +0 -0
  78. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/common.py +0 -0
  79. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/groq.py +0 -0
  80. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/openai.py +0 -0
  81. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/pinecone.py +0 -0
  82. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/qdrant.py +0 -0
  83. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/constants/instrumentation/weaviate.py +0 -0
  84. {langtrace_python_sdk-2.1.8/src/langtrace_python_sdk/constants/instrumentation → langtrace_python_sdk-2.1.10/src/langtrace_python_sdk/extensions}/__init__.py +0 -0
  85. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/extensions/langtrace_exporter.py +0 -0
  86. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/__init__.py +0 -0
  87. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/anthropic/__init__.py +0 -0
  88. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/anthropic/instrumentation.py +0 -0
  89. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/chroma/__init__.py +0 -0
  90. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/chroma/instrumentation.py +0 -0
  91. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/cohere/__init__.py +0 -0
  92. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/cohere/instrumentation.py +0 -0
  93. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/groq/__init__.py +0 -0
  94. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/groq/instrumentation.py +0 -0
  95. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain/__init__.py +0 -0
  96. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain/instrumentation.py +0 -0
  97. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain_community/__init__.py +0 -0
  98. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain_community/instrumentation.py +0 -0
  99. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain_core/__init__.py +0 -0
  100. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langchain_core/instrumentation.py +0 -0
  101. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langgraph/__init__.py +0 -0
  102. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/langgraph/instrumentation.py +0 -0
  103. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/llamaindex/__init__.py +0 -0
  104. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py +0 -0
  105. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/openai/__init__.py +0 -0
  106. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/openai/instrumentation.py +0 -0
  107. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/pinecone/__init__.py +0 -0
  108. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/pinecone/instrumentation.py +0 -0
  109. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/qdrant/__init__.py +0 -0
  110. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/qdrant/instrumentation.py +0 -0
  111. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/weaviate/__init__.py +0 -0
  112. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/instrumentation/weaviate/instrumentation.py +0 -0
  113. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/langtrace.py +0 -0
  114. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/types/__init__.py +0 -0
  115. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/utils/__init__.py +0 -0
  116. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/utils/llm.py +0 -0
  117. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/utils/misc.py +0 -0
  118. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/utils/prompt_registry.py +0 -0
  119. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/utils/silently_fail.py +0 -0
  120. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/langtrace_python_sdk/utils/types.py +0 -0
  121. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/run_example.py +0 -0
  122. {langtrace_python_sdk-2.1.8/src/langtrace_python_sdk/extensions → langtrace_python_sdk-2.1.10/src/tests}/__init__.py +0 -0
  123. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/anthropic/cassettes/test_anthropic.yaml +0 -0
  124. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/anthropic/cassettes/test_anthropic_streaming.yaml +0 -0
  125. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/anthropic/cassettes/test_async_anthropic_streaming.yaml +0 -0
  126. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/anthropic/conftest.py +0 -0
  127. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/chroma/conftest.py +0 -0
  128. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/chroma/test_chroma.py +0 -0
  129. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/cassettes/test_cohere_chat.yaml +0 -0
  130. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/cassettes/test_cohere_chat_streaming.yaml +0 -0
  131. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/cassettes/test_cohere_embed.yaml +0 -0
  132. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/cassettes/test_cohere_rerank.yaml +0 -0
  133. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/cohere/conftest.py +0 -0
  134. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/conftest.py +0 -0
  135. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/langchain/cassettes/test_langchain.yaml +0 -0
  136. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/langchain/conftest.py +0 -0
  137. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/langchain/test_langchain.py +0 -0
  138. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/cassettes/test_async_chat_completion_streaming.yaml +0 -0
  139. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/cassettes/test_async_image_generation.yaml +0 -0
  140. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/cassettes/test_chat_completion.yaml +0 -0
  141. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/cassettes/test_chat_completion_streaming.yaml +0 -0
  142. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/cassettes/test_image_generation.yaml +0 -0
  143. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/conftest.py +0 -0
  144. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/openai/test_embeddings.py +0 -0
  145. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/pinecone/cassettes/test_query.yaml +0 -0
  146. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/pinecone/cassettes/test_upsert.yaml +0 -0
  147. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/pinecone/conftest.py +0 -0
  148. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/qdrant/conftest.py +0 -0
  149. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/qdrant/test_qdrant.py +0 -0
  150. {langtrace_python_sdk-2.1.8 → langtrace_python_sdk-2.1.10}/src/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 2.1.8
3
+ Version: 2.1.10
4
4
  Summary: Python SDK for LangTrace
5
5
  Project-URL: Homepage, https://github.com/Scale3-Labs/langtrace-python-sdk
6
6
  Author-email: Scale3 Labs <engineering@scale3labs.com>
@@ -7,7 +7,7 @@ from openai import OpenAI
7
7
  from pinecone import Pinecone, ServerlessSpec
8
8
 
9
9
  from langtrace_python_sdk import langtrace, with_langtrace_root_span
10
- from langtrace_python_sdk.utils.with_root_span import send_user_feedback
10
+ from langtrace_python_sdk.utils.with_root_span import SendUserFeedback
11
11
 
12
12
  _ = load_dotenv(find_dotenv())
13
13
 
@@ -48,7 +48,7 @@ def basic(span_id=None, trace_id=None):
48
48
  resp = index.query(
49
49
  vector=embedding, top_k=1, include_values=False, namespace="test-namespace"
50
50
  )
51
- send_user_feedback(
51
+ SendUserFeedback().evaluate(
52
52
  {"spanId": span_id, "traceId": trace_id, "userScore": 1, "userId": "123"}
53
53
  )
54
54
  return [res, resp]
@@ -17,11 +17,11 @@ limitations under the License.
17
17
  from langtrace_python_sdk import langtrace
18
18
  from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
19
19
  from langtrace_python_sdk.utils.prompt_registry import get_prompt_from_registry
20
- from langtrace_python_sdk.utils.with_root_span import send_user_feedback
20
+ from langtrace_python_sdk.utils.with_root_span import SendUserFeedback
21
21
 
22
22
  __all__ = [
23
23
  "langtrace",
24
24
  "with_langtrace_root_span",
25
25
  "get_prompt_from_registry",
26
- "send_user_feedback",
26
+ "SendUserFeedback",
27
27
  ]
@@ -0,0 +1 @@
1
+ LANGTRACE_SDK_NAME = "langtrace-python-sdk"
@@ -26,6 +26,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
26
26
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
27
27
  SERVICE_PROVIDERS,
28
28
  )
29
+ from importlib_metadata import version as v
30
+
31
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
29
32
 
30
33
 
31
34
  def messages_create(original_method, version, tracer):
@@ -54,7 +57,7 @@ def messages_create(original_method, version, tracer):
54
57
  "langtrace.service.name": service_provider,
55
58
  "langtrace.service.type": "llm",
56
59
  "langtrace.service.version": version,
57
- "langtrace.version": "1.0.0",
60
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
58
61
  "url.full": base_url,
59
62
  "llm.api": APIS["MESSAGES_CREATE"]["ENDPOINT"],
60
63
  "llm.model": kwargs.get("model"),
@@ -27,6 +27,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
27
27
  SERVICE_PROVIDERS,
28
28
  )
29
29
  import json
30
+ from importlib_metadata import version as v
31
+
32
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
30
33
 
31
34
 
32
35
  def collection_patch(method, version, tracer):
@@ -44,7 +47,7 @@ def collection_patch(method, version, tracer):
44
47
  "langtrace.service.name": service_provider,
45
48
  "langtrace.service.type": "vectordb",
46
49
  "langtrace.service.version": version,
47
- "langtrace.version": "1.0.0",
50
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
48
51
  "db.system": "chromadb",
49
52
  "db.operation": api["OPERATION"],
50
53
  "db.query": json.dumps(kwargs.get("query")),
@@ -26,6 +26,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
26
26
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
27
27
  SERVICE_PROVIDERS,
28
28
  )
29
+ from importlib_metadata import version as v
30
+
31
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
29
32
 
30
33
 
31
34
  def rerank(original_method, version, tracer):
@@ -40,7 +43,7 @@ def rerank(original_method, version, tracer):
40
43
  "langtrace.service.name": service_provider,
41
44
  "langtrace.service.type": "llm",
42
45
  "langtrace.service.version": version,
43
- "langtrace.version": "1.0.0",
46
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
44
47
  "url.full": APIS["RERANK"]["URL"],
45
48
  "llm.api": APIS["RERANK"]["ENDPOINT"],
46
49
  "llm.model": kwargs.get("model"),
@@ -132,7 +135,7 @@ def embed(original_method, version, tracer):
132
135
  "langtrace.service.name": service_provider,
133
136
  "langtrace.service.type": "llm",
134
137
  "langtrace.service.version": version,
135
- "langtrace.version": "1.0.0",
138
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
136
139
  "url.full": APIS["EMBED"]["URL"],
137
140
  "llm.api": APIS["EMBED"]["ENDPOINT"],
138
141
  "llm.model": kwargs.get("model"),
@@ -242,7 +245,7 @@ def chat_create(original_method, version, tracer):
242
245
  "langtrace.service.name": service_provider,
243
246
  "langtrace.service.type": "llm",
244
247
  "langtrace.service.version": version,
245
- "langtrace.version": "1.0.0",
248
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
246
249
  "url.full": APIS["CHAT_CREATE"]["URL"],
247
250
  "llm.api": APIS["CHAT_CREATE"]["ENDPOINT"],
248
251
  "llm.model": (
@@ -437,7 +440,7 @@ def chat_stream(original_method, version, tracer):
437
440
  "langtrace.service.name": service_provider,
438
441
  "langtrace.service.type": "llm",
439
442
  "langtrace.service.version": version,
440
- "langtrace.version": "1.0.0",
443
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
441
444
  "url.full": APIS["CHAT_STREAM"]["URL"],
442
445
  "llm.api": APIS["CHAT_STREAM"]["ENDPOINT"],
443
446
  "llm.model": (
@@ -27,6 +27,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
27
27
  )
28
28
  from langtrace_python_sdk.constants.instrumentation.groq import APIS
29
29
  from langtrace_python_sdk.utils.llm import calculate_prompt_tokens, estimate_tokens
30
+ from importlib_metadata import version as v
31
+
32
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
30
33
 
31
34
 
32
35
  def chat_completions_create(original_method, version, tracer):
@@ -80,7 +83,7 @@ def chat_completions_create(original_method, version, tracer):
80
83
  "langtrace.service.name": service_provider,
81
84
  "langtrace.service.type": "llm",
82
85
  "langtrace.service.version": version,
83
- "langtrace.version": "1.0.0",
86
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
84
87
  "url.full": base_url,
85
88
  "llm.api": APIS["CHAT_COMPLETION"]["ENDPOINT"],
86
89
  "llm.prompts": json.dumps(llm_prompts),
@@ -340,7 +343,7 @@ def async_chat_completions_create(original_method, version, tracer):
340
343
  "langtrace.service.name": service_provider,
341
344
  "langtrace.service.type": "llm",
342
345
  "langtrace.service.version": version,
343
- "langtrace.version": "1.0.0",
346
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
344
347
  "url.full": base_url,
345
348
  "llm.api": APIS["CHAT_COMPLETION"]["ENDPOINT"],
346
349
  "llm.prompts": json.dumps(llm_prompts),
@@ -25,6 +25,7 @@ from langtrace_python_sdk.constants.instrumentation.common import (
25
25
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
26
26
  SERVICE_PROVIDERS,
27
27
  )
28
+ from importlib_metadata import version as v
28
29
 
29
30
 
30
31
  def generic_patch(
@@ -43,7 +44,7 @@ def generic_patch(
43
44
  "langtrace.service.name": service_provider,
44
45
  "langtrace.service.type": "framework",
45
46
  "langtrace.service.version": version,
46
- "langtrace.version": "1.0.0",
47
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
47
48
  "langchain.task.name": task,
48
49
  **(extra_attributes if extra_attributes is not None else {}),
49
50
  }
@@ -25,6 +25,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
25
25
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
26
26
  SERVICE_PROVIDERS,
27
27
  )
28
+ from importlib_metadata import version as v
29
+
30
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
28
31
 
29
32
 
30
33
  def generic_patch(
@@ -39,7 +42,7 @@ def generic_patch(
39
42
  "langtrace.service.name": service_provider,
40
43
  "langtrace.service.type": "framework",
41
44
  "langtrace.service.version": version,
42
- "langtrace.version": "1.0.0",
45
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
43
46
  "langchain.task.name": task,
44
47
  **(extra_attributes if extra_attributes is not None else {}),
45
48
  }
@@ -25,6 +25,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
25
25
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
26
26
  SERVICE_PROVIDERS,
27
27
  )
28
+ from importlib_metadata import version as v
29
+
30
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
28
31
 
29
32
 
30
33
  def generic_patch(
@@ -49,7 +52,7 @@ def generic_patch(
49
52
  "langtrace.service.name": service_provider,
50
53
  "langtrace.service.type": "framework",
51
54
  "langtrace.service.version": version,
52
- "langtrace.version": "1.0.0",
55
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
53
56
  "langchain.task.name": task,
54
57
  **(extra_attributes if extra_attributes is not None else {}),
55
58
  }
@@ -115,7 +118,7 @@ def runnable_patch(
115
118
  "langtrace.service.name": service_provider,
116
119
  "langtrace.service.type": "framework",
117
120
  "langtrace.service.version": version,
118
- "langtrace.version": "1.0.0",
121
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
119
122
  "langchain.task.name": task,
120
123
  }
121
124
 
@@ -25,6 +25,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
25
25
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
26
26
  SERVICE_PROVIDERS,
27
27
  )
28
+ from importlib_metadata import version as v
29
+
30
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
28
31
 
29
32
 
30
33
  def patch_graph_methods(method_name, tracer, version):
@@ -37,7 +40,7 @@ def patch_graph_methods(method_name, tracer, version):
37
40
  "langtrace.service.name": service_provider,
38
41
  "langtrace.service.type": "framework",
39
42
  "langtrace.service.version": version,
40
- "langtrace.version": "1.0.0",
43
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
41
44
  **(extra_attributes if extra_attributes is not None else {}),
42
45
  }
43
46
 
@@ -23,6 +23,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
23
23
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
24
24
  SERVICE_PROVIDERS,
25
25
  )
26
+ from importlib_metadata import version as v
27
+
28
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
26
29
 
27
30
 
28
31
  def generic_patch(method, task, tracer, version):
@@ -38,7 +41,7 @@ def generic_patch(method, task, tracer, version):
38
41
  "langtrace.service.name": service_provider,
39
42
  "langtrace.service.type": "framework",
40
43
  "langtrace.service.version": version,
41
- "langtrace.version": "1.0.0",
44
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
42
45
  "llamaindex.task.name": task,
43
46
  **(extra_attributes if extra_attributes is not None else {}),
44
47
  }
@@ -80,7 +83,7 @@ def async_generic_patch(method, task, tracer, version):
80
83
  "langtrace.service.name": service_provider,
81
84
  "langtrace.service.type": "framework",
82
85
  "langtrace.service.version": version,
83
- "langtrace.version": "1.0.0",
86
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
84
87
  "llamaindex.task.name": task,
85
88
  **(extra_attributes if extra_attributes is not None else {}),
86
89
  }
@@ -27,6 +27,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
27
27
  )
28
28
  from langtrace_python_sdk.constants.instrumentation.openai import APIS
29
29
  from langtrace_python_sdk.utils.llm import calculate_prompt_tokens, estimate_tokens
30
+ from importlib_metadata import version as v
31
+
32
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
30
33
 
31
34
 
32
35
  def images_generate(original_method, version, tracer):
@@ -48,7 +51,7 @@ def images_generate(original_method, version, tracer):
48
51
  "langtrace.service.name": service_provider,
49
52
  "langtrace.service.type": "llm",
50
53
  "langtrace.service.version": version,
51
- "langtrace.version": "1.0.0",
54
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
52
55
  "url.full": base_url,
53
56
  "llm.api": APIS["IMAGES_GENERATION"]["ENDPOINT"],
54
57
  "llm.model": kwargs.get("model"),
@@ -125,7 +128,7 @@ def async_images_generate(original_method, version, tracer):
125
128
  "langtrace.service.name": service_provider,
126
129
  "langtrace.service.type": "llm",
127
130
  "langtrace.service.version": version,
128
- "langtrace.version": "1.0.0",
131
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
129
132
  "url.full": base_url,
130
133
  "llm.api": APIS["IMAGES_GENERATION"]["ENDPOINT"],
131
134
  "llm.model": kwargs.get("model"),
@@ -235,7 +238,7 @@ def chat_completions_create(original_method, version, tracer):
235
238
  "langtrace.service.name": service_provider,
236
239
  "langtrace.service.type": "llm",
237
240
  "langtrace.service.version": version,
238
- "langtrace.version": "1.0.0",
241
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
239
242
  "url.full": base_url,
240
243
  "llm.api": APIS["CHAT_COMPLETION"]["ENDPOINT"],
241
244
  "llm.prompts": json.dumps(llm_prompts),
@@ -495,7 +498,7 @@ def async_chat_completions_create(original_method, version, tracer):
495
498
  "langtrace.service.name": service_provider,
496
499
  "langtrace.service.type": "llm",
497
500
  "langtrace.service.version": version,
498
- "langtrace.version": "1.0.0",
501
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
499
502
  "url.full": base_url,
500
503
  "llm.api": APIS["CHAT_COMPLETION"]["ENDPOINT"],
501
504
  "llm.prompts": json.dumps(llm_prompts),
@@ -725,7 +728,7 @@ def embeddings_create(original_method, version, tracer):
725
728
  "langtrace.service.name": service_provider,
726
729
  "langtrace.service.type": "llm",
727
730
  "langtrace.service.version": version,
728
- "langtrace.version": "1.0.0",
731
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
729
732
  "url.full": base_url,
730
733
  "llm.api": APIS["EMBEDDINGS_CREATE"]["ENDPOINT"],
731
734
  "llm.model": kwargs.get("model"),
@@ -792,7 +795,7 @@ def async_embeddings_create(original_method, version, tracer):
792
795
  "langtrace.service.name": service_provider,
793
796
  "langtrace.service.type": "llm",
794
797
  "langtrace.service.version": version,
795
- "langtrace.version": "1.0.0",
798
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
796
799
  "url.full": base_url,
797
800
  "llm.api": APIS["EMBEDDINGS_CREATE"]["ENDPOINT"],
798
801
  "llm.model": kwargs.get("model"),
@@ -28,6 +28,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
28
28
  from langtrace_python_sdk.constants.instrumentation.pinecone import APIS
29
29
  from langtrace_python_sdk.utils import set_span_attribute
30
30
  from langtrace_python_sdk.utils.silently_fail import silently_fail
31
+ from importlib_metadata import version as v
32
+
33
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
31
34
 
32
35
 
33
36
  def generic_patch(operation_name, version, tracer):
@@ -44,7 +47,7 @@ def generic_patch(operation_name, version, tracer):
44
47
  "langtrace.service.name": service_provider,
45
48
  "langtrace.service.type": "vectordb",
46
49
  "langtrace.service.version": version,
47
- "langtrace.version": "1.0.0",
50
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
48
51
  "db.system": "pinecone",
49
52
  "db.operation": api["OPERATION"],
50
53
  "db.query": json.dumps(kwargs.get("query")),
@@ -27,6 +27,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
27
27
  SERVICE_PROVIDERS,
28
28
  )
29
29
  from langtrace_python_sdk.constants.instrumentation.qdrant import APIS
30
+ from importlib_metadata import version as v
31
+
32
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
30
33
 
31
34
 
32
35
  def collection_patch(method, version, tracer):
@@ -44,7 +47,7 @@ def collection_patch(method, version, tracer):
44
47
  "langtrace.service.name": service_provider,
45
48
  "langtrace.service.type": "vectordb",
46
49
  "langtrace.service.version": version,
47
- "langtrace.version": "1.0.0",
50
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
48
51
  "db.system": "qdrant",
49
52
  "db.operation": api["OPERATION"],
50
53
  "db.query": json.dumps(kwargs.get("query")),
@@ -27,6 +27,9 @@ from langtrace_python_sdk.constants.instrumentation.common import (
27
27
  )
28
28
  from langtrace_python_sdk.constants.instrumentation.weaviate import APIS
29
29
  from langtrace_python_sdk.utils.misc import extract_input_params, to_iso_format
30
+ from importlib_metadata import version as v
31
+
32
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
30
33
 
31
34
  # Predefined metadata response attributes
32
35
  METADATA_ATTRIBUTES = [
@@ -118,7 +121,7 @@ def create_traced_method(method_name, version, tracer, get_collection_name=None)
118
121
  "langtrace.service.name": service_provider,
119
122
  "langtrace.service.type": "vectordb",
120
123
  "langtrace.service.version": version,
121
- "langtrace.version": "1.0.0",
124
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
122
125
  "db.system": "weaviate",
123
126
  "db.operation": api["OPERATION"],
124
127
  "db.collection.name": collection_name,
@@ -0,0 +1,53 @@
1
+ from importlib.metadata import version
2
+ import time
3
+ import requests
4
+ from colorama import Fore
5
+
6
+
7
+ class SDKVersionChecker:
8
+ _cache: None
9
+ _cache_duration: int
10
+ _current_version: str
11
+ _latest_version: str
12
+
13
+ def __init__(self):
14
+ self._cache = {"timestamp": 0, "latest_version": None}
15
+ self._cache_duration = 3600 # Cache for 1 hour
16
+ self._current_version = version("langtrace_python_sdk")
17
+
18
+ def fetch_latest(self):
19
+ try:
20
+ current_time = time.time()
21
+ if (
22
+ current_time - self._cache["timestamp"] < self._cache_duration
23
+ and self._cache["latest_version"]
24
+ ):
25
+ return self._cache["latest_version"]
26
+
27
+ response = requests.get(
28
+ "https://api.github.com/repos/Scale3-Labs/langtrace-python-sdk/releases/latest",
29
+ timeout=20,
30
+ )
31
+ response.raise_for_status()
32
+ latest_version = response.json()["tag_name"]
33
+ self._cache.update(
34
+ {"timestamp": current_time, "latest_version": latest_version}
35
+ )
36
+ self._latest_version = latest_version
37
+ return latest_version
38
+ except Exception as err:
39
+ return None
40
+
41
+ def is_outdated(self):
42
+ latest_version = self.fetch_latest()
43
+ if latest_version:
44
+ return self._current_version < latest_version
45
+ return False
46
+
47
+ def check(self):
48
+ if self.is_outdated():
49
+ print(
50
+ Fore.YELLOW
51
+ + f"Warning: Your Langtrace SDK version {self._current_version} is outdated. Please upgrade to {self._latest_version}."
52
+ + Fore.RESET
53
+ )
@@ -34,6 +34,7 @@ from langtrace_python_sdk.utils.types import (
34
34
  LangTraceApiError,
35
35
  LangTraceEvaluation,
36
36
  )
37
+ from colorama import Fore
37
38
 
38
39
 
39
40
  def with_langtrace_root_span(
@@ -112,63 +113,78 @@ def with_additional_attributes(attributes={}):
112
113
  return decorator
113
114
 
114
115
 
115
- def send_user_feedback(data: EvaluationAPIData) -> None:
116
- try:
117
- evaluation = _get_evaluation(data["spanId"])
118
- headers = {"x-api-key": os.environ["LANGTRACE_API_KEY"]}
119
- if evaluation is not None:
120
- # Make a PUT request to update the evaluation
121
- response = requests.put(
122
- f"{LANGTRACE_REMOTE_URL}/api/evaluation",
123
- json=data,
124
- params={"spanId": data["spanId"]},
125
- headers=headers,
126
- timeout=None,
127
- )
128
- response.raise_for_status()
116
+ class SendUserFeedback:
117
+ _langtrace_host: str
118
+ _langtrace_api_key: str
129
119
 
130
- else:
131
- # Make a POST request to create a new evaluation
132
- response = requests.post(
133
- f"{LANGTRACE_REMOTE_URL}/api/evaluation",
134
- json=data,
135
- params={"spanId": data["spanId"]},
136
- headers=headers,
120
+ def __init__(self):
121
+ self._langtrace_host = os.environ.get(
122
+ "LANGTRACE_API_HOST", LANGTRACE_REMOTE_URL
123
+ )
124
+ self._langtrace_api_key = os.environ.get("LANGTRACE_API_KEY", None)
125
+
126
+ def evaluate(self, data: EvaluationAPIData) -> None:
127
+ try:
128
+ if self._langtrace_api_key is None:
129
+ print(Fore.RED)
130
+ print(
131
+ f"Missing Langtrace API key, proceed to {self._langtrace_host} to create one"
132
+ )
133
+ print("Set the API key as an environment variable LANGTRACE_API_KEY")
134
+ print(Fore.RESET)
135
+ return
136
+ evaluation = self.get_evaluation(data["spanId"])
137
+ headers = {"x-api-key": self._langtrace_api_key}
138
+ if evaluation is not None:
139
+ # Make a PUT request to update the evaluation
140
+ response = requests.put(
141
+ f"{self._langtrace_host}/api/evaluation",
142
+ json=data,
143
+ params={"spanId": data["spanId"]},
144
+ headers=headers,
145
+ timeout=None,
146
+ )
147
+ response.raise_for_status()
148
+
149
+ else:
150
+ # Make a POST request to create a new evaluation
151
+ response = requests.post(
152
+ f"{self._langtrace_host}/api/evaluation",
153
+ json=data,
154
+ params={"spanId": data["spanId"]},
155
+ headers=headers,
156
+ timeout=None,
157
+ )
158
+ response.raise_for_status()
159
+
160
+ except requests.RequestException as err:
161
+ if err.response is not None:
162
+ message = (
163
+ err.response.json().get("message", "")
164
+ if err.response.json().get("message", "")
165
+ else err.response.text if err.response.text else str(err)
166
+ )
167
+ raise LangTraceApiError(message, err.response.status_code)
168
+ raise LangTraceApiError(str(err), 500)
169
+
170
+ def get_evaluation(self, span_id: str) -> Optional[LangTraceEvaluation]:
171
+ try:
172
+ response = requests.get(
173
+ f"{self._langtrace_host}/api/evaluation",
174
+ params={"spanId": span_id},
175
+ headers={"x-api-key": self._langtrace_api_key},
137
176
  timeout=None,
138
177
  )
178
+ evaluations = response.json().get("evaluations", [])
139
179
  response.raise_for_status()
140
-
141
- except requests.RequestException as err:
142
- # Handle specific HTTP errors or general request exceptions
143
- error_msg = str(err)
144
- if err.response:
145
- try:
146
- # Try to extract server-provided error message
147
- error_msg = err.response.json().get("error", error_msg)
148
- except ValueError:
149
- # Fallback if response is not JSON
150
- error_msg = err.response.text
151
- raise Exception(f"API error: {error_msg}") from err
152
-
153
-
154
- def _get_evaluation(span_id: str) -> Optional[LangTraceEvaluation]:
155
- try:
156
- response = requests.get(
157
- f"{LANGTRACE_REMOTE_URL}/api/evaluation",
158
- params={"spanId": span_id},
159
- headers={"x-api-key": os.environ["LANGTRACE_API_KEY"]},
160
- timeout=None,
161
- )
162
- evaluations = response.json().get("evaluations", [])
163
- response.raise_for_status()
164
- return None if not evaluations else evaluations[0]
165
-
166
- except requests.RequestException as err:
167
- if err.response is not None:
168
- message = (
169
- err.response.json().get("message", "")
170
- if err.response.json().get("message", "")
171
- else err.response.text if err.response.text else str(err)
172
- )
173
- raise LangTraceApiError(message, err.response.status_code)
174
- raise LangTraceApiError(str(err), 500)
180
+ return None if not evaluations else evaluations[0]
181
+
182
+ except requests.RequestException as err:
183
+ if err.response is not None:
184
+ message = (
185
+ err.response.json().get("message", "")
186
+ if err.response.json().get("message", "")
187
+ else err.response.text if err.response.text else str(err)
188
+ )
189
+ raise LangTraceApiError(message, err.response.status_code)
190
+ raise LangTraceApiError(str(err), 500)
@@ -0,0 +1 @@
1
+ __version__ = "2.1.10"
@@ -2,7 +2,9 @@ import pytest
2
2
  import json
3
3
  import importlib
4
4
  from langtrace_python_sdk.constants.instrumentation.anthropic import APIS
5
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
5
6
  from tests.utils import assert_response_format, assert_token_count
7
+ from importlib_metadata import version as v
6
8
 
7
9
 
8
10
  @pytest.mark.vcr()
@@ -30,7 +32,7 @@ def test_anthropic(anthropic_client, exporter):
30
32
  assert attributes.get("langtrace.service.version") == importlib.metadata.version(
31
33
  "anthropic"
32
34
  )
33
- assert attributes.get("langtrace.version") == "1.0.0"
35
+ assert attributes.get("langtrace.version") == v(LANGTRACE_SDK_NAME)
34
36
  assert attributes.get("url.full") == "https://api.anthropic.com"
35
37
  assert attributes.get("llm.api") == APIS["MESSAGES_CREATE"]["ENDPOINT"]
36
38
  assert attributes.get("llm.model") == llm_model_value
@@ -72,7 +74,7 @@ def test_anthropic_streaming(anthropic_client, exporter):
72
74
  assert attributes.get("langtrace.service.version") == importlib.metadata.version(
73
75
  "anthropic"
74
76
  )
75
- assert attributes.get("langtrace.version") == "1.0.0"
77
+ assert attributes.get("langtrace.version") == v(LANGTRACE_SDK_NAME)
76
78
  assert attributes.get("url.full") == "https://api.anthropic.com"
77
79
  assert attributes.get("llm.api") == APIS["MESSAGES_CREATE"]["ENDPOINT"]
78
80
  assert attributes.get("llm.model") == llm_model_value
@@ -3,7 +3,9 @@ from langtrace_python_sdk.constants.instrumentation.cohere import APIS
3
3
  from langtrace_python_sdk.constants.instrumentation.common import SERVICE_PROVIDERS
4
4
  import pytest
5
5
  import importlib
6
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
6
7
  from tests.utils import assert_response_format, assert_token_count
8
+ from importlib_metadata import version as v
7
9
 
8
10
 
9
11
  @pytest.mark.vcr
@@ -39,7 +41,7 @@ def test_cohere_chat(cohere_client, exporter):
39
41
  "cohere"
40
42
  )
41
43
 
42
- assert attributes.get("langtrace.version") == "1.0.0"
44
+ assert attributes.get("langtrace.version") == v(LANGTRACE_SDK_NAME)
43
45
  assert attributes.get("url.full") == APIS["CHAT_CREATE"]["URL"]
44
46
  assert attributes.get("llm.api") == APIS["CHAT_CREATE"]["ENDPOINT"]
45
47
  assert attributes.get("llm.model") == llm_model_value
@@ -97,7 +99,7 @@ def test_cohere_chat_streaming(cohere_client, exporter):
97
99
  "cohere"
98
100
  )
99
101
 
100
- assert attributes.get("langtrace.version") == "1.0.0"
102
+ assert attributes.get("langtrace.version") == v(LANGTRACE_SDK_NAME)
101
103
  assert attributes.get("url.full") == APIS["CHAT_STREAM"]["URL"]
102
104
  assert attributes.get("llm.api") == APIS["CHAT_STREAM"]["ENDPOINT"]
103
105
  assert attributes.get("llm.model") == llm_model_value