10000 Migrate typing for integrations - part 4 (#4533) · getsentry/sentry-python@66d06f5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 66d06f5

Browse files
authored
Migrate typing for integrations - part 4 (#4533)
1 parent e4ccd04 commit 66d06f5

File tree

16 files changed

+417
-423
lines changed

16 files changed

+417
-423
lines changed

sentry_sdk/integrations/sanic.py

Lines changed: 34 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import annotations
12
import sys
23
import weakref
34
from 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

105106
class 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):

sentry_sdk/integrations/serverless.py

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,36 @@
1+
from __future__ import annotations
12
import sys
23
from functools import wraps
34

45
import sentry_sdk
56
from sentry_sdk.utils import event_from_exception, reraise
67

7-
from typing import TYPE_CHECKING
8+
from typing import TYPE_CHECKING, overload
89

910
if TYPE_CHECKING:
1011
from typing import Any
1112
from typing import Callable
1213
from typing import TypeVar
1314
from typing import Union
1415
from typing import Optional
15-
from typing import overload
1616

1717
F = TypeVar("F", bound=Callable[..., Any])
1818

19-
else:
19+
@overload
20+
def serverless_function(f: F, flush: bool = True) -> F:
21+
pass
2022

21-
def overload(x):
22-
# type: (F) -> F
23-
return x
23+
@overload
24+
def serverless_function(f: None = None, flush: bool = True) -> Callable[[F], F]:
25+
pass
2426

2527

26-
@overload
27-
def serverless_function(f, flush=True):
28-
# type: (F, bool) -> F
29-
pass
30-
31-
32-
@overload
33-
def serverless_function(f=None, flush=True): # noqa: F811
34-
# type: (None, bool) -> Callable[[F], F]
35-
pass
36-
37-
38-
def serverless_function(f=None, flush=True): # noqa
39-
# type: (Optional[F], bool) -> Union[F, Callable[[F], F]]
40-
def wrapper(f):
41-
# type: (F) -> F
28+
def serverless_function(
29+
f: Optional[F] = None, flush: bool = True
30+
) -> Union[F, Callable[[F], F]]:
31+
def wrapper(f: F) -> F:
4232
@wraps(f)
43-
def inner(*args, **kwargs):
44-
# type: (*Any, **Any) -> Any
33+
def inner(*args: Any, **kwargs: Any) -> Any:
4534
with sentry_sdk.isolation_scope() as scope:
4635
scope.clear_breadcrumbs()
4736

@@ -61,8 +50,7 @@ def inner(*args, **kwargs):
6150
return wrapper(f)
6251

6352

64-
def _capture_and_reraise():
65-
# type: () -> None
53+
def _capture_and_reraise() -> None:
6654
exc_info = sys.exc_info()
6755
client = sentry_sdk.get_client()
6856
if client.is_active():

sentry_sdk/integrations/socket.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import annotations
12
import socket
23

34
import sentry_sdk
@@ -17,17 +18,17 @@ class SocketIntegration(Integration):
1718
origin = f"auto.socket.{identifier}"
1819

1920
@staticmethod
20-
def setup_once():
21-
# type: () -> None
21+
def setup_once() -> None:
2222
"""
2323
patches two of the most used functions of socket: create_connection and getaddrinfo(dns resolver)
2424
"""
2525
_patch_create_connection()
2626
_patch_getaddrinfo()
2727

2828

29-
def _get_span_description(host, port):
30-
# type: (Union[bytes, str, None], Union[bytes, str, int, None]) -> str
29+
def _get_span_description(
30+
host: Union[bytes, str, None], port: Union[bytes, str, int, None]
31+
) -> str:
3132

3233
try:
3334
host = host.decode() # type: ignore
@@ -43,16 +44,14 @@ def _get_span_description(host, port):
4344
return description
4445

4546

46-
def _patch_create_connection():
47-
# type: () -> None
47+
def _patch_create_connection() -> None:
4848
real_create_connection = socket.create_connection
4949

5050
def create_connection(
51-
address,
52-
timeout=socket._GLOBAL_DEFAULT_TIMEOUT, # type: ignore
53-
source_address=None,
54-
):
55-
# type: (Tuple[Optional[str], int], Optional[float], Optional[Tuple[Union[bytearray, bytes, str], int]])-> socket.socket
51+
address: Tuple[Optional[str], int],
52+
timeout: Optional[float] = socket._GLOBAL_DEFAULT_TIMEOUT, # type: ignore
53+
source_address: Optional[Tuple[Union[bytearray, bytes, str], int]] = None,
54+
) -> socket.socket:
5655
integration = sentry_sdk.get_client().get_integration(SocketIntegration)
5756
if integration is None:
5857
return real_create_connection(address, timeout, source_address)
@@ -76,12 +75,25 @@ def create_connection(
7675
socket.create_connection = create_connection # type: ignore
7776

7877

79-
def _patch_getaddrinfo():
80-
# type: () -> None
78+
def _patch_getaddrinfo() -> None:
8179
real_getaddrinfo = socket.getaddrinfo
8280

83-
def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
84-
# type: (Union[bytes, str, None], Union[bytes, str, int, None], int, int, int, int) -> List[Tuple[AddressFamily, SocketKind, int, str, Union[Tuple[str, int], Tuple[str, int, int, int], Tuple[int, bytes]]]]
81+
def getaddrinfo(
82+
host: Union[bytes, str, None],
83+
port: Union[bytes, str, int, None],
84+
family: int = 0,
85+
type: int = 0,
86+
proto: int = 0,
87+
flags: int = 0,
88+
) -> List[
89+
Tuple[
90+
AddressFamily,
91+
SocketKind,
92+
int,
93+
str,
94+
Union[Tuple[str, int], Tuple[str, int, int, int], Tuple[int, bytes]],
95+
]
96+
]:
8597
integration = sentry_sdk.get_client().get_integration(SocketIntegration)
8698
if integration is None:
8799
return real_getaddrinfo(host, port, family, type, proto, flags)

0 commit comments

Comments
 (0)
0