slight refactoring of code; configure --yes should work now

This commit is contained in:
Lincoln Stein 2023-06-02 23:19:14 -04:00
parent 72d1e4e404
commit 77b7680b32
3 changed files with 24 additions and 31 deletions

View File

@ -49,6 +49,7 @@ from invokeai.backend.install.model_install_backend import (
download_from_hf, download_from_hf,
hf_download_with_resume, hf_download_with_resume,
recommended_datasets, recommended_datasets,
UserSelections,
) )
from invokeai.app.services.config import ( from invokeai.app.services.config import (
get_invokeai_config, get_invokeai_config,
@ -636,9 +637,9 @@ def default_startup_options(init_file: Path) -> Namespace:
opts.nsfw_checker = True opts.nsfw_checker = True
return opts return opts
def default_user_selections(program_opts: Namespace) -> Namespace: def default_user_selections(program_opts: Namespace) -> UserSelections:
return Namespace( return UserSelections(
starter_models=default_dataset() install_models=default_dataset()
if program_opts.default_only if program_opts.default_only
else recommended_datasets() else recommended_datasets()
if program_opts.yes_to_all if program_opts.yes_to_all
@ -646,8 +647,6 @@ def default_user_selections(program_opts: Namespace) -> Namespace:
purge_deleted_models=False, purge_deleted_models=False,
scan_directory=None, scan_directory=None,
autoscan_on_startup=None, autoscan_on_startup=None,
import_model_paths=None,
convert_to_diffusers=None,
) )

View File

@ -12,6 +12,7 @@ from tempfile import TemporaryFile
from typing import List, Dict from typing import List, Dict
import requests import requests
from dataclasses import dataclass,field
from diffusers import AutoencoderKL from diffusers import AutoencoderKL
from huggingface_hub import hf_hub_url, HfFolder from huggingface_hub import hf_hub_url, HfFolder
from omegaconf import OmegaConf from omegaconf import OmegaConf
@ -56,6 +57,21 @@ class ModelInstallList:
install_models: List[str] install_models: List[str]
remove_models: List[str] remove_models: List[str]
@dataclass
class UserSelections():
install_models: List[str]= field(default_factory=list)
remove_models: List[str]=field(default_factory=list)
purge_deleted_models: bool=field(default_factory=list)
install_cn_models: List[str] = field(default_factory=list)
remove_cn_models: List[str] = field(default_factory=list)
install_lora_models: List[str] = field(default_factory=list)
remove_lora_models: List[str] = field(default_factory=list)
install_ti_models: List[str] = field(default_factory=list)
remove_ti_models: List[str] = field(default_factory=list)
scan_directory: Path = None
autoscan_on_startup: bool=False
import_model_paths: str=None
def default_config_file(): def default_config_file():
return config.model_conf_path return config.model_conf_path

View File

@ -14,7 +14,6 @@ import curses
import os import os
import sys import sys
from argparse import Namespace from argparse import Namespace
from collections import deque
from multiprocessing import Process from multiprocessing import Process
from multiprocessing.connection import Connection, Pipe from multiprocessing.connection import Connection, Pipe
from pathlib import Path from pathlib import Path
@ -28,7 +27,6 @@ from npyscreen import widget
from omegaconf import OmegaConf from omegaconf import OmegaConf
import invokeai.backend.util.logging as logger import invokeai.backend.util.logging as logger
from dataclasses import dataclass,field
from ...backend.install.model_install_backend import ( from ...backend.install.model_install_backend import (
Dataset_path, Dataset_path,
@ -37,10 +35,11 @@ from ...backend.install.model_install_backend import (
install_requested_models, install_requested_models,
recommended_datasets, recommended_datasets,
ModelInstallList, ModelInstallList,
UserSelections,
) )
from ...backend import ModelManager from ...backend import ModelManager
from ...backend.util import choose_precision, choose_torch_device from ...backend.util import choose_precision, choose_torch_device
from ...backend.util.logging import InvokeAILogger, InvokeAILogFormatter from ...backend.util.logging import InvokeAILogger
from .widgets import ( from .widgets import (
CenteredTitleText, CenteredTitleText,
MultiSelectColumns, MultiSelectColumns,
@ -54,7 +53,7 @@ from invokeai.app.services.config import get_invokeai_config
# minimum size for the UI # minimum size for the UI
MIN_COLS = 120 MIN_COLS = 120
MIN_LINES = 50 MIN_LINES = 52
config = get_invokeai_config() config = get_invokeai_config()
@ -140,13 +139,8 @@ class addModelsForm(npyscreen.FormMultiPage):
BufferBox, BufferBox,
name='Log Messages', name='Log Messages',
editable=False, editable=False,
max_height = 20, max_height = 15,
) )
# self.monitor = self.add_widget_intelligent(
# npyscreen.BufferPager,
# editable=False,
# max_height = 20,
# )
self.nextrely += 1 self.nextrely += 1
done_label = "INSTALL/REMOVE" done_label = "INSTALL/REMOVE"
@ -661,22 +655,6 @@ class addModelsForm(npyscreen.FormMultiPage):
# URLs and the like # URLs and the like
selections.import_model_paths = self.diffusers_models['download_ids'].value.split() selections.import_model_paths = self.diffusers_models['download_ids'].value.split()
@dataclass
class UserSelections():
install_models: List[str]= field(default_factory=list)
remove_models: List[str]=field(default_factory=list)
purge_deleted_models: bool=field(default_factory=list)
install_cn_models: List[str] = field(default_factory=list)
remove_cn_models: List[str] = field(default_factory=list)
install_lora_models: List[str] = field(default_factory=list)
remove_lora_models: List[str] = field(default_factory=list)
install_ti_models: List[str] = field(default_factory=list)
remove_ti_models: List[str] = field(default_factory=list)
scan_directory: Path = None
autoscan_on_startup: bool=False
import_model_paths: str=None
class AddModelApplication(npyscreen.NPSAppManaged): class AddModelApplication(npyscreen.NPSAppManaged):
def __init__(self,opt): def __init__(self,opt):
super().__init__() super().__init__()