Incorrect narrowing of Enum.Flag
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 65/100
Piste de recherche
Commencez par reproduire l’exemple signalé de narrowing de Enum.Flag avec l’extrait Python et la configuration de mypy fournis. Suivez le narrowing effectué après les comparaisons avec Programs.NONE et Programs.P2, puis ajoutez un test de régression pour des vérifications d’appartenance telles que Programs.P1 in programs. Le travail est considéré comme terminé lorsque l’exemple ne produit aucun avertissement concernant un opérande non pris en charge.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug Report
Incorrect narrowing of Enum.Flag
To Reproduce
from enum import Flag, auto
from pathlib import Path
from tempfile import NamedTemporaryFile
def p1(path: str) -> None: ...
def p2(path: str) -> None: ...
def p2_fast(data: str) -> str: ... # type: ignore[empty-body]
def p3(path: str) -> None: ...
class Programs(Flag):
NONE = 0
P1 = auto()
P2 = auto()
P3 = auto()
ALL = P1 | P2 | P3
def f(data: str, programs: Programs) -> str:
if programs == Programs.NONE:
return data
if programs == Programs.P2:
return p2_fast(data)
with NamedTemporaryFile("w", encoding="utf-8", delete=False) as tmp:
tmp.write(data)
tmp.close()
if Programs.P1 in programs:
p1(tmp.name)
if Programs.P3 in programs:
p3(tmp.name)
if Programs.P2 in programs:
p2(tmp.name)
return Path(tmp.name).read_text("utf-8")
Expected Behavior
no warning
Actual Behavior
main.py:32: error: Unsupported operand types for in ("Programs" and "Literal[Programs.P1, Programs.P3, Programs.ALL]") [operator]
Your Environment
- Mypy version used: 2.3.1
- Mypy command-line flags: no
- Mypy configuration options from
mypy.ini(and other config files): no - Python version used: 3.14
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Merge moyen
- 1 j 2 h
- PR mergées (30 j)
- 64
Préparer son environnement
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.
Autres issues de python/mypy
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
python/mypy#21658 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug topic-configuration topic-error-reporting
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
python/mypy#21376 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug topic-attrs
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
python/mypy#20818 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de python/mypy
Issues similaires
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
kristofdegrave/homeassistant-smart-charging#1413 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
nasa/earthdata-varinfo#113 ·
-
curriculum documentation quality
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
githubnext/gh-aw-workshop#3849 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour