def and_test(self, lhs, rhs):
        """and_test: not_test ('and' not_test)*"""
        if len(rhs) > 0:
            return ast.BoolOp(op=ast.And(),
                              values=[lhs] + list(map(lambda x: x[1], rhs)),
                              loc=lhs.loc.join(rhs[-1][1].loc),
                              op_locs=list(map(lambda x: x[0], rhs)))
        else:
            return lhs
def and_test ( self , lhs , rhs ) : if len ( rhs ) > 0 : return ast . BoolOp ( op = ast . And ( ) , values = [ lhs ] + list ( map ( lambda x : x [ 1 ] , rhs ) ) , loc = lhs . loc . join ( rhs [ - 1 ] [ 1 ] . loc ) , op_locs = list ( map ( lambda x : x [ 0 ] , rhs ) ) ) else : return lhs
and_test: not_test ('and' not_test)*