cloudpipe / cloudpipe/cloudpickle
Cloudpickle and data classes do not play well together
- Dominant language
- Python
- Stars
- 1.9k
- Forks
- 195
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 1
Description
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=,default=,default_factory=,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD), Field(name='end',type=,default=,default_factory=,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD))
imported cloudpickle
(Field(name='start',type=,default=,default_factory=,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD), Field(name='end',type=,default=,default_factory=,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD))
dumped with cloudpickle
(Field(name='start',type=,default=,default_factory=,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=_FIELD), Field(name='end',type=,default=,default_factory=,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
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.