Add profile presets and min-p controls, embeddings and VoxCPM workers
This commit is contained in:
1 parent
74dd2ed8ba
commit
a7b30b62d2
32 files changed
+615
-64
No files matched your search
@@ -0,0 +1,46 @@
|
||||
import json,tempfile,unittest
|
||||
from pathlib import Path
|
||||
from profiles import Profiles,SCHEMAS
|
||||
|
||||
class Catalog:
|
||||
def entry(self,ident):
|
||||
if ident not in ('model','other'):raise ValueError('Datei fehlt')
|
||||
return dict(id=ident,repo='example/model',kind='image',profile_eligible=True,file='model.safetensors')
|
||||
|
||||
class PresetTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.tmp=tempfile.TemporaryDirectory();self.path=Path(self.tmp.name)/'profiles.json';self.p=Profiles(self.path,Catalog())
|
||||
self.row=self.p.save(dict(id=None,revision=0,name='Image Test',kind='image',model_id='model',parameters={k:v[2] for k,v in SCHEMAS['image'].items()}))
|
||||
def tearDown(self):self.tmp.cleanup()
|
||||
def save_preset(self,name='Vorher',revision=None):
|
||||
return self.p.preset(dict(id=self.row['id'],revision=revision or self.p.rows[0]['revision'],action='save',name=name))
|
||||
def test_snapshot_survives_edit_and_reload_and_pins_old_model(self):
|
||||
row=self.save_preset();saved=json.loads(json.dumps(row['presets'][0]))
|
||||
params=dict(row['parameters'],steps=4)
|
||||
row=self.p.save(dict(id=row['id'],revision=row['revision'],name=row['name'],kind='image',model_id='other',parameters=params))
|
||||
self.assertEqual(row['presets'][0],saved);self.assertEqual(saved['parameters']['steps'],25)
|
||||
self.assertEqual(Profiles(self.path,Catalog()).rows[0]['presets'],[saved])
|
||||
self.assertTrue(self.p.references('model'))
|
||||
self.p.preset(dict(id=row['id'],revision=row['revision'],action='delete',preset_id=saved['id']))
|
||||
self.assertEqual(self.p.references('model'),[])
|
||||
def test_stale_duplicate_invalid_and_unknown_delete_rejected(self):
|
||||
row=self.save_preset()
|
||||
with self.assertRaises(ValueError):self.save_preset('Stale',1)
|
||||
with self.assertRaises(ValueError):self.save_preset()
|
||||
with self.assertRaises(ValueError):self.save_preset(' ')
|
||||
with self.assertRaises(ValueError):self.p.preset(dict(id=row['id'],revision=row['revision'],action='delete',preset_id='missing'))
|
||||
self.assertEqual(len(self.p.rows[0]['presets']),1)
|
||||
def test_pending_baseline_survives_legacy_save_and_merges_once(self):
|
||||
row=self.save_preset();preset=row['presets'][0]
|
||||
self.path.with_name('profile-presets-pending.json').write_text(json.dumps([dict(profile_id=row['id'],preset=preset)]))
|
||||
row.pop('presets');self.path.write_text(json.dumps([row]))
|
||||
loaded=Profiles(self.path,Catalog())
|
||||
self.assertEqual(loaded.rows[0]['presets'],[preset])
|
||||
self.assertFalse(self.path.with_name('profile-presets-pending.json').exists())
|
||||
self.assertEqual(Profiles(self.path,Catalog()).rows[0]['presets'],[preset])
|
||||
def test_new_duplicate_profile_has_no_presets(self):
|
||||
self.save_preset()
|
||||
row=self.p.save(dict(id=None,revision=0,name='Another Image',kind='image',model_id='model',parameters=self.row['parameters']))
|
||||
self.assertEqual(row['presets'],[])
|
||||
|
||||
if __name__=='__main__':unittest.main()
|
||||
Reference in new issue
Block a user