[object Object]

← back to Exo

fix model cards not validating properly after #2071 (#2096)

90f24bef30ceef09b45946970f53b43bf44c3206 · 2026-05-15 16:17:35 +0100 · Evan Quiney

Files touched

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 →