diff --git a/gguf-py/scripts/gguf_dump.py b/gguf-py/scripts/gguf_dump.py index a73ca2776..740b8e1d8 100755 --- a/gguf-py/scripts/gguf_dump.py +++ b/gguf-py/scripts/gguf_dump.py @@ -254,16 +254,26 @@ def dump_markdown_metadata(reader: GGUFReader, args: argparse.Namespace) -> None value = str(field.parts[-1][0]) else: if field.types[0] == GGUFValueType.ARRAY: + displayed_values = 0 curr_type = field.types[1] if curr_type == GGUFValueType.STRING: render_element = min(5, total_elements) for element_pos in range(render_element): - value += repr(str(bytes(field.parts[-1 - element_pos]), encoding='utf-8')[:5]) + (", " if total_elements > 1 else "") + truncate_length = 30 + value_string = repr(str(bytes(field.parts[-1 - (total_elements - element_pos - 1) * 2]), encoding='utf-8')) + if len(value_string) > truncate_length: + value += value_string[:truncate_length // 2] + "..." + value_string[-truncate_length // 2:] + else: + value += value_string + displayed_values += 1 + if (total_elements - 1) > element_pos: + value += ", " elif curr_type in reader.gguf_scalar_to_np: render_element = min(7, total_elements) for element_pos in range(render_element): - value += str(field.parts[-1 - element_pos][0]) + (", " if total_elements > 1 else "") - value = f'[ {value}{" ..." if total_elements > 1 else ""} ]' + value += str(field.parts[-1 - (total_elements - element_pos - 1)][0]) + (", " if total_elements > 1 else "") + displayed_values += 1 + value = f'[ {value}{"..." if total_elements > displayed_values else ""} ]' kv_dump_table.append({"n":n, "pretty_type":pretty_type, "total_elements":total_elements, "field_name":field.name, "value":value}) kv_dump_table_header_map = [ @@ -382,7 +392,7 @@ def dump_markdown_metadata(reader: GGUFReader, args: argparse.Namespace) -> None markdown_content += f"- Percentage of total elements: {group_percentage:.2f}%\n" markdown_content += "\n\n" - print(markdown_content) # noqa: NP100 + print(markdown_content) # noqa: NP100 def main() -> None: