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,17 +280,21 @@ 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 = {}
for k, v in json_obj.get("__metadata__", {}).items():
res[k] = v try:
if isinstance(v, str) and v[0:1] == '{': json_data = json_start + file.read(metadata_len-2)
try: json_obj = json.loads(json_data)
res[k] = json.loads(v) for k, v in json_obj.get("__metadata__", {}).items():
except Exception: res[k] = v
pass if isinstance(v, str) and v[0:1] == '{':
try:
res[k] = json.loads(v)
except Exception:
pass
except:
errors.report(f"Error reading metadata from file: {filename}", exc_info=True)
return res return res