Skip to content
This repository was archived by the owner on Mar 21, 2021. It is now read-only.

Commit 1907319

Browse files
committed
Minor cleanup
1 parent f52ff59 commit 1907319

File tree

2 files changed

+29
-37
lines changed

2 files changed

+29
-37
lines changed

qc0/plan.py

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import typing as ty
1515

1616
import sqlalchemy as sa
17+
import sqlalchemy.dialects.postgresql as sa_pg
1718

1819
from .sig import (
1920
Sig,
@@ -77,20 +78,7 @@
7778
)
7879

7980

80-
def make_parent(parent):
81-
assert isinstance(parent, Op)
82-
if isinstance(parent.rel, RelParent) and parent.expr is None:
83-
return parent
84-
return Op(
85-
rel=RelParent(parent=parent),
86-
expr=None,
87-
scope=parent.scope,
88-
card=Cardinality.ONE,
89-
syn=None,
90-
)
91-
92-
93-
def plan(syn: Syn, meta: sa.MetaData):
81+
def plan(syn: Syn, meta: sa.MetaData) -> Op:
9482
""" Produce operations from syntax."""
9583
parent = Op(
9684
rel=RelVoid(),
@@ -102,13 +90,13 @@ def plan(syn: Syn, meta: sa.MetaData):
10290
return build_op(syn, parent)
10391

10492

105-
def build_op(syn: Syn, parent: Op):
93+
def build_op(syn: Syn, parent: Op) -> Op:
10694
op, k = norm_to_op(syn, parent=parent)
10795
op = k(build_op_expr(op))
10896
return op
10997

11098

111-
def build_op_expr(op: Op):
99+
def build_op_expr(op: Op) -> Op:
112100
if op.expr is None:
113101
if isinstance(op.scope, RecordScope):
114102
expr = ExprRecord(fields=op.scope.op_fields)
@@ -161,21 +149,17 @@ def build_op_expr(op: Op):
161149
return op
162150

163151

164-
def run_to_op(syn, parent):
165-
op = to_op(syn, parent)
166-
if isinstance(op, tuple):
167-
op, k = op
168-
op = k(op)
169-
assert isinstance(op, Op), type(op)
170-
return op
171-
172-
173-
def norm_to_op(syn, parent):
174-
res = to_op(syn, parent)
175-
if isinstance(res, tuple):
176-
return res
177-
else:
178-
return res, lambda op: op
152+
def make_parent(parent: Op) -> Op:
153+
assert isinstance(parent, Op)
154+
if isinstance(parent.rel, RelParent) and parent.expr is None:
155+
return parent
156+
return Op(
157+
rel=RelParent(parent=parent),
158+
expr=None,
159+
scope=parent.scope,
160+
card=Cardinality.ONE,
161+
syn=None,
162+
)
179163

180164

181165
#
@@ -184,11 +168,21 @@ def norm_to_op(syn, parent):
184168

185169

186170
@functools.singledispatch
187-
def to_op(syn: ty.Optional[Syn], parent: Op):
171+
def to_op(syn: ty.Optional[Syn], parent: Op) -> Op:
188172
""" Produce an operation out of a query."""
189173
raise NotImplementedError(type(syn)) # pragma: no cover
190174

191175

176+
def run_to_op(syn, parent):
177+
op = to_op(syn, parent)
178+
return op[1](op[0]) if isinstance(op, tuple) else op
179+
180+
181+
def norm_to_op(syn, parent):
182+
res = to_op(syn, parent)
183+
return res if isinstance(res, tuple) else (res, lambda op: op)
184+
185+
192186
@to_op.register
193187
def None_to_op(syn: type(None), parent: Op):
194188
return parent
@@ -609,7 +603,5 @@ def DateLiteral_embed(_: sa.Date):
609603

610604

611605
@embed.register
612-
def JsonLiteral_embed(_: sa.dialects.postgresql.JSONB):
613-
return lambda v: sa.cast(
614-
sa.literal(json.dumps(v)), sa.dialects.postgresql.JSONB
615-
)
606+
def JsonLiteral_embed(_: sa_pg.JSONB):
607+
return lambda v: sa.cast(sa.literal(json.dumps(v)), sa_pg.JSONB)

qc0/syntax.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
from datetime import date
1414
from typing import Dict, List, Union, Any
1515

16-
from sqlalchemy.dialects import postgresql as sa_pg
1716
import sqlalchemy as sa
17+
import sqlalchemy.dialects.postgresql as sa_pg
1818

1919
from .base import Struct
2020

0 commit comments

Comments
 (0)