Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

litestar_utils-0.3.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

litestar_utils-0.3.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

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

Hashes for litestar_utils-0.3.0.tar.gz
Algorithm Hash digest
SHA256 115ba98caa978853bb8db1e97b1f35abd767271d90cc9c928ea50ac02623993a
MD5 a07528f11c5e3e302f5608fe7940659a
BLAKE2b-256 f2cc535a1a3e563e39a0b29e587e3c0d4c0abd122623536e545ab4a52f380fae

See more details on using hashes here.

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

Hashes for litestar_utils-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14ad5f46174ff1eb68cba2c480272eaccaee139b9f5cd4d0de2dd884628d4c0e
MD5 edc3bab6709ae2f4669a51f3033ddb2f
BLAKE2b-256 91186a5cccc06fdcb1ae45a6e1be1da632b3be6ef38b45f02f9ac6f995ad5a76

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