← back to Exo
fix model cards not validating properly after #2071 (#2096)
90f24bef30ceef09b45946970f53b43bf44c3206 · 2026-05-15 16:17:35 +0100 · Evan Quiney
Files touched
M src/exo/shared/models/model_cards.py
Diff
commit 90f24bef30ceef09b45946970f53b43bf44c3206
Author: Evan Quiney <evanev7@gmail.com>
Date: Fri May 15 16:17:35 2026 +0100
fix model cards not validating properly after #2071 (#2096)
---
src/exo/shared/models/model_cards.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/exo/shared/models/model_cards.py b/src/exo/shared/models/model_cards.py
index f64a509e..8911b932 100644
--- a/src/exo/shared/models/model_cards.py
+++ b/src/exo/shared/models/model_cards.py
@@ -81,8 +81,10 @@ class _CardCache:
card = card.model_copy(update={"is_custom": True})
if self.get(card.model_id) is None:
self.cc[card.model_id] = card
- except (ValidationError, TOMLKitError):
- pass
+ except (ValidationError, TOMLKitError) as e:
+ logger.opt(exception=e).warning(
+ f"failed to validate model card at {toml_file}"
+ )
async def refresh(self) -> None:
for path in _BUILTIN_CARD_DIRS:
@@ -197,6 +199,11 @@ class ModelCard(FrozenModel):
def _validate_tasks(cls, v: list[str | ModelTask]) -> list[ModelTask]:
return [item if isinstance(item, ModelTask) else ModelTask(item) for item in v]
+ @field_validator("backends", mode="before")
+ @classmethod
+ def _validate_backends(cls, v: list[str | Backend]) -> list[Backend]:
+ return [item if isinstance(item, Backend) else Backend(item) for item in v]
+
async def save(self, path: Path) -> None:
async with await open_file(path, "w") as f:
py = self.model_dump(exclude_none=True, exclude={"is_custom"})
← 5097b266 Tweaked workspace settings (#2095)
·
back to Exo
·
fix(bug): EventRouter lifetime-handling fixed, no more proce 74e9fe15 →