mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-05-03 16:24:42 +00:00
Add minimal type annotations to make mypy pass
Avoid using `Self` as a type argument: for some reason this fails when mypy has an empty cache, but passes when the cache has been filled. Maybe it's a weird interaction between the mypy core and the django-stubs plugin?
This commit is contained in:
parent
441e3adee5
commit
2f58a1160d
2 changed files with 22 additions and 15 deletions
|
|
@ -1,3 +1,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import ClassVar
|
||||
|
||||
from django.db import models
|
||||
from django.db.models import Manager
|
||||
from django.db.models.query_utils import DeferredAttribute
|
||||
|
|
@ -32,7 +36,7 @@ class InheritanceManagerTestParent(models.Model):
|
|||
related_self = models.OneToOneField(
|
||||
"self", related_name="imtests_self", null=True,
|
||||
on_delete=models.CASCADE)
|
||||
objects = InheritanceManager()
|
||||
objects: ClassVar[InheritanceManager[InheritanceManagerTestParent]] = InheritanceManager()
|
||||
|
||||
def __str__(self):
|
||||
return "{}({})".format(
|
||||
|
|
@ -44,7 +48,7 @@ class InheritanceManagerTestParent(models.Model):
|
|||
class InheritanceManagerTestChild1(InheritanceManagerTestParent):
|
||||
non_related_field_using_descriptor_2 = models.FileField(upload_to="test")
|
||||
normal_field_2 = models.TextField()
|
||||
objects = InheritanceManager()
|
||||
objects: ClassVar[InheritanceManager[InheritanceManagerTestParent]] = InheritanceManager()
|
||||
|
||||
|
||||
class InheritanceManagerTestGrandChild1(InheritanceManagerTestChild1):
|
||||
|
|
@ -172,8 +176,8 @@ class Post(models.Model):
|
|||
order = models.IntegerField()
|
||||
|
||||
objects = models.Manager()
|
||||
public = QueryManager(published=True)
|
||||
public_confirmed = QueryManager(
|
||||
public: ClassVar[QueryManager[Post]] = QueryManager(published=True)
|
||||
public_confirmed: ClassVar[QueryManager[Post]] = QueryManager(
|
||||
models.Q(published=True) & models.Q(confirmed=True))
|
||||
public_reversed = QueryManager(published=True).order_by("-order")
|
||||
|
||||
|
|
@ -194,7 +198,7 @@ class SplitFieldAbstractParent(models.Model):
|
|||
|
||||
|
||||
class AbstractTracked(models.Model):
|
||||
number = 1
|
||||
number: models.IntegerField
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
|
@ -340,13 +344,13 @@ class SoftDeletable(SoftDeletableModel):
|
|||
"""
|
||||
name = models.CharField(max_length=20)
|
||||
|
||||
all_objects = models.Manager()
|
||||
all_objects: ClassVar[Manager[SoftDeletable]] = models.Manager()
|
||||
|
||||
|
||||
class CustomSoftDelete(SoftDeletableModel):
|
||||
is_read = models.BooleanField(default=False)
|
||||
|
||||
objects = CustomSoftDeleteManager()
|
||||
objects: ClassVar[CustomSoftDeleteManager[SoftDeletableModel]] = CustomSoftDeleteManager()
|
||||
|
||||
|
||||
class StringyDescriptor:
|
||||
|
|
@ -390,7 +394,7 @@ class ModelWithCustomDescriptor(models.Model):
|
|||
|
||||
class BoxJoinModel(models.Model):
|
||||
name = models.CharField(max_length=32)
|
||||
objects = JoinManager()
|
||||
objects: ClassVar[JoinManager[BoxJoinModel]] = JoinManager()
|
||||
|
||||
|
||||
class JoinItemForeignKey(models.Model):
|
||||
|
|
@ -400,7 +404,7 @@ class JoinItemForeignKey(models.Model):
|
|||
null=True,
|
||||
on_delete=models.CASCADE
|
||||
)
|
||||
objects = JoinManager()
|
||||
objects: ClassVar[JoinManager[JoinItemForeignKey]] = JoinManager()
|
||||
|
||||
|
||||
class CustomUUIDModel(UUIDModel):
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from unittest import skip
|
||||
|
||||
from django.core.cache import cache
|
||||
from django.core.exceptions import FieldError
|
||||
from django.db import models
|
||||
from django.db.models.fields.files import FieldFile
|
||||
from django.test import TestCase
|
||||
|
||||
|
|
@ -73,7 +76,7 @@ class FieldTrackerCommonTests:
|
|||
|
||||
class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests):
|
||||
|
||||
tracked_class = Tracked
|
||||
tracked_class: type[models.Model] = Tracked
|
||||
|
||||
def setUp(self):
|
||||
self.instance = self.tracked_class()
|
||||
|
|
@ -280,7 +283,7 @@ class FieldTrackerMultipleInstancesTests(TestCase):
|
|||
class FieldTrackedModelCustomTests(FieldTrackerTestCase,
|
||||
FieldTrackerCommonTests):
|
||||
|
||||
tracked_class = TrackedNotDefault
|
||||
tracked_class: type[models.Model] = TrackedNotDefault
|
||||
|
||||
def setUp(self):
|
||||
self.instance = self.tracked_class()
|
||||
|
|
@ -411,7 +414,7 @@ class FieldTrackedModelAttributeTests(FieldTrackerTestCase):
|
|||
class FieldTrackedModelMultiTests(FieldTrackerTestCase,
|
||||
FieldTrackerCommonTests):
|
||||
|
||||
tracked_class = TrackedMultiple
|
||||
tracked_class: type[models.Model] = TrackedMultiple
|
||||
|
||||
def setUp(self):
|
||||
self.instance = self.tracked_class()
|
||||
|
|
@ -502,8 +505,8 @@ class FieldTrackedModelMultiTests(FieldTrackerTestCase,
|
|||
|
||||
class FieldTrackerForeignKeyTests(FieldTrackerTestCase):
|
||||
|
||||
fk_class = Tracked
|
||||
tracked_class = TrackedFK
|
||||
fk_class: type[models.Model] = Tracked
|
||||
tracked_class: type[models.Model] = TrackedFK
|
||||
|
||||
def setUp(self):
|
||||
self.old_fk = self.fk_class.objects.create(number=8)
|
||||
|
|
@ -729,7 +732,7 @@ class FieldTrackerFileFieldTests(FieldTrackerTestCase):
|
|||
|
||||
class ModelTrackerTests(FieldTrackerTests):
|
||||
|
||||
tracked_class = ModelTracked
|
||||
tracked_class: type[models.Model] = ModelTracked
|
||||
|
||||
def test_cache_compatible(self):
|
||||
cache.set('key', self.instance)
|
||||
|
|
|
|||
Loading…
Reference in a new issue