blob: ed48e1bb122f1fa4dbef9df55b5db6e8694c3264 [file] [log] [blame]
# requests-cache documentation build configuration file
import os
import sys
from os.path import abspath, dirname, join
# Add project path
sys.path.insert(0, os.path.abspath('..'))
from requests_cache import __version__ # noqa: E402
PROJECT_DIR = abspath(dirname(dirname(__file__)))
PACKAGE_DIR = join(PROJECT_DIR, 'requests_cache')
TEMPLATE_DIR = join(PROJECT_DIR, 'docs', '_templates')
# General information about the project.
project = 'requests-cache'
needs_sphinx = '4.0'
master_doc = 'index'
source_suffix = ['.rst', '.md']
version = release = __version__
html_static_path = ['_static']
exclude_patterns = ['_build']
templates_path = ['_templates']
# Sphinx extensions
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.autosectionlabel',
'sphinx.ext.autosummary',
'sphinx.ext.extlinks',
'sphinx.ext.intersphinx',
'sphinx.ext.napoleon',
'sphinx.ext.viewcode',
'sphinx_autodoc_typehints',
'sphinx_automodapi.automodapi',
'sphinx_automodapi.smart_resolver',
'sphinx_copybutton',
'sphinx_inline_tabs',
'sphinx_panels',
'sphinxcontrib.apidoc',
'myst_parser',
'notfound.extension',
]
# MyST extensions
myst_enable_extensions = [
'colon_fence',
'html_image',
'linkify',
'replacements',
'smartquotes',
]
# Exclude auto-generated page for top-level __init__.py
exclude_patterns = ['_build', 'modules/requests_cache.rst']
# Enable automatic links to other projects' Sphinx docs
intersphinx_mapping = {
'boto3': ('https://boto3.amazonaws.com/v1/documentation/api/latest/', None),
'botocore': ('http://botocore.readthedocs.io/en/latest/', None),
'cryptography': ('https://cryptography.io/en/latest/', None),
'itsdangerous': ('https://itsdangerous.palletsprojects.com/en/2.0.x/', None),
'pymongo': ('https://pymongo.readthedocs.io/en/stable/', None),
'python': ('https://docs.python.org/3', None),
'redis': ('https://redis-py.readthedocs.io/en/stable/', None),
'requests': ('https://docs.python-requests.org/en/master/', None),
'urllib3': ('https://urllib3.readthedocs.io/en/latest/', None),
}
extlinks = {
'boto3': ('https://boto3.amazonaws.com/v1/documentation/api/latest/reference/%s', None),
}
# Enable Google-style docstrings
napoleon_google_docstring = True
napoleon_include_private_with_doc = False
napoleon_include_special_with_doc = False
# Strip prompt text when copying code blocks with copy button
copybutton_prompt_text = r'>>> |\.\.\. |\$ '
copybutton_prompt_is_regexp = True
# Generate labels in the format <page>:<section>
autosectionlabel_prefix_document = True
# Move type hint info to function description instead of signature
autodoc_typehints = 'description'
always_document_param_types = True
# Use apidoc to auto-generate rst sources
apidoc_module_dir = PACKAGE_DIR
apidoc_output_dir = 'modules'
apidoc_excluded_paths = ['session.py']
apidoc_extra_args = [f'--templatedir={TEMPLATE_DIR}'] # Note: Must be an absolute path
apidoc_module_first = True
apidoc_separate_modules = True
apidoc_toc_file = False
# HTML general settings
html_favicon = join('_static', 'favicon.ico')
html_js_files = ['collapsible_container.js']
html_css_files = [
'collapsible_container.css',
'table.css',
'https://use.fontawesome.com/releases/v5.15.3/css/all.css',
'https://use.fontawesome.com/releases/v5.15.3/css/v4-shims.css',
]
html_show_copyright = False
html_show_sphinx = False
notfound_default_version = 'stable'
pygments_style = 'friendly'
pygments_dark_style = 'material'
# HTML theme settings
html_theme = 'furo'
html_theme_options = {
'light_logo': 'requests-cache-logo-light.webp',
'dark_logo': 'requests-cache-logo-dark.webp',
'sidebar_hide_name': True,
'light_css_variables': {
'color-brand-primary': '#0288d1',
'color-brand-content': '#2a5adf',
},
'dark_css_variables': {
'color-brand-primary': '#5eb8ff',
'color-brand-content': '#368ce2',
},
}
def setup(app):
"""Run some additional steps after the Sphinx builder is initialized"""
app.add_css_file('collapsible_container.css')
app.connect('builder-inited', patch_automodapi)
def patch_automodapi(app):
"""Monkey-patch the automodapi extension to exclude imported members:
https://github.com/astropy/sphinx-automodapi/blob/master/sphinx_automodapi/automodsumm.py#L135
"""
from sphinx_automodapi import automodsumm
from sphinx_automodapi.utils import find_mod_objs
automodsumm.find_mod_objs = lambda *args: find_mod_objs(args[0], onlylocals=True)