A generic functional middleware infrastructure for Python.
Project description
Formation
A generic functional middleware infrastructure for Python.
Take a look:
from datetime.datetime import now
from hs_formation import wrap
from requests import get
def log(ctx, call):
print("started")
ctx = call(ctx)
print("ended")
return ctx
def timeit(ctx, call):
started = now()
ctx = call(ctx)
ended = now() - started
ctx['duration'] = ended
return ctx
def to_requests(ctx):
get(ctx['url'])
return ctx
fancy_get = wrap(to_requests, middleware=[log, timeit])
fancy_get({'url':'https://google.com'})
Quick Start
Install using pip/pipenv/etc. (we recommend poetry for sane dependency management):
$ poetry add formation
Best Practices
A context
object is a loose bag of objects. With that freedom comes responsibility and opinion.
For example, this is how Formation models a requests
integration, with data flowing inside context
:
- It models a
FormationHttpRequest
which abstracts the essentials of making an HTTP request (later shipped torequests
itself in the way that it likes) - It tucks
FormationHttpRequest
under thefmtn.req
key. - Additional information regarding such a request is kept alongside
fmtn.req
. For example a request id is kept in thereq.id
key. This creates a flat (good thing) dict to probe. The reason additional data does not have thefmtn
prefix is that you can always build your own that uses a different prefix (which you cant say about internal Formation inner workings).
added support for async http client via aio_http
You can use this via for_aio_http
Thanks:
To all Contributors - you make this happen, thanks!
Copyright
Copyright (c) 2018 @jondot. See LICENSE for further details.
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 hs-formation-5.4.0.tar.gz
.
File metadata
- Download URL: hs-formation-5.4.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.9.5 Darwin/21.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d37f268452e2e70c2edd2a09d8df863b8bca9e14470322c12e7191b049aeb37 |
|
MD5 | 612fca586bf9a2b17040528453d1d7e4 |
|
BLAKE2b-256 | 25ec5f838aea3e1ebc7b1d19e475cd17a40d06cad440c8b5e7c5d16694952201 |
File details
Details for the file hs_formation-5.4.0-py3-none-any.whl
.
File metadata
- Download URL: hs_formation-5.4.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.9.5 Darwin/21.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dae42bfaa91950a37ce1b5c9faa31c3649b3cb18ae5cccfb648fe10d3965466 |
|
MD5 | dcc9ffdb7799a095b170ea15d8dd2f68 |
|
BLAKE2b-256 | 198c104d5d10b312fa08468310b7678a7b36866f5df7fabaff4f4861e584ba91 |