Add persistent base-model filter to discovery categories
This commit is contained in:
+11
-1
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user