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文件必须包含头引导以防止重新载入的时候命名冲突

你可能感兴趣的:(pandas文档翻译0223-0224-0225)