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