PythonTip >> 博文 >> Django python

如何开发合格的 Python/Django 第三方 Package

zihua 2014-08-21 10:08:58 点击: 2424 | 收藏


何为合格的Python/Django第三方package, 以下是一个为发布新的Python/Django package准备的Checklist.

1. 目的

你的package应当能做一件事情, 并且能把它做得很好. package名字应当具有描述性. package仓库的根目录应当以"django-"开头(如果是Django的package的话), 方便其他用户查找.

如果该package的部分功能需要借助其他Python package完成, 那么应当将其他package加入到依赖信息中.

2. 范围

你的package功能范围应该专注于一个小的任务(就像UNIX的原则一样), 这意味着该package的逻辑紧凑, 用户也更容易修改或取代这一package.

3. 文档

没有文档的package只能说是测试package, Docstring无法代替说明文档.

我们可以借助ReStructuredText和Sphinx这样优秀的工具撰写文档. 这些文档应到放在 https://readthedocs.org 上, 并使用webhooks来随时更新.

package的依赖, 安装说明,都应当纳入文档中.

4. 测试

你的package应当包含测试代码. 测试代码能提高可靠性, 更能方便其他贡献者提交代码. 如果有必要, 应当将如何运行测试纳入文档中. 如果你和你的贡献者们能在提交pull request运行测试, 那必定会带来更高质量的代码.

5. 维护

你的package应当定期维护更新. 每次更新代码库中的代码时, 如果有必要, 不要忘了上传到Python Package Index中.

6. 社区

良好的package一般都会得到社区的贡献者帮助提交的代码和补丁, 所有贡献者的名单应当列在CONTRIBUTORS或AUTHORS文档中.

尽力管理由你领导的package产生的社区. 如果你的代码被fork了, 应当尽力给与关注, 试着将部分内容merge到你的package中. 如果该fork与原来的package功能上已有分化, 则应提醒该fork开发人员重新命名该fork.

7. 模块化

你的package应当能简单的被应用到任何Django项目中(针对Django package), 并且不会代替其他核心部件(templates, ORM等). 尽量减少对其他package的影响.

8. PyPI

对于 major 和 minor release, 应该将其放置到PyPI, 方便其他开发人员下载获得源代码. 对各release使用适当的版本号.

9. 依赖

package中所依赖的其他package应当使用宽松版本号写入requirements中, 而不是用绝对版本号:

# requirements
    # 不使用 Django==1.5.2, 而是用
    Django>=1.5,=1.2.3,

10. 版本号

对于Python/Django package, 可以参考PEP 386对package进行版本编号, 形式如A.B.C:

A代表着major release, B代表minor relsean, C代表bugfix release.

11. 名字

package的名字至关重要. 恰当的命名使得package容易被发现.

12. 使用协议 License

每个package都应当有合适的License, 对于没有特殊的package可以使用BSD或MIT license, 这两个license允许大多数商用和非商用. 将License的内容拷贝黏贴到LICENSE文档中.

13. 代码

你的package中的代码应当清晰易懂, 不要使用奇怪的python语法.

14. URL Namespaces

对于Django package, 为了避免与其他package的url设置重提, 可以使用的URL namespaces.

原文链接: http://www.weiguda.com/blog/30/

原文链接:http://www.tuicool.com/articles/YNVJnm

作者:zihua | 分类: Django python | 标签: django python | 阅读: 2424 | 发布于: 2014-08-21 10时 |