Pipenvへの貢献—pipenvドキュメント

提供:Dev Guides
Pipenv/docs/v2021.5.29/dev/contributing
移動先:案内検索

Pipenvへの貢献

あなたがこれを読んでいるなら、あなたはおそらくPipenvに貢献することに興味があるでしょう。 どうもありがとうございます! オープンソースプロジェクトは、他の人から受けたサポートに基づいて生き生きとしています。Pipenvプロジェクトへの貢献を検討しているという事実は、非常に寛大です。

このドキュメントは、このプロジェクトに貢献するためのガイドラインとアドバイスを示しています。 貢献することを考えている場合は、このドキュメントを読んで、このプロジェクトへの貢献がどのように機能するかを理解することから始めてください。 ご不明な点がございましたら、 Dan RyanTzu-ping Chung 、または Nate Prewitt のいずれかにお気軽にお問い合わせください。

このガイドは、あなたが考えている貢献の種類に基づいてセクションに分かれており、すべての貢献者のための一般的なガイドラインをカバーするセクションがあります。

一般的なガイドライン

心を込めて

心を込めて、または途中で-ケネス・ライツ


Pipenvには、バグの報告や機能のリクエストなど、あらゆる形態の貢献を管理する非常に重要なルールが1つあります。 この黄金のルールは、「誠実であるか、あなたの道を進んでいる」です。

関係者全員が敬意を持って扱われる限り、すべての貢献を歓迎します


早期フィードバックを得る

あなたが貢献しているなら、それが完全に磨かれ、完成するまで、あなたの貢献に座る必要を感じないでください。 これは、関係者全員ができるだけ早くフィードバックを求めるのに役立ちます。 フィードバックのために投稿の初期の未完成バージョンを送信しても、その投稿が受け入れられる可能性を損なうことはなく、プロジェクトに適さない投稿に多くの作業を費やす必要がなくなります。


貢献の適合性

私たちのプロジェクトメンテナは、貢献がPipenvに適しているかどうかについて最後の言葉を持っています。 すべての投稿は慎重に検討されますが、プロジェクトの現在の目標やニーズに合わないため、投稿が拒否されることがあります。

あなたの貢献が拒否されたとしても、絶望しないでください! これらのガイドラインに従っている限り、次の貢献が受け入れられる可能性がはるかに高くなります。


質問

GitHub課題追跡システムは、バグレポートおよび機能リクエスト用です。 Pipenvの使用方法について質問するために使用しないでください。 これらの質問は、代わりに Stack Overflow に送信する必要があります。 Stack Overflowで質問するときは、質問にpipenvタグが付けられていることを確認して、迅速かつ正確に回答されるようにしてください。


コードの貢献

コードを送信する手順

コードを提供するときは、次のチェックリストに従う必要があります。

  1. 私たちの開発哲学を理解してください。
  2. GitHubでリポジトリをフォークします。
  3. 開発セットアップをセットアップします
  4. テスト( Testing )を実行して、すべてがシステムに合格していることを確認します。 そうでない場合は、失敗する理由を調査する必要があります。 これを自分で診断できない場合は、このドキュメントのガイドラインバグレポートに従って、バグレポートとして報告してください。
  5. バグや機能を実証するテストを作成します。 それらが失敗することを確認してください。
  6. 変更を加えます。
  7. テストスイート全体を再度実行し、追加したテストを含むすべてのテストがに合格することを確認します。
  8. GitHubプルリクエストをメインリポジトリのmasterブランチに送信します。 GitHubプルリクエストは、このプロジェクトで期待されるコードコラボレーションの方法です。

次のサブセクションでは、上記のいくつかのポイントについて詳しく説明します。


開発セットアップ

開発環境をセットアップするには、次のコマンドを実行します。

pip install -e .
pipenv install --dev

これにより、リポジトリバージョンのPipenvがインストールされ、開発の依存関係がインストールされます。 それが完了したら、開発を開始できます。

sys.pathに暗黙的に追加されるpipenvフォルダーとの競合を解決するには、Pipenvのリポジトリバージョンを他のグローバルバージョンの上にインストールする必要があります。 詳細については、 pypa / pipenv#2557 を参照してください。


テスト

テストはpytestスタイルで記述されており、非常に簡単に実行できます。

pytest

これにより、すべてのPipenvテストが実行されますが、時間がかかる場合があります。 テストのサブセットを実行するために、次のような標準のpytestフィルターを使用できます。

  • ディレクトリまたはファイルを指定します:pytest tests/unitまたはpytest tests/unit/test_cmdparse.py
  • キーワード式を指定します:pytest -k test_lock_editable_vcs_without_install
  • ノードIDを指定します:pytest tests/unit/test_cmdparse.py::test_parse
  • テストマーカーを提供します:pytest -m lock


コードレビュー

コントリビューションは、コードレビューが完了するまでマージされません。 強く反対しない限り、コードレビューのフィードバックを実装する必要があります。 コードレビューのフィードバックに反対する場合は、明確かつ冷静にケースを作成する必要があります。 その後、フィードバックが引き続き適用されると判断された場合は、フィードバックを適用するか、投稿を取り消す必要があります。


パッケージインデックス

テストを高速化するために、ロックとインストールをパッケージインデックスに依存するテストでは、tests/pypiディレクトリにベンダーパッケージを含むローカルサーバーを使用します。 各ベンダーパッケージには、必要なリリースを含む独自のフォルダーが必要です。 パッケージのリリースを追加するときは、.tar.gzまたはユニバーサルホイール(例:py2.py3-none)のいずれかを使用するのが最も簡単です。 .tar.gzまたはユニバーサルホイールが利用できない場合は、利用可能なすべてのアーキテクチャとプラットフォームにホイールを追加してください。


ドキュメントの貢献

ドキュメントの改善はいつでも大歓迎です! ドキュメントファイルは、コードベースのdocs/ディレクトリにあります。 それらは reStructuredText で書かれており、 Sphinx を使用してドキュメントの完全なスイートを生成します。

ドキュメントを寄稿するときは、ドキュメントファイルのスタイルに従うように最善を尽くしてください。 これは、テキストファイルの幅が79文字のソフト制限と、セミフォーマルでありながら親しみやすく親しみやすい散文スタイルを意味します。

Pythonコードを表示するときは、一重引用符で囲まれた文字列を使用します("hello"の代わりに'hello')。


バグレポート

バグレポートは非常に重要です! それらは GitHubの問題として記録されます。 バグレポートを提出する際は、次の点に注意してください。

  1. 重複する問題を提起することは避けてください。 お願いします GitHubの問題検索機能を使用して、バグレポートまたは機能リクエストが過去に言及されているかどうかを確認してください。 重複するバグレポートと機能要求は、プロジェクトの限られたリソースに対する大きなメンテナンス負担です。 レポートからオリジナルを見つけるのに苦労したことが明らかな場合は問題ありませんが、問題のタイトルで選択した単語を検索すると重複が見つかった場合、問題は非常に突然終了する可能性があります。

  2. 例外またはトレースバックに関するバグレポートを提出するときは、 complete トレースバックを含めてください。 部分的なトレースバック、または単に例外テキストは役に立ちません。 完全なトレースバックが含まれていない問題は、警告なしにクローズされる場合があります。

  3. 作業に適した量の情報を提供するようにしてください。 これは、以下を提供する必要があることを意味します。

    • 問題の再現方法に関するガイダンス。 理想的には、これはメンテナがすぐに実行できる small コードサンプルである必要があります。 それができない場合は、何をしているのか、どのくらいの頻度で発生しているのか、どの環境を使用しているのかなどをお知らせください。 徹底してください。それにより、さらに質問する必要がなくなります。

    • あなたが期待したことを教えてください。 サンプルコードを実行すると、何が起こると予想されますか? コードの「成功」はどのように見えますか?

    • 実際に何が起こるかを教えてください。 「機能しない」または「失敗する」と言っても役に立ちません。 どのように失敗するか教えてください:例外が発生しますか? ハング? インストールされているパッケージが正しくないようですか? 実際の結果は期待した結果とどのように異なりましたか?

    • 使用しているPipenvのバージョンインストール方法を教えてください。 Pipenvのバージョンが異なれば、動作もバグも異なります。Pipenvの一部のディストリビューターは、提供するコードに加えてパッチを出荷しています。

    これらすべてを提供しないと、問題を解決するのにはるかに長い時間がかかります。 これらを明確にするように求められ、応答がない場合は、修正せずに問題をクローズします。


テストを実行します

テストを実行する3つの方法は次のとおりです。

  1. make testdockerを使用)
  2. ./run-tests.shまたはrun-tests.bat
  3. pipenvの使用:
$ git clone https://github.com/pypa/pipenv.git
$ cd pipenv
$ git submodule sync && git submodule update --init --recursive
$ pipenv install --dev
$ pipenv run pytest

最後の2つについては、環境が正しくセットアップされていることが重要です。これには、たとえば、特定のMacインストールでは、次の手順が必要になる場合があります。

# Make sure the tests can access github
if [ "$SSH_AGENT_PID" = "" ]
then
   eval `ssh-agent`
   ssh-add
fi

# Use unix like utilities, installed with brew,
# e.g. brew install coreutils
for d in /usr/local/opt/*/libexec/gnubin /usr/local/opt/python/libexec/bin
do
  [[../ ":$PATH:" != *":$d:"* ]] && PATH="$d:${PATH}"
done

export PATH

# PIP_FIND_LINKS currently breaks test_uninstall.py
unset PIP_FIND_LINKS