通过decorator实现观察者模式

obsub的Python项目详细描述


Build StatusCoverageLatest VersionDownloadsLicense

通过 装饰工。

说明

这是基于thread on stackoverflow (jason orendorff的c like事件的例子),所以我不接受任何 这主意值得称赞。我只是制作了一个带有文档和 测试出来,因为我需要它在一个更大的项目。这是相当的 汉迪和我已经在一些项目中使用了它,这需要一些 类似于事件处理。

因此它是licensed as CC0,所以基本上 在法律允许的范围内做你想做的事。

安装

obsub在pypi上可用,因此您可以使用 pip install obsub或者使用setup.py手动完成 任何python包。

用法

来自obsub模块的eventdecorator使用如下:

fromobsubimportevent# Define a class with an eventclassSubject(object):@eventdefon_stuff(self,arg):print('Stuff {} happens'.format(arg))# Now define an event handler, the observerdefhandler(subject,arg):print('Stuff {} is handled'.format(arg))# Wire everything up...sub=Subject()sub.on_stuff+=handler# And try it!sub.on_stuff('foo')

现在您应该同时从事件本身和 事件处理函数,如下所示:

Stuff foo happens
Stuff foo is handled

连续积分

为了好玩,Travis CI 用于连续集成。只要一切都好, 下面的按钮应该是绿色和闪亮的!

Build Status

持续的集成确保了我们的测试运行在 平台:

  • Python2.6,2.7
  • python 3.2、3.3
  • 皮比

它也可以在Python2.5上工作,但是不能用这个自动测试 版本。

我们还使用工作服跟踪测试的覆盖范围。io

Coverage

使用coverage生成本地 覆盖率报告如下:

coverage run setup.py nosetests

注意:在某些平台(如ubuntu)上,可执行文件被称为 python-coverage

贡献和反馈

obsub是在github上开发的。

如果你对这个软件有任何疑问或遇到错误,欢迎 打开new issue on github

如果出于某种原因不想使用github,可以选择 发送电子邮件给我们中的一个:

如果您认为合适,可以随意贡献补丁作为拉取请求。努力成为 尽可能符合PEP8指南并测试所有内容。 否则,提交消息应该以 一致性。除非您的修改非常简单,否则还需要添加一条消息 身体对你的承诺。

学分

感谢Jason Orendorff关于StackOverflow的想法。我也想 感谢@coldfix和@moreweard的贡献和反馈。

更改日志

v0.2

从用户的角度看函数签名和 错误修复可能是最相关的。python 2.5不再由 持续集成,尽管我们试图避免不必要的更改 打破向后兼容。

此外,还有相当多的变化主要涉及 开发商。

  • 函数签名现在由事件装饰器正确保存。这个 只有Python才是真的。在python2上不支持默认值 参数,当前
  • 对内存处理及其测试的一些修复。这包括一个更通用的 在测试套件中处理垃圾收集过程以使其 把派比也传下去。
  • 从一个很长的doctest到更集中的测试套件的大规模重构 单元测试。
  • 文档已从标记转换为RestructuredText,因为 它与pypi和github都兼容。
  • 各种改进和一些文件的精简。
  • 修复许可证中的包名称。
  • 持续集成现在包括Coveralls.io支持。
  • 对Python2.5的支持不再使用Travis CI进行测试,因为它们已经 已放弃对此版本的支持。

v0.1.1

  • 将“全部”属性添加到模块
  • 修复几个文档问题

v0.1

初始版本

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

推荐PyPI第三方库


热门话题
java需要64位jdk 1.5 for windows   eclipse运算符+对于参数类型java是未定义的。双,爪哇。双人   未下载文件扩展名为的java文件   java不支持带有POST的媒体类型   从动态创建的多个EditText读取文本时发生java错误   java无法为同一xpath单击多个按钮   如何在Java中动态格式化字符串   java Android Clear Middle活动   多线程Java内存模型volatile和x86   git在Java中通过Jgit忽略文件或文件夹   java“决策无法区分输入的备选方案1、2…”   子类的javajpa继承   java需要弄清楚如何操作mutator来弄清楚一个类,教授说,我对如何操作感到困惑   java如何使用JDBC将数据从文件复制到PostgreSQL?