Better error handling when unable to read metadata from safetensors file

This commit is contained in:
Brendan Hoar 2024-04-26 06:52:21 -04:00 committed by GitHub
parent 3902aa222b
commit 8dc920228e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -280,10 +280,12 @@ def read_metadata_from_safetensors(filename):
json_start = file.read(2) json_start = file.read(2)
assert metadata_len > 2 and json_start in (b'{"', b"{'"), f"{filename} is not a safetensors file" assert metadata_len > 2 and json_start in (b'{"', b"{'"), f"{filename} is not a safetensors file"
json_data = json_start + file.read(metadata_len-2)
json_obj = json.loads(json_data)
res = {} res = {}
try:
json_data = json_start + file.read(metadata_len-2)
json_obj = json.loads(json_data)
for k, v in json_obj.get("__metadata__", {}).items(): for k, v in json_obj.get("__metadata__", {}).items():
res[k] = v res[k] = v
if isinstance(v, str) and v[0:1] == '{': if isinstance(v, str) and v[0:1] == '{':
@ -291,6 +293,8 @@ def read_metadata_from_safetensors(filename):
res[k] = json.loads(v) res[k] = json.loads(v)
except Exception: except Exception:
pass pass
except:
errors.report(f"Error reading metadata from file: {filename}", exc_info=True)
return res return res