用于延迟装饰器操作的库
项目描述
Venusian 是一个库,允许框架作者延迟装饰器操作。您可以在导入时执行函数(或类)装饰器时执行操作,而不是在单独的“扫描”阶段延迟执行装饰器通常执行的操作。
请参阅软件包的“docs”目录或在线文档https://docs.pylonsproject.org/projects/venusian/en/latest/
3.1.0 (2023-11-06)
移除对 Python 3.5 和 3.6 的支持
添加对 Python 3.9、3.10、3.11 和 3.12 的支持。
使用 GitHub Actions 代替 Travis。
3.0.0 (2019-10-04)
除了版本号之外,此版本与 2.0.0 相同。这修复了 Requires-Python 元数据未正确上传到 PyPi 的问题。
此版本仅与 Python 3.5+ 兼容
2.0.0 (2019-10-04)
取消对 Python 2.7、3.3 和 3.4 的支持
删除了对 imp 模块的使用以抑制有关已弃用模块的警告。请参阅 https://github.com/Pylons/venusian/pull/63 和 https://github.com/Pylons/venusian/issues/57
1.2.0 (2019-01-08)
添加对 Python 3.7 的支持。
取消对 Python 3.3 的支持。
1.1.0 (2017-04-24)
更新为使用 py.test 而不是 nosetest,并添加了对 Python 3.4 -> 3.6 的支持
使扫描对返回任何属性访问代理的元类更加健壮。
修复了在类及其方法上使用相同的 venusian 装饰器会导致方法装饰被忽略的 bug。请参阅 https://github.com/Pylons/venusian/issues/40
取消对 Python 2.6 的支持。
取消对 Python 3.2 的支持:它不再由当前的打包/ CI 工具支持。
支持需要将模块名称作为参数传递给其 get_filename() 方法的加载器。这解决了 Python 3 上压缩包的问题。
当使用忽略时进行微优化(见 https://github.com/Pylons/venusian/pull/20)。
现在 tox 运行结合了 Py2 和 Py3 的覆盖率。
1.0 (2014-06-30)
修复了在 PyPy > 2.0 的情况下附加的装饰器可能找不到的问题。
取消对 Python 2.4 / 2.5 / Jython 的支持。
添加 lift 和 onlyliftedfrom 类装饰器,以便允许继承附加到超类方法的 venusian 装饰器。有关更多信息,请参阅 API 文档。
修复了一个 bug,即一个具有 venusian 装饰器的超类的未装饰的子类会继承其超类的装饰器。venusian 装饰器从未应该隐式继承。请参阅 https://github.com/Pylons/venusian/issues/11#issuecomment-4977352
1.0a8 (2013-04-15)
递归地将 ignore 参数传递给 walk_packages,以便自定义忽略函数将递归地忽略内容。请参阅 https://github.com/Pylons/venusian/pull/16
不再在 Python 2.4 下运行 tox 测试(tox 不再支持 2.4)。
1.0a7 (2012-08-25)
Venusian 现在可以在 Python 3.3b2+(基于 importlib)上运行。
使用 nose-exclude 而不是依赖于易碎的模块作用域代码,以确保在“nosetests”期间导入 fixture 代码时不会出现错误。
错误修复:在默认扫描过程中不再抑制ImportError。如果您想在扫描时抑制ImportError,现在需要使用文档中描述的onerror回调。
1.0a6(2012-04-23)
如果装饰对象被导入到另一个模块中,不要忽略它们在原始位置中的装饰(从venusian扫描中的调用中删除seen集合)。参见https://github.com/Pylons/venusian/pull/13 。
1.0a5(2012-04-21)
在扫描过程中忽略仅在模块中导入但未实际定义的对象的方法略有改进。参见1.0a4变更说明以了解原因。现在,我们不再检查scanned object的模块是否与正在扫描的模块匹配,而是检查Venusian attachment的模块是否与正在扫描的模块匹配。这允许某些真正的导入对象作为Venusian扫描目标,同时防止不适当的重复扫描具有venusian附件且恰好导入到其他扫描模块中的对象。
添加dev和docs setup.py命令(类似于Pyramid)。
1.0a4(2012-04-16)
尝试在扫描过程中忽略仅导入到模块中但未实际定义的对象。这是一个语义更改,但这是正确的做法,因为我发现自己面临这种情况
# in a module named "one" from two import anotheradecoratedthing @adecorator def adecoratedthing(): pass # and scanning both modules scan('one') scan('two')
在这种情况下,您会遇到“anotherdecoratedthing”的两个重复注册,这不是任何人预期的。
1.0a3(2012-02-08)
向Scanner的scan方法添加一个ignore参数。此参数允许用户在扫描期间通过名称忽略包、模块和全局对象。有关详细信息,请参阅叙事文档中的“ignore Scan Argument”。
1.0a2(2011-09-02)
关闭ImpLoader文件句柄,以避免在Python 3上出现资源警告。
1.0a1(2011-08-27)
Python 3兼容性。
允许将onerror回调传递给Scanner.scan()。
0.9 (2011-06-18)
防止在尝试内省疯狂模块作用域对象时发生扫描时间异常。参见https://github.com/Pylons/venusian/issues/5 。
0.8 (2011-04-30)
正常的“setup.py test”无法支持在py 2.4或2.5下运行venusian测试;当它扫描'classdecorators'测试用例时,它会出现错误。为了解决这个问题,我们以前依赖于nose在setup_requires中,并告诉“setup.py test”使用nose,通过设置test_suite为“nose.collector”,但我们不能再这样做,因为人们使用Venusian的系统是从pip包中安装的;pip包不支持setup_requires。所以,抱歉,我们已经陷入困境;在这个阶段,您只需知道安装nose并运行“setup.py nosetests”而不是“setup.py test”。或者只需运行“tox”,它会在所有Python下进行测试。
0.7 (2011-03-16)
在文档中使用Pylons主题。
修复pypy上的孤儿pyc测试。
修复GitHub问题#1:没有装饰的装饰类子类不应继承其父类的装饰。
修复GitHub问题#2:扫描应“找到”每个对象一次,无论该对象导入到多少个模块。
0.6 (2011-01-09)
一些元类(Elixir的)在扫描期间询问不存在的属性时不会引发AttributeError。我们现在在询问对象__venusian_callbacks__时捕获所有异常,而不仅仅是AttributeError。
0.5 (2010-12-19)
将 codeinfo 属性作为 AttachInfo 对象的属性提供。它将是一个形式为 (filename, lineno, function, sourceline) 的元组,表示 venusian 装饰器的上下文。例如:('/home/chrism/projects/venusian/tests/test_advice.py', 81, 'testCallInfo', 'add_handler(foo, bar)')
0.4 (2010-09-03)
错误修复:当 venusian 装饰器作为类装饰器使用时,同时用于一个类及其子类,父类和子类将实际上共享同一组回调。这不是预期行为:每个类声明应拥有自己的局部回调集;通过装饰添加的回调不应继承,并且父类不应接收其子类的装饰。
将测试固定装置安排在单个目录中。
0.3 (2010-06-24)
在扫描过程中忽略孤立模块(没有相应 .py 文件的 .pyc 或 .pyo 文件)。
0.2 (2010-04-18)
引入扫描类别(请参阅文档中的“扫描类别”部分)的概念,以允许应用程序同时使用多个 Venusian-使用框架。
0.1 (2010-02-15)
初始发布。
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
venusian-3.1.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eb72cdca6f3139a15dc80f9c95d3c10f8a54a0ba881eeef8e2ec5b42d3ee3a95 |
|
MD5 | c59f292366ad6ea223b9622463970716 |
|
BLAKE2b-256 | f8397c0d9011ec465951aaf71c252effc7c031a04404887422c6f66ba26500e1 |