def __setitem__(self, name, vessel): try: attrs = vessel.nodespaces["__attrs__"] except KeyError: raise ValueError(u"Attributes need to be set.") nextvessel = AttributedNode() nextvessel.__name__ = name nextvessel.attribute_access_for_attrs = False principal = self.principal_factory(nextvessel, attraliaser=self.principal_attraliaser) principal.__name__ = name principal.__parent__ = self # XXX: we could cache here, given that we are based on a LazyNode or # similar for key, val in attrs.iteritems(): principal.attrs[key] = val self.context[name] = nextvessel