Add persistent base-model filter to discovery categories

This commit is contained in:
Mikei386
2026-09-28 19:31:55 +02:00
parent 5cc732f993
commit 8e829928c7
6 changed files with 44 additions and 8 deletions
+11 -1
View File
@@ -4,7 +4,7 @@ import tempfile
import time
import unittest
from unittest.mock import patch
from catalog import Catalog, safe_url, repo_id
from catalog import Catalog, safe_url, repo_id, is_derived_model
class CatalogTests(unittest.TestCase):
def test_reject_untrusted_urls_and_repos(self):
@@ -20,6 +20,16 @@ class CatalogTests(unittest.TestCase):
self.assertEqual(query['sort'],['createdAt']);self.assertEqual(query['direction'],['-1'])
self.assertEqual(result['models'][0]['created_at'],'2026-09-28T00:00:00Z')
with self.assertRaises(ValueError):Catalog(d).search('','image','invalid')
def test_base_filter_checks_lineage_and_filters_before_limit(self):
base={'id':'maker/base','cardData':{},'tags':['text-to-video']}
for metadata in ({'cardData':{'base_model':'maker/base'}},{'cardData':{'base_model':['maker/base']}},{'tags':['base_model:quantized:maker/base']},{'tags':['lora']},{'tags':['gguf']}):
self.assertTrue(is_derived_model(dict(base,**metadata)))
self.assertFalse(is_derived_model(base));self.assertFalse(is_derived_model(dict(base,id='maker/adapter-in-name',cardData=None)))
with tempfile.TemporaryDirectory() as d,patch('catalog.metadata',return_value=[dict(base,id='derived/'+str(i),tags=['lora']) for i in range(20)]+[base]) as fetch:
value=Catalog(d).search('','video','newest',True)
self.assertEqual([x['repo'] for x in value['models']],['maker/base']);self.assertEqual(value['scanned'],21)
self.assertIn('limit=100',fetch.call_args.args[0]);self.assertIn('expand=cardData',fetch.call_args.args[0])
with self.assertRaises(ValueError):Catalog(d).search('','video','downloads','true')
def test_download_integrity_and_library(self):
for valid in (True,False):
with self.subTest(valid=valid),tempfile.TemporaryDirectory() as directory: