It is awkward to check whether an obj is of a particular heap type (defined in an extension module)
Đang mở
Chưa có ai nhận issue này.
topic-C-API
type-feature
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 35.9k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
I wanted to check whether an object is of type array and ended up doing this:
PyObject *exc = PyErr_GetRaisedException();
PyObject *module = PyType_GetModuleByDef(Py_TYPE(lhs), &arraymodule);
if (module == NULL) {
if (!PyErr_Occurred() || PyErr_ExceptionMatches(PyExc_TypeError)) {
/* lhs is not an array instance - ignore the TypeError (if any) */
PyErr_SetRaisedException(exc);
return 0;
}
else {
_PyErr_ChainExceptions1(exc);
return -1;
}
}
PyErr_SetRaisedException(exc);
return array_Check(lhs, get_array_state(module));
CC @ericsnowcurrently @encukou
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.
Hướng nghiên cứu
Bắt đầu với các lệnh gọi C API được nêu trong issue, đặc biệt là PyType_GetModuleByDef và ví dụ array_Check, để hiểu đường dẫn kiểm tra kiểu hiện tại. Xem xét các quy ước liên quan của CPython C API và xác định một cách cụ thể, có thể áp dụng rộng rãi để kiểm tra heap type; được coi là hoàn tất khi đã thống nhất được định hướng API cùng với tài liệu và các bài kiểm thử phù hợp.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- c, python
- Lĩnh vực
- api
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100