Fix truncating values in table

This commit is contained in:
2025-08-30 13:52:14 +02:00
parent 516a306716
commit d163a82e0e

View File

@@ -55,18 +55,20 @@ def prettytable(field_names, rows, truncate=False):
for field in t.field_names:
t.align[field] = 'l'
if truncate:
max_total_len = 0
max_name_val_ttl_len = 0
for row in rows:
max_total_len = max(max_total_len, sum(len(col) for col in row))
max_name_val_ttl_len = max(max_name_val_ttl_len, sum(len(s) for s in row[0:-1]))
if truncate and rows:
n_cols = len(rows[0])
max_col_lengths = [0] * n_cols
overhead_len = len(row) * 4
for row in rows:
for index in range(0, len(row)):
max_col_lengths[index] = max(max_col_lengths[index], len(row[index]) + 3)
max_total_len = sum(max_col_lengths) + 2
max_pre_len = sum(max_col_lengths[0:-1]) + 2
terminal_width = os.get_terminal_size().columns
if max_total_len + overhead_len >= terminal_width:
max_value_len = terminal_width - max_name_val_ttl_len - overhead_len
if max_total_len >= terminal_width:
max_value_len = terminal_width - max_pre_len - 3
if max_value_len < 5:
raise RuntimeError('terminal is too small')
for i in range(len(rows)):