sentry-sdk 2.39.0__py2.py3-none-any.whl → 2.41.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 (52) hide show
  1. sentry_sdk/_metrics.py +81 -0
  2. sentry_sdk/_metrics_batcher.py +156 -0
  3. sentry_sdk/_types.py +27 -22
  4. sentry_sdk/ai/__init__.py +7 -0
  5. sentry_sdk/ai/utils.py +48 -0
  6. sentry_sdk/client.py +87 -36
  7. sentry_sdk/consts.py +15 -9
  8. sentry_sdk/envelope.py +31 -17
  9. sentry_sdk/feature_flags.py +0 -1
  10. sentry_sdk/hub.py +17 -9
  11. sentry_sdk/integrations/__init__.py +1 -0
  12. sentry_sdk/integrations/anthropic.py +10 -2
  13. sentry_sdk/integrations/asgi.py +3 -2
  14. sentry_sdk/integrations/dramatiq.py +89 -31
  15. sentry_sdk/integrations/grpc/aio/client.py +2 -1
  16. sentry_sdk/integrations/grpc/client.py +3 -4
  17. sentry_sdk/integrations/langchain.py +29 -5
  18. sentry_sdk/integrations/langgraph.py +5 -3
  19. sentry_sdk/integrations/launchdarkly.py +0 -1
  20. sentry_sdk/integrations/litellm.py +251 -0
  21. sentry_sdk/integrations/litestar.py +4 -4
  22. sentry_sdk/integrations/logging.py +1 -1
  23. sentry_sdk/integrations/loguru.py +1 -1
  24. sentry_sdk/integrations/openai.py +3 -2
  25. sentry_sdk/integrations/openai_agents/spans/ai_client.py +4 -1
  26. sentry_sdk/integrations/openai_agents/spans/invoke_agent.py +10 -2
  27. sentry_sdk/integrations/openai_agents/utils.py +60 -19
  28. sentry_sdk/integrations/pure_eval.py +3 -1
  29. sentry_sdk/integrations/spark/spark_driver.py +2 -1
  30. sentry_sdk/integrations/sqlalchemy.py +2 -6
  31. sentry_sdk/integrations/starlette.py +1 -3
  32. sentry_sdk/integrations/starlite.py +4 -4
  33. sentry_sdk/integrations/threading.py +52 -8
  34. sentry_sdk/integrations/wsgi.py +3 -2
  35. sentry_sdk/logger.py +1 -1
  36. sentry_sdk/profiler/utils.py +2 -6
  37. sentry_sdk/scope.py +6 -3
  38. sentry_sdk/serializer.py +1 -3
  39. sentry_sdk/session.py +4 -2
  40. sentry_sdk/sessions.py +4 -2
  41. sentry_sdk/tracing.py +36 -33
  42. sentry_sdk/tracing_utils.py +1 -3
  43. sentry_sdk/transport.py +9 -26
  44. sentry_sdk/types.py +3 -0
  45. sentry_sdk/utils.py +22 -4
  46. {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/METADATA +3 -1
  47. {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/RECORD +51 -49
  48. sentry_sdk/metrics.py +0 -965
  49. {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/WHEEL +0 -0
  50. {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/entry_points.txt +0 -0
  51. {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/licenses/LICENSE +0 -0
  52. {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/top_level.txt +0 -0
sentry_sdk/logger.py CHANGED
@@ -46,7 +46,7 @@ def _capture_log(severity_text, severity_number, template, **kwargs):
46
46
  }
47
47
 
48
48
  # noinspection PyProtectedMember
49
- client._capture_experimental_log(
49
+ client._capture_log(
50
50
  {
51
51
  "severity_text": severity_text,
52
52
  "severity_number": severity_number,
@@ -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]]
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
 
@@ -275,7 +276,6 @@ class Span:
275
276
  "hub",
276
277
  "_context_manager_state",
277
278
  "_containing_transaction",
278
- "_local_aggregator",
279
279
  "scope",
280
280
  "origin",
281
281
  "name",
@@ -344,7 +344,6 @@ class Span:
344
344
  self.timestamp = None # type: Optional[datetime]
345
345
 
346
346
  self._span_recorder = None # type: Optional[_SpanRecorder]
347
- self._local_aggregator = None # type: Optional[LocalAggregator]
348
347
 
349
348
  self.update_active_thread()
350
349
  self.set_profiler_id(get_profiler_id())
@@ -382,13 +381,6 @@ class Span:
382
381
  # type: (str) -> None
383
382
  self._span_id = value
384
383
 
385
- def _get_local_aggregator(self):
386
- # type: (...) -> LocalAggregator
387
- rv = self._local_aggregator
388
- if rv is None:
389
- rv = self._local_aggregator = LocalAggregator()
390
- return rv
391
-
392
384
  def __repr__(self):
393
385
  # type: () -> str
394
386
  return (
@@ -740,11 +732,6 @@ class Span:
740
732
  if self.status:
741
733
  self._tags["status"] = self.status
742
734
 
743
- if self._local_aggregator is not None:
744
- metrics_summary = self._local_aggregator.to_json()
745
- if metrics_summary:
746
- rv["_metrics_summary"] = metrics_summary
747
-
748
735
  if len(self._measurements) > 0:
749
736
  rv["measurements"] = self._measurements
750
737
 
@@ -970,6 +957,12 @@ class Transaction(Span):
970
957
 
971
958
  return scope_or_hub
972
959
 
960
+ def _get_log_representation(self):
961
+ # type: () -> str
962
+ return "{op}transaction <{name}>".format(
963
+ op=("<" + self.op + "> " if self.op else ""), name=self.name
964
+ )
965
+
973
966
  def finish(
974
967
  self,
975
968
  scope=None, # type: Optional[sentry_sdk.Scope]
@@ -998,9 +991,7 @@ class Transaction(Span):
998
991
 
999
992
  # For backwards compatibility, we must handle the case where `scope`
1000
993
  # or `hub` could both either be a `Scope` or a `Hub`.
1001
- scope = self._get_scope_from_finish_args(
1002
- scope, hub
1003
- ) # type: Optional[sentry_sdk.Scope]
994
+ scope = self._get_scope_from_finish_args(scope, hub) # type: Optional[sentry_sdk.Scope]
1004
995
 
1005
996
  scope = scope or self.scope or sentry_sdk.get_current_scope()
1006
997
  client = sentry_sdk.get_client()
@@ -1041,6 +1032,32 @@ class Transaction(Span):
1041
1032
 
1042
1033
  super().finish(scope, end_timestamp)
1043
1034
 
1035
+ status_code = self._data.get(SPANDATA.HTTP_STATUS_CODE)
1036
+ if (
1037
+ status_code is not None
1038
+ and status_code in client.options["trace_ignore_status_codes"]
1039
+ ):
1040
+ logger.debug(
1041
+ "[Tracing] Discarding {transaction_description} because the HTTP status code {status_code} is matched by trace_ignore_status_codes: {trace_ignore_status_codes}".format(
1042
+ transaction_description=self._get_log_representation(),
1043
+ status_code=self._data[SPANDATA.HTTP_STATUS_CODE],
1044
+ trace_ignore_status_codes=client.options[
1045
+ "trace_ignore_status_codes"
1046
+ ],
1047
+ )
1048
+ )
1049
+ if client.transport:
1050
+ client.transport.record_lost_event(
1051
+ "event_processor", data_category="transaction"
1052
+ )
1053
+
1054
+ num_spans = len(self._span_recorder.spans) + 1
1055
+ client.transport.record_lost_event(
1056
+ "event_processor", data_category="span", quantity=num_spans
1057
+ )
1058
+
1059
+ self.sampled = False
1060
+
1044
1061
  if not self.sampled:
1045
1062
  # At this point a `sampled = None` should have already been resolved
1046
1063
  # to a concrete decision.
@@ -1091,13 +1108,6 @@ class Transaction(Span):
1091
1108
 
1092
1109
  event["measurements"] = self._measurements
1093
1110
 
1094
- # This is here since `to_json` is not invoked. This really should
1095
- # be gone when we switch to onlyspans.
1096
- if self._local_aggregator is not None:
1097
- metrics_summary = self._local_aggregator.to_json()
1098
- if metrics_summary:
1099
- event["_metrics_summary"] = metrics_summary
1100
-
1101
1111
  return scope.capture_event(event)
1102
1112
 
1103
1113
  def set_measurement(self, name, value, unit=""):
@@ -1188,9 +1198,7 @@ class Transaction(Span):
1188
1198
  """
1189
1199
  client = sentry_sdk.get_client()
1190
1200
 
1191
- transaction_description = "{op}transaction <{name}>".format(
1192
- op=("<" + self.op + "> " if self.op else ""), name=self.name
1193
- )
1201
+ transaction_description = self._get_log_representation()
1194
1202
 
1195
1203
  # nothing to do if tracing is disabled
1196
1204
  if not has_tracing_enabled(client.options):
@@ -1209,8 +1217,8 @@ class Transaction(Span):
1209
1217
  sample_rate = (
1210
1218
  client.options["traces_sampler"](sampling_context)
1211
1219
  if callable(client.options.get("traces_sampler"))
1220
+ # default inheritance behavior
1212
1221
  else (
1213
- # default inheritance behavior
1214
1222
  sampling_context["parent_sampled"]
1215
1223
  if sampling_context["parent_sampled"] is not None
1216
1224
  else client.options["traces_sample_rate"]
@@ -1476,8 +1484,3 @@ from sentry_sdk.tracing_utils import (
1476
1484
  has_tracing_enabled,
1477
1485
  maybe_create_breadcrumbs_from_span,
1478
1486
  )
1479
-
1480
- with warnings.catch_warnings():
1481
- # The code in this file which uses `LocalAggregator` is only called from the deprecated `metrics` module.
1482
- warnings.simplefilter("ignore", DeprecationWarning)
1483
- from sentry_sdk.metrics import LocalAggregator
@@ -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]
sentry_sdk/transport.py CHANGED
@@ -171,17 +171,7 @@ def _parse_rate_limits(header, now=None):
171
171
 
172
172
  retry_after = now + timedelta(seconds=int(retry_after_val))
173
173
  for category in categories and categories.split(";") or (None,):
174
- if category == "metric_bucket":
175
- try:
176
- namespaces = parameters[4].split(";")
177
- except IndexError:
178
- namespaces = []
179
-
180
- if not namespaces or "custom" in namespaces:
181
- yield category, retry_after # type: ignore
182
-
183
- else:
184
- yield category, retry_after # type: ignore
174
+ yield category, retry_after # type: ignore
185
175
  except (LookupError, ValueError):
186
176
  continue
187
177
 
@@ -203,9 +193,7 @@ class BaseHttpTransport(Transport):
203
193
  self._disabled_until = {} # type: Dict[Optional[EventDataCategory], datetime]
204
194
  # We only use this Retry() class for the `get_retry_after` method it exposes
205
195
  self._retry = urllib3.util.Retry()
206
- self._discarded_events = defaultdict(
207
- int
208
- ) # type: DefaultDict[Tuple[EventDataCategory, str], int]
196
+ self._discarded_events = defaultdict(int) # type: DefaultDict[Tuple[EventDataCategory, str], int]
209
197
  self._last_client_report_sent = time.time()
210
198
 
211
199
  self._pool = self._make_pool()
@@ -419,12 +407,6 @@ class BaseHttpTransport(Transport):
419
407
  # type: (str) -> bool
420
408
  def _disabled(bucket):
421
409
  # type: (Any) -> bool
422
-
423
- # The envelope item type used for metrics is statsd
424
- # whereas the rate limit category is metric_bucket
425
- if bucket == "statsd":
426
- bucket = "metric_bucket"
427
-
428
410
  ts = self._disabled_until.get(bucket)
429
411
  return ts is not None and ts > datetime.now(timezone.utc)
430
412
 
@@ -549,7 +531,8 @@ class BaseHttpTransport(Transport):
549
531
  raise NotImplementedError()
550
532
 
551
533
  def capture_envelope(
552
- self, envelope # type: Envelope
534
+ self,
535
+ envelope, # type: Envelope
553
536
  ):
554
537
  # type: (...) -> None
555
538
  def send_envelope_wrapper():
@@ -862,14 +845,16 @@ class _FunctionTransport(Transport):
862
845
  """
863
846
 
864
847
  def __init__(
865
- self, func # type: Callable[[Event], None]
848
+ self,
849
+ func, # type: Callable[[Event], None]
866
850
  ):
867
851
  # type: (...) -> None
868
852
  Transport.__init__(self)
869
853
  self._func = func
870
854
 
871
855
  def capture_event(
872
- self, event # type: Event
856
+ self,
857
+ event, # type: Event
873
858
  ):
874
859
  # type: (...) -> None
875
860
  self._func(event)
@@ -891,9 +876,7 @@ def make_transport(options):
891
876
  use_http2_transport = options.get("_experiments", {}).get("transport_http2", False)
892
877
 
893
878
  # By default, we use the http transport class
894
- transport_cls = (
895
- Http2Transport if use_http2_transport else HttpTransport
896
- ) # type: Type[Transport]
879
+ transport_cls = Http2Transport if use_http2_transport else HttpTransport # type: Type[Transport]
897
880
 
898
881
  if isinstance(ref_transport, Transport):
899
882
  return ref_transport
sentry_sdk/types.py CHANGED
@@ -21,6 +21,7 @@ if TYPE_CHECKING:
21
21
  Log,
22
22
  MonitorConfig,
23
23
  SamplingContext,
24
+ Metric,
24
25
  )
25
26
  else:
26
27
  from typing import Any
@@ -35,6 +36,7 @@ else:
35
36
  Log = Any
36
37
  MonitorConfig = Any
37
38
  SamplingContext = Any
39
+ Metric = Any
38
40
 
39
41
 
40
42
  __all__ = (
@@ -46,4 +48,5 @@ __all__ = (
46
48
  "Log",
47
49
  "MonitorConfig",
48
50
  "SamplingContext",
51
+ "Metric",
49
52
  )
sentry_sdk/utils.py CHANGED
@@ -59,7 +59,7 @@ if TYPE_CHECKING:
59
59
 
60
60
  from gevent.hub import Hub
61
61
 
62
- from sentry_sdk._types import Event, ExcInfo, Log, Hint
62
+ from sentry_sdk._types import Event, ExcInfo, Log, Hint, Metric
63
63
 
64
64
  P = ParamSpec("P")
65
65
  R = TypeVar("R")
@@ -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]
@@ -2011,3 +2013,19 @@ def get_before_send_log(options):
2011
2013
  return options.get("before_send_log") or options["_experiments"].get(
2012
2014
  "before_send_log"
2013
2015
  )
2016
+
2017
+
2018
+ def has_metrics_enabled(options):
2019
+ # type: (Optional[dict[str, Any]]) -> bool
2020
+ if options is None:
2021
+ return False
2022
+
2023
+ return bool(options["_experiments"].get("enable_metrics", False))
2024
+
2025
+
2026
+ def get_before_send_metric(options):
2027
+ # type: (Optional[dict[str, Any]]) -> Optional[Callable[[Metric, Hint], Optional[Metric]]]
2028
+ if options is None:
2029
+ return None
2030
+
2031
+ return options["_experiments"].get("before_send_metric")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sentry-sdk
3
- Version: 2.39.0
3
+ Version: 2.41.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
@@ -3,49 +3,50 @@ sentry_sdk/_compat.py,sha256=Pxcg6cUYPiOoXIFfLI_H3ATb7SfrcXOeZdzpeWv3umI,3116
3
3
  sentry_sdk/_init_implementation.py,sha256=WL54d8nggjRunBm3XlG-sWSx4yS5lpYYggd7YBWpuVk,2559
4
4
  sentry_sdk/_log_batcher.py,sha256=bBpspIlf1ejxlbudo17bZOSir226LGAdjDe_3kHkOro,5085
5
5
  sentry_sdk/_lru_cache.py,sha256=phZMBm9EKU1m67OOApnKCffnlWAlVz9bYjig7CglQuk,1229
6
+ sentry_sdk/_metrics.py,sha256=ov1aCqPvcmnDba43HHjWT2flqNPfA5Fa0O0iopcnZpI,2044
7
+ sentry_sdk/_metrics_batcher.py,sha256=1W7nmijIsiFAsNfg2jdw6Lm4mwlAFFSnx_Oc2zQmASc,4612
6
8
  sentry_sdk/_queue.py,sha256=UUzbmliDYmdVYiDA32NMYkX369ElWMFNSj5kodqVQZE,11250
7
- sentry_sdk/_types.py,sha256=Gw9Pn0mIHZP23B8C2iM1g07NzxnAkpgRAGR5MrKA2Es,10487
9
+ sentry_sdk/_types.py,sha256=ld5Y0yMsLxd6P6tPifw3IqUg8bpFE0hgxPDUmn6B9Xg,10422
8
10
  sentry_sdk/_werkzeug.py,sha256=m3GPf-jHd8v3eVOfBHaKw5f0uHoLkXrSO1EcY-8EisY,3734
9
11
  sentry_sdk/api.py,sha256=OkwQ2tA5YASJ77wLOteUdv_woPF4wL_JTOAMxe9z8k4,15282
10
12
  sentry_sdk/attachments.py,sha256=0Dylhm065O6hNFjB40fWCd5Hg4qWSXndmi1TPWglZkI,3109
11
- sentry_sdk/client.py,sha256=oQcolwFdLvuX4huUaCcpgABy3M5Yb4IhzymlzyrqfkE,38860
12
- sentry_sdk/consts.py,sha256=o2sL8csVj4m-XkGOqeXN0C-ZZJcY2yS1qP-EBXfQsN8,50182
13
+ sentry_sdk/client.py,sha256=ilR4V9_m7tknWlMK9Czq9lHn7ccuU7lfu6B4l_oRTFk,40520
14
+ sentry_sdk/consts.py,sha256=4buYhBmsKLTstqWizghIrHUFmKwo3PikaBP75mic_8w,50559
13
15
  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
17
- sentry_sdk/logger.py,sha256=HnmkMmOf1hwvxIcPW2qOvIOSnFZ9yRNDBae_eriGsoY,2471
18
- sentry_sdk/metrics.py,sha256=3IvBwbHlU-C-JdwDysTeJqOoVyYXsHZ7oEkkU0qTZb4,29913
16
+ sentry_sdk/envelope.py,sha256=1nqp_DMw66MYtrszRiiCuodyi3JKcOiQodEMkD6uZ_c,10473
17
+ sentry_sdk/feature_flags.py,sha256=savtmWAHjAvgw2m_KWW8mUagjLhAXCm3jjscmBlfIJ4,2232
18
+ sentry_sdk/hub.py,sha256=jg7UqYiJFJ1dknVCNT4_E5lIBfrCFQdWwnJrhgScVNg,25748
19
+ sentry_sdk/logger.py,sha256=6tD1sQq3NKAIRgTjRSJyxEvDZMeShj5aUfMhY9hLYIE,2458
19
20
  sentry_sdk/monitor.py,sha256=52CG1m2e8okFDVoTpbqfm9zeeaLa0ciC_r9x2RiXuDg,3639
20
21
  sentry_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- sentry_sdk/scope.py,sha256=opbEbR_qWzSj4OCp8vr9Sn-7H11Qe7z4vKY0pjIgA88,63907
22
+ sentry_sdk/scope.py,sha256=gTdGB0eUvjS1TMKvRHckB5AJnBGFGpwps8uPh--KI8k,63934
22
23
  sentry_sdk/scrubber.py,sha256=rENmQ35buugDl269bRZuIAtgr27B9SzisJYUF-691pc,6064
23
- sentry_sdk/serializer.py,sha256=_d7bPzE0EsCsffDCsN9jnhrwfdvu3h5vG-vM6205A5Q,13550
24
- sentry_sdk/session.py,sha256=TqDVmRKKHUDSmZb4jQR-s8wDt7Fwb6QaG21hawUGWEs,5571
25
- sentry_sdk/sessions.py,sha256=UZ2jfrqhYvZzTxCDGc1MLD6P_aHLJnTFetSUROIaPaA,9154
24
+ sentry_sdk/serializer.py,sha256=0-WdtKYwmGEM7nVxmOeRAXjC0DVdIHCymQpRuIHDBX0,13534
25
+ sentry_sdk/session.py,sha256=BXWHf5Opg9yx7jKe-_iHxF6LDJw9Jnu7NfHxo3UQRpw,5589
26
+ sentry_sdk/sessions.py,sha256=e7Jv8McW3QZp3H1GuI_CA_ezq_G0ZWY6nK0ZLqJRdNI,9172
26
27
  sentry_sdk/spotlight.py,sha256=93kdd8KxdLfcPaxFnFuqHgYAAL4FCfpK1hiiPoD7Ac4,8678
27
- sentry_sdk/tracing.py,sha256=QMg5KuP6SI21YS9ufBTpv1LvLCxlFE2YBfF4mHhvVNI,51582
28
- sentry_sdk/tracing_utils.py,sha256=yeor53ehPe2OWGuIMnk-0v_Q1VvWeNCwJMzETp0qwFo,39312
29
- sentry_sdk/transport.py,sha256=A0uux7XnniDJuExLudLyyFDYnS5C6r7zozGbkveUM7E,32469
30
- sentry_sdk/types.py,sha256=NLbnRzww2K3_oGz2GzcC8TdX5L2DXYso1-H1uCv2Hwc,1222
31
- sentry_sdk/utils.py,sha256=KubsR-No80YTJ1FYwNQxavYU4hOQyBixevnPsXxNCBc,61705
28
+ sentry_sdk/tracing.py,sha256=lJG5TmA7mz7-RfJEr34ydgBf-lebRegejHkhdNsHH08,51747
29
+ sentry_sdk/tracing_utils.py,sha256=XXdU_YH0Shuk2pkeUGZrZgi_CTQFuf42Plgu4qQq978,39288
30
+ sentry_sdk/transport.py,sha256=NzlBS5liRSh0Fm7Zi7sPdZG82uECw9myECs_JrClqkg,31878
31
+ sentry_sdk/types.py,sha256=A92AqvfrGQZ9KY6FaUjKfL9F1HK7Ui3heQilVzfzYCs,1269
32
+ sentry_sdk/utils.py,sha256=ytlUxHsGpnUQgnFBmDoEiFLq0iZ3cxJbPQi88HMniiA,62176
32
33
  sentry_sdk/worker.py,sha256=VSMaigRMbInVyupSFpBC42bft2oIViea-0C_d9ThnIo,4464
33
- sentry_sdk/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ sentry_sdk/ai/__init__.py,sha256=I7GRMQEYTV0bXzEIE0iAJjAn6Te-dPM5uGyJ9KS-6hI,193
34
35
  sentry_sdk/ai/monitoring.py,sha256=bS_KneWCAL9ehml5XiyficoPVx4DUUG6acbH3cjP3I8,5057
35
- sentry_sdk/ai/utils.py,sha256=CsPNw-N2utLhUfXbT8cCBPlDIyTBNzJQ5aIF18gPdhk,1705
36
+ sentry_sdk/ai/utils.py,sha256=StHk8b34APp6mHGp9oPD7aPRROKXJv5KqM8h8c4Hv9s,3270
36
37
  sentry_sdk/crons/__init__.py,sha256=3Zt6g1-pZZ12uRKKsC8QLm3XgJ4K1VYxgVpNNUygOZY,221
37
38
  sentry_sdk/crons/api.py,sha256=mk-UB8Im2LU2rJFdE-TV302EaKnf8kAjwEL0bIV0Hzc,1767
38
39
  sentry_sdk/crons/consts.py,sha256=dXqJk5meBSu5rjlGpqAOlkpACnuUi7svQnAFoy1ZNUU,87
39
40
  sentry_sdk/crons/decorator.py,sha256=UrjeIqBCbvsuKrfjGkKJbbLBvjw2TQvDWcTO7WwAmrI,3913
40
- sentry_sdk/integrations/__init__.py,sha256=8u7jM0K-emYrV8ukmybQiPzMrD030aSPSGO5A22gSQc,10367
41
+ sentry_sdk/integrations/__init__.py,sha256=qtU1pBq6CEeAKPikc9cfARULouHYkl8jbXJpmZi-JUg,10394
41
42
  sentry_sdk/integrations/_asgi_common.py,sha256=Ypg7IctB3iPPY60ebVlzChzgT8GeGpZ0YH8VvJNDlEY,3187
42
43
  sentry_sdk/integrations/_wsgi_common.py,sha256=A1-X7l1pZCcrbUhRHkmdKiK_EemEZjn7xToJIvlEuFM,7558
43
44
  sentry_sdk/integrations/aiohttp.py,sha256=_rfDKx1arvVQwcC20vh7HG80p8XtgzqKB3iBuPYZy8A,12895
44
- sentry_sdk/integrations/anthropic.py,sha256=7nMkdkhNlo9gepMShnlidUn0lfn5vcIOpvO2Zwe8dK0,13771
45
+ sentry_sdk/integrations/anthropic.py,sha256=AeGNc8WGXhqtSk9oZcxcEAp1lRvQT16i6HOKUGfat2M,13935
45
46
  sentry_sdk/integrations/argv.py,sha256=GIY7TBFETF8Z0fDzqTXEJldt5XXCDdFNZxpGxP7EPaU,911
46
47
  sentry_sdk/integrations/ariadne.py,sha256=C-zKlOrU7jvTWmQHZx0M0tAZNkPPo7Z5-5jXDD92LiU,5834
47
48
  sentry_sdk/integrations/arq.py,sha256=yDPdWJa3ZgnGLwFzavIylIafEVN0qqSSgL4kUHxQF70,7881
48
- sentry_sdk/integrations/asgi.py,sha256=zjoOOA5bHlTptRsP3ZU4X5UsluyHFqebsUt3lRfiGtE,12738
49
+ sentry_sdk/integrations/asgi.py,sha256=b3zE8Om_yP7SDxcD8MMCdDthYhLLgOB3LC3ZZCf94hw,12800
49
50
  sentry_sdk/integrations/asyncio.py,sha256=DEoXAwk8oVl_1Sbmm2TthpruaLO7p4WZBTh9K-mch_g,4136
50
51
  sentry_sdk/integrations/asyncpg.py,sha256=fbBTi5bEERK3c9o43LBLtS5wPaSVq_qIl3Y50NPmr5Y,6521
51
52
  sentry_sdk/integrations/atexit.py,sha256=sY46N2hEvtGuT1DBQhirUXHbjgXjXAm7R_sgiectVKw,1652
@@ -58,7 +59,7 @@ sentry_sdk/integrations/clickhouse_driver.py,sha256=2qpRznwSNuRSzrCA1R5bmpgiehDm
58
59
  sentry_sdk/integrations/cloud_resource_context.py,sha256=_gFldMeVHs5pxP5sm8uP7ZKmm6s_5hw3UsnXek9Iw8A,7780
59
60
  sentry_sdk/integrations/cohere.py,sha256=VI5mLukp_CQDt-OFVNgtVqpbY-j-d5UOfD7iPBKu0FU,9401
60
61
  sentry_sdk/integrations/dedupe.py,sha256=FMdGQOlL86r4AjiSf4MfzyfEIjkI5b_v3Ko2gOZKkBE,1975
61
- sentry_sdk/integrations/dramatiq.py,sha256=I09vKWnfiuhdRFCjYYjmE9LOBQvDTPS-KFqf3iHFSsM,5583
62
+ sentry_sdk/integrations/dramatiq.py,sha256=P0j732DU4pkUQi_CRtY4DxvhcalXN8jQVX6gdHl6yPw,7455
62
63
  sentry_sdk/integrations/excepthook.py,sha256=tfwpSQuo1b_OmJbNKPPRh90EUjD_OSE4DqqgYY9PVQI,2408
63
64
  sentry_sdk/integrations/executing.py,sha256=5lxBAxO5FypY-zTV03AHncGmolmaHd327-3Vrjzskcc,1994
64
65
  sentry_sdk/integrations/falcon.py,sha256=uhjqFPKa8bWRQr0za4pVXGYaPr-LRdICw2rUO-laKCo,9501
@@ -71,16 +72,17 @@ sentry_sdk/integrations/graphene.py,sha256=I6ZJ8Apd9dO9XPVvZY7I46-v1eXOW1C1rAkWw
71
72
  sentry_sdk/integrations/httpx.py,sha256=WwUulqzBLoGGqWUUdQg_MThwQUKzBXnA-m3g_1GOpCE,5866
72
73
  sentry_sdk/integrations/huey.py,sha256=wlyxjeWqqJp1X5S3neD5FiZjXcyznm1dl8_u1wIo76U,5443
73
74
  sentry_sdk/integrations/huggingface_hub.py,sha256=B5z0--bC2tEDtWl5V7xAqM4234yhY_RYbnkZGgqC8PA,14952
74
- sentry_sdk/integrations/langchain.py,sha256=mlbcshMs28wv10naLQv-4o1k-ERLgUjRlQsiiH8_DZM,29518
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
78
- sentry_sdk/integrations/logging.py,sha256=4JC2ehLqd5Tz_rad8YVb9KhZnPcDzLxLh-AjopyNVEc,13905
79
- sentry_sdk/integrations/loguru.py,sha256=fgivPdQn3rmsMeInUd2wbNlbXPAH9MKhjaqytRVKnsI,6215
75
+ sentry_sdk/integrations/langchain.py,sha256=WeqF7F0HZKR8Fra4RAivgxtxt8BsgMxua6r4n-sLX84,30302
76
+ sentry_sdk/integrations/langgraph.py,sha256=3wzDDwHVmuxF1vEiVoJqyc7r7hqK9VJoOmdgKNwbcE0,11238
77
+ sentry_sdk/integrations/launchdarkly.py,sha256=L5yE9NBRon8JPYzO6XT-dA4YkvNcrUfK4nD5fycSXM0,1934
78
+ sentry_sdk/integrations/litellm.py,sha256=WCwjsIZBxJ2Rk2yAWJBUxyNehgO6B37a_X2JJcvM4OY,8858
79
+ sentry_sdk/integrations/litestar.py,sha256=0BkfynHkxERshbxycwHDnpjzGx31c5ipYvBYqprAoHY,11830
80
+ sentry_sdk/integrations/logging.py,sha256=L1f3dej3Zdn9wyB5_mzvzyk4bF-HvFFmhGegfBfMPnA,13892
81
+ sentry_sdk/integrations/loguru.py,sha256=JmIiVnkjbEzb8dRsFln4T7Ft_GULyXEt7w5t-p5Zdt4,6202
80
82
  sentry_sdk/integrations/modules.py,sha256=vzLx3Erg77Vl4mnUvAgTg_3teAuWy7zylFpAidBI9I0,820
81
- sentry_sdk/integrations/openai.py,sha256=o41gBELZRVdaPXPrM3FQ7cOn6zIzvdu5hzMIf_nK5_I,24060
83
+ sentry_sdk/integrations/openai.py,sha256=zvsW4-ypH_n4B2EIYYQ3gheJDzNOxZRgr5ApPrzCOE8,24160
82
84
  sentry_sdk/integrations/openfeature.py,sha256=-vvdrN4fK0Xhu2ip41bkPIPEqdzv8xzmLu9wRlI2xPA,1131
83
- sentry_sdk/integrations/pure_eval.py,sha256=OvT76XvllQ_J6ABu3jVNU6KD2QAxnXMtTZ7hqhXNhpY,4581
85
+ sentry_sdk/integrations/pure_eval.py,sha256=R2UuFCtQ_ShTIZJKPn9RUD06lbc6mug4Mv8S1_mo1j0,4605
84
86
  sentry_sdk/integrations/pymongo.py,sha256=cPpMGEbXHlV6HTHgmIDL1F-x3w7ZMROXVb4eUhLs3bw,6380
85
87
  sentry_sdk/integrations/pyramid.py,sha256=IDonzoZvLrH18JL-i_Qpbztc4T3iZNQhWFFv6SAXac8,7364
86
88
  sentry_sdk/integrations/quart.py,sha256=7h4BuGNWzZabVIIOKm194gMKDlIvS-dmWFW4iZXsmF4,7413
@@ -90,20 +92,20 @@ sentry_sdk/integrations/rust_tracing.py,sha256=fQ0eG09w3IPZe8ecgeUoQTPoGFThkkarU
90
92
  sentry_sdk/integrations/sanic.py,sha256=Z7orxkX9YhU9YSX4Oidsi3n46J0qlVG7Ajog-fnUreo,12960
91
93
  sentry_sdk/integrations/serverless.py,sha256=npiKJuIy_sEkWT_x0Eu2xSEMiMh_aySqGYlnvIROsYk,1804
92
94
  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
95
+ sentry_sdk/integrations/sqlalchemy.py,sha256=rzOK3yFLrRE3V7q-wVcAUhq5iSTrqGPW5ytbGU9lXkk,4344
96
+ sentry_sdk/integrations/starlette.py,sha256=oHuzJXRWnCgD22Q9_JHfuD2OSW7gIt_wwA-TTwJ_2ng,26235
97
+ sentry_sdk/integrations/starlite.py,sha256=hSiVB6KZr8pxsQVRSGGP-9UQBLsBl-3DmrK_5CPebB8,10559
96
98
  sentry_sdk/integrations/statsig.py,sha256=-e57hxHfHo1S13YQKObV65q_UvREyxbR56fnf7bkC9o,1227
97
99
  sentry_sdk/integrations/stdlib.py,sha256=vgB9weDGh455vBwmUSgcQRgzViKstu3O0syOthCn_H0,8831
98
100
  sentry_sdk/integrations/strawberry.py,sha256=u7Lk4u3sNEycdSmY1nQBzYKmqI-mO8BWKAAJkCSuTRA,14126
99
101
  sentry_sdk/integrations/sys_exit.py,sha256=AwShgGBWPdiY25aOWDLRAs2RBUKm5T3CrL-Q-zAk0l4,2493
100
- sentry_sdk/integrations/threading.py,sha256=yzJ2gK9cWg_-gZfAidzktVokGM9fxAijS4nMO_Ev7r0,5394
102
+ sentry_sdk/integrations/threading.py,sha256=0lNxcMLN7Z5DwLg9d1Of7lgGcMOggsM76bU35hIOGXA,7109
101
103
  sentry_sdk/integrations/tornado.py,sha256=Qcft8FZxdVICnaa1AhsDB262sInEQZPf-pvgI-Agjmc,7206
102
104
  sentry_sdk/integrations/trytond.py,sha256=BaLCNqQeRWDbHHDEelS5tmj-p_CrbmtGEHIn6JfzEFE,1651
103
105
  sentry_sdk/integrations/typer.py,sha256=FQrFgpR9t6yQWF-oWCI9KJLFioEnA2c_1BEtYV-mPAs,1815
104
106
  sentry_sdk/integrations/unleash.py,sha256=6JshqyuAY_kbu9Nr20tMOhtgx-ryqPHCrq_EQIzeqm4,1058
105
107
  sentry_sdk/integrations/unraisablehook.py,sha256=8IW8Ia9t2hKgPLh8WS8WkmeAsyjJ6Al4qi8sM6vGrpU,1753
106
- sentry_sdk/integrations/wsgi.py,sha256=aW_EnDCcex41NGdrxKFZsfJxJhndsMCv0d2a5LBb7wU,10747
108
+ sentry_sdk/integrations/wsgi.py,sha256=M3lExlLqQ_J-vEZPmv5HI7vRf8T7DvPicbNZiypUvmE,10809
107
109
  sentry_sdk/integrations/celery/__init__.py,sha256=FNmrLL0Cs95kv6yUCpJGu9X8Cpw20mMYGmnkBC4IL4Y,18699
108
110
  sentry_sdk/integrations/celery/beat.py,sha256=WHEdKetrDJgtZGNp1VUMa6BG1q-MhsLZMefUmVrPu3w,8953
109
111
  sentry_sdk/integrations/celery/utils.py,sha256=CMWQOpg9yniEkm3WlXe7YakJfVnLwaY0-jyeo2GX-ZI,1208
@@ -116,15 +118,15 @@ sentry_sdk/integrations/django/templates.py,sha256=k3PQrNICGS4wqmFxK3o8KwOlqip7r
116
118
  sentry_sdk/integrations/django/transactions.py,sha256=Axyh3l4UvM96R3go2anVhew3JbrEZ4FSYd1r3UXEcw4,4951
117
119
  sentry_sdk/integrations/django/views.py,sha256=bjHwt6TVfYY7yfGUa2Rat9yowkUbQ2bYCcJaXJxP2Ik,3137
118
120
  sentry_sdk/integrations/grpc/__init__.py,sha256=zukyRYtaxRGcDuQSXBbVcpa7ZMAYdLQ-laRQqqHsHgc,5620
119
- sentry_sdk/integrations/grpc/client.py,sha256=rOPwbU0IO6Ve99atvvwhdVZA8nqBy7_wbH2frb0kIJ0,3382
121
+ sentry_sdk/integrations/grpc/client.py,sha256=4MCY24tqZAU6OzNC_0pphyCLnR_SrfBC-xh8Kb-i8LU,3373
120
122
  sentry_sdk/integrations/grpc/consts.py,sha256=NpsN5gKWDmtGtVK_L5HscgFZBHqjOpmLJLGKyh8GZBA,31
121
123
  sentry_sdk/integrations/grpc/server.py,sha256=oo79zjfGaJtCSwtxaJeCFRA6UWoH1PDzjR6SDMtt398,2474
122
124
  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
125
+ sentry_sdk/integrations/grpc/aio/client.py,sha256=3zfF3XkpzR717BpY1ehxi72jDUvT8Xntx8vkD78kCXc,3327
124
126
  sentry_sdk/integrations/grpc/aio/server.py,sha256=SCkdikPZRdWyrlnZewsSGpPk4v6AsdSApVAbO-lf_Lk,4019
125
127
  sentry_sdk/integrations/openai_agents/__init__.py,sha256=-ydqG0sFIrvJlT9JHO58EZpCAzyy9J59Av8dxn0fHuw,1424
126
128
  sentry_sdk/integrations/openai_agents/consts.py,sha256=PTb3vlqkuMPktu21ALK72o5WMIX4-cewTEiTRdHKFdQ,38
127
- sentry_sdk/integrations/openai_agents/utils.py,sha256=NWcko9EphtvirpW_PhZV_l81299QNTouiRZxOKu15rE,5286
129
+ sentry_sdk/integrations/openai_agents/utils.py,sha256=fa3r6iHLjTtrU2dHM_7D_0lDQAHR3CUSutIa6Wf7efg,6808
128
130
  sentry_sdk/integrations/openai_agents/patches/__init__.py,sha256=I7C9JZ70Mf8PV3wPdFsxTqvcYl4TYUgSZYfNU2Spb7Y,231
129
131
  sentry_sdk/integrations/openai_agents/patches/agent_run.py,sha256=GPBV-j8YnHOrJAhdhu_tphe14z7G0-riFVmjFNDgy0s,5773
130
132
  sentry_sdk/integrations/openai_agents/patches/models.py,sha256=DtwqCmSsYFlhRZquKM2jiTOnnAg97eyCTtJYZkWqdww,1405
@@ -132,10 +134,10 @@ sentry_sdk/integrations/openai_agents/patches/runner.py,sha256=Fr5tflgadu3fnEThS
132
134
  sentry_sdk/integrations/openai_agents/patches/tools.py,sha256=uAx1GgsiDJBP7jpYW8r_kOImdgzXlwYqK-uhkyP3icI,3255
133
135
  sentry_sdk/integrations/openai_agents/spans/__init__.py,sha256=RlVi781zGsvCJBciDO_EbBbwkakwbP9DoFQBbo4VAEE,353
134
136
  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
137
+ sentry_sdk/integrations/openai_agents/spans/ai_client.py,sha256=gCZrl1vpBmf8vzDTSLCvoZg-x_TvMUFTLOxh4Vy_4OY,1292
136
138
  sentry_sdk/integrations/openai_agents/spans/execute_tool.py,sha256=tqtDIzaxhxJUE-XEvm2dSyJV65UXJ7Mr23C6NTt6ZJE,1411
137
139
  sentry_sdk/integrations/openai_agents/spans/handoff.py,sha256=MBhzy7MpvPGwQTPT5TFcOnmSPiSH_uadQ5wvksueIik,525
138
- sentry_sdk/integrations/openai_agents/spans/invoke_agent.py,sha256=yyg-wyVZaYMYbaORva_BotNxB9oyK5Dsn8KfQ3Y7OZI,2323
140
+ sentry_sdk/integrations/openai_agents/spans/invoke_agent.py,sha256=AXiXuJjcvgj_M6NWxHg-OVWld7-nb8VQe3Iq1IEIxOk,2493
139
141
  sentry_sdk/integrations/opentelemetry/__init__.py,sha256=emNL5aAq_NhK0PZmfX_g4GIdvBS6nHqGrjrIgrdC5m8,229
140
142
  sentry_sdk/integrations/opentelemetry/consts.py,sha256=fYL6FIAEfnGZGBhFn5X7aRyHxihSPqAKKqMLhf5Gniw,143
141
143
  sentry_sdk/integrations/opentelemetry/integration.py,sha256=CWp6hFFMqoR7wcuwTRbRO-1iVch4A6oOB3RuHWeX9GQ,1791
@@ -154,15 +156,15 @@ sentry_sdk/integrations/redis/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
154
156
  sentry_sdk/integrations/redis/modules/caches.py,sha256=eY8XY4Nk3QsMM0T26OOYdcNr4bN0Sp9325HkH-hO8cg,4063
155
157
  sentry_sdk/integrations/redis/modules/queries.py,sha256=0GxZ98wyjqcc4CwPG3xJ4bSGIGW8wPXChSk5Fxm6kYg,2035
156
158
  sentry_sdk/integrations/spark/__init__.py,sha256=oOewMErnZk2rzNvIlZO6URxQexu9bUJuSLM2m_zECy8,208
157
- sentry_sdk/integrations/spark/spark_driver.py,sha256=mqGQMngDAZWM78lWK5S0FPpmjd1Q65Ta5T4bOH6mNXs,9465
159
+ sentry_sdk/integrations/spark/spark_driver.py,sha256=hInLM2dO5yPxQT9Wb5gvHIKkbbA1i84LBsx416Dv-6c,9474
158
160
  sentry_sdk/integrations/spark/spark_worker.py,sha256=FGT4yRU2X_iQCC46aasMmvJfYOKmBip8KbDF_wnhvEY,3706
159
161
  sentry_sdk/profiler/__init__.py,sha256=3PI3bHk9RSkkOXZKN84DDedk_7M65EiqqaIGo-DYs0E,1291
160
162
  sentry_sdk/profiler/continuous_profiler.py,sha256=7Qb75TaKLNYxMA97wO-qEpDVqxPQWOLUi2rnUm6_Ci0,23066
161
163
  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.39.0.dist-info/licenses/LICENSE,sha256=KhQNZg9GKBL6KQvHQNBGMxJsXsRdhLebVp4Sew7t3Qs,1093
164
- sentry_sdk-2.39.0.dist-info/METADATA,sha256=taZTJIDINnsHLuPc4upXBJPLMLnD3bdXscPqoNE_F8o,10358
165
- sentry_sdk-2.39.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
166
- sentry_sdk-2.39.0.dist-info/entry_points.txt,sha256=qacZEz40UspQZD1IukCXykx0JtImqGDOctS5KfOLTko,91
167
- sentry_sdk-2.39.0.dist-info/top_level.txt,sha256=XrQz30XE9FKXSY_yGLrd9bsv2Rk390GTDJOSujYaMxI,11
168
- sentry_sdk-2.39.0.dist-info/RECORD,,
164
+ sentry_sdk/profiler/utils.py,sha256=80MF0wiguKe47O-uWQfl-81G1caiVa8HgcFHWBzFpuM,6492
165
+ sentry_sdk-2.41.0.dist-info/licenses/LICENSE,sha256=KhQNZg9GKBL6KQvHQNBGMxJsXsRdhLebVp4Sew7t3Qs,1093
166
+ sentry_sdk-2.41.0.dist-info/METADATA,sha256=8cH1Csap1vj8PnY9-IRGoQuFSFqZUs4B_USzdXwoH4g,10433
167
+ sentry_sdk-2.41.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
168
+ sentry_sdk-2.41.0.dist-info/entry_points.txt,sha256=qacZEz40UspQZD1IukCXykx0JtImqGDOctS5KfOLTko,91
169
+ sentry_sdk-2.41.0.dist-info/top_level.txt,sha256=XrQz30XE9FKXSY_yGLrd9bsv2Rk390GTDJOSujYaMxI,11
170
+ sentry_sdk-2.41.0.dist-info/RECORD,,