Skip to content

Laravel-inspired pipeline implementation for python.

Notifications You must be signed in to change notification settings

henningway/python-pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Python Pipeline

Provides a simple API for running an object through a sequence of computations ("pipes"). Think of Unix pipelines. Works with async pipes!

Inspired by the pipeline implementation of the Laravel framework.

Installation

Copy pipeline.py to your project.

Usage

Here is a basic example.

pipe('desserts').through([
    Reverse,
    lambda s, next: next(s.upper()),
    Wrap('__')
]).run()  # '__STRESSED__'

Pipes are provided as a list and can be function or class based. Class based pipes have to have a handle method. Both function based pipes and the handle method on class based pipes receive two parameters: the data from the previous pipe and a next-function, that has to be called to hand over to the next pipe. In the example above Reverse and Wrap are examples of class based pipes, while the middle pipe is provided as a lambda.

class Reverse(Pipe):
    def handle(self, content, next):
        return next(content[::-1])


class Wrap(Pipe):
    def __init__(self, wrapper_string: str):
        self.wrapper_string = wrapper_string

    def handle(self, content, next):
        return next(self.wrapper_string + content + self.wrapper_string)

More examples (including how to use with async pipes) at the bottom of pipeline.py.

Documentation

See docstring on the Pipeline class in pipeline.py.

Tests

Run

python pipeline.py

from the command line. If you get some text output and no errors - it works.

About

Laravel-inspired pipeline implementation for python.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages