Skip to content

Commit 402a217

Browse files
authored
[docutils] Impove main stubs (#14107)
1 parent cb31604 commit 402a217

File tree

8 files changed

+214
-87
lines changed

8 files changed

+214
-87
lines changed

stubs/docutils/@tests/stubtest_allowlist.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
docutils.frontend.ConfigParser.__getattr__
2-
docutils.frontend.ConfigParser.read
3-
docutils.frontend.OptionParser.__getattr__
4-
docutils.io.FileOutput.__getattr__
5-
docutils.io.FileOutput.__init__
61
docutils.nodes.Element.__iter__ # doesn't exist at runtime, but the class is iterable due to __getitem__
72
docutils.nodes.Element.tagname # class variable is overridden in __init__ method
83
docutils.nodes.NodeVisitor.depart_\w+ # Methods are discovered dynamically on commonly-used subclasses

stubs/docutils/docutils/__init__.pyi

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from typing import Any, ClassVar, NamedTuple
1+
from typing import Any, ClassVar, Final, NamedTuple
22
from typing_extensions import Self
33

44
from docutils.transforms import Transform
55

6-
__docformat__: str
7-
__version__: str
6+
__docformat__: Final = "reStructuredText"
7+
__version__: Final[str]
88

99
class _VersionInfo(NamedTuple):
1010
major: int
@@ -19,8 +19,8 @@ class VersionInfo(_VersionInfo):
1919
cls, major: int = 0, minor: int = 0, micro: int = 0, releaselevel: str = "final", serial: int = 0, release: bool = True
2020
) -> Self: ...
2121

22-
__version_info__: VersionInfo
23-
__version_details__: str
22+
__version_info__: Final[VersionInfo]
23+
__version_details__: Final[str]
2424

2525
class ApplicationError(Exception): ...
2626
class DataError(ApplicationError): ...

stubs/docutils/docutils/core.pyi

Lines changed: 85 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,50 @@
11
from _typeshed import Incomplete
2+
from typing import Final
3+
from typing_extensions import deprecated
24

35
from docutils import SettingsSpec
4-
from docutils.writers import _WriterParts
6+
from docutils.frontend import OptionParser
7+
from docutils.io import FileInput, Input, Output, StringInput
8+
from docutils.parsers import Parser
9+
from docutils.readers import Reader
10+
from docutils.utils import SystemMessage
11+
from docutils.writers import Writer, _WriterParts
512

6-
__docformat__: str
13+
__docformat__: Final = "reStructuredText"
714

815
class Publisher:
9-
document: Incomplete
10-
reader: Incomplete
11-
parser: Incomplete
12-
writer: Incomplete
13-
source: Incomplete
16+
document: Incomplete | None
17+
reader: Reader[Incomplete]
18+
parser: Parser
19+
writer: Writer[Incomplete]
20+
source: Input[Incomplete]
1421
source_class: Incomplete
15-
destination: Incomplete
22+
destination: Output | None
1623
destination_class: Incomplete
17-
settings: Incomplete
24+
settings: dict[str, Incomplete]
1825
def __init__(
1926
self,
20-
reader=None,
21-
parser=None,
22-
writer=None,
23-
source=None,
27+
reader: Reader[Incomplete] | None = None,
28+
parser: Parser | None = None,
29+
writer: Writer[Incomplete] | None = None,
30+
source: Input[Incomplete] | None = None,
2431
source_class=...,
25-
destination=None,
32+
destination: Output | None = None,
2633
destination_class=...,
27-
settings=None,
34+
settings: dict[str, Incomplete] | None = None,
2835
) -> None: ...
29-
def set_reader(self, reader_name, parser, parser_name) -> None: ...
30-
def set_writer(self, writer_name) -> None: ...
31-
def set_components(self, reader_name, parser_name, writer_name) -> None: ...
32-
def setup_option_parser(self, usage=None, description=None, settings_spec=None, config_section=None, **defaults): ...
36+
def set_reader(self, reader_name: str, parser: Parser | None, parser_name: str | None) -> None: ...
37+
def set_writer(self, writer_name: str) -> None: ...
38+
def set_components(self, reader_name: str, parser_name: str, writer_name: str) -> None: ...
39+
@deprecated("Publisher.setup_option_parser is deprecated, and will be removed in Docutils 0.21.")
40+
def setup_option_parser(
41+
self,
42+
usage: str | None = None,
43+
description: str | None = None,
44+
settings_spec: SettingsSpec | None = None,
45+
config_section: str | None = None,
46+
**defaults,
47+
) -> OptionParser: ...
3348
def get_settings(
3449
self,
3550
usage: str | None = None,
@@ -40,52 +55,58 @@ class Publisher:
4055
): ...
4156
def process_programmatic_settings(self, settings_spec, settings_overrides, config_section) -> None: ...
4257
def process_command_line(
43-
self, argv=None, usage=None, description=None, settings_spec=None, config_section=None, **defaults
58+
self,
59+
argv: list[str] | None = None,
60+
usage=None,
61+
description: str | None = None,
62+
settings_spec=None,
63+
config_section=None,
64+
**defaults,
4465
) -> None: ...
4566
def set_io(self, source_path=None, destination_path=None) -> None: ...
4667
def set_source(self, source=None, source_path=None) -> None: ...
4768
def set_destination(self, destination=None, destination_path=None) -> None: ...
4869
def apply_transforms(self) -> None: ...
4970
def publish(
5071
self,
51-
argv=None,
52-
usage=None,
53-
description=None,
72+
argv: list[str] | None = None,
73+
usage: str | None = None,
74+
description: str | None = None,
5475
settings_spec=None,
5576
settings_overrides=None,
56-
config_section=None,
77+
config_section: str | None = None,
5778
enable_exit_status: bool = False,
5879
): ...
5980
def debugging_dumps(self) -> None: ...
6081
def prompt(self) -> None: ...
61-
def report_Exception(self, error) -> None: ...
62-
def report_SystemMessage(self, error) -> None: ...
63-
def report_UnicodeError(self, error) -> None: ...
82+
def report_Exception(self, error: BaseException) -> None: ...
83+
def report_SystemMessage(self, error: SystemMessage) -> None: ...
84+
def report_UnicodeError(self, error: UnicodeEncodeError) -> None: ...
6485

65-
default_usage: str
66-
default_description: str
86+
default_usage: Final[str]
87+
default_description: Final[str]
6788

6889
def publish_cmdline(
69-
reader=None,
90+
reader: Reader[Incomplete] | None = None,
7091
reader_name: str = "standalone",
71-
parser=None,
92+
parser: Parser | None = None,
7293
parser_name: str = "restructuredtext",
73-
writer=None,
94+
writer: Writer[Incomplete] | None = None,
7495
writer_name: str = "pseudoxml",
7596
settings=None,
7697
settings_spec=None,
7798
settings_overrides=None,
78-
config_section=None,
99+
config_section: str | None = None,
79100
enable_exit_status: bool = True,
80-
argv=None,
81-
usage=...,
82-
description=...,
101+
argv: list[str] | None = None,
102+
usage: str = ...,
103+
description: str = ...,
83104
): ...
84105
def publish_file(
85106
source=None,
86-
source_path=None,
107+
source_path: FileInput | StringInput | None = None,
87108
destination=None,
88-
destination_path=None,
109+
destination_path: FileInput | StringInput | None = None,
89110
reader=None,
90111
reader_name: str = "standalone",
91112
parser=None,
@@ -95,13 +116,13 @@ def publish_file(
95116
settings=None,
96117
settings_spec=None,
97118
settings_overrides=None,
98-
config_section=None,
119+
config_section: str | None = None,
99120
enable_exit_status: bool = False,
100121
): ...
101122
def publish_string(
102123
source,
103-
source_path=None,
104-
destination_path=None,
124+
source_path: FileInput | StringInput | None = None,
125+
destination_path: FileInput | StringInput | None = None,
105126
reader=None,
106127
reader_name: str = "standalone",
107128
parser=None,
@@ -111,14 +132,14 @@ def publish_string(
111132
settings=None,
112133
settings_spec=None,
113134
settings_overrides=None,
114-
config_section=None,
135+
config_section: str | None = None,
115136
enable_exit_status: bool = False,
116137
): ...
117138
def publish_parts(
118139
source,
119-
source_path=None,
140+
source_path: FileInput | StringInput | None = None,
120141
source_class=...,
121-
destination_path=None,
142+
destination_path: FileInput | StringInput | None = None,
122143
reader=None,
123144
reader_name: str = "standalone",
124145
parser=None,
@@ -127,13 +148,13 @@ def publish_parts(
127148
writer_name: str = "pseudoxml",
128149
settings=None,
129150
settings_spec=None,
130-
settings_overrides=None,
131-
config_section=None,
151+
settings_overrides: dict[str, Incomplete] | None = None,
152+
config_section: str | None = None,
132153
enable_exit_status: bool = False,
133154
) -> _WriterParts: ...
134155
def publish_doctree(
135156
source,
136-
source_path=None,
157+
source_path: FileInput | StringInput | None = None,
137158
source_class=...,
138159
reader=None,
139160
reader_name: str = "standalone",
@@ -142,18 +163,18 @@ def publish_doctree(
142163
settings=None,
143164
settings_spec=None,
144165
settings_overrides=None,
145-
config_section=None,
166+
config_section: str | None = None,
146167
enable_exit_status: bool = False,
147168
): ...
148169
def publish_from_doctree(
149170
document,
150-
destination_path=None,
171+
destination_path: FileInput | StringInput | None = None,
151172
writer=None,
152173
writer_name: str = "pseudoxml",
153174
settings=None,
154175
settings_spec=None,
155176
settings_overrides=None,
156-
config_section=None,
177+
config_section: str | None = None,
157178
enable_exit_status: bool = False,
158179
): ...
159180
def publish_cmdline_to_binary(
@@ -166,34 +187,34 @@ def publish_cmdline_to_binary(
166187
settings=None,
167188
settings_spec=None,
168189
settings_overrides=None,
169-
config_section=None,
190+
config_section: str | None = None,
170191
enable_exit_status: bool = True,
171-
argv=None,
172-
usage=...,
173-
description=...,
192+
argv: list[str] | None = None,
193+
usage: str = ...,
194+
description: str = ...,
174195
destination=None,
175196
destination_class=...,
176197
): ...
177198
def publish_programmatically(
178-
source_class,
199+
source_class: type[FileInput],
179200
source,
180-
source_path,
201+
source_path: FileInput | StringInput,
181202
destination_class,
182203
destination,
183-
destination_path,
204+
destination_path: FileInput | StringInput,
184205
reader,
185-
reader_name,
206+
reader_name: str,
186207
parser,
187-
parser_name,
208+
parser_name: str,
188209
writer,
189-
writer_name,
210+
writer_name: str,
190211
settings,
191212
settings_spec,
192213
settings_overrides,
193-
config_section,
194-
enable_exit_status,
195-
): ...
196-
def rst2something(writer, documenttype, doc_path: str = "") -> None: ...
214+
config_section: str,
215+
enable_exit_status: bool,
216+
) -> tuple[str | bytes | None, Publisher]: ...
217+
def rst2something(writer: str, documenttype: str, doc_path: str = "") -> None: ...
197218
def rst2html() -> None: ...
198219
def rst2html4() -> None: ...
199220
def rst2html5() -> None: ...

stubs/docutils/docutils/examples.pyi

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,46 @@
1-
def __getattr__(name: str): ... # incomplete module
1+
from _typeshed import Incomplete
2+
from typing import Literal, overload
3+
from typing_extensions import TypeAlias
4+
5+
from docutils.core import Publisher
6+
from docutils.io import FileInput, StringInput
7+
from docutils.nodes import document
8+
from docutils.writers import _WriterParts
9+
10+
_HTMLHeaderLevel: TypeAlias = Literal[1, 2, 3, 4, 5, 6]
11+
12+
def html_parts(
13+
input_string: str,
14+
source_path=None,
15+
destination_path=None,
16+
input_encoding: str = "unicode",
17+
doctitle: bool = True,
18+
initial_header_level: _HTMLHeaderLevel = 1,
19+
) -> _WriterParts: ...
20+
@overload
21+
def html_body(
22+
input_string: str,
23+
source_path=None,
24+
destination_path=None,
25+
input_encoding: str = "unicode",
26+
output_encoding: Literal["unicode"] = "unicode",
27+
doctitle: bool = True,
28+
initial_header_level: _HTMLHeaderLevel = 1,
29+
) -> str: ...
30+
@overload
31+
def html_body(
32+
input_string: str,
33+
source_path=None,
34+
destination_path=None,
35+
input_encoding: str = "unicode",
36+
output_encoding: str = "unicode",
37+
doctitle: bool = True,
38+
initial_header_level: _HTMLHeaderLevel = 1,
39+
) -> str | bytes: ...
40+
def internals(
41+
input_string,
42+
source_path: FileInput | StringInput | None = None,
43+
destination_path: FileInput | StringInput | None = None,
44+
input_encoding: str = "unicode",
45+
settings_overrides: dict[str, Incomplete] | None = None,
46+
) -> tuple[document | None, Publisher]: ...

0 commit comments

Comments
 (0)