"""NotebookNode - adding attribute access to dicts""" from IPython.utils.ipstruct import Struct class NotebookNode(Struct): """A dict-like node with attribute-access""" pass def from_dict(d): """Convert dict to dict-like NotebookNode Recursively converts any dict in the container to a NotebookNode """ if isinstance(d, dict): return NotebookNode({k:from_dict(v) for k,v in d.items()}) elif isinstance(d, (tuple, list)): return [from_dict(i) for i in d] else: return d