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

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