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')
|
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')
|
||||||
@@ -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
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