支持注入器的Python应用程序微框架
项目描述
Cask 是支持注入器的,模仿Flask的Python应用程序微框架。
其目的是使开发应用程序时需要编写的样板代码更少。以下是一个简单的示例
>>> from cask import Cask
>>> from injector import inject
>>>
>>> def configure(binder):
... binder.bind(str, to='ABC')
...
>>> @Cask.run_main(modules=[configure])
... @inject(s=str)
... def main(s):
... print(s)
...
ABC
Cask.run_main(它既可以用作类方法,也可以用作实例方法,见下文)为您执行if __name__ == '__main__'检查。所以这个
>>> app = Cask()
>>> @app.run_main
... def main():
... print(111)
...
111
是以下代码的简短版本
>>> app = Cask()
>>> @app.main
... def main():
... print(222)
...
>>> if __name__ == '__main__':
... app.run()
...
222
构建
Cask 构造函数和 Cask.run_main 类方法接受以下可选关键字参数
modules - 注入器模块的可迭代对象,默认为空序列
injector- 配置和使用注入器的实例,默认为您创建新实例
钩子
Cask 实例提供了以下装饰器,允许您注册钩子(请注意,您可以注入到已注册的函数中)
Cask.before_main - 应该不期望任何参数,如果返回非None值,则不会执行应用程序执行的主函数
Cask.after_main - 应该期望单个 result 参数并返回处理后的结果(修改后或未修改)
Cask.exception_handler(ExceptionClass) - 在应用程序执行过程中将处理抛出的异常,应期望一个名为 e 的单个参数,其中包含异常值。
>>> app = Cask() >>> @app.exception_handler(Exception) ... def handle(e): ... print('got exception %s' % (e,)) ... >>> @app.run_main ... def main(): ... raise Exception(123) ... got exception 123
Cask.main - 主函数不应期望任何参数,可能返回某些内容。
当然,您可以注册多个可调用的钩子,用于除 main 之外的其他钩子。
执行
这就是您运行基于Cask的应用程序时会发生什么。
注入器使用提供的 modules 进行配置。
before_main 钩子被调用
如果 before_main 钩子没有返回与 None 不同的值,则执行 main 钩子。
after_main 钩子被调用
版权
版权(C)2013 Jakub Stasiak
此源代码根据 MIT 许可证授权,有关详细信息请参阅 LICENSE 文件。
项目详情
cask-0.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4c8bff7957f5393912edf85bb2dcb868baa4e5064be379835e3ad45dd9b26b26 |
|
MD5 | 2cfb27a3bc4f737881770bec89f3f967 |
|
BLAKE2b-256 | ba963c431a06ee27017fd440715e7e2b706a091caf0888f2a1cde5b1d08a40e3 |