Trying to construct modelspace
This commit is contained in:
20
main.py
20
main.py
@@ -7,14 +7,18 @@ from shell.Interactive import Interactive
|
||||
|
||||
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.install('flux-kontefghjvnxt')
|
||||
@@ -1,13 +1,17 @@
|
||||
from pathlib import Path
|
||||
import os
|
||||
|
||||
from modelspace.Essentials import SetsDict
|
||||
from modelspace.ModelPackage import ModelPackage
|
||||
from modelspace.ModelPackageSelector import ModelPackageSelector
|
||||
from modelspace.ModelSpaceDatabase import ModelSpaceDatabase
|
||||
from modelspace.Repository import Repository
|
||||
from modelspace.PathMap import map
|
||||
|
||||
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.path = path
|
||||
self.config_dir = Path(self.path) / '.vaiola'
|
||||
@@ -37,9 +41,12 @@ class ModelSpace:
|
||||
|
||||
|
||||
|
||||
def get_dest_dir(self, package: ModelPackage):
|
||||
# TODO
|
||||
raise NotImplemented
|
||||
def get_dest_dir(self, package: ModelPackage, no_lineage = False):
|
||||
type_subdir = self.layout.get(package.package_type, None)
|
||||
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):
|
||||
for resource in package.provides: self.temp_installed_resources.add(resource, package.uuid)
|
||||
@@ -68,7 +75,12 @@ class ModelSpace:
|
||||
for resource in resources:
|
||||
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
|
||||
|
||||
|
||||
42
modelspace/PathMap.py
Normal file
42
modelspace/PathMap.py
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user