Shell Completion¶
Tab completion for bash, zsh, and fish shells.
Quick Install¶
Use --install-shell-completions to install tab completions:
# Auto-detect shell from $SHELL
myapp --install-shell-completions
# Or specify shell explicitly
myapp --install-shell-completions zsh
myapp --install-shell-completions bash
myapp --install-shell-completions fish
This installs completions and prints activation instructions.
Note
Shell completions only work when the script is run as a named command
(e.g., myapp), not when invoked via python script.py.
To make this work:
Install your package:
pip install -e .Define an entry point in
pyproject.toml:[project.scripts] myapp = "mypackage.cli:main"
Now
myapp --install-shell-completionsworks, and tab completion triggers when you typemyapp <TAB>.
Programmatic Installation¶
You can also install completions programmatically:
from vidhi.cli_completion import install_completion
from vidhi.flat_dataclass import create_flat_dataclass
FlatConfig = create_flat_dataclass(AppConfig)
# Auto-install to shell config
install_completion(FlatConfig, "myapp")
# Or specify shell explicitly
install_completion(FlatConfig, "myapp", shell="zsh")
Generating Scripts¶
Generate completion scripts without installing:
from vidhi.cli_completion import generate_completion_script
# Get script as string
script = generate_completion_script(FlatConfig, "myapp", "bash")
# Print to stdout
print(script)
Manual Setup¶
If you prefer manual installation:
Bash - Add to ~/.bashrc:
eval "$(myapp --print-completion bash)"
Or save to a file:
myapp --print-completion bash > ~/.local/share/bash-completion/completions/myapp
source ~/.bashrc
Zsh - Add to ~/.zshrc:
eval "$(myapp --print-completion zsh)"
Or save to completions directory:
myapp --print-completion zsh > ~/.zsh/completions/_myapp
# Add to fpath in .zshrc: fpath=(~/.zsh/completions $fpath)
autoload -Uz compinit && compinit
Fish - Save to completions directory:
myapp --print-completion fish > ~/.config/fish/completions/myapp.fish
Fish automatically loads completions from this directory.
What Gets Completed¶
Vidhi shell completions provide:
All
--optionnamesBoolean values (
true/false) for boolean argumentsEnum/choice values for type selectors and choice fields
File paths for relevant arguments