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}
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()
160 authors.łukasz.say_thanks()
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),
169 yield from outside_of_generator
173 await some.complicated[0].call(with_args=(True or (1 is not 1)))
175 print(**{1: 3} if False else {x: x for x in range(3)})
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,): ...
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
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
197 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
198 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
202 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &
203 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
207 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
208 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
212 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -
213 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
217 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *
218 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
222 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa /
223 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
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
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
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
239 # standalone comment at ENDMARKER
256 True or False or None
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
270 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
271 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
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
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,
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)
295 (super_long_variable_name or None)
296 if (1 if super_long_test_name else 2)
297 else (str or bytes or None)
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}}
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
309 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
316 this_is_a_very_long_variable_which_will_force_a_delimiter_split,
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()}
335 for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension
337 Python3 > Python2 > COBOL
342 call(arg, kwarg="hey")
343 call(arg, another, kwarg="hey", **kwargs)
345 this_is_a_very_long_variable_which_will_force_a_delimiter_split,
350 ) # note: no trailing comma pre-3.6
352 call(a, *gidgets[:2])
353 call(**self.screen_kwargs)
354 call(b, **self.screen_kwargs)
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]]]],
367 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
368 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
370 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
372 ] = classmethod( # type: ignore
373 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
375 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(
376 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
396 numpy[:, (0, 1, 2, 5)]
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]
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))
420 "ended_at": now() + timedelta(days=10),
422 "import_session_id": 1,
431 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(
434 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(
438 session.query(models.Customer.id)
440 models.Customer.account_id == account_id, models.Customer.email == email_address
442 .order_by(models.Customer.id.asc())
446 authors.łukasz.say_thanks()
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),
456 yield from outside_of_generator
461 await some.complicated[0].call(with_args=(True or (1 is not 1)))
465 print(**{1: 3} if False else {x: x for x in range(3)})
467 assert not Test, "Short message"
468 assert this is ComplexTest and not requirements.fit_in_a_single_line(
471 assert parens is TooMany
472 for (x,) in (1,), (2,), (3,):
476 for z in (i for i in (1, 2, 3)):
480 for j in 1 + (2 + 3):
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
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
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
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
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
507 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
508 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
512 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
513 & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
517 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
518 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
522 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
523 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
527 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
528 * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
532 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
533 / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
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
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
550 - aaaaaaaaaaaaaaaa.c * aaaaaaaaaaaaaaaa.d @ aaaaaaaaaaaaaaaa.e
551 | aaaaaaaaaaaaaaaa.f & aaaaaaaaaaaaaaaa.g % aaaaaaaaaaaaaaaa.h
553 << aaaaaaaaaaaaaaaa.k
554 >> aaaaaaaaaaaaaaaa.l ** aaaaaaaaaaaaaaaa.m // aaaaaaaaaaaaaaaa.n
558 # standalone comment at ENDMARKER