Correct the declarations of I/O buffers as bytes-based by oprypin · Pull Request #1400 · Python-Markdown/markdown (original) (raw)
Correctly declare the parameter annotations as BinaryIO
, because in fact it works only with byte-based buffers.
from markdown import Markdown
from io import StringIO, BytesIO
Markdown().convertFile(BytesIO(b'input'), output=BytesIO()) <markdown.core.Markdown object at 0x7fe3bba7c710>
Markdown().convertFile(StringIO('input'), output=BytesIO()) Traceback (most recent call last): File "", line 1, in File "markdown/core.py", line 423, in convertFile text = input_file.read() ^^^^^^^^^^^^^^^^^ File "", line 500, in read TypeError: can't concat str to bytes
Markdown().convertFile(BytesIO(b'input'), output=StringIO()) Traceback (most recent call last): File "", line 1, in File "markdown/core.py", line 446, in convertFile output_file.write(html) File "", line 378, in write TypeError: string argument expected, got 'bytes'