python / python/mypy

REGR: mypyc 0.971 seems to not handle keyword-only arguments when unpickling (and shallow copying)

Offen
#13,227 6 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug topic-mypyc
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.