用于运行时类型检查和Python值验证的库
项目描述
一个简单的Python库,包含检查Python值的函数。它旨在简化对函数参数的常见预期先决条件的验证。
最初在Joivy Ltd开发和开源。
安装
validation库在PyPI上可用。
可以使用pip手动安装。
$ pip install validation
由于此库是清理现有代码库的有用工具,它将继续支持Python 2.7一段时间。字符串验证函数特别有助于在迁移到Python 3之前解决Unicode问题。
用法
此库提供的验证函数旨在在公共函数的头部使用,以检查其参数。
from validation import (
validate_int, validate_float,
validate_structure,
validate_text,
)
def function(int_arg, dict_arg, unicode_arg=None):
"""
A normal function that expects to be called in a particular way.
:param int int_arg:
A non-optional integer. Must be between one and ten.
:param dict dict_arg:
A dictionary containing an integer ID, and a floating point amount.
:param str unicode_arg:
An optional string.
"""
validate_int(int_arg, min_value=0, max_value=10)
validate_structure(dict_arg, schema={
'id': validate_int(min_value=0)
'amount': validate_float(),
})
validate_text(unicode_argument, required=False)
# Do something.
...
验证函数抛出的异常可以传递。所有操作都是内联的,没有单独的模式对象或函数。
设计
什么是 验证
此库包含一些函数,如果提供了第一个参数,则检查该参数,或者返回一个可以稍后使用的闭包。
函数检查值是否与语义类型匹配,而不是具体类型。 validate_structure 和 validate_mapping 都期望字典,但它们在是否将键视为名称或键上有所不同。validate_text 存在,但我们还提供了用于电子邮件地址和域名特殊验证器。
函数默认情况下相当严格。例如,validate_float 将拒绝 NaN,除非明确允许。在 Python 2 中,validate_text 将强制使用 Unicode。
旨在与常规 Python 代码混合使用,以执行更复杂的验证。例如,此库不提供断言两个值互斥的工具,因为此要求可以通过简单的 if 块更清楚地表达。
实现了对简单数据结构的验证的基本支持。
什么是 验证 不做的
validation 库不是一个模式定义语言。验证函数和闭包不是为可访问性而设计的,并且期望内联使用。
它不打算用于验证序列化数据或部分序列化数据。虽然有一些支持验证结构化字典,但它不扩展到处理 json 中表示 sum types 的许多方式。更复杂的数据结构通常应表示为类,并将验证推送到构造函数。
由验证库抛出的异常不应被捕获。我们假设验证失败表明调用者使用不当,并且错误将由程序员而不是机器解释。
我们使用内置的异常类而不是定义自定义的,这样使用我们的函数的库可以允许它们通过其公共接口传递。
最后,validation 库不执行任何类型的清理。其目的是捕获错误,而不是掩盖它们。传递给库的值永远不会被修改。
链接
许可证
该项目根据 Apache 2.0 许可证提供。有关详细信息,请参阅 LICENSE。
项目详情
validation-0.8.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c4aed7dd548b5ad3ba12306cda7322658490e22dedef29295fdb8692b1b4fe3a |
|
MD5 | cf61666f411a0f9e638b6240b75f8667 |
|
BLAKE2b-256 | baf70271494d63791033cc993d446f55f86d8c59a45935981b450def3457494e |