Source code for sphinx_automagicdoc.entrypoint

# pylint: disable=import-error

from pathlib import Path

from sphinx.application import Sphinx
from sphinx.config import Config
from sphinx.util.logging import getLogger

from . import mock_filesystem
from .mock_filesystem import virtual_files
from .module_scanner import get_module_hierarchy
from .rst_preparation import (
    MODULE_TEMPLATE_STR,
    prepare_jinja_template,
    prepare_rst_template_content,
)

log = getLogger(__name__)


[docs]def process_text(data: str) -> str: return data
[docs]def config_intialized(app: Sphinx, config: Config): mock_filesystem.base_path = app.srcdir template = prepare_jinja_template(config.automagic_module_template) for module_to_process in config.automagic_modules: modules = list( get_module_hierarchy(module_to_process, ignore=config.automagic_ignore) ) for module in modules: if not module.is_package: continue values = prepare_rst_template_content(module, modules) virtual_files[f"{module.module_str}.rst"] = template.render(**values) virtual_files.update( { file_name: process_text(data) for file_name, data in config.automagic_files.items() } ) virtual_files.update( { file_name: Path(source_file_name).read_text(encoding='utf-8') for file_name, source_file_name in config.automagic_copy_files.items() } ) log.info("virtual_files.keys() = %r", list(virtual_files.keys())) log.debug("virtual_files = %r", virtual_files)
[docs]def setup(app: Sphinx): app.connect('config-inited', config_intialized) app.add_config_value( name='automagic_module_template', default=MODULE_TEMPLATE_STR, rebuild='env', types=[str], ) app.add_config_value( name='automagic_modules', default=[], rebuild='env', types=[list] ) app.add_config_value( name='automagic_ignore', default=[], rebuild='env', types=[list] ) app.add_config_value( name='automagic_files', default={}, rebuild='env', types=[dict] ) app.add_config_value( name='automagic_copy_files', default={}, rebuild='env', types=[dict] )