Allow ignore to be on any line of multi-line statement
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 54
Description
Feature
Currently, comments can be added to a line to ignore either all errors (# type: ignore), or a specific error code (eg. # type: ignore[call-arg]). When a single statement spans multiple lines, the comment has to be added on the line that mypy "decides" is the one with the error (is it the first line of the expression, rather than first line of the statement?). In some cases, it would make sense to allow the comment to be on a different line of the same statement. I propose allowing it to be on any line of the statement, and therefore to apply to the whole statement.
Pitch
Sometimes it makes more sense for it to be another line, such as when importing something that mypy thinks does not exist, it makes sense to have the ignore on the same line as the attribute that is reported as not existing.
from typing import ( # ignore currently needs to be here
Union,
DoesNotExist, # type: ignore[error attr-defined]
)
Sometimes, a formatter like black changes a long line into a multiple line statement. The comment that was at the end of the line is moved to the end of the last line.
def foo(bar:int) -> str: ...
def baz() -> int: ...
a = ( # type: ignore[call-arg]
"something"
if baz() > 0 else
foo() # ignore currently needs to be here
) # formatters (eg. black) often put ignore here
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 les deux exemples multilignes et la reproduction liée de mypy-play ; suivez la manière dont mypy associe les commentaires type: ignore aux instructions. La tâche est terminée lorsqu’un ignore placé sur n’importe quelle ligne d’une même instruction multiligne supprime l’erreur pertinente de cette instruction, y compris les codes spécifiques, sans modifier le comportement des instructions distinctes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100