Configure Python develop tool chain

- use pyenv to manage the develop environments
  + install several Python versions (3.7 - 3.10 and 2.7)
  + each version receives its own copies of black, pipenv, and poetry
- add two more virtual environments based off the latest version:
  + "interactive" => default environment optimized for interactive
                     usage with with black, bpython, and ipython
                     (also receives accidental `pip install`s)
  + "utils" => hosts various globally available tools/apps
               (e.g., mackup and youtube-dl)
- add installation and update scripts for the entire tool chain
- set up completions for bash and zsh
- set up convenient aliases
- configure bpython
- configure poetry
This commit is contained in:
Alexander Hess 2022-08-09 13:53:43 +02:00
commit 0319e614b8
Signed by: alexander
GPG key ID: 344EA5AB10D868E0
9 changed files with 233 additions and 1 deletions

24
.zshrc
View file

@ -5,6 +5,12 @@
[[ $- != *i* ]] && return
# Check if a command can be found on the $PATH
_command_exists() {
command -v "$1" 1>/dev/null 2>&1
}
# Enable Powerlevel10k instant prompt
if [ -r "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/p10k-instant-prompt-${(%):-%n}.zsh" ]; then
@ -61,7 +67,10 @@ plugins=(
dirhistory
dotenv # config in ~/.zshenv; `_update_repositories` temporarily disables this
git-escape-magic
invoke # completions for invoke
jsontools
pip # completions for pip
poetry # completions for poetry
z
)
@ -124,6 +133,21 @@ zstyle ':completion:*:warnings' format 'No matches for: %d'
zstyle ':completion:*' group-name ''
# Enable completions for various tools
# invoke -> see plugins above; alternatively use
# _command_exists invoke && eval "$(invoke --print-completion-script=zsh)"
_command_exists nox && eval "$(register-python-argcomplete nox)"
# pip -> see plugins above; alternatively use
# _command_exists pip && eval "$(pip completion --zsh)"
_command_exists pipx && eval "$(register-python-argcomplete pipx)"
# poetry -> see plugins above; no alternative here
# Define key bindings