sentry-sdk 2.64.0__tar.gz → 2.65.0__tar.gz
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.
- {sentry_sdk-2.64.0/sentry_sdk.egg-info → sentry_sdk-2.65.0}/PKG-INFO +6 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/README.md +5 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/pyproject.toml +9 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_types.py +54 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/client.py +22 -3
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/consts.py +22 -2
- sentry_sdk-2.65.0/sentry_sdk/data_collection.py +261 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/arq.py +8 -2
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/middleware.py +32 -7
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/dramatiq.py +5 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/huey.py +5 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/mcp.py +16 -16
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/rq.py +8 -5
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/starlette.py +30 -23
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/starlite.py +1 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/scope.py +37 -9
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/traces.py +34 -16
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/tracing_utils.py +36 -14
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/utils.py +7 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0/sentry_sdk.egg-info}/PKG-INFO +6 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk.egg-info/SOURCES.txt +3 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/setup.py +1 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/conftest.py +1 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/arq/test_arq.py +9 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/asgi/test_asgi.py +47 -0
- sentry_sdk-2.65.0/tests/integrations/django/myapp/middleware.py +81 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/dramatiq/test_dramatiq.py +9 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/huey/test_huey.py +12 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/langchain/test_langchain.py +2 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/openai/test_openai.py +2 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/openai_agents/test_openai_agents.py +26 -1
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/ray/test_ray.py +21 -5
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/rq/test_rq.py +5 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/starlette/test_starlette.py +42 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/stdlib/test_httplib.py +28 -12
- sentry_sdk-2.65.0/tests/test_data_collection.py +334 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_scope.py +37 -0
- sentry_sdk-2.65.0/tests/tracing/test_conversation_id.py +185 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_decorator.py +261 -3
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_http_headers.py +21 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_misc.py +80 -187
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_propagation.py +19 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_sample_rand_propagation.py +36 -0
- sentry_sdk-2.65.0/tests/tracing/test_sampling.py +683 -0
- sentry_sdk-2.65.0/tests/tracing/test_span_origin.py +76 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_span_streaming.py +237 -256
- sentry_sdk-2.64.0/tests/integrations/django/myapp/middleware.py +0 -31
- sentry_sdk-2.64.0/tests/tracing/test_sampling.py +0 -324
- sentry_sdk-2.64.0/tests/tracing/test_span_origin.py +0 -38
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/LICENSE +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/MANIFEST.in +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_batcher.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_compat.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_init_implementation.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_log_batcher.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_lru_cache.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_metrics_batcher.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_queue.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_span_batcher.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/_werkzeug.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/ai/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/ai/_openai_completions_api.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/ai/_openai_responses_api.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/ai/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/ai/monitoring.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/ai/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/api.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/attachments.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/crons/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/crons/api.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/crons/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/crons/decorator.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/debug.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/envelope.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/feature_flags.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/hub.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/_asgi_common.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/_wsgi_common.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/aiohttp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/aiomysql.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/anthropic.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/argv.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/ariadne.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/asgi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/asyncio.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/asyncpg.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/atexit.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/aws_lambda.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/beam.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/boto3.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/bottle.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/celery/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/celery/beat.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/celery/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/chalice.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/clickhouse_driver.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/cloud_resource_context.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/cohere.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/dedupe.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/asgi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/caching.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/signals_handlers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/tasks.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/templates.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/transactions.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/django/views.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/excepthook.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/executing.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/falcon.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/fastapi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/flask.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/gcp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/gnu_backtrace.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/google_genai/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/google_genai/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/google_genai/streaming.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/google_genai/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/gql.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/graphene.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/grpc/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/grpc/aio/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/grpc/aio/client.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/grpc/aio/server.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/grpc/client.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/grpc/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/grpc/server.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/httpx.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/httpx2.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/huggingface_hub.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/langchain.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/langgraph.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/launchdarkly.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/litellm.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/litestar.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/logging.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/loguru.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/modules.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/patches/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/patches/agent_run.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/patches/error_tracing.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/patches/models.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/patches/runner.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/patches/tools.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/spans/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/spans/agent_workflow.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/spans/ai_client.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/spans/execute_tool.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/spans/handoff.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/spans/invoke_agent.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openai_agents/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/openfeature.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/opentelemetry/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/opentelemetry/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/opentelemetry/integration.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/opentelemetry/propagator.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/opentelemetry/span_processor.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/otlp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pure_eval.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/patches/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/patches/agent_run.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/patches/graph_nodes.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/patches/tools.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/spans/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/spans/ai_client.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/spans/execute_tool.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/spans/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pydantic_ai/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pymongo.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pyramid.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/pyreqwest.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/quart.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/ray.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/_async_common.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/_sync_common.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/consts.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/modules/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/modules/caches.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/modules/queries.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/rb.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/redis.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/redis_cluster.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/redis_py_cluster_legacy.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/redis/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/rust_tracing.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/sanic.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/serverless.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/socket.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/spark/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/spark/spark_driver.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/spark/spark_worker.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/sqlalchemy.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/statsig.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/stdlib.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/strawberry.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/sys_exit.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/threading.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/tornado.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/trytond.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/typer.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/unleash.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/unraisablehook.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/integrations/wsgi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/logger.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/metrics.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/monitor.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/profiler/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/profiler/continuous_profiler.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/profiler/transaction_profiler.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/profiler/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/py.typed +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/scrubber.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/serializer.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/session.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/sessions.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/spotlight.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/tracing.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/transport.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/types.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk/worker.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk.egg-info/dependency_links.txt +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk.egg-info/entry_points.txt +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk.egg-info/not-zip-safe +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk.egg-info/requires.txt +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/sentry_sdk.egg-info/top_level.txt +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/setup.cfg +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aiohttp/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aiohttp/aiohttp_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aiohttp/aiohttp_helpers/helpers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aiohttp/test_aiohttp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aiomysql/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aiomysql/test_aiomysql.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/anthropic/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/anthropic/test_anthropic.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/argv/test_argv.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/ariadne/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/ariadne/test_ariadne.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/arq/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asgi/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asgi/test_asgi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asyncio/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asyncio/test_asyncio.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asyncpg/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asyncpg/asyncpg_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asyncpg/asyncpg_helpers/helpers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/asyncpg/test_asyncpg.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions/BasicException/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions/BasicOk/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions/InitError/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions/TimeoutError/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreaming/.gitignore +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreaming/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingPii/.gitignore +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingPii/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceDisabled/.gitignore +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceDisabled/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceEnabled/.gitignore +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceEnabled/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorSpanStreaming/.gitignore +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorSpanStreaming/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TimeoutErrorScopeModified/.gitignore +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TimeoutErrorScopeModified/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TracesSampler/.gitignore +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TracesSampler/index.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/test_aws_lambda.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/aws_lambda/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/beam/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/beam/test_beam.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/boto3/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/boto3/aws_mock.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/boto3/s3_list.xml +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/boto3/test_s3.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/bottle/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/bottle/test_bottle.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/celery/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/celery/integration_tests/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/celery/integration_tests/test_celery_beat_cron_monitoring.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/celery/test_celery.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/celery/test_celery_beat_crons.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/celery/test_update_celery_task_headers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/chalice/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/chalice/test_chalice.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/clickhouse_driver/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/clickhouse_driver/test_clickhouse_driver.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/cloud_resource_context/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/cloud_resource_context/test_cloud_resource_context.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/cohere/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/cohere/test_cohere.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/conftest.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/asgi/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/asgi/image.png +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/django_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/django_helpers/views.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/asgi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/custom_urls.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/manage.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/management/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/management/commands/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/management/commands/mycrash.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/routing.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/settings.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/signals.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/templates/error.html +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/templates/trace_meta.html +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/templates/user_name.html +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/urls.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/views.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/myapp/wsgi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_basic.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_cache_module.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_data_scrubbing.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_db_query_data.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_db_transactions.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_middleware.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_tasks.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/test_transactions.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/django/utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/dramatiq/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/excepthook/test_excepthook.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/falcon/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/falcon/test_falcon.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/fastapi/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/fastapi/photo.jpg +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/fastapi/test_fastapi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/fastmcp/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/fastmcp/test_fastmcp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/flask/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/flask/test_flask.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/gcp/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/gcp/test_gcp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/google_genai/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/google_genai/test_google_genai.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/gql/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/gql/test_gql.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/graphene/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/graphene/test_graphene.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/compile_test_services.sh +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/grpc_test_service_pb2.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/grpc_test_service_pb2.pyi +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/grpc_test_service_pb2_grpc.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/protos/grpc_test_service.proto +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/test_grpc.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/grpc/test_grpc_aio.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx/httpx_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx/httpx_helpers/helpers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx/test_httpx.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx2/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx2/httpx2_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx2/httpx2_helpers/helpers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/httpx2/test_httpx2.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/huey/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/huggingface_hub/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/huggingface_hub/test_huggingface_hub.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/langchain/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/langgraph/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/langgraph/test_langgraph.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/launchdarkly/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/launchdarkly/test_launchdarkly.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/litellm/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/litellm/test_litellm.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/litestar/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/litestar/test_litestar.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/logging/test_logging.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/loguru/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/loguru/test_loguru.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/mcp/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/mcp/test_mcp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/modules/test_modules.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/openai/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/openai_agents/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/openfeature/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/openfeature/test_openfeature.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/opentelemetry/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/opentelemetry/test_entry_points.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/opentelemetry/test_experimental.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/opentelemetry/test_propagator.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/opentelemetry/test_span_processor.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/otlp/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/otlp/test_otlp.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pure_eval/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pure_eval/test_pure_eval.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pydantic_ai/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pydantic_ai/test_pydantic_ai.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pymongo/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pymongo/test_pymongo.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pyramid/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pyramid/test_pyramid.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pyreqwest/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pyreqwest/pyreqwest_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pyreqwest/pyreqwest_helpers/helpers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/pyreqwest/test_pyreqwest.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/quart/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/quart/test_quart.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/ray/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/asyncio/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/asyncio/test_redis_asyncio.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/cluster/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/cluster/test_redis_cluster.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/cluster_asyncio/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/cluster_asyncio/test_redis_cluster_asyncio.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/test_redis.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/test_redis_cache_module.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis/test_redis_cache_module_async.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis_py_cluster_legacy/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/redis_py_cluster_legacy/test_redis_py_cluster_legacy.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/requests/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/requests/test_requests.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/rq/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/rust_tracing/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/rust_tracing/test_rust_tracing.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/sanic/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/sanic/test_sanic.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/serverless/test_serverless.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/socket/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/socket/test_socket.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/spark/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/spark/test_spark.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/sqlalchemy/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/sqlalchemy/sqlalchemy_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/sqlalchemy/sqlalchemy_helpers/helpers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/sqlalchemy/test_sqlalchemy.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/starlette/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/starlette/photo.jpg +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/starlette/templates/trace_meta.html +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/starlite/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/starlite/test_starlite.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/statsig/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/statsig/test_statsig.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/stdlib/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/stdlib/httplib_helpers/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/stdlib/httplib_helpers/helpers.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/stdlib/test_subprocess.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/strawberry/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/strawberry/test_strawberry.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/sys_exit/test_sys_exit.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/test_gnu_backtrace.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/threading/test_threading.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/tornado/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/tornado/test_tornado.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/trytond/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/trytond/test_trytond.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/typer/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/typer/test_typer.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/unleash/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/unleash/test_unleash.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/unleash/testutils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/unraisablehook/test_unraisablehook.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/integrations/wsgi/test_wsgi.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/new_scopes_compat/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/new_scopes_compat/conftest.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/new_scopes_compat/test_new_scopes_compat.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/new_scopes_compat/test_new_scopes_compat_event.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/profiler/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/profiler/test_continuous_profiler.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/profiler/test_transaction_profiler.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test.key +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test.pem +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_ai_integration_deactivation.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_ai_monitoring.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_api.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_attributes.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_basics.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_client.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_conftest.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_crons.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_dsc.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_envelope.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_exceptiongroup.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_feature_flags.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_full_stack_frames.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_gevent.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_import.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_logs.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_lru_cache.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_metrics.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_monitor.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_propagationcontext.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_scrubber.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_serializer.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_sessions.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_shadowed_module.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_spotlight.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_tracing_utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_transport.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_types.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/test_utils.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_baggage.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_deprecated.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_ignore_status_codes.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_integration_tests.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_noop_span.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_sample_rand.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_span_batcher.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/tracing/test_span_name.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/utils/__init__.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/utils/test_contextvars.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/utils/test_general.py +0 -0
- {sentry_sdk-2.64.0 → sentry_sdk-2.65.0}/tests/utils/test_transaction.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sentry-sdk
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.65.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
|
|
@@ -193,6 +193,11 @@ sentry_sdk.init(
|
|
|
193
193
|
# Set traces_sample_rate to 1.0 to capture 100%
|
|
194
194
|
# of traces for performance monitoring.
|
|
195
195
|
traces_sample_rate=1.0,
|
|
196
|
+
|
|
197
|
+
# To disable sending user data and HTTP request/response bodies, uncomment
|
|
198
|
+
# the line below. For more info visit:
|
|
199
|
+
# https://docs.sentry.io/platforms/python/configuration/options/#data_collection
|
|
200
|
+
# data_collection={"user_info": False, "http_bodies": []},
|
|
196
201
|
)
|
|
197
202
|
```
|
|
198
203
|
|
|
@@ -49,6 +49,11 @@ sentry_sdk.init(
|
|
|
49
49
|
# Set traces_sample_rate to 1.0 to capture 100%
|
|
50
50
|
# of traces for performance monitoring.
|
|
51
51
|
traces_sample_rate=1.0,
|
|
52
|
+
|
|
53
|
+
# To disable sending user data and HTTP request/response bodies, uncomment
|
|
54
|
+
# the line below. For more info visit:
|
|
55
|
+
# https://docs.sentry.io/platforms/python/configuration/options/#data_collection
|
|
56
|
+
# data_collection={"user_info": False, "http_bodies": []},
|
|
52
57
|
)
|
|
53
58
|
```
|
|
54
59
|
|
|
@@ -67,6 +67,15 @@ typing = [
|
|
|
67
67
|
"httpx2",
|
|
68
68
|
"botocore-stubs",
|
|
69
69
|
"werkzeug",
|
|
70
|
+
"mcp>=2.0.0b1",
|
|
71
|
+
"starlette>=1.3.1",
|
|
72
|
+
"python-multipart>=0.0.32",
|
|
73
|
+
"pydantic>=2.13.4",
|
|
74
|
+
]
|
|
75
|
+
test = [
|
|
76
|
+
"dataclasses ; python_full_version < '3.7'",
|
|
77
|
+
"pytest>=6.0.0",
|
|
78
|
+
"pytest-cov",
|
|
70
79
|
]
|
|
71
80
|
|
|
72
81
|
#
|
|
@@ -141,7 +141,7 @@ if TYPE_CHECKING:
|
|
|
141
141
|
from collections.abc import Container, MutableMapping, Sequence
|
|
142
142
|
from datetime import datetime
|
|
143
143
|
from types import TracebackType
|
|
144
|
-
from typing import Any, Callable, Dict, Mapping, NotRequired, Optional, Type
|
|
144
|
+
from typing import Any, Callable, Dict, List, Mapping, NotRequired, Optional, Type
|
|
145
145
|
|
|
146
146
|
from typing_extensions import Literal, TypedDict
|
|
147
147
|
|
|
@@ -152,6 +152,59 @@ if TYPE_CHECKING:
|
|
|
152
152
|
version: str
|
|
153
153
|
packages: "Sequence[Mapping[str, str]]"
|
|
154
154
|
|
|
155
|
+
class KeyValueCollectionBehaviour(TypedDict):
|
|
156
|
+
mode: 'Literal["off", "denylist", "allowlist"]'
|
|
157
|
+
terms: "NotRequired[List[str]]"
|
|
158
|
+
|
|
159
|
+
class GenAICollectionUserOptions(TypedDict, total=False):
|
|
160
|
+
inputs: bool
|
|
161
|
+
outputs: bool
|
|
162
|
+
|
|
163
|
+
class GenAICollectionBehaviour(TypedDict):
|
|
164
|
+
inputs: bool
|
|
165
|
+
outputs: bool
|
|
166
|
+
|
|
167
|
+
class GraphQLCollectionUserOptions(TypedDict, total=False):
|
|
168
|
+
document: bool
|
|
169
|
+
variables: bool
|
|
170
|
+
|
|
171
|
+
class GraphQLCollectionBehaviour(TypedDict):
|
|
172
|
+
document: bool
|
|
173
|
+
variables: bool
|
|
174
|
+
|
|
175
|
+
class HttpHeadersCollectionUserOptions(TypedDict, total=False):
|
|
176
|
+
request: "KeyValueCollectionBehaviour"
|
|
177
|
+
|
|
178
|
+
class HttpHeadersCollectionBehaviour(TypedDict):
|
|
179
|
+
request: "KeyValueCollectionBehaviour"
|
|
180
|
+
|
|
181
|
+
class DataCollectionUserOptions(TypedDict, total=False):
|
|
182
|
+
user_info: bool
|
|
183
|
+
cookies: "KeyValueCollectionBehaviour"
|
|
184
|
+
http_headers: "HttpHeadersCollectionUserOptions"
|
|
185
|
+
http_bodies: "List[str]"
|
|
186
|
+
query_params: "KeyValueCollectionBehaviour"
|
|
187
|
+
graphql: "GraphQLCollectionUserOptions"
|
|
188
|
+
gen_ai: "GenAICollectionUserOptions"
|
|
189
|
+
database_query_data: bool
|
|
190
|
+
queues: bool
|
|
191
|
+
stack_frame_variables: bool
|
|
192
|
+
frame_context_lines: int
|
|
193
|
+
|
|
194
|
+
class DataCollection(TypedDict):
|
|
195
|
+
provided_by_user: bool
|
|
196
|
+
user_info: bool
|
|
197
|
+
cookies: "KeyValueCollectionBehaviour"
|
|
198
|
+
http_headers: "HttpHeadersCollectionBehaviour"
|
|
199
|
+
http_bodies: "List[str]"
|
|
200
|
+
query_params: "KeyValueCollectionBehaviour"
|
|
201
|
+
graphql: "GraphQLCollectionBehaviour"
|
|
202
|
+
gen_ai: "GenAICollectionBehaviour"
|
|
203
|
+
database_query_data: bool
|
|
204
|
+
queues: bool
|
|
205
|
+
stack_frame_variables: bool
|
|
206
|
+
frame_context_lines: int
|
|
207
|
+
|
|
155
208
|
# "critical" is an alias of "fatal" recognized by Relay
|
|
156
209
|
LogLevelStr = Literal["fatal", "critical", "error", "warning", "info", "debug"]
|
|
157
210
|
|
|
@@ -23,6 +23,10 @@ from sentry_sdk.consts import (
|
|
|
23
23
|
VERSION,
|
|
24
24
|
ClientConstructor,
|
|
25
25
|
)
|
|
26
|
+
from sentry_sdk.data_collection import (
|
|
27
|
+
_map_from_send_default_pii,
|
|
28
|
+
_resolve_data_collection,
|
|
29
|
+
)
|
|
26
30
|
from sentry_sdk.envelope import Envelope, Item, PayloadRef
|
|
27
31
|
from sentry_sdk.integrations import _DEFAULT_INTEGRATIONS, setup_integrations
|
|
28
32
|
from sentry_sdk.integrations.dedupe import DedupeIntegration
|
|
@@ -345,11 +349,13 @@ def _get_options(*args: "Optional[str]", **kwargs: "Any") -> "Dict[str, Any]":
|
|
|
345
349
|
if rv["enable_tracing"] is True and rv["traces_sample_rate"] is None:
|
|
346
350
|
rv["traces_sample_rate"] = 1.0
|
|
347
351
|
|
|
352
|
+
rv["data_collection"] = _resolve_data_collection(rv)
|
|
353
|
+
|
|
348
354
|
if rv["event_scrubber"] is None:
|
|
349
355
|
rv["event_scrubber"] = EventScrubber(
|
|
350
|
-
send_default_pii=
|
|
351
|
-
|
|
352
|
-
|
|
356
|
+
send_default_pii=False
|
|
357
|
+
if rv["send_default_pii"] is None
|
|
358
|
+
else rv["send_default_pii"]
|
|
353
359
|
)
|
|
354
360
|
|
|
355
361
|
if rv["socket_options"] and not isinstance(rv["socket_options"], list):
|
|
@@ -614,6 +620,19 @@ class _Client(BaseClient):
|
|
|
614
620
|
self.options["error_sampler"] = sample_all
|
|
615
621
|
self.options["traces_sampler"] = sample_all
|
|
616
622
|
self.options["profiles_sampler"] = sample_all
|
|
623
|
+
# data_collection was resolved in _get_options() before this
|
|
624
|
+
# spotlight override flipped send_default_pii on. Re-derive it so
|
|
625
|
+
# data_collection agrees with should_send_default_pii() in
|
|
626
|
+
# DSN-less spotlight mode (only when the user did not set
|
|
627
|
+
# data_collection explicitly).
|
|
628
|
+
if not self.options["data_collection"]["provided_by_user"]:
|
|
629
|
+
self.options["data_collection"] = _map_from_send_default_pii(
|
|
630
|
+
send_default_pii=True,
|
|
631
|
+
include_local_variables=self.options["include_local_variables"]
|
|
632
|
+
is not False,
|
|
633
|
+
include_source_context=self.options["include_source_context"]
|
|
634
|
+
is not False,
|
|
635
|
+
)
|
|
617
636
|
|
|
618
637
|
self.session_flusher = SessionFlusher(capture_func=_capture_envelope)
|
|
619
638
|
|
|
@@ -45,6 +45,7 @@ if TYPE_CHECKING:
|
|
|
45
45
|
from sentry_sdk._types import (
|
|
46
46
|
BreadcrumbProcessor,
|
|
47
47
|
ContinuousProfilerMode,
|
|
48
|
+
DataCollectionUserOptions,
|
|
48
49
|
Event,
|
|
49
50
|
EventProcessor,
|
|
50
51
|
Hint,
|
|
@@ -86,6 +87,7 @@ if TYPE_CHECKING:
|
|
|
86
87
|
Callable[[SpanJSON, Hint], Optional[SpanJSON]]
|
|
87
88
|
],
|
|
88
89
|
"suppress_asgi_chained_exceptions": Optional[bool],
|
|
90
|
+
"data_collection": Optional[DataCollectionUserOptions],
|
|
89
91
|
},
|
|
90
92
|
total=False,
|
|
91
93
|
)
|
|
@@ -1755,7 +1757,25 @@ class ClientConstructor:
|
|
|
1755
1757
|
:param stream_gen_ai_spans: When set, generative AI spans are sent in a new transport format to
|
|
1756
1758
|
reduce downstream data loss.
|
|
1757
1759
|
|
|
1758
|
-
:param _experiments:
|
|
1760
|
+
:param _experiments: Dictionary of experimental, opt-in features that are not yet stable.
|
|
1761
|
+
|
|
1762
|
+
``data_collection`` (EXPERIMENTAL): structured configuration controlling what data integrations
|
|
1763
|
+
collect automatically, superseding `send_default_pii`. Passing a dict under
|
|
1764
|
+
`_experiments={"data_collection": {...}}` opts into the feature; omitted fields use their
|
|
1765
|
+
defaults (most categories are collected, with the sensitive denylist scrubbing values).
|
|
1766
|
+
When it is not set, the SDK derives behaviour from `send_default_pii` so that upgrading
|
|
1767
|
+
changes nothing. Restrict collection per category (user identity, cookies, HTTP
|
|
1768
|
+
headers/bodies, query params, generative AI inputs/outputs, stack frame variables, source
|
|
1769
|
+
context). If `send_default_pii` is also set, `data_collection` takes precedence.
|
|
1770
|
+
|
|
1771
|
+
Example::
|
|
1772
|
+
|
|
1773
|
+
sentry_sdk.init(
|
|
1774
|
+
dsn="...",
|
|
1775
|
+
_experiments={"data_collection": {"user_info": False, "http_bodies": []}},
|
|
1776
|
+
)
|
|
1777
|
+
|
|
1778
|
+
See https://docs.sentry.io/platforms/python/configuration/options/#data_collection for more details.
|
|
1759
1779
|
"""
|
|
1760
1780
|
pass
|
|
1761
1781
|
|
|
@@ -1779,4 +1799,4 @@ DEFAULT_OPTIONS = _get_default_options()
|
|
|
1779
1799
|
del _get_default_options
|
|
1780
1800
|
|
|
1781
1801
|
|
|
1782
|
-
VERSION = "2.
|
|
1802
|
+
VERSION = "2.65.0"
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Data Collection configuration.
|
|
3
|
+
|
|
4
|
+
Implements the ``data_collection`` client option described in the Sentry SDK
|
|
5
|
+
"Data Collection" spec
|
|
6
|
+
(https://develop.sentry.dev/sdk/foundations/client/data-collection/).
|
|
7
|
+
|
|
8
|
+
``data_collection`` supersedes the single ``send_default_pii`` boolean with a
|
|
9
|
+
structured configuration that lets users enable or restrict automatically
|
|
10
|
+
collected data by category (user identity, cookies, HTTP headers, query params,
|
|
11
|
+
HTTP bodies, generative AI inputs/outputs, stack frame variables, source
|
|
12
|
+
context).
|
|
13
|
+
|
|
14
|
+
Resolution precedence (see :func:`_resolve_data_collection`):
|
|
15
|
+
|
|
16
|
+
* ``data_collection`` set, ``send_default_pii`` unset -> honour ``data_collection``
|
|
17
|
+
using the spec defaults for any omitted field.
|
|
18
|
+
* ``send_default_pii`` set, ``data_collection`` unset -> derive a
|
|
19
|
+
resolved ``DataCollection`` that mirrors what ``send_default_pii`` collects today.
|
|
20
|
+
* neither set -> treated as ``send_default_pii=False``.
|
|
21
|
+
* both set -> ``data_collection`` wins (it is the single source of truth); a
|
|
22
|
+
``DeprecationWarning`` is emitted for ``send_default_pii``.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
import warnings
|
|
26
|
+
from typing import TYPE_CHECKING, cast
|
|
27
|
+
|
|
28
|
+
if TYPE_CHECKING:
|
|
29
|
+
from typing import Any, Dict, Literal
|
|
30
|
+
|
|
31
|
+
from sentry_sdk._types import (
|
|
32
|
+
DataCollection,
|
|
33
|
+
GenAICollectionBehaviour,
|
|
34
|
+
GraphQLCollectionBehaviour,
|
|
35
|
+
HttpHeadersCollectionBehaviour,
|
|
36
|
+
KeyValueCollectionBehaviour,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
# ``http_bodies`` defaults to this (collect everything the
|
|
40
|
+
# platform supports); an empty list is the explicit opt-out.
|
|
41
|
+
# response bodyies are not included here because we don't
|
|
42
|
+
# currently capture them (as of Jul 7 2026)
|
|
43
|
+
_ALL_HTTP_BODY_TYPES = [
|
|
44
|
+
"incoming_request",
|
|
45
|
+
"outgoing_request",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
# Default number of source lines captured above and below a stack frame.
|
|
49
|
+
_DEFAULT_FRAME_CONTEXT_LINES = 5
|
|
50
|
+
|
|
51
|
+
# Collection modes for key-value data (cookies, headers, query params).
|
|
52
|
+
# snake_case (Python-only deviation from the spec's camelCase); never
|
|
53
|
+
# serialized to Sentry.
|
|
54
|
+
_VALID_KEY_VALUE_COLLECTION_BEHAVIOUR_MODES = ("off", "denylist", "allowlist")
|
|
55
|
+
|
|
56
|
+
# Values of keys that contain any of
|
|
57
|
+
# these terms (partial, case-insensitive) are always replaced with
|
|
58
|
+
# ``"[Filtered]"`` regardless of the configured collection mode.
|
|
59
|
+
_SENSITIVE_DENYLIST = [
|
|
60
|
+
"auth",
|
|
61
|
+
"token",
|
|
62
|
+
"secret",
|
|
63
|
+
"password",
|
|
64
|
+
"passwd",
|
|
65
|
+
"pwd",
|
|
66
|
+
"key",
|
|
67
|
+
"jwt",
|
|
68
|
+
"bearer",
|
|
69
|
+
"sso",
|
|
70
|
+
"saml",
|
|
71
|
+
"csrf",
|
|
72
|
+
"xsrf",
|
|
73
|
+
"credentials",
|
|
74
|
+
"session",
|
|
75
|
+
"sid",
|
|
76
|
+
"identity",
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _map_from_send_default_pii(
|
|
81
|
+
*,
|
|
82
|
+
send_default_pii: bool,
|
|
83
|
+
include_local_variables: bool,
|
|
84
|
+
include_source_context: bool,
|
|
85
|
+
) -> "DataCollection":
|
|
86
|
+
"""
|
|
87
|
+
Build a fully-resolved ``DataCollection`` dict that mirrors the data
|
|
88
|
+
``send_default_pii`` collects today. Used when ``data_collection`` is not
|
|
89
|
+
provided explicitly.
|
|
90
|
+
"""
|
|
91
|
+
kv_mode: "Literal['denylist', 'off']" = "denylist" if send_default_pii else "off"
|
|
92
|
+
terms = [] if send_default_pii else ["forwarded", "-ip", "remote-", "via", "-user"]
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
"provided_by_user": False,
|
|
96
|
+
"user_info": send_default_pii,
|
|
97
|
+
"cookies": {"mode": kv_mode, "terms": terms},
|
|
98
|
+
# Headers are collected in both PII modes today (sensitive ones filtered
|
|
99
|
+
# when PII is off), so this never maps to "off".
|
|
100
|
+
"http_headers": {
|
|
101
|
+
"request": {"mode": "denylist", "terms": terms},
|
|
102
|
+
},
|
|
103
|
+
# Bodies are collected regardless of PII today, bounded by
|
|
104
|
+
# ``max_request_body_size``.
|
|
105
|
+
"http_bodies": list(_ALL_HTTP_BODY_TYPES),
|
|
106
|
+
"query_params": {"mode": kv_mode, "terms": terms},
|
|
107
|
+
"graphql": {"document": send_default_pii, "variables": send_default_pii},
|
|
108
|
+
"gen_ai": {"inputs": send_default_pii, "outputs": send_default_pii},
|
|
109
|
+
"database_query_data": send_default_pii,
|
|
110
|
+
"queues": send_default_pii,
|
|
111
|
+
"stack_frame_variables": include_local_variables,
|
|
112
|
+
"frame_context_lines": (
|
|
113
|
+
_DEFAULT_FRAME_CONTEXT_LINES if include_source_context else 0
|
|
114
|
+
),
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _resolve_explicit(
|
|
119
|
+
d: "dict[str, Any]",
|
|
120
|
+
include_local_variables: bool,
|
|
121
|
+
include_source_context: bool,
|
|
122
|
+
) -> "DataCollection":
|
|
123
|
+
"""
|
|
124
|
+
Build a fully-resolved ``DataCollection`` from a user-supplied
|
|
125
|
+
``data_collection`` dict, filling in spec defaults for any omitted or
|
|
126
|
+
partially-specified field. Frame fields fall back to the legacy
|
|
127
|
+
``include_local_variables`` / ``include_source_context`` options when unset.
|
|
128
|
+
"""
|
|
129
|
+
# frame_context_lines accepts an integer or a boolean fallback (spec: True
|
|
130
|
+
# -> platform default of 5, False -> 0). bool is a subclass of int, so
|
|
131
|
+
# coerce explicitly before treating it as a line count.
|
|
132
|
+
frame_context_lines = d.get("frame_context_lines")
|
|
133
|
+
if frame_context_lines is None:
|
|
134
|
+
frame_context_lines = (
|
|
135
|
+
_DEFAULT_FRAME_CONTEXT_LINES if include_source_context else 0
|
|
136
|
+
)
|
|
137
|
+
elif isinstance(frame_context_lines, bool):
|
|
138
|
+
frame_context_lines = _DEFAULT_FRAME_CONTEXT_LINES if frame_context_lines else 0
|
|
139
|
+
|
|
140
|
+
stack_frame_variables = d.get("stack_frame_variables")
|
|
141
|
+
if stack_frame_variables is None:
|
|
142
|
+
stack_frame_variables = include_local_variables
|
|
143
|
+
|
|
144
|
+
# http_bodies: omitted means "all valid types"; [] is the explicit opt-out.
|
|
145
|
+
http_bodies = d.get("http_bodies")
|
|
146
|
+
http_bodies = (
|
|
147
|
+
list(http_bodies) if http_bodies is not None else list(_ALL_HTTP_BODY_TYPES)
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
"provided_by_user": True,
|
|
152
|
+
"user_info": d.get("user_info", True),
|
|
153
|
+
"cookies": _kvcb_from_value(d.get("cookies") or {}),
|
|
154
|
+
"http_headers": _http_headers_from_value(d.get("http_headers") or {}),
|
|
155
|
+
"http_bodies": http_bodies,
|
|
156
|
+
"query_params": _kvcb_from_value(d.get("query_params") or {}),
|
|
157
|
+
"graphql": _graphql_from_value(d.get("graphql") or {}),
|
|
158
|
+
"gen_ai": _gen_ai_from_value(d.get("gen_ai") or {}),
|
|
159
|
+
"database_query_data": d.get("database_query_data", True),
|
|
160
|
+
"queues": d.get("queues", True),
|
|
161
|
+
"stack_frame_variables": stack_frame_variables,
|
|
162
|
+
"frame_context_lines": frame_context_lines,
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def _kvcb_from_value(
|
|
167
|
+
val: "dict[str, Any]",
|
|
168
|
+
) -> "KeyValueCollectionBehaviour":
|
|
169
|
+
mode = val.get("mode", "denylist")
|
|
170
|
+
terms = val.get("terms", None)
|
|
171
|
+
|
|
172
|
+
if mode not in _VALID_KEY_VALUE_COLLECTION_BEHAVIOUR_MODES:
|
|
173
|
+
raise ValueError(
|
|
174
|
+
"Invalid collection mode {!r}. Must be one of {}.".format(
|
|
175
|
+
mode, _VALID_KEY_VALUE_COLLECTION_BEHAVIOUR_MODES
|
|
176
|
+
)
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
behaviour: "dict[str, Any]" = {"mode": mode}
|
|
180
|
+
if terms is not None:
|
|
181
|
+
behaviour["terms"] = list(terms)
|
|
182
|
+
return cast("KeyValueCollectionBehaviour", behaviour)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def _http_headers_from_value(
|
|
186
|
+
val: "dict[str, Any]",
|
|
187
|
+
) -> "HttpHeadersCollectionBehaviour":
|
|
188
|
+
return {
|
|
189
|
+
"request": (
|
|
190
|
+
_kvcb_from_value(val["request"])
|
|
191
|
+
if "request" in val
|
|
192
|
+
else _kvcb_from_value({"mode": "denylist"})
|
|
193
|
+
),
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def _gen_ai_from_value(val: "dict[str, Any]") -> "GenAICollectionBehaviour":
|
|
198
|
+
return {
|
|
199
|
+
"inputs": val.get("inputs", True),
|
|
200
|
+
"outputs": val.get("outputs", True),
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def _graphql_from_value(
|
|
205
|
+
val: "dict[str, Any]",
|
|
206
|
+
) -> "GraphQLCollectionBehaviour":
|
|
207
|
+
return {
|
|
208
|
+
"document": val.get("document", True),
|
|
209
|
+
"variables": val.get("variables", True),
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def _resolve_data_collection(options: "Dict[str, Any]") -> "DataCollection":
|
|
214
|
+
"""
|
|
215
|
+
Resolve the effective ``DataCollection`` dict from client ``options``.
|
|
216
|
+
|
|
217
|
+
Reads ``data_collection``, ``send_default_pii``, ``include_local_variables``
|
|
218
|
+
and ``include_source_context`` and returns a fully-resolved dict with
|
|
219
|
+
concrete values for every field.
|
|
220
|
+
|
|
221
|
+
``data_collection`` must be a plain ``dict``.
|
|
222
|
+
"""
|
|
223
|
+
user_dc = options.get("_experiments", {}).get("data_collection")
|
|
224
|
+
send_default_pii = options.get("send_default_pii")
|
|
225
|
+
|
|
226
|
+
include_local_variables = (
|
|
227
|
+
bool(options.get("include_local_variables"))
|
|
228
|
+
if options.get("include_local_variables") is not None
|
|
229
|
+
else True
|
|
230
|
+
)
|
|
231
|
+
include_source_context = (
|
|
232
|
+
bool(options.get("include_source_context"))
|
|
233
|
+
if options.get("include_source_context") is not None
|
|
234
|
+
else True
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
if user_dc is not None:
|
|
238
|
+
if not isinstance(user_dc, dict):
|
|
239
|
+
raise TypeError(
|
|
240
|
+
"`data_collection` must be a dict, got {!r}.".format(
|
|
241
|
+
type(user_dc).__name__
|
|
242
|
+
)
|
|
243
|
+
)
|
|
244
|
+
if send_default_pii is not None:
|
|
245
|
+
warnings.warn(
|
|
246
|
+
"`send_default_pii` is deprecated and ignored when "
|
|
247
|
+
"`data_collection` is set.",
|
|
248
|
+
DeprecationWarning,
|
|
249
|
+
stacklevel=2,
|
|
250
|
+
)
|
|
251
|
+
return _resolve_explicit(
|
|
252
|
+
user_dc,
|
|
253
|
+
include_local_variables,
|
|
254
|
+
include_source_context,
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
return _map_from_send_default_pii(
|
|
258
|
+
send_default_pii=bool(send_default_pii),
|
|
259
|
+
include_local_variables=include_local_variables,
|
|
260
|
+
include_source_context=include_source_context,
|
|
261
|
+
)
|
|
@@ -119,7 +119,11 @@ def patch_run_job() -> None:
|
|
|
119
119
|
SPANDATA.MESSAGING_MESSAGE_ID: job_id,
|
|
120
120
|
},
|
|
121
121
|
parent_span=None,
|
|
122
|
-
):
|
|
122
|
+
) as span:
|
|
123
|
+
if self.queue_name is not None:
|
|
124
|
+
span.set_attribute(
|
|
125
|
+
SPANDATA.MESSAGING_DESTINATION_NAME, self.queue_name
|
|
126
|
+
)
|
|
123
127
|
return await old_run_job(self, job_id, score)
|
|
124
128
|
|
|
125
129
|
transaction = Transaction(
|
|
@@ -130,7 +134,9 @@ def patch_run_job() -> None:
|
|
|
130
134
|
origin=ArqIntegration.origin,
|
|
131
135
|
)
|
|
132
136
|
|
|
133
|
-
with sentry_sdk.start_transaction(transaction):
|
|
137
|
+
with sentry_sdk.start_transaction(transaction) as span:
|
|
138
|
+
if self.queue_name is not None:
|
|
139
|
+
span.set_data(SPANDATA.MESSAGING_DESTINATION_NAME, self.queue_name)
|
|
134
140
|
return await old_run_job(self, job_id, score)
|
|
135
141
|
|
|
136
142
|
Worker.run_job = _sentry_run_job
|
|
@@ -32,8 +32,9 @@ DJANGO_SUPPORTS_ASYNC_MIDDLEWARE = DJANGO_VERSION >= (3, 1)
|
|
|
32
32
|
|
|
33
33
|
if not DJANGO_SUPPORTS_ASYNC_MIDDLEWARE:
|
|
34
34
|
_asgi_middleware_mixin_factory = lambda _: object
|
|
35
|
+
iscoroutinefunction = lambda _: False
|
|
35
36
|
else:
|
|
36
|
-
from .asgi import _asgi_middleware_mixin_factory
|
|
37
|
+
from .asgi import _asgi_middleware_mixin_factory, iscoroutinefunction
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
def patch_django_middlewares() -> None:
|
|
@@ -104,15 +105,39 @@ def _wrap_middleware(middleware: "Any", middleware_name: str) -> "Any":
|
|
|
104
105
|
|
|
105
106
|
def _get_wrapped_method(old_method: "F") -> "F":
|
|
106
107
|
with capture_internal_exceptions():
|
|
108
|
+
# Middleware hooks (e.g. `process_view`, `process_exception`) may be
|
|
109
|
+
# `async def` when the middleware is async. A synchronous wrapper
|
|
110
|
+
# would hide the coroutine from Django's `iscoroutinefunction` check,
|
|
111
|
+
# causing Django to call the hook synchronously and never await the
|
|
112
|
+
# returned coroutine. Wrap async hooks with an async wrapper so the
|
|
113
|
+
# wrapped method continues to report as a coroutine function.
|
|
114
|
+
if iscoroutinefunction is not None and iscoroutinefunction(old_method):
|
|
107
115
|
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
async def async_sentry_wrapped_method(
|
|
117
|
+
*args: "Any", **kwargs: "Any"
|
|
118
|
+
) -> "Any":
|
|
119
|
+
middleware_span = _check_middleware_span(old_method)
|
|
110
120
|
|
|
111
|
-
|
|
112
|
-
|
|
121
|
+
if middleware_span is None:
|
|
122
|
+
return await old_method(*args, **kwargs)
|
|
113
123
|
|
|
114
|
-
|
|
115
|
-
|
|
124
|
+
with middleware_span:
|
|
125
|
+
return await old_method(*args, **kwargs)
|
|
126
|
+
|
|
127
|
+
sentry_wrapped_method = async_sentry_wrapped_method
|
|
128
|
+
|
|
129
|
+
else:
|
|
130
|
+
|
|
131
|
+
def sync_sentry_wrapped_method(*args: "Any", **kwargs: "Any") -> "Any":
|
|
132
|
+
middleware_span = _check_middleware_span(old_method)
|
|
133
|
+
|
|
134
|
+
if middleware_span is None:
|
|
135
|
+
return old_method(*args, **kwargs)
|
|
136
|
+
|
|
137
|
+
with middleware_span:
|
|
138
|
+
return old_method(*args, **kwargs)
|
|
139
|
+
|
|
140
|
+
sentry_wrapped_method = sync_sentry_wrapped_method
|
|
116
141
|
|
|
117
142
|
try:
|
|
118
143
|
# fails for __call__ of function on Python 2 (see py2.7-django-1.11)
|
|
@@ -3,7 +3,7 @@ from typing import TypeVar
|
|
|
3
3
|
|
|
4
4
|
import sentry_sdk
|
|
5
5
|
from sentry_sdk.api import continue_trace, get_baggage, get_traceparent
|
|
6
|
-
from sentry_sdk.consts import OP, SPANSTATUS
|
|
6
|
+
from sentry_sdk.consts import OP, SPANDATA, SPANSTATUS
|
|
7
7
|
from sentry_sdk.integrations import DidNotEnable, Integration
|
|
8
8
|
from sentry_sdk.integrations._wsgi_common import request_body_within_bounds
|
|
9
9
|
from sentry_sdk.traces import SegmentSource
|
|
@@ -140,6 +140,7 @@ class SentryMiddleware(Middleware): # type: ignore[misc]
|
|
|
140
140
|
"sentry.op": OP.QUEUE_TASK_DRAMATIQ,
|
|
141
141
|
"sentry.origin": DramatiqIntegration.origin,
|
|
142
142
|
"sentry.span.source": SegmentSource.TASK.value,
|
|
143
|
+
SPANDATA.MESSAGING_DESTINATION_NAME: message.queue_name,
|
|
143
144
|
},
|
|
144
145
|
parent_span=None,
|
|
145
146
|
)
|
|
@@ -160,6 +161,9 @@ class SentryMiddleware(Middleware): # type: ignore[misc]
|
|
|
160
161
|
source=TransactionSource.TASK,
|
|
161
162
|
)
|
|
162
163
|
transaction.__enter__()
|
|
164
|
+
transaction.set_data(
|
|
165
|
+
SPANDATA.MESSAGING_DESTINATION_NAME, message.queue_name
|
|
166
|
+
)
|
|
163
167
|
message._sentry_span_ctx = transaction
|
|
164
168
|
|
|
165
169
|
def after_process_message(
|
|
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
|
|
|
4
4
|
|
|
5
5
|
import sentry_sdk
|
|
6
6
|
from sentry_sdk.api import continue_trace, get_baggage, get_traceparent
|
|
7
|
-
from sentry_sdk.consts import OP, SPANSTATUS
|
|
7
|
+
from sentry_sdk.consts import OP, SPANDATA, SPANSTATUS
|
|
8
8
|
from sentry_sdk.integrations import DidNotEnable, Integration
|
|
9
9
|
from sentry_sdk.scope import should_send_default_pii
|
|
10
10
|
from sentry_sdk.traces import SegmentSource, SpanStatus, StreamedSpan
|
|
@@ -86,6 +86,7 @@ def patch_enqueue() -> None:
|
|
|
86
86
|
attributes={
|
|
87
87
|
"sentry.op": OP.QUEUE_SUBMIT_HUEY,
|
|
88
88
|
"sentry.origin": HueyIntegration.origin,
|
|
89
|
+
SPANDATA.MESSAGING_DESTINATION_NAME: self.name,
|
|
89
90
|
},
|
|
90
91
|
)
|
|
91
92
|
else:
|
|
@@ -94,6 +95,7 @@ def patch_enqueue() -> None:
|
|
|
94
95
|
name=span_name,
|
|
95
96
|
origin=HueyIntegration.origin,
|
|
96
97
|
)
|
|
98
|
+
span_ctx.set_data(SPANDATA.MESSAGING_DESTINATION_NAME, self.name)
|
|
97
99
|
|
|
98
100
|
no_headers_types = (PeriodicTask,) + tuple(
|
|
99
101
|
t for t in [HueyGroup, HueyChord] if t is not None
|
|
@@ -211,6 +213,7 @@ def patch_execute() -> None:
|
|
|
211
213
|
"sentry.op": OP.QUEUE_TASK_HUEY,
|
|
212
214
|
"sentry.origin": HueyIntegration.origin,
|
|
213
215
|
"sentry.span.source": SegmentSource.TASK,
|
|
216
|
+
SPANDATA.MESSAGING_DESTINATION_NAME: self.name,
|
|
214
217
|
"messaging.message.id": task.id,
|
|
215
218
|
"messaging.message.system": "huey",
|
|
216
219
|
"messaging.message.retry.count": (task.default_retries or 0)
|
|
@@ -228,6 +231,7 @@ def patch_execute() -> None:
|
|
|
228
231
|
)
|
|
229
232
|
transaction.set_status(SPANSTATUS.OK)
|
|
230
233
|
span_ctx = sentry_sdk.start_transaction(transaction)
|
|
234
|
+
span_ctx.set_data(SPANDATA.MESSAGING_DESTINATION_NAME, self.name)
|
|
231
235
|
|
|
232
236
|
if not getattr(task, "_sentry_is_patched", False):
|
|
233
237
|
task.execute = _wrap_task_execute(task.execute)
|