Wrapper for the built-in Argparse, allowing missing command-line arguments to be filled in by the user via interactive prompts
Project description
ArgparsePrompt
ArgparsePrompt is a wrapper for the built-in Argparse, allowing missing command-line arguments to be filled in by the user via interactive prompts
Installation
ArgparsePrompt can be installed using pip:
pip install argparse_prompt
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'>
Secure Values
For arguments that need to be secure, such as passwords, secret keys etc, you can use secure=True
when defining your
argument. This will cause whatever the user inputs for that field to be hidden from the terminal, in the same way that
git
, or ssh
hides the password input.
For example:
parser.add_argument('--password', '-p', help='A very secret password', secure=True)
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.
Source Distribution
Built Distribution
File details
Details for the file argparse_prompt-0.0.5.tar.gz
.
File metadata
- Download URL: argparse_prompt-0.0.5.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.20.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bdfab80fdfe200c1f3fc091021d847cd64df5104a465fc7ac14c2e78c9686c5 |
|
MD5 | 5d2189390ede878251a6f38d02fb3fa5 |
|
BLAKE2b-256 | e33f20f0a59513a65a280c533de318c6432f26d13d6e87f33a530d4acce3aa85 |
File details
Details for the file argparse_prompt-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: argparse_prompt-0.0.5-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.20.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64ff13b95b36fa0bee53b1ec61fe592013635b181678355c1526c2e8705ce9a9 |
|
MD5 | 1af798ea58063fea9e817e341a8c7b16 |
|
BLAKE2b-256 | 77c7519218fff3922f1e62b164c5850520c402cca475831612d7efd0c45b8895 |