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