Type hint asyncio.Process streams (stdin, stdout, stderr) when created with values other than default None
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 5.1k
- Forks
- 2.1k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 82
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la déclaration de Process dans typeshed/stdlib/asyncio/subprocess.pyi et suivez les déclarations de sous-processus asyncio utilisées par create_subprocess_exec. Reproduisez l’erreur mypy de l’exemple de l’issue, puis vérifiez que le fait de passer PIPE rend les attributs de flux concernés non optionnels sans modifier le comportement par défaut de None.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- developer-experience
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100