When the example model is modified to have a field_validator with keyword argument mode='before'
griffe crashes.
(c:\gitlab\mkdocs_experiments\.conda) PS C:\gitlab\mkdocs_experiments> mkdocs serve
INFO - Building documentation...
INFO - Cleaning site directory
INFO - mkdocstrings_handlers: .conda\Lib\site-packages\griffe_pydantic\templates\material\pydantic_model.html: DeprecationWarning: Extending '_base/class.html' is deprecated, extend '_base/class.html.jinja' instead. After some time, this message will be logged as a warning, causing strict builds to fail.
INFO - Documentation built in 0.88 seconds
INFO - [21:16:41] Watching paths for changes: 'docs', 'mkdocs.yml'
INFO - [21:16:41] Serving on http://127.0.0.1:8000/
INFO - [21:17:11] Detected file changes
INFO - Building documentation...
INFO - mkdocstrings_handlers: .conda\Lib\site-packages\griffe_pydantic\templates\material\pydantic_model.html: DeprecationWarning: Extending '_base/class.html' is deprecated, extend '_base/class.html.jinja' instead. After some time, this message will be logged as a warning, causing strict builds to fail.
INFO - Documentation built in 1.03 seconds
INFO - [21:17:12] Reloading browsers
INFO - [21:17:29] Detected file changes
INFO - Building documentation...
ERROR - Error reading page 'index.md': malformed node or string: ExprKeyword(name='mode', value="'before'", function=ExprName(name='field_validator', parent=Class('ExampleModel', 37, 61)))
Traceback (most recent call last):
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\mkdocs\livereload\__init__.py", line 211, in _build_loop
self.builder()
File "c:\gitlab\mkdocs_experiments\.conda\Lib\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 "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\mkdocs\commands\build.py", line 310, in build
_populate_page(file.page, config, files, dirty)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\mkdocs\commands\build.py", line 167, in _populate_page
page.render(config, files)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\mkdocs\structure\pages.py", line 285, in render
self.content = md.convert(self.markdown)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\markdown\core.py", line 357, in convert
root = self.parser.parseDocument(self.lines).getroot()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\markdown\blockparser.py", line 117, in parseDocument
self.parseChunk(self.root, '\n'.join(lines))
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\markdown\blockparser.py", line 136, in parseChunk
self.parseBlocks(parent, text.split('\n\n'))
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\markdown\blockparser.py", line 158, in parseBlocks
if processor.run(parent, blocks) is not False:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\mkdocstrings\extension.py", line 128, in run
html, handler, data = self._process_block(identifier, block, heading_level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\mkdocstrings\extension.py", line 210, in _process_block
data: CollectorItem = handler.collect(identifier, options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\mkdocstrings_handlers\python\handler.py", line 315, in collect
loader.load(
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe\loader.py", line 233, in load
self.extensions.call("on_package_loaded", pkg=obj)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe\extensions\base.py", line 345, in call
getattr(extension, event)(**kwargs)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe_pydantic\extension.py", line 42, in on_package_loaded
static.process_module(pkg, processed=self.processed, schema=self.schema)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe_pydantic\static.py", line 165, in process_module
process_module(submodule, processed=processed, schema=schema)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe_pydantic\static.py", line 162, in process_module
process_class(cls, processed=processed, schema=schema)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe_pydantic\static.py", line 145, in process_class
process_function(member, cls, processed=processed)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe_pydantic\static.py", line 111, in process_function
fields = [ast.literal_eval(field) for field in decorator.arguments] # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\site-packages\griffe_pydantic\static.py", line 111, in <listcomp>
fields = [ast.literal_eval(field) for field in decorator.arguments] # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\ast.py", line 110, in literal_eval
return _convert(node_or_string)
^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\ast.py", line 109, in _convert
return _convert_signed_num(node)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\ast.py", line 83, in _convert_signed_num
return _convert_num(node)
^^^^^^^^^^^^^^^^^^
File "c:\gitlab\mkdocs_experiments\.conda\Lib\ast.py", line 74, in _convert_num
_raise_malformed_node(node)
File "c:\gitlab\mkdocs_experiments\.conda\Lib\ast.py", line 71, in _raise_malformed_node
raise ValueError(msg + f': {node!r}')
ValueError: malformed node or string: ExprKeyword(name='mode', value="'before'", function=ExprName(name='field_validator', parent=Class('ExampleModel', 37, 61)))
ERROR - [21:17:30] An error happened during the rebuild. The server will appear stuck until build errors are resolved.