Cloudpickle and data classes do not play well together
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 42/100
Hướng nghiên cứu
Bắt đầu bằng cách chạy bản tái hiện dataclass/cloudpickle trong issue và lần theo đường dẫn tải để tái tạo lớp. Công việc được hoàn tất khi giá trị được khôi phục vẫn giữ các trường dataclass của nó và một bài kiểm thử hồi quy bao phủ trường hợp đã được minh họa.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- Python
- Star
- 1.9k
- Fork
- 197
- Merge trung bình
- 1 ngày 10 giờ
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của cloudpipe/cloudpickle
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
cloudpipe/cloudpickle#593 · 1 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
cloudpipe/cloudpickle#595 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
cloudpipe/cloudpickle#592 · 2 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
cloudpipe/cloudpickle#589 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
cloudpipe/cloudpickle#587 ·
Tất cả issue của cloudpipe/cloudpickle
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
gradio-app/gradio#13895 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
build-error
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
spack/spack-packages#6713 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Use issue templatesĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
ActivityWatch/activitywatch#1464 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: The ckg tool drops the return type of every decorated Python method in class search resultsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
bytedance/trae-agent#483 ·
Maintainer thường phản hồi trong vòng 1 ngày