はじめに

pipの開発にご関心をお寄せいただきありがとうございます。

このドキュメントは、pipの開発環境設定を行うためのガイドおよびリファレンスとして機能することを目的としています。この過程で問題が発生した場合は、イシュートラッカーでイシューを開いてください

ソースコードを入手する

pipの開発に取り組むには、まずpipのソースコードを入手する必要があります。ソースコードはGitHubで入手できます。

$ git clone https://github.com/pypa/pip
$ cd pip

開発環境

pipはPythonで書かれたコマンドラインアプリケーションです。pipの開発には、コンピューターにPythonをインストールする必要があります。

pipの開発には、noxをインストールする必要があります。完全な開発環境設定は以下のようになります。

python -m venv .venv
source .venv/bin/activate
python -m pip install nox
py -m venv .venv
.venv\Scripts\activate
py -m pip install nox

ソースツリーからpipを実行する

開発中にソースツリーからpip実行可能ファイルを実行するには、編集可能なインストールを使用してpipをローカルにインストールします(virtualenv内)。その後、通常どおりローカルのソースツリーpipを呼び出すことができます(virtualenvがアクティブになっていることを確認してください)。

python -m pip install -e .
python -m pip --version
py -m pip install -e .
py -m pip --version

テストの実行

pipのテストは、pytestテストフレームワークとunittest.mockを使用して記述されています。noxは、pipのテストの設定と実行を自動化するために使用されます。

テストは、順次実行した場合に時間がかかるため、開発中のエクスペリエンスを向上させるために、並列で実行することをお勧めします。

テストを実行するには

$ nox -s test-3.10 -- -n auto

並列化せずにテストを実行するには、以下を実行します。

$ nox -s test-3.10

上記の例では、Python 3.10に対してテストを実行しています。3.9pypy3などの他のバージョンも使用できます。

noxは、渡された追加の引数をpytestに転送するように設定されています。これにより、pytestの豊富なCLIを使用できます。例として、pytestが提供するさまざまな方法を使用してテストを選択できます。

$ # Using file name
$ nox -s test-3.10 -- tests/functional/test_install.py
$ # Using markers
$ nox -s test-3.10 -- -m unit
$ # Using keywords
$ nox -s test-3.10 -- -k "install and not wheel"

注意

OSディストリビューションのPythonバージョンでpipのテストを実行する際には、ディストリビューションによって導入された可能性のあるパッチにより、一部の機能テストが失敗する可能性があることに注意してください。すべてのテストに合格するには、以下を検討してください。

  • python.orgからPythonをインストールするか、ソースからコンパイルします。

  • または、pyenvを使用してソースコンパイルを支援します。

pipのテストスイート全体を実行するには、サポートされているバージョン管理ツール(Subversion、Bazaar、Git、Mercurial)がインストールされている必要があります。これらのVCSのいずれかが不足している場合、それらのテストは自動的にスキップされます。pytestにそれらのテストを明示的にスキップするように指示することもできます。

$ nox -s test-3.10 -- -k "not svn"
$ nox -s test-3.10 -- -k "not (svn or git)"

リンターの実行

pipは、コードベースのリンティングの管理にpre-commitを使用しています。pre-commitはpip内のすべてのファイルに対してさまざまなチェックを実行し、コードベース内で一貫性のあるコードスタイルに従うのに役立つツールを使用します。

ローカルでリンターを使用するには、以下を実行します。

$ nox -s lint

注意

リンターの警告を抑制するために# noqaコメントを使用しないでください。可能な限り、警告は修正する必要があります。# noqaコメントは、推奨されるスタイルにより可読性に深刻な問題が発生するまれな場合にのみ予約されています。

デバッガー下でのpipの実行

pipの動作をデバッグするには、次のようにデバッガー下で実行できます。

$ python -m pdb -m pip --debug ...

...には、pipで実行したい引数を置き換えます。その後、PDBにc(「続行」)コマンドを与えて、プロセスを実行します。

--debugフラグはpipの例外ハンドラーを無効にします。これは通常、未処理の例外をすべてキャッチします。このフラグを使用すると、pipはこれらの例外をメインサブルーチン外に伝播させ、デバッガーによってキャッチされるようにします。このようにして、PDBを介して例外を事後的にデバッグできます。

ドキュメントのビルド

pipのドキュメントはSphinxを使用してビルドされます。ドキュメントはreStructuredTextで記述されています。

ローカルでビルドするには、以下を実行します。

$ nox -s docs

ビルドされたドキュメントはdocs/buildフォルダにあります。

作成された各プルリクエストに対して、ドキュメントはこのリンクに従ってデプロイされます。

https://pip--<PR-NUMBER>.org.readthedocs.build/en/<PR-NUMBER>

次のステップ

次のページは、貢献を開始するために次にどこを見るべきかについて、新しい貢献者にとって役立つ場合があります。