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.
   1 --- [Deterministic header]
 
   2 +++ [Deterministic header]
 
  18  ~int and not v1 ^ 123 + v2 | True
 
  19  (~int) and (not ((v1 ^ (123 + v2)) | True))
 
  20 -+really ** -confusing ** ~operator ** -precedence
 
  21 -flags & ~ select.EPOLLIN and waiters.write_task is not None
 
  22 ++(really ** -(confusing ** ~(operator ** -precedence)))
 
  23 +flags & ~select.EPOLLIN and waiters.write_task is not None
 
  26  lambda a, b, c=True: a
 
  27 -lambda a, b, c=True, *, d=(1 << v2), e='str': a
 
  28 -lambda a, b, c=True, *vararg, d=(v1 << 2), e='str', **kwargs: a + b
 
  29 +lambda a, b, c=True, *, d=(1 << v2), e="str": a
 
  30 +lambda a, b, c=True, *vararg, d=(v1 << 2), e="str", **kwargs: a + b
 
  31  manylambdas = lambda x=lambda y=lambda z=1: z: y(): x()
 
  32 -foo = (lambda port_id, ignore_missing: {"port1": port1_resource, "port2": port2_resource}[port_id])
 
  33 +foo = lambda port_id, ignore_missing: {
 
  34 +    "port1": port1_resource,
 
  35 +    "port2": port2_resource,
 
  38  str or None if True else str or bytes or None
 
  39  (str or None) if True else (str or bytes or None)
 
  40  str or None if (1 if True else 2) else str or bytes or None
 
  41  (str or None) if (1 if True else 2) else (str or bytes or None)
 
  42 -((super_long_variable_name or None) if (1 if super_long_test_name else 2) else (str or bytes or None))
 
  43 -{'2.7': dead, '3.7': (long_live or die_hard)}
 
  44 -{'2.7': dead, '3.7': (long_live or die_hard), **{'3.6': verygood}}
 
  46 +    (super_long_variable_name or None)
 
  47 +    if (1 if super_long_test_name else 2)
 
  48 +    else (str or bytes or None)
 
  50 +{"2.7": dead, "3.7": (long_live or die_hard)}
 
  51 +{"2.7": dead, "3.7": (long_live or die_hard), **{"3.6": verygood}}
 
  53 -{'2.7', '3.6', '3.7', '3.8', '3.9', ('4.0' if gilectomy else '3.10')}
 
  54 -({'a': 'b'}, (True or False), (+value), 'string', b'bytes') or None
 
  55 +{"2.7", "3.6", "3.7", "3.8", "3.9", ("4.0" if gilectomy else "3.10")}
 
  56 +({"a": "b"}, (True or False), (+value), "string", b"bytes") or None
 
  62  [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
 
  73 -[this_is_a_very_long_variable_which_will_force_a_delimiter_split, element, another, *more]
 
  85 +    this_is_a_very_long_variable_which_will_force_a_delimiter_split,
 
  90  {i for i in (1, 2, 3)}
 
  91  {(i ** 2) for i in (1, 2, 3)}
 
  92 -{(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))}
 
  93 +{(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))}
 
  94  {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
 
  95  [i for i in (1, 2, 3)]
 
  96  [(i ** 2) for i in (1, 2, 3)]
 
  97 -[(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))]
 
  98 +[(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))]
 
  99  [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
 
 100  {i: 0 for i in (1, 2, 3)}
 
 101 -{i: j for i, j in ((1, 'a'), (2, 'b'), (3, 'c'))}
 
 102 +{i: j for i, j in ((1, "a"), (2, "b"), (3, "c"))}
 
 103  {a: b * 2 for a, b in dictionary.items()}
 
 104  {a: b * -2 for a, b in dictionary.items()}
 
 105 -{k: v for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension}
 
 108 +    for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension
 
 110  Python3 > Python2 > COBOL
 
 115 -call(arg, kwarg='hey')
 
 116 -call(arg, another, kwarg='hey', **kwargs)
 
 117 -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
 
 119 +call(arg, kwarg="hey")
 
 120 +call(arg, another, kwarg="hey", **kwargs)
 
 122 +    this_is_a_very_long_variable_which_will_force_a_delimiter_split,
 
 127 +)  # note: no trailing comma pre-3.6
 
 129  call(a, *gidgets[:2])
 
 130  call(**self.screen_kwargs)
 
 131  call(b, **self.screen_kwargs)
 
 139 -tuple[str, int, float, dict[str, int],]
 
 141 +    str, int, float, dict[str, int],
 
 143  very_long_variable_name_filters: t.List[
 
 144      t.Tuple[str, t.Union[str, t.List[t.Optional[str]]]],
 
 146  xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(  # type: ignore
 
 147      sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
 
 149  xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(  # type: ignore
 
 150      sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
 
 152 -xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
 
 153 -    ..., List[SomeClass]
 
 154 -] = classmethod(sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__))  # type: ignore
 
 155 +xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(
 
 156 +    sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
 
 163 @@ -134,112 +169,170 @@
 
 168  (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
 
 169 -{'2.7': dead, '3.7': long_live or die_hard}
 
 170 -{'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}
 
 171 +{"2.7": dead, "3.7": long_live or die_hard}
 
 172 +{"2.7", "3.6", "3.7", "3.8", "3.9", "4.0" if gilectomy else "3.10"}
 
 173  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
 
 177  (i for i in (1, 2, 3))
 
 178  ((i ** 2) for i in (1, 2, 3))
 
 179 -((i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c')))
 
 180 +((i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c")))
 
 181  (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
 
 183 -{"id": "1","type": "type","started_at": now(),"ended_at": now() + timedelta(days=10),"priority": 1,"import_session_id": 1,**kwargs}
 
 187 +    "started_at": now(),
 
 188 +    "ended_at": now() + timedelta(days=10),
 
 190 +    "import_session_id": 1,
 
 201 -what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(vars_to_remove)
 
 202 -what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(vars_to_remove)
 
 203 -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()
 
 204 +what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(
 
 207 +what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(
 
 211 +    session.query(models.Customer.id)
 
 213 +        models.Customer.account_id == account_id, models.Customer.email == email_address
 
 215 +    .order_by(models.Customer.id.asc(),)
 
 219  authors.łukasz.say_thanks()
 
 221      A: 0.25 * (10.0 / 12),
 
 222      B: 0.1 * (10.0 / 12),
 
 223      C: 0.1 * (10.0 / 12),
 
 224      D: 0.1 * (10.0 / 12),
 
 229      yield from outside_of_generator
 
 239      await some.complicated[0].call(with_args=(True or (1 is not 1)))
 
 244  print(**{1: 3} if False else {x: x for x in range(3)})
 
 245 -print(* lambda x: x)
 
 246 -assert(not Test),("Short message")
 
 247 -assert this is ComplexTest and not requirements.fit_in_a_single_line(force=False), "Short message"
 
 248 -assert(((parens is TooMany)))
 
 249 -for x, in (1,), (2,), (3,): ...
 
 251 -for z in (i for i in (1, 2, 3)): ...
 
 252 -for i in (call()): ...
 
 253 -for j in (1 + (2 + 3)): ...
 
 254 -while(this and that): ...
 
 255 -for addr_family, addr_type, addr_proto, addr_canonname, addr_sockaddr in socket.getaddrinfo('google.com', 'http'):
 
 257 +assert not Test, "Short message"
 
 258 +assert this is ComplexTest and not requirements.fit_in_a_single_line(
 
 261 +assert parens is TooMany
 
 262 +for (x,) in (1,), (2,), (3,):
 
 266 +for z in (i for i in (1, 2, 3)):
 
 270 +for j in 1 + (2 + 3):
 
 272 +while this and that:
 
 280 +) in socket.getaddrinfo("google.com", "http"):
 
 282 -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
 
 283 -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
 
 284 -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
 
 285 -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
 
 287 -    threading.current_thread() != threading.main_thread() and
 
 288 -    threading.current_thread() != threading.main_thread() or
 
 289 -    signal.getsignal(signal.SIGINT) != signal.default_int_handler
 
 293 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
 
 294 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 298 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &
 
 299 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 303 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
 
 304 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 308 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -
 
 309 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 313 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *
 
 314 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 318 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa /
 
 319 -    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 323 -    ~ 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
 
 327 -    ~ 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
 
 331 -    ~ 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
 
 333 +    aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
 
 334 +    in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
 
 337 +    aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
 
 338 +    not in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
 
 341 +    aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
 
 342 +    is qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
 
 345 +    aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
 
 346 +    is not qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
 
 349 +    threading.current_thread() != threading.main_thread()
 
 350 +    and threading.current_thread() != threading.main_thread()
 
 351 +    or signal.getsignal(signal.SIGINT) != signal.default_int_handler
 
 355 +    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 356 +    | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 360 +    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 361 +    & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 365 +    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 366 +    + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 370 +    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 371 +    - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 375 +    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 376 +    * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 380 +    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 381 +    / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 385 +    ~aaaa.a + aaaa.b - aaaa.c * aaaa.d / aaaa.e
 
 386 +    | aaaa.f & aaaa.g % aaaa.h ^ aaaa.i << aaaa.k >> aaaa.l ** aaaa.m // aaaa.n
 
 390 +    ~aaaaaaaa.a + aaaaaaaa.b - aaaaaaaa.c @ aaaaaaaa.d / aaaaaaaa.e
 
 391 +    | aaaaaaaa.f & aaaaaaaa.g % aaaaaaaa.h
 
 392 +    ^ aaaaaaaa.i << aaaaaaaa.k >> aaaaaaaa.l ** aaaaaaaa.m // aaaaaaaa.n
 
 396 +    ~aaaaaaaaaaaaaaaa.a
 
 397 +    + aaaaaaaaaaaaaaaa.b
 
 398 +    - aaaaaaaaaaaaaaaa.c * aaaaaaaaaaaaaaaa.d @ aaaaaaaaaaaaaaaa.e
 
 399 +    | aaaaaaaaaaaaaaaa.f & aaaaaaaaaaaaaaaa.g % aaaaaaaaaaaaaaaa.h
 
 400 +    ^ aaaaaaaaaaaaaaaa.i
 
 401 +    << aaaaaaaaaaaaaaaa.k
 
 402 +    >> aaaaaaaaaaaaaaaa.l ** aaaaaaaaaaaaaaaa.m // aaaaaaaaaaaaaaaa.n
 
 406  # standalone comment at ENDMARKER