Maybe it would be a good idea to split that:
- separate python code files, 1 per shell (currently: bash, zsh, tcsh)
- common code used by multiple shells either stays in
__init__.py or is moved to common.py
First merge PRs that add support for a new shell to avoid merge conflicts.