mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-10-04 07:10:32 +00:00
Chore: Updates typing baseline files (#14295)
* Chore: Refresh the mypy and pyrefly baselines * Chore: Type factory calls as the model they build for mypy factory-boy leaves Factory() unannotated, so mypy took UserFactory() to be a factory instance rather than a User. A shared TypedModelFactory base declares the call as returning the model for type checking only. * Refresh again after rebase
This commit is contained in:
@@ -5,8 +5,7 @@ Factory-boy factories for documents app models.
|
||||
from __future__ import annotations
|
||||
|
||||
import factory
|
||||
from django.contrib.auth import get_user_model
|
||||
from factory.django import DjangoModelFactory
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from documents.models import Correspondent
|
||||
from documents.models import Document
|
||||
@@ -15,11 +14,10 @@ from documents.models import MatchingModel
|
||||
from documents.models import PaperlessTask
|
||||
from documents.models import StoragePath
|
||||
from documents.models import Tag
|
||||
|
||||
UserModelT = get_user_model()
|
||||
from paperless_testing.typed_factory import TypedModelFactory
|
||||
|
||||
|
||||
class CorrespondentFactory(DjangoModelFactory[Correspondent]):
|
||||
class CorrespondentFactory(TypedModelFactory[Correspondent]):
|
||||
class Meta:
|
||||
model = Correspondent
|
||||
|
||||
@@ -28,7 +26,7 @@ class CorrespondentFactory(DjangoModelFactory[Correspondent]):
|
||||
matching_algorithm = MatchingModel.MATCH_NONE
|
||||
|
||||
|
||||
class DocumentTypeFactory(DjangoModelFactory[DocumentType]):
|
||||
class DocumentTypeFactory(TypedModelFactory[DocumentType]):
|
||||
class Meta:
|
||||
model = DocumentType
|
||||
|
||||
@@ -37,7 +35,7 @@ class DocumentTypeFactory(DjangoModelFactory[DocumentType]):
|
||||
matching_algorithm = MatchingModel.MATCH_NONE
|
||||
|
||||
|
||||
class TagFactory(DjangoModelFactory[Tag]):
|
||||
class TagFactory(TypedModelFactory[Tag]):
|
||||
class Meta:
|
||||
model = Tag
|
||||
|
||||
@@ -47,7 +45,7 @@ class TagFactory(DjangoModelFactory[Tag]):
|
||||
is_inbox_tag = False
|
||||
|
||||
|
||||
class StoragePathFactory(DjangoModelFactory[StoragePath]):
|
||||
class StoragePathFactory(TypedModelFactory[StoragePath]):
|
||||
class Meta:
|
||||
model = StoragePath
|
||||
|
||||
@@ -59,7 +57,7 @@ class StoragePathFactory(DjangoModelFactory[StoragePath]):
|
||||
matching_algorithm = MatchingModel.MATCH_NONE
|
||||
|
||||
|
||||
class DocumentFactory(DjangoModelFactory[Document]):
|
||||
class DocumentFactory(TypedModelFactory[Document]):
|
||||
class Meta:
|
||||
model = Document
|
||||
|
||||
@@ -71,9 +69,9 @@ class DocumentFactory(DjangoModelFactory[Document]):
|
||||
storage_path = None
|
||||
|
||||
|
||||
class UserFactory(DjangoModelFactory[UserModelT]):
|
||||
class UserFactory(TypedModelFactory[User]):
|
||||
class Meta:
|
||||
model = UserModelT
|
||||
model = User
|
||||
|
||||
username = factory.Sequence(lambda n: f"user{n}")
|
||||
is_staff = False
|
||||
@@ -88,7 +86,7 @@ class UserFactory(DjangoModelFactory[UserModelT]):
|
||||
staff = factory.Trait(is_staff=True)
|
||||
|
||||
|
||||
class PaperlessTaskFactory(DjangoModelFactory[PaperlessTask]):
|
||||
class PaperlessTaskFactory(TypedModelFactory[PaperlessTask]):
|
||||
class Meta:
|
||||
model = PaperlessTask
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
"""
|
||||
A DjangoModelFactory base whose calls are typed as the model they build.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from typing import Any
|
||||
from typing import TypeVar
|
||||
|
||||
from factory.django import DjangoModelFactory
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
class TypedModelFactory(DjangoModelFactory[T]):
|
||||
if TYPE_CHECKING:
|
||||
# factory-boy leaves Factory() unannotated, so mypy takes it to build a
|
||||
# factory instance. At runtime it builds the model.
|
||||
def __new__(cls, *args: Any, **kwargs: Any) -> T: ... # type: ignore[misc]
|
||||
Reference in New Issue
Block a user