From a05ee9740d79cdc7179b58520e5e1abcdf5d383c Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 17 May 2022 15:00:59 +0200 Subject: [PATCH] Markdown: use I/O protocols (#7851) --- stubs/Markdown/markdown/core.pyi | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/stubs/Markdown/markdown/core.pyi b/stubs/Markdown/markdown/core.pyi index d3efca0ca..3cfdb6761 100644 --- a/stubs/Markdown/markdown/core.pyi +++ b/stubs/Markdown/markdown/core.pyi @@ -1,6 +1,6 @@ from _typeshed import Self from collections.abc import Callable, Mapping, Sequence -from typing import Any, BinaryIO, ClassVar, TextIO +from typing import Any, ClassVar, Protocol from typing_extensions import Literal from xml.etree.ElementTree import Element @@ -8,6 +8,18 @@ from .blockparser import BlockParser from .extensions import Extension from .util import HtmlStash, Registry +# TODO: The following protocols can be replaced by their counterparts from +# codecs, once they have been propagated to all type checkers. +class _WritableStream(Protocol): + def write(self, __data: bytes) -> object: ... + def seek(self, __offset: int, __whence: int) -> object: ... + def close(self) -> object: ... + +class _ReadableStream(Protocol): + def read(self, __size: int = ...) -> bytes: ... + def seek(self, __offset: int, __whence: int) -> object: ... + def close(self) -> object: ... + class Markdown: preprocessors: Registry inlinePatterns: Registry @@ -37,10 +49,7 @@ class Markdown: def is_block_level(self, tag: str) -> bool: ... def convert(self, source: str) -> str: ... def convertFile( - self, - input: str | TextIO | BinaryIO | None = ..., - output: str | TextIO | BinaryIO | None = ..., - encoding: str | None = ..., + self, input: str | _ReadableStream | None = ..., output: str | _WritableStream | None = ..., encoding: str | None = ... ) -> Markdown: ... def markdown( @@ -53,8 +62,8 @@ def markdown( ) -> str: ... def markdownFromFile( *, - input: str | TextIO | BinaryIO | None = ..., - output: str | TextIO | BinaryIO | None = ..., + input: str | _ReadableStream | None = ..., + output: str | _WritableStream | None = ..., encoding: str | None = ..., extensions: Sequence[str | Extension] | None = ..., extension_configs: Mapping[str, Mapping[str, Any]] | None = ...,