Add first implementation of CLI for run-pipe
The main points of this MR are:
- Add CLI infrastructure with autocomplete support.
- Add setup.py so you can
pip install .the library to use it. - Add flake.nix for dev shell.
- Made the Pipe task arguments a class property instead of an instance property, which is needed to run a pipe in isolation
- Added
bindings, i.e. mapping between pipeline-defined-containers and pipe arguments, so Pipes don't have to know anything about pipelines. - General cleanups + add
__slots__and@dataclassto many classes.
P.S. To enable autocomplete, first install the command by running pip install ., and then register the autocomplete in the shell by running eval "$(_PYPE_COMPLETE=zsh_source pype)"