A trivial Example#

This is a very simple example that shows how to set up the pipeline.

The project folder contains the following files:

📂 examples/trivial
├── 📂 steps
│   ├── __init__.py     # Empty file marking directory as Python package.
│   └── 00_start.py     # Implementation of the first step(s).
│   └── 01_continue.py  # Implementation of the next step.
└── config.py           # Configuration file for the pipeline.

The config file can be used to define custom variables.

config.py#
variable_a = 1

In the context of a Config instance config, such a variable can be accessed as:

config.variable_a

Next we define some steps, i.e. subclasses of Pipeline_Step that implement the step() method. The steps are defined in the steps/ directory.

steps/00_start.py#
from lw_pipeline import Pipeline_Step


class A_First_Start_Pipeline_Step(Pipeline_Step):
    def __init__(self, config):
        super().__init__("This is a description of a first step.", config)

    def step(self, data):
        print(f"Here data is '{data}', we set it to variable_a from the config.")
        data = self.config.variable_a
        return data


class A_Second_Start_Pipeline_Step(Pipeline_Step):
    def __init__(self, config):
        super().__init__("This is a description of a second step.", config)

    def step(self, data):
        print(f"Here data is '{data}'. We will add 1 to it.")
        data += 1
        return data
steps/01_continue.py#
from lw_pipeline import Pipeline_Step


class A_Continued_Pipeline_Step(Pipeline_Step):
    def __init__(self, config):
        super().__init__("This is a description of a continued step.", config)

    def step(self, data):
        print(f"Here data is '{data}'. We will subtract 2.")
        if type(data) is not int:
            data = 0
        data -= 2
        return data

Already with this setups we can run the pipeline with the following command:

$ lw_pipeline -c config.py --run
Output#
Using configuration file: config.py.
Running entire pipeline
--------------Step 1: steps.00_start / A_First_Start_Pipeline_Step--------------
ℹ This is a description of a first step.
Here data is 'None', we set it to variable_a from the config.
-------------Step 2: steps.00_start / A_Second_Start_Pipeline_Step--------------
ℹ This is a description of a second step.
Here data is '1'. We will add 1 to it.
-------------Step 3: steps.01_continue / A_Continued_Pipeline_Step--------------
ℹ This is a description of a continued step.
Here data is '2'. We will subtract 2.
--------------------Pipeline finished with following output:--------------------
0