def __init__(self, init_val=(), encoding=UTF8): DataContainer.__init__(self, encoding=encoding) OrderedDict.__init__(self) if isinstance(init_val, KeyValueContainer): self.update(init_val) elif isinstance(init_val, dict): # we lose compatibility with other ordered dict types this way raise TypeError('Undefined order, cannot get items from dict') else: for item in init_val: try: key, val = item except TypeError: raise TypeError(ERR_MSG % init_val) if key in self: raise TypeError(ERR_MSG % init_val) if not isinstance(val, (list, tuple)): raise TypeError(ERR_MSG % init_val) for sub_val in val: if not isinstance(sub_val, (basestring, DataToken)): raise TypeError(ERR_MSG % init_val) self[key] = val