Contributing

pybottersはオープンソースソフトウェアですので、どなたでも開発に参加できます。 当プロジェクトに参加する方法や選定しているツールなどの環境構築する方法を記載します。

Table of Content

Python

pybottersはPython 3.7以上を対象としています。 可能な限り最新のPython 3.7でコーディングを行ってください。

参考 Python 3.7のインストール~仮想環境の作成方法

# 1. Install build dependencies.
# See pyenv Wiki
# https://github.com/pyenv/pyenv/wiki#suggested-build-environment

# 2. Get latest Python 3.7 source, extract it.
wget https://www.python.org/ftp/python/3.7.11/Python-3.7.11.tgz
# See here for the latest Python 3.7.
# https://www.python.org/downloads/source/
tar -xf Python-3.7.11.tgz

# 3. Build, Install.
cd Python-3.7.11
./configure --prefix=${HOME}/.local && make && make altinstall

# 4. Create virtual environment, activate it.
~/.local/bin/python3.7 -m venv ~/.venv/pybotters
. ~/.venv/pybotters/bin/activate

poetry

poetry はPythonの依存関係管理とパッケージングを支援するツールです。 仮想環境に開発ライブラリをインストールする為に使用します。

参考 poetryのインストール~依存関係インストール

# 1. Install poetry
# See https://python-poetry.org/docs/#installation

# 2. Install dependencies.
# Activate venv.
. ~/.venv/pybotters/bin/activate
# Clone pybotters
git clone https://github.com/MtkN1/pybotters
cd pybotters
# Install.
poetry install

Formatter, Linter

当プロジェクトではフォーマッターは black, リンターは flake8 を採用しています。 (これらはpoetryによってインストールされます。)

コードをコミットする際にはこれらを適用してください。

参考 blackの適用方法

# 手動で適用する場合
balck .

# VS Codeで自動適用を利用する場合
# .vscode/settings.json を編集
# {
#     "python.formatting.provider": "black",
#     "editor.formatOnSave": true
# }

参考 flake8の適用方法

# 手動でチェックする場合(確認後、コードを修正してください)
flake8 .

# VS Codeで自動チェックする場合
# .vscode/settings.json を編集
# {
#     "python.linting.flake8Enabled": true,
#     "python.linting.enabled": true,
#     "python.linting.pylintEnabled": false
# }

Testing

当プロジェクトではテストに pytest を採用しています。 (ライブラリはpoetryによってインストールされます。)

実装したロジックに対するテストコードを作成してください。 また、テストはGitHub Actionsによってリモートリポジトリコミット時に自動実行されます。

テストの基準

  • 現状、DataStoreに関するテストコードは省いています。(※開発速度優先の為。正式版リリースまでには対応する予定)

  • それ以外の部分についてはテストを追加してください。

  • 外部との通信部分はモック化してください。

参考 pytestの実行方法

pytest

Pull Request

pybottersをForkして、 developブランチ を元にコードを作成してください。 Pull Requestは同ブランチに対して行ってください。 またコミットメッセージはできれば、「英文~~~ (#存在する関連イシュー番号)」で行ってください。

参考 クローン~developブランチチェックアウト

git clone https://github.com/[YourAccountName]/pybotters
git checkout develop

設計思想や細かい変数名のデザインなどは、レビューし修正コードを提案します。 お気軽にプルリクください!

OSS開発にご興味がある方、是非プロジェクトにご参加ください✨🍰✨

Incentive(?)

将来的には取引所へのReferralリンク等作成する予定です。 多大な貢献をして頂いた方にはReferralの収益分配するような事を行うかもしれません。(かなり先の展望です)