Cloudpickle and data classes do not play well together
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 42/100
Direzione di ricerca
Inizia eseguendo la riproduzione dataclass/cloudpickle dell'issue e segui il percorso di caricamento che ricostruisce la classe. Il lavoro è completo quando il valore ripristinato conserva i suoi campi dataclass e un test di regressione copre il caso dimostrato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When restoring a value of a dataclass with cloudpickle, it breaks:
Example
import dataclasses
from dataclasses import dataclass
@dataclass
class Range:
start: int
end: int
v = Range(1, 2)
print("defined")
print(dataclasses.fields(v))
import cloudpickle
print("imported cloudpickle")
print(dataclasses.fields(v))
v_dumped = cloudpickle.dumps(v)
print("dumped with cloudpickle")
print(dataclasses.fields(v))
vv = cloudpickle.loads(v_dumped)
print("loaded with cloudpickle")
print(dataclasses.fields(v))
print("restored value")
print(dataclasses.fields(vv))
Leads to
defined
(Field(name='start',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object at 0x109634ca0>,default_factory=<dataclasses._MISSING_TYPE object at 0x109634ca0>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD), Field(name='end',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object at 0x109634ca0>,default_factory=<dataclasses._MISSING_TYPE object at 0x109634ca0>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD))
imported cloudpickle
(Field(name='start',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object at 0x109634ca0>,default_factory=<dataclasses._MISSING_TYPE object at 0x109634ca0>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD), Field(name='end',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object at 0x109634ca0>,default_factory=<dataclasses._MISSING_TYPE object at 0x109634ca0>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD))
dumped with cloudpickle
(Field(name='start',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object at 0x109634ca0>,default_factory=<dataclasses._MISSING_TYPE object at 0x109634ca0>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD), Field(name='end',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object at 0x109634ca0>,default_factory=<dataclasses._MISSING_TYPE object at 0x109634ca0>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD))
loaded with cloudpickle
()
restored value
()
I.e. as soon as we restore, the type of the data class is destroyed
- Lingua principale
- Python
- Stelle
- 1.9k
- Fork
- 197
- Merge medio
- 1g 10h
- PR unite (30g)
- 1
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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 cloudpipe/cloudpickle
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cloudpipe/cloudpickle#593 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
cloudpipe/cloudpickle#595 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
cloudpipe/cloudpickle#592 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
cloudpipe/cloudpickle#589 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
cloudpipe/cloudpickle#587 ·
Tutte le issue di cloudpipe/cloudpickle
Issue simili
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
kristofdegrave/homeassistant-smart-charging#1413 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
nasa/earthdata-varinfo#113 ·
-
curriculum documentation quality
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
githubnext/gh-aw-workshop#3849 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno