-
Notifications
You must be signed in to change notification settings - Fork 28
Description
Hi! Thanks for this package, I love the results it produces!
I've been experimenting with ways to fully automate the generation of API reference documentation from source code and docstrings, a la rustdoc. I know you're aware of this, but there's no easy way to include autodoc_pydantic output in a fully automated API reference.
The following works, of course:
.. autosummary::
:toctree: _autosummary
module_with_lots_of_stuff.AutoSummaryModel
module_with_lots_of_stuff.AutoSummarySettings
module_with_lots_of_stuff.another_moduleBut I would like the following:
.. autosummary::
:toctree: _autosummary
:recursive:
module_with_lots_of_stuffI understand that the reason this doesn't work is that Sphinx doesn't let you expose new variables to the autosummary templates (as you discuss in #11). I've worked around this to some extent in the project I'm working on by adding an autosummary table with all the members not documented elsewhere in the template to the end of the module template, but it's not very good and we probably won't end up using it.
My suggestion would be to workaround the bug in Sphinx by adding a Jinja2 filter along the lines of "keep_pydantic_models" that takes an iterator of names of objects and filters out those that aren't models. So a block like the following could be added to an Autosummary template:
{% set models = members | keep_pydantic_models(module=fullname) | list %}
{% if models %}
Models
---------
{% for item in models %}
.. autopydantic_model:: item
{% endfor %}
I think you should be able to add such a filter to all templates, but I'm not super familiar. Sorry if this isn't helpful.
Thanks!