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

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