Nested message with repeated field not in to_json when mutated after initialization
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- python
- Lĩnh vực
- backend-api-design
Hướng nghiên cứu
Bắt đầu bằng cách chạy bản tái hiện nested-message của issue trên betterproto 2.0.0b6 và kiểm tra đường dẫn to_dict cho include_default_values=False. Được xem là hoàn tất khi một trường repeated lồng nhau đã bị thay đổi xuất hiện trong dict được trả về, trong khi các trường mặc định không thay đổi vẫn bị bỏ qua; thêm kiểm thử hồi quy cho cả hai trường hợp nếu xác định được vị trí test trong repository.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Possibly related to #199
Given a message with a nested message field containing a repeated field, if the field is mutated (eg. via list.append) after initialization, to_dict will not include it.
Reproduction Steps
Given a proto schema like this
syntax = "proto3";
message RootMessage {
NestedMessage nested = 1;
}
message NestedMessage {
repeated string content = 1;
}
Running the following script
message = RootMessage()
message.nested.content.append("test-content")
print("Including default values: True")
pprint(message.to_dict(include_default_values=True))
print("Including default values: False")
pprint(message.to_dict(include_default_values=False))
will result in:
Including default values: True
{'nested': {'content': ['test-content']}}
Including default values: False
{}
Expected Results
I would expect the content field of the nested message to appear in the returned dict also when include_default_values is set to False, as its content was mutated and it's no longer the default value.
Actual Results
to_dict returns an empty dict
System Information
libprotoc 3.21.6
Python 3.10.13
Name: betterproto
Version: 2.0.0b6
Summary: A better Protobuf / gRPC generator & library
Home-page: https://github.com/danielgtaylor/python-betterproto
Author: Daniel G. Taylor
Author-email: [email protected]
License: MIT
Location: /home/marco/.local/share/rtx/installs/python/3.10.13/lib/python3.10/site-packages
Requires: grpclib, python-dateutil
Required-by:
Checklist
- I have searched the issues for duplicates.
- I have shown the entire traceback, if possible.
- I have verified this issue occurs on the latest prelease of betterproto which can be installed using
pip install -U --pre betterproto, if possible.
- Ngôn ngữ chính
- Python
- Star
- 1.8k
- Fork
- 235
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
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 danielgtaylor/python-betterproto
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
-
bug investigation needed
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 42/100
-
bug investigation needed
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
-
bug investigation needed
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
danielgtaylor/python-betterproto#676 · 3 bình luận ·
Tất cả issue của danielgtaylor/python-betterproto
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
CLIMADA-project/climada_python#1337 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
tail without reverseĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
8go/matrix-commander#233 ·
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
-
documentation enhancement priority:high size:M
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Validate non-divisible effective batch sizes in the Unsloth LoRA backendCó thể đã có người làm @debesh-biswas đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100