通用功能和业务规则支持系统

PEAK-Rules的Python项目详细描述


峰值规则是一个高度可扩展的框架,用于创建和使用泛型 功能,从非常简单到非常复杂。开箱即用 支持使用类型的元组对位置参数进行多个分派, 使用包含python表达式的字符串的完全谓词调度,以及 类似clos的方法组合。(但是框架允许您混合和匹配 如果您需要或希望,请发送引擎和自定义方法组合。

基本用法:

>>> from peak.rules import abstract, when, around, before, after

>>> @abstract()
... def pprint(ob):
...     """A pretty-printing generic function"""

>>> @when(pprint, (list,))
... def pprint_list(ob):
...     print "pretty-printing a list"

>>> @when(pprint, "isinstance(ob,list) and len(ob)>50")
... def pprint_long_list(ob):
...     print "pretty-printing a long list"

>>> pprint([1,2,3])
pretty-printing a list

>>> pprint([42]*1000)
pretty-printing a long list

>>> pprint(42)
Traceback (most recent call last):
  ...
NoApplicableMethods: ...

峰值规则适用于Python2.3及更高版本-只要省略@符号 代码需要在2.3下运行。另外,请注意,使用峰值规则,any函数 可以是泛型的:不必预先将函数替换为泛型。(在 abstractdecorator用于声明没有default方法的函数; 也就是说,如果没有规则匹配 调用它的参数,而不是执行默认实现。)

峰值规则仍在开发中;它在错误方面缺乏很多 如果你搞砸了你的规则,你可能不知道你在哪里 做。用户文档也很缺乏,尽管有大量的文档 描述并测试其大部分内部组件,包括:

(请注意,这些文件仍处于变动状态,有些可能 在第一次正式发布之前,仍然不完整或没有组织。)

源分发快照每天生成,但您也可以更新 直接从svn中的development version发送。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java log4j找不到log4jtest。房产?   我在java线程“awteventque1”中获得异常。lang.NullPointerException   java为什么在使用完整路径从文件系统读取文件时出错?   java如何迭代所有注册表项?   java中的安卓 Opencv SVM未正确训练   多线程Java ThreadPoolExecutor关闭特定线程?   如何使用Java NIO CreateDirectory方法设置目录所有者组?   java NatTable混合了固定宽度的列和可调整大小的填充剩余空间   java如何删除特定网络,即使该网络是由安卓上的其他设备创建的?   java Guava toJavaUtil()不存在   java对许多常量使用枚举是有效的memorywise?   java是否可以使用坐标定位JButton?   从WSDL生成java代码导致异常   java如何在安卓中导出javadoc   爬行JAX中的java NoClassDefFoundError错误   java为片段中的文本视图设置区域设置   发送最后一条消息后发生Java RMI RemoteException