mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-03-16 20:00:23 +00:00
Removed unnecessary type ignore comments, dropped outdated Python and Django versions, and adjusted type ignores in the test suite.
This commit is contained in:
parent
3594bb9e7f
commit
c75b23765a
6 changed files with 20 additions and 21 deletions
|
|
@ -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).
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
2
tox.ini
2
tox.ini
|
|
@ -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}
|
||||
|
|
|
|||
Loading…
Reference in a new issue