python / python/mypy

list.append seems to break return type checker

Ouverte
#8,734 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug priority-1-normal
Langage dominant
Python
Étoiles
20.6k
Forks
3.3k
Métriques de merge des PR
Métriques de PR en attente

Description

Hello, concerning the function below:

from typing import List
def foo() -> List[int]:
    listings = None
    if 2 != 2:
        listings = list()
        listings.append(1)
    return listings

I expected:
Incompatible return value type (got "Optional[List[int]]", expected "List[int]")

I got no error

This one does throw the expected error (same config):

from typing import List
def foo() -> List[int]:
    listings = None
    if 2 != 2:
        listings = [1]
    return listings

running mypy 0.770 on python 3.8

I would appreciate it if you could tell me if I am doing something wrong :)

Have a good day !

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez les deux snippets avec mypy 0.770 sous Python 3.8 et comparez le type inféré de listings avant le return. Suivez le traitement de list.append par rapport au littéral de liste, puis ajoutez un test de régression montrant que les deux cas produisent l’erreur attendue Optional[List[int]] pour la valeur de retour.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
tooling
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.