@@ -59,8 +59,7 @@ class SanicIntegration(Integration):
59
59
origin = f"auto.http.{ identifier } "
60
60
version = None
61
61
62
- def __init__ (self , unsampled_statuses = frozenset ({404 })):
63
- # type: (Optional[Container[int]]) -> None
62
+ def __init__ (self , unsampled_statuses : "Optional[Container[int]]" = frozenset ({404 })) -> None :
64
63
"""
65
64
The unsampled_statuses parameter can be used to specify for which HTTP statuses the
66
65
transactions should not be sent to Sentry. By default, transactions are sent for all
@@ -70,8 +69,7 @@ def __init__(self, unsampled_statuses=frozenset({404})):
70
69
self ._unsampled_statuses = unsampled_statuses or set ()
71
70
72
71
@staticmethod
73
- def setup_once ():
74
- # type: () -> None
72
+ def setup_once () -> None :
75
73
SanicIntegration .version = parse_version (SANIC_VERSION )
76
74
_check_minimum_version (SanicIntegration , SanicIntegration .version )
77
75
@@ -103,56 +101,45 @@ def setup_once():
103
101
104
102
105
103
class SanicRequestExtractor (RequestExtractor ):
106
- def content_length (self ):
107
- # type: () -> int
104
+ def content_length (self ) -> int :
108
105
if self .request .body is None :
109
106
return 0
110
107
return len (self .request .body )
111
108
112
- def cookies (self ):
113
- # type: () -> Dict[str, str]
109
+ def cookies (self ) -> "Dict[str, str]" :
114
110
return dict (self .request .cookies )
115
111
116
- def raw_data (self ):
117
- # type: () -> bytes
112
+ def raw_data (self ) -> bytes :
118
113
return self .request .body
119
114
120
- def form (self ):
121
- # type: () -> RequestParameters
115
+ def form (self ) -> "RequestParameters" :
122
116
return self .request .form
123
117
124
- def is_json (self ):
125
- # type: () -> bool
118
+ def is_json (self ) -> bool :
126
119
raise NotImplementedError ()
127
120
128
- def json (self ):
129
- # type: () -> Optional[Any]
121
+ def json (self ) -> "Optional[Any]" :
130
122
return self .request .json
131
123
132
- def files (self ):
133
- # type: () -> RequestParameters
124
+ def files (self ) -> "RequestParameters" :
134
125
return self .request .files
135
126
136
- def size_of_file (self , file ):
137
- # type: (Any) -> int
127
+ def size_of_file (self , file : Any ) -> int :
138
128
return len (file .body or ())
139
129
140
130
141
- def _setup_sanic ():
142
- # type: () -> None
131
+ def _setup_sanic () -> None :
143
132
Sanic ._startup = _startup
144
133
ErrorHandler .lookup = _sentry_error_handler_lookup
145
134
146
135
147
- def _setup_legacy_sanic ():
148
- # type: () -> None
136
+ def _setup_legacy_sanic () -> None :
149
137
Sanic .handle_request = _legacy_handle_request
150
138
Router .get = _legacy_router_get
151
139
ErrorHandler .lookup = _sentry_error_handler_lookup
152
140
153
141
154
- async def _startup (self ):
155
- # type: (Sanic) -> None
142
+ async def _startup (self : Sanic ) -> None :
156
143
# This happens about as early in the lifecycle as possible, just after the
157
144
# Request object is created. The body has not yet been consumed.
158
145
self .signal ("http.lifecycle.request" )(_context_enter )
@@ -171,8 +158,7 @@ async def _startup(self):
171
158
await old_startup (self )
172
159
173
160
174
- async def _context_enter (request ):
175
- # type: (Request) -> None
161
+ async def _context_enter (request : "Request" ) -> None :
176
162
request .ctx ._sentry_do_integration = (
177
163
sentry_sdk .get_client ().get_integration (SanicIntegration ) is not None
178
164
)
@@ -203,8 +189,7 @@ async def _context_enter(request):
203
189
).__enter__ ()
204
190
205
191
206
- async def _context_exit (request , response = None ):
207
- # type: (Request, Optional[BaseHTTPResponse]) -> None
192
+ async def _context_exit (request : "Request" , response : "Optional[BaseHTTPResponse]" = None ) -> None :
208
193
with capture_internal_exceptions ():
209
194
if not request .ctx ._sentry_do_integration :
210
195
return
@@ -233,17 +218,15 @@ async def _context_exit(request, response=None):
233
218
request .ctx ._sentry_scope_manager .__exit__ (None , None , None )
234
219
235
220
236
- async def _set_transaction (request , route , ** _ ):
237
- # type: (Request, Route, **Any) -> None
221
+ async def _set_transaction (request : "Request" , route : "Route" , ** _ : Any ) -> None :
238
222
if request .ctx ._sentry_do_integration :
239
223
with capture_internal_exceptions ():
240
224
scope = sentry_sdk .get_current_scope ()
241
225
route_name = route .name .replace (request .app .name , "" ).strip ("." )
242
226
scope .set_transaction_name (route_name , source = TransactionSource .COMPONENT )
243
227
244
228
245
- def _sentry_error_handler_lookup (self , exception , * args , ** kwargs ):
246
- # type: (Any, Exception, *Any, **Any) -> Optional[object]
229
+ def _sentry_error_handler_lookup (self : Any , exception : Exception , * args : Any , ** kwargs : Any ) -> "Optional[object]" :
247
230
_capture_exception (exception )
248
231
old_error_handler = old_error_handler_lookup (self , exception , * args , ** kwargs )
249
232
@@ -253,8 +236,7 @@ def _sentry_error_handler_lookup(self, exception, *args, **kwargs):
253
236
if sentry_sdk .get_client ().get_integration (SanicIntegration ) is None :
254
237
return old_error_handler
255
238
256
- async def sentry_wrapped_error_handler (request , exception ):
257
- # type: (Request, Exception) -> Any
239
+ async def sentry_wrapped_error_handler (request : "Request" , exception : Exception ) -> Any :
258
240
try :
259
241
response = old_error_handler (request , exception )
260
242
if isawaitable (response ):
@@ -276,8 +258,7 @@ async def sentry_wrapped_error_handler(request, exception):
276
258
return sentry_wrapped_error_handler
277
259
278
260
279
- async def _legacy_handle_request (self , request , * args , ** kwargs ):
280
- # type: (Any, Request, *Any, **Any) -> Any
261
+ async def _legacy_handle_request (self : Any , request : "Request" , * args : Any , ** kwargs : Any ) -> Any :
281
262
if sentry_sdk .get_client ().get_integration (SanicIntegration ) is None :
282
263
return await old_handle_request (self , request , * args , ** kwargs )
283
264
@@ -294,8 +275,7 @@ async def _legacy_handle_request(self, request, *args, **kwargs):
294
275
return response
295
276
296
277
297
- def _legacy_router_get (self , * args ):
298
- # type: (Any, Union[Any, Request]) -> Any
278
+ def _legacy_router_get (self : Any , * args : "Union[Any, Request]" ) -> Any :
299
279
rv = old_router_get (self , * args )
300
280
if sentry_sdk .get_client ().get_integration (SanicIntegration ) is not None :
301
281
with capture_internal_exceptions ():
@@ -325,8 +305,7 @@ def _legacy_router_get(self, *args):
325
305
326
306
327
307
@ensure_integration_enabled (SanicIntegration )
328
- def _capture_exception (exception ):
329
- # type: (Union[ExcInfo, BaseException]) -> None
308
+ def _capture_exception (exception : "Union[ExcInfo, BaseException]" ) -> None :
330
309
with capture_internal_exceptions ():
331
310
event , hint = event_from_exception (
332
311
exception ,
@@ -340,10 +319,8 @@ def _capture_exception(exception):
340
319
sentry_sdk .capture_event (event , hint = hint )
341
320
342
321
343
- def _make_request_processor (weak_request ):
344
- # type: (Callable[[], Request]) -> EventProcessor
345
- def sanic_processor (event , hint ):
346
- # type: (Event, Optional[Hint]) -> Optional[Event]
322
+ def _make_request_processor (weak_request : "Callable[[], Request]" ) -> "EventProcessor" :
323
+ def sanic_processor (event : "Event" , hint : "Optional[Hint]" ) -> "Optional[Event]" :
347
324
348
325
try :
349
326
if hint and issubclass (hint ["exc_info" ][0 ], SanicException ):
0 commit comments