Type Checking for Class Row Factory
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
- 20/100
Hướng nghiên cứu
Trước tiên, hãy xem Issue #42 và PR #57, vì giải pháp được đề xuất được mô tả ở đó. Sau đó, kiểm tra comdb2.dataclasses.class_row_factory và so sánh ví dụ BaseRowFactoryClass với mối lo ngại về việc kiểm tra kiểu đã nêu. Hoàn tất nghĩa là xác nhận liệu PR có giải quyết đầy đủ việc xác thực các thuộc tính dataclass và đầu ra cơ sở dữ liệu hay không.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
As described in Issue #42 there was a proposed solution for having a Class Row Factory. Alongside the conversations happened there, there was a concern regarding type checking for the attributes of the class and output returned by the database. There doesn't seem to be a way to enforce type checking hence an extra __post_init__ method would be required within the class to enforce type checking. This can be overlooked by a lot of developers and can lead to a lot of type mismatches.
Solution
Define a Base class that our dataclasses can inherit. The Base class can have all the required methods for the validation etc.
The updated use of it can be described it here. The solution has been implemented on the PR #57
>>> from dataclasses import dataclass
>>> from comdb2.dataclasses.class_row_factory import BaseRowFactoryClass
...
>>> @dataclass
>>> class ABC(BaseRowFactoryClass):
>>> x: int
>>> y: int
...
>>> conn.row_factory = ClassRowFactory(ABC)
>>> row = conn.cursor().execute("select 1 as x, 2 as y").fetchone()
>>> print(row)
<>
>>> print(row.x)
- Ngôn ngữ chính
- Python
- Star
- 29
- Fork
- 28
- Merge trung bình
- 11 giờ 25 phút
- Pull request đã merge (30 ngày)
- 2
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 bloomberg/python-comdb2
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
bloomberg/python-comdb2#61 ·
-
Provide a "class" row factory Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
bloomberg/python-comdb2#42 · 14 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
bloomberg/python-comdb2#41 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
bloomberg/python-comdb2#36 · 1 bình luận ·
Tất cả issue của bloomberg/python-comdb2
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
stephrobert/dsoxlab#238 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
sublimehq/package_control#1780 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
nwg-piotr/nwg-displays#145 ·