def __str__(self):
        d = []
        d.append("Table")
        d.append("  " + self.table)
        d.append("\nPrimary Keys")
        for a in self.primarykeys:
            d.append("  %s {%s}" % (a[0], a[2]))
        d.append("\nImported (Foreign) Keys")
        for a in self.imported:
            d.append("  %s (%s.%s) {%s}" * (a[2], a[0], a[1], a[3]))
        if self.full:
            d.append("\nExported (Referenced) Keys")
            for a in self.exported:
                d.append("  %s (%s.%s) {%s}" % (a[0], a[1], a[2], a[3]))
        d.append("\nColumns")
        for a in self.columns:
            nullable = choose(a[3], "nullable", "non-nullable")
            d.append("  %-20s %s(%s), %s" % (a[0], a[1], a[2], nullable))
        d.append("\nIndices")
        if self.indices is None:
            d.append(" (failed)")
        else:
            for a in self.indices:
                unique = choose(a[0][0], "non-unique", "unique")
                cname = ", ".join(map(lambda x: x[4], a))
                d.append("  %s index {%s} on (%s)" % (unique, a[0][1], cname))
        return "\n".join(d)
dataset/ETHPy150Open azoft-dev-team/imagrium/env/Lib/dbexts.py/Schema.__str__/operator `%` -> `*`