Astropyテンプレートを使用してPythonパッケージを作成し、維持する方法

何か問題があったら、迷わずAstpy-Devメーリングリストに助けを求めてください!

♪the package-template リポジトリは、Pythonパッケージにテンプレートを提供します。このパッケージデザインは主を反映しています Astropy ストレージ·ライブラリ、および組織のための多くのヘルパー·コードの再使用 Astropy それがそうです。ご参照ください package template documentation パッケージ·テンプレートを使用する説明については、参照されたい。

Pythonパッケージのリリース

以下に示す手順を使用してパッケージを発行することができます。これらの説明では、分岐コピーからではなく、リモート“マスタ”リポジトリからの新しいクローンが発行されると仮定します。ChangeLogファイル名は CHANGES.rst 星間コアセットのようにもし値引きを使っていたら、交換すべきです。 CHANGES.rst vt.から. CHANGES.md 説明書にあります。

注釈

以下の説明では、ワークフローにおいてエラー修復分岐は使用されないと仮定します。間違った修復分岐を作成したいなら、もっと完全な占星術を読むことをお勧めします 放行プログラム. これらをあなたの小包に合わせます。

  1. 持続的な統合が通過していることを確認する。

  2. 更新する. CHANGES.rst ファイルは、すべての変更をリストし、発行日を更新することを保証し、その日付は現在設定されています。 unreleased 中の現在の日付 yyyy-mm-dd フォーマットです。

  3. 更新中のバージョン番号 setup.cfg 使用することなく、これからリリースされるバージョンに追加します .dev 接尾辞(例えば 0.1 )である。Setuptools_scmを使用してバージョン番号を管理する場合、このステップをスキップすることができます。

  4. 運行 git clean -fxd 追跡されていないファイルを削除します(警告:これは以前に提出されていないすべてのファイルを永久的に削除しますので、これらのファイルを保持する必要がないことを確認してください)。

  5. このとき、tarファイルを生成するために実行されるコマンドは、パッケージが持っているかどうかに依存します。 pyproject.toml 書類の有無にかかわらず。そうでなければ:

    python setup.py build sdist --format=gztar
    

    もしそうなら、まず確保しなければなりません build ソフトウェアパッケージはインストールされており、最新です:

    pip install build --upgrade
    

    そして使用:ソース配信を作成します

    python -m build --sdist .
    

    以下のすべての説明はあなたがすでに仮定していると仮定します pyproject.toml それがそうです。もしあなたが使用しなければ pyproject.toml ただし、https://docs.astterpy.org/en/v 4.0.x/Development/Asterpy-Package-template.htmlを参照されたい。

    この2つの場合,生成されたファイルが内部に入ることを確保する必要がある. dist Tarファイルを解凍し、解凍されたディレクトリに入り、以下のコマンドを使用してテストを実行します。

    pip install -e .[test]
    pytest
    

    追加する必要があるかもしれません --remote-data フラグまたはソフトウェアパッケージを完全にテストする際に一般的に追加される任意の他のフラグ。

  6. ディレクトリのルートディレクトリに戻り,使用する::生成されたファイルを削除する.

    git clean -fxd
    
  7. 変更を追加します CHANGES.rst そして setup.cfg **

    git add CHANGES.rst setup.cfg
    

    メッセージを使用して提出します:

    git commit -m "Preparing release <version>"
    
  8. タグCOMMIT WITH v<version> 選択して使用することができます -s オプション::

    git tag v<version>
    
  9. 変わる VERSION はい。 setup.cfg 次のバージョン番号までですが、ついています .dev 末尾の接尾辞(例えば 0.2.dev )である。新しい部分を追加します CHANGES.rst 次のバージョンについては、1つのエントリしかありません No changes yet 例えば、:

    0.2 (unreleased)
    ----------------
    
    - No changes yet
    
  10. 変更を追加します CHANGES.rst そして setup.cfg **

    git add CHANGES.rst setup.cfg
    

    メッセージを使用して提出します:

    git commit -m "Back to development: <next_version>"
    
  11. リリースを表示して提出することを使用する git checkout v<version> それがそうです。運行 git clean -fxd 提出されていない書類は何も削除します。

  12. オプションで、“典型的なユーザ”シーンをシミュレートする環境でテストを実行します。これは絶対に必要ではありません。上記のテストを実行したので、カスタム開発者環境を使用している可能性のある微細なエラーを捉えるのに有用かもしれません。仮想環境の設定についての詳細は、参照されたい Python仮想環境 しかし、例えば、あなたが使用していると仮定します Anaconda それがそうです。DO::

    conda create -n myaffilpkg_rel_test astropy <any more dependencies here>
    source activate myaffilpkg_rel_test
    python -m build --sdist .
    cd dist
    pip install myaffilpkg-version.tar.gz
    python -c 'import myaffilpkg; myaffilpkg.test()'
    source deactivate
    cd <back to your source>
    

    ユーザが他の関連するソフトウェアパッケージをインストールしている可能性があると思う場合、この動作を他の依存アイテムの組み合わせで繰り返したい場合があります。すべてのテストが合格したと仮定すれば、あなたは続けることができます。

  13. 前のステップを実行した場合は、以下の操作を実行してください git clean -fxd again to remove anything you made there. Run python -m build --sdist . アップロードするファイルを作成する場合は、以下の操作を実行してください。そして、以下のようにPyPIにアップロードすることができます twine **

    twine upload dist/*
    

    中で述べたとおり these 指示する。PyPI上のエントリが正しいかどうか,およびtarfileが存在するかどうかを検査する.

  14. プライマリ·ブランチに戻り、変更をGitHubにプッシュします:

    git checkout master
    git push --tags origin master
    

    この操作が完了したら、Read the Docsを使ったら、トリガしてください latest 生成してプロジェクト設定に移行し バージョン さっき押したラベルを見るべきです。アクティブにするタグを選択して保存します。

  15. もしあなたのソフトウェアが conda-forge Condaチャネル、あなたはまたあなたの包装原料のバージョン番号を更新するために引張要求を提出しなければなりません。

テスト版/リリース候補バージョンに対する修正

あなたのパッケージが新しいバージョンをリリースする前に、例えば、協力者がこのバージョンを独立してテストすることを可能にするように、コードを“事前発行”することを望むことができます。実行中のリリースがこのような事前発行である場合、上記のステップのいくつかを修正する必要があります。

発表プログラムの主な修正は:

  • 新版の本号を入力する際には、削除だけではありません .dev ,“1.2 b 1”または“1.2 rc 1”を入力する.この番号のプランに従わなければならないということは重要です (X.Yb# あるいは…。 X.Y.Zrc# )は、様々な自動化ツールが主発行前にバージョンを注文することを保証し、PyPIにこれが“事前発行”であることも通知するからである。