Skip to content

Blog plugin crashes on Python 3.8 (Netlify) #5916

@funkypenguin

Description

@funkypenguin

Context

I host my mkdocs site on Netlify, which currently uses Python 3.8

Bug description

When enabling the blog plugin on Python 3.8, mkdocs build fails with TypeError: 'ABCMeta' object is not subscriptable.

Full output below:

Traceback (most recent call last):
  File "/Users/davidy/.pyenv/versions/mkdocs-blog/bin/mkdocs", line 8, in <module>
    sys.exit(cli())
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/__main__.py", line 283, in build_command
    cfg = config.load_config(**kwargs)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/config/base.py", line 378, in load_config
    errors, warnings = cfg.validate()
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/config/base.py", line 230, in validate
    run_failed, run_warnings = self._validate()
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/config/base.py", line 188, in _validate
    self[key] = config_option.validate(value)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/config/config_options.py", line 182, in validate
    return self.run_validation(value)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/config/config_options.py", line 1064, in run_validation
    self.load_plugin_with_namespace(name, cfg)
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/config/config_options.py", line 1100, in load_plugin_with_namespace
    return (name, self.load_plugin(name, config))
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/mkdocs/config/config_options.py", line 1118, in load_plugin
    plugin_cls = self.installed_plugins[name].load()
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/importlib_metadata/__init__.py", line 209, in load
    module = import_module(match.group('module'))
  File "/Users/davidy/.pyenv/versions/3.8.18/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/material/plugins/blog/plugin.py", line 44, in <module>
    from .structure import Archive, Category, Excerpt, Post, View
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/material/plugins/blog/structure/__init__.py", line 40, in <module>
    from .config import PostConfig
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/material/plugins/blog/structure/config.py", line 24, in <module>
    from .options import PostDate
  File "/Users/davidy/.pyenv/versions/3.8.18/envs/mkdocs-blog/lib/python3.8/site-packages/material/plugins/blog/structure/options.py", line 30, in <module>
    class DateDict(UserDict[str, datetime]):
TypeError: 'ABCMeta' object is not subscriptable

Related links

Reproduction

9.2.5-python3.zip

Steps to reproduce

  1. Create a fresh python 3.8 env using pyenv install 3.8
  2. Install mkdocs with pip install mkdocs-material
  3. Create the absolute minimal site with only the blog plugin enabled (see reproduction)
  4. Uncomment the blog section under plugins: (the info plugin wouldn't work while it was enabled, since mkdocs would error)
  5. Run mkdocs build and observe the error

Browser

No response

Before submitting

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIssue reports a bugresolvedIssue is resolved, yet unreleased if open

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions