学写PEP,参与Python语言的设计

若是你为Python写了一篇PEP,这篇PEP成功的被Python指导委员会接受了,那么之后你在吹牛皮的时候你就能够说我主导了Python语言某个特性的设计工做.html

-- 跬蟒

我就问你主导Python语言特性设计牛不牛皮,今天我就写一篇文章告诉你们如何去为Python设计一篇PEP,而且整个PEP从一个想法到Python语言去实现它的这一套流程:python

假设你已是一个Python高手了,在使用Python给过程当中你以为Python语言在某方面还不够完善,你有一个不错的想法能够去改善Python这方面的不足,你打算把你的想法加入到Python语言里面,因此你打算写一篇PEP,为Python的发展献言建策,那首先须要作什么呢?git

  1. 首先你要确保你的想法是个新的想法是个比较大的想法,是一个由必要去创建一个PEP的想法,也许你发现了Python的一些小问题,可是这些小问题若是提交一个小补丁就能够解决了,那就不必提PEP
  2. 当你肯定本身的想法很牛B以后,你也不是立刻就要提PEP,你首先要作的事情是引起社区的讨论,看看其余人怎么看,而后本身去实现一下这个想法看是不是可行的,而且发帖到 python-list@python.org mailing list或者到 python-ideas@python.org mailing list 进行进一步的肯定,看看你们对你的想法是否定同,若是你能让大多数人都认同,那你就有戏,在你发帖以前最好准备一份高质量的PEP草稿,这样的话才会更容易的被接受
  3. 总之就是先讨论,获得你们的承认,避免后期没必要要的撕逼,然受本身也要作好准备,最好有个简单的实现,而后还有个高质量的PEP草稿

写PEP你不得不知道的几个Python社区角色

PEP champion : PEP拥护者 也就是PEP的发起人,也就是跟你们说我有个很是XXX的想法的人github

PEP author: PEP做者 就是写PEP的人,PEP从一个想法到一篇PEP草稿,再到一篇拥有官方PEP编号的PEP文档,到后面PEP审核经过,PEP复审出现改动,PEP被接受这个过程当中维护PEP文档的人就是PEP的做者,大部分PEP做者就是PEP拥护者本人微信

PEP reviewer: 这个角色不是单指某一我的,一个PEP从想法到实现须要通过不少此review, 每一次参与review的人均可以被称做 PEP revieweride

PEP editor: PEP编辑者 就是对PEP进行初步审核的人,审核经过的PEP进入到github上面的PEP仓库的master分支,进行下一轮的评审this

Python Core Developers: Python核心开发人员 就是开发Cpython解释器的那群人,都是大佬,都是大佬编码

Python's Steering Council: Python指导委员会 大佬中的大佬,从Python核心开发人员中选择出来的指导Python语言开发工做的一群人,对于PEP是否接受有着最终发言权idea

PEP的工做流程是这样的:设计

  1. PEP champion 先有一个高质量的idear(通过讨论分析和理性验证)
  2. 你去github上面去fork PEP仓库
  3. 在仓库中建立一个 pep-9999.rst的文件去把你的PEP草稿粘贴进去
  4. 肯定你的PEP的类型,PEP的状态设为草稿,PEP头部按照模板写一波
  5. 把你的pep-9999.rst push到PEP仓库
  6. 而后PEP editors 会去审核你的提交
  7. 若是审核经过,这个原本是草稿的PEP会拿到一个正规的PEP编号,若是没有审核经过那PEP editors 会打回去让 PEP author 去修改
  8. 若是PEP审核经过拿到了PEP编号 PEP editor 会把这个新提交的PEP合并到PEP仓库的 master 分支
  9. 若是你的PEP的类型是Standards Track类,那你提交的PEP还会被发送给Python-dev list 成员进行再次review, 确保你的新PEP没有坑
  10. 有些听起很不错的PEP在实现的时候实际上是很是蛋疼的,没作的时候想的挺好,真正去实现的时候才知道是否靠谱,最好的状况时你在提交PEP的时候你手里就已经有一个这个PEP的原型实现了,因此若是你的PEP类型是Standards Track类型那你就不只须要准备设计文档,你还须要准备一个参考实现,以此来避免一些不切实际的想法

固然凡事都有例外,有些Python的核心开发者是不会走这个流程的由于他们自己的权限比较大,他们有直接push内容到PEP仓库的权限,因此有时候他们会直接给本身的PEP分配一个PEP编号push进入PEP仓库的master分支,固然这并不意味着这个PEP就被接受了,他只是绕过了PEP editor的审批而已,PEP被接受和PEP经过审批是彻底两码事儿,只有经过Python指导委员会的赞成,PEP计划实现,才能叫作PEP被接受.

若是我写的PEP没法审核经过被拒怎么办?

PEP被拒绝是很正常的事情,不要灰心,只要可以坚信本身的PEP是真正对Python有用的东西,真正好的idear,修改一下继续上就好了,可是被拒确定是有缘由的,最主要的缘由就是下面几条:

  1. 该特性已经存在了
  2. 技术上不合理
  3. Python不须要去实现这样的特性,也就是说伪需求
  4. 没法进行后向兼容
  5. 不符合Python的设计哲学(Python设计哲学能够在Python交互解释器中输入import this获取)其实在PEP的审批阶段能够拿着本身的PEP idear去咨询Python指导委员会,由于PEP最终会不会被接受实际上是由Python指导委员会所决定的,因此若是真的想要本身的PEP被接受,作好提早的沟通仍是很是有必要的
  6. 奥对了还有一个蛋疼的要求,就是你的PEP草稿必须带着至少一名Python核心开发人员一块儿写,或者有一个Python核心开发人员指导你写,或者有一个通过Python指导委员会批准的非Python核心开发人员一块儿写,反正就是须要有一个可以被Python指导委员会所信任的人参与了你的PEP设计,若是没能知足这个条件 PEP editor有权直接驳回你的PEP草稿

PEP的复审和决定机制

一篇PEP是否最终被接受而且决定去实现是须要通过层层复审的,反正要通过很麻烦了一个流程,下面有个Python官方画的简单流程图:

可是实际状况比较复杂,有时候不会按照这个流程图来,可是这个流程图给人们提供了一个比较清晰的PEP工做流的概览

PEP格式和模板

这年头写啥文档没个模板真不行,PEP也是文档,因此模板搞起来:

  1. 首先PEP是UTF-8编码的rst文件,首先你须要去指导rst文件的格式,若是rst的语法格式你已经会了,那你就能够阅读官方的PEP 12--Sample reStructuredText PEP Template,没错PEP12是介绍rst格式PEP模板的PEP(有点绕),为何要用rst格式?官方给出的解释是 容易转成html进行在线发布和阅读
  2. 每一篇PEP必须有一个标准的PEP头部,以下所示,带* 号是可写可不写的,不带* 号的是必需要写的,记住写PEP头的时候,头的各个字段的顺序,必须按照下图的内容去写,前后顺序不能乱

写道这里就讲的差很少了,可是其实PEP的书写还有不少的内容好比:

  1. 如何判断PEP是否是一个成功的PEP
  2. PEP提交以后发现内容有bug怎么解决
  3. PEP全部权以及全部权转移问题
  4. PEP editor的详细职责和工做流
  5. 等等问题,我就不写了,写不动了.....

想写PEP的能够先根据上面流程走一波,
而后等到遇到问题的时候再去查资料吧.

若是感受本篇内容还不错,微信的朋友请点个在看,其余平台的朋友能够(近距离)扫描下方的二维码关注个人公众号 早睡蟒更多优质原创无广告内容等你来看.

相关文章
相关标签/搜索