Skip to main content

A developer centric, performant Python web framework

Project description

Xpresso

Test Coverage Package version Supported Python versions

Introduction

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.2.2

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.2.2.tar.gz (38.5 kB view details)

Uploaded Source

Built Distribution

xpresso-0.2.2-py3-none-any.whl (66.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xpresso-0.2.2.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.2.2.tar.gz
Algorithm Hash digest
SHA256 5ee5b9c22d985af56bc05900f7711630fd33572c9b78482e776a8933701e941f
MD5 e46c52b6f5727568222da76d3442d4cd
BLAKE2b-256 4913c87a544ab2c1914dd25db2b15bc72567e6118a28ff07d0c7a1988a575feb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xpresso-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 66.1 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.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 89b4bab28fcf58003a1f02e13d7f0e6cb064ddd517b193b82a9f1a73f4008c2f
MD5 5f8a1a9080a72d11bbc8e9b28714bd2a
BLAKE2b-256 9f16be4c3b98947eff7c6dc3f4052c52381774efbe62b27e009af734f54196c7

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