def __setitem__(self, key: str, item) -> None: if not isinstance(key, str): raise KeyError if item is None: self._remove_item(key) elif not isinstance(item, Node): if key in self._content: self._kill += [self._content[key]] import data_formats self._content[key] = data_formats.available_types[type(item)]( self, "{:s}.leaf".format(key), Meta.create_meta(self.top_level_meta, self.path / "{:s}.leaf/".format(key))) self._content[key].data = item else: if key not in self._content: self._content[key] = item else: self._kill += [self._content[key]] self._content[key] = item
def create_branch(parent: "Branch", name: str) -> "Branch": return Branch( parent, name, {}, Meta.create_meta(parent.top_level_meta, parent.path / name))