Skip to main content

Effortless type-safe user input for integers, floats, dates, and more...

Project description

Typed Input Logo

Typed Input

Effortless type-safe user input for integers, floats, dates, and more...

License: MIT

Supported Functions:

Each function has this structure:

<type>_input(
  prompt: str | None = None,
  min_value: <type> | None = None,
  max_value: <type> | None = None,
  default_value: <type> | None = None,
  type_error_message: str | None = None,
) -> <type>

Parameters:

  • prompt: (Optional) Message displayed to the user when prompting for input.
  • min_value / max_value: (Optional) Bounds for input validation.
  • default_value: (Optional) Value returned if no input is provided. Must fall within bounds.
  • type_error_message: (Optional) Error message shown when input cannot be converted to expected type. Defaults are provided for each function.

Default Type Error Messages:

Function Default type_error_message
int_input Error: You must enter a valid integer.
float_input Error: You must enter a valid float.
decimal_input Error: You must enter a valid Decimal.
datetime_input Error: You must enter a valid datetime in valid ISO 8601 format e.g. YYYY-MM-DD.
See documentation for all allowed options.

Example Usage

int_input - Function for Integer Input

>>> int_input(prompt="Enter a number (1-10): ", min_value=1, max_value=10)
Enter a number (1-10): abc
Error: You must enter a valid integer.
Enter a number (1-10): 20
Error: Value must be between 1 and 10.
Enter a number (1-10): 5
5

Floating-Point Input

>>> float_input(prompt="Enter a temperature (-50 to 50): ", min_value=-50.0, max_value=50.0)
Enter a temperature (-50 to 50): 
Error: You must enter a valid float.
Enter a temperature (-50 to 50): 100
Error: Value must be between -50.0 and 50.0.
Enter a temperature (-50 to 50): 22.5
22.5

Decimal Input

>>> from decimal import Decimal
>>> decimal_input(prompt="Enter a price (min 0.01): ", min_value=Decimal("0.01"))
Enter a price (min 0.01): -10
Error: Value must be at least 0.01.
Enter a price (min 0.01): 19.99
Decimal('19.99')

Datetime Input

>>> from datetime import datetime
>>> datetime_input(prompt="Enter a date (YYYY-MM-DD): ", min_value=datetime(2023, 1, 1))
Enter a date (YYYY-MM-DD): invalid
Error: You must enter a valid datetime in ISO 8601 format (e.g., YYYY-MM-DD).
Enter a date (YYYY-MM-DD): 2022-12-31
Error: Date must be on or after 2023-01-01.
Enter a date (YYYY-MM-DD): 2023-01-15
datetime.datetime(2023, 1, 15, 0, 0)

❌ Error Handling

All functions raise a ValueError for:

  • Invalid Range: min_value > max_value.
  • Default Out of Bounds: default_value outside min_value/max_value.

Example:

>>> int_input(min_value=10, max_value=5)
Traceback (most recent call last):
  ...
ValueError: min_value (10) cannot be greater than max_value (5).

🛠️ Development

  • Run formater:
    • uv run ruff check --select I --fix && uv run ruff format
  • Run type checking:
    • uv run mypy .
  • Run all unit tests:
    • uv run typed_input_test.py
  • Run specific unit test:
    • uv run python -m unittest int_input_test.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

typed_input-0.1.0.tar.gz (139.7 kB view details)

Uploaded Source

Built Distribution

typed_input-0.1.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file typed_input-0.1.0.tar.gz.

File metadata

  • Download URL: typed_input-0.1.0.tar.gz
  • Upload date:
  • Size: 139.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.2

File hashes

Hashes for typed_input-0.1.0.tar.gz
Algorithm Hash digest
SHA256 30ccb96debd73d7e9362503ad10d4006b458217ce2a5e219ce1ace1f025a9476
MD5 1da1f49742942e1bf77d6f0a78ed8686
BLAKE2b-256 ec00318491db04a167195e2efad6803626c1ac162245aa4cd2de0fe6ac3f6779

See more details on using hashes here.

File details

Details for the file typed_input-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for typed_input-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb0eda067dc3853c3f389193ebb3b893de718afe24751c6395054c2d27b0b981
MD5 35aac06d6e8ecbf99432343111f305dd
BLAKE2b-256 77aacc989a0bea7f40d5a342e4ad3b0a6a7bc90d25f1c93af78ac5eec0a44744

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