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

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