sentry-sdk 2.26.1__py2.py3-none-any.whl → 3.0.0a1__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 -8
- sentry_sdk/_compat.py +0 -1
- sentry_sdk/_init_implementation.py +6 -44
- sentry_sdk/_log_batcher.py +47 -28
- sentry_sdk/_types.py +8 -64
- sentry_sdk/ai/monitoring.py +14 -10
- sentry_sdk/ai/utils.py +1 -1
- sentry_sdk/api.py +69 -163
- sentry_sdk/client.py +25 -72
- sentry_sdk/consts.py +42 -23
- sentry_sdk/debug.py +0 -10
- sentry_sdk/envelope.py +2 -10
- sentry_sdk/feature_flags.py +5 -1
- sentry_sdk/integrations/__init__.py +5 -2
- sentry_sdk/integrations/_asgi_common.py +3 -3
- sentry_sdk/integrations/_wsgi_common.py +11 -40
- sentry_sdk/integrations/aiohttp.py +104 -57
- sentry_sdk/integrations/anthropic.py +10 -7
- sentry_sdk/integrations/arq.py +24 -13
- sentry_sdk/integrations/asgi.py +103 -83
- sentry_sdk/integrations/asyncio.py +1 -0
- sentry_sdk/integrations/asyncpg.py +45 -30
- sentry_sdk/integrations/aws_lambda.py +109 -92
- sentry_sdk/integrations/boto3.py +38 -9
- sentry_sdk/integrations/bottle.py +1 -1
- sentry_sdk/integrations/celery/__init__.py +48 -38
- sentry_sdk/integrations/clickhouse_driver.py +59 -28
- sentry_sdk/integrations/cohere.py +2 -0
- sentry_sdk/integrations/django/__init__.py +25 -46
- sentry_sdk/integrations/django/asgi.py +6 -2
- sentry_sdk/integrations/django/caching.py +13 -22
- sentry_sdk/integrations/django/middleware.py +1 -0
- sentry_sdk/integrations/django/signals_handlers.py +3 -1
- sentry_sdk/integrations/django/templates.py +8 -12
- sentry_sdk/integrations/django/transactions.py +1 -6
- sentry_sdk/integrations/django/views.py +5 -2
- sentry_sdk/integrations/falcon.py +7 -25
- sentry_sdk/integrations/fastapi.py +3 -3
- sentry_sdk/integrations/flask.py +1 -1
- sentry_sdk/integrations/gcp.py +63 -38
- sentry_sdk/integrations/graphene.py +6 -13
- sentry_sdk/integrations/grpc/aio/client.py +14 -8
- sentry_sdk/integrations/grpc/aio/server.py +19 -21
- sentry_sdk/integrations/grpc/client.py +8 -6
- sentry_sdk/integrations/grpc/server.py +12 -14
- sentry_sdk/integrations/httpx.py +47 -12
- sentry_sdk/integrations/huey.py +26 -22
- sentry_sdk/integrations/huggingface_hub.py +1 -0
- sentry_sdk/integrations/langchain.py +22 -15
- sentry_sdk/integrations/launchdarkly.py +3 -3
- sentry_sdk/integrations/litestar.py +4 -2
- sentry_sdk/integrations/logging.py +12 -3
- sentry_sdk/integrations/openai.py +2 -0
- sentry_sdk/integrations/openfeature.py +3 -5
- sentry_sdk/integrations/pymongo.py +18 -25
- sentry_sdk/integrations/pyramid.py +1 -1
- sentry_sdk/integrations/quart.py +3 -3
- sentry_sdk/integrations/ray.py +23 -17
- sentry_sdk/integrations/redis/_async_common.py +30 -18
- sentry_sdk/integrations/redis/_sync_common.py +28 -18
- sentry_sdk/integrations/redis/modules/caches.py +13 -10
- sentry_sdk/integrations/redis/modules/queries.py +14 -11
- sentry_sdk/integrations/redis/rb.py +4 -4
- sentry_sdk/integrations/redis/redis.py +6 -6
- sentry_sdk/integrations/redis/redis_cluster.py +18 -16
- sentry_sdk/integrations/redis/redis_py_cluster_legacy.py +4 -4
- sentry_sdk/integrations/redis/utils.py +63 -19
- sentry_sdk/integrations/rq.py +68 -23
- sentry_sdk/integrations/rust_tracing.py +28 -43
- sentry_sdk/integrations/sanic.py +23 -13
- sentry_sdk/integrations/socket.py +9 -5
- sentry_sdk/integrations/sqlalchemy.py +8 -8
- sentry_sdk/integrations/starlette.py +11 -31
- sentry_sdk/integrations/starlite.py +4 -2
- sentry_sdk/integrations/stdlib.py +56 -9
- sentry_sdk/integrations/strawberry.py +40 -59
- sentry_sdk/integrations/threading.py +10 -26
- sentry_sdk/integrations/tornado.py +57 -18
- sentry_sdk/integrations/trytond.py +4 -1
- sentry_sdk/integrations/unleash.py +2 -3
- sentry_sdk/integrations/wsgi.py +84 -38
- sentry_sdk/opentelemetry/__init__.py +9 -0
- sentry_sdk/opentelemetry/consts.py +33 -0
- sentry_sdk/opentelemetry/contextvars_context.py +73 -0
- sentry_sdk/{integrations/opentelemetry → opentelemetry}/propagator.py +19 -28
- sentry_sdk/opentelemetry/sampler.py +326 -0
- sentry_sdk/opentelemetry/scope.py +218 -0
- sentry_sdk/opentelemetry/span_processor.py +329 -0
- sentry_sdk/opentelemetry/tracing.py +35 -0
- sentry_sdk/opentelemetry/utils.py +476 -0
- sentry_sdk/profiler/__init__.py +0 -40
- sentry_sdk/profiler/continuous_profiler.py +1 -30
- sentry_sdk/profiler/transaction_profiler.py +5 -56
- sentry_sdk/scope.py +107 -351
- sentry_sdk/sessions.py +0 -87
- sentry_sdk/tracing.py +418 -1134
- sentry_sdk/tracing_utils.py +134 -169
- sentry_sdk/transport.py +4 -104
- sentry_sdk/types.py +26 -2
- sentry_sdk/utils.py +169 -152
- {sentry_sdk-2.26.1.dist-info → sentry_sdk-3.0.0a1.dist-info}/METADATA +3 -5
- sentry_sdk-3.0.0a1.dist-info/RECORD +154 -0
- {sentry_sdk-2.26.1.dist-info → sentry_sdk-3.0.0a1.dist-info}/WHEEL +1 -1
- sentry_sdk-3.0.0a1.dist-info/entry_points.txt +2 -0
- sentry_sdk/hub.py +0 -739
- sentry_sdk/integrations/opentelemetry/__init__.py +0 -7
- sentry_sdk/integrations/opentelemetry/consts.py +0 -5
- sentry_sdk/integrations/opentelemetry/integration.py +0 -58
- sentry_sdk/integrations/opentelemetry/span_processor.py +0 -391
- sentry_sdk/metrics.py +0 -965
- sentry_sdk-2.26.1.dist-info/RECORD +0 -152
- sentry_sdk-2.26.1.dist-info/entry_points.txt +0 -2
- {sentry_sdk-2.26.1.dist-info → sentry_sdk-3.0.0a1.dist-info}/licenses/LICENSE +0 -0
- {sentry_sdk-2.26.1.dist-info → sentry_sdk-3.0.0a1.dist-info}/top_level.txt +0 -0
|
@@ -33,7 +33,6 @@ import sys
|
|
|
33
33
|
import threading
|
|
34
34
|
import time
|
|
35
35
|
import uuid
|
|
36
|
-
import warnings
|
|
37
36
|
from abc import ABC, abstractmethod
|
|
38
37
|
from collections import deque
|
|
39
38
|
|
|
@@ -49,7 +48,6 @@ from sentry_sdk.utils import (
|
|
|
49
48
|
is_gevent,
|
|
50
49
|
is_valid_sample_rate,
|
|
51
50
|
logger,
|
|
52
|
-
nanosecond_time,
|
|
53
51
|
set_in_app_in_frames,
|
|
54
52
|
)
|
|
55
53
|
|
|
@@ -127,16 +125,6 @@ def has_profiling_enabled(options):
|
|
|
127
125
|
if profiles_sample_rate is not None and profiles_sample_rate > 0:
|
|
128
126
|
return True
|
|
129
127
|
|
|
130
|
-
profiles_sample_rate = options["_experiments"].get("profiles_sample_rate")
|
|
131
|
-
if profiles_sample_rate is not None:
|
|
132
|
-
logger.warning(
|
|
133
|
-
"_experiments['profiles_sample_rate'] is deprecated. "
|
|
134
|
-
"Please use the non-experimental profiles_sample_rate option "
|
|
135
|
-
"directly."
|
|
136
|
-
)
|
|
137
|
-
if profiles_sample_rate > 0:
|
|
138
|
-
return True
|
|
139
|
-
|
|
140
128
|
return False
|
|
141
129
|
|
|
142
130
|
|
|
@@ -159,16 +147,9 @@ def setup_profiler(options):
|
|
|
159
147
|
else:
|
|
160
148
|
default_profiler_mode = ThreadScheduler.mode
|
|
161
149
|
|
|
150
|
+
profiler_mode = default_profiler_mode
|
|
162
151
|
if options.get("profiler_mode") is not None:
|
|
163
152
|
profiler_mode = options["profiler_mode"]
|
|
164
|
-
else:
|
|
165
|
-
profiler_mode = options.get("_experiments", {}).get("profiler_mode")
|
|
166
|
-
if profiler_mode is not None:
|
|
167
|
-
logger.warning(
|
|
168
|
-
"_experiments['profiler_mode'] is deprecated. Please use the "
|
|
169
|
-
"non-experimental profiler_mode option directly."
|
|
170
|
-
)
|
|
171
|
-
profiler_mode = profiler_mode or default_profiler_mode
|
|
172
153
|
|
|
173
154
|
if (
|
|
174
155
|
profiler_mode == ThreadScheduler.mode
|
|
@@ -210,7 +191,6 @@ class Profile:
|
|
|
210
191
|
self,
|
|
211
192
|
sampled, # type: Optional[bool]
|
|
212
193
|
start_ns, # type: int
|
|
213
|
-
hub=None, # type: Optional[sentry_sdk.Hub]
|
|
214
194
|
scheduler=None, # type: Optional[Scheduler]
|
|
215
195
|
):
|
|
216
196
|
# type: (...) -> None
|
|
@@ -241,16 +221,6 @@ class Profile:
|
|
|
241
221
|
|
|
242
222
|
self.unique_samples = 0
|
|
243
223
|
|
|
244
|
-
# Backwards compatibility with the old hub property
|
|
245
|
-
self._hub = None # type: Optional[sentry_sdk.Hub]
|
|
246
|
-
if hub is not None:
|
|
247
|
-
self._hub = hub
|
|
248
|
-
warnings.warn(
|
|
249
|
-
"The `hub` parameter is deprecated. Please do not use it.",
|
|
250
|
-
DeprecationWarning,
|
|
251
|
-
stacklevel=2,
|
|
252
|
-
)
|
|
253
|
-
|
|
254
224
|
def update_active_thread_id(self):
|
|
255
225
|
# type: () -> None
|
|
256
226
|
self.active_thread_id = get_current_thread_meta()[0]
|
|
@@ -296,12 +266,11 @@ class Profile:
|
|
|
296
266
|
|
|
297
267
|
options = client.options
|
|
298
268
|
|
|
269
|
+
sample_rate = None
|
|
299
270
|
if callable(options.get("profiles_sampler")):
|
|
300
271
|
sample_rate = options["profiles_sampler"](sampling_context)
|
|
301
272
|
elif options["profiles_sample_rate"] is not None:
|
|
302
273
|
sample_rate = options["profiles_sample_rate"]
|
|
303
|
-
else:
|
|
304
|
-
sample_rate = options["_experiments"].get("profiles_sample_rate")
|
|
305
274
|
|
|
306
275
|
# The profiles_sample_rate option was not set, so profiling
|
|
307
276
|
# was never enabled.
|
|
@@ -342,7 +311,7 @@ class Profile:
|
|
|
342
311
|
logger.debug("[Profiling] Starting profile")
|
|
343
312
|
self.active = True
|
|
344
313
|
if not self.start_ns:
|
|
345
|
-
self.start_ns =
|
|
314
|
+
self.start_ns = time.perf_counter_ns()
|
|
346
315
|
self.scheduler.start_profiling(self)
|
|
347
316
|
|
|
348
317
|
def stop(self):
|
|
@@ -353,7 +322,7 @@ class Profile:
|
|
|
353
322
|
assert self.scheduler, "No scheduler specified"
|
|
354
323
|
logger.debug("[Profiling] Stopping profile")
|
|
355
324
|
self.active = False
|
|
356
|
-
self.stop_ns =
|
|
325
|
+
self.stop_ns = time.perf_counter_ns()
|
|
357
326
|
|
|
358
327
|
def __enter__(self):
|
|
359
328
|
# type: () -> Profile
|
|
@@ -517,26 +486,6 @@ class Profile:
|
|
|
517
486
|
|
|
518
487
|
return True
|
|
519
488
|
|
|
520
|
-
@property
|
|
521
|
-
def hub(self):
|
|
522
|
-
# type: () -> Optional[sentry_sdk.Hub]
|
|
523
|
-
warnings.warn(
|
|
524
|
-
"The `hub` attribute is deprecated. Please do not access it.",
|
|
525
|
-
DeprecationWarning,
|
|
526
|
-
stacklevel=2,
|
|
527
|
-
)
|
|
528
|
-
return self._hub
|
|
529
|
-
|
|
530
|
-
@hub.setter
|
|
531
|
-
def hub(self, value):
|
|
532
|
-
# type: (Optional[sentry_sdk.Hub]) -> None
|
|
533
|
-
warnings.warn(
|
|
534
|
-
"The `hub` attribute is deprecated. Please do not set it.",
|
|
535
|
-
DeprecationWarning,
|
|
536
|
-
stacklevel=2,
|
|
537
|
-
)
|
|
538
|
-
self._hub = value
|
|
539
|
-
|
|
540
489
|
|
|
541
490
|
class Scheduler(ABC):
|
|
542
491
|
mode = "unknown" # type: ProfilerMode
|
|
@@ -612,7 +561,7 @@ class Scheduler(ABC):
|
|
|
612
561
|
# were started after this point.
|
|
613
562
|
new_profiles = len(self.new_profiles)
|
|
614
563
|
|
|
615
|
-
now =
|
|
564
|
+
now = time.perf_counter_ns()
|
|
616
565
|
|
|
617
566
|
try:
|
|
618
567
|
sample = [
|