REGR: mypyc 0.971 seems to not handle keyword-only arguments when unpickling (and shallow copying)
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
The following worked with 0.961: object's whose __init__ has a keyword-only argument can no longer be unpickled.
To Reproduce
test.py
from typing import Any
class Test:
def __init__(self, *, x: Any) -> None:
...
save_load.py
import pickle
from test import Test
test = Test(x=1)
with open("test.pickle", mode="w+b") as file:
pickle.dump(test, file)
with open("test.pickle", mode="r+b") as file:
pickle.load(file)
$ mypyc test.py
$ python save_load.py
Traceback (most recent call last):
File "save_load.py", line 9, in <module>
pickle.load(file)
TypeError: __init__() missing required keyword-only argument 'x'
Expected Behavior
No TypeError
Actual Behavior
TypeError
Your Environment
- Mypy version used: 0.971
- Python version used: 3.10.4
- Operating system and version: Fedora Silverblue
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 la riproduzione di mypyc con test.py e save_load.py usando Python 3.10.4, quindi confronta il comportamento generato con le versioni segnalate 0.961 e 0.971. Il lavoro è completato quando l’istanza serializzata di Test con l’argomento keyword-only x viene caricata correttamente senza TypeError, incluso il caso di copia superficiale menzionato nel titolo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100