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

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