PK!f^^formation/__init__.pyfrom .__version__ import __version__ # noqa from .formation import wrap __all__ = ["wrap"] PK!~Hformation/__version__.py__version__ = "0.1.13"PK!Aformation/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 = {"fmtn.req": FormationHttpRequest(url=url, method=method, **kwargs)} ctx = wrapped(ctx) return ctx["fmtn.res"] return sender def requests_adapter(ctx): req = ctx["fmtn.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["fmtn.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.13.dist-info/WHEEL A н#f."jm)!fb҅~ܴA,mTD}E n0H饹*|D[¬c i=0(q3PK!Huu<  #formation-0.1.13.dist-info/METADATAVnF}WL I뤈Qum} kkҒZ{-Ĩ`93sf ))GtEeVa}y%Gϣ릪]rlUJYӀ%UJʒ2)YmRr 轩xP k7sf-(8W cRy_ ?vw ;^IvDo.DTg*GEMṕF#Nښ{6?2&$$]cɋGZ<,>>G[W[1Ri][Q룗qaSLƔa@}pBznƶ)բan7%hw,P]̄NWx gx]'[ v߭Vr% TѯJt3ʒVӄ#c$Mjޮn$r5a $IƮ}E{؆HF@) icdfaHN3/\BBx,ARrNT`C !4#f|ki,iէ#n@ZсU33} &7W)(܁s*-I%/1sMGF_uϻY߸`a7Z)s@\tMlY=!9FܳH~;HSIƶU3CǶmϪ)G ='~B'!>zgsE.xGWn4ˮwK飩(x݌ w