- What: Automatically generate shell tab completion scripts for Python CLI apps
- Why: Speed & correctness. Alternatives like argcomplete and pyzshcomplete are slow and have side-effects
- How:
shtabprocesses anargparse.ArgumentParserobject to generate a tab completion script for your shell
- Outputs tab completion scripts for
bashzshtcsh
- Supports
- Supports arguments, options and subparsers
- Supports choices (e.g.
--say={hello,goodbye}) - Supports file and directory path completion
- Supports custom path completion (e.g.
--file={*.txt})
Table of Contents
Choose one of:
pip install shtab, orconda install -c conda-forge shtab
See operating system-specific instructions in the docs.
There are two ways of using shtab:
- CLI Usage:
shtab's own CLI interface for external applications- may not require any code modifications whatsoever
- end-users execute
shtab your_cli_app.your_parser_object
- Library Usage: as a library integrated into your CLI application
- adds a couple of lines to your application
- argument mode: end-users execute
your_cli_app --print-completion {bash,zsh,tcsh} - subparser mode: end-users execute
your_cli_app completion {bash,zsh,tcsh}
See the docs for usage examples.
Not working? Check out frequently asked questions.
- argcomplete
- executes the underlying script every time
<TAB>is pressed (slow and has side-effects)
- executes the underlying script every time
- pyzshcomplete
- executes the underlying script every time
<TAB>is pressed (slow and has side-effects) - only provides
zshcompletion
- executes the underlying script every time
- click
- different framework completely replacing the builtin
argparse - solves multiple problems (rather than POSIX-style "do one thing well")
- different framework completely replacing the builtin
Please do open issues & pull requests! Some ideas:
- support
fish(#174) - support
powershell
See CONTRIBUTING.md for more guidance.
