'Returns a \'canonical\' string representation of this format.
This is in the proper form of rTa where T is the single character data
type code, a is the optional part, and r is the repeat.  If repeat == 1
(the default) it is left out of this representation.'

@lazyproperty
def canonical(self):

    if (self.repeat == 1):
        repeat = ''
    else:
        repeat = str(self.repeat)
    return '{}{}{}'.format(repeat, self.format, self.option)
