目次
気になるHatch
Python Monthly Topicsで紹介された機能を触るために
からあげさんの記事「Pythonで自分だけのクソライブラリを作る方法」を組み合わせることにしました。
% hatch --version Hatch, version 1.9.7 % hatch run python -V Python 3.12.0
(Python Monthly Topicsよりバージョンが古いので、古いコマンドとなったように思われます)
Hatchで自分だけのクソライブラリを作る方法
% hatch new unko unko ├── src │ └── unko │ ├── __about__.py │ └── __init__.py ├── tests │ └── __init__.py ├── LICENSE.txt ├── README.md └── pyproject.toml
プロジェクトの雛形が作られました。
クソライブラリの実装(2点)
src/unko/unko.py
を追加
def deru(): print("puripuri")
src/unko/__init__.py
を編集(スマートなimportのために)
# SPDX-FileCopyrightText: # # SPDX-License-Identifier: +from unko.unko import deru # NOQA
Hatchの機能をお試し
Python Monthly Topicsで見かけた機能を試していきます。
フォーマッタ
% hatch fmt src/unko/unko.py:2:5: T201 `print` found Found 1 error.
Ruffが流れているという理解です。
unkoのコアのprint文なので無視するように鎮める方法は宿題です
テスト
unkoのテストコードを書きます。
from unko import deru def test_deru(capsys): deru() assert capsys.readouterr().out == "puripuri\n"
% hatch run test # default env の test script 実行と思われる ============================= test session starts ============================== platform darwin -- Python 3.12.0, pytest-8.3.2, pluggy-1.5.0 rootdir: /.../unko-by-hatch configfile: pyproject.toml collected 1 item tests/test_unko.py . [100%] ============================== 1 passed in 0.01s ===============================
型チェック
% hatch run types:check # types env の check script 実行 Success: no issues found in 5 source files
hatch new
で作られたpyproject.toml
を読んでいくことでHatchの理解が深まりそうです。
色々触っているうちにできていたeditable install
% hatch shell (unko) % python
>>> from unko import deru >>> deru() puripuri
まずこれを試したらImportErrorとなりました。
どうやらテスト実行でdefault envができたときにeditable installされたような雰囲気です2。
puripuriを他の文字列に変えて再度importすると、出力が変わりました
今回のコード
終わりに
Hatchを使って簡単なクソライブラリを作ってみました。
今回自分では依存をインストールしていなくて、そこは体験が全然違いました。
手を動かしたことでpyproject.toml
がごついんだなという感想です。
読み解いていくぞ〜
先人による参考記事
- Ryeとの禊 ↩
- editable installまわりはもうちょっと理解を深めたいです。積ん読 https://github.com/pypa/hatch/issues/588#issuecomment-1494729429↩