Skip to content

Commit ee8df01

Browse files
migration guide and use OP constants where reasonable
1 parent a9265cd commit ee8df01

4 files changed

Lines changed: 42 additions & 40 deletions

File tree

‎MIGRATION_GUIDE.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ Span ops are now a smaller, framework-neutral set.
4343

4444
- The Cohere integration now emits `gen_ai.chat` instead of `ai.chat_completions.create.cohere`, and `gen_ai.embeddings` instead of `ai.embeddings.create.cohere`.
4545
- The Django integration now emits `view.render` instead of `view.response.render`, `view` instead of `view.authenticate`, and `function` instead of `event.django`.
46+
- The Django, Starlette, Starlite, and Litestar integrations now emit `middleware` instead of `middleware.django`, `middleware.starlette`, `middleware.starlette.receive`, `middleware.starlette.send`, `middleware.starlite`, `middleware.starlite.receive`, `middleware.starlite.send`, `middleware.litestar`, `middleware.litestar.receive`, and `middleware.litestar.send`.
4647

4748
#### Django
4849

‎tests/integrations/litestar/test_litestar.py‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import sentry_sdk
1717
from sentry_sdk import capture_message
18+
from sentry_sdk.consts import OP
1819
from sentry_sdk.integrations.litestar import LitestarIntegration
1920
from sentry_sdk.utils import SENSITIVE_DATA_SUBSTITUTE
2021
from tests.conftest import ApproxDict
@@ -208,7 +209,7 @@ def test_middleware_spans(
208209
litestar_spans = (
209210
span
210211
for span in spans
211-
if span["attributes"]["sentry.op"] == "middleware"
212+
if span["attributes"]["sentry.op"] == OP.MIDDLEWARE
212213
and span["name"] == span["attributes"].get("middleware.name")
213214
)
214215

@@ -252,7 +253,7 @@ async def do_stuff(message):
252253
"attributes": ApproxDict(
253254
{
254255
"middleware.name": "SampleMiddleware",
255-
"sentry.op": "middleware",
256+
"sentry.op": OP.MIDDLEWARE,
256257
},
257258
),
258259
},
@@ -261,7 +262,7 @@ async def do_stuff(message):
261262
"attributes": ApproxDict(
262263
{
263264
"middleware.name": "SampleMiddleware",
264-
"sentry.op": "middleware",
265+
"sentry.op": OP.MIDDLEWARE,
265266
}
266267
),
267268
},
@@ -270,7 +271,7 @@ async def do_stuff(message):
270271
"attributes": ApproxDict(
271272
{
272273
"middleware.name": "SampleMiddleware",
273-
"sentry.op": "middleware",
274+
"sentry.op": OP.MIDDLEWARE,
274275
}
275276
),
276277
},
@@ -285,7 +286,7 @@ def is_matching_span(expected_span, actual_span):
285286
sentry_sdk.flush()
286287
spans = [item.payload for item in items]
287288
actual_litestar_spans = list(
288-
span for span in spans if span["attributes"].get("sentry.op") == "middleware"
289+
span for span in spans if span["attributes"].get("sentry.op") == OP.MIDDLEWARE
289290
)
290291

291292
assert len(actual_litestar_spans) == 3
@@ -367,7 +368,7 @@ async def my_send(*args, **kwargs):
367368
"attributes": ApproxDict(
368369
{
369370
"middleware.name": "SamplePartialReceiveSendMiddleware",
370-
"sentry.op": "middleware",
371+
"sentry.op": OP.MIDDLEWARE,
371372
}
372373
),
373374
},
@@ -376,7 +377,7 @@ async def my_send(*args, **kwargs):
376377
"attributes": ApproxDict(
377378
{
378379
"middleware.name": "SamplePartialReceiveSendMiddleware",
379-
"sentry.op": "middleware",
380+
"sentry.op": OP.MIDDLEWARE,
380381
}
381382
),
382383
},
@@ -385,7 +386,7 @@ async def my_send(*args, **kwargs):
385386
"attributes": ApproxDict(
386387
{
387388
"middleware.name": "SamplePartialReceiveSendMiddleware",
388-
"sentry.op": "middleware",
389+
"sentry.op": OP.MIDDLEWARE,
389390
}
390391
),
391392
},
@@ -398,7 +399,7 @@ def is_matching_span(expected_span, actual_span):
398399
)
399400

400401
actual_litestar_spans = list(
401-
span for span in spans if span["attributes"].get("sentry.op") == "middleware"
402+
span for span in spans if span["attributes"].get("sentry.op") == OP.MIDDLEWARE
402403
)
403404
assert len(actual_litestar_spans) == 3
404405

‎tests/integrations/starlette/test_starlette.py‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import sentry_sdk
2626
from sentry_sdk import capture_message, get_baggage, get_traceparent
2727
from sentry_sdk._types import SENSITIVE_DATA_SUBSTITUTE
28-
from sentry_sdk.consts import SPANDATA
28+
from sentry_sdk.consts import OP, SPANDATA
2929
from sentry_sdk.integrations.asgi import SentryAsgiMiddleware
3030
from sentry_sdk.integrations.logging import LoggingIntegration
3131
from sentry_sdk.integrations.starlette import (
@@ -1044,7 +1044,7 @@ def test_middleware_spans(sentry_init, capture_items):
10441044
segment = items.pop().payload
10451045
middleware_spans = [item.payload for item in items]
10461046

1047-
# In span-first, the middleware send ops appear first,
1047+
# In span-first, the `middleware` ops appear first,
10481048
# so the list needs to be reversed for the assertions below
10491049
middleware_spans.reverse()
10501050

@@ -1105,47 +1105,47 @@ def test_middleware_callback_spans(sentry_init, capture_items):
11051105

11061106
expected = [
11071107
{
1108-
"op": "middleware",
1108+
"op": OP.MIDDLEWARE,
11091109
"description": "ServerErrorMiddleware",
11101110
"middleware_name": "ServerErrorMiddleware",
11111111
},
11121112
{
1113-
"op": "middleware",
1113+
"op": OP.MIDDLEWARE,
11141114
"description": "SampleMiddleware",
11151115
"middleware_name": "SampleMiddleware",
11161116
},
11171117
{
1118-
"op": "middleware",
1118+
"op": OP.MIDDLEWARE,
11191119
"description": "ExceptionMiddleware",
11201120
"middleware_name": "ExceptionMiddleware",
11211121
},
11221122
{
1123-
"op": "middleware",
1123+
"op": OP.MIDDLEWARE,
11241124
"description": "SampleMiddleware.__call__.<locals>.do_stuff",
11251125
"middleware_name": "ExceptionMiddleware",
11261126
},
11271127
{
1128-
"op": "middleware",
1128+
"op": OP.MIDDLEWARE,
11291129
"description": "ServerErrorMiddleware.__call__.<locals>._send",
11301130
"middleware_name": "SampleMiddleware",
11311131
},
11321132
{
1133-
"op": "middleware",
1133+
"op": OP.MIDDLEWARE,
11341134
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
11351135
"middleware_name": "ServerErrorMiddleware",
11361136
},
11371137
{
1138-
"op": "middleware",
1138+
"op": OP.MIDDLEWARE,
11391139
"description": "SampleMiddleware.__call__.<locals>.do_stuff",
11401140
"middleware_name": "ExceptionMiddleware",
11411141
},
11421142
{
1143-
"op": "middleware",
1143+
"op": OP.MIDDLEWARE,
11441144
"description": "ServerErrorMiddleware.__call__.<locals>._send",
11451145
"middleware_name": "SampleMiddleware",
11461146
},
11471147
{
1148-
"op": "middleware",
1148+
"op": OP.MIDDLEWARE,
11491149
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
11501150
"middleware_name": "ServerErrorMiddleware",
11511151
},
@@ -1156,7 +1156,7 @@ def test_middleware_callback_spans(sentry_init, capture_items):
11561156
segment = items.pop().payload
11571157
middleware_spans = [item.payload for item in items]
11581158

1159-
# In span-first, the middleware send ops appear first,
1159+
# In span-first, the `middleware` ops appear first,
11601160
# so the list needs to be reversed for the assertions below
11611161
middleware_spans.reverse()
11621162

@@ -1212,39 +1212,39 @@ def test_middleware_partial_receive_send(sentry_init, capture_items):
12121212

12131213
expected = [
12141214
{
1215-
"op": "middleware",
1215+
"op": OP.MIDDLEWARE,
12161216
"description": "functools.partial(<function SamplePartialReceiveSendMiddleware.__call__.<locals>.my_send at ",
12171217
},
12181218
{
1219-
"op": "middleware",
1219+
"op": OP.MIDDLEWARE,
12201220
"description": "functools.partial(<function SamplePartialReceiveSendMiddleware.__call__.<locals>.my_send at ",
12211221
},
12221222
{
1223-
"op": "middleware",
1223+
"op": OP.MIDDLEWARE,
12241224
"description": "ExceptionMiddleware",
12251225
},
12261226
{
1227-
"op": "middleware",
1227+
"op": OP.MIDDLEWARE,
12281228
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
12291229
},
12301230
{
1231-
"op": "middleware",
1231+
"op": OP.MIDDLEWARE,
12321232
"description": "ServerErrorMiddleware.__call__.<locals>._send",
12331233
},
12341234
{
1235-
"op": "middleware",
1235+
"op": OP.MIDDLEWARE,
12361236
"description": (
12371237
"_ASGIAdapter.send.<locals>.receive"
12381238
if STARLETTE_VERSION < (0, 21)
12391239
else "_TestClientTransport.handle_request.<locals>.receive"
12401240
),
12411241
},
12421242
{
1243-
"op": "middleware",
1243+
"op": OP.MIDDLEWARE,
12441244
"description": "SamplePartialReceiveSendMiddleware",
12451245
},
12461246
{
1247-
"op": "middleware",
1247+
"op": OP.MIDDLEWARE,
12481248
"description": "ServerErrorMiddleware",
12491249
},
12501250
]

‎tests/integrations/starlite/test_starlite.py‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import sentry_sdk
1313
from sentry_sdk import capture_message
1414
from sentry_sdk._types import SENSITIVE_DATA_SUBSTITUTE
15+
from sentry_sdk.consts import OP
1516
from sentry_sdk.integrations.starlite import StarliteIntegration
1617
from tests.integrations.utils import DATA_COLLECTION_USER_INFO_CASES
1718

@@ -196,7 +197,7 @@ def test_middleware_spans(sentry_init, capture_items):
196197
middleware_spans = [
197198
item.payload
198199
for item in items
199-
if item.payload.get("attributes", {}).get("sentry.op") == "middleware"
200+
if item.payload.get("attributes", {}).get("sentry.op") == OP.MIDDLEWARE
200201
and item.payload.get("name")
201202
== item.payload.get("attributes", {}).get("middleware.name")
202203
]
@@ -234,15 +235,15 @@ async def do_stuff(message):
234235

235236
expected_starlite_spans = [
236237
{
237-
"op": "middleware",
238+
"op": OP.MIDDLEWARE,
238239
"description": "SampleMiddleware",
239240
},
240241
{
241-
"op": "middleware",
242+
"op": OP.MIDDLEWARE,
242243
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
243244
},
244245
{
245-
"op": "middleware",
246+
"op": OP.MIDDLEWARE,
246247
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
247248
},
248249
]
@@ -252,7 +253,7 @@ async def do_stuff(message):
252253
actual_starlite_spans = [
253254
item.payload
254255
for item in items
255-
if item.payload.get("attributes", {}).get("sentry.op") == "middleware"
256+
if OP.MIDDLEWARE in item.payload.get("attributes", {}).get("sentry.op", "")
256257
]
257258
assert len(actual_starlite_spans) == 3
258259

@@ -327,15 +328,15 @@ async def my_send(*args, **kwargs):
327328

328329
expected_starlite_spans = [
329330
{
330-
"op": "middleware",
331+
"op": OP.MIDDLEWARE,
331332
"description": "SamplePartialReceiveSendMiddleware",
332333
},
333334
{
334-
"op": "middleware",
335+
"op": OP.MIDDLEWARE,
335336
"description": "TestClientTransport.create_receive.<locals>.receive",
336337
},
337338
{
338-
"op": "middleware",
339+
"op": OP.MIDDLEWARE,
339340
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
340341
},
341342
]
@@ -345,7 +346,7 @@ async def my_send(*args, **kwargs):
345346
actual_starlite_spans = [
346347
item.payload
347348
for item in items
348-
if item.payload.get("attributes", {}).get("sentry.op") == "middleware"
349+
if OP.MIDDLEWARE in item.payload.get("attributes", {}).get("sentry.op", "")
349350
]
350351
assert len(actual_starlite_spans) == 3
351352

@@ -391,8 +392,7 @@ def test_span_origin(sentry_init, capture_items):
391392
starlite_items = [
392393
item
393394
for item in items
394-
if item.payload.get("attributes", {}).get("sentry.origin")
395-
== "auto.http.starlite"
395+
if "starlite" in item.payload.get("attributes", {}).get("sentry.op", "")
396396
]
397397
assert len(starlite_items) > 0
398398
for item in starlite_items:

0 commit comments

Comments
 (0)