Giter Club home page Giter Club logo

pyinputplus's Introduction

PyInputPlus

A Python 2 and 3 module to provide input()- and raw_input()-like functions with additional validation features, including:

  • Re-prompting the user if they enter invalid input.
  • Validating for numeric, boolean, date, time, or yes/no responses.
  • Timeouts or retry limits for user responses.
  • Specifying regexes for whitelists or blacklists of responses.
  • Specifying ranges for numeric inputs.
  • Presenting menus with bulleted, lettered, or numbered options.
  • Allowing case-sensitive or case-insensitive responses.

Installation

pip install pyinputplus

Example Usage

>>> import pyinputplus as pyip
>>> result = pyip.inputStr()

Blank values are not allowed.
Hello
>>> result
'Hello'

>>> result = pyip.inputNum()
forty two
'forty two' is not a number.
42
>>> result
42

>>> result = pyip.inputNum(min=4, max=6)
3
Input must be at minimum 4.
7
Input must be at maximum 6.
4
>>> result
4

>>> result = pyip.inputNum(greaterThan=4, lessThan=6)
4
Input must be greater than 4.
4.1
>>> result
4.1

>>> result = pyip.inputStr('Favorite animal> ', blacklistRegexes=['moose'])
Favorite animal> moose
This response is invalid.
Favorite animal> cat
>>> result
'cat'

>>> result = inputMenu(['dog', 'cat', 'moose'])
Please select one of the following:
* dog
* cat
* moose
DoG
>>> result
'dog'

>>> result = inputMenu(['dog', 'cat', 'moose'], lettered=True, numbered=False)
Please select one of the following:
A. dog
B. cat
C. moose
b
>>> result
'cat'

Common Input Function Parameters

All input functions have the following parameters:

  • prompt (str): The text to display before each prompt for user input. Identical to the prompt argument for Python's raw_input() and input() functions. Default
  • default (str, None): A default value to use should the user time out or exceed the number of tries to enter valid input.
  • blank (bool): If True, blank strings will be allowed as valid user input.
  • timeout (int, float): The number of seconds since the first prompt for input after which a TimeoutException is raised the next time the user enters input.
  • limit (int): The number of tries the user has to enter valid input before the default value is returned.
  • strip (bool, str, None): If True, whitespace is stripped from value. If a str, the characters in it are stripped from value. If None, nothing is stripped. Defaults to True.
  • whitelistRegexes (Sequence, None): A sequence of regex str that will explicitly pass validation, even if they aren't numbers. Defaults to None.
  • blacklistRegexes (Sequence, None): A sequence of regex str or (regex_str, response_str) tuples that, if matched, will explicitly fail validation. Defaults to None.
  • applyFunc (Callable, None): An optional function that is passed the user's input, and returns the new value to use as the input.
  • validationFunc (Callable): A function that is passed the user's input value, which raises an exception if the input isn't valid. (The return value of this function is ignored.)
  • postValidateApplyFunc (Callable): An optional function that is passed the user's input after it has passed validation, and returns a transformed version for the input function to return.

Other input functions may have additional parameters.

Input Functions

  • inputStr() - Accepts a string. Use this if you basically want Python's input() or raw_input(), but with PyInputPlus features such as whitelist/blacklist, timeouts, limits, etc.
  • inputNum() - Accepts a numeric number. Additionally has min and max parameters for inclusive bounds and greaterThan and lessThan parameters for exclusive bounds. Returns an int or float, not a str.
  • inputInt() - Accepts an integer number. Also has min/max/greaterThan/lessThan parameters. Returns an int, not a str.
  • inputFloat() - Accepts a floating-point number. Also has min/max/greaterThan/lessThan parameters. Returns a float, not a str.
  • inputBool() - Accepts a case-insensitive form of 'True', 'T', 'False', or 'F' and returns a bool value.
  • inputChoice() - Accepts one of the strings in the list of strings passed for its choices parameter.
  • inputMenu() - Similar to inputChoice(), but will also present the choices in a menu with 1, 2, 3... or A, B, C... options if numbered or lettered are set to True.
  • inputDate() - Accepts a date typed in one of the strftime formats passed to the formats parameter. (This has several common formats by default.) Returns a datetime.date object.
  • inputDatetime() - Same as inputDate(), except it handles dates and times. (This has several common formats by default.) Returns a datetime.datetime object.
  • inputTime() - Same as inputDate(), except it handles times. (This has several common formats by default.) Returns a datetime.time object.
  • inputYesNo() - Accepts a case-insensitive form of 'Yes', 'Y', 'No', or 'N' and returns 'yes' or 'no'.

Support

If you find this project helpful and would like to support its development, consider donating to its creator on Patreon.

pyinputplus's People

Contributors

asweigart avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.