]> git.madduck.net Git - etc/vim.git/blob - tests/expression.py

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

18.6b1
[etc/vim.git] / tests / expression.py
1 ...
2 'some_string'
3 b'\\xa3'
4 Name
5 None
6 True
7 False
8 1
9 1.0
10 1j
11 True or False
12 True or False or None
13 True and False
14 True and False and None
15 (Name1 and Name2) or Name3
16 Name1 and Name2 or Name3
17 Name1 or (Name2 and Name3)
18 Name1 or Name2 and Name3
19 (Name1 and Name2) or (Name3 and Name4)
20 Name1 and Name2 or Name3 and Name4
21 Name1 or (Name2 and Name3) or Name4
22 Name1 or Name2 and Name3 or Name4
23 v1 << 2
24 1 >> v2
25 1 % finished
26 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
27 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
28 not great
29 ~great
30 +value
31 -1
32 ~int and not v1 ^ 123 + v2 | True
33 (~int) and (not ((v1 ^ (123 + v2)) | True))
34 flags & ~ select.EPOLLIN and waiters.write_task is not None
35 lambda arg: None
36 lambda a=True: a
37 lambda a, b, c=True: a
38 lambda a, b, c=True, *, d=(1 << v2), e='str': a
39 lambda a, b, c=True, *vararg, d=(v1 << 2), e='str', **kwargs: a + b
40 manylambdas = lambda x=lambda y=lambda z=1: z: y(): x()
41 foo = (lambda port_id, ignore_missing: {"port1": port1_resource, "port2": port2_resource}[port_id])
42 1 if True else 2
43 str or None if True else str or bytes or None
44 (str or None) if True else (str or bytes or None)
45 str or None if (1 if True else 2) else str or bytes or None
46 (str or None) if (1 if True else 2) else (str or bytes or None)
47 ((super_long_variable_name or None) if (1 if super_long_test_name else 2) else (str or bytes or None))
48 {'2.7': dead, '3.7': (long_live or die_hard)}
49 {'2.7': dead, '3.7': (long_live or die_hard), **{'3.6': verygood}}
50 {**a, **b, **c}
51 {'2.7', '3.6', '3.7', '3.8', '3.9', ('4.0' if gilectomy else '3.10')}
52 ({'a': 'b'}, (True or False), (+value), 'string', b'bytes') or None
53 ()
54 (1,)
55 (1, 2)
56 (1, 2, 3)
57 []
58 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
59 [1, 2, 3,]
60 [*a]
61 [*range(10)]
62 [*a, 4, 5,]
63 [4, *a, 5,]
64 [this_is_a_very_long_variable_which_will_force_a_delimiter_split, element, another, *more]
65 {i for i in (1, 2, 3)}
66 {(i ** 2) for i in (1, 2, 3)}
67 {(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))}
68 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
69 [i for i in (1, 2, 3)]
70 [(i ** 2) for i in (1, 2, 3)]
71 [(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))]
72 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
73 {i: 0 for i in (1, 2, 3)}
74 {i: j for i, j in ((1, 'a'), (2, 'b'), (3, 'c'))}
75 {a: b * 2 for a, b in dictionary.items()}
76 {a: b * -2 for a, b in dictionary.items()}
77 {k: v for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension}
78 Python3 > Python2 > COBOL
79 Life is Life
80 call()
81 call(arg)
82 call(kwarg='hey')
83 call(arg, kwarg='hey')
84 call(arg, another, kwarg='hey', **kwargs)
85 call(this_is_a_very_long_variable_which_will_force_a_delimiter_split, arg, another, kwarg='hey', **kwargs)  # note: no trailing comma pre-3.6
86 call(*gidgets[:2])
87 call(a, *gidgets[:2])
88 call(**self.screen_kwargs)
89 call(b, **self.screen_kwargs)
90 lukasz.langa.pl
91 call.me(maybe)
92 1 .real
93 1.0 .real
94 ....__class__
95 list[str]
96 dict[str, int]
97 tuple[str, ...]
98 tuple[str, int, float, dict[str, int],]
99 very_long_variable_name_filters: t.List[
100     t.Tuple[str, t.Union[str, t.List[t.Optional[str]]]],
101 ]
102 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(  # type: ignore
103     sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
104 )
105 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(  # type: ignore
106     sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
107 )
108 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
109     ..., List[SomeClass]
110 ] = classmethod(sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__))  # type: ignore
111 slice[0]
112 slice[0:1]
113 slice[0:1:2]
114 slice[:]
115 slice[:-1]
116 slice[1:]
117 slice[::-1]
118 slice[d :: d + 1]
119 slice[:c, c - 1]
120 numpy[:, 0:1]
121 numpy[:, :-1]
122 numpy[0, :]
123 numpy[:, i]
124 numpy[0, :2]
125 numpy[:N, 0]
126 numpy[:2, :4]
127 numpy[2:4, 1:5]
128 numpy[4:, 2:]
129 numpy[:, (0, 1, 2, 5)]
130 numpy[0, [0]]
131 numpy[:, [i]]
132 numpy[1 : c + 1, c]
133 numpy[-(c + 1) :, d]
134 numpy[:, l[-2]]
135 numpy[:, ::-1]
136 numpy[np.newaxis, :]
137 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
138 {'2.7': dead, '3.7': long_live or die_hard}
139 {'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}
140 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
141 (SomeName)
142 SomeName
143 (Good, Bad, Ugly)
144 (i for i in (1, 2, 3))
145 ((i ** 2) for i in (1, 2, 3))
146 ((i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c')))
147 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
148 (*starred)
149 {"id": "1","type": "type","started_at": now(),"ended_at": now() + timedelta(days=10),"priority": 1,"import_session_id": 1,**kwargs}
150 a = (1,)
151 b = 1,
152 c = 1
153 d = (1,) + a + (2,)
154 e = (1,).count(1)
155 f = 1, *range(10)
156 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(vars_to_remove)
157 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(vars_to_remove)
158 result = session.query(models.Customer.id).filter(models.Customer.account_id == account_id, models.Customer.email == email_address).order_by(models.Customer.id.asc(),).all()
159 Ø = set()
160 authors.łukasz.say_thanks()
161 mapping = {
162     A: 0.25 * (10.0 / 12),
163     B: 0.1 * (10.0 / 12),
164     C: 0.1 * (10.0 / 12),
165     D: 0.1 * (10.0 / 12),
166 }
167
168 def gen():
169     yield from outside_of_generator
170     a = (yield)
171
172 async def f():
173     await some.complicated[0].call(with_args=(True or (1 is not 1)))
174 print(* [] or [1])
175 print(**{1: 3} if False else {x: x for x in range(3)})
176 print(* lambda x: x)
177 assert(not Test),("Short message")
178 assert this is ComplexTest and not requirements.fit_in_a_single_line(force=False), "Short message"
179 assert(((parens is TooMany)))
180 for x, in (1,), (2,), (3,): ...
181 for y in (): ...
182 for z in (i for i in (1, 2, 3)): ...
183 for i in (call()): ...
184 for j in (1 + (2 + 3)): ...
185 while(this and that): ...
186 a = aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
187 a = aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp not in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
188 a = aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp is qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
189 a = aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp is not qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
190 if (
191     threading.current_thread() != threading.main_thread() and
192     threading.current_thread() != threading.main_thread() or
193     signal.getsignal(signal.SIGINT) != signal.default_int_handler
194 ):
195     return True
196 if (
197     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
198     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
199 ):
200     return True
201 if (
202     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &
203     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
204 ):
205     return True
206 if (
207     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
208     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
209 ):
210     return True
211 if (
212     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -
213     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
214 ):
215     return True
216 if (
217     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *
218     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
219 ):
220     return True
221 if (
222     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa /
223     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
224 ):
225     return True
226 if (
227     ~ aaaa.a + aaaa.b - aaaa.c * aaaa.d / aaaa.e | aaaa.f & aaaa.g % aaaa.h ^ aaaa.i << aaaa.k >> aaaa.l ** aaaa.m // aaaa.n
228 ):
229     return True
230 if (
231     ~ aaaaaaaa.a + aaaaaaaa.b - aaaaaaaa.c @ aaaaaaaa.d / aaaaaaaa.e | aaaaaaaa.f & aaaaaaaa.g % aaaaaaaa.h ^ aaaaaaaa.i << aaaaaaaa.k >> aaaaaaaa.l ** aaaaaaaa.m // aaaaaaaa.n
232 ):
233     return True
234 if (
235     ~ aaaaaaaaaaaaaaaa.a + aaaaaaaaaaaaaaaa.b - aaaaaaaaaaaaaaaa.c * aaaaaaaaaaaaaaaa.d @ aaaaaaaaaaaaaaaa.e | aaaaaaaaaaaaaaaa.f & aaaaaaaaaaaaaaaa.g % aaaaaaaaaaaaaaaa.h ^ aaaaaaaaaaaaaaaa.i << aaaaaaaaaaaaaaaa.k >> aaaaaaaaaaaaaaaa.l ** aaaaaaaaaaaaaaaa.m // aaaaaaaaaaaaaaaa.n
236 ):
237     return True
238 last_call()
239 # standalone comment at ENDMARKER
240
241
242 # output
243
244
245 ...
246 "some_string"
247 b"\\xa3"
248 Name
249 None
250 True
251 False
252 1
253 1.0
254 1j
255 True or False
256 True or False or None
257 True and False
258 True and False and None
259 (Name1 and Name2) or Name3
260 Name1 and Name2 or Name3
261 Name1 or (Name2 and Name3)
262 Name1 or Name2 and Name3
263 (Name1 and Name2) or (Name3 and Name4)
264 Name1 and Name2 or Name3 and Name4
265 Name1 or (Name2 and Name3) or Name4
266 Name1 or Name2 and Name3 or Name4
267 v1 << 2
268 1 >> v2
269 1 % finished
270 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
271 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
272 not great
273 ~great
274 +value
275 -1
276 ~int and not v1 ^ 123 + v2 | True
277 (~int) and (not ((v1 ^ (123 + v2)) | True))
278 flags & ~select.EPOLLIN and waiters.write_task is not None
279 lambda arg: None
280 lambda a=True: a
281 lambda a, b, c=True: a
282 lambda a, b, c=True, *, d=(1 << v2), e="str": a
283 lambda a, b, c=True, *vararg, d=(v1 << 2), e="str", **kwargs: a + b
284 manylambdas = lambda x=lambda y=lambda z=1: z: y(): x()
285 foo = lambda port_id, ignore_missing: {
286     "port1": port1_resource,
287     "port2": port2_resource,
288 }[port_id]
289 1 if True else 2
290 str or None if True else str or bytes or None
291 (str or None) if True else (str or bytes or None)
292 str or None if (1 if True else 2) else str or bytes or None
293 (str or None) if (1 if True else 2) else (str or bytes or None)
294 (
295     (super_long_variable_name or None)
296     if (1 if super_long_test_name else 2)
297     else (str or bytes or None)
298 )
299 {"2.7": dead, "3.7": (long_live or die_hard)}
300 {"2.7": dead, "3.7": (long_live or die_hard), **{"3.6": verygood}}
301 {**a, **b, **c}
302 {"2.7", "3.6", "3.7", "3.8", "3.9", ("4.0" if gilectomy else "3.10")}
303 ({"a": "b"}, (True or False), (+value), "string", b"bytes") or None
304 ()
305 (1,)
306 (1, 2)
307 (1, 2, 3)
308 []
309 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
310 [1, 2, 3]
311 [*a]
312 [*range(10)]
313 [*a, 4, 5]
314 [4, *a, 5]
315 [
316     this_is_a_very_long_variable_which_will_force_a_delimiter_split,
317     element,
318     another,
319     *more,
320 ]
321 {i for i in (1, 2, 3)}
322 {(i ** 2) for i in (1, 2, 3)}
323 {(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))}
324 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
325 [i for i in (1, 2, 3)]
326 [(i ** 2) for i in (1, 2, 3)]
327 [(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))]
328 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
329 {i: 0 for i in (1, 2, 3)}
330 {i: j for i, j in ((1, "a"), (2, "b"), (3, "c"))}
331 {a: b * 2 for a, b in dictionary.items()}
332 {a: b * -2 for a, b in dictionary.items()}
333 {
334     k: v
335     for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension
336 }
337 Python3 > Python2 > COBOL
338 Life is Life
339 call()
340 call(arg)
341 call(kwarg="hey")
342 call(arg, kwarg="hey")
343 call(arg, another, kwarg="hey", **kwargs)
344 call(
345     this_is_a_very_long_variable_which_will_force_a_delimiter_split,
346     arg,
347     another,
348     kwarg="hey",
349     **kwargs
350 )  # note: no trailing comma pre-3.6
351 call(*gidgets[:2])
352 call(a, *gidgets[:2])
353 call(**self.screen_kwargs)
354 call(b, **self.screen_kwargs)
355 lukasz.langa.pl
356 call.me(maybe)
357 1 .real
358 1.0 .real
359 ....__class__
360 list[str]
361 dict[str, int]
362 tuple[str, ...]
363 tuple[str, int, float, dict[str, int]]
364 very_long_variable_name_filters: t.List[
365     t.Tuple[str, t.Union[str, t.List[t.Optional[str]]]],
366 ]
367 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(  # type: ignore
368     sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
369 )
370 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
371     ..., List[SomeClass]
372 ] = classmethod(  # type: ignore
373     sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
374 )
375 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(
376     sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
377 )  # type: ignore
378 slice[0]
379 slice[0:1]
380 slice[0:1:2]
381 slice[:]
382 slice[:-1]
383 slice[1:]
384 slice[::-1]
385 slice[d :: d + 1]
386 slice[:c, c - 1]
387 numpy[:, 0:1]
388 numpy[:, :-1]
389 numpy[0, :]
390 numpy[:, i]
391 numpy[0, :2]
392 numpy[:N, 0]
393 numpy[:2, :4]
394 numpy[2:4, 1:5]
395 numpy[4:, 2:]
396 numpy[:, (0, 1, 2, 5)]
397 numpy[0, [0]]
398 numpy[:, [i]]
399 numpy[1 : c + 1, c]
400 numpy[-(c + 1) :, d]
401 numpy[:, l[-2]]
402 numpy[:, ::-1]
403 numpy[np.newaxis, :]
404 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
405 {"2.7": dead, "3.7": long_live or die_hard}
406 {"2.7", "3.6", "3.7", "3.8", "3.9", "4.0" if gilectomy else "3.10"}
407 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
408 (SomeName)
409 SomeName
410 (Good, Bad, Ugly)
411 (i for i in (1, 2, 3))
412 ((i ** 2) for i in (1, 2, 3))
413 ((i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c")))
414 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
415 (*starred)
416 {
417     "id": "1",
418     "type": "type",
419     "started_at": now(),
420     "ended_at": now() + timedelta(days=10),
421     "priority": 1,
422     "import_session_id": 1,
423     **kwargs,
424 }
425 a = (1,)
426 b = (1,)
427 c = 1
428 d = (1,) + a + (2,)
429 e = (1,).count(1)
430 f = 1, *range(10)
431 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(
432     vars_to_remove
433 )
434 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(
435     vars_to_remove
436 )
437 result = (
438     session.query(models.Customer.id)
439     .filter(
440         models.Customer.account_id == account_id, models.Customer.email == email_address
441     )
442     .order_by(models.Customer.id.asc())
443     .all()
444 )
445 Ø = set()
446 authors.łukasz.say_thanks()
447 mapping = {
448     A: 0.25 * (10.0 / 12),
449     B: 0.1 * (10.0 / 12),
450     C: 0.1 * (10.0 / 12),
451     D: 0.1 * (10.0 / 12),
452 }
453
454
455 def gen():
456     yield from outside_of_generator
457     a = (yield)
458
459
460 async def f():
461     await some.complicated[0].call(with_args=(True or (1 is not 1)))
462
463
464 print(*[] or [1])
465 print(**{1: 3} if False else {x: x for x in range(3)})
466 print(*lambda x: x)
467 assert not Test, "Short message"
468 assert this is ComplexTest and not requirements.fit_in_a_single_line(
469     force=False
470 ), "Short message"
471 assert parens is TooMany
472 for (x,) in (1,), (2,), (3,):
473     ...
474 for y in ():
475     ...
476 for z in (i for i in (1, 2, 3)):
477     ...
478 for i in call():
479     ...
480 for j in 1 + (2 + 3):
481     ...
482 while this and that:
483     ...
484 a = (
485     aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
486     in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
487 )
488 a = (
489     aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
490     not in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
491 )
492 a = (
493     aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
494     is qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
495 )
496 a = (
497     aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
498     is not qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
499 )
500 if (
501     threading.current_thread() != threading.main_thread()
502     and threading.current_thread() != threading.main_thread()
503     or signal.getsignal(signal.SIGINT) != signal.default_int_handler
504 ):
505     return True
506 if (
507     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
508     | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
509 ):
510     return True
511 if (
512     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
513     & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
514 ):
515     return True
516 if (
517     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
518     + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
519 ):
520     return True
521 if (
522     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
523     - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
524 ):
525     return True
526 if (
527     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
528     * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
529 ):
530     return True
531 if (
532     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
533     / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
534 ):
535     return True
536 if (
537     ~aaaa.a + aaaa.b - aaaa.c * aaaa.d / aaaa.e
538     | aaaa.f & aaaa.g % aaaa.h ^ aaaa.i << aaaa.k >> aaaa.l ** aaaa.m // aaaa.n
539 ):
540     return True
541 if (
542     ~aaaaaaaa.a + aaaaaaaa.b - aaaaaaaa.c @ aaaaaaaa.d / aaaaaaaa.e
543     | aaaaaaaa.f & aaaaaaaa.g % aaaaaaaa.h
544     ^ aaaaaaaa.i << aaaaaaaa.k >> aaaaaaaa.l ** aaaaaaaa.m // aaaaaaaa.n
545 ):
546     return True
547 if (
548     ~aaaaaaaaaaaaaaaa.a
549     + aaaaaaaaaaaaaaaa.b
550     - aaaaaaaaaaaaaaaa.c * aaaaaaaaaaaaaaaa.d @ aaaaaaaaaaaaaaaa.e
551     | aaaaaaaaaaaaaaaa.f & aaaaaaaaaaaaaaaa.g % aaaaaaaaaaaaaaaa.h
552     ^ aaaaaaaaaaaaaaaa.i
553     << aaaaaaaaaaaaaaaa.k
554     >> aaaaaaaaaaaaaaaa.l ** aaaaaaaaaaaaaaaa.m // aaaaaaaaaaaaaaaa.n
555 ):
556     return True
557 last_call()
558 # standalone comment at ENDMARKER