mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-25 19:04:35 +00:00
py: add_array() will not add to kv store if value is an empty array (#8774)
* gguf_writer.py: add_array() should not add to kv store if empty * Apply suggestions from code review I was wondering if there was a specific reason for `if val` but good to hear we can safely use `len(val == 0` Co-authored-by: compilade <git@compilade.net> --------- Co-authored-by: compilade <git@compilade.net>
This commit is contained in:
parent
7c27a19b2e
commit
7e72aa74fd
@ -312,6 +312,8 @@ class GGUFWriter:
|
|||||||
self.add_key_value(key, val, GGUFValueType.STRING)
|
self.add_key_value(key, val, GGUFValueType.STRING)
|
||||||
|
|
||||||
def add_array(self, key: str, val: Sequence[Any]) -> None:
|
def add_array(self, key: str, val: Sequence[Any]) -> None:
|
||||||
|
if len(val) == 0:
|
||||||
|
return
|
||||||
self.add_key_value(key, val, GGUFValueType.ARRAY)
|
self.add_key_value(key, val, GGUFValueType.ARRAY)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -845,7 +847,14 @@ class GGUFWriter:
|
|||||||
encoded_val = val.encode("utf-8") if isinstance(val, str) else val
|
encoded_val = val.encode("utf-8") if isinstance(val, str) else val
|
||||||
kv_data += self._pack("Q", len(encoded_val))
|
kv_data += self._pack("Q", len(encoded_val))
|
||||||
kv_data += encoded_val
|
kv_data += encoded_val
|
||||||
elif vtype == GGUFValueType.ARRAY and isinstance(val, Sequence) and val:
|
elif vtype == GGUFValueType.ARRAY:
|
||||||
|
|
||||||
|
if not isinstance(val, Sequence):
|
||||||
|
raise ValueError("Invalid GGUF metadata array, expecting sequence")
|
||||||
|
|
||||||
|
if len(val) == 0:
|
||||||
|
raise ValueError("Invalid GGUF metadata array. Empty array")
|
||||||
|
|
||||||
if isinstance(val, bytes):
|
if isinstance(val, bytes):
|
||||||
ltype = GGUFValueType.UINT8
|
ltype = GGUFValueType.UINT8
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user