mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +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:
		| @@ -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: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Brian
					Brian