複数の Python プロジェクトに標準的な設定を一括適用するツール
複数のプロジェクトで共通の設定ファイル(pre-commit, ruff, pyproject.toml 等)を管理・適用します。
- 📦 一括適用 - 複数プロジェクトへ一度に設定を適用
- 🔍 ドライラン - 適用前に変更内容を確認可能
- 📝 差分表示 - 変更箇所をシンタックスハイライト付きで表示
- 🔄 pyproject.toml マージ - プロジェクト固有設定を保持しつつ共通設定を適用
- ⚡ 自動 uv sync - pyproject.toml 更新後に自動で依存関係を同期
- 🎨 テンプレート対応 - Jinja2 テンプレートで柔軟な設定生成
| タイプ | 説明 |
|---|---|
pyproject |
pyproject.toml 共通セクション |
pre-commit |
.pre-commit-config.yaml |
ruff |
ruff.toml |
gitignore |
.gitignore |
dockerignore |
.dockerignore |
yamllint |
.yamllint.yaml |
prettier |
.prettierrc |
python-version |
.python-version |
renovate |
renovate.json |
my-py-lib |
my-py-lib 依存関係の更新 |
# uv のインストール(未インストールの場合)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 依存関係のインストール
uv syncconfig.yaml を作成して、管理対象のプロジェクトを設定:
# デフォルト設定
defaults:
python_version: "3.12"
configs:
- pyproject
- pre-commit
- ruff
- gitignore
# テンプレートディレクトリ
template_dir: ./templates
# プロジェクト一覧
projects:
- name: my-project
path: ~/github/my-project
- name: another-project
path: ~/github/another-project
configs: # プロジェクト固有の設定
- pyproject
- pre-commit# ドライラン(デフォルト)- 変更内容を確認
uv run src/app.py
# 実際に変更を適用
uv run src/app.py --apply
# 差分を詳細表示
uv run src/app.py -d# 特定のプロジェクトのみ
uv run src/app.py -p my-project
# 特定の設定タイプのみ
uv run src/app.py -t pyproject -t pre-commit
# 組み合わせ
uv run src/app.py -p my-project -t pyproject --apply# 設定ファイルを指定
uv run src/app.py -c custom-config.yaml
# バックアップを作成して適用
uv run src/app.py --apply --backup
# pyproject.toml 更新後の uv sync をスキップ
uv run src/app.py --apply --no-sync
# 更新したファイルを git add
uv run src/app.py --apply --git-add
# 詳細ログ出力
uv run src/app.py -v
# 設定ファイルの検証のみ
uv run src/app.py --validate
# プロジェクト一覧を表示
uv run src/app.py --list-projects
# 設定タイプ一覧を表示
uv run src/app.py --list-configstemplates/ ディレクトリに設定タイプごとのテンプレートを配置:
templates/
├── pyproject/
│ └── sections.toml # pyproject.toml の共通セクション
├── pre-commit/
│ └── .pre-commit-config.yaml
├── ruff/
│ └── ruff.toml
├── gitignore/
│ └── .gitignore
└── ...
テンプレートでは以下の変数が使用可能:
# .pre-commit-config.yaml の例
repos:
- repo: local
hooks:
- id: ruff
language: python
language_version: "{{ vars.python_version | default(defaults.python_version) }}"projects:
- name: special-project
path: ~/github/special-project
# テンプレート変数
vars:
python_version: "3.11"
# テンプレートファイルのオーバーライド
template_overrides:
pre-commit: ~/my-templates/.pre-commit-config.yaml
# pyproject.toml 固有オプション
pyproject:
# 追加で保持するセクション
preserve_sections:
- tool.custom
# 追加の開発依存
extra_dev_deps:
- some-package>=1.0Apache License Version 2.0
⭐ このプロジェクトが役に立った場合は、Star をお願いします!