sentry-sdk 2.71.0__tar.gz → 2.72.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.71.0/sentry_sdk.egg-info → sentry_sdk-2.72.0}/PKG-INFO +1 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_batcher.py +39 -25
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_log_batcher.py +1 -24
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_metrics_batcher.py +1 -7
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_types.py +1 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/ai/monitoring.py +7 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/client.py +47 -23
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/consts.py +76 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/crons/api.py +3 -2
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/_asgi_common.py +5 -2
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/aiohttp.py +27 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/anthropic.py +17 -8
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/asgi.py +23 -5
- sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/__init__.py +21 -0
- sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/_client.py +155 -0
- sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/_context.py +49 -0
- sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/_instrumentation.py +496 -0
- sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/_services/base.py +36 -0
- sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/_services/registry.py +22 -0
- sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/consts.py +12 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/cohere.py +58 -16
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/fastapi.py +2 -33
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/gql.py +3 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/huggingface_hub.py +55 -24
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/litellm.py +23 -6
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai.py +46 -17
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/patches/agent_run.py +1 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/patches/models.py +2 -2
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/patches/runner.py +4 -4
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/utils.py +2 -2
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/sanic.py +15 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/socket.py +2 -2
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/starlette.py +32 -12
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/stdlib.py +13 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/strawberry.py +7 -7
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/tornado.py +25 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/wsgi.py +17 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/scrubber.py +3 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/spotlight.py +1 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/transport.py +16 -5
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/types.py +3 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/utils.py +54 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0/sentry_sdk.egg-info}/PKG-INFO +1 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk.egg-info/SOURCES.txt +9 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/setup.py +1 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/conftest.py +83 -142
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aiohttp/test_aiohttp.py +94 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/asgi/test_asgi.py +112 -24
- sentry_sdk-2.72.0/tests/integrations/boto3/test_client.py +897 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/boto3/test_s3.py +42 -24
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/huggingface_hub/test_huggingface_hub.py +98 -16
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/langchain/test_langchain.py +15 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/litellm/test_litellm.py +16 -2
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/openai/test_openai.py +421 -335
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/openai_agents/test_openai_agents.py +208 -13
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/sanic/test_sanic.py +88 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/starlette/test_starlette.py +8 -3
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/tornado/test_tornado.py +75 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/wsgi/test_wsgi.py +78 -0
- sentry_sdk-2.72.0/tests/profiler/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_client.py +23 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_crons.py +36 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_logs.py +18 -2
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_metrics.py +33 -5
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_scrubber.py +53 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_transport.py +116 -1
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_utils.py +58 -0
- sentry_sdk-2.71.0/sentry_sdk/integrations/boto3.py +0 -269
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/LICENSE +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/MANIFEST.in +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/README.md +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/pyproject.toml +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_compat.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_init_implementation.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_lru_cache.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_queue.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_span_batcher.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/_werkzeug.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/ai/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/ai/_openai_completions_api.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/ai/_openai_responses_api.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/ai/consts.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/ai/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/api.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/attachments.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/crons/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/crons/consts.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/crons/decorator.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/data_collection.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/debug.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/envelope.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/feature_flags.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/hub.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/_wsgi_common.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/aiomysql.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/argv.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/ariadne.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/arq.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/asyncio.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/asyncpg.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/atexit.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/aws_lambda.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/beam.py +0 -0
- {sentry_sdk-2.71.0/sentry_sdk/integrations/redis/modules → sentry_sdk-2.72.0/sentry_sdk/integrations/boto3/_services}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/bottle.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/celery/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/celery/beat.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/celery/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/chalice.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/clickhouse_driver.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/cloud_resource_context.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/dedupe.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/asgi.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/caching.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/middleware.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/signals_handlers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/tasks.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/templates.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/transactions.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/django/views.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/dramatiq.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/excepthook.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/executing.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/falcon.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/flask.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/gcp.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/gnu_backtrace.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/google_genai/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/google_genai/consts.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/google_genai/streaming.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/google_genai/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/graphene.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/grpc/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/grpc/aio/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/grpc/aio/client.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/grpc/aio/server.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/grpc/client.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/grpc/consts.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/grpc/server.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/httpx.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/httpx2.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/huey.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/langchain.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/langgraph.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/launchdarkly.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/litestar.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/logging.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/loguru.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/mcp.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/mistral.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/modules.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/consts.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/patches/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/patches/error_tracing.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/patches/tools.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/spans/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/spans/agent_workflow.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/spans/ai_client.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/spans/execute_tool.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/spans/handoff.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openai_agents/spans/invoke_agent.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/openfeature.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/opentelemetry/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/opentelemetry/consts.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/opentelemetry/integration.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/opentelemetry/propagator.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/opentelemetry/span_processor.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/otlp.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pure_eval.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/consts.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/patches/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/patches/agent_run.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/patches/graph_nodes.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/patches/tools.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/spans/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/spans/ai_client.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/spans/execute_tool.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/spans/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pydantic_ai/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pymongo.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pyramid.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/pyreqwest.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/quart.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/ray.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/_async_common.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/_sync_common.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/consts.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations → sentry_sdk-2.72.0/sentry_sdk/integrations/redis/modules}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/modules/caches.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/modules/queries.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/rb.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/redis.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/redis_cluster.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/redis_py_cluster_legacy.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/redis/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/rq.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/rust_tracing.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/serverless.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/spark/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/spark/spark_driver.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/spark/spark_worker.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/sqlalchemy.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/starlite.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/statsig.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/sys_exit.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/threading.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/trytond.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/typer.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/typesafe.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/unleash.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/integrations/unraisablehook.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/logger.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/metrics.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/monitor.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/profiler/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/profiler/continuous_profiler.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/profiler/transaction_profiler.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/profiler/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/py.typed +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/scope.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/serializer.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/session.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/sessions.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/traces.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/tracing.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/tracing_utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk/worker.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk.egg-info/dependency_links.txt +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk.egg-info/entry_points.txt +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk.egg-info/not-zip-safe +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk.egg-info/requires.txt +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/sentry_sdk.egg-info/top_level.txt +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/setup.cfg +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/aiohttp/aiohttp_helpers → sentry_sdk-2.72.0/tests/integrations}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aiohttp/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/asyncio → sentry_sdk-2.72.0/tests/integrations/aiohttp/aiohttp_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aiohttp/aiohttp_helpers/helpers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aiomysql/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aiomysql/test_aiomysql.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/anthropic/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/anthropic/test_anthropic.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/argv/test_argv.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/ariadne/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/ariadne/test_ariadne.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/arq/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/arq/test_arq.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/asgi/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/asyncpg/asyncpg_helpers → sentry_sdk-2.72.0/tests/integrations/asyncio}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/asyncio/test_asyncio.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/asyncpg/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/cloud_resource_context → sentry_sdk-2.72.0/tests/integrations/asyncpg/asyncpg_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/asyncpg/asyncpg_helpers/helpers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/asyncpg/test_asyncpg.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions/BasicException/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions/BasicOk/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions/InitError/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions/TimeoutError/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionAllowlist/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionAllowlist/.lock +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionAllowlist/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionDenylist/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionDenylist/.lock +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionDenylist/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionOff/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionOff/.lock +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionOff/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryAllowlist/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryAllowlist/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryDenylist/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryDenylist/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryOff/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryOff/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOff/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOff/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOn/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOn/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSendDefaultPii/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSendDefaultPii/.lock +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSendDefaultPii/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreaming/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreaming/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollection/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollection/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollectionUserInfoOff/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollectionUserInfoOff/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollectionUserInfoOn/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollectionUserInfoOn/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingPii/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingPii/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceDisabled/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceDisabled/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceEnabled/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceEnabled/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorSpanStreaming/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorSpanStreaming/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TimeoutErrorScopeModified/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TimeoutErrorScopeModified/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TracesSampler/.gitignore +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TracesSampler/index.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/test_aws_lambda.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/aws_lambda/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/beam/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/beam/test_beam.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/boto3/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/boto3/aws_mock.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/boto3/s3_list.xml +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/boto3/test_aws_http_connection.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/boto3/test_trace_propagation.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/bottle/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/bottle/test_bottle.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/celery/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/celery/integration_tests/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/celery/integration_tests/test_celery_beat_cron_monitoring.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/celery/test_celery.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/celery/test_celery_beat_crons.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/celery/test_update_celery_task_headers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/chalice/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/chalice/test_chalice.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/clickhouse_driver/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/clickhouse_driver/test_clickhouse_driver.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/django/django_helpers → sentry_sdk-2.72.0/tests/integrations/cloud_resource_context}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/cloud_resource_context/test_cloud_resource_context.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/cohere/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/cohere/test_cohere.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/conftest.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/asgi/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/asgi/image.png +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/asgi/test_asgi.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/django/myapp → sentry_sdk-2.72.0/tests/integrations/django/django_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/django_helpers/views.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/django/myapp/management → sentry_sdk-2.72.0/tests/integrations/django/myapp}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/asgi.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/custom_urls.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/manage.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/django/myapp/management/commands → sentry_sdk-2.72.0/tests/integrations/django/myapp/management}/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/httpx/httpx_helpers → sentry_sdk-2.72.0/tests/integrations/django/myapp/management/commands}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/management/commands/mycrash.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/middleware.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/routing.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/settings.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/signals.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/templates/error.html +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/templates/trace_meta.html +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/templates/user_name.html +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/urls.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/views.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/myapp/wsgi.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_basic.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_cache_module.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_data_scrubbing.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_db_query_data.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_db_transactions.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_middleware.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_tasks.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/test_transactions.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/django/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/dramatiq/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/dramatiq/test_dramatiq.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/excepthook/test_excepthook.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/falcon/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/falcon/test_falcon.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/fastapi/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/fastapi/photo.jpg +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/fastapi/test_fastapi.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/fastmcp/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/fastmcp/test_fastmcp.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/flask/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/flask/test_flask.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/gcp/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/gcp/test_gcp.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/google_genai/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/google_genai/test_google_genai.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/gql/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/gql/test_gql.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/graphene/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/graphene/test_graphene.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/compile_test_services.sh +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/grpc_test_service_pb2.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/grpc_test_service_pb2.pyi +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/grpc_test_service_pb2_grpc.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/protos/grpc_test_service.proto +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/test_grpc.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/grpc/test_grpc_aio.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/httpx/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/httpx2/httpx2_helpers → sentry_sdk-2.72.0/tests/integrations/httpx/httpx_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/httpx/httpx_helpers/helpers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/httpx/test_httpx.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/httpx2/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/litellm → sentry_sdk-2.72.0/tests/integrations/httpx2/httpx2_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/httpx2/httpx2_helpers/helpers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/httpx2/test_httpx2.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/huey/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/huey/test_huey.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/huggingface_hub/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/langchain/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/langgraph/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/langgraph/test_langgraph.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/launchdarkly/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/launchdarkly/test_launchdarkly.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/pyreqwest/pyreqwest_helpers → sentry_sdk-2.72.0/tests/integrations/litellm}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/litestar/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/litestar/test_litestar.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/logging/test_logging.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/loguru/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/loguru/test_loguru.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/mcp/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/mcp/test_mcp.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/mistral/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/mistral/test_mistral.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/modules/test_modules.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/openai/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/openai_agents/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/openfeature/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/openfeature/test_openfeature.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/opentelemetry/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/opentelemetry/test_entry_points.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/opentelemetry/test_experimental.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/opentelemetry/test_propagator.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/opentelemetry/test_span_processor.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/otlp/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/otlp/test_otlp.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pure_eval/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pure_eval/test_pure_eval.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pydantic_ai/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pydantic_ai/test_pydantic_ai.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pymongo/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pymongo/test_pymongo.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pyramid/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pyramid/test_pyramid.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pyreqwest/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/rust_tracing → sentry_sdk-2.72.0/tests/integrations/pyreqwest/pyreqwest_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pyreqwest/pyreqwest_helpers/helpers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/pyreqwest/test_pyreqwest.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/quart/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/quart/test_quart.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/ray/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/ray/test_ray.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/asyncio/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/asyncio/test_redis_asyncio.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/cluster/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/cluster/test_redis_cluster.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/cluster_asyncio/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/cluster_asyncio/test_redis_cluster_asyncio.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/test_redis.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/test_redis_cache_module.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis/test_redis_cache_module_async.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis_py_cluster_legacy/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/redis_py_cluster_legacy/test_redis_py_cluster_legacy.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/requests/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/requests/test_requests.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/rq/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/rq/test_rq.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/sqlalchemy/sqlalchemy_helpers → sentry_sdk-2.72.0/tests/integrations/rust_tracing}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/rust_tracing/test_rust_tracing.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/sanic/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/serverless/test_serverless.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/socket/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/socket/test_socket.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/spark/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/spark/test_spark.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/sqlalchemy/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/stdlib/httplib_helpers → sentry_sdk-2.72.0/tests/integrations/sqlalchemy/sqlalchemy_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/sqlalchemy/sqlalchemy_helpers/helpers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/sqlalchemy/test_sqlalchemy.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/starlette/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/starlette/photo.jpg +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/starlette/templates/trace_meta.html +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/starlite/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/starlite/test_starlite.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/statsig/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/statsig/test_statsig.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/stdlib/__init__.py +0 -0
- {sentry_sdk-2.71.0/tests/integrations/strawberry → sentry_sdk-2.72.0/tests/integrations/stdlib/httplib_helpers}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/stdlib/httplib_helpers/helpers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/stdlib/test_httplib.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/stdlib/test_subprocess.py +0 -0
- {sentry_sdk-2.71.0/tests/profiler → sentry_sdk-2.72.0/tests/integrations/strawberry}/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/strawberry/test_strawberry.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/sys_exit/test_sys_exit.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/test_gnu_backtrace.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/threading/test_threading.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/tornado/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/trytond/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/trytond/test_trytond.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/typer/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/typer/test_typer.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/typesafe/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/typesafe/test_typesafe.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/unleash/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/unleash/test_unleash.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/unleash/testutils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/unraisablehook/test_unraisablehook.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/integrations/utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/new_scopes_compat/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/new_scopes_compat/conftest.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/new_scopes_compat/test_new_scopes_compat.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/new_scopes_compat/test_new_scopes_compat_event.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/profiler/test_continuous_profiler.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/profiler/test_transaction_profiler.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test.key +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test.pem +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_ai_integration_deactivation.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_ai_monitoring.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_api.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_attributes.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_basics.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_conftest.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_data_collection.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_dsc.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_envelope.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_exceptiongroup.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_feature_flags.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_full_stack_frames.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_gevent.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_import.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_lru_cache.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_monitor.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_propagationcontext.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_scope.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_serializer.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_sessions.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_shadowed_module.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_spotlight.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_tracing_utils.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/test_types.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_baggage.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_conversation_id.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_decorator.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_deprecated.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_http_headers.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_ignore_status_codes.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_integration_tests.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_misc.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_noop_span.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_propagation.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_sample_rand.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_sample_rand_propagation.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_sampling.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_span_batcher.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_span_name.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_span_origin.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/tracing/test_span_streaming.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/utils/__init__.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/utils/test_contextvars.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/utils/test_general.py +0 -0
- {sentry_sdk-2.71.0 → sentry_sdk-2.72.0}/tests/utils/test_transaction.py +0 -0
|
@@ -20,6 +20,7 @@ class Batcher(Generic[T]):
|
|
|
20
20
|
FLUSH_WAIT_TIME = 5.0
|
|
21
21
|
|
|
22
22
|
TYPE = ""
|
|
23
|
+
CLIENT_REPORT_TYPE = ""
|
|
23
24
|
CONTENT_TYPE = ""
|
|
24
25
|
|
|
25
26
|
def __init__(
|
|
@@ -123,13 +124,16 @@ class Batcher(Generic[T]):
|
|
|
123
124
|
return None
|
|
124
125
|
|
|
125
126
|
with self._lock:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
127
|
+
dropped = len(self._buffer) >= self.MAX_BEFORE_DROP
|
|
128
|
+
if not dropped:
|
|
129
|
+
self._buffer.append(item)
|
|
130
|
+
if len(self._buffer) >= self.MAX_BEFORE_FLUSH:
|
|
131
|
+
self._flush_event.set()
|
|
132
|
+
|
|
133
|
+
# Record the loss outside of the lock, since this might involve
|
|
134
|
+
# serializing the item to report lost bytes
|
|
135
|
+
if dropped:
|
|
136
|
+
self._record_lost(item)
|
|
133
137
|
finally:
|
|
134
138
|
self._active.flag = False
|
|
135
139
|
|
|
@@ -149,25 +153,25 @@ class Batcher(Generic[T]):
|
|
|
149
153
|
finally:
|
|
150
154
|
self._active.flag = was_active
|
|
151
155
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
),
|
|
168
|
-
)
|
|
156
|
+
@classmethod
|
|
157
|
+
def _to_envelope_item(cls, items: "list[T]") -> "Item":
|
|
158
|
+
return Item(
|
|
159
|
+
type=cls.TYPE,
|
|
160
|
+
content_type=cls.CONTENT_TYPE,
|
|
161
|
+
headers={
|
|
162
|
+
"item_count": len(items),
|
|
163
|
+
},
|
|
164
|
+
payload=PayloadRef(
|
|
165
|
+
json={
|
|
166
|
+
"version": 2,
|
|
167
|
+
"items": [cls._to_transport_format(item) for item in items],
|
|
168
|
+
}
|
|
169
|
+
),
|
|
169
170
|
)
|
|
170
171
|
|
|
172
|
+
def _add_to_envelope(self, envelope: "Envelope") -> None:
|
|
173
|
+
envelope.add_item(self._to_envelope_item(self._buffer))
|
|
174
|
+
|
|
171
175
|
def _flush(self) -> "Optional[Envelope]":
|
|
172
176
|
envelope = Envelope(
|
|
173
177
|
headers={"sent_at": format_timestamp(datetime.now(timezone.utc))}
|
|
@@ -183,7 +187,17 @@ class Batcher(Generic[T]):
|
|
|
183
187
|
return envelope
|
|
184
188
|
|
|
185
189
|
def _record_lost(self, item: "T") -> None:
|
|
186
|
-
|
|
190
|
+
envelope_item = None
|
|
191
|
+
with capture_internal_exceptions():
|
|
192
|
+
envelope_item = self._to_envelope_item([item])
|
|
193
|
+
|
|
194
|
+
if envelope_item:
|
|
195
|
+
self._record_lost_func(
|
|
196
|
+
reason="queue_overflow",
|
|
197
|
+
data_category=self.CLIENT_REPORT_TYPE,
|
|
198
|
+
item=envelope_item,
|
|
199
|
+
quantity=1,
|
|
200
|
+
)
|
|
187
201
|
|
|
188
202
|
@staticmethod
|
|
189
203
|
def _to_transport_format(item: "T") -> "Any":
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from typing import TYPE_CHECKING
|
|
2
2
|
|
|
3
3
|
from sentry_sdk._batcher import Batcher
|
|
4
|
-
from sentry_sdk.envelope import Item, PayloadRef
|
|
5
4
|
from sentry_sdk.utils import serialize_attribute
|
|
6
5
|
|
|
7
6
|
if TYPE_CHECKING:
|
|
@@ -16,6 +15,7 @@ class LogBatcher(Batcher["Log"]):
|
|
|
16
15
|
FLUSH_WAIT_TIME = 5.0
|
|
17
16
|
|
|
18
17
|
TYPE = "log"
|
|
18
|
+
CLIENT_REPORT_TYPE = "log_item"
|
|
19
19
|
CONTENT_TYPE = "application/vnd.sentry.items.log+json"
|
|
20
20
|
|
|
21
21
|
@staticmethod
|
|
@@ -41,26 +41,3 @@ class LogBatcher(Batcher["Log"]):
|
|
|
41
41
|
res["span_id"] = item["span_id"]
|
|
42
42
|
|
|
43
43
|
return res
|
|
44
|
-
|
|
45
|
-
def _record_lost(self, item: "Log") -> None:
|
|
46
|
-
# Construct log envelope item without sending it to report lost bytes
|
|
47
|
-
log_item = Item(
|
|
48
|
-
type=self.TYPE,
|
|
49
|
-
content_type=self.CONTENT_TYPE,
|
|
50
|
-
headers={
|
|
51
|
-
"item_count": 1,
|
|
52
|
-
},
|
|
53
|
-
payload=PayloadRef(
|
|
54
|
-
json={
|
|
55
|
-
"version": 2,
|
|
56
|
-
"items": [self._to_transport_format(item)],
|
|
57
|
-
}
|
|
58
|
-
),
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
self._record_lost_func(
|
|
62
|
-
reason="queue_overflow",
|
|
63
|
-
data_category="log_item",
|
|
64
|
-
item=log_item,
|
|
65
|
-
quantity=1,
|
|
66
|
-
)
|
|
@@ -15,6 +15,7 @@ class MetricsBatcher(Batcher["Metric"]):
|
|
|
15
15
|
FLUSH_WAIT_TIME = 5.0
|
|
16
16
|
|
|
17
17
|
TYPE = "trace_metric"
|
|
18
|
+
CLIENT_REPORT_TYPE = "trace_metric"
|
|
18
19
|
CONTENT_TYPE = "application/vnd.sentry.items.trace-metric+json"
|
|
19
20
|
|
|
20
21
|
@staticmethod
|
|
@@ -39,10 +40,3 @@ class MetricsBatcher(Batcher["Metric"]):
|
|
|
39
40
|
res["unit"] = item["unit"]
|
|
40
41
|
|
|
41
42
|
return res
|
|
42
|
-
|
|
43
|
-
def _record_lost(self, item: "Metric") -> None:
|
|
44
|
-
self._record_lost_func(
|
|
45
|
-
reason="queue_overflow",
|
|
46
|
-
data_category="trace_metric",
|
|
47
|
-
quantity=1,
|
|
48
|
-
)
|
|
@@ -192,6 +192,13 @@ def record_token_usage(
|
|
|
192
192
|
output_tokens_reasoning: "Optional[int]" = None,
|
|
193
193
|
total_tokens: "Optional[int]" = None,
|
|
194
194
|
) -> None:
|
|
195
|
+
warnings.warn(
|
|
196
|
+
"record_token_usage() is deprecated and will be removed in version 3.0 of sentry-sdk. "
|
|
197
|
+
"Use the manual span API instead, e.g. span.set_attribute() (in streaming mode) or span.set_data().",
|
|
198
|
+
DeprecationWarning,
|
|
199
|
+
stacklevel=2,
|
|
200
|
+
)
|
|
201
|
+
|
|
195
202
|
# TODO: move pipeline name elsewhere
|
|
196
203
|
ai_pipeline_name = get_ai_pipeline_name()
|
|
197
204
|
if ai_pipeline_name:
|
|
@@ -56,6 +56,7 @@ from sentry_sdk.utils import (
|
|
|
56
56
|
capture_internal_exceptions,
|
|
57
57
|
current_stacktrace,
|
|
58
58
|
datetime_from_isoformat,
|
|
59
|
+
deprecation_warning,
|
|
59
60
|
env_to_bool,
|
|
60
61
|
format_timestamp,
|
|
61
62
|
get_before_send_log,
|
|
@@ -350,6 +351,13 @@ def _get_options(*args: "Optional[str]", **kwargs: "Any") -> "Dict[str, Any]":
|
|
|
350
351
|
if rv["enable_tracing"] is True and rv["traces_sample_rate"] is None:
|
|
351
352
|
rv["traces_sample_rate"] = 1.0
|
|
352
353
|
|
|
354
|
+
if rv["send_default_pii"] is not None:
|
|
355
|
+
deprecation_warning(
|
|
356
|
+
"The send_default_pii option is deprecated. Use data_collection "
|
|
357
|
+
"instead. "
|
|
358
|
+
"See https://docs.sentry.io/platforms/python/data-management/data-collected/"
|
|
359
|
+
)
|
|
360
|
+
|
|
353
361
|
rv["data_collection"] = _resolve_data_collection(rv)
|
|
354
362
|
|
|
355
363
|
# Do not add the event scrubber if data collection is enabled as it can remove data that's
|
|
@@ -403,6 +411,21 @@ def _get_options(*args: "Optional[str]", **kwargs: "Any") -> "Dict[str, Any]":
|
|
|
403
411
|
stacklevel=2,
|
|
404
412
|
)
|
|
405
413
|
|
|
414
|
+
if has_profiling_enabled(rv):
|
|
415
|
+
warnings.warn(
|
|
416
|
+
"Transaction-based profiling is deprecated and will be removed in the next major version of the SDK. "
|
|
417
|
+
"Please use continuous profiling instead: https://docs.sentry.io/platforms/python/profiling/",
|
|
418
|
+
DeprecationWarning,
|
|
419
|
+
stacklevel=2,
|
|
420
|
+
)
|
|
421
|
+
if has_span_streaming_enabled(rv):
|
|
422
|
+
warnings.warn(
|
|
423
|
+
"Transaction-based profiling has no effect when `trace_lifecycle` is set to `stream`. "
|
|
424
|
+
"Please use continuous profiling instead: https://docs.sentry.io/platforms/python/profiling/",
|
|
425
|
+
UserWarning,
|
|
426
|
+
stacklevel=2,
|
|
427
|
+
)
|
|
428
|
+
|
|
406
429
|
return rv
|
|
407
430
|
|
|
408
431
|
|
|
@@ -1245,6 +1268,27 @@ class _Client(BaseClient):
|
|
|
1245
1268
|
|
|
1246
1269
|
return return_value
|
|
1247
1270
|
|
|
1271
|
+
def _record_lost_telemetry(
|
|
1272
|
+
self, reason: str, ty: str, telemetry: "Union[Log, Metric]"
|
|
1273
|
+
) -> None:
|
|
1274
|
+
if self.transport is None:
|
|
1275
|
+
return
|
|
1276
|
+
|
|
1277
|
+
batcher_cls: "Union[type[LogBatcher], type[MetricsBatcher]]"
|
|
1278
|
+
if ty == "log":
|
|
1279
|
+
data_category: "EventDataCategory" = "log_item"
|
|
1280
|
+
batcher_cls = LogBatcher
|
|
1281
|
+
else:
|
|
1282
|
+
data_category = "trace_metric"
|
|
1283
|
+
batcher_cls = MetricsBatcher
|
|
1284
|
+
|
|
1285
|
+
# Construct envelope item without sending it to report lost bytes
|
|
1286
|
+
item = None
|
|
1287
|
+
with capture_internal_exceptions():
|
|
1288
|
+
item = batcher_cls._to_envelope_item([telemetry]) # type: ignore[list-item]
|
|
1289
|
+
|
|
1290
|
+
self.transport.record_lost_event(reason, data_category=data_category, item=item)
|
|
1291
|
+
|
|
1248
1292
|
def _capture_telemetry(
|
|
1249
1293
|
self,
|
|
1250
1294
|
telemetry: "Optional[Union[Log, Metric, StreamedSpan]]",
|
|
@@ -1285,32 +1329,12 @@ class _Client(BaseClient):
|
|
|
1285
1329
|
exception_raised_in_before_send_func = True
|
|
1286
1330
|
raise
|
|
1287
1331
|
|
|
1288
|
-
if ty
|
|
1289
|
-
if exception_raised_in_before_send_func:
|
|
1290
|
-
if self.transport:
|
|
1291
|
-
self.transport.record_lost_event(
|
|
1292
|
-
"callback_error", data_category="log_item"
|
|
1293
|
-
)
|
|
1294
|
-
return
|
|
1295
|
-
if serialized is None:
|
|
1296
|
-
if self.transport:
|
|
1297
|
-
self.transport.record_lost_event(
|
|
1298
|
-
"before_send", data_category="log_item"
|
|
1299
|
-
)
|
|
1300
|
-
return
|
|
1301
|
-
|
|
1302
|
-
elif ty == "metric":
|
|
1332
|
+
if ty in ("log", "metric"):
|
|
1303
1333
|
if exception_raised_in_before_send_func:
|
|
1304
|
-
|
|
1305
|
-
self.transport.record_lost_event(
|
|
1306
|
-
"callback_error", data_category="trace_metric"
|
|
1307
|
-
)
|
|
1334
|
+
self._record_lost_telemetry("callback_error", ty, telemetry) # type: ignore[arg-type]
|
|
1308
1335
|
return
|
|
1309
1336
|
if serialized is None:
|
|
1310
|
-
|
|
1311
|
-
self.transport.record_lost_event(
|
|
1312
|
-
"before_send", data_category="trace_metric"
|
|
1313
|
-
)
|
|
1337
|
+
self._record_lost_telemetry("before_send", ty, telemetry) # type: ignore[arg-type]
|
|
1314
1338
|
return
|
|
1315
1339
|
|
|
1316
1340
|
elif ty == "span" and isinstance(telemetry, StreamedSpan):
|
|
@@ -390,6 +390,18 @@ class SPANDATA:
|
|
|
390
390
|
Example: ["Token limit exceeded"]
|
|
391
391
|
"""
|
|
392
392
|
|
|
393
|
+
AWS_EXTENDED_REQUEST_ID = "aws.extended_request_id"
|
|
394
|
+
"""
|
|
395
|
+
The AWS extended request ID as returned in the response headers.
|
|
396
|
+
Example: "wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ="
|
|
397
|
+
"""
|
|
398
|
+
|
|
399
|
+
AWS_REQUEST_ID = "aws.request_id"
|
|
400
|
+
"""
|
|
401
|
+
The AWS request ID as returned in the response headers.
|
|
402
|
+
Example: "79b9da39-b7ae-508a-a6bc-864b2829c622"
|
|
403
|
+
"""
|
|
404
|
+
|
|
393
405
|
CACHE_HIT = "cache.hit"
|
|
394
406
|
"""
|
|
395
407
|
A boolean indicating whether the requested data was found in the cache.
|
|
@@ -414,6 +426,12 @@ class SPANDATA:
|
|
|
414
426
|
Example: "10.1.2.80"
|
|
415
427
|
"""
|
|
416
428
|
|
|
429
|
+
CLOUD_REGION = "cloud.region"
|
|
430
|
+
"""
|
|
431
|
+
The geographical region the resource is running.
|
|
432
|
+
Example: "us-east-1"
|
|
433
|
+
"""
|
|
434
|
+
|
|
417
435
|
CODE_FILEPATH = "code.filepath"
|
|
418
436
|
"""
|
|
419
437
|
.. deprecated::
|
|
@@ -541,6 +559,12 @@ class SPANDATA:
|
|
|
541
559
|
Example: my_user
|
|
542
560
|
"""
|
|
543
561
|
|
|
562
|
+
ERROR_TYPE = "error.type"
|
|
563
|
+
"""
|
|
564
|
+
Describes a class of error the operation ended with.
|
|
565
|
+
Example: "timeout"
|
|
566
|
+
"""
|
|
567
|
+
|
|
544
568
|
GEN_AI_AGENT_NAME = "gen_ai.agent.name"
|
|
545
569
|
"""
|
|
546
570
|
The name of the agent being used.
|
|
@@ -880,6 +904,12 @@ class SPANDATA:
|
|
|
880
904
|
Example: GET
|
|
881
905
|
"""
|
|
882
906
|
|
|
907
|
+
HTTP_REQUEST_RESEND_COUNT = "http.request.resend_count"
|
|
908
|
+
"""
|
|
909
|
+
The ordinal number of request resending attempt (for any reason, including redirects).
|
|
910
|
+
Example: 2
|
|
911
|
+
"""
|
|
912
|
+
|
|
883
913
|
HTTP_ROUTE = "http.route"
|
|
884
914
|
"""
|
|
885
915
|
The matched route, that is, the path template used to match the request.
|
|
@@ -977,12 +1007,24 @@ class SPANDATA:
|
|
|
977
1007
|
Example: "com.example.ExampleService/exampleMethod"
|
|
978
1008
|
"""
|
|
979
1009
|
|
|
1010
|
+
RPC_SERVICE = "rpc.service"
|
|
1011
|
+
"""
|
|
1012
|
+
The full (logical) name of the service being called, including its package name, if applicable.
|
|
1013
|
+
Example: "myService.BestService"
|
|
1014
|
+
"""
|
|
1015
|
+
|
|
980
1016
|
RPC_RESPONSE_STATUS_CODE = "rpc.response.status_code"
|
|
981
1017
|
"""
|
|
982
1018
|
Status code of the RPC returned by the RPC server or generated by the client.
|
|
983
1019
|
Example: "DEADLINE_EXCEEDED"
|
|
984
1020
|
"""
|
|
985
1021
|
|
|
1022
|
+
RPC_SYSTEM_NAME = "rpc.system.name"
|
|
1023
|
+
"""
|
|
1024
|
+
A string identifying the remoting system.
|
|
1025
|
+
Example: "aws-api"
|
|
1026
|
+
"""
|
|
1027
|
+
|
|
986
1028
|
SERVER_ADDRESS = "server.address"
|
|
987
1029
|
"""
|
|
988
1030
|
Name of the database host.
|
|
@@ -1164,6 +1206,32 @@ class SPANDATA:
|
|
|
1164
1206
|
Example: "prod"
|
|
1165
1207
|
"""
|
|
1166
1208
|
|
|
1209
|
+
SENTRY_IS_LOCALHOST = "sentry.is_localhost"
|
|
1210
|
+
"""
|
|
1211
|
+
Indicates whether a telemetry item was sent on a host, device or browser on
|
|
1212
|
+
a localhost URL or IP address.
|
|
1213
|
+
|
|
1214
|
+
Used in inbound filters.
|
|
1215
|
+
"""
|
|
1216
|
+
|
|
1217
|
+
SENTRY_KIND = "sentry.kind"
|
|
1218
|
+
"""
|
|
1219
|
+
Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.
|
|
1220
|
+
Example: "client", "server", "producer", "consumer", "internal"
|
|
1221
|
+
"""
|
|
1222
|
+
|
|
1223
|
+
SENTRY_OP = "sentry.op"
|
|
1224
|
+
"""
|
|
1225
|
+
The operation of a span.
|
|
1226
|
+
Example: "http.client"
|
|
1227
|
+
"""
|
|
1228
|
+
|
|
1229
|
+
SENTRY_ORIGIN = "sentry.origin"
|
|
1230
|
+
"""
|
|
1231
|
+
The origin of the instrumentation (e.g. span, log, etc.)
|
|
1232
|
+
Example: "auto.http.otel.fastify"
|
|
1233
|
+
"""
|
|
1234
|
+
|
|
1167
1235
|
SENTRY_RELEASE = "sentry.release"
|
|
1168
1236
|
"""
|
|
1169
1237
|
The Sentry release.
|
|
@@ -1194,6 +1262,13 @@ class SPANDATA:
|
|
|
1194
1262
|
Example: ["AtexitIntegration", "StdlibIntegration"]
|
|
1195
1263
|
"""
|
|
1196
1264
|
|
|
1265
|
+
USER_AGENT_ORIGINAL = "user_agent.original"
|
|
1266
|
+
"""
|
|
1267
|
+
Value of the HTTP User-Agent header sent by the client.
|
|
1268
|
+
|
|
1269
|
+
Used in inbound filters.
|
|
1270
|
+
"""
|
|
1271
|
+
|
|
1197
1272
|
|
|
1198
1273
|
class SPANSTATUS:
|
|
1199
1274
|
"""
|
|
@@ -1849,4 +1924,4 @@ DEFAULT_OPTIONS = _get_default_options()
|
|
|
1849
1924
|
del _get_default_options
|
|
1850
1925
|
|
|
1851
1926
|
|
|
1852
|
-
VERSION = "2.
|
|
1927
|
+
VERSION = "2.72.0"
|
|
@@ -42,7 +42,7 @@ def capture_checkin(
|
|
|
42
42
|
status: "Optional[str]" = None,
|
|
43
43
|
duration: "Optional[float]" = None,
|
|
44
44
|
monitor_config: "Optional[MonitorConfig]" = None,
|
|
45
|
-
) -> str:
|
|
45
|
+
) -> "Optional[str]":
|
|
46
46
|
check_in_event = _create_check_in_event(
|
|
47
47
|
monitor_slug=monitor_slug,
|
|
48
48
|
check_in_id=check_in_id,
|
|
@@ -51,7 +51,8 @@ def capture_checkin(
|
|
|
51
51
|
monitor_config=monitor_config,
|
|
52
52
|
)
|
|
53
53
|
|
|
54
|
-
sentry_sdk.capture_event(check_in_event)
|
|
54
|
+
if sentry_sdk.capture_event(check_in_event) is None:
|
|
55
|
+
return None
|
|
55
56
|
|
|
56
57
|
logger.debug(
|
|
57
58
|
f"[Crons] Captured check-in ({check_in_event.get('check_in_id')}): {check_in_event.get('monitor_slug')} -> {check_in_event.get('status')}"
|
|
@@ -88,7 +88,7 @@ def _get_query(asgi_scope: "Any") -> "Optional[str]":
|
|
|
88
88
|
return urllib.parse.unquote(qs.decode("latin-1"))
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
def _get_ip(asgi_scope: "Any") -> str:
|
|
91
|
+
def _get_ip(asgi_scope: "Any") -> "Optional[str]":
|
|
92
92
|
"""
|
|
93
93
|
Extract IP Address from the ASGI scope based on request headers with fallback to scope client.
|
|
94
94
|
"""
|
|
@@ -103,7 +103,10 @@ def _get_ip(asgi_scope: "Any") -> str:
|
|
|
103
103
|
except KeyError:
|
|
104
104
|
pass
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
if asgi_scope.get("client"):
|
|
107
|
+
return asgi_scope["client"][0]
|
|
108
|
+
|
|
109
|
+
return None
|
|
107
110
|
|
|
108
111
|
|
|
109
112
|
def _get_request_data(
|
|
@@ -46,6 +46,7 @@ from sentry_sdk.utils import (
|
|
|
46
46
|
AnnotatedValue,
|
|
47
47
|
_get_aws_sigv4_signed_headers_from_authorization_header,
|
|
48
48
|
_get_aws_sigv4_signed_headers_from_url_query_string,
|
|
49
|
+
_is_localhost,
|
|
49
50
|
_register_control_flow_exception,
|
|
50
51
|
capture_internal_exceptions,
|
|
51
52
|
ensure_integration_enabled,
|
|
@@ -146,6 +147,21 @@ class AioHttpIntegration(Integration):
|
|
|
146
147
|
scope.clear_breadcrumbs()
|
|
147
148
|
scope.add_event_processor(_make_request_processor(weak_request))
|
|
148
149
|
|
|
150
|
+
scope.set_attribute(
|
|
151
|
+
SPANDATA.SENTRY_IS_LOCALHOST,
|
|
152
|
+
_is_localhost(
|
|
153
|
+
client_ip=_get_client_ip(request),
|
|
154
|
+
host_header=request.headers.get("Host"),
|
|
155
|
+
forwarded_host_header=request.headers.get(
|
|
156
|
+
"X-Forwarded-Host"
|
|
157
|
+
),
|
|
158
|
+
),
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
user_agent = request.headers.get("User-Agent")
|
|
162
|
+
if user_agent:
|
|
163
|
+
scope.set_attribute(SPANDATA.USER_AGENT_ORIGINAL, user_agent)
|
|
164
|
+
|
|
149
165
|
headers = dict(request.headers)
|
|
150
166
|
|
|
151
167
|
span_ctx: "ContextManager[Union[Span, StreamedSpan]]"
|
|
@@ -643,6 +659,17 @@ def _make_request_processor(
|
|
|
643
659
|
return aiohttp_processor
|
|
644
660
|
|
|
645
661
|
|
|
662
|
+
def _get_client_ip(request: "Request") -> "Optional[str]":
|
|
663
|
+
x_forwarded_for = request.headers.get("X-Forwarded-For", "").split(",")[0].strip()
|
|
664
|
+
if x_forwarded_for:
|
|
665
|
+
return x_forwarded_for
|
|
666
|
+
|
|
667
|
+
if request.headers.get("X-Real-IP"):
|
|
668
|
+
return request.headers["X-Real-IP"]
|
|
669
|
+
|
|
670
|
+
return request.remote
|
|
671
|
+
|
|
672
|
+
|
|
646
673
|
def _capture_exception() -> "ExcInfo":
|
|
647
674
|
exc_info = sys.exc_info()
|
|
648
675
|
event, hint = event_from_exception(
|
|
@@ -5,7 +5,6 @@ from functools import wraps
|
|
|
5
5
|
from typing import TYPE_CHECKING, cast
|
|
6
6
|
|
|
7
7
|
import sentry_sdk
|
|
8
|
-
from sentry_sdk.ai.monitoring import record_token_usage
|
|
9
8
|
from sentry_sdk.ai.utils import (
|
|
10
9
|
GEN_AI_ALLOWED_MESSAGE_ROLES,
|
|
11
10
|
get_start_span_function,
|
|
@@ -714,13 +713,23 @@ def _set_output_data(
|
|
|
714
713
|
span, SPANDATA.GEN_AI_RESPONSE_TEXT, output_messages["response"]
|
|
715
714
|
)
|
|
716
715
|
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
716
|
+
if input_tokens is not None:
|
|
717
|
+
set_on_span(SPANDATA.GEN_AI_USAGE_INPUT_TOKENS, input_tokens)
|
|
718
|
+
|
|
719
|
+
if cache_read_input_tokens is not None:
|
|
720
|
+
set_on_span(SPANDATA.GEN_AI_USAGE_INPUT_TOKENS_CACHED, cache_read_input_tokens)
|
|
721
|
+
|
|
722
|
+
if cache_write_input_tokens is not None:
|
|
723
|
+
set_on_span(
|
|
724
|
+
SPANDATA.GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE,
|
|
725
|
+
cache_write_input_tokens,
|
|
726
|
+
)
|
|
727
|
+
|
|
728
|
+
if output_tokens is not None:
|
|
729
|
+
set_on_span(SPANDATA.GEN_AI_USAGE_OUTPUT_TOKENS, output_tokens)
|
|
730
|
+
|
|
731
|
+
if input_tokens is not None and output_tokens is not None:
|
|
732
|
+
set_on_span(SPANDATA.GEN_AI_USAGE_TOTAL_TOKENS, input_tokens + output_tokens)
|
|
724
733
|
|
|
725
734
|
|
|
726
735
|
def _sentry_patched_create_sync(f: "Any", *args: "Any", **kwargs: "Any") -> "Any":
|
|
@@ -45,6 +45,7 @@ from sentry_sdk.utils import (
|
|
|
45
45
|
HAS_REAL_CONTEXTVARS,
|
|
46
46
|
ContextVar,
|
|
47
47
|
_get_installed_modules,
|
|
48
|
+
_is_localhost,
|
|
48
49
|
capture_internal_exceptions,
|
|
49
50
|
event_from_exception,
|
|
50
51
|
has_data_collection_enabled,
|
|
@@ -232,6 +233,24 @@ class SentryAsgiMiddleware:
|
|
|
232
233
|
processor = partial(self.event_processor, asgi_scope=scope)
|
|
233
234
|
sentry_scope.add_event_processor(processor)
|
|
234
235
|
|
|
236
|
+
headers = _get_headers(scope)
|
|
237
|
+
sentry_scope.set_attribute(
|
|
238
|
+
SPANDATA.SENTRY_IS_LOCALHOST,
|
|
239
|
+
_is_localhost(
|
|
240
|
+
client_ip=_get_ip(scope),
|
|
241
|
+
url_host=scope.get("server")[0]
|
|
242
|
+
if scope.get("server") and not headers.get("host")
|
|
243
|
+
else None,
|
|
244
|
+
host_header=headers.get("host"),
|
|
245
|
+
forwarded_host_header=headers.get("x-forwarded-host"),
|
|
246
|
+
),
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
if headers.get("user-agent"):
|
|
250
|
+
sentry_scope.set_attribute(
|
|
251
|
+
SPANDATA.USER_AGENT_ORIGINAL, headers["user-agent"]
|
|
252
|
+
)
|
|
253
|
+
|
|
235
254
|
ty = scope["type"]
|
|
236
255
|
(
|
|
237
256
|
transaction_name,
|
|
@@ -254,17 +273,16 @@ class SentryAsgiMiddleware:
|
|
|
254
273
|
"network.protocol.name": ty,
|
|
255
274
|
}
|
|
256
275
|
|
|
257
|
-
|
|
276
|
+
ip = _get_ip(scope)
|
|
277
|
+
if ip:
|
|
258
278
|
client_options = sentry_sdk.get_client().options
|
|
259
279
|
if has_data_collection_enabled(client_options):
|
|
260
280
|
if client_options["data_collection"]["user_info"]:
|
|
261
281
|
sentry_scope.set_attribute(
|
|
262
|
-
SPANDATA.USER_IP_ADDRESS,
|
|
282
|
+
SPANDATA.USER_IP_ADDRESS, ip
|
|
263
283
|
)
|
|
264
284
|
elif should_send_default_pii():
|
|
265
|
-
sentry_scope.set_attribute(
|
|
266
|
-
SPANDATA.USER_IP_ADDRESS, _get_ip(scope)
|
|
267
|
-
)
|
|
285
|
+
sentry_scope.set_attribute(SPANDATA.USER_IP_ADDRESS, ip)
|
|
268
286
|
|
|
269
287
|
if ty in ("http", "websocket"):
|
|
270
288
|
if (
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from sentry_sdk.integrations import DidNotEnable, Integration, _check_minimum_version
|
|
2
|
+
from sentry_sdk.integrations.boto3._client import _patch_botocore_client
|
|
3
|
+
from sentry_sdk.integrations.boto3.consts import IDENTIFIER, ORIGIN
|
|
4
|
+
from sentry_sdk.utils import parse_version
|
|
5
|
+
|
|
6
|
+
try:
|
|
7
|
+
from botocore import __version__ as BOTOCORE_VERSION
|
|
8
|
+
except ImportError:
|
|
9
|
+
raise DidNotEnable("botocore is not installed")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Boto3Integration(Integration):
|
|
13
|
+
identifier = IDENTIFIER
|
|
14
|
+
origin = ORIGIN
|
|
15
|
+
|
|
16
|
+
@staticmethod
|
|
17
|
+
def setup_once() -> None:
|
|
18
|
+
version = parse_version(BOTOCORE_VERSION)
|
|
19
|
+
_check_minimum_version(Boto3Integration, version, "botocore")
|
|
20
|
+
|
|
21
|
+
_patch_botocore_client()
|