Better error handling when unable to read metadata from safetensors file
This commit is contained in:
parent
3902aa222b
commit
8dc920228e
|
@ -280,18 +280,22 @@ 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
|
|
||||||
if isinstance(v, str) and v[0:1] == '{':
|
|
||||||
try:
|
|
||||||
res[k] = json.loads(v)
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
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():
|
||||||
|
res[k] = v
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue