はじめに¶
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.9
やpypy3
などの他のバージョンも使用できます。
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>
次のステップ¶
次のページは、貢献を開始するために次にどこを見るべきかについて、新しい貢献者にとって役立つ場合があります。
新しい貢献者向けのGitHubの優れた最初のイシューの一部
pipのアーキテクチャの詳細
イシュートラッカーのイシューのトリアージに関するガイド
Gitの入門