Skip to content

Instantly share code, notes, and snippets.

@showa-yojyo
Last active October 29, 2024 15:17
Show Gist options
  • Save showa-yojyo/59c44dbab9ea74297963b24738434c60 to your computer and use it in GitHub Desktop.
Save showa-yojyo/59c44dbab9ea74297963b24738434c60 to your computer and use it in GitHub Desktop.
Hatch Reference
title
Hatch 利用ノート

https://hatch.pypa.io/latest/

build

# build
# プロジェクトをビルドする
# 引数なしは sdist と wheel
hatch build

# ビルド対象を -t で指定 (e.g. -t sdist -t wheel)
hatch build -t wheel

# 対象が複数バージョンを支持する場合には厳密なバージョンをコロン区切りで付ける
hatch -v build -t wheel:standard

# ビルド前にクリナップするなら -c フラグを指定
hatch build -c

clean

ビルド成果物をクリナップ。

hatch clean
hatch clean -t sdist

config

構成ファイルを扱う

# Windows ならば Explorer で構成ファイルを含むフォルダーを開く
hatch config explore

# 構成ファイルのフルパスを出力する
hatch config find

# 構成ファイルの設定値を既定値に復元する
hatch config restore

# 構成ファイルを使用者が手で編集することなく項目 KEY を設定する
# VALUE を指定しないと対話的に入力することになる
hatch config set KEY VALUE

# project = "proj2"
hatch config set project proj2

# 構成ファイルの内容を出力する
hatch config show

# 秘密項目をも出力する
hatch config show --all

# 新しい設定項目があれば設定ファイルを更新する
# ?どういう状況で実行するのか?
hatch config update

dep

依存関係

# 依存関係を出力する 1
hatch dep show requirements

# 依存関係を出力する 2
hatch dep show table

env

プロジェクト環境を扱う。

# 環境を生成する (to activate hatch shell or hatch run)
# このコマンドは滅多に実行しない
hatch env create

# 環境が表現されているディレクトリーのパスを出力する
hatch env find

# test 環境がどこにあるかを確認する
hatch env find test

# 環境すべてを破棄する
hatch env prune

# 環境を破棄する
hatch env remove ENV_NAME

# ???
hatch env run
hatch env run -i py=3.10 -x version=9000 test:pytest

# 現在使用可能な環境すべてと各環境の依存関係を出力する
hatch env show
hatch env show --json

fmt

整形コマンドのようだ。詳しくは Customize static analysis behavior - Hatch 参照。

hatch fmt 
hatch fmt --check
hatch fmt --check --linter
hatch fmt --check --format

# pyproject.toml に [tool.hatch.format.config-path] が設定されている場合限定
# Hatch を upgrade したときなどに既定を更新する場合は --sync 付けて fmt コマンドを一度実行する必要がある
hatch fmt --check --sync

new

プロジェクトを初期化する。

# プロジェクトを初期化する(既存のものがあればエラー)
hatch new PROJ_DIR

# 対話的に
hatch new -i

# 既存のプロジェクトをリセットする
hatch new --init PROJ_DIR

# コマンドラインツールを用意する
hatch new --cli PROJ_DIR

project

プロジェクトに関する情報を見る。

hatch project metadata | jq -r .readme.text | bat

publish

ビルド成果物を発行する。

# 引数なしだと dist ディレクトリが用いられる
hatch publish

# 明示的に成果物ディレクトリーや形式(拡張子に注意)を指定する
hatch publish /path/to/artifacts foo-1.tar.gz

python

Python インストールを扱う。

# Installed 一覧にあるディストリビューションの Python 実行形式のパスを示す
hatch python find
# その実行形式を含むディレクトリーのパスを示す
hatch python find 3.12 --parent

# 1. Python 3.12 ディストリビューションをダウンロード、
# 2. Python インストール用に設定されたデフォルトディレクトリ内の 3.12 という名前のディレクトリーに解凍
# 3. インストールをユーザーの PATH に追加する
hatch python install 3.12

# PATH に追加しないで上記を実行
hatch python install 3.12 --private

# 複数指定可
hatch python install 3.12 3.11 pypy3.10

# システムと互換性のあるすべての Python ディストリビューションをインストール
hatch python install all

# Installed 一覧にある Python ディストリビューションを除ける
hatch python remove all

# 利用可能かつインストールされている Python ディストリビューションすべてを見る
hatch python show

# Installed 一覧にある Python ディストリビューションを更新する
hatch python update 3.12 3.11 pypy3.10

# Installed 一覧にある Python ディストリビューションすべてを更新する
hatch python update all

run

env run と同等。

hatch run python -V

# test 環境に入って pytest を実行する
hatch run test:pytest

self

hatch を扱う。

# GitHub にバグ報告を送るときのテンプレを出力
hatch self report

# ブラウザーを launch したくない場合には -n を付けろ
hatch self report -n

# Hatch インストールを復元する
hatch self restore

# Hatch を更新する (conda update)
hatch self update

shell

pipenv shell のようなもの。

.bashrc を読み込むので、そこで python へのパスを設定していないことが必要。

# 作成した特定の環境 (e.g. test) に対してシェルを起動する
hatch -e test shell

status

現在環境情報を示す。

hatch status

test

単体テストを hatch-test 環境行列を用いて実施する

# pytest tests と同等
hatch test

# 引数を test コマンドに追加することで pytest に引数を与える
hatch test -vv tests/test_foo.py::test_bar

# Python 3.12 と foo または bar 機能がある環境すべてを試験する
hatch test -i python=3.12 -i feature=foo,bar

# Python 3.12 を試験するが baz 機能を除外する
hatch test -i python=3.12 -x feature=baz

# コード網羅検査を有効にする
hatch test --cover
# 無言バージョン
hatch test --cover-quiet

# 失敗したものを二度まで再試行
hatch test --retries 2
# 再試行までの待機秒数を指定
hatch test --retries 2 --retry-delay 1

# 環境内のテストを複数のワーカーに分散して実行する
hatch test --parallel

# テストの順番をランダムにする
hatch test --randomize

version

プロジェクトのバージョンを扱う

# バージョンを示す
hatch version

# バージョンをアップグレードする(ダウングレード不可)
hatch version x.y.z

# バージョンを明示的に与えるのではなく、インクリメントする部位を指定する
hatch version minor

# プロジェクトの最初のメジャーバージョンのプレビューをリリースするときなどに
hatch version major,rc

# 最終版をリリースしたいときに
hatch version release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment