delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

pyproject.tomlで「Error reading configuration file: This float doesn't have a leading digit」というエラーが出てハマった

概要

pyproject.tomlに以下のように設定を記述した後にblackを実行したところ、「Error reading configuration file: This float doesn't have a leading digit」というエラーが発生してしばらくハマった。

[tool.black]
line-length = 119

[tool.isort]
multi_line_output = 3
include_trailing_comma = True
force_grid_wrap = 0
line_length = 119
use_parentheses = True

原因

pyproject.tomlのBoolean値は先頭大文字ではなく全て小文字で書かなければいけなかった。

include_trailing_comma = true
use_parentheses = true

気づいた経緯

設定値をいったん全て削除してから、1行ずつ戻してはblackを実行するを繰り返すことで、設定値がBooleanの行が存在するとエラーが発生するということまでは切り分けられた。

検索したところ、以下に同様の問題でissueを立てている人を発見した。
github.com

issue内の

those two lines are invalid according to the TOML documentation.
Boolean values use lowercase identifiers in TOML.
https://github.com/toml-lang/toml#user-content-boolean

というコメントを見て気づけた。

間違えた理由

blackの公式ドキュメントにisortと互換性のある設定の記述方法を紹介してくださっている項目があるのだが、そこが「True」と先頭が大文字になっていたので、そのままコピペしてしまった。
github.com

ただ、ドキュメントをちゃんと読むと、その下に設定ファイルの種類ごとの記述が紹介されていて、「pyproject.toml」のプルダウンを開くと確かに「true」と小文字になっていた。
github.com