mypy does not catch string formatting errors in `logging.log` that are listed - not interpolated
まだ誰も着手していません。
評価
調査の方向性
まず、mypy-1.15.0 で報告されたケースを再現し、logging.log と logger.critical のエントリーポイントに重点を置いて、print と比較します。logging の呼び出しがどのように解析されるかを追跡し、遅延補間を正しく使用しているコードを拒否せずに、フォーマット引数の個数が正しくない場合に報告されるよう、テストカバレッジを追加します。
索引モデルが issue の本文から書いたものです。
説明
I could not find the same issue previously reported here, but these concepts are so generic I would not be surprised user-error is the cause of my failed earch.
Bug Report
In the following script, mypy correctly identifies a string formatting error in case B, which uses print
Cases E and F will both raise exceptions and are not caught.
To Reproduce
import logging
log = logging.getLogger(__name__)
a = "1"
b = "2"
print("print.passes A (%s) %s" % (a, b))
try:
print("print.fail B [mypy catches] (%s) %s" % (a, ))
except TypeError:
pass
log.critical("log.passes C (%s) %s" % (a, b))
log.critical("log.passes D (%s) %s" , a, b)
log.critical("log.fail E (%s) %s" , (a, b))
log.critical("log.fail F (%s) %s" , a)
Expected Behavior
I expected mypy to catch the string formatting error here.
I understand logging.log works differently and delays the interpolation. it would be nice if mypy could catch the number of arguments passed to logging to hint at a possible error or pass
Actual Behavior
mypy does not catch this
Your Environment
mypy-1.15.0
- 主要言語
- Python
- スター
- 20.6k
- フォーク
- 3.3k
- 平均マージ
- 1日 18時間
- マージ済み PR(30日)
- 54
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
python/mypy のほかの issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
bug topic-configuration topic-error-reporting
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
似ている issue
-
link-check link-check:sphinx-theme
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
OpenHands/extensions#626 · コメント 1 件 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
CSCfi/sd-search-api#39 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100