开发¶
TABLIB正在积极发展中,欢迎投稿。
如果您有功能请求、建议或错误报告,请在上打开一个新问题 GitHub. 若要提交修补程序,请发送请求 GitHub.
设计注意事项¶
TabLIB是用少量开发的 PEP 20 心中的成语。
美胜于丑。
显式优于隐式。
简单胜于复杂。
复杂总比复杂好。
可读性计数。
还有几件事要记住:
保持代码干燥。
尽量简单(使用)。
源代码管理¶
tablib源由 Git, 精益,平均,分布式源代码控制机器。
存储库是可公开访问的。
git clone git://github.com/jazzband/tablib.git
项目托管于 GitHub .
Git分支结构¶
功能/修补程序/发布分支遵循 Successful Git Branching Model . Git-flow 是管理存储库的好工具。我强烈推荐。
master
当前生产版本( 3.5 )关于PyPi。
每个版本都有标签。
提交修补程序时,请在打开请求之前将您的功能/更改放在其自己的分支中 GitHub.
添加新格式¶
tablib欢迎新的格式添加!格式建议包括:
MySQL转储
按惯例编码¶
tablib提供了一个用于添加格式支持的微框架。最简单的理解方法就是使用它。所以,让我们定义自己的格式,命名为 xxx .
从版本1.0开始,Tablib格式是基于类的,可以动态注册。
编写自定义格式类:
class MyXXXFormatClass: title = 'xxx' @classmethod def export_set(cls, dset): .... # returns string representation of given dataset @classmethod def export_book(cls, dbook): .... # returns string representation of given databook @classmethod def import_set(cls, dset, in_stream): ... # populates given Dataset with given datastream @classmethod def import_book(cls, dbook, in_stream): ... # returns Databook instance @classmethod def detect(cls, stream): ... # returns True if given stream is parsable as xxx
不包括支架
如果格式不支持导入/导出机制( e.g.
csv
排除Databook
支持),只是不要定义各自的类方法。将引发适当的错误。注册你的班级:
from tablib.formats import registry registry.register('xxx', MyXXXFormatClass())
三。从那时起,你应该可以像使用内置的Tablib格式一样使用新的自定义格式,例如使用 dataset.export('xxx')
将使用 MyXXXFormatClass.export_set
方法。
测试tablib¶
测试对tablib的稳定性至关重要。这个稳定的项目被许多公司和开发人员用于生产中,因此必须确保发布的每个版本都是完全可操作的。在为tablib开发新功能时,也要确保为它编写适当的测试。
在为tablib开发特性时,测试更改是否存在潜在问题的最简单方法是直接运行测试套件。
$ tox
持续集成¶
每个拉入请求在收到后都会自动进行测试和检查 GitHub Actions 。如果您破坏了构建,您将收到相应的电子邮件。
任何人都可以随时查看生成状态和历史记录。
今后还将在这里列入其他报告,包括 PEP 8 检查并报告超大数据集的压力。
建立文档¶
文档是用强大、灵活和标准的python文档格式编写的, reStructured Text . 文档构建由强大的pocoo项目提供支持, Sphinx. 这个 API Documentation 主要是在整个模块内联记录的。
医生们住在 tablib/docs
. 为了构建它们,首先需要安装sphinx。
$ pip install sphinx
然后,要构建文档的HTML版本,只需从 docs
目录:
$ make html
你的 docs/_build/html
然后,目录将包含文档的html表示,可以在大多数web服务器上发布。
也可以生成文档 epub , ** Latex ** , json , &c 类似地。
确保查看 API Documentation .