def inject(
func: Callable[P, T] | None = None,
*,
cast: bool = True,
cast_result: bool = True,
extra_dependencies: Sequence[Dependant] = (),
dependency_provider: Optional["Provider"] = None,
wrap_model: Callable[["CallModel"], "CallModel"] = lambda x: x,
serializer_cls: Optional["SerializerProto"] = SerializerCls,
**call_extra: Any,
) -> Union[Callable[P, T], "InjectWrapper[P, T]"]:
if dependency_provider is None:
dependency_provider = global_provider
if not cast:
serializer_cls = None
decorator: InjectWrapper[P, T] = _wrap_inject(
dependency_provider=dependency_provider,
wrap_model=wrap_model,
extra_dependencies=extra_dependencies,
serializer_cls=serializer_cls,
cast_result=cast_result,
**call_extra,
)
if func is None:
return decorator
return decorator(func)