|
| 1 | +# ruff: noqa: F811 |
| 2 | +from __future__ import annotations |
| 3 | + |
1 | 4 | from functools import partial |
| 5 | +from typing import TYPE_CHECKING, Any |
2 | 6 |
|
3 | 7 | from bson.objectid import ObjectId |
4 | 8 | from django.db.models import Model |
5 | 9 | from django.db.models.base import ModelState |
| 10 | +from mongoengine import DoesNotExist |
6 | 11 | from mongoengine import document as me |
7 | 12 | from mongoengine.base import metaclasses as mtc |
8 | 13 | from mongoengine.errors import FieldDoesNotExist |
@@ -38,9 +43,12 @@ def __new__(cls, name, bases, attrs): |
38 | 43 |
|
39 | 44 |
|
40 | 45 | class DjangoFlavor: |
41 | | - objects = QuerySetManager() |
42 | | - _default_manager = QuerySetManager() |
| 46 | + id: Any |
| 47 | + objects: Any = QuerySetManager() |
| 48 | + _meta: DocumentMetaWrapper |
| 49 | + _default_manager: Any = QuerySetManager() |
43 | 50 | _get_pk_val = Model.__dict__["_get_pk_val"] |
| 51 | + DoesNotExist: type[DoesNotExist] |
44 | 52 |
|
45 | 53 | def __init__(self, *args, **kwargs): |
46 | 54 | self._state = ModelState() |
@@ -96,3 +104,18 @@ class DynamicEmbeddedDocument( |
96 | 104 | django_meta(mtc.DocumentMetaclass, DjangoFlavor, me.DynamicEmbeddedDocument) |
97 | 105 | ): |
98 | 106 | 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