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.

Inspiration and relationship to other frameworks

Xpresso is mainly inspired by FastAPI. FastAPI pioneered several ideas that are core to Xpresso's approach:

  • Leverage Pydantic for JSON parsing, validation and schema generation.
  • Leverage Starlette for routing and other low level web framework functionality.
  • Provide a simple but powerful dependency injection system.
  • Use that dependency injection system to provide extraction of request bodies, forms, query parameters, etc.

Xpresso takes these ideas and refines them by:

See this release on GitHub: v0.15.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.15.0.tar.gz (46.3 kB view details)

Uploaded Source

Built Distribution

xpresso-0.15.0-py3-none-any.whl (75.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xpresso-0.15.0.tar.gz
  • Upload date:
  • Size: 46.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.11.0-1028-azure

File hashes

Hashes for xpresso-0.15.0.tar.gz
Algorithm Hash digest
SHA256 bad9d5a1e13c7168c2bf325bcf2bca4ec844539051a9cf7ce14f31c5e8f2ac1e
MD5 4e305f27e8a855e243a353229252bf49
BLAKE2b-256 3928ae72155d65c325bdfcdb3707c9c7f9f0285f4a05cd9c073282289fcd5bea

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for xpresso-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c5b72f576898947e1b4775b7426f33739b88c440aedb01fb0296fb07a6e85ffd
MD5 6c614ccf195c1704f0736c79ba8f8386
BLAKE2b-256 c7e08ceeac4c2ecff9ac8fdc6059a3b9b8e30a16dff37f3c89e5485d20b0c003

See more details on using hashes here.

Provenance

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