--- /dev/null
+from _typeshed import OpenBinaryModeReading, OpenBinaryModeWriting, OpenTextModeReading, OpenTextModeWriting
+from typing import Any, ClassVar
+
+from docutils import TransformSpec
+
+__docformat__: str
+
+class InputError(IOError): ...
+class OutputError(IOError): ...
+
+def check_encoding(stream: Any, encoding: str) -> bool | None: ...
+
+class Input(TransformSpec):
+ component_type: ClassVar[str]
+ default_source_path: ClassVar[str | None]
+ def read(self) -> Any: ...
+ def __getattr__(self, name: str) -> Any: ... # incomplete
+
+class Output(TransformSpec):
+ component_type: ClassVar[str]
+ default_destination_path: ClassVar[str | None]
+ def __init__(
+ self,
+ destination: Any | None = ...,
+ destination_path: Any | None = ...,
+ encoding: str | None = ...,
+ error_handler: str = ...,
+ ) -> None: ...
+ def write(self, data: str) -> Any: ... # returns bytes or str
+ def encode(self, data: str) -> Any: ... # returns bytes or str
+
+class FileInput(Input):
+ def __init__(
+ self,
+ source: Any | None = ...,
+ source_path: Any | None = ...,
+ encoding: str | None = ...,
+ error_handler: str = ...,
+ autoclose: bool = ...,
+ mode: OpenTextModeReading | OpenBinaryModeReading = ...,
+ ) -> None: ...
+ def readlines(self) -> list[str]: ...
+ def close(self) -> None: ...
+
+class FileOutput(Output):
+ mode: ClassVar[OpenTextModeWriting | OpenBinaryModeWriting]
+ def __getattr__(self, name: str) -> Any: ... # incomplete
+
+class BinaryFileOutput(FileOutput): ...
+
+class StringInput(Input):
+ default_source_path: ClassVar[str]
+
+class StringOutput(Output):
+ default_destination_path: ClassVar[str]
+ destination: str | bytes # only defined after call to write()
+
+class NullInput(Input):
+ default_source_path: ClassVar[str]
+ def read(self) -> str: ...
+
+class NullOutput(Output):
+ default_destination_path: ClassVar[str]
+ def write(self, data: object) -> None: ...
+
+class DocTreeInput(Input):
+ default_source_path: ClassVar[str]