Name | law JSON |
Version |
0.1.19
JSON |
| download |
home_page | https://github.com/riga/law |
Summary | Build large-scale task workflows using luigi, remote job submission, remote targets, and environment |
upload_time | 2024-10-18 16:54:36 |
maintainer | None |
docs_url | None |
author | Marcel Rieger |
requires_python | !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,<4,>=2.7 |
license | BSD-3-Clause |
keywords |
luigi
workflow
pipeline
remote
gfal
submission
cluster
grid
condor
lsf
glite
arc
sandboxing
docker
singularity
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<!-- marker-before-logo -->
<p align="center">
<a href="https://github.com/riga/law">
<img src="https://media.githubusercontent.com/media/riga/law/master/assets/logo.png" />
</a>
</p>
<!-- marker-after-logo -->
<!-- marker-before-badges -->
<p align="center">
<a href="https://github.com/riga/law/actions?query=workflow%3A%22Lint+and+test%22">
<img alt="Build status" src="https://github.com/riga/law/workflows/Lint%20and%20test/badge.svg" />
</a>
<a href="https://github.com/riga/law/actions?query=workflow%3A%22Deploy+images%22">
<img alt="Docker images" src="https://github.com/riga/law/workflows/Deploy%20images/badge.svg" />
</a>
<a href="http://law.readthedocs.io/en/latest">
<img alt="Documentation status" src="https://readthedocs.org/projects/law/badge/?version=latest" />
</a>
<a href="https://pypi.python.org/pypi/law">
<img alt="Package version" src="https://img.shields.io/pypi/v/law.svg?style=flat" />
</a>
<a href="https://github.com/riga/law/blob/master/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/riga/law.svg" />
</a>
<a href="https://zenodo.org/badge/latestdoi/75482295">
<img alt="DOI" src="https://zenodo.org/badge/75482295.svg" />
</a>
</p>
<!-- marker-after-badges -->
<!-- marker-before-header -->
> [!NOTE]
> This project is currently under development.
> - Version 1.0.0 will support Python ≥3.7 and is developed in the [release_prep branch](https://github.com/riga/law/tree/release_prep).
> - There will be a legacy branch with Python 2.7 and ≤3.6 support that, however, won't receive any new features.
> - The release is targetted for spring 2024.
Use law to build complex and large-scale task workflows.
It is build on top of [luigi](https://github.com/spotify/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.
Key features:
- 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, dcap, gsiftp, webdav, ...)
- Automatic submission to batch systems from within tasks
- HTCondor, LSF, gLite, ARC, Slurm, CMS-CRAB
- Environment sandboxing, configurable on task level
- Docker, Singularity, Sub-Shells, Virutal envs
<!-- marker-after-header -->
## Contents
<!-- marker-before-contents -->
- [First steps](#first-steps)
- [Installation and dependencies](#installation-and-dependencies)
- [Usage at CERN](#usage-at-cern)
- [Overcomplete example config](#overcomplete-example-config)
- [Projects using law](#projects-using-law)
- [Examples](#examples)
- [Further topics](#further-topics)
- [Auto completion on the command-line](#auto-completion-on-the-command-line)
- [Development](#development)
- [Tests](#tests)
- [Contributors](#contributors)
<!-- marker-after-contents -->
<!-- marker-before-body -->
## First steps
### Installation and dependencies
Install via [pip](https://pypi.python.org/pypi/law)
```shell
pip install law
```
or [conda / (micro)mamba](https://anaconda.org/conda-forge/law)
```shel
conda install -c conda-forge law
```
If you plan to use remote targets, the (default) implementation also requires [gfal2](https://dmc-docs.web.cern.ch/dmc-docs/gfal2/gfal2.html) and [gfal2-python](https://pypi.python.org/pypi/gfal2-python) (optional) to be installed, either via pip or conda / (micro)mamba.
```shell
conda install -c conda-forge gfal2 gfal2-util
```
### Usage at CERN
See the [wiki](https://github.com/riga/law/wiki/Usage-at-CERN).
### Overcomplete example config
See [law.cfg.example](https://github.com/riga/law/tree/master/law.cfg.example).
## Projects using law
- CMS Di-Higgs Inference Tools:
- Basis for statistical analysis for all Di-Higgs searches in CMS, starting at datacard-level
- [repo](https://gitlab.cern.ch/hh/tools/inference), [docs](https://cms-hh.web.cern.ch/cms-hh/tools/inference/index.html)
- columnflow ([+ all analyses using it](https://github.com/columnflow/columnflow#projects-using-columnflow)):
- Python based, fully automated, columnar framework, including job submission, resolution of systematics and ML pipelines, starting at NanoAOD-level with an optimized multi-threaded column reader
- [repo](https://github.com/columnflow/columnflow), [docs](http://columnflow.readthedocs.io), [task structure](https://github.com/columnflow/columnflow/wiki#default-task-graph)
- CMS B-Tag SF Measurement:
- Automated workflow for deriving shape-calibrating b-tag scale factors, starting at MiniAOD-level
- [repo](https://github.com/cms-btv-pog/jet-tagging-sf)
- CMS Tau POG ML Tools:
- Preprocessing pipeline for ML trainings in the TAU group
- [repo](https://github.com/cms-tau-pog/TauMLTools)
- CMS HLT Config Parser:
- Collects information from various databases (HLT, bril, etc.) and shows menus, triggers paths, filter names for configurable MC datasets or data runs
- [repo](https://github.com/riga/cms-hlt-parser)
- RWTH-CMS Analysis Framework:
- Basis for multiple CMS analyses ranging from Di-Higgs, to single Higgs and b-tag SF measurements, starting at NanoAOD-level and based on coffea processors
- [repo](https://git.rwth-aachen.de/3pia/cms_analyses/common/-/tree/master/)
- CIEMAT-CMS Analysis Framework:
- Python and RDataFrame based framework starting from NanoAOD and targetting multiple CMS analyses
- [repo](https://gitlab.cern.ch/cms-phys-ciemat/nanoaod_base_analysis/)
- CMS 3D Z+jet 13TeV analysis
- Analysis workflow management from NTuple production to final plots and fits
- [repo](https://gitlab.etp.kit.edu/cverstege/zjet-analysis)
- NP-correction derivation tool
- MC generation with Herwig and analysis of generated events with Rivet
- [repo](https://github.com/HerrHorizontal/herwig-run)
- CMS SUSY Searches at DESY
- Analysis framework for CMS SUSY searches going from custom NanoAODs -> NTuple production -> DNN-based inference -> final plots and fits
- [repo](https://github.com/frengelk/Susy1LeptonAnalysis)
- Kingmaker (CMS Ntuple Production with CROWN)
- Ntuple conversion from CMS nanoAOD to analysis Ntuples using the CROWN framework. Also includes the training of an event classifier on those ntuples.
- [repo](https://github.com/KIT-CMS/KingMaker), [CROWN](https://github.com/KIT-CMS/CROWN)
If your project uses law but is not yet listed here, feel free to open a pull request or mention your project details in a new [issue](https://github.com/riga/law/issues/new?assignees=riga&labels=docs&template=register-project.md) and it will be added.
## Examples
All examples can be run either in a Jupyter notebook or a dedicated docker container.
For the latter, do
```shell
docker run -ti riga/law:example <example_name>
```
- [loremipsum](https://github.com/riga/law/tree/master/examples/loremipsum): The *hello world* example of law.
- [workflows](https://github.com/riga/law/tree/master/examples/workflows): Law workflows.
- [workflow_parameters](https://github.com/riga/law/tree/master/examples/workflows): Alternative way of parametrizing workflows with explicit branch parameters.
- [notebooks](https://github.com/riga/law/tree/master/examples/notebooks): Examples showing how to use and work with law in notebooks.
- [dropbox_targets](https://github.com/riga/law/tree/master/examples/dropbox_targets): Working with targets that are stored on Dropbox.
- [wlcg_targets](https://github.com/riga/law/tree/master/examples/wlcg_targets): Working with targets that are stored on WLCG storage elements (dCache, EOS, ...). TODO.
- [htcondor_at_vispa](https://github.com/riga/law/tree/master/examples/htcondor_at_vispa): HTCondor workflows at the [VISPA service](https://vispa.physik.rwth-aachen.de).
- [htcondor_at_cern](https://github.com/riga/law/tree/master/examples/htcondor_at_cern): HTCondor workflows at the CERN batch infrastructure.
- [CMS Crab at CERN](https://github.com/riga/law_example_CMSCrabWorkflows): CMS Crab workflows executed from lxplus at CERN.
- [sequential_htcondor_at_cern](https://github.com/riga/law/tree/master/examples/sequential_htcondor_at_cern): Continuation of the [htcondor_at_cern](https://github.com/riga/law/tree/master/examples/htcondor_at_cern) example, showing sequential jobs that eagerly start once jobs running previous requirements succeeded.
- [htcondor_at_naf](https://github.com/riga/law/tree/master/examples/htcondor_at_naf): HTCondor workflows at German [National Analysis Facility (NAF)](https://confluence.desy.de/display/IS/NAF+-+National+Analysis+Facility).
- [slurm_at_maxwell](https://github.com/riga/law/tree/master/examples/slurm_at_maxwell): Slurm workflows at the [Desy Maxwell cluster](https://confluence.desy.de/display/MXW/Maxwell+Cluster).
- [grid_at_cern](https://github.com/riga/law_example_WLCG): Workflows that run jobs and store data on the WLCG.
- [lsf_at_cern](https://github.com/riga/law/tree/master/examples/lsf_at_cern): LSF workflows at the CERN batch infrastructure.
- [docker_sandboxes](https://github.com/riga/law/tree/master/examples/docker_sandboxes): Environment sandboxing using Docker. TODO.
- [singularity_sandboxes](https://github.com/riga/law/tree/master/examples/singularity_sandboxes): Environment sandboxing using Singularity. TODO.
- [subshell_sandboxes](https://github.com/riga/law/tree/master/examples/subshell_sandboxes): Environment sandboxing using Subshells. TODO.
- [parallel_optimization](https://github.com/riga/law/tree/master/examples/parallel_optimization): Parallel optimization using [scikit optimize](https://scikit-optimize.github.io).
- [notifications](https://github.com/riga/law/tree/master/examples/notifications): Demonstration of slack and telegram task status notifications..
- [CMS Single Top Analysis](https://github.com/riga/law_example_CMSSingleTopAnalysis): Simple physics analysis using law.
## Further topics
### Auto completion on the command-line
**bash**
```shell
source "$( law completion )"
```
**zsh**
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:
```shell
autoload -Uz compinstall && compinstall
```
After following the instructions, these lines should be present in your `~/.zshrc`:
```shell
# The following lines were added by compinstall
zstyle :compinstall filename '~/.zshrc'
autoload -Uz +X compinit && compinit
autoload -Uz +X bashcompinit && bashcompinit
# 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:
```shell
source "$( law completion )"
```
## Development
- Source hosted at [GitHub](https://github.com/riga/law)
- Report issues, questions, feature requests on [GitHub Issues](https://github.com/riga/law/issues)
### Tests
To run and test law, there are various docker `riga/law` images available on the [DockerHub](https://cloud.docker.com/u/riga/repository/docker/riga/law), corresponding to different OS and Python versions (based on [micromamba](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html)).
Start them via
```shell
docker run -ti riga/law:<the_tag>
```
| OS | Python | Tags |
| ----------- | ------ | ----------------------------------------- |
| AlmaLinux 9 | 3.11 | a9-py311, a9-py3, a9, py311, py3, latest |
| AlmaLinux 9 | 3.10 | a9-py310, py310 |
| AlmaLinux 9 | 3.9 | a9-py39, py39 |
| AlmaLinux 9 | 3.8 | a9-py38, py38 |
| AlmaLinux 9 | 3.7 | a9-py37, py37 |
| CentOS 8 | 3.11 | c8-py311, c8-py3, c8 |
| CentOS 8 | 3.10 | c8-py310 |
| CentOS 8 | 3.9 | c8-py39 |
| CentOS 8 | 3.8 | c8-py38 |
| CentOS 8 | 3.7 | c8-py37 |
| CentOS 7 | 3.10 | c7-py310, c7-py3, c7 |
| CentOS 7 | 3.9 | c7-py39 |
| CentOS 7 | 3.8 | c7-py38 |
| CentOS 7 | 3.7 | c7-py37 |
| CentOS 7 | 3.6 | c7-py36, py36 (removed soon) |
| CentOS 7 | 2.7 | c7-py27, c7-py2, py27, py2 (removed soon) |
### Contributors
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://github.com/riga"><img src="https://avatars.githubusercontent.com/u/1908734?v=4?s=100" width="100px;" alt="Marcel Rieger"/><br /><sub><b>Marcel Rieger</b></sub></a><br /><a href="https://github.com/riga/law/commits?author=riga" title="Code">💻</a> <a href="https://github.com/riga/law/pulls?q=is%3Apr+reviewed-by%3Ariga" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-riga" title="Maintenance">🚧</a> <a href="https://github.com/riga/law/commits?author=riga" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pfackeldey"><img src="https://avatars.githubusercontent.com/u/18463582?v=4?s=100" width="100px;" alt="Peter Fackeldey"/><br /><sub><b>Peter Fackeldey</b></sub></a><br /><a href="https://github.com/riga/law/commits?author=pfackeldey" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yrath"><img src="https://avatars.githubusercontent.com/u/20044510?v=4?s=100" width="100px;" alt="Yannik Rath"/><br /><sub><b>Yannik Rath</b></sub></a><br /><a href="https://github.com/riga/law/commits?author=yrath" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jaimeleonh"><img src="https://avatars.githubusercontent.com/u/47629805?v=4?s=100" width="100px;" alt="Jaime Leon Holgado"/><br /><sub><b>Jaime Leon Holgado</b></sub></a><br /><a href="https://github.com/riga/law/commits?author=jaimeleonh" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lmoureaux"><img src="https://avatars.githubusercontent.com/u/22327575?v=4?s=100" width="100px;" alt="Louis Moureaux"/><br /><sub><b>Louis Moureaux</b></sub></a><br /><a href="https://github.com/riga/law/commits?author=lmoureaux" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://www.linkedin.com/in/lgeiger"><img src="https://avatars.githubusercontent.com/u/13285808?v=4?s=100" width="100px;" alt="Lukas Geiger"/><br /><sub><b>Lukas Geiger</b></sub></a><br /><a href="https://github.com/riga/law/commits?author=lgeiger" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://too.gy"><img src="https://avatars.githubusercontent.com/u/694873?v=4?s=100" width="100px;" alt="Valentin Iovene"/><br /><sub><b>Valentin Iovene</b></sub></a><br /><a href="https://github.com/riga/law/commits?author=tgy" title="Code">💻</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.
<!-- marker-after-body -->
Raw data
{
"_id": null,
"home_page": "https://github.com/riga/law",
"name": "law",
"maintainer": null,
"docs_url": null,
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,<4,>=2.7",
"maintainer_email": null,
"keywords": "luigi workflow pipeline remote gfal submission cluster grid condor lsf glite arc sandboxing docker singularity",
"author": "Marcel Rieger",
"author_email": "github.riga@icloud.com",
"download_url": "https://files.pythonhosted.org/packages/3e/72/257f7a64f59c57aa8bee64c1b2e448787bfecdf204cd839c40ea43a2ee45/law-0.1.19.tar.gz",
"platform": null,
"description": "<!-- marker-before-logo -->\n\n<p align=\"center\">\n <a href=\"https://github.com/riga/law\">\n <img src=\"https://media.githubusercontent.com/media/riga/law/master/assets/logo.png\" />\n </a>\n</p>\n\n<!-- marker-after-logo -->\n\n<!-- marker-before-badges -->\n\n<p align=\"center\">\n <a href=\"https://github.com/riga/law/actions?query=workflow%3A%22Lint+and+test%22\">\n <img alt=\"Build status\" src=\"https://github.com/riga/law/workflows/Lint%20and%20test/badge.svg\" />\n </a>\n <a href=\"https://github.com/riga/law/actions?query=workflow%3A%22Deploy+images%22\">\n <img alt=\"Docker images\" src=\"https://github.com/riga/law/workflows/Deploy%20images/badge.svg\" />\n </a>\n <a href=\"http://law.readthedocs.io/en/latest\">\n <img alt=\"Documentation status\" src=\"https://readthedocs.org/projects/law/badge/?version=latest\" />\n </a>\n <a href=\"https://pypi.python.org/pypi/law\">\n <img alt=\"Package version\" src=\"https://img.shields.io/pypi/v/law.svg?style=flat\" />\n </a>\n <a href=\"https://github.com/riga/law/blob/master/LICENSE\">\n <img alt=\"License\" src=\"https://img.shields.io/github/license/riga/law.svg\" />\n </a>\n <a href=\"https://zenodo.org/badge/latestdoi/75482295\">\n <img alt=\"DOI\" src=\"https://zenodo.org/badge/75482295.svg\" />\n </a>\n</p>\n\n<!-- marker-after-badges -->\n\n<!-- marker-before-header -->\n\n> [!NOTE] \n> This project is currently under development.\n> - Version 1.0.0 will support Python \u22653.7 and is developed in the [release_prep branch](https://github.com/riga/law/tree/release_prep).\n> - There will be a legacy branch with Python 2.7 and \u22643.6 support that, however, won't receive any new features.\n> - The release is targetted for spring 2024.\n\nUse law to build complex and large-scale task workflows.\nIt is build on top of [luigi](https://github.com/spotify/luigi) and adds abstractions for **run locations**, **storage locations** and **software environments**.\nLaw strictly disentangles these building blocks and ensures they remain interchangeable and resource-opportunistic.\n\nKey features:\n\n- CLI with auto-completion and interactive status and dependency inspection.\n- Remote targets with automatic retries and local caching\n - WebDAV, HTTP, Dropbox, SFTP, all WLCG protocols (srm, xrootd, dcap, gsiftp, webdav, ...)\n- Automatic submission to batch systems from within tasks\n - HTCondor, LSF, gLite, ARC, Slurm, CMS-CRAB\n- Environment sandboxing, configurable on task level\n - Docker, Singularity, Sub-Shells, Virutal envs\n\n<!-- marker-after-header -->\n\n\n## Contents\n\n<!-- marker-before-contents -->\n\n- [First steps](#first-steps)\n - [Installation and dependencies](#installation-and-dependencies)\n - [Usage at CERN](#usage-at-cern)\n - [Overcomplete example config](#overcomplete-example-config)\n- [Projects using law](#projects-using-law)\n- [Examples](#examples)\n- [Further topics](#further-topics)\n - [Auto completion on the command-line](#auto-completion-on-the-command-line)\n- [Development](#development)\n - [Tests](#tests)\n - [Contributors](#contributors)\n\n<!-- marker-after-contents -->\n\n\n<!-- marker-before-body -->\n\n## First steps\n\n### Installation and dependencies\n\nInstall via [pip](https://pypi.python.org/pypi/law)\n\n```shell\npip install law\n```\n\nor [conda / (micro)mamba](https://anaconda.org/conda-forge/law)\n\n```shel\nconda install -c conda-forge law\n```\n\nIf you plan to use remote targets, the (default) implementation also requires [gfal2](https://dmc-docs.web.cern.ch/dmc-docs/gfal2/gfal2.html) and [gfal2-python](https://pypi.python.org/pypi/gfal2-python) (optional) to be installed, either via pip or conda / (micro)mamba.\n\n```shell\nconda install -c conda-forge gfal2 gfal2-util\n```\n\n\n### Usage at CERN\n\nSee the [wiki](https://github.com/riga/law/wiki/Usage-at-CERN).\n\n\n### Overcomplete example config\n\nSee [law.cfg.example](https://github.com/riga/law/tree/master/law.cfg.example).\n\n\n## Projects using law\n\n- CMS Di-Higgs Inference Tools:\n - Basis for statistical analysis for all Di-Higgs searches in CMS, starting at datacard-level\n - [repo](https://gitlab.cern.ch/hh/tools/inference), [docs](https://cms-hh.web.cern.ch/cms-hh/tools/inference/index.html)\n- columnflow ([+ all analyses using it](https://github.com/columnflow/columnflow#projects-using-columnflow)):\n - Python based, fully automated, columnar framework, including job submission, resolution of systematics and ML pipelines, starting at NanoAOD-level with an optimized multi-threaded column reader\n - [repo](https://github.com/columnflow/columnflow), [docs](http://columnflow.readthedocs.io), [task structure](https://github.com/columnflow/columnflow/wiki#default-task-graph)\n- CMS B-Tag SF Measurement:\n - Automated workflow for deriving shape-calibrating b-tag scale factors, starting at MiniAOD-level\n - [repo](https://github.com/cms-btv-pog/jet-tagging-sf)\n- CMS Tau POG ML Tools:\n - Preprocessing pipeline for ML trainings in the TAU group\n - [repo](https://github.com/cms-tau-pog/TauMLTools)\n- CMS HLT Config Parser:\n - Collects information from various databases (HLT, bril, etc.) and shows menus, triggers paths, filter names for configurable MC datasets or data runs\n - [repo](https://github.com/riga/cms-hlt-parser)\n- RWTH-CMS Analysis Framework:\n - Basis for multiple CMS analyses ranging from Di-Higgs, to single Higgs and b-tag SF measurements, starting at NanoAOD-level and based on coffea processors\n - [repo](https://git.rwth-aachen.de/3pia/cms_analyses/common/-/tree/master/)\n- CIEMAT-CMS Analysis Framework:\n - Python and RDataFrame based framework starting from NanoAOD and targetting multiple CMS analyses\n - [repo](https://gitlab.cern.ch/cms-phys-ciemat/nanoaod_base_analysis/)\n- CMS 3D Z+jet 13TeV analysis\n - Analysis workflow management from NTuple production to final plots and fits\n - [repo](https://gitlab.etp.kit.edu/cverstege/zjet-analysis)\n- NP-correction derivation tool\n - MC generation with Herwig and analysis of generated events with Rivet\n - [repo](https://github.com/HerrHorizontal/herwig-run)\n- CMS SUSY Searches at DESY\n - Analysis framework for CMS SUSY searches going from custom NanoAODs -> NTuple production -> DNN-based inference -> final plots and fits\n - [repo](https://github.com/frengelk/Susy1LeptonAnalysis)\n- Kingmaker (CMS Ntuple Production with CROWN)\n - Ntuple conversion from CMS nanoAOD to analysis Ntuples using the CROWN framework. Also includes the training of an event classifier on those ntuples.\n - [repo](https://github.com/KIT-CMS/KingMaker), [CROWN](https://github.com/KIT-CMS/CROWN)\n\nIf your project uses law but is not yet listed here, feel free to open a pull request or mention your project details in a new [issue](https://github.com/riga/law/issues/new?assignees=riga&labels=docs&template=register-project.md) and it will be added.\n\n\n## Examples\n\nAll examples can be run either in a Jupyter notebook or a dedicated docker container.\nFor the latter, do\n\n```shell\ndocker run -ti riga/law:example <example_name>\n```\n\n- [loremipsum](https://github.com/riga/law/tree/master/examples/loremipsum): The *hello world* example of law.\n- [workflows](https://github.com/riga/law/tree/master/examples/workflows): Law workflows.\n- [workflow_parameters](https://github.com/riga/law/tree/master/examples/workflows): Alternative way of parametrizing workflows with explicit branch parameters.\n- [notebooks](https://github.com/riga/law/tree/master/examples/notebooks): Examples showing how to use and work with law in notebooks.\n- [dropbox_targets](https://github.com/riga/law/tree/master/examples/dropbox_targets): Working with targets that are stored on Dropbox.\n- [wlcg_targets](https://github.com/riga/law/tree/master/examples/wlcg_targets): Working with targets that are stored on WLCG storage elements (dCache, EOS, ...). TODO.\n- [htcondor_at_vispa](https://github.com/riga/law/tree/master/examples/htcondor_at_vispa): HTCondor workflows at the [VISPA service](https://vispa.physik.rwth-aachen.de).\n- [htcondor_at_cern](https://github.com/riga/law/tree/master/examples/htcondor_at_cern): HTCondor workflows at the CERN batch infrastructure.\n- [CMS Crab at CERN](https://github.com/riga/law_example_CMSCrabWorkflows): CMS Crab workflows executed from lxplus at CERN.\n- [sequential_htcondor_at_cern](https://github.com/riga/law/tree/master/examples/sequential_htcondor_at_cern): Continuation of the [htcondor_at_cern](https://github.com/riga/law/tree/master/examples/htcondor_at_cern) example, showing sequential jobs that eagerly start once jobs running previous requirements succeeded.\n- [htcondor_at_naf](https://github.com/riga/law/tree/master/examples/htcondor_at_naf): HTCondor workflows at German [National Analysis Facility (NAF)](https://confluence.desy.de/display/IS/NAF+-+National+Analysis+Facility).\n- [slurm_at_maxwell](https://github.com/riga/law/tree/master/examples/slurm_at_maxwell): Slurm workflows at the [Desy Maxwell cluster](https://confluence.desy.de/display/MXW/Maxwell+Cluster).\n- [grid_at_cern](https://github.com/riga/law_example_WLCG): Workflows that run jobs and store data on the WLCG.\n- [lsf_at_cern](https://github.com/riga/law/tree/master/examples/lsf_at_cern): LSF workflows at the CERN batch infrastructure.\n- [docker_sandboxes](https://github.com/riga/law/tree/master/examples/docker_sandboxes): Environment sandboxing using Docker. TODO.\n- [singularity_sandboxes](https://github.com/riga/law/tree/master/examples/singularity_sandboxes): Environment sandboxing using Singularity. TODO.\n- [subshell_sandboxes](https://github.com/riga/law/tree/master/examples/subshell_sandboxes): Environment sandboxing using Subshells. TODO.\n- [parallel_optimization](https://github.com/riga/law/tree/master/examples/parallel_optimization): Parallel optimization using [scikit optimize](https://scikit-optimize.github.io).\n- [notifications](https://github.com/riga/law/tree/master/examples/notifications): Demonstration of slack and telegram task status notifications..\n- [CMS Single Top Analysis](https://github.com/riga/law_example_CMSSingleTopAnalysis): Simple physics analysis using law.\n\n\n## Further topics\n\n### Auto completion on the command-line\n\n**bash**\n\n```shell\nsource \"$( law completion )\"\n```\n\n**zsh**\n\nzsh is able to load and evaluate bash completion scripts via `bashcompinit`.\nIn order for `bashcompinit` to work, you should run `compinstall` to enable completion scripts:\n\n```shell\nautoload -Uz compinstall && compinstall\n```\n\nAfter following the instructions, these lines should be present in your `~/.zshrc`:\n\n```shell\n# The following lines were added by compinstall\nzstyle :compinstall filename '~/.zshrc'\n\nautoload -Uz +X compinit && compinit\nautoload -Uz +X bashcompinit && bashcompinit\n# End of lines added by compinstall\n```\n\nIf this is the case, just source the law completion script (which internally enables `bashcompinit`) and you're good to go:\n\n```shell\nsource \"$( law completion )\"\n```\n\n\n## Development\n\n- Source hosted at [GitHub](https://github.com/riga/law)\n- Report issues, questions, feature requests on [GitHub Issues](https://github.com/riga/law/issues)\n\n\n### Tests\n\nTo run and test law, there are various docker `riga/law` images available on the [DockerHub](https://cloud.docker.com/u/riga/repository/docker/riga/law), corresponding to different OS and Python versions (based on [micromamba](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html)).\nStart them via\n\n```shell\ndocker run -ti riga/law:<the_tag>\n```\n\n| OS | Python | Tags |\n| ----------- | ------ | ----------------------------------------- |\n| AlmaLinux 9 | 3.11 | a9-py311, a9-py3, a9, py311, py3, latest |\n| AlmaLinux 9 | 3.10 | a9-py310, py310 |\n| AlmaLinux 9 | 3.9 | a9-py39, py39 |\n| AlmaLinux 9 | 3.8 | a9-py38, py38 |\n| AlmaLinux 9 | 3.7 | a9-py37, py37 |\n| CentOS 8 | 3.11 | c8-py311, c8-py3, c8 |\n| CentOS 8 | 3.10 | c8-py310 |\n| CentOS 8 | 3.9 | c8-py39 |\n| CentOS 8 | 3.8 | c8-py38 |\n| CentOS 8 | 3.7 | c8-py37 |\n| CentOS 7 | 3.10 | c7-py310, c7-py3, c7 |\n| CentOS 7 | 3.9 | c7-py39 |\n| CentOS 7 | 3.8 | c7-py38 |\n| CentOS 7 | 3.7 | c7-py37 |\n| CentOS 7 | 3.6 | c7-py36, py36 (removed soon) |\n| CentOS 7 | 2.7 | c7-py27, c7-py2, py27, py2 (removed soon) |\n\n\n### Contributors\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n <tbody>\n <tr>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://github.com/riga\"><img src=\"https://avatars.githubusercontent.com/u/1908734?v=4?s=100\" width=\"100px;\" alt=\"Marcel Rieger\"/><br /><sub><b>Marcel Rieger</b></sub></a><br /><a href=\"https://github.com/riga/law/commits?author=riga\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/riga/law/pulls?q=is%3Apr+reviewed-by%3Ariga\" title=\"Reviewed Pull Requests\">\ud83d\udc40</a> <a href=\"#maintenance-riga\" title=\"Maintenance\">\ud83d\udea7</a> <a href=\"https://github.com/riga/law/commits?author=riga\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/pfackeldey\"><img src=\"https://avatars.githubusercontent.com/u/18463582?v=4?s=100\" width=\"100px;\" alt=\"Peter Fackeldey\"/><br /><sub><b>Peter Fackeldey</b></sub></a><br /><a href=\"https://github.com/riga/law/commits?author=pfackeldey\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/yrath\"><img src=\"https://avatars.githubusercontent.com/u/20044510?v=4?s=100\" width=\"100px;\" alt=\"Yannik Rath\"/><br /><sub><b>Yannik Rath</b></sub></a><br /><a href=\"https://github.com/riga/law/commits?author=yrath\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/jaimeleonh\"><img src=\"https://avatars.githubusercontent.com/u/47629805?v=4?s=100\" width=\"100px;\" alt=\"Jaime Leon Holgado\"/><br /><sub><b>Jaime Leon Holgado</b></sub></a><br /><a href=\"https://github.com/riga/law/commits?author=jaimeleonh\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lmoureaux\"><img src=\"https://avatars.githubusercontent.com/u/22327575?v=4?s=100\" width=\"100px;\" alt=\"Louis Moureaux\"/><br /><sub><b>Louis Moureaux</b></sub></a><br /><a href=\"https://github.com/riga/law/commits?author=lmoureaux\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://www.linkedin.com/in/lgeiger\"><img src=\"https://avatars.githubusercontent.com/u/13285808?v=4?s=100\" width=\"100px;\" alt=\"Lukas Geiger\"/><br /><sub><b>Lukas Geiger</b></sub></a><br /><a href=\"https://github.com/riga/law/commits?author=lgeiger\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://too.gy\"><img src=\"https://avatars.githubusercontent.com/u/694873?v=4?s=100\" width=\"100px;\" alt=\"Valentin Iovene\"/><br /><sub><b>Valentin Iovene</b></sub></a><br /><a href=\"https://github.com/riga/law/commits?author=tgy\" title=\"Code\">\ud83d\udcbb</a></td>\n </tr>\n </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.\n\n<!-- marker-after-body -->\n\n\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Build large-scale task workflows using luigi, remote job submission, remote targets, and environment",
"version": "0.1.19",
"project_urls": {
"Homepage": "https://github.com/riga/law"
},
"split_keywords": [
"luigi",
"workflow",
"pipeline",
"remote",
"gfal",
"submission",
"cluster",
"grid",
"condor",
"lsf",
"glite",
"arc",
"sandboxing",
"docker",
"singularity"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3e72257f7a64f59c57aa8bee64c1b2e448787bfecdf204cd839c40ea43a2ee45",
"md5": "f37b84e0f9b2f44d473d2754e8d63c23",
"sha256": "de539fd4daa9ddb3bbf82490e6c187bf297be9fc289cff2e5da98ede76bb7e43"
},
"downloads": -1,
"filename": "law-0.1.19.tar.gz",
"has_sig": false,
"md5_digest": "f37b84e0f9b2f44d473d2754e8d63c23",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,<4,>=2.7",
"size": 300227,
"upload_time": "2024-10-18T16:54:36",
"upload_time_iso_8601": "2024-10-18T16:54:36.383543Z",
"url": "https://files.pythonhosted.org/packages/3e/72/257f7a64f59c57aa8bee64c1b2e448787bfecdf204cd839c40ea43a2ee45/law-0.1.19.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-18 16:54:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "riga",
"github_project": "law",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "law"
}