REGR: mypyc 0.971 seems to not handle keyword-only arguments when unpickling (and shallow copying)
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die mypyc-Reproduktion mit test.py und save_load.py unter Python 3.10.4 auszuführen, und vergleiche dann das erzeugte Verhalten mit den gemeldeten Versionen 0.961 und 0.971. Als erledigt gilt dies, wenn die serialisierte Test-Instanz mit dem keyword-only-Argument x erfolgreich geladen wird, ohne TypeError, einschließlich des im Titel erwähnten Falls einer flachen Kopie.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100