normalize包是一个类生成器和工具包,对于
编写“简单的旧数据结构”来包装来自网络源的数据
在python对象中。
它被称为“normalize”,因为它关注的是第一个normal
关系数据库建模的形式。
这是定义
通常称为“记录”(或rows)。
记录是定义的属性/属性集合(columns),
您大致了解每个属性/属性的期望值,以及
可以通过某种描述符(即属性名)访问它们。
也可以将其用作通用的声明性元编程。
框架,因为它附带了一个官方的元对象协议(MOP)API
为了描述这些信息,在python的概念之上构建
类/类型和描述符,必要时进行扩展。
简单地说,您编写python类来描述您的假设
关于你正在处理的数据结构,输入数据和
您将得到常规的python对象,这些对象具有
可以自然使用。
或者,你犯了错误,发现你必须重新审视你的假设。
然后可以对对象执行基本操作,例如make
对它们的更改并将其转换回,或将它们与另一个进行比较
使用富比较api的版本。
还可以使用常规python“本地”构造对象
关键字/值构造函数或通过将dict作为第一个
争论。
它的作用域与remoteobjects和
schematics包在pypi上,并可能在时间上演变为包含所有
这些包的特性。
虽然模块中有一些主键的概念,但主要用于
识别藏品中的物品进行比较的目的,
更高水平的正常化是留给
实施者。
功能声明式api,可以选择包含直接封送处理
提示:class Star(Record):
id = Property(isa=int, required=True)
name = Property(isa=str)
other_names = Property(json_name="otherNames")
类型描述(isa=)是完全可选的,但如果给定
将用于类型检查和强制。
富描述符api(在normalize.property中),包括
不只是“必需”和“isa”类型提示的概念,如上所示
还有默认函数、自定义类型检查函数和
强制功能。
它还提供了一个可扩展的属性-特征系统,增加了
通过可选属性子类的功能,自动选择,
启用:一次在python核心层缩短的惰性属性
计算(一个未充分使用的python特性)
只读属性
类型安全属性(即,指定时的类型检查)
集合属性(见下文)
从常规python字典或^{tt6}强制$
(kwargs)构造函数参数
所有类与json之间的转换,无论
它们派生出normalize.record.json.JsonRecord。支持自定义
json的函数封送入和出。
通过pickle api转换为原始python类型
(__getnewargs__)
new in 0.5:用于封送处理到其他
其他形式。有关新的
normalize.visitor.VisitorPatternapi。
具有项强制的类型化集合(当前仅限列表和dict):class StarSystem(Record):
components = ListProperty(Star)
alpha_centauri = StarSystem(
components=[{id=70890, name="Proxima Centauri"},
{id=71683, name="Alpha Centauri A"},
{id=71681, name="Alpha Centauri B"}]
)
“字段选择器”API,允许指定属性
深入嵌套数据结构;name_selector = FieldSelector("components", 0, "name")
print name_selector.get(alpha_centauri) # "Proxima Centauri"
返回两个记录之间差异的比较API
匹配类型。能够将属性标记为“无关”以跳过
比较(这也会影响==运算符)
…还有更多!
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库