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

Allow setting custom cache directory on all platforms (#2739)
[etc/vim.git] / CHANGES.md
1 # Change Log
2
3 ## Unreleased
4
5 ### _Black_
6
7 - **Remove Python 2 support** (#2740)
8 - Do not accept bare carriage return line endings in pyproject.toml (#2408)
9 - Improve error message for invalid regular expression (#2678)
10 - Improve error message when parsing fails during AST safety check by embedding the
11   underlying SyntaxError (#2693)
12 - Fix mapping cases that contain as-expressions, like `case {"key": 1 | 2 as password}`
13   (#2686)
14 - Fix cases that contain multiple top-level as-expressions, like `case 1 as a, 2 as b`
15   (#2716)
16 - Fix call patterns that contain as-expressions with keyword arguments, like
17   `case Foo(bar=baz as quux)` (#2749)
18 - No longer color diff headers white as it's unreadable in light themed terminals
19   (#2691)
20 - Tuple unpacking on `return` and `yield` constructs now implies 3.8+ (#2700)
21 - Unparenthesized tuples on annotated assignments (e.g
22   `values: Tuple[int, ...] = 1, 2, 3`) now implies 3.8+ (#2708)
23 - Allow setting custom cache directory on all platforms with environment variable
24   `BLACK_CACHE_DIR` (#2739).
25 - Text coloring added in the final statistics (#2712)
26 - For stubs, one blank line between class attributes and methods is now kept if there's
27   at least one pre-existing blank line (#2736)
28 - Verbose mode also now describes how a project root was discovered and which paths will
29   be formatted. (#2526)
30 - Speed-up the new backtracking parser about 4X in general (enabled when
31   `--target-version` is set to 3.10 and higher). (#2728)
32 - Fix handling of standalone `match()` or `case()` when there is a trailing newline or a
33   comment inside of the parentheses. (#2760)
34 - Black now normalizes string prefix order (#2297)
35 - Add configuration option (`python-cell-magics`) to format cells with custom magics in
36   Jupyter Notebooks (#2744)
37 - Deprecate `--experimental-string-processing` and move the functionality under
38   `--preview` (#2789)
39
40 ### Packaging
41
42 - All upper version bounds on dependencies have been removed (#2718)
43 - `typing-extensions` is no longer a required dependency in Python 3.10+ (#2772)
44 - Set `click` lower bound to `8.0.0` (#2791)
45
46 ### Preview style
47
48 - Introduce the `--preview` flag (#2752)
49 - Add `--experimental-string-processing` to the preview style (#2789)
50
51 ### Integrations
52
53 - Update GitHub action to support containerized runs (#2748)
54
55 ### Documentation
56
57 - Change protocol in pip installation instructions to `https://` (#2761)
58 - Change HTML theme to Furo primarily for its responsive design and mobile support
59   (#2793)
60
61 ## 21.12b0
62
63 ### _Black_
64
65 - Fix determination of f-string expression spans (#2654)
66 - Fix bad formatting of error messages about EOF in multi-line statements (#2343)
67 - Functions and classes in blocks now have more consistent surrounding spacing (#2472)
68 - `from __future__ import annotations` statement now implies Python 3.7+ (#2690)
69
70 #### Jupyter Notebook support
71
72 - Cell magics are now only processed if they are known Python cell magics. Earlier, all
73   cell magics were tokenized, leading to possible indentation errors e.g. with
74   `%%writefile`. (#2630)
75 - Fix assignment to environment variables in Jupyter Notebooks (#2642)
76
77 #### Python 3.10 support
78
79 - Point users to using `--target-version py310` if we detect 3.10-only syntax (#2668)
80 - Fix `match` statements with open sequence subjects, like `match a, b:` or
81   `match a, *b:` (#2639) (#2659)
82 - Fix `match`/`case` statements that contain `match`/`case` soft keywords multiple
83   times, like `match re.match()` (#2661)
84 - Fix `case` statements with an inline body (#2665)
85 - Fix styling of starred expressions inside `match` subject (#2667)
86 - Fix parser error location on invalid syntax in a `match` statement (#2649)
87 - Fix Python 3.10 support on platforms without ProcessPoolExecutor (#2631)
88 - Improve parsing performance on code that uses `match` under `--target-version py310`
89   up to ~50% (#2670)
90
91 ### Packaging
92
93 - Remove dependency on `regex` (#2644) (#2663)
94
95 ## 21.11b1
96
97 ### _Black_
98
99 - Bumped regex version minimum to 2021.4.4 to fix Pattern class usage (#2621)
100
101 ## 21.11b0
102
103 ### _Black_
104
105 - Warn about Python 2 deprecation in more cases by improving Python 2 only syntax
106   detection (#2592)
107 - Add experimental PyPy support (#2559)
108 - Add partial support for the match statement. As it's experimental, it's only enabled
109   when `--target-version py310` is explicitly specified (#2586)
110 - Add support for parenthesized with (#2586)
111 - Declare support for Python 3.10 for running Black (#2562)
112
113 ### Integrations
114
115 - Fixed vim plugin with Python 3.10 by removing deprecated distutils import (#2610)
116 - The vim plugin now parses `skip_magic_trailing_comma` from pyproject.toml (#2613)
117
118 ## 21.10b0
119
120 ### _Black_
121
122 - Document stability policy, that will apply for non-beta releases (#2529)
123 - Add new `--workers` parameter (#2514)
124 - Fixed feature detection for positional-only arguments in lambdas (#2532)
125 - Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (#2519)
126 - Fixed a Python 3.10 compatibility issue where the loop argument was still being passed
127   even though it has been removed (#2580)
128 - Deprecate Python 2 formatting support (#2523)
129
130 ### _Blackd_
131
132 - Remove dependency on aiohttp-cors (#2500)
133 - Bump required aiohttp version to 3.7.4 (#2509)
134
135 ### _Black-Primer_
136
137 - Add primer support for --projects (#2555)
138 - Print primer summary after individual failures (#2570)
139
140 ### Integrations
141
142 - Allow to pass `target_version` in the vim plugin (#1319)
143 - Install build tools in docker file and use multi-stage build to keep the image size
144   down (#2582)
145
146 ## 21.9b0
147
148 ### Packaging
149
150 - Fix missing modules in self-contained binaries (#2466)
151 - Fix missing toml extra used during installation (#2475)
152
153 ## 21.8b0
154
155 ### _Black_
156
157 - Add support for formatting Jupyter Notebook files (#2357)
158 - Move from `appdirs` dependency to `platformdirs` (#2375)
159 - Present a more user-friendly error if .gitignore is invalid (#2414)
160 - The failsafe for accidentally added backslashes in f-string expressions has been
161   hardened to handle more edge cases during quote normalization (#2437)
162 - Avoid changing a function return type annotation's type to a tuple by adding a
163   trailing comma (#2384)
164 - Parsing support has been added for unparenthesized walruses in set literals, set
165   comprehensions, and indices (#2447).
166 - Pin `setuptools-scm` build-time dependency version (#2457)
167 - Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10
168   (#2460)
169
170 ### _Blackd_
171
172 - Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that
173   scan installed packages (#2440)
174
175 ### Integrations
176
177 - The provided pre-commit hooks no longer specify `language_version` to avoid overriding
178   `default_language_version` (#2430)
179
180 ## 21.7b0
181
182 ### _Black_
183
184 - Configuration files using TOML features higher than spec v0.5.0 are now supported
185   (#2301)
186 - Add primer support and test for code piped into black via STDIN (#2315)
187 - Fix internal error when `FORCE_OPTIONAL_PARENTHESES` feature is enabled (#2332)
188 - Accept empty stdin (#2346)
189 - Provide a more useful error when parsing fails during AST safety checks (#2304)
190
191 ### Docker
192
193 - Add new `latest_release` tag automation to follow latest black release on docker
194   images (#2374)
195
196 ### Integrations
197
198 - The vim plugin now searches upwards from the directory containing the current buffer
199   instead of the current working directory for pyproject.toml. (#1871)
200 - The vim plugin now reads the correct string normalization option in pyproject.toml
201   (#1869)
202 - The vim plugin no longer crashes Black when there's boolean values in pyproject.toml
203   (#1869)
204
205 ## 21.6b0
206
207 ### _Black_
208
209 - Fix failure caused by `fmt: skip` and indentation (#2281)
210 - Account for += assignment when deciding whether to split string (#2312)
211 - Correct max string length calculation when there are string operators (#2292)
212 - Fixed option usage when using the `--code` flag (#2259)
213 - Do not call `uvloop.install()` when _Black_ is used as a library (#2303)
214 - Added `--required-version` option to require a specific version to be running (#2300)
215 - Fix incorrect custom breakpoint indices when string group contains fake f-strings
216   (#2311)
217 - Fix regression where `R` prefixes would be lowercased for docstrings (#2285)
218 - Fix handling of named escapes (`\N{...}`) when `--experimental-string-processing` is
219   used (#2319)
220
221 ### Integrations
222
223 - The official Black action now supports choosing what version to use, and supports the
224   major 3 OSes. (#1940)
225
226 ## 21.5b2
227
228 ### _Black_
229
230 - A space is no longer inserted into empty docstrings (#2249)
231 - Fix handling of .gitignore files containing non-ASCII characters on Windows (#2229)
232 - Respect `.gitignore` files in all levels, not only `root/.gitignore` file (apply
233   `.gitignore` rules like `git` does) (#2225)
234 - Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227)
235 - Add extra uvloop install + import support if in python env (#2258)
236 - Fix --experimental-string-processing crash when matching parens are not found (#2283)
237 - Make sure to split lines that start with a string operator (#2286)
238 - Fix regular expression that black uses to identify f-expressions (#2287)
239
240 ### _Blackd_
241
242 - Add a lower bound for the `aiohttp-cors` dependency. Only 0.4.0 or higher is
243   supported. (#2231)
244
245 ### Packaging
246
247 - Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline
248   (#2198)
249 - Always build binaries with the latest available Python (#2260)
250
251 ### Documentation
252
253 - Add discussion of magic comments to FAQ page (#2272)
254 - `--experimental-string-processing` will be enabled by default in the future (#2273)
255 - Fix typos discovered by codespell (#2228)
256 - Fix Vim plugin installation instructions. (#2235)
257 - Add new Frequently Asked Questions page (#2247)
258 - Fix encoding + symlink issues preventing proper build on Windows (#2262)
259
260 ## 21.5b1
261
262 ### _Black_
263
264 - Refactor `src/black/__init__.py` into many files (#2206)
265
266 ### Documentation
267
268 - Replaced all remaining references to the
269   [`master`](https://github.com/psf/black/tree/main) branch with the
270   [`main`](https://github.com/psf/black/tree/main) branch. Some additional changes in
271   the source code were also made. (#2210)
272 - Sigificantly reorganized the documentation to make much more sense. Check them out by
273   heading over to [the stable docs on RTD](https://black.readthedocs.io/en/stable/).
274   (#2174)
275
276 ## 21.5b0
277
278 ### _Black_
279
280 - Set `--pyi` mode if `--stdin-filename` ends in `.pyi` (#2169)
281 - Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are
282   being called but with no arguments (#2182)
283
284 ### _Black-Primer_
285
286 - Add `--no-diff` to black-primer to suppress formatting changes (#2187)
287
288 ## 21.4b2
289
290 ### _Black_
291
292 - Fix crash if the user configuration directory is inaccessible. (#2158)
293
294 - Clarify
295   [circumstances](https://github.com/psf/black/blob/master/docs/the_black_code_style.md#pragmatism)
296   in which _Black_ may change the AST (#2159)
297
298 - Allow `.gitignore` rules to be overridden by specifying `exclude` in `pyproject.toml`
299   or on the command line. (#2170)
300
301 ### _Packaging_
302
303 - Install `primer.json` (used by `black-primer` by default) with black. (#2154)
304
305 ## 21.4b1
306
307 ### _Black_
308
309 - Fix crash on docstrings ending with "\\ ". (#2142)
310
311 - Fix crash when atypical whitespace is cleaned out of dostrings (#2120)
312
313 - Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags
314   in the name of the cache file. Without this fix, changes in these flags would not take
315   effect if the cache had already been populated. (#2131)
316
317 - Don't remove necessary parentheses from assignment expression containing assert /
318   return statements. (#2143)
319
320 ### _Packaging_
321
322 - Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling
323
324 ## 21.4b0
325
326 ### _Black_
327
328 - Fixed a rare but annoying formatting instability created by the combination of
329   optional trailing commas inserted by `Black` and optional parentheses looking at
330   pre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many
331   duplicates. (#2126)
332
333 - `Black` now processes one-line docstrings by stripping leading and trailing spaces,
334   and adding a padding space when needed to break up """". (#1740)
335
336 - `Black` now cleans up leading non-breaking spaces in comments (#2092)
337
338 - `Black` now respects `--skip-string-normalization` when normalizing multiline
339   docstring quotes (#1637)
340
341 - `Black` no longer removes all empty lines between non-function code and decorators
342   when formatting typing stubs. Now `Black` enforces a single empty line. (#1646)
343
344 - `Black` no longer adds an incorrect space after a parenthesized assignment expression
345   in if/while statements (#1655)
346
347 - Added `--skip-magic-trailing-comma` / `-C` to avoid using trailing commas as a reason
348   to split lines (#1824)
349
350 - fixed a crash when PWD=/ on POSIX (#1631)
351
352 - fixed "I/O operation on closed file" when using --diff (#1664)
353
354 - Prevent coloured diff output being interleaved with multiple files (#1673)
355
356 - Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711)
357
358 - Added parsing support for unparenthesized tuples and yield expressions in annotated
359   assignments (#1835)
360
361 - added `--extend-exclude` argument (PR #2005)
362
363 - speed up caching by avoiding pathlib (#1950)
364
365 - `--diff` correctly indicates when a file doesn't end in a newline (#1662)
366
367 - Added `--stdin-filename` argument to allow stdin to respect `--force-exclude` rules
368   (#1780)
369
370 - Lines ending with `fmt: skip` will now be not formatted (#1800)
371
372 - PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher
373
374 - PR #2053: Python 2 support is now optional, install with
375   `python3 -m pip install black[python2]` to maintain support.
376
377 - Exclude `venv` directory by default (#1683)
378
379 - Fixed "Black produced code that is not equivalent to the source" when formatting
380   Python 2 docstrings (#2037)
381
382 ### _Packaging_
383
384 - Self-contained native _Black_ binaries are now provided for releases via GitHub
385   Releases (#1743)
386
387 ## 20.8b1
388
389 ### _Packaging_
390
391 - explicitly depend on Click 7.1.2 or newer as `Black` no longer works with versions
392   older than 7.0
393
394 ## 20.8b0
395
396 ### _Black_
397
398 - re-implemented support for explicit trailing commas: now it works consistently within
399   any bracket pair, including nested structures (#1288 and duplicates)
400
401 - `Black` now reindents docstrings when reindenting code around it (#1053)
402
403 - `Black` now shows colored diffs (#1266)
404
405 - `Black` is now packaged using 'py3' tagged wheels (#1388)
406
407 - `Black` now supports Python 3.8 code, e.g. star expressions in return statements
408   (#1121)
409
410 - `Black` no longer normalizes capital R-string prefixes as those have a
411   community-accepted meaning (#1244)
412
413 - `Black` now uses exit code 2 when specified configuration file doesn't exit (#1361)
414
415 - `Black` now works on AWS Lambda (#1141)
416
417 - added `--force-exclude` argument (#1032)
418
419 - removed deprecated `--py36` option (#1236)
420
421 - fixed `--diff` output when EOF is encountered (#526)
422
423 - fixed `# fmt: off` handling around decorators (#560)
424
425 - fixed unstable formatting with some `# type: ignore` comments (#1113)
426
427 - fixed invalid removal on organizing brackets followed by indexing (#1575)
428
429 - introduced `black-primer`, a CI tool that allows us to run regression tests against
430   existing open source users of Black (#1402)
431
432 - introduced property-based fuzzing to our test suite based on Hypothesis and
433   Hypothersmith (#1566)
434
435 - implemented experimental and disabled by default long string rewrapping (#1132),
436   hidden under a `--experimental-string-processing` flag while it's being worked on;
437   this is an undocumented and unsupported feature, you lose Internet points for
438   depending on it (#1609)
439
440 ### Vim plugin
441
442 - prefer virtualenv packages over global packages (#1383)
443
444 ## 19.10b0
445
446 - added support for PEP 572 assignment expressions (#711)
447
448 - added support for PEP 570 positional-only arguments (#943)
449
450 - added support for async generators (#593)
451
452 - added support for pre-splitting collections by putting an explicit trailing comma
453   inside (#826)
454
455 - added `black -c` as a way to format code passed from the command line (#761)
456
457 - --safe now works with Python 2 code (#840)
458
459 - fixed grammar selection for Python 2-specific code (#765)
460
461 - fixed feature detection for trailing commas in function definitions and call sites
462   (#763)
463
464 - `# fmt: off`/`# fmt: on` comment pairs placed multiple times within the same block of
465   code now behave correctly (#1005)
466
467 - _Black_ no longer crashes on Windows machines with more than 61 cores (#838)
468
469 - _Black_ no longer crashes on standalone comments prepended with a backslash (#767)
470
471 - _Black_ no longer crashes on `from` ... `import` blocks with comments (#829)
472
473 - _Black_ no longer crashes on Python 3.7 on some platform configurations (#494)
474
475 - _Black_ no longer fails on comments in from-imports (#671)
476
477 - _Black_ no longer fails when the file starts with a backslash (#922)
478
479 - _Black_ no longer merges regular comments with type comments (#1027)
480
481 - _Black_ no longer splits long lines that contain type comments (#997)
482
483 - removed unnecessary parentheses around `yield` expressions (#834)
484
485 - added parentheses around long tuples in unpacking assignments (#832)
486
487 - added parentheses around complex powers when they are prefixed by a unary operator
488   (#646)
489
490 - fixed bug that led _Black_ format some code with a line length target of 1 (#762)
491
492 - _Black_ no longer introduces quotes in f-string subexpressions on string boundaries
493   (#863)
494
495 - if _Black_ puts parenthesis around a single expression, it moves comments to the
496   wrapped expression instead of after the brackets (#872)
497
498 - `blackd` now returns the version of _Black_ in the response headers (#1013)
499
500 - `blackd` can now output the diff of formats on source code when the `X-Diff` header is
501   provided (#969)
502
503 ## 19.3b0
504
505 - new option `--target-version` to control which Python versions _Black_-formatted code
506   should target (#618)
507
508 - deprecated `--py36` (use `--target-version=py36` instead) (#724)
509
510 - _Black_ no longer normalizes numeric literals to include `_` separators (#696)
511
512 - long `del` statements are now split into multiple lines (#698)
513
514 - type comments are no longer mangled in function signatures
515
516 - improved performance of formatting deeply nested data structures (#509)
517
518 - _Black_ now properly formats multiple files in parallel on Windows (#632)
519
520 - _Black_ now creates cache files atomically which allows it to be used in parallel
521   pipelines (like `xargs -P8`) (#673)
522
523 - _Black_ now correctly indents comments in files that were previously formatted with
524   tabs (#262)
525
526 - `blackd` now supports CORS (#622)
527
528 ## 18.9b0
529
530 - numeric literals are now formatted by _Black_ (#452, #461, #464, #469):
531
532   - numeric literals are normalized to include `_` separators on Python 3.6+ code
533
534   - added `--skip-numeric-underscore-normalization` to disable the above behavior and
535     leave numeric underscores as they were in the input
536
537   - code with `_` in numeric literals is recognized as Python 3.6+
538
539   - most letters in numeric literals are lowercased (e.g., in `1e10`, `0x01`)
540
541   - hexadecimal digits are always uppercased (e.g. `0xBADC0DE`)
542
543 - added `blackd`, see
544   [its documentation](https://github.com/psf/black/blob/18.9b0/README.md#blackd) for
545   more info (#349)
546
547 - adjacent string literals are now correctly split into multiple lines (#463)
548
549 - trailing comma is now added to single imports that don't fit on a line (#250)
550
551 - cache is now populated when `--check` is successful for a file which speeds up
552   consecutive checks of properly formatted unmodified files (#448)
553
554 - whitespace at the beginning of the file is now removed (#399)
555
556 - fixed mangling [pweave](http://mpastell.com/pweave/) and
557   [Spyder IDE](https://www.spyder-ide.org/) special comments (#532)
558
559 - fixed unstable formatting when unpacking big tuples (#267)
560
561 - fixed parsing of `__future__` imports with renames (#389)
562
563 - fixed scope of `# fmt: off` when directly preceding `yield` and other nodes (#385)
564
565 - fixed formatting of lambda expressions with default arguments (#468)
566
567 - fixed `async for` statements: _Black_ no longer breaks them into separate lines (#372)
568
569 - note: the Vim plugin stopped registering `,=` as a default chord as it turned out to
570   be a bad idea (#415)
571
572 ## 18.6b4
573
574 - hotfix: don't freeze when multiple comments directly precede `# fmt: off` (#371)
575
576 ## 18.6b3
577
578 - typing stub files (`.pyi`) now have blank lines added after constants (#340)
579
580 - `# fmt: off` and `# fmt: on` are now much more dependable:
581
582   - they now work also within bracket pairs (#329)
583
584   - they now correctly work across function/class boundaries (#335)
585
586   - they now work when an indentation block starts with empty lines or misaligned
587     comments (#334)
588
589 - made Click not fail on invalid environments; note that Click is right but the
590   likelihood we'll need to access non-ASCII file paths when dealing with Python source
591   code is low (#277)
592
593 - fixed improper formatting of f-strings with quotes inside interpolated expressions
594   (#322)
595
596 - fixed unnecessary slowdown when long list literals where found in a file
597
598 - fixed unnecessary slowdown on AST nodes with very many siblings
599
600 - fixed cannibalizing backslashes during string normalization
601
602 - fixed a crash due to symbolic links pointing outside of the project directory (#338)
603
604 ## 18.6b2
605
606 - added `--config` (#65)
607
608 - added `-h` equivalent to `--help` (#316)
609
610 - fixed improper unmodified file caching when `-S` was used
611
612 - fixed extra space in string unpacking (#305)
613
614 - fixed formatting of empty triple quoted strings (#313)
615
616 - fixed unnecessary slowdown in comment placement calculation on lines without comments
617
618 ## 18.6b1
619
620 - hotfix: don't output human-facing information on stdout (#299)
621
622 - hotfix: don't output cake emoji on non-zero return code (#300)
623
624 ## 18.6b0
625
626 - added `--include` and `--exclude` (#270)
627
628 - added `--skip-string-normalization` (#118)
629
630 - added `--verbose` (#283)
631
632 - the header output in `--diff` now actually conforms to the unified diff spec
633
634 - fixed long trivial assignments being wrapped in unnecessary parentheses (#273)
635
636 - fixed unnecessary parentheses when a line contained multiline strings (#232)
637
638 - fixed stdin handling not working correctly if an old version of Click was used (#276)
639
640 - _Black_ now preserves line endings when formatting a file in place (#258)
641
642 ## 18.5b1
643
644 - added `--pyi` (#249)
645
646 - added `--py36` (#249)
647
648 - Python grammar pickle caches are stored with the formatting caches, making _Black_
649   work in environments where site-packages is not user-writable (#192)
650
651 - _Black_ now enforces a PEP 257 empty line after a class-level docstring (and/or
652   fields) and the first method
653
654 - fixed invalid code produced when standalone comments were present in a trailer that
655   was omitted from line splitting on a large expression (#237)
656
657 - fixed optional parentheses being removed within `# fmt: off` sections (#224)
658
659 - fixed invalid code produced when stars in very long imports were incorrectly wrapped
660   in optional parentheses (#234)
661
662 - fixed unstable formatting when inline comments were moved around in a trailer that was
663   omitted from line splitting on a large expression (#238)
664
665 - fixed extra empty line between a class declaration and the first method if no class
666   docstring or fields are present (#219)
667
668 - fixed extra empty line between a function signature and an inner function or inner
669   class (#196)
670
671 ## 18.5b0
672
673 - call chains are now formatted according to the
674   [fluent interfaces](https://en.wikipedia.org/wiki/Fluent_interface) style (#67)
675
676 - data structure literals (tuples, lists, dictionaries, and sets) are now also always
677   exploded like imports when they don't fit in a single line (#152)
678
679 - slices are now formatted according to PEP 8 (#178)
680
681 - parentheses are now also managed automatically on the right-hand side of assignments
682   and return statements (#140)
683
684 - math operators now use their respective priorities for delimiting multiline
685   expressions (#148)
686
687 - optional parentheses are now omitted on expressions that start or end with a bracket
688   and only contain a single operator (#177)
689
690 - empty parentheses in a class definition are now removed (#145, #180)
691
692 - string prefixes are now standardized to lowercase and `u` is removed on Python 3.6+
693   only code and Python 2.7+ code with the `unicode_literals` future import (#188, #198,
694   #199)
695
696 - typing stub files (`.pyi`) are now formatted in a style that is consistent with PEP
697   484 (#207, #210)
698
699 - progress when reformatting many files is now reported incrementally
700
701 - fixed trailers (content with brackets) being unnecessarily exploded into their own
702   lines after a dedented closing bracket (#119)
703
704 - fixed an invalid trailing comma sometimes left in imports (#185)
705
706 - fixed non-deterministic formatting when multiple pairs of removable parentheses were
707   used (#183)
708
709 - fixed multiline strings being unnecessarily wrapped in optional parentheses in long
710   assignments (#215)
711
712 - fixed not splitting long from-imports with only a single name
713
714 - fixed Python 3.6+ file discovery by also looking at function calls with unpacking.
715   This fixed non-deterministic formatting if trailing commas where used both in function
716   signatures with stars and function calls with stars but the former would be
717   reformatted to a single line.
718
719 - fixed crash on dealing with optional parentheses (#193)
720
721 - fixed "is", "is not", "in", and "not in" not considered operators for splitting
722   purposes
723
724 - fixed crash when dead symlinks where encountered
725
726 ## 18.4a4
727
728 - don't populate the cache on `--check` (#175)
729
730 ## 18.4a3
731
732 - added a "cache"; files already reformatted that haven't changed on disk won't be
733   reformatted again (#109)
734
735 - `--check` and `--diff` are no longer mutually exclusive (#149)
736
737 - generalized star expression handling, including double stars; this fixes
738   multiplication making expressions "unsafe" for trailing commas (#132)
739
740 - _Black_ no longer enforces putting empty lines behind control flow statements (#90)
741
742 - _Black_ now splits imports like "Mode 3 + trailing comma" of isort (#127)
743
744 - fixed comment indentation when a standalone comment closes a block (#16, #32)
745
746 - fixed standalone comments receiving extra empty lines if immediately preceding a
747   class, def, or decorator (#56, #154)
748
749 - fixed `--diff` not showing entire path (#130)
750
751 - fixed parsing of complex expressions after star and double stars in function calls
752   (#2)
753
754 - fixed invalid splitting on comma in lambda arguments (#133)
755
756 - fixed missing splits of ternary expressions (#141)
757
758 ## 18.4a2
759
760 - fixed parsing of unaligned standalone comments (#99, #112)
761
762 - fixed placement of dictionary unpacking inside dictionary literals (#111)
763
764 - Vim plugin now works on Windows, too
765
766 - fixed unstable formatting when encountering unnecessarily escaped quotes in a string
767   (#120)
768
769 ## 18.4a1
770
771 - added `--quiet` (#78)
772
773 - added automatic parentheses management (#4)
774
775 - added [pre-commit](https://pre-commit.com) integration (#103, #104)
776
777 - fixed reporting on `--check` with multiple files (#101, #102)
778
779 - fixed removing backslash escapes from raw strings (#100, #105)
780
781 ## 18.4a0
782
783 - added `--diff` (#87)
784
785 - add line breaks before all delimiters, except in cases like commas, to better comply
786   with PEP 8 (#73)
787
788 - standardize string literals to use double quotes (almost) everywhere (#75)
789
790 - fixed handling of standalone comments within nested bracketed expressions; _Black_
791   will no longer produce super long lines or put all standalone comments at the end of
792   the expression (#22)
793
794 - fixed 18.3a4 regression: don't crash and burn on empty lines with trailing whitespace
795   (#80)
796
797 - fixed 18.3a4 regression: `# yapf: disable` usage as trailing comment would cause
798   _Black_ to not emit the rest of the file (#95)
799
800 - when CTRL+C is pressed while formatting many files, _Black_ no longer freaks out with
801   a flurry of asyncio-related exceptions
802
803 - only allow up to two empty lines on module level and only single empty lines within
804   functions (#74)
805
806 ## 18.3a4
807
808 - `# fmt: off` and `# fmt: on` are implemented (#5)
809
810 - automatic detection of deprecated Python 2 forms of print statements and exec
811   statements in the formatted file (#49)
812
813 - use proper spaces for complex expressions in default values of typed function
814   arguments (#60)
815
816 - only return exit code 1 when --check is used (#50)
817
818 - don't remove single trailing commas from square bracket indexing (#59)
819
820 - don't omit whitespace if the previous factor leaf wasn't a math operator (#55)
821
822 - omit extra space in kwarg unpacking if it's the first argument (#46)
823
824 - omit extra space in
825   [Sphinx auto-attribute comments](http://www.sphinx-doc.org/en/stable/ext/autodoc.html#directive-autoattribute)
826   (#68)
827
828 ## 18.3a3
829
830 - don't remove single empty lines outside of bracketed expressions (#19)
831
832 - added ability to pipe formatting from stdin to stdin (#25)
833
834 - restored ability to format code with legacy usage of `async` as a name (#20, #42)
835
836 - even better handling of numpy-style array indexing (#33, again)
837
838 ## 18.3a2
839
840 - changed positioning of binary operators to occur at beginning of lines instead of at
841   the end, following
842   [a recent change to PEP 8](https://github.com/python/peps/commit/c59c4376ad233a62ca4b3a6060c81368bd21e85b)
843   (#21)
844
845 - ignore empty bracket pairs while splitting. This avoids very weirdly looking
846   formattings (#34, #35)
847
848 - remove a trailing comma if there is a single argument to a call
849
850 - if top level functions were separated by a comment, don't put four empty lines after
851   the upper function
852
853 - fixed unstable formatting of newlines with imports
854
855 - fixed unintentional folding of post scriptum standalone comments into last statement
856   if it was a simple statement (#18, #28)
857
858 - fixed missing space in numpy-style array indexing (#33)
859
860 - fixed spurious space after star-based unary expressions (#31)
861
862 ## 18.3a1
863
864 - added `--check`
865
866 - only put trailing commas in function signatures and calls if it's safe to do so. If
867   the file is Python 3.6+ it's always safe, otherwise only safe if there are no `*args`
868   or `**kwargs` used in the signature or call. (#8)
869
870 - fixed invalid spacing of dots in relative imports (#6, #13)
871
872 - fixed invalid splitting after comma on unpacked variables in for-loops (#23)
873
874 - fixed spurious space in parenthesized set expressions (#7)
875
876 - fixed spurious space after opening parentheses and in default arguments (#14, #17)
877
878 - fixed spurious space after unary operators when the operand was a complex expression
879   (#15)
880
881 ## 18.3a0
882
883 - first published version, Happy 🍰 Day 2018!
884
885 - alpha quality
886
887 - date-versioned (see: <https://calver.org/>)