shtab 1.8.0


pip install shtab

  Latest version

Released: Nov 18, 2025


Meta
Author: Casper da Costa-Luis
Maintainer: Iterative
Requires Python: >=3.9

Classifiers

Development Status
  • 5 - Production/Stable

Environment
  • Console
  • MacOS X
  • Other Environment

Intended Audience
  • Developers
  • Education
  • End Users/Desktop
  • Other Audience
  • System Administrators

Operating System
  • MacOS
  • MacOS :: MacOS X
  • POSIX
  • POSIX :: BSD
  • POSIX :: BSD :: FreeBSD
  • POSIX :: Linux
  • POSIX :: SunOS/Solaris
  • Unix

Programming Language
  • Other Scripting Engines
  • Python
  • Python :: 3
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: 3 :: Only
  • Python :: Implementation
  • Python :: Implementation :: IronPython
  • Python :: Implementation :: PyPy
  • Unix Shell

Topic
  • Desktop Environment
  • Education :: Computer Aided Instruction (CAI)
  • Education :: Testing
  • Office/Business
  • Other/Nonlisted Topic
  • Software Development
  • Software Development :: Build Tools
  • Software Development :: Libraries
  • Software Development :: Libraries :: Python Modules
  • Software Development :: Pre-processors
  • Software Development :: User Interfaces
  • System
  • System :: Installation/Setup
  • System :: Shells
  • System :: System Shells
  • Terminals
  • Utilities

Logo

shtab

Downloads Tests Coverage PyPI conda-forge

  • 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: shtab processes an argparse.ArgumentParser object to generate a tab completion script for your shell

Features

  • Outputs tab completion scripts for

    • bash

    • zsh

    • tcsh

  • 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})


Installation

Choose one of:

  • pip install shtab, or

  • conda install -c conda-forge shtab

See operating system-specific instructions in the docs.

Usage

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}

Examples

See the docs for usage examples.

FAQs

Not working? Check out frequently asked questions.

Alternatives

  • argcomplete

    • executes the underlying script every time <TAB> is pressed (slow and has side-effects)

  • pyzshcomplete

    • executes the underlying script every time <TAB> is pressed (slow and has side-effects)

    • only provides zsh completion

  • click

    • different framework completely replacing the builtin argparse

    • solves multiple problems (rather than POSIX-style “do one thing well”)

Contributions

Please do open issues & pull requests! Some ideas:

  • support fish (#174)

  • support powershell

See CONTRIBUTING.md for more guidance.

Hits

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies: