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 +really ** -confusing ** ~operator ** -precedence
35 flags & ~ select.EPOLLIN and waiters.write_task is not None
38 lambda a, b, c=True: a
39 lambda a, b, c=True, *, d=(1 << v2), e='str': a
40 lambda a, b, c=True, *vararg, d=(v1 << 2), e='str', **kwargs: a + b
41 manylambdas = lambda x=lambda y=lambda z=1: z: y(): x()
42 foo = (lambda port_id, ignore_missing: {"port1": port1_resource, "port2": port2_resource}[port_id])
44 str or None if True else str or bytes or None
45 (str or None) if True else (str or bytes or None)
46 str or None if (1 if True else 2) else str or bytes or None
47 (str or None) if (1 if True else 2) else (str or bytes or None)
48 ((super_long_variable_name or None) if (1 if super_long_test_name else 2) else (str or bytes or None))
49 {'2.7': dead, '3.7': (long_live or die_hard)}
50 {'2.7': dead, '3.7': (long_live or die_hard), **{'3.6': verygood}}
52 {'2.7', '3.6', '3.7', '3.8', '3.9', ('4.0' if gilectomy else '3.10')}
53 ({'a': 'b'}, (True or False), (+value), 'string', b'bytes') or None
59 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
65 [this_is_a_very_long_variable_which_will_force_a_delimiter_split, element, another, *more]
66 {i for i in (1, 2, 3)}
67 {(i ** 2) for i in (1, 2, 3)}
68 {(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))}
69 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
70 [i for i in (1, 2, 3)]
71 [(i ** 2) for i in (1, 2, 3)]
72 [(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))]
73 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
74 {i: 0 for i in (1, 2, 3)}
75 {i: j for i, j in ((1, 'a'), (2, 'b'), (3, 'c'))}
76 {a: b * 2 for a, b in dictionary.items()}
77 {a: b * -2 for a, b in dictionary.items()}
78 {k: v for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension}
79 Python3 > Python2 > COBOL
84 call(arg, kwarg='hey')
85 call(arg, another, kwarg='hey', **kwargs)
86 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
89 call(**self.screen_kwargs)
90 call(b, **self.screen_kwargs)
99 tuple[str, int, float, dict[str, int],]
100 very_long_variable_name_filters: t.List[
101 t.Tuple[str, t.Union[str, t.List[t.Optional[str]]]],
103 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
104 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
106 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
107 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
109 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
111 ] = classmethod(sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)) # type: ignore
130 numpy[:, (0, 1, 2, 5)]
138 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
139 {'2.7': dead, '3.7': long_live or die_hard}
140 {'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}
141 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
145 (i for i in (1, 2, 3))
146 ((i ** 2) for i in (1, 2, 3))
147 ((i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c')))
148 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
150 {"id": "1","type": "type","started_at": now(),"ended_at": now() + timedelta(days=10),"priority": 1,"import_session_id": 1,**kwargs}
158 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(vars_to_remove)
159 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(vars_to_remove)
160 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()
162 authors.łukasz.say_thanks()
164 A: 0.25 * (10.0 / 12),
165 B: 0.1 * (10.0 / 12),
166 C: 0.1 * (10.0 / 12),
167 D: 0.1 * (10.0 / 12),
171 yield from outside_of_generator
177 await some.complicated[0].call(with_args=(True or (1 is not 1)))
179 print(**{1: 3} if False else {x: x for x in range(3)})
181 assert(not Test),("Short message")
182 assert this is ComplexTest and not requirements.fit_in_a_single_line(force=False), "Short message"
183 assert(((parens is TooMany)))
184 for x, in (1,), (2,), (3,): ...
186 for z in (i for i in (1, 2, 3)): ...
187 for i in (call()): ...
188 for j in (1 + (2 + 3)): ...
189 while(this and that): ...
190 for addr_family, addr_type, addr_proto, addr_canonname, addr_sockaddr in socket.getaddrinfo('google.com', 'http'):
192 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
193 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
194 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
195 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
197 threading.current_thread() != threading.main_thread() and
198 threading.current_thread() != threading.main_thread() or
199 signal.getsignal(signal.SIGINT) != signal.default_int_handler
203 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
204 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
208 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &
209 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
213 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
214 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
218 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -
219 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
223 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *
224 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
228 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa /
229 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
233 ~ 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
237 ~ 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
241 ~ 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
245 # standalone comment at ENDMARKER
262 True or False or None
264 True and False and None
265 (Name1 and Name2) or Name3
266 Name1 and Name2 or Name3
267 Name1 or (Name2 and Name3)
268 Name1 or Name2 and Name3
269 (Name1 and Name2) or (Name3 and Name4)
270 Name1 and Name2 or Name3 and Name4
271 Name1 or (Name2 and Name3) or Name4
272 Name1 or Name2 and Name3 or Name4
276 1 + v2 - v3 * 4 ^ 5 ** v6 / 7 // 8
277 ((1 + v2) - (v3 * 4)) ^ (((5 ** v6) / 7) // 8)
282 ~int and not v1 ^ 123 + v2 | True
283 (~int) and (not ((v1 ^ (123 + v2)) | True))
284 +(really ** -(confusing ** ~(operator ** -precedence)))
285 flags & ~select.EPOLLIN and waiters.write_task is not None
288 lambda a, b, c=True: a
289 lambda a, b, c=True, *, d=(1 << v2), e="str": a
290 lambda a, b, c=True, *vararg, d=(v1 << 2), e="str", **kwargs: a + b
291 manylambdas = lambda x=lambda y=lambda z=1: z: y(): x()
292 foo = lambda port_id, ignore_missing: {
293 "port1": port1_resource,
294 "port2": port2_resource,
297 str or None if True else str or bytes or None
298 (str or None) if True else (str or bytes or None)
299 str or None if (1 if True else 2) else str or bytes or None
300 (str or None) if (1 if True else 2) else (str or bytes or None)
302 (super_long_variable_name or None)
303 if (1 if super_long_test_name else 2)
304 else (str or bytes or None)
306 {"2.7": dead, "3.7": (long_live or die_hard)}
307 {"2.7": dead, "3.7": (long_live or die_hard), **{"3.6": verygood}}
309 {"2.7", "3.6", "3.7", "3.8", "3.9", ("4.0" if gilectomy else "3.10")}
310 ({"a": "b"}, (True or False), (+value), "string", b"bytes") or None
316 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
335 this_is_a_very_long_variable_which_will_force_a_delimiter_split,
340 {i for i in (1, 2, 3)}
341 {(i ** 2) for i in (1, 2, 3)}
342 {(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))}
343 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
344 [i for i in (1, 2, 3)]
345 [(i ** 2) for i in (1, 2, 3)]
346 [(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))]
347 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
348 {i: 0 for i in (1, 2, 3)}
349 {i: j for i, j in ((1, "a"), (2, "b"), (3, "c"))}
350 {a: b * 2 for a, b in dictionary.items()}
351 {a: b * -2 for a, b in dictionary.items()}
354 for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension
356 Python3 > Python2 > COBOL
361 call(arg, kwarg="hey")
362 call(arg, another, kwarg="hey", **kwargs)
364 this_is_a_very_long_variable_which_will_force_a_delimiter_split,
369 ) # note: no trailing comma pre-3.6
371 call(a, *gidgets[:2])
372 call(**self.screen_kwargs)
373 call(b, **self.screen_kwargs)
383 str, int, float, dict[str, int],
385 very_long_variable_name_filters: t.List[
386 t.Tuple[str, t.Union[str, t.List[t.Optional[str]]]],
388 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
389 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
391 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
392 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
394 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(
395 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
415 numpy[:, (0, 1, 2, 5)]
423 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
424 {"2.7": dead, "3.7": long_live or die_hard}
425 {"2.7", "3.6", "3.7", "3.8", "3.9", "4.0" if gilectomy else "3.10"}
426 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
430 (i for i in (1, 2, 3))
431 ((i ** 2) for i in (1, 2, 3))
432 ((i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c")))
433 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
439 "ended_at": now() + timedelta(days=10),
441 "import_session_id": 1,
451 what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(
454 what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(
458 session.query(models.Customer.id)
460 models.Customer.account_id == account_id, models.Customer.email == email_address
462 .order_by(models.Customer.id.asc(),)
466 authors.łukasz.say_thanks()
468 A: 0.25 * (10.0 / 12),
469 B: 0.1 * (10.0 / 12),
470 C: 0.1 * (10.0 / 12),
471 D: 0.1 * (10.0 / 12),
476 yield from outside_of_generator
483 await some.complicated[0].call(with_args=(True or (1 is not 1)))
487 print(**{1: 3} if False else {x: x for x in range(3)})
489 assert not Test, "Short message"
490 assert this is ComplexTest and not requirements.fit_in_a_single_line(
493 assert parens is TooMany
494 for (x,) in (1,), (2,), (3,):
498 for z in (i for i in (1, 2, 3)):
502 for j in 1 + (2 + 3):
512 ) in socket.getaddrinfo("google.com", "http"):
515 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
516 in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
519 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
520 not in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
523 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
524 is qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
527 aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
528 is not qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
531 threading.current_thread() != threading.main_thread()
532 and threading.current_thread() != threading.main_thread()
533 or signal.getsignal(signal.SIGINT) != signal.default_int_handler
537 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
538 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
542 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
543 & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
547 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
548 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
552 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
553 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
557 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
558 * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
562 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
563 / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
567 ~aaaa.a + aaaa.b - aaaa.c * aaaa.d / aaaa.e
568 | aaaa.f & aaaa.g % aaaa.h ^ aaaa.i << aaaa.k >> aaaa.l ** aaaa.m // aaaa.n
572 ~aaaaaaaa.a + aaaaaaaa.b - aaaaaaaa.c @ aaaaaaaa.d / aaaaaaaa.e
573 | aaaaaaaa.f & aaaaaaaa.g % aaaaaaaa.h
574 ^ aaaaaaaa.i << aaaaaaaa.k >> aaaaaaaa.l ** aaaaaaaa.m // aaaaaaaa.n
580 - aaaaaaaaaaaaaaaa.c * aaaaaaaaaaaaaaaa.d @ aaaaaaaaaaaaaaaa.e
581 | aaaaaaaaaaaaaaaa.f & aaaaaaaaaaaaaaaa.g % aaaaaaaaaaaaaaaa.h
583 << aaaaaaaaaaaaaaaa.k
584 >> aaaaaaaaaaaaaaaa.l ** aaaaaaaaaaaaaaaa.m // aaaaaaaaaaaaaaaa.n
588 # standalone comment at ENDMARKER