Skip to content

Commit 3646f64

Browse files
authored
Improve type annotations in 'docutils.parsers.rst' (#11523)
1 parent 52daae5 commit 3646f64

File tree

2 files changed

+46
-15
lines changed

2 files changed

+46
-15
lines changed

stubs/docutils/@tests/stubtest_allowlist.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@ docutils.nodes.GenericNodeVisitor.__getattr__
1111
# these methods take a rawsource parameter that has been deprecated and is completely ignored, so we omit it from the stub
1212
docutils.nodes.Text.__new__
1313
docutils.parsers.recommonmark_wrapper
14-
docutils.parsers.rst.Directive.__getattr__
1514
docutils.transforms.Transform.__getattr__
1615
docutils.transforms.Transformer.__getattr__
1716
docutils.TransformSpec.unknown_reference_resolvers
1817
docutils.utils.Reporter.__getattr__
19-
2018
# the constructor appears to be mostly internal API, public API users are meant to use docutils.utils.new_reporter instead
2119
docutils.utils.Reporter.__init__
Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,67 @@
11
from _typeshed import Incomplete
2+
from collections.abc import Callable, Sequence
23
from typing import Any, ClassVar, Literal
4+
from typing_extensions import TypeAlias
35

4-
from docutils import parsers
5-
from docutils.parsers.rst import states
6+
from docutils import nodes, parsers
7+
from docutils.parsers.rst.states import Inliner, RSTState, RSTStateMachine
8+
from docutils.statemachine import StringList
9+
from docutils.transforms import Transform
610

711
class Parser(parsers.Parser):
12+
settings_spec: ClassVar[Incomplete]
813
config_section_dependencies: ClassVar[tuple[str, ...]]
914
initial_state: Literal["Body", "RFC2822Body"]
10-
state_classes: Any
11-
inliner: Any
12-
def __init__(self, rfc2822: bool = False, inliner: Incomplete | None = None) -> None: ...
15+
state_classes: Sequence[type[RSTState]]
16+
inliner: Inliner | None
17+
def __init__(self, rfc2822: bool = False, inliner: Inliner | None = None) -> None: ...
18+
def get_transforms(self) -> list[type[Transform]]: ...
19+
def parse(self, inputstring: str, document: nodes.document) -> None: ...
1320

1421
class DirectiveError(Exception):
15-
level: Any
22+
level: int
1623
msg: str
17-
def __init__(self, level: Any, message: str) -> None: ...
24+
def __init__(self, level: int, message: str) -> None: ...
1825

1926
class Directive:
27+
required_arguments: int
28+
optional_arguments: int
29+
final_argument_whitespace: bool
30+
option_spec: dict[str, Callable[[str], Any]] | None
31+
has_content: bool
32+
name: str
33+
arguments: list[str]
34+
options: dict[str, Any]
35+
content: StringList
36+
lineno: int
37+
content_offset: int
38+
block_text: str
39+
state: RSTState
40+
state_machine: RSTStateMachine = ...
2041
def __init__(
2142
self,
2243
name: str,
23-
arguments: list[Any],
44+
arguments: list[str],
2445
options: dict[str, Any],
25-
content: list[str],
46+
content: StringList,
2647
lineno: int,
2748
content_offset: int,
2849
block_text: str,
29-
state: states.RSTState,
30-
state_machine: states.RSTStateMachine,
50+
state: RSTState,
51+
state_machine: RSTStateMachine,
3152
) -> None: ...
32-
def __getattr__(self, name: str) -> Incomplete: ...
53+
def run(self) -> Sequence[nodes.Node]: ...
54+
def directive_error(self, level: int, message: str) -> DirectiveError: ...
55+
def debug(self, message: str) -> DirectiveError: ...
56+
def info(self, message: str) -> DirectiveError: ...
57+
def warning(self, message: str) -> DirectiveError: ...
58+
def error(self, message: str) -> DirectiveError: ...
59+
def severe(self, message: str) -> DirectiveError: ...
60+
def assert_has_content(self) -> None: ...
61+
def add_name(self, node: nodes.Node) -> None: ...
3362

34-
def convert_directive_function(directive_fn): ...
63+
_DirectiveFn: TypeAlias = Callable[
64+
[str, list[str], dict[str, Any], StringList, int, int, str, RSTState, RSTStateMachine], Directive
65+
]
66+
67+
def convert_directive_function(directive_fn: _DirectiveFn) -> type[Directive]: ...

0 commit comments

Comments
 (0)