Argument Validation
Module: terminaltexteffects.utils.argvalidators
This module provides command line argument validators and METAVARs for consistent type parsing and help output.
It 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. |
Color |
Argument type for color values. |
PositiveFloatRange |
Argument type for float ranges. |
IntRange |
Argument type for integer ranges. |
Symbol |
Argument type for single ASCII/UTF-8 characters. |
TerminalDimensions |
Argument type for terminal dimensions. |
PositiveInt |
Argument type for positive integers. |
Ease |
Argument type for easing functions. |
Ratio |
Argument type for float values between zero and one. |
PositiveFloat |
Argument type for positive floats. |
NonNegativeInt |
Argument type for nonnegative integers. |
NonNegativeFloat |
Argument type for nonnegative floats. |
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.
ColorArg
Argument type for color values.
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
Validates that the given 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
Custom formatter for argparse that combines ArgumentDefaultsHelpFormatter and RawDescriptionHelpFormatter.
Ease
Argument type for easing functions.
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
Validates that the given 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
GradientDirection
Argument type for gradient directions.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Argument value is not a valid gradient direction. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validates that the given 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
IntRange
Argument type for integer ranges.
Integer ranges are a pair of integers separated by a hyphen. Ex: 1-10
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid range of integers. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validates that the given 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
NonNegativeFloat
Validates that the given argument is a valid animationrate value. n >= 0.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Argument value is not in range. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validates that the given argument is a valid animationrate value. 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
Validates that the given 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
Validates that the given 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
PositiveFloat
Validates that the given 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
Validates that the given 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
Argument type for float ranges.
Float ranges are a pair of positive floats separated by a hyphen. Ex: 0.1-1.0
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is a valid range of floats. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validates that the given argument is a valid range of floats n >= 0.
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
Argument type for positive integers.
int(n) > 0
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a positive integer. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validates that the given 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
Ratio
Validates that the given argument is a valid 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
Validates that the given argument is a valid 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
Symbol
Argument type for single ASCII/UTF-8 characters.
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid symbol. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validates that the given 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
TerminalDimensions
Argument type for terminal dimensions.
Terminal dimensions are a pair of non-negative integers separated by a space. Ex: 80 24
Raises:
Type | Description |
---|---|
ArgumentTypeError
|
Value is not a valid terminal dimension. |
Source code in terminaltexteffects/utils/argvalidators.py
type_parser(arg)
staticmethod
Validates that the given argument is a valid terminal dimension.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
arg |
str
|
argument to validate |
required |
Returns:
Type | Description |
---|---|
int
|
tuple[int,int]: validated terminal dimension |
Source code in terminaltexteffects/utils/argvalidators.py
is_ascii_or_utf8(s)
Tests if the given string is either ASCII or UTF-8.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
s |
str
|
string to test |
required |
Returns:
Name | Type | Description |
---|---|---|
bool |
bool
|
True if the string is either ASCII or UTF-8, False otherwise |
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]