A pipen cli plugin to check requirements for processes of a pipeline
Project description
pipen-cli-require
Checking the requirements for processes of a pipen pipeline
Install
pip install -U pipen-cli-require
Usage
Defining requirements of a process
# example_pipeline.py
from pipen import Pipen, Proc
class P1(Proc):
"""Process 1
Requires:
pipen: Run `pip install -U pipen` to install
- check: |
{{proc.lang}} -c "import pipen"
liquidpy: Run `pip install -U liquidpy` to install
- check: |
{{proc.lang}} -c "import liquid"
nonexist: Run `pip install -U nonexist` to install
- check: |
{{proc.lang}} -c "import nonexist"
conditional:
- if: {{envs.require_conditional}}
- check:
{{proc.lang}} -c "import optional"
"""
input = "a"
output = "outfile:file:out.txt"
envs = {"require_conditional": False}
lang = "python"
# Setup the pipeline
# Must be outside __main__
# Or define a function to return the pipeline
class Pipeline(Pipen):
starts = P1
if __name__ == '__main__':
# Pipeline must run with __main__
Pipeline().run()
Parsing process requirements using API
from pipen_cli_require import parse_proc_requirements
def parse_proc_requirements(
proc: Type[Proc]
) -> Tuple[OrderedDiot, OrderedDiot]:
"""Parse the requirements of a process
Args:
proc: The process class
Returns:
A tuple of two OrderedDiot's.
The first one is the annotated sections by pipen_annotate
The second one is the requirements. The key is the name of the
requirement, the value is a dict with message, check and if_ keys.
"""
Checking the requirements via the CLI
> pipen require --verbose --ncores 2 example_pipeline.py:pipeline
Checking requirements for pipeline: PIPEN-0
│
└── P1: Process 1
├── ✅ pipen
├── ✅ liquidpy
├── ❎ nonexist: Run `pip install -U nonexist` to install
│ └── Traceback (most recent call last):
│ File "<string>", line 1, in <module>
│ ModuleNotFoundError: No module named 'nonexist'
│
└── ⏩ conditional (skipped by if-statement)
Checking requirements with runtime arguments
For example, when I use a different python to run the pipeline:
Add this to the head of example_pipeline.py
:
import pipen_args
See also tests/pipen_args_pipeline.py
Then specify the path of the python to use:
pipen require example_pipeline.py:pipeline --P1.lang /path/to/another/python
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
Built Distribution
File details
Details for the file pipen_cli_require-0.13.1.tar.gz
.
File metadata
- Download URL: pipen_cli_require-0.13.1.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-1021-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
49ad29a090aaa756efa897ae63c57096b0086f8acd3def39e01a037f1937fba8
|
|
MD5 |
18ad27c3a7a431a6e4c4b27cdbe28123
|
|
BLAKE2b-256 |
c3964bfc96edf881d943e20c37809f80736ada3985af6495ed5be6f1380d2719
|
File details
Details for the file pipen_cli_require-0.13.1-py3-none-any.whl
.
File metadata
- Download URL: pipen_cli_require-0.13.1-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-1021-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
210e648968d90872ceadcbf5942c952bfd02fd9517f8b3adf99e5c14a499c893
|
|
MD5 |
43044bc35339eacea4e8f87102052056
|
|
BLAKE2b-256 |
d68fb6355a10f6ce11bc41424575069eec86c4ba6d8f1f48d93af8e38a291599
|