Skip to content

Commit 5c843e6

Browse files
committed
fix(typing): Add static types for dynamic classes
Refs microsoft/pyright#6309
1 parent 505d126 commit 5c843e6

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

django_mongoengine/document.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1+
# ruff: noqa: F811
2+
from __future__ import annotations
3+
14
from functools import partial
5+
from typing import TYPE_CHECKING, Any
26

37
from bson.objectid import ObjectId
48
from django.db.models import Model
59
from django.db.models.base import ModelState
10+
from mongoengine import DoesNotExist
611
from mongoengine import document as me
712
from mongoengine.base import metaclasses as mtc
813
from mongoengine.errors import FieldDoesNotExist
@@ -38,9 +43,12 @@ def __new__(cls, name, bases, attrs):
3843

3944

4045
class DjangoFlavor:
41-
objects = QuerySetManager()
42-
_default_manager = QuerySetManager()
46+
id: Any
47+
objects: Any = QuerySetManager()
48+
_meta: DocumentMetaWrapper
49+
_default_manager: Any = QuerySetManager()
4350
_get_pk_val = Model.__dict__["_get_pk_val"]
51+
DoesNotExist: type[DoesNotExist]
4452

4553
def __init__(self, *args, **kwargs):
4654
self._state = ModelState()
@@ -96,3 +104,18 @@ class DynamicEmbeddedDocument(
96104
django_meta(mtc.DocumentMetaclass, DjangoFlavor, me.DynamicEmbeddedDocument)
97105
):
98106
swap_base = True
107+
108+
109+
if TYPE_CHECKING:
110+
111+
class Document(DjangoFlavor, me.Document):
112+
...
113+
114+
class DynamicDocument(DjangoFlavor, me.DynamicDocument):
115+
...
116+
117+
class EmbeddedDocument(DjangoFlavor, me.EmbeddedDocument):
118+
...
119+
120+
class DynamicEmbeddedDocument(DjangoFlavor, me.DynamicEmbeddedDocument):
121+
...

0 commit comments

Comments
 (0)