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

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