#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Treelite documentation build configuration file, created by sphinx-quickstart on Wed Sep 6 14:38:46 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. """ from subprocess import call import os import sys import shutil import guzzle_sphinx_theme from sh.contrib import git from contextlib import contextmanager sys.path.insert(0, os.path.abspath('../runtime/python')) sys.path.insert(0, os.path.abspath('../python')) def setup(app): """Apply custom stylesheet""" app.add_stylesheet('custom.css') @contextmanager def cd(path): """Context manager to switch working directory""" def normpath(path): """Normalize UNIX path to a native path.""" normalized = os.path.join(*path.split('/')) if os.path.isabs(path): return os.path.abspath('/') + normalized return normalized path = normpath(path) cwd = os.getcwd() os.chdir(path) try: yield path finally: os.chdir(cwd) # Run Doxygen first call('doxygen; if [ -d tmp/dev ]; then rm -rf tmp; fi; mkdir tmp; mv html tmp/dev', shell=True) # Run javasphinx call('if [ -d javadoc ]; then rm -rf javadoc/; fi; javasphinx-apidoc -t \'Treelite Java API (EXPERIMENTAL)\' -c _build/javadoc_cache -o ./javadoc ../runtime/java/treelite4j/', shell=True) # -- 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. # pylint: disable=C0103 extensions = [ 'matplotlib.sphinxext.plot_directive', 'sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'sphinx.ext.intersphinx', 'breathe', 'javasphinx', 'sphinx.ext.graphviz', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.imgmath'] imgmath_dvipng_args = ['-gamma', '1.5', '-D', '180', '-bg', 'Transparent'] graphviz_output_format = 'png' plot_formats = [('svg', 300), ('png', 100), ('hires.png', 300)] plot_html_show_source_link = False plot_html_show_formats = False # Breathe extension variables breathe_projects = {"treelite": "doxyxml/"} breathe_default_project = "treelite" # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # 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 = 'treelite' copyright = '2017, DMLC. All rights reserved.' # pylint: disable=W0622 author = 'DMLC developers' # Read version info with open('../python/treelite/VERSION', 'r') as f: VERSION = f.readlines()[0] version = VERSION release = VERSION git_tag = str(git.tag('-l', '--points-at', 'HEAD')).rstrip('\n') git_commit = str(git('rev-parse', '--short', 'HEAD')).rstrip('\n') if git_tag: # tag exists intro_landing_release = 'You are currently browsing the documentation of ' +\ 'a stable version of Treelite: **{}**.'.format(git_tag) nav_ver = git_tag else: # tag does not exist; part of "latest" intro_landing_release = 'You are currently browsing the documentation of ' +\ 'a development version of Treelite: '+\ 'commit **{}**.'.format(git_commit) nav_ver = 'dev, commit {}'.format(git_commit) # Make dropdown menu for version selection with open('_templates/logo-text.html', 'w') as f: f.write(r""" """) rst_epilog = """ .. |longrelease| replace:: {} """.format(intro_landing_release) # 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 = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] html_extra_path = ['./tmp'] # 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 # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme_path = guzzle_sphinx_theme.html_theme_path() html_theme = 'guzzle_sphinx_theme' # Register the theme as an extension to generate a sitemap.xml extensions.append("guzzle_sphinx_theme") # Guzzle theme options (see theme.conf for more information) html_theme_options = { # Set the name of the project to appear in the sidebar "project_nav_name": "Treelite ({})".format(nav_ver) } html_sidebars = { '**': ['logo-text.html', 'globaltoc.html', 'searchbox.html'] } # 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 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'] # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = 'treelitedoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # 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 files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'treelite.tex', 'Treelite Documentation', 'Hyunsu Cho, Mu Li', '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, 'treelite', 'Treelite Documentation', [author], 1) ] # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'treelite', 'Treelite Documentation', author, 'treelite', 'One line description of project.', 'Miscellaneous'), ] # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'python': ('https://docs.python.org/3.4', None), 'numpy': ('http://docs.scipy.org/doc/numpy/', None), 'scipy': ('http://docs.scipy.org/doc/scipy/reference/', None), 'pandas': ('http://pandas-docs.github.io/pandas-docs-travis/', None), 'xgboost': ('http://xgboost.readthedocs.io/en/latest', None), 'sklearn': ('http://scikit-learn.org/stable', None)}