Source code for graphdot.util.pretty_tuple

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from collections import namedtuple
from graphdot.codegen.template import Template


[docs]def pretty_tuple(typename, fields): class PrettyTuple(namedtuple(typename, fields)): def __repr__(self): out = [] for f in fields: if hasattr(getattr(self, f), '__iter__'): out.append( Template( '${field} : ${typename}\n\t${lines\n\t}' ).render( field=f, typename=type(getattr(self, f)).__name__, lines=repr(getattr(self, f)).split('\n') ) ) else: out.append(f'{f} : {repr(getattr(self, f))}') return '\n'.join(out) PrettyTuple.__name__ = typename return PrettyTuple