入门#

开发gevent需要能够从源代码安装gevent。见 从源安装 有关这方面的一般信息。

使用虚拟环境#

建议将gevent的开发副本安装到 virtual environment ;您可以使用 venv 与python 3一起分发的模块,或 virtualenv ,可能与 virtualenvwrapper .

对于要使用的每个Python实现和版本,您可能需要不同的虚拟环境。GEvent包括 tox 用于跨多个Python版本自动化测试过程的配置,但这可能很慢。

本文的其余部分将假定在独立的虚拟环境中工作,但通常不会在提示中显示这一点。创建虚拟环境的示例如下:

$ python3 -m venv gevent-env
$ cd gevent-env
$ . bin/activate
(gevent-env) $

正在安装依赖项#

要处理gevent,我们需要获取源代码,安装gevent的依赖项,包括测试依赖项,并将gevent安装为 editable install 使用PIP -e 选项(也称为 development mode ,这与跑步基本相同 python setup.py develop

获取源意味着克隆git存储库:

(gevent-env) $ git clone https://github.com/gevent/gevent.git
(gevent-env) $ cd gevent

安装gevent的依赖项、测试依赖项和gevent本身可以通过安装 dev-requirements.txt 文件::

(gevent-env) $ pip install -r dev-requirements.txt

警告

此PIP命令不适用于PIP 19.1。使用PIP 19.0或更低版本,或使用PIP 19.1.1 --no-use-pep517 . 见 issue 1412 .

做出改变#

当添加新特性(函数、方法、模块)时,一定要提供docstring。docstring应该以Sphinx的结尾 versionadded directive ,使用版本字符串“NEXT”。在发布过程中,此字符串将自动替换为正确的版本。

例如:

def make_plumbus(schleem, rub_fleeb=True):
   """
   Produces a plumbus.

   :param int scheem: The number of schleem to use.
       Possibly repurposed.
   :keyword bool rub_fleeb: Whether to rub the fleeb.
       Rubbing the fleeb is important, so only disable
       if you know what you're doing.
   .. versionadded:: NEXT
   """

当一个已经发布的特性已经被发布时,已经对现有特性进行了适当的更改 versionchangeddeprecated 指令,也使用“NEXT”。

def make_plumbus(schleem, rub_fleeb=True):
   """
   Produces a plumbus.

   :param int schleem: The schleem to use.
       Possibly repurposed.
   :keyword bool rub_fleeb: Whether to rub the fleeb.
       Rubbing the fleeb is important, so only disable
       if you know what you're doing.
   :return: A :class:`Plumbus`.
   .. versionadded:: 20.04.0
   .. versionchanged:: NEXT
      The *rub_fleeb* parameter is ignored; the fleeb
      must always be rubbed.
   """

 def extract_fleeb_juice():
     """
     Get the fleeb juice.

     .. deprecated:: NEXT
        Extracting fleeb juice now happens automatically.
     """