def sanitize_string( unsanitized_string, leave_tabs=False, leave_colorization=False, max_lines_shown=32, max_line_length_shown=1024, # pylint: disable=dangerous-default-value line_color=defaultdict(lambda: ""), **parameters, ): max_lines_shown = int(max_lines_shown) max_line_length_shown = int(max_line_length_shown) lines = unsanitized_string.splitlines() append_repeat_message = False if len(lines) >= max_lines_shown: last_line_index = len(lines) - 1 last_line = lines[last_line_index] repeats = 1 while (repeats <= last_line_index and lines[last_line_index - repeats] == last_line): repeats += 1 if repeats > max_lines_shown / 2 and len( lines) - repeats < max_lines_shown - 1: append_repeat_message = True lines = lines[0:last_line_index + 2 - repeats] sanitized_lines = [] for (line_number, line) in enumerate(lines): if line_number >= max_lines_shown: sanitized_lines.append("...\n") break if len(line) > max_line_length_shown: line = line[0:max_line_length_shown] + " ..." line = line.encode("unicode_escape").decode("ascii") if leave_colorization: line = line.replace(r"\x1b", "\x1b") if leave_tabs: line = line.replace(r"\t", "\t") line = line.replace(r"\\", "\\") color = line_color[line_number] if color: line = termcolor_colored(line, color) sanitized_lines.append(line) if append_repeat_message: repeat_message = f"<last line repeated {repeats} times>" if parameters["colorize_output"]: repeat_message = termcolor_colored(repeat_message, "red") sanitized_lines.append(repeat_message) return "\n".join(sanitized_lines) + "\n"
def colored(x, color=None, on_color=None, attrs=None): colorize = True # TODO: no colorize during tests if colorize: #@UndefinedVariable return termcolor_colored(x, color, on_color, attrs) else: return x
def sanitize_string(str, leave_tabs=False, leave_colorization=False, max_lines_shown=32, max_line_length_shown=1024, line_color=defaultdict(lambda: ''), colorize=False, **extra_kwargs): lines = str.splitlines() append_repeat_message = False if len(lines) >= max_lines_shown: last_line_index = len(lines) - 1 last_line = lines[last_line_index] repeats = 1 while repeats <= last_line_index and lines[last_line_index - repeats] == last_line: repeats += 1 if repeats > max_lines_shown / 2 and len( lines) - repeats < max_lines_shown - 1: append_repeat_message = True lines = lines[0:last_line_index + 2 - repeats] sanitized_lines = [] for (line_number, line) in enumerate(lines): if line_number >= max_lines_shown: sanitized_lines.append('...\n') break if len(line) > max_line_length_shown: line = line[0:max_line_length_shown] + ' ...' line = line.encode('unicode_escape').decode('ascii') if leave_colorization: line = line.replace('\\x1b', '\x1b') # yuk FIXME if leave_tabs: line = line.replace('\\t', '\t') # yuk FIXME line = line.replace('\\\\', '\\') # yuk FIXME color = line_color[line_number] if color: line = termcolor_colored(line, color) sanitized_lines.append(line) if append_repeat_message: repeat_message = '<last line repeated %d times>' % repeats if colorize: repeat_message = termcolor_colored(repeat_message, 'red') sanitized_lines.append(repeat_message) return '\n'.join(sanitized_lines) + '\n'
def colored(x, color=None, on_color=None, attrs=None): if compmake_config.colorize: #@UndefinedVariable return termcolor_colored(x, color, on_color, attrs) else: return x
def colored(data, color): if sys.stdout.isatty(): return termcolor_colored(data, color) else: return data
def colored(*args, **kwargs): colorama.init() return termcolor_colored(*args, **kwargs)