Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/sentry/issues/endpoints/group_tagkey_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class GroupTagKeyDetailsEndpoint(GroupEndpoint):
examples=[TagsExamples.GROUP_TAGKEY_DETAILS],
)
@deprecated(CELL_API_DEPRECATION_DATE, url_names=["sentry-api-0-group-tag-key-details"])
def get(self, request: Request, group, key) -> Response:
def get(self, request: Request, group, key) -> Response[TagKeySerializerResponse]:
"""
Returns the values and aggregate details of a given tag key related to an issue.
"""
Expand Down
4 changes: 2 additions & 2 deletions src/sentry/tagstore/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

if TYPE_CHECKING:
from sentry.models.group import Group
from sentry.tagstore.types import GroupTagValue
from sentry.tagstore.types import GroupTagKey, GroupTagValue, TagKey

# Valid pattern for tag key names
TAG_KEY_RE = re.compile(r"^[a-zA-Z0-9_\.:-]+$")
Expand Down Expand Up @@ -152,7 +152,7 @@ def get_group_tag_key(
environment_id,
key: str,
tenant_ids=None,
):
) -> GroupTagKey | TagKey:
"""
>>> get_group_tag_key(group, 3, "key1")
"""
Expand Down
4 changes: 2 additions & 2 deletions src/sentry/tagstore/snuba/backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ def __call__(

class _ValueCallable[U](Protocol):
def __call__(
self, *, key: str, value: object, times_seen: int, first_seen: datetime, last_seen: datetime
self, *, key: str, value: str, times_seen: int, first_seen: datetime, last_seen: datetime
) -> U: ...


Expand Down Expand Up @@ -804,7 +804,7 @@ def get_group_tag_key(
key,
tenant_ids=None,
**kwargs,
):
) -> GroupTagKey | TagKey:
return self.__get_tag_key_and_top_values(
group.project_id,
group,
Expand Down
6 changes: 3 additions & 3 deletions src/sentry/tagstore/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def __init__(
values_seen: int | None = None,
status: int = TagKeyStatus.ACTIVE,
count: int | None = None,
top_values=None,
top_values: tuple[TagValue, ...] | None = None,
):
self.key = key
self.values_seen = values_seen
Expand Down Expand Up @@ -142,7 +142,7 @@ class TagKeySerializerResponse(TagKeySerializerResponseOptional):

@register(GroupTagKey)
@register(TagKey)
class TagKeySerializer(Serializer):
class TagKeySerializer(Serializer[TagKeySerializerResponse]):
def serialize(self, obj, attrs, user, **kwargs) -> TagKeySerializerResponse:
from sentry import tagstore

Expand Down Expand Up @@ -175,7 +175,7 @@ class TagValueSerializerResponse(TagValueSerializerResponseOptional):

@register(GroupTagValue)
@register(TagValue)
class TagValueSerializer(Serializer):
class TagValueSerializer(Serializer[TagValueSerializerResponse]):
def serialize(self, obj, attrs, user, **kwargs) -> TagValueSerializerResponse:
from sentry import tagstore

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ def test_includes_empty_values_backend_helpers(self) -> None:
"foo",
tenant_ids={"organization_id": group.project.organization_id},
)
assert group_tag_key.top_values is not None
top_values = {tv.value for tv in group_tag_key.top_values}
assert top_values == {"", "bar"}

Expand Down
1 change: 1 addition & 0 deletions tests/snuba/tagstore/test_tagstore_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -1215,6 +1215,7 @@ def test_eap_read_path(self) -> None:

assert gk.key == "foo"
assert gk.values_seen == 1
assert gk.top_values is not None
assert gk.top_values[0].value == "bar"


Expand Down
Loading