Introduce a string-specific version of clear_vt100_escape_codes (#3241)

This commit helps fix some existing type errors in the code. It
also helps avoid ~280,000 isinstance calls when opening the
additional packages menu.
This commit is contained in:
correctmost 2025-03-10 21:11:04 -04:00 committed by GitHub
parent 2819ea02b1
commit dbf45e23cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 6 deletions

View File

@ -7,7 +7,7 @@ from typing import ClassVar
from archinstall.lib.models.device_model import Fido2Device from archinstall.lib.models.device_model import Fido2Device
from ..exceptions import SysCallError from ..exceptions import SysCallError
from ..general import SysCommand, SysCommandWorker, clear_vt100_escape_codes from ..general import SysCommand, SysCommandWorker, clear_vt100_escape_codes_from_str
from ..output import error, info from ..output import error, info
@ -44,7 +44,7 @@ class Fido2:
error('fido2 support is most likely not installed') error('fido2 support is most likely not installed')
raise ValueError('HSM devices can not be detected, is libfido2 installed?') raise ValueError('HSM devices can not be detected, is libfido2 installed?')
fido_devices: str = clear_vt100_escape_codes(ret) # type: ignore[assignment] fido_devices = clear_vt100_escape_codes_from_str(ret)
manufacturer_pos = 0 manufacturer_pos = 0
product_pos = 0 product_pos = 0

View File

@ -44,9 +44,11 @@ def locate_binary(name: str) -> str:
raise RequirementError(f"Binary {name} does not exist.") raise RequirementError(f"Binary {name} does not exist.")
def clear_vt100_escape_codes(data: bytes | str) -> bytes | str: def clear_vt100_escape_codes(data: bytes) -> bytes:
if isinstance(data, bytes):
return re.sub(_VT100_ESCAPE_REGEX_BYTES, b'', data) return re.sub(_VT100_ESCAPE_REGEX_BYTES, b'', data)
def clear_vt100_escape_codes_from_str(data: str) -> str:
return re.sub(_VT100_ESCAPE_REGEX, '', data) return re.sub(_VT100_ESCAPE_REGEX, '', data)
@ -159,7 +161,7 @@ class SysCommandWorker:
lines = filter(None, self._trace_log[self._trace_log_pos:last_line].splitlines()) lines = filter(None, self._trace_log[self._trace_log_pos:last_line].splitlines())
for line in lines: for line in lines:
if self.remove_vt100_escape_codes_from_lines: if self.remove_vt100_escape_codes_from_lines:
line = clear_vt100_escape_codes(line) # type: ignore[assignment] line = clear_vt100_escape_codes(line)
yield line + b'\n' yield line + b'\n'