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

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