Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

Jiggy Playbook Linter

Project description


Build Status Coverage Status Code style: black PyPI


Use Jiggy? Want to validate your playbook before deploying a pipeline? jpl or the JiggyPlaybookLinter allows you to validate your JiggyPlaybook outside of an execution.


From Source

$ git clone
$ cd jpl
$ python3.7 -m venv venv
$ source venv/bin/activate
$ pip install -e .

From Build

$ pip install jpl



  • jpl has a CLI for easy usage
$ jpl --help

Usage: jpl [OPTIONS]

  Click CLI entrypoint to run JiggyPlaybookLint.

  CLI Args:
  -v --verbose: Run `jpl` with verbosity.
  -s --skip: Skip "PASSED" rules in JiggyPlaybookLint Report.
  -p --playbook: Location of JiggyPlaybook to lint.


      click.echo - `with style`

  -v, --verbose        Run `jpl` with verbosity.
  -s, --skip           Skip `PASSED` rules in jpl report
  -p, --playbook TEXT  Filepath to Jiggy Playbook  [required]
  --help               Show this message and exit.

A minimal test case

$ jpl -v -p examples/jiggy-playbook.yml
   __        ______      __
  /\ \      /\  == \    /\ \
 _\_\ \     \ \  _-/    \ \ \____
/\_____\     \ \_\       \ \_____\
\/_____/iggy  \/_/laybook \/_____/inter

[F01] FunctionSourceExists - get-weekday:         FAILED      Declared path to function: `examples.utils.dates.GetWeekdayTask` does not exist.

Via python client with .validate()

import jpl

>>> client = jpl.JiggyPlaybookLint(path="path/to/playbook")
>>> result = client.validate()

The validate() method will return a tuple

The tuple denotes the validity of the playbook and the failing rules as JiggyRule objects

(False, [<JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>])


A JiggyPlaybook is broken down into chunks

  • Playbook

    • The entire .yml constitutes the "playbook"
  • Pipeline

    • The key pipeline including all tasks constitutes the "pipeline"
  • Task

    • Tasks are chunks of a pipeline having the below attributes:
      • name
      • description
      • function which contains source, params, output
      • requires
name: Hello, world!
description: Show off the usage of jpl
version: 0.0.1

  runner: sequential
    location: examples/secrets/.env-example
    source: jiggy.EnvSecrets

  - name: print-something
    description: Print something
      source: examples.utils.string_manipulation.PrintThis
      - type: str
        value: 'THIS PIPELINE IS GREAT'
      output: null
    requires: null



JiggyRule - JiggyRule.rule consists of 3 characters (i.e.) X01

  • X: (char) - letter describes corresponding ruleset

  • 0: (digit) - incrementing based on third digit

  • 0: (digit) - incrementing


Rule: PlaybookHasName

  • rule.rule = I (info) 0 (base 10) 1 (rule number 1)

Rule: PipelineHasDescription

  • rule.rule = P (pipeline) 0 (base 10) 1 (rule number 1)

Project details

Download files

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

Files for jpl, version 0.0.3
Filename, size File type Python version Upload date Hashes
Filename, size jpl-0.0.3-py3-none-any.whl (12.8 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size jpl-0.0.3.tar.gz (10.1 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page