泛型formlib字段
dolmen.field的Python项目详细描述
dolmen.field包为 扩展zope.schema。
配置字段
配置字段用于描述和约束,以 强制使用一致的架构和数据模型。
全局类
globalClass是需要有效接口类的字段。可能是 用于工厂和其他需要存储 接口,可以检查和验证 给定值:
>>> from zope.interface import Interface >>> from dolmen.field import GlobalClass, IClassField >>> class IDummy(Interface): ... def shall_fail(): ... pass >>> class Dummy(object): ... pass
当然,它必须是一个有效的接口:
>>> field = GlobalClass( ... title=u'a class field', ... schema=object ... ) Traceback (most recent call last): ... WrongType: <type 'object'> is not a valid Interface
接口将用于验证类:
>>> field = GlobalClass( ... title=u'a class field', ... schema=IDummy ... ) >>> field.schema <InterfaceClass dolmen.field.tests.IDummy> >>> IClassField.providedBy(field) True
我们确保未触摸接口属性:
>>> print field.interface None
在第一次,我们确保类实现所需的接口:
>>> field._validate(Dummy) Traceback (most recent call last): ... ConstraintNotSatisfied: <class 'dolmen.field.tests.Dummy'> does not implement <InterfaceClass dolmen.field.tests.IDummy> >>> from zope.interface import classImplements >>> classImplements(Dummy, IDummy) >>> IDummy.implementedBy(Dummy) True
然后该接口充当一个严格的验证器:
>>> field._validate(Dummy) Traceback (most recent call last): ... BrokenImplementation: An object has failed to implement interface <InterfaceClass dolmen.field.tests.IDummy> <BLANKLINE> The shall_fail attribute was not provided. <BLANKLINE> >>> Dummy.shall_fail = lambda x: u'not' >>> field._validate(Dummy) is None True
更改日志
0.3(2009-10-25)
- 重构字段以使用“schema”属性而不是 “接口”。属性名“interface”与 其他处理包的字段。
- 现在使用readme.txt而不是内联doctests,了解更多 可读性。
0.2(2009-06-09)
- 初始PYPI版本
0.1(2009-05-03)
- 内部释放