Skip to content

Instantly share code, notes, and snippets.

@michaelfeng
Created May 26, 2018 07:10

Revisions

  1. michaelfeng created this gist May 26, 2018.
    34 changes: 34 additions & 0 deletions python_pipeline.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    class Pipe(object):
    def __init__(self, func):
    self.func = func

    def __ror__(self, other):
    def generator():
    for obj in other:
    if obj is not None:
    yield self.func(obj)
    return generator()

    @Pipe
    def even_filter(num):
    return num if num % 2 == 0 else None

    @Pipe
    def multiply_by_three(num):
    return num*3

    @Pipe
    def convert_to_string(num):
    return 'The Number: %s' % num

    @Pipe
    def echo(item):
    print item
    return item

    def force(sqs):
    for item in sqs: pass

    nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    force(nums | even_filter | multiply_by_three | convert_to_string | echo)