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.
- sentry_sdk/client.py +6 -6
- sentry_sdk/consts.py +15 -3
- sentry_sdk/envelope.py +28 -14
- sentry_sdk/feature_flags.py +0 -1
- sentry_sdk/hub.py +17 -9
- sentry_sdk/integrations/__init__.py +2 -0
- sentry_sdk/integrations/anthropic.py +18 -3
- sentry_sdk/integrations/asgi.py +3 -2
- sentry_sdk/integrations/cohere.py +4 -0
- sentry_sdk/integrations/dedupe.py +16 -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/huggingface_hub.py +3 -2
- sentry_sdk/integrations/langchain.py +12 -12
- sentry_sdk/integrations/launchdarkly.py +0 -1
- sentry_sdk/integrations/litellm.py +251 -0
- sentry_sdk/integrations/litestar.py +4 -4
- sentry_sdk/integrations/openai.py +13 -8
- sentry_sdk/integrations/openai_agents/spans/ai_client.py +4 -1
- sentry_sdk/integrations/openai_agents/spans/execute_tool.py +1 -1
- sentry_sdk/integrations/openai_agents/utils.py +28 -1
- 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/wsgi.py +3 -2
- sentry_sdk/metrics.py +17 -11
- sentry_sdk/profiler/utils.py +2 -6
- sentry_sdk/scope.py +6 -3
- sentry_sdk/serializer.py +13 -4
- sentry_sdk/session.py +4 -2
- sentry_sdk/sessions.py +4 -2
- sentry_sdk/tracing.py +38 -8
- sentry_sdk/tracing_utils.py +15 -4
- sentry_sdk/transport.py +8 -9
- sentry_sdk/utils.py +5 -3
- {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/METADATA +3 -1
- {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/RECORD +44 -43
- {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/WHEEL +0 -0
- {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/entry_points.txt +0 -0
- {sentry_sdk-2.38.0.dist-info → sentry_sdk-2.40.0.dist-info}/licenses/LICENSE +0 -0
- {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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
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]]
|
|
@@ -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
|
-
|
|
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,
|
|
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
|
|
|
@@ -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.
|
|
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 =
|
|
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"]
|
sentry_sdk/tracing_utils.py
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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,
|
|
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]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sentry-sdk
|
|
3
|
-
Version: 2.
|
|
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=
|
|
12
|
-
sentry_sdk/consts.py,sha256=
|
|
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=
|
|
15
|
-
sentry_sdk/feature_flags.py,sha256=
|
|
16
|
-
sentry_sdk/hub.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
24
|
-
sentry_sdk/session.py,sha256=
|
|
25
|
-
sentry_sdk/sessions.py,sha256=
|
|
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=
|
|
28
|
-
sentry_sdk/tracing_utils.py,sha256=
|
|
29
|
-
sentry_sdk/transport.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
60
|
-
sentry_sdk/integrations/dedupe.py,sha256=
|
|
61
|
-
sentry_sdk/integrations/dramatiq.py,sha256=
|
|
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=
|
|
74
|
-
sentry_sdk/integrations/langchain.py,sha256=
|
|
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=
|
|
77
|
-
sentry_sdk/integrations/
|
|
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=
|
|
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=
|
|
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=
|
|
94
|
-
sentry_sdk/integrations/starlette.py,sha256=
|
|
95
|
-
sentry_sdk/integrations/starlite.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
136
|
-
sentry_sdk/integrations/openai_agents/spans/execute_tool.py,sha256=
|
|
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=
|
|
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=
|
|
163
|
-
sentry_sdk-2.
|
|
164
|
-
sentry_sdk-2.
|
|
165
|
-
sentry_sdk-2.
|
|
166
|
-
sentry_sdk-2.
|
|
167
|
-
sentry_sdk-2.
|
|
168
|
-
sentry_sdk-2.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|