Skip to content
Snippets Groups Projects
conf.py 4.63 KiB
Newer Older
  • Learn to ignore specific revisions
  • import os
    import subprocess
    import sys
    import time
    import sphinx.util.logging
    
    rahix's avatar
    rahix committed
    from docutils import nodes
    from docutils.parsers import rst
    
    
    # If extensions (or modules to document with autodoc) are in another directory,
    # add these directories to sys.path here. If the directory is relative to the
    # documentation root, use os.path.abspath to make it absolute, like shown here.
    #
    sys.path.insert(0, os.path.abspath("../pycardium/modules/py"))
    
    sys.path.insert(0, os.path.abspath("./"))
    
    
    logger = sphinx.util.logging.getLogger("card10/conf.py")
    
    
    # Hawkmoth does not yet support Sphinx 3
    #
    # See https://github.com/jnikula/hawkmoth/issues/17
    if sphinx.version_info[0] > 2:
        logger.warning(
            "Sphinx versions >= 3 are not yet working properly with hawkmoth.  Documentation of C items will probably be broken ..."
        )
    
    
    
    # -- Project information -----------------------------------------------------
    
    project = "card10-firmware"
    copyright = "2019"
    
    # The full version, including alpha/beta/rc tags
    
    rahix's avatar
    rahix committed
    release = (
        subprocess.check_output(["git", "describe", "--long", "--always"]).decode().strip()
    )
    
    release += "<br />"
    release += time.strftime("%F %R")
    version = release
    
    
    # -- General configuration ---------------------------------------------------
    
    # Add any Sphinx extension module names here, as strings. They can be
    # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
    # ones.
    extensions = [
        "sphinx.ext.autodoc",
        "sphinx.ext.viewcode",
        "sphinx.ext.ifconfig",
    
    rahix's avatar
    rahix committed
        "sphinx.ext.todo",
    
    rahix's avatar
    rahix committed
    todo_include_todos = True
    
    
    # List of patterns, relative to source directory, that match files and
    # directories to ignore when looking for source files.
    # This pattern also affects html_static_path and html_extra_path.
    
    exclude_patterns = ["output", "Thumbs.db", ".DS_Store", "hawkmoth"]
    
    rahix's avatar
    rahix committed
    # -- Extensions -------------------------------------------------------------- {{{
    
    
    class ColorExample(rst.Directive):
        has_content = False
        required_arguments = 1
        optional_arguments = 0
        option_spec = {}
    
        def run(self):
            color = self.arguments[0]
            html_text = '<div style="width: 30px;height: 30px;background: {};border: black 1px solid;border-radius: 15px;"></div>'
            return [nodes.raw("", html_text.format(color), format="html")]
    
    rahix's avatar
    rahix committed
    # }}}
    
    
    # -- Options for HTML output ------------------------------------------------- {{{
    
    # The Read the Docs theme is available from
    # - https://github.com/snide/sphinx_rtd_theme
    # - https://pypi.python.org/pypi/sphinx_rtd_theme
    # - python-sphinx-rtd-theme package (on Debian)
    try:
        import sphinx_rtd_theme
    
        html_theme = "sphinx_rtd_theme"
        html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
        pygments_style = "monokai"
    except ImportError:
    
    rahix's avatar
    rahix committed
        logger.warning(
            'The Sphinx "sphinx_rtd_theme" HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme.'
        )
    
    
    
    # Add any paths that contain custom static files (such as style sheets) here,
    # relative to this directory. They are copied after the builtin static files,
    # so a file named "default.css" will overwrite the builtin "default.css".
    html_static_path = ["static"]
    
    rahix's avatar
    rahix committed
    
    # Theme Options
    
    rahix's avatar
    rahix committed
    html_theme_options = {"style_external_links": True}
    
    rahix's avatar
    rahix committed
    
    # Show "Edit on GitLab" links
    html_show_sourcelink = False
    html_context = {
        "display_gitlab": True,
        "gitlab_host": "git.card10.badge.events.ccc.de",
        "gitlab_user": "card10",
        "gitlab_repo": "firmware",
        "gitlab_version": "master/",
        "conf_py_path": "Documentation/",
        "theme_vcs_pageview_mode": "edit",
    }
    
    # }}}
    
    # -- Options for Auto-Doc ---------------------------------------------------- {{{
    
    rahix's avatar
    rahix committed
    autodoc_mock_imports = [
    
    rahix's avatar
    rahix committed
        "buttons",
        "interrupt",
    
        "sys_bme680",
    
        "sys_bhi160",
    
    rahix's avatar
    rahix committed
        "sys_display",
        "sys_leds",
    
    rahix's avatar
    rahix committed
        "sys_max30001",
    
        "sys_max86150",
    
    schneider's avatar
    schneider committed
        "sys_config",
    
    rahix's avatar
    rahix committed
        "ucollections",
    
        "uerrno",
    
    rahix's avatar
    rahix committed
        "urandom",
        "utime",
    ]
    
    
    autodoc_member_order = "bysource"
    # }}}
    
    # -- Options for Hawkmoth ---------------------------------------------------- {{{
    has_hawkmoth = False
    try:
        # Attempt importing hawkmoth
        import hawkmoth  # noqa: F401
    
        extensions.append("hawkmoth")
    
        cautodoc_root = os.path.abspath("..")
    
        cautodoc_clang = "-D__SPHINX_DOC"
    
        has_hawkmoth = True
    
    except ImportError as e:
        if e.name == "clang":
    
    rahix's avatar
    rahix committed
            logger.warning(
                "hawkmoth requires the clang python module.  Documentation for Epicardium API will not be generated."
            )
    
    # }}}
    
    
    # -- Sphinx Setup ------------------------------------------------------------
    def setup(app):
        app.add_config_value("has_hawkmoth", has_hawkmoth, "")
    
    rahix's avatar
    rahix committed
        app.add_directive("color-example", ColorExample)