Skip to content

Commit ba7c085

Browse files
author
Bruce Fenske
committed
Start of binary expressions
1 parent f2effcc commit ba7c085

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

Diff for: py_queryable/expressions/binary.py

+26-6
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,43 @@
1+
import abc
12
from . import Expression
23

34

45
class BinaryExpression(Expression):
5-
def __init__(self, left_exp, op_exp, right_exp):
6+
def __init__(self, left_exp, right_exp):
67
super(BinaryExpression, self).__init__()
78
self.left = left_exp
8-
self.op = op_exp
99
self.right = right_exp
1010

11+
@abc.abstractmethod
1112
def visit(self, visitor):
12-
return visitor.visit_BinaryExpression(self)
13+
raise NotImplementedError()
1314

1415
@property
1516
def children(self):
16-
return [self.left, self.op, self.right]
17+
return [self.left, self.right]
1718

1819
def __repr__(self):
19-
return u"{0}(left={1}, op={2}, right={3})".format(
20+
return u"{0}(left={1}, right={3})".format(
2021
self.__class__.__name__,
2122
self.left.__repr__(),
22-
self.op.__repr__(),
2323
self.right.__repr__())
24+
25+
26+
class JoinExpression(BinaryExpression):
27+
def __init__(self, outer_exp, inner_exp, outer_key, inner_key, select_func):
28+
super(JoinExpression, self).__init__(outer_exp, inner_exp)
29+
self.inner_key = inner_key
30+
self.outer_key = outer_key
31+
self.select_func = select_func
32+
33+
def visit(self, visitor):
34+
return visitor.visit_JoinExpression(self)
35+
36+
def __repr__(self):
37+
return u"JoinExpression(outer={0}, inner={1}, outer_key={2}, inner_key={3}, select={4})".format(
38+
self.left.__repr__(),
39+
self.right.__repr__(),
40+
self.outer_key.__repr__(),
41+
self.inner_key.__repr__(),
42+
self.select_func.__repr__()
43+
)

Diff for: py_queryable/visitors/sql.py

+3
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,6 @@ def visit_SumOperator(self, expression):
132132

133133
def visit_AveOperator(self, expression):
134134
return self._visit_lambda(expression, u"AVG")
135+
136+
def visit_JoinExpression(self, expression):
137+
raise NotImplementedError()

0 commit comments

Comments
 (0)