Files
marshmallow-generic/src/marshmallow_generic/decorators.py
T

43 lines
1.0 KiB
Python

"""Typed overloads for some of the `marshmallow.decorators` module."""
from collections.abc import Callable
from typing import Any, Optional, TypeVar, overload
from typing_extensions import ParamSpec
from marshmallow.decorators import post_load as _post_load
_R = TypeVar("_R")
_P = ParamSpec("_P")
@overload
def post_load(
fn: Callable[_P, _R],
pass_many: bool = False,
pass_original: bool = False,
) -> Callable[_P, _R]:
...
@overload
def post_load(
fn: None = None,
pass_many: bool = False,
pass_original: bool = False,
) -> Callable[[Callable[_P, _R]], Callable[_P, _R]]:
...
def post_load(
fn: Optional[Callable[..., Any]] = None,
pass_many: bool = False,
pass_original: bool = False,
) -> Callable[..., Any]:
"""
Typed overload of the original `marshmallow.post_load` decorator function.
Generic to ensure that the decorated function retains its type.
Runtime behavior is unchanged.
"""
return _post_load(fn, pass_many=pass_many, pass_original=pass_original)