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.
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
26 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
27 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
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
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])
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}}
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
58 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
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
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
88 call(**self.screen_kwargs)
89 call(b, **self.screen_kwargs)
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]]]],
102 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
103 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
105 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
106 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
108 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
110 ] = classmethod(sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)) # type: ignore
129 numpy[:, (0, 1, 2, 5)]
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]
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))
149 {"id": "1","type": "type","started_at": now(),"ended_at": now() + timedelta(days=10),"priority": 1,"import_session_id": 1,**kwargs}
157 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(vars_to_remove)
158 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(vars_to_remove)
159 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()
161 authors.łukasz.say_thanks()
163 A: 0.25 * (10.0 / 12),
164 B: 0.1 * (10.0 / 12),
165 C: 0.1 * (10.0 / 12),
166 D: 0.1 * (10.0 / 12),
170 yield from outside_of_generator
174 await some.complicated[0].call(with_args=(True or (1 is not 1)))
176 print(**{1: 3} if False else {x: x for x in range(3)})
178 assert(not Test),("Short message")
179 assert this is ComplexTest and not requirements.fit_in_a_single_line(force=False), "Short message"
180 assert(((parens is TooMany)))
181 for x, in (1,), (2,), (3,): ...
183 for z in (i for i in (1, 2, 3)): ...
184 for i in (call()): ...
185 for j in (1 + (2 + 3)): ...
186 while(this and that): ...
187 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
188 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
189 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
190 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
192 threading.current_thread() != threading.main_thread() and
193 threading.current_thread() != threading.main_thread() or
194 signal.getsignal(signal.SIGINT) != signal.default_int_handler
198 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
199 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
203 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &
204 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
208 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
209 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
213 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -
214 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
218 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *
219 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
223 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa /
224 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
228 ~ 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
232 ~ 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
236 ~ 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
240 # standalone comment at ENDMARKER
257 True or False or None
259 True and False and None
260 (Name1 and Name2) or Name3
261 Name1 and Name2 or Name3
262 Name1 or (Name2 and Name3)
263 Name1 or Name2 and Name3
264 (Name1 and Name2) or (Name3 and Name4)
265 Name1 and Name2 or Name3 and Name4
266 Name1 or (Name2 and Name3) or Name4
267 Name1 or Name2 and Name3 or Name4
271 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
272 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
277 ~int and not v1 ^ 123 + v2 | True
278 (~int) and (not ((v1 ^ (123 + v2)) | True))
279 flags & ~select.EPOLLIN and waiters.write_task is not None
282 lambda a, b, c=True: a
283 lambda a, b, c=True, *, d=(1 << v2), e="str": a
284 lambda a, b, c=True, *vararg, d=(v1 << 2), e="str", **kwargs: a + b
285 manylambdas = lambda x=lambda y=lambda z=1: z: y(): x()
286 foo = lambda port_id, ignore_missing: {
287 "port1": port1_resource,
288 "port2": port2_resource,
291 str or None if True else str or bytes or None
292 (str or None) if True else (str or bytes or None)
293 str or None if (1 if True else 2) else str or bytes or None
294 (str or None) if (1 if True else 2) else (str or bytes or None)
296 (super_long_variable_name or None)
297 if (1 if super_long_test_name else 2)
298 else (str or bytes or None)
300 {"2.7": dead, "3.7": (long_live or die_hard)}
301 {"2.7": dead, "3.7": (long_live or die_hard), **{"3.6": verygood}}
303 {"2.7", "3.6", "3.7", "3.8", "3.9", ("4.0" if gilectomy else "3.10")}
304 ({"a": "b"}, (True or False), (+value), "string", b"bytes") or None
310 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
317 this_is_a_very_long_variable_which_will_force_a_delimiter_split,
322 {i for i in (1, 2, 3)}
323 {(i ** 2) for i in (1, 2, 3)}
324 {(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))}
325 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
326 [i for i in (1, 2, 3)]
327 [(i ** 2) for i in (1, 2, 3)]
328 [(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))]
329 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
330 {i: 0 for i in (1, 2, 3)}
331 {i: j for i, j in ((1, "a"), (2, "b"), (3, "c"))}
332 {a: b * 2 for a, b in dictionary.items()}
333 {a: b * -2 for a, b in dictionary.items()}
336 for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension
338 Python3 > Python2 > COBOL
343 call(arg, kwarg="hey")
344 call(arg, another, kwarg="hey", **kwargs)
346 this_is_a_very_long_variable_which_will_force_a_delimiter_split,
351 ) # note: no trailing comma pre-3.6
353 call(a, *gidgets[:2])
354 call(**self.screen_kwargs)
355 call(b, **self.screen_kwargs)
364 tuple[str, int, float, dict[str, int]]
365 very_long_variable_name_filters: t.List[
366 t.Tuple[str, t.Union[str, t.List[t.Optional[str]]]],
368 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
369 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
371 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
373 ] = classmethod( # type: ignore
374 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
376 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(
377 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
397 numpy[:, (0, 1, 2, 5)]
405 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
406 {"2.7": dead, "3.7": long_live or die_hard}
407 {"2.7", "3.6", "3.7", "3.8", "3.9", "4.0" if gilectomy else "3.10"}
408 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
412 (i for i in (1, 2, 3))
413 ((i ** 2) for i in (1, 2, 3))
414 ((i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c")))
415 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
421 "ended_at": now() + timedelta(days=10),
423 "import_session_id": 1,
433 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(
436 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(
440 session.query(models.Customer.id)
442 models.Customer.account_id == account_id, models.Customer.email == email_address
444 .order_by(models.Customer.id.asc())
448 authors.łukasz.say_thanks()
450 A: 0.25 * (10.0 / 12),
451 B: 0.1 * (10.0 / 12),
452 C: 0.1 * (10.0 / 12),
453 D: 0.1 * (10.0 / 12),
458 yield from outside_of_generator
463 await some.complicated[0].call(with_args=(True or (1 is not 1)))
467 print(**{1: 3} if False else {x: x for x in range(3)})
469 assert not Test, "Short message"
470 assert this is ComplexTest and not requirements.fit_in_a_single_line(
473 assert parens is TooMany
474 for (x,) in (1,), (2,), (3,):
478 for z in (i for i in (1, 2, 3)):
482 for j in 1 + (2 + 3):
487 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
488 in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
491 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
492 not in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
495 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
496 is qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
499 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
500 is not qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
503 threading.current_thread() != threading.main_thread()
504 and threading.current_thread() != threading.main_thread()
505 or signal.getsignal(signal.SIGINT) != signal.default_int_handler
509 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
510 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
514 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
515 & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
519 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
520 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
524 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
525 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
529 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
530 * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
534 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
535 / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
539 ~aaaa.a + aaaa.b - aaaa.c * aaaa.d / aaaa.e
540 | aaaa.f & aaaa.g % aaaa.h ^ aaaa.i << aaaa.k >> aaaa.l ** aaaa.m // aaaa.n
544 ~aaaaaaaa.a + aaaaaaaa.b - aaaaaaaa.c @ aaaaaaaa.d / aaaaaaaa.e
545 | aaaaaaaa.f & aaaaaaaa.g % aaaaaaaa.h
546 ^ aaaaaaaa.i << aaaaaaaa.k >> aaaaaaaa.l ** aaaaaaaa.m // aaaaaaaa.n
552 - aaaaaaaaaaaaaaaa.c * aaaaaaaaaaaaaaaa.d @ aaaaaaaaaaaaaaaa.e
553 | aaaaaaaaaaaaaaaa.f & aaaaaaaaaaaaaaaa.g % aaaaaaaaaaaaaaaa.h
555 << aaaaaaaaaaaaaaaa.k
556 >> aaaaaaaaaaaaaaaa.l ** aaaaaaaaaaaaaaaa.m // aaaaaaaaaaaaaaaa.n
560 # standalone comment at ENDMARKER