Git commitの前にコードをチェックする、多言語対応のpre-commitフックを管理・実行するためのフレームワーク。
asottile/pyupgrade
対象のPythonバージョンに合わせてPythonソースを新しい構文に自動変換する、コマンドラインツール兼pre-commit hook。
- スター
- 4,126
- フォーク
- 229
- 未解決の Issue
- 21
- 最終コミット
- 3 日前
これは何?
pyupgradeはPythonソースファイルをその場で書き換え、新しいPythonバージョンの構文や慣用表現に対応させます。たとえば、旧式の文字列フォーマットをf-stringやstr.formatに変換したり、sixの互換性用呼び出しをネイティブな表現に置き換えたり、setやdictの内包表記を簡潔にしたりできます。--py36-plusや--py310-plusなどのフラグでバージョン別の書き換えを有効にできるため、出力をプロジェクトの対象とする最低Pythonバージョンに合わせられます。
pipでインストールし、コマンドラインから1つ以上のファイルに対して実行できます。付属のhookを使ってpre-commitに組み込むこともでき、各コミット前にステージ済みファイルを自動で書き換えられます。アノテーションに関わる書き換えなど、一部の変換はファイルにfrom __future__ import annotationsがインポートされている場合にのみ適用されます。また、必要に応じて実行時の型付けを変更しないためのフラグも用意されています。
主な機能
- 01旧式の文字列フォーマットをf-string、str.format、簡潔なリテラルに書き換える。
- 02sixやpy2/py3互換コードを、インポートやバージョン判定も含めて削除する。
- 03--py36-plusから--py315-plusなどのフラグで、対象のPythonバージョンを指定できる。
- 04有効にすると、PEP 585やPEP 604形式などの型アノテーションを新しい形式にする。
- 05ステージ済みファイルに対するpre-commit hookとして実行できる。
ユースケース
- 古いコードベースの最低Pythonバージョンを引き上げる際に、すべてのファイルを手作業で編集せずに済ませる。
- 移行後にPython 2やsixの互換コードを削除する。
- チームのリポジトリでpre-commitを通じて新しい構文を自動的に徹底する。
クイックスタート
- 1
pip で pyupgrade をインストールします
pip install pyupgrade - 2
または、README のサンプル設定を使って .pre-commit-config.yaml に pre-commit フックとして追加します
使う前に知っておきたいこと
- 多くの書き換えを適用するには、--py36-plus や --py39-plus などのターゲットバージョンを指定するフラグが必要です。
収録されている特集
トピック
よくある質問
- pyupgrade とは?
- 対象のPythonバージョンに合わせてPythonソースを新しい構文に自動変換する、コマンドラインツール兼pre-commit hook。 pyupgradeはPythonソースファイルをその場で書き換え、新しいPythonバージョンの構文や慣用表現に対応させます。たとえば、旧式の文字列フォーマットをf-stringやstr.formatに変換したり、sixの互換性用呼び出しをネイティブな表現に置き換えたり、setやdictの内包表記を簡潔にしたりできます。--py36-plusや--py310-plusなどのフラグでバージョン別の書き換えを有効にできるため、出力をプロジェクトの対象とする最低Pythonバージョンに合わせられます。
- pyupgrade は無料で使えますか?ライセンスは?
- pyupgrade は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pyupgrade は今もメンテナンスされていますか?
- 活発にメンテナンス中。pyupgrade の最終コミットは 2026年11月4日 です。
- pyupgrade は何に使えますか?
- 古いコードベースの最低Pythonバージョンを引き上げる際に、すべてのファイルを手作業で編集せずに済ませる。 移行後にPython 2やsixの互換コードを削除する。 チームのリポジトリでpre-commitを通じて新しい構文を自動的に徹底する。
- pyupgrade のインストール方法は?
- pip で pyupgrade をインストールします: pip install pyupgrade または、README のサンプル設定を使って .pre-commit-config.yaml に pre-commit フックとして追加します
- pyupgrade はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/asottile/pyupgrade
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Blackは、ファイルをその場で書き換え、差分を最小限に抑える、独自の方針を持つ決定論的なPythonコードフォーマッターです。
Pythonのimport文を自動でソート・グループ化するユーティリティ兼ライブラリです。
複数プロジェクトで共通の設定を適用し、設定ファイルを自動修正できるコマンドラインツール兼flake8プラグイン。
複数行の呼び出し、リテラル、定義に末尾のカンマを自動追加するPythonツール兼pre-commitフック。
通常のテキストではなくASTパターンにマッチさせて、コードの検索、Lint、書き換えを行うCLIツールです。