mirror of
https://github.com/kennethreitz/responder.git
synced 2026-06-05 06:46:14 +00:00
1bfd85b003
Define your API schemas with Pydantic models instead of (or alongside)
YAML docstrings and marshmallow:
from pydantic import BaseModel
class PetIn(BaseModel):
name: str
age: int = 0
class PetOut(BaseModel):
id: int
name: str
age: int
@api.route("/pets", methods=["POST"],
request_model=PetIn, response_model=PetOut)
async def create_pet(req, resp):
data = await req.media()
resp.media = {"id": 1, **data}
Also works with @api.schema("Name") decorator for registering
standalone schema components.
Pydantic models, marshmallow schemas, and YAML docstrings can all
be used together in the same API.
Also: rewrite docs with more prose, restore sidebar logo and links,
add FastAPI acknowledgment, update homepage copy.
161 tests, 95% coverage.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
53 lines
1.2 KiB
Python
53 lines
1.2 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_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": False,
|
|
"show_related": False,
|
|
}
|
|
html_static_path = ["_static"]
|
|
html_sidebars = {
|
|
"index": ["sidebarintro.html", "searchbox.html"],
|
|
"**": ["sidebarintro.html", "localtoc.html", "searchbox.html"],
|
|
}
|
|
|
|
# MyST
|
|
myst_heading_anchors = 3
|
|
|
|
# Copybutton
|
|
copybutton_remove_prompts = True
|
|
copybutton_prompt_text = r">>> |\.\.\. |\$ "
|
|
copybutton_prompt_is_regexp = True
|