Use pydantic instead of dicts
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- python
- Lĩnh vực
- backend-api-design, distributed-systems
Hướng nghiên cứu
Bắt đầu bằng cách xem xét các dict nội dung sự kiện hiện có và phần triển khai sự kiện ArtC trong commit 59136e4, sau đó xem lại cách các sự kiện được tạo và giải tuần tự. Xác định cách các model Pydantic được sinh ra và tính tương thích giữa các phiên bản sự kiện cần hoạt động trước khi thử thực hiện thay đổi; hoàn tất có nghĩa là thiết kế đã giải quyết việc giải tuần tự các phiên bản cũ và duy trì hoặc cố ý thay đổi cách sử dụng dựa trên dict.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Description
Instead of just storing the event contents as three anonymous dicts we should use pydantic to allow proper typed instance attributes. I tried it out with the ArtC event in https://github.com/magnusbaeck/eiffel-pythonlib/commit/59136e4188914ec8530ba658cef1b2e64f1ba185. Writing these classes by hand is rather boring so we should explore using github.com/koxudaxi/datamodel-code-generator to generate the code.
Motivation
Typed classes would enable linters and IDEs to help out when writing code that accesses events.
Exemplification
I'd expect any piece of code that creates events would be easier to write. Reasonable people may disagree, but pydantic-based classes can be initialized from a dict so you could continue working with dicts if you prefer (but the syntax would be slightly different so it would break backwards compatibility).
Benefits
See Motivation, above.
Possible Drawbacks
It's not clear how we should deal with different versions of the events. When producing events we can probably just use the latest known version, but what do we do when deserializing events of old versions? They might not be acceptable to the current version of the schema (which is what the pydantic model would contain). Should we version the event classes too, when necessary?
- Ngôn ngữ chính
- Python
- Star
- 8
- Fork
- 12
- 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
- Không 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 eiffel-community/eiffel-pythonlib
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
eiffel-community/eiffel-pythonlib#44 · 1 bình luận ·
-
Add jq filtering to subscriberĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
eiffel-community/eiffel-pythonlib#31 · 1 bình luận ·
-
on-hold
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
CHANGELOG.rst is outdatedĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
eiffel-community/eiffel-pythonlib#28 · 3 bình luận ·
Tất cả issue của eiffel-community/eiffel-pythonlib
Issue tương tự
-
tunneld on Windows: Wi-Fi devices are not discovered because uvicorn runs on a ProactorEventLoopĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
doronz88/pymobiledevice3#2051 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Remove DatacircleĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
collabnix/awesome-mcp-lists#230 ·
Maintainer thường phản hồi trong vòng 9 ngày
-
Groc schedules with out of range values pass config validation and fail later when the scheduler is builtCó thể đã có người làm @auraseb đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
autowarefoundation/autoware_carla_scenario#342 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
ianktoo/project-monitor#14 ·