Skip to content

Commit 346f546

Browse files
committed
feat(py): Allow gguf duplicate keys if they match by value and type
This is helpful for hybrid models that want to do gguf param setting by calling multiple parent classes without needing to make those parent classes try/except on every attempt to set a gguf value. Branch: GraniteFour Signed-off-by: Gabe Goodhart <[email protected]>
1 parent f783ddd commit 346f546

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

gguf-py/gguf/gguf_writer.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,14 @@ def write_ti_data_to_file(self) -> None:
269269
self.state = WriterState.TI_DATA
270270

271271
def add_key_value(self, key: str, val: Any, vtype: GGUFValueType) -> None:
272-
if any(key in kv_data for kv_data in self.kv_data):
272+
# Disallow duplicate keys if they differ by value or type
273+
if any(
274+
(
275+
key in kv_data and
276+
(kv_data[key].value != val or kv_data[key].type != vtype)
277+
)
278+
for kv_data in self.kv_data
279+
):
273280
raise ValueError(f'Duplicated key name {key!r}')
274281

275282
self.kv_data[0][key] = GGUFValue(value=val, type=vtype)

0 commit comments

Comments
 (0)