sentry-sdk 2.68.0__tar.gz → 2.69.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.
Files changed (539) hide show
  1. {sentry_sdk-2.68.0/sentry_sdk.egg-info → sentry_sdk-2.69.0}/PKG-INFO +2 -1
  2. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/pyproject.toml +6 -0
  3. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_batcher.py +8 -2
  4. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_span_batcher.py +17 -8
  5. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_types.py +2 -2
  6. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/ai/_openai_completions_api.py +11 -7
  7. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/ai/_openai_responses_api.py +41 -5
  8. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/client.py +0 -7
  9. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/consts.py +7 -1
  10. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/data_collection.py +19 -20
  11. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/__init__.py +12 -4
  12. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/_wsgi_common.py +30 -21
  13. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/aiohttp.py +50 -26
  14. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/anthropic.py +171 -85
  15. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/ariadne.py +10 -1
  16. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/asgi.py +4 -0
  17. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/aws_lambda.py +5 -0
  18. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/boto3.py +68 -19
  19. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/bottle.py +12 -0
  20. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/celery/__init__.py +3 -2
  21. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/clickhouse_driver.py +38 -5
  22. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/cohere.py +18 -9
  23. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/__init__.py +100 -5
  24. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/dramatiq.py +14 -6
  25. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/falcon.py +5 -0
  26. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/fastapi.py +63 -36
  27. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/flask.py +12 -1
  28. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/gcp.py +11 -5
  29. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/google_genai/__init__.py +6 -6
  30. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/google_genai/streaming.py +1 -1
  31. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/google_genai/utils.py +77 -37
  32. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/httpx.py +106 -92
  33. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/httpx2.py +107 -95
  34. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/huggingface_hub.py +2 -2
  35. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/langchain.py +28 -7
  36. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/langgraph.py +51 -49
  37. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/litellm.py +17 -6
  38. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/litestar.py +9 -1
  39. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/logging.py +20 -4
  40. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/loguru.py +18 -4
  41. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/mcp.py +56 -74
  42. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai.py +107 -57
  43. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/__init__.py +22 -22
  44. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/patches/agent_run.py +16 -12
  45. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/patches/error_tracing.py +4 -2
  46. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/patches/models.py +4 -4
  47. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/patches/runner.py +4 -4
  48. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/patches/tools.py +4 -3
  49. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/spans/ai_client.py +5 -6
  50. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/spans/execute_tool.py +1 -1
  51. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/spans/handoff.py +7 -3
  52. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/spans/invoke_agent.py +4 -4
  53. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/utils.py +13 -15
  54. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/__init__.py +13 -63
  55. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/patches/agent_run.py +0 -16
  56. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/spans/ai_client.py +7 -4
  57. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/spans/execute_tool.py +3 -3
  58. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py +4 -3
  59. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/utils.py +30 -4
  60. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pyramid.py +13 -0
  61. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pyreqwest.py +40 -25
  62. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/quart.py +11 -0
  63. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/sanic.py +8 -1
  64. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/sqlalchemy.py +12 -0
  65. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/starlette.py +89 -26
  66. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/starlite.py +9 -1
  67. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/stdlib.py +185 -16
  68. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/strawberry.py +10 -1
  69. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/tornado.py +24 -6
  70. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/wsgi.py +1 -0
  71. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/scope.py +4 -0
  72. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/tracing_utils.py +103 -30
  73. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/transport.py +1 -1
  74. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/types.py +3 -0
  75. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/utils.py +77 -2
  76. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0/sentry_sdk.egg-info}/PKG-INFO +2 -1
  77. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk.egg-info/SOURCES.txt +2 -0
  78. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/setup.py +2 -1
  79. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/conftest.py +1 -1
  80. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aiohttp/test_aiohttp.py +209 -1
  81. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/anthropic/test_anthropic.py +6 -42
  82. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/ariadne/test_ariadne.py +28 -4
  83. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/test_aws_lambda.py +6 -3
  84. sentry_sdk-2.69.0/tests/integrations/boto3/test_aws_http_connection.py +230 -0
  85. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/boto3/test_s3.py +159 -5
  86. sentry_sdk-2.69.0/tests/integrations/boto3/test_trace_propagation.py +216 -0
  87. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/bottle/test_bottle.py +166 -0
  88. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/clickhouse_driver/test_clickhouse_driver.py +930 -53
  89. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/cohere/test_cohere.py +325 -0
  90. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/asgi/test_asgi.py +194 -0
  91. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/urls.py +5 -0
  92. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/views.py +11 -1
  93. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_basic.py +349 -426
  94. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_cache_module.py +1 -4
  95. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_data_scrubbing.py +0 -9
  96. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/dramatiq/test_dramatiq.py +69 -0
  97. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/falcon/test_falcon.py +22 -0
  98. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/fastapi/test_fastapi.py +115 -1
  99. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/flask/test_flask.py +163 -0
  100. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/gcp/test_gcp.py +107 -0
  101. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/google_genai/test_google_genai.py +12 -24
  102. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx/test_httpx.py +869 -0
  103. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx2/test_httpx2.py +869 -0
  104. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/huggingface_hub/test_huggingface_hub.py +8 -6
  105. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/langchain/test_langchain.py +107 -60
  106. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/langgraph/test_langgraph.py +546 -19
  107. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/litellm/test_litellm.py +258 -0
  108. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/litestar/test_litestar.py +73 -1
  109. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/logging/test_logging.py +36 -0
  110. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/loguru/test_loguru.py +48 -0
  111. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/mcp/test_mcp.py +89 -0
  112. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/openai/test_openai.py +14 -37
  113. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/openai_agents/test_openai_agents.py +46 -47
  114. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pydantic_ai/test_pydantic_ai.py +506 -10
  115. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pyramid/test_pyramid.py +158 -0
  116. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pyreqwest/test_pyreqwest.py +799 -3
  117. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/quart/test_quart.py +57 -4
  118. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/requests/test_requests.py +0 -4
  119. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/sanic/test_sanic.py +105 -1
  120. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/starlette/test_starlette.py +182 -0
  121. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/starlite/test_starlite.py +73 -1
  122. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/stdlib/test_httplib.py +239 -7
  123. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/strawberry/test_strawberry.py +44 -0
  124. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/tornado/test_tornado.py +147 -1
  125. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/utils.py +32 -0
  126. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/profiler/test_continuous_profiler.py +23 -6
  127. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_data_collection.py +107 -2
  128. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_logs.py +33 -0
  129. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_utils.py +379 -7
  130. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_decorator.py +100 -20
  131. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_span_batcher.py +31 -0
  132. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/LICENSE +0 -0
  133. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/MANIFEST.in +0 -0
  134. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/README.md +0 -0
  135. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/__init__.py +0 -0
  136. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_compat.py +0 -0
  137. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_init_implementation.py +0 -0
  138. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_log_batcher.py +0 -0
  139. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_lru_cache.py +0 -0
  140. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_metrics_batcher.py +0 -0
  141. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_queue.py +0 -0
  142. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/_werkzeug.py +0 -0
  143. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/ai/__init__.py +0 -0
  144. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/ai/consts.py +0 -0
  145. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/ai/monitoring.py +0 -0
  146. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/ai/utils.py +0 -0
  147. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/api.py +0 -0
  148. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/attachments.py +0 -0
  149. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/crons/__init__.py +0 -0
  150. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/crons/api.py +0 -0
  151. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/crons/consts.py +0 -0
  152. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/crons/decorator.py +0 -0
  153. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/debug.py +0 -0
  154. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/envelope.py +0 -0
  155. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/feature_flags.py +0 -0
  156. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/hub.py +0 -0
  157. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/_asgi_common.py +0 -0
  158. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/aiomysql.py +0 -0
  159. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/argv.py +0 -0
  160. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/arq.py +0 -0
  161. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/asyncio.py +0 -0
  162. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/asyncpg.py +0 -0
  163. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/atexit.py +0 -0
  164. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/beam.py +0 -0
  165. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/celery/beat.py +0 -0
  166. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/celery/utils.py +0 -0
  167. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/chalice.py +0 -0
  168. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/cloud_resource_context.py +0 -0
  169. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/dedupe.py +0 -0
  170. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/asgi.py +0 -0
  171. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/caching.py +0 -0
  172. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/middleware.py +0 -0
  173. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/signals_handlers.py +0 -0
  174. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/tasks.py +0 -0
  175. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/templates.py +0 -0
  176. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/transactions.py +0 -0
  177. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/django/views.py +0 -0
  178. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/excepthook.py +0 -0
  179. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/executing.py +0 -0
  180. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/gnu_backtrace.py +0 -0
  181. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/google_genai/consts.py +0 -0
  182. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/gql.py +0 -0
  183. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/graphene.py +0 -0
  184. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/grpc/__init__.py +0 -0
  185. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/grpc/aio/__init__.py +0 -0
  186. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/grpc/aio/client.py +0 -0
  187. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/grpc/aio/server.py +0 -0
  188. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/grpc/client.py +0 -0
  189. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/grpc/consts.py +0 -0
  190. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/grpc/server.py +0 -0
  191. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/huey.py +0 -0
  192. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/launchdarkly.py +0 -0
  193. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/modules.py +0 -0
  194. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/consts.py +0 -0
  195. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/patches/__init__.py +0 -0
  196. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/spans/__init__.py +0 -0
  197. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openai_agents/spans/agent_workflow.py +0 -0
  198. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/openfeature.py +0 -0
  199. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/opentelemetry/__init__.py +0 -0
  200. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/opentelemetry/consts.py +0 -0
  201. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/opentelemetry/integration.py +0 -0
  202. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/opentelemetry/propagator.py +0 -0
  203. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/opentelemetry/span_processor.py +0 -0
  204. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/otlp.py +0 -0
  205. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pure_eval.py +0 -0
  206. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/consts.py +0 -0
  207. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/patches/__init__.py +0 -0
  208. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/patches/graph_nodes.py +0 -0
  209. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/patches/tools.py +0 -0
  210. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/spans/__init__.py +0 -0
  211. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pydantic_ai/spans/utils.py +0 -0
  212. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/pymongo.py +0 -0
  213. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/ray.py +0 -0
  214. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/__init__.py +0 -0
  215. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/_async_common.py +0 -0
  216. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/_sync_common.py +0 -0
  217. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/consts.py +0 -0
  218. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/modules/__init__.py +0 -0
  219. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/modules/caches.py +0 -0
  220. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/modules/queries.py +0 -0
  221. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/rb.py +0 -0
  222. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/redis.py +0 -0
  223. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/redis_cluster.py +0 -0
  224. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/redis_py_cluster_legacy.py +0 -0
  225. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/redis/utils.py +0 -0
  226. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/rq.py +0 -0
  227. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/rust_tracing.py +0 -0
  228. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/serverless.py +0 -0
  229. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/socket.py +0 -0
  230. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/spark/__init__.py +0 -0
  231. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/spark/spark_driver.py +0 -0
  232. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/spark/spark_worker.py +0 -0
  233. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/statsig.py +0 -0
  234. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/sys_exit.py +0 -0
  235. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/threading.py +0 -0
  236. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/trytond.py +0 -0
  237. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/typer.py +0 -0
  238. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/unleash.py +0 -0
  239. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/integrations/unraisablehook.py +0 -0
  240. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/logger.py +0 -0
  241. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/metrics.py +0 -0
  242. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/monitor.py +0 -0
  243. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/profiler/__init__.py +0 -0
  244. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/profiler/continuous_profiler.py +0 -0
  245. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/profiler/transaction_profiler.py +0 -0
  246. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/profiler/utils.py +0 -0
  247. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/py.typed +0 -0
  248. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/scrubber.py +0 -0
  249. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/serializer.py +0 -0
  250. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/session.py +0 -0
  251. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/sessions.py +0 -0
  252. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/spotlight.py +0 -0
  253. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/traces.py +0 -0
  254. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/tracing.py +0 -0
  255. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk/worker.py +0 -0
  256. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk.egg-info/dependency_links.txt +0 -0
  257. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk.egg-info/entry_points.txt +0 -0
  258. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk.egg-info/not-zip-safe +0 -0
  259. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk.egg-info/requires.txt +0 -0
  260. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/sentry_sdk.egg-info/top_level.txt +0 -0
  261. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/setup.cfg +0 -0
  262. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/__init__.py +0 -0
  263. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/__init__.py +0 -0
  264. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aiohttp/__init__.py +0 -0
  265. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aiohttp/aiohttp_helpers/__init__.py +0 -0
  266. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aiohttp/aiohttp_helpers/helpers.py +0 -0
  267. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aiomysql/__init__.py +0 -0
  268. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aiomysql/test_aiomysql.py +0 -0
  269. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/anthropic/__init__.py +0 -0
  270. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/argv/test_argv.py +0 -0
  271. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/ariadne/__init__.py +0 -0
  272. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/arq/__init__.py +0 -0
  273. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/arq/test_arq.py +0 -0
  274. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asgi/__init__.py +0 -0
  275. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asgi/test_asgi.py +0 -0
  276. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asyncio/__init__.py +0 -0
  277. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asyncio/test_asyncio.py +0 -0
  278. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asyncpg/__init__.py +0 -0
  279. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asyncpg/asyncpg_helpers/__init__.py +0 -0
  280. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asyncpg/asyncpg_helpers/helpers.py +0 -0
  281. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/asyncpg/test_asyncpg.py +0 -0
  282. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/__init__.py +0 -0
  283. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions/BasicException/index.py +0 -0
  284. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions/BasicOk/index.py +0 -0
  285. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions/InitError/index.py +0 -0
  286. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions/TimeoutError/index.py +0 -0
  287. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionAllowlist/.gitignore +0 -0
  288. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionAllowlist/.lock +0 -0
  289. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionAllowlist/index.py +0 -0
  290. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionDenylist/.gitignore +0 -0
  291. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionDenylist/.lock +0 -0
  292. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionDenylist/index.py +0 -0
  293. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionOff/.gitignore +0 -0
  294. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionOff/.lock +0 -0
  295. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionOff/index.py +0 -0
  296. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryAllowlist/.gitignore +0 -0
  297. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryAllowlist/index.py +0 -0
  298. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryDenylist/.gitignore +0 -0
  299. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryDenylist/index.py +0 -0
  300. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryOff/.gitignore +0 -0
  301. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUrlQueryOff/index.py +0 -0
  302. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOff/.gitignore +0 -0
  303. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOff/index.py +0 -0
  304. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOn/.gitignore +0 -0
  305. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkDataCollectionUserInfoOn/index.py +0 -0
  306. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSendDefaultPii/.gitignore +0 -0
  307. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSendDefaultPii/.lock +0 -0
  308. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSendDefaultPii/index.py +0 -0
  309. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreaming/.gitignore +0 -0
  310. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreaming/index.py +0 -0
  311. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollection/.gitignore +0 -0
  312. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingDataCollection/index.py +0 -0
  313. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingPii/.gitignore +0 -0
  314. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/BasicOkSpanStreamingPii/index.py +0 -0
  315. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceDisabled/.gitignore +0 -0
  316. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceDisabled/index.py +0 -0
  317. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceEnabled/.gitignore +0 -0
  318. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorPerformanceEnabled/index.py +0 -0
  319. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorSpanStreaming/.gitignore +0 -0
  320. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/RaiseErrorSpanStreaming/index.py +0 -0
  321. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TimeoutErrorScopeModified/.gitignore +0 -0
  322. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TimeoutErrorScopeModified/index.py +0 -0
  323. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TracesSampler/.gitignore +0 -0
  324. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/lambda_functions_with_embedded_sdk/TracesSampler/index.py +0 -0
  325. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/aws_lambda/utils.py +0 -0
  326. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/beam/__init__.py +0 -0
  327. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/beam/test_beam.py +0 -0
  328. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/boto3/__init__.py +0 -0
  329. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/boto3/aws_mock.py +0 -0
  330. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/boto3/s3_list.xml +0 -0
  331. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/bottle/__init__.py +0 -0
  332. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/celery/__init__.py +0 -0
  333. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/celery/integration_tests/__init__.py +0 -0
  334. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/celery/integration_tests/test_celery_beat_cron_monitoring.py +0 -0
  335. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/celery/test_celery.py +0 -0
  336. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/celery/test_celery_beat_crons.py +0 -0
  337. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/celery/test_update_celery_task_headers.py +0 -0
  338. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/chalice/__init__.py +0 -0
  339. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/chalice/test_chalice.py +0 -0
  340. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/clickhouse_driver/__init__.py +0 -0
  341. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/cloud_resource_context/__init__.py +0 -0
  342. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/cloud_resource_context/test_cloud_resource_context.py +0 -0
  343. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/cohere/__init__.py +0 -0
  344. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/conftest.py +0 -0
  345. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/__init__.py +0 -0
  346. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/asgi/__init__.py +0 -0
  347. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/asgi/image.png +0 -0
  348. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/django_helpers/__init__.py +0 -0
  349. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/django_helpers/views.py +0 -0
  350. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/__init__.py +0 -0
  351. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/asgi.py +0 -0
  352. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/custom_urls.py +0 -0
  353. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/manage.py +0 -0
  354. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/management/__init__.py +0 -0
  355. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/management/commands/__init__.py +0 -0
  356. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/management/commands/mycrash.py +0 -0
  357. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/middleware.py +0 -0
  358. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/routing.py +0 -0
  359. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/settings.py +0 -0
  360. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/signals.py +0 -0
  361. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/templates/error.html +0 -0
  362. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/templates/trace_meta.html +0 -0
  363. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/templates/user_name.html +0 -0
  364. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/myapp/wsgi.py +0 -0
  365. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_db_query_data.py +0 -0
  366. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_db_transactions.py +0 -0
  367. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_middleware.py +0 -0
  368. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_tasks.py +0 -0
  369. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/test_transactions.py +0 -0
  370. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/django/utils.py +0 -0
  371. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/dramatiq/__init__.py +0 -0
  372. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/excepthook/test_excepthook.py +0 -0
  373. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/falcon/__init__.py +0 -0
  374. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/fastapi/__init__.py +0 -0
  375. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/fastapi/photo.jpg +0 -0
  376. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/fastmcp/__init__.py +0 -0
  377. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/fastmcp/test_fastmcp.py +0 -0
  378. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/flask/__init__.py +0 -0
  379. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/gcp/__init__.py +0 -0
  380. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/google_genai/__init__.py +0 -0
  381. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/gql/__init__.py +0 -0
  382. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/gql/test_gql.py +0 -0
  383. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/graphene/__init__.py +0 -0
  384. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/graphene/test_graphene.py +0 -0
  385. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/__init__.py +0 -0
  386. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/compile_test_services.sh +0 -0
  387. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/grpc_test_service_pb2.py +0 -0
  388. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/grpc_test_service_pb2.pyi +0 -0
  389. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/grpc_test_service_pb2_grpc.py +0 -0
  390. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/protos/grpc_test_service.proto +0 -0
  391. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/test_grpc.py +0 -0
  392. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/grpc/test_grpc_aio.py +0 -0
  393. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx/__init__.py +0 -0
  394. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx/httpx_helpers/__init__.py +0 -0
  395. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx/httpx_helpers/helpers.py +0 -0
  396. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx2/__init__.py +0 -0
  397. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx2/httpx2_helpers/__init__.py +0 -0
  398. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/httpx2/httpx2_helpers/helpers.py +0 -0
  399. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/huey/__init__.py +0 -0
  400. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/huey/test_huey.py +0 -0
  401. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/huggingface_hub/__init__.py +0 -0
  402. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/langchain/__init__.py +0 -0
  403. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/langgraph/__init__.py +0 -0
  404. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/launchdarkly/__init__.py +0 -0
  405. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/launchdarkly/test_launchdarkly.py +0 -0
  406. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/litellm/__init__.py +0 -0
  407. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/litestar/__init__.py +0 -0
  408. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/loguru/__init__.py +0 -0
  409. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/mcp/__init__.py +0 -0
  410. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/modules/test_modules.py +0 -0
  411. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/openai/__init__.py +0 -0
  412. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/openai_agents/__init__.py +0 -0
  413. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/openfeature/__init__.py +0 -0
  414. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/openfeature/test_openfeature.py +0 -0
  415. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/opentelemetry/__init__.py +0 -0
  416. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/opentelemetry/test_entry_points.py +0 -0
  417. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/opentelemetry/test_experimental.py +0 -0
  418. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/opentelemetry/test_propagator.py +0 -0
  419. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/opentelemetry/test_span_processor.py +0 -0
  420. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/otlp/__init__.py +0 -0
  421. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/otlp/test_otlp.py +0 -0
  422. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pure_eval/__init__.py +0 -0
  423. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pure_eval/test_pure_eval.py +0 -0
  424. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pydantic_ai/__init__.py +0 -0
  425. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pymongo/__init__.py +0 -0
  426. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pymongo/test_pymongo.py +0 -0
  427. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pyramid/__init__.py +0 -0
  428. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pyreqwest/__init__.py +0 -0
  429. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pyreqwest/pyreqwest_helpers/__init__.py +0 -0
  430. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/pyreqwest/pyreqwest_helpers/helpers.py +0 -0
  431. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/quart/__init__.py +0 -0
  432. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/ray/__init__.py +0 -0
  433. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/ray/test_ray.py +0 -0
  434. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/__init__.py +0 -0
  435. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/asyncio/__init__.py +0 -0
  436. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/asyncio/test_redis_asyncio.py +0 -0
  437. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/cluster/__init__.py +0 -0
  438. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/cluster/test_redis_cluster.py +0 -0
  439. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/cluster_asyncio/__init__.py +0 -0
  440. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/cluster_asyncio/test_redis_cluster_asyncio.py +0 -0
  441. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/test_redis.py +0 -0
  442. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/test_redis_cache_module.py +0 -0
  443. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis/test_redis_cache_module_async.py +0 -0
  444. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis_py_cluster_legacy/__init__.py +0 -0
  445. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/redis_py_cluster_legacy/test_redis_py_cluster_legacy.py +0 -0
  446. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/requests/__init__.py +0 -0
  447. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/rq/__init__.py +0 -0
  448. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/rq/test_rq.py +0 -0
  449. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/rust_tracing/__init__.py +0 -0
  450. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/rust_tracing/test_rust_tracing.py +0 -0
  451. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/sanic/__init__.py +0 -0
  452. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/serverless/test_serverless.py +0 -0
  453. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/socket/__init__.py +0 -0
  454. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/socket/test_socket.py +0 -0
  455. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/spark/__init__.py +0 -0
  456. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/spark/test_spark.py +0 -0
  457. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/sqlalchemy/__init__.py +0 -0
  458. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/sqlalchemy/sqlalchemy_helpers/__init__.py +0 -0
  459. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/sqlalchemy/sqlalchemy_helpers/helpers.py +0 -0
  460. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/sqlalchemy/test_sqlalchemy.py +0 -0
  461. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/starlette/__init__.py +0 -0
  462. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/starlette/photo.jpg +0 -0
  463. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/starlette/templates/trace_meta.html +0 -0
  464. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/starlite/__init__.py +0 -0
  465. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/statsig/__init__.py +0 -0
  466. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/statsig/test_statsig.py +0 -0
  467. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/stdlib/__init__.py +0 -0
  468. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/stdlib/httplib_helpers/__init__.py +0 -0
  469. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/stdlib/httplib_helpers/helpers.py +0 -0
  470. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/stdlib/test_subprocess.py +0 -0
  471. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/strawberry/__init__.py +0 -0
  472. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/sys_exit/test_sys_exit.py +0 -0
  473. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/test_gnu_backtrace.py +0 -0
  474. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/threading/test_threading.py +0 -0
  475. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/tornado/__init__.py +0 -0
  476. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/trytond/__init__.py +0 -0
  477. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/trytond/test_trytond.py +0 -0
  478. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/typer/__init__.py +0 -0
  479. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/typer/test_typer.py +0 -0
  480. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/unleash/__init__.py +0 -0
  481. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/unleash/test_unleash.py +0 -0
  482. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/unleash/testutils.py +0 -0
  483. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/unraisablehook/test_unraisablehook.py +0 -0
  484. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/integrations/wsgi/test_wsgi.py +0 -0
  485. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/new_scopes_compat/__init__.py +0 -0
  486. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/new_scopes_compat/conftest.py +0 -0
  487. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/new_scopes_compat/test_new_scopes_compat.py +0 -0
  488. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/new_scopes_compat/test_new_scopes_compat_event.py +0 -0
  489. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/profiler/__init__.py +0 -0
  490. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/profiler/test_transaction_profiler.py +0 -0
  491. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test.key +0 -0
  492. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test.pem +0 -0
  493. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_ai_integration_deactivation.py +0 -0
  494. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_ai_monitoring.py +0 -0
  495. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_api.py +0 -0
  496. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_attributes.py +0 -0
  497. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_basics.py +0 -0
  498. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_client.py +0 -0
  499. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_conftest.py +0 -0
  500. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_crons.py +0 -0
  501. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_dsc.py +0 -0
  502. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_envelope.py +0 -0
  503. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_exceptiongroup.py +0 -0
  504. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_feature_flags.py +0 -0
  505. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_full_stack_frames.py +0 -0
  506. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_gevent.py +0 -0
  507. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_import.py +0 -0
  508. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_lru_cache.py +0 -0
  509. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_metrics.py +0 -0
  510. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_monitor.py +0 -0
  511. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_propagationcontext.py +0 -0
  512. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_scope.py +0 -0
  513. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_scrubber.py +0 -0
  514. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_serializer.py +0 -0
  515. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_sessions.py +0 -0
  516. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_shadowed_module.py +0 -0
  517. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_spotlight.py +0 -0
  518. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_tracing_utils.py +0 -0
  519. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_transport.py +0 -0
  520. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/test_types.py +0 -0
  521. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_baggage.py +0 -0
  522. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_conversation_id.py +0 -0
  523. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_deprecated.py +0 -0
  524. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_http_headers.py +0 -0
  525. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_ignore_status_codes.py +0 -0
  526. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_integration_tests.py +0 -0
  527. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_misc.py +0 -0
  528. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_noop_span.py +0 -0
  529. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_propagation.py +0 -0
  530. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_sample_rand.py +0 -0
  531. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_sample_rand_propagation.py +0 -0
  532. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_sampling.py +0 -0
  533. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_span_name.py +0 -0
  534. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_span_origin.py +0 -0
  535. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/tracing/test_span_streaming.py +0 -0
  536. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/utils/__init__.py +0 -0
  537. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/utils/test_contextvars.py +0 -0
  538. {sentry_sdk-2.68.0 → sentry_sdk-2.69.0}/tests/utils/test_general.py +0 -0
  539. {sentry_sdk-2.68.0 → sentry_sdk-2.69.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.68.0
3
+ Version: 2.69.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
@@ -23,6 +23,7 @@ Classifier: Programming Language :: Python :: 3.11
23
23
  Classifier: Programming Language :: Python :: 3.12
24
24
  Classifier: Programming Language :: Python :: 3.13
25
25
  Classifier: Programming Language :: Python :: 3.14
26
+ Classifier: Programming Language :: Python :: 3.15
26
27
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
28
  Requires-Python: >=3.6
28
29
  Description-Content-Type: text/markdown
@@ -74,6 +74,12 @@ typing = [
74
74
  "pydantic-ai-slim>=2.23.0",
75
75
  "langchain-core>=1.5.3",
76
76
  "huggingface-hub>=1.26.1",
77
+ "anthropic>=1.2.0",
78
+ "google-genai>=2.21.0",
79
+ "openai>=3.7.0",
80
+ "tiktoken>=0.14.0",
81
+ "aiohttp>=3.14.3",
82
+ "openai-agents>=0.22.0",
77
83
  ]
78
84
  test = [
79
85
  "dataclasses ; python_full_version < '3.7'",
@@ -6,7 +6,7 @@ from datetime import datetime, timezone
6
6
  from typing import TYPE_CHECKING, Generic, TypeVar
7
7
 
8
8
  from sentry_sdk.envelope import Envelope, Item, PayloadRef
9
- from sentry_sdk.utils import format_timestamp
9
+ from sentry_sdk.utils import capture_internal_exceptions, format_timestamp
10
10
 
11
11
  if TYPE_CHECKING:
12
12
  from typing import Any, Callable, Optional
@@ -100,7 +100,13 @@ class Batcher(Generic[T]):
100
100
  while self._running:
101
101
  self._flush_event.wait(self.FLUSH_WAIT_TIME + random.random())
102
102
  self._flush_event.clear()
103
- self._flush()
103
+ # A failure to serialize or send one batch must not kill the
104
+ # flusher thread. If it did, the buffer would keep filling with
105
+ # nothing draining it, and every later log or metric would be
106
+ # dropped for the rest of the process lifetime. Swallow and log
107
+ # the error instead so the loop keeps running.
108
+ with capture_internal_exceptions():
109
+ self._flush()
104
110
 
105
111
  def add(self, item: "T") -> None:
106
112
  # Bail out if the current thread is already executing batcher code.
@@ -9,7 +9,11 @@ from typing import TYPE_CHECKING
9
9
 
10
10
  from sentry_sdk._batcher import Batcher
11
11
  from sentry_sdk.envelope import Envelope, Item, PayloadRef
12
- from sentry_sdk.utils import format_timestamp, serialize_attribute
12
+ from sentry_sdk.utils import (
13
+ capture_internal_exceptions,
14
+ format_timestamp,
15
+ serialize_attribute,
16
+ )
13
17
 
14
18
  if TYPE_CHECKING:
15
19
  from typing import Any, Callable, Optional
@@ -91,14 +95,19 @@ class SpanBatcher(Batcher["SpanJSON"]):
91
95
  self._flush_event.wait(timeout=self.FLUSH_WAIT_TIME + jitter)
92
96
  self._flush_event.clear()
93
97
 
94
- self._flush(only_pending=True)
98
+ # A failure in one flush must not kill the flusher thread, or the
99
+ # span buffer would keep filling with nothing draining it and every
100
+ # later span would be dropped for the rest of the process lifetime.
101
+ # Swallow and log the error instead so the loop keeps running.
102
+ with capture_internal_exceptions():
103
+ self._flush(only_pending=True)
95
104
 
96
- if (
97
- time.monotonic() - self._last_full_flush
98
- >= self.FLUSH_WAIT_TIME + jitter
99
- ):
100
- self._flush()
101
- self._last_full_flush = time.monotonic()
105
+ if (
106
+ time.monotonic() - self._last_full_flush
107
+ >= self.FLUSH_WAIT_TIME + jitter
108
+ ):
109
+ self._flush()
110
+ self._last_full_flush = time.monotonic()
102
111
 
103
112
  def add(self, span: "SpanJSON") -> None:
104
113
  # Bail out if the current thread is already executing batcher code.
@@ -188,7 +188,7 @@ if TYPE_CHECKING:
188
188
  gen_ai: "GenAICollectionUserOptions"
189
189
  database_query_data: bool
190
190
  queues: bool
191
- stack_frame_variables: bool
191
+ stack_frame_variables: "Union[bool, KeyValueCollectionBehaviour]"
192
192
  frame_context_lines: int
193
193
 
194
194
  class DataCollection(TypedDict):
@@ -202,7 +202,7 @@ if TYPE_CHECKING:
202
202
  gen_ai: "GenAICollectionBehaviour"
203
203
  database_query_data: bool
204
204
  queues: bool
205
- stack_frame_variables: bool
205
+ stack_frame_variables: "Union[bool, KeyValueCollectionBehaviour]"
206
206
  frame_context_lines: int
207
207
 
208
208
  # "critical" is an alias of "fatal" recognized by Relay
@@ -1,11 +1,13 @@
1
1
  from collections.abc import Iterable
2
- from typing import TYPE_CHECKING
2
+ from typing import TYPE_CHECKING, cast
3
3
 
4
4
  if TYPE_CHECKING:
5
- from typing import Union
5
+ from typing import TypeGuard, Union
6
6
 
7
7
  from openai.types.chat import (
8
8
  ChatCompletionContentPartParam,
9
+ ChatCompletionContentPartRefusalParam,
10
+ ChatCompletionContentPartTextParam,
9
11
  ChatCompletionMessageParam,
10
12
  ChatCompletionSystemMessageParam,
11
13
  ChatCompletionToolUnionParam,
@@ -14,13 +16,15 @@ if TYPE_CHECKING:
14
16
  from sentry_sdk._types import TextPart, ToolDefinition
15
17
 
16
18
 
17
- def _is_system_instruction(message: "ChatCompletionMessageParam") -> bool:
19
+ def _is_system_instruction(
20
+ message: "ChatCompletionMessageParam",
21
+ ) -> "TypeGuard[ChatCompletionSystemMessageParam]":
18
22
  return isinstance(message, dict) and message.get("role") == "system"
19
23
 
20
24
 
21
25
  def _get_system_instructions(
22
26
  messages: "Iterable[ChatCompletionMessageParam]",
23
- ) -> "list[ChatCompletionMessageParam]":
27
+ ) -> "list[ChatCompletionSystemMessageParam]":
24
28
  if not isinstance(messages, Iterable):
25
29
  return []
26
30
 
@@ -28,7 +32,7 @@ def _get_system_instructions(
28
32
 
29
33
 
30
34
  def _get_text_items(
31
- content: "Union[str, Iterable[ChatCompletionContentPartParam]]",
35
+ content: "Union[str, Iterable[Union[ChatCompletionContentPartParam, ChatCompletionContentPartTextParam, ChatCompletionContentPartRefusalParam]]]",
32
36
  ) -> "list[str]":
33
37
  if isinstance(content, str):
34
38
  return [content]
@@ -36,10 +40,10 @@ def _get_text_items(
36
40
  if not isinstance(content, Iterable):
37
41
  return []
38
42
 
39
- text_items = []
43
+ text_items: "list[str]" = []
40
44
  for part in content:
41
45
  if isinstance(part, dict) and part.get("type") == "text":
42
- text = part.get("text", None)
46
+ text = cast("ChatCompletionContentPartTextParam", part).get("text", None)
43
47
  if text is not None:
44
48
  text_items.append(text)
45
49
 
@@ -1,18 +1,23 @@
1
- from typing import TYPE_CHECKING, Iterable
1
+ from typing import TYPE_CHECKING, Iterable, cast
2
2
 
3
3
  if TYPE_CHECKING:
4
- from typing import Iterable, Union
4
+ from typing import Iterable, TypeGuard, Union
5
5
 
6
6
  from openai.types.responses import (
7
7
  ResponseInputItemParam,
8
8
  ResponseInputParam,
9
+ ResponseInputTextParam,
9
10
  ToolParam,
10
11
  )
12
+ from openai.types.responses.easy_input_message_param import EasyInputMessageParam
13
+ from openai.types.responses.response_input_item_param import Message
11
14
 
12
- from sentry_sdk._types import ToolDefinition
15
+ from sentry_sdk._types import TextPart, ToolDefinition
13
16
 
14
17
 
15
- def _is_system_instruction(message: "ResponseInputItemParam") -> bool:
18
+ def _is_system_instruction(
19
+ message: "ResponseInputItemParam",
20
+ ) -> "TypeGuard[Union[EasyInputMessageParam, Message]]":
16
21
  if not isinstance(message, dict) or not message.get("role") == "system":
17
22
  return False
18
23
 
@@ -21,13 +26,44 @@ def _is_system_instruction(message: "ResponseInputItemParam") -> bool:
21
26
 
22
27
  def _get_system_instructions(
23
28
  messages: "Union[str, ResponseInputParam]",
24
- ) -> "list[ResponseInputItemParam]":
29
+ ) -> "list[Union[EasyInputMessageParam, Message]]":
25
30
  if not isinstance(messages, list):
26
31
  return []
27
32
 
28
33
  return [message for message in messages if _is_system_instruction(message)]
29
34
 
30
35
 
36
+ def _transform_system_instructions(
37
+ system_instructions: "list[Union[EasyInputMessageParam, Message]]",
38
+ ) -> "list[TextPart]":
39
+ instruction_text_parts: "list[TextPart]" = []
40
+
41
+ for instruction in system_instructions:
42
+ if not isinstance(instruction, dict):
43
+ continue
44
+
45
+ content = instruction.get("content")
46
+ if content is None:
47
+ continue
48
+
49
+ if isinstance(content, str):
50
+ instruction_text_parts.append({"type": "text", "content": content})
51
+ continue
52
+
53
+ if not isinstance(content, Iterable):
54
+ continue
55
+
56
+ for part in content:
57
+ if not isinstance(part, dict) or part.get("type") != "input_text":
58
+ continue
59
+
60
+ text = cast("ResponseInputTextParam", part).get("text", None)
61
+ if text is not None:
62
+ instruction_text_parts.append({"type": "text", "content": text})
63
+
64
+ return instruction_text_parts
65
+
66
+
31
67
  def _transform_tool_definitions(tools: "Iterable[ToolParam]") -> "list[ToolDefinition]":
32
68
  """
33
69
  Transform tool definitions to the schema used by the "gen_ai.tool.definitions" attribute.
@@ -648,13 +648,6 @@ class _Client(BaseClient):
648
648
 
649
649
  self.session_flusher = SessionFlusher(capture_func=_capture_envelope)
650
650
 
651
- if self.options.get("enable_logs", False) or self.options[
652
- "_experiments"
653
- ].get("enable_logs", False):
654
- logger.warning(
655
- "The enable_logs option has no effect and will be removed in the next major."
656
- )
657
-
658
651
  self.log_batcher = LogBatcher(
659
652
  capture_func=_capture_envelope,
660
653
  record_lost_func=_record_lost_event,
@@ -878,6 +878,12 @@ class SPANDATA:
878
878
  Example: GET
879
879
  """
880
880
 
881
+ HTTP_ROUTE = "http.route"
882
+ """
883
+ The matched route, that is, the path template used to match the request.
884
+ Example: /users/{id}
885
+ """
886
+
881
887
  HTTP_QUERY = "http.query"
882
888
  """
883
889
  The Query string present in the URL.
@@ -1840,4 +1846,4 @@ DEFAULT_OPTIONS = _get_default_options()
1840
1846
  del _get_default_options
1841
1847
 
1842
1848
 
1843
- VERSION = "2.68.0"
1849
+ VERSION = "2.69.0"
@@ -23,14 +23,12 @@ Resolution precedence (see :func:`_resolve_data_collection`):
23
23
  """
24
24
 
25
25
  import warnings
26
- from typing import TYPE_CHECKING, List, Mapping, Optional, Union, cast
26
+ from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, Union, cast
27
27
  from urllib.parse import parse_qs, urlencode
28
28
 
29
29
  from sentry_sdk._types import SENSITIVE_DATA_SUBSTITUTE
30
30
 
31
31
  if TYPE_CHECKING:
32
- from typing import Any, Dict
33
-
34
32
  from sentry_sdk._types import (
35
33
  DataCollection,
36
34
  GenAICollectionBehaviour,
@@ -41,11 +39,12 @@ if TYPE_CHECKING:
41
39
 
42
40
  # ``http_bodies`` defaults to this (collect everything the
43
41
  # platform supports); an empty list is the explicit opt-out.
44
- # response bodyies are not included here because we don't
45
- # currently capture them (as of Jul 7 2026)
42
+ # ``incoming_response`` is not included here because we don't
43
+ # currently capture incoming response bodies.
46
44
  _ALL_HTTP_BODY_TYPES = [
47
45
  "incoming_request",
48
46
  "outgoing_request",
47
+ "outgoing_response",
49
48
  ]
50
49
 
51
50
  # Default number of source lines captured above and below a stack frame.
@@ -190,29 +189,31 @@ def _map_from_send_default_pii(
190
189
 
191
190
  def _resolve_explicit(
192
191
  d: "dict[str, Any]",
193
- include_local_variables: bool,
194
- include_source_context: bool,
195
192
  ) -> "DataCollection":
196
193
  """
197
194
  Build a fully-resolved ``DataCollection`` from a user-supplied
198
195
  ``data_collection`` dict, filling in spec defaults for any omitted or
199
- partially-specified field. Frame fields fall back to the legacy
200
- ``include_local_variables`` / ``include_source_context`` options when unset.
196
+ partially-specified field.
201
197
  """
202
- # frame_context_lines accepts an integer or a boolean fallback (spec: True
203
- # -> platform default of 5, False -> 0). bool is a subclass of int, so
204
- # coerce explicitly before treating it as a line count.
205
198
  frame_context_lines = d.get("frame_context_lines")
206
199
  if frame_context_lines is None:
207
- frame_context_lines = (
208
- _DEFAULT_FRAME_CONTEXT_LINES if include_source_context else 0
209
- )
200
+ frame_context_lines = _DEFAULT_FRAME_CONTEXT_LINES
210
201
  elif isinstance(frame_context_lines, bool):
211
202
  frame_context_lines = _DEFAULT_FRAME_CONTEXT_LINES if frame_context_lines else 0
203
+ else:
204
+ if not isinstance(frame_context_lines, int) or frame_context_lines < 0:
205
+ raise ValueError(
206
+ "Invalid `frame_context_lines` value: Must be 0 or greater."
207
+ )
212
208
 
213
- stack_frame_variables = d.get("stack_frame_variables")
214
- if stack_frame_variables is None:
215
- stack_frame_variables = include_local_variables
209
+ raw_stack_frame_variables = d.get("stack_frame_variables", True)
210
+ stack_frame_variables: "Union[bool, KeyValueCollectionBehaviour]"
211
+
212
+ stack_frame_variables = (
213
+ _kvcb_from_value(raw_stack_frame_variables)
214
+ if isinstance(raw_stack_frame_variables, dict)
215
+ else bool(raw_stack_frame_variables)
216
+ )
216
217
 
217
218
  # http_bodies: omitted means "all valid types"; [] is the explicit opt-out.
218
219
  http_bodies = d.get("http_bodies")
@@ -323,8 +324,6 @@ def _resolve_data_collection(options: "Dict[str, Any]") -> "DataCollection":
323
324
  )
324
325
  return _resolve_explicit(
325
326
  user_dc,
326
- include_local_variables,
327
- include_source_context,
328
327
  )
329
328
 
330
329
  return _map_from_send_default_pii(
@@ -1,4 +1,5 @@
1
1
  from abc import ABC, abstractmethod
2
+ from itertools import zip_longest
2
3
  from threading import Lock
3
4
  from typing import TYPE_CHECKING
4
5
 
@@ -299,10 +300,17 @@ def _check_minimum_version(
299
300
  if min_version is None:
300
301
  return
301
302
 
302
- if version < min_version:
303
- raise DidNotEnable(
304
- f"Integration only supports {package} {'.'.join(map(str, min_version))} or newer."
305
- )
303
+ # We can't use normal tuple comparison here because the version tuples might
304
+ # not have the same length, in which case they wouldn't compare as expected.
305
+ for v, min in zip_longest(version, min_version, fillvalue=0):
306
+ if v == min:
307
+ continue
308
+ elif v < min:
309
+ raise DidNotEnable(
310
+ f"Integration only supports {package} {'.'.join(map(str, min_version))} or newer."
311
+ )
312
+ elif v > min:
313
+ return
306
314
 
307
315
 
308
316
  class DidNotEnable(Exception): # noqa: N818
@@ -89,6 +89,10 @@ class RequestExtractor:
89
89
  content_length = self.content_length()
90
90
  request_info = event.get("request", {})
91
91
 
92
+ # Prior to data collection being implemented we unconditionally attached
93
+ # the request body, which is why we default to True here.
94
+ attach_request_body = True
95
+
92
96
  if has_data_collection_enabled(client.options):
93
97
  cookies = _apply_key_value_collection_filtering(
94
98
  items=dict(self.cookies()),
@@ -96,31 +100,36 @@ class RequestExtractor:
96
100
  )
97
101
  if cookies:
98
102
  request_info["cookies"] = cookies
103
+
104
+ attach_request_body = (
105
+ "incoming_request" in client.options["data_collection"]["http_bodies"]
106
+ )
99
107
  elif should_send_default_pii():
100
108
  request_info["cookies"] = dict(self.cookies())
101
109
 
102
- if not request_body_within_bounds(client, content_length):
103
- data = AnnotatedValue.removed_because_over_size_limit()
104
- else:
105
- # First read the raw body data
106
- # It is important to read this first because if it is Django
107
- # it will cache the body and then we can read the cached version
108
- # again in parsed_body() (or json() or wherever).
109
- raw_data = None
110
- try:
111
- raw_data = self.raw_data()
112
- except _RAW_DATA_EXCEPTIONS:
113
- # If DjangoRestFramework is used it already read the body for us
114
- # so reading it here will fail. We can ignore this.
115
- pass
116
-
117
- parsed_body = self.parsed_body()
118
- if parsed_body is not None:
119
- data = parsed_body
120
- elif raw_data:
121
- data = AnnotatedValue.removed_because_raw_data()
110
+ if attach_request_body:
111
+ if not request_body_within_bounds(client, content_length):
112
+ data = AnnotatedValue.removed_because_over_size_limit()
122
113
  else:
123
- data = None
114
+ # First read the raw body data
115
+ # It is important to read this first because if it is Django
116
+ # it will cache the body and then we can read the cached version
117
+ # again in parsed_body() (or json() or wherever).
118
+ raw_data = None
119
+ try:
120
+ raw_data = self.raw_data()
121
+ except _RAW_DATA_EXCEPTIONS:
122
+ # If DjangoRestFramework is used it already read the body for us
123
+ # so reading it here will fail. We can ignore this.
124
+ pass
125
+
126
+ parsed_body = self.parsed_body()
127
+ if parsed_body is not None:
128
+ data = parsed_body
129
+ elif raw_data:
130
+ data = AnnotatedValue.removed_because_raw_data()
131
+ else:
132
+ data = None
124
133
 
125
134
  if data is not None:
126
135
  request_info["data"] = data
@@ -21,9 +21,6 @@ from sentry_sdk.integrations._wsgi_common import (
21
21
  from sentry_sdk.integrations.logging import ignore_logger
22
22
  from sentry_sdk.scope import Scope, should_send_default_pii
23
23
  from sentry_sdk.sessions import track_session
24
- from sentry_sdk.traces import (
25
- SOURCE_FOR_STYLE as SEGMENT_SOURCE_FOR_STYLE,
26
- )
27
24
  from sentry_sdk.traces import (
28
25
  NoOpStreamedSpan,
29
26
  SegmentNameSource,
@@ -236,6 +233,7 @@ class AioHttpIntegration(Integration):
236
233
  },
237
234
  parent_span=None,
238
235
  )
236
+ scope.get_current_scope()._server_segment_span = span_ctx
239
237
  else:
240
238
  transaction = continue_trace(
241
239
  headers,
@@ -312,7 +310,7 @@ class AioHttpIntegration(Integration):
312
310
 
313
311
  return response
314
312
 
315
- Application._handle = sentry_app_handle
313
+ Application._handle = sentry_app_handle # type: ignore[method-assign]
316
314
 
317
315
  old_urldispatcher_resolve = UrlDispatcher.resolve
318
316
 
@@ -326,38 +324,33 @@ class AioHttpIntegration(Integration):
326
324
  if integration is None:
327
325
  return rv
328
326
 
327
+ route_info = rv.get_info()
328
+ pattern = route_info.get("path") or route_info.get("formatter")
329
+
330
+ server_span = sentry_sdk.get_current_scope()._server_segment_span
331
+ if server_span is not None and pattern is not None:
332
+ server_span.set_attribute(SPANDATA.HTTP_ROUTE, pattern)
333
+
329
334
  name = None
330
335
 
331
336
  try:
332
337
  if integration.transaction_style == "handler_name":
333
338
  name = transaction_from_function(rv.handler)
334
339
  elif integration.transaction_style == "method_and_path_pattern":
335
- route_info = rv.get_info()
336
- pattern = route_info.get("path") or route_info.get("formatter")
337
340
  name = "{} {}".format(request.method, pattern)
338
341
  except Exception:
339
342
  pass
340
343
 
341
344
  if name is not None:
342
- current_span = sentry_sdk.get_current_span()
343
- if isinstance(current_span, StreamedSpan) and not isinstance(
344
- current_span, NoOpStreamedSpan
345
- ):
346
- current_span._segment.name = name
347
- current_span._segment.set_attribute(
348
- "sentry.segment.name.source",
349
- SEGMENT_SOURCE_FOR_STYLE[integration.transaction_style].value,
350
- )
351
- else:
352
- current_scope = sentry_sdk.get_current_scope()
353
- current_scope.set_transaction_name(
354
- name,
355
- source=SOURCE_FOR_STYLE[integration.transaction_style],
356
- )
345
+ current_scope = sentry_sdk.get_current_scope()
346
+ current_scope.set_transaction_name(
347
+ name,
348
+ source=SOURCE_FOR_STYLE[integration.transaction_style],
349
+ )
357
350
 
358
351
  return rv
359
352
 
360
- UrlDispatcher.resolve = sentry_urldispatcher_resolve
353
+ UrlDispatcher.resolve = sentry_urldispatcher_resolve # type: ignore[method-assign]
361
354
 
362
355
  old_client_session_init = ClientSession.__init__
363
356
 
@@ -370,7 +363,7 @@ class AioHttpIntegration(Integration):
370
363
  kwargs["trace_configs"] = client_trace_configs
371
364
  return old_client_session_init(*args, **kwargs)
372
365
 
373
- ClientSession.__init__ = init
366
+ ClientSession.__init__ = init # type: ignore[method-assign]
374
367
 
375
368
 
376
369
  def create_trace_config() -> "TraceConfig":
@@ -554,6 +547,7 @@ def _make_request_processor(
554
547
  if request is None:
555
548
  return event
556
549
 
550
+ client_options = sentry_sdk.get_client().options
557
551
  with capture_internal_exceptions():
558
552
  request_info = event.setdefault("request", {})
559
553
 
@@ -563,15 +557,45 @@ def _make_request_processor(
563
557
  request.path,
564
558
  )
565
559
 
566
- request_info["query_string"] = request.query_string
560
+ if has_data_collection_enabled(client_options):
561
+ if request.query_string:
562
+ filtered_query_string = (
563
+ _apply_data_collection_filtering_to_query_string(
564
+ query_string=request.query_string,
565
+ behaviour=client_options["data_collection"][
566
+ "url_query_params"
567
+ ],
568
+ )
569
+ )
570
+ if filtered_query_string:
571
+ request_info["query_string"] = filtered_query_string
572
+ else:
573
+ request_info["query_string"] = request.query_string
574
+
567
575
  request_info["method"] = request.method
568
- request_info["env"] = {"REMOTE_ADDR": request.remote}
576
+
577
+ # REMOTE_ADDR was unconditionally set pre-data collection, so it
578
+ # continues to be set when data collection is not enabled.
579
+ if (
580
+ not has_data_collection_enabled(client_options)
581
+ or client_options["data_collection"]["user_info"]
582
+ ):
583
+ request_info["env"] = {"REMOTE_ADDR": request.remote}
569
584
  request_info["headers"] = _filter_headers(dict(request.headers))
570
585
 
571
586
  # Just attach raw data here if it is within bounds, if available.
572
587
  # Unfortunately there's no way to get structured data from aiohttp
573
588
  # without awaiting on some coroutine.
574
- request_info["data"] = get_aiohttp_request_data(request)
589
+ if has_data_collection_enabled(client_options):
590
+ if (
591
+ "incoming_request"
592
+ in client_options["data_collection"]["http_bodies"]
593
+ ):
594
+ request_info["data"] = get_aiohttp_request_data(request)
595
+ else:
596
+ # We never gated this prior to data collection, so it should be attached
597
+ # when data collection is not enabled.
598
+ request_info["data"] = get_aiohttp_request_data(request)
575
599
 
576
600
  return event
577
601