Skip to content

Commit 44990bb

Browse files
committed
types
1 parent 45ad525 commit 44990bb

File tree

5 files changed

+18
-100
lines changed

5 files changed

+18
-100
lines changed

sentry_sdk/integrations/aiohttp.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@
5050
if TYPE_CHECKING:
5151
from aiohttp.web_request import Request
5252
from aiohttp.abc import AbstractMatchInfo
53-
from aiohttp import TraceRequestStartParams, TraceRequestEndParams
53+
from aiohttp import (
54+
TraceRequestStartParams,
55+
TraceRequestEndParams,
56+
TraceRequestChunkSentParams,
57+
)
5458
from types import SimpleNamespace
5559
from typing import Any
5660
from typing import Dict
@@ -244,6 +248,7 @@ async def on_request_start(session, trace_config_ctx, params):
244248
trace_config_ctx.request_headers = params.headers
245249

246250
async def on_request_chunk_sent(session, trace_config_ctx, params):
251+
# type: (ClientSession, SimpleNamespace, TraceRequestChunkSentParams) -> None
247252
if not hasattr(params, "url") or not hasattr(params, "method"):
248253
return
249254

@@ -346,7 +351,7 @@ def aiohttp_server_processor(
346351

347352

348353
def _make_client_processor(trace_config_ctx, response, response_content):
349-
# type: (SimpleNamespace, Response, Optional[dict]) -> EventProcessor
354+
# type: (SimpleNamespace, Response, Optional[Dict[str, Any]]) -> EventProcessor
350355
def aiohttp_client_processor(
351356
event, # type: Dict[str, Any]
352357
hint, # type: Dict[str, Tuple[type, BaseException, Any]]

sentry_sdk/integrations/httpx.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ def httpx_processor(
207207

208208

209209
def _capture_graphql_errors(hub, request, response):
210+
# type: (Hub, Request, Response) -> None
210211
if (
211212
request.url.path == "/graphql"
212213
and request.method in ("GET", "POST")

sentry_sdk/integrations/stdlib.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def getresponse(self, *args, **kwargs):
145145
span.set_data("reason", rv.reason)
146146
span.finish()
147147

148-
url = getattr(self, "_sentrysdk_url", None)
148+
url = getattr(self, "_sentrysdk_url", None) # type: Optional[str]
149149
if url is None:
150150
return rv
151151

@@ -189,18 +189,20 @@ def getresponse(self, *args, **kwargs):
189189

190190

191191
def _make_request_processor(url, method, status, request_body, response_body):
192-
# type: (str, str, int, Any, Any) -> EventProcessor
192+
# type: (Optional[str], str, int, Any, Any) -> EventProcessor
193193
def stdlib_processor(
194194
event, # type: Dict[str, Any]
195195
hint, # type: Dict[str, Tuple[type, BaseException, Any]]
196196
):
197197
with capture_internal_exceptions():
198-
parsed_url = urlparse(url)
199-
200198
request_info = event.setdefault("request", {})
201-
request_info["url"] = url
199+
200+
if url is not None:
201+
parsed_url = urlparse(url)
202+
request_info["query_string"] = parsed_url.query
203+
request_info["url"] = url
204+
202205
request_info["method"] = method
203-
request_info["query_string"] = parsed_url.query
204206
try:
205207
request_info["data"] = json.loads(request_body)
206208
except json.JSONDecodeError:

sentry_sdk/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,7 +1280,7 @@ class SentryGraphQLClientError(Exception):
12801280

12811281

12821282
def _get_graphql_operation_name(query):
1283-
# type: (dict) -> str
1283+
# type: (Dict[str, Any]) -> str
12841284
if query.get("operationName"):
12851285
return query["operationName"]
12861286

@@ -1293,7 +1293,7 @@ def _get_graphql_operation_name(query):
12931293

12941294

12951295
def _get_graphql_operation_type(query):
1296-
# type: (dict) -> str
1296+
# type: (Dict[str, Any]) -> str
12971297
query = query["query"].strip()
12981298
if query.startswith("mutation"):
12991299
return "mutation"
Lines changed: 0 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import pytest
22
import responses
3-
from textwrap import dedent
43

54
requests = pytest.importorskip("requests")
65

@@ -63,92 +62,3 @@ def test_omit_url_data_if_parsing_fails(sentry_init, capture_events):
6362
"reason": response.reason,
6463
# no url related data
6564
}
66-
67-
68-
def test_graphql_get_client_error_captured(sentry_init, capture_events):
69-
sentry_init(integrations=[StdlibIntegration()])
70-
71-
url = "http://example.com/graphql"
72-
response = {
73-
"data": None,
74-
"errors": [
75-
{
76-
"message": "some error",
77-
"locations": [{"line": 2, "column": 3}],
78-
"path": ["user"],
79-
}
80-
],
81-
}
82-
responses.add(responses.GET, url, status=200, json=response)
83-
84-
events = capture_events()
85-
86-
requests.get(url, params={"query": "query QueryName {user{name}}"})
87-
88-
(event,) = events
89-
90-
assert event["request"]["url"] == url
91-
assert event["request"]["method"] == "GET"
92-
assert (
93-
event["request"]["query_string"]
94-
== "query=query%20QueryName%20%7Buser%7Bname%7D%7D"
95-
)
96-
assert "data" not in event["request"]
97-
assert event["contexts"]["response"]["data"] == response
98-
99-
assert event["request"]["api_target"] == "graphql"
100-
assert event["fingerprint"] == ["QueryName", "query", 200]
101-
assert (
102-
event["exception"]["values"][0]["value"]
103-
== "GraphQL request failed, name: QueryName, type: query"
104-
)
105-
106-
107-
def test_graphql_post_client_error_captured(sentry_init, capture_events):
108-
sentry_init(integrations=[StdlibIntegration()])
109-
110-
url = "http://example.com/graphql"
111-
request = {
112-
"query": dedent(
113-
"""
114-
mutation AddPet ($name: String!) {
115-
addPet(name: $name) {
116-
id
117-
name
118-
}
119-
}
120-
"""
121-
),
122-
"variables": {
123-
"name": "Lucy",
124-
},
125-
}
126-
response = {
127-
"data": None,
128-
"errors": [
129-
{
130-
"message": "already have too many pets",
131-
"locations": [{"line": 1, "column": 1}],
132-
}
133-
],
134-
}
135-
responses.add(responses.POST, url, status=200, json=response)
136-
137-
events = capture_events()
138-
139-
requests.post(url, json=request)
140-
141-
(event,) = events
142-
143-
assert event["request"]["url"] == url
144-
assert event["request"]["method"] == "POST"
145-
assert event["request"]["query_string"] == ""
146-
assert event["request"]["data"] == request
147-
assert event["contexts"]["response"]["data"] == response
148-
149-
assert event["request"]["api_target"] == "graphql"
150-
assert event["fingerprint"] == ["AddPet", "mutation", 200]
151-
assert (
152-
event["exception"]["values"][0]["value"]
153-
== "GraphQL request failed, name: AddPet, type: mutation"
154-
)

0 commit comments

Comments
 (0)