InputObjectType.__init_sublcass_with_meta__ skips Meta.fields attribute
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 55/100
Hướng nghiên cứu
Bắt đầu từ InputObjectType.init_subclass_with_meta và so sánh cách xử lý của nó với tùy chọn Meta.fields đã được tài liệu hóa. Xem lại graphene/tests/issues/test_720.py để kiểm tra hành vi được đề cập. Công việc được hoàn tất khi Meta.fields được giữ nguyên và có một bài kiểm thử chứng minh rằng việc tạo lớp con của InputObjectType không loại bỏ các trường đó.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
In InputObjectType.__init_subclass_with_meta__, the fields of the Meta class (passed as an options arg) are never referenced. This in effect just skips them completely wich stands in contradiction to the docstring.
Meta class options (optional):
...
fields (Dict[str, graphene.InputField]): Dictionary of field name to InputField. Not
recommended to use (prefer class attributes).
InputObjectType has to be subclassed and __init_subclass_with_meta__ has to be extended for this feature to work, like in graphene.tests.issues.test_720.
If this is accepted I can do a PR for this along the lines:
@classmethod
+ def __init_subclass_with_meta__(cls, container=None, _meta=None, fields=None **options):
- def __init_subclass_with_meta__(cls, container=None, _meta=None, **options):
if not _meta:
_meta = InputObjectTypeOptions(cls)
+ if not fields:
+ fields = {}
- fields = {}
for base in reversed(cls.__mro__):
fields.update(yank_fields_from_attrs(base.__dict__, _as=InputField))
if _meta.fields:
_meta.fields.update(fields)
else:
_meta.fields = fields
if container is None:
container = type(cls.__name__, (InputObjectTypeContainer, cls), {})
_meta.container = container
super(InputObjectType, cls).__init_subclass_with_meta__(_meta=_meta, **options)
- Ngôn ngữ chính
- Python
- Star
- 8.2k
- Fork
- 822
- 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
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: 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 graphql-python/graphene
-
Tutorial mistakesĐang mở🐛 bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
graphql-python/graphene#1389 · 5 bình luận · 2 reaction ·
-
✨ enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
graphql-python/graphene#1609 ·
-
Support OneOf input object typesĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 68/100
graphql-python/graphene#1606 ·
-
Python 3.14 supportĐang mở✨ enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 38/100
graphql-python/graphene#1601 · 2 bình luận ·
-
✨ enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
graphql-python/graphene#1600 ·
Tất cả issue của graphql-python/graphene
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 70/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
topoteretes/cognee#5773 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
MiKTeX: a failed build reports no errors because texify --quiet switches the log to file:line: styleĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
SublimeText/LaTeXTools#1718 ·