]>
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 (parent:
a3e8247 )
compared to their non-async version. (#3609)
- `with` statements that contain two context managers will be consistently wrapped in
parentheses (#3589)
compared to their non-async version. (#3609)
- `with` statements that contain two context managers will be consistently wrapped in
parentheses (#3589)
+- For stubs, enforce one blank line after a nested class with a body other than just
+ `...` (#3564)
mode: Mode
previous_line: Optional[Line] = None
previous_block: Optional[LinesBlock] = None
mode: Mode
previous_line: Optional[Line] = None
previous_block: Optional[LinesBlock] = None
- previous_defs: List[int ] = field(default_factory=list)
+ previous_defs: List[Line ] = field(default_factory=list)
semantic_leading_comment: Optional[LinesBlock] = None
def maybe_empty_lines(self, current_line: Line) -> LinesBlock:
semantic_leading_comment: Optional[LinesBlock] = None
def maybe_empty_lines(self, current_line: Line) -> LinesBlock:
else:
before = 0
depth = current_line.depth
else:
before = 0
depth = current_line.depth
- while self.previous_defs and self.previous_defs[-1] >= depth:
+ while self.previous_defs and self.previous_defs[-1].depth >= depth:
if self.mode.is_pyi:
assert self.previous_line is not None
if depth and not current_line.is_def and self.previous_line.is_def:
# Empty lines between attributes and methods should be preserved.
before = min(1, before)
if self.mode.is_pyi:
assert self.previous_line is not None
if depth and not current_line.is_def and self.previous_line.is_def:
# Empty lines between attributes and methods should be preserved.
before = min(1, before)
+ elif (
+ Preview.blank_line_after_nested_stub_class in self.mode
+ and self.previous_defs[-1].is_class
+ and not self.previous_defs[-1].is_stub_class
+ ):
+ before = 1
elif depth:
before = 0
else:
elif depth:
before = 0
else:
self, current_line: Line, before: int
) -> Tuple[int, int]:
if not current_line.is_decorator:
self, current_line: Line, before: int
) -> Tuple[int, int]:
if not current_line.is_decorator:
- self.previous_defs.append(current_line.depth )
+ self.previous_defs.append(current_line)
if self.previous_line is None:
# Don't insert empty lines before the first line in the file.
return 0, 0
if self.previous_line is None:
# Don't insert empty lines before the first line in the file.
return 0, 0
"""Individual preview style features."""
add_trailing_comma_consistently = auto()
"""Individual preview style features."""
add_trailing_comma_consistently = auto()
+ blank_line_after_nested_stub_class = auto()
hex_codes_in_unicode_sequences = auto()
improved_async_statements_handling = auto()
multiline_string_handling = auto()
hex_codes_in_unicode_sequences = auto()
improved_async_statements_handling = auto()
multiline_string_handling = auto()
--- /dev/null
+class Outer:
+ class InnerStub: ...
+ outer_attr_after_inner_stub: int
+ class Inner:
+ inner_attr: int
+ outer_attr: int
+
+# output
+class Outer:
+ class InnerStub: ...
+ outer_attr_after_inner_stub: int
+
+ class Inner:
+ inner_attr: int
+
+ outer_attr: int
assert_format(source, expected, mode)
assert_format(source, expected, mode)
+def test_nested_class_stub() -> None:
+ mode = replace(DEFAULT_MODE, is_pyi=True, preview=True)
+ source, expected = read_data("miscellaneous", "nested_class_stub.pyi")
+ assert_format(source, expected, mode)
+
+
def test_power_op_newline() -> None:
# requires line_length=0
source, expected = read_data("miscellaneous", "power_op_newline")
def test_power_op_newline() -> None:
# requires line_length=0
source, expected = read_data("miscellaneous", "power_op_newline")