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.
- sentry_sdk/_metrics.py +81 -0
- sentry_sdk/_metrics_batcher.py +156 -0
- sentry_sdk/_types.py +27 -22
- sentry_sdk/ai/__init__.py +7 -0
- sentry_sdk/ai/utils.py +48 -0
- sentry_sdk/client.py +87 -36
- sentry_sdk/consts.py +15 -9
- sentry_sdk/envelope.py +31 -17
- sentry_sdk/feature_flags.py +0 -1
- sentry_sdk/hub.py +17 -9
- sentry_sdk/integrations/__init__.py +1 -0
- sentry_sdk/integrations/anthropic.py +10 -2
- sentry_sdk/integrations/asgi.py +3 -2
- sentry_sdk/integrations/dramatiq.py +89 -31
- sentry_sdk/integrations/grpc/aio/client.py +2 -1
- sentry_sdk/integrations/grpc/client.py +3 -4
- sentry_sdk/integrations/langchain.py +29 -5
- sentry_sdk/integrations/langgraph.py +5 -3
- sentry_sdk/integrations/launchdarkly.py +0 -1
- sentry_sdk/integrations/litellm.py +251 -0
- sentry_sdk/integrations/litestar.py +4 -4
- sentry_sdk/integrations/logging.py +1 -1
- sentry_sdk/integrations/loguru.py +1 -1
- sentry_sdk/integrations/openai.py +3 -2
- sentry_sdk/integrations/openai_agents/spans/ai_client.py +4 -1
- sentry_sdk/integrations/openai_agents/spans/invoke_agent.py +10 -2
- sentry_sdk/integrations/openai_agents/utils.py +60 -19
- sentry_sdk/integrations/pure_eval.py +3 -1
- sentry_sdk/integrations/spark/spark_driver.py +2 -1
- sentry_sdk/integrations/sqlalchemy.py +2 -6
- sentry_sdk/integrations/starlette.py +1 -3
- sentry_sdk/integrations/starlite.py +4 -4
- sentry_sdk/integrations/threading.py +52 -8
- sentry_sdk/integrations/wsgi.py +3 -2
- sentry_sdk/logger.py +1 -1
- sentry_sdk/profiler/utils.py +2 -6
- sentry_sdk/scope.py +6 -3
- sentry_sdk/serializer.py +1 -3
- sentry_sdk/session.py +4 -2
- sentry_sdk/sessions.py +4 -2
- sentry_sdk/tracing.py +36 -33
- sentry_sdk/tracing_utils.py +1 -3
- sentry_sdk/transport.py +9 -26
- sentry_sdk/types.py +3 -0
- sentry_sdk/utils.py +22 -4
- {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/METADATA +3 -1
- {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/RECORD +51 -49
- sentry_sdk/metrics.py +0 -965
- {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/WHEEL +0 -0
- {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/entry_points.txt +0 -0
- {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/licenses/LICENSE +0 -0
- {sentry_sdk-2.39.0.dist-info → sentry_sdk-2.41.0.dist-info}/top_level.txt +0 -0
sentry_sdk/logger.py
CHANGED
sentry_sdk/profiler/utils.py
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 =
|
|
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
|
sentry_sdk/tracing_utils.py
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 =
|
|
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.
|
|
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=
|
|
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=
|
|
12
|
-
sentry_sdk/consts.py,sha256=
|
|
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=
|
|
15
|
-
sentry_sdk/feature_flags.py,sha256=
|
|
16
|
-
sentry_sdk/hub.py,sha256=
|
|
17
|
-
sentry_sdk/logger.py,sha256=
|
|
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=
|
|
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=
|
|
24
|
-
sentry_sdk/session.py,sha256=
|
|
25
|
-
sentry_sdk/sessions.py,sha256=
|
|
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=
|
|
28
|
-
sentry_sdk/tracing_utils.py,sha256=
|
|
29
|
-
sentry_sdk/transport.py,sha256=
|
|
30
|
-
sentry_sdk/types.py,sha256=
|
|
31
|
-
sentry_sdk/utils.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
75
|
-
sentry_sdk/integrations/langgraph.py,sha256=
|
|
76
|
-
sentry_sdk/integrations/launchdarkly.py,sha256=
|
|
77
|
-
sentry_sdk/integrations/
|
|
78
|
-
sentry_sdk/integrations/
|
|
79
|
-
sentry_sdk/integrations/
|
|
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=
|
|
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=
|
|
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=
|
|
94
|
-
sentry_sdk/integrations/starlette.py,sha256=
|
|
95
|
-
sentry_sdk/integrations/starlite.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
163
|
-
sentry_sdk-2.
|
|
164
|
-
sentry_sdk-2.
|
|
165
|
-
sentry_sdk-2.
|
|
166
|
-
sentry_sdk-2.
|
|
167
|
-
sentry_sdk-2.
|
|
168
|
-
sentry_sdk-2.
|
|
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,,
|