Skip to main content

Modular event-centric python library made for simplification typical stream applications development with python type system strong exploitation.

Project description

typed-blocks


Documentation: https://typed-blocks.readthedocs.io


Typed Blocks is a modular event-centric python library created to simplify development of typical stream applications. It hardly exploits standard Python type hints.

Distinctive features:

  • Boilerplate-less: just ties together pre-defined computational blocks.
  • Focuses on loose coupling and event-driven design.
  • Encourages explicit separation of data and code. Static typing to the rescue!
  • Minimalistic at it's core and easy-to-go.
  • Modular and open for extension via self-defined connectors for different data sources.

Installation

In minimal installation typed-blocks requires python 3.7 or greater and has no dependencies, so you may just use:

$ pip install typed-blocks

For each data source or extended features you may need corresponding client library. More details in documentation.

Example

If it is hard to understand, what is going on in the following snippet of code, this article also may help.

TL;DR:

  • we are defining events: minimally significant pieces of data
  • we are defining source of all events in our program
  • we define processors to handle them
  • we put all ingredients in the App. Type hints are important! It's actually definition of which processor should handle event and should it emit new events or not.
  • ???
  • it works!
from dataclasses import dataclass

from blocks import App, source, processor


@dataclass
class E:
    x: int


@dataclass
class E2:
    y: int


@source
def generator() -> E:
    return E(1)


@processor
def printer(e: E) -> E2:
    print('1', e)
    return E2(e.x)


@processor
def printer2(e: E2) -> None:
    print('2', e)


blocks = (generator(), printer(), printer2())
App(blocks).run(once=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

typed-blocks-0.9.5.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

typed_blocks-0.9.5-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

Details for the file typed-blocks-0.9.5.tar.gz.

File metadata

  • Download URL: typed-blocks-0.9.5.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for typed-blocks-0.9.5.tar.gz
Algorithm Hash digest
SHA256 4ca1d0dcb1d99b7e06ff445ab3174b4cb95df4636565b478358d8254188f91a1
MD5 8eec00675555d2281688315e24494258
BLAKE2b-256 02b4d1475d6cb3ea49f9c391481e976f1055bbbcc4e722fc41c10d0efbd95121

See more details on using hashes here.

File details

Details for the file typed_blocks-0.9.5-py3-none-any.whl.

File metadata

  • Download URL: typed_blocks-0.9.5-py3-none-any.whl
  • Upload date:
  • Size: 42.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for typed_blocks-0.9.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c95b13b5aec56e3021e29ebfd84ca987c931a10864dd20362b66fc9bcea81f47
MD5 ccac6ed337bf56ebd18a3c32f0ad4f56
BLAKE2b-256 9dada2b3ca8930cfb697f689738b34e1f2ab31f540fcd7ddbfc4451272dcd0e3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page