Skip to main content

A pipeline framework for python

Project description

A pipeline framework for python


Pypi Github Building Docs and API Codacy Codacy coverage Deps

Documentation | ChangeLog | Examples | API

Features

  • Easy to use
  • Nearly zero-configuration
  • Nice logging
  • Highly extendable

Installation

pip install -U pipen

Quickstart

example.py

from pipen import Proc, Pipen

class P1(Proc):
    """Sort input file"""
    input = "infile"
    input_data = ["/tmp/data.txt"]
    output = "outfile:file:intermediate.txt"
    script = "cat {{in.infile}} | sort > {{out.outfile}}"

class P2(Proc):
    """Paste line number"""
    requires = P1
    input = "infile"
    output = "outfile:file:result.txt"
    script = "paste <(seq 1 3) {{in.infile}} > {{out.outfile}}"

class MyPipeline(Pipen):
    starts = P1

if __name__ == "__main__":
    MyPipeline().run()
> echo -e "3\n2\n1" > /tmp/data.txt
> python example.py
[09/13/21 04:23:37] I main                    _____________________________________   __
[09/13/21 04:23:37] I main                    ___  __ \___  _/__  __ \__  ____/__  | / /
[09/13/21 04:23:37] I main                    __  /_/ /__  / __  /_/ /_  __/  __   |/ /
[09/13/21 04:23:37] I main                    _  ____/__/ /  _  ____/_  /___  _  /|  /
[09/13/21 04:23:37] I main                    /_/     /___/  /_/     /_____/  /_/ |_/
[09/13/21 04:23:37] I main
[09/13/21 04:23:37] I main                                 version: 0.9.0
[09/13/21 04:23:37] I main
[09/13/21 04:23:37] I main    ╭═════════════════════════════ MYPIPELINE ══════════════════════════════╮
[09/13/21 04:23:37] I main    ║  # procs          = 2                                                 ║
[09/13/21 04:23:37] I main    ║  plugins          = ['main', 'verbose-0.0.1']                         ║
[09/13/21 04:23:37] I main    ║  profile          = default                                           ║
[09/13/21 04:23:37] I main    ║  outdir           = MyPipeline-output                                 ║
[09/13/21 04:23:37] I main    ║  cache            = True                                              ║
[09/13/21 04:23:37] I main    ║  dirsig           = 1                                                 ║
[09/13/21 04:23:37] I main    ║  error_strategy   = ignore                                            ║
[09/13/21 04:23:37] I main    ║  forks            = 1                                                 ║
[09/13/21 04:23:37] I main    ║  lang             = bash                                              ║
[09/13/21 04:23:37] I main    ║  loglevel         = info                                              ║
[09/13/21 04:23:37] I main    ║  num_retries      = 3                                                 ║
[09/13/21 04:23:37] I main    ║  plugin_opts      = {}                                                ║
[09/13/21 04:23:37] I main    ║  plugins          = None                                              ║
[09/13/21 04:23:37] I main    ║  scheduler        = local                                             ║
[09/13/21 04:23:37] I main    ║  scheduler_opts   = {}                                                ║
[09/13/21 04:23:37] I main    ║  submission_batch = 8                                                 ║
[09/13/21 04:23:37] I main    ║  template         = liquid                                            ║
[09/13/21 04:23:37] I main    ║  template_opts    = {}                                                ║
[09/13/21 04:23:37] I main    ║  workdir          = ./.pipen                                          ║
[09/13/21 04:23:37] I main    ╰═══════════════════════════════════════════════════════════════════════╯
[09/13/21 04:23:37] I main
[09/13/21 04:23:37] I main    ╭───────────────────────────────── P1 ──────────────────────────────────╮
[09/13/21 04:23:37] I main    │ Sort input file                                                       │
[09/13/21 04:23:37] I main    ╰───────────────────────────────────────────────────────────────────────╯
[09/13/21 04:23:37] I main    P1: Workdir: '.pipen/MyPipeline/p1'
[09/13/21 04:23:37] I main    P1: <<< [START]
[09/13/21 04:23:37] I main    P1: >>> ['P2']
[09/13/21 04:23:37] I verbose P1: size: 1
[09/13/21 04:23:37] I verbose P1: [0/0] in.infile: /tmp/data.txt
[09/13/21 04:23:37] I verbose P1: [0/0] out.outfile:
                      /home/pwwang/github/pipen/.pipen/MyPipeline/p1/0/output/intermediate.txt
[09/13/21 04:23:38] I verbose P1: Time elapsed: 00:00:01.039s
[09/13/21 04:23:38] I main
[09/13/21 04:23:38] I main    ╭═════════════════════════════════ P2 ══════════════════════════════════╮
[09/13/21 04:23:38] I main    ║ Paste line number                                                     ║
[09/13/21 04:23:38] I main    ╰═══════════════════════════════════════════════════════════════════════╯
[09/13/21 04:23:38] I main    P2: Workdir: '.pipen/MyPipeline/p2'
[09/13/21 04:23:38] I main    P2: <<< ['P1']
[09/13/21 04:23:38] I main    P2: >>> [END]
[09/13/21 04:23:38] I verbose P2: size: 1
[09/13/21 04:23:38] I verbose P2: [0/0] in.infile:
                      /home/pwwang/github/pipen/.pipen/MyPipeline/p1/0/output/intermediate.txt
[09/13/21 04:23:38] I verbose P2: [0/0] out.outfile:
                      /home/pwwang/github/pipen/MyPipeline-output/P2/result.txt
[09/13/21 04:23:40] I verbose P2: Time elapsed: 00:00:02.074s
[09/13/21 04:23:40] I main

                PIPEN-0: 100%|████████████████████████████████████████| 2/2 [00:04<00:00, 0.56 procs/s]
> cat ./MyPipeline-output/P2/result.txt
1       1
2       2
3       3

Examples

See more examples at examples/ and a more realcase example at: https://github.com/pwwang/pipen-report/tree/master/example

Plugin gallery

Plugins make pipen even better.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pipen-0.10.1.tar.gz (40.5 kB view details)

Uploaded Source

Built Distribution

pipen-0.10.1-py3-none-any.whl (45.8 kB view details)

Uploaded Python 3

File details

Details for the file pipen-0.10.1.tar.gz.

File metadata

  • Download URL: pipen-0.10.1.tar.gz
  • Upload date:
  • Size: 40.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-1038-azure

File hashes

Hashes for pipen-0.10.1.tar.gz
Algorithm Hash digest
SHA256 8292c8a76a987c21c4b2e265c252eaab4772f6ac463e3593ddb14887dcea9669
MD5 4493a01ce23f681c2a1ff19d77d6c79a
BLAKE2b-256 a4f0e75badf8b9c3fc3518b6fcc4b44b3d0252a78d3080005fb26f840870a2f7

See more details on using hashes here.

File details

Details for the file pipen-0.10.1-py3-none-any.whl.

File metadata

  • Download URL: pipen-0.10.1-py3-none-any.whl
  • Upload date:
  • Size: 45.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-1038-azure

File hashes

Hashes for pipen-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9ed091f654cb2096dfd1cc40da9ec374226f198808e86d791a19a156f0be8da6
MD5 f9c699ef2ce45357429b0dda508aa3a9
BLAKE2b-256 8c37f2e38db86f0b006e8f5f8f512221e5757a00ea16e96fd6f43835e4eda601

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page