Fetch from all providers. Returns number of models updated.
(self, force: bool = False)
| 277 | self._source_weights[provider.source_name] = weight |
| 278 | |
| 279 | async def refresh(self, force: bool = False) -> int: |
| 280 | """Fetch from all providers. Returns number of models updated.""" |
| 281 | total = 0 |
| 282 | for provider in self._providers: |
| 283 | if not force: |
| 284 | source_data = self._sources.get(provider.source_name, {}) |
| 285 | if source_data: |
| 286 | newest = max((e.fetched_at for e in source_data.values()), default=0) |
| 287 | if time.time() - newest < provider.refresh_interval_s: |
| 288 | continue |
| 289 | try: |
| 290 | entries = await provider.fetch() |
| 291 | if entries: |
| 292 | self._sources[provider.source_name] = entries |
| 293 | total += len(entries) |
| 294 | logger.info( |
| 295 | "Benchmark refresh: %d models from %s", |
| 296 | len(entries), |
| 297 | provider.source_name, |
| 298 | ) |
| 299 | except Exception as exc: |
| 300 | logger.warning("Benchmark refresh failed for %s: %s", provider.source_name, exc) |
| 301 | if total > 0: |
| 302 | self._last_refresh = time.time() |
| 303 | self._save_cache() |
| 304 | self._build_index() |
| 305 | return total |
| 306 | |
| 307 | def needs_refresh(self, *, now: float | None = None) -> bool: |
| 308 | """Return whether any configured source is missing or past its TTL.""" |
no test coverage detected