Example #1
0
def generate_pydoc(
    module: str,
    article_id: str,
    article_title: str,
    target_dir: str,
    module_overview: str,
    func_prefix: Optional[str] = None,
) -> None:
    """
    Args:
         module (str): The Python module to parse and generate docs for.
         article_id (str): The article ID.
         article_title (str): The article title.
         target_dir (str): The target directory to generate docs at.
         func_prefix (str): Prefix to add to function signature.
         module_overview (str): Module overview to add to the doc header.

    Returns:
        None: No data returned.
    """
    pydocmd = PydocMarkdown()
    pydocmd.processors[0] = IgnoreDocstringProcessor()
    pydocmd.processors[1] = SmartProcessor(
        sphinx=CommonServerPythonProcessor())
    pydocmd.renderer = DemistoMarkdownRenderer(
        insert_header_anchors=False,
        func_prefix=func_prefix,
        module_overview=module_overview,
        escape_html_in_docstring=True,
        classdef_code_block=False,
        descriptive_class_title=False,
        signature_with_decorators=False,
        signature_class_prefix=True,
    )
    loader: PythonLoader = next(
        (ldr for ldr in pydocmd.loaders if isinstance(ldr, PythonLoader)),
        None)
    loader.modules = [module]
    modules = pydocmd.load_modules()
    pydocmd.process(modules)

    pydoc = pydocmd.renderer.render_to_string(modules)

    article_description = f'API reference documentation for {article_title}.'
    content = f'---\nid: {article_id}\ntitle: {article_title}\ndescription: {article_description}\n---\n\n{module_overview}\n\n{pydoc}'
    with open(f'{target_dir}/{article_id}.md', mode='w',
              encoding='utf-8') as f:
        f.write(content)
Example #2
0
def generate_pydoc(module: str, article_id: str, article_title: str,
                   target_dir: str, func_prefix: Optional[str],
                   module_overview: Optional[str]) -> None:
    """
    Args:
         module (str): The Python module to parse and generate docs for.
         article_id (str): The article ID.
         article_title (str): The article title.
         target_dir (str): The target directory to generate docs at.
         func_prefix (str): Prefix to add to function signature.
         module_overview (str): Module overview to add to the doc header.

    Returns:
        None: No data returned.
    """
    pydocmd = PydocMarkdown()
    pydocmd.renderer = DemistoMarkdownRenderer(insert_header_anchors=False,
                                               func_prefix=func_prefix,
                                               module_overview=module_overview)
    loader: PythonLoader = next(
        (ldr for ldr in pydocmd.loaders if isinstance(ldr, PythonLoader)),
        None)
    loader.modules = [module]
    modules = pydocmd.load_modules()
    pydocmd.process(modules)

    stdout = sys.stdout
    sys.stdout = tmp_stdout = StringIO()
    pydocmd.render(modules)
    sys.stdout = stdout
    pydoc = tmp_stdout.getvalue()

    article_description = f'API reference documentation for {article_title}.'
    content = f'---\nid: {article_id}\ntitle: {article_title}\ndescription: {article_description}\n---\n\n{pydoc}'
    with open(f'{target_dir}/{article_id}.md', mode='w',
              encoding='utf-8') as f:
        f.write(content)