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).
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
hs-formation-4.1.11.tar.gz
(8.4 kB
view details)
Built Distribution
File details
Details for the file hs-formation-4.1.11.tar.gz
.
File metadata
- Download URL: hs-formation-4.1.11.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.9 CPython/3.7.4 Darwin/19.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abbef367432718cd7ff356e28a237b9e6a3178199f7b222f2eaec7a118cf6874 |
|
MD5 | 7d44af37d8acdfcf6cc6fbc68f88ed76 |
|
BLAKE2b-256 | 27bebc5b1fb2bf1d7fda3723aa2e452b33cda0b99a86377976fa0d19d6b25e84 |
File details
Details for the file hs_formation-4.1.11-py3-none-any.whl
.
File metadata
- Download URL: hs_formation-4.1.11-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.9 CPython/3.7.4 Darwin/19.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c52980e7486eef355b36fce6cdce9222532d01f7bcb8e031e2fb00a36a18f6d8 |
|
MD5 | dbbe9d0362674686b941ec858fc52591 |
|
BLAKE2b-256 | 58df05bb3e4a47bd2d8c1a8d35654c84cd2cc42508a60429f857ae3213f23bd9 |