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

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