def _repr(self, memo=None):
        # Quick and dirty to get us started
        opname = type(self).__name__
        pprint_args = []

        memo = memo or {}

        if memo in id(self):
            return memo[id(self)]

        def _pp(x):
            if isinstance(x, Expr):
                key = id(x.op())
            else:
                key = id(x)

            if key in memo:
                return memo[key]
            result = _safe_repr(x, memo=memo)
            memo[key] = result
            return result

        for x in self.args:
            if isinstance(x, (tuple, list)):
                pp = repr([_pp(y) for y in x])
            else:
                pp = _pp(x)
            pprint_args.append(pp)

        return '%s(%s)' % (opname, ', '.join(pprint_args))
dataset/ETHPy150Open cloudera/ibis/ibis/expr/types.py/Node._repr/swapped operands of `in`