summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-17 05:09:09 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-17 05:09:09 +0000
commit69fe794a0fb37138b5b22e162e25a174198b00ca (patch)
tree69cde1e5886eecc063f212915f2b65aed543f8d1
parentbadb2715ac220224d769f34b01513547e52f27bc (diff)
automatic import of python-pipen
-rw-r--r--.gitignore1
-rw-r--r--python-pipen.spec614
-rw-r--r--sources1
3 files changed, 616 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..74bd7c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pipen-0.9.8.tar.gz
diff --git a/python-pipen.spec b/python-pipen.spec
new file mode 100644
index 0000000..a5b9f50
--- /dev/null
+++ b/python-pipen.spec
@@ -0,0 +1,614 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pipen
+Version: 0.9.8
+Release: 1
+Summary: A pipeline framework for python
+License: MIT
+URL: https://github.com/pwwang/pipen
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/89/8d/9c6dc54d1785255af9c0f2b040483e2d6d4b2c0f75ac4eef36237b5ba735/pipen-0.9.8.tar.gz
+BuildArch: noarch
+
+Requires: python3-liquidpy
+Requires: python3-pandas
+Requires: python3-enlighten
+Requires: python3-argx
+Requires: python3-xqute
+Requires: python3-simpleconf[toml]
+Requires: python3-pipda
+Requires: python3-varname
+
+%description
+<div align="center">
+ <img src="./pipen.png" width="320px">
+
+**A pipeline framework for python**
+
+</div>
+
+______________________________________________________________________
+
+[![Pypi][6]][7] [![Github][8]][9] ![Building][10] [![Docs and API][11]][1] [![Codacy][12]][13] [![Codacy coverage][14]][13] [![Deps][5]][23]
+
+[Documentation][1] | [ChangeLog][2] | [Examples][3] | [API][4]
+
+## Features
+
+- Easy to use
+- Nearly zero-configuration
+- Nice logging
+- Highly extendable
+
+## Installation
+
+```bash
+pip install -U pipen
+```
+
+## Quickstart
+
+`example.py`
+
+```python
+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()
+```
+
+```shell
+> echo -e "3\n2\n1" > /tmp/data.txt
+> python example.py
+```
+
+```log
+[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]
+```
+
+```shell
+> 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.
+
+- [`pipen-verbose`][15]: Add verbosal information in logs for pipen.
+- [`pipen-lock`][25]: Process lock for pipen to prevent multiple runs at the same time.
+- [`pipen-report`][16]: Generate report for pipen
+- [`pipen-filters`][17]: Add a set of useful filters for pipen templates.
+- [`pipen-diagram`][18]: Draw pipeline diagrams for pipen
+- [`pipen-annotate`][26]: Use docstring to annotate pipen processes
+- [`pipen-args`][19]: Command line argument parser for pipen
+- [`pipen-dry`][20]: Dry runner for pipen pipelines
+- [`pipen-log2file`][28]: Save running logs to file for pipen
+- [`pipen-board`][27]: Visualize configuration and running of pipen pipelines on the web
+- [`pipen-cli-init`][21]: A pipen CLI plugin to create a pipen project (pipeline)
+- [`pipen-cli-run`][22]: A pipen cli plugin to run a process or a pipeline
+- [`pipen-cli-require`][24]: A pipen cli plugin check the requirements of a pipeline
+
+
+[1]: https://pwwang.github.io/pipen
+[2]: https://pwwang.github.io/pipen/CHANGELOG
+[3]: https://pwwang.github.io/pipen/examples
+[4]: https://pwwang.github.io/pipen/api/pipen
+[5]: https://img.shields.io/librariesio/release/pypi/pipen?style=flat-square
+[6]: https://img.shields.io/pypi/v/pipen?style=flat-square
+[7]: https://pypi.org/project/pipen/
+[8]: https://img.shields.io/github/v/tag/pwwang/pipen?style=flat-square
+[9]: https://github.com/pwwang/pipen
+[10]: https://img.shields.io/github/actions/workflow/status/pwwang/pipen/build.yml?style=flat-square
+[11]: https://img.shields.io/github/actions/workflow/status/pwwang/pipen/docs.yml?label=docs&style=flat-square
+[12]: https://img.shields.io/codacy/grade/cf1c6c97e5c4480386a05b42dec10c6e?style=flat-square
+[13]: https://app.codacy.com/gh/pwwang/pipen
+[14]: https://img.shields.io/codacy/coverage/cf1c6c97e5c4480386a05b42dec10c6e?style=flat-square
+[15]: https://github.com/pwwang/pipen-verbose
+[16]: https://github.com/pwwang/pipen-report
+[17]: https://github.com/pwwang/pipen-filters
+[18]: https://github.com/pwwang/pipen-diagram
+[19]: https://github.com/pwwang/pipen-args
+[20]: https://github.com/pwwang/pipen-dry
+[21]: https://github.com/pwwang/pipen-cli-init
+[22]: https://github.com/pwwang/pipen-cli-run
+[23]: https://libraries.io/github/pwwang/pipen#repository_dependencies
+[24]: https://github.com/pwwang/pipen-cli-require
+[25]: https://github.com/pwwang/pipen-lock
+[26]: https://github.com/pwwang/pipen-annotate
+[27]: https://github.com/pwwang/pipen-board
+[28]: https://github.com/pwwang/pipen-log2file
+
+
+%package -n python3-pipen
+Summary: A pipeline framework for python
+Provides: python-pipen
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pipen
+<div align="center">
+ <img src="./pipen.png" width="320px">
+
+**A pipeline framework for python**
+
+</div>
+
+______________________________________________________________________
+
+[![Pypi][6]][7] [![Github][8]][9] ![Building][10] [![Docs and API][11]][1] [![Codacy][12]][13] [![Codacy coverage][14]][13] [![Deps][5]][23]
+
+[Documentation][1] | [ChangeLog][2] | [Examples][3] | [API][4]
+
+## Features
+
+- Easy to use
+- Nearly zero-configuration
+- Nice logging
+- Highly extendable
+
+## Installation
+
+```bash
+pip install -U pipen
+```
+
+## Quickstart
+
+`example.py`
+
+```python
+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()
+```
+
+```shell
+> echo -e "3\n2\n1" > /tmp/data.txt
+> python example.py
+```
+
+```log
+[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]
+```
+
+```shell
+> 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.
+
+- [`pipen-verbose`][15]: Add verbosal information in logs for pipen.
+- [`pipen-lock`][25]: Process lock for pipen to prevent multiple runs at the same time.
+- [`pipen-report`][16]: Generate report for pipen
+- [`pipen-filters`][17]: Add a set of useful filters for pipen templates.
+- [`pipen-diagram`][18]: Draw pipeline diagrams for pipen
+- [`pipen-annotate`][26]: Use docstring to annotate pipen processes
+- [`pipen-args`][19]: Command line argument parser for pipen
+- [`pipen-dry`][20]: Dry runner for pipen pipelines
+- [`pipen-log2file`][28]: Save running logs to file for pipen
+- [`pipen-board`][27]: Visualize configuration and running of pipen pipelines on the web
+- [`pipen-cli-init`][21]: A pipen CLI plugin to create a pipen project (pipeline)
+- [`pipen-cli-run`][22]: A pipen cli plugin to run a process or a pipeline
+- [`pipen-cli-require`][24]: A pipen cli plugin check the requirements of a pipeline
+
+
+[1]: https://pwwang.github.io/pipen
+[2]: https://pwwang.github.io/pipen/CHANGELOG
+[3]: https://pwwang.github.io/pipen/examples
+[4]: https://pwwang.github.io/pipen/api/pipen
+[5]: https://img.shields.io/librariesio/release/pypi/pipen?style=flat-square
+[6]: https://img.shields.io/pypi/v/pipen?style=flat-square
+[7]: https://pypi.org/project/pipen/
+[8]: https://img.shields.io/github/v/tag/pwwang/pipen?style=flat-square
+[9]: https://github.com/pwwang/pipen
+[10]: https://img.shields.io/github/actions/workflow/status/pwwang/pipen/build.yml?style=flat-square
+[11]: https://img.shields.io/github/actions/workflow/status/pwwang/pipen/docs.yml?label=docs&style=flat-square
+[12]: https://img.shields.io/codacy/grade/cf1c6c97e5c4480386a05b42dec10c6e?style=flat-square
+[13]: https://app.codacy.com/gh/pwwang/pipen
+[14]: https://img.shields.io/codacy/coverage/cf1c6c97e5c4480386a05b42dec10c6e?style=flat-square
+[15]: https://github.com/pwwang/pipen-verbose
+[16]: https://github.com/pwwang/pipen-report
+[17]: https://github.com/pwwang/pipen-filters
+[18]: https://github.com/pwwang/pipen-diagram
+[19]: https://github.com/pwwang/pipen-args
+[20]: https://github.com/pwwang/pipen-dry
+[21]: https://github.com/pwwang/pipen-cli-init
+[22]: https://github.com/pwwang/pipen-cli-run
+[23]: https://libraries.io/github/pwwang/pipen#repository_dependencies
+[24]: https://github.com/pwwang/pipen-cli-require
+[25]: https://github.com/pwwang/pipen-lock
+[26]: https://github.com/pwwang/pipen-annotate
+[27]: https://github.com/pwwang/pipen-board
+[28]: https://github.com/pwwang/pipen-log2file
+
+
+%package help
+Summary: Development documents and examples for pipen
+Provides: python3-pipen-doc
+%description help
+<div align="center">
+ <img src="./pipen.png" width="320px">
+
+**A pipeline framework for python**
+
+</div>
+
+______________________________________________________________________
+
+[![Pypi][6]][7] [![Github][8]][9] ![Building][10] [![Docs and API][11]][1] [![Codacy][12]][13] [![Codacy coverage][14]][13] [![Deps][5]][23]
+
+[Documentation][1] | [ChangeLog][2] | [Examples][3] | [API][4]
+
+## Features
+
+- Easy to use
+- Nearly zero-configuration
+- Nice logging
+- Highly extendable
+
+## Installation
+
+```bash
+pip install -U pipen
+```
+
+## Quickstart
+
+`example.py`
+
+```python
+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()
+```
+
+```shell
+> echo -e "3\n2\n1" > /tmp/data.txt
+> python example.py
+```
+
+```log
+[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]
+```
+
+```shell
+> 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.
+
+- [`pipen-verbose`][15]: Add verbosal information in logs for pipen.
+- [`pipen-lock`][25]: Process lock for pipen to prevent multiple runs at the same time.
+- [`pipen-report`][16]: Generate report for pipen
+- [`pipen-filters`][17]: Add a set of useful filters for pipen templates.
+- [`pipen-diagram`][18]: Draw pipeline diagrams for pipen
+- [`pipen-annotate`][26]: Use docstring to annotate pipen processes
+- [`pipen-args`][19]: Command line argument parser for pipen
+- [`pipen-dry`][20]: Dry runner for pipen pipelines
+- [`pipen-log2file`][28]: Save running logs to file for pipen
+- [`pipen-board`][27]: Visualize configuration and running of pipen pipelines on the web
+- [`pipen-cli-init`][21]: A pipen CLI plugin to create a pipen project (pipeline)
+- [`pipen-cli-run`][22]: A pipen cli plugin to run a process or a pipeline
+- [`pipen-cli-require`][24]: A pipen cli plugin check the requirements of a pipeline
+
+
+[1]: https://pwwang.github.io/pipen
+[2]: https://pwwang.github.io/pipen/CHANGELOG
+[3]: https://pwwang.github.io/pipen/examples
+[4]: https://pwwang.github.io/pipen/api/pipen
+[5]: https://img.shields.io/librariesio/release/pypi/pipen?style=flat-square
+[6]: https://img.shields.io/pypi/v/pipen?style=flat-square
+[7]: https://pypi.org/project/pipen/
+[8]: https://img.shields.io/github/v/tag/pwwang/pipen?style=flat-square
+[9]: https://github.com/pwwang/pipen
+[10]: https://img.shields.io/github/actions/workflow/status/pwwang/pipen/build.yml?style=flat-square
+[11]: https://img.shields.io/github/actions/workflow/status/pwwang/pipen/docs.yml?label=docs&style=flat-square
+[12]: https://img.shields.io/codacy/grade/cf1c6c97e5c4480386a05b42dec10c6e?style=flat-square
+[13]: https://app.codacy.com/gh/pwwang/pipen
+[14]: https://img.shields.io/codacy/coverage/cf1c6c97e5c4480386a05b42dec10c6e?style=flat-square
+[15]: https://github.com/pwwang/pipen-verbose
+[16]: https://github.com/pwwang/pipen-report
+[17]: https://github.com/pwwang/pipen-filters
+[18]: https://github.com/pwwang/pipen-diagram
+[19]: https://github.com/pwwang/pipen-args
+[20]: https://github.com/pwwang/pipen-dry
+[21]: https://github.com/pwwang/pipen-cli-init
+[22]: https://github.com/pwwang/pipen-cli-run
+[23]: https://libraries.io/github/pwwang/pipen#repository_dependencies
+[24]: https://github.com/pwwang/pipen-cli-require
+[25]: https://github.com/pwwang/pipen-lock
+[26]: https://github.com/pwwang/pipen-annotate
+[27]: https://github.com/pwwang/pipen-board
+[28]: https://github.com/pwwang/pipen-log2file
+
+
+%prep
+%autosetup -n pipen-0.9.8
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-pipen -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 0.9.8-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..82301a4
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+cf3f2bdd8b3bcfd5119ee8b1f9093bc6 pipen-0.9.8.tar.gz