]> git.madduck.net Git - etc/vim.git/blob - docs/change_log.md

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

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.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Simplify black code by using generator expressions
[etc/vim.git] / docs / change_log.md
1 [//]: # "NOTE: THIS FILE WAS AUTOGENERATED FROM CHANGES.md"
2
3 ## Change Log
4
5 ### 20.8b1
6
7 #### _Packaging_
8
9 - explicitly depend on Click 7.1.2 or newer as `Black` no longer works with versions
10   older than 7.0
11
12 ### 20.8b0
13
14 #### _Black_
15
16 - re-implemented support for explicit trailing commas: now it works consistently within
17   any bracket pair, including nested structures (#1288 and duplicates)
18
19 - `Black` now reindents docstrings when reindenting code around it (#1053)
20
21 - `Black` now shows colored diffs (#1266)
22
23 - `Black` is now packaged using 'py3' tagged wheels (#1388)
24
25 - `Black` now supports Python 3.8 code, e.g. star expressions in return statements
26   (#1121)
27
28 - `Black` no longer normalizes capital R-string prefixes as those have a
29   community-accepted meaning (#1244)
30
31 - `Black` now uses exit code 2 when specified configuration file doesn't exit (#1361)
32
33 - `Black` now works on AWS Lambda (#1141)
34
35 - added `--force-exclude` argument (#1032)
36
37 - removed deprecated `--py36` option (#1236)
38
39 - fixed `--diff` output when EOF is encountered (#526)
40
41 - fixed `# fmt: off` handling around decorators (#560)
42
43 - fixed unstable formatting with some `# type: ignore` comments (#1113)
44
45 - fixed invalid removal on organizing brackets followed by indexing (#1575)
46
47 - introduced `black-primer`, a CI tool that allows us to run regression tests against
48   existing open source users of Black (#1402)
49
50 - introduced property-based fuzzing to our test suite based on Hypothesis and
51   Hypothersmith (#1566)
52
53 - implemented experimental and disabled by default long string rewrapping (#1132),
54   hidden under a `--experimental-string-processing` flag while it's being worked on;
55   this is an undocumented and unsupported feature, you lose Internet points for
56   depending on it (#1609)
57
58 #### Vim plugin
59
60 - prefer virtualenv packages over global packages (#1383)
61
62 ### 19.10b0
63
64 - added support for PEP 572 assignment expressions (#711)
65
66 - added support for PEP 570 positional-only arguments (#943)
67
68 - added support for async generators (#593)
69
70 - added support for pre-splitting collections by putting an explicit trailing comma
71   inside (#826)
72
73 - added `black -c` as a way to format code passed from the command line (#761)
74
75 - --safe now works with Python 2 code (#840)
76
77 - fixed grammar selection for Python 2-specific code (#765)
78
79 - fixed feature detection for trailing commas in function definitions and call sites
80   (#763)
81
82 - `# fmt: off`/`# fmt: on` comment pairs placed multiple times within the same block of
83   code now behave correctly (#1005)
84
85 - _Black_ no longer crashes on Windows machines with more than 61 cores (#838)
86
87 - _Black_ no longer crashes on standalone comments prepended with a backslash (#767)
88
89 - _Black_ no longer crashes on `from` ... `import` blocks with comments (#829)
90
91 - _Black_ no longer crashes on Python 3.7 on some platform configurations (#494)
92
93 - _Black_ no longer fails on comments in from-imports (#671)
94
95 - _Black_ no longer fails when the file starts with a backslash (#922)
96
97 - _Black_ no longer merges regular comments with type comments (#1027)
98
99 - _Black_ no longer splits long lines that contain type comments (#997)
100
101 - removed unnecessary parentheses around `yield` expressions (#834)
102
103 - added parentheses around long tuples in unpacking assignments (#832)
104
105 - added parentheses around complex powers when they are prefixed by a unary operator
106   (#646)
107
108 - fixed bug that led _Black_ format some code with a line length target of 1 (#762)
109
110 - _Black_ no longer introduces quotes in f-string subexpressions on string boundaries
111   (#863)
112
113 - if _Black_ puts parenthesis around a single expression, it moves comments to the
114   wrapped expression instead of after the brackets (#872)
115
116 - `blackd` now returns the version of _Black_ in the response headers (#1013)
117
118 - `blackd` can now output the diff of formats on source code when the `X-Diff` header is
119   provided (#969)
120
121 ### 19.3b0
122
123 - new option `--target-version` to control which Python versions _Black_-formatted code
124   should target (#618)
125
126 - deprecated `--py36` (use `--target-version=py36` instead) (#724)
127
128 - _Black_ no longer normalizes numeric literals to include `_` separators (#696)
129
130 - long `del` statements are now split into multiple lines (#698)
131
132 - type comments are no longer mangled in function signatures
133
134 - improved performance of formatting deeply nested data structures (#509)
135
136 - _Black_ now properly formats multiple files in parallel on Windows (#632)
137
138 - _Black_ now creates cache files atomically which allows it to be used in parallel
139   pipelines (like `xargs -P8`) (#673)
140
141 - _Black_ now correctly indents comments in files that were previously formatted with
142   tabs (#262)
143
144 - `blackd` now supports CORS (#622)
145
146 ### 18.9b0
147
148 - numeric literals are now formatted by _Black_ (#452, #461, #464, #469):
149
150   - numeric literals are normalized to include `_` separators on Python 3.6+ code
151
152   - added `--skip-numeric-underscore-normalization` to disable the above behavior and
153     leave numeric underscores as they were in the input
154
155   - code with `_` in numeric literals is recognized as Python 3.6+
156
157   - most letters in numeric literals are lowercased (e.g., in `1e10`, `0x01`)
158
159   - hexadecimal digits are always uppercased (e.g. `0xBADC0DE`)
160
161 - added `blackd`, see [its documentation](#blackd) for more info (#349)
162
163 - adjacent string literals are now correctly split into multiple lines (#463)
164
165 - trailing comma is now added to single imports that don't fit on a line (#250)
166
167 - cache is now populated when `--check` is successful for a file which speeds up
168   consecutive checks of properly formatted unmodified files (#448)
169
170 - whitespace at the beginning of the file is now removed (#399)
171
172 - fixed mangling [pweave](http://mpastell.com/pweave/) and
173   [Spyder IDE](https://www.spyder-ide.org/) special comments (#532)
174
175 - fixed unstable formatting when unpacking big tuples (#267)
176
177 - fixed parsing of `__future__` imports with renames (#389)
178
179 - fixed scope of `# fmt: off` when directly preceding `yield` and other nodes (#385)
180
181 - fixed formatting of lambda expressions with default arguments (#468)
182
183 - fixed `async for` statements: _Black_ no longer breaks them into separate lines (#372)
184
185 - note: the Vim plugin stopped registering `,=` as a default chord as it turned out to
186   be a bad idea (#415)
187
188 ### 18.6b4
189
190 - hotfix: don't freeze when multiple comments directly precede `# fmt: off` (#371)
191
192 ### 18.6b3
193
194 - typing stub files (`.pyi`) now have blank lines added after constants (#340)
195
196 - `# fmt: off` and `# fmt: on` are now much more dependable:
197
198   - they now work also within bracket pairs (#329)
199
200   - they now correctly work across function/class boundaries (#335)
201
202   - they now work when an indentation block starts with empty lines or misaligned
203     comments (#334)
204
205 - made Click not fail on invalid environments; note that Click is right but the
206   likelihood we'll need to access non-ASCII file paths when dealing with Python source
207   code is low (#277)
208
209 - fixed improper formatting of f-strings with quotes inside interpolated expressions
210   (#322)
211
212 - fixed unnecessary slowdown when long list literals where found in a file
213
214 - fixed unnecessary slowdown on AST nodes with very many siblings
215
216 - fixed cannibalizing backslashes during string normalization
217
218 - fixed a crash due to symbolic links pointing outside of the project directory (#338)
219
220 ### 18.6b2
221
222 - added `--config` (#65)
223
224 - added `-h` equivalent to `--help` (#316)
225
226 - fixed improper unmodified file caching when `-S` was used
227
228 - fixed extra space in string unpacking (#305)
229
230 - fixed formatting of empty triple quoted strings (#313)
231
232 - fixed unnecessary slowdown in comment placement calculation on lines without comments
233
234 ### 18.6b1
235
236 - hotfix: don't output human-facing information on stdout (#299)
237
238 - hotfix: don't output cake emoji on non-zero return code (#300)
239
240 ### 18.6b0
241
242 - added `--include` and `--exclude` (#270)
243
244 - added `--skip-string-normalization` (#118)
245
246 - added `--verbose` (#283)
247
248 - the header output in `--diff` now actually conforms to the unified diff spec
249
250 - fixed long trivial assignments being wrapped in unnecessary parentheses (#273)
251
252 - fixed unnecessary parentheses when a line contained multiline strings (#232)
253
254 - fixed stdin handling not working correctly if an old version of Click was used (#276)
255
256 - _Black_ now preserves line endings when formatting a file in place (#258)
257
258 ### 18.5b1
259
260 - added `--pyi` (#249)
261
262 - added `--py36` (#249)
263
264 - Python grammar pickle caches are stored with the formatting caches, making _Black_
265   work in environments where site-packages is not user-writable (#192)
266
267 - _Black_ now enforces a PEP 257 empty line after a class-level docstring (and/or
268   fields) and the first method
269
270 - fixed invalid code produced when standalone comments were present in a trailer that
271   was omitted from line splitting on a large expression (#237)
272
273 - fixed optional parentheses being removed within `# fmt: off` sections (#224)
274
275 - fixed invalid code produced when stars in very long imports were incorrectly wrapped
276   in optional parentheses (#234)
277
278 - fixed unstable formatting when inline comments were moved around in a trailer that was
279   omitted from line splitting on a large expression (#238)
280
281 - fixed extra empty line between a class declaration and the first method if no class
282   docstring or fields are present (#219)
283
284 - fixed extra empty line between a function signature and an inner function or inner
285   class (#196)
286
287 ### 18.5b0
288
289 - call chains are now formatted according to the
290   [fluent interfaces](https://en.wikipedia.org/wiki/Fluent_interface) style (#67)
291
292 - data structure literals (tuples, lists, dictionaries, and sets) are now also always
293   exploded like imports when they don't fit in a single line (#152)
294
295 - slices are now formatted according to PEP 8 (#178)
296
297 - parentheses are now also managed automatically on the right-hand side of assignments
298   and return statements (#140)
299
300 - math operators now use their respective priorities for delimiting multiline
301   expressions (#148)
302
303 - optional parentheses are now omitted on expressions that start or end with a bracket
304   and only contain a single operator (#177)
305
306 - empty parentheses in a class definition are now removed (#145, #180)
307
308 - string prefixes are now standardized to lowercase and `u` is removed on Python 3.6+
309   only code and Python 2.7+ code with the `unicode_literals` future import (#188, #198,
310   #199)
311
312 - typing stub files (`.pyi`) are now formatted in a style that is consistent with PEP
313   484 (#207, #210)
314
315 - progress when reformatting many files is now reported incrementally
316
317 - fixed trailers (content with brackets) being unnecessarily exploded into their own
318   lines after a dedented closing bracket (#119)
319
320 - fixed an invalid trailing comma sometimes left in imports (#185)
321
322 - fixed non-deterministic formatting when multiple pairs of removable parentheses were
323   used (#183)
324
325 - fixed multiline strings being unnecessarily wrapped in optional parentheses in long
326   assignments (#215)
327
328 - fixed not splitting long from-imports with only a single name
329
330 - fixed Python 3.6+ file discovery by also looking at function calls with unpacking.
331   This fixed non-deterministic formatting if trailing commas where used both in function
332   signatures with stars and function calls with stars but the former would be
333   reformatted to a single line.
334
335 - fixed crash on dealing with optional parentheses (#193)
336
337 - fixed "is", "is not", "in", and "not in" not considered operators for splitting
338   purposes
339
340 - fixed crash when dead symlinks where encountered
341
342 ### 18.4a4
343
344 - don't populate the cache on `--check` (#175)
345
346 ### 18.4a3
347
348 - added a "cache"; files already reformatted that haven't changed on disk won't be
349   reformatted again (#109)
350
351 - `--check` and `--diff` are no longer mutually exclusive (#149)
352
353 - generalized star expression handling, including double stars; this fixes
354   multiplication making expressions "unsafe" for trailing commas (#132)
355
356 - _Black_ no longer enforces putting empty lines behind control flow statements (#90)
357
358 - _Black_ now splits imports like "Mode 3 + trailing comma" of isort (#127)
359
360 - fixed comment indentation when a standalone comment closes a block (#16, #32)
361
362 - fixed standalone comments receiving extra empty lines if immediately preceding a
363   class, def, or decorator (#56, #154)
364
365 - fixed `--diff` not showing entire path (#130)
366
367 - fixed parsing of complex expressions after star and double stars in function calls
368   (#2)
369
370 - fixed invalid splitting on comma in lambda arguments (#133)
371
372 - fixed missing splits of ternary expressions (#141)
373
374 ### 18.4a2
375
376 - fixed parsing of unaligned standalone comments (#99, #112)
377
378 - fixed placement of dictionary unpacking inside dictionary literals (#111)
379
380 - Vim plugin now works on Windows, too
381
382 - fixed unstable formatting when encountering unnecessarily escaped quotes in a string
383   (#120)
384
385 ### 18.4a1
386
387 - added `--quiet` (#78)
388
389 - added automatic parentheses management (#4)
390
391 - added [pre-commit](https://pre-commit.com) integration (#103, #104)
392
393 - fixed reporting on `--check` with multiple files (#101, #102)
394
395 - fixed removing backslash escapes from raw strings (#100, #105)
396
397 ### 18.4a0
398
399 - added `--diff` (#87)
400
401 - add line breaks before all delimiters, except in cases like commas, to better comply
402   with PEP 8 (#73)
403
404 - standardize string literals to use double quotes (almost) everywhere (#75)
405
406 - fixed handling of standalone comments within nested bracketed expressions; _Black_
407   will no longer produce super long lines or put all standalone comments at the end of
408   the expression (#22)
409
410 - fixed 18.3a4 regression: don't crash and burn on empty lines with trailing whitespace
411   (#80)
412
413 - fixed 18.3a4 regression: `# yapf: disable` usage as trailing comment would cause
414   _Black_ to not emit the rest of the file (#95)
415
416 - when CTRL+C is pressed while formatting many files, _Black_ no longer freaks out with
417   a flurry of asyncio-related exceptions
418
419 - only allow up to two empty lines on module level and only single empty lines within
420   functions (#74)
421
422 ### 18.3a4
423
424 - `# fmt: off` and `# fmt: on` are implemented (#5)
425
426 - automatic detection of deprecated Python 2 forms of print statements and exec
427   statements in the formatted file (#49)
428
429 - use proper spaces for complex expressions in default values of typed function
430   arguments (#60)
431
432 - only return exit code 1 when --check is used (#50)
433
434 - don't remove single trailing commas from square bracket indexing (#59)
435
436 - don't omit whitespace if the previous factor leaf wasn't a math operator (#55)
437
438 - omit extra space in kwarg unpacking if it's the first argument (#46)
439
440 - omit extra space in
441   [Sphinx auto-attribute comments](http://www.sphinx-doc.org/en/stable/ext/autodoc.html#directive-autoattribute)
442   (#68)
443
444 ### 18.3a3
445
446 - don't remove single empty lines outside of bracketed expressions (#19)
447
448 - added ability to pipe formatting from stdin to stdin (#25)
449
450 - restored ability to format code with legacy usage of `async` as a name (#20, #42)
451
452 - even better handling of numpy-style array indexing (#33, again)
453
454 ### 18.3a2
455
456 - changed positioning of binary operators to occur at beginning of lines instead of at
457   the end, following
458   [a recent change to PEP 8](https://github.com/python/peps/commit/c59c4376ad233a62ca4b3a6060c81368bd21e85b)
459   (#21)
460
461 - ignore empty bracket pairs while splitting. This avoids very weirdly looking
462   formattings (#34, #35)
463
464 - remove a trailing comma if there is a single argument to a call
465
466 - if top level functions were separated by a comment, don't put four empty lines after
467   the upper function
468
469 - fixed unstable formatting of newlines with imports
470
471 - fixed unintentional folding of post scriptum standalone comments into last statement
472   if it was a simple statement (#18, #28)
473
474 - fixed missing space in numpy-style array indexing (#33)
475
476 - fixed spurious space after star-based unary expressions (#31)
477
478 ### 18.3a1
479
480 - added `--check`
481
482 - only put trailing commas in function signatures and calls if it's safe to do so. If
483   the file is Python 3.6+ it's always safe, otherwise only safe if there are no `*args`
484   or `**kwargs` used in the signature or call. (#8)
485
486 - fixed invalid spacing of dots in relative imports (#6, #13)
487
488 - fixed invalid splitting after comma on unpacked variables in for-loops (#23)
489
490 - fixed spurious space in parenthesized set expressions (#7)
491
492 - fixed spurious space after opening parentheses and in default arguments (#14, #17)
493
494 - fixed spurious space after unary operators when the operand was a complex expression
495   (#15)
496
497 ### 18.3a0
498
499 - first published version, Happy 🍰 Day 2018!
500
501 - alpha quality
502
503 - date-versioned (see: https://calver.org/)