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

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