Skip to main content

A developer centric, performant Python web framework

Project description

Xpresso

Test Coverage Package version Supported Python versions

Xpresso is an ASGI web framework built on top of Starlette, Pydantic and di, with heavy inspiration from FastAPI.

Some of the standout features are:

  • ASGI support for high performance (within the context of Python web frameworks)
  • OpenAPI documentation generation
  • Automatic parsing and validation of request bodies and parameters, with hooks for custom extractors
  • Full support for OpenAPI parameter serialization
  • Highly typed and tested codebase with great IDE support
  • A powerful dependency injection system, backed by di

Requirements

Python 3.7+

Installation

pip install xpresso

You'll also want to install an ASGI server, such as Uvicorn.

pip install uvicorn

Example

Create a file named example.py:

from pydantic import BaseModel
from xpresso import App, Path, FromPath, FromQuery

class Item(BaseModel):
    item_id: int
    name: str

async def read_item(item_id: FromPath[int], name: FromQuery[str]) -> Item:
    return Item(item_id=item_id, name=name)

app = App(
    routes=[
        Path(
            "/items/{item_id}",
            get=read_item,
        )
    ]
)

Run the application:

uvicorn example:app

Navigate to http://127.0.0.1:8000/items/123?name=foobarbaz in your browser. You will get the following JSON response:

{"item_id":123,"name":"foobarbaz"}

Now navigate to http://127.0.0.1:8000/docs to poke around the interactive Swagger UI documentation:

Swagger UI

For more examples, tutorials and reference materials, see our documentation.

See this release on GitHub: v0.3.0

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xpresso-0.3.0.tar.gz (38.5 kB view details)

Uploaded Source

Built Distribution

xpresso-0.3.0-py3-none-any.whl (66.0 kB view details)

Uploaded Python 3

File details

Details for the file xpresso-0.3.0.tar.gz.

File metadata

  • Download URL: xpresso-0.3.0.tar.gz
  • Upload date:
  • Size: 38.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.1 Linux/5.11.0-1025-azure

File hashes

Hashes for xpresso-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8a760333481f6d8ca84c2b64ef53d254ddeeeafbba7166acc0c6724257b04e46
MD5 abe8fa5fdbc90591c83ebab45dec9272
BLAKE2b-256 2940a86308c8536f660721ef56ef606941467742d25786e9e8c0eb38242c0b7a

See more details on using hashes here.

File details

Details for the file xpresso-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: xpresso-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 66.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.1 Linux/5.11.0-1025-azure

File hashes

Hashes for xpresso-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ff9a093baf5eb6e7d154a2a726c3a9e5a0d767451fe676ab41e246dbea6505f
MD5 844e09445042f3f67e8b41c1a5f11974
BLAKE2b-256 b36fb441fe4489bbdd26afc8dd624fd50a420362a99fbe156ee95f823a318d2e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page