Skip to main content

Wrapper for the built-in Argparse, allowing missing command-line arguments to be filled in by the user via interactive prompts

Project description

ArgparsePrompt

Wrapper for the built-in Argparse, allowing missing command-line arguments to be filled in by the user via interactive prompts

Installation

ArgparsePrompt has not yet been published to PYPI, but in the meantime, you can install it using pip+git:

pip install git+https://github.com/MelbourneGenomics/ArgparsePrompt

Usage

Basic Usage

The only public interface of this module is the PromptParser class, which is a subclass of Python’s ArgumentParser. Use this class in exactly the same way that you would use ArgumentParser, except that, if any argument does not have a specified default value, and a value is not provided for it on the commandline, the PromptParser will prompt for a value for this argument using input(), which is read from stdin.

Consider the code below (taken from one of the unit tests):

from argparse_prompt import PromptParser

parser = PromptParser()
parser.add_argument('--argument', '-a', help='An argument you could provide', default='foo')
print(parser.parse_args().argument)

If you run this script with a value for argument, the parsing will run as normal:

$ python test/default_parser.py --argument 12
12

However if you don’t specify a value for arg, the parser will prompt you for one

$ python test/default_parser.py
argument: An argument you could provide
> (foo) car
car

Default Values

Since this argument has a default value, you can also just hit enter and this value will be used automatically:

python test/default_parser.py
argument: An argument you could provide
> (foo)
foo

Type Checking

You can also specify a type for the argument in the normal way:

from argparse_prompt import PromptParser

parser = PromptParser()
parser.add_argument('--argument', '-a', help='An argument you could provide', type=int)
print(parser.parse_args().argument)

If you do, this type checking will be used for the value you enter at the prompt:

$ python test/typed_parser.py
argument: An argument you could provide
abc
Argument "argument" was given a value not of type <class 'int'>

Situationally Disabling the Prompt

If you use the prompt argument to add_argument, parsing will be disabled:

parser.add_argument('--argument', '-a', help='An argument you could provide', default='foo', prompt=False)

Also, if you want to disable all prompting (for an automated script, for example), just set the ARGPARSE_PROMPT_AUTO to a truthy value:

ARGPARSE_PROMPT_AUTO=1 python test/default_parser.py

Project details


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
argparse_prompt-0.0.2-py3-none-any.whl (5.3 kB) Copy SHA256 hash SHA256 Wheel py3 May 25, 2017
argparse_prompt-0.0.2.tar.gz (2.9 kB) Copy SHA256 hash SHA256 Source None May 25, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page