1from typing import IO, Any, Iterable, List, Optional, Tuple
2
3AS_IS: None
4_FontType = Tuple[str, bool, bool, bool]
5_StylesType = Tuple[Any, ...]
6
7class NullFormatter:
8    writer: Optional[NullWriter]
9    def __init__(self, writer: Optional[NullWriter] = ...) -> None: ...
10    def end_paragraph(self, blankline: int) -> None: ...
11    def add_line_break(self) -> None: ...
12    def add_hor_rule(self, *args: Any, **kw: Any) -> None: ...
13    def add_label_data(self, format: str, counter: int, blankline: Optional[int] = ...) -> None: ...
14    def add_flowing_data(self, data: str) -> None: ...
15    def add_literal_data(self, data: str) -> None: ...
16    def flush_softspace(self) -> None: ...
17    def push_alignment(self, align: Optional[str]) -> None: ...
18    def pop_alignment(self) -> None: ...
19    def push_font(self, x: _FontType) -> None: ...
20    def pop_font(self) -> None: ...
21    def push_margin(self, margin: int) -> None: ...
22    def pop_margin(self) -> None: ...
23    def set_spacing(self, spacing: Optional[str]) -> None: ...
24    def push_style(self, *styles: _StylesType) -> None: ...
25    def pop_style(self, n: int = ...) -> None: ...
26    def assert_line_data(self, flag: int = ...) -> None: ...
27
28class AbstractFormatter:
29    writer: NullWriter
30    align: Optional[str]
31    align_stack: List[Optional[str]]
32    font_stack: List[_FontType]
33    margin_stack: List[int]
34    spacing: Optional[str]
35    style_stack: Any
36    nospace: int
37    softspace: int
38    para_end: int
39    parskip: int
40    hard_break: int
41    have_label: int
42    def __init__(self, writer: NullWriter) -> None: ...
43    def end_paragraph(self, blankline: int) -> None: ...
44    def add_line_break(self) -> None: ...
45    def add_hor_rule(self, *args: Any, **kw: Any) -> None: ...
46    def add_label_data(self, format: str, counter: int, blankline: Optional[int] = ...) -> None: ...
47    def format_counter(self, format: Iterable[str], counter: int) -> str: ...
48    def format_letter(self, case: str, counter: int) -> str: ...
49    def format_roman(self, case: str, counter: int) -> str: ...
50    def add_flowing_data(self, data: str) -> None: ...
51    def add_literal_data(self, data: str) -> None: ...
52    def flush_softspace(self) -> None: ...
53    def push_alignment(self, align: Optional[str]) -> None: ...
54    def pop_alignment(self) -> None: ...
55    def push_font(self, font: _FontType) -> None: ...
56    def pop_font(self) -> None: ...
57    def push_margin(self, margin: int) -> None: ...
58    def pop_margin(self) -> None: ...
59    def set_spacing(self, spacing: Optional[str]) -> None: ...
60    def push_style(self, *styles: _StylesType) -> None: ...
61    def pop_style(self, n: int = ...) -> None: ...
62    def assert_line_data(self, flag: int = ...) -> None: ...
63
64class NullWriter:
65    def __init__(self) -> None: ...
66    def flush(self) -> None: ...
67    def new_alignment(self, align: Optional[str]) -> None: ...
68    def new_font(self, font: _FontType) -> None: ...
69    def new_margin(self, margin: int, level: int) -> None: ...
70    def new_spacing(self, spacing: Optional[str]) -> None: ...
71    def new_styles(self, styles: Tuple[Any, ...]) -> None: ...
72    def send_paragraph(self, blankline: int) -> None: ...
73    def send_line_break(self) -> None: ...
74    def send_hor_rule(self, *args: Any, **kw: Any) -> None: ...
75    def send_label_data(self, data: str) -> None: ...
76    def send_flowing_data(self, data: str) -> None: ...
77    def send_literal_data(self, data: str) -> None: ...
78
79class AbstractWriter(NullWriter):
80    def new_alignment(self, align: Optional[str]) -> None: ...
81    def new_font(self, font: _FontType) -> None: ...
82    def new_margin(self, margin: int, level: int) -> None: ...
83    def new_spacing(self, spacing: Optional[str]) -> None: ...
84    def new_styles(self, styles: Tuple[Any, ...]) -> None: ...
85    def send_paragraph(self, blankline: int) -> None: ...
86    def send_line_break(self) -> None: ...
87    def send_hor_rule(self, *args: Any, **kw: Any) -> None: ...
88    def send_label_data(self, data: str) -> None: ...
89    def send_flowing_data(self, data: str) -> None: ...
90    def send_literal_data(self, data: str) -> None: ...
91
92class DumbWriter(NullWriter):
93    file: IO[str]
94    maxcol: int
95    def __init__(self, file: Optional[IO[str]] = ..., maxcol: int = ...) -> None: ...
96    def reset(self) -> None: ...
97    def send_paragraph(self, blankline: int) -> None: ...
98    def send_line_break(self) -> None: ...
99    def send_hor_rule(self, *args: Any, **kw: Any) -> None: ...
100    def send_literal_data(self, data: str) -> None: ...
101    def send_flowing_data(self, data: str) -> None: ...
102
103def test(file: Optional[str] = ...) -> None: ...
104