Trying to construct modelspace

This commit is contained in:
2025-09-15 02:08:30 +07:00
parent 300d255008
commit e848593ab6
3 changed files with 71 additions and 13 deletions

20
main.py
View File

@@ -7,14 +7,18 @@ from shell.Interactive import Interactive
m = ModelSpace(global_repo, '/mnt/vaiola/gagaga') m = ModelSpace(global_repo, '/mnt/vaiola/gagaga')
d = m._deptree('flux') # d = m._deptree('flux')
d = m._deptree('flux') # d = m._deptree('flux')
d = m._deptree('flux') # d = m._deptree('flux')
d = m._deptree('flux') # d = m._deptree('flux')
d = m._deptree('flux') # d = m._deptree('flux')
d = m._deptree('flux') # d = m._deptree('flux')
d = m._deptree('flux') # d = m._deptree('flux')
d = m._deptree('flux') # d = m._deptree('flux')
import modelspace.PathMap as pm
pm
# m.run('flux') # m.run('flux')
# m.install('flux-kontefghjvnxt') # m.install('flux-kontefghjvnxt')

View File

@@ -1,13 +1,17 @@
from pathlib import Path from pathlib import Path
import os import os
from modelspace.Essentials import SetsDict
from modelspace.ModelPackage import ModelPackage from modelspace.ModelPackage import ModelPackage
from modelspace.ModelPackageSelector import ModelPackageSelector from modelspace.ModelPackageSelector import ModelPackageSelector
from modelspace.ModelSpaceDatabase import ModelSpaceDatabase from modelspace.ModelSpaceDatabase import ModelSpaceDatabase
from modelspace.Repository import Repository from modelspace.Repository import Repository
from modelspace.PathMap import map
class ModelSpace: class ModelSpace:
def __init__(self, repo: Repository, path): def __init__(self, repo: Repository, path, layout):
self.layout = map.get(layout, None)
if not self.layout: raise RuntimeError(f"No such layout: {layout}")
self.repo = repo self.repo = repo
self.path = path self.path = path
self.config_dir = Path(self.path) / '.vaiola' self.config_dir = Path(self.path) / '.vaiola'
@@ -37,9 +41,12 @@ class ModelSpace:
def get_dest_dir(self, package: ModelPackage): def get_dest_dir(self, package: ModelPackage, no_lineage = False):
# TODO type_subdir = self.layout.get(package.package_type, None)
raise NotImplemented if not type_subdir: raise RuntimeError(f"This type ({package.package_type}) of packages not supported by current modelspace")
lineage_subdir = package.lineage
if no_lineage: return str(self.path / type_subdir)
return str(self.path / type_subdir / lineage_subdir)
def _register_package_in_temp(self, package: ModelPackage): def _register_package_in_temp(self, package: ModelPackage):
for resource in package.provides: self.temp_installed_resources.add(resource, package.uuid) for resource in package.provides: self.temp_installed_resources.add(resource, package.uuid)
@@ -68,7 +75,12 @@ class ModelSpace:
for resource in resources: for resource in resources:
selected_packages = selected_packages | self._deptree(resource, answer) selected_packages = selected_packages | self._deptree(resource, answer)
# TODO check file conflicts files = SetsDict()
for package in selected_packages:
for file in package.files:
files.add(package.uuid, Path(self.get_dest_dir(package, self.layout.no_lineage)) / file)
for file in files.index: self.check_for_file_conflicts(file)
# TODO run copier # TODO run copier

42
modelspace/PathMap.py Normal file
View File

@@ -0,0 +1,42 @@
# editable modelspaces map file
# you can add custom layout by simple syntax
# Parameter "no_linage" disables creating subdir for each model linage
# <layout_name> = PathMap(no_lineage=<no_lineage>)
# <layout_name>[<model_type>] = '<model_type_subdir>'
#
# map = {
# ... (other layouts)
# <layout_name>: "<layout_name>"
# ... (other layouts)
# }
# map must be single. Don't try to create multiple map variables. add all layouts to single map
class PathMap(dict):
def __init__(self, no_lineage: bool):
super().__init__()
self.no_lineage = no_lineage
comfy = PathMap(no_lineage=False)
comfy['audio_encoder'] = 'audio_encoders'
comfy['checkpoint'] = 'checkpoints'
comfy['clip'] = 'clip'
comfy['clip_vision'] = 'clip_vision'
comfy['controlnet'] = 'controlnet'
comfy['diffuser'] = 'diffusers'
comfy['diffusion_model'] = 'diffusion_models'
comfy['embedding'] = 'embeddings'
comfy['gligen'] = 'gligen'
comfy['hypernetwork'] = 'hypernetworks'
comfy['lora'] = 'loras'
comfy['model_patch'] = 'model_patches'
comfy['photomaker'] = 'photomaker'
comfy['style_model'] = 'style_models'
comfy['test_encoder'] = 'text_encoders'
comfy['unet'] = 'unet'
comfy['upscale_model'] = 'upscale_models'
comfy['vae'] = 'vae'
comfy['vae_approx'] = 'vae_approx'
map = {
'comfy': comfy
}