from django.core.exceptions import ObjectDoesNotExist from django.db.models.base import Model from django.db.models.fields.related import ForeignObject from django.db.models.fields.reverse_related import ( ForeignObjectRel, ManyToManyRel, OneToOneRel, ) from django.db.models.query import QuerySet from typing import ( Any, Callable, Optional, Tuple, Type, ) class ForwardManyToOneDescriptor: @cached_property def RelatedObjectDoesNotExist(self) -> Type[ObjectDoesNotExist]: ... def __get__(self, instance: Any, cls: Any = ...) -> Any: ... def __init__(self, field_with_rel: ForeignObject) -> None: ... def __set__(self, instance: Model, value: Any) -> None: ... def get_object(self, instance: Model) -> Model: ... def get_prefetch_queryset( self, instances: Any, queryset: Optional[QuerySet] = ... ) -> Tuple[QuerySet, Callable, Callable, bool, str, bool]: ... def get_queryset(self, **hints) -> QuerySet: ... def is_cached(self, instance: Model) -> bool: ... class ForwardOneToOneDescriptor: def __set__(self, instance: Model, value: Any) -> None: ... def get_object(self, instance: Model) -> Model: ... class ManyToManyDescriptor: def __init__(self, rel: ManyToManyRel, reverse: bool = ...) -> None: ... class ReverseManyToOneDescriptor: def __get__( self, instance: Optional[Model], cls: Any = ... ) -> ReverseManyToOneDescriptor: ... def __init__(self, rel: ForeignObjectRel) -> None: ... def _get_set_deprecation_msg_params(self) -> Tuple[str, str]: ... class ReverseOneToOneDescriptor: @cached_property def RelatedObjectDoesNotExist(self) -> Type[ObjectDoesNotExist]: ... def __get__(self, instance: Any, cls: Any = ...) -> Any: ... def __init__(self, related: OneToOneRel) -> None: ... def __set__(self, instance: Model, value: Optional[Model]) -> None: ... def get_queryset(self, **hints) -> QuerySet: ... def is_cached(self, instance: Model) -> bool: ...