]> 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:

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