Skip to content

AssertionError: we should not get here! from html.parser with Python 3.13.5 #4001

@Lucas-C

Description

@Lucas-C

Hi!

Here is a minimal reproduction case:

  • mkdocs.yml:
site_name: fpdf2

docs_dir: docs/
site_dir: public/

nav:
- 'Project Home': 'index.md'
  • docs/index.md:
The PDF object as an `obj<</>>endobj` text block.

When calling: python -m mkdocs serve --open

I get this error:

$ python -m mkdocs serve --open
INFO    -  Building documentation...
INFO    -  Cleaning site directory
ERROR   -  Error reading page 'index.md': we should not get here!
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/__main__.py", line 370, in <module>
    cli()
    ~~~^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/click/core.py", line 1442, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/click/core.py", line 1363, in main
    rv = self.invoke(ctx)
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/click/core.py", line 1830, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/click/core.py", line 1226, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/click/core.py", line 794, in invoke
    return callback(*args, **kwargs)
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/__main__.py", line 272, in serve_command
    serve.serve(**kwargs)
    ~~~~~~~~~~~^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/commands/serve.py", line 85, in serve
    builder(config)
    ~~~~~~~^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/commands/serve.py", line 67, in builder
    build(config, serve_url=None if is_clean else serve_url, dirty=is_dirty)
    ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/commands/build.py", line 310, in build
    _populate_page(file.page, config, files, dirty)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/commands/build.py", line 167, in _populate_page
    page.render(config, files)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/structure/pages.py", line 285, in render
    self.content = md.convert(self.markdown)
                   ~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/markdown/core.py", line 354, in convert
    self.lines = prep.run(self.lines)
                 ~~~~~~~~^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/site-packages/mkdocs/structure/pages.py", line 529, in run
    parser.feed('\n'.join(lines))
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/html/parser.py", line 129, in feed
    self.goahead(0)
    ~~~~~~~~~~~~^^^
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/html/parser.py", line 189, in goahead
    k = self.parse_starttag(i)
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/html/parser.py", line 321, in parse_starttag
    endpos = self.check_for_whole_start_tag(i)
  File "/home/user/.pyenv/versions/3.13.5/lib/python3.13/html/parser.py", line 394, in check_for_whole_start_tag
    raise AssertionError("we should not get here!")
AssertionError: we should not get here!

Environment

$ python --version
Python 3.13.5

$ python -m pip freeze | grep mkdocs
mkdocs==1.6.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions