def report_text(self, writer):
    writer.write('---------- onnx coverage: ----------\n')
    writer.write('Operators (passed/loaded/total): {}/{}/{}\n'.format(len(self.buckets['passed']), len(self.buckets['loaded']), len(_all_schemas)))
    writer.write('------------------------------------\n')
    rows = []
    for op_cov in self.buckets['passed'].values():
        covered_attrs = ['{}: {}'.format(attr_cov.name, len(attr_cov.values)) for attr_cov in op_cov.attr_coverages.values()]
        uncovered_attrs = ['{}: 0'.format(attr) for attr in op_cov.schema.attributes if (attr not in op_cov.attr_coverages)]
        attrs = (sorted(covered_attrs) + sorted(uncovered_attrs))
        if attrs:
            attrs_column = os.linesep.join(attrs)
        else:
            attrs_column = 'No attributes'
        rows.append([op_cov.op_type, attrs_column])
    writer.write(tabulate(rows, headers=['Operator', 'Attributes\n(name: #values)'], tablefmt='plain'))
def report_text(self, writer):
    writer.write('---------- onnx coverage: ----------\n')
    writer.write('Operators (passed/loaded/total): {}/{}/{}\n'.format(len(self.buckets['passed']), len(self.buckets['loaded']), len(_all_schemas)))
    writer.write('------------------------------------\n')
    rows = []
    for op_cov in self.buckets['passed'].values():
        covered_attrs = ['{}: {}'.format(attr_cov.name, len(attr_cov.values)) for attr_cov in op_cov.attr_coverages.values()]
        uncovered_attrs = ['{}: 0'.format(attr) for attr in op_cov.schema.attributes if (attr not in op_cov.attr_coverages)]
        attrs = (sorted(covered_attrs) + sorted(uncovered_attrs))
        if attrs:
            attrs_column = os.linesep.join(attrs)
        else:
            attrs_column = 'No attributes'
        rows.append([op_cov.op_type, attrs_column])
    writer.write(tabulate(rows, headers=['Operator', 'Attributes\n(name: #values)'], tablefmt='plain'))