Skip to main content

Decorator to prompt input for missing arguments.

Install

pip install prompt_args

Usage

from prompt_args import Prompt

print("Test automatic prompting")
@Prompt.decorate
def my_func(first_name: str, last_name: str = "", status: str = "well"):
    print(f"Hello, {first_name} {last_name}, I am {status}")

my_func()


print("\nTest controlled prompting")
@Prompt.decorate(
    first_name=Prompt("First Name: "),
    last_name=Prompt("Last Name: ", default=""),
    status=Prompt("How are you? ", default="well")
)
def my_func(first_name: str, last_name: str, **kwargs):
    print(f"Hello, {first_name} {last_name}, I am {kwargs.get('status')}")

my_func()
my_func("Jane", "Doe", status="great")

# Test error when a prompt is given, but the function argument does not exist
print("\nTest controlled prompt error")
try:
    @Prompt.decorate(
        first_name=Prompt("First Name: "),
        last_name=Prompt("Last Name: ", default=""),
        status=Prompt("How are you? ", default="well")
    )
    def my_func(first_name: str, last_name: str):
        print(f"Hello, {first_name} {last_name}")
except ValueError as e:
    assert "no corresponding function argument" in str(e)

Output

Test automatic prompting
Enter First Name: John
Enter Last Name ['']:
Enter Status ['well']:
Hello, John , I am well

Test controlled prompting
First Name: John
Last Name ['']: Doe
How are you ['well']? just fine
Hello, John Doe, I am just fine
Hello, Jane Doe, I am great

Test controlled prompt error

Register prompt helpers (“Enter … [{prompt_help}]: “).

from prompt_args import Prompt

# Test built in bool converter with Y/n prompt help info
print("Testing builtin type converter")
@Prompt.decorate
def my_func(x: int, confirm: bool = False):
    print(f"Change x to {x}? {confirm}")

# Test no
my_func()

# Test y
my_func()


# Test custom type converter
print("\nTesting custom type converter")
def long_confirm(value: str) -> bool:
    return value == "Yes I am sure"

Prompt.register_type_converter(bool, long_confirm, prompt_help="Yes I am sure/no")

@Prompt.decorate
def my_super_serious_func(x: int, confirm: bool = False):
    print(f"Change x to {x}? {confirm}")

# Test invalid y
my_super_serious_func()

# Test full Yes I am sure
my_super_serious_func()

Output:

Testing builtin type converter
Enter X: 10
Enter Confirm [Y/n]: n
Change x to 10? False
Enter X: 12
Enter Confirm [Y/n]: y
Change x to 12? True

Testing custom type converter
Enter X: 20
Enter Confirm [Yes I am sure/no]: y
Change x to 20? False
Enter X: 25
Enter Confirm [Yes I am sure/no]: Yes I am sure
Change x to 25? True

Do not prompt for some arguments

from prompt_args import Prompt

print("Test no prompting for some arguments")
@Prompt.decorate(status=Prompt.no_prompt)
def my_func(first_name: str, last_name: str = "", status: str = "well"):
    print(f"Hello, {first_name} {last_name}, I am {status}")

# Status should not be prompted
my_func()

Output

Test no prompting for some arguments
Enter First Name: John
Enter Last Name ['']: Doe
Hello, John Doe, I am well

Metadata

Release files for prompt-args 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prompt-args 1.0.1
File Size Uploaded
prompt_args-1.0.1.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for prompt-args 1.0.1
File Interpreter ABI Platform
prompt_args-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 18.5 kB

Release files / prompt_args-1.0.1.tar.gz

Download URL prompt_args-1.0.1.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
89fea68cca908be7ba84e254eb10bb531dc2faa8c2f3058255871c5c6400cf38
BLAKE2b-256 checksum
How to use checksums
dbed58d37aafae13f1045237036cdf978e9dab8639e83a3300884cfa1aac89a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release files / prompt_args-1.0.1-py3-none-any.whl

Download URL prompt_args-1.0.1-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
90a685b35b42eda6cafa2fb2e03773fae92771877bbfb02da75dbe070f3a8340
BLAKE2b-256 checksum
How to use checksums
dec9677d4e6dca2ffa9f038515280b1c4cddd9b155e2e21e50ac84d862edecdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page