PK!f^^formation/__init__.pyfrom .__version__ import __version__ # noqa from .formation import wrap __all__ = ["wrap"] PK!? Sformation/__version__.py__version__ = "0.1.12"PK!formation/for_requests.pyimport requests from .formation import wrap from attr import attrib, attrs, fields, asdict __all__ = ["build_sender"] @attrs class FormationHttpRequest(object): url = attrib() method = attrib(default="get") headers = attrib(default={}) params = attrib(default={}) auth = attrib(default=None) data = attrib(default=None) def build_sender(middleware=[]): wrapped = wrap(requests_adapter, middleware=middleware) def sender(method, url, **kwargs): ctx = {"req": FormationHttpRequest(url=url, method=method, **kwargs)} ctx = wrapped(ctx) return ctx["res"] return sender def requests_adapter(ctx): req = ctx["req"] meth = getattr(requests, req.method.lower()) # TODO ship var as kwargs and not explicitly res = meth( req.url, headers=req.headers, params=req.params, auth=req.auth, data=req.data ) ctx["res"] = res return ctx PK!?nKformation/formation.pyfrom toolz import reduce def wrap(call, middleware=[]): return reduce( lambda acc, m: lambda ctx: m(ctx, acc), reversed(middleware), lambda ctx: call(ctx), ) PK!.1formation/middleware.pydef retry(max_retries=3): def retry_middleware(ctx, call): try: res = call(ctx) return res except Exception as ex: retries = ctx.get("formation.retry", 0) if retries > max_retries: raise ex ctx["formation.retry"] = 1 + retries # TODO exponential backoff res = retry_middleware(ctx, call) return res return retry_middleware PK!H9VWX formation-0.1.12.dist-info/WHEEL A н#f."jm)!fb҅~ܴA,mTD}E n0H饹*|D[¬c i=0(q3PK!H4`id#formation-0.1.12.dist-info/METADATAUao6_qmXdvAaҬ}1cH*:(َ۹@0@ݽ;ޡ9w|'+La 125wvx'l57m gPD#2X62X^A-57B. 4k"֕JUPi&I!\|3U'J%OEՌZܒƊUsY_ Zg'ѓ.vPf…r\ /z7Ě*>+o 셰sJ`R 7 MimTm?70,D6T]ɱՑG3?ьWP"G;|tP -ݺ0y!K;g,?_Ǔx~ZTɣF17dQ9'|q`$37ڻ.kjsMZYi|63B\IGV9|t *Wkس"1<&ֲ;ws6+R;ݲQ5k1.@ZR{Įp.fsRc,%)=F Sӆ|<$v(( $= _Ѕޢ`mAޘP aۂ.xtQS tK.mS0߼`m#J;)UT-7'IV9`aJRUUӬN!A!> CsЙvͅ 3!G{C"~_;|#z˕%L9adžTp%ҥy"lUCzJI%uԹҭEI]-!BƯaOk n-տ!a˛",b,J4"G0PK!HHZJ`!formation-0.1.12.dist-info/RECORD}n0}Ť@,(!  $ U&Si43tݿtSw 3`M& U0?b8sqA~QT=]yXRU߸N} }.*&zT$,p^{*L۽d[xZӗjԞ>I?\CXwJ|Bc8d 5.'$(dY3L"& Hr^K-܅_7}_9A\I+I^ ,^t;ucy칮)f}K# hOgƈdlA>U(-@x ʄ,JOvh~7PK!f^^formation/__init__.pyPK!? Sformation/__version__.pyPK!formation/for_requests.pyPK!?nKformation/formation.pyPK!.1formation/middleware.pyPK!H9VWX formation-0.1.12.dist-info/WHEELPK!H4`id#:formation-0.1.12.dist-info/METADATAPK!HHZJ`! formation-0.1.12.dist-info/RECORDPKG