Skip to content

Commit 20126af

Browse files
authored
chore(typing): A bit more typing for organization_events_trace (#68889)
I was trying to add fully typed functions, however, I ran out of steam. We can still get some of these improvements.
1 parent d093aa7 commit 20126af

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

src/sentry/api/bases/organization_events.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from urllib.parse import quote as urlquote
77

88
import sentry_sdk
9+
from django.http import HttpRequest
910
from django.utils import timezone
1011
from rest_framework.exceptions import ParseError, ValidationError
1112
from rest_framework.request import Request
@@ -125,7 +126,7 @@ def get_snuba_dataclass(
125126
return params, filter_params
126127

127128
def get_snuba_params(
128-
self, request: Request, organization: Organization, check_global_views: bool = True
129+
self, request: HttpRequest, organization: Organization, check_global_views: bool = True
129130
) -> ParamsType:
130131
with sentry_sdk.start_span(op="discover.endpoint", description="filter_params"):
131132
if (

src/sentry/api/endpoints/organization_events_trace.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from collections.abc import Callable, Iterable, Mapping, Sequence
44
from concurrent.futures import ThreadPoolExecutor, as_completed
55
from datetime import datetime, timedelta
6-
from typing import Any, Deque, Optional, TypedDict, TypeVar, cast
6+
from typing import Any, Deque, Optional, TypedDict, TypeVar
77

88
import sentry_sdk
99
from django.http import Http404, HttpRequest, HttpResponse
@@ -44,11 +44,13 @@
4444
"SnubaTransaction",
4545
{
4646
"id": str,
47+
"issue_occurrences": Sequence[IssueOccurrence],
4748
"transaction.status": int,
4849
"transaction.op": str,
4950
"transaction.duration": int,
5051
"transaction": str,
5152
"timestamp": str,
53+
"occurrence_spans": Sequence[dict[str, object]],
5254
"precise.start_ts": int,
5355
"precise.finish_ts": int,
5456
"trace.span": str,
@@ -187,7 +189,7 @@ def nodestore_event(self) -> Event | None:
187189
)
188190
return self._nodestore_event
189191

190-
def load_performance_issues(self, light: bool, snuba_params: ParamsType) -> None:
192+
def load_performance_issues(self, light: bool, snuba_params: ParamsType | None) -> None:
191193
"""Doesn't get suspect spans, since we don't need that for the light view"""
192194
for group_id in self.event["issue.ids"]:
193195
group = Group.objects.filter(id=group_id, project=self.event["project.id"]).first()
@@ -322,7 +324,7 @@ def full_dict(
322324
return
323325
else:
324326
visited.add(self.event["id"])
325-
result = cast(FullResponse, self.to_dict())
327+
result = self.to_dict()
326328
if detailed and "transaction.status" in self.event:
327329
result.update(
328330
{
@@ -423,7 +425,7 @@ def count_performance_issues(trace_id: str, params: Mapping[str, str]) -> int:
423425
)
424426
transaction_query.columns.append(Function("count()", alias="total_groups"))
425427
count = transaction_query.run_query("api.trace-view.count-performance-issues")
426-
return cast(int, count["data"][0].get("total_groups", 0))
428+
return count["data"][0].get("total_groups", 0)
427429

428430

429431
@sentry_sdk.tracing.trace
@@ -593,9 +595,7 @@ def query_trace_data(
593595
for key, value in zip(result["measurements.key"], result["measurements.value"])
594596
}
595597

596-
return cast(Sequence[SnubaTransaction], transformed_results[0]), cast(
597-
Sequence[SnubaError], transformed_results[1]
598-
)
598+
return transformed_results[0], transformed_results[1]
599599

600600

601601
def build_span_query(trace_id, spans_params, query_spans):
@@ -886,16 +886,16 @@ def get(self, request: HttpRequest, organization: Organization, trace_id: str) -
886886
return Response(status=404)
887887

888888
# Detailed is deprecated now that we want to use spans instead
889-
detailed: bool = request.GET.get("detailed", "0") == "1"
889+
detailed = request.GET.get("detailed", "0") == "1"
890890
# Temporary url params until we finish migrating the frontend
891-
use_spans: bool = request.GET.get("useSpans", "0") == "1"
891+
use_spans = request.GET.get("useSpans", "0") == "1"
892892
update_snuba_params_with_timestamp(request, params)
893893

894894
sentry_sdk.set_tag("trace_view.using_spans", str(use_spans))
895895
if detailed and use_spans:
896896
raise ParseError("Cannot return a detailed response while using spans")
897-
limit: int = min(int(request.GET.get("limit", MAX_TRACE_SIZE)), 10_000)
898-
event_id: str | None = request.GET.get("event_id") or request.GET.get("eventId")
897+
limit = min(int(request.GET.get("limit", MAX_TRACE_SIZE)), 10_000)
898+
event_id = request.GET.get("event_id") or request.GET.get("eventId")
899899

900900
# Only need to validate event_id as trace_id is validated in the URL
901901
if event_id and not is_event_id(event_id):
@@ -1318,9 +1318,11 @@ def serialize(
13181318
parent_events[child_event["id"]] = TraceEvent(
13191319
child_event,
13201320
current_event["id"],
1321-
previous_event.generation + 1
1322-
if previous_event.generation is not None
1323-
else None,
1321+
(
1322+
previous_event.generation + 1
1323+
if previous_event.generation is not None
1324+
else None
1325+
),
13241326
snuba_params=params,
13251327
)
13261328
# Add this event to its parent's children

0 commit comments

Comments
 (0)