sys.stdout.buffer has incorrect type?
オープン
まだ誰も着手していません。
topic: io
- 主要言語
- Python
- スター
- 5.1k
- フォーク
- 2.1k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 82
説明
mypy test.py
test.py:10: error: Argument 1 to "test" has incompatible type "BinaryIO"; expected "BufferedIOBase"
cat test.py
import io
import sys
class C(io.BufferedIOBase):
pass
def test(c: io.BufferedIOBase):
assert isinstance(c, io.BufferedIOBase)
test(sys.stdout.buffer)
test(C())
python3 test.py
As we can see the isinstance check passes but mypy asserts
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、test.py の再現コードに対して mypy コマンドを実行し、sys.stdout.buffer エントリポイントに対応する Python 標準ライブラリのスタブを調べます。宣言された型を実行時の isinstance の結果と比較し、その後、例に対して mypy を再実行して修正後の動作を確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- tooling
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100