]>
git.madduck.net Git - etc/vim.git/commitdiff
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:
summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ebd3e39 )
- Fixed Python 3.10 support on platforms without ProcessPoolExecutor (#2631)
- Fixed `match` statements with open sequence subjects, like `match a, b:` or
`match a, *b:` (#2639) (#2659)
- Fixed Python 3.10 support on platforms without ProcessPoolExecutor (#2631)
- Fixed `match` statements with open sequence subjects, like `match a, b:` or
`match a, *b:` (#2639) (#2659)
+- Fixed `match`/`case` statements that contain `match`/`case` soft keywords multiple
+ times, like `match re.match()` (#2661)
- Fixed assignment to environment variables in Jupyter Notebooks (#2642)
- Add `flake8-simplify` and `flake8-comprehensions` plugins (#2653)
- Fixed assignment to environment variables in Jupyter Notebooks (#2642)
- Add `flake8-simplify` and `flake8-comprehensions` plugins (#2653)
"""Visit a statement.
This implementation is shared for `if`, `while`, `for`, `try`, `except`,
"""Visit a statement.
This implementation is shared for `if`, `while`, `for`, `try`, `except`,
- `def`, `with`, `class`, `assert`, `match`, `case` and assignments.
+ `def`, `with`, `class`, `assert`, and assignments.
The relevant Python language `keywords` for a given statement will be
NAME leaves within it. This methods puts those on a separate line.
The relevant Python language `keywords` for a given statement will be
NAME leaves within it. This methods puts those on a separate line.
yield from self.visit(child)
yield from self.visit(child)
+ def visit_match_case(self, node: Node) -> Iterator[Line]:
+ """Visit either a match or case statement."""
+ normalize_invisible_parens(node, parens_after=set())
+
+ yield from self.line()
+ for child in node.children:
+ yield from self.visit(child)
+
def visit_suite(self, node: Node) -> Iterator[Line]:
"""Visit a suite."""
if self.mode.is_pyi and is_stub_suite(node):
def visit_suite(self, node: Node) -> Iterator[Line]:
"""Visit a suite."""
if self.mode.is_pyi and is_stub_suite(node):
self.visit_decorated = self.visit_decorators
# PEP 634
self.visit_decorated = self.visit_decorators
# PEP 634
- self.visit_match_stmt = partial(v, keywords={"match"}, parens=Ø)
- self.visit_case_block = partial(v, keywords={"case"}, parens=Ø)
+ self.visit_match_stmt = self.visit_match_case
+ self.visit_case_block = self.visit_match_case
def func(match: case, case: match) -> case:
match Something():
def func(match: case, case: match) -> case:
match Something():
case func(match, case):
...
case func(match, case):
...
match a, *b, c:
case [*_]:
match a, *b, c:
case [*_]:
+ assert "map" == b
+
+
+match match(
+ case,
+ match(
+ match, case, match, looooooooooooooooooooooooooooooooooooong, match, case, match
+ ),
+ case,
+):
+ case case(
+ match=case,
+ case=re.match(
+ loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong
+ ),
+ ):
+ pass
+
+ case [a as match]:
+ pass
+
+ case case:
+ pass
+
+
+match match:
+ case case:
+ pass