# scopes.shape """really abstract basic data shape definitions""" class Record: headFields = [] # to be defined by subclass def __init__(self, *headValues, data=None, **kw): self.head = {} for k, v in kw.items(): if k in self.headFields: self.head[k] = kw.pop(k) for ix, hv in enumerate(headValues): self.head[self.headFields[ix]] = hv for k in self.headFields: if self.head.get(k) is None: self.head[k] = '' setattr(self, k, self.head[k]) self.data = data or {}