mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
turned on Pydantic validate_assignment
This commit is contained in:
parent
8258c87a9f
commit
a9bf387e5e
@ -28,7 +28,6 @@ InvokeAI:
|
|||||||
always_use_cpu: false
|
always_use_cpu: false
|
||||||
free_gpu_mem: false
|
free_gpu_mem: false
|
||||||
Features:
|
Features:
|
||||||
restore: true
|
|
||||||
esrgan: true
|
esrgan: true
|
||||||
patchmatch: true
|
patchmatch: true
|
||||||
internet_available: true
|
internet_available: true
|
||||||
@ -165,7 +164,7 @@ import pydoc
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from omegaconf import OmegaConf, DictConfig
|
from omegaconf import OmegaConf, DictConfig, ListConfig
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from pydantic import BaseSettings, Field, parse_obj_as
|
from pydantic import BaseSettings, Field, parse_obj_as
|
||||||
from typing import ClassVar, Dict, List, Set, Literal, Union, get_origin, get_type_hints, get_args
|
from typing import ClassVar, Dict, List, Set, Literal, Union, get_origin, get_type_hints, get_args
|
||||||
@ -189,7 +188,12 @@ class InvokeAISettings(BaseSettings):
|
|||||||
opt = parser.parse_args(argv)
|
opt = parser.parse_args(argv)
|
||||||
for name in self.__fields__:
|
for name in self.__fields__:
|
||||||
if name not in self._excluded():
|
if name not in self._excluded():
|
||||||
setattr(self, name, getattr(opt, name))
|
value = getattr(opt, name)
|
||||||
|
if isinstance(value, ListConfig):
|
||||||
|
value = list(value)
|
||||||
|
elif isinstance(value, DictConfig):
|
||||||
|
value = dict(value)
|
||||||
|
setattr(self, name, value)
|
||||||
|
|
||||||
def to_yaml(self) -> str:
|
def to_yaml(self) -> str:
|
||||||
"""
|
"""
|
||||||
@ -426,6 +430,9 @@ class InvokeAIAppConfig(InvokeAISettings):
|
|||||||
version : bool = Field(default=False, description="Show InvokeAI version and exit", category="Other")
|
version : bool = Field(default=False, description="Show InvokeAI version and exit", category="Other")
|
||||||
# fmt: on
|
# fmt: on
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
def parse_args(self, argv: List[str] = None, conf: DictConfig = None, clobber=False):
|
def parse_args(self, argv: List[str] = None, conf: DictConfig = None, clobber=False):
|
||||||
"""
|
"""
|
||||||
Update settings with contents of init file, environment, and
|
Update settings with contents of init file, environment, and
|
||||||
|
@ -63,6 +63,7 @@ from invokeai.backend.install.model_install_backend import (
|
|||||||
ModelInstall,
|
ModelInstall,
|
||||||
)
|
)
|
||||||
from invokeai.backend.model_management.model_probe import ModelType, BaseModelType
|
from invokeai.backend.model_management.model_probe import ModelType, BaseModelType
|
||||||
|
from pydantic.error_wrappers import ValidationError
|
||||||
|
|
||||||
warnings.filterwarnings("ignore")
|
warnings.filterwarnings("ignore")
|
||||||
transformers.logging.set_verbosity_error()
|
transformers.logging.set_verbosity_error()
|
||||||
@ -659,7 +660,10 @@ def migrate_init_file(legacy_format: Path):
|
|||||||
fields = [x for x, y in InvokeAIAppConfig.__fields__.items() if y.field_info.extra.get("category") != "DEPRECATED"]
|
fields = [x for x, y in InvokeAIAppConfig.__fields__.items() if y.field_info.extra.get("category") != "DEPRECATED"]
|
||||||
for attr in fields:
|
for attr in fields:
|
||||||
if hasattr(old, attr):
|
if hasattr(old, attr):
|
||||||
setattr(new, attr, getattr(old, attr))
|
try:
|
||||||
|
setattr(new, attr, getattr(old, attr))
|
||||||
|
except ValidationError as e:
|
||||||
|
print(f'* Ignoring incompatible value for field {attr}:\n {str(e)}')
|
||||||
|
|
||||||
# a few places where the field names have changed and we have to
|
# a few places where the field names have changed and we have to
|
||||||
# manually add in the new names/values
|
# manually add in the new names/values
|
||||||
|
Loading…
Reference in New Issue
Block a user