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

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