- Notifications
You must be signed in to change notification settings - Fork 886
Closed
Labels
bugBug report.Bug report.extensionRelated to one or more of the included extensions.Related to one or more of the included extensions.
Description
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>'
Metadata
Metadata
Assignees
Labels
bugBug report.Bug report.extensionRelated to one or more of the included extensions.Related to one or more of the included extensions.