Utilities for the Litestar framework.
Project description
litestar-utils
Utilities for the Litestar framework.
Source Code: https://github.com/Alurith/litestar-utils
Features:
This package include some utilities I generaly use in my projects:
- Timing Middleware: Basic timing for each request
- Slugify: Basic slugify function with customizable options
Installation:
$ pip install litestar-utils
or
$ poetry add litestar-utils
Usage:
Timing Middleware:
Use the create_timing_middleware
function to create the middleware, the only required argument is emit
.
emit
must be a callable that accept 2 arguments a Request and a float
from litestar import Litestar, get
from litestar_utils import create_timing_middleware
@get("/")
async def hello_world() -> str:
return "Hello, world!"
@get("/base", exclude_timing=True)
async def base_all() -> str:
return "All your base are belong to us"
app = Litestar(
[hello_world, base_all],
middleware=[create_timing_middleware(emit=print)],
)
Slugify:
Use the SlugifyOptions
class to customize the behaviour.
class SlugifyOptions(BaseModel):
collapse_whitespace: bool = True
disallowed_characters: str = r"[^\w\s-]"
separator: str = "-"
replacements: List = []
Simple example:
from litestar_utils import slugify, SlugifyOptions
expected = "this-is-easy"
input_string = "this is easy"
assert slugify(input_string) == expected
Don't collaps whitespaces (default to True
):
from litestar_utils import slugify, SlugifyOptions
expected = "should--not---collapse----whitespaces"
input_string = " should not collapse whitespaces "
options = SlugifyOptions(collapse_whitespace=False)
assert slugify(input_string, options=options) == expected
Custom separator (default to -
):
from litestar_utils import slugify, SlugifyOptions
expected = "this.is.easy"
input_string = "this is easy"
options = SlugifyOptions(separator=".")
assert slugify(input_string, options=options) == expected
Replacements:
from litestar_utils import slugify, SlugifyOptions
expected = "emailatexmapledotcom"
input_string = "email@exmaple.com"
options = SlugifyOptions(replacements=[("@", "at"), [".", "dot"]])
assert slugify(input_string, options=options) == expected
HTTPS Redirect Middleware:
Use the HTTPSRedirectMiddleware
middleware to redirect all the incoming requests from http
or ws
to https
or wss
.
Ported from starlette HTTPSRedirectMiddleware
from litestar import Litestar, get
from litestar_utils import HTTPSRedirectMiddleware
@get("/")
async def hello_world() -> str:
return "Hello, world!"
@get("/base", exclude_timing=True)
async def base_all() -> str:
return "All your base are belong to us"
app = Litestar(
[hello_world, base_all],
middleware=[HTTPSRedirectMiddleware],
)
Project details
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
Built Distribution
Hashes for litestar_utils-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14ad5f46174ff1eb68cba2c480272eaccaee139b9f5cd4d0de2dd884628d4c0e |
|
MD5 | edc3bab6709ae2f4669a51f3033ddb2f |
|
BLAKE2b-256 | 91186a5cccc06fdcb1ae45a6e1be1da632b3be6ef38b45f02f9ac6f995ad5a76 |