def __repr__(self):
     form = ('<BackupReport id:{0} state:{1} ok:{2} '
             'started:{3} duration:{4} #errors:{5} bytes:{6}>')
     hours, minutes, seconds = duration.tuple(self.duration)
     pretty_duration = '{0}:{1:02}:{2:02}'.format(hours, minutes, seconds)
     return form.format(self.id, self.state, self.ok,
                        self.started.isoformat(), pretty_duration,
                        len(self.errors), self.bytes_stored)
 def __repr__(self):
     form = ('<RestoreReport id:{0} state:{1} ok:{2} started:{3} '
             'duration:{4} #errors:{5} bytes:{6}>')
     hours, minutes, seconds = duration.tuple(self.duration)
     return form.format(self.id, self.state, self.ok,
                        self.started.isoformat(),
                        '{0}:{1:02}:{2:02}'.format(hours, minutes, seconds),
                        len(self.errors), self.bytes_restored)
 def test_tuple_works(self):
     cases = (  # value, hours, minutes, seconds
         (0, 0, 0, 0),
         (1, 0, 0, 1),
         (60, 0, 1, 0),
         (3600, 1, 0, 0),
         (86399, 23, 59, 59),
         (3686400, 1024, 0, 0)
     )
     for case in cases:
         self.assertEqual(duration.tuple(case[0]), tuple(case[1:]))