Formation
A generic functional middleware infrastructure for Python.
Take a look:
from datetime.datetime import now
from 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
FormationHttpRequestwhich abstracts the essentials of making an HTTP request (later shipped torequestsitself in the way that it likes) - It tucks
FormationHttpRequestunder thefmtn.reqkey. - Additional information regarding such a request is kept alongside
fmtn.req. For example a request id is kept in thereq.idkey. This creates a flat (good thing) dict to probe. The reason additional data does not have thefmtnprefix is that you can always build your own that uses a different prefix (which you cant say about internal Formation inner workings).
Thanks:
To all Contributors - you make this happen, thanks!
Copyright
Copyright (c) 2018 @jondot. See LICENSE for further details.
Metadata
Release files for formation 0.1.37
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| formation-0.1.37.tar.gz | 8.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| formation-0.1.37-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 18.7 kB
Release files / formation-0.1.37.tar.gz
| Download URL | formation-0.1.37.tar.gz |
|---|---|
| Size | 8.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3af48848c34ea07505ba9e70c4842c94d26e5d5501d05dc83818798721ff3c97
|
|
BLAKE2b-256 checksum How to use checksums |
47e02b4d69cf516c746f6a2a05d360d81953b648cab08b4d7ed1db65674d0e98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.3 CPython/3.8.1 Darwin/18.7.0
|
Release files / formation-0.1.37-py2.py3-none-any.whl
| Download URL | formation-0.1.37-py2.py3-none-any.whl |
|---|---|
| Size | 10.4 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
8a533b15566a9b5c04e3a43e6a162b1e4b84a6580c1c1b217b60caecc4ae4c4f
|
|
BLAKE2b-256 checksum How to use checksums |
6e009f84ff306d6159112a2177fa9eb0166a00b0f851b49c227377cc989d806e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.3 CPython/3.8.1 Darwin/18.7.0
|