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

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