Repolode
asottile

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. 1

    pip で pyupgrade をインストールします

    pip install pyupgrade
  2. 2

    または、README のサンプル設定を使って .pre-commit-config.yaml に pre-commit フックとして追加します

使う前に知っておきたいこと

  • 多くの書き換えを適用するには、--py36-plus や --py39-plus などのターゲットバージョンを指定するフラグが必要です。

収録されている特集

トピック

#python#linter#pre-commit#code-modernization#syntax-upgrade#refactoring

よくある質問

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 の数値は毎日更新されます。

関連プロジェクト