Files
tamigo-cli/venv/lib/python3.12/site-packages/wcwidth/control_codes.py

47 lines
1.5 KiB
Python
Raw Normal View History

"""
Control character sets for terminal handling.
This module provides the control character sets used by the width() function to handle terminal
control characters.
"""
# Illegal C0/C1 control characters.
# These raise ValueError in 'strict' mode.
ILLEGAL_CTRL = frozenset(
chr(c) for c in (
list(range(0x01, 0x07)) + # SOH, STX, ETX (^C), EOT (^D), ENQ, ACK
list(range(0x10, 0x1b)) + # DLE through SUB (^Z)
list(range(0x1c, 0x20)) + # FS, GS, RS, US
[0x7f] + # DEL
list(range(0x80, 0xa0)) # C1 control characters
)
)
# Vertical movement control characters.
# These raise ValueError in 'strict' mode (indeterminate horizontal position).
VERTICAL_CTRL = frozenset({
'\x0a', # LF (line feed)
'\x0b', # VT (vertical tab)
'\x0c', # FF (form feed)
})
# Horizontal movement control characters.
# These affect cursor position and are tracked in 'strict' and 'parse' modes.
HORIZONTAL_CTRL = frozenset({
'\x08', # BS (backspace) - cursor left 1
'\x09', # HT (horizontal tab) - advance to next tab stop
'\x0d', # CR (carriage return) - cursor to column 0
})
# Terminal-valid zero-width control characters.
# These are allowed in all modes (zero-width, no movement).
ZERO_WIDTH_CTRL = frozenset({
'\x00', # NUL
'\x07', # BEL (bell)
'\x0e', # SO (shift out)
'\x0f', # SI (shift in)
})
# All control characters that need special handling (not regular printable).
ALL_CTRL = ILLEGAL_CTRL | VERTICAL_CTRL | HORIZONTAL_CTRL | ZERO_WIDTH_CTRL | {'\x1b'}