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 -flags & ~ select.EPOLLIN and waiters.write_task is not None
21 +flags & ~select.EPOLLIN and waiters.write_task is not None
24 lambda a, b, c=True: a
25 -lambda a, b, c=True, *, d=(1 << v2), e='str': a
26 -lambda a, b, c=True, *vararg, d=(v1 << 2), e='str', **kwargs: a + b
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 manylambdas = lambda x=lambda y=lambda z=1: z: y(): x()
30 -foo = (lambda port_id, ignore_missing: {"port1": port1_resource, "port2": port2_resource}[port_id])
31 +foo = lambda port_id, ignore_missing: {
32 + "port1": port1_resource,
33 + "port2": port2_resource,
36 str or None if True else str or bytes or None
37 (str or None) if True else (str or bytes or None)
38 str or None if (1 if True else 2) else str or bytes or None
39 (str or None) if (1 if True else 2) else (str or bytes or None)
40 -((super_long_variable_name or None) if (1 if super_long_test_name else 2) else (str or bytes or None))
41 -{'2.7': dead, '3.7': (long_live or die_hard)}
42 -{'2.7': dead, '3.7': (long_live or die_hard), **{'3.6': verygood}}
44 + (super_long_variable_name or None)
45 + if (1 if super_long_test_name else 2)
46 + 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
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
60 [1, 2, 3, 4, 5, 6, 7, 8, 9, (10 or A), (11 or B), (12 or C)]
67 -[this_is_a_very_long_variable_which_will_force_a_delimiter_split, element, another, *more]
71 + this_is_a_very_long_variable_which_will_force_a_delimiter_split,
76 {i for i in (1, 2, 3)}
77 {(i ** 2) for i in (1, 2, 3)}
78 -{(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))}
79 +{(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))}
80 {((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)}
81 [i for i in (1, 2, 3)]
82 [(i ** 2) for i in (1, 2, 3)]
83 -[(i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c'))]
84 +[(i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c"))]
85 [((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3)]
86 {i: 0 for i in (1, 2, 3)}
87 -{i: j for i, j in ((1, 'a'), (2, 'b'), (3, 'c'))}
88 +{i: j for i, j in ((1, "a"), (2, "b"), (3, "c"))}
89 {a: b * 2 for a, b in dictionary.items()}
90 {a: b * -2 for a, b in dictionary.items()}
91 -{k: v for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension}
94 + for k, v in this_is_a_very_long_variable_which_will_cause_a_trailing_comma_which_breaks_the_comprehension
96 Python3 > Python2 > COBOL
101 -call(arg, kwarg='hey')
102 -call(arg, another, kwarg='hey', **kwargs)
103 -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
105 +call(arg, kwarg="hey")
106 +call(arg, another, kwarg="hey", **kwargs)
108 + this_is_a_very_long_variable_which_will_force_a_delimiter_split,
113 +) # note: no trailing comma pre-3.6
115 call(a, *gidgets[:2])
116 call(**self.screen_kwargs)
117 call(b, **self.screen_kwargs)
125 -tuple[str, int, float, dict[str, int],]
126 +tuple[str, int, float, dict[str, int]]
127 very_long_variable_name_filters: t.List[
128 t.Tuple[str, t.Union[str, t.List[t.Optional[str]]]],
130 xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
131 sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
133 -xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod( # type: ignore
134 - sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
136 xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[
138 -] = classmethod(sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)) # type: ignore
139 +] = classmethod( # type: ignore
140 + sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
142 +xxxx_xxx_xxxx_xxxxx_xxxx_xxx: Callable[..., List[SomeClass]] = classmethod(
143 + sync(async_xxxx_xxx_xxxx_xxxxx_xxxx_xxx.__func__)
150 @@ -133,113 +156,171 @@
155 (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
156 -{'2.7': dead, '3.7': long_live or die_hard}
157 -{'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}
158 +{"2.7": dead, "3.7": long_live or die_hard}
159 +{"2.7", "3.6", "3.7", "3.8", "3.9", "4.0" if gilectomy else "3.10"}
160 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or A, 11 or B, 12 or C]
164 (i for i in (1, 2, 3))
165 ((i ** 2) for i in (1, 2, 3))
166 -((i ** 2) for i, _ in ((1, 'a'), (2, 'b'), (3, 'c')))
167 +((i ** 2) for i, _ in ((1, "a"), (2, "b"), (3, "c")))
168 (((i ** 2) + j) for i in (1, 2, 3) for j in (1, 2, 3))
170 -{"id": "1","type": "type","started_at": now(),"ended_at": now() + timedelta(days=10),"priority": 1,"import_session_id": 1,**kwargs}
174 + "started_at": now(),
175 + "ended_at": now() + timedelta(days=10),
177 + "import_session_id": 1,
188 -what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(vars_to_remove)
189 -what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(vars_to_remove)
190 -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()
191 +what_is_up_with_those_new_coord_names = (coord_names + set(vars_to_create)) + set(
194 +what_is_up_with_those_new_coord_names = (coord_names | set(vars_to_create)) - set(
198 + session.query(models.Customer.id)
200 + models.Customer.account_id == account_id, models.Customer.email == email_address
202 + .order_by(models.Customer.id.asc())
206 authors.łukasz.say_thanks()
208 A: 0.25 * (10.0 / 12),
209 B: 0.1 * (10.0 / 12),
210 C: 0.1 * (10.0 / 12),
211 D: 0.1 * (10.0 / 12),
216 yield from outside_of_generator
226 await some.complicated[0].call(with_args=(True or (1 is not 1)))
231 print(**{1: 3} if False else {x: x for x in range(3)})
232 -print(* lambda x: x)
233 -assert(not Test),("Short message")
234 -assert this is ComplexTest and not requirements.fit_in_a_single_line(force=False), "Short message"
235 -assert(((parens is TooMany)))
236 -for x, in (1,), (2,), (3,): ...
238 -for z in (i for i in (1, 2, 3)): ...
239 -for i in (call()): ...
240 -for j in (1 + (2 + 3)): ...
241 -while(this and that): ...
242 -for addr_family, addr_type, addr_proto, addr_canonname, addr_sockaddr in socket.getaddrinfo('google.com', 'http'):
244 +assert not Test, "Short message"
245 +assert this is ComplexTest and not requirements.fit_in_a_single_line(
248 +assert parens is TooMany
249 +for (x,) in (1,), (2,), (3,):
253 +for z in (i for i in (1, 2, 3)):
257 +for j in 1 + (2 + 3):
259 +while this and that:
267 +) in socket.getaddrinfo("google.com", "http"):
269 -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
270 -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
271 -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
272 -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
274 - threading.current_thread() != threading.main_thread() and
275 - threading.current_thread() != threading.main_thread() or
276 - signal.getsignal(signal.SIGINT) != signal.default_int_handler
280 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
281 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
285 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &
286 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
290 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
291 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
295 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -
296 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
300 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *
301 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
305 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa /
306 - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
310 - ~ 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
314 - ~ 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
318 - ~ 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
320 + aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
321 + in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
324 + aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
325 + not in qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
328 + aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
329 + is qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
332 + aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii.jjjj.kkkk.llll.mmmm.nnnn.oooo.pppp
333 + is not qqqq.rrrr.ssss.tttt.uuuu.vvvv.xxxx.yyyy.zzzz
336 + threading.current_thread() != threading.main_thread()
337 + and threading.current_thread() != threading.main_thread()
338 + or signal.getsignal(signal.SIGINT) != signal.default_int_handler
342 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
343 + | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
347 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
348 + & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
352 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
353 + + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
357 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
358 + - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
362 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
363 + * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
367 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
368 + / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
372 + ~aaaa.a + aaaa.b - aaaa.c * aaaa.d / aaaa.e
373 + | aaaa.f & aaaa.g % aaaa.h ^ aaaa.i << aaaa.k >> aaaa.l ** aaaa.m // aaaa.n
377 + ~aaaaaaaa.a + aaaaaaaa.b - aaaaaaaa.c @ aaaaaaaa.d / aaaaaaaa.e
378 + | aaaaaaaa.f & aaaaaaaa.g % aaaaaaaa.h
379 + ^ aaaaaaaa.i << aaaaaaaa.k >> aaaaaaaa.l ** aaaaaaaa.m // aaaaaaaa.n
383 + ~aaaaaaaaaaaaaaaa.a
384 + + aaaaaaaaaaaaaaaa.b
385 + - aaaaaaaaaaaaaaaa.c * aaaaaaaaaaaaaaaa.d @ aaaaaaaaaaaaaaaa.e
386 + | aaaaaaaaaaaaaaaa.f & aaaaaaaaaaaaaaaa.g % aaaaaaaaaaaaaaaa.h
387 + ^ aaaaaaaaaaaaaaaa.i
388 + << aaaaaaaaaaaaaaaa.k
389 + >> aaaaaaaaaaaaaaaa.l ** aaaaaaaaaaaaaaaa.m // aaaaaaaaaaaaaaaa.n
393 # standalone comment at ENDMARKER