Files
responder/docs/source/sandbox.md
kennethreitzandClaude Opus 4.8 df0d20d6cd Update docs for v4.1/v5, add Granian, and build out the sidebar
Modernize the documentation for the v4.1.0 + v5.0.0 releases and take it up
a notch across the board.

Content:
- Document v5 typed I/O (Query/Header/Cookie/Path markers, Pydantic body
  injection, return-annotation response_model), composable dependency
  injection, secure-by-default sessions, the deferred middleware stack, and
  type-hint-driven OpenAPI.
- Fix now-broken examples: req.method is uppercase; response_model=list (broke
  /schema.yml and /docs); SECRET_KEY -> RESPONDER_SECRET_KEY; the built-in
  middleware-order list; the "no return values" Flask claim; the abort()/
  before_request/exception_handler Quick Reference mappings.
- Add a Granian production-server section to the deployment guide alongside
  uvicorn (Rust, single dependency, HTTP/2, WebSockets).

Navigation & build:
- Render the v5 migration guide as a first-class docs page and fix the
  changelog link to resolve on GitHub and in Sphinx.
- Build out the alabaster sidebar: full cross-page navigation with captioned
  groups (User Guide / Tutorials / Reference / Project) and prev/next links;
  move guide-config into the User Guide.
- Fix the HTTPMethod docstring RST so it renders in the API reference.

Sphinx build is clean (0 warnings).

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

85 lines
2.8 KiB
Markdown

(sandbox)=
# Development Sandbox
## Setup
Clone the repo and install all dependencies:
```shell
git clone https://github.com/kennethreitz/responder.git
cd responder
uv venv && source .venv/bin/activate
uv pip install --upgrade --editable '.[develop,docs,release,test]'
```
Working on the CLI or GraphQL extensions? Add their extras too:
```shell
uv pip install --upgrade --editable '.[cli,graphql]'
```
The commands below assume the venv is activated. If you'd rather not activate it,
prefix any command with `uv run` (e.g. `uv run pytest`, `uv run ruff check .`,
`uv run mypy`) and uv resolves the environment for you.
## Running Tests
```shell
pytest # full suite with coverage
pytest tests/test_responder.py -xvs # single file, stop on first failure
pytest -k "test_mount" # run tests matching a pattern
```
## Code Formatting
```shell
ruff format . # auto-format
ruff check --fix . # lint and auto-fix
```
## Type Checking
```shell
mypy
```
## Documentation
Live-reloading doc server (opens in browser):
```shell
cd docs
sphinx-autobuild --open-browser --watch source source build
```
Or build once:
```shell
cd docs
make html
# open build/html/index.html
```
## Project Layout
```
responder/
├── responder/ # main package
│ ├── api.py # API class — the entry point
│ ├── core.py # public API surface (re-exports)
│ ├── routes.py # Router, Route, WebSocketRoute, dependency injection
│ ├── models.py # Request and Response wrappers
│ ├── params.py # typed parameter markers (Query/Header/Cookie/Path)
│ ├── types.py # public type aliases (Handler, Hook, Dependency)
│ ├── background.py # background task queue
│ ├── formats.py # content negotiation (JSON, YAML, msgpack)
│ ├── templates.py # Jinja2 template rendering
│ ├── staticfiles.py # static file serving
│ ├── status_codes.py # HTTP status-code table
│ └── ext/ # extensions
│ ├── cli.py # command-line interface
│ ├── sessions.py # cookie & server-side sessions, backends
│ ├── logging.py # request logging + request-id middleware
│ ├── metrics.py # Prometheus-style metrics endpoint
│ ├── ratelimit.py # rate limiting
│ ├── openapi/ # OpenAPI schema + interactive docs
│ └── graphql/ # GraphQL support
├── tests/ # pytest test suite
├── examples/ # runnable example apps
├── docs/source/ # Sphinx documentation
└── pyproject.toml # project metadata and tool config
```