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

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: xpresso-0.3.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.3.2.tar.gz
Algorithm Hash digest
SHA256 c0d9e81b0637022e91d6eb8069da2c86a4565d536f1a42934d96ceb95cd4fee7
MD5 d41e41e0d4a236adb596075af48ecea6
BLAKE2b-256 585df149687f52d9cfea76b88db50f801894c9f3f67683b5934fe8cddc82cf9c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xpresso-0.3.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 06254957192a48b53ce9bbbe6f1a8ea045196af5668d0d04bf853ddc644bc942
MD5 03d244c45daa67d0a93f2b77c80c0042
BLAKE2b-256 e4c46cfe267befbc4d59816775c29c6399157b5fa309a5d77485f8982cdf0bac

See more details on using hashes here.

Supported by

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