Inconsistent behavior with Literals depending on the amount of elements it contains
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
This is an issue I ran into working on #9097.
Code adapted from this test.
Literals with one value:
from typing import List
from typing_extensions import Literal
lit1: Literal[1]
lit2: Literal[2]
arr2 = [lit1, lit2]
reveal_type(arr2)
➜ mypy git:(master) python3 -m mypy leba_misc/test2.py
leba_misc/test2.py:9: note: Revealed type is 'builtins.list[builtins.int*]'
Literals with multiple values:
from typing import List
from typing_extensions import Literal
lit1: Literal[1]
lit2: Literal[2, 3]
arr2 = [lit1, lit2]
reveal_type(arr2)
➜ mypy git:(master) python3 -m mypy leba_misc/test2.py
leba_misc/test2.py:9: note: Revealed type is 'builtins.list[Union[Literal[1], Literal[2], Literal[3]]]'
On Python 3.7 and mypy 0.790.
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
Inizia eseguendo con mypy i due snippet di riproduzione dell’issue e confrontali con test-data/unit/check-literal.test intorno al caso collegato. Traccia il comportamento di revealed-type nell’inferenza di liste che coinvolge valori Literal, quindi aggiungi o aggiorna un test di regressione in modo che i casi con un valore e con più valori si comportino in modo coerente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100