Skip to content

ErrorCorrect

Demo

Quick Start

errorcorrect.py
from terminaltexteffects.effects.effect_errorcorrect import ErrorCorrect

effect = ErrorCorrect("YourTextHere")
with effect.terminal_output() as terminal:
    for frame in effect:
        terminal.print(frame)

Swaps characters from an incorrect initial position to the correct position.

Classes:

Name Description
ErrorCorrect

Swaps characters from an incorrect initial position to the correct position.

ErrorCorrectConfig

Configuration for the ErrorCorrect effect.

ErrorCorrectIterator

Iterates over the effect. Does not normally need to be called directly.

ErrorCorrect

Bases: BaseEffect[ErrorCorrectConfig]

Swaps characters from an incorrect initial position to the correct position.

Attributes:

Name Type Description
effect_config ErrorCorrectConfig

Configuration for the effect.

terminal_config TerminalConfig

Configuration for the terminal.

Source code in terminaltexteffects/effects/effect_errorcorrect.py
class ErrorCorrect(BaseEffect[ErrorCorrectConfig]):
    """Swaps characters from an incorrect initial position to the correct position.

    Attributes:
        effect_config (ErrorCorrectConfig): Configuration for the effect.
        terminal_config (TerminalConfig): Configuration for the terminal.
    """

    _config_cls = ErrorCorrectConfig
    _iterator_cls = ErrorCorrectIterator

    def __init__(self, input_data: str) -> None:
        """Initialize the effect with the provided input data.

        Args:
            input_data (str): The input data to use for the effect."""
        super().__init__(input_data)

__init__(input_data)

Initialize the effect with the provided input data.

Parameters:

Name Type Description Default
input_data str

The input data to use for the effect.

required
Source code in terminaltexteffects/effects/effect_errorcorrect.py
def __init__(self, input_data: str) -> None:
    """Initialize the effect with the provided input data.

    Args:
        input_data (str): The input data to use for the effect."""
    super().__init__(input_data)

ErrorCorrectConfig dataclass

Bases: ArgsDataClass

Configuration for the ErrorCorrect effect.

Attributes:

Name Type Description
error_pairs float

Percent of characters that are in the wrong position. This is a float between 0 and 1.0. 0.2 means 20 percent of the characters will be in the wrong position. Valid values are 0 < n <= 1.0.

swap_delay int

Number of frames between swaps. Valid values are n >= 0.

error_color Color

Color for the characters that are in the wrong position.

correct_color Color

Color for the characters once corrected, this is a gradient from error-color and fades to final-color.

final_gradient_stops tuple[Color, ...]

Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color.

final_gradient_steps tuple[int, ...] | int

Tuple of the number of gradient steps to use. More steps will create a smoother and longer gradient animation. Valid values are n > 0.

final_gradient_direction Direction

Direction of the final gradient.

movement_speed float

Speed of the characters while moving to the correct position. Valid values are n > 0.

Source code in terminaltexteffects/effects/effect_errorcorrect.py
@argclass(
    name="errorcorrect",
    help="Some characters start in the wrong position and are corrected in sequence.",
    description="errorcorrect | Some characters start in the wrong position and are corrected in sequence.",
    epilog=f"""{argvalidators.EASING_EPILOG}

Example: terminaltexteffects errorcorrect --error-pairs 0.1 --swap-delay 10 --error-color e74c3c --correct-color 45bf55 --final-gradient-stops 8A008A 00D1FF FFFFFF --final-gradient-steps 12 --movement-speed 0.5""",
)
@dataclass
class ErrorCorrectConfig(ArgsDataClass):
    """Configuration for the ErrorCorrect effect.

    Attributes:
        error_pairs (float): Percent of characters that are in the wrong position. This is a float between 0 and 1.0. 0.2 means 20 percent of the characters will be in the wrong position. Valid values are 0 < n <= 1.0.
        swap_delay (int): Number of frames between swaps. Valid values are n >= 0.
        error_color (Color): Color for the characters that are in the wrong position.
        correct_color (Color): Color for the characters once corrected, this is a gradient from error-color and fades to final-color.
        final_gradient_stops (tuple[Color, ...]): Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color.
        final_gradient_steps (tuple[int, ...] | int): Tuple of the number of gradient steps to use. More steps will create a smoother and longer gradient animation. Valid values are n > 0.
        final_gradient_direction (Gradient.Direction): Direction of the final gradient.
        movement_speed (float): Speed of the characters while moving to the correct position. Valid values are n > 0."""

    error_pairs: float = ArgField(
        cmd_name="--error-pairs",
        type_parser=argvalidators.PositiveFloat.type_parser,
        default=0.1,
        metavar="(int > 0)",
        help="Percent of characters that are in the wrong position. This is a float between 0 and 1.0. 0.2 means 20 percent of the characters will be in the wrong position.",
    )  # type: ignore[assignment]
    "float : Percent of characters that are in the wrong position. This is a float between 0 and 1.0. 0.2 means 20 percent of the characters will be in the wrong position."

    swap_delay: int = ArgField(
        cmd_name="--swap-delay",
        type_parser=argvalidators.PositiveInt.type_parser,
        default=10,
        metavar="(int > 0)",
        help="Number of frames between swaps.",
    )  # type: ignore[assignment]
    "int : Number of frames between swaps."

    error_color: Color = ArgField(
        cmd_name=["--error-color"],
        type_parser=argvalidators.ColorArg.type_parser,
        default=Color("e74c3c"),
        metavar="(XTerm [0-255] OR RGB Hex [000000-ffffff])",
        help="Color for the characters that are in the wrong position.",
    )  # type: ignore[assignment]
    "Color : Color for the characters that are in the wrong position."

    correct_color: Color = ArgField(
        cmd_name=["--correct-color"],
        type_parser=argvalidators.ColorArg.type_parser,
        default=Color("45bf55"),
        metavar="(XTerm [0-255] OR RGB Hex [000000-ffffff])",
        help="Color for the characters once corrected, this is a gradient from error-color and fades to final-color.",
    )  # type: ignore[assignment]
    "Color : Color for the characters once corrected, this is a gradient from error-color and fades to final-color."

    final_gradient_stops: tuple[Color, ...] = ArgField(
        cmd_name=["--final-gradient-stops"],
        type_parser=argvalidators.ColorArg.type_parser,
        nargs="+",
        default=(Color("8A008A"), Color("00D1FF"), Color("FFFFFF")),
        metavar="(XTerm [0-255] OR RGB Hex [000000-ffffff])",
        help="Space separated, unquoted, list of colors for the character gradient (applied from bottom to top). If only one color is provided, the characters will be displayed in that color.",
    )  # type: ignore[assignment]
    "tuple[Color, ...] : Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color."

    final_gradient_steps: tuple[int, ...] | int = ArgField(
        cmd_name="--final-gradient-steps",
        type_parser=argvalidators.PositiveInt.type_parser,
        nargs="+",
        default=12,
        metavar="(int > 0)",
        help="Space separated, unquoted, list of the number of gradient steps to use. More steps will create a smoother and longer gradient animation.",
    )  # type: ignore[assignment]
    "tuple[int, ...] | int : Int or Tuple of ints for the number of gradient steps to use. More steps will create a smoother and longer gradient animation."

    final_gradient_direction: Gradient.Direction = ArgField(
        cmd_name="--final-gradient-direction",
        type_parser=argvalidators.GradientDirection.type_parser,
        default=Gradient.Direction.VERTICAL,
        metavar=argvalidators.GradientDirection.METAVAR,
        help="Direction of the final gradient.",
    )  # type: ignore[assignment]
    "Gradient.Direction : Direction of the final gradient."

    movement_speed: float = ArgField(
        cmd_name="--movement-speed",
        type_parser=argvalidators.PositiveFloat.type_parser,
        default=0.5,
        metavar="(float > 0)",
        help="Speed of the characters while moving to the correct position. ",
    )  # type: ignore[assignment]
    "float : Speed of the characters while moving to the correct position. "

    @classmethod
    def get_effect_class(cls):
        return ErrorCorrect

correct_color: Color = ArgField(cmd_name=['--correct-color'], type_parser=argvalidators.ColorArg.type_parser, default=Color('45bf55'), metavar='(XTerm [0-255] OR RGB Hex [000000-ffffff])', help='Color for the characters once corrected, this is a gradient from error-color and fades to final-color.') class-attribute instance-attribute

Color : Color for the characters once corrected, this is a gradient from error-color and fades to final-color.

error_color: Color = ArgField(cmd_name=['--error-color'], type_parser=argvalidators.ColorArg.type_parser, default=Color('e74c3c'), metavar='(XTerm [0-255] OR RGB Hex [000000-ffffff])', help='Color for the characters that are in the wrong position.') class-attribute instance-attribute

Color : Color for the characters that are in the wrong position.

error_pairs: float = ArgField(cmd_name='--error-pairs', type_parser=argvalidators.PositiveFloat.type_parser, default=0.1, metavar='(int > 0)', help='Percent of characters that are in the wrong position. This is a float between 0 and 1.0. 0.2 means 20 percent of the characters will be in the wrong position.') class-attribute instance-attribute

float : Percent of characters that are in the wrong position. This is a float between 0 and 1.0. 0.2 means 20 percent of the characters will be in the wrong position.

final_gradient_direction: Gradient.Direction = ArgField(cmd_name='--final-gradient-direction', type_parser=argvalidators.GradientDirection.type_parser, default=Gradient.Direction.VERTICAL, metavar=argvalidators.GradientDirection.METAVAR, help='Direction of the final gradient.') class-attribute instance-attribute

Gradient.Direction : Direction of the final gradient.

final_gradient_steps: tuple[int, ...] | int = ArgField(cmd_name='--final-gradient-steps', type_parser=argvalidators.PositiveInt.type_parser, nargs='+', default=12, metavar='(int > 0)', help='Space separated, unquoted, list of the number of gradient steps to use. More steps will create a smoother and longer gradient animation.') class-attribute instance-attribute

tuple[int, ...] | int : Int or Tuple of ints for the number of gradient steps to use. More steps will create a smoother and longer gradient animation.

final_gradient_stops: tuple[Color, ...] = ArgField(cmd_name=['--final-gradient-stops'], type_parser=argvalidators.ColorArg.type_parser, nargs='+', default=(Color('8A008A'), Color('00D1FF'), Color('FFFFFF')), metavar='(XTerm [0-255] OR RGB Hex [000000-ffffff])', help='Space separated, unquoted, list of colors for the character gradient (applied from bottom to top). If only one color is provided, the characters will be displayed in that color.') class-attribute instance-attribute

tuple[Color, ...] : Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color.

movement_speed: float = ArgField(cmd_name='--movement-speed', type_parser=argvalidators.PositiveFloat.type_parser, default=0.5, metavar='(float > 0)', help='Speed of the characters while moving to the correct position. ') class-attribute instance-attribute

float : Speed of the characters while moving to the correct position.

swap_delay: int = ArgField(cmd_name='--swap-delay', type_parser=argvalidators.PositiveInt.type_parser, default=10, metavar='(int > 0)', help='Number of frames between swaps.') class-attribute instance-attribute

int : Number of frames between swaps.