Files
responder/docs/source/conf.py
T
kennethreitz aa35023a80 docs: redesign the homepage hero ("Web services for humans" + feature cards)
- Lead with the "Web services for humans." tagline (Reitz voice) plus the
  canonical descriptor and a one-import promise.
- Add a PyPI version / Python versions / license badge row (auto-rendered).
- Add two CTA buttons (Get started -> quickstart, Take the tour -> tour).
- Add an "It's all in the box" grid of six clickable feature cards
  (Validation, WebSockets, Content negotiation, OpenAPI, Sessions, Rate
  limiting), each linking to its docs. Used Content negotiation instead of
  GraphQL since GraphQL now requires the [graphql] extra (not "in the box").
- Enable the sphinx_design extension to power the grids/cards/buttons.

Sphinx build is clean (0 warnings).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 17:19:09 -04:00

66 lines
1.7 KiB
Python

# Sphinx configuration for Responder documentation.
import os
project = "responder"
copyright = "2018-2026, Kenneth Reitz"
author = "Kenneth Reitz"
here = os.path.abspath(os.path.dirname(__file__))
about = {}
with open(os.path.join(here, "..", "..", "responder", "__version__.py")) as f:
exec(f.read(), about)
version = about["__version__"]
release = about["__version__"]
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.viewcode",
"myst_parser",
"sphinx_copybutton",
"sphinx_design",
"sphinx_design_elements",
]
templates_path = ["_templates"]
source_suffix = {".rst": "restructuredtext"}
master_doc = "index"
language = "en"
exclude_patterns = []
# Theme
html_theme = "alabaster"
html_theme_options = {
"show_powered_by": False,
"github_user": "kennethreitz",
"github_repo": "responder",
"github_banner": "forkme_right_darkblue.png",
"show_related": False,
"sidebar_width": "240px",
"page_width": "1000px",
# Keep the full page tree visible in the sidebar; the current page expands
# to show its sections, every other page stays a one-line link.
"sidebar_collapse": True,
}
html_static_path = ["_static"]
# Every page gets the project intro, the full cross-page navigation tree, the
# current page's sections (via the expanded navigation), prev/next links, and
# search — so you can always jump anywhere from anywhere.
html_sidebars = {
"**": [
"sidebarintro.html",
"navigation.html",
"relations.html",
"searchbox.html",
],
}
# MyST
myst_heading_anchors = 3
# Copybutton
copybutton_remove_prompts = True
copybutton_prompt_text = r">>> |\.\.\. |\$ "
copybutton_prompt_is_regexp = True