pandas文档翻译0223-0224-0225

贡献你的代码

从哪里开始

欢迎提出代码贡献/bug报告/bug修复/文档的提高/优化/想法
如果你是pandas新手或者开源开发的新手,我们欢迎通过github提供的issues标签去发现你感兴趣的issues。在Docs标签和DiffcultyNovice标签下面有很多的issues供你开始。若你有感兴趣的issue,你可以回到这里设置你的开发环境。
在mailing list 或者 Gitter 上面可以尽情提问。

bug报告和优化请求

为了使得pandas更加健壮,bug报告是一个很重要的部分。一个完整的bug报告可以让别人复现你的bug并提供解决方式。可以参考这篇文章作为一个小贴士去写一份漂亮的bug报告
为了确认bug是否还存在可以在master分支上去试着运行浮现bug的代码。试着经常搜索已存在的bug报告,经常去看报告是否已被修复。

bug报告必须满足以下几点:
1 包含一个简短的,self-contained的python代码片段去复现问题。你可以使用github Flavored Markdown 格式你的代码:

>>> from pandas import DataFrame
>>> df = DataFrame(...)
...

2 包含pandas的完整版本的字符串表示和包的所有依赖。你可以像下面这样去使用:

>>> import pandas as pd
>>> pd.show_versions()

3 一定要解释清楚为什么当前的表现是错的或者不是你期望,解释清你希望的是怎样的。

这个issue最终会在pandas社区展示出来,并且别人可以评论你的issue

处理代码

既然你有了想要修复的issue,你需要学会如何处理GitHub和pandas的代码。

版本控制,git,github

对于新手来说,使用git也许就让人生畏,然后就变成了势不可挡的一个原因,但如果你能坚持如下的指导,也学就没那么复杂,像往常一样,有问题尽管问就好了。

pandas的代码保管在github上面,你需要先注册一个账号才能贡献你的代码,使用git作为版本管理工具,一起工作。

如果你想学git,那么不要错过下面这些资源:
github的帮助页面
numpy的文档
MB的Pydagogue文档

用git来开始

github对于安装git,设置ssh key,设置git的文档如下。以上所有都搞定后就可以在本地仓库和github上面无缝操作了。

Forking

首先你需要复制一份到你自己的仓库,在pandas 项目页面点击Fork按钮,然后克隆你的fork到本地

git clone https://github.com/your-user-name/pandas.git pandas-yourname
cd pandas-yourname
git remote add upstream https://github.com/pandas-dev/pandas.git

上面的操作将会创建一个文件夹,并且将你的本地仓库和main project联系了起来

创建你的开发环境

为了检测出代码变化,你需要构建pandas的源码,这个需要C的编译器和python的环境。如果你只是修改了文档,你可以直接跳到 Contributing to the documenttation ,记得一定要push 你的代码之后再构建文档。

安装C编译器

pandas使用了C语言的扩展工具(通常是使用Cython写的)去加速一些操作。为了完场源码安装,你需要编译这些C扩展工具,而这就意味这你需要一个C编译器。这个过程依赖你使用的是哪个平台。参照CPython contributing guideline 去安装一个编译器,你不需要进行任何的./configure 或者make 的操作,所有你需要的只是去安装那个编译器。
对于window用户来讲,以下链接可能会帮助到你。

打开一个issue或者登陆Gitter就知道是否有难度了。

创建一个python环境

有了C变化一起之后,我们来创建一个独立的pandas开发环境:

  • 安装Anaconda/miniconda
  • 确保你的conda是最新的
  • 确保你已经克隆了仓库
  • 进入pandas代码的文件夹
    我们开始下面三步:
    1 安装构建的依赖
    2 构建并安装pandas
    3 安装可选的依赖包
# Create and activate the build environment
conda env create -f ci/environment-dev.yaml
conda activate pandas-dev

# Build and install pandas
python setup.py build_ext --inplace -j 4
python -m pip install -e .

# Install the rest of the optional dependencies
conda install -c defaults -c conda-forge --file=ci/requirements-optional-conda.txt

到了这步之后呢,你就可以导入pandas

$ python  # start an interpreter
>>> import pandas
>>> print(pandas.__version__)
0.22.0.dev0+29.g4ad6d4d74

这将会创建一个新的环境,不会污染已存在的环境,也不会污染已存在的python
查看你的环境:

conda info -e

退出虚拟环境

conda deactivate

点击这里可以查看完整的conda命令列表。

用pip创建一个python环境

如果你没有使用conda,那么按照下面去操作,需安装python3.5以上版本

# Create a virtual environment
# Use an ENV_DIR of your choice. We'll use ~/virtualenvs/pandas-dev
# Any parent directories should already exist
python3 -m venv ~/virtualenvs/pandas-dev
# Activate the virtulaenv
. ~/virtualenvs/pandas-dev/bin/activate

# Install the build dependencies
python -m pip install -r ci/requirements_dev.txt
# Build and install pandas
python setup.py build_ext --inplace -j 4
python -m pip install -e .

# Install additional dependencies
python -m pip install -r ci/requirements-optional-pip.txt

创建一个分支

你的master分支是用来生产环境的,所以需要创建一个新的分支来修改你的代码:

git branch shiny-new-feature
git checkout shiny-new-feature

以上两步可以简化成一步

git checkout -b shiny-new-feature

你的工作目录会被切到shiny-new-feature分支,保证这个分支上的任何一个修改都是针对一个bug/一个特性,当合并分支的时候就很清楚。如果你很很多的shiny-new-feature分支的话,试着用checkout 命令在这个分支来回切换。
分支保证最新,你需要同master分支把所有的更改更新过来。

git fetch upstream
git rebase upstream

这样将会保证你的修改是在最新的位置。如果有冲突,在pull之前必须解决冲突。如果你有未commit的更改,你需要stash他们保证先整个,可以有效的保存你的更改,而且你可以再次运用在你更新之后。

文档贡献

如果你不是开发类型,贡献文档仍然有巨大的作用,你也不需要成为pandas大师。事实上,确实一些专家写完文档之后个别章节变得特别差,如果文档中有你看不懂的地方,那么你的更新也将惠及后人。

Documentation:

*   [About the *pandas* documentation](http://pandas.pydata.org/pandas-docs/stable/contributing.html#about-the-pandas-documentation)
*   [How to build the *pandas* documentation](http://pandas.pydata.org/pandas-docs/stable/contributing.html#how-to-build-the-pandas-documentation)
    *   [Requirements](http://pandas.pydata.org/pandas-docs/stable/contributing.html#requirements)
    *   [Building the documentation](http://pandas.pydata.org/pandas-docs/stable/contributing.html#building-the-documentation)
    *   [Building master branch documentation](http://pandas.pydata.org/pandas-docs/stable/contributing.html#building-master-branch-documentation)

pandas文档

文档格式采用了reStructuredText,这是一种像无格式的英语写的,采用Sphinx构建,Sphinx文档有一个很好的入门文档,同样的查看Shinx文档可以完成更复杂的修改。
以下这几点是比较重要的:

  • 文档包含两部分:代码中的文档 和 文件夹中的文档 pandas/doc
    代码中的文档字符串为每个函数提供了清晰的使用说明,文件夹中的文档由每个主题的概览和其他信息组成。
  • 文档遵循了Numpy Docstring Standard,这种标准已被广泛运用到了Scientific Python Community.标准申明了文档各个章节的格式,点击这里查看详情,或者查看现有的函数类似的去扩展它。
  • 引导文档中多次使用了ipython中的命令,这些文档中的命令会在文档构建的时候直接运行,比如:
.. ipython:: python

    x = 2
    x**3

将会被渲染成:

In [1]: x = 2

In [2]: x**3
Out[2]: 8

几乎文档中的所有的代码的例子都是可运行的(结果会被保存下来)在文档构建的过程中,这种方式意味着所有的代码例子基本上都是最新的,当然,这会使得构建文档的时候有点复杂。

注意:rst文件会自动生成Markdown和html版本的文档,所以不重要直接更改CONTRIBUTION.md,而是去改 doc/source/contributing.rst.然后去生成.md文件,可以使用pandoc命令:

pandoc doc/source/contributing.rst -t markdown_github > CONTRIBUTING.md

scripts/api_rsr_converage.py这个通用脚本可以用作比较doc/source/api/rst下面的方和 和 实际的公开的方法。将会识别出 doc/source/api.rst下面的非类方法,也能识别出rst中没有的方法。

如何构建你的pandas文档

必备条件

首先需要有一个开发环境

构建文档

在你本地pandas/doc文件夹位置终端运行下面命令:

python make.py html

在pandas/doc/build/html中会看到有html文件输出出来。

第一次运行会慢,因为它要构建所有的文档,以后呢只会更改有修改的地方。
如何你想全量构建:

python make.py clean
python make,py html

也可只编译你指定的文档,减少检查更改的时间,没用的rst文件最好删掉,这没啥因为git直接也可以恢复之前的版本,确保你没有提交deleteion到你的git仓库

#omit autosummary and API section
python make.py clean
python make.py --no-api

# compile the docs with only a single
# section, that which is in indexing.rst
python make.py clean
python make.py --single indexing

为了比较,一个完整的文档构建时间大概10分钟,而不含包api的构建只需要3分钟,如果只是构建一个章节只需要15秒。
后面只构建你更改的那部分。完全构建完成之后,打开下面的文件就可以看到战果了

pandas/docs/build/html/index.html

享受你的成就感吧

构建master分支的文档

如果你的PR被合并到了master分支,文档也会被Travis-Ci构建,下面可以看看关于持续集成的章节

贡献你的代码

- 代码的标准
 C(cpplint)
 Python(PEP8)
 向后兼容
- 利用持续集成去测试
 测试驱动的代码开发
  编写测试
  过渡到pytest
  使用pytest
- 运行test脚本
- 运行test的性能测试
- 文档中标注你的部分
  

代码的标准

好的代码不仅仅是你写的是什么,更重要的是为什么要写。在持续集成阶段的测试,会运行如下的工具,格式上的错误,如果有任何的warning测试将不通过,因此,好的格式是必备的。
另外,因为使用的人很多,所有不要突然大量的更改,可能会让很多的用户代码break,我们需要更多的向后兼容去避免大量的中断。

C(cpplint)

pandas 使用的是google标准,google提供很多的开源风格检查工具叫cpplint,但是我们使用她的一个fork版本,这是一些常用的cpplint的issues

  • 为提高可读性每行最多80字符
  • 每个header文件必须包含头引导以防止重新载入的时候命名冲突
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容