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

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