Source code for eztable.row

from six import string_types


[docs]class TableRow(tuple): """Table row tuple. Also has dict-like behaviour. Attribute access acts somewhat like a namedtuple, but doesn't validate its schema, so arbitrary column names are allowed, even if they can't be accessed as attributes. """ def __new__(cls, row, schema): return tuple.__new__(cls, row) def __init__(self, row, schema): self.schema = schema def __getattr__(self, name): try: i = self.schema[name] except KeyError: raise AttributeError(name) else: return tuple.__getitem__(self, i) def __getitem__(self, k): if isinstance(k, string_types): try: return self.__getattr__(k) except AttributeError: raise KeyError(k) else: return tuple.__getitem__(self, k)
[docs] def keys(self): return tuple(self.schema.keys())
[docs] def values(self): return list(self)
[docs] def items(self): return zip(self.schema, self)