'Returns a \'canonical\' string representation of this format.
This is in the proper form of Tw.d where T is the single character data
type code, w is the width in characters for this field, and d is the
number of digits after the decimal place (for format codes \'E\', \'F\',
and \'D\' only).'

@lazyproperty
def canonical(self):

    if (self.format in ('E', 'F', 'D')):
        return '{}{}.{}'.format(self.format, self.width, self.precision)
    return '{}{}'.format(self.format, self.width)
