Light, Flexible and Extensible ASGI API framework

Overview

Starlite logo

PyPI - License PyPI - Python Version

Coverage Vulnerabilities Quality Gate Status Maintainability Rating Reliability Rating Security Rating

Discord

Medium

Starlite

Starlite is a light and flexible ASGI API framework. Using Starlette and pydantic as foundations.

Check out the Starlite documentation 📚

Core Features

  • 👉 Class based controllers
  • 👉 Decorators based configuration
  • 👉 Extended testing support
  • 👉 Extensive typing support including inference, validation and parsing
  • 👉 Full async (ASGI) support
  • 👉 Layered dependency injection
  • 👉 OpenAPI 3.1 schema generation with Redoc UI
  • 👉 Route guards based authorization
  • 👉 Simple middleware and authentication
  • 👉 Support for pydantic models and pydantic dataclasses
  • 👉 Support for standard library dataclasses
  • 👉 Support for SQLAlchemy declarative classes
  • 👉 Plugin system to allow extending supported classes
  • 👉 Ultra-fast json serialization and deserialization using orjson

Installation

pip install starlite

Relation to Starlette and FastAPI

Although Starlite uses the Starlette ASGI toolkit, it does not simply extend Starlette, as FastAPI does. Starlite uses selective pieces of Starlette while implementing its own routing and parsing logic, the primary reason for this is to enforce a set of best practices and discourage misuse. This is done to promote simplicity and scalability - Starlite is simple to use, easy to learn, and unlike both Starlette and FastAPI - it keeps complexity low when scaling.

Additionally, Starlite is faster than both FastAPI and Starlette:

plain text requests processed

Legend:

  • a-: async, s-: sync
  • np: no params, pp: path param, qp: query param, mp: mixed params

Class Based Controllers

While supporting function based route handlers, Starlite also supports and promotes python OOP using class based controllers:

from typing import List, Optional

from pydantic import UUID4
from starlite import Controller, Partial, get, post, put, patch, delete
from datetime import datetime

from my_app.models import User


class UserController(Controller):
    path = "/users"

    @post()
    async def create_user(self, data: User) -> User:
        ...

    @get()
    async def list_users(self) -> List[User]:
        ...

    @get(path="/{date:int}")
    async def list_new_users(self, date: datetime) -> List[User]:
        ...

    @patch(path="/{user_id:uuid}")
    async def partially_update_user(self, user_id: UUID4, data: Partial[User]) -> User:
        ...

    @put(path="/{user_id:uuid}")
    async def update_user(self, user_id: UUID4, data: User) -> User:
        ...

    @get(path="/{user_name:str}")
    async def get_user_by_name(self, user_name: str) -> Optional[User]:
        ...

    @get(path="/{user_id:uuid}")
    async def get_user(self, user_id: UUID4) -> User:
        ...

    @delete(path="/{user_id:uuid}")
    async def delete_user(self, user_id: UUID4) -> User:
        ...

ReDoc Automatic API Documentation

While running Starlite, you can view the ReDoc API Documentation Page by accessing it at the default location of /schema or change the location using the OpenAPIController. If your app is running locally on port 8000 you can access the ReDoc page at http://0.0.0.0:8000/schema.

Data Parsing, Type Hints and Pydantic

One key difference between Starlite and Starlette/FastAPI is in parsing of form data and query parameters- Starlite supports mixed form data and has faster and better query parameter parsing.

Starlite is rigorously typed, and it enforces typing. For example, if you forget to type a return value for a route handler, an exception will be raised. The reason for this is that Starlite uses typing data to generate OpenAPI specs, as well as to validate and parse data. Thus typing is absolutely essential to the framework.

Furthermore, Starlite allows extending its support using plugins.

SQL Alchemy Support, Plugin System and DTOs

Starlite has a plugin system that allows the user to extend serialization/deserialization, OpenAPI generation and other features. It ships with a builtin plugin for SQL Alchemy, which allows the user to use SQL Alchemy declarative classes "natively", i.e. as type parameters that will be serialized/deserialized and to return them as values from route handlers.

Starlite also supports the programmatic creation of DTOs with a DTOFactory class, which also supports the use of plugins.

OpenAPI

Starlite has custom logic to generate OpenAPI 3.1.0 schema, the latest version. The schema generated by Starlite is significantly more complete and more correct than those generated by FastAPI, and they include optional generation of examples using the pydantic-factories library.

Dependency Injection

Starlite has a simple but powerful DI system inspired by pytest. You can define named dependencies - sync or async - at different levels of the application, and then selective use or overwrite them.

Middleware

Starlite supports the Starlette Middleware system while simplifying it and offering builtin configuration of CORS and some other middlewares.

Route Guards

Starlite has an authorization mechanism called guards, which allows the user to define guard functions at different level of the application (app, router, controller etc.) and validate the request before hitting the route handler function.

Request Life Cycle Hooks

Starlite supports request life cycle hooks, similarly to Flask - i.e. before_request and after_request

Contributing

Starlite is open to contributions big and small. You can always join our discord server to discuss contributions and project maintenance. For guidelines on how to contribute, please see the contribution guide.

Comments
  • Middleware are not executed on Starlite error

    Middleware are not executed on Starlite error

    When route is not found, method is not allowed, or some similar error, then middleware are not executed although and it is unexpected behaviour.

    Starlite, second test fails:

    from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
    from starlette.requests import Request
    from starlette.responses import Response
    from starlite import Starlite, TestClient, get
    
    
    class ServerHeaderMiddleware(BaseHTTPMiddleware):
        async def dispatch(
            self, request: Request, call_next: RequestResponseEndpoint
        ) -> Response:
            response = await call_next(request)
            response.headers["Server"] = "NULL"
            return response
    
    
    @get()
    async def route() -> str:
        return ""
    
    
    app = Starlite(
        debug=True,
        route_handlers=[route],
        middleware=[ServerHeaderMiddleware],
    )
    
    
    def test_middleware_is_executed_when_route_found():
        with TestClient(app) as client:
            response = client.get("/")
            assert response.headers["Server"] == "NULL"
    
    
    def test_middleware_is_executed_when_route_not_found():
        with TestClient(app) as client:
            response = client.get("/non-existing-route")
            assert response.headers["Server"] == "NULL"
    

    Starlette, tests pass:

    from starlette.applications import Starlette
    from starlette.middleware import Middleware
    from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
    from starlette.requests import Request
    from starlette.responses import PlainTextResponse, Response
    from starlette.routing import Route
    from starlette.testclient import TestClient
    
    
    class ServerHeaderMiddleware(BaseHTTPMiddleware):
        async def dispatch(
            self, request: Request, call_next: RequestResponseEndpoint
        ) -> Response:
            response = await call_next(request)
            response.headers["Server"] = "NULL"
            return response
    
    
    async def route(request: Request):
        return PlainTextResponse("")
    
    
    app = Starlette(
        debug=True,
        routes=[Route("/", route, methods=["GET"])],
        middleware=[Middleware(ServerHeaderMiddleware)],
    )
    
    
    def test_middleware_is_executed_when_route_found():
        with TestClient(app) as client:
            response = client.get("/")
            assert response.headers["Server"] == "NULL"
    
    
    def test_middleware_is_executed_when_route_not_found():
        with TestClient(app) as client:
            response = client.get("/non-existing-route")
            assert response.headers["Server"] == "NULL"
    
    bug 
    opened by vrslev 66
  • Enhancement: Rich and StructLog integration

    Enhancement: Rich and StructLog integration

    Create a documented example and/or integration to allow for rich traceback handling and logging handler.

    Here's an example using the LoggingHandler

    https://rich.readthedocs.io/en/latest/logging.html

    enhancement help wanted good first issue 
    opened by cofin 38
  • Issue #177: Add a baseline for Rust path resolution bindings

    Issue #177: Add a baseline for Rust path resolution bindings

    Addresses #177.

    Baseline implementation very closely mimics the original Python trie implementation for path resolution, but uses Rust types for native performance.

    A native extension wheel can be built using maturin build in a Poetry shell, which will output to ./target/wheels, but the packaging of the wheels into the Starlite package has not been done. I think this should be doable by calling a build script from Poetry and including the wheels somehow, if it is not otherwise possible to directly include the wheel directory's wheels.

    The native extension has to be built with maturin develop before running pytest in order to run tests locally.

    opened by nramos0 29
  • Enhancement: Server-side sessions

    Enhancement: Server-side sessions

    What's the feature you'd like to ask for. Currently only cookie-based (i.e. client-side) sessions are supported. A server-side session with a redis/memcached/file backend would be nice to have.

    If that's something starlite wants to support, I'd be happy to work on it.

    enhancement 
    opened by provinzkraut 28
  • POC for controlled development environment and usage instructions.

    POC for controlled development environment and usage instructions.

    To try to clear the path for contributors it would be good to have a specific workflow that we use. We could even use tox inside CI so that there would be virtually no difference between running the tests locally and in CI.

    Basic workflow is:

    • developer ensures they have the versions of python available - there are instructions on how to use pyenv for this in CONTRIBUTING.md
    • developer uses poetry to install Starlite and required extras, poetry install --extras "test lint dev" (I want to collapse this down topoetry install --extras dev` but I'm having trouble with circular dependencies, which apparently should be supported: https://discuss.python.org/t/pyproject-toml-optional-dependencies-redundancy-aka-dry-extras/8428/5).
    • everything should work as expected from then on, and we'll have poetry run tox which will run tests across all python versions and linting.
    opened by peterschutt 28
  • Enhancement: Replace Starlette Responses

    Enhancement: Replace Starlette Responses

    PR Checklist

    • [x] Have you followed the guidelines in CONTRIBUTING.md?
    • [x] Have you got 100% test coverage on new code?
    • [x] Have you updated the prose documentation?
    • [x] Have you updated the reference documentation?

    This PR removes the usage of Starlette based Response objects by introducing our own version - with a compatible API.

    Relates to #612

    enhancement starlette-migration 
    opened by Goldziher 27
  • Enhancement: Allow disabling openapi documentation sites and schema download endpoints via config

    Enhancement: Allow disabling openapi documentation sites and schema download endpoints via config

    Currently the OpenAPIController always exposes redoc, swagger-ui and stoplight elements static sites, and a yaml + json schema download endpoints. This though might not be desirable.

    Tasks:

    1. add a new method on the controller called render_404_not_found or something such like, which renders a simple 404 page.
    2. add a configuration option to the OpenAPIConfig class that determines which endpoints are enabled. For example, a list or set of literal identifiers - which by default includes all values.
    3. add logic to return a 404 if a particular endpoint is not enabled in the config.

    Note:

    Access the app level config is possble using the request instance. See how this is currently implemented in the OpenAPIController.root method as an example.

    enhancement help wanted good first issue 
    opened by Goldziher 27
  • Question: How to mount an app instance?

    Question: How to mount an app instance?

    Is this possible? If not could it be :)

    admin_app = Starlette(
        routes=[
            Route("/", ...),
        ],
        middleware=[
            Middleware(MiddlewareA),
            ),
        ],
    )
    
    app = Starlette(
        routes=[
            Route("/", ...),
            Mount("/admin/", admin_app),
        ],
        middleware=[
            Middleware(Middlewareb),
        ],
    )
    
    question 
    opened by mybigman 26
  • Enhancement: Rust, C or C++ bindings for path resolution

    Enhancement: Rust, C or C++ bindings for path resolution

    Starlite currently resolves paths using a tree structure, but in python. This is quite slow. It would be very helpful if we could create custom bindings in a low level and substantially faster language to implement the tree and its required parsing methods.

    The data structure that is often used for this purpose is called a "radix prefix tree". This is not necessarily the only option we have - but its a strong one.

    PRs are welcome, as are discussions.

    enhancement help wanted 
    opened by Goldziher 25
  • Import testing dynamically, install requests as extra dependency

    Import testing dynamically, install requests as extra dependency

    Closes #130

    >>> from starlite import Starlite
    >>> Starlite
    <class 'starlite.app.Starlite'>
    >>> from starlite import TestClient
    Traceback (most recent call last):
        ...
    MissingDependencyException: To use starlite.testing, install starlite with 'testing' extra, e.g. `pip install starlite[testing]`
    
    opened by Bobronium 25
  • Enhancement: OpenTelemetry integration

    Enhancement: OpenTelemetry integration

    So, as the title says. We need to consider how to best support OpenTelemetry. We might need to add some hooks to allow for optimal instrumentation. We should also consider creating an OT instrumentationn library, see for example: https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/fastapi/fastapi.html

    enhancement help wanted good first issue 
    opened by Goldziher 22
  • Bug: validation error for array of enums in query parameters

    Bug: validation error for array of enums in query parameters

    Describe the bug type annotation list[Enum] doesn't support form style query parameters (E.g. /resource?param=1,2,3). Validation error occurs.

    To Reproduce There are 2 handlers for enum array and string array. For string array everything works correctly. For enum array error occurs for form-style array expanding.

    from enum import Enum
    
    from starlite import Starlite, get
    
    
    class E(Enum):
        e1 = "e1"
        e2 = "e2"
    
    
    @get("/r1-enum")
    def h1_enum(params: list[E]) -> None:
        ...
    
    
    @get("/r2-str")
    def h2_str(params: list[str]) -> None:
        ...
    
    
    app = Starlite(route_handlers=[h1_enum, h2_str])
    

    Requests for tests:

    curl "localhost:8000/r1-enum?params=e1&params=e2" # OK
    curl "localhost:8000/r1-enum?params=e1,e2" # VALIDATION ERROR
    
    curl "localhost:8000/r2-str?params=e1&params=e2" # OK
    curl "localhost:8000/r2-str?params=e1,e2" # OK
    

    For curl "localhost:8000/r1-enum?params=e1,e2" occurs the following error:

    {
      "status_code": 400,
      "detail": "Validation failed for GET http://127.0.0.1:8000/r1-enum?params=e1,e2",
      "extra": [
        {
          "loc": [
            "params",
            0
          ],
          "msg": "value is not a valid enumeration member; permitted: 'e1', 'e2'",
          "type": "type_error.enum",
          "ctx": {
            "enum_values": [
              "e1",
              "e2"
            ]
          }
        }
      ]
    }
    

    Additional context

    Form-style array expending is default for OpenAPI request url generation. image

    bug triage required 
    opened by Gamazic 0
  • Bug: Starlite CLI cannot import project

    Bug: Starlite CLI cannot import project

    Describe the bug I have a very minimal hello world application in Starlite, using Poetry. I have installed python-dotenv, and created a base env file that points to the poetry package. However, whenever I run starlite info I get an import error in the cli. I've attempted to debug this through the use of print statements, augmenting python's sys.path, as well as importing other installed packages, like pydantic.

    I am able to import my files using importlib.import_module from the python REPL, but am unable to in the cli.

    from starlite import Starlite, get
    
    @get("/")
    def hello() -> str:
        return "world"
    
    app = Starlite(route_handlers=[hello])
    

    To Reproduce

    1. Generate a Poetry project
    2. Install starlite[full]
    3. Install python-dotenv
    4. Install uvicorn
    5. Create a .env file pointing to the poetry package
    6. Create a basic hello world file in the __init__.py (see attachment)
    7. Run starlite info

    Additional context I am on Starlite Version 1.48.1 Here is the full error message. For context the Poetry package is named starlite_playground

    Using Starlite app from env: 'starlite_playground:app'
    Traceback (most recent call last):
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/bin/starlite", line 8, in <module>
        sys.exit(cli())
                 ^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
        return self.main(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/click/core.py", line 1055, in main
        rv = self.invoke(ctx)
             ^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/click/core.py", line 1654, in invoke
        super().invoke(ctx)
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/click/core.py", line 760, in invoke
        return __callback(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/click/decorators.py", line 26, in new_func
        return f(get_current_context(), *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/starlite/cli.py", line 347, in cli
        ctx.obj = StarliteEnv.from_env(app_path)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/starlite/cli.py", line 102, in from_env
        loaded_app = _autodiscover_app(getenv("STARLITE_APP"))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/starlite/cli.py", line 210, in _autodiscover_app
        return _load_app_from_path(app_path)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/ikollipara/Documents/GitHub/starlite-playground/.venv/lib/python3.11/site-packages/starlite/cli.py", line 192, in _load_app_from_path
        module = importlib.import_module(module_path)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib64/python3.11/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
      File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
    ModuleNotFoundError: No module named 'starlite_playground'
    
    bug triage required 
    opened by ikollipara 1
  • Enhancement: Make `starlite run` work with servers besides uvicorn

    Enhancement: Make `starlite run` work with servers besides uvicorn

    What's the feature you'd like to ask for. Currently using the starlite run command requires users to install uvicorn, which is impractical should they be using e.g. hypercorn or Daphne. I'd like for the CLI to be able to support those servers as well.

    enhancement good first issue 
    opened by provinzkraut 0
  • feat :async test client prototype

    feat :async test client prototype

    PR Checklist

    • [x] Have you followed the guidelines in CONTRIBUTING.md?
    • [x] Have you got 100% test coverage on new code?
    • [ ] Have you updated the prose documentation?
    • [ ] Have you updated the reference documentation?

    related issue #692

    Modifications

    • created an async client class, transport, and a life span handler to starlite\testing\async_test_client
    • the client until now only has the request method
    • created a test case that makes sure the client is running
    • renamed test_client to sync_test_client and async_test_client

    All the added code is basically the same as the sync_test_client but with modifications to suit the async/await

    I would like to hear your feedback on this so far.

    Note : i tried to fix flake8 pre-commit error with multible ways but i couldn't reach to a working solution

    opened by kareemmahlees 0
  • Enhancement: `create-starlite`

    Enhancement: `create-starlite`

    As talked about in https://github.com/starlite-api/starlite/issues/151#issuecomment-1362615818, the command to bootstrap a new Starlite application should not be part of the CLI, since they have to completely separate feature sets, dependencies and requirements.

    I am instead proposing a new package called create-starlite, akin to create-react-app or create-vue.

    Open questions

    • Should we use cookiecutter?
      • Pros:
        • The template can be easily customised by users and adapted as a template for their own projects
        • cookiecutter is an established library, many workflows already exist for it, making it easily adaptable
      • Cons:
        • Creating a dynamic template meeting the requirements mentioned below is quite complicated to achieve using cookiecutter, since it expects static variables in a cookiecutter.json format. It's possible, but would result in a messy template if we also want it to be usable as a standalone cookiecutter template

    Todo

    • [ ] Project template (cookiecutter?) including feature selection / configuration for:
      • [ ] Plugins (ORM integrations)
      • [ ] Logging
      • [ ] Caching
      • [ ] Sessions
      • [ ] Middlewares
      • [x] Templates
      • [x] Static files
    enhancement help wanted 
    opened by provinzkraut 5
Releases(v1.48.1)
  • v1.48.1(Jan 3, 2023)

    What's Changed

    Bugfixes

    • Rename enc_hook -> default in encode_json by @ste-pool in https://github.com/starlite-api/starlite/pull/1009
    • Re-enable super() calls to Response.serializer by @provinzkraut in https://github.com/starlite-api/starlite/pull/1018

    Features

    • Extend serializable types by @provinzkraut in https://github.com/starlite-api/starlite/pull/1011
    • Support application factory pattern in CLI run command by @provinzkraut in https://github.com/starlite-api/starlite/pull/1023

    Docs

    • Fix typo in the docs (Testing. Test Client) by @spikenn in https://github.com/starlite-api/starlite/pull/1015
    • Fix a broken example for the "Response Headers" docs by @Jarmos-san in https://github.com/starlite-api/starlite/pull/1021
    • Revise template and middleware docs by @provinzkraut in https://github.com/starlite-api/starlite/pull/1012

    Other

    • Cleanup type encoders by @provinzkraut in https://github.com/starlite-api/starlite/pull/1014

    New Contributors

    • @spikenn made their first contribution in https://github.com/starlite-api/starlite/pull/1015
    • @Jarmos-san made their first contribution in https://github.com/starlite-api/starlite/pull/1021

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.48.0...v1.48.1

    Source code(tar.gz)
    Source code(zip)
  • v1.48.0(Dec 29, 2022)

    What's Changed

    • Add docs versioning by @provinzkraut in https://github.com/starlite-api/starlite/pull/996
    • Add support for layered type_encoders by @provinzkraut in https://github.com/starlite-api/starlite/pull/995
    • Fix rendering of Enum parameters in OpenAPI schema by @dialvarezs in https://github.com/starlite-api/starlite/pull/993
    • Fix sorting of tags in OpenAPI schema by @ste-pool in https://github.com/starlite-api/starlite/pull/1005
    • Fix swagger check for schema by @ste-pool in https://github.com/starlite-api/starlite/pull/1000

    New Contributors

    • @rgajason made their first contribution in https://github.com/starlite-api/starlite/pull/998

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.47.0...v1.48.0

    Source code(tar.gz)
    Source code(zip)
  • v1.47.0(Dec 26, 2022)

    What's Changed

    Bugfixes

    • Fix #992: Deprecate CookieBackendConfig import by @provinzkraut in https://github.com/starlite-api/starlite/pull/992

    New features

    • Auto generation of DTOs from response data by @Goldziher in https://github.com/starlite-api/starlite/pull/982
    • Media type inference to HTTP handlers by @Goldziher in https://github.com/starlite-api/starlite/pull/984
    • Support differently named path parameters on the same route by @Goldziher in https://github.com/starlite-api/starlite/pull/987

    Documentation

    • Update docs for #982 by @dialvarezs in https://github.com/starlite-api/starlite/pull/985

    Other

    • Add fast-query-parsers by @Goldziher in https://github.com/starlite-api/starlite/pull/989

    New Contributors

    • @dialvarezs made their first contribution in https://github.com/starlite-api/starlite/pull/985

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.46.0...v1.47.0

    Source code(tar.gz)
    Source code(zip)
  • v1.46.0(Dec 23, 2022)

    What's Changed

    Bugfixes

    • Make SessionAuth openapi_schema use backend_config.key by @asomethings in https://github.com/starlite-api/starlite/pull/934
    • Support utf-8 encoded strings in form data by @NiclasHaderer in https://github.com/starlite-api/starlite/pull/946
    • Fix 964: Jinja Template response ignores MediaType settings by @provinzkraut in https://github.com/starlite-api/starlite/pull/970

    Changes

    • Move JinjaTemplateEngine and MakoTemplateEngine to contrib by @Goldziher in https://github.com/starlite-api/starlite/pull/949
    • Update template config by @Goldziher in https://github.com/starlite-api/starlite/pull/955

    New features

    • Support for controlling Pydantic models' alias in OpenAPI Schema by @Goldziher in https://github.com/starlite-api/starlite/pull/959
    • Support Cookie instances in Response.set_cookie by @provinzkraut in https://github.com/starlite-api/starlite/pull/969
    • CLI by @provinzkraut in https://github.com/starlite-api/starlite/pull/936

    Docs

    • Add: Autorun examples by @provinzkraut in https://github.com/starlite-api/starlite/pull/943
    • Add: Documentation for TestClient.portal() by @smithk86 in https://github.com/starlite-api/starlite/pull/932
    • Change: Updated documentation for Guards by @cofin in https://github.com/starlite-api/starlite/pull/942
    • Change: Restructure "The Starlite app" and "Custom responses" sections by @provinzkraut in https://github.com/starlite-api/starlite/pull/972
    • Change: Minor Readme update by @provinzkraut in https://github.com/starlite-api/starlite/pull/950
    • Change: Update migration guide, add framework feature comparison by @provinzkraut in https://github.com/starlite-api/starlite/pull/963
    • Fix: Fix note block spacing in cache usage by @garburator in https://github.com/starlite-api/starlite/pull/94
    • Fix: Fix missing colons in framework feature comparison by @asomethings in https://github.com/starlite-api/starlite/pull/968

    New Contributors

    • @asomethings made their first contribution in https://github.com/starlite-api/starlite/pull/934
    • @garburator made their first contribution in https://github.com/starlite-api/starlite/pull/944
    • @NiclasHaderer made their first contribution in https://github.com/starlite-api/starlite/pull/946

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.45.1...v1.46.0

    Source code(tar.gz)
    Source code(zip)
  • v1.45.1(Dec 13, 2022)

    What's Changed

    • Fix controller support for mixed websocket and http route handlers by @Goldziher in https://github.com/starlite-api/starlite/pull/930
    • Improve serialization of Pydantic-types by @provinzkraut in https://github.com/starlite-api/starlite/pull/929

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.45.0...v1.45.1

    Source code(tar.gz)
    Source code(zip)
  • v1.45.0(Dec 11, 2022)

    What's Changed

    • Add MessagePack support and serialization with msgspec by @provinzkraut in https://github.com/starlite-api/starlite/pull/891
    • Fix logger propagation causing duplicate messages in logging middleware by @Goldziher in https://github.com/starlite-api/starlite/pull/923
    • Fix mounted starlette apps require paths ending with slashes by @Goldziher in https://github.com/starlite-api/starlite/pull/925
    • Fix OpenAPI spec generation for dynamic route handlers by @Goldziher in https://github.com/starlite-api/starlite/pull/917
    • Fix OpenAPI support for custom responses with generic types by @Goldziher in https://github.com/starlite-api/starlite/pull/918
    • Fix rate-limiting middleware handling of mount paths by @Goldziher in https://github.com/starlite-api/starlite/pull/922
    • Fix TestClient handling of escaped ampersands in query params by @Goldziher in https://github.com/starlite-api/starlite/pull/919

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.44.0...v1.45.0

    Source code(tar.gz)
    Source code(zip)
  • v1.44.0(Dec 5, 2022)

    What's Changed

    • Update urlencoded parsing by @Goldziher in https://github.com/starlite-api/starlite/pull/901
    • Fix generator based dependencies with cached responses by @provinzkraut in https://github.com/starlite-api/starlite/pull/902
    • Fix OpenAPIController when ASGI root_path is set by @smithk86 in https://github.com/starlite-api/starlite/pull/905
    • Add a new multipart parser by @Goldziher in https://github.com/starlite-api/starlite/pull/901
    • Add support for pagination by @Goldziher in https://github.com/starlite-api/starlite/pull/908

    New Contributors

    • @Alc-Alc made their first contribution in https://github.com/starlite-api/starlite/pull/906

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.43.1...v1.44.0

    Source code(tar.gz)
    Source code(zip)
  • v1.43.1(Nov 30, 2022)

    What's Changed

    Bugfixes

    • Swap StructLoggingConfing.processor type hint to List by @ste-pool in https://github.com/starlite-api/starlite/pull/884
    • Honour documentation_only flag for cookies by @jtraub in https://github.com/starlite-api/starlite/pull/887
    • Fix cookie caching issues by @Goldziher in https://github.com/starlite-api/starlite/pull/889
    • Support legacy OpenAPI file upload format by @Goldziher in https://github.com/starlite-api/starlite/pull/892

    Documentation

    • Fix template callable example and security ref docs by @provinzkraut in https://github.com/starlite-api/starlite/pull/879

    New Contributors

    • @ste-pool made their first contribution in https://github.com/starlite-api/starlite/pull/884

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.43.0...v1.43.1

    Source code(tar.gz)
    Source code(zip)
  • v1.43.0(Nov 29, 2022)

    What's Changed

    New features

    • Add security module and JWT auth contrib by @Goldziher in https://github.com/starlite-api/starlite/pull/864. Read more about it here

    Changes

    • Deprecate delete_all of memcached session backend by @provinzkraut in https://github.com/starlite-api/starlite/pull/874

    Documentation

    • Cleanup of some examples in the docs by @provinzkraut in https://github.com/starlite-api/starlite/pull/798
    • Change navigation layout and intro sites by @provinzkraut in https://github.com/starlite-api/starlite/pull/873

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.42.0...v1.43.0

    Source code(tar.gz)
    Source code(zip)
  • v1.42.0(Nov 26, 2022)

    What's Changed

    New Features

    • Support different types of path parameters for different leaf nodes by @Goldziher in https://github.com/starlite-api/starlite/pull/853
    • Dependencies with yield by @provinzkraut in https://github.com/starlite-api/starlite/pull/856
    • Update custom state injection and add ImmutableState class by @Goldziher in https://github.com/starlite-api/starlite/pull/845

    Bugfixes

    • Fix #854 - Incorrect path resolution of 'path' type parameters by @Goldziher in https://github.com/starlite-api/starlite/pull/857
    • Fix #849 - Make LoggingMiddleware handle request bodies correctly by @provinzkraut in https://github.com/starlite-api/starlite/pull/860

    Internal changes

    • Rework dependencies (#815) by @ottermata in https://github.com/starlite-api/starlite/pull/815

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.41.0...v1.42.0

    Source code(tar.gz)
    Source code(zip)
  • v1.41.0(Nov 23, 2022)

    What's Changed

    • Fix #840 - Always commit changes properly after deleting session data by @provinzkraut in https://github.com/starlite-api/starlite/pull/843
    • Fix #841 - Change middleware.session.sqlalchemy_backend.SessionModelMixin.data to LargeBinary. by @provinzkraut in https://github.com/starlite-api/starlite/pull/842
    • Peformance Updates by @Goldziher in https://github.com/starlite-api/starlite/pull/833

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.40.1...v1.41.0

    Source code(tar.gz)
    Source code(zip)
  • v1.40.1(Nov 21, 2022)

    What's Changed

    • Fix headers parsing by @peterschutt in https://github.com/starlite-api/starlite/pull/832
    • Fix typo in opentelemetry extra by @ottermata in https://github.com/starlite-api/starlite/pull/835
    • fix: parsing of sequence query for nested dependency. by @peterschutt in https://github.com/starlite-api/starlite/pull/838

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.40.0...v1.40.1

    Source code(tar.gz)
    Source code(zip)
  • v1.40.0(Nov 20, 2022)

    • Add: forward refs resolution to signature models. by @peterschutt in https://github.com/starlite-api/starlite/pull/806
    • Add: OpenTelemetry instrumentation contrib package by @Goldziher in https://github.com/starlite-api/starlite/pull/796
    • Breaking: remove per request caching of dependencies by @Goldziher in https://github.com/starlite-api/starlite/pull/805
    • Breaking: remove QueryMultiDict and replace with simple MultiDict by @Goldziher in https://github.com/starlite-api/starlite/pull/805
    • Breaking: replace Response.encoded_headers with Response.encode_headers by @Goldziher in https://github.com/starlite-api/starlite/pull/805
    • docs: add LonelyVikingMichael as a contributor for doc by @allcontributors in https://github.com/starlite-api/starlite/pull/812
    • Docs: add srikanthccv as a contributor for test, and doc by @allcontributors in https://github.com/starlite-api/starlite/pull/801
    • Docs: add sssssss340 as a contributor for bug by @allcontributors in https://github.com/starlite-api/starlite/pull/817
    • Docs: logging example by @LonelyVikingMichael in https://github.com/starlite-api/starlite/pull/810
    • Docs: update mounting docs and readme by @jtraub in https://github.com/starlite-api/starlite/pull/807
    • Fix: 404 where current trie node has handlers and child route has path param by @peterschutt in https://github.com/starlite-api/starlite/pull/818
    • Fix: flaky SQLA-session-backend tests by @provinzkraut in https://github.com/starlite-api/starlite/pull/797
    • refactor AllowedHosts and CompressionMiddleware by moving them application to handler level by @jtraub in https://github.com/starlite-api/starlite/pull/804
    • Update: request_factory.{_default_route_handler,default_app} to use deferred bootstrap by @peterschutt in https://github.com/starlite-api/starlite/pull/828
    • Update: handling of compressed "body" in logging middleware. by @peterschutt in https://github.com/starlite-api/starlite/pull/822
    • Update: OpenAPI schema generation to hide automatically created OPTIONS routes by @ottermata in https://github.com/starlite-api/starlite/pull/826
    • Update: refactor routing logic and parameter parsing to improve performance by @Goldziher in https://github.com/starlite-api/starlite/pull/805

    New Contributors

    • @LonelyVikingMichael made their first contribution in https://github.com/starlite-api/starlite/pull/810

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.39.0...v1.40.0

    Source code(tar.gz)
    Source code(zip)
  • v1.39.0(Nov 12, 2022)

    What's Changed

    • add CORS middleware and support for OPTIONS requests by @Goldziher in https://github.com/starlite-api/starlite/pull/792
    • add send_as_attachment flag to StaticFilesConfig by @provinzkraut in https://github.com/starlite-api/starlite/pull/785
    • add starlette URL, URLPath and Address datastructures by @provinzkraut in https://github.com/starlite-api/starlite/pull/738
    • fix filename parameter for FileResponse in StaticFiles by @peterschutt in https://github.com/starlite-api/starlite/pull/775
    • fix handling of leading whitespaces OpenAPI generation of description from docstrings by @jtraub in https://github.com/starlite-api/starlite/pull/771
    • refactor builtin middlewares to use AbstractMiddleware by @jtraub in https://github.com/starlite-api/starlite/pull/778
    • update docstrings using pydocstyle by @provinzkraut in https://github.com/starlite-api/starlite/pull/777
    • updatecontent-disposition to inline when html_mode is set on StaticFilesConfig by @provinzkraut in https://github.com/starlite-api/starlite/pull/784

    Important

    • This version removes starlette as a dependency. See https://github.com/starlite-api/starlite/pull/773 and https://github.com/starlite-api/starlite/pull/792

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.38.0...v1.39.0

    Source code(tar.gz)
    Source code(zip)
  • v1.38.0(Nov 7, 2022)

    What's Changed

    • Fix links in docs, and small fixes. by @peterschutt in https://github.com/starlite-api/starlite/pull/757
    • Add 'AllowedHostsMiddleware' by @Goldziher in https://github.com/starlite-api/starlite/pull/758
    • Replace ServerErrorMiddleware with own exception printer by @jtraub in https://github.com/starlite-api/starlite/pull/696
    • Ensures path_params key always exists in scope. by @peterschutt in https://github.com/starlite-api/starlite/pull/760
    • Include file_system in StaticFiles docs by @cofin in https://github.com/starlite-api/starlite/pull/763
    • Fix resolving starlette responses by @Goldziher in https://github.com/starlite-api/starlite/pull/766
    • Add QueryMultiDict by @Goldziher in https://github.com/starlite-api/starlite/pull/759
    • Add *args override to Logger protocol by @cofin in https://github.com/starlite-api/starlite/pull/761

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.37.0...v1.38.0

    Source code(tar.gz)
    Source code(zip)
  • v1.37.0(Nov 5, 2022)

    What's Changed

    • add local implementation StaticFiles to replace Starlette and extend support to fsspec by @Goldziher in https://github.com/starlite-api/starlite/pull/739
    • add 'gzip' compression by @Goldziher in https://github.com/starlite-api/starlite/pull/751
    • remove Starlette Middleware type from typing by @Goldziher in https://github.com/starlite-api/starlite/pull/752
    • add head decorator by @Goldziher in https://github.com/starlite-api/starlite/pull/755

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.36.0...v1.37.0

    Source code(tar.gz)
    Source code(zip)
  • v1.36.0(Nov 4, 2022)

    What's Changed

    • Add layer for opt dictionary by @jtraub in https://github.com/starlite-api/starlite/pull/720
    • Replace starlettes Headers and MutableHeaders, move FormMultiDict to multidict by @provinzkraut in https://github.com/starlite-api/starlite/pull/732
    • Add AbstractMiddleware class. by @Goldziher in https://github.com/starlite-api/starlite/pull/729
    • Removes "method" from ResponseExtractorField. by @peterschutt in https://github.com/starlite-api/starlite/pull/741
    • Added per request caching of dependencies by @ottermata in https://github.com/starlite-api/starlite/pull/743
    • Resolve dependencies concurrently by @ottermata in https://github.com/starlite-api/starlite/pull/744
    • Fix asgi/websocket handlers when future.annotations is used by @smithk86 in https://github.com/starlite-api/starlite/pull/748

    New Contributors

    • @ottermata made their first contribution in https://github.com/starlite-api/starlite/pull/743
    • @smithk86 made their first contribution in https://github.com/starlite-api/starlite/pull/748

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.35.1...v1.36.0

    Source code(tar.gz)
    Source code(zip)
  • v1.35.1(Oct 30, 2022)

    What's Changed

    • Fix hard dependency on cryptography package in testing.test_client.client by @provinzkraut in https://github.com/starlite-api/starlite/pull/711
    • Fix invalid base_url of TestClient (fixes #706) by @provinzkraut in https://github.com/starlite-api/starlite/pull/708

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.35.0...v1.35.1

    Source code(tar.gz)
    Source code(zip)
  • v1.35.0(Oct 29, 2022)

    What's Changed

    • Update SQLAlchemyPlugin to use a context-manager for sessions by @provinzkraut in https://github.com/starlite-api/starlite/pull/698
    • Add support for setting sessions explicit to Empty. by @provinzkraut in https://github.com/starlite-api/starlite/pull/697
    • Fix SQLAlchemyPlugin.to_dict() where instance has a relationship. by @peterschutt in https://github.com/starlite-api/starlite/pull/699
    • Add copy function route handlers upon registration by @jtraub in https://github.com/starlite-api/starlite/pull/704
    • Update test client session setting by @provinzkraut in https://github.com/starlite-api/starlite/pull/705
    • Add support for mount routes by @Goldziher in https://github.com/starlite-api/starlite/pull/694

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.34.0...v1.35.0

    Source code(tar.gz)
    Source code(zip)
  • v1.34.0(Oct 27, 2022)

    What's Changed

    • Add a __test__ = False attribute to the TestClient so it won't get collected by pytest together with an async test by @provinzkraut in https://github.com/starlite-api/starlite/pull/688
    • Fix an issue (#693) where header values would be forced to lower case. by @provinzkraut in https://github.com/starlite-api/starlite/pull/695
    • Add support for server-side sessions by @provinzkraut & @Goldziher in https://github.com/starlite-api/starlite/pull/630

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.33.0...v1.34.0

    Source code(tar.gz)
    Source code(zip)
  • v1.33.0(Oct 26, 2022)

    What's Changed

    • Update drop await for anyio.Event.set (deprecated) by @provinzkraut in https://github.com/starlite-api/starlite/pull/677
    • Rebrush docs by @dkress59 in https://github.com/starlite-api/starlite/pull/679
    • Add Konstantin Mikhailov as a maintainer by @jtraub in https://github.com/starlite-api/starlite/pull/684
    • Switch pipeline to use v3.11 by @Goldziher in https://github.com/starlite-api/starlite/pull/682
    • Fix mock.patch / async test issues on Python 3.7 by @provinzkraut in https://github.com/starlite-api/starlite/pull/685
    • Replace Starlette TestClient with Starlite TestClient by @Goldziher in https://github.com/starlite-api/starlite/pull/664

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.32.0...v1.33.0

    Source code(tar.gz)
    Source code(zip)
  • v1.32.0(Oct 24, 2022)

    What's Changed

    • Add BackgroundTask and BackgroundTasks to replace Starlette by @Goldziher in https://github.com/starlite-api/starlite/pull/626.
    • Add Etag support to File and update response containers by @Goldziher in https://github.com/starlite-api/starlite/pull/626.
    • Add RedirectResponse, FileResponse and StreamingResponse to replace Starlette by @Goldziher in https://github.com/starlite-api/starlite/pull/626.
    • Add status_codes constants by @Goldziher in https://github.com/starlite-api/starlite/pull/626.
    • Fix cache classes being coupled to asyncio by @Goldziher in https://github.com/starlite-api/starlite/pull/626.
    • Update Response to replace Starlette by @Goldziher in https://github.com/starlite-api/starlite/pull/626.

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.31.0...v1.32.0

    Source code(tar.gz)
    Source code(zip)
  • v1.31.0(Oct 23, 2022)

    What's Changed

    • Allow to exclude routes in CSRFMiddleware by @jtraub in https://github.com/starlite-api/starlite/pull/633
    • Adds logging_config to ref docs for AppConfig by @peterschutt in https://github.com/starlite-api/starlite/pull/648
    • Support cache control headers by @seladb in https://github.com/starlite-api/starlite/pull/601
    • Fix Partial handling of ClassVar. by @Goldziher in https://github.com/starlite-api/starlite/pull/660
    • Add ETag headers (#573) by @provinzkraut in https://github.com/starlite-api/starlite/pull/661

    New Contributors

    • @mivade made their first contribution in https://github.com/starlite-api/starlite/pull/638
    • @pemocarlo made their first contribution in https://github.com/starlite-api/starlite/pull/643

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.30.0...v1.31.0

    Source code(tar.gz)
    Source code(zip)
  • v1.30.0(Oct 21, 2022)

    What's Changed

    • updated cache docs by @Goldziher in https://github.com/starlite-api/starlite/pull/614
    • Add url_for_static_asset to app and templates by @jtraub in https://github.com/starlite-api/starlite/pull/590
    • Improves and extends docs for Dependency function. by @peterschutt in https://github.com/starlite-api/starlite/pull/622
    • Improve readability in unique function by @odiseo0 in https://github.com/starlite-api/starlite/pull/621
    • Use TypeVar for ExceptionHandler exception parameter. by @peterschutt in https://github.com/starlite-api/starlite/pull/620
    • Fixes a typo Depend -> Depends (#597) by @ReznikovRoman in https://github.com/starlite-api/starlite/pull/624
    • Fix #628 by @provinzkraut in https://github.com/starlite-api/starlite/pull/629
    • SQLAlchemy JSON types mapped to Union[Dict, List] on DTOs. by @peterschutt in https://github.com/starlite-api/starlite/pull/635
    • Fix a typo dafne -> daphne by @mookrs in https://github.com/starlite-api/starlite/pull/636

    New Contributors

    • @ReznikovRoman made their first contribution in https://github.com/starlite-api/starlite/pull/624
    • @mookrs made their first contribution in https://github.com/starlite-api/starlite/pull/636

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.29.0...v1.30.0

    Source code(tar.gz)
    Source code(zip)
  • v1.29.0(Oct 18, 2022)

    What's Changed

    • Native support for TypedDict. by @peterschutt in https://github.com/starlite-api/starlite/pull/604

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.28.1...v1.29.0

    Source code(tar.gz)
    Source code(zip)
  • v1.28.1(Oct 16, 2022)

    What's Changed

    • Fix picologging using stdlib StreamHandler by @Goldziher in https://github.com/starlite-api/starlite/pull/610

    New Contributors

    • @jab made their first contribution in https://github.com/starlite-api/starlite/pull/607

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.28.0...v1.28.1

    Source code(tar.gz)
    Source code(zip)
  • v1.28.0(Oct 16, 2022)

    What's Changed

    • Add csrf_token template callable, csrf_input context value and allow registering template callables by @Goldziher in https://github.com/starlite-api/starlite/pull/598
    • Add official trio support by @provinzkraut in https://github.com/starlite-api/starlite/pull/586
    • Add support for ConstrainedDate in OpenAPI schema generation by @Goldziher in https://github.com/starlite-api/starlite/pull/589
    • Add tox scripts for common commands by @seladb in https://github.com/starlite-api/starlite/pull/579
    • Fix NoReturn as allowed return typing for delete decorators by @Goldziher in https://github.com/starlite-api/starlite/pull/588
    • Fix documentation warnings by @seladb in https://github.com/starlite-api/starlite/pull/580
    • Fix signature model for dependency with skip_validaiton and `default`` by @peterschutt in https://github.com/starlite-api/starlite/pull/595
    • Update QueueListenerHandler to log to stderr by default by @peterschutt in https://github.com/starlite-api/starlite/pull/594

    New Contributors

    • @provinzkraut made their first contribution in https://github.com/starlite-api/starlite/pull/586

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.27.0...v1.28.0

    Source code(tar.gz)
    Source code(zip)
  • v1.27.0(Oct 12, 2022)

    What's Changed

    • Add Redis cache backend by @seladb in https://github.com/starlite-api/starlite/pull/564
    • Add memcached cache backend by @seladb in https://github.com/starlite-api/starlite/pull/576
    • Add url_for function in templates by @jtraub in https://github.com/starlite-api/starlite/pull/577

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.26.1...v1.27.0

    Source code(tar.gz)
    Source code(zip)
  • v1.26.1(Oct 10, 2022)

    What's Changed

    • fix support for optional upload file by @Goldziher in https://github.com/starlite-api/starlite/pull/575

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.26.0...v1.26.1

    Source code(tar.gz)
    Source code(zip)
  • v1.26.0(Oct 9, 2022)

    What's Changed

    • Add cache property getter to ASGIConnection by @Goldziher in https://github.com/starlite-api/starlite/pull/552
    • Add support for using custom Request and WebSocket classes. by @Goldziher in https://github.com/starlite-api/starlite/pull/554
    • Update SQLAlchemyConfig connection_string to be optional. by @peterschutt in https://github.com/starlite-api/starlite/pull/556
    • Update RequestFactory to set empty session dict by default by @infohash in https://github.com/starlite-api/starlite/pull/559
    • Update typing of the session_maker_* attributes to protocols in SQLAlchemyConfig`. by @peterschutt in https://github.com/starlite-api/starlite/pull/561
    • Update templating to inject the Request instance into context by @jtraub in https://github.com/starlite-api/starlite/pull/563
    • Update RequestFactory to support session creation from raw session string by @infohash in https ://github.com/starlite-api/starlite/pull/568
    • Update OpenAPIController to allow configuring of the JS bundles used (for environments without CDN access etc.) by @nielsvanhooy in https://github.com/starlite-api/starlite/pull/562
    • Fix route handler name indexing by @Goldziher in https://github.com/starlite-api/starlite/pull/569
    • Fix parsing of large file uploads via httpx (starlite-multipart lib)

    New Contributors

    • @chbndrhnns made their first contribution in https://github.com/starlite-api/starlite/pull/565
    • @nielsvanhooy made their first contribution in https://github.com/starlite-api/starlite/pull/562

    Full Changelog: https://github.com/starlite-api/starlite/compare/v1.25.0...v1.26.0

    Source code(tar.gz)
    Source code(zip)
Redis-based rate-limiting for FastAPI

Redis-based rate-limiting for FastAPI

Glib 6 Nov 14, 2022
A simple Redis Streams backed Chat app using Websockets, Asyncio and FastAPI/Starlette.

redis-streams-fastapi-chat A simple demo of Redis Streams backed Chat app using Websockets, Python Asyncio and FastAPI/Starlette. Requires Python vers

ludwig404 135 Dec 19, 2022
Hook Slinger acts as a simple service that lets you send, retry, and manage event-triggered POST requests, aka webhooks

Hook Slinger acts as a simple service that lets you send, retry, and manage event-triggered POST requests, aka webhooks. It provides a fully self-contained docker image that is easy to orchestrate, m

Redowan Delowar 96 Jan 02, 2023
Opinionated authorization package for FastAPI

FastAPI Authorization Installation pip install fastapi-authorization Usage Currently, there are two models available: RBAC: Role-based Access Control

Marcelo Trylesinski 18 Jul 04, 2022
Flask + marshmallow for beautiful APIs

Flask-Marshmallow Flask + marshmallow for beautiful APIs Flask-Marshmallow is a thin integration layer for Flask (a Python web framework) and marshmal

marshmallow-code 768 Dec 22, 2022
Keycloak integration for Python FastAPI

FastAPI Keycloak Integration Documentation Introduction Welcome to fastapi-keycloak. This projects goal is to ease the integration of Keycloak (OpenID

Code Specialist 113 Dec 31, 2022
Cookiecutter template for FastAPI projects using: Machine Learning, Poetry, Azure Pipelines and Pytests

cookiecutter-fastapi In order to create a template to FastAPI projects. 🚀 Important To use this project you don't need fork it. Just run cookiecutter

Arthur Henrique 225 Dec 28, 2022
FastAPI CRUD template using Deta Base

Deta Base FastAPI CRUD FastAPI CRUD template using Deta Base Setup Install the requirements for the CRUD: pip3 install -r requirements.txt Add your D

Sebastian Ponce 2 Dec 15, 2021
Minecraft biome tile server writing on Python using FastAPI

Blocktile Minecraft biome tile server writing on Python using FastAPI Usage https://blocktile.herokuapp.com/overworld/{seed}/{zoom}/{col}/{row}.png s

Vladimir 2 Aug 31, 2022
This repository contains learning resources for Python Fast API Framework and Docker

This repository contains learning resources for Python Fast API Framework and Docker, Build High Performing Apps With Python BootCamp by Lux Academy and Data Science East Africa.

Harun Mbaabu Mwenda 23 Nov 20, 2022
✨️🐍 SPARQL endpoint built with RDFLib to serve machine learning models, or any other logic implemented in Python

✨ SPARQL endpoint for RDFLib rdflib-endpoint is a SPARQL endpoint based on a RDFLib Graph to easily serve machine learning models, or any other logic

Vincent Emonet 27 Dec 19, 2022
🍃 A comprehensive monitoring and alerting solution for the status of your Chia farmer and harvesters.

chia-monitor A monitoring tool to collect all important metrics from your Chia farming node and connected harvesters. It can send you push notificatio

Philipp Normann 153 Oct 21, 2022
Lightning FastAPI

Lightning FastAPI Lightning FastAPI framework, provides boiler plates for FastAPI based on Django Framework Explaination / | │ manage.py │ README.

Rajesh Joshi 1 Oct 15, 2021
A comprehensive CRUD API generator for SQLALchemy.

FastAPI Quick CRUD Introduction Advantage Constraint Getting started Installation Usage Design Path Parameter Query Parameter Request Body Upsert Intr

192 Jan 06, 2023
Stac-fastapi built on Tile38 and Redis to support caching

stac-fastapi-caching Stac-fastapi built on Tile38 to support caching. This code is built on top of stac-fastapi-elasticsearch 0.1.0 with pyle38, a Pyt

Jonathan Healy 4 Apr 11, 2022
Flask-Bcrypt is a Flask extension that provides bcrypt hashing utilities for your application.

Flask-Bcrypt Flask-Bcrypt is a Flask extension that provides bcrypt hashing utilities for your application. Due to the recent increased prevelance of

Max Countryman 310 Dec 14, 2022
FastAPI IPyKernel Sandbox

FastAPI IPyKernel Sandbox This repository is a light-weight FastAPI project that is meant to provide a wrapper around IPyKernel interactions. It is in

Nick Wold 2 Oct 25, 2021
Simple FastAPI Example : Blog API using FastAPI : Beginner Friendly

fastapi_blog FastAPI : Simple Blog API with CRUD operation Steps to run the project: git clone https://github.com/mrAvi07/fastapi_blog.git cd fastapi-

Avinash Alanjkar 1 Oct 08, 2022
Opentracing support for Starlette and FastApi

Starlette-OpenTracing OpenTracing support for Starlette and FastApi. Inspired by: Flask-OpenTracing OpenTracing implementations exist for major distri

Rene Dohmen 63 Dec 30, 2022
Simple example of FastAPI + Celery + Triton for benchmarking

You can see the previous work from: https://github.com/Curt-Park/producer-consumer-fastapi-celery https://github.com/Curt-Park/triton-inference-server

Jinwoo Park (Curt) 37 Dec 29, 2022