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

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