Skip to content

Commit 3eb5103

Browse files
authored
[docutils] Add missing stubs for transforms dir (#14234)
1 parent c1613b2 commit 3eb5103

File tree

10 files changed

+313
-9
lines changed

10 files changed

+313
-9
lines changed

stubs/docutils/@tests/stubtest_allowlist.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,5 @@ docutils.statemachine.State.nested_sm # is initialised in __init__
1111
docutils.statemachine.State.nested_sm_kwargs # is initialised in __init__
1212
docutils.statemachine.ViewList.__iter__ # doesn't exist at runtime, but the class is iterable due to __getitem__
1313
docutils.transforms.Transform.__getattr__
14-
docutils.transforms.Transformer.__getattr__
1514
docutils.TransformSpec.unknown_reference_resolvers
1615
docutils.writers.manpage.Translator.__getattr__
Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,36 @@
11
from _typeshed import Incomplete
2+
from collections.abc import Iterable, Mapping
3+
from typing import Any, ClassVar, Final
4+
from typing_extensions import TypeAlias
25

3-
from docutils.nodes import Node, document
6+
from docutils import ApplicationError, TransformSpec, nodes
7+
from docutils.languages import LanguageImporter
8+
9+
_TransformTuple: TypeAlias = tuple[str, type[Transform], nodes.Node | None, dict[str, Any]]
10+
11+
__docformat__: Final = "reStructuredText"
12+
13+
class TransformError(ApplicationError): ...
414

515
class Transform:
6-
def __init__(self, document: document, startnode: Node | None = None): ...
7-
def __getattr__(self, name: str, /) -> Incomplete: ...
16+
default_priority: ClassVar[int | None]
17+
document: nodes.document
18+
startnode: nodes.Node | None
19+
language: LanguageImporter
20+
def __init__(self, document: nodes.document, startnode: nodes.Node | None = None) -> None: ...
21+
def __getattr__(self, name: str, /) -> Incomplete: ... # method apply is not implemented
822

9-
class Transformer:
10-
def __init__(self, document: document): ...
23+
class Transformer(TransformSpec):
24+
transforms: list[_TransformTuple]
25+
document: nodes.document
26+
applied: list[_TransformTuple]
27+
sorted: bool
28+
components: Mapping[str, TransformSpec]
29+
serialno: int
30+
def __init__(self, document: nodes.document): ...
1131
def add_transform(self, transform_class: type[Transform], priority: int | None = None, **kwargs) -> None: ...
12-
def __getattr__(self, name: str, /) -> Incomplete: ...
13-
14-
def __getattr__(name: str): ... # incomplete module
32+
def add_transforms(self, transform_list: Iterable[type[Transform]]) -> None: ...
33+
def add_pending(self, pending: nodes.pending, priority: int | None = None) -> None: ...
34+
def get_priority_string(self, priority: int) -> str: ...
35+
def populate_from_components(self, components: Iterable[TransformSpec]) -> None: ...
36+
def apply_transforms(self) -> None: ...
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from typing import ClassVar, Final
2+
3+
from docutils.transforms import Transform
4+
5+
__docformat__: Final = "reStructuredText"
6+
7+
class Filter(Transform):
8+
default_priority: ClassVar[int]
9+
def apply(self) -> None: ...
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import re
2+
from typing import ClassVar, Final
3+
4+
from docutils import nodes
5+
from docutils.transforms import Transform
6+
7+
__docformat__: Final = "reStructuredText"
8+
9+
class TitlePromoter(Transform):
10+
def promote_title(self, node: nodes.Element) -> bool: ...
11+
def promote_subtitle(self, node: nodes.Element) -> bool: ...
12+
def candidate_index(self, node: nodes.Element) -> tuple[nodes.Node, int] | tuple[None, None]: ...
13+
14+
class DocTitle(TitlePromoter):
15+
default_priority: ClassVar[int]
16+
def set_metadata(self) -> None: ...
17+
def apply(self) -> None: ...
18+
19+
class SectionSubTitle(TitlePromoter):
20+
default_priority: ClassVar[int]
21+
def apply(self) -> None: ...
22+
23+
class DocInfo(Transform):
24+
default_priority: ClassVar[int]
25+
biblio_nodes: ClassVar[dict[str, type[nodes.Element]]]
26+
rcs_keyword_substitutions: ClassVar[list[tuple[re.Pattern[str], str]]]
27+
def apply(self) -> None: ...
28+
def extract_bibliographic(self, field_list): ...
29+
def check_empty_biblio_field(self, field, name) -> bool: ...
30+
def check_compound_biblio_field(self, field, name) -> bool: ...
31+
def extract_authors(self, field, name, docinfo) -> None: ...
32+
def authors_from_one_paragraph(self, field) -> list[list[nodes.Text]]: ...
33+
def authors_from_bullet_list(self, field): ...
34+
def authors_from_paragraphs(self, field): ...
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import ClassVar, Final
2+
3+
from docutils import nodes
4+
from docutils.transforms import Transform
5+
6+
__docformat__: Final = "reStructuredText"
7+
8+
class CallBack(Transform):
9+
default_priority: ClassVar[int]
10+
def apply(self) -> None: ...
11+
12+
class ClassAttribute(Transform):
13+
default_priority: ClassVar[int]
14+
def apply(self) -> None: ...
15+
16+
class Transitions(Transform):
17+
default_priority: ClassVar[int]
18+
def apply(self) -> None: ...
19+
def visit_transition(self, node: nodes.transition) -> None: ...
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from _typeshed import Incomplete, Unused
2+
from collections.abc import Iterable, Sequence
3+
from typing import ClassVar, Final, NoReturn
4+
5+
from docutils import nodes
6+
from docutils.transforms import Transform
7+
8+
__docformat__: Final = "reStructuredText"
9+
10+
class SectNum(Transform):
11+
default_priority: ClassVar[int]
12+
maxdepth: int
13+
startvalue: int
14+
prefix: str
15+
suffix: str
16+
def apply(self) -> None: ...
17+
def update_section_numbers(self, node: nodes.Element, prefix: Iterable[str] = (), depth: int = 0) -> None: ...
18+
19+
class Contents(Transform):
20+
default_priority: ClassVar[int]
21+
toc_id: Incomplete
22+
backlinks: Incomplete
23+
def apply(self) -> None: ...
24+
def build_contents(
25+
self, node: nodes.Element, level: int = 0
26+
) -> nodes.bullet_list | list[None]: ... # return empty list if entries is empty
27+
def copy_and_filter(self, node: nodes.Node) -> Sequence[nodes.Node]: ...
28+
29+
class ContentsFilter(nodes.TreeCopyVisitor):
30+
def get_entry_text(self) -> Sequence[nodes.Node]: ...
31+
def ignore_node_but_process_children(self, node: Unused) -> NoReturn: ...
32+
visit_problematic = ignore_node_but_process_children
33+
visit_reference = ignore_node_but_process_children
34+
visit_target = ignore_node_but_process_children
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import re
2+
from typing import ClassVar, Final
3+
4+
from docutils import nodes
5+
from docutils.transforms import Transform
6+
7+
__docformat__: Final = "reStructuredText"
8+
9+
class Headers(Transform):
10+
default_priority: ClassVar[int]
11+
pep_url: ClassVar[str]
12+
pep_cvs_url: ClassVar[str]
13+
rcs_keyword_substitutions: ClassVar[tuple[tuple[re.Pattern[str], str], ...]]
14+
def apply(self) -> None: ...
15+
16+
class Contents(Transform):
17+
default_priority: ClassVar[int]
18+
def apply(self) -> None: ...
19+
20+
class TargetNotes(Transform):
21+
default_priority: ClassVar[int]
22+
def apply(self) -> None: ...
23+
def cleanup_callback(self, pending: nodes.pending) -> None: ...
24+
25+
class PEPZero(Transform):
26+
default_priority: ClassVar[int]
27+
def apply(self) -> None: ...
28+
29+
class PEPZeroSpecial(nodes.SparseNodeVisitor):
30+
pep_url: ClassVar[str]
31+
def unknown_visit(self, node: nodes.Node) -> None: ...
32+
def visit_reference(self, node: nodes.reference) -> None: ...
33+
def visit_field_list(self, node: nodes.field_list) -> None: ...
34+
pep_table: bool
35+
entry: int
36+
def visit_tgroup(self, node: nodes.tgroup) -> None: ...
37+
def visit_colspec(self, node: nodes.colspec) -> None: ...
38+
def visit_row(self, node: nodes.row) -> None: ...
39+
def visit_entry(self, node: nodes.entry) -> None: ...
40+
41+
non_masked_addresses: tuple[str, ...]
42+
43+
def mask_email(ref: nodes.reference, pepno: int | None = None) -> nodes.Node: ...
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from _typeshed import Incomplete
2+
from collections.abc import Iterable
3+
from typing import ClassVar, Final, overload
4+
5+
from docutils import nodes
6+
from docutils.transforms import Transform
7+
8+
__docformat__: Final = "reStructuredText"
9+
10+
class PropagateTargets(Transform):
11+
default_priority: ClassVar[int]
12+
def apply(self) -> None: ...
13+
14+
class AnonymousHyperlinks(Transform):
15+
default_priority: ClassVar[int]
16+
def apply(self) -> None: ...
17+
18+
class IndirectHyperlinks(Transform):
19+
default_priority: ClassVar[int]
20+
def apply(self) -> None: ...
21+
def resolve_indirect_target(self, target: nodes.Element) -> None: ...
22+
def nonexistent_indirect_target(self, target: nodes.Element) -> None: ...
23+
def circular_indirect_reference(self, target: nodes.Element) -> None: ...
24+
def indirect_target_error(self, target: nodes.Element, explanation) -> None: ...
25+
def resolve_indirect_references(self, target: nodes.Element) -> None: ...
26+
27+
class ExternalTargets(Transform):
28+
default_priority: ClassVar[int]
29+
def apply(self) -> None: ...
30+
31+
class InternalTargets(Transform):
32+
default_priority: ClassVar[int]
33+
def apply(self) -> None: ...
34+
def resolve_reference_ids(self, target: nodes.Element) -> None: ...
35+
36+
class Footnotes(Transform):
37+
default_priority: ClassVar[int]
38+
autofootnote_labels: list[str] | None
39+
symbols: ClassVar[list[str]]
40+
def apply(self) -> None: ...
41+
def number_footnotes(self, startnum: int) -> int: ...
42+
def number_footnote_references(self, startnum: int) -> None: ...
43+
def symbolize_footnotes(self) -> None: ...
44+
def resolve_footnotes_and_citations(self) -> None: ...
45+
@overload
46+
def resolve_references(self, note: nodes.footnote, reflist: Iterable[nodes.footnote_reference]) -> None: ...
47+
@overload
48+
def resolve_references(self, note: nodes.citation, reflist: Iterable[nodes.citation_reference]) -> None: ...
49+
@overload
50+
def resolve_references(self, note: nodes.title, reflist: Iterable[nodes.title_reference]) -> None: ...
51+
52+
class CircularSubstitutionDefinitionError(Exception): ...
53+
54+
class Substitutions(Transform):
55+
default_priority: ClassVar[int]
56+
def apply(self) -> None: ...
57+
58+
class TargetNotes(Transform):
59+
default_priority: ClassVar[int]
60+
classes: Incomplete
61+
def __init__(self, document: nodes.document, startnode: nodes.Node) -> None: ...
62+
def apply(self) -> None: ...
63+
def make_target_footnote(self, refuri: str, refs: list[Incomplete], notes: dict[Incomplete, Incomplete]): ...
64+
65+
class DanglingReferences(Transform):
66+
default_priority: ClassVar[int]
67+
def apply(self) -> None: ...
68+
69+
class DanglingReferencesVisitor(nodes.SparseNodeVisitor):
70+
document: nodes.document
71+
def __init__(self, document: nodes.document, unknown_reference_resolvers) -> None: ...
72+
def unknown_visit(self, node: nodes.Node) -> None: ...
73+
def visit_reference(self, node: nodes.reference) -> None: ...
74+
def visit_footnote_reference(self, node: nodes.footnote_reference) -> None: ...
75+
def visit_citation_reference(self, node: nodes.citation_reference) -> None: ...
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from _typeshed import Incomplete
2+
from collections.abc import Generator, Iterable
3+
from typing import ClassVar, Final, Literal
4+
5+
from docutils import nodes
6+
from docutils.transforms import Transform
7+
8+
__docformat__: Final = "reStructuredText"
9+
10+
class Decorations(Transform):
11+
default_priority: ClassVar[int]
12+
def apply(self) -> None: ...
13+
def generate_header(self) -> None: ...
14+
def generate_footer(self) -> list[nodes.paragraph] | None: ...
15+
16+
class ExposeInternals(Transform):
17+
default_priority: ClassVar[int]
18+
def not_Text(self, node: object) -> bool: ... # node passing to isinstance() method
19+
def apply(self) -> None: ...
20+
21+
class Messages(Transform):
22+
default_priority: ClassVar[int]
23+
def apply(self) -> None: ...
24+
25+
class FilterMessages(Transform):
26+
default_priority: ClassVar[int]
27+
def apply(self) -> None: ...
28+
29+
class TestMessages(Transform):
30+
__test__: bool
31+
default_priority: ClassVar[int]
32+
def apply(self) -> None: ...
33+
34+
class StripComments(Transform):
35+
default_priority: ClassVar[int]
36+
def apply(self) -> None: ...
37+
38+
class StripClassesAndElements(Transform):
39+
default_priority: ClassVar[int]
40+
strip_elements: set[Incomplete]
41+
def apply(self) -> None: ...
42+
def check_classes(self, node: object) -> bool: ...
43+
44+
class SmartQuotes(Transform):
45+
default_priority: ClassVar[int]
46+
nodes_to_skip: ClassVar[tuple[type[nodes.Node], ...]]
47+
literal_nodes: ClassVar[tuple[type[nodes.Node | nodes.Body], ...]]
48+
smartquotes_action: ClassVar[str]
49+
unsupported_languages: set[str]
50+
def __init__(self, document: nodes.document, startnode: nodes.Node | None) -> None: ...
51+
def get_tokens(self, txtnodes: Iterable[nodes.Node]) -> Generator[tuple[Literal["literal", "plain"], str]]: ...
52+
def apply(self) -> None: ...
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from typing import ClassVar, Final
2+
from typing_extensions import deprecated
3+
4+
from docutils import nodes
5+
from docutils.transforms import Transform
6+
7+
__docformat__: Final = "reStructuredText"
8+
9+
@deprecated("docutils.transforms.writer_aux.Compound is deprecated and will be removed in Docutils 0.21 or later.")
10+
class Compound(Transform):
11+
default_priority: ClassVar[int]
12+
def __init__(self, document: nodes.document, startnode: nodes.Node | None = None) -> None: ...
13+
def apply(self) -> None: ...
14+
15+
class Admonitions(Transform):
16+
default_priority: ClassVar[int]
17+
def apply(self) -> None: ...

0 commit comments

Comments
 (0)