Skip to content

Commit 4efe874

Browse files
committed
Add more type hints
1 parent 6b1eb98 commit 4efe874

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

src/commercetools/testing/orders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def _create_from_draft(
4141
cart_data = self._storage.get_by_resource_identifier(cart_identifier)
4242
cart = None
4343
if cart_data:
44-
cart = CartSchema().load(cart_data)
44+
cart: types.Cart = CartSchema().load(cart_data)
4545

4646
order = types.Order(
4747
id=str(object_id),

src/commercetools/testing/predicates.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def tokenize(self, program):
5353
def __next__(self):
5454
return next(self._iterator)
5555

56-
def _get_tokens(self, program):
56+
def _get_tokens(self, program) -> typing.Generator[Symbol, None, None]:
5757
buf: typing.List[str] = []
5858
for match in token_pat.finditer(program):
5959
value, identifier, symbol = match.groups()
@@ -117,7 +117,7 @@ def nud(self):
117117
)
118118

119119
def led(self, left):
120-
raise SyntaxError("Unknown operator (%r)." % self.id)
120+
raise SyntaxError("Unknown operator (%r)." % self.identifier)
121121

122122
def __repr__(self):
123123
return "Symbol(identifier=%r, value=%r)" % (self.identifier, self.value)
@@ -126,7 +126,8 @@ def __repr__(self):
126126
class Parser:
127127
def __init__(self):
128128
self.symbol_table: typing.Dict[str, typing.Type[Symbol]] = {}
129-
self._peek = None
129+
self._peek: typing.Optional[Symbol] = None
130+
self.token: typing.Optional[Symbol] = None
130131
self.tokenizer = Tokenizer(self)
131132

132133
def parse(self, program):
@@ -138,6 +139,7 @@ def next(self):
138139
return next(self.tokenizer)
139140

140141
def expression(self, rbp=0):
142+
assert self.token is not None
141143
t = self.token
142144
self.advance()
143145
left = t.nud()
@@ -151,6 +153,7 @@ def expression(self, rbp=0):
151153
return left
152154

153155
def advance(self, identifier=None):
156+
assert self.token is not None
154157
if identifier and self.token.identifier != identifier:
155158
raise SyntaxError(
156159
"Expected %r, received %r" % (identifier, self.token.identifier)
@@ -170,9 +173,9 @@ def peek(self):
170173

171174
def define(self, sid, bp=0, symbol_class=Symbol):
172175
symbol_table = self.symbol_table
173-
sym: Symbol = type(
176+
sym: Symbol = typing.cast(Symbol, type(
174177
symbol_class.__name__, (symbol_class,), {"identifier": sid, "lbp": bp}
175-
)
178+
))
176179
symbol_table[sid] = sym
177180

178181
def wrapper(val):
@@ -191,7 +194,7 @@ class Infix(Symbol):
191194
rightAssoc = False
192195
_logical_map = {"and": ast.And(), "or": ast.Or()}
193196

194-
def led(self, left):
197+
def led(self, left: Symbol):
195198
self.first = left
196199
rbp = self.lbp - int(self.rightAssoc)
197200
self.second = self.parser.expression(rbp)
@@ -200,7 +203,7 @@ def led(self, left):
200203
def __repr__(self):
201204
return "<'%s'>(%s, %s)" % (self.value, self.first, self.second)
202205

203-
def ast(self, context=None):
206+
def ast(self, context: Context):
204207
lhs = self.first.ast(context)
205208
if self.second:
206209
rhs = self.second.ast(context)
@@ -262,7 +265,9 @@ def __repr__(self):
262265

263266

264267
class LParen(Symbol):
265-
def led(self, left):
268+
first: typing.Union[Symbol, list]
269+
270+
def led(self, left: Symbol):
266271
self.first = left
267272
self.second = []
268273
while self.parser.token.identifier != ")":
@@ -289,7 +294,7 @@ def nud(self):
289294
else:
290295
return self.first[0]
291296

292-
def ast(self, context=None):
297+
def ast(self, context: Context):
293298
if not self.second:
294299
return ast.Tuple(
295300
elts=[item.ast(context) for item in self.first], ctx=ast.Load()
@@ -311,7 +316,7 @@ class LiteralToken(Symbol):
311316
def nud(self):
312317
return self
313318

314-
def ast(self, context=None):
319+
def ast(self, context: Context):
315320
if self.value.isdigit():
316321
return ast.Num(n=int(self.value))
317322
if self.value in ["true", "false"]:
@@ -338,7 +343,7 @@ class NameToken(Symbol):
338343
def nud(self):
339344
return self
340345

341-
def ast(self, context=None):
346+
def ast(self, context: Context):
342347
return ast.Name(id=self.value, ctx=ast.Load())
343348

344349

@@ -349,7 +354,7 @@ class Constant(Symbol):
349354
def nud(self):
350355
return self
351356

352-
def ast(self, context=None):
357+
def ast(self, context: Context):
353358
return ast.Constant(value=None, ctx=ast.Load())
354359

355360

@@ -360,7 +365,7 @@ def nud(self):
360365
self.first = self.parser.expression(2000)
361366
return self
362367

363-
def ast(self, context):
368+
def ast(self, context: Context):
364369
node = self.first.ast()
365370
node.elts.insert(0, ast.Str(s=self.value))
366371
return node
@@ -445,7 +450,7 @@ def filter_field(
445450
if schema is None:
446451
schema = self.schema
447452

448-
schema_field = None
453+
schema_field: typing.Optional[marshmallow.fields.Field] = None
449454

450455
for i, key in enumerate(path):
451456
fields = self._get_schema_fields(schema)
@@ -454,6 +459,7 @@ def filter_field(
454459
# Query field doesn't exist
455460
if schema_field is None:
456461
raise ValueError("No field %s on schema %s" % (key, schema))
462+
assert schema_field is not None
457463

458464
if isinstance(schema_field, marshmallow.fields.Nested):
459465
schema = schema_field.schema

0 commit comments

Comments
 (0)