]>
git.madduck.net Git - etc/vim.git/blobdiff - docs/the_black_code_style/future_style.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:
... # nothing to split on - line too long
```
... # nothing to split on - line too long
```
-So _Black_ will eventually format it like this:
+So _Black_ will, when we implement this, format it like this:
... # backslashes and an ugly stranded colon
```
... # backslashes and an ugly stranded colon
```
-Although when the target version is Python 3.9 or higher, _Black_ will use parentheses
-instead since they're allowed in Python 3.9 and higher.
+Although when the target version is Python 3.9 or higher, _Black_ uses parentheses
+instead in `--preview` mode (see below) since they're allowed in Python 3.9 and higher.
An alternative to consider if the backslashes in the above formatting are undesirable is
to use {external:py:obj}`contextlib.ExitStack` to combine context managers in the
An alternative to consider if the backslashes in the above formatting are undesirable is
to use {external:py:obj}`contextlib.ExitStack` to combine context managers in the
Unnecessary parentheses are stripped. The stability and status of this feature is
tracked in [this issue](https://github.com/psf/black/issues/2188).
Unnecessary parentheses are stripped. The stability and status of this feature is
tracked in [this issue](https://github.com/psf/black/issues/2188).
-### Removing newlines in the beginning of code bloc ks
+### Improved line brea ks
-_Black_ will remove newlines in the beginning of new code blocks, i.e. when the
-indentation level is increased . For example:
+For assignment expressions, _Black_ now prefers to split and wrap the right side of the
+assignment instead of left side . For example:
-def my_func():
-
- print("The line above me will be deleted!")
+some_dict[
+ "with_a_long_key"
+] = some_looooooooong_module.some_looooooooooooooong_function_name(
+ first_argument, second_argument, third_argument
+)
```
will be changed to:
```python
```
will be changed to:
```python
-def my_func():
- print("The line above me will be deleted!")
+some_dict["with_a_long_key"] = (
+ some_looooooooong_module.some_looooooooooooooong_function_name(
+ first_argument, second_argument, third_argument
+ )
+)
-This new feature will be applied to **all code blocks**: `def`, `class`, `if`, `for`,
-`while`, `with`, `case` and `match`.
-
### Improved parentheses management
### Improved parentheses management
-_Black_ will format parentheses around return annotations similarly to other sets of
-parentheses. For example:
+For dict literals with long values, they are now wrapped in parentheses. Unnecessary
+parentheses are now removed . For example:
-def foo() -> (int):
- ...
-
-def foo() -> looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong:
- ...
+my_dict = {
+ my_dict = {
+ "a key in my dict": a_very_long_variable
+ * and_a_very_long_function_call()
+ / 100000.0,
+ "another key": (short_value),
+}
```
will be changed to:
```python
```
will be changed to:
```python
-def foo() -> int:
- ...
-
-
-def foo() -> (
- looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong
-):
- ...
-```
-
-And, extra parentheses in `await` expressions and `with` statements are removed. For
-example:
-
-```python
-with ((open("bla.txt")) as f, open("x")):
- ...
-
-async def main():
- await (asyncio.sleep(1))
-```
-
-will be changed to:
-
-```python
-with open("bla.txt") as f, open("x"):
- ...
-
-
-async def main():
- await asyncio.sleep(1)
+my_dict = {
+ "a key in my dict": (
+ a_very_long_variable * and_a_very_long_function_call() / 100000.0
+ ),
+ "another key": short_value,
+}