langtrace-python-sdk 2.1.11__py3-none-any.whl → 2.1.13__py3-none-any.whl

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.
@@ -0,0 +1,40 @@
1
+ from dotenv import find_dotenv, load_dotenv
2
+ from openai import OpenAI
3
+
4
+ from langtrace_python_sdk import langtrace
5
+
6
+ # from PIL import Image
7
+
8
+
9
+ _ = load_dotenv(find_dotenv())
10
+
11
+ langtrace.init(write_spans_to_console=True)
12
+
13
+
14
+ client = OpenAI()
15
+
16
+
17
+ # use this to convert the image to RGBA
18
+ # def convert_to_rgba():
19
+ # Image.open("./resources/image.png").convert("RGBA").save("./resources/image_with_alpha.png")
20
+
21
+
22
+ def image_edit():
23
+
24
+ response = client.images.edit(
25
+ model="dall-e-2",
26
+ image=open("./resources/lounge_flamingo.png", "rb"),
27
+ mask=open("./resources/mask.png", "rb"),
28
+ prompt="A sunlit indoor lounge area with a pool and duck standing in side with flamingo.",
29
+ n=1,
30
+ size="1024x1024",
31
+ response_format="url",
32
+ )
33
+
34
+ image_url = response.data[0].url
35
+ print(image_url)
36
+ print(response)
37
+
38
+
39
+ image_edit()
40
+ # convert_to_rgba()
@@ -40,6 +40,10 @@ APIS = {
40
40
  "METHOD": OpenAIMethods.IMAGES_GENERATION.value,
41
41
  "ENDPOINT": "/images/generations",
42
42
  },
43
+ "IMAGES_EDIT": {
44
+ "METHOD": OpenAIMethods.IMAGES_EDIT.value,
45
+ "ENDPOINT": "/images/edits",
46
+ },
43
47
  "EMBEDDINGS_CREATE": {
44
48
  "METHOD": OpenAIMethods.EMBEDDINGS_CREATE.value,
45
49
  "ENDPOINT": "/embeddings",
@@ -48,14 +48,19 @@ class LangTraceExporter(SpanExporter):
48
48
  """
49
49
 
50
50
  api_key: str
51
+ api_host: str
51
52
 
52
53
  def __init__(
53
54
  self,
55
+ api_host,
54
56
  api_key: str = None,
55
- api_host: typing.Optional[str] = None,
56
57
  ) -> None:
57
58
  self.api_key = api_key or os.environ.get("LANGTRACE_API_KEY")
58
- self.api_host: str = api_host or LANGTRACE_REMOTE_URL
59
+ self.api_host = (
60
+ f"{LANGTRACE_REMOTE_URL}/api/trace"
61
+ if api_host == LANGTRACE_REMOTE_URL
62
+ else api_host
63
+ )
59
64
 
60
65
  def export(self, spans: typing.Sequence[ReadableSpan]) -> SpanExportResult:
61
66
  """
@@ -90,7 +95,7 @@ class LangTraceExporter(SpanExporter):
90
95
  # Send data to remote URL
91
96
  try:
92
97
  response = requests.post(
93
- url=f"{self.api_host}/api/trace",
98
+ url=f"{self.api_host}",
94
99
  data=json.dumps(data),
95
100
  headers={"Content-Type": "application/json", "x-api-key": self.api_key},
96
101
  timeout=20,
@@ -28,6 +28,7 @@ from langtrace_python_sdk.instrumentation.openai.patch import (
28
28
  async_images_generate,
29
29
  chat_completions_create,
30
30
  embeddings_create,
31
+ images_edit,
31
32
  images_generate,
32
33
  )
33
34
 
@@ -37,7 +38,7 @@ logging.basicConfig(level=logging.FATAL)
37
38
  class OpenAIInstrumentation(BaseInstrumentor):
38
39
 
39
40
  def instrumentation_dependencies(self) -> Collection[str]:
40
- return ["openai >= 0.27.0"]
41
+ return ["openai >= 0.27.0", "trace-attributes >= 4.0.5"]
41
42
 
42
43
  def _instrument(self, **kwargs):
43
44
  tracer_provider = kwargs.get("tracer_provider")
@@ -69,6 +70,13 @@ class OpenAIInstrumentation(BaseInstrumentor):
69
70
  "AsyncImages.generate",
70
71
  async_images_generate("openai.images.generate", version, tracer),
71
72
  )
73
+
74
+ wrap_function_wrapper(
75
+ "openai.resources.images",
76
+ "Images.edit",
77
+ images_edit("openai.images.edit", version, tracer),
78
+ )
79
+
72
80
  wrap_function_wrapper(
73
81
  "openai.resources.embeddings",
74
82
  "Embeddings.create",
@@ -16,20 +16,19 @@ limitations under the License.
16
16
 
17
17
  import json
18
18
 
19
+ from importlib_metadata import version as v
19
20
  from langtrace.trace_attributes import Event, LLMSpanAttributes
20
21
  from opentelemetry import baggage
21
22
  from opentelemetry.trace import SpanKind
22
23
  from opentelemetry.trace.status import Status, StatusCode
23
24
 
25
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
24
26
  from langtrace_python_sdk.constants.instrumentation.common import (
25
27
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
26
28
  SERVICE_PROVIDERS,
27
29
  )
28
30
  from langtrace_python_sdk.constants.instrumentation.openai import APIS
29
31
  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
33
32
 
34
33
 
35
34
  def images_generate(original_method, version, tracer):
@@ -187,6 +186,89 @@ def async_images_generate(original_method, version, tracer):
187
186
  return traced_method
188
187
 
189
188
 
189
+ def images_edit(original_method, version, tracer):
190
+ """
191
+ Wrap the `edit` method of the `Images` class to trace it.
192
+ """
193
+
194
+ def traced_method(wrapped, instance, args, kwargs):
195
+ base_url = (
196
+ str(instance._client._base_url)
197
+ if hasattr(instance, "_client") and hasattr(instance._client, "_base_url")
198
+ else ""
199
+ )
200
+ service_provider = SERVICE_PROVIDERS["OPENAI"]
201
+ extra_attributes = baggage.get_baggage(LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY)
202
+
203
+ span_attributes = {
204
+ "langtrace.sdk.name": "langtrace-python-sdk",
205
+ "langtrace.service.name": service_provider,
206
+ "langtrace.service.type": "llm",
207
+ "langtrace.service.version": version,
208
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
209
+ "url.full": base_url,
210
+ "llm.api": APIS["IMAGES_EDIT"]["ENDPOINT"],
211
+ "llm.model": kwargs.get("model"),
212
+ "llm.response_format": kwargs.get("response_format"),
213
+ "llm.image.size": kwargs.get("size"),
214
+ "llm.prompts": json.dumps(
215
+ [
216
+ {
217
+ "role": kwargs.get("user", "user"),
218
+ "content": kwargs.get("prompt", []),
219
+ }
220
+ ]
221
+ ),
222
+ "llm.top_k": kwargs.get("n"),
223
+ **(extra_attributes if extra_attributes is not None else {}),
224
+ }
225
+
226
+ attributes = LLMSpanAttributes(**span_attributes)
227
+
228
+ with tracer.start_as_current_span(
229
+ APIS["IMAGES_EDIT"]["METHOD"], kind=SpanKind.CLIENT
230
+ ) as span:
231
+ for field, value in attributes.model_dump(by_alias=True).items():
232
+ if value is not None:
233
+ span.set_attribute(field, value)
234
+ try:
235
+ # Attempt to call the original method
236
+ result = wrapped(*args, **kwargs)
237
+
238
+ response = []
239
+ # Parse each image object
240
+ for each_data in result.data:
241
+ response.append(
242
+ {
243
+ "role": "assistant",
244
+ "content": {
245
+ "url": each_data.url,
246
+ "revised_prompt": each_data.revised_prompt,
247
+ "base64": each_data.b64_json,
248
+ },
249
+ }
250
+ )
251
+
252
+ span.add_event(
253
+ name="response",
254
+ attributes={"llm.responses": json.dumps(response)},
255
+ )
256
+
257
+ span.set_status(StatusCode.OK)
258
+ return result
259
+ except Exception as err:
260
+ # Record the exception in the span
261
+ span.record_exception(err)
262
+
263
+ # Set the span status to indicate an error
264
+ span.set_status(Status(StatusCode.ERROR, str(err)))
265
+
266
+ # Reraise the exception to ensure it's not swallowed
267
+ raise
268
+
269
+ return traced_method
270
+
271
+
190
272
  def chat_completions_create(original_method, version, tracer):
191
273
  """Wrap the `create` method of the `ChatCompletion` class to trace it."""
192
274
 
@@ -16,6 +16,9 @@ limitations under the License.
16
16
 
17
17
  from typing import Optional
18
18
 
19
+ from langtrace_python_sdk.constants.exporter.langtrace_exporter import (
20
+ LANGTRACE_REMOTE_URL,
21
+ )
19
22
  from langtrace_python_sdk.types import DisableInstrumentations, InstrumentationType
20
23
  from opentelemetry import trace
21
24
  from opentelemetry.sdk.trace import TracerProvider
@@ -46,6 +49,7 @@ from langtrace_python_sdk.instrumentation import (
46
49
  from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor
47
50
  from colorama import Fore
48
51
  from langtrace_python_sdk.utils import check_if_sdk_is_outdated
52
+ import os
49
53
 
50
54
 
51
55
  def init(
@@ -53,15 +57,19 @@ def init(
53
57
  batch: bool = True,
54
58
  write_spans_to_console: bool = False,
55
59
  custom_remote_exporter=None,
56
- api_host: Optional[str] = None,
60
+ api_host: Optional[str] = LANGTRACE_REMOTE_URL,
57
61
  disable_instrumentations: Optional[DisableInstrumentations] = None,
58
62
  ):
63
+
64
+ host = (
65
+ os.environ.get("LANGTRACE_API_HOST", None) or api_host or LANGTRACE_REMOTE_URL
66
+ )
59
67
  check_if_sdk_is_outdated()
60
68
  print(Fore.GREEN + "Initializing Langtrace SDK.." + Fore.RESET)
61
69
  provider = TracerProvider(resource=Resource.create({"service.name": sys.argv[0]}))
62
70
 
63
71
  remote_write_exporter = (
64
- LangTraceExporter(api_key=api_key, api_host=api_host)
72
+ LangTraceExporter(api_key=api_key, api_host=host)
65
73
  if custom_remote_exporter is None
66
74
  else custom_remote_exporter
67
75
  )
@@ -70,6 +78,7 @@ def init(
70
78
  simple_processor_remote = SimpleSpanProcessor(remote_write_exporter)
71
79
  simple_processor_console = SimpleSpanProcessor(console_exporter)
72
80
 
81
+ os.environ["LANGTRACE_API_HOST"] = host.replace("/api/trace", "")
73
82
  # Initialize tracer
74
83
  trace.set_tracer_provider(provider)
75
84
  all_instrumentations = {
@@ -101,8 +110,8 @@ def init(
101
110
  else:
102
111
  provider.add_span_processor(simple_processor_remote)
103
112
 
104
- elif api_host is not None:
105
- print(Fore.BLUE + f"Exporting spans to custom host: {api_host}.." + Fore.RESET)
113
+ elif host != LANGTRACE_REMOTE_URL:
114
+ print(Fore.BLUE + f"Exporting spans to custom host: {host}.." + Fore.RESET)
106
115
  if batch:
107
116
  provider.add_span_processor(batch_processor_remote)
108
117
  else:
@@ -1,7 +1,4 @@
1
1
  import os
2
- from langtrace_python_sdk.constants.exporter.langtrace_exporter import (
3
- LANGTRACE_REMOTE_URL,
4
- )
5
2
  import requests
6
3
  from urllib.parse import urlencode
7
4
  from typing import Optional, TypedDict, Dict, List
@@ -59,7 +56,7 @@ def get_prompt_from_registry(
59
56
  print(query_params)
60
57
  # Make the GET request to the API
61
58
  response = requests.get(
62
- f"{LANGTRACE_REMOTE_URL}/api/promptset?{query_string}",
59
+ f"{os.environ['LANGTRACE_API_HOST']}/api/promptset?{query_string}",
63
60
  headers=headers,
64
61
  timeout=None,
65
62
  )
@@ -118,9 +118,7 @@ class SendUserFeedback:
118
118
  _langtrace_api_key: str
119
119
 
120
120
  def __init__(self):
121
- self._langtrace_host = os.environ.get(
122
- "LANGTRACE_API_HOST", LANGTRACE_REMOTE_URL
123
- )
121
+ self._langtrace_host = os.environ["LANGTRACE_API_HOST"]
124
122
  self._langtrace_api_key = os.environ.get("LANGTRACE_API_KEY", None)
125
123
 
126
124
  def evaluate(self, data: EvaluationAPIData) -> None:
@@ -137,6 +135,7 @@ class SendUserFeedback:
137
135
  headers = {"x-api-key": self._langtrace_api_key}
138
136
  if evaluation is not None:
139
137
  # Make a PUT request to update the evaluation
138
+ print(Fore.BLUE + "Updating Feedback.." + Fore.RESET)
140
139
  response = requests.put(
141
140
  f"{self._langtrace_host}/api/evaluation",
142
141
  json=data,
@@ -147,6 +146,7 @@ class SendUserFeedback:
147
146
  response.raise_for_status()
148
147
 
149
148
  else:
149
+ print(Fore.BLUE + "Sending User Feedback.." + Fore.RESET)
150
150
  # Make a POST request to create a new evaluation
151
151
  response = requests.post(
152
152
  f"{self._langtrace_host}/api/evaluation",
@@ -1 +1 @@
1
- __version__ = "2.1.11"
1
+ __version__ = "2.1.13"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 2.1.11
3
+ Version: 2.1.13
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>
@@ -19,7 +19,7 @@ Requires-Dist: opentelemetry-instrumentation>=0.46b0
19
19
  Requires-Dist: opentelemetry-sdk>=1.25.0
20
20
  Requires-Dist: sqlalchemy
21
21
  Requires-Dist: tiktoken>=0.1.1
22
- Requires-Dist: trace-attributes>=4.0.4
22
+ Requires-Dist: trace-attributes==4.0.5
23
23
  Provides-Extra: dev
24
24
  Requires-Dist: anthropic; extra == 'dev'
25
25
  Requires-Dist: chromadb; extra == 'dev'
@@ -26,10 +26,13 @@ examples/openai_example/async_tool_calling_streaming.py,sha256=PQMHSWAN1DfgjK88b
26
26
  examples/openai_example/chat_completion.py,sha256=f2rMHJU1Dph_fAOv9qCksvtldl1s9UitEeLsvyoSpGA,1253
27
27
  examples/openai_example/embeddings_create.py,sha256=d05rArTWxsmCxOdTRaGw3n9Yt1HXxOHHCtciCHIwBGc,502
28
28
  examples/openai_example/function_calling.py,sha256=rrnrFw2HyV_gv4TdwUr299baP4tIupz6EQWWmLDtJkU,2265
29
+ examples/openai_example/images_edit.py,sha256=8GJac6PRn0TLfUSV5dVAZ0twoti4Ogq0sEGxTdxlU44,884
29
30
  examples/openai_example/images_generate.py,sha256=SZNY8Visk7JUpx5QhNxTNINHmPAGdCUayF-Q7_iCr50,470
30
31
  examples/openai_example/tool_calling.py,sha256=_IV7KoSI_37u1TTZWdVa58BYjkDfhSurvM86xwaNNhY,2316
31
32
  examples/openai_example/tool_calling_nonstreaming.py,sha256=Yc848IooZRXNynHL6z0kOgJ4qbmL_NOufcb2VmWRukI,3847
32
33
  examples/openai_example/tool_calling_streaming.py,sha256=mV1RbyAoVhumGRPpqPWQ6PMhnJyeifrlELd2-K1qJ_w,7015
34
+ examples/openai_example/resources/lounge_flamingo.png,sha256=aspniTtmWqwLp3YUhYqAe2ze8nJaq-bTSW7uUJudtd0,2416234
35
+ examples/openai_example/resources/mask.png,sha256=mUE9Dfp-x8jI0Nh4WGr0P9pueUqEZfpjwxR-6Rxzxz4,2483660
33
36
  examples/perplexity_example/basic.py,sha256=bp7n27gaugJkaFVyt8pjaEfi66lYcqP6eFFjPewUShY,668
34
37
  examples/pinecone_example/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
38
  examples/pinecone_example/basic.py,sha256=gkb1uQwKFLnWmRuM2KGvAeTpT1AYlHmz2kRey5_-Dqs,1437
@@ -37,8 +40,8 @@ examples/qdrant_example/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
37
40
  examples/qdrant_example/basic.py,sha256=DCMjHSuBZKkhEjCkwy5d5La9WMyW0lCWqtcZWiFCEm4,1425
38
41
  examples/weaviate_example/query_text.py,sha256=iE9OiHsibjsprbCGzabE03eZsGN06e6ym2iS1A9P3ig,64650
39
42
  langtrace_python_sdk/__init__.py,sha256=FuvyRuStRe_N2wo2SB2_ZQ0w7LGNIjV0lLi6S1IgGwY,958
40
- langtrace_python_sdk/langtrace.py,sha256=E2z-VCke4QnFiBm-Ivx7W571xN0vRH7r1raHl_sMz8w,6674
41
- langtrace_python_sdk/version.py,sha256=zcHMV6HbszEZFZ1gDEpbHxTYg8dJ5fCYdeDd-O6IPP4,23
43
+ langtrace_python_sdk/langtrace.py,sha256=pN-xJRXrtvJIenMOH0-xlNXcnqL9qMjg28SrW-PMRU0,6978
44
+ langtrace_python_sdk/version.py,sha256=59WYUQbpJnalweC5r75GQeXXOChhHcCgbKm0CW6XD1M,23
42
45
  langtrace_python_sdk/constants/__init__.py,sha256=P8QvYwt5czUNDZsKS64vxm9Dc41ptGbuF1TFtAF6nv4,44
43
46
  langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=5MNjnAOg-4am78J3gVMH6FSwq5N8TOj72ugkhsw4vi0,46
44
47
  langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -47,12 +50,12 @@ langtrace_python_sdk/constants/instrumentation/chroma.py,sha256=hiPGYdHS0Yj4Kh3e
47
50
  langtrace_python_sdk/constants/instrumentation/cohere.py,sha256=tf9sDfb5K3qOAHChEE5o8eYWPZ1io58VsOjZDCZPxfw,577
48
51
  langtrace_python_sdk/constants/instrumentation/common.py,sha256=TCHX8uqIJD2p9sONGrlX6Q3b5Mj859PTP-c729ogKcY,782
49
52
  langtrace_python_sdk/constants/instrumentation/groq.py,sha256=VFXmIl4aqGY_fS0PAmjPj_Qm7Tibxbx7Ur_e7rQpqXc,134
50
- langtrace_python_sdk/constants/instrumentation/openai.py,sha256=9VF6ic9Ed3bpSvdp6iNmrpx2Ppo6DPav3hoUcqSQSv0,1048
53
+ langtrace_python_sdk/constants/instrumentation/openai.py,sha256=uEOH5UXapU2DSf2AdgXTRhhJEHGWXUNFkUGD5QafflM,1164
51
54
  langtrace_python_sdk/constants/instrumentation/pinecone.py,sha256=Xaqqw-xBO0JJLGk75hiCUQGztNm0HiVaLQvjtYK7VJM,472
52
55
  langtrace_python_sdk/constants/instrumentation/qdrant.py,sha256=yL7BopNQTXW7L7Z-gVM2PdusKD7r9qqcATvczFd7NtQ,1999
53
56
  langtrace_python_sdk/constants/instrumentation/weaviate.py,sha256=Iytf2OpB_irZYEmvOQ7Pf483EdG5Bh59GxaBlXck0yY,1501
54
57
  langtrace_python_sdk/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=Fj--DzBr4AwTM_iS3lRz0NhqESEyTOZ3SBCA4OevFkE,4127
58
+ langtrace_python_sdk/extensions/langtrace_exporter.py,sha256=gWVRU2DlB4xjZ4ww7M63DaLiAN5zQ2k1HPrythmjEdo,4202
56
59
  langtrace_python_sdk/instrumentation/__init__.py,sha256=htP583cfv32IUvWeck6edRiPQxhk0uzUa1l1vgbtjtY,1042
57
60
  langtrace_python_sdk/instrumentation/anthropic/__init__.py,sha256=donrurJAGYlxrSRA3BIf76jGeUcAx9Tq8CVpah68S0Y,101
58
61
  langtrace_python_sdk/instrumentation/anthropic/instrumentation.py,sha256=-srgE8qumAn0ulQYZxMa8ch-9IBH0XgBW_rfEnGk6LI,1684
@@ -82,8 +85,8 @@ langtrace_python_sdk/instrumentation/llamaindex/__init__.py,sha256=rHvuqpuQKLj57
82
85
  langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py,sha256=8iAg-Oxwf2W4S60qRfO5mvzORYxublgq7FdGWqUB4q8,2965
83
86
  langtrace_python_sdk/instrumentation/llamaindex/patch.py,sha256=LwnI9DCC5wcnixPUOmwIWSE7ryTk1J0xFBYdJja8t_Q,4324
84
87
  langtrace_python_sdk/instrumentation/openai/__init__.py,sha256=VPHRNCQEdkizIVP2d0Uw_a7t8XOTSTprEIB8oboJFbs,95
85
- langtrace_python_sdk/instrumentation/openai/instrumentation.py,sha256=G2HSZfr6DuP2n-8v0h91M60m0DJWFBcru4-1FQJl-5A,2726
86
- langtrace_python_sdk/instrumentation/openai/patch.py,sha256=Og6_W3MqnNrzOfQ_WBLnCQUy0xsNZol1bsoScajiI2E,37479
88
+ langtrace_python_sdk/instrumentation/openai/instrumentation.py,sha256=A0BJHRLcZ74TNVg6I0I9M5YWvSpAtXwMmME6N5CEQ_M,2945
89
+ langtrace_python_sdk/instrumentation/openai/patch.py,sha256=ugf3y-20YVqJmHsheQaL3EEy7FPbOgEMtcG5dOYjxiE,40553
87
90
  langtrace_python_sdk/instrumentation/pinecone/__init__.py,sha256=DzXyGh9_MGWveJvXULkFwdkf7PbG2s3bAWtT1Dmz7Ok,99
88
91
  langtrace_python_sdk/instrumentation/pinecone/instrumentation.py,sha256=mxQXe3oAOPLsMJGlEzAe6zpgK7RtWfqmcNmGW_gQXX4,1900
89
92
  langtrace_python_sdk/instrumentation/pinecone/patch.py,sha256=nZUHZ_1HfLjByJS0gkvrDRj69JbdnfWpezk6zl1EMvU,5000
@@ -97,11 +100,11 @@ langtrace_python_sdk/types/__init__.py,sha256=-j8cuz3bhUdOqj7N2c0w5y-j3UmcxwEgNh
97
100
  langtrace_python_sdk/utils/__init__.py,sha256=E0nQyBE-4O_GR2PM9y_l7shx4hJLo5xRThR_LMx97M0,278
98
101
  langtrace_python_sdk/utils/llm.py,sha256=CiASOvObFvsN6T7ogWywNXfXGzI__u9misgolLxyeZk,2161
99
102
  langtrace_python_sdk/utils/misc.py,sha256=CD9NWRLxLpFd0YwlHJqzlpFNedXVWtAKGOjQWnDCo8k,838
100
- langtrace_python_sdk/utils/prompt_registry.py,sha256=7FFB4Pj0414qgf02h5zL5vXBZgNBf74g4Iq7GdFaIO0,2689
103
+ langtrace_python_sdk/utils/prompt_registry.py,sha256=-BNHX_UPAqBG1IdNUXZIA669M59wvFTyTvBifrFjy3k,2600
101
104
  langtrace_python_sdk/utils/sdk_version_checker.py,sha256=FzjIWZjn53cX0LEVPdipQd1fO9lG8iGVUEVUs9Hyk6M,1713
102
105
  langtrace_python_sdk/utils/silently_fail.py,sha256=F_9EteXCO9Cyq-8MA1OT2Zy_dx8n06nt31I7t7ui24E,478
103
106
  langtrace_python_sdk/utils/types.py,sha256=l-N6o7cnWUyrD6dBvW7W3Pf5CkPo5QaoT__k1XLbrQg,383
104
- langtrace_python_sdk/utils/with_root_span.py,sha256=wORIk9N4BOWEP9zoDMXpD3qX4r6P6sDMUn9bzl8BbvM,6754
107
+ langtrace_python_sdk/utils/with_root_span.py,sha256=ALe9AN7Ww8dSfJMqO_-XLpXcmw2FYr76vDNdadmldo8,6850
105
108
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
109
  tests/conftest.py,sha256=0Jo6iCZTXbdvyJVhG9UpYGkLabL75378oauCzmt-Sa8,603
107
110
  tests/utils.py,sha256=hP8sTH-M8WO6zlLkSFHPf6483ZcKEcnxul6JIIb1pLM,1396
@@ -138,7 +141,7 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
138
141
  tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
139
142
  tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
140
143
  tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
141
- langtrace_python_sdk-2.1.11.dist-info/METADATA,sha256=nEImkaBy426rcyy-Rn2YNFE3gYJgPF-EYYCrzmWvTTM,11860
142
- langtrace_python_sdk-2.1.11.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
143
- langtrace_python_sdk-2.1.11.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
144
- langtrace_python_sdk-2.1.11.dist-info/RECORD,,
144
+ langtrace_python_sdk-2.1.13.dist-info/METADATA,sha256=sYv1f4zRAoiFCz20_lA_anHmpeCEk2y4Tf5OoQck0Wc,11860
145
+ langtrace_python_sdk-2.1.13.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
146
+ langtrace_python_sdk-2.1.13.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
147
+ langtrace_python_sdk-2.1.13.dist-info/RECORD,,