Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
import vtk import numpy as np
def _max_length(strings): if not strings: return 0 return max(len(s) for s in strings)
def _fields_repr(self, indent=4): indent_str = ' '*indent field_names = list(self._fields) field_names.sort() fill_length = _max_length(field_names) + 1
s = type(self).__name__ + "(\n" for field in field_names: value = getattr(self, field) value_repr = _repr(value, indent + 4) s += "%s%s%s= %s,\n" % (indent_str, field, ' '*(fill_length-len(field)), value_repr) s += "%s)" % indent_str return s
def _dict_repr(self, indent=4): indent_str = ' '*indent field_names = self.keys() field_names.sort() fill_length = _max_length(field_names) + 3
s = "{\n" for field in field_names: value = self[field] value_repr = _repr(value, indent + 4) s += "%s'%s'%s: %s,\n" % (indent_str, field, ' '*(fill_length-len(field)-2), value_repr) s += "%s}" % indent_str return s
def _list_repr(self, indent=4): indent_str = ' '*indent return "[\n" + indent_str + (",\n" + indent_str).join( [_repr(item, indent + 4) for item in self]) + "\n" + indent_str + "]"
def _transform_repr(mat, indent=4): mat = np.array([[mat.GetMatrix().GetElement(r, c) for c in xrange(4)] for r in xrange(4)]) indent_str = ' '*indent return '\n' + indent_str + repr(mat)
def _repr(self, indent=4): if isinstance(self, FieldContainer): return _fields_repr(self, indent) if isinstance(self, vtk.vtkTransform): return _transform_repr(self, indent) if isinstance(self, dict): return _dict_repr(self, indent) if isinstance(self, list) and len(self) and not isinstance(self[0], (int, float)): return _list_repr(self, indent) else: return repr(self)
class FieldContainer(object):
__repr__ = _repr
def __init__(self, **kwargs): self._set_fields(**kwargs)
def __iter__(self): for name in self._fields: yield name, getattr(self, name)
def _add_fields(self, **fields): if not hasattr(self, '_fields'): object.__setattr__(self, '_fields', fields.keys()) else: object.__setattr__(self, '_fields', list(set(self._fields + fields.keys()))) for name, value in fields.iteritems(): object.__setattr__(self, name, value)
def _set_fields(self, **fields): if not hasattr(self, '_fields'): self._add_fields(**fields) else: for name, value in fields.iteritems(): self.__setattr__(name, value)
def __getitem__(self, name): return getattr(self, name)
def __setitem__(self, name, value): setattr(self, name, value)
def __len__(self): return len(self._fields)
def __contains__(self, name): return name in self._fields
def __setattr__(self, name, value): if hasattr(self, name): object.__setattr__(self, name, value) else: raise AttributeError("'%s' object has no attribute '%s'" % (type(self).__name__, name))
def __delattr__(self, name): if hasattr(self, name): del self._fields[self._fields.index(name)] object.__delattr__(self, name) else: raise AttributeError("'%s' object has no attribute '%s'" % (type(self).__name__, name)) |