Pipeline из функций

Необходимо реализовать функцию pipeline, которая является аналогом unix-pipeline. Пример:

$ grep 127.0.0.1 | awk '{print $2}' | sort | uniq -c | sort -nr

То есть, когда stdout одной команды передается как stdin другой команде. Но в нашем случае в качестве stdin/stdout будут выступать очереди (объекты queue.Queue), а в качестве команд запущенные потоки (threading.Thread).

Функция pipeline принимает список работ job. job - это функция, которая имеет сигнатуру

from queue import Queue


def job(input_queue: Queue, output_queue: Queue) -> None:
    pass

Необходимо каждый job запустить в отдельном потоке. Затем, через первый job "запустить" какое-нибудь значение, например число 5. Второй job может, например, возводить данное число в квадрат и полученный результат передавать в третий job. Третий job будет, например, вычитать единицу и передавать результат в четвертый job и т.д. То есть, на выходе должен получиться некий "конвейер".

Кроме функции pipeline необходимо реализовать несколько любых произвольных функций job, которые будут делать некоторую работу и передавать результат дальше. Код необходимо написать в файле pipeline.py.