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

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