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

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