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

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