Skip to content

Commit e76d42e

Browse files
committed
prevent _FIELDS_INFO_ATTRIBUTE_READ from being mutated
1 parent 7e39e4d commit e76d42e

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

web_poet/fields.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,18 @@ def __init_subclass__(cls, **kwargs):
5454
)
5555
if base_class_fields or this_class_fields:
5656
enabled = {**base_class_fields["enabled"], **this_class_fields["enabled"]}
57-
disabled = {**this_class_fields["disabled"]}
58-
for name, info in this_class_fields["disabled"].items():
57+
for name in this_class_fields["disabled"]:
5958
if name in enabled:
6059
del enabled[name]
61-
disabled[name] = info
60+
61+
disabled = {
62+
**base_class_fields["disabled"],
63+
**this_class_fields["disabled"],
64+
}
65+
for name in base_class_fields["disabled"]:
66+
if name in enabled:
67+
del disabled[name]
68+
6269
setattr(
6370
cls,
6471
_FIELDS_INFO_ATTRIBUTE_READ,
@@ -157,7 +164,8 @@ def get_fields_dict(
157164
fields_info = getattr(
158165
cls_or_instance, _FIELDS_INFO_ATTRIBUTE_READ, _fields_template()
159166
)
160-
fields_dict = fields_info["enabled"]
167+
fields_dict = {}
168+
fields_dict.update(fields_info["enabled"])
161169
if include_disabled:
162170
fields_dict.update(fields_info["disabled"])
163171
return fields_dict

0 commit comments

Comments
 (0)