Tuple elements remain optional after an any() None check
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 54/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Ambito
- backend, developer-experience
Direzione di ricerca
Start by reproducing the report with the provided Python function and confirm the returned tuple remains optional after the any() guard. Then trace Pyrefly's handling of generator expressions, any(), and type narrowing to find where the guard's effect is lost. Done means the return is accepted as tuple[int, str] while existing narrowing behavior remains intact.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the Bug
After checking that no tuple element is None, Pyrefly still treats the tuple elements as optional:
def pair(
first: int | None,
second: str | None,
) -> tuple[int, str]:
values = (first, second)
if any(value is None for value in values):
raise ValueError("missing value")
return values
I expected Pyrefly to infer values as tuple[int, str] after the guard. Instead, it reports:
Returned type `tuple[int | None, str | None]` is not assignable to declared return type `tuple[int, str]` [bad-return]
Environment: macOS 27.0.1, Pyrefly 1.4.0, Python 3.15.2 (CLI).
- Lingua principale
- Rust
- Stelle
- 7.2k
- Fork
- 578
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi 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.
Altre issue di facebook/pyrefly
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
-
dataframe
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
-
False positive missing-super-call on abstract or protocol method overrides with placeholder bodies in .py filesForse già presa @Aayushyaash l’ha presa oggi. Apertatypechecking
-
False positive missing-super-call when parent method is abstract or protocol method without runtime implementationForse già presa @Aayushyaash l’ha presa oggi. Apertatypechecking
-
quansight
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
Tutte le issue di facebook/pyrefly
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
mozilla-services/syncstorage-rs#2715 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
physicsdolphin/nv-uefi-unlocker#53 · 4 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
area/desktop-shell
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
yantrikos/yantrik-os#1012 ·
I maintainer di solito rispondono entro 1 giorno