23 lines
636 B
Python
23 lines
636 B
Python
from collections.abc import Mapping
|
|
from typing import Annotated, Any, Generic, TypeVar
|
|
|
|
from django.db.models.base import Model
|
|
|
|
# Really, we would like to use TypedDict as a bound, but it's not possible
|
|
_Annotations = TypeVar("_Annotations", covariant=True, bound=Mapping[str, Any])
|
|
|
|
|
|
class Annotations(Generic[_Annotations]):
|
|
"""Use as `Annotations[MyTypedDict]`"""
|
|
|
|
pass
|
|
|
|
|
|
_T = TypeVar("_T", bound=Model)
|
|
|
|
WithAnnotations = Annotated[_T, Annotations[_Annotations]]
|
|
"""Alias to make it easy to annotate the model `_T` as having annotations
|
|
`_Annotations` (a `TypedDict`).
|
|
|
|
Use as `WithAnnotations[MyModel, MyTypedDict]`.
|
|
"""
|