Skip to content

RahulDas-dev/Pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pipeline Design Pattern

output

Example Use case

from pipeline import Pipeline



class AllNumbers(Pipeline):

    def __init__(self):
        super(AllNumbers,self).__init__()
        def generator():
            value = 0
            while True:
                yield value
                value += 1
        self.source = generator()
        
class Evens(Pipeline):

    def filter(self, value):
        return value % 2 == 0

class MultipleOf(Pipeline):

    def __init__(self,factor = 1):
        self.factor = factor
        super(MultipleOf,self).__init__()

    def filter_data(self, value):
        return value % self.factor == 0        

class Printer(Pipeline):

    def map_data(self, value):
        print(value)
        return value

class First(Pipeline):

    def __init__(self, total  = 10):
        super(First,self).__init__()
        self.total = total
        self.count = 0
        
    def map_data(self, value):
        self.count += 1
        if self.count > self.total:
            raise StopIteration 
        return value


all_numbers = AllNumbers()
evens = MultipleOf(2)
multipleOf3 = MultipleOf(3)


first_10 = First(10)
pinter = Printer()


pipeline = all_numbers|evens|multipleOf3|first_10|pinter

#pipeline = all_numbers|evens
pipe = iter(pipeline)

try:
    while True:
        next(pipe)
except StopIteration:
    print('Task Complete')    

output

Releases

No releases published

Packages

No packages published

Languages