From 1a0ea7cfca178d3960746b27c9913d339786dc6e Mon Sep 17 00:00:00 2001 From: jelleas Date: Thu, 4 Jun 2020 15:50:47 +0200 Subject: [PATCH] mimic cs50.readthedocs --- .readthedocs.yml | 28 +++--- docs/requirements.txt | 3 - docs/source/conf.py | 213 +++--------------------------------------- 3 files changed, 24 insertions(+), 220 deletions(-) delete mode 100644 docs/requirements.txt diff --git a/.readthedocs.yml b/.readthedocs.yml index 3f1bce3..2733687 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -1,19 +1,15 @@ -version: 2 +build: + image: latest -sphinx: - builder: html - configuration: docs/source/conf.py - fail_on_warning: false +python: + version: 3.7 + install: + - method: pip + path: . + extra_requirements: + - develop -formats: - - pdf +sphinx: + builder: dirhtml -python: - version: 3.6 - install: - - method: pip - path: . - extra_requirements: - - develop - - method: setuptools - path: . +version: 2 diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index 04c8577..0000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -sphinx -sphinx-autobuild -sphinx_rtd_theme diff --git a/docs/source/conf.py b/docs/source/conf.py index f4a238c..66e7a5e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -1,211 +1,22 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# compare50 documentation build configuration file, created by -# sphinx-quickstart on Wed Jun 27 13:24:24 2018. -# -# 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('../../compare50')) - +import time -# -- General configuration ------------------------------------------------ +_tool = "compare50" -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' +# Add path to module for autodoc +sys.path.insert(0, os.path.abspath(f'../../{_tool}')) -# 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'] -autodoc_default_flags = ["imported-members"] - -# 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 = 'compare50' -copyright = '2018, CS50' -author = 'CS50' - -# 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. -# -# The short X.Y version. -version = '' -# The full version, including alpha/beta/rc tags. -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 = [] -# 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 = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# +html_css_files = ["https://cs50.readthedocs.io/_static/custom.css?" + str(round(time.time()))] +html_js_files = ["https://cs50.readthedocs.io/_static/custom.js?" + str(round(time.time()))] html_theme = "sphinx_rtd_theme" - -# 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 = {"collapse_navigation" : False} - -# 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 = [] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# This is required for the alabaster theme -# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars -html_sidebars = { - '**': [ - 'relations.html', # needs 'show_related': True theme option to display - 'searchbox.html', - ] +html_theme_options = { + "display_version": False, + "prev_next_buttons_location": False, + "sticky_navigation": False } +html_title = f'{_tool} Docs' - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = 'compare50doc' - - -# -- 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, 'compare50.tex', 'compare50 Documentation', - 'CS50', '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, 'compare50', 'compare50 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, 'compare50', 'compare50 Documentation', - author, 'compare50', 'One line description of project.', - 'Miscellaneous'), -] - - -# https://stackoverflow.com/questions/31784830/sphinx-ivar-tag-goes-looking-for-cross-references - -from docutils import nodes -from sphinx.util.docfields import TypedField -from sphinx import addnodes - -def patched_make_field(self, types, domain, items, env=None): - # type: (List, unicode, Tuple) -> nodes.field - def handle_item(fieldarg, content): - par = nodes.paragraph() - par += addnodes.literal_strong('', fieldarg) # Patch: this line added - #par.extend(self.make_xrefs(self.rolename, domain, fieldarg, - # addnodes.literal_strong)) - if fieldarg in types: - par += nodes.Text(' (') - # NOTE: using .pop() here to prevent a single type node to be - # inserted twice into the doctree, which leads to - # inconsistencies later when references are resolved - fieldtype = types.pop(fieldarg) - if len(fieldtype) == 1 and isinstance(fieldtype[0], nodes.Text): - typename = u''.join(n.astext() for n in fieldtype) - par.extend(self.make_xrefs(self.typerolename, domain, typename, - addnodes.literal_emphasis)) - else: - par += fieldtype - par += nodes.Text(')') - par += nodes.Text(' -- ') - par += content - return par - - fieldname = nodes.field_name('', self.label) - if len(items) == 1 and self.can_collapse: - fieldarg, content = items[0] - bodynode = handle_item(fieldarg, content) - else: - bodynode = self.list_type() - for fieldarg, content in items: - bodynode += nodes.list_item('', handle_item(fieldarg, content)) - fieldbody = nodes.field_body('', bodynode) - return nodes.field('', fieldname, fieldbody) - -TypedField.make_field = patched_make_field +project = f'{_tool}'