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