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

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