You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[syntax-errors] Parenthesized context managers before Python 3.9 (#16523)
Summary
--
I thought this was very complicated based on the comment here:
#16106 (comment) and
on some of the discussion in the CPython issue here:
python/cpython#56991. However, after a little
bit of experimentation, I think it boils down to this example:
```python
with (x as y): ...
```
The issue is parentheses around a `with` item with an `optional_var`, as
we (and
[Python](https://docs.python.org/3/library/ast.html#ast.withitem)) call
the trailing variable name (`y` in this case). It's not actually about
line breaks after all, except that line breaks are allowed in
parenthesized expressions, which explains the validity of cases like
```pycon
>>> with (
... x,
... y
... ) as foo:
... pass
...
```
even on Python 3.8.
I followed [pyright]'s example again here on the diagnostic range (just
the opening paren) and the wording of the error.
Test Plan
--
Inline tests
[pyright]:
https://pyright-play.net/?pythonVersion=3.7&strict=true&code=FAdwlgLgFgBAFAewA4FMB2cBEAzBCB0EAHhJgJQwCGAzjLgmQFwz6tA
0 commit comments