sentry-sdk 2.37.1__py2.py3-none-any.whl → 2.39.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/__init__.py +4 -2
- sentry_sdk/_types.py +1 -1
- sentry_sdk/ai/utils.py +11 -1
- sentry_sdk/consts.py +5 -2
- sentry_sdk/envelope.py +1 -1
- sentry_sdk/integrations/__init__.py +2 -1
- sentry_sdk/integrations/anthropic.py +65 -15
- sentry_sdk/integrations/asyncio.py +2 -0
- sentry_sdk/integrations/cohere.py +4 -0
- sentry_sdk/integrations/dedupe.py +19 -3
- sentry_sdk/integrations/gql.py +22 -5
- sentry_sdk/integrations/huggingface_hub.py +278 -81
- sentry_sdk/integrations/langchain.py +17 -14
- sentry_sdk/integrations/openai.py +13 -8
- sentry_sdk/integrations/openai_agents/patches/agent_run.py +4 -4
- sentry_sdk/integrations/openai_agents/spans/agent_workflow.py +2 -2
- sentry_sdk/integrations/openai_agents/spans/execute_tool.py +1 -1
- sentry_sdk/integrations/openai_agents/spans/invoke_agent.py +50 -6
- sentry_sdk/integrations/openai_agents/utils.py +3 -10
- sentry_sdk/integrations/threading.py +1 -1
- sentry_sdk/profiler/continuous_profiler.py +13 -3
- sentry_sdk/serializer.py +12 -1
- sentry_sdk/tracing.py +3 -3
- sentry_sdk/tracing_utils.py +32 -23
- sentry_sdk/utils.py +6 -0
- {sentry_sdk-2.37.1.dist-info → sentry_sdk-2.39.0.dist-info}/METADATA +1 -1
- {sentry_sdk-2.37.1.dist-info → sentry_sdk-2.39.0.dist-info}/RECORD +31 -31
- {sentry_sdk-2.37.1.dist-info → sentry_sdk-2.39.0.dist-info}/WHEEL +0 -0
- {sentry_sdk-2.37.1.dist-info → sentry_sdk-2.39.0.dist-info}/entry_points.txt +0 -0
- {sentry_sdk-2.37.1.dist-info → sentry_sdk-2.39.0.dist-info}/licenses/LICENSE +0 -0
- {sentry_sdk-2.37.1.dist-info → sentry_sdk-2.39.0.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import sentry_sdk
|
|
2
|
+
from sentry_sdk.ai.utils import get_start_span_function, set_data_normalized
|
|
2
3
|
from sentry_sdk.consts import OP, SPANDATA
|
|
4
|
+
from sentry_sdk.scope import should_send_default_pii
|
|
5
|
+
from sentry_sdk.utils import safe_serialize
|
|
3
6
|
|
|
4
7
|
from ..consts import SPAN_ORIGIN
|
|
5
8
|
from ..utils import _set_agent_data
|
|
@@ -11,9 +14,10 @@ if TYPE_CHECKING:
|
|
|
11
14
|
from typing import Any
|
|
12
15
|
|
|
13
16
|
|
|
14
|
-
def invoke_agent_span(context, agent):
|
|
15
|
-
# type: (agents.RunContextWrapper, agents.Agent) -> sentry_sdk.tracing.Span
|
|
16
|
-
|
|
17
|
+
def invoke_agent_span(context, agent, kwargs):
|
|
18
|
+
# type: (agents.RunContextWrapper, agents.Agent, dict[str, Any]) -> sentry_sdk.tracing.Span
|
|
19
|
+
start_span_function = get_start_span_function()
|
|
20
|
+
span = start_span_function(
|
|
17
21
|
op=OP.GEN_AI_INVOKE_AGENT,
|
|
18
22
|
name=f"invoke_agent {agent.name}",
|
|
19
23
|
origin=SPAN_ORIGIN,
|
|
@@ -22,6 +26,40 @@ def invoke_agent_span(context, agent):
|
|
|
22
26
|
|
|
23
27
|
span.set_data(SPANDATA.GEN_AI_OPERATION_NAME, "invoke_agent")
|
|
24
28
|
|
|
29
|
+
if should_send_default_pii():
|
|
30
|
+
messages = []
|
|
31
|
+
if agent.instructions:
|
|
32
|
+
message = (
|
|
33
|
+
agent.instructions
|
|
34
|
+
if isinstance(agent.instructions, str)
|
|
35
|
+
else safe_serialize(agent.instructions)
|
|
36
|
+
)
|
|
37
|
+
messages.append(
|
|
38
|
+
{
|
|
39
|
+
"content": [{"text": message, "type": "text"}],
|
|
40
|
+
"role": "system",
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
original_input = kwargs.get("original_input")
|
|
45
|
+
if original_input is not None:
|
|
46
|
+
message = (
|
|
47
|
+
original_input
|
|
48
|
+
if isinstance(original_input, str)
|
|
49
|
+
else safe_serialize(original_input)
|
|
50
|
+
)
|
|
51
|
+
messages.append(
|
|
52
|
+
{
|
|
53
|
+
"content": [{"text": message, "type": "text"}],
|
|
54
|
+
"role": "user",
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
if len(messages) > 0:
|
|
59
|
+
set_data_normalized(
|
|
60
|
+
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, messages, unpack=False
|
|
61
|
+
)
|
|
62
|
+
|
|
25
63
|
_set_agent_data(span, agent)
|
|
26
64
|
|
|
27
65
|
return span
|
|
@@ -29,6 +67,12 @@ def invoke_agent_span(context, agent):
|
|
|
29
67
|
|
|
30
68
|
def update_invoke_agent_span(context, agent, output):
|
|
31
69
|
# type: (agents.RunContextWrapper, agents.Agent, Any) -> None
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
70
|
+
span = sentry_sdk.get_current_span()
|
|
71
|
+
|
|
72
|
+
if span:
|
|
73
|
+
if should_send_default_pii():
|
|
74
|
+
set_data_normalized(
|
|
75
|
+
span, SPANDATA.GEN_AI_RESPONSE_TEXT, output, unpack=False
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
span.__exit__(None, None, None)
|
|
@@ -3,13 +3,13 @@ from sentry_sdk.ai.utils import set_data_normalized
|
|
|
3
3
|
from sentry_sdk.consts import SPANDATA
|
|
4
4
|
from sentry_sdk.integrations import DidNotEnable
|
|
5
5
|
from sentry_sdk.scope import should_send_default_pii
|
|
6
|
+
from sentry_sdk.tracing_utils import set_span_errored
|
|
6
7
|
from sentry_sdk.utils import event_from_exception, safe_serialize
|
|
7
8
|
|
|
8
9
|
from typing import TYPE_CHECKING
|
|
9
10
|
|
|
10
11
|
if TYPE_CHECKING:
|
|
11
12
|
from typing import Any
|
|
12
|
-
from typing import Callable
|
|
13
13
|
from agents import Usage
|
|
14
14
|
|
|
15
15
|
try:
|
|
@@ -21,6 +21,8 @@ except ImportError:
|
|
|
21
21
|
|
|
22
22
|
def _capture_exception(exc):
|
|
23
23
|
# type: (Any) -> None
|
|
24
|
+
set_span_errored()
|
|
25
|
+
|
|
24
26
|
event, hint = event_from_exception(
|
|
25
27
|
exc,
|
|
26
28
|
client_options=sentry_sdk.get_client().options,
|
|
@@ -29,15 +31,6 @@ def _capture_exception(exc):
|
|
|
29
31
|
sentry_sdk.capture_event(event, hint=hint)
|
|
30
32
|
|
|
31
33
|
|
|
32
|
-
def _get_start_span_function():
|
|
33
|
-
# type: () -> Callable[..., Any]
|
|
34
|
-
current_span = sentry_sdk.get_current_span()
|
|
35
|
-
transaction_exists = (
|
|
36
|
-
current_span is not None and current_span.containing_transaction == current_span
|
|
37
|
-
)
|
|
38
|
-
return sentry_sdk.start_span if transaction_exists else sentry_sdk.start_transaction
|
|
39
|
-
|
|
40
|
-
|
|
41
34
|
def _set_agent_data(span, agent):
|
|
42
35
|
# type: (sentry_sdk.tracing.Span, agents.Agent) -> None
|
|
43
36
|
span.set_data(
|
|
@@ -52,7 +52,7 @@ class ThreadingIntegration(Integration):
|
|
|
52
52
|
|
|
53
53
|
try:
|
|
54
54
|
from django import VERSION as django_version # noqa: N811
|
|
55
|
-
import channels # type: ignore[import-
|
|
55
|
+
import channels # type: ignore[import-untyped]
|
|
56
56
|
|
|
57
57
|
channels_version = channels.__version__
|
|
58
58
|
except ImportError:
|
|
@@ -75,9 +75,11 @@ def setup_continuous_profiler(options, sdk_info, capture_func):
|
|
|
75
75
|
# type: (Dict[str, Any], SDKInfo, Callable[[Envelope], None]) -> bool
|
|
76
76
|
global _scheduler
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
already_initialized = _scheduler is not None
|
|
79
|
+
|
|
80
|
+
if already_initialized:
|
|
79
81
|
logger.debug("[Profiling] Continuous Profiler is already setup")
|
|
80
|
-
|
|
82
|
+
teardown_continuous_profiler()
|
|
81
83
|
|
|
82
84
|
if is_gevent():
|
|
83
85
|
# If gevent has patched the threading modules then we cannot rely on
|
|
@@ -117,11 +119,19 @@ def setup_continuous_profiler(options, sdk_info, capture_func):
|
|
|
117
119
|
)
|
|
118
120
|
)
|
|
119
121
|
|
|
120
|
-
|
|
122
|
+
if not already_initialized:
|
|
123
|
+
atexit.register(teardown_continuous_profiler)
|
|
121
124
|
|
|
122
125
|
return True
|
|
123
126
|
|
|
124
127
|
|
|
128
|
+
def is_profile_session_sampled():
|
|
129
|
+
# type: () -> bool
|
|
130
|
+
if _scheduler is None:
|
|
131
|
+
return False
|
|
132
|
+
return _scheduler.sampled
|
|
133
|
+
|
|
134
|
+
|
|
125
135
|
def try_autostart_continuous_profiler():
|
|
126
136
|
# type: () -> None
|
|
127
137
|
|
sentry_sdk/serializer.py
CHANGED
|
@@ -187,6 +187,16 @@ def serialize(event, **kwargs):
|
|
|
187
187
|
|
|
188
188
|
return False
|
|
189
189
|
|
|
190
|
+
def _is_span_attribute():
|
|
191
|
+
# type: () -> Optional[bool]
|
|
192
|
+
try:
|
|
193
|
+
if path[0] == "spans" and path[2] == "data":
|
|
194
|
+
return True
|
|
195
|
+
except IndexError:
|
|
196
|
+
return None
|
|
197
|
+
|
|
198
|
+
return False
|
|
199
|
+
|
|
190
200
|
def _is_request_body():
|
|
191
201
|
# type: () -> Optional[bool]
|
|
192
202
|
try:
|
|
@@ -282,7 +292,8 @@ def serialize(event, **kwargs):
|
|
|
282
292
|
)
|
|
283
293
|
return None
|
|
284
294
|
|
|
285
|
-
|
|
295
|
+
is_span_attribute = _is_span_attribute()
|
|
296
|
+
if (is_databag or is_span_attribute) and global_repr_processors:
|
|
286
297
|
hints = {"memo": memo, "remaining_depth": remaining_depth}
|
|
287
298
|
for processor in global_repr_processors:
|
|
288
299
|
result = processor(obj, hints)
|
sentry_sdk/tracing.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from decimal import Decimal
|
|
2
1
|
import uuid
|
|
3
2
|
import warnings
|
|
4
3
|
from datetime import datetime, timedelta, timezone
|
|
@@ -417,7 +416,8 @@ class Span:
|
|
|
417
416
|
def __exit__(self, ty, value, tb):
|
|
418
417
|
# type: (Optional[Any], Optional[Any], Optional[Any]) -> None
|
|
419
418
|
if value is not None and should_be_treated_as_error(ty, value):
|
|
420
|
-
self.
|
|
419
|
+
if self.status != SPANSTATUS.ERROR:
|
|
420
|
+
self.set_status(SPANSTATUS.INTERNAL_ERROR)
|
|
421
421
|
|
|
422
422
|
with capture_internal_exceptions():
|
|
423
423
|
scope, old_span = self._context_manager_state
|
|
@@ -1251,7 +1251,7 @@ class Transaction(Span):
|
|
|
1251
1251
|
return
|
|
1252
1252
|
|
|
1253
1253
|
# Now we roll the dice.
|
|
1254
|
-
self.sampled = self._sample_rand <
|
|
1254
|
+
self.sampled = self._sample_rand < self.sample_rate
|
|
1255
1255
|
|
|
1256
1256
|
if self.sampled:
|
|
1257
1257
|
logger.debug(
|
sentry_sdk/tracing_utils.py
CHANGED
|
@@ -6,13 +6,12 @@ import re
|
|
|
6
6
|
import sys
|
|
7
7
|
from collections.abc import Mapping
|
|
8
8
|
from datetime import timedelta
|
|
9
|
-
from decimal import ROUND_DOWN, Decimal, DefaultContext, localcontext
|
|
10
9
|
from random import Random
|
|
11
10
|
from urllib.parse import quote, unquote
|
|
12
11
|
import uuid
|
|
13
12
|
|
|
14
13
|
import sentry_sdk
|
|
15
|
-
from sentry_sdk.consts import OP, SPANDATA, SPANTEMPLATE
|
|
14
|
+
from sentry_sdk.consts import OP, SPANDATA, SPANSTATUS, SPANTEMPLATE
|
|
16
15
|
from sentry_sdk.utils import (
|
|
17
16
|
capture_internal_exceptions,
|
|
18
17
|
filename_for_module,
|
|
@@ -502,7 +501,7 @@ class PropagationContext:
|
|
|
502
501
|
return
|
|
503
502
|
|
|
504
503
|
sample_rand = try_convert(
|
|
505
|
-
|
|
504
|
+
float, self.dynamic_sampling_context.get("sample_rand")
|
|
506
505
|
)
|
|
507
506
|
if sample_rand is not None and 0 <= sample_rand < 1:
|
|
508
507
|
# sample_rand is present and valid, so don't overwrite it
|
|
@@ -650,7 +649,7 @@ class Baggage:
|
|
|
650
649
|
options = client.options or {}
|
|
651
650
|
|
|
652
651
|
sentry_items["trace_id"] = transaction.trace_id
|
|
653
|
-
sentry_items["sample_rand"] =
|
|
652
|
+
sentry_items["sample_rand"] = f"{transaction._sample_rand:.6f}" # noqa: E231
|
|
654
653
|
|
|
655
654
|
if options.get("environment"):
|
|
656
655
|
sentry_items["environment"] = options["environment"]
|
|
@@ -724,15 +723,15 @@ class Baggage:
|
|
|
724
723
|
)
|
|
725
724
|
|
|
726
725
|
def _sample_rand(self):
|
|
727
|
-
# type: () -> Optional[
|
|
726
|
+
# type: () -> Optional[float]
|
|
728
727
|
"""Convenience method to get the sample_rand value from the sentry_items.
|
|
729
728
|
|
|
730
|
-
We validate the value and parse it as a
|
|
731
|
-
valid if it is a
|
|
729
|
+
We validate the value and parse it as a float before returning it. The value is considered
|
|
730
|
+
valid if it is a float in the range [0, 1).
|
|
732
731
|
"""
|
|
733
|
-
sample_rand = try_convert(
|
|
732
|
+
sample_rand = try_convert(float, self.sentry_items.get("sample_rand"))
|
|
734
733
|
|
|
735
|
-
if sample_rand is not None and
|
|
734
|
+
if sample_rand is not None and 0.0 <= sample_rand < 1.0:
|
|
736
735
|
return sample_rand
|
|
737
736
|
|
|
738
737
|
return None
|
|
@@ -893,12 +892,25 @@ def get_current_span(scope=None):
|
|
|
893
892
|
return current_span
|
|
894
893
|
|
|
895
894
|
|
|
895
|
+
def set_span_errored(span=None):
|
|
896
|
+
# type: (Optional[Span]) -> None
|
|
897
|
+
"""
|
|
898
|
+
Set the status of the current or given span to ERROR.
|
|
899
|
+
Also sets the status of the transaction (root span) to ERROR.
|
|
900
|
+
"""
|
|
901
|
+
span = span or get_current_span()
|
|
902
|
+
if span is not None:
|
|
903
|
+
span.set_status(SPANSTATUS.ERROR)
|
|
904
|
+
if span.containing_transaction is not None:
|
|
905
|
+
span.containing_transaction.set_status(SPANSTATUS.ERROR)
|
|
906
|
+
|
|
907
|
+
|
|
896
908
|
def _generate_sample_rand(
|
|
897
909
|
trace_id, # type: Optional[str]
|
|
898
910
|
*,
|
|
899
911
|
interval=(0.0, 1.0), # type: tuple[float, float]
|
|
900
912
|
):
|
|
901
|
-
# type: (...) ->
|
|
913
|
+
# type: (...) -> float
|
|
902
914
|
"""Generate a sample_rand value from a trace ID.
|
|
903
915
|
|
|
904
916
|
The generated value will be pseudorandomly chosen from the provided
|
|
@@ -913,19 +925,16 @@ def _generate_sample_rand(
|
|
|
913
925
|
raise ValueError("Invalid interval: lower must be less than upper")
|
|
914
926
|
|
|
915
927
|
rng = Random(trace_id)
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
Decimal("0.000001"),
|
|
927
|
-
rounding=ROUND_DOWN,
|
|
928
|
-
)
|
|
928
|
+
lower_scaled = int(lower * 1_000_000)
|
|
929
|
+
upper_scaled = int(upper * 1_000_000)
|
|
930
|
+
try:
|
|
931
|
+
sample_rand_scaled = rng.randrange(lower_scaled, upper_scaled)
|
|
932
|
+
except ValueError:
|
|
933
|
+
# In some corner cases it might happen that the range is too small
|
|
934
|
+
# In that case, just take the lower bound
|
|
935
|
+
sample_rand_scaled = lower_scaled
|
|
936
|
+
|
|
937
|
+
return sample_rand_scaled / 1_000_000
|
|
929
938
|
|
|
930
939
|
|
|
931
940
|
def _sample_rand_range(parent_sampled, sample_rate):
|
sentry_sdk/utils.py
CHANGED
|
@@ -1934,6 +1934,12 @@ def try_convert(convert_func, value):
|
|
|
1934
1934
|
given function. Return None if the conversion fails, i.e. if the function
|
|
1935
1935
|
raises an exception.
|
|
1936
1936
|
"""
|
|
1937
|
+
try:
|
|
1938
|
+
if isinstance(value, convert_func): # type: ignore
|
|
1939
|
+
return value
|
|
1940
|
+
except TypeError:
|
|
1941
|
+
pass
|
|
1942
|
+
|
|
1937
1943
|
try:
|
|
1938
1944
|
return convert_func(value)
|
|
1939
1945
|
except Exception:
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
sentry_sdk/__init__.py,sha256
|
|
1
|
+
sentry_sdk/__init__.py,sha256=-jRAO-EG4LBj5L20sK01fdMlbtvGf_idy54Eb46EiKQ,1364
|
|
2
2
|
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
6
|
sentry_sdk/_queue.py,sha256=UUzbmliDYmdVYiDA32NMYkX369ElWMFNSj5kodqVQZE,11250
|
|
7
|
-
sentry_sdk/_types.py,sha256=
|
|
7
|
+
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
11
|
sentry_sdk/client.py,sha256=oQcolwFdLvuX4huUaCcpgABy3M5Yb4IhzymlzyrqfkE,38860
|
|
12
|
-
sentry_sdk/consts.py,sha256=
|
|
12
|
+
sentry_sdk/consts.py,sha256=o2sL8csVj4m-XkGOqeXN0C-ZZJcY2yS1qP-EBXfQsN8,50182
|
|
13
13
|
sentry_sdk/debug.py,sha256=ddBehQlAuQC1sg1XO-N4N3diZ0x0iT5RWJwFdrtcsjw,1019
|
|
14
|
-
sentry_sdk/envelope.py,sha256=
|
|
14
|
+
sentry_sdk/envelope.py,sha256=nCUvqVWIVWV-RoVvMgrTNUDfo7h_Z5jU8g90T30wdXE,10360
|
|
15
15
|
sentry_sdk/feature_flags.py,sha256=99JRig6TBkrkBzVCKqYcmVgjsuA_Hk-ul7jFHGhJplc,2233
|
|
16
16
|
sentry_sdk/hub.py,sha256=2QLvEtIYSYV04r8h7VBmQjookILaiBZxZBGTtQKNAWg,25675
|
|
17
17
|
sentry_sdk/logger.py,sha256=HnmkMmOf1hwvxIcPW2qOvIOSnFZ9yRNDBae_eriGsoY,2471
|
|
@@ -20,33 +20,33 @@ sentry_sdk/monitor.py,sha256=52CG1m2e8okFDVoTpbqfm9zeeaLa0ciC_r9x2RiXuDg,3639
|
|
|
20
20
|
sentry_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
sentry_sdk/scope.py,sha256=opbEbR_qWzSj4OCp8vr9Sn-7H11Qe7z4vKY0pjIgA88,63907
|
|
22
22
|
sentry_sdk/scrubber.py,sha256=rENmQ35buugDl269bRZuIAtgr27B9SzisJYUF-691pc,6064
|
|
23
|
-
sentry_sdk/serializer.py,sha256=
|
|
23
|
+
sentry_sdk/serializer.py,sha256=_d7bPzE0EsCsffDCsN9jnhrwfdvu3h5vG-vM6205A5Q,13550
|
|
24
24
|
sentry_sdk/session.py,sha256=TqDVmRKKHUDSmZb4jQR-s8wDt7Fwb6QaG21hawUGWEs,5571
|
|
25
25
|
sentry_sdk/sessions.py,sha256=UZ2jfrqhYvZzTxCDGc1MLD6P_aHLJnTFetSUROIaPaA,9154
|
|
26
26
|
sentry_sdk/spotlight.py,sha256=93kdd8KxdLfcPaxFnFuqHgYAAL4FCfpK1hiiPoD7Ac4,8678
|
|
27
|
-
sentry_sdk/tracing.py,sha256=
|
|
28
|
-
sentry_sdk/tracing_utils.py,sha256=
|
|
27
|
+
sentry_sdk/tracing.py,sha256=QMg5KuP6SI21YS9ufBTpv1LvLCxlFE2YBfF4mHhvVNI,51582
|
|
28
|
+
sentry_sdk/tracing_utils.py,sha256=yeor53ehPe2OWGuIMnk-0v_Q1VvWeNCwJMzETp0qwFo,39312
|
|
29
29
|
sentry_sdk/transport.py,sha256=A0uux7XnniDJuExLudLyyFDYnS5C6r7zozGbkveUM7E,32469
|
|
30
30
|
sentry_sdk/types.py,sha256=NLbnRzww2K3_oGz2GzcC8TdX5L2DXYso1-H1uCv2Hwc,1222
|
|
31
|
-
sentry_sdk/utils.py,sha256=
|
|
31
|
+
sentry_sdk/utils.py,sha256=KubsR-No80YTJ1FYwNQxavYU4hOQyBixevnPsXxNCBc,61705
|
|
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
|
|
35
|
-
sentry_sdk/ai/utils.py,sha256=
|
|
35
|
+
sentry_sdk/ai/utils.py,sha256=CsPNw-N2utLhUfXbT8cCBPlDIyTBNzJQ5aIF18gPdhk,1705
|
|
36
36
|
sentry_sdk/crons/__init__.py,sha256=3Zt6g1-pZZ12uRKKsC8QLm3XgJ4K1VYxgVpNNUygOZY,221
|
|
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=8u7jM0K-emYrV8ukmybQiPzMrD030aSPSGO5A22gSQc,10367
|
|
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
48
|
sentry_sdk/integrations/asgi.py,sha256=zjoOOA5bHlTptRsP3ZU4X5UsluyHFqebsUt3lRfiGtE,12738
|
|
49
|
-
sentry_sdk/integrations/asyncio.py,sha256=
|
|
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
|
|
52
52
|
sentry_sdk/integrations/aws_lambda.py,sha256=WveHWnB_nBsnfLTbaUxih79Ra3Qjv4Jjh-7m2v-gSJs,17954
|
|
@@ -56,8 +56,8 @@ 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=
|
|
59
|
+
sentry_sdk/integrations/cohere.py,sha256=VI5mLukp_CQDt-OFVNgtVqpbY-j-d5UOfD7iPBKu0FU,9401
|
|
60
|
+
sentry_sdk/integrations/dedupe.py,sha256=FMdGQOlL86r4AjiSf4MfzyfEIjkI5b_v3Ko2gOZKkBE,1975
|
|
61
61
|
sentry_sdk/integrations/dramatiq.py,sha256=I09vKWnfiuhdRFCjYYjmE9LOBQvDTPS-KFqf3iHFSsM,5583
|
|
62
62
|
sentry_sdk/integrations/excepthook.py,sha256=tfwpSQuo1b_OmJbNKPPRh90EUjD_OSE4DqqgYY9PVQI,2408
|
|
63
63
|
sentry_sdk/integrations/executing.py,sha256=5lxBAxO5FypY-zTV03AHncGmolmaHd327-3Vrjzskcc,1994
|
|
@@ -66,19 +66,19 @@ sentry_sdk/integrations/fastapi.py,sha256=kicdigHM3MG-GlpLUN6wwH8jOVu4dTuoQD6RBF
|
|
|
66
66
|
sentry_sdk/integrations/flask.py,sha256=t7q73JoJT46RWDtrNImtIloGyDg7CnsNFKpS4gOuBIw,8740
|
|
67
67
|
sentry_sdk/integrations/gcp.py,sha256=u1rSi3nK2ISUQqkRnmKFG23Ks-SefshTf5PV0Dwp3_4,8274
|
|
68
68
|
sentry_sdk/integrations/gnu_backtrace.py,sha256=FL7WkRfHT6idYCSLIrtFQ2G5ZTGoYudCKvBcjR5hqsI,2812
|
|
69
|
-
sentry_sdk/integrations/gql.py,sha256=
|
|
69
|
+
sentry_sdk/integrations/gql.py,sha256=lN5LJNZwUHs_1BQcIrR0adIkgb9YiOh6UtoUG8vCO_Y,4801
|
|
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=mlbcshMs28wv10naLQv-4o1k-ERLgUjRlQsiiH8_DZM,29518
|
|
75
75
|
sentry_sdk/integrations/langgraph.py,sha256=YyDDc14gFCNVuqVmKwX8GRQ17T17WOx2SqqD4IHROPs,11015
|
|
76
76
|
sentry_sdk/integrations/launchdarkly.py,sha256=bvtExuj68xPXZFsQeWTDR-ZBqP087tPuVzP1bNAOZHc,1935
|
|
77
77
|
sentry_sdk/integrations/litestar.py,sha256=jao0f8v5JQagkBg15dUJTdWGPxpS3LmOV301-lwGkGc,11815
|
|
78
78
|
sentry_sdk/integrations/logging.py,sha256=4JC2ehLqd5Tz_rad8YVb9KhZnPcDzLxLh-AjopyNVEc,13905
|
|
79
79
|
sentry_sdk/integrations/loguru.py,sha256=fgivPdQn3rmsMeInUd2wbNlbXPAH9MKhjaqytRVKnsI,6215
|
|
80
80
|
sentry_sdk/integrations/modules.py,sha256=vzLx3Erg77Vl4mnUvAgTg_3teAuWy7zylFpAidBI9I0,820
|
|
81
|
-
sentry_sdk/integrations/openai.py,sha256=
|
|
81
|
+
sentry_sdk/integrations/openai.py,sha256=o41gBELZRVdaPXPrM3FQ7cOn6zIzvdu5hzMIf_nK5_I,24060
|
|
82
82
|
sentry_sdk/integrations/openfeature.py,sha256=-vvdrN4fK0Xhu2ip41bkPIPEqdzv8xzmLu9wRlI2xPA,1131
|
|
83
83
|
sentry_sdk/integrations/pure_eval.py,sha256=OvT76XvllQ_J6ABu3jVNU6KD2QAxnXMtTZ7hqhXNhpY,4581
|
|
84
84
|
sentry_sdk/integrations/pymongo.py,sha256=cPpMGEbXHlV6HTHgmIDL1F-x3w7ZMROXVb4eUhLs3bw,6380
|
|
@@ -97,7 +97,7 @@ sentry_sdk/integrations/statsig.py,sha256=-e57hxHfHo1S13YQKObV65q_UvREyxbR56fnf7
|
|
|
97
97
|
sentry_sdk/integrations/stdlib.py,sha256=vgB9weDGh455vBwmUSgcQRgzViKstu3O0syOthCn_H0,8831
|
|
98
98
|
sentry_sdk/integrations/strawberry.py,sha256=u7Lk4u3sNEycdSmY1nQBzYKmqI-mO8BWKAAJkCSuTRA,14126
|
|
99
99
|
sentry_sdk/integrations/sys_exit.py,sha256=AwShgGBWPdiY25aOWDLRAs2RBUKm5T3CrL-Q-zAk0l4,2493
|
|
100
|
-
sentry_sdk/integrations/threading.py,sha256=
|
|
100
|
+
sentry_sdk/integrations/threading.py,sha256=yzJ2gK9cWg_-gZfAidzktVokGM9fxAijS4nMO_Ev7r0,5394
|
|
101
101
|
sentry_sdk/integrations/tornado.py,sha256=Qcft8FZxdVICnaa1AhsDB262sInEQZPf-pvgI-Agjmc,7206
|
|
102
102
|
sentry_sdk/integrations/trytond.py,sha256=BaLCNqQeRWDbHHDEelS5tmj-p_CrbmtGEHIn6JfzEFE,1651
|
|
103
103
|
sentry_sdk/integrations/typer.py,sha256=FQrFgpR9t6yQWF-oWCI9KJLFioEnA2c_1BEtYV-mPAs,1815
|
|
@@ -124,18 +124,18 @@ sentry_sdk/integrations/grpc/aio/client.py,sha256=csOwlJb7fg9fBnzeNHxr-qpZEmU97I
|
|
|
124
124
|
sentry_sdk/integrations/grpc/aio/server.py,sha256=SCkdikPZRdWyrlnZewsSGpPk4v6AsdSApVAbO-lf_Lk,4019
|
|
125
125
|
sentry_sdk/integrations/openai_agents/__init__.py,sha256=-ydqG0sFIrvJlT9JHO58EZpCAzyy9J59Av8dxn0fHuw,1424
|
|
126
126
|
sentry_sdk/integrations/openai_agents/consts.py,sha256=PTb3vlqkuMPktu21ALK72o5WMIX4-cewTEiTRdHKFdQ,38
|
|
127
|
-
sentry_sdk/integrations/openai_agents/utils.py,sha256=
|
|
127
|
+
sentry_sdk/integrations/openai_agents/utils.py,sha256=NWcko9EphtvirpW_PhZV_l81299QNTouiRZxOKu15rE,5286
|
|
128
128
|
sentry_sdk/integrations/openai_agents/patches/__init__.py,sha256=I7C9JZ70Mf8PV3wPdFsxTqvcYl4TYUgSZYfNU2Spb7Y,231
|
|
129
|
-
sentry_sdk/integrations/openai_agents/patches/agent_run.py,sha256=
|
|
129
|
+
sentry_sdk/integrations/openai_agents/patches/agent_run.py,sha256=GPBV-j8YnHOrJAhdhu_tphe14z7G0-riFVmjFNDgy0s,5773
|
|
130
130
|
sentry_sdk/integrations/openai_agents/patches/models.py,sha256=DtwqCmSsYFlhRZquKM2jiTOnnAg97eyCTtJYZkWqdww,1405
|
|
131
131
|
sentry_sdk/integrations/openai_agents/patches/runner.py,sha256=Fr5tflgadu3fnEThSZauAhrT7BbvemuZelDVGZjleqA,1483
|
|
132
132
|
sentry_sdk/integrations/openai_agents/patches/tools.py,sha256=uAx1GgsiDJBP7jpYW8r_kOImdgzXlwYqK-uhkyP3icI,3255
|
|
133
133
|
sentry_sdk/integrations/openai_agents/spans/__init__.py,sha256=RlVi781zGsvCJBciDO_EbBbwkakwbP9DoFQBbo4VAEE,353
|
|
134
|
-
sentry_sdk/integrations/openai_agents/spans/agent_workflow.py,sha256=
|
|
134
|
+
sentry_sdk/integrations/openai_agents/spans/agent_workflow.py,sha256=fdRSThD31TcoMXFg-2vmqK2YcSws8Yhd0oC6fxOnysM,469
|
|
135
135
|
sentry_sdk/integrations/openai_agents/spans/ai_client.py,sha256=0HG5pT8a06Zgc5JUmRx8p_6bPoQFQLjDrMY_QSQd0_E,1206
|
|
136
|
-
sentry_sdk/integrations/openai_agents/spans/execute_tool.py,sha256=
|
|
136
|
+
sentry_sdk/integrations/openai_agents/spans/execute_tool.py,sha256=tqtDIzaxhxJUE-XEvm2dSyJV65UXJ7Mr23C6NTt6ZJE,1411
|
|
137
137
|
sentry_sdk/integrations/openai_agents/spans/handoff.py,sha256=MBhzy7MpvPGwQTPT5TFcOnmSPiSH_uadQ5wvksueIik,525
|
|
138
|
-
sentry_sdk/integrations/openai_agents/spans/invoke_agent.py,sha256=
|
|
138
|
+
sentry_sdk/integrations/openai_agents/spans/invoke_agent.py,sha256=yyg-wyVZaYMYbaORva_BotNxB9oyK5Dsn8KfQ3Y7OZI,2323
|
|
139
139
|
sentry_sdk/integrations/opentelemetry/__init__.py,sha256=emNL5aAq_NhK0PZmfX_g4GIdvBS6nHqGrjrIgrdC5m8,229
|
|
140
140
|
sentry_sdk/integrations/opentelemetry/consts.py,sha256=fYL6FIAEfnGZGBhFn5X7aRyHxihSPqAKKqMLhf5Gniw,143
|
|
141
141
|
sentry_sdk/integrations/opentelemetry/integration.py,sha256=CWp6hFFMqoR7wcuwTRbRO-1iVch4A6oOB3RuHWeX9GQ,1791
|
|
@@ -157,12 +157,12 @@ sentry_sdk/integrations/spark/__init__.py,sha256=oOewMErnZk2rzNvIlZO6URxQexu9bUJ
|
|
|
157
157
|
sentry_sdk/integrations/spark/spark_driver.py,sha256=mqGQMngDAZWM78lWK5S0FPpmjd1Q65Ta5T4bOH6mNXs,9465
|
|
158
158
|
sentry_sdk/integrations/spark/spark_worker.py,sha256=FGT4yRU2X_iQCC46aasMmvJfYOKmBip8KbDF_wnhvEY,3706
|
|
159
159
|
sentry_sdk/profiler/__init__.py,sha256=3PI3bHk9RSkkOXZKN84DDedk_7M65EiqqaIGo-DYs0E,1291
|
|
160
|
-
sentry_sdk/profiler/continuous_profiler.py,sha256=
|
|
160
|
+
sentry_sdk/profiler/continuous_profiler.py,sha256=7Qb75TaKLNYxMA97wO-qEpDVqxPQWOLUi2rnUm6_Ci0,23066
|
|
161
161
|
sentry_sdk/profiler/transaction_profiler.py,sha256=e3MsUqs-YIp6-nmzpmBYGoWWIF7RyuSGu24Dj-8GXAU,27970
|
|
162
162
|
sentry_sdk/profiler/utils.py,sha256=G5s4tYai9ATJqcHrQ3bOIxlK6jIaHzELrDtU5k3N4HI,6556
|
|
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-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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|