Introduce a dependency manager
Once we are moving to 0.3 we should think about implementing a python packaging manager. The thing we should really want are deterministic runs, i.e. if I use the same repository version to run some code, then it should always yield the same result. But what if some dependency changes? Currently we are always using the most up to date version of packages, but their behaviour might change. That means research done with tupak may not be reproducible, I am thinking here about someone 5-10 years into the future wanting to reproduce some result. Who knows what happens to numpy, scipy, etc until then?
I briefly read about pipenv, which should be able to lock the dependency versions for each tupak version and allow for deterministic builds. https://github.com/pypa/pipenv