Preparing modelspace release
This commit is contained in:
22
main.py
22
main.py
@@ -1,24 +1,4 @@
|
||||
from modelspace.ModelPackageSelector import ModelPackageSelector
|
||||
from modelspace.ModelSpace import ModelSpace
|
||||
from modelspace.Repository import global_repo
|
||||
from shell.Interactive import Interactive
|
||||
|
||||
# Interactive().start()
|
||||
Interactive().start()
|
||||
|
||||
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')
|
||||
|
||||
import modelspace.PathMap as pm
|
||||
|
||||
pm
|
||||
# m.run('flux')
|
||||
|
||||
# m.install('flux-kontefghjvnxt')
|
||||
@@ -88,7 +88,7 @@ class ModelPackageSelector:
|
||||
available_packages = available_packages - installed_packages
|
||||
|
||||
if len(available_packages) == 0:
|
||||
self._installed_packages = self._installed_packages | set(available_packages)
|
||||
print("All possible packages for your query had been installed")
|
||||
return available_packages
|
||||
if len(available_packages) == 1:
|
||||
self._installed_packages = self._installed_packages | set(available_packages)
|
||||
|
||||
@@ -33,9 +33,10 @@ class ModelSpace:
|
||||
|
||||
def check_for_file_conflicts(self, pkg_id, path: str):
|
||||
path = Path(path)
|
||||
self.temp_files_pending.add(pkg_id, path)
|
||||
if path.exists() or path in self.temp_files_pending.index:
|
||||
self.temp_file_conflicts.add(pkg_id, path)
|
||||
self.temp_files_pending.add(pkg_id, path)
|
||||
|
||||
|
||||
def get_dest_dir(self, package: ModelPackage, no_lineage = False):
|
||||
type_subdir = self.layout.get(package.package_type, None)
|
||||
@@ -63,7 +64,7 @@ class ModelSpace:
|
||||
|
||||
|
||||
|
||||
def install(self, resources: str | list[str], depth = 0, answer = None) -> None:
|
||||
def install(self, resources: str | list[str], answer = None, depth = 0) -> None:
|
||||
if depth == 0: self._reset_selector()
|
||||
if isinstance(resources, str): resources = [resources]
|
||||
|
||||
@@ -75,13 +76,14 @@ class ModelSpace:
|
||||
for file in package.files:
|
||||
self.check_for_file_conflicts(package.uuid, Path(self.path) / self.get_dest_dir(package, self.layout.no_lineage) / file)
|
||||
|
||||
if len(self.temp_file_conflicts.index) != 0: raise RuntimeError("File conflicts detected")
|
||||
if len(self.temp_file_conflicts.index) != 0:
|
||||
raise RuntimeError("File conflicts detected")
|
||||
|
||||
for package in selected_packages:
|
||||
self.db.create_manual(package.uuid) # TODO add deps separation from manual packages
|
||||
for file in package.files:
|
||||
self.db.create_file(package.uuid, Path(self.get_dest_dir(package, self.layout.no_lineage)) / file)
|
||||
self._copier(package.path / "files" / file, str(self.get_dest_dir(package, self.layout.no_lineage)),[file])
|
||||
self.db.create_file(package.uuid, str(Path(self.get_dest_dir(package, self.layout.no_lineage)) / file))
|
||||
self._copier(package.path / "files", str(Path(self.path) / self.get_dest_dir(package, self.layout.no_lineage)),[file])
|
||||
|
||||
|
||||
|
||||
@@ -134,10 +136,11 @@ class ModelSpace:
|
||||
@property
|
||||
def available_resources(self): return self.repo.model_sub_repo.resources
|
||||
@property
|
||||
def installed_manuals(self): return [m[0] if m and len(m) > 0 else None for m in self.db.get_all_manuals()] if self.db.get_all_manuals() else list()
|
||||
def installed_manuals(self): return [self.repo.model_sub_repo.package_by_id(m[0]) if m and len(m) > 0 else None for m in self.db.get_all_manuals()] if self.db.get_all_manuals() else list()
|
||||
@property
|
||||
def installed_deps(self): return [m[0] if m and len(m) > 0 else None for m in self.db.get_all_deps()] if self.db.get_all_deps() else list()
|
||||
def installed_deps(self): return [self.repo.model_sub_repo.package_by_id(m[0]) if m and len(m) > 0 else None for m in self.db.get_all_deps()] if self.db.get_all_deps() else list()
|
||||
@property
|
||||
def installed_packages(self): return self.installed_manuals + self.installed_deps
|
||||
@property
|
||||
def installed_resources(self): return self.repo.model_sub_repo.resources_from_pkg_list(self.installed_packages)
|
||||
def installed_resources(self): return self.repo.model_sub_repo.resources_from_pkg_list(p.uuid for p in self.installed_packages)
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ comfy['clip_vision'] = 'clip_vision'
|
||||
comfy['controlnet'] = 'controlnet'
|
||||
comfy['diffuser'] = 'diffusers'
|
||||
comfy['diffusion_model'] = 'diffusion_models'
|
||||
comfy['diffusion_nodel'] = 'diffusion_models'
|
||||
comfy['embedding'] = 'embeddings'
|
||||
comfy['gligen'] = 'gligen'
|
||||
comfy['hypernetwork'] = 'hypernetworks'
|
||||
@@ -31,7 +32,7 @@ comfy['lora'] = 'loras'
|
||||
comfy['model_patch'] = 'model_patches'
|
||||
comfy['photomaker'] = 'photomaker'
|
||||
comfy['style_model'] = 'style_models'
|
||||
comfy['test_encoder'] = 'text_encoders'
|
||||
comfy['text_encoder'] = 'text_encoders'
|
||||
comfy['unet'] = 'unet'
|
||||
comfy['upscale_model'] = 'upscale_models'
|
||||
comfy['vae'] = 'vae'
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from modelspace.ModelSpace import ModelSpace
|
||||
from shell.Handlers.ABS import Handler
|
||||
from modelspace.Repository import global_repo
|
||||
|
||||
@@ -8,12 +9,57 @@ class ModelSpaceHandler(Handler):
|
||||
self.forwarding_table: dict[str, Handler] = {
|
||||
}
|
||||
self.handle_table: dict = {
|
||||
'create_inter': self._create_inter
|
||||
'create-inter': self._create_inter,
|
||||
'install': self._install,
|
||||
'install-all': self._install_all,
|
||||
# 'create': self._create,
|
||||
'load': self._load,
|
||||
# 'show': self._show,
|
||||
# 'activate': self._activate,
|
||||
|
||||
}
|
||||
|
||||
self._loaded_instances: dict[str, ModelSpace] = {}
|
||||
self._active_instance: ModelSpace | None = None
|
||||
pass
|
||||
|
||||
def _create_inter(self, command: list[str], pos=0):
|
||||
global_repo.add_model_package_interactive()
|
||||
self.succeed = True
|
||||
|
||||
def _load(self, command: list[str], pos = 0):
|
||||
keys, args = self.parse_arguments(command[pos:], ['path', 'layout', 'name'])
|
||||
self._check_arg(keys, 'path')
|
||||
self._check_arg(keys, 'layout')
|
||||
if not keys['name']: keys['name'] = 'app'
|
||||
i = ModelSpace(global_repo, path=keys['path'], layout=keys['layout'])
|
||||
# if not i.config.created: raise self.execution_error("ACTIVATE INSTANCE: instance not exists")
|
||||
self._loaded_instances[keys['name']] = i
|
||||
self._active_instance = i
|
||||
print(f"instance {keys['path']} loaded and activated. identified by {keys['name']}")
|
||||
self.succeed = True
|
||||
|
||||
# def _activate(self, command: list[str], pos = 0):
|
||||
# keys, args = self.parse_arguments(command[pos:], ['name'])
|
||||
# self._check_arg(keys, 'name')
|
||||
# i = self._loaded_instances.get(command[1], None)
|
||||
# if i:
|
||||
# self._active_instance = i
|
||||
# else:
|
||||
# raise ValueError(f"pyapp {keys['name']} not loaded")
|
||||
#
|
||||
# def _show(self, command: list[str], pos = 0):
|
||||
# print("Environment type:", self._active_instance.config.env_type)
|
||||
# # TODO Add new config info (app section)
|
||||
|
||||
# def _create(self, command: list[str], pos = 0):
|
||||
# keys, args = self.parse_arguments(command[pos:], ['env', 'path', 'python'])
|
||||
|
||||
def _install(self, command: list[str], pos = 0):
|
||||
for resource in command[pos:]: self._active_instance.install(resource)
|
||||
self.succeed = True
|
||||
|
||||
def _install_all(self, command: list[str], pos = 0):
|
||||
for resource in global_repo.model_sub_repo.resources.keys:
|
||||
self._active_instance.install(resource, answer='all')
|
||||
self.succeed = True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user