跳到内容

验证调用

用于验证函数调用的装饰器。

validate_call

validate_call(
    *,
    config: ConfigDict | None = None,
    validate_return: bool = False
) -> Callable[[AnyCallableT], AnyCallableT]
validate_call(func: AnyCallableT) -> AnyCallableT
validate_call(
    func: AnyCallableT | None = None,
    /,
    *,
    config: ConfigDict | None = None,
    validate_return: bool = False,
) -> AnyCallableT | Callable[[AnyCallableT], AnyCallableT]

使用文档

验证装饰器

返回函数周围的装饰器包装器,该包装器验证参数,并可选择验证返回值。

用法可以是纯装饰器 @validate_call 或带参数 @validate_call(...)

参数

名称 类型 描述 默认值
func AnyCallableT | None

要装饰的函数。

None
config ConfigDict | None

配置字典。

None
validate_return bool

是否验证返回值。

False

返回

类型 描述
AnyCallableT | Callable[[AnyCallableT], AnyCallableT]

装饰后的函数。

源代码位于 pydantic/validate_call_decorator.py
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
def validate_call(
    func: AnyCallableT | None = None,
    /,
    *,
    config: ConfigDict | None = None,
    validate_return: bool = False,
) -> AnyCallableT | Callable[[AnyCallableT], AnyCallableT]:
    """!!! abstract "Usage Documentation"
        [Validation Decorator](../concepts/validation_decorator.md)

    Returns a decorated wrapper around the function that validates the arguments and, optionally, the return value.

    Usage may be either as a plain decorator `@validate_call` or with arguments `@validate_call(...)`.

    Args:
        func: The function to be decorated.
        config: The configuration dictionary.
        validate_return: Whether to validate the return value.

    Returns:
        The decorated function.
    """
    parent_namespace = _typing_extra.parent_frame_namespace()

    def validate(function: AnyCallableT) -> AnyCallableT:
        _check_function_type(function)
        validate_call_wrapper = _validate_call.ValidateCallWrapper(
            cast(_generate_schema.ValidateCallSupportedTypes, function), config, validate_return, parent_namespace
        )
        return _validate_call.update_wrapper_attributes(function, validate_call_wrapper.__call__)  # type: ignore

    if func is not None:
        return validate(func)
    else:
        return validate