Removed unnecessary type ignore comments, dropped outdated Python and Django versions, and adjusted type ignores in the test suite.

This commit is contained in:
Benedikt Willi 2025-12-15 17:23:36 +01:00
parent 3594bb9e7f
commit c75b23765a
6 changed files with 20 additions and 21 deletions

View file

@ -196,8 +196,7 @@ class InheritanceQuerySetMixin(Generic[ModelT]):
# Defining the 'model' attribute using a generic type triggers a bug in mypy:
# https://github.com/python/mypy/issues/9031
class InheritanceQuerySet(InheritanceQuerySetMixin[ModelT], QuerySet[ModelT]): # type: ignore[misc]
class InheritanceQuerySet(InheritanceQuerySetMixin[ModelT], QuerySet[ModelT]):
def instance_of(self, *models: type[ModelT]) -> InheritanceQuerySet[ModelT]:
"""
Fetch only objects that are instances of the provided model(s).

View file

@ -110,7 +110,7 @@ class TimeFrameManagerAdded(TimeFramedModel):
class Monitored(models.Model):
name = models.CharField(max_length=25)
name_changed = MonitorField(monitor="name")
name_changed_nullable = MonitorField(monitor="name", null=True)
name_changed_nullable = MonitorField(monitor="name", null=True) # type: ignore[misc]
class MonitorWhen(models.Model):

View file

@ -544,7 +544,7 @@ class FieldTrackerForeignKeyMixin(FieldTrackerMixin):
self.assertChanged()
self.assertPrevious()
self.assertCurrent(id=self.instance.id, fk_id=self.old_fk.id)
self.instance.fk = self.fk_class.objects.create(number=8) # type: ignore[assignment]
self.instance.fk = self.fk_class.objects.create(number=8)
self.assertChanged(fk_id=self.old_fk.id)
self.assertPrevious(fk_id=self.old_fk.id)
self.assertCurrent(id=self.instance.id, fk_id=self.instance.fk_id)
@ -554,7 +554,7 @@ class FieldTrackerForeignKeyMixin(FieldTrackerMixin):
self.assertChanged()
self.assertPrevious()
self.assertCurrent(fk_id=self.old_fk.id)
self.instance.fk = self.fk_class.objects.create(number=8) # type: ignore[assignment]
self.instance.fk = self.fk_class.objects.create(number=8)
self.assertChanged(fk_id=self.old_fk.id)
self.assertPrevious(fk_id=self.old_fk.id)
self.assertCurrent(fk_id=self.instance.fk_id)
@ -566,7 +566,7 @@ class FieldTrackerForeignKeyMixin(FieldTrackerMixin):
self.assertChanged()
self.assertPrevious()
self.assertCurrent(fk=self.old_fk.id)
self.instance.fk = self.fk_class.objects.create(number=8) # type: ignore[assignment]
self.instance.fk = self.fk_class.objects.create(number=8)
self.assertChanged(fk=self.old_fk.id)
self.assertPrevious(fk=self.old_fk.id)
self.assertCurrent(fk=self.instance.fk_id)

View file

@ -511,7 +511,7 @@ class InheritanceManagerRelatedTests(InheritanceManagerTests):
self.child1)
def test_get_method_with_select_subclasses_check_for_useless_join(self) -> None:
child4 = InheritanceManagerTestChild4.objects.create(related=self.related, other_onetoone=self.child1)
child4 = InheritanceManagerTestChild4.objects.create(related=self.related, other_onetoone=self.child1) # type: ignore[misc]
self.assertEqual(
str(InheritanceManagerTestChild4.objects.select_subclasses().filter(
id=child4.id).query),
@ -521,7 +521,7 @@ class InheritanceManagerRelatedTests(InheritanceManagerTests):
def test_annotate_with_select_subclasses(self) -> None:
qs = InheritanceManagerTestParent.objects.select_subclasses().annotate(
models.Count('id'))
self.assertEqual(qs.get(id=self.child1.id).id__count, 1)
self.assertEqual(qs.get(id=self.child1.id).id__count, 1) # type: ignore[attr-defined]
def test_annotate_with_named_arguments_with_select_subclasses(self) -> None:
qs = InheritanceManagerTestParent.objects.select_subclasses().annotate(
@ -531,7 +531,7 @@ class InheritanceManagerRelatedTests(InheritanceManagerTests):
def test_annotate_before_select_subclasses(self) -> None:
qs = InheritanceManagerTestParent.objects.annotate(
models.Count('id')).select_subclasses()
self.assertEqual(qs.get(id=self.child1.id).id__count, 1)
self.assertEqual(qs.get(id=self.child1.id).id__count, 1) # type: ignore[attr-defined]
def test_annotate_with_named_arguments_before_select_subclasses(self) -> None:
qs = InheritanceManagerTestParent.objects.annotate(

View file

@ -8,16 +8,16 @@ from tests.models import SoftDeletable
class SoftDeletableModelTests(TestCase):
def test_can_only_see_not_removed_entries(self) -> None:
SoftDeletable.available_objects.create(name='a', is_removed=True)
SoftDeletable.available_objects.create(name='b', is_removed=False)
SoftDeletable.available_objects.create(name='a', is_removed=True) # type: ignore[misc]
SoftDeletable.available_objects.create(name='b', is_removed=False) # type: ignore[misc]
queryset = SoftDeletable.available_objects.all()
self.assertEqual(queryset.count(), 1)
self.assertEqual(queryset[0].name, 'b')
self.assertEqual(queryset[0].name, 'b') # type: ignore[attr-defined]
def test_instance_cannot_be_fully_deleted(self) -> None:
instance = SoftDeletable.available_objects.create(name='a')
instance = SoftDeletable.available_objects.create(name='a') # type: ignore[misc]
instance.delete()
@ -25,7 +25,7 @@ class SoftDeletableModelTests(TestCase):
self.assertEqual(SoftDeletable.all_objects.count(), 1)
def test_instance_cannot_be_fully_deleted_via_queryset(self) -> None:
SoftDeletable.available_objects.create(name='a')
SoftDeletable.available_objects.create(name='a') # type: ignore[misc]
SoftDeletable.available_objects.all().delete()
@ -33,12 +33,12 @@ class SoftDeletableModelTests(TestCase):
self.assertEqual(SoftDeletable.all_objects.count(), 1)
def test_delete_instance_no_connection(self) -> None:
obj = SoftDeletable.available_objects.create(name='a')
obj = SoftDeletable.available_objects.create(name='a') # type: ignore[misc]
self.assertRaises(ConnectionDoesNotExist, obj.delete, using='other')
def test_instance_purge(self) -> None:
instance = SoftDeletable.available_objects.create(name='a')
instance = SoftDeletable.available_objects.create(name='a') # type: ignore[misc]
instance.delete(soft=False)
@ -46,7 +46,7 @@ class SoftDeletableModelTests(TestCase):
self.assertEqual(SoftDeletable.all_objects.count(), 0)
def test_instance_purge_no_connection(self) -> None:
instance = SoftDeletable.available_objects.create(name='a')
instance = SoftDeletable.available_objects.create(name='a') # type: ignore[misc]
self.assertRaises(ConnectionDoesNotExist, instance.delete,
using='other', soft=False)
@ -55,10 +55,10 @@ class SoftDeletableModelTests(TestCase):
self.assertWarns(DeprecationWarning, SoftDeletable.objects.all)
def test_delete_queryset_return(self) -> None:
SoftDeletable.available_objects.create(name='a')
SoftDeletable.available_objects.create(name='b')
SoftDeletable.available_objects.create(name='a') # type: ignore[misc]
SoftDeletable.available_objects.create(name='b') # type: ignore[misc]
result = SoftDeletable.available_objects.filter(name="a").delete()
result = SoftDeletable.available_objects.filter(name="a").delete() # type: ignore[misc]
assert result == (
1, {SoftDeletable._meta.label: 1}

View file

@ -1,6 +1,6 @@
[tox]
envlist =
py{38,39,310,311}-dj{42}
py{310,311}-dj{42}
py{310,311,312}-dj{50,51}
py{310,311,312,313}-dj{51,52}
py{314}-dj{52}