Skip to main content

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


Download files

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

Source Distribution

pipen_cli_require-0.13.1.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

pipen_cli_require-0.13.1-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

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

Hashes for pipen_cli_require-0.13.1.tar.gz
Algorithm Hash digest
SHA256 49ad29a090aaa756efa897ae63c57096b0086f8acd3def39e01a037f1937fba8
MD5 18ad27c3a7a431a6e4c4b27cdbe28123
BLAKE2b-256 c3964bfc96edf881d943e20c37809f80736ada3985af6495ed5be6f1380d2719

See more details on using hashes here.

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

Hashes for pipen_cli_require-0.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 210e648968d90872ceadcbf5942c952bfd02fd9517f8b3adf99e5c14a499c893
MD5 43044bc35339eacea4e8f87102052056
BLAKE2b-256 d68fb6355a10f6ce11bc41424575069eec86c4ba6d8f1f48d93af8e38a291599

See more details on using hashes here.

Supported by

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