[docs]def convert_to_attribute_dict(obj):
if isinstance(obj, dict):
for key, value in obj.items():
obj[key] = convert_to_attribute_dict(value)
return AttributeDict(obj)
elif isinstance(obj, list):
return [convert_to_attribute_dict(item) for item in obj]
else:
return obj
[docs]class AttributeDict(dict):
def __getattr__(self, item):
try:
return self[item]
except KeyError:
raise AttributeError(
f"{item} is not a valid attribute. Dict contains {str(self)}."
) from None
def __setattr__(self, key, value):
self[key] = value
def __delattr__(self, item):
try:
del self[item]
except KeyError:
raise AttributeError(
f"{item} is not a valid attribute. Dict contains {str(self)}."
) from None