]> git.madduck.net Git - etc/vim.git/blob - CHANGES.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:

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