コントリビューション¶
まず、SQLModelを支援し、ヘルプを得るための基本的な方法を確認したいかもしれません。
開発¶
既にリポジトリをクローンしていて、コードを深く掘り下げる必要があることが分かっている場合は、環境設定に関するいくつかのガイドラインを以下に示します。
Poetry¶
SQLModelは、プロジェクトのビルド、パッケージ化、公開にPoetryを使用しています。
Poetryのドキュメントでインストール方法を学ぶことができます。
Poetryが利用可能になったら、開発用依存関係をインストールできます。
$ poetry install
---> 100%
これにより、仮想環境が自動的に作成され、すべての依存関係とローカルのSQLModelがインストールされます。
Poetry Shell¶
現在の環境を使用し、その中のすべてのツール(テスト用の`pytest`など)にアクセスするには、Poetry Shellに入ります。
$ poetry shell
これにより、必要な環境変数が設定され、それらを含む新しいシェルが開始されます。
ローカルSQLModelの使用¶
SQLModelをインポートして使用するPythonファイルを作成し、ローカルPoetry環境のPythonで実行すると、ローカルSQLModelソースコードが使用されます。
そして、そのローカルSQLModelソースコードを更新すると、そのPythonファイルを再度実行したときに、編集したばかりのSQLModelの最新バージョンが使用されます。
Poetryはそれを機能させる役割を担っています。しかしもちろん、それは現在のPoetry環境でのみ機能します。別の環境に標準のSQLModelをインストールした場合(GitHubリポジトリのソースからではない)、カスタムバージョンではなく標準のSQLModelが使用されます。
フォーマット¶
すべてのコードをフォーマットしてクリーンアップするスクリプトを実行できます。
$ bash scripts/format.sh
また、すべてのインポートを自動的にソートします。
ドキュメント¶
ドキュメントは、MkDocsとMaterial for MkDocsを使用しています。
すべてのドキュメントは、`./docs`ディレクトリにMarkdown形式で記述されています。
多くのチュートリアルにはコードブロックが含まれています。
ほとんどの場合、これらのコードブロックは実際に実行可能な完全なアプリケーションです。
実際、これらのコードブロックはMarkdown内に記述されているのではなく、`./docs_src/`ディレクトリにあるPythonファイルです。
そして、これらのPythonファイルは、サイトを生成する際にドキュメントに含まれ/挿入されます。
テスト用ドキュメント¶
ほとんどのテストは、ドキュメント内のサンプルソースファイルに対して実際に実行されます。
これにより、以下が保証されます。
- ドキュメントが最新であること。
- ドキュメントの例がそのまま実行できること。
- テストカバレッジによって、ほとんどの機能がドキュメントで網羅されていること。
ローカル開発中は、サイトをビルドして変更を確認する(ライブリロードを行う)スクリプトがあります。
$ bash scripts/docs-live.sh
<span style="color: green;">[INFO]</span> - Building documentation...
<span style="color: green;">[INFO]</span> - Cleaning site directory
<span style="color: green;">[INFO]</span> - Documentation built in 2.74 seconds
<span style="color: green;">[INFO]</span> - Serving on http://127.0.0.1:8008
`http://127.0.0.1:8008`でドキュメントを提供します。
そのため、ドキュメント/ソースファイルを編集して、変更をライブで確認できます。
テスト¶
ローカルで実行してすべてのコードをテストし、HTMLでカバレッジレポートを生成できるスクリプトがあります。
$ bash scripts/test.sh
このコマンドは`./htmlcov/`ディレクトリを生成します。ブラウザで`./htmlcov/index.html`ファイルを開くと、テストによってカバーされているコード領域をインタラクティブに調べることができ、欠けている領域があるかどうかを確認できます。
謝辞¶
コントリビューションありがとうございます!☕