From b3fe28f5222c104f66d661942b5b3765e7f5d62d Mon Sep 17 00:00:00 2001 From: kennethreitz Date: Tue, 24 Mar 2026 19:27:59 +0000 Subject: [PATCH] deploy: ce3ab46d59007eecad2dbef67bcc07895a688fd8 --- .buildinfo | 2 +- .doctrees/changes.doctree | Bin 87426 -> 99807 bytes .doctrees/environment.pickle | Bin 230477 -> 235231 bytes _modules/index.html | 4 +- _modules/responder/api.html | 4 +- _modules/responder/background.html | 4 +- _modules/responder/ext/ratelimit.html | 4 +- _modules/responder/models.html | 4 +- _modules/responder/status_codes.html | 4 +- _sources/changes.md.txt | 57 ++- _static/documentation_options.js | 2 +- api.html | 4 +- backlog.html | 4 +- changes.html | 538 +++++++++++++++----------- cli.html | 4 +- deployment.html | 4 +- genindex.html | 4 +- guide-config.html | 4 +- index.html | 4 +- objects.inv | 2 +- py-modindex.html | 4 +- quickstart.html | 4 +- sandbox.html | 4 +- search.html | 4 +- searchindex.js | 2 +- testing.html | 4 +- tour.html | 4 +- tutorial-auth.html | 4 +- tutorial-flask.html | 4 +- tutorial-middleware.html | 4 +- tutorial-rest.html | 4 +- tutorial-sqlalchemy.html | 4 +- tutorial-websockets.html | 4 +- 33 files changed, 421 insertions(+), 282 deletions(-) diff --git a/.buildinfo b/.buildinfo index a121562..9449f01 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: e5a35904bc7bb78a12349affaec49f9c +config: c08221e9f0bc76c34b3bf9a7331fe62a tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/changes.doctree b/.doctrees/changes.doctree index afee43e5344727f27f7cd6f0e33e1c7438de34d8..6f1974ae8fff805789c531260fad0e1fd14c9f37 100644 GIT binary patch literal 99807 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%0D;#M;3L2 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 O%-rElj}H#kTmJ{zA&zAL literal 230477 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 - Overview: module code — responder 3.4.1 documentation + Overview: module code — responder 3.5.0 documentation - + diff --git a/_modules/responder/api.html b/_modules/responder/api.html index 35a5f3a..6c7633d 100644 --- a/_modules/responder/api.html +++ b/_modules/responder/api.html @@ -4,13 +4,13 @@ - responder.api — responder 3.4.1 documentation + responder.api — responder 3.5.0 documentation - + diff --git a/_modules/responder/background.html b/_modules/responder/background.html index 20919e6..a313823 100644 --- a/_modules/responder/background.html +++ b/_modules/responder/background.html @@ -4,13 +4,13 @@ - responder.background — responder 3.4.1 documentation + responder.background — responder 3.5.0 documentation - + diff --git a/_modules/responder/ext/ratelimit.html b/_modules/responder/ext/ratelimit.html index 3c1b31f..1dffd7a 100644 --- a/_modules/responder/ext/ratelimit.html +++ b/_modules/responder/ext/ratelimit.html @@ -4,13 +4,13 @@ - responder.ext.ratelimit — responder 3.4.1 documentation + responder.ext.ratelimit — responder 3.5.0 documentation - + diff --git a/_modules/responder/models.html b/_modules/responder/models.html index beec017..786aaf6 100644 --- a/_modules/responder/models.html +++ b/_modules/responder/models.html @@ -4,13 +4,13 @@ - responder.models — responder 3.4.1 documentation + responder.models — responder 3.5.0 documentation - + diff --git a/_modules/responder/status_codes.html b/_modules/responder/status_codes.html index 1bd686e..a538279 100644 --- a/_modules/responder/status_codes.html +++ b/_modules/responder/status_codes.html @@ -4,13 +4,13 @@ - responder.status_codes — responder 3.4.1 documentation + responder.status_codes — responder 3.5.0 documentation - + diff --git a/_sources/changes.md.txt b/_sources/changes.md.txt index c485090..ce86008 100644 --- a/_sources/changes.md.txt +++ b/_sources/changes.md.txt @@ -7,6 +7,57 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] +## [v3.5.0] - 2026-03-24 + +### Added + +- CI validation for Python 3.14, 3.14 free-threaded, and PyPy 3.11 +- Marimo notebook mounting docs and example +- Type annotations for `routes.py` +- `uv.lock` for reproducible installs + +### Changed + +- Replaced deprecated `asyncio.iscoroutinefunction` with `inspect.iscoroutinefunction` ahead of Python 3.16 removal +- Narrowed broad `except Exception` to specific exceptions in response model serialization and websocket chat example +- Improved GraphQL API interface with expanded test coverage +- Code formatting cleanup via pyproject-fmt and ruff +- Dropped Python 3.9 from CI + +### Fixed + +- WSGI mount returning 400 when requesting the exact mount root path +- Werkzeug 3.1.7 compatibility for trusted host validation in tests +- `future.result` bare property access in background task test (now properly calls `future.result()`) +- OpenAPI template packaging and static file serving +- RST title underline warning breaking docs CI + +### Removed + +- Read the Docs configuration (docs hosted on GitHub Pages) + +## [v3.4.0] - 2026-03-22 + +### Changed + +- Upgraded to Starlette 1.0 +- Added comprehensive docstrings across the codebase +- Expanded API reference documentation + +## [v3.3.0] - 2026-03-22 + +### Added + +- Full documentation rewrite: tutorials for REST APIs, SQLAlchemy, Flask migration +- Auth, WebSocket, middleware, and configuration guides +- Testing docs with prose, examples, and tips +- GitHub Pages deployment for docs + +### Changed + +- Reworked homepage prose +- Rewrote CLI and API reference docs + ## [v3.2.0] - 2026-03-22 ### Added @@ -411,7 +462,11 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Conception! -[unreleased]: https://github.com/kennethreitz/responder/compare/v3.0.0..HEAD +[unreleased]: https://github.com/kennethreitz/responder/compare/v3.5.0..HEAD +[v3.5.0]: https://github.com/kennethreitz/responder/compare/v3.4.0..v3.5.0 +[v3.4.0]: https://github.com/kennethreitz/responder/compare/v3.3.0..v3.4.0 +[v3.3.0]: https://github.com/kennethreitz/responder/compare/v3.2.0..v3.3.0 +[v3.2.0]: https://github.com/kennethreitz/responder/compare/v3.0.0..v3.2.0 [v3.0.0]: https://github.com/kennethreitz/responder/compare/v2.0.5..v3.0.0 [v2.0.5]: https://github.com/kennethreitz/responder/compare/v2.0.4..v2.0.5 [v2.0.4]: https://github.com/kennethreitz/responder/compare/v2.0.3..v2.0.4 diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 3d20959..f5d5075 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '3.4.1', + VERSION: '3.5.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/api.html b/api.html index 8b23b4d..eac958c 100644 --- a/api.html +++ b/api.html @@ -5,13 +5,13 @@ - API Reference — responder 3.4.1 documentation + API Reference — responder 3.5.0 documentation - + diff --git a/backlog.html b/backlog.html index 3aa8d61..e39fb4f 100644 --- a/backlog.html +++ b/backlog.html @@ -5,13 +5,13 @@ - Backlog — responder 3.4.1 documentation + Backlog — responder 3.5.0 documentation - + diff --git a/changes.html b/changes.html index f4b6f5f..4ef1418 100644 --- a/changes.html +++ b/changes.html @@ -5,13 +5,13 @@ - Changelog — responder 3.4.1 documentation + Changelog — responder 3.5.0 documentation - + @@ -46,13 +46,81 @@

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

-

Unreleased¶

+

Unreleased¶

-
-

[v3.2.0] - 2026-03-22¶

+
+

v3.5.0 - 2026-03-24¶

Added¶

    +
  • CI validation for Python 3.14, 3.14 free-threaded, and PyPy 3.11

  • +
  • Marimo notebook mounting docs and example

  • +
  • Type annotations for routes.py

  • +
  • uv.lock for reproducible installs

  • +
+
+
+

Changed¶

+
    +
  • Replaced deprecated asyncio.iscoroutinefunction with inspect.iscoroutinefunction ahead of Python 3.16 removal

  • +
  • Narrowed broad except Exception to specific exceptions in response model serialization and websocket chat example

  • +
  • Improved GraphQL API interface with expanded test coverage

  • +
  • Code formatting cleanup via pyproject-fmt and ruff

  • +
  • Dropped Python 3.9 from CI

  • +
+
+
+

Fixed¶

+
    +
  • WSGI mount returning 400 when requesting the exact mount root path

  • +
  • Werkzeug 3.1.7 compatibility for trusted host validation in tests

  • +
  • future.result bare property access in background task test (now properly calls future.result())

  • +
  • OpenAPI template packaging and static file serving

  • +
  • RST title underline warning breaking docs CI

  • +
+
+
+

Removed¶

+
    +
  • Read the Docs configuration (docs hosted on GitHub Pages)

  • +
+
+
+
+

v3.4.0 - 2026-03-22¶

+
+

Changed¶

+
    +
  • Upgraded to Starlette 1.0

  • +
  • Added comprehensive docstrings across the codebase

  • +
  • Expanded API reference documentation

  • +
+
+
+
+

v3.3.0 - 2026-03-22¶

+
+

Added¶

+
    +
  • Full documentation rewrite: tutorials for REST APIs, SQLAlchemy, Flask migration

  • +
  • Auth, WebSocket, middleware, and configuration guides

  • +
  • Testing docs with prose, examples, and tips

  • +
  • GitHub Pages deployment for docs

  • +
+
+
+

Changed¶

+
    +
  • Reworked homepage prose

  • +
  • Rewrote CLI and API reference docs

  • +
+
+
+
+

v3.2.0 - 2026-03-22¶

+
+

Added¶

+
  • Pydantic auto-validation: request_model validates input, returns 422 on failure

  • Pydantic auto-serialization: response_model strips extra fields from responses

  • Server-Sent Events: @resp.sse for real-time streaming

  • @@ -71,8 +139,8 @@ this project adheres to -

    Changed¶

    +
    +

    Changed¶

    • Dependencies flattened: pip install responder gets everything

    • Core deps reduced to starlette + uvicorn

    • @@ -81,8 +149,8 @@ this project adheres to -

      Fixed¶

      +
      +

      Fixed¶

      • Multipart parser losing headers when parts have multiple headers

      • url_for() with typed route params ({id:int})

      • @@ -95,8 +163,8 @@ this project adheres to

        v3.0.0 - 2026-03-22¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Platform: Added support for Python 3.10 - Python 3.13

        • CLI: responder run now also accepts a filesystem path on its <target> @@ -104,8 +172,8 @@ argument, enabling usage on single-file applications.

        • CLI: responder run now also accepts URLs.

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Platform: Minimum Python version is now 3.9 (dropped 3.6, 3.7, 3.8)

        • Dependencies: Dramatically reduced core dependency count (10 → 5)

          @@ -127,8 +195,8 @@ extensions now, found within the

          Packaging: Migrated from setup.py to declarative pyproject.toml

        -
        -

        Removed¶

        +
        +

        Removed¶

        • Platform: Removed support for EOL Python 3.6, 3.7, 3.8

        • Status codes: Removed deprecated resume_incomplete and resume @@ -136,8 +204,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        • CLI: responder run --build ceased to exist

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Routing: Fixed dispatching static_route=None on Windows

        • uvicorn: --debug now maps to uvicorn’s log_level = "debug"

        • @@ -147,8 +215,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v2.0.5 - 2019-12-15¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Update requirements to support python 3.8

        @@ -156,8 +224,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v2.0.4 - 2019-11-19¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Fix static app resolving

        @@ -165,8 +233,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v2.0.3 - 2019-09-20¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Fix template conflicts

        @@ -174,8 +242,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v2.0.2 - 2019-09-20¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Fix template conflicts

        @@ -183,8 +251,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v2.0.1 - 2019-09-20¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Fix template import

        @@ -192,8 +260,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v2.0.0 - 2019-09-19¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Refactor Router and Schema

        @@ -201,8 +269,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.3.2 - 2019-08-15¶

        -
        -

        Added¶

        +
        +

        Added¶

        • ASGI 3 support

        • CI tests for python 3.8-dev

        • @@ -218,15 +286,15 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.3.1 - 2019-04-28¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Route params Converters

        • Add search for documentation pages

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Bump dependencies

        @@ -234,8 +302,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.3.0 - 2019-02-22¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Versioning issue

        • Multiple cookies.

        • @@ -243,8 +311,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        • Other bugfixes.

        -
        -

        Added¶

        +
        +

        Added¶

        • Stream support via resp.stream.

        • Cookie directives via resp.set_cookie.

        • @@ -255,14 +323,14 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.1.3 - 2019-01-12¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Refactor _route_for

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Resolve startup/shutdwown events

        @@ -270,21 +338,21 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.2.0 - 2018-12-29¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Documentations

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Use Starlette’s LifeSpan middleware

        • Update denpendencies

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Fix route.is_class_based

        • Fix test_500

        • @@ -294,8 +362,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.1.2 - 2018-11-11¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Minor fixes for Open API

        • Typos

        • @@ -304,8 +372,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.1.1 - 2018-10-29¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Run sync views in a threadpoolexecutor.

        @@ -313,8 +381,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.1.0 - 2018-10-27¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Support for before_request.

        @@ -322,8 +390,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.0.5- 2018-10-27¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Fix sessions.

        @@ -331,8 +399,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.0.4 - 2018-10-27¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Potential bufix for cookies.

        @@ -340,8 +408,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.0.3 - 2018-10-27¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Bugfix for redirects.

        @@ -349,8 +417,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.0.2 - 2018-10-27¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Improvement for static file hosting.

        @@ -358,8 +426,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.0.1 - 2018-10-26¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Improve cors configuration settings.

        @@ -367,8 +435,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v1.0.0 - 2018-10-26¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Move GraphQL support into a built-in plugin.

        @@ -376,14 +444,14 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.3.3 - 2018-10-25¶

        -
        -

        Added¶

        +
        +

        Added¶

        • CORS support

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Improved exceptions.

        @@ -391,8 +459,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.3.2 - 2018-10-25¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Subtle improvements.

        @@ -400,8 +468,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.3.1 - 2018-10-24¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Packaging fix.

        @@ -409,8 +477,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.3.0 - 2018-10-24¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Interactive Documentation endpoint.

        • Minor improvements.

        • @@ -419,8 +487,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.2.3 - 2018-10-24¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Overall improvements.

        @@ -428,8 +496,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.2.2 - 2018-10-23¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Show traceback info when background tasks raise exceptions.

        @@ -437,8 +505,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.2.1 - 2018-10-23¶

        -
        -

        Added¶

        +
        +

        Added¶

        • api.requests.

        @@ -446,8 +514,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.2.0 - 2018-10-22¶

        -
        -

        Added¶

        +
        +

        Added¶

        • WebSocket support.

        @@ -455,8 +523,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.1.6 - 2018-10-20¶

        -
        -

        Added¶

        +
        +

        Added¶

        • 500 support.

        @@ -464,14 +532,14 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.1.5 - 2018-10-20¶

        -
        -

        Added¶

        +
        +

        Added¶

        • File upload support

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Improvements to sequential media reading.

        @@ -479,8 +547,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.1.4 - 2018-10-19¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Stability.

        @@ -488,8 +556,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.1.3 - 2018-10-18¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Sessions support.

        @@ -497,8 +565,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.1.2 - 2018-10-18¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Cookies support.

        @@ -506,8 +574,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.1.1 - 2018-10-17¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Default routes.

        @@ -515,8 +583,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.1.0 - 2018-10-17¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Prototype of static application support.

        @@ -524,8 +592,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.10 - 2018-10-17¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Bugfix for async class-based views.

        @@ -533,8 +601,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.9 - 2018-10-17¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Bugfix for async class-based views.

        @@ -542,14 +610,14 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.8 - 2018-10-17¶

        -
        -

        Added¶

        +
        +

        Added¶

        • GraphiQL Support.

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Improvement to route selection.

        @@ -557,8 +625,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.7 - 2018-10-16¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Immutable Request object.

        @@ -566,8 +634,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.6 - 2018-10-16¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Ability to mount WSGI apps.

        • Supply content-type when serving up the schema.

        • @@ -576,8 +644,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.5 - 2018-10-15¶

        -
        -

        Added¶

        +
        +

        Added¶

        • OpenAPI Schema support.

        • Safe load/dump yaml.

        • @@ -586,14 +654,14 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.4 - 2018-10-15¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Asynchronous support for data uploads.

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Bug fixes.

        @@ -601,8 +669,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.3 - 2018-10-13¶

        -
        -

        Fixed¶

        +
        +

        Fixed¶

        • Bug fixes.

        @@ -610,8 +678,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.2 - 2018-10-13¶

        -
        -

        Changed¶

        +
        +

        Changed¶

        • Switch to ASGI/Starlette.

        @@ -619,8 +687,8 @@ aliases for HTTP 308 (marked for removal in 3.0)

        v0.0.1 - 2018-10-12¶

        -
        -

        Added¶

        +
        +

        Added¶

        • Conception!

        @@ -653,207 +721,223 @@ aliases for HTTP 308 (marked for removal in 3.0)

        • Changelog
          • Unreleased
          • -
          • [v3.2.0] - 2026-03-22
              +
            • v3.5.0 - 2026-03-24 -
            • -
            • v3.0.0 - 2026-03-22
            • -
            • v2.0.5 - 2019-12-15
                +
              • v3.4.0 - 2026-03-22 +
              • +
              • v3.3.0 - 2026-03-22 +
              • +
              • v3.2.0 - 2026-03-22 -
              • -
              • v2.0.4 - 2019-11-19 -
              • -
              • v2.0.3 - 2019-09-20
              • +
              • v3.0.0 - 2026-03-22 +
              • +
              • v2.0.5 - 2019-12-15 +
              • +
              • v2.0.4 - 2019-11-19 +
              • +
              • v2.0.3 - 2019-09-20 +
              • v2.0.2 - 2019-09-20
              • v2.0.1 - 2019-09-20
              • v2.0.0 - 2019-09-19
              • v1.3.2 - 2019-08-15
              • v1.3.1 - 2019-04-28
              • v1.3.0 - 2019-02-22
              • v1.1.3 - 2019-01-12 -
              • -
              • v1.2.0 - 2018-12-29 -
              • -
              • v1.1.2 - 2018-11-11 -
              • -
              • v1.1.1 - 2018-10-29 -
              • -
              • v1.1.0 - 2018-10-27 -
              • -
              • v1.0.5- 2018-10-27
              • -
              • v1.0.4 - 2018-10-27
                  -
                • Fixed
                • +
                • v1.2.0 - 2018-12-29
                • -
                • v1.0.3 - 2018-10-27
                    -
                  • Fixed
                  • +
                  • v1.1.2 - 2018-11-11
                  • -
                  • v1.0.2 - 2018-10-27 -
                  • -
                  • v1.0.1 - 2018-10-26 -
                  • -
                  • v1.0.0 - 2018-10-26
                      +
                    • v1.1.1 - 2018-10-29
                    • -
                    • v0.3.3 - 2018-10-25
                        +
                      • v1.1.0 - 2018-10-27
                      • -
                      • v0.3.2 - 2018-10-25
                          -
                        • Changed
                        • +
                        • v1.0.5- 2018-10-27
                        • -
                        • v0.3.1 - 2018-10-24
                            +
                          • v1.0.4 - 2018-10-27 +
                          • +
                          • v1.0.3 - 2018-10-27
                          • -
                          • v0.3.0 - 2018-10-24
                              +
                            • v1.0.2 - 2018-10-27
                            • -
                            • v0.2.3 - 2018-10-24
                                +
                              • v1.0.1 - 2018-10-26
                              • -
                              • v0.2.2 - 2018-10-23
                                  -
                                • Added
                                • +
                                • v1.0.0 - 2018-10-26
                                • -
                                • v0.2.1 - 2018-10-23
                                    +
                                  • v0.3.3 - 2018-10-25
                                  • -
                                  • v0.2.0 - 2018-10-22
                                      -
                                    • Added
                                    • +
                                    • v0.3.2 - 2018-10-25
                                    • -
                                    • v0.1.6 - 2018-10-20
                                        -
                                      • Added
                                      • +
                                      • v0.3.1 - 2018-10-24
                                      • -
                                      • v0.1.5 - 2018-10-20
                                          -
                                        • Added
                                        • +
                                        • v0.3.0 - 2018-10-24
                                        • -
                                        • v0.1.4 - 2018-10-19
                                            -
                                          • Fixed
                                          • +
                                          • v0.2.3 - 2018-10-24
                                          • -
                                          • v0.1.3 - 2018-10-18
                                              +
                                            • v0.2.2 - 2018-10-23
                                            • -
                                            • v0.1.2 - 2018-10-18
                                                +
                                              • v0.2.1 - 2018-10-23
                                              • -
                                              • v0.1.1 - 2018-10-17
                                                  -
                                                • Changed
                                                • +
                                                • v0.2.0 - 2018-10-22
                                                • -
                                                • v0.1.0 - 2018-10-17
                                                    +
                                                  • v0.1.6 - 2018-10-20
                                                  • -
                                                  • v0.0.10 - 2018-10-17
                                                      -
                                                    • Fixed
                                                    • +
                                                    • v0.1.5 - 2018-10-20
                                                    • -
                                                    • v0.0.9 - 2018-10-17
                                                        -
                                                      • Fixed
                                                      • +
                                                      • v0.1.4 - 2018-10-19
                                                      • -
                                                      • v0.0.8 - 2018-10-17
                                                          -
                                                        • Added
                                                        • -
                                                        • Changed
                                                        • +
                                                        • v0.1.3 - 2018-10-18
                                                        • -
                                                        • v0.0.7 - 2018-10-16
                                                            -
                                                          • Changed
                                                          • +
                                                          • v0.1.2 - 2018-10-18
                                                          • -
                                                          • v0.0.6 - 2018-10-16
                                                              -
                                                            • Added
                                                            • +
                                                            • v0.1.1 - 2018-10-17
                                                            • -
                                                            • v0.0.5 - 2018-10-15
                                                                +
                                                              • v0.1.0 - 2018-10-17
                                                              • -
                                                              • v0.0.4 - 2018-10-15
                                                                  -
                                                                • Added
                                                                • +
                                                                • v0.0.10 - 2018-10-17 +
                                                                • +
                                                                • v0.0.9 - 2018-10-17
                                                                • -
                                                                • v0.0.3 - 2018-10-13 -
                                                                • -
                                                                • v0.0.2 - 2018-10-13 diff --git a/cli.html b/cli.html index a15fd4e..1a2352b 100644 --- a/cli.html +++ b/cli.html @@ -5,13 +5,13 @@ - Command Line Interface — responder 3.4.1 documentation + Command Line Interface — responder 3.5.0 documentation - + diff --git a/deployment.html b/deployment.html index 80df762..ffc3620 100644 --- a/deployment.html +++ b/deployment.html @@ -5,13 +5,13 @@ - Deployment — responder 3.4.1 documentation + Deployment — responder 3.5.0 documentation - + diff --git a/genindex.html b/genindex.html index 305fe66..879371a 100644 --- a/genindex.html +++ b/genindex.html @@ -4,13 +4,13 @@ - Index — responder 3.4.1 documentation + Index — responder 3.5.0 documentation - + diff --git a/guide-config.html b/guide-config.html index 92fae7a..c48bee8 100644 --- a/guide-config.html +++ b/guide-config.html @@ -5,13 +5,13 @@ - Configuration — responder 3.4.1 documentation + Configuration — responder 3.5.0 documentation - + diff --git a/index.html b/index.html index 91fa4f0..27a31d6 100644 --- a/index.html +++ b/index.html @@ -5,13 +5,13 @@ - Responder — responder 3.4.1 documentation + Responder — responder 3.5.0 documentation - + diff --git a/objects.inv b/objects.inv index 88bec76..aaa6ecf 100644 --- a/objects.inv +++ b/objects.inv @@ -1,6 +1,6 @@ # Sphinx inventory version 2 # Project: responder -# Version: 3.4.1 +# Version: 3.5.0 # The remainder of this file is compressed using zlib. xÚ¥XKsÛ8 ¾ëWhf{µ&ÝÇ¥·>¶;™Ig;;{ÔÐ$±&E…4þ÷ Š”%9NMª7ü>”ÝË®•÷ÇBV–C~““ž­ü7/Ù¼Ë7™‘ÅÇû[‡¦œh¿ŸÀ¯P©ªž¡3eKºŠ‡]À´²ºN¬BÊ¢ …¥¤5ñ„Ú€*,¤í¢O€¦w‹ï‰iKA mA§]‹‚Š) &?\…vø^É”9^a$™c»X¨ÆÃ õ ñ`­1|¢á†FKÒ÷ñ^1 zNâ3âKmëšXšU¼ÄŠo§$»Rn² Ôå™NP^ °È`‘‚ŽÊ*äºÇF:å,dEGvfIè4Òº3Õ–óï)ÕÁi¢L—ßµë$’jý§!ž&°°”и´M²Ž}¢i‚DèTVØ5ÄY-I ™Pâ)^c·Óh:÷g5îTaÁ&5$ k<‘¸££”±nwâEo¹™A—íç9më¾çÿŒ­Ï•xØzpmRWŸNà ~‰Û'üDƒ!ú£ÓªP˜œ fŠ-ŽîÜÈ7•Wð&·ÀÞ…þÚöë0ÊxT³ŠO àºÀƒ«ãFc¾ñ產³f+Ç+9ÓëÈxP¡×3S7~Õ]ΊvQÃy©|KEÀÍu̪†vŸÝ÷77NOm;ê^3o›Nü}-ñµÄ?×ÿú9'¹6Õ‡JÒ¹'sW˜¶Pö’2—æ\6sdyô'?É(¾ìêf¸ ò¸ÏÃd@òž8 )¾)ó;ÖA~‹¥ª PAÏåQ¸6sÆš¤žüå4Ïèúãe€s²î£ÔÃoÝ0k,«`ƒMlÍœËGÛÜØbµ@Gf“ú@˜iގב ×°¾²£?nÆOøæÿVx‹f«Wh÷GL»nÉ~²Œ0 diff --git a/py-modindex.html b/py-modindex.html index dc59a5a..74c3eb8 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -4,13 +4,13 @@ - Python Module Index — responder 3.4.1 documentation + Python Module Index — responder 3.5.0 documentation - + diff --git a/quickstart.html b/quickstart.html index 82a22de..7115bd5 100644 --- a/quickstart.html +++ b/quickstart.html @@ -5,13 +5,13 @@ - Quick Start — responder 3.4.1 documentation + Quick Start — responder 3.5.0 documentation - + diff --git a/sandbox.html b/sandbox.html index e71e9a8..e02b2f6 100644 --- a/sandbox.html +++ b/sandbox.html @@ -5,13 +5,13 @@ - Development Sandbox — responder 3.4.1 documentation + Development Sandbox — responder 3.5.0 documentation - + diff --git a/search.html b/search.html index 6b397a9..f70d22f 100644 --- a/search.html +++ b/search.html @@ -4,14 +4,14 @@ - Search — responder 3.4.1 documentation + Search — responder 3.5.0 documentation - + diff --git a/searchindex.js b/searchindex.js index 7c4cb80..e6838fb 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"API Key Authentication":[[11,"api-key-authentication"]],"API Reference":[[0,null]],"Added":[[2,"added"],[2,"id1"],[2,"id4"],[2,"id10"],[2,"id11"],[2,"id14"],[2,"id17"],[2,"id22"],[2,"id29"],[2,"id35"],[2,"id36"],[2,"id37"],[2,"id38"],[2,"id39"],[2,"id42"],[2,"id43"],[2,"id45"],[2,"id48"],[2,"id51"],[2,"id52"],[2,"id53"],[2,"id57"]],"Adding Third-Party Middleware":[[13,"adding-third-party-middleware"]],"After-Request Hooks":[[10,"after-request-hooks"]],"Allowed Hosts":[[5,"allowed-hosts"]],"Authentication":[[11,null]],"Background Queue":[[0,"background-queue"]],"Background Tasks":[[7,"background-tasks"]],"Backlog":[[1,null]],"Bearer Token Authentication":[[11,"bearer-token-authentication"]],"Before-Request Hooks":[[10,"before-request-hooks"]],"Before-Request Hooks for WebSockets":[[16,"before-request-hooks-for-websockets"]],"Blueprints \u2192 Route Groups":[[12,"blueprints-route-groups"]],"Building Frontend Assets":[[3,"building-frontend-assets"]],"Building a REST API":[[14,null]],"Built-in Middleware":[[13,"built-in-middleware"]],"CORS":[[10,"cors"]],"CRUD Endpoints":[[15,"crud-endpoints"]],"Changed":[[2,"changed"],[2,"id2"],[2,"id9"],[2,"id12"],[2,"id15"],[2,"id18"],[2,"id21"],[2,"id26"],[2,"id27"],[2,"id28"],[2,"id30"],[2,"id31"],[2,"id33"],[2,"id34"],[2,"id40"],[2,"id44"],[2,"id49"],[2,"id50"],[2,"id56"]],"Changelog":[[2,null]],"Chat Room":[[16,"chat-room"]],"Class-Based Views":[[10,"class-based-views"]],"Cloud Platforms":[[4,"cloud-platforms"]],"Command Line Interface":[[3,null]],"Configuration":[[5,null]],"Configuration Class Pattern":[[5,"configuration-class-pattern"]],"Cookie-Based Sessions":[[10,"cookie-based-sessions"]],"Cookies":[[10,"cookies"]],"Create a Book":[[14,"create-a-book"]],"Create a Web Service":[[7,"create-a-web-service"]],"Custom Error Handling":[[10,"custom-error-handling"]],"Custom Exception for Auth Errors":[[11,"custom-exception-for-auth-errors"]],"Custom Instance Names":[[3,"custom-instance-names"]],"Data Formats":[[16,"data-formats"]],"Database Setup":[[15,"database-setup"]],"Debug Mode":[[5,"debug-mode"]],"Define Your Models":[[14,"define-your-models"],[15,"define-your-models"]],"Delete a Book":[[14,"delete-a-book"]],"Deployment":[[4,null]],"Deprecated":[[2,"deprecated"]],"Development Sandbox":[[8,null]],"Docker":[[4,"docker"]],"Echo Server":[[16,"echo-server"]],"Environment Variables":[[5,"environment-variables"]],"Error Handling":[[14,"error-handling"]],"Feature Tour":[[10,null]],"Fixed":[[2,"fixed"],[2,"id3"],[2,"id5"],[2,"id6"],[2,"id7"],[2,"id8"],[2,"id13"],[2,"id16"],[2,"id19"],[2,"id20"],[2,"id23"],[2,"id24"],[2,"id25"],[2,"id32"],[2,"id41"],[2,"id46"],[2,"id47"],[2,"id54"],[2,"id55"]],"Future Ideas":[[1,"future-ideas"]],"Get a Single Book":[[14,"get-a-single-book"]],"Getting Started":[[9,"getting-started"]],"Gradual Migration":[[12,"gradual-migration"]],"GraphQL":[[10,"graphql"]],"HSTS":[[10,"hsts"]],"HTML Client":[[16,"html-client"]],"Hello World":[[7,"hello-world"]],"Hooks vs. Middleware":[[13,"hooks-vs-middleware"]],"How WebSockets Work":[[16,"how-websockets-work"]],"In-Memory Storage":[[14,"in-memory-storage"]],"Installation":[[6,"installation"],[15,"installation"]],"JSON APIs":[[12,"json-apis"]],"Launching from a File":[[3,"launching-from-a-file"]],"Launching from a Module":[[3,"launching-from-a-module"]],"Launching from a URL":[[3,"launching-from-a-url"]],"Lifespan Events":[[10,"lifespan-events"]],"Lifespan for Startup and Shutdown":[[15,"lifespan-for-startup-and-shutdown"]],"List All Books":[[14,"list-all-books"]],"MessagePack":[[10,"messagepack"]],"Method Filtering":[[10,"method-filtering"]],"Middleware Order":[[13,"middleware-order"]],"Migrating from Flask":[[12,null]],"Mounting Other Apps":[[10,"mounting-other-apps"]],"OpenAPI Documentation":[[10,"openapi-documentation"]],"Operations":[[8,"operations"]],"Project":[[6,null]],"Project Setup":[[14,"project-setup"]],"Putting It All Together":[[5,"putting-it-all-together"],[7,"putting-it-all-together"]],"Query Dict":[[0,"query-dict"]],"Quick Reference":[[12,"quick-reference"]],"Quick Start":[[7,null]],"Rate Limiter":[[0,"rate-limiter"]],"Rate Limiting":[[10,"rate-limiting"]],"Reading Requests":[[7,"reading-requests"]],"Removed":[[2,"removed"]],"Rendering Templates":[[7,"rendering-templates"]],"Request":[[0,"request"]],"Request ID":[[10,"request-id"]],"Responder":[[6,null]],"Response":[[0,"response"]],"Reverse Proxy":[[4,"reverse-proxy"]],"Route Groups":[[0,"route-groups"],[10,"route-groups"]],"Route Parameters":[[7,"route-parameters"],[12,"route-parameters"]],"Run It":[[14,"run-it"],[15,"run-it"]],"Run the Server":[[7,"run-the-server"]],"Running Locally":[[4,"running-locally"]],"Secret Key":[[5,"secret-key"]],"Sending Responses":[[7,"sending-responses"]],"Server-Sent Events (SSE)":[[10,"server-sent-events-sse"]],"Serving Files":[[10,"serving-files"]],"Setup":[[8,"setup"]],"Skipping Auth for Public Routes":[[11,"skipping-auth-for-public-routes"]],"Static Files":[[10,"static-files"]],"Status Code Helpers":[[0,"status-code-helpers"]],"Templates":[[12,"templates"]],"Testing":[[9,null]],"Testing Before and After Hooks":[[9,"testing-before-and-after-hooks"]],"Testing Error Handling":[[9,"testing-error-handling"]],"Testing File Uploads":[[9,"testing-file-uploads"]],"Testing Headers and Cookies":[[9,"testing-headers-and-cookies"]],"Testing JSON APIs":[[9,"testing-json-apis"]],"Testing Lifespan Events":[[9,"testing-lifespan-events"]],"Testing Request Validation":[[9,"testing-request-validation"]],"Testing WebSockets":[[9,"testing-websockets"],[16,"testing-websockets"]],"The API Class":[[0,"the-api-class"]],"The Big Differences":[[12,"the-big-differences"]],"The Idea":[[6,"the-idea"]],"Tips":[[9,"tips"],[15,"tips"]],"Trusted Hosts":[[10,"trusted-hosts"]],"Try It Out":[[14,"try-it-out"]],"Tutorials":[[6,null]],"Type Convertors":[[7,"type-convertors"]],"Unreleased":[[2,"unreleased"]],"Update a Book":[[14,"update-a-book"]],"User Guide":[[6,null]],"Using .env Files":[[5,"using-env-files"]],"Using Fixtures":[[9,"using-fixtures"]],"Using PostgreSQL":[[15,"using-postgresql"]],"Using SQLAlchemy":[[15,null]],"Using Sessions for Web Apps":[[11,"using-sessions-for-web-apps"]],"Using Starlette Middleware":[[13,"using-starlette-middleware"]],"Uvicorn Directly":[[4,"uvicorn-directly"]],"WebSocket Support":[[10,"websocket-support"]],"WebSocket Tutorial":[[16,null]],"What You Get":[[6,"what-you-get"]],"What\u2019s Next":[[14,"what-s-next"]],"When to Use What":[[13,"when-to-use-what"]],"Writing Middleware":[[13,null]],"[v3.2.0] - 2026-03-22":[[2,"v3-2-0-2026-03-22"]],"v0.0.1 - 2018-10-12":[[2,"v0-0-1-2018-10-12"]],"v0.0.10 - 2018-10-17":[[2,"v0-0-10-2018-10-17"]],"v0.0.2 - 2018-10-13":[[2,"v0-0-2-2018-10-13"]],"v0.0.3 - 2018-10-13":[[2,"v0-0-3-2018-10-13"]],"v0.0.4 - 2018-10-15":[[2,"v0-0-4-2018-10-15"]],"v0.0.5 - 2018-10-15":[[2,"v0-0-5-2018-10-15"]],"v0.0.6 - 2018-10-16":[[2,"v0-0-6-2018-10-16"]],"v0.0.7 - 2018-10-16":[[2,"v0-0-7-2018-10-16"]],"v0.0.8 - 2018-10-17":[[2,"v0-0-8-2018-10-17"]],"v0.0.9 - 2018-10-17":[[2,"v0-0-9-2018-10-17"]],"v0.1.0 - 2018-10-17":[[2,"v0-1-0-2018-10-17"]],"v0.1.1 - 2018-10-17":[[2,"v0-1-1-2018-10-17"]],"v0.1.2 - 2018-10-18":[[2,"v0-1-2-2018-10-18"]],"v0.1.3 - 2018-10-18":[[2,"v0-1-3-2018-10-18"]],"v0.1.4 - 2018-10-19":[[2,"v0-1-4-2018-10-19"]],"v0.1.5 - 2018-10-20":[[2,"v0-1-5-2018-10-20"]],"v0.1.6 - 2018-10-20":[[2,"v0-1-6-2018-10-20"]],"v0.2.0 - 2018-10-22":[[2,"v0-2-0-2018-10-22"]],"v0.2.1 - 2018-10-23":[[2,"v0-2-1-2018-10-23"]],"v0.2.2 - 2018-10-23":[[2,"v0-2-2-2018-10-23"]],"v0.2.3 - 2018-10-24":[[2,"v0-2-3-2018-10-24"]],"v0.3.0 - 2018-10-24":[[2,"v0-3-0-2018-10-24"]],"v0.3.1 - 2018-10-24":[[2,"v0-3-1-2018-10-24"]],"v0.3.2 - 2018-10-25":[[2,"v0-3-2-2018-10-25"]],"v0.3.3 - 2018-10-25":[[2,"v0-3-3-2018-10-25"]],"v1.0.0 - 2018-10-26":[[2,"v1-0-0-2018-10-26"]],"v1.0.1 - 2018-10-26":[[2,"v1-0-1-2018-10-26"]],"v1.0.2 - 2018-10-27":[[2,"v1-0-2-2018-10-27"]],"v1.0.3 - 2018-10-27":[[2,"v1-0-3-2018-10-27"]],"v1.0.4 - 2018-10-27":[[2,"v1-0-4-2018-10-27"]],"v1.0.5- 2018-10-27":[[2,"v1-0-5-2018-10-27"]],"v1.1.0 - 2018-10-27":[[2,"v1-1-0-2018-10-27"]],"v1.1.1 - 2018-10-29":[[2,"v1-1-1-2018-10-29"]],"v1.1.2 - 2018-11-11":[[2,"v1-1-2-2018-11-11"]],"v1.1.3 - 2019-01-12":[[2,"v1-1-3-2019-01-12"]],"v1.2.0 - 2018-12-29":[[2,"v1-2-0-2018-12-29"]],"v1.3.0 - 2019-02-22":[[2,"v1-3-0-2019-02-22"]],"v1.3.1 - 2019-04-28":[[2,"v1-3-1-2019-04-28"]],"v1.3.2 - 2019-08-15":[[2,"v1-3-2-2019-08-15"]],"v2.0.0 - 2019-09-19":[[2,"v2-0-0-2019-09-19"]],"v2.0.1 - 2019-09-20":[[2,"v2-0-1-2019-09-20"]],"v2.0.2 - 2019-09-20":[[2,"v2-0-2-2019-09-20"]],"v2.0.3 - 2019-09-20":[[2,"v2-0-3-2019-09-20"]],"v2.0.4 - 2019-11-19":[[2,"v2-0-4-2019-11-19"]],"v2.0.5 - 2019-12-15":[[2,"v2-0-5-2019-12-15"]],"v3.0.0 - 2026-03-22":[[2,"v3-0-0-2026-03-22"]]},"docnames":["api","backlog","changes","cli","deployment","guide-config","index","quickstart","sandbox","testing","tour","tutorial-auth","tutorial-flask","tutorial-middleware","tutorial-rest","tutorial-sqlalchemy","tutorial-websockets"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1},"filenames":["api.rst","backlog.md","changes.md","cli.rst","deployment.rst","guide-config.rst","index.rst","quickstart.rst","sandbox.md","testing.rst","tour.rst","tutorial-auth.rst","tutorial-flask.rst","tutorial-middleware.rst","tutorial-rest.rst","tutorial-sqlalchemy.rst","tutorial-websockets.rst"],"indexentries":{"accepts() (responder.request method)":[[0,"responder.Request.accepts",false]],"add_event_handler() (responder.api method)":[[0,"responder.API.add_event_handler",false]],"add_middleware() (responder.api method)":[[0,"responder.API.add_middleware",false]],"add_route() (responder.api method)":[[0,"responder.API.add_route",false]],"after_request() (responder.api method)":[[0,"responder.API.after_request",false]],"api (class in responder)":[[0,"responder.API",false]],"apparent_encoding (responder.request property)":[[0,"responder.Request.apparent_encoding",false]],"backgroundqueue (class in responder.background)":[[0,"responder.background.BackgroundQueue",false]],"before_request() (responder.api method)":[[0,"responder.API.before_request",false]],"check() (responder.ext.ratelimit.ratelimiter method)":[[0,"responder.ext.ratelimit.RateLimiter.check",false]],"client (responder.request property)":[[0,"responder.Request.client",false]],"content (responder.request property)":[[0,"responder.Request.content",false]],"cookies (responder.request property)":[[0,"responder.Request.cookies",false]],"encoding (responder.request property)":[[0,"responder.Request.encoding",false]],"exception_handler() (responder.api method)":[[0,"responder.API.exception_handler",false]],"file() (responder.response method)":[[0,"responder.Response.file",false]],"full_url (responder.request property)":[[0,"responder.Request.full_url",false]],"get() (responder.models.querydict method)":[[0,"responder.models.QueryDict.get",false]],"get_list() (responder.models.querydict method)":[[0,"responder.models.QueryDict.get_list",false]],"graphql() (responder.api method)":[[0,"responder.API.graphql",false]],"group() (responder.api method)":[[0,"responder.API.group",false]],"headers (responder.request property)":[[0,"responder.Request.headers",false]],"install() (responder.ext.ratelimit.ratelimiter method)":[[0,"responder.ext.ratelimit.RateLimiter.install",false]],"is_100() (in module responder.status_codes)":[[0,"responder.status_codes.is_100",false]],"is_200() (in module responder.status_codes)":[[0,"responder.status_codes.is_200",false]],"is_300() (in module responder.status_codes)":[[0,"responder.status_codes.is_300",false]],"is_400() (in module responder.status_codes)":[[0,"responder.status_codes.is_400",false]],"is_500() (in module responder.status_codes)":[[0,"responder.status_codes.is_500",false]],"is_json (responder.request property)":[[0,"responder.Request.is_json",false]],"is_secure (responder.request property)":[[0,"responder.Request.is_secure",false]],"items() (responder.models.querydict method)":[[0,"responder.models.QueryDict.items",false]],"items_list() (responder.models.querydict method)":[[0,"responder.models.QueryDict.items_list",false]],"media() (responder.request method)":[[0,"responder.Request.media",false]],"method (responder.request property)":[[0,"responder.Request.method",false]],"mimetype (responder.request property)":[[0,"responder.Request.mimetype",false]],"module":[[0,"module-responder",false]],"mount() (responder.api method)":[[0,"responder.API.mount",false]],"ok (responder.response property)":[[0,"responder.Response.ok",false]],"on_event() (responder.api method)":[[0,"responder.API.on_event",false]],"params (responder.request property)":[[0,"responder.Request.params",false]],"path_matches_route() (responder.api method)":[[0,"responder.API.path_matches_route",false]],"path_params (responder.request property)":[[0,"responder.Request.path_params",false]],"querydict (class in responder.models)":[[0,"responder.models.QueryDict",false]],"ratelimiter (class in responder.ext.ratelimit)":[[0,"responder.ext.ratelimit.RateLimiter",false]],"redirect() (responder.api method)":[[0,"responder.API.redirect",false]],"redirect() (responder.response method)":[[0,"responder.Response.redirect",false]],"request (class in responder)":[[0,"responder.Request",false]],"requests (responder.api property)":[[0,"responder.API.requests",false]],"responder":[[0,"module-responder",false]],"response (class in responder)":[[0,"responder.Response",false]],"route() (responder.api method)":[[0,"responder.API.route",false]],"routegroup (class in responder.api)":[[0,"responder.api.RouteGroup",false]],"run() (responder.api method)":[[0,"responder.API.run",false]],"run() (responder.background.backgroundqueue method)":[[0,"responder.background.BackgroundQueue.run",false]],"schema() (responder.api method)":[[0,"responder.API.schema",false]],"serve() (responder.api method)":[[0,"responder.API.serve",false]],"session (responder.request property)":[[0,"responder.Request.session",false]],"session() (responder.api method)":[[0,"responder.API.session",false]],"set_cookie() (responder.response method)":[[0,"responder.Response.set_cookie",false]],"sse() (responder.response method)":[[0,"responder.Response.sse",false]],"state (responder.request property)":[[0,"responder.Request.state",false]],"static_app (responder.api property)":[[0,"responder.API.static_app",false]],"status_code_safe (responder.response property)":[[0,"responder.Response.status_code_safe",false]],"stream() (responder.response method)":[[0,"responder.Response.stream",false]],"stream_file() (responder.response method)":[[0,"responder.Response.stream_file",false]],"task() (responder.background.backgroundqueue method)":[[0,"responder.background.BackgroundQueue.task",false]],"template() (responder.api method)":[[0,"responder.API.template",false]],"template_string() (responder.api method)":[[0,"responder.API.template_string",false]],"text (responder.request property)":[[0,"responder.Request.text",false]],"url (responder.request property)":[[0,"responder.Request.url",false]],"url_for() (responder.api method)":[[0,"responder.API.url_for",false]]},"objects":{"":[[0,0,0,"-","responder"]],"responder":[[0,1,1,"","API"],[0,1,1,"","Request"],[0,1,1,"","Response"]],"responder.API":[[0,2,1,"","add_event_handler"],[0,2,1,"","add_middleware"],[0,2,1,"","add_route"],[0,2,1,"","after_request"],[0,2,1,"","before_request"],[0,2,1,"","exception_handler"],[0,2,1,"","graphql"],[0,2,1,"","group"],[0,2,1,"","mount"],[0,2,1,"","on_event"],[0,2,1,"","path_matches_route"],[0,2,1,"","redirect"],[0,3,1,"","requests"],[0,2,1,"","route"],[0,2,1,"","run"],[0,2,1,"","schema"],[0,2,1,"","serve"],[0,2,1,"","session"],[0,3,1,"","static_app"],[0,2,1,"","template"],[0,2,1,"","template_string"],[0,2,1,"","url_for"]],"responder.Request":[[0,2,1,"","accepts"],[0,3,1,"","apparent_encoding"],[0,3,1,"","client"],[0,3,1,"","content"],[0,3,1,"","cookies"],[0,3,1,"","encoding"],[0,3,1,"","full_url"],[0,3,1,"","headers"],[0,3,1,"","is_json"],[0,3,1,"","is_secure"],[0,2,1,"","media"],[0,3,1,"","method"],[0,3,1,"","mimetype"],[0,3,1,"","params"],[0,3,1,"","path_params"],[0,3,1,"","session"],[0,3,1,"","state"],[0,3,1,"","text"],[0,3,1,"","url"]],"responder.Response":[[0,2,1,"","file"],[0,3,1,"","ok"],[0,2,1,"","redirect"],[0,2,1,"","set_cookie"],[0,2,1,"","sse"],[0,3,1,"","status_code_safe"],[0,2,1,"","stream"],[0,2,1,"","stream_file"]],"responder.api":[[0,1,1,"","RouteGroup"]],"responder.background":[[0,1,1,"","BackgroundQueue"]],"responder.background.BackgroundQueue":[[0,2,1,"","run"],[0,2,1,"","task"]],"responder.ext.ratelimit":[[0,1,1,"","RateLimiter"]],"responder.ext.ratelimit.RateLimiter":[[0,2,1,"","check"],[0,2,1,"","install"]],"responder.models":[[0,1,1,"","QueryDict"]],"responder.models.QueryDict":[[0,2,1,"","get"],[0,2,1,"","get_list"],[0,2,1,"","items"],[0,2,1,"","items_list"]],"responder.status_codes":[[0,4,1,"","is_100"],[0,4,1,"","is_200"],[0,4,1,"","is_300"],[0,4,1,"","is_400"],[0,4,1,"","is_500"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","property","Python property"],"4":["py","function","Python function"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:method","3":"py:property","4":"py:function"},"terms":{"":[0,2,3,4,5,6,7,9,10,11,12,13,15,16],"0":[3,4,5,7,10,14,15],"00":0,"01":0,"0441172719":14,"1":[0,3,4,5,7,10,11,12,14,16],"10":[0,6,7,10],"100":[0,2,10],"127":[3,4,5],"13":4,"150mb":4,"1965":14,"2":[4,7,9,10,14,15,16],"200":[0,7,9,10,14],"201":[7,9,12,14,15],"2026":0,"204":[14,15],"24":11,"2xx":0,"3":[4,6,7,9,10,14,16],"3000":5,"301":[0,7],"308":2,"32":5,"3600":[0,10],"3f":13,"4":[4,7],"40":2,"400":[0,9,10,14],"401":[0,10,11],"404":[0,7,12,14,15],"41d4":7,"422":[2,9,10,14],"429":[0,10],"446655440000":7,"500":[2,7,9,10,13,14],"5000":10,"5042":[3,4,7,11,14,16],"550e8400":7,"561":2,"60":[0,2,10],"600":[0,10],"7":11,"8":0,"80":4,"8000":[4,7],"8192":0,"9":9,"978":14,"99":9,"A":[0,4,5,6,7,10,13,16],"And":[5,6,7],"As":[0,10],"But":[7,9,10],"By":[3,7,9,10,13,14],"For":[0,3,4,5,7,9,10,11,14,15],"If":[0,3,5,6,7,9,10,12,15],"In":[0,5,6,7,10,11,12,15,16],"It":[0,3,6,9,10,13],"No":[6,9,10,12,14],"Not":7,"On":[5,10],"One":[6,7,9],"Or":[0,5],"That":[4,6,7,9],"The":[2,3,4,5,7,9,10,11,13,14,15,16],"There":[9,10],"These":7,"To":[14,15],"Will":0,"With":[0,5],"__init__":11,"__main__":[4,6,7,9,14,15],"__name__":[4,6,7,9,10,12,14,15],"__tablename__":15,"_route_for":2,"a2wsgi":2,"a716":7,"abc":14,"abc123":[0,9,10,11],"abil":2,"abl":0,"abort":12,"about":[4,7,9,12],"abov":[6,11],"abstract":15,"accept":[0,2,7,9,10,16],"access":[0,4,10,11,15],"acm":3,"acquir":8,"across":[4,10,15],"activ":[8,16],"actual":[0,7,10],"ad":[0,1,6,10],"adapt":10,"add":[0,1,2,5,7,11,13,14,15,16],"add_event_handl":0,"add_head":[10,13],"add_middlewar":[0,13],"add_request_id":0,"add_rout":[0,10],"add_tim":[9,10],"add_vers":9,"addeventlisten":16,"addit":[0,13],"address":[0,5,7,10],"adher":2,"admin":11,"affect":10,"after":[0,6,7,11,15,16],"after_request":[0,1,2,9,10,13],"ag":[0,10],"again":11,"against":[0,4,10,11],"agre":7,"ai":10,"aiosqlit":15,"alemb":15,"algorithm":11,"alias":2,"alic":10,"all":[0,2,3,4,6,8,9,10,12,13,15,16],"alloc":9,"allow":[6,10],"allow_credenti":[0,10],"allow_head":[0,10],"allow_method":[0,5,10],"allow_origin":[0,5,10],"allow_origin_regex":0,"allowed_host":[0,5,10],"alongsid":10,"alpin":4,"alreadi":[0,9,10],"also":[0,2,3,7,9,10],"altern":[0,10],"alwai":[4,5,6,7,10],"an":[0,3,5,7,10,12,13,14,15,16],"analysi":10,"angle_bracket":12,"angular":10,"ani":[0,3,4,5,6,7,9,10,11,13,14,15,16],"annot":[6,7,10],"annual":[7,10],"answer":[10,16],"anyon":6,"anyth":7,"anywher":[4,10],"api":[2,3,4,5,6,7,10,13,15,16],"api_kei":11,"api_v1":12,"apispec":2,"app":[0,2,3,4,5,6,7,9,12,14,15,16],"appar":0,"apparent_encod":0,"appear":10,"appendchild":16,"appli":[0,13],"applic":[0,2,3,4,5,7,9,10,11,13,14,15],"approach":[5,10,11,12],"appropri":[10,15],"ar":[0,2,3,4,6,7,9,10,11,12,13,15,16],"architectur":10,"aren":[7,13],"arg":[0,12],"argument":[0,2,7,12,13],"around":[0,6],"arriv":[7,12],"asgi":[0,2,4,6,7,10,12,13],"ask":[6,10,16],"assert":[9,16],"asset":[0,4,6,10],"assign":14,"associ":0,"async":[0,1,2,4,6,7,9,10,11,12,13,14,15,16],"async_sess":15,"async_sessionmak":15,"asynccontextmanag":[10,15],"asynchron":[2,4],"asyncio":15,"asyncpg":15,"attach":10,"attack":[4,5,10],"attribut":[0,3,15],"audio":16,"auth":[6,10,13],"auth_check":10,"auth_guard":11,"authent":[6,7,10,13,16],"autherror":11,"author":[0,7,8,10,11,13,14,15],"auto":[2,10,16],"auto_escap":0,"autobuild":8,"autoincr":15,"automat":[0,2,4,5,6,7,9,10,11,12,13,14,15],"avail":[0,7],"avoid":[9,10],"aw":4,"await":[0,2,7,9,10,11,12,13,14,15,16],"azur":[3,4],"b":[7,9,13,15,16],"back":[0,7,10,15,16],"background":[2,6],"backgroundqueu":0,"backlog":6,"bad":[9,10,14],"balanc":4,"bandwidth":10,"bar":10,"base":[0,2,6,11,13,15],"base_url":0,"basehttpmiddlewar":13,"basemodel":[0,9,10,14,15],"basic":7,"batteri":6,"battl":6,"bearer":6,"becaus":[0,6,7,11,12,14],"becom":[0,15],"been":0,"befor":[0,2,6,7,11,13,15],"before_request":[0,1,2,9,10,11,12,13,16],"begin":15,"behavior":[5,13],"behind":[4,10],"being":0,"best":6,"better":6,"between":13,"bidirect":[10,16],"big":6,"biggest":12,"bin":8,"binari":[7,10,16],"bind":[0,4,5,7],"blob":3,"block":[0,7,9,10,12,16],"blueprint":6,"bodi":[0,2,7,9,10,12,14,16],"boilerpl":6,"book":[6,15],"book_id":[14,15],"bookin":[14,15],"bookout":15,"books_db":14,"bool":5,"born":6,"both":[6,7,10,12,16],"bottom":14,"box":13,"bp":12,"break":9,"bring":6,"broadcast":16,"broke":[7,9],"broker":7,"browser":[7,8,10,11,14,16],"bucket":[0,10],"buffer":[0,7],"bufix":2,"bug":[2,9],"bugfix":2,"build":[2,4,6,7,8,10,11,15,16],"builder":15,"built":[2,4,6,7,9,10,16],"bump":2,"bypass":4,"byte":[0,2,6,7,13,16],"c":[5,16],"cach":[7,9,10],"caddi":4,"call":[3,7,9,10,13,14,16],"call_next":13,"callabl":0,"came":7,"can":[0,2,3,4,5,6,7,9,10,11,12,13,14,15,16],"carri":7,"case":[0,6,7,13],"cat":10,"catalog":14,"catch":[10,11,13],"categori":0,"cd":8,"ceas":2,"celeri":7,"cell":10,"central":[0,7],"certain":0,"certif":4,"chang":[0,15],"changelog":6,"channel":[10,16],"chardet":0,"chat":[6,10],"check":[0,8,9,10,11,13,16],"check_api_kei":11,"check_auth":0,"check_exist":[0,10,14,15],"choic":[7,10],"choos":10,"chunk":[0,10],"chunk_siz":0,"ci":2,"circuit":[0,1,2,6,10],"class":[2,6,7,9,11,13,14,15],"clean":[6,10,14],"cleaner":[10,11],"cleanli":5,"cleanup":10,"clear":11,"cli":2,"click":6,"client":[0,2,6,7,9,10,11,14],"clone":8,"close":[9,10,15,16],"close_database_connection_pool":0,"cloud":[3,5,6,7],"cmd":4,"code":[2,3,4,5,6,7,8,9,10,11,14,15,16],"collabor":[10,16],"colon":3,"column":15,"com":[0,3,5,7,8,10],"combin":7,"come":[7,10,12],"command":[4,6],"commit":[5,15],"common":[3,4,5,7,10,11,12,13,14],"commonli":7,"commun":[10,11],"compact":10,"compat":[0,2],"complement":[1,10],"complet":[7,10,14,16],"complex":[13,15],"compon":13,"compos":15,"compress":[6,7,13],"compromis":5,"comput":7,"concept":[2,10,12],"concern":[7,13],"concurr":[0,4],"condit":[9,10],"config":[5,15],"configur":[0,2,4,6,7,9,10,13],"conflict":2,"confus":9,"conn":15,"connect":[0,4,7,9,10,15,16],"consid":[1,7,15],"consist":[7,10],"consol":[10,15],"const":[10,16],"constructor":[0,13],"consum":10,"contact":0,"contain":[0,4,7],"container":4,"content":[0,2,6,7,9,10,14],"content_typ":[0,9,10],"context":[2,6,9,10,15,16],"contextlib":[10,15],"continu":7,"contract":9,"control":[0,4,5,7,10,11,15],"conveni":[0,5,15],"convent":[4,14],"convert":[2,7],"convertor":[2,6,12],"cooki":[0,2,5,6,7,11,12,13],"copi":4,"cor":[0,2,5,6,9,13],"core":[2,4],"coroutin":0,"correctli":4,"correspond":15,"cors_en":5,"cors_origin":5,"cors_param":[0,5,10],"corsmiddlewar":13,"count":2,"cover":[5,11,13],"cpu":[0,4,7],"crash":2,"creat":[0,6,8,9,10,11,12,15],"create_al":15,"create_asgi_app":10,"create_async_engin":15,"create_book":[14,15],"create_connect":16,"create_item":[0,10,12],"create_pet":10,"create_token":11,"createel":16,"creation":15,"credenti":11,"cross":[10,13],"crud":[6,7,14],"css":10,"csv":10,"curl":[3,7,11,14],"curly_brac":12,"custom":[0,2,6,7,9,14,16],"cut":13,"cycl":7,"d":[7,9,14],"dashboard":[5,10,11,16],"data":[0,2,5,6,7,9,10,11,12,14,15],"databas":[5,6,7,9,10,11,14],"database_url":[5,15],"date":0,"datetim":11,"db":[5,15],"debug":[0,2,6,10,12],"decim":7,"declar":[2,7],"declarativebas":15,"decod":[2,10,11],"decor":[0,2,7,10],"deep":6,"def":[0,6,7,9,10,11,12,13,14,15,16],"def456":11,"default":[0,1,2,3,5,7,9,10,15],"default_valu":[0,10],"defend":10,"defin":[0,6,7,10,11],"definit":0,"del":14,"delet":[5,6,7,10,15],"delete_book":[14,15],"deliber":7,"demo":3,"denpend":2,"dep":2,"depend":[2,4,9,13],"deploi":[4,6],"deploy":6,"depth":10,"describ":10,"descript":[0,10],"design":[7,10,14],"detail":[4,5,10,14],"detect":[0,6,10],"dev":[2,5],"develop":[3,4,5,10,15],"devic":10,"dict":[6,7,10,11,14,15],"dictionari":0,"differ":[0,3,5,6,9,10,15],"digit":7,"direct":[0,2,10],"directli":[3,6,7,9,14,15],"directori":[0,7,10],"disabl":[9,15],"discard":16,"disconnect":16,"disk":[0,7,10],"dispatch":[2,10,13],"dispos":15,"distribut":[4,10],"div":16,"django":[6,10],"do":[4,5,7,10],"doc":[8,9,10,11,14],"docker":[5,6],"dockerfil":4,"docs_rout":[0,10,14],"docstr":10,"doctyp":16,"document":[0,2,4,6,8,14,16],"doe":15,"doesn":[0,10,14,15],"domain":[0,5,10],"don":[5,7,9,10,11,12,15],"done":4,"dot":3,"dotenv":5,"doubl":14,"down":[10,15],"download":10,"dramat":2,"driver":15,"drop":[2,16],"dump":2,"dune":14,"duplex":10,"duplic":10,"durat":13,"dure":[3,4,9,15],"duti":14,"dynam":7,"e":[0,16],"e29b":7,"each":[0,4,9,10,15],"easi":[3,5,7],"echo":[6,7,15],"ecosystem":[6,7],"edit":8,"editor":[10,16],"effect":[9,14],"effici":4,"either":[0,16],"element":[0,10],"els":[7,10,11,12,15],"email":7,"emb":10,"empti":[0,14],"enabl":[2,10,13,14],"enable_async":7,"enable_hst":[0,10,13],"encod":[0,2,11],"encrypt":11,"end":[7,14],"endpoint":[0,2,6,9,10,11,12,14],"enforc":10,"engin":[7,15],"enough":[4,13],"ensur":[10,14,15,16],"enter":[9,16],"entir":[0,10,11,13,14],"entri":14,"env":[4,6],"environ":[0,3,4,6,7],"eol":2,"equival":12,"error":[0,2,5,6,15],"errorhandl":12,"escap":0,"essenti":10,"establish":16,"etc":[7,9,10],"even":[3,4,10,16],"event":[0,2,6,7,12,16],"event_typ":0,"eventsourc":10,"ever":[5,6],"everi":[0,4,5,6,7,9,10,11,13,14,15],"everyth":[0,2,4,7,10,12,14,15,16],"everywher":[3,5],"evolv":15,"exactli":[9,10],"exampl":[0,3,5,7,10,11],"exc":[0,9,10,11,14],"exceed":[0,10],"except":[0,2,6,9,10,13,16],"exception_cl":0,"exception_handl":[0,2,9,10,11,12,14],"exceptionmiddlewar":13,"execut":15,"exist":[0,2,6,12,13],"exit":[9,10,16],"exp":11,"expect":7,"expir":[0,10,11],"expire_on_commit":15,"explain":10,"explan":0,"explicit":[7,10,12],"explicitli":[10,12],"explor":[1,7,10],"export":[5,10],"expos":[4,5],"expose_head":0,"express":[6,7],"ext":[0,2,10,15],"extens":[2,7],"extern":7,"extra":[2,4,10],"extract":0,"extrem":7,"f":[0,6,7,9,10,11,13,14,16],"factori":15,"fail":[9,10,15],"failur":[2,9],"falcon":[6,10],"fall":0,"fals":[0,5,9,10,14,15],"familiar":[6,12],"fast":[4,6,7,9],"fastapi":6,"faster":10,"featur":[0,6,7],"feed":10,"feel":6,"fetch":3,"few":12,"fido":10,"field":[0,2,9,10,14],"figur":7,"file":[0,2,4,6,7,14,15,16],"filenam":[0,9],"filepath":7,"filesystem":[2,3],"fill":7,"filter":[6,7],"final":16,"find":[3,10,12],"fine":[4,10,15],"fire":[0,9],"first":[0,10,11,13,14,15],"fit":6,"fix":8,"fixtur":6,"flag":[4,10,15],"flask":[6,10],"flask_app":[10,12],"flatten":2,"float":[0,7,9],"flow":[11,13],"fly":4,"follow":7,"font":10,"forg":[5,10],"forget":0,"form":[0,7,11,12],"format":[0,2,6,7,8,10,11],"formerli":10,"forward":[4,10],"found":[2,7,14,15],"foundat":10,"fragment":3,"framework":[6,10],"franca":7,"frank":14,"freeli":16,"fresh":9,"from":[0,2,4,5,6,7,9,10,11,13,14,15,16],"from_attribut":15,"front":4,"frontend":[6,10],"fsspec":3,"full":[0,2,3,7,10],"full_url":[0,7,10],"fulli":7,"fun":6,"func":0,"function":[0,7,10,12,13],"futur":[0,6],"g":0,"game":[10,16],"gatewai":4,"gener":[0,2,5,6,9,10,13,14],"get":[0,2,5,7,10,11,15],"get_book":[14,15],"get_list":0,"get_m":11,"get_us":[0,10,12],"getelementbyid":16,"getenv":5,"git":[5,8],"github":[3,8],"gitignor":5,"give":[0,9,10,13,15],"given":[0,9],"global":[12,14],"gmt":0,"go":[7,12],"goe":[10,12],"good":[4,6,10],"googl":[3,4],"grace":4,"grade":7,"gradual":[6,10],"graduat":13,"grain":15,"graphen":[0,2,6,10],"graphiql":[2,6,10],"graphql":[0,2,6],"great":[3,6,10],"greet":[6,7,10],"greet_world":6,"greetingresourc":10,"group":[2,6],"grow":10,"guard":[6,11],"guid":[5,7,11,12,15],"guido":7,"gzip":[6,7],"gzipmiddlewar":13,"h":[7,11,14],"h1":[7,11],"ha":[7,9,12,14,16],"half":7,"halv":10,"hand":0,"handl":[0,2,4,5,6,7,11,16],"handle_auth_error":11,"handle_value_error":[0,10,14],"handler":[0,6,9,10,11,13,14],"handshak":16,"happen":[6,7],"hard":9,"hasn":0,"have":[0,2,3,7,9,12,13,14],"hdf":3,"head":3,"header":[0,2,4,5,6,7,10,11,12,13,16],"health":11,"heavi":7,"hello":[0,3,6,9,10,12,16],"hello_html":7,"hello_json":7,"hello_to":7,"hello_world":7,"helloworld":3,"help":[0,15],"helper":[6,11],"herbert":14,"here":[4,5,7,10,12,16],"high":[4,10],"hold":[0,6,7],"home":6,"honor":[4,7],"hood":10,"hook":[0,1,2,6,7,11],"host":[0,2,4,6,7,13],"hostnam":10,"hour":[10,11],"how":[5,6,7,10,11,12,14,15],"hs256":11,"hst":6,"html":[0,2,6,7,10,11,12],"http":[0,2,3,4,5,6,7,8,9,10,11,14,16],"httponli":[0,10],"httpsredirect":0,"httpsredirectmiddlewar":[0,4,13],"httpx":[2,9],"i":[0,2,3,4,5,6,7,9,10,11,12,13,14,15,16],"id":[0,2,6,7,12,13,14,15,16],"idea":12,"idempot":14,"ident":12,"identifi":10,"imag":[4,7,10,16],"immedi":[0,6,7,10],"immut":2,"imperson":5,"implement":9,"import":[0,2,3,5,6,7,9,10,11,12,13,14,15,16],"improv":2,"inaccess":0,"includ":[3,4,6,7,8,9,10,11,14],"incom":[0,7,14],"incredibli":10,"independ":4,"index":[0,7,10,16],"individu":10,"industri":10,"info":[0,2,10],"inform":[0,14],"infrastructur":[4,6],"inherit":[0,10],"initi":[0,9],"inject":10,"innermost":13,"input":[2,9,10,14,16],"insensit":[0,6,7],"insid":13,"inspect":0,"instal":[0,2,3,4,5,8,10,11,16],"instanc":[0,4,6,7,9],"instant":7,"instead":[0,7,9,10,13,14,15,16],"int":[0,2,7,10,11,12,14,15],"integ":[0,7,14,15],"integr":[13,14,15],"intens":7,"intent":6,"intention":10,"interact":[2,10,14],"interfac":[4,6,7,12],"intern":[9,10,13],"invalid":[5,9,10,11],"invalidtokenerror":11,"involv":0,"io":4,"iot":10,"ip":[0,7,10],"is_100":0,"is_200":0,"is_300":0,"is_400":0,"is_500":0,"is_class_bas":2,"is_json":[0,2,7],"is_secur":[0,7],"isbn":[14,15],"isn":[7,10,12],"issu":[2,11],"item":[0,9,10,12,15],"itemin":0,"itemout":0,"items_list":0,"iter":16,"its":[0,2,4,14,15],"itself":11,"j":10,"jan":0,"javascript":[0,3,10],"jinja2":[0,7,12],"jpeg":10,"jpg":10,"json":[0,3,6,7,10,11,14,16],"jsonifi":12,"jump":7,"just":[4,9,10,13,15,16],"jwt":11,"keep":[2,5,7,9,10,13,15,16],"kei":[0,6,7,9,10,12,15,16],"kennethreitz":[3,8],"keypress":16,"keyword":[0,7,12,13],"know":[5,7],"known":[0,11],"kwarg":0,"languag":10,"larg":[0,2,10],"larger":[5,9,13],"last":[0,13],"later":[7,9],"launch":[4,6],"layer":13,"lazi":2,"lazili":0,"lead":9,"learn":10,"legaci":12,"less":10,"let":[3,4,7,10,14,15],"level":[4,13],"librari":[9,10,16],"licens":0,"lifecycl":16,"lifespan":[0,2,6,14],"lift":7,"lightn":4,"lightweight":7,"like":[4,7,9,10,11,13,14,16],"limit":[1,2,4,6,13,15,16],"line":[6,7],"liner":2,"lingua":7,"list":[0,6,7,9,10,15],"list_book":[14,15],"list_item":10,"list_pet":10,"list_us":[0,10,12],"list_users_v2":10,"live":[10,16],"ll":[6,7,10,12,14,15],"load":[0,2,3,4,5,7,10],"load_dotenv":5,"local":[3,5,6,12],"localhost":[5,7,11,14,15,16],"locat":[0,7,11,12],"log":[4,10,11,13],"log_level":2,"log_request":13,"log_respons":10,"logic":[6,7,10],"login":[10,11],"logout":11,"long":7,"look":[3,6,7],"loop":[7,12,16],"lose":[2,15],"lower":[0,5],"lowercas":7,"machin":10,"made":[0,6],"magic":12,"mai":4,"main":3,"make":[4,5,7,9,10,11,12],"malici":10,"manag":[2,5,6,9,10,11,13,15,16],"mani":[0,4,7,10],"manual":0,"map":[2,7,10,12,15],"mapper":15,"marimo":10,"mark":[2,10],"marker":2,"marshmallow":[0,2,10],"match":[0,5,7,10,14],"matter":10,"max_ag":[0,10],"maximum":0,"me":11,"mean":[4,7,12],"mechan":10,"media":[0,2,6,7,9,10,11,12,14,15],"memori":[0,2,6,7,10],"messag":[0,7,10,11,16],"messagepack":[2,6],"metadata":[0,7,15],"method":[0,6,7,9,11,12,13,14,15,16],"microservic":10,"middelwar":0,"middlewar":[0,1,2,6,7,10],"middleware_cl":0,"middleware_config":0,"might":7,"migrat":[2,6,10,15],"mime":0,"mimetyp":[0,7,10],"min":[0,10],"mind":13,"minim":[4,16],"minimum":2,"minor":2,"miss":[2,9,10,11],"mix":10,"ml":10,"mode":[0,6,8],"model":[0,6,9,10],"model_dump":15,"model_valid":15,"modern":[4,10,11,12,15],"modifi":[0,10,13,14,15],"modul":[0,2,6,7,10],"more":[0,3,4,7,10,11,12,13,14,16],"most":[0,3,4,5,7,9,10,11,13,15],"mount":[0,2,6,12],"move":[2,7,10,12],"msgpack":[2,10],"much":[7,10],"multi":0,"multipart":[2,7],"multipl":[2,4,10,14],"multiplay":[10,16],"must":[0,7,10,11,14,16],"mutabl":6,"mutat":[0,7,12],"my_templ":7,"myapi":4,"myapp":3,"mydb":15,"mysql":15,"n":[0,7],"name":[0,5,6,7,9,10,12],"namespac":2,"nativ":12,"natur":[9,15],"nearli":12,"need":[4,5,6,7,9,10,11,12,13,15,16],"negoti":[0,6,7,9,10],"nervou":7,"network":9,"never":[5,10,11,14],"new":[0,7,9,10,12,14,16],"new_endpoint":12,"next":[6,13],"next_id":14,"nginx":4,"non":7,"none":[0,2,11,14,15],"normal":[10,16],"notabl":2,"notasecret":0,"note":[7,10,12,14],"notebook":10,"notic":7,"notif":10,"now":[2,7,10,11,15,16],"npm":3,"nullabl":15,"number":[0,7],"o":[0,5,7,12],"object":[0,2,7,10,12,13,15,16],"objecttyp":[0,10],"obviou":9,"off":[5,7],"offload":4,"offset":15,"often":[3,7,10],"ok":[0,7,9,14],"old":12,"on_delet":10,"on_ev":[0,9,10],"on_get":[6,10],"on_post":[6,10],"on_put":10,"on_request":[6,10],"on_startup":9,"onc":[10,12,14],"one":[0,2,5,6,7,10,12,15],"ones":[6,7,10],"onion":13,"onli":[0,5,7,10,12,14],"onmessag":[10,16],"open":[2,7,8,15],"open_database_connection_pool":0,"openapi":[0,2,6,14],"openapi_rout":0,"openapi_them":0,"oper":[7,10,12,14],"opt":10,"option":[0,2,4,6,7,13],"option1":13,"option2":13,"order":[0,6],"order_bi":15,"organ":[0,5,9,10,12],"origin":10,"orm":15,"other":[0,2,6,7,15],"otherwis":[0,10],"our":14,"out":[5,6,7,13],"outermost":13,"outgo":7,"output":14,"outsid":13,"over":[0,6,7,10,12,15],"overal":2,"overhead":9,"overrid":[0,10],"overwhelm":10,"own":[4,10,15],"p":[4,11,16],"pace":10,"packag":[2,3,4],"page":[0,2,5,7,10,11,16],"pagin":7,"painless":9,"pair":0,"param":[0,2,6,7,12],"paramet":[0,6,9,10,14],"parameter":0,"pars":[0,2,7,9,10],"parser":2,"part":[2,6,7,10],"parti":6,"pass":[0,7,9,12,13,15,16],"passion":6,"password":11,"patch":[7,10],"path":[0,2,3,6,7,9,10,11,13],"path_matches_rout":0,"path_param":[0,2,7],"pattern":[4,6,7,10,11,12,14,15],"payload":11,"pdf":[7,9,10],"pep":2,"per":[0,4,9,10],"perfect":10,"period":[0,2,10],"perman":7,"permit":10,"persist":[0,10,16],"person":6,"pet":[0,10],"petin":10,"petout":10,"petschema":[0,10],"photo":10,"piec":10,"pin":2,"pip":[2,3,4,5,6,8,11,15,16],"place":[5,10],"placehold":[7,16],"plain":[0,7,10,16],"platform":[2,5,6,7],"pleasant":6,"plot":10,"plu":15,"plugin":2,"poethepoet":2,"point":[3,4,14],"polici":10,"pool":[0,6,7,10,12,15],"popular":[7,10,15],"port":[0,4,5,7,9],"portion":0,"possibl":7,"post":[0,5,7,9,10,11,12,14,15],"postgresql":6,"potenti":2,"power":[6,9,10,13,15,16],"practic":10,"prefer":10,"prefix":[0,2,10],"present":7,"prevent":[5,10],"price":[0,9],"primari":0,"primary_kei":15,"print":[0,5,10,13,15,16],"privat":10,"proce":16,"process":[4,6,7,9,10,13],"process_data":7,"prod":5,"produc":[0,7],"product":[2,3,4,5,6,7,9,10,11,15],"profil":10,"programmat":10,"progress":10,"project":[2,3,8],"propag":9,"proper":[7,11,15],"properli":[5,9,15],"properti":[0,2,7,9],"protect":[4,11],"proto":4,"protocol":[3,7,9,10,16],"prototyp":[2,3,6],"provid":0,"proxi":6,"public":[0,6,10],"public_path":11,"push":[4,6,10],"put":[6,10,14,15],"py":[2,3,4,5,7,9,10,14,15],"pydant":[0,2,9,10,14,15],"pyjwt":11,"pyproject":2,"pytest":[6,8,9],"python":[0,2,3,4,5,6,7,10,14,15,16],"pythonpath":3,"q":[7,12],"queri":[2,6,7,10,15,16],"query_str":0,"querydict":0,"queue":[6,7],"quick":[0,3,6],"r":[7,9],"race":9,"railwai":4,"rais":[0,2,9,10,11],"raise_server_except":9,"random":[0,5],"rang":[0,7,10],"rapidoc":[0,10],"rare":7,"rate":[1,2,4,6,13],"rate_limit":0,"ratelimit":[0,2,10,13],"rather":9,"raw":[0,3,6,7,10,13,15,16],"re":[0,4,7,9,10,12,13,14,16],"reach":[11,13],"react":[2,10],"reactiv":10,"read":[0,2,5,6,10,11,12,14,15],"readabl":10,"readi":[4,5,6,7],"real":[2,5,10,11,14,15],"realli":[9,10],"receiv":[0,6,7,9,10,11,13,16],"receive_byt":[10,16],"receive_incom":7,"receive_json":[10,16],"receive_text":[9,10,16],"recommend":10,"reconnect":10,"recv":16,"redirect":[0,2,7,11,12],"redoc":[0,10],"reduc":2,"ref":3,"refactor":[2,9],"refer":[6,9],"refresh":15,"refus":10,"regist":[0,9,10,11],"register_blueprint":12,"reject":[9,10],"relat":[0,10,15],"releas":8,"reliabl":9,"remain":10,"rememb":11,"remov":[10,12,14,16],"renam":9,"render":[0,1,4,6,10],"render_async":7,"render_templ":12,"replac":[2,7,10,14],"report":[7,9,10],"repres":0,"represent":0,"req":[0,2,6,7,9,10,11,12,13,14,15,16],"request":[2,3,4,6,11,12,13,14,15],"request_id":[0,2,10,13],"request_model":[0,2,9,10,14,15],"requir":[0,2,9,10],"research":6,"resolv":[2,10],"resolve_hello":[0,10],"resourc":[7,10,14],"resp":[0,2,6,7,9,10,11,12,13,14,15,16],"respect":3,"respond":[0,2,3,4,5,7,8,9,10,11,12,13,14,15,16],"respons":[2,6,9,10,12,13,14,15,16],"response_model":[0,2,10,14,15],"rest":[4,6,7,10],"restrict":10,"result":[0,7,10,15],"resum":2,"resume_incomplet":2,"retri":[0,10],"retriev":[0,10,14],"return":[0,2,6,7,9,10,11,12,13,14,15],"reusabl":11,"revers":[0,6],"rfc3986":2,"right":[6,7,10,12,13],"roll":15,"room":6,"root":10,"rotat":5,"rout":[2,6,9,13,14,15,16],"routegroup":0,"router":2,"ruff":8,"rule":5,"run":[0,2,3,6,8,9,10,12,13,16],"run_sync":15,"runner":[2,4],"runtimeerror":0,"s3":3,"safe":[2,14],"sai":7,"said":4,"same":[3,4,6,7,10,12,14,15],"sandbox":6,"save":[7,16],"scalar":15,"scale":6,"schema":[0,2,6,10,11,14,15],"scope":[0,10,13],"scratch":[6,14],"script":16,"search":[0,2,7,10],"second":0,"secret":[6,10,11],"secret_kei":[0,5,10,11],"section":10,"secur":[0,10,13],"see":[0,4,5,7,9,10,13,14,15],"select":[0,2,15],"self":[0,10,11,13],"semant":2,"send":[0,2,6,9,10,11,14,16],"send_byt":[10,16],"send_email":0,"send_json":[10,16],"send_text":[9,10,16],"sensit":11,"sent":[0,2,6,7,13],"separ":[7,9,14],"sequenti":2,"serial":[0,2,7,10,16],"serializ":7,"serv":[0,2,3,4,5,6,7,9,14,16],"server":[0,2,3,4,5,6,9,11,13,14,15],"servererrormiddlewar":13,"servestat":2,"servic":[0,3,6,9,10,14],"session":[0,2,5,6,7,9,12,13,15],"session_id":10,"sessionmiddlewar":13,"set":[0,2,4,5,6,7,8,9,10,11,15,16],"set_cooki":[0,2,10],"set_text":0,"setattr":15,"setup":[2,5,6,9],"sever":[10,13],"sftp":3,"share":[0,3,7,9,10,15],"shell":5,"short":[0,1,2,6,10],"shorthand":0,"should":[5,14,15],"shouldn":0,"show":[2,10,12,15,16],"shut":[10,15],"shutdown":[0,4,6,9,10],"shutdwown":2,"sibl":6,"side":[7,10,11,16],"sign":[0,5,6,7,10,11,13],"signatur":[7,10,12],"signup":11,"simpl":[3,9,10,11,13,14,16],"simplecooki":0,"simpler":[7,10,11,13],"simplest":[5,7,11,13,16],"simpli":11,"simplic":[6,15],"simul":7,"sinc":[7,9],"singl":[0,2,3,6,7,10,12,15],"sit":13,"size":[0,15],"sk":11,"skip":[0,6,10],"slash":7,"sleep":[7,9],"slim":4,"slow":7,"slowlori":4,"slug":7,"small":[4,6,9,10],"smaller":4,"so":[9,10,12,13,14,15],"solv":10,"some":[4,5,10],"some_packag":13,"somemiddlewar":13,"someon":[5,7,10,16],"someth":[6,7,9,10],"sometim":[7,10],"somewher":7,"sourc":[0,5,8,10],"spawn":4,"spec":[7,10],"special":[6,10],"specif":[0,5,9,10,13,14],"specifi":3,"sphinx":8,"spin":7,"split":5,"sprawl":6,"sql":15,"sqlalchemi":[6,7,14],"sqlite":[5,15],"sse":[0,2,6],"ssl":4,"stabil":2,"stack":13,"stai":[12,15],"standard":[3,4,10,11,14],"starlett":[0,2,6,9,16],"start":[0,3,4,6,10,13,14,15],"startswith":11,"startup":[0,2,6,9,10],"state":[0,2,9,10,11],"statement":6,"static":[0,2,4,6,7,16],"static_app":0,"static_dir":[0,10],"static_rout":[0,2,10],"staticfil":0,"statu":[2,6,7,9,10,14],"status_cod":[0,6,7,9,10,11,12,13,14,15],"status_code_saf":0,"stderr":0,"stdlib":2,"still":[10,12],"stop":10,"storag":[3,6],"store":[0,5,10,11,14],"str":[0,7,9,10,11,14,15],"straightforward":10,"stranger":[0,10],"stream":[0,2,10],"stream_data":0,"stream_fil":[0,2,10],"strict":10,"string":[0,6,7,10,15,16],"strip":[2,10,11],"structur":10,"style":10,"stylesheet":10,"sub":11,"subclass":0,"subcommand":3,"subject":0,"submiss":0,"submit":0,"subrout":[6,10,12],"subsequ":[10,11],"subtl":2,"success":[0,7,14],"successfulli":14,"successor":4,"suit":9,"suppli":2,"support":[0,1,2,3,4,6,7,12,15,16],"swagger":[6,10,14],"swagger_ui":[0,10],"switch":[2,15,16],"sync":[2,6,7,12],"synchron":[0,12],"syntax":[2,6,7,12],"system":[3,7,10],"t":[0,4,5,7,9,10,11,12,13,14,15],"tabl":15,"take":[6,7],"tamper":[10,11],"target":2,"task":[0,2,6],"teach":6,"tear":10,"tell":[7,10,14,15],"templat":[0,1,2,6],"template_str":[0,7],"templates_dir":0,"termin":[3,4],"terms_of_servic":0,"test":[0,2,3,5,6,8,14],"test_500":[2,9],"test_api":9,"test_create_item":9,"test_custom_error":9,"test_echo":16,"test_head":9,"test_hello":9,"test_hook":9,"test_json":9,"test_upload":9,"test_valid":9,"test_websocket":9,"test_with_lifespan":9,"testclient":[0,2,9,16],"text":[0,2,6,7,9,10,12,16],"textcont":16,"than":[9,10,11,12,13,14],"thei":[0,5,7,10,12,13,14,16],"them":[6,7,9,10,11,12,14,16],"theme":[0,10],"themselv":10,"thi":[0,2,3,4,5,6,7,9,10,11,12,13,14,15,16],"thing":[5,6,7,9,13],"think":7,"third":6,"though":4,"thousand":4,"thread":[0,6,7,12],"threadpoolexecutor":[0,2],"three":[7,10,16],"through":[0,7,10,13,14,16],"throughput":10,"thu":0,"time":[0,2,6,7,9,10,12,13,14,15,16],"time_start":0,"timedelta":11,"timeout":4,"timingmiddlewar":13,"tip":6,"titl":[0,7,10,14,15],"tl":4,"togeth":[6,10],"token":[0,6,7,10,16],"token_hex":5,"toml":2,"too":[0,3,4,9,10],"tool":[8,13],"toolbelt":2,"toolkit":15,"top":[0,5],"total":10,"tour":[0,6,7],"trace":10,"traceback":[0,2,5,10],"track":15,"tradit":[10,11],"traffic":4,"transact":15,"transform":13,"translat":12,"transport":10,"treat":[0,10],"trick":10,"trigger":9,"true":[0,2,5,7,9,10,11,12,13,15,16],"trust":6,"trustedhostmiddlewar":[4,13],"try":[6,7,11,16],"tupl":[0,7,9],"tutori":[7,14],"two":[7,10,13],"type":[0,2,6,10,12,14,16],"typic":[7,10],"typo":[2,10],"ui":[2,6,10,14],"unauthor":[0,10,11],"under":[0,7,10,12],"understand":[6,7],"unexpectedli":16,"unhandl":13,"unicod":0,"union":2,"uniqu":10,"unit":15,"univers":5,"unknown":0,"unless":10,"unlik":10,"unmaintain":2,"unmatch":10,"unpin":2,"unrecogn":10,"until":7,"up":[0,2,7,8,10],"updat":[2,6,7,10,15,16],"update_book":[14,15],"upgrad":[2,8,10,16],"upload":[2,6,7],"url":[0,2,5,6,7,9,10,11,12,13,15],"url_for":[0,2,9],"url_prefix":12,"urllib":2,"us":[0,2,3,4,6,7,10,12,14,16],"usag":[0,2],"user":[0,5,7,10,11,12,15],"user_id":[7,10,11,12],"usernam":[10,11],"usual":9,"utcnow":11,"utf":0,"uuid":[0,2,7,10],"uuid4":0,"uv":[3,5,6,8,11,15],"uvicorn":[0,2,6,7],"uvloop":4,"v":6,"v1":[0,10],"v2":10,"valid":[0,2,6,7,10,11,13,14,15],"valu":[0,6,7,9,10,11,12,13,14,15,16],"valueerror":[0,9,10,12,14],"variabl":[0,4,6,7],"ve":[6,9,12],"venv":8,"verb":10,"veri":[0,7,15],"verifi":[9,11],"verify_token":11,"version":[0,2,9,10,14],"via":[0,2,5,10,12],"view":[0,2,6,7,9,12],"virtual":[3,4],"virtualenv":8,"visit":[10,14],"vue":10,"w":[9,10,16],"wa":[0,2,7,14],"wai":[3,4,6,7,10,11,12,13,15],"wait":12,"walk":[7,10,14],"want":[0,3,4,6,7,9,10,14,15,16],"watch":8,"we":[14,15,16],"web":[0,4,6,10,15],"websit":10,"websocket":[0,1,2,4,6],"websocket_connect":[9,16],"welcom":[6,7,11],"well":6,"went":6,"what":[0,7,9,10,16],"whatev":7,"when":[0,2,4,5,6,7,9,10,12,14,15,16],"where":[0,4,7,10,15,16],"whether":[0,7],"which":[0,2,7,9,10,12,15],"whichev":6,"while":[7,10,12,16],"whitenois":2,"who":[6,7,11],"widget":[9,10],"wildcard":10,"window":2,"wire":7,"with_app":10,"within":[2,10,15],"without":[0,2,4,7,9,10,15],"won":[7,9,10,15],"work":[3,4,5,6,7,10,13,14,15],"workdir":4,"worker":4,"world":[0,3,6,9,10,12],"worri":9,"would":9,"wrap":[0,7,9,10,13],"write":[6,7,10,12],"wrong":10,"ws_auth":16,"wsgi":[0,2,4,6,10,12],"www":5,"x":[0,4,7,9,10,11,12,13,14],"x00":16,"x01":16,"x02":16,"x89png":7,"xml":0,"xss":10,"yaml":[0,2,6,7,9,10],"year":[14,15],"yield":[0,10,15],"yml":[0,10,11],"you":[0,3,4,5,7,9,10,11,12,13,14,15,16],"your":[0,3,4,5,6,7,9,10,11,12,13],"yourself":7,"zero":4},"titles":["API Reference","Backlog","Changelog","Command Line Interface","Deployment","Configuration","Responder","Quick Start","Development Sandbox","Testing","Feature Tour","Authentication","Migrating from Flask","Writing Middleware","Building a REST API","Using SQLAlchemy","WebSocket Tutorial"],"titleterms":{"":14,"0":2,"01":2,"02":2,"03":2,"04":2,"08":2,"09":2,"1":2,"10":2,"11":2,"12":2,"13":2,"15":2,"16":2,"17":2,"18":2,"19":2,"2":2,"20":2,"2018":2,"2019":2,"2026":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"In":14,"It":[5,7,14,15],"The":[0,6,12],"ad":[2,13],"after":[9,10],"all":[5,7,14],"allow":5,"api":[0,9,11,12,14],"app":[10,11],"asset":3,"auth":11,"authent":11,"background":[0,7],"backlog":1,"base":10,"bearer":11,"befor":[9,10,16],"big":12,"blueprint":12,"book":14,"build":[3,14],"built":13,"chang":2,"changelog":2,"chat":16,"class":[0,5,10],"client":16,"cloud":4,"code":0,"command":3,"configur":5,"convertor":7,"cooki":[9,10],"cor":10,"creat":[7,14],"crud":15,"custom":[3,10,11],"data":16,"databas":15,"debug":5,"defin":[14,15],"delet":14,"deploy":4,"deprec":2,"develop":8,"dict":0,"differ":12,"directli":4,"docker":4,"document":10,"echo":16,"endpoint":15,"env":5,"environ":5,"error":[9,10,11,14],"event":[9,10],"except":11,"featur":10,"file":[3,5,9,10],"filter":10,"fix":2,"fixtur":9,"flask":12,"format":16,"from":[3,12],"frontend":3,"futur":1,"get":[6,9,14],"gradual":12,"graphql":10,"group":[0,10,12],"guid":6,"handl":[9,10,14],"header":9,"hello":7,"helper":0,"hook":[9,10,13,16],"host":[5,10],"how":16,"hst":10,"html":16,"id":10,"idea":[1,6],"instal":[6,15],"instanc":3,"interfac":3,"json":[9,12],"kei":[5,11],"launch":3,"lifespan":[9,10,15],"limit":[0,10],"line":3,"list":14,"local":4,"memori":14,"messagepack":10,"method":10,"middlewar":13,"migrat":12,"mode":5,"model":[14,15],"modul":3,"mount":10,"name":3,"next":14,"openapi":10,"oper":8,"order":13,"other":10,"out":14,"paramet":[7,12],"parti":13,"pattern":5,"platform":4,"postgresql":15,"project":[6,14],"proxi":4,"public":11,"put":[5,7],"queri":0,"queue":0,"quick":[7,12],"rate":[0,10],"read":7,"refer":[0,12],"remov":2,"render":7,"request":[0,7,9,10,16],"respond":6,"respons":[0,7],"rest":14,"revers":4,"room":16,"rout":[0,7,10,11,12],"run":[4,7,14,15],"sandbox":8,"secret":5,"send":7,"sent":10,"serv":10,"server":[7,10,16],"servic":7,"session":[10,11],"setup":[8,14,15],"shutdown":15,"singl":14,"skip":11,"sqlalchemi":15,"sse":10,"starlett":13,"start":[7,9],"startup":15,"static":10,"statu":0,"storag":14,"support":10,"task":7,"templat":[7,12],"test":[9,16],"third":13,"tip":[9,15],"togeth":[5,7],"token":11,"tour":10,"trust":10,"try":14,"tutori":[6,16],"type":7,"unreleas":2,"updat":14,"upload":9,"url":3,"us":[5,9,11,13,15],"user":6,"uvicorn":4,"v":13,"v0":2,"v1":2,"v2":2,"v3":2,"valid":9,"variabl":5,"view":10,"web":[7,11],"websocket":[9,10,16],"what":[6,13,14],"when":13,"work":16,"world":7,"write":13,"you":6,"your":[14,15]}}) \ No newline at end of file +Search.setIndex({"alltitles":{"API Key Authentication":[[11,"api-key-authentication"]],"API Reference":[[0,null]],"Added":[[2,"added"],[2,"id2"],[2,"id4"],[2,"id7"],[2,"id11"],[2,"id17"],[2,"id18"],[2,"id21"],[2,"id24"],[2,"id29"],[2,"id36"],[2,"id42"],[2,"id43"],[2,"id44"],[2,"id45"],[2,"id46"],[2,"id49"],[2,"id50"],[2,"id52"],[2,"id55"],[2,"id58"],[2,"id59"],[2,"id60"],[2,"id64"]],"Adding Third-Party Middleware":[[13,"adding-third-party-middleware"]],"After-Request Hooks":[[10,"after-request-hooks"]],"Allowed Hosts":[[5,"allowed-hosts"]],"Authentication":[[11,null]],"Background Queue":[[0,"background-queue"]],"Background Tasks":[[7,"background-tasks"]],"Backlog":[[1,null]],"Bearer Token Authentication":[[11,"bearer-token-authentication"]],"Before-Request Hooks":[[10,"before-request-hooks"]],"Before-Request Hooks for WebSockets":[[16,"before-request-hooks-for-websockets"]],"Blueprints \u2192 Route Groups":[[12,"blueprints-route-groups"]],"Building Frontend Assets":[[3,"building-frontend-assets"]],"Building a REST API":[[14,null]],"Built-in Middleware":[[13,"built-in-middleware"]],"CORS":[[10,"cors"]],"CRUD Endpoints":[[15,"crud-endpoints"]],"Changed":[[2,"changed"],[2,"id1"],[2,"id3"],[2,"id5"],[2,"id8"],[2,"id16"],[2,"id19"],[2,"id22"],[2,"id25"],[2,"id28"],[2,"id33"],[2,"id34"],[2,"id35"],[2,"id37"],[2,"id38"],[2,"id40"],[2,"id41"],[2,"id47"],[2,"id51"],[2,"id56"],[2,"id57"],[2,"id63"]],"Changelog":[[2,null]],"Chat Room":[[16,"chat-room"]],"Class-Based Views":[[10,"class-based-views"]],"Cloud Platforms":[[4,"cloud-platforms"]],"Command Line Interface":[[3,null]],"Configuration":[[5,null]],"Configuration Class Pattern":[[5,"configuration-class-pattern"]],"Cookie-Based Sessions":[[10,"cookie-based-sessions"]],"Cookies":[[10,"cookies"]],"Create a Book":[[14,"create-a-book"]],"Create a Web Service":[[7,"create-a-web-service"]],"Custom Error Handling":[[10,"custom-error-handling"]],"Custom Exception for Auth Errors":[[11,"custom-exception-for-auth-errors"]],"Custom Instance Names":[[3,"custom-instance-names"]],"Data Formats":[[16,"data-formats"]],"Database Setup":[[15,"database-setup"]],"Debug Mode":[[5,"debug-mode"]],"Define Your Models":[[14,"define-your-models"],[15,"define-your-models"]],"Delete a Book":[[14,"delete-a-book"]],"Deployment":[[4,null]],"Deprecated":[[2,"deprecated"]],"Development Sandbox":[[8,null]],"Docker":[[4,"docker"]],"Echo Server":[[16,"echo-server"]],"Environment Variables":[[5,"environment-variables"]],"Error Handling":[[14,"error-handling"]],"Feature Tour":[[10,null]],"Fixed":[[2,"fixed"],[2,"id6"],[2,"id10"],[2,"id12"],[2,"id13"],[2,"id14"],[2,"id15"],[2,"id20"],[2,"id23"],[2,"id26"],[2,"id27"],[2,"id30"],[2,"id31"],[2,"id32"],[2,"id39"],[2,"id48"],[2,"id53"],[2,"id54"],[2,"id61"],[2,"id62"]],"Future Ideas":[[1,"future-ideas"]],"Get a Single Book":[[14,"get-a-single-book"]],"Getting Started":[[9,"getting-started"]],"Gradual Migration":[[12,"gradual-migration"]],"GraphQL":[[10,"graphql"]],"HSTS":[[10,"hsts"]],"HTML Client":[[16,"html-client"]],"Hello World":[[7,"hello-world"]],"Hooks vs. Middleware":[[13,"hooks-vs-middleware"]],"How WebSockets Work":[[16,"how-websockets-work"]],"In-Memory Storage":[[14,"in-memory-storage"]],"Installation":[[6,"installation"],[15,"installation"]],"JSON APIs":[[12,"json-apis"]],"Launching from a File":[[3,"launching-from-a-file"]],"Launching from a Module":[[3,"launching-from-a-module"]],"Launching from a URL":[[3,"launching-from-a-url"]],"Lifespan Events":[[10,"lifespan-events"]],"Lifespan for Startup and Shutdown":[[15,"lifespan-for-startup-and-shutdown"]],"List All Books":[[14,"list-all-books"]],"MessagePack":[[10,"messagepack"]],"Method Filtering":[[10,"method-filtering"]],"Middleware Order":[[13,"middleware-order"]],"Migrating from Flask":[[12,null]],"Mounting Other Apps":[[10,"mounting-other-apps"]],"OpenAPI Documentation":[[10,"openapi-documentation"]],"Operations":[[8,"operations"]],"Project":[[6,null]],"Project Setup":[[14,"project-setup"]],"Putting It All Together":[[5,"putting-it-all-together"],[7,"putting-it-all-together"]],"Query Dict":[[0,"query-dict"]],"Quick Reference":[[12,"quick-reference"]],"Quick Start":[[7,null]],"Rate Limiter":[[0,"rate-limiter"]],"Rate Limiting":[[10,"rate-limiting"]],"Reading Requests":[[7,"reading-requests"]],"Removed":[[2,"removed"],[2,"id9"]],"Rendering Templates":[[7,"rendering-templates"]],"Request":[[0,"request"]],"Request ID":[[10,"request-id"]],"Responder":[[6,null]],"Response":[[0,"response"]],"Reverse Proxy":[[4,"reverse-proxy"]],"Route Groups":[[0,"route-groups"],[10,"route-groups"]],"Route Parameters":[[7,"route-parameters"],[12,"route-parameters"]],"Run It":[[14,"run-it"],[15,"run-it"]],"Run the Server":[[7,"run-the-server"]],"Running Locally":[[4,"running-locally"]],"Secret Key":[[5,"secret-key"]],"Sending Responses":[[7,"sending-responses"]],"Server-Sent Events (SSE)":[[10,"server-sent-events-sse"]],"Serving Files":[[10,"serving-files"]],"Setup":[[8,"setup"]],"Skipping Auth for Public Routes":[[11,"skipping-auth-for-public-routes"]],"Static Files":[[10,"static-files"]],"Status Code Helpers":[[0,"status-code-helpers"]],"Templates":[[12,"templates"]],"Testing":[[9,null]],"Testing Before and After Hooks":[[9,"testing-before-and-after-hooks"]],"Testing Error Handling":[[9,"testing-error-handling"]],"Testing File Uploads":[[9,"testing-file-uploads"]],"Testing Headers and Cookies":[[9,"testing-headers-and-cookies"]],"Testing JSON APIs":[[9,"testing-json-apis"]],"Testing Lifespan Events":[[9,"testing-lifespan-events"]],"Testing Request Validation":[[9,"testing-request-validation"]],"Testing WebSockets":[[9,"testing-websockets"],[16,"testing-websockets"]],"The API Class":[[0,"the-api-class"]],"The Big Differences":[[12,"the-big-differences"]],"The Idea":[[6,"the-idea"]],"Tips":[[9,"tips"],[15,"tips"]],"Trusted Hosts":[[10,"trusted-hosts"]],"Try It Out":[[14,"try-it-out"]],"Tutorials":[[6,null]],"Type Convertors":[[7,"type-convertors"]],"Unreleased":[[2,"unreleased"]],"Update a Book":[[14,"update-a-book"]],"User Guide":[[6,null]],"Using .env Files":[[5,"using-env-files"]],"Using Fixtures":[[9,"using-fixtures"]],"Using PostgreSQL":[[15,"using-postgresql"]],"Using SQLAlchemy":[[15,null]],"Using Sessions for Web Apps":[[11,"using-sessions-for-web-apps"]],"Using Starlette Middleware":[[13,"using-starlette-middleware"]],"Uvicorn Directly":[[4,"uvicorn-directly"]],"WebSocket Support":[[10,"websocket-support"]],"WebSocket Tutorial":[[16,null]],"What You Get":[[6,"what-you-get"]],"What\u2019s Next":[[14,"what-s-next"]],"When to Use What":[[13,"when-to-use-what"]],"Writing Middleware":[[13,null]],"v0.0.1 - 2018-10-12":[[2,"v0-0-1-2018-10-12"]],"v0.0.10 - 2018-10-17":[[2,"v0-0-10-2018-10-17"]],"v0.0.2 - 2018-10-13":[[2,"v0-0-2-2018-10-13"]],"v0.0.3 - 2018-10-13":[[2,"v0-0-3-2018-10-13"]],"v0.0.4 - 2018-10-15":[[2,"v0-0-4-2018-10-15"]],"v0.0.5 - 2018-10-15":[[2,"v0-0-5-2018-10-15"]],"v0.0.6 - 2018-10-16":[[2,"v0-0-6-2018-10-16"]],"v0.0.7 - 2018-10-16":[[2,"v0-0-7-2018-10-16"]],"v0.0.8 - 2018-10-17":[[2,"v0-0-8-2018-10-17"]],"v0.0.9 - 2018-10-17":[[2,"v0-0-9-2018-10-17"]],"v0.1.0 - 2018-10-17":[[2,"v0-1-0-2018-10-17"]],"v0.1.1 - 2018-10-17":[[2,"v0-1-1-2018-10-17"]],"v0.1.2 - 2018-10-18":[[2,"v0-1-2-2018-10-18"]],"v0.1.3 - 2018-10-18":[[2,"v0-1-3-2018-10-18"]],"v0.1.4 - 2018-10-19":[[2,"v0-1-4-2018-10-19"]],"v0.1.5 - 2018-10-20":[[2,"v0-1-5-2018-10-20"]],"v0.1.6 - 2018-10-20":[[2,"v0-1-6-2018-10-20"]],"v0.2.0 - 2018-10-22":[[2,"v0-2-0-2018-10-22"]],"v0.2.1 - 2018-10-23":[[2,"v0-2-1-2018-10-23"]],"v0.2.2 - 2018-10-23":[[2,"v0-2-2-2018-10-23"]],"v0.2.3 - 2018-10-24":[[2,"v0-2-3-2018-10-24"]],"v0.3.0 - 2018-10-24":[[2,"v0-3-0-2018-10-24"]],"v0.3.1 - 2018-10-24":[[2,"v0-3-1-2018-10-24"]],"v0.3.2 - 2018-10-25":[[2,"v0-3-2-2018-10-25"]],"v0.3.3 - 2018-10-25":[[2,"v0-3-3-2018-10-25"]],"v1.0.0 - 2018-10-26":[[2,"v1-0-0-2018-10-26"]],"v1.0.1 - 2018-10-26":[[2,"v1-0-1-2018-10-26"]],"v1.0.2 - 2018-10-27":[[2,"v1-0-2-2018-10-27"]],"v1.0.3 - 2018-10-27":[[2,"v1-0-3-2018-10-27"]],"v1.0.4 - 2018-10-27":[[2,"v1-0-4-2018-10-27"]],"v1.0.5- 2018-10-27":[[2,"v1-0-5-2018-10-27"]],"v1.1.0 - 2018-10-27":[[2,"v1-1-0-2018-10-27"]],"v1.1.1 - 2018-10-29":[[2,"v1-1-1-2018-10-29"]],"v1.1.2 - 2018-11-11":[[2,"v1-1-2-2018-11-11"]],"v1.1.3 - 2019-01-12":[[2,"v1-1-3-2019-01-12"]],"v1.2.0 - 2018-12-29":[[2,"v1-2-0-2018-12-29"]],"v1.3.0 - 2019-02-22":[[2,"v1-3-0-2019-02-22"]],"v1.3.1 - 2019-04-28":[[2,"v1-3-1-2019-04-28"]],"v1.3.2 - 2019-08-15":[[2,"v1-3-2-2019-08-15"]],"v2.0.0 - 2019-09-19":[[2,"v2-0-0-2019-09-19"]],"v2.0.1 - 2019-09-20":[[2,"v2-0-1-2019-09-20"]],"v2.0.2 - 2019-09-20":[[2,"v2-0-2-2019-09-20"]],"v2.0.3 - 2019-09-20":[[2,"v2-0-3-2019-09-20"]],"v2.0.4 - 2019-11-19":[[2,"v2-0-4-2019-11-19"]],"v2.0.5 - 2019-12-15":[[2,"v2-0-5-2019-12-15"]],"v3.0.0 - 2026-03-22":[[2,"v3-0-0-2026-03-22"]],"v3.2.0 - 2026-03-22":[[2,"v3-2-0-2026-03-22"]],"v3.3.0 - 2026-03-22":[[2,"v3-3-0-2026-03-22"]],"v3.4.0 - 2026-03-22":[[2,"v3-4-0-2026-03-22"]],"v3.5.0 - 2026-03-24":[[2,"v3-5-0-2026-03-24"]]},"docnames":["api","backlog","changes","cli","deployment","guide-config","index","quickstart","sandbox","testing","tour","tutorial-auth","tutorial-flask","tutorial-middleware","tutorial-rest","tutorial-sqlalchemy","tutorial-websockets"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1},"filenames":["api.rst","backlog.md","changes.md","cli.rst","deployment.rst","guide-config.rst","index.rst","quickstart.rst","sandbox.md","testing.rst","tour.rst","tutorial-auth.rst","tutorial-flask.rst","tutorial-middleware.rst","tutorial-rest.rst","tutorial-sqlalchemy.rst","tutorial-websockets.rst"],"indexentries":{"accepts() (responder.request method)":[[0,"responder.Request.accepts",false]],"add_event_handler() (responder.api method)":[[0,"responder.API.add_event_handler",false]],"add_middleware() (responder.api method)":[[0,"responder.API.add_middleware",false]],"add_route() (responder.api method)":[[0,"responder.API.add_route",false]],"after_request() (responder.api method)":[[0,"responder.API.after_request",false]],"api (class in responder)":[[0,"responder.API",false]],"apparent_encoding (responder.request property)":[[0,"responder.Request.apparent_encoding",false]],"backgroundqueue (class in responder.background)":[[0,"responder.background.BackgroundQueue",false]],"before_request() (responder.api method)":[[0,"responder.API.before_request",false]],"check() (responder.ext.ratelimit.ratelimiter method)":[[0,"responder.ext.ratelimit.RateLimiter.check",false]],"client (responder.request property)":[[0,"responder.Request.client",false]],"content (responder.request property)":[[0,"responder.Request.content",false]],"cookies (responder.request property)":[[0,"responder.Request.cookies",false]],"encoding (responder.request property)":[[0,"responder.Request.encoding",false]],"exception_handler() (responder.api method)":[[0,"responder.API.exception_handler",false]],"file() (responder.response method)":[[0,"responder.Response.file",false]],"full_url (responder.request property)":[[0,"responder.Request.full_url",false]],"get() (responder.models.querydict method)":[[0,"responder.models.QueryDict.get",false]],"get_list() (responder.models.querydict method)":[[0,"responder.models.QueryDict.get_list",false]],"graphql() (responder.api method)":[[0,"responder.API.graphql",false]],"group() (responder.api method)":[[0,"responder.API.group",false]],"headers (responder.request property)":[[0,"responder.Request.headers",false]],"install() (responder.ext.ratelimit.ratelimiter method)":[[0,"responder.ext.ratelimit.RateLimiter.install",false]],"is_100() (in module responder.status_codes)":[[0,"responder.status_codes.is_100",false]],"is_200() (in module responder.status_codes)":[[0,"responder.status_codes.is_200",false]],"is_300() (in module responder.status_codes)":[[0,"responder.status_codes.is_300",false]],"is_400() (in module responder.status_codes)":[[0,"responder.status_codes.is_400",false]],"is_500() (in module responder.status_codes)":[[0,"responder.status_codes.is_500",false]],"is_json (responder.request property)":[[0,"responder.Request.is_json",false]],"is_secure (responder.request property)":[[0,"responder.Request.is_secure",false]],"items() (responder.models.querydict method)":[[0,"responder.models.QueryDict.items",false]],"items_list() (responder.models.querydict method)":[[0,"responder.models.QueryDict.items_list",false]],"media() (responder.request method)":[[0,"responder.Request.media",false]],"method (responder.request property)":[[0,"responder.Request.method",false]],"mimetype (responder.request property)":[[0,"responder.Request.mimetype",false]],"module":[[0,"module-responder",false]],"mount() (responder.api method)":[[0,"responder.API.mount",false]],"ok (responder.response property)":[[0,"responder.Response.ok",false]],"on_event() (responder.api method)":[[0,"responder.API.on_event",false]],"params (responder.request property)":[[0,"responder.Request.params",false]],"path_matches_route() (responder.api method)":[[0,"responder.API.path_matches_route",false]],"path_params (responder.request property)":[[0,"responder.Request.path_params",false]],"querydict (class in responder.models)":[[0,"responder.models.QueryDict",false]],"ratelimiter (class in responder.ext.ratelimit)":[[0,"responder.ext.ratelimit.RateLimiter",false]],"redirect() (responder.api method)":[[0,"responder.API.redirect",false]],"redirect() (responder.response method)":[[0,"responder.Response.redirect",false]],"request (class in responder)":[[0,"responder.Request",false]],"requests (responder.api property)":[[0,"responder.API.requests",false]],"responder":[[0,"module-responder",false]],"response (class in responder)":[[0,"responder.Response",false]],"route() (responder.api method)":[[0,"responder.API.route",false]],"routegroup (class in responder.api)":[[0,"responder.api.RouteGroup",false]],"run() (responder.api method)":[[0,"responder.API.run",false]],"run() (responder.background.backgroundqueue method)":[[0,"responder.background.BackgroundQueue.run",false]],"schema() (responder.api method)":[[0,"responder.API.schema",false]],"serve() (responder.api method)":[[0,"responder.API.serve",false]],"session (responder.request property)":[[0,"responder.Request.session",false]],"session() (responder.api method)":[[0,"responder.API.session",false]],"set_cookie() (responder.response method)":[[0,"responder.Response.set_cookie",false]],"sse() (responder.response method)":[[0,"responder.Response.sse",false]],"state (responder.request property)":[[0,"responder.Request.state",false]],"static_app (responder.api property)":[[0,"responder.API.static_app",false]],"status_code_safe (responder.response property)":[[0,"responder.Response.status_code_safe",false]],"stream() (responder.response method)":[[0,"responder.Response.stream",false]],"stream_file() (responder.response method)":[[0,"responder.Response.stream_file",false]],"task() (responder.background.backgroundqueue method)":[[0,"responder.background.BackgroundQueue.task",false]],"template() (responder.api method)":[[0,"responder.API.template",false]],"template_string() (responder.api method)":[[0,"responder.API.template_string",false]],"text (responder.request property)":[[0,"responder.Request.text",false]],"url (responder.request property)":[[0,"responder.Request.url",false]],"url_for() (responder.api method)":[[0,"responder.API.url_for",false]]},"objects":{"":[[0,0,0,"-","responder"]],"responder":[[0,1,1,"","API"],[0,1,1,"","Request"],[0,1,1,"","Response"]],"responder.API":[[0,2,1,"","add_event_handler"],[0,2,1,"","add_middleware"],[0,2,1,"","add_route"],[0,2,1,"","after_request"],[0,2,1,"","before_request"],[0,2,1,"","exception_handler"],[0,2,1,"","graphql"],[0,2,1,"","group"],[0,2,1,"","mount"],[0,2,1,"","on_event"],[0,2,1,"","path_matches_route"],[0,2,1,"","redirect"],[0,3,1,"","requests"],[0,2,1,"","route"],[0,2,1,"","run"],[0,2,1,"","schema"],[0,2,1,"","serve"],[0,2,1,"","session"],[0,3,1,"","static_app"],[0,2,1,"","template"],[0,2,1,"","template_string"],[0,2,1,"","url_for"]],"responder.Request":[[0,2,1,"","accepts"],[0,3,1,"","apparent_encoding"],[0,3,1,"","client"],[0,3,1,"","content"],[0,3,1,"","cookies"],[0,3,1,"","encoding"],[0,3,1,"","full_url"],[0,3,1,"","headers"],[0,3,1,"","is_json"],[0,3,1,"","is_secure"],[0,2,1,"","media"],[0,3,1,"","method"],[0,3,1,"","mimetype"],[0,3,1,"","params"],[0,3,1,"","path_params"],[0,3,1,"","session"],[0,3,1,"","state"],[0,3,1,"","text"],[0,3,1,"","url"]],"responder.Response":[[0,2,1,"","file"],[0,3,1,"","ok"],[0,2,1,"","redirect"],[0,2,1,"","set_cookie"],[0,2,1,"","sse"],[0,3,1,"","status_code_safe"],[0,2,1,"","stream"],[0,2,1,"","stream_file"]],"responder.api":[[0,1,1,"","RouteGroup"]],"responder.background":[[0,1,1,"","BackgroundQueue"]],"responder.background.BackgroundQueue":[[0,2,1,"","run"],[0,2,1,"","task"]],"responder.ext.ratelimit":[[0,1,1,"","RateLimiter"]],"responder.ext.ratelimit.RateLimiter":[[0,2,1,"","check"],[0,2,1,"","install"]],"responder.models":[[0,1,1,"","QueryDict"]],"responder.models.QueryDict":[[0,2,1,"","get"],[0,2,1,"","get_list"],[0,2,1,"","items"],[0,2,1,"","items_list"]],"responder.status_codes":[[0,4,1,"","is_100"],[0,4,1,"","is_200"],[0,4,1,"","is_300"],[0,4,1,"","is_400"],[0,4,1,"","is_500"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","property","Python property"],"4":["py","function","Python function"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:method","3":"py:property","4":"py:function"},"terms":{"":[0,2,3,4,5,6,7,9,10,11,12,13,15,16],"0":[3,4,5,7,10,14,15],"00":0,"01":0,"0441172719":14,"1":[0,3,4,5,7,10,11,12,14,16],"10":[0,6,7,10],"100":[0,2,10],"127":[3,4,5],"13":4,"14":2,"150mb":4,"1965":14,"2":[4,7,9,10,14,15,16],"200":[0,7,9,10,14],"201":[7,9,12,14,15],"2026":0,"204":[14,15],"24":11,"2xx":0,"3":[4,6,7,9,10,14,16],"3000":5,"301":[0,7],"308":2,"32":5,"3600":[0,10],"3f":13,"4":[4,7],"40":2,"400":[0,2,9,10,14],"401":[0,10,11],"404":[0,7,12,14,15],"41d4":7,"422":[2,9,10,14],"429":[0,10],"446655440000":7,"500":[2,7,9,10,13,14],"5000":10,"5042":[3,4,7,11,14,16],"550e8400":7,"561":2,"60":[0,2,10],"600":[0,10],"7":11,"8":0,"80":4,"8000":[4,7],"8192":0,"9":9,"978":14,"99":9,"A":[0,4,5,6,7,10,13,16],"And":[5,6,7],"As":[0,10],"But":[7,9,10],"By":[3,7,9,10,13,14],"For":[0,3,4,5,7,9,10,11,14,15],"If":[0,3,5,6,7,9,10,12,15],"In":[0,5,6,7,10,11,12,15,16],"It":[0,3,6,9,10,13],"No":[6,9,10,12,14],"Not":7,"On":[5,10],"One":[6,7,9],"Or":[0,5],"That":[4,6,7,9],"The":[2,3,4,5,7,9,10,11,13,14,15,16],"There":[9,10],"These":7,"To":[14,15],"Will":0,"With":[0,5],"__init__":11,"__main__":[4,6,7,9,14,15],"__name__":[4,6,7,9,10,12,14,15],"__tablename__":15,"_route_for":2,"a2wsgi":2,"a716":7,"abc":14,"abc123":[0,9,10,11],"abil":2,"abl":0,"abort":12,"about":[4,7,9,12],"abov":[6,11],"abstract":15,"accept":[0,2,7,9,10,16],"access":[0,2,4,10,11,15],"acm":3,"acquir":8,"across":[2,4,10,15],"activ":[8,16],"actual":[0,7,10],"ad":[0,1,6,10],"adapt":10,"add":[0,1,2,5,7,11,13,14,15,16],"add_event_handl":0,"add_head":[10,13],"add_middlewar":[0,13],"add_request_id":0,"add_rout":[0,10],"add_tim":[9,10],"add_vers":9,"addeventlisten":16,"addit":[0,13],"address":[0,5,7,10],"adher":2,"admin":11,"affect":10,"after":[0,6,7,11,15,16],"after_request":[0,1,2,9,10,13],"ag":[0,10],"again":11,"against":[0,4,10,11],"agre":7,"ahead":2,"ai":10,"aiosqlit":15,"alemb":15,"algorithm":11,"alias":2,"alic":10,"all":[0,2,3,4,6,8,9,10,12,13,15,16],"alloc":9,"allow":[6,10],"allow_credenti":[0,10],"allow_head":[0,10],"allow_method":[0,5,10],"allow_origin":[0,5,10],"allow_origin_regex":0,"allowed_host":[0,5,10],"alongsid":10,"alpin":4,"alreadi":[0,9,10],"also":[0,2,3,7,9,10],"altern":[0,10],"alwai":[4,5,6,7,10],"an":[0,3,5,7,10,12,13,14,15,16],"analysi":10,"angle_bracket":12,"angular":10,"ani":[0,3,4,5,6,7,9,10,11,13,14,15,16],"annot":[2,6,7,10],"annual":[7,10],"answer":[10,16],"anyon":6,"anyth":7,"anywher":[4,10],"api":[2,3,4,5,6,7,10,13,15,16],"api_kei":11,"api_v1":12,"apispec":2,"app":[0,2,3,4,5,6,7,9,12,14,15,16],"appar":0,"apparent_encod":0,"appear":10,"appendchild":16,"appli":[0,13],"applic":[0,2,3,4,5,7,9,10,11,13,14,15],"approach":[5,10,11,12],"appropri":[10,15],"ar":[0,2,3,4,6,7,9,10,11,12,13,15,16],"architectur":10,"aren":[7,13],"arg":[0,12],"argument":[0,2,7,12,13],"around":[0,6],"arriv":[7,12],"asgi":[0,2,4,6,7,10,12,13],"ask":[6,10,16],"assert":[9,16],"asset":[0,4,6,10],"assign":14,"associ":0,"async":[0,1,2,4,6,7,9,10,11,12,13,14,15,16],"async_sess":15,"async_sessionmak":15,"asynccontextmanag":[10,15],"asynchron":[2,4],"asyncio":[2,15],"asyncpg":15,"attach":10,"attack":[4,5,10],"attribut":[0,3,15],"audio":16,"auth":[2,6,10,13],"auth_check":10,"auth_guard":11,"authent":[6,7,10,13,16],"autherror":11,"author":[0,7,8,10,11,13,14,15],"auto":[2,10,16],"auto_escap":0,"autobuild":8,"autoincr":15,"automat":[0,2,4,5,6,7,9,10,11,12,13,14,15],"avail":[0,7],"avoid":[9,10],"aw":4,"await":[0,2,7,9,10,11,12,13,14,15,16],"azur":[3,4],"b":[7,9,13,15,16],"back":[0,7,10,15,16],"background":[2,6],"backgroundqueu":0,"backlog":6,"bad":[9,10,14],"balanc":4,"bandwidth":10,"bar":10,"bare":2,"base":[0,2,6,11,13,15],"base_url":0,"basehttpmiddlewar":13,"basemodel":[0,9,10,14,15],"basic":7,"batteri":6,"battl":6,"bearer":6,"becaus":[0,6,7,11,12,14],"becom":[0,15],"been":0,"befor":[0,2,6,7,11,13,15],"before_request":[0,1,2,9,10,11,12,13,16],"begin":15,"behavior":[5,13],"behind":[4,10],"being":0,"best":6,"better":6,"between":13,"bidirect":[10,16],"big":6,"biggest":12,"bin":8,"binari":[7,10,16],"bind":[0,4,5,7],"blob":3,"block":[0,7,9,10,12,16],"blueprint":6,"bodi":[0,2,7,9,10,12,14,16],"boilerpl":6,"book":[6,15],"book_id":[14,15],"bookin":[14,15],"bookout":15,"books_db":14,"bool":5,"born":6,"both":[6,7,10,12,16],"bottom":14,"box":13,"bp":12,"break":[2,9],"bring":6,"broad":2,"broadcast":16,"broke":[7,9],"broker":7,"browser":[7,8,10,11,14,16],"bucket":[0,10],"buffer":[0,7],"bufix":2,"bug":[2,9],"bugfix":2,"build":[2,4,6,7,8,10,11,15,16],"builder":15,"built":[2,4,6,7,9,10,16],"bump":2,"bypass":4,"byte":[0,2,6,7,13,16],"c":[5,16],"cach":[7,9,10],"caddi":4,"call":[2,3,7,9,10,13,14,16],"call_next":13,"callabl":0,"came":7,"can":[0,2,3,4,5,6,7,9,10,11,12,13,14,15,16],"carri":7,"case":[0,6,7,13],"cat":10,"catalog":14,"catch":[10,11,13],"categori":0,"cd":8,"ceas":2,"celeri":7,"cell":10,"central":[0,7],"certain":0,"certif":4,"chang":[0,15],"changelog":6,"channel":[10,16],"chardet":0,"chat":[2,6,10],"check":[0,8,9,10,11,13,16],"check_api_kei":11,"check_auth":0,"check_exist":[0,10,14,15],"choic":[7,10],"choos":10,"chunk":[0,10],"chunk_siz":0,"ci":2,"circuit":[0,1,2,6,10],"class":[2,6,7,9,11,13,14,15],"clean":[6,10,14],"cleaner":[10,11],"cleanli":5,"cleanup":[2,10],"clear":11,"cli":2,"click":6,"client":[0,2,6,7,9,10,11,14],"clone":8,"close":[9,10,15,16],"close_database_connection_pool":0,"cloud":[3,5,6,7],"cmd":4,"code":[2,3,4,5,6,7,8,9,10,11,14,15,16],"codebas":2,"collabor":[10,16],"colon":3,"column":15,"com":[0,3,5,7,8,10],"combin":7,"come":[7,10,12],"command":[4,6],"commit":[5,15],"common":[3,4,5,7,10,11,12,13,14],"commonli":7,"commun":[10,11],"compact":10,"compat":[0,2],"complement":[1,10],"complet":[7,10,14,16],"complex":[13,15],"compon":13,"compos":15,"comprehens":2,"compress":[6,7,13],"compromis":5,"comput":7,"concept":[2,10,12],"concern":[7,13],"concurr":[0,4],"condit":[9,10],"config":[5,15],"configur":[0,2,4,6,7,9,10,13],"conflict":2,"confus":9,"conn":15,"connect":[0,4,7,9,10,15,16],"consid":[1,7,15],"consist":[7,10],"consol":[10,15],"const":[10,16],"constructor":[0,13],"consum":10,"contact":0,"contain":[0,4,7],"container":4,"content":[0,2,6,7,9,10,14],"content_typ":[0,9,10],"context":[2,6,9,10,15,16],"contextlib":[10,15],"continu":7,"contract":9,"control":[0,4,5,7,10,11,15],"conveni":[0,5,15],"convent":[4,14],"convert":[2,7],"convertor":[2,6,12],"cooki":[0,2,5,6,7,11,12,13],"copi":4,"cor":[0,2,5,6,9,13],"core":[2,4],"coroutin":0,"correctli":4,"correspond":15,"cors_en":5,"cors_origin":5,"cors_param":[0,5,10],"corsmiddlewar":13,"count":2,"cover":[5,11,13],"coverag":2,"cpu":[0,4,7],"crash":2,"creat":[0,6,8,9,10,11,12,15],"create_al":15,"create_asgi_app":10,"create_async_engin":15,"create_book":[14,15],"create_connect":16,"create_item":[0,10,12],"create_pet":10,"create_token":11,"createel":16,"creation":15,"credenti":11,"cross":[10,13],"crud":[6,7,14],"css":10,"csv":10,"curl":[3,7,11,14],"curly_brac":12,"custom":[0,2,6,7,9,14,16],"cut":13,"cycl":7,"d":[7,9,14],"dashboard":[5,10,11,16],"data":[0,2,5,6,7,9,10,11,12,14,15],"databas":[5,6,7,9,10,11,14],"database_url":[5,15],"date":0,"datetim":11,"db":[5,15],"debug":[0,2,6,10,12],"decim":7,"declar":[2,7],"declarativebas":15,"decod":[2,10,11],"decor":[0,2,7,10],"deep":6,"def":[0,6,7,9,10,11,12,13,14,15,16],"def456":11,"default":[0,1,2,3,5,7,9,10,15],"default_valu":[0,10],"defend":10,"defin":[0,6,7,10,11],"definit":0,"del":14,"delet":[5,6,7,10,15],"delete_book":[14,15],"deliber":7,"demo":3,"denpend":2,"dep":2,"depend":[2,4,9,13],"deploi":[4,6],"deploy":[2,6],"depth":10,"describ":10,"descript":[0,10],"design":[7,10,14],"detail":[4,5,10,14],"detect":[0,6,10],"dev":[2,5],"develop":[3,4,5,10,15],"devic":10,"dict":[6,7,10,11,14,15],"dictionari":0,"differ":[0,3,5,6,9,10,15],"digit":7,"direct":[0,2,10],"directli":[3,6,7,9,14,15],"directori":[0,7,10],"disabl":[9,15],"discard":16,"disconnect":16,"disk":[0,7,10],"dispatch":[2,10,13],"dispos":15,"distribut":[4,10],"div":16,"django":[6,10],"do":[4,5,7,10],"doc":[2,8,9,10,11,14],"docker":[5,6],"dockerfil":4,"docs_rout":[0,10,14],"docstr":[2,10],"doctyp":16,"document":[0,2,4,6,8,14,16],"doe":15,"doesn":[0,10,14,15],"domain":[0,5,10],"don":[5,7,9,10,11,12,15],"done":4,"dot":3,"dotenv":5,"doubl":14,"down":[10,15],"download":10,"dramat":2,"driver":15,"drop":[2,16],"dump":2,"dune":14,"duplex":10,"duplic":10,"durat":13,"dure":[3,4,9,15],"duti":14,"dynam":7,"e":[0,16],"e29b":7,"each":[0,4,9,10,15],"easi":[3,5,7],"echo":[6,7,15],"ecosystem":[6,7],"edit":8,"editor":[10,16],"effect":[9,14],"effici":4,"either":[0,16],"element":[0,10],"els":[7,10,11,12,15],"email":7,"emb":10,"empti":[0,14],"enabl":[2,10,13,14],"enable_async":7,"enable_hst":[0,10,13],"encod":[0,2,11],"encrypt":11,"end":[7,14],"endpoint":[0,2,6,9,10,11,12,14],"enforc":10,"engin":[7,15],"enough":[4,13],"ensur":[10,14,15,16],"enter":[9,16],"entir":[0,10,11,13,14],"entri":14,"env":[4,6],"environ":[0,3,4,6,7],"eol":2,"equival":12,"error":[0,2,5,6,15],"errorhandl":12,"escap":0,"essenti":10,"establish":16,"etc":[7,9,10],"even":[3,4,10,16],"event":[0,2,6,7,12,16],"event_typ":0,"eventsourc":10,"ever":[5,6],"everi":[0,4,5,6,7,9,10,11,13,14,15],"everyth":[0,2,4,7,10,12,14,15,16],"everywher":[3,5],"evolv":15,"exact":2,"exactli":[9,10],"exampl":[0,2,3,5,7,10,11],"exc":[0,9,10,11,14],"exceed":[0,10],"except":[0,2,6,9,10,13,16],"exception_cl":0,"exception_handl":[0,2,9,10,11,12,14],"exceptionmiddlewar":13,"execut":15,"exist":[0,2,6,12,13],"exit":[9,10,16],"exp":11,"expand":2,"expect":7,"expir":[0,10,11],"expire_on_commit":15,"explain":10,"explan":0,"explicit":[7,10,12],"explicitli":[10,12],"explor":[1,7,10],"export":[5,10],"expos":[4,5],"expose_head":0,"express":[6,7],"ext":[0,2,10,15],"extens":[2,7],"extern":7,"extra":[2,4,10],"extract":0,"extrem":7,"f":[0,6,7,9,10,11,13,14,16],"factori":15,"fail":[9,10,15],"failur":[2,9],"falcon":[6,10],"fall":0,"fals":[0,5,9,10,14,15],"familiar":[6,12],"fast":[4,6,7,9],"fastapi":6,"faster":10,"featur":[0,6,7],"feed":10,"feel":6,"fetch":3,"few":12,"fido":10,"field":[0,2,9,10,14],"figur":7,"file":[0,2,4,6,7,14,15,16],"filenam":[0,9],"filepath":7,"filesystem":[2,3],"fill":7,"filter":[6,7],"final":16,"find":[3,10,12],"fine":[4,10,15],"fire":[0,9],"first":[0,10,11,13,14,15],"fit":6,"fix":8,"fixtur":6,"flag":[4,10,15],"flask":[2,6,10],"flask_app":[10,12],"flatten":2,"float":[0,7,9],"flow":[11,13],"fly":4,"fmt":2,"follow":7,"font":10,"forg":[5,10],"forget":0,"form":[0,7,11,12],"format":[0,2,6,7,8,10,11],"formerli":10,"forward":[4,10],"found":[2,7,14,15],"foundat":10,"fragment":3,"framework":[6,10],"franca":7,"frank":14,"free":2,"freeli":16,"fresh":9,"from":[0,2,4,5,6,7,9,10,11,13,14,15,16],"from_attribut":15,"front":4,"frontend":[6,10],"fsspec":3,"full":[0,2,3,7,10],"full_url":[0,7,10],"fulli":7,"fun":6,"func":0,"function":[0,7,10,12,13],"futur":[0,2,6],"g":0,"game":[10,16],"gatewai":4,"gener":[0,2,5,6,9,10,13,14],"get":[0,2,5,7,10,11,15],"get_book":[14,15],"get_list":0,"get_m":11,"get_us":[0,10,12],"getelementbyid":16,"getenv":5,"git":[5,8],"github":[2,3,8],"gitignor":5,"give":[0,9,10,13,15],"given":[0,9],"global":[12,14],"gmt":0,"go":[7,12],"goe":[10,12],"good":[4,6,10],"googl":[3,4],"grace":4,"grade":7,"gradual":[6,10],"graduat":13,"grain":15,"graphen":[0,2,6,10],"graphiql":[2,6,10],"graphql":[0,2,6],"great":[3,6,10],"greet":[6,7,10],"greet_world":6,"greetingresourc":10,"group":[2,6],"grow":10,"guard":[6,11],"guid":[2,5,7,11,12,15],"guido":7,"gzip":[6,7],"gzipmiddlewar":13,"h":[7,11,14],"h1":[7,11],"ha":[7,9,12,14,16],"half":7,"halv":10,"hand":0,"handl":[0,2,4,5,6,7,11,16],"handle_auth_error":11,"handle_value_error":[0,10,14],"handler":[0,6,9,10,11,13,14],"handshak":16,"happen":[6,7],"hard":9,"hasn":0,"have":[0,2,3,7,9,12,13,14],"hdf":3,"head":3,"header":[0,2,4,5,6,7,10,11,12,13,16],"health":11,"heavi":7,"hello":[0,3,6,9,10,12,16],"hello_html":7,"hello_json":7,"hello_to":7,"hello_world":7,"helloworld":3,"help":[0,15],"helper":[6,11],"herbert":14,"here":[4,5,7,10,12,16],"high":[4,10],"hold":[0,6,7],"home":6,"homepag":2,"honor":[4,7],"hood":10,"hook":[0,1,2,6,7,11],"host":[0,2,4,6,7,13],"hostnam":10,"hour":[10,11],"how":[5,6,7,10,11,12,14,15],"hs256":11,"hst":6,"html":[0,2,6,7,10,11,12],"http":[0,2,3,4,5,6,7,8,9,10,11,14,16],"httponli":[0,10],"httpsredirect":0,"httpsredirectmiddlewar":[0,4,13],"httpx":[2,9],"i":[0,2,3,4,5,6,7,9,10,11,12,13,14,15,16],"id":[0,2,6,7,12,13,14,15,16],"idea":12,"idempot":14,"ident":12,"identifi":10,"imag":[4,7,10,16],"immedi":[0,6,7,10],"immut":2,"imperson":5,"implement":9,"import":[0,2,3,5,6,7,9,10,11,12,13,14,15,16],"improv":2,"inaccess":0,"includ":[3,4,6,7,8,9,10,11,14],"incom":[0,7,14],"incredibli":10,"independ":4,"index":[0,7,10,16],"individu":10,"industri":10,"info":[0,2,10],"inform":[0,14],"infrastructur":[4,6],"inherit":[0,10],"initi":[0,9],"inject":10,"innermost":13,"input":[2,9,10,14,16],"insensit":[0,6,7],"insid":13,"inspect":[0,2],"instal":[0,2,3,4,5,8,10,11,16],"instanc":[0,4,6,7,9],"instant":7,"instead":[0,7,9,10,13,14,15,16],"int":[0,2,7,10,11,12,14,15],"integ":[0,7,14,15],"integr":[13,14,15],"intens":7,"intent":6,"intention":10,"interact":[2,10,14],"interfac":[2,4,6,7,12],"intern":[9,10,13],"invalid":[5,9,10,11],"invalidtokenerror":11,"involv":0,"io":4,"iot":10,"ip":[0,7,10],"is_100":0,"is_200":0,"is_300":0,"is_400":0,"is_500":0,"is_class_bas":2,"is_json":[0,2,7],"is_secur":[0,7],"isbn":[14,15],"iscoroutinefunct":2,"isn":[7,10,12],"issu":[2,11],"item":[0,9,10,12,15],"itemin":0,"itemout":0,"items_list":0,"iter":16,"its":[0,2,4,14,15],"itself":11,"j":10,"jan":0,"javascript":[0,3,10],"jinja2":[0,7,12],"jpeg":10,"jpg":10,"json":[0,3,6,7,10,11,14,16],"jsonifi":12,"jump":7,"just":[4,9,10,13,15,16],"jwt":11,"keep":[2,5,7,9,10,13,15,16],"kei":[0,6,7,9,10,12,15,16],"kennethreitz":[3,8],"keypress":16,"keyword":[0,7,12,13],"know":[5,7],"known":[0,11],"kwarg":0,"languag":10,"larg":[0,2,10],"larger":[5,9,13],"last":[0,13],"later":[7,9],"launch":[4,6],"layer":13,"lazi":2,"lazili":0,"lead":9,"learn":10,"legaci":12,"less":10,"let":[3,4,7,10,14,15],"level":[4,13],"librari":[9,10,16],"licens":0,"lifecycl":16,"lifespan":[0,2,6,14],"lift":7,"lightn":4,"lightweight":7,"like":[4,7,9,10,11,13,14,16],"limit":[1,2,4,6,13,15,16],"line":[6,7],"liner":2,"lingua":7,"list":[0,6,7,9,10,15],"list_book":[14,15],"list_item":10,"list_pet":10,"list_us":[0,10,12],"list_users_v2":10,"live":[10,16],"ll":[6,7,10,12,14,15],"load":[0,2,3,4,5,7,10],"load_dotenv":5,"local":[3,5,6,12],"localhost":[5,7,11,14,15,16],"locat":[0,7,11,12],"lock":2,"log":[4,10,11,13],"log_level":2,"log_request":13,"log_respons":10,"logic":[6,7,10],"login":[10,11],"logout":11,"long":7,"look":[3,6,7],"loop":[7,12,16],"lose":[2,15],"lower":[0,5],"lowercas":7,"machin":10,"made":[0,6],"magic":12,"mai":4,"main":3,"make":[4,5,7,9,10,11,12],"malici":10,"manag":[2,5,6,9,10,11,13,15,16],"mani":[0,4,7,10],"manual":0,"map":[2,7,10,12,15],"mapper":15,"marimo":[2,10],"mark":[2,10],"marker":2,"marshmallow":[0,2,10],"match":[0,5,7,10,14],"matter":10,"max_ag":[0,10],"maximum":0,"me":11,"mean":[4,7,12],"mechan":10,"media":[0,2,6,7,9,10,11,12,14,15],"memori":[0,2,6,7,10],"messag":[0,7,10,11,16],"messagepack":[2,6],"metadata":[0,7,15],"method":[0,6,7,9,11,12,13,14,15,16],"microservic":10,"middelwar":0,"middlewar":[0,1,2,6,7,10],"middleware_cl":0,"middleware_config":0,"might":7,"migrat":[2,6,10,15],"mime":0,"mimetyp":[0,7,10],"min":[0,10],"mind":13,"minim":[4,16],"minimum":2,"minor":2,"miss":[2,9,10,11],"mix":10,"ml":10,"mode":[0,6,8],"model":[0,2,6,9,10],"model_dump":15,"model_valid":15,"modern":[4,10,11,12,15],"modifi":[0,10,13,14,15],"modul":[0,2,6,7,10],"more":[0,3,4,7,10,11,12,13,14,16],"most":[0,3,4,5,7,9,10,11,13,15],"mount":[0,2,6,12],"move":[2,7,10,12],"msgpack":[2,10],"much":[7,10],"multi":0,"multipart":[2,7],"multipl":[2,4,10,14],"multiplay":[10,16],"must":[0,7,10,11,14,16],"mutabl":6,"mutat":[0,7,12],"my_templ":7,"myapi":4,"myapp":3,"mydb":15,"mysql":15,"n":[0,7],"name":[0,5,6,7,9,10,12],"namespac":2,"narrow":2,"nativ":12,"natur":[9,15],"nearli":12,"need":[4,5,6,7,9,10,11,12,13,15,16],"negoti":[0,6,7,9,10],"nervou":7,"network":9,"never":[5,10,11,14],"new":[0,7,9,10,12,14,16],"new_endpoint":12,"next":[6,13],"next_id":14,"nginx":4,"non":7,"none":[0,2,11,14,15],"normal":[10,16],"notabl":2,"notasecret":0,"note":[7,10,12,14],"notebook":[2,10],"notic":7,"notif":10,"now":[2,7,10,11,15,16],"npm":3,"nullabl":15,"number":[0,7],"o":[0,5,7,12],"object":[0,2,7,10,12,13,15,16],"objecttyp":[0,10],"obviou":9,"off":[5,7],"offload":4,"offset":15,"often":[3,7,10],"ok":[0,7,9,14],"old":12,"on_delet":10,"on_ev":[0,9,10],"on_get":[6,10],"on_post":[6,10],"on_put":10,"on_request":[6,10],"on_startup":9,"onc":[10,12,14],"one":[0,2,5,6,7,10,12,15],"ones":[6,7,10],"onion":13,"onli":[0,5,7,10,12,14],"onmessag":[10,16],"open":[2,7,8,15],"open_database_connection_pool":0,"openapi":[0,2,6,14],"openapi_rout":0,"openapi_them":0,"oper":[7,10,12,14],"opt":10,"option":[0,2,4,6,7,13],"option1":13,"option2":13,"order":[0,6],"order_bi":15,"organ":[0,5,9,10,12],"origin":10,"orm":15,"other":[0,2,6,7,15],"otherwis":[0,10],"our":14,"out":[5,6,7,13],"outermost":13,"outgo":7,"output":14,"outsid":13,"over":[0,6,7,10,12,15],"overal":2,"overhead":9,"overrid":[0,10],"overwhelm":10,"own":[4,10,15],"p":[4,11,16],"pace":10,"packag":[2,3,4],"page":[0,2,5,7,10,11,16],"pagin":7,"painless":9,"pair":0,"param":[0,2,6,7,12],"paramet":[0,6,9,10,14],"parameter":0,"pars":[0,2,7,9,10],"parser":2,"part":[2,6,7,10],"parti":6,"pass":[0,7,9,12,13,15,16],"passion":6,"password":11,"patch":[7,10],"path":[0,2,3,6,7,9,10,11,13],"path_matches_rout":0,"path_param":[0,2,7],"pattern":[4,6,7,10,11,12,14,15],"payload":11,"pdf":[7,9,10],"pep":2,"per":[0,4,9,10],"perfect":10,"period":[0,2,10],"perman":7,"permit":10,"persist":[0,10,16],"person":6,"pet":[0,10],"petin":10,"petout":10,"petschema":[0,10],"photo":10,"piec":10,"pin":2,"pip":[2,3,4,5,6,8,11,15,16],"place":[5,10],"placehold":[7,16],"plain":[0,7,10,16],"platform":[2,5,6,7],"pleasant":6,"plot":10,"plu":15,"plugin":2,"poethepoet":2,"point":[3,4,14],"polici":10,"pool":[0,6,7,10,12,15],"popular":[7,10,15],"port":[0,4,5,7,9],"portion":0,"possibl":7,"post":[0,5,7,9,10,11,12,14,15],"postgresql":6,"potenti":2,"power":[6,9,10,13,15,16],"practic":10,"prefer":10,"prefix":[0,2,10],"present":7,"prevent":[5,10],"price":[0,9],"primari":0,"primary_kei":15,"print":[0,5,10,13,15,16],"privat":10,"proce":16,"process":[4,6,7,9,10,13],"process_data":7,"prod":5,"produc":[0,7],"product":[2,3,4,5,6,7,9,10,11,15],"profil":10,"programmat":10,"progress":10,"project":[2,3,8],"propag":9,"proper":[7,11,15],"properli":[2,5,9,15],"properti":[0,2,7,9],"prose":2,"protect":[4,11],"proto":4,"protocol":[3,7,9,10,16],"prototyp":[2,3,6],"provid":0,"proxi":6,"public":[0,6,10],"public_path":11,"push":[4,6,10],"put":[6,10,14,15],"py":[2,3,4,5,7,9,10,14,15],"pydant":[0,2,9,10,14,15],"pyjwt":11,"pypi":2,"pyproject":2,"pytest":[6,8,9],"python":[0,2,3,4,5,6,7,10,14,15,16],"pythonpath":3,"q":[7,12],"queri":[2,6,7,10,15,16],"query_str":0,"querydict":0,"queue":[6,7],"quick":[0,3,6],"r":[7,9],"race":9,"railwai":4,"rais":[0,2,9,10,11],"raise_server_except":9,"random":[0,5],"rang":[0,7,10],"rapidoc":[0,10],"rare":7,"rate":[1,2,4,6,13],"rate_limit":0,"ratelimit":[0,2,10,13],"rather":9,"raw":[0,3,6,7,10,13,15,16],"re":[0,4,7,9,10,12,13,14,16],"reach":[11,13],"react":[2,10],"reactiv":10,"read":[0,2,5,6,10,11,12,14,15],"readabl":10,"readi":[4,5,6,7],"real":[2,5,10,11,14,15],"realli":[9,10],"receiv":[0,6,7,9,10,11,13,16],"receive_byt":[10,16],"receive_incom":7,"receive_json":[10,16],"receive_text":[9,10,16],"recommend":10,"reconnect":10,"recv":16,"redirect":[0,2,7,11,12],"redoc":[0,10],"reduc":2,"ref":3,"refactor":[2,9],"refer":[2,6,9],"refresh":15,"refus":10,"regist":[0,9,10,11],"register_blueprint":12,"reject":[9,10],"relat":[0,10,15],"releas":8,"reliabl":9,"remain":10,"rememb":11,"remov":[10,12,14,16],"renam":9,"render":[0,1,4,6,10],"render_async":7,"render_templ":12,"replac":[2,7,10,14],"report":[7,9,10],"repres":0,"represent":0,"reproduc":2,"req":[0,2,6,7,9,10,11,12,13,14,15,16],"request":[2,3,4,6,11,12,13,14,15],"request_id":[0,2,10,13],"request_model":[0,2,9,10,14,15],"requir":[0,2,9,10],"research":6,"resolv":[2,10],"resolve_hello":[0,10],"resourc":[7,10,14],"resp":[0,2,6,7,9,10,11,12,13,14,15,16],"respect":3,"respond":[0,2,3,4,5,7,8,9,10,11,12,13,14,15,16],"respons":[2,6,9,10,12,13,14,15,16],"response_model":[0,2,10,14,15],"rest":[2,4,6,7,10],"restrict":10,"result":[0,2,7,10,15],"resum":2,"resume_incomplet":2,"retri":[0,10],"retriev":[0,10,14],"return":[0,2,6,7,9,10,11,12,13,14,15],"reusabl":11,"revers":[0,6],"rework":2,"rewrit":2,"rewrot":2,"rfc3986":2,"right":[6,7,10,12,13],"roll":15,"room":6,"root":[2,10],"rotat":5,"rout":[2,6,9,13,14,15,16],"routegroup":0,"router":2,"rst":2,"ruff":[2,8],"rule":5,"run":[0,2,3,6,8,9,10,12,13,16],"run_sync":15,"runner":[2,4],"runtimeerror":0,"s3":3,"safe":[2,14],"sai":7,"said":4,"same":[3,4,6,7,10,12,14,15],"sandbox":6,"save":[7,16],"scalar":15,"scale":6,"schema":[0,2,6,10,11,14,15],"scope":[0,10,13],"scratch":[6,14],"script":16,"search":[0,2,7,10],"second":0,"secret":[6,10,11],"secret_kei":[0,5,10,11],"section":10,"secur":[0,10,13],"see":[0,4,5,7,9,10,13,14,15],"select":[0,2,15],"self":[0,10,11,13],"semant":2,"send":[0,2,6,9,10,11,14,16],"send_byt":[10,16],"send_email":0,"send_json":[10,16],"send_text":[9,10,16],"sensit":11,"sent":[0,2,6,7,13],"separ":[7,9,14],"sequenti":2,"serial":[0,2,7,10,16],"serializ":7,"serv":[0,2,3,4,5,6,7,9,14,16],"server":[0,2,3,4,5,6,9,11,13,14,15],"servererrormiddlewar":13,"servestat":2,"servic":[0,3,6,9,10,14],"session":[0,2,5,6,7,9,12,13,15],"session_id":10,"sessionmiddlewar":13,"set":[0,2,4,5,6,7,8,9,10,11,15,16],"set_cooki":[0,2,10],"set_text":0,"setattr":15,"setup":[2,5,6,9],"sever":[10,13],"sftp":3,"share":[0,3,7,9,10,15],"shell":5,"short":[0,1,2,6,10],"shorthand":0,"should":[5,14,15],"shouldn":0,"show":[2,10,12,15,16],"shut":[10,15],"shutdown":[0,4,6,9,10],"shutdwown":2,"sibl":6,"side":[7,10,11,16],"sign":[0,5,6,7,10,11,13],"signatur":[7,10,12],"signup":11,"simpl":[3,9,10,11,13,14,16],"simplecooki":0,"simpler":[7,10,11,13],"simplest":[5,7,11,13,16],"simpli":11,"simplic":[6,15],"simul":7,"sinc":[7,9],"singl":[0,2,3,6,7,10,12,15],"sit":13,"size":[0,15],"sk":11,"skip":[0,6,10],"slash":7,"sleep":[7,9],"slim":4,"slow":7,"slowlori":4,"slug":7,"small":[4,6,9,10],"smaller":4,"so":[9,10,12,13,14,15],"solv":10,"some":[4,5,10],"some_packag":13,"somemiddlewar":13,"someon":[5,7,10,16],"someth":[6,7,9,10],"sometim":[7,10],"somewher":7,"sourc":[0,5,8,10],"spawn":4,"spec":[7,10],"special":[6,10],"specif":[0,2,5,9,10,13,14],"specifi":3,"sphinx":8,"spin":7,"split":5,"sprawl":6,"sql":15,"sqlalchemi":[2,6,7,14],"sqlite":[5,15],"sse":[0,2,6],"ssl":4,"stabil":2,"stack":13,"stai":[12,15],"standard":[3,4,10,11,14],"starlett":[0,2,6,9,16],"start":[0,3,4,6,10,13,14,15],"startswith":11,"startup":[0,2,6,9,10],"state":[0,2,9,10,11],"statement":6,"static":[0,2,4,6,7,16],"static_app":0,"static_dir":[0,10],"static_rout":[0,2,10],"staticfil":0,"statu":[2,6,7,9,10,14],"status_cod":[0,6,7,9,10,11,12,13,14,15],"status_code_saf":0,"stderr":0,"stdlib":2,"still":[10,12],"stop":10,"storag":[3,6],"store":[0,5,10,11,14],"str":[0,7,9,10,11,14,15],"straightforward":10,"stranger":[0,10],"stream":[0,2,10],"stream_data":0,"stream_fil":[0,2,10],"strict":10,"string":[0,6,7,10,15,16],"strip":[2,10,11],"structur":10,"style":10,"stylesheet":10,"sub":11,"subclass":0,"subcommand":3,"subject":0,"submiss":0,"submit":0,"subrout":[6,10,12],"subsequ":[10,11],"subtl":2,"success":[0,7,14],"successfulli":14,"successor":4,"suit":9,"suppli":2,"support":[0,1,2,3,4,6,7,12,15,16],"swagger":[6,10,14],"swagger_ui":[0,10],"switch":[2,15,16],"sync":[2,6,7,12],"synchron":[0,12],"syntax":[2,6,7,12],"system":[3,7,10],"t":[0,4,5,7,9,10,11,12,13,14,15],"tabl":15,"take":[6,7],"tamper":[10,11],"target":2,"task":[0,2,6],"teach":6,"tear":10,"tell":[7,10,14,15],"templat":[0,1,2,6],"template_str":[0,7],"templates_dir":0,"termin":[3,4],"terms_of_servic":0,"test":[0,2,3,5,6,8,14],"test_500":[2,9],"test_api":9,"test_create_item":9,"test_custom_error":9,"test_echo":16,"test_head":9,"test_hello":9,"test_hook":9,"test_json":9,"test_upload":9,"test_valid":9,"test_websocket":9,"test_with_lifespan":9,"testclient":[0,2,9,16],"text":[0,2,6,7,9,10,12,16],"textcont":16,"than":[9,10,11,12,13,14],"thei":[0,5,7,10,12,13,14,16],"them":[6,7,9,10,11,12,14,16],"theme":[0,10],"themselv":10,"thi":[0,2,3,4,5,6,7,9,10,11,12,13,14,15,16],"thing":[5,6,7,9,13],"think":7,"third":6,"though":4,"thousand":4,"thread":[0,2,6,7,12],"threadpoolexecutor":[0,2],"three":[7,10,16],"through":[0,7,10,13,14,16],"throughput":10,"thu":0,"time":[0,2,6,7,9,10,12,13,14,15,16],"time_start":0,"timedelta":11,"timeout":4,"timingmiddlewar":13,"tip":[2,6],"titl":[0,2,7,10,14,15],"tl":4,"togeth":[6,10],"token":[0,6,7,10,16],"token_hex":5,"toml":2,"too":[0,3,4,9,10],"tool":[8,13],"toolbelt":2,"toolkit":15,"top":[0,5],"total":10,"tour":[0,6,7],"trace":10,"traceback":[0,2,5,10],"track":15,"tradit":[10,11],"traffic":4,"transact":15,"transform":13,"translat":12,"transport":10,"treat":[0,10],"trick":10,"trigger":9,"true":[0,2,5,7,9,10,11,12,13,15,16],"trust":[2,6],"trustedhostmiddlewar":[4,13],"try":[6,7,11,16],"tupl":[0,7,9],"tutori":[2,7,14],"two":[7,10,13],"type":[0,2,6,10,12,14,16],"typic":[7,10],"typo":[2,10],"ui":[2,6,10,14],"unauthor":[0,10,11],"under":[0,7,10,12],"underlin":2,"understand":[6,7],"unexpectedli":16,"unhandl":13,"unicod":0,"union":2,"uniqu":10,"unit":15,"univers":5,"unknown":0,"unless":10,"unlik":10,"unmaintain":2,"unmatch":10,"unpin":2,"unrecogn":10,"until":7,"up":[0,2,7,8,10],"updat":[2,6,7,10,15,16],"update_book":[14,15],"upgrad":[2,8,10,16],"upload":[2,6,7],"url":[0,2,5,6,7,9,10,11,12,13,15],"url_for":[0,2,9],"url_prefix":12,"urllib":2,"us":[0,2,3,4,6,7,10,12,14,16],"usag":[0,2],"user":[0,5,7,10,11,12,15],"user_id":[7,10,11,12],"usernam":[10,11],"usual":9,"utcnow":11,"utf":0,"uuid":[0,2,7,10],"uuid4":0,"uv":[2,3,5,6,8,11,15],"uvicorn":[0,2,6,7],"uvloop":4,"v":6,"v1":[0,10],"v2":10,"valid":[0,2,6,7,10,11,13,14,15],"valu":[0,6,7,9,10,11,12,13,14,15,16],"valueerror":[0,9,10,12,14],"variabl":[0,4,6,7],"ve":[6,9,12],"venv":8,"verb":10,"veri":[0,7,15],"verifi":[9,11],"verify_token":11,"version":[0,2,9,10,14],"via":[0,2,5,10,12],"view":[0,2,6,7,9,12],"virtual":[3,4],"virtualenv":8,"visit":[10,14],"vue":10,"w":[9,10,16],"wa":[0,2,7,14],"wai":[3,4,6,7,10,11,12,13,15],"wait":12,"walk":[7,10,14],"want":[0,3,4,6,7,9,10,14,15,16],"warn":2,"watch":8,"we":[14,15,16],"web":[0,4,6,10,15],"websit":10,"websocket":[0,1,2,4,6],"websocket_connect":[9,16],"welcom":[6,7,11],"well":6,"went":6,"werkzeug":2,"what":[0,7,9,10,16],"whatev":7,"when":[0,2,4,5,6,7,9,10,12,14,15,16],"where":[0,4,7,10,15,16],"whether":[0,7],"which":[0,2,7,9,10,12,15],"whichev":6,"while":[7,10,12,16],"whitenois":2,"who":[6,7,11],"widget":[9,10],"wildcard":10,"window":2,"wire":7,"with_app":10,"within":[2,10,15],"without":[0,2,4,7,9,10,15],"won":[7,9,10,15],"work":[3,4,5,6,7,10,13,14,15],"workdir":4,"worker":4,"world":[0,3,6,9,10,12],"worri":9,"would":9,"wrap":[0,7,9,10,13],"write":[6,7,10,12],"wrong":10,"ws_auth":16,"wsgi":[0,2,4,6,10,12],"www":5,"x":[0,4,7,9,10,11,12,13,14],"x00":16,"x01":16,"x02":16,"x89png":7,"xml":0,"xss":10,"yaml":[0,2,6,7,9,10],"year":[14,15],"yield":[0,10,15],"yml":[0,10,11],"you":[0,3,4,5,7,9,10,11,12,13,14,15,16],"your":[0,3,4,5,6,7,9,10,11,12,13],"yourself":7,"zero":4},"titles":["API Reference","Backlog","Changelog","Command Line Interface","Deployment","Configuration","Responder","Quick Start","Development Sandbox","Testing","Feature Tour","Authentication","Migrating from Flask","Writing Middleware","Building a REST API","Using SQLAlchemy","WebSocket Tutorial"],"titleterms":{"":14,"0":2,"01":2,"02":2,"03":2,"04":2,"08":2,"09":2,"1":2,"10":2,"11":2,"12":2,"13":2,"15":2,"16":2,"17":2,"18":2,"19":2,"2":2,"20":2,"2018":2,"2019":2,"2026":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"In":14,"It":[5,7,14,15],"The":[0,6,12],"ad":[2,13],"after":[9,10],"all":[5,7,14],"allow":5,"api":[0,9,11,12,14],"app":[10,11],"asset":3,"auth":11,"authent":11,"background":[0,7],"backlog":1,"base":10,"bearer":11,"befor":[9,10,16],"big":12,"blueprint":12,"book":14,"build":[3,14],"built":13,"chang":2,"changelog":2,"chat":16,"class":[0,5,10],"client":16,"cloud":4,"code":0,"command":3,"configur":5,"convertor":7,"cooki":[9,10],"cor":10,"creat":[7,14],"crud":15,"custom":[3,10,11],"data":16,"databas":15,"debug":5,"defin":[14,15],"delet":14,"deploy":4,"deprec":2,"develop":8,"dict":0,"differ":12,"directli":4,"docker":4,"document":10,"echo":16,"endpoint":15,"env":5,"environ":5,"error":[9,10,11,14],"event":[9,10],"except":11,"featur":10,"file":[3,5,9,10],"filter":10,"fix":2,"fixtur":9,"flask":12,"format":16,"from":[3,12],"frontend":3,"futur":1,"get":[6,9,14],"gradual":12,"graphql":10,"group":[0,10,12],"guid":6,"handl":[9,10,14],"header":9,"hello":7,"helper":0,"hook":[9,10,13,16],"host":[5,10],"how":16,"hst":10,"html":16,"id":10,"idea":[1,6],"instal":[6,15],"instanc":3,"interfac":3,"json":[9,12],"kei":[5,11],"launch":3,"lifespan":[9,10,15],"limit":[0,10],"line":3,"list":14,"local":4,"memori":14,"messagepack":10,"method":10,"middlewar":13,"migrat":12,"mode":5,"model":[14,15],"modul":3,"mount":10,"name":3,"next":14,"openapi":10,"oper":8,"order":13,"other":10,"out":14,"paramet":[7,12],"parti":13,"pattern":5,"platform":4,"postgresql":15,"project":[6,14],"proxi":4,"public":11,"put":[5,7],"queri":0,"queue":0,"quick":[7,12],"rate":[0,10],"read":7,"refer":[0,12],"remov":2,"render":7,"request":[0,7,9,10,16],"respond":6,"respons":[0,7],"rest":14,"revers":4,"room":16,"rout":[0,7,10,11,12],"run":[4,7,14,15],"sandbox":8,"secret":5,"send":7,"sent":10,"serv":10,"server":[7,10,16],"servic":7,"session":[10,11],"setup":[8,14,15],"shutdown":15,"singl":14,"skip":11,"sqlalchemi":15,"sse":10,"starlett":13,"start":[7,9],"startup":15,"static":10,"statu":0,"storag":14,"support":10,"task":7,"templat":[7,12],"test":[9,16],"third":13,"tip":[9,15],"togeth":[5,7],"token":11,"tour":10,"trust":10,"try":14,"tutori":[6,16],"type":7,"unreleas":2,"updat":14,"upload":9,"url":3,"us":[5,9,11,13,15],"user":6,"uvicorn":4,"v":13,"v0":2,"v1":2,"v2":2,"v3":2,"valid":9,"variabl":5,"view":10,"web":[7,11],"websocket":[9,10,16],"what":[6,13,14],"when":13,"work":16,"world":7,"write":13,"you":6,"your":[14,15]}}) \ No newline at end of file diff --git a/testing.html b/testing.html index f68e6b6..56e9fa2 100644 --- a/testing.html +++ b/testing.html @@ -5,13 +5,13 @@ - Testing — responder 3.4.1 documentation + Testing — responder 3.5.0 documentation - + diff --git a/tour.html b/tour.html index 276e4a5..ce28cde 100644 --- a/tour.html +++ b/tour.html @@ -5,13 +5,13 @@ - Feature Tour — responder 3.4.1 documentation + Feature Tour — responder 3.5.0 documentation - + diff --git a/tutorial-auth.html b/tutorial-auth.html index 27c305a..ee2d5d7 100644 --- a/tutorial-auth.html +++ b/tutorial-auth.html @@ -5,13 +5,13 @@ - Authentication — responder 3.4.1 documentation + Authentication — responder 3.5.0 documentation - + diff --git a/tutorial-flask.html b/tutorial-flask.html index 43226d6..df23133 100644 --- a/tutorial-flask.html +++ b/tutorial-flask.html @@ -5,13 +5,13 @@ - Migrating from Flask — responder 3.4.1 documentation + Migrating from Flask — responder 3.5.0 documentation - + diff --git a/tutorial-middleware.html b/tutorial-middleware.html index 1ca3335..b7253d4 100644 --- a/tutorial-middleware.html +++ b/tutorial-middleware.html @@ -5,13 +5,13 @@ - Writing Middleware — responder 3.4.1 documentation + Writing Middleware — responder 3.5.0 documentation - + diff --git a/tutorial-rest.html b/tutorial-rest.html index 3e69c36..d6eee2d 100644 --- a/tutorial-rest.html +++ b/tutorial-rest.html @@ -5,13 +5,13 @@ - Building a REST API — responder 3.4.1 documentation + Building a REST API — responder 3.5.0 documentation - + diff --git a/tutorial-sqlalchemy.html b/tutorial-sqlalchemy.html index b4953e7..b6bf451 100644 --- a/tutorial-sqlalchemy.html +++ b/tutorial-sqlalchemy.html @@ -5,13 +5,13 @@ - Using SQLAlchemy — responder 3.4.1 documentation + Using SQLAlchemy — responder 3.5.0 documentation - + diff --git a/tutorial-websockets.html b/tutorial-websockets.html index 451b71c..4e6d90d 100644 --- a/tutorial-websockets.html +++ b/tutorial-websockets.html @@ -5,13 +5,13 @@ - WebSocket Tutorial — responder 3.4.1 documentation + WebSocket Tutorial — responder 3.5.0 documentation - +