sentry-sdk 2.38.0__py2.py3-none-any.whl → 2.40.0__py2.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.

Potentially problematic release.


This version of sentry-sdk might be problematic. Click here for more details.

Files changed (44) hide show
  1. sentry_sdk/client.py +6 -6
  2. sentry_sdk/consts.py +15 -3
  3. sentry_sdk/envelope.py +28 -14
  4. sentry_sdk/feature_flags.py +0 -1
  5. sentry_sdk/hub.py +17 -9
  6. sentry_sdk/integrations/__init__.py +2 -0
  7. sentry_sdk/integrations/anthropic.py +18 -3
  8. sentry_sdk/integrations/asgi.py +3 -2
  9. sentry_sdk/integrations/cohere.py +4 -0
  10. sentry_sdk/integrations/dedupe.py +16 -2
  11. sentry_sdk/integrations/dramatiq.py +89 -31
  12. sentry_sdk/integrations/grpc/aio/client.py +2 -1
  13. sentry_sdk/integrations/grpc/client.py +3 -4
  14. sentry_sdk/integrations/huggingface_hub.py +3 -2
  15. sentry_sdk/integrations/langchain.py +12 -12
  16. sentry_sdk/integrations/launchdarkly.py +0 -1
  17. sentry_sdk/integrations/litellm.py +251 -0
  18. sentry_sdk/integrations/litestar.py +4 -4
  19. sentry_sdk/integrations/openai.py +13 -8
  20. sentry_sdk/integrations/openai_agents/spans/ai_client.py +4 -1
  21. sentry_sdk/integrations/openai_agents/spans/execute_tool.py +1 -1
  22. sentry_sdk/integrations/openai_agents/utils.py +28 -1
  23. sentry_sdk/integrations/pure_eval.py +3 -1
  24. sentry_sdk/integrations/spark/spark_driver.py +2 -1
  25. sentry_sdk/integrations/sqlalchemy.py +2 -6
  26. sentry_sdk/integrations/starlette.py +1 -3
  27. sentry_sdk/integrations/starlite.py +4 -4
  28. sentry_sdk/integrations/wsgi.py +3 -2
  29. sentry_sdk/metrics.py +17 -11
  30. sentry_sdk/profiler/utils.py +2 -6
  31. sentry_sdk/scope.py +6 -3
  32. sentry_sdk/serializer.py +13 -4
  33. sentry_sdk/session.py +4 -2
  34. sentry_sdk/sessions.py +4 -2
  35. sentry_sdk/tracing.py +38 -8
  36. sentry_sdk/tracing_utils.py +15 -4
  37. sentry_sdk/transport.py +8 -9
  38. sentry_sdk/utils.py +5 -3
  39. {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/METADATA +3 -1
  40. {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/RECORD +44 -43
  41. {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/WHEEL +0 -0
  42. {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/entry_points.txt +0 -0
  43. {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/licenses/LICENSE +0 -0
  44. {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/top_level.txt +0 -0
sentry_sdk/metrics.py CHANGED
@@ -159,7 +159,8 @@ class CounterMetric(Metric):
159
159
  __slots__ = ("value",)
160
160
 
161
161
  def __init__(
162
- self, first # type: MetricValue
162
+ self,
163
+ first, # type: MetricValue
163
164
  ):
164
165
  # type: (...) -> None
165
166
  self.value = float(first)
@@ -170,7 +171,8 @@ class CounterMetric(Metric):
170
171
  return 1
171
172
 
172
173
  def add(
173
- self, value # type: MetricValue
174
+ self,
175
+ value, # type: MetricValue
174
176
  ):
175
177
  # type: (...) -> None
176
178
  self.value += float(value)
@@ -190,7 +192,8 @@ class GaugeMetric(Metric):
190
192
  )
191
193
 
192
194
  def __init__(
193
- self, first # type: MetricValue
195
+ self,
196
+ first, # type: MetricValue
194
197
  ):
195
198
  # type: (...) -> None
196
199
  first = float(first)
@@ -207,7 +210,8 @@ class GaugeMetric(Metric):
207
210
  return 5
208
211
 
209
212
  def add(
210
- self, value # type: MetricValue
213
+ self,
214
+ value, # type: MetricValue
211
215
  ):
212
216
  # type: (...) -> None
213
217
  value = float(value)
@@ -232,7 +236,8 @@ class DistributionMetric(Metric):
232
236
  __slots__ = ("value",)
233
237
 
234
238
  def __init__(
235
- self, first # type: MetricValue
239
+ self,
240
+ first, # type: MetricValue
236
241
  ):
237
242
  # type(...) -> None
238
243
  self.value = [float(first)]
@@ -243,7 +248,8 @@ class DistributionMetric(Metric):
243
248
  return len(self.value)
244
249
 
245
250
  def add(
246
- self, value # type: MetricValue
251
+ self,
252
+ value, # type: MetricValue
247
253
  ):
248
254
  # type: (...) -> None
249
255
  self.value.append(float(value))
@@ -257,7 +263,8 @@ class SetMetric(Metric):
257
263
  __slots__ = ("value",)
258
264
 
259
265
  def __init__(
260
- self, first # type: MetricValue
266
+ self,
267
+ first, # type: MetricValue
261
268
  ):
262
269
  # type: (...) -> None
263
270
  self.value = {first}
@@ -268,7 +275,8 @@ class SetMetric(Metric):
268
275
  return len(self.value)
269
276
 
270
277
  def add(
271
- self, value # type: MetricValue
278
+ self,
279
+ value, # type: MetricValue
272
280
  ):
273
281
  # type: (...) -> None
274
282
  self.value.add(value)
@@ -373,9 +381,7 @@ class LocalAggregator:
373
381
 
374
382
  def __init__(self):
375
383
  # type: (...) -> None
376
- self._measurements = (
377
- {}
378
- ) # type: Dict[Tuple[str, MetricTagsInternal], Tuple[float, float, int, float]]
384
+ self._measurements = {} # type: Dict[Tuple[str, MetricTagsInternal], Tuple[float, float, int, float]]
379
385
 
380
386
  def add(
381
387
  self,
@@ -85,9 +85,7 @@ else:
85
85
  if (
86
86
  # the co_varnames start with the frame's positional arguments
87
87
  # and we expect the first to be `self` if its an instance method
88
- co_varnames
89
- and co_varnames[0] == "self"
90
- and "self" in frame.f_locals
88
+ co_varnames and co_varnames[0] == "self" and "self" in frame.f_locals
91
89
  ):
92
90
  for cls in type(frame.f_locals["self"]).__mro__:
93
91
  if name in cls.__dict__:
@@ -101,9 +99,7 @@ else:
101
99
  if (
102
100
  # the co_varnames start with the frame's positional arguments
103
101
  # and we expect the first to be `cls` if its a class method
104
- co_varnames
105
- and co_varnames[0] == "cls"
106
- and "cls" in frame.f_locals
102
+ co_varnames and co_varnames[0] == "cls" and "cls" in frame.f_locals
107
103
  ):
108
104
  for cls in frame.f_locals["cls"].__mro__:
109
105
  if name in cls.__dict__:
sentry_sdk/scope.py CHANGED
@@ -894,7 +894,8 @@ class Scope:
894
894
  self._contexts[key] = value
895
895
 
896
896
  def remove_context(
897
- self, key # type: str
897
+ self,
898
+ key, # type: str
898
899
  ):
899
900
  # type: (...) -> None
900
901
  """Removes a context."""
@@ -910,7 +911,8 @@ class Scope:
910
911
  self._extras[key] = value
911
912
 
912
913
  def remove_extra(
913
- self, key # type: str
914
+ self,
915
+ key, # type: str
914
916
  ):
915
917
  # type: (...) -> None
916
918
  """Removes a specific extra key."""
@@ -1321,7 +1323,8 @@ class Scope:
1321
1323
  self._force_auto_session_tracking = None
1322
1324
 
1323
1325
  def add_event_processor(
1324
- self, func # type: EventProcessor
1326
+ self,
1327
+ func, # type: EventProcessor
1325
1328
  ):
1326
1329
  # type: (...) -> None
1327
1330
  """Register a scope local event processor on the scope.
sentry_sdk/serializer.py CHANGED
@@ -128,9 +128,7 @@ def serialize(event, **kwargs):
128
128
  path = [] # type: List[Segment]
129
129
  meta_stack = [] # type: List[Dict[str, Any]]
130
130
 
131
- keep_request_bodies = (
132
- kwargs.pop("max_request_body_size", None) == "always"
133
- ) # type: bool
131
+ keep_request_bodies = kwargs.pop("max_request_body_size", None) == "always" # type: bool
134
132
  max_value_length = kwargs.pop("max_value_length", None) # type: Optional[int]
135
133
  is_vars = kwargs.pop("is_vars", False)
136
134
  custom_repr = kwargs.pop("custom_repr", None) # type: Callable[..., Optional[str]]
@@ -187,6 +185,16 @@ def serialize(event, **kwargs):
187
185
 
188
186
  return False
189
187
 
188
+ def _is_span_attribute():
189
+ # type: () -> Optional[bool]
190
+ try:
191
+ if path[0] == "spans" and path[2] == "data":
192
+ return True
193
+ except IndexError:
194
+ return None
195
+
196
+ return False
197
+
190
198
  def _is_request_body():
191
199
  # type: () -> Optional[bool]
192
200
  try:
@@ -282,7 +290,8 @@ def serialize(event, **kwargs):
282
290
  )
283
291
  return None
284
292
 
285
- if is_databag and global_repr_processors:
293
+ is_span_attribute = _is_span_attribute()
294
+ if (is_databag or is_span_attribute) and global_repr_processors:
286
295
  hints = {"memo": memo, "remaining_depth": remaining_depth}
287
296
  for processor in global_repr_processors:
288
297
  result = processor(obj, hints)
sentry_sdk/session.py CHANGED
@@ -130,7 +130,8 @@ class Session:
130
130
  self.status = status
131
131
 
132
132
  def close(
133
- self, status=None # type: Optional[SessionStatus]
133
+ self,
134
+ status=None, # type: Optional[SessionStatus]
134
135
  ):
135
136
  # type: (...) -> Any
136
137
  if status is None and self.status == "ok":
@@ -139,7 +140,8 @@ class Session:
139
140
  self.update(status=status)
140
141
 
141
142
  def get_json_attrs(
142
- self, with_user_info=True # type: Optional[bool]
143
+ self,
144
+ with_user_info=True, # type: Optional[bool]
143
145
  ):
144
146
  # type: (...) -> Any
145
147
  attrs = {}
sentry_sdk/sessions.py CHANGED
@@ -228,7 +228,8 @@ class SessionFlusher:
228
228
  return None
229
229
 
230
230
  def add_aggregate_session(
231
- self, session # type: Session
231
+ self,
232
+ session, # type: Session
232
233
  ):
233
234
  # type: (...) -> None
234
235
  # NOTE on `session.did`:
@@ -259,7 +260,8 @@ class SessionFlusher:
259
260
  state["exited"] = state.get("exited", 0) + 1
260
261
 
261
262
  def add_session(
262
- self, session # type: Session
263
+ self,
264
+ session, # type: Session
263
265
  ):
264
266
  # type: (...) -> None
265
267
  if session.session_mode == "request":
sentry_sdk/tracing.py CHANGED
@@ -30,6 +30,7 @@ if TYPE_CHECKING:
30
30
  from typing import Tuple
31
31
  from typing import Union
32
32
  from typing import TypeVar
33
+ from typing import Set
33
34
 
34
35
  from typing_extensions import TypedDict, Unpack
35
36
 
@@ -416,7 +417,8 @@ class Span:
416
417
  def __exit__(self, ty, value, tb):
417
418
  # type: (Optional[Any], Optional[Any], Optional[Any]) -> None
418
419
  if value is not None and should_be_treated_as_error(ty, value):
419
- self.set_status(SPANSTATUS.INTERNAL_ERROR)
420
+ if self.status != SPANSTATUS.ERROR:
421
+ self.set_status(SPANSTATUS.INTERNAL_ERROR)
420
422
 
421
423
  with capture_internal_exceptions():
422
424
  scope, old_span = self._context_manager_state
@@ -969,6 +971,12 @@ class Transaction(Span):
969
971
 
970
972
  return scope_or_hub
971
973
 
974
+ def _get_log_representation(self):
975
+ # type: () -> str
976
+ return "{op}transaction <{name}>".format(
977
+ op=("<" + self.op + "> " if self.op else ""), name=self.name
978
+ )
979
+
972
980
  def finish(
973
981
  self,
974
982
  scope=None, # type: Optional[sentry_sdk.Scope]
@@ -997,9 +1005,7 @@ class Transaction(Span):
997
1005
 
998
1006
  # For backwards compatibility, we must handle the case where `scope`
999
1007
  # or `hub` could both either be a `Scope` or a `Hub`.
1000
- scope = self._get_scope_from_finish_args(
1001
- scope, hub
1002
- ) # type: Optional[sentry_sdk.Scope]
1008
+ scope = self._get_scope_from_finish_args(scope, hub) # type: Optional[sentry_sdk.Scope]
1003
1009
 
1004
1010
  scope = scope or self.scope or sentry_sdk.get_current_scope()
1005
1011
  client = sentry_sdk.get_client()
@@ -1040,6 +1046,32 @@ class Transaction(Span):
1040
1046
 
1041
1047
  super().finish(scope, end_timestamp)
1042
1048
 
1049
+ status_code = self._data.get(SPANDATA.HTTP_STATUS_CODE)
1050
+ if (
1051
+ status_code is not None
1052
+ and status_code in client.options["trace_ignore_status_codes"]
1053
+ ):
1054
+ logger.debug(
1055
+ "[Tracing] Discarding {transaction_description} because the HTTP status code {status_code} is matched by trace_ignore_status_codes: {trace_ignore_status_codes}".format(
1056
+ transaction_description=self._get_log_representation(),
1057
+ status_code=self._data[SPANDATA.HTTP_STATUS_CODE],
1058
+ trace_ignore_status_codes=client.options[
1059
+ "trace_ignore_status_codes"
1060
+ ],
1061
+ )
1062
+ )
1063
+ if client.transport:
1064
+ client.transport.record_lost_event(
1065
+ "event_processor", data_category="transaction"
1066
+ )
1067
+
1068
+ num_spans = len(self._span_recorder.spans) + 1
1069
+ client.transport.record_lost_event(
1070
+ "event_processor", data_category="span", quantity=num_spans
1071
+ )
1072
+
1073
+ self.sampled = False
1074
+
1043
1075
  if not self.sampled:
1044
1076
  # At this point a `sampled = None` should have already been resolved
1045
1077
  # to a concrete decision.
@@ -1187,9 +1219,7 @@ class Transaction(Span):
1187
1219
  """
1188
1220
  client = sentry_sdk.get_client()
1189
1221
 
1190
- transaction_description = "{op}transaction <{name}>".format(
1191
- op=("<" + self.op + "> " if self.op else ""), name=self.name
1192
- )
1222
+ transaction_description = self._get_log_representation()
1193
1223
 
1194
1224
  # nothing to do if tracing is disabled
1195
1225
  if not has_tracing_enabled(client.options):
@@ -1208,8 +1238,8 @@ class Transaction(Span):
1208
1238
  sample_rate = (
1209
1239
  client.options["traces_sampler"](sampling_context)
1210
1240
  if callable(client.options.get("traces_sampler"))
1241
+ # default inheritance behavior
1211
1242
  else (
1212
- # default inheritance behavior
1213
1243
  sampling_context["parent_sampled"]
1214
1244
  if sampling_context["parent_sampled"] is not None
1215
1245
  else client.options["traces_sample_rate"]
@@ -11,7 +11,7 @@ from urllib.parse import quote, unquote
11
11
  import uuid
12
12
 
13
13
  import sentry_sdk
14
- from sentry_sdk.consts import OP, SPANDATA, SPANTEMPLATE
14
+ from sentry_sdk.consts import OP, SPANDATA, SPANSTATUS, SPANTEMPLATE
15
15
  from sentry_sdk.utils import (
16
16
  capture_internal_exceptions,
17
17
  filename_for_module,
@@ -527,9 +527,7 @@ class PropagationContext:
527
527
  )
528
528
  return
529
529
 
530
- self.dynamic_sampling_context["sample_rand"] = (
531
- f"{sample_rand:.6f}" # noqa: E231
532
- )
530
+ self.dynamic_sampling_context["sample_rand"] = f"{sample_rand:.6f}" # noqa: E231
533
531
 
534
532
  def _sample_rand(self):
535
533
  # type: () -> Optional[str]
@@ -892,6 +890,19 @@ def get_current_span(scope=None):
892
890
  return current_span
893
891
 
894
892
 
893
+ def set_span_errored(span=None):
894
+ # type: (Optional[Span]) -> None
895
+ """
896
+ Set the status of the current or given span to ERROR.
897
+ Also sets the status of the transaction (root span) to ERROR.
898
+ """
899
+ span = span or get_current_span()
900
+ if span is not None:
901
+ span.set_status(SPANSTATUS.ERROR)
902
+ if span.containing_transaction is not None:
903
+ span.containing_transaction.set_status(SPANSTATUS.ERROR)
904
+
905
+
895
906
  def _generate_sample_rand(
896
907
  trace_id, # type: Optional[str]
897
908
  *,
sentry_sdk/transport.py CHANGED
@@ -203,9 +203,7 @@ class BaseHttpTransport(Transport):
203
203
  self._disabled_until = {} # type: Dict[Optional[EventDataCategory], datetime]
204
204
  # We only use this Retry() class for the `get_retry_after` method it exposes
205
205
  self._retry = urllib3.util.Retry()
206
- self._discarded_events = defaultdict(
207
- int
208
- ) # type: DefaultDict[Tuple[EventDataCategory, str], int]
206
+ self._discarded_events = defaultdict(int) # type: DefaultDict[Tuple[EventDataCategory, str], int]
209
207
  self._last_client_report_sent = time.time()
210
208
 
211
209
  self._pool = self._make_pool()
@@ -549,7 +547,8 @@ class BaseHttpTransport(Transport):
549
547
  raise NotImplementedError()
550
548
 
551
549
  def capture_envelope(
552
- self, envelope # type: Envelope
550
+ self,
551
+ envelope, # type: Envelope
553
552
  ):
554
553
  # type: (...) -> None
555
554
  def send_envelope_wrapper():
@@ -862,14 +861,16 @@ class _FunctionTransport(Transport):
862
861
  """
863
862
 
864
863
  def __init__(
865
- self, func # type: Callable[[Event], None]
864
+ self,
865
+ func, # type: Callable[[Event], None]
866
866
  ):
867
867
  # type: (...) -> None
868
868
  Transport.__init__(self)
869
869
  self._func = func
870
870
 
871
871
  def capture_event(
872
- self, event # type: Event
872
+ self,
873
+ event, # type: Event
873
874
  ):
874
875
  # type: (...) -> None
875
876
  self._func(event)
@@ -891,9 +892,7 @@ def make_transport(options):
891
892
  use_http2_transport = options.get("_experiments", {}).get("transport_http2", False)
892
893
 
893
894
  # By default, we use the http transport class
894
- transport_cls = (
895
- Http2Transport if use_http2_transport else HttpTransport
896
- ) # type: Type[Transport]
895
+ transport_cls = Http2Transport if use_http2_transport else HttpTransport # type: Type[Transport]
897
896
 
898
897
  if isinstance(ref_transport, Transport):
899
898
  return ref_transport
sentry_sdk/utils.py CHANGED
@@ -389,7 +389,8 @@ class Auth:
389
389
  self.client = client
390
390
 
391
391
  def get_api_url(
392
- self, type=EndpointType.ENVELOPE # type: EndpointType
392
+ self,
393
+ type=EndpointType.ENVELOPE, # type: EndpointType
393
394
  ):
394
395
  # type: (...) -> str
395
396
  """Returns the API url for storing events."""
@@ -850,7 +851,9 @@ def exceptions_from_error(
850
851
  parent_id = exception_id
851
852
  exception_id += 1
852
853
 
853
- should_supress_context = hasattr(exc_value, "__suppress_context__") and exc_value.__suppress_context__ # type: ignore
854
+ should_supress_context = (
855
+ hasattr(exc_value, "__suppress_context__") and exc_value.__suppress_context__ # type: ignore
856
+ )
854
857
  if should_supress_context:
855
858
  # Add direct cause.
856
859
  # The field `__cause__` is set when raised with the exception (using the `from` keyword).
@@ -1845,7 +1848,6 @@ try:
1845
1848
  from gevent import get_hub as get_gevent_hub
1846
1849
  from gevent.monkey import is_module_patched
1847
1850
  except ImportError:
1848
-
1849
1851
  # it's not great that the signatures are different, get_hub can't return None
1850
1852
  # consider adding an if TYPE_CHECKING to change the signature to Optional[Hub]
1851
1853
  def get_gevent_hub(): # type: ignore[misc]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sentry-sdk
3
- Version: 2.38.0
3
+ Version: 2.40.0
4
4
  Summary: Python client for Sentry (https://sentry.io)
5
5
  Home-page: https://github.com/getsentry/sentry-python
6
6
  Author: Sentry Team and Contributors
@@ -76,6 +76,8 @@ Provides-Extra: langgraph
76
76
  Requires-Dist: langgraph>=0.6.6; extra == "langgraph"
77
77
  Provides-Extra: launchdarkly
78
78
  Requires-Dist: launchdarkly-server-sdk>=9.8.0; extra == "launchdarkly"
79
+ Provides-Extra: litellm
80
+ Requires-Dist: litellm>=1.77.5; extra == "litellm"
79
81
  Provides-Extra: litestar
80
82
  Requires-Dist: litestar>=2.0.0; extra == "litestar"
81
83
  Provides-Extra: loguru
@@ -8,27 +8,27 @@ sentry_sdk/_types.py,sha256=Gw9Pn0mIHZP23B8C2iM1g07NzxnAkpgRAGR5MrKA2Es,10487
8
8
  sentry_sdk/_werkzeug.py,sha256=m3GPf-jHd8v3eVOfBHaKw5f0uHoLkXrSO1EcY-8EisY,3734
9
9
  sentry_sdk/api.py,sha256=OkwQ2tA5YASJ77wLOteUdv_woPF4wL_JTOAMxe9z8k4,15282
10
10
  sentry_sdk/attachments.py,sha256=0Dylhm065O6hNFjB40fWCd5Hg4qWSXndmi1TPWglZkI,3109
11
- sentry_sdk/client.py,sha256=oQcolwFdLvuX4huUaCcpgABy3M5Yb4IhzymlzyrqfkE,38860
12
- sentry_sdk/consts.py,sha256=z-QZyKPzeM4-ZYB4wOmNZ_3CnS7QcTjXZ49nuMAr9H4,49865
11
+ sentry_sdk/client.py,sha256=FMcG9m8stHlUaZuQrsyWVz5FWYaa0WhkYB6lbMSNNIA,38854
12
+ sentry_sdk/consts.py,sha256=EwIR-aX5afHvEFCuJTqewc0heN61uoTjXX8VUavS5B8,50688
13
13
  sentry_sdk/debug.py,sha256=ddBehQlAuQC1sg1XO-N4N3diZ0x0iT5RWJwFdrtcsjw,1019
14
- sentry_sdk/envelope.py,sha256=nCUvqVWIVWV-RoVvMgrTNUDfo7h_Z5jU8g90T30wdXE,10360
15
- sentry_sdk/feature_flags.py,sha256=99JRig6TBkrkBzVCKqYcmVgjsuA_Hk-ul7jFHGhJplc,2233
16
- sentry_sdk/hub.py,sha256=2QLvEtIYSYV04r8h7VBmQjookILaiBZxZBGTtQKNAWg,25675
14
+ sentry_sdk/envelope.py,sha256=JRJlnz9lQj-0_f21dh-lWF_NMbEKp7E7jr4kOwSA7fA,10486
15
+ sentry_sdk/feature_flags.py,sha256=savtmWAHjAvgw2m_KWW8mUagjLhAXCm3jjscmBlfIJ4,2232
16
+ sentry_sdk/hub.py,sha256=jg7UqYiJFJ1dknVCNT4_E5lIBfrCFQdWwnJrhgScVNg,25748
17
17
  sentry_sdk/logger.py,sha256=HnmkMmOf1hwvxIcPW2qOvIOSnFZ9yRNDBae_eriGsoY,2471
18
- sentry_sdk/metrics.py,sha256=3IvBwbHlU-C-JdwDysTeJqOoVyYXsHZ7oEkkU0qTZb4,29913
18
+ sentry_sdk/metrics.py,sha256=HBlrCca7XWgxYwxgPBWkBQOXtUqOFQxW4hNdtAFl1uc,29961
19
19
  sentry_sdk/monitor.py,sha256=52CG1m2e8okFDVoTpbqfm9zeeaLa0ciC_r9x2RiXuDg,3639
20
20
  sentry_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- sentry_sdk/scope.py,sha256=opbEbR_qWzSj4OCp8vr9Sn-7H11Qe7z4vKY0pjIgA88,63907
21
+ sentry_sdk/scope.py,sha256=gTdGB0eUvjS1TMKvRHckB5AJnBGFGpwps8uPh--KI8k,63934
22
22
  sentry_sdk/scrubber.py,sha256=rENmQ35buugDl269bRZuIAtgr27B9SzisJYUF-691pc,6064
23
- sentry_sdk/serializer.py,sha256=xUw3xjSsGF0cWRHL9ofe0nmWEtZvzPOHSQ6IHvo6UAc,13239
24
- sentry_sdk/session.py,sha256=TqDVmRKKHUDSmZb4jQR-s8wDt7Fwb6QaG21hawUGWEs,5571
25
- sentry_sdk/sessions.py,sha256=UZ2jfrqhYvZzTxCDGc1MLD6P_aHLJnTFetSUROIaPaA,9154
23
+ sentry_sdk/serializer.py,sha256=0-WdtKYwmGEM7nVxmOeRAXjC0DVdIHCymQpRuIHDBX0,13534
24
+ sentry_sdk/session.py,sha256=BXWHf5Opg9yx7jKe-_iHxF6LDJw9Jnu7NfHxo3UQRpw,5589
25
+ sentry_sdk/sessions.py,sha256=e7Jv8McW3QZp3H1GuI_CA_ezq_G0ZWY6nK0ZLqJRdNI,9172
26
26
  sentry_sdk/spotlight.py,sha256=93kdd8KxdLfcPaxFnFuqHgYAAL4FCfpK1hiiPoD7Ac4,8678
27
- sentry_sdk/tracing.py,sha256=ecnuM0Y8ueX110M4iXfOV8ay4nWiHuvCiNQMPrNzaBM,51530
28
- sentry_sdk/tracing_utils.py,sha256=EM2e3UHkOUNoWhs0gaFjaJZDAyHKCw2KB0fOwWlZF0w,38862
29
- sentry_sdk/transport.py,sha256=A0uux7XnniDJuExLudLyyFDYnS5C6r7zozGbkveUM7E,32469
27
+ sentry_sdk/tracing.py,sha256=1KFwMzq6II0pCRbX6rwgJprmcbuO-PoGlPRVOSKZFP4,52840
28
+ sentry_sdk/tracing_utils.py,sha256=XXdU_YH0Shuk2pkeUGZrZgi_CTQFuf42Plgu4qQq978,39288
29
+ sentry_sdk/transport.py,sha256=Oj-QJ-ZaBjpMb2TlXgmhssIu-UhFpU564Qj1XDvc6Ns,32458
30
30
  sentry_sdk/types.py,sha256=NLbnRzww2K3_oGz2GzcC8TdX5L2DXYso1-H1uCv2Hwc,1222
31
- sentry_sdk/utils.py,sha256=KubsR-No80YTJ1FYwNQxavYU4hOQyBixevnPsXxNCBc,61705
31
+ sentry_sdk/utils.py,sha256=Xi56iOOeGjT82SIMjBkNpxT7U3rndL9BIZfqFLD-m4I,61729
32
32
  sentry_sdk/worker.py,sha256=VSMaigRMbInVyupSFpBC42bft2oIViea-0C_d9ThnIo,4464
33
33
  sentry_sdk/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  sentry_sdk/ai/monitoring.py,sha256=bS_KneWCAL9ehml5XiyficoPVx4DUUG6acbH3cjP3I8,5057
@@ -37,15 +37,15 @@ sentry_sdk/crons/__init__.py,sha256=3Zt6g1-pZZ12uRKKsC8QLm3XgJ4K1VYxgVpNNUygOZY,
37
37
  sentry_sdk/crons/api.py,sha256=mk-UB8Im2LU2rJFdE-TV302EaKnf8kAjwEL0bIV0Hzc,1767
38
38
  sentry_sdk/crons/consts.py,sha256=dXqJk5meBSu5rjlGpqAOlkpACnuUi7svQnAFoy1ZNUU,87
39
39
  sentry_sdk/crons/decorator.py,sha256=UrjeIqBCbvsuKrfjGkKJbbLBvjw2TQvDWcTO7WwAmrI,3913
40
- sentry_sdk/integrations/__init__.py,sha256=tWC8ujNg8r8Sc4bk8L5NMeAJQgbPYtvWdnbWwBlVVbQ,10342
40
+ sentry_sdk/integrations/__init__.py,sha256=qtU1pBq6CEeAKPikc9cfARULouHYkl8jbXJpmZi-JUg,10394
41
41
  sentry_sdk/integrations/_asgi_common.py,sha256=Ypg7IctB3iPPY60ebVlzChzgT8GeGpZ0YH8VvJNDlEY,3187
42
42
  sentry_sdk/integrations/_wsgi_common.py,sha256=A1-X7l1pZCcrbUhRHkmdKiK_EemEZjn7xToJIvlEuFM,7558
43
43
  sentry_sdk/integrations/aiohttp.py,sha256=_rfDKx1arvVQwcC20vh7HG80p8XtgzqKB3iBuPYZy8A,12895
44
- sentry_sdk/integrations/anthropic.py,sha256=7MqIgZLOD3fOw14F9BxHFr9VpLpy44QtZgaPyYVKFi4,13169
44
+ sentry_sdk/integrations/anthropic.py,sha256=7nMkdkhNlo9gepMShnlidUn0lfn5vcIOpvO2Zwe8dK0,13771
45
45
  sentry_sdk/integrations/argv.py,sha256=GIY7TBFETF8Z0fDzqTXEJldt5XXCDdFNZxpGxP7EPaU,911
46
46
  sentry_sdk/integrations/ariadne.py,sha256=C-zKlOrU7jvTWmQHZx0M0tAZNkPPo7Z5-5jXDD92LiU,5834
47
47
  sentry_sdk/integrations/arq.py,sha256=yDPdWJa3ZgnGLwFzavIylIafEVN0qqSSgL4kUHxQF70,7881
48
- sentry_sdk/integrations/asgi.py,sha256=zjoOOA5bHlTptRsP3ZU4X5UsluyHFqebsUt3lRfiGtE,12738
48
+ sentry_sdk/integrations/asgi.py,sha256=b3zE8Om_yP7SDxcD8MMCdDthYhLLgOB3LC3ZZCf94hw,12800
49
49
  sentry_sdk/integrations/asyncio.py,sha256=DEoXAwk8oVl_1Sbmm2TthpruaLO7p4WZBTh9K-mch_g,4136
50
50
  sentry_sdk/integrations/asyncpg.py,sha256=fbBTi5bEERK3c9o43LBLtS5wPaSVq_qIl3Y50NPmr5Y,6521
51
51
  sentry_sdk/integrations/atexit.py,sha256=sY46N2hEvtGuT1DBQhirUXHbjgXjXAm7R_sgiectVKw,1652
@@ -56,9 +56,9 @@ sentry_sdk/integrations/bottle.py,sha256=aC5OsitlsRUEWBlpkNjxvH0m6UEG3OfAJ9jFyPC
56
56
  sentry_sdk/integrations/chalice.py,sha256=A4K_9FmNUu131El0ctkTmjtyYd184I4hQTlidZcEC54,4699
57
57
  sentry_sdk/integrations/clickhouse_driver.py,sha256=2qpRznwSNuRSzrCA1R5bmpgiehDmzbG7yZe6hN-61Wg,6098
58
58
  sentry_sdk/integrations/cloud_resource_context.py,sha256=_gFldMeVHs5pxP5sm8uP7ZKmm6s_5hw3UsnXek9Iw8A,7780
59
- sentry_sdk/integrations/cohere.py,sha256=iuDI1IVPE39rbsc3e9_qJS2bCjNg7F53apueCdhzr8Q,9322
60
- sentry_sdk/integrations/dedupe.py,sha256=nZF_Ml-5axq_Nh3AZT80Z0bNNgPbxvYn79eVeBKrIGA,1515
61
- sentry_sdk/integrations/dramatiq.py,sha256=I09vKWnfiuhdRFCjYYjmE9LOBQvDTPS-KFqf3iHFSsM,5583
59
+ sentry_sdk/integrations/cohere.py,sha256=VI5mLukp_CQDt-OFVNgtVqpbY-j-d5UOfD7iPBKu0FU,9401
60
+ sentry_sdk/integrations/dedupe.py,sha256=FMdGQOlL86r4AjiSf4MfzyfEIjkI5b_v3Ko2gOZKkBE,1975
61
+ sentry_sdk/integrations/dramatiq.py,sha256=P0j732DU4pkUQi_CRtY4DxvhcalXN8jQVX6gdHl6yPw,7455
62
62
  sentry_sdk/integrations/excepthook.py,sha256=tfwpSQuo1b_OmJbNKPPRh90EUjD_OSE4DqqgYY9PVQI,2408
63
63
  sentry_sdk/integrations/executing.py,sha256=5lxBAxO5FypY-zTV03AHncGmolmaHd327-3Vrjzskcc,1994
64
64
  sentry_sdk/integrations/falcon.py,sha256=uhjqFPKa8bWRQr0za4pVXGYaPr-LRdICw2rUO-laKCo,9501
@@ -70,17 +70,18 @@ sentry_sdk/integrations/gql.py,sha256=lN5LJNZwUHs_1BQcIrR0adIkgb9YiOh6UtoUG8vCO_
70
70
  sentry_sdk/integrations/graphene.py,sha256=I6ZJ8Apd9dO9XPVvZY7I46-v1eXOW1C1rAkWwasF3gU,5042
71
71
  sentry_sdk/integrations/httpx.py,sha256=WwUulqzBLoGGqWUUdQg_MThwQUKzBXnA-m3g_1GOpCE,5866
72
72
  sentry_sdk/integrations/huey.py,sha256=wlyxjeWqqJp1X5S3neD5FiZjXcyznm1dl8_u1wIo76U,5443
73
- sentry_sdk/integrations/huggingface_hub.py,sha256=33Z2Z0SEEQMcpoAY0y8EFfQdMaB1DacSVJ22utdHHKU,14940
74
- sentry_sdk/integrations/langchain.py,sha256=vO7alD-_3gLuqW3LW2gQUYgatjB9CrsI-7IpJmOy8Tc,29393
73
+ sentry_sdk/integrations/huggingface_hub.py,sha256=B5z0--bC2tEDtWl5V7xAqM4234yhY_RYbnkZGgqC8PA,14952
74
+ sentry_sdk/integrations/langchain.py,sha256=m9KvJeFMBMaqVB6Sswg0VUFK0xc8OEUgKacOZdkBjNo,29517
75
75
  sentry_sdk/integrations/langgraph.py,sha256=YyDDc14gFCNVuqVmKwX8GRQ17T17WOx2SqqD4IHROPs,11015
76
- sentry_sdk/integrations/launchdarkly.py,sha256=bvtExuj68xPXZFsQeWTDR-ZBqP087tPuVzP1bNAOZHc,1935
77
- sentry_sdk/integrations/litestar.py,sha256=jao0f8v5JQagkBg15dUJTdWGPxpS3LmOV301-lwGkGc,11815
76
+ sentry_sdk/integrations/launchdarkly.py,sha256=L5yE9NBRon8JPYzO6XT-dA4YkvNcrUfK4nD5fycSXM0,1934
77
+ sentry_sdk/integrations/litellm.py,sha256=WCwjsIZBxJ2Rk2yAWJBUxyNehgO6B37a_X2JJcvM4OY,8858
78
+ sentry_sdk/integrations/litestar.py,sha256=0BkfynHkxERshbxycwHDnpjzGx31c5ipYvBYqprAoHY,11830
78
79
  sentry_sdk/integrations/logging.py,sha256=4JC2ehLqd5Tz_rad8YVb9KhZnPcDzLxLh-AjopyNVEc,13905
79
80
  sentry_sdk/integrations/loguru.py,sha256=fgivPdQn3rmsMeInUd2wbNlbXPAH9MKhjaqytRVKnsI,6215
80
81
  sentry_sdk/integrations/modules.py,sha256=vzLx3Erg77Vl4mnUvAgTg_3teAuWy7zylFpAidBI9I0,820
81
- sentry_sdk/integrations/openai.py,sha256=MtvS7FM41etRn5kPqb37qSflo876L8mcV2skEFwBFlI,23890
82
+ sentry_sdk/integrations/openai.py,sha256=o41gBELZRVdaPXPrM3FQ7cOn6zIzvdu5hzMIf_nK5_I,24060
82
83
  sentry_sdk/integrations/openfeature.py,sha256=-vvdrN4fK0Xhu2ip41bkPIPEqdzv8xzmLu9wRlI2xPA,1131
83
- sentry_sdk/integrations/pure_eval.py,sha256=OvT76XvllQ_J6ABu3jVNU6KD2QAxnXMtTZ7hqhXNhpY,4581
84
+ sentry_sdk/integrations/pure_eval.py,sha256=R2UuFCtQ_ShTIZJKPn9RUD06lbc6mug4Mv8S1_mo1j0,4605
84
85
  sentry_sdk/integrations/pymongo.py,sha256=cPpMGEbXHlV6HTHgmIDL1F-x3w7ZMROXVb4eUhLs3bw,6380
85
86
  sentry_sdk/integrations/pyramid.py,sha256=IDonzoZvLrH18JL-i_Qpbztc4T3iZNQhWFFv6SAXac8,7364
86
87
  sentry_sdk/integrations/quart.py,sha256=7h4BuGNWzZabVIIOKm194gMKDlIvS-dmWFW4iZXsmF4,7413
@@ -90,9 +91,9 @@ sentry_sdk/integrations/rust_tracing.py,sha256=fQ0eG09w3IPZe8ecgeUoQTPoGFThkkarU
90
91
  sentry_sdk/integrations/sanic.py,sha256=Z7orxkX9YhU9YSX4Oidsi3n46J0qlVG7Ajog-fnUreo,12960
91
92
  sentry_sdk/integrations/serverless.py,sha256=npiKJuIy_sEkWT_x0Eu2xSEMiMh_aySqGYlnvIROsYk,1804
92
93
  sentry_sdk/integrations/socket.py,sha256=hlJDYlspzOy3UNjsd7qXPUoqJl5s1ShF3iijTRWpVaU,3169
93
- sentry_sdk/integrations/sqlalchemy.py,sha256=QemZA6BmmZN5A8ux84gYdelJ9G9G-6kZQB7a5yRJCtQ,4372
94
- sentry_sdk/integrations/starlette.py,sha256=URQB0dJDiVPyAKyySC1RdfR3qo9WU9GJU_fudp6T8ww,26267
95
- sentry_sdk/integrations/starlite.py,sha256=llHsTmS__WWLeSKX0VxZ_LTIk_2cNf3UDQzqJ8r8noE,10544
94
+ sentry_sdk/integrations/sqlalchemy.py,sha256=rzOK3yFLrRE3V7q-wVcAUhq5iSTrqGPW5ytbGU9lXkk,4344
95
+ sentry_sdk/integrations/starlette.py,sha256=oHuzJXRWnCgD22Q9_JHfuD2OSW7gIt_wwA-TTwJ_2ng,26235
96
+ sentry_sdk/integrations/starlite.py,sha256=hSiVB6KZr8pxsQVRSGGP-9UQBLsBl-3DmrK_5CPebB8,10559
96
97
  sentry_sdk/integrations/statsig.py,sha256=-e57hxHfHo1S13YQKObV65q_UvREyxbR56fnf7bkC9o,1227
97
98
  sentry_sdk/integrations/stdlib.py,sha256=vgB9weDGh455vBwmUSgcQRgzViKstu3O0syOthCn_H0,8831
98
99
  sentry_sdk/integrations/strawberry.py,sha256=u7Lk4u3sNEycdSmY1nQBzYKmqI-mO8BWKAAJkCSuTRA,14126
@@ -103,7 +104,7 @@ sentry_sdk/integrations/trytond.py,sha256=BaLCNqQeRWDbHHDEelS5tmj-p_CrbmtGEHIn6J
103
104
  sentry_sdk/integrations/typer.py,sha256=FQrFgpR9t6yQWF-oWCI9KJLFioEnA2c_1BEtYV-mPAs,1815
104
105
  sentry_sdk/integrations/unleash.py,sha256=6JshqyuAY_kbu9Nr20tMOhtgx-ryqPHCrq_EQIzeqm4,1058
105
106
  sentry_sdk/integrations/unraisablehook.py,sha256=8IW8Ia9t2hKgPLh8WS8WkmeAsyjJ6Al4qi8sM6vGrpU,1753
106
- sentry_sdk/integrations/wsgi.py,sha256=aW_EnDCcex41NGdrxKFZsfJxJhndsMCv0d2a5LBb7wU,10747
107
+ sentry_sdk/integrations/wsgi.py,sha256=M3lExlLqQ_J-vEZPmv5HI7vRf8T7DvPicbNZiypUvmE,10809
107
108
  sentry_sdk/integrations/celery/__init__.py,sha256=FNmrLL0Cs95kv6yUCpJGu9X8Cpw20mMYGmnkBC4IL4Y,18699
108
109
  sentry_sdk/integrations/celery/beat.py,sha256=WHEdKetrDJgtZGNp1VUMa6BG1q-MhsLZMefUmVrPu3w,8953
109
110
  sentry_sdk/integrations/celery/utils.py,sha256=CMWQOpg9yniEkm3WlXe7YakJfVnLwaY0-jyeo2GX-ZI,1208
@@ -116,15 +117,15 @@ sentry_sdk/integrations/django/templates.py,sha256=k3PQrNICGS4wqmFxK3o8KwOlqip7r
116
117
  sentry_sdk/integrations/django/transactions.py,sha256=Axyh3l4UvM96R3go2anVhew3JbrEZ4FSYd1r3UXEcw4,4951
117
118
  sentry_sdk/integrations/django/views.py,sha256=bjHwt6TVfYY7yfGUa2Rat9yowkUbQ2bYCcJaXJxP2Ik,3137
118
119
  sentry_sdk/integrations/grpc/__init__.py,sha256=zukyRYtaxRGcDuQSXBbVcpa7ZMAYdLQ-laRQqqHsHgc,5620
119
- sentry_sdk/integrations/grpc/client.py,sha256=rOPwbU0IO6Ve99atvvwhdVZA8nqBy7_wbH2frb0kIJ0,3382
120
+ sentry_sdk/integrations/grpc/client.py,sha256=4MCY24tqZAU6OzNC_0pphyCLnR_SrfBC-xh8Kb-i8LU,3373
120
121
  sentry_sdk/integrations/grpc/consts.py,sha256=NpsN5gKWDmtGtVK_L5HscgFZBHqjOpmLJLGKyh8GZBA,31
121
122
  sentry_sdk/integrations/grpc/server.py,sha256=oo79zjfGaJtCSwtxaJeCFRA6UWoH1PDzjR6SDMtt398,2474
122
123
  sentry_sdk/integrations/grpc/aio/__init__.py,sha256=2rgrliowpPfLLw40_2YU6ixSzIu_3f8NN3TRplzc8S8,141
123
- sentry_sdk/integrations/grpc/aio/client.py,sha256=csOwlJb7fg9fBnzeNHxr-qpZEmU97I_jnqkCq6ZLFAs,3322
124
+ sentry_sdk/integrations/grpc/aio/client.py,sha256=3zfF3XkpzR717BpY1ehxi72jDUvT8Xntx8vkD78kCXc,3327
124
125
  sentry_sdk/integrations/grpc/aio/server.py,sha256=SCkdikPZRdWyrlnZewsSGpPk4v6AsdSApVAbO-lf_Lk,4019
125
126
  sentry_sdk/integrations/openai_agents/__init__.py,sha256=-ydqG0sFIrvJlT9JHO58EZpCAzyy9J59Av8dxn0fHuw,1424
126
127
  sentry_sdk/integrations/openai_agents/consts.py,sha256=PTb3vlqkuMPktu21ALK72o5WMIX4-cewTEiTRdHKFdQ,38
127
- sentry_sdk/integrations/openai_agents/utils.py,sha256=mb8pGXZ0t_-mgbIJMh6HfVoGKp6kGqIMB7U5URQtSQA,5208
128
+ sentry_sdk/integrations/openai_agents/utils.py,sha256=igOXsKaNygGtF7ycwssELn1CztMJFLc4DRQpC5RZC64,6375
128
129
  sentry_sdk/integrations/openai_agents/patches/__init__.py,sha256=I7C9JZ70Mf8PV3wPdFsxTqvcYl4TYUgSZYfNU2Spb7Y,231
129
130
  sentry_sdk/integrations/openai_agents/patches/agent_run.py,sha256=GPBV-j8YnHOrJAhdhu_tphe14z7G0-riFVmjFNDgy0s,5773
130
131
  sentry_sdk/integrations/openai_agents/patches/models.py,sha256=DtwqCmSsYFlhRZquKM2jiTOnnAg97eyCTtJYZkWqdww,1405
@@ -132,8 +133,8 @@ sentry_sdk/integrations/openai_agents/patches/runner.py,sha256=Fr5tflgadu3fnEThS
132
133
  sentry_sdk/integrations/openai_agents/patches/tools.py,sha256=uAx1GgsiDJBP7jpYW8r_kOImdgzXlwYqK-uhkyP3icI,3255
133
134
  sentry_sdk/integrations/openai_agents/spans/__init__.py,sha256=RlVi781zGsvCJBciDO_EbBbwkakwbP9DoFQBbo4VAEE,353
134
135
  sentry_sdk/integrations/openai_agents/spans/agent_workflow.py,sha256=fdRSThD31TcoMXFg-2vmqK2YcSws8Yhd0oC6fxOnysM,469
135
- sentry_sdk/integrations/openai_agents/spans/ai_client.py,sha256=0HG5pT8a06Zgc5JUmRx8p_6bPoQFQLjDrMY_QSQd0_E,1206
136
- sentry_sdk/integrations/openai_agents/spans/execute_tool.py,sha256=w3QWWS4wbpteFTz4JjMCXdDpR6JVKcUVREQ-lvJOQTY,1420
136
+ sentry_sdk/integrations/openai_agents/spans/ai_client.py,sha256=gCZrl1vpBmf8vzDTSLCvoZg-x_TvMUFTLOxh4Vy_4OY,1292
137
+ sentry_sdk/integrations/openai_agents/spans/execute_tool.py,sha256=tqtDIzaxhxJUE-XEvm2dSyJV65UXJ7Mr23C6NTt6ZJE,1411
137
138
  sentry_sdk/integrations/openai_agents/spans/handoff.py,sha256=MBhzy7MpvPGwQTPT5TFcOnmSPiSH_uadQ5wvksueIik,525
138
139
  sentry_sdk/integrations/openai_agents/spans/invoke_agent.py,sha256=yyg-wyVZaYMYbaORva_BotNxB9oyK5Dsn8KfQ3Y7OZI,2323
139
140
  sentry_sdk/integrations/opentelemetry/__init__.py,sha256=emNL5aAq_NhK0PZmfX_g4GIdvBS6nHqGrjrIgrdC5m8,229
@@ -154,15 +155,15 @@ sentry_sdk/integrations/redis/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
154
155
  sentry_sdk/integrations/redis/modules/caches.py,sha256=eY8XY4Nk3QsMM0T26OOYdcNr4bN0Sp9325HkH-hO8cg,4063
155
156
  sentry_sdk/integrations/redis/modules/queries.py,sha256=0GxZ98wyjqcc4CwPG3xJ4bSGIGW8wPXChSk5Fxm6kYg,2035
156
157
  sentry_sdk/integrations/spark/__init__.py,sha256=oOewMErnZk2rzNvIlZO6URxQexu9bUJuSLM2m_zECy8,208
157
- sentry_sdk/integrations/spark/spark_driver.py,sha256=mqGQMngDAZWM78lWK5S0FPpmjd1Q65Ta5T4bOH6mNXs,9465
158
+ sentry_sdk/integrations/spark/spark_driver.py,sha256=hInLM2dO5yPxQT9Wb5gvHIKkbbA1i84LBsx416Dv-6c,9474
158
159
  sentry_sdk/integrations/spark/spark_worker.py,sha256=FGT4yRU2X_iQCC46aasMmvJfYOKmBip8KbDF_wnhvEY,3706
159
160
  sentry_sdk/profiler/__init__.py,sha256=3PI3bHk9RSkkOXZKN84DDedk_7M65EiqqaIGo-DYs0E,1291
160
161
  sentry_sdk/profiler/continuous_profiler.py,sha256=7Qb75TaKLNYxMA97wO-qEpDVqxPQWOLUi2rnUm6_Ci0,23066
161
162
  sentry_sdk/profiler/transaction_profiler.py,sha256=e3MsUqs-YIp6-nmzpmBYGoWWIF7RyuSGu24Dj-8GXAU,27970
162
- sentry_sdk/profiler/utils.py,sha256=G5s4tYai9ATJqcHrQ3bOIxlK6jIaHzELrDtU5k3N4HI,6556
163
- sentry_sdk-2.38.0.dist-info/licenses/LICENSE,sha256=KhQNZg9GKBL6KQvHQNBGMxJsXsRdhLebVp4Sew7t3Qs,1093
164
- sentry_sdk-2.38.0.dist-info/METADATA,sha256=cxysc3uOmG-4teAeFmBvG40-oF7DfJDO01sPlHYG8aI,10358
165
- sentry_sdk-2.38.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
166
- sentry_sdk-2.38.0.dist-info/entry_points.txt,sha256=qacZEz40UspQZD1IukCXykx0JtImqGDOctS5KfOLTko,91
167
- sentry_sdk-2.38.0.dist-info/top_level.txt,sha256=XrQz30XE9FKXSY_yGLrd9bsv2Rk390GTDJOSujYaMxI,11
168
- sentry_sdk-2.38.0.dist-info/RECORD,,
163
+ sentry_sdk/profiler/utils.py,sha256=80MF0wiguKe47O-uWQfl-81G1caiVa8HgcFHWBzFpuM,6492
164
+ sentry_sdk-2.40.0.dist-info/licenses/LICENSE,sha256=KhQNZg9GKBL6KQvHQNBGMxJsXsRdhLebVp4Sew7t3Qs,1093
165
+ sentry_sdk-2.40.0.dist-info/METADATA,sha256=Z_VV2kNltO1wSFpbZ8zuL3clZndreGE0oHxpZdE2q1Y,10433
166
+ sentry_sdk-2.40.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
167
+ sentry_sdk-2.40.0.dist-info/entry_points.txt,sha256=qacZEz40UspQZD1IukCXykx0JtImqGDOctS5KfOLTko,91
168
+ sentry_sdk-2.40.0.dist-info/top_level.txt,sha256=XrQz30XE9FKXSY_yGLrd9bsv2Rk390GTDJOSujYaMxI,11
169
+ sentry_sdk-2.40.0.dist-info/RECORD,,