| class DotDict(dict): | |
| """ | |
| Dictionary subclass that supports dot notation access. | |
| You can wrap any dictionary using DotDict instead. | |
| """ | |
| def __init__(self, data): | |
| super().__init__(data) | |
| for key, value in data.items(): | |
| if isinstance(value, dict): | |
| self[key] = DotDict(value) | |
| else: | |
| self[key] = value | |
| def __getattr__(self, attr): | |
| value = self.get(attr) | |
| if isinstance(value, dict): | |
| return DotDict(value) | |
| return value | |
| def __setattr__(self, key, value): | |
| self[key] = value |