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}}"

Pipen().set_starts(P1).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.3.2
[09/13/21 04:23:37] I main
[09/13/21 04:23:37] I main    ╭══════════════════════════════ PIPEN-0 ════════════════════════════════╮
[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           = pipen-0_results                                   ║
[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/pipen-0/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/pipen-0/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/pipen-0/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/pipen-0/p1/0/output/intermediate.txt
[09/13/21 04:23:38] I verbose P2: [0/0] out.outfile:
                      /home/pwwang/github/pipen/pipen-0_results/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 ./pipen-0_results/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

This version

0.3.9

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.3.9.tar.gz (37.1 kB view details)

Uploaded Source

Built Distribution

pipen-0.3.9-py3-none-any.whl (41.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pipen-0.3.9.tar.gz
  • Upload date:
  • Size: 37.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.0 CPython/3.11.0 Linux/5.15.0-1024-azure

File hashes

Hashes for pipen-0.3.9.tar.gz
Algorithm Hash digest
SHA256 142b0ad87e70a789d2282f0881e5f5dd1f206fa078db73ca342ca06e7a9f953c
MD5 c6e562615dfb9045fc49eb46caf1f94f
BLAKE2b-256 e08f5e09d14a801cd87e9e67739f279feb2ca0fc0e576f0e92e5f3a656111bba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pipen-0.3.9-py3-none-any.whl
  • Upload date:
  • Size: 41.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.0 CPython/3.11.0 Linux/5.15.0-1024-azure

File hashes

Hashes for pipen-0.3.9-py3-none-any.whl
Algorithm Hash digest
SHA256 f647bf64a5aef77eddd6f00d46128bb9a7e06ba4dd55e8c88c842a5f07162d43
MD5 9ecc267bad414528d615b8e1690f8e55
BLAKE2b-256 17e5761821e0ea2913e483b057c5c49e6953d3e09f345162a8c62578e4f55d4b

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