Type hint asyncio.Process streams (stdin, stdout, stderr) when created with values other than default None
オープン
まだ誰も着手していません。
stubs: false positive
- 主要言語
- Python
- スター
- 5.1k
- フォーク
- 2.1k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 82
説明
Is it possible to update asyncio stub files so that asyncio.Process.{stdin,stdout,stderr} are resolved as non-None by mypy?
Example:
from asyncio import create_subprocess_exec
from asyncio.subprocess import PIPE
async def main() -> None:
proc = await create_subprocess_exec('/usr/bin/ls', stdout=PIPE)
async for line in proc.stdout:
print(line)
Typing error reported by mypy (desired behaviour is no error):
error: Item "None" of "StreamReader | None" has no attribute "__aiter__" (not async iterable) [union-attr]
Current asyncio.Process declaration in typeshed/stdlib/asyncio/subprocess.pyi:
class Process:
stdin: streams.StreamWriter | None
stdout: streams.StreamReader | None
stderr: streams.StreamReader | None
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
typeshed/stdlib/asyncio/subprocess.pyi の Process 宣言から始め、create_subprocess_exec で使用される asyncio のサブプロセス宣言を追跡します。issue の例にある mypy エラーを再現し、その後、PIPE を渡すことで該当するストリーム属性が非オプショナルになることを、デフォルトの None の動作を変更せずに確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- developer-experience
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 42/100