Source code for dmr.internal.endpoint

from typing import TYPE_CHECKING, Literal, overload

from django.http import HttpRequest

if TYPE_CHECKING:
    from dmr.endpoint import Endpoint


@overload
def request_endpoint(
    request: HttpRequest,
    *,
    strict: Literal[True],
) -> 'Endpoint': ...


@overload
def request_endpoint(
    request: HttpRequest,
    *,
    strict: bool = False,
) -> 'Endpoint | None': ...


[docs] def request_endpoint( request: HttpRequest, *, strict: bool = False, ) -> 'Endpoint | None': """ Return an instance of the ``Endpoint`` that was used for this request. When *strict* is passed and *request* has no endpoint, we raise :exc:`AttributeError`. This can happen for ``405`` responses, for example. They don't have endpoints. All others do. """ endpoint = getattr(request, '__dmr_endpoint__', None) if endpoint is None and strict: raise AttributeError('__dmr_endpoint__') return endpoint