验证和数据管道变得简单!
phx-filters的Python项目详细描述
过滤器
过滤器库提供了一种简单易读的方法来创建复杂的 数据验证和处理管道,包括:
- 验证api请求或配置文件中的复杂json结构。
- 解析时间戳并转换为UTC。
- 将Unicode字符串转换为NFC,规范化行尾并删除 无法打印的字符。
- 解码base64,包括url安全变体。
还有更多!
一个过滤器的输出可以“管道”到另一个过滤器的输入中,使 您可以将过滤器“链接”在一起,以便快速轻松地创建复杂的数据 管道。
示例
验证纬度位置并精确到可管理的精度:
(f.Required|f.Decimal|f.Min(Decimal(-90))|f.Max(Decimal(90))|f.Round(to_nearest='0.000001')).apply('-12.0431842')
将传入值解析为日期时间,转换为UTC并删除tzinfo:
f.Datetime(naive=True).apply('2015-04-08T15:11:22-05:00')
将iterable(例如list)中的每个值转换为unicode并删除 前导/尾随空格。 这也适用于Unicode normalization,删除不可打印的字符和 自动规格化线端点。
f.FilterRepeater(f.Unicode|f.Strip).apply([b'\xe2\x99\xaa ',b'\xe2\x94\x8f(\xc2\xb0.\xc2\xb0)\xe2\x94\x9b ',b'\xe2\x94\x97(\xc2\xb0.\xc2\xb0)\xe2\x94\x93 ',b'\xe2\x99\xaa ',])
分析json字符串并检查其结构是否正确:
(f.JsonDecode|f.FilterMapper({'birthday':f.Date,'gender':f.CaseFold|f.Choice(choices={'m','f','x'}),'utcOffset':f.Decimal|f.Min(Decimal('-15'))|f.Max(Decimal('+15'))|f.Round(to_nearest='0.25'),},allow_extra_keys=False,allow_missing_keys=False,)).apply('{"birthday":"1879-03-14", "gender":"M", "utcOffset":"1"}')
要求
过滤器与以下python版本兼容:
- 3.8
- 3.7
- 3.6
- 3.5
注意
过滤器与python 2不兼容。
安装
通过pip安装最新的稳定版本:
pip install phx-filters
扩展名
提供以下扩展:
Django Filters:添加设计用于django应用程序的筛选器。 要安装:
pip install phx-filters[django]
ISO Filters:添加用于解释标准代码和标识符的筛选器。 要安装:
pip install phx-filters[iso]
提示
要安装多个扩展,请用逗号将它们分开,例如:
pip install phx-filters[django,iso]
运行单元测试
从源安装后运行单元测试:
python setup.py test
此项目还与tox兼容,后者将在中运行单元测试 不同的虚拟环境(每个受支持的python版本一个)。
使用test-runnerextra安装包以设置必要的 依赖项,然后可以使用tox命令运行测试:
pip install -e .[test-runner] tox -p all
文件
文档可在ReadTheDocs上找到。
如果您是从源代码安装(见上文),也可以构建 本地文档:
安装额外的依赖项(您只需执行一次):
pip install '.[docs-builder]'
切换到docs目录:
cd docs
制作文档:
make html