已审核的扩展Flask 也有已审核的扩展的概念。已审核的扩展被作为 Flask 自身的一部分来测 试来保证在新版本中不会破坏。这些已审核的扩展会在 Flask Extension Registry 中列出,并有相应的标记。如果你想要自己的扩展 通过审核,你需要遵守下面的指导方针: - 一个通过审核的 Flask 扩展需要一个维护者。如果一个扩展作者想要超越项目, 项目应该寻找一个新的维护者,包括完整的源码托管过渡和 PyPI 访问。如果没 有可用的维护者,请给 Flask 核心团队访问权限。
- 一个通过审核的 Flask 扩展必须确切地提供一个名为
flask_extensioname 的 包或模块。它们也可能驻留在 flaskext 命名空间包内部,虽然现在这不被推荐。 - 它必须伴随一个可以使用
make test 或 python setup.py test 的调用测 试套件。对于用 make test 测试的套件,扩展必须确保所有测试需要的依赖关 系都被自动处理好。如果测试由 python setup.py test 调用,测试的依赖关系 由 setup.py 文件指定。测试套件也必须是发行版的一部分。 - 通过审核的扩展的 API 可以通过下面特性的检查: - 一个通过审核的扩展必须支持在同一个 Python 进程中支持多个应用 - 必须支持使用工厂模式创建应用
- 必须以 BSD/MIT/WTFPL 许可
- 官方扩展的命名模式是 Flask-ExtensionName 或 ExtensionName-Flask
- 通过审核的扩展必须在 setup.py 文件里定义好它们的依赖关系,除非因 其在 PyPI 上不可用而不能满足这个依赖。
- 扩展的文档必须使用两种 Flask 的 Sphinx 文档主题中的一个
- setup.py 描述(因此PyPI 描述同)必须链接到文档、网站(如果有), 并且必须有一个链接来自动安装开发版本(
PackageName==dev ) - 安装脚本中的
zip_safe 标志必须被设置为 False ,即使扩展对于 压缩是安全的 - 现行扩展必须支持 Python 2.6 以及 2.7
扩展导入的过渡一段时间,我们推荐对 Flask 扩展使用命名空间包。这在实践中被证明是有问题 的,因为许多不同命名空间包系统存在竞争,并且 pip 会自动在不同的系统中切 换,这给用户导致了许多问题。 现在,我们推荐命名包为 flask_foo 替代过时的 flaskext.foo 。Flask 0.8 引入了重定向导入系统,允许从 flask.ext.foo 导入,并且如果 flaskext.foo 失败时,会首先尝试 flask_foo 。 Flask 扩展应该力劝用户从 flask.ext.foo 导入,而不是 flask_foo 或 flaskext_foo ,这样扩展可以迁移到新的包名称而不烦扰用户。 |