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