Wrong truthy-function with a constrained TypeVar
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
Bug Report
from typing import Callable, Collection, TypeVar
T = TypeVar("T", Callable[[], int], Collection[int])
def test(x: T) -> bool:
if not x:
return False
return True
https://mypy-play.net/?mypy=latest&python=3.11&gist=ab304abd8323804aba46fb9227d6fbb2
Expected Behavior
The if condition is used for both functions and collections. It's used to filter out empty collections. This should type check without errors.
Actual Behavior
mypy returns an error which assumes that x can only be a function:
truthy_function.py:6: error: Function "x" could always be true in boolean context [truthy-function]
Your Environment
- Mypy version used: 1.4.1 (compiled: yes)
- Python version used: 3.10.11
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci l’esempio nella configurazione mypy-play collegata con Python 3.11 e analizza la diagnostica [truthy-function] segnalata in truthy_function.py:6. Traccia la gestione dei valori TypeVar vincolati nei contesti booleani, quindi verifica che l’esempio Callable/Collection venga controllato dal punto di vista dei tipi senza l’avviso errato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100