Browse Source

perf: remove jsondata usages (#70608)

By default JSONData is defined as Any. With `orjson`, we don't need
`utils/json.py` and can slowly remove it.

Reduces cyclic dependencies.
Yagiz Nizipli 10 months ago
parent
commit
ff1b84a557

+ 3 - 2
src/sentry/api/bases/doc_integrations.py

@@ -1,5 +1,7 @@
 from __future__ import annotations
 
+from typing import Any
+
 from django.http import Http404
 from rest_framework.request import Request
 
@@ -10,7 +12,6 @@ from sentry.api.utils import id_or_slug_path_params_enabled
 from sentry.api.validators.doc_integration import METADATA_PROPERTIES
 from sentry.auth.superuser import is_active_superuser
 from sentry.models.integrations.doc_integration import DocIntegration
-from sentry.utils.json import JSONData
 from sentry.utils.sdk import configure_scope
 
 
@@ -67,7 +68,7 @@ class DocIntegrationsBaseEndpoint(Endpoint):
 
     permission_classes = (DocIntegrationsAndStaffPermission,)
 
-    def generate_incoming_metadata(self, request: Request) -> JSONData:
+    def generate_incoming_metadata(self, request: Request) -> Any:
         return {k: v for k, v in request.json_body.items() if k in METADATA_PROPERTIES}
 
 

+ 1 - 2
src/sentry/api/endpoints/group_integration_details.py

@@ -21,7 +21,6 @@ from sentry.services.hybrid_cloud.integration import RpcIntegration, integration
 from sentry.shared_integrations.exceptions import IntegrationError, IntegrationFormError
 from sentry.signals import integration_issue_created, integration_issue_linked
 from sentry.types.activity import ActivityType
-from sentry.utils.json import JSONData
 
 MISSING_FEATURE_MESSAGE = "Your organization does not have access to this feature."
 
@@ -39,7 +38,7 @@ class IntegrationIssueConfigSerializer(IntegrationSerializer):
 
     def serialize(
         self, obj: RpcIntegration, attrs: Mapping[str, Any], user: User, **kwargs: Any
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         data = super().serialize(obj, attrs, user)
 
         if self.action == "link":

+ 1 - 2
src/sentry/api/endpoints/group_integrations.py

@@ -19,7 +19,6 @@ from sentry.models.integrations.external_issue import ExternalIssue
 from sentry.models.user import User
 from sentry.services.hybrid_cloud.integration import RpcIntegration, integration_service
 from sentry.services.hybrid_cloud.pagination import RpcPaginationArgs
-from sentry.utils.json import JSONData
 
 
 class IntegrationIssueSerializer(IntegrationSerializer):
@@ -63,7 +62,7 @@ class IntegrationIssueSerializer(IntegrationSerializer):
 
     def serialize(
         self, obj: RpcIntegration, attrs: Mapping[str, Any], user: User, **kwargs: Any
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         data = super().serialize(obj, attrs, user)
         data["externalIssues"] = attrs.get("external_issues", [])
         return data

+ 1 - 1
src/sentry/api/endpoints/notifications/notification_actions.md

@@ -58,6 +58,6 @@ class SentryAuditLogRegistration(ActionRegistration):
     @classmethod
     def serialize_available(
         cls, organization: Organization, integrations: List[RpcIntegration] = None
-    ) -> List[JSONData]:
+    ) -> List[Any]:
         return []
 ```

+ 1 - 2
src/sentry/api/endpoints/organization_member/team_details.py

@@ -36,7 +36,6 @@ from sentry.models.team import Team
 from sentry.roles import organization_roles, team_roles
 from sentry.roles.manager import TeamRole
 from sentry.utils import metrics
-from sentry.utils.json import JSONData
 
 from . import can_admin_team, can_set_team_role
 
@@ -51,7 +50,7 @@ class OrganizationMemberTeamSerializer(serializers.Serializer):
 class OrganizationMemberTeamDetailsSerializer(Serializer):
     def serialize(
         self, obj: OrganizationMemberTeam, attrs: Mapping[Any, Any], user: Any, **kwargs: Any
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         return {
             "isActive": obj.is_active,
             "teamRole": obj.role,

+ 2 - 4
src/sentry/api/serializers/base.py

@@ -7,8 +7,6 @@ from typing import Any, TypeVar
 import sentry_sdk
 from django.contrib.auth.models import AnonymousUser
 
-from sentry.utils.json import JSONData
-
 logger = logging.getLogger(__name__)
 
 K = TypeVar("K")
@@ -105,7 +103,7 @@ class Serializer:
 
     def _serialize(
         self, obj: Any, attrs: Mapping[Any, Any], user: Any, **kwargs: Any
-    ) -> Mapping[str, JSONData] | None:
+    ) -> Mapping[str, Any] | None:
         try:
             return self.serialize(obj, attrs, user, **kwargs)
         except Exception:
@@ -114,7 +112,7 @@ class Serializer:
 
     def serialize(
         self, obj: Any, attrs: Mapping[Any, Any], user: Any, **kwargs: Any
-    ) -> Mapping[str, JSONData]:
+    ) -> Mapping[str, Any]:
         """
         Convert an arbitrary python object `obj` to an object that only contains primitives.
 

+ 1 - 2
src/sentry/api/serializers/models/doc_integration.py

@@ -6,7 +6,6 @@ from sentry.models.avatars.doc_integration_avatar import DocIntegrationAvatar
 from sentry.models.integrations.doc_integration import DocIntegration
 from sentry.models.integrations.integration_feature import IntegrationFeature, IntegrationTypes
 from sentry.models.user import User
-from sentry.utils.json import JSONData
 
 
 @register(DocIntegration)
@@ -36,7 +35,7 @@ class DocIntegrationSerializer(Serializer):
         attrs: Mapping[str, Any],
         user: User,
         **kwargs: Any,
-    ) -> JSONData:
+    ) -> Any:
         data = {
             "name": obj.name,
             "slug": obj.slug,

+ 2 - 2
src/sentry/api/serializers/models/doc_integration_avatar.py

@@ -1,15 +1,15 @@
 from collections.abc import MutableMapping
+from typing import Any
 
 from sentry.api.serializers import Serializer, register
 from sentry.models.avatars.doc_integration_avatar import DocIntegrationAvatar
-from sentry.utils.json import JSONData
 
 
 @register(DocIntegrationAvatar)
 class DocIntegrationAvatarSerializer(Serializer):
     def serialize(
         self, obj: DocIntegrationAvatar, attrs, user, **kwargs
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         return {
             "avatarType": obj.get_avatar_type_display(),
             "avatarUuid": obj.ident,

+ 1 - 2
src/sentry/api/serializers/models/group.py

@@ -55,7 +55,6 @@ from sentry.tagstore.types import GroupTagValue
 from sentry.tsdb.snuba import SnubaTSDB
 from sentry.types.group import SUBSTATUS_TO_STR, PriorityLevel
 from sentry.utils.cache import cache
-from sentry.utils.json import JSONData
 from sentry.utils.safe import safe_execute
 from sentry.utils.snuba import aliased_query, raw_query
 
@@ -85,7 +84,7 @@ class GroupStatusDetailsResponseOptional(TypedDict, total=False):
     inRelease: str
     inCommit: str
     pendingEvents: int
-    info: JSONData
+    info: Any
 
 
 class GroupStatusDetailsResponse(GroupStatusDetailsResponseOptional):

+ 4 - 5
src/sentry/api/serializers/models/integration.py

@@ -15,7 +15,6 @@ from sentry.services.hybrid_cloud.integration import (
     integration_service,
 )
 from sentry.shared_integrations.exceptions import ApiError
-from sentry.utils.json import JSONData
 
 logger = logging.getLogger(__name__)
 
@@ -54,7 +53,7 @@ def serialize_provider(provider: IntegrationProvider) -> Mapping[str, Any]:
 class IntegrationSerializer(Serializer):
     def serialize(
         self, obj: Integration | RpcIntegration, attrs: Mapping[str, Any], user: User, **kwargs: Any
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         provider = obj.get_provider()
         return {
             "id": str(obj.id),
@@ -82,7 +81,7 @@ class IntegrationConfigSerializer(IntegrationSerializer):
         user: User,
         include_config: bool = True,
         **kwargs: Any,
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         data = super().serialize(obj, attrs, user)
 
         if not include_config:
@@ -137,7 +136,7 @@ class OrganizationIntegrationSerializer(Serializer):
         attrs: Mapping[str, Any],
         user: User,
         include_config: bool = True,
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         # XXX(epurkhiser): This is O(n) for integrations, especially since
         # we're using the IntegrationConfigSerializer which pulls in the
         # integration installation config object which very well may be making
@@ -197,7 +196,7 @@ class OrganizationIntegrationSerializer(Serializer):
 class IntegrationProviderSerializer(Serializer):
     def serialize(
         self, obj: IntegrationProvider, attrs: Mapping[str, Any], user: User, **kwargs: Any
-    ) -> MutableMapping[str, JSONData]:
+    ) -> MutableMapping[str, Any]:
         org_slug = kwargs.pop("organization").slug
         metadata = obj.metadata
         metadata = metadata and metadata._asdict() or None

Some files were not shown because too many files changed in this diff