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

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