... # 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:
```py3
with \
- make_context_manager(1) as cm1, \
- make_context_manager(2) as cm2, \
- make_context_manager(3) as cm3, \
- make_context_manager(4) as cm4 \
+ make_context_manager1() as cm1, \
+ make_context_manager2() as cm2, \
+ make_context_manager3() as cm3, \
+ make_context_manager4() as cm4 \
:
... # 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
```python
with contextlib.ExitStack() as exit_stack:
- cm1 = exit_stack.enter_context(make_context_manager(1))
- cm2 = exit_stack.enter_context(make_context_manager(2))
- cm3 = exit_stack.enter_context(make_context_manager(3))
- cm4 = exit_stack.enter_context(make_context_manager(4))
+ cm1 = exit_stack.enter_context(make_context_manager1())
+ cm2 = exit_stack.enter_context(make_context_manager2())
+ cm3 = exit_stack.enter_context(make_context_manager3())
+ cm4 = exit_stack.enter_context(make_context_manager4())
...
```
limit. Line continuation backslashes are converted into parenthesized strings.
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 blocks
-
-_Black_ will remove newlines in the beginning of new code blocks, i.e. when the
-indentation level is increased. For example:
-
-```python
-def my_func():
-
- print("The line above me will be deleted!")
-```
-
-will be changed to:
-
-```python
-def my_func():
- print("The line above me will be deleted!")
-```
-
-This new feature will be applied to **all code blocks**: `def`, `class`, `if`, `for`,
-`while`, `with`, `case` and `match`.
-
-### Improved parentheses management
-
-_Black_ will format parentheses around return annotations similarly to other sets of
-parentheses. For example:
-
-```python
-def foo() -> (int):
- ...
-
-def foo() -> looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong:
- ...
-```
-
-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)
-```