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
File details
Details for the file litestar_utils-0.3.0.tar.gz
.
File metadata
- Download URL: litestar_utils-0.3.0.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.6 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 115ba98caa978853bb8db1e97b1f35abd767271d90cc9c928ea50ac02623993a |
|
MD5 | a07528f11c5e3e302f5608fe7940659a |
|
BLAKE2b-256 | f2cc535a1a3e563e39a0b29e587e3c0d4c0abd122623536e545ab4a52f380fae |
File details
Details for the file litestar_utils-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: litestar_utils-0.3.0-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.6 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14ad5f46174ff1eb68cba2c480272eaccaee139b9f5cd4d0de2dd884628d4c0e |
|
MD5 | edc3bab6709ae2f4669a51f3033ddb2f |
|
BLAKE2b-256 | 91186a5cccc06fdcb1ae45a6e1be1da632b3be6ef38b45f02f9ac6f995ad5a76 |