From dcfbb50bd8136461266375e15113f81749e17a2e Mon Sep 17 00:00:00 2001 From: anthony sottile <103459774+asottile-sentry@users.noreply.github.com> Date: Fri, 14 Jun 2024 18:47:57 -0400 Subject: [PATCH] ref: fix typing for sentry.profiles (#72816) fixes errors when BaseManager becomes typechecked --- src/sentry/profiles/task.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/sentry/profiles/task.py b/src/sentry/profiles/task.py index 0deac7393942da..3ab17e66c4e00e 100644 --- a/src/sentry/profiles/task.py +++ b/src/sentry/profiles/task.py @@ -6,7 +6,7 @@ from datetime import datetime, timezone from functools import lru_cache from time import time -from typing import Any +from typing import Any, TypedDict from uuid import UUID import msgpack @@ -1062,14 +1062,21 @@ def clean_android_js_profile(profile: Profile) -> None: del p["dist"] +class _ProjectKeyKwargs(TypedDict): + project_id: int + use_case: str + + @lru_cache(maxsize=100) def get_metrics_dsn(project_id: int) -> str: - kwargs = dict(project_id=project_id, use_case=UseCase.PROFILING.value) + kwargs: _ProjectKeyKwargs = {"project_id": project_id, "use_case": UseCase.PROFILING.value} try: project_key, _ = ProjectKey.objects.get_or_create(**kwargs) except ProjectKey.MultipleObjectsReturned: # See https://docs.djangoproject.com/en/5.0/ref/models/querysets/#get-or-create - project_key = ProjectKey.objects.filter(**kwargs).order_by("pk").first() + project_key_first = ProjectKey.objects.filter(**kwargs).order_by("pk").first() + assert project_key_first is not None + project_key = project_key_first return project_key.get_dsn(public=True)