sentry-sdk 2.2.0__tar.gz → 2.2.1__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 (157) hide show
  1. {sentry_sdk-2.2.0/sentry_sdk.egg-info → sentry_sdk-2.2.1}/PKG-INFO +2 -1
  2. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/consts.py +2 -1
  3. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/celery/__init__.py +54 -5
  4. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1/sentry_sdk.egg-info}/PKG-INFO +2 -1
  5. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk.egg-info/requires.txt +1 -0
  6. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/setup.py +2 -2
  7. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/LICENSE +0 -0
  8. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/MANIFEST.in +0 -0
  9. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/README.md +0 -0
  10. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/pyproject.toml +0 -0
  11. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/__init__.py +0 -0
  12. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/_compat.py +0 -0
  13. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/_lru_cache.py +0 -0
  14. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/_queue.py +0 -0
  15. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/_types.py +0 -0
  16. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/_werkzeug.py +0 -0
  17. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/ai/__init__.py +0 -0
  18. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/ai/monitoring.py +0 -0
  19. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/ai/utils.py +0 -0
  20. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/api.py +0 -0
  21. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/attachments.py +0 -0
  22. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/client.py +0 -0
  23. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/crons/__init__.py +0 -0
  24. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/crons/api.py +0 -0
  25. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/crons/consts.py +0 -0
  26. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/crons/decorator.py +0 -0
  27. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/db/__init__.py +0 -0
  28. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/db/explain_plan/__init__.py +0 -0
  29. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/db/explain_plan/django.py +0 -0
  30. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/db/explain_plan/sqlalchemy.py +0 -0
  31. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/debug.py +0 -0
  32. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/envelope.py +0 -0
  33. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/hub.py +0 -0
  34. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/__init__.py +0 -0
  35. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/_asgi_common.py +0 -0
  36. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/_wsgi_common.py +0 -0
  37. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/aiohttp.py +0 -0
  38. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/anthropic.py +0 -0
  39. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/argv.py +0 -0
  40. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/ariadne.py +0 -0
  41. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/arq.py +0 -0
  42. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/asgi.py +0 -0
  43. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/asyncio.py +0 -0
  44. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/asyncpg.py +0 -0
  45. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/atexit.py +0 -0
  46. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/aws_lambda.py +0 -0
  47. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/beam.py +0 -0
  48. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/boto3.py +0 -0
  49. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/bottle.py +0 -0
  50. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/celery/beat.py +0 -0
  51. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/celery/utils.py +0 -0
  52. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/chalice.py +0 -0
  53. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/clickhouse_driver.py +0 -0
  54. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/cloud_resource_context.py +0 -0
  55. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/cohere.py +0 -0
  56. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/dedupe.py +0 -0
  57. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/__init__.py +0 -0
  58. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/asgi.py +0 -0
  59. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/caching.py +0 -0
  60. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/middleware.py +0 -0
  61. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/signals_handlers.py +0 -0
  62. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/templates.py +0 -0
  63. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/transactions.py +0 -0
  64. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/django/views.py +0 -0
  65. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/excepthook.py +0 -0
  66. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/executing.py +0 -0
  67. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/falcon.py +0 -0
  68. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/fastapi.py +0 -0
  69. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/flask.py +0 -0
  70. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/gcp.py +0 -0
  71. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/gnu_backtrace.py +0 -0
  72. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/gql.py +0 -0
  73. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/graphene.py +0 -0
  74. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/grpc/__init__.py +0 -0
  75. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/grpc/aio/__init__.py +0 -0
  76. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/grpc/aio/client.py +0 -0
  77. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/grpc/aio/server.py +0 -0
  78. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/grpc/client.py +0 -0
  79. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/grpc/server.py +0 -0
  80. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/httpx.py +0 -0
  81. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/huey.py +0 -0
  82. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/huggingface_hub.py +0 -0
  83. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/langchain.py +0 -0
  84. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/logging.py +0 -0
  85. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/loguru.py +0 -0
  86. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/modules.py +0 -0
  87. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/openai.py +0 -0
  88. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/opentelemetry/__init__.py +0 -0
  89. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/opentelemetry/consts.py +0 -0
  90. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/opentelemetry/integration.py +0 -0
  91. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/opentelemetry/propagator.py +0 -0
  92. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/opentelemetry/span_processor.py +0 -0
  93. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/pure_eval.py +0 -0
  94. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/pymongo.py +0 -0
  95. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/pyramid.py +0 -0
  96. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/quart.py +0 -0
  97. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/redis/__init__.py +0 -0
  98. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/redis/asyncio.py +0 -0
  99. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/rq.py +0 -0
  100. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/sanic.py +0 -0
  101. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/serverless.py +0 -0
  102. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/socket.py +0 -0
  103. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/spark/__init__.py +0 -0
  104. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/spark/spark_driver.py +0 -0
  105. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/spark/spark_worker.py +0 -0
  106. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/sqlalchemy.py +0 -0
  107. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/starlette.py +0 -0
  108. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/starlite.py +0 -0
  109. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/stdlib.py +0 -0
  110. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/strawberry.py +0 -0
  111. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/threading.py +0 -0
  112. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/tornado.py +0 -0
  113. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/trytond.py +0 -0
  114. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/integrations/wsgi.py +0 -0
  115. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/metrics.py +0 -0
  116. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/monitor.py +0 -0
  117. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/profiler.py +0 -0
  118. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/py.typed +0 -0
  119. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/scope.py +0 -0
  120. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/scrubber.py +0 -0
  121. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/serializer.py +0 -0
  122. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/session.py +0 -0
  123. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/sessions.py +0 -0
  124. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/spotlight.py +0 -0
  125. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/tracing.py +0 -0
  126. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/tracing_utils.py +0 -0
  127. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/transport.py +0 -0
  128. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/types.py +0 -0
  129. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/utils.py +0 -0
  130. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk/worker.py +0 -0
  131. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk.egg-info/SOURCES.txt +0 -0
  132. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk.egg-info/dependency_links.txt +0 -0
  133. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk.egg-info/not-zip-safe +0 -0
  134. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/sentry_sdk.egg-info/top_level.txt +0 -0
  135. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/setup.cfg +0 -0
  136. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_api.py +0 -0
  137. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_basics.py +0 -0
  138. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_client.py +0 -0
  139. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_conftest.py +0 -0
  140. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_crons.py +0 -0
  141. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_envelope.py +0 -0
  142. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_exceptiongroup.py +0 -0
  143. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_lru_cache.py +0 -0
  144. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_metrics.py +0 -0
  145. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_monitor.py +0 -0
  146. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_new_scopes_compat.py +0 -0
  147. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_new_scopes_compat_event.py +0 -0
  148. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_profiler.py +0 -0
  149. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_propagationcontext.py +0 -0
  150. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_scope.py +0 -0
  151. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_scrubber.py +0 -0
  152. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_serializer.py +0 -0
  153. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_sessions.py +0 -0
  154. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_spotlight.py +0 -0
  155. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_transport.py +0 -0
  156. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_types.py +0 -0
  157. {sentry_sdk-2.2.0 → sentry_sdk-2.2.1}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sentry-sdk
3
- Version: 2.2.0
3
+ Version: 2.2.1
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
@@ -60,6 +60,7 @@ Requires-Dist: blinker>=1.1; extra == "flask"
60
60
  Requires-Dist: markupsafe; extra == "flask"
61
61
  Provides-Extra: grpcio
62
62
  Requires-Dist: grpcio>=1.21.1; extra == "grpcio"
63
+ Requires-Dist: protobuf>=3.8.0; extra == "grpcio"
63
64
  Provides-Extra: httpx
64
65
  Requires-Dist: httpx>=0.16.0; extra == "httpx"
65
66
  Provides-Extra: huey
@@ -388,6 +388,7 @@ class OP:
388
388
  LANGCHAIN_AGENT = "ai.agent.langchain"
389
389
  LANGCHAIN_CHAT_COMPLETIONS_CREATE = "ai.chat_completions.create.langchain"
390
390
  QUEUE_PROCESS = "queue.process"
391
+ QUEUE_PUBLISH = "queue.publish"
391
392
  QUEUE_SUBMIT_ARQ = "queue.submit.arq"
392
393
  QUEUE_TASK_ARQ = "queue.task.arq"
393
394
  QUEUE_SUBMIT_CELERY = "queue.submit.celery"
@@ -488,4 +489,4 @@ DEFAULT_OPTIONS = _get_default_options()
488
489
  del _get_default_options
489
490
 
490
491
 
491
- VERSION = "2.2.0"
492
+ VERSION = "2.2.1"
@@ -1,4 +1,5 @@
1
1
  import sys
2
+ from collections.abc import Mapping
2
3
  from functools import wraps
3
4
 
4
5
  import sentry_sdk
@@ -47,6 +48,7 @@ try:
47
48
  Retry,
48
49
  SoftTimeLimitExceeded,
49
50
  )
51
+ from kombu import Producer # type: ignore
50
52
  except ImportError:
51
53
  raise DidNotEnable("Celery not installed")
52
54
 
@@ -82,6 +84,7 @@ class CeleryIntegration(Integration):
82
84
  _patch_build_tracer()
83
85
  _patch_task_apply_async()
84
86
  _patch_worker_exit()
87
+ _patch_producer_publish()
85
88
 
86
89
  # This logger logs every status of every task that ran on the worker.
87
90
  # Meaning that every task's breadcrumbs are full of stuff like "Task
@@ -330,11 +333,12 @@ def _set_messaging_destination_name(task, span):
330
333
  """Set "messaging.destination.name" tag for span"""
331
334
  with capture_internal_exceptions():
332
335
  delivery_info = task.request.delivery_info
333
- routing_key = delivery_info.get("routing_key")
334
- if delivery_info.get("exchange") == "" and routing_key is not None:
335
- # Empty exchange indicates the default exchange, meaning the tasks
336
- # are sent to the queue with the same name as the routing key.
337
- span.set_data(SPANDATA.MESSAGING_DESTINATION_NAME, routing_key)
336
+ if delivery_info:
337
+ routing_key = delivery_info.get("routing_key")
338
+ if delivery_info.get("exchange") == "" and routing_key is not None:
339
+ # Empty exchange indicates the default exchange, meaning the tasks
340
+ # are sent to the queue with the same name as the routing key.
341
+ span.set_data(SPANDATA.MESSAGING_DESTINATION_NAME, routing_key)
338
342
 
339
343
 
340
344
  def _wrap_task_call(task, f):
@@ -433,3 +437,48 @@ def _patch_worker_exit():
433
437
  sentry_sdk.flush()
434
438
 
435
439
  Worker.workloop = sentry_workloop
440
+
441
+
442
+ def _patch_producer_publish():
443
+ # type: () -> None
444
+ original_publish = Producer.publish
445
+
446
+ @ensure_integration_enabled(CeleryIntegration, original_publish)
447
+ def sentry_publish(self, *args, **kwargs):
448
+ # type: (Producer, *Any, **Any) -> Any
449
+ kwargs_headers = kwargs.get("headers", {})
450
+ if not isinstance(kwargs_headers, Mapping):
451
+ # Ensure kwargs_headers is a Mapping, so we can safely call get().
452
+ # We don't expect this to happen, but it's better to be safe. Even
453
+ # if it does happen, only our instrumentation breaks. This line
454
+ # does not overwrite kwargs["headers"], so the original publish
455
+ # method will still work.
456
+ kwargs_headers = {}
457
+
458
+ task_name = kwargs_headers.get("task")
459
+ task_id = kwargs_headers.get("id")
460
+ retries = kwargs_headers.get("retries")
461
+
462
+ routing_key = kwargs.get("routing_key")
463
+ exchange = kwargs.get("exchange")
464
+
465
+ with sentry_sdk.start_span(op=OP.QUEUE_PUBLISH, description=task_name) as span:
466
+ if task_id is not None:
467
+ span.set_data(SPANDATA.MESSAGING_MESSAGE_ID, task_id)
468
+
469
+ if exchange == "" and routing_key is not None:
470
+ # Empty exchange indicates the default exchange, meaning messages are
471
+ # routed to the queue with the same name as the routing key.
472
+ span.set_data(SPANDATA.MESSAGING_DESTINATION_NAME, routing_key)
473
+
474
+ if retries is not None:
475
+ span.set_data(SPANDATA.MESSAGING_MESSAGE_RETRY_COUNT, retries)
476
+
477
+ with capture_internal_exceptions():
478
+ span.set_data(
479
+ SPANDATA.MESSAGING_SYSTEM, self.connection.transport.driver_type
480
+ )
481
+
482
+ return original_publish(self, *args, **kwargs)
483
+
484
+ Producer.publish = sentry_publish
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sentry-sdk
3
- Version: 2.2.0
3
+ Version: 2.2.1
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
@@ -60,6 +60,7 @@ Requires-Dist: blinker>=1.1; extra == "flask"
60
60
  Requires-Dist: markupsafe; extra == "flask"
61
61
  Provides-Extra: grpcio
62
62
  Requires-Dist: grpcio>=1.21.1; extra == "grpcio"
63
+ Requires-Dist: protobuf>=3.8.0; extra == "grpcio"
63
64
  Provides-Extra: httpx
64
65
  Requires-Dist: httpx>=0.16.0; extra == "httpx"
65
66
  Provides-Extra: huey
@@ -47,6 +47,7 @@ markupsafe
47
47
 
48
48
  [grpcio]
49
49
  grpcio>=1.21.1
50
+ protobuf>=3.8.0
50
51
 
51
52
  [httpx]
52
53
  httpx>=0.16.0
@@ -21,7 +21,7 @@ def get_file_text(file_name):
21
21
 
22
22
  setup(
23
23
  name="sentry-sdk",
24
- version="2.2.0",
24
+ version="2.2.1",
25
25
  author="Sentry Team and Contributors",
26
26
  author_email="hello@sentry.io",
27
27
  url="https://github.com/getsentry/sentry-python",
@@ -57,7 +57,7 @@ setup(
57
57
  "falcon": ["falcon>=1.4"],
58
58
  "fastapi": ["fastapi>=0.79.0"],
59
59
  "flask": ["flask>=0.11", "blinker>=1.1", "markupsafe"],
60
- "grpcio": ["grpcio>=1.21.1"],
60
+ "grpcio": ["grpcio>=1.21.1", "protobuf>=3.8.0"],
61
61
  "httpx": ["httpx>=0.16.0"],
62
62
  "huey": ["huey>=2"],
63
63
  "huggingface_hub": ["huggingface_hub>=0.22"],
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes