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

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