Skip to main content

Bash tab completion for argparse

Project description

Warning: under development. Some things are a bit messy.

argcomplete - Bash completion for argparse

Argcomplete provides easy and extensible automatic tab completion of arguments and options for your Python script.

It makes two assumptions:

  • You’re using bash as your shell

  • You’re using argparse to manage your command line options

Argcomplete is particularly useful if your program has lots of options or subparsers, and if you can suggest completions for your argument/option values (for example, if the user is browsing resources over the network).

Installation

pip install argcomplete

Synopsis

Python code (e.g. my-awesome-script.py):

import argcomplete, argparse
parser = argparse.ArgumentParser()
...
argcomplete.autocomplete(parser)
parser.parse()
...

Shellcode (to be put in e.g. .bashrc):

eval "$(register-python-argcomplete my-awesome-script.py)"

Specifying completers

If you specify the choices keyword argument for an option or argument, it will be used for completions. You can also specify custom completion functions for your options and arguments. Completers are called with the following keyword arguments:

  • prefix: The prefix text of the last word before the cursor on the command line. All returned completions should begin with this prefix.

  • action: The argparse.Action instance that this completer was called for.

  • parser: The argparse.ArgumentParser instance that the action was taken by.

Completers should return their completions as a list of strings. An example completer for names of environment variables might look like this:

def EnvironCompleter(prefix, **kwargs):
    return (v for v in os.environ if v.startswith(prefix))

A completer that takes a set of all possible values for its action might look like this:

class ChoicesCompleter(object):
    def __init__(self, choices=[]):
        self.choices = choices

    def __call__(self, prefix, **kwargs):
    return (c for c in self.choices if c.startswith(prefix))

To specify a completer for an argument or option, set the completer attribute of its associated action. An easy way to do this at definition time is:

from argcomplete.completers import EnvironCompleter

parser = argparse.ArgumentParser()
parser.add_argument("--env-var1").completer = EnvironCompleter
parser.add_argument("--env-var2").completer = EnvironCompleter
argcomplete.autocomplete(parser)

The following two ways to specify a static set of choices are equivalent for completion purposes:

from argcomplete.completers import ChoicesCompleter
parser.add_argument("--protocol", choices=('http', 'https', 'ssh', 'rsync', 'wss'))
parser.add_argument("--proto").completer=ChoicesCompleter(('http', 'https', 'ssh', 'rsync', 'wss'))

Acknowledgments

Inspired and informed by the optcomplete module by Martin Blais.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argcomplete-0.1.4.tar.gz (8.7 kB view details)

Uploaded Source

File details

Details for the file argcomplete-0.1.4.tar.gz.

File metadata

  • Download URL: argcomplete-0.1.4.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for argcomplete-0.1.4.tar.gz
Algorithm Hash digest
SHA256 e5fbd9c51adbc55e240941cfeeab26e0b8064e495393e3d411ca8d08e5699313
MD5 e05723cdb5920a0ecafdd79a553d647e
BLAKE2b-256 4fa366c4e278665852d9a9eddafb794393ec897d7c0bf0814597b749a0003aa1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page