Skip to content

Commit

Permalink
prevent _FIELDS_INFO_ATTRIBUTE_READ from being mutated
Browse files Browse the repository at this point in the history
  • Loading branch information
BurnzZ committed Mar 1, 2023
1 parent 7e39e4d commit e76d42e
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions web_poet/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,18 @@ def __init_subclass__(cls, **kwargs):
)
if base_class_fields or this_class_fields:
enabled = {**base_class_fields["enabled"], **this_class_fields["enabled"]}
disabled = {**this_class_fields["disabled"]}
for name, info in this_class_fields["disabled"].items():
for name in this_class_fields["disabled"]:
if name in enabled:
del enabled[name]
disabled[name] = info

disabled = {
**base_class_fields["disabled"],
**this_class_fields["disabled"],
}
for name in base_class_fields["disabled"]:
if name in enabled:
del disabled[name]

setattr(
cls,
_FIELDS_INFO_ATTRIBUTE_READ,
Expand Down Expand Up @@ -157,7 +164,8 @@ def get_fields_dict(
fields_info = getattr(
cls_or_instance, _FIELDS_INFO_ATTRIBUTE_READ, _fields_template()
)
fields_dict = fields_info["enabled"]
fields_dict = {}
fields_dict.update(fields_info["enabled"])
if include_disabled:
fields_dict.update(fields_info["disabled"])
return fields_dict
Expand Down

0 comments on commit e76d42e

Please sign in to comment.