😈

VScodeでPythonのblackを使用する際にシングルクォートを勝手にダブルクォートに置換しないようにする方法

2020/12/18に公開
2

Python 書いてる方の中には black を使用している方も多いと思います。私は VScode でファイルの保存時の自動整形を有効にしているのですが、自動整形時に black のルールでシングルクォートが勝手にダブルクォートに置換されてしまいます。シングルクォート派にはこれが少し厄介で、これだと次回ファイルを編集する時に次の保存のタイミングまでダブルクォートとシングルクォートが混在するソースコードになってしまい何だか気持ち悪いので、勝手に置換されないよう設定しようという話です。

設定手順

  1. F1 を押してコマンドパレットを表示
  2. 検索欄に >Preferences:Open Settings (JSON) と入力
  3. settings.json に以下を追加して保存
"python.formatting.blackArgs": ["skip-string-normalization"]

文字列はダブルクォートって気持ちはわかるんですけどね。入力が楽なので。ただ、郷に入っては郷に従います。

GitHubで編集を提案

Discussion

manabianmanabian

本記事をきっかけとして black によりシングルクォートを変換しない方法を知ることができ助かったのですが、 skip-numeric-underscore-normalization ではなく、 skip-string-normalization ではないでしょうか?

ドキュメントにて下記のように記載されております。

If you are adopting Black in a large project with pre-existing string conventions (like the popular “single quotes for data, double quotes for human-readable strings”), you can pass --skip-string-normalization on the command line. This is meant as an adoption helper, avoid using this for new projects.

引用元: The Black code style - Black 22.3.0 documentation

ReluRelu

私の環境(Python 3.10.4, black 22.3.0)ではskip-numeric-underscore-normalizationでもダブルクォートへの変換が行われなかったので少し調べてみたのですが、Add --single-quote option #594によると、ダブルクォートへの変換が行われないような仕様になっているオプションとして、line-length, skip-string-normalization, skip-numeric-underscore-normalizationが存在しているようで、それぞれのオプションを指定することでダブルクォートへの変換が行われないことも確認できました。

ただ、本記事の「シングルクォートを変換しない」ということを目的に考えると、引用していただいた内容からskip-string-normalizationを指定するのが妥当だと思いますので、提案いただきました内容で記事の修正をさせていただきました。

情報提供ありがとうございました。