'Return tuple of all formats for the specified book. If verify_formats
is True, verifies that the files exist on disk.'

@read_api
def formats(self, book_id, verify_formats=True):

    ans = self.field_for(u'formats', book_id)
    if (verify_formats and ans):
        try:
            path = self._field_for(u'path', book_id).replace(u'/', os.sep)
        except:
            return ()
        def verify(fmt):
            try:
                name = self.fields[u'formats'].format_fname(book_id, fmt)
            except:
                return False
            return self.backend.has_format(book_id, fmt, name, path)
        ans = tuple((x for x in ans if verify(x)))
    return ans
