Argument Validation
Module: terminaltexteffects.utils.argvalidators
Command line argument validators and METAVARs for consistent type parsing and help output.
This module includes a custom formatter for argparse, which combines the features of
argparse.ArgumentDefaultsHelpFormatter
and argparse.RawDescriptionHelpFormatter
.
Classes:
Name | Description |
---|---|
CustomFormatter |
A custom formatter for argparse that combines the features of
|
GradientDirection |
Argument type for gradient directions. |
ColorArg |
Argument type for color values. |
Symbol |
Argument type for single ASCII/UTF-8 characters. |
Ease |
Argument type for easing functions. |
PositiveInt |
Argument type for positive integers. |
NonNegativeInt |
Argument type for nonnegative integers. |
PositiveIntRange |
Argument type for integer ranges. |
PositiveFloat |
Argument type for positive floats. |
NonNegativeFloat |
Argument type for nonnegative floats. |
PositiveFloatRange |
Argument type for float ranges. |
TerminalDimension |
Argument type for terminal dimensions. |
CanvasDimension |
Argument type for canvas dimensions. |
NonNegativeRatio |
Argument type for float values between zero and one. |
PositiveRatio |
Argument type for positive float values greater than zero and less than or equal to one. |
EasingStep |
Argument type for easing step size values. |
Functions:
Name | Description |
---|---|
is_ascii_or_utf8 |
Tests if the given string is either ASCII or UTF-8. |
Constants
EASING_EPILOG (str): A detailed description of the easing functions supported.
CanvasDimension
Validate argument is a valid canvas dimension.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid canvas dimension. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid canvas dimension.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid canvas dimension. |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
validated canvas dimension |
Source code in terminaltexteffects/utils/argvalidators.py
ColorArg
Validate argument is a valid color value.
Color values can be either an XTerm color value (0-255) or an RGB hex value (000000-ffffff).
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range of valid XTerm colors or RGB hex colors. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid color value.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Color value is not in range. |
Returns:
Name | Type | Description |
---|---|---|
Color |
Color
|
validated color value |
Source code in terminaltexteffects/utils/argvalidators.py
CustomFormatter
Bases: ArgumentDefaultsHelpFormatter
, RawDescriptionHelpFormatter
Combine ArgumentDefaultsHelpFormatter and RawDescriptionHelpFormatter for argparse.
Ease
Validate argument is a valid easing function.
Easing functions are prefixed by "in", "out", or "in_out" and suffixed by a valid easing function.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid easing function. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid easing function.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Ease value is not a valid easing function. |
Returns:
Name | Type | Description |
---|---|---|
Ease |
Callable
|
validated ease value |
Source code in terminaltexteffects/utils/argvalidators.py
EasingStep
Validate argument is a valid easing step size value.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid easing step size. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid easing step size value.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid easing step size. |
Returns:
Name | Type | Description |
---|---|---|
float |
float
|
validated easing step size value |
Source code in terminaltexteffects/utils/argvalidators.py
GradientDirection
Validate argument is a valid gradient direction.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Argument value is not a valid gradient direction. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid gradient direction.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Returns:
Type | Description |
---|---|
Direction
|
Gradient.Direction: validated gradient direction |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Argument value is not a valid gradient direction. |
Source code in terminaltexteffects/utils/argvalidators.py
NonNegativeFloat
Validate argument is a nonnegative float. n >= 0.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Argument value is not in range. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a nonnegative float. n >= 0.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Argument value is not in range. |
Returns:
Name | Type | Description |
---|---|---|
float |
float
|
validated value |
Source code in terminaltexteffects/utils/argvalidators.py
NonNegativeInt
Validate argument is a nonnegative integer. n >= 0.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a nonnegative integer. n >= 0.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range. |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
validated gap value |
Source code in terminaltexteffects/utils/argvalidators.py
NonNegativeRatio
Validate argument is a float value between zero and one.
0 <= float(n) <= 1
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a float value between zero and one.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range. |
Returns:
Name | Type | Description |
---|---|---|
float |
float
|
validated float value |
Source code in terminaltexteffects/utils/argvalidators.py
PositiveFloat
Validate argument is a positive float. n > 0.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a positive float. n > 0.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
value is not in range. |
Returns:
Name | Type | Description |
---|---|---|
float |
float
|
validated positive float |
Source code in terminaltexteffects/utils/argvalidators.py
PositiveFloatRange
Validate argument is a valid range of positive floats.
Float ranges are a pair of positive floats separated by a hyphen. Ex: 0.1-1.0
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid range of floats. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid range of positive floats.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Returns:
Type | Description |
---|---|
tuple[float, float]
|
tuple[float,float]: validated range |
Source code in terminaltexteffects/utils/argvalidators.py
PositiveInt
Validate argument is a positive integer. n > 0.
int(n) > 0
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a positive integer. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a positive integer. n > 0.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
validated positive integer |
Source code in terminaltexteffects/utils/argvalidators.py
PositiveIntRange
Validate argument is a valid range of integers n > 0.
Positive integer ranges are a pair of integers separated by a hyphen. Ex: 1-10
Example
'1-10' is a valid input.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid range of positive integers. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid range of integers n > 0.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Returns:
Type | Description |
---|---|
tuple[int, int]
|
tuple[int,int]: validated range |
Source code in terminaltexteffects/utils/argvalidators.py
PositiveRatio
Validate argument is a positive float.
0 < float(n) <= 1
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a positive float.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not in range. |
Returns:
Name | Type | Description |
---|---|---|
float |
float
|
validated float value |
Source code in terminaltexteffects/utils/argvalidators.py
Symbol
Validate argument is a single ASCII/UTF-8 character.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid symbol. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid symbol.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
validated symbol |
Source code in terminaltexteffects/utils/argvalidators.py
TerminalDimension
Validate argument is a valid terminal dimension.
A Terminal Dimension is an integer >= 0.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid terminal dimension. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validate argument is a valid terminal dimension.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg
|
str
|
argument to validate |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
validated terminal dimension |
Source code in terminaltexteffects/utils/argvalidators.py
Example Usage
The following example demonstrates using the PositiveFloat
class to provide a type_parser
and metavar
to the RandomSequenceConfig.speed
argument. This will validate that the argument passed as --speed
is a float > 0.
class RandomSequenceConfig(ArgsDataClass):
speed: float = ArgField(
cmd_name=["--speed"],
type_parser=argvalidators.PositiveFloat.type_parser,
default=0.004,
metavar=argvalidators.PositiveFloat.METAVAR,
help="Speed of the animation as a percentage of the total number of characters to reveal in each tick.",
) # type: ignore[assignment]