1+ from __future__ import annotations
12import sys
23import weakref
34from inspect import isawaitable
@@ -59,8 +60,9 @@ class SanicIntegration(Integration):
5960 origin = f"auto.http.{ identifier } "
6061 version = None
6162
62- def __init__ (self , unsampled_statuses = frozenset ({404 })):
63- # type: (Optional[Container[int]]) -> None
63+ def __init__ (
64+ self , unsampled_statuses : Optional [Container [int ]] = frozenset ({404 })
65+ ) -> None :
6466 """
6567 The unsampled_statuses parameter can be used to specify for which HTTP statuses the
6668 transactions should not be sent to Sentry. By default, transactions are sent for all
@@ -70,8 +72,7 @@ def __init__(self, unsampled_statuses=frozenset({404})):
7072 self ._unsampled_statuses = unsampled_statuses or set ()
7173
7274 @staticmethod
73- def setup_once ():
74- # type: () -> None
75+ def setup_once () -> None :
7576 SanicIntegration .version = parse_version (SANIC_VERSION )
7677 _check_minimum_version (SanicIntegration , SanicIntegration .version )
7778
@@ -103,56 +104,45 @@ def setup_once():
103104
104105
105106class SanicRequestExtractor (RequestExtractor ):
106- def content_length (self ):
107- # type: () -> int
107+ def content_length (self ) -> int :
108108 if self .request .body is None :
109109 return 0
110110 return len (self .request .body )
111111
112- def cookies (self ):
113- # type: () -> Dict[str, str]
112+ def cookies (self ) -> Dict [str , str ]:
114113 return dict (self .request .cookies )
115114
116- def raw_data (self ):
117- # type: () -> bytes
115+ def raw_data (self ) -> bytes :
118116 return self .request .body
119117
120- def form (self ):
121- # type: () -> RequestParameters
118+ def form (self ) -> RequestParameters :
122119 return self .request .form
123120
124- def is_json (self ):
125- # type: () -> bool
121+ def is_json (self ) -> bool :
126122 raise NotImplementedError ()
127123
128- def json (self ):
129- # type: () -> Optional[Any]
124+ def json (self ) -> Optional [Any ]:
130125 return self .request .json
131126
132- def files (self ):
133- # type: () -> RequestParameters
127+ def files (self ) -> RequestParameters :
134128 return self .request .files
135129
136- def size_of_file (self , file ):
137- # type: (Any) -> int
130+ def size_of_file (self , file : Any ) -> int :
138131 return len (file .body or ())
139132
140133
141- def _setup_sanic ():
142- # type: () -> None
134+ def _setup_sanic () -> None :
143135 Sanic ._startup = _startup
144136 ErrorHandler .lookup = _sentry_error_handler_lookup
145137
146138
147- def _setup_legacy_sanic ():
148- # type: () -> None
139+ def _setup_legacy_sanic () -> None :
149140 Sanic .handle_request = _legacy_handle_request
150141 Router .get = _legacy_router_get
151142 ErrorHandler .lookup = _sentry_error_handler_lookup
152143
153144
154- async def _startup (self ):
155- # type: (Sanic) -> None
145+ async def _startup (self : Sanic ) -> None :
156146 # This happens about as early in the lifecycle as possible, just after the
157147 # Request object is created. The body has not yet been consumed.
158148 self .signal ("http.lifecycle.request" )(_context_enter )
@@ -171,8 +161,7 @@ async def _startup(self):
171161 await old_startup (self )
172162
173163
174- async def _context_enter (request ):
175- # type: (Request) -> None
164+ async def _context_enter (request : Request ) -> None :
176165 request .ctx ._sentry_do_integration = (
177166 sentry_sdk .get_client ().get_integration (SanicIntegration ) is not None
178167 )
@@ -203,8 +192,9 @@ async def _context_enter(request):
203192 ).__enter__ ()
204193
205194
206- async def _context_exit (request , response = None ):
207- # type: (Request, Optional[BaseHTTPResponse]) -> None
195+ async def _context_exit (
196+ request : Request , response : Optional [BaseHTTPResponse ] = None
197+ ) -> None :
208198 with capture_internal_exceptions ():
209199 if not request .ctx ._sentry_do_integration :
210200 return
@@ -233,17 +223,17 @@ async def _context_exit(request, response=None):
233223 request .ctx ._sentry_scope_manager .__exit__ (None , None , None )
234224
235225
236- async def _set_transaction (request , route , ** _ ):
237- # type: (Request, Route, **Any) -> None
226+ async def _set_transaction (request : Request , route : Route , ** _ : Any ) -> None :
238227 if request .ctx ._sentry_do_integration :
239228 with capture_internal_exceptions ():
240229 scope = sentry_sdk .get_current_scope ()
241230 route_name = route .name .replace (request .app .name , "" ).strip ("." )
242231 scope .set_transaction_name (route_name , source = TransactionSource .COMPONENT )
243232
244233
245- def _sentry_error_handler_lookup (self , exception , * args , ** kwargs ):
246- # type: (Any, Exception, *Any, **Any) -> Optional[object]
234+ def _sentry_error_handler_lookup (
235+ self : Any , exception : Exception , * args : Any , ** kwargs : Any
236+ ) -> Optional [object ]:
247237 _capture_exception (exception )
248238 old_error_handler = old_error_handler_lookup (self , exception , * args , ** kwargs )
249239
@@ -253,8 +243,9 @@ def _sentry_error_handler_lookup(self, exception, *args, **kwargs):
253243 if sentry_sdk .get_client ().get_integration (SanicIntegration ) is None :
254244 return old_error_handler
255245
256- async def sentry_wrapped_error_handler (request , exception ):
257- # type: (Request, Exception) -> Any
246+ async def sentry_wrapped_error_handler (
247+ request : Request , exception : Exception
248+ ) -> Any :
258249 try :
259250 response = old_error_handler (request , exception )
260251 if isawaitable (response ):
@@ -276,8 +267,9 @@ async def sentry_wrapped_error_handler(request, exception):
276267 return sentry_wrapped_error_handler
277268
278269
279- async def _legacy_handle_request (self , request , * args , ** kwargs ):
280- # type: (Any, Request, *Any, **Any) -> Any
270+ async def _legacy_handle_request (
271+ self : Any , request : Request , * args : Any , ** kwargs : Any
272+ ) -> Any :
281273 if sentry_sdk .get_client ().get_integration (SanicIntegration ) is None :
282274 return await old_handle_request (self , request , * args , ** kwargs )
283275
@@ -294,8 +286,7 @@ async def _legacy_handle_request(self, request, *args, **kwargs):
294286 return response
295287
296288
297- def _legacy_router_get (self , * args ):
298- # type: (Any, Union[Any, Request]) -> Any
289+ def _legacy_router_get (self : Any , * args : Union [Any , Request ]) -> Any :
299290 rv = old_router_get (self , * args )
300291 if sentry_sdk .get_client ().get_integration (SanicIntegration ) is not None :
301292 with capture_internal_exceptions ():
@@ -325,8 +316,7 @@ def _legacy_router_get(self, *args):
325316
326317
327318@ensure_integration_enabled (SanicIntegration )
328- def _capture_exception (exception ):
329- # type: (Union[ExcInfo, BaseException]) -> None
319+ def _capture_exception (exception : Union [ExcInfo , BaseException ]) -> None :
330320 with capture_internal_exceptions ():
331321 event , hint = event_from_exception (
332322 exception ,
@@ -340,10 +330,8 @@ def _capture_exception(exception):
340330 sentry_sdk .capture_event (event , hint = hint )
341331
342332
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]
333+ def _make_request_processor (weak_request : Callable [[], Request ]) -> EventProcessor :
334+ def sanic_processor (event : Event , hint : Optional [Hint ]) -> Optional [Event ]:
347335
348336 try :
349337 if hint and issubclass (hint ["exc_info" ][0 ], SanicException ):
0 commit comments