Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

hs-formation

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hs-formation

A generic functional middleware infrastructure for Python.

  • 5.5.0
  • PyPI
  • Socket score

Maintainers
1

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 to requests itself in the way that it likes)
  • It tucks FormationHttpRequest under the fmtn.req key.
  • Additional information regarding such a request is kept alongside fmtn.req. For example a request id is kept in the req.id key. This creates a flat (good thing) dict to probe. The reason additional data does not have the fmtn 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 (c) 2018 @jondot. See LICENSE for further details.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc