通用功能和业务规则支持系统
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方法的函数; 也就是说,如果没有规则匹配 调用它的参数,而不是执行默认实现。)
峰值规则仍在开发中;它在错误方面缺乏很多 如果你搞砸了你的规则,你可能不知道你在哪里 做。用户文档也很缺乏,尽管有大量的文档 描述并测试其大部分内部组件,包括:
- Introduction(方法组合,从ruledispatch移植)
- Core Design Overview(术语、方法优先级等)
- Basic AST Builder和高级的Code Generation
- Criteria、Indexing和Predicates
- Syntax pattern matching
(请注意,这些文件仍处于变动状态,有些可能 在第一次正式发布之前,仍然不完整或没有组织。)
源分发快照每天生成,但您也可以更新 直接从svn中的development version发送。