Build large-scale task workflows using luigi, remote job submission, remote targets, and environment
Note: This project is currently under development. Version 0.1.0 will be the first, fully documented beta release, targetted for early 2020.
Use law to build complex and large-scale task workflows. It is build on top of luigi and adds abstractions for run locations, storage locations and software environments. Law strictly disentangles these building blocks and ensures they remain interchangeable and resource-opportunistic.
- CLI with auto-completion and interactive status and dependency inspection.
- Remote targets with automatic retries and local caching
- WebDAV, HTTP, Dropbox, SFTP, all WLCG protocols (srm, xrootd, rfio, dcap, gsiftp, …)
- Automatic submission to batch systems from within tasks
- HTCondor, LSF, gLite, ARC
- Environment sandboxing, configurable on task level
- Docker, Singularity, Sub-Shells
Installation and Dependencies
Install via pip:
pip install law
To run and test law, there are three docker images available on the DockerHub, corresponding to Python versions 2.7, 3.7 and 3.8. They are based on CentOS 7 and ship with the dependencies listed above, including gfal2.
docker run -ti riga/law:latest
- latest, py3, py38: Python 3.8.2
- py37: Python 3.7.6
- py2, py27: Python 2.7.5
All examples can be run either in a Jupyter notebook or a dedicated docker container. For the latter, do
docker run -ti riga/law:example <example_name>
- loremipsum: The hello world example of law.
- workflows: Law workflows.
- dropbox_targets: Working with targets that are stored on Dropbox.
- wlcg_targets: Working with targets that are stored on WLCG storage elements (dCache, EOS, …). TODO.
- htcondor_at_vispa: HTCondor workflows at the VISPA service.
- htcondor_at_cern: HTCondor workflows at the CERN batch infrastructure.
- grid_at_cern: Workflows that run jobs and store data on the WLCG.
- lsf_at_cern: LSF workflows at the CERN batch infrastructure.
- docker_sandboxes: Environment sandboxing using Docker. TODO.
- singularity_sandboxes: Environment sandboxing using Singularity. TODO.
- subshell_sandboxes: Environment sandboxing using Subshells. TODO.
- parallel_optimization: Parallel optimization using scikit optimize.
- notifications: Demonstration of slack and telegram task status notifications..
- CMS Single Top Analysis: Simple physics analysis using law.
Auto completion on the command-line
source "$( law completion )"
zsh is able to load and evaluate bash completion scripts via bashcompinit. In order for bashcompinit to work, you should run compinstall to enable completion scripts:
autoload -Uz compinstall && compinstall
After following the instructions, these lines should be present in your ~/.zshrc:
# The following lines were added by compinstall zstyle :compinstall filename '~/.zshrc' autoload -Uz compinit compinit # End of lines added by compinstall
If this is the case, just source the law completion script (which internally enables bashcompinit) and you’re good to go:
source "$( law completion )"
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size law-0.0.39.tar.gz (176.8 kB)||File type Source||Python version None||Upload date||Hashes View|