I'm running into an issue with "simple" Markdown + HTML examples crashing with a TypeError
. For example, the following throws a TypeError: expected string or bytes-like object
exception:
markdown.markdown( 'Hello\n<div markdown="1"></div>', extensions=["markdown.extensions.md_in_html"], )
Versions: Markdown==3.3.1
, CPython 3.8.6
I haven't had time yet to investigate this further, but I wanted to get an issue opened with some failing test cases in case others are running into this as well. I suspect this has something to do with the raw HTML parser rewrite in #803.
Steps to reproduce:Save the following as mderror.py
:
import traceback import markdown def try_render(text): print(f"\n\n---- Rendering: {text!r}") try: html = markdown.markdown( text, extensions=["markdown.extensions.md_in_html"], ) print(f"---- PASS: {html!r}") except Exception as e: print("---- FAILED") traceback.print_exc() try_render('Hello<div markdown="1"></div>') # Error try_render('Hello\n<div markdown="1"></div>') # Error try_render('Hello\n\n<div markdown="1"></div>') # Okay
Result:
$ python mderror.py ---- Rendering: 'Hello<div markdown="1"></div>' <Element 'div' at 0x110758310> ---- FAILED Traceback (most recent call last): File "mderror.py", line 8, in try_render html = markdown.markdown( File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/core.py", line 386, in markdown return md.convert(text) File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/core.py", line 290, in convert output = pp.run(output) File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/postprocessors.py", line 73, in run if self.isblocklevel(html): File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/postprocessors.py", line 94, in isblocklevel m = re.match(r"^\<\/?([^ >]+)", html) File "/Users/dbader/.pyenv/versions/3.8.6/lib/python3.8/re.py", line 191, in match return _compile(pattern, flags).match(string) TypeError: expected string or bytes-like object ---- Rendering: 'Hello\n<div markdown="1"></div>' <Element 'div' at 0x110758900> ---- FAILED Traceback (most recent call last): File "mderror.py", line 8, in try_render html = markdown.markdown( File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/core.py", line 386, in markdown return md.convert(text) File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/core.py", line 290, in convert output = pp.run(output) File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/postprocessors.py", line 73, in run if self.isblocklevel(html): File "PROJECT_ROOT/venv/lib/python3.8/site-packages/markdown/postprocessors.py", line 94, in isblocklevel m = re.match(r"^\<\/?([^ >]+)", html) File "/Users/dbader/.pyenv/versions/3.8.6/lib/python3.8/re.py", line 191, in match return _compile(pattern, flags).match(string) TypeError: expected string or bytes-like object ---- Rendering: 'Hello\n\n<div markdown="1"></div>' ---- PASS: '<p>Hello</p>\n<div></div>'
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4