Skip to content
Snippets Groups Projects
Select Git revision
  • 8160781d3922a21d6532e29271bbf4c72cc07e76
  • master default
  • v0.1.11.1
  • v0.1.11
  • v0.1.10.1
  • v0.1.10
  • v0.1.9.8
  • v0.1.9.7
  • v0.1.9.6
  • v0.1.2
  • v0.1.1
  • v0.1
12 results

conf.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    conf.py 7.73 KiB
    # -*- coding: utf-8 -*-
    #
    import re
    import sys
    from datetime import datetime
    
    # The theme to use for HTML and HTML Help pages.  See the documentation for
    # a list of builtin themes.
    #
    # html_theme = 'nature'
    import sphinx_rtd_theme
    from docutils.parsers.rst import directives
    from recommonmark.parser import CommonMarkParser
    from recommonmark.transform import AutoStructify
    from sphinx.ext.autosummary import Autosummary, get_documenter
    from sphinx.util.inspect import safe_getattr
    
    # The version info for the project you're documenting, acts as replacement for
    # |version| and |release|, also used in various other places throughout the
    # built documents.
    #
    import openqlab
    
    # openqlab documentation build configuration file, created by
    # sphinx-quickstart on Thu Jun  1 10:08:39 2017.
    #
    # This file is execfile()d with the current directory set to its
    # containing dir.
    #
    # Note that not all possible configuration values are present in this
    # autogenerated file.
    #
    # All configuration values have a default; values that are commented out
    # serve to show the default.
    
    # 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.
    #
    # import os
    # import sys
    # sys.path.insert(0, os.path.abspath('.'))
    
    
    # -- General configuration ------------------------------------------------
    
    # If your documentation needs a minimal Sphinx version, state it here.
    #
    # needs_sphinx = '1.0'
    
    # 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.todo",
        "sphinx.ext.coverage",
        "sphinx.ext.mathjax",
        "sphinx_markdown_tables",
        "sphinx.ext.intersphinx",
        "sphinx.ext.napoleon",
    ]
    
    # Add any paths that contain templates here, relative to this directory.
    templates_path = ["_templates"]
    
    # Add Markdown support
    source_parsers = {".md": CommonMarkParser}
    # The suffix(es) of source filenames.
    # You can specify multiple suffix as a list of string:
    #
    source_suffix = [".rst", ".md"]
    # source_suffix = '.rst'
    
    # The master toctree document.
    master_doc = "index"
    
    # General information about the project.
    project = "openqlab"
    copyright = f"{datetime.now().year}, LasNQ @ Uni Hamburg"
    author = "LasNQ @ Uni Hamburg"
    
    
    # The short X.Y version.
    version = openqlab.__version__
    # The full version, including alpha/beta/rc tags.
    release = openqlab.__version__
    
    # The language for content autogenerated by Sphinx. Refer to documentation
    # for a list of supported languages.
    #
    # This is also used if you do content translation via gettext catalogs.
    # Usually you set "language" from the command line for these cases.
    language = "en"
    
    # List of patterns, relative to source directory, that match data_files and
    # directories to ignore when looking for source data_files.
    # This patterns also effect to html_static_path and html_extra_path
    exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
    
    # The name of the Pygments (syntax highlighting) style to use.
    pygments_style = "sphinx"
    
    # If true, `todo` and `todoList` produce output, else they produce nothing.
    todo_include_todos = True
    todo_link_only = False
    
    primary_domain = "py"
    
    # -- Options for HTML output ----------------------------------------------
    
    
    html_theme = "sphinx_rtd_theme"
    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
    
    # Theme options are theme-specific and customize the look and feel of a theme
    # further.  For a list of options available for each theme, see the
    # documentation.
    #
    # html_theme_options = {}
    
    # Add any paths that contain custom static data_files (such as style sheets) here,
    # relative to this directory. They are copied after the builtin static data_files,
    # so a file named "default.css" will overwrite the builtin "default.css".
    html_static_path = ["_static"]
    
    # -- Options for HTMLHelp output ------------------------------------------
    
    # Output file base name for HTML help builder.
    htmlhelp_basename = "openqlabdoc"
    
    # -- Options for LaTeX output ---------------------------------------------
    
    latex_elements = {  # type: ignore
        # The paper size ('letterpaper' or 'a4paper').
        #
        # 'papersize': 'letterpaper',
        # The font size ('10pt', '11pt' or '12pt').
        #
        # 'pointsize': '10pt',
        # Additional stuff for the LaTeX preamble.
        #
        # 'preamble': '',
        # Latex figure (float) alignment
        #
        # 'figure_align': 'htbp',
    }
    
    # Grouping the document tree into LaTeX data_files. List of tuples
    # (source start file, target name, title,
    #  author, documentclass [howto, manual, or own class]).
    latex_documents = [
        (master_doc, "openqlab.tex", "openqlab Documentation", "LasNQ group", "manual")
    ]
    
    # -- Options for manual page output ---------------------------------------
    
    # One entry per manual page. List of tuples
    # (source start file, name, description, authors, manual section).
    man_pages = [(master_doc, "openqlab.tex", "openqlab Documentation", [author], 1)]
    
    # -- Options for Texinfo output -------------------------------------------
    
    # Grouping the document tree into Texinfo data_files. List of tuples
    # (source start file, target name, title, author,
    #  dir menu entry, description, category)
    texinfo_documents = [
        (
            master_doc,
            "openqlab.tex",
            "openqlab Documentation",
            author,
            "openqlab",
            "Open source lab toolbox for quantum optical experiments.",
            "Miscellaneous",
        )
    ]
    
    
    class AutoAutoSummary(Autosummary):
        option_spec = {"methods": directives.unchanged, "attributes": directives.unchanged}
    
        required_arguments = 1
    
        @staticmethod
        def get_members(obj, typ, include_public=None):
            if not include_public:
                include_public = []
            items = []
            for name in dir(obj):
                try:
                    documenter = get_documenter(safe_getattr(obj, name), obj)
                except AttributeError:
                    continue
                if documenter.objtype == typ:
                    items.append(name)
            public = [x for x in items if x in include_public or not x.startswith("_")]
            return public, items
    
        def run(self):
            clazz = str(self.arguments[0])
            try:
                (module_name, class_name) = clazz.rsplit(".", 1)
                m = __import__(module_name, globals(), locals(), [class_name])
                c = getattr(m, class_name)
                if "methods" in self.options:
                    _, methods = self.get_members(c, "method", ["__init__"])
    
                    self.content = [
                        "~%s.%s" % (clazz, method)
                        for method in methods
                        if not method.startswith("_")
                    ]
                if "attributes" in self.options:
                    _, attribs = self.get_members(c, "attribute")
                    self.content = [
                        "~%s.%s" % (clazz, attrib)
                        for attrib in attribs
                        if not attrib.startswith("_")
                    ]
            finally:
                return super(AutoAutoSummary, self).run()
    
    
    def setup(app):
        app.add_directive("autoautosummary", AutoAutoSummary)
        app.add_config_value("recommonmark_config", {"enable_inline_math": True}, True)
        app.add_transform(AutoStructify)
    
    
    python_version = ".".join(map(str, sys.version_info[0:2]))
    intersphinx_mapping = {
        "sphinx": ("http://www.sphinx-doc.org/en/stable", None),
        "python": ("https://docs.python.org/" + python_version, None),
        "matplotlib": ("https://matplotlib.org", None),
        "numpy": ("https://docs.scipy.org/doc/numpy", None),
        "sklearn": ("http://scikit-learn.org/stable", None),
        "pandas": ("http://pandas.pydata.org/pandas-docs/stable", None),
        "scipy": ("https://docs.scipy.org/doc/scipy/reference", None),
    }