Browse Source

ref: fix some mypy 1.5 errors (#54707)

<!-- Describe your PR here. -->
anthony sottile 1 year ago
parent
commit
514e2a5dac

+ 2 - 1
src/sentry/models/avatars/base.py

@@ -8,6 +8,7 @@ from django.core.exceptions import ObjectDoesNotExist
 from django.db import models, router
 from django.utils.encoding import force_bytes
 from PIL import Image
+from typing_extensions import Self
 
 from sentry.db.models import BoundedBigIntegerField, Model
 from sentry.models.files.file import File
@@ -119,7 +120,7 @@ class AvatarBase(Model):
         return "file_id"
 
     @classmethod
-    def save_avatar(cls, relation, type, avatar=None, filename=None, color=None):
+    def save_avatar(cls, relation, type, avatar=None, filename=None, color=None) -> Self:
         if avatar:
             # Create an instance of the current class so we can
             # access where new files should be stored.

+ 2 - 1
src/sentry/models/files/abstractfileblob.py

@@ -8,6 +8,7 @@ from uuid import uuid4
 
 from django.db import IntegrityError, models, router
 from django.utils import timezone
+from typing_extensions import Self
 
 from sentry.celery import SentryTask
 from sentry.db.models import BoundedPositiveIntegerField, Model
@@ -170,7 +171,7 @@ class AbstractFileBlob(Model):
             logger.debug("FileBlob.from_files.end")
 
     @classmethod
-    def from_file(cls, fileobj, logger=nooplogger):
+    def from_file(cls, fileobj, logger=nooplogger) -> Self:
         """
         Retrieve a single FileBlob instances for the given file.
         """

+ 1 - 1
src/sentry/models/outbox.py

@@ -156,7 +156,7 @@ class OutboxBase(Model):
         )
 
     @classmethod
-    def prepare_next_from_shard(cls, row: Mapping[str, Any]) -> OutboxBase | None:
+    def prepare_next_from_shard(cls, row: Mapping[str, Any]) -> Self | None:
         using = router.db_for_write(cls)
         with transaction.atomic(using=using, savepoint=False):
             next_outbox: OutboxBase | None

+ 12 - 13
tests/sentry/notifications/notifications/test_digests.py

@@ -57,30 +57,29 @@ class DigestNotificationTest(TestCase, OccurrenceTestMixin, PerformanceIssueTest
             self.key, event_to_record(event, [self.rule]), increment_delay=0, maximum_delay=0
         )
 
-    @patch.object(sentry, "digests")
     def run_test(
         self,
-        digests,
         event_count: int,
         performance_issues: bool = False,
         generic_issues: bool = False,
     ):
-        backend = RedisBackend()
-        digests.digest = backend.digest
+        with patch.object(sentry, "digests") as digests:
+            backend = RedisBackend()
+            digests.digest = backend.digest
 
-        for i in range(event_count):
-            self.add_event(f"group-{i}", backend, "error")
+            for i in range(event_count):
+                self.add_event(f"group-{i}", backend, "error")
 
-        if performance_issues:
-            self.add_event(f"group-{event_count+1}", backend, "performance")
+            if performance_issues:
+                self.add_event(f"group-{event_count+1}", backend, "performance")
 
-        if generic_issues:
-            self.add_event(f"group-{event_count+2}", backend, "generic")
+            if generic_issues:
+                self.add_event(f"group-{event_count+2}", backend, "generic")
 
-        with self.tasks():
-            deliver_digest(self.key)
+            with self.tasks():
+                deliver_digest(self.key)
 
-        assert len(mail.outbox) == USER_COUNT
+            assert len(mail.outbox) == USER_COUNT
 
     def setUp(self):
         super().setUp()

+ 21 - 21
tests/sentry/tasks/test_digests.py

@@ -1,4 +1,4 @@
-from unittest.mock import patch
+from unittest import mock
 
 from django.core import mail
 
@@ -14,27 +14,27 @@ from sentry.testutils.helpers.features import with_feature
 
 
 class DeliverDigestTest(TestCase):
-    @patch.object(sentry, "digests")
-    def run_test(self, key: str, digests):
+    def run_test(self, key: str) -> None:
         """Simple integration test to make sure that digests are firing as expected."""
-        backend = RedisBackend()
-        digests.digest = backend.digest
-
-        rule = Rule.objects.create(project=self.project, label="Test Rule", data={})
-        ProjectOwnership.objects.create(project_id=self.project.id, fallthrough=True)
-        event = self.store_event(
-            data={"timestamp": iso_format(before_now(days=1)), "fingerprint": ["group-1"]},
-            project_id=self.project.id,
-        )
-        event_2 = self.store_event(
-            data={"timestamp": iso_format(before_now(days=1)), "fingerprint": ["group-2"]},
-            project_id=self.project.id,
-        )
-        backend.add(key, event_to_record(event, [rule]), increment_delay=0, maximum_delay=0)
-        backend.add(key, event_to_record(event_2, [rule]), increment_delay=0, maximum_delay=0)
-        with self.tasks():
-            deliver_digest(key)
-        assert "2 new alerts since" in mail.outbox[0].subject
+        with mock.patch.object(sentry, "digests") as digests:
+            backend = RedisBackend()
+            digests.digest = backend.digest
+
+            rule = Rule.objects.create(project=self.project, label="Test Rule", data={})
+            ProjectOwnership.objects.create(project_id=self.project.id, fallthrough=True)
+            event = self.store_event(
+                data={"timestamp": iso_format(before_now(days=1)), "fingerprint": ["group-1"]},
+                project_id=self.project.id,
+            )
+            event_2 = self.store_event(
+                data={"timestamp": iso_format(before_now(days=1)), "fingerprint": ["group-2"]},
+                project_id=self.project.id,
+            )
+            backend.add(key, event_to_record(event, [rule]), increment_delay=0, maximum_delay=0)
+            backend.add(key, event_to_record(event_2, [rule]), increment_delay=0, maximum_delay=0)
+            with self.tasks():
+                deliver_digest(key)
+            assert "2 new alerts since" in mail.outbox[0].subject
 
     def test_old_key(self):
         self.run_test(f"mail:p:{self.project.id}")