From b9a90fbd2867933f5065716b0245ff682b5c2cf3 Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Fri, 15 Sep 2023 22:19:29 -0400 Subject: [PATCH] blackify and isort --- invokeai/app/api/dependencies.py | 1 - invokeai/app/api/routers/models.py | 6 ++-- .../controlnet_image_processors.py | 1 - invokeai/app/invocations/latent.py | 2 +- invokeai/app/invocations/math.py | 4 +-- invokeai/app/services/download_manager.py | 7 ++-- invokeai/app/services/events.py | 6 ---- invokeai/app/services/invocation_services.py | 1 + invokeai/app/services/invocation_stats.py | 1 - .../app/services/model_manager_service.py | 12 +++---- invokeai/app/util/step_callback.py | 7 ++-- invokeai/backend/__init__.py | 14 ++++---- invokeai/backend/model_manager/__init__.py | 22 ++++++------ invokeai/backend/model_manager/config.py | 10 +++--- .../model_manager/download/__init__.py | 15 ++++---- .../backend/model_manager/download/base.py | 3 +- .../backend/model_manager/download/queue.py | 35 +++++++++---------- invokeai/backend/model_manager/hash.py | 5 +-- invokeai/backend/model_manager/install.py | 33 ++++++++--------- invokeai/backend/model_manager/loader.py | 15 ++++---- invokeai/backend/model_manager/merge.py | 2 +- .../backend/model_manager/models/__init__.py | 3 +- invokeai/backend/model_manager/models/base.py | 23 ++++++------ .../model_manager/models/controlnet.py | 3 +- invokeai/backend/model_manager/models/lora.py | 3 +- invokeai/backend/model_manager/models/sdxl.py | 3 +- .../model_manager/models/stable_diffusion.py | 5 ++- .../models/stable_diffusion_onnx.py | 1 + .../model_manager/models/textual_inversion.py | 5 +-- invokeai/backend/model_manager/models/vae.py | 5 +-- invokeai/backend/model_manager/probe.py | 19 ++++------ invokeai/backend/model_manager/search.py | 5 +-- .../backend/model_manager/storage/__init__.py | 4 +-- .../backend/model_manager/storage/base.py | 4 +-- invokeai/backend/model_manager/storage/sql.py | 22 +++--------- .../backend/model_manager/storage/yaml.py | 20 +++-------- invokeai/backend/model_manager/util.py | 7 ++-- .../diffusion/cross_attention_control.py | 2 +- .../diffusion/shared_invokeai_diffusion.py | 20 +++-------- .../training/textual_inversion_training.py | 5 +-- invokeai/backend/util/__init__.py | 9 +---- invokeai/backend/util/mps_fixes.py | 2 +- invokeai/backend/util/util.py | 2 +- 43 files changed, 160 insertions(+), 214 deletions(-) diff --git a/invokeai/app/api/dependencies.py b/invokeai/app/api/dependencies.py index 1ffaadbc12..c3afbc91ae 100644 --- a/invokeai/app/api/dependencies.py +++ b/invokeai/app/api/dependencies.py @@ -25,7 +25,6 @@ from ..services.latent_storage import DiskLatentsStorage, ForwardCacheLatentsSto from ..services.model_manager_service import ModelManagerService from ..services.processor import DefaultInvocationProcessor from ..services.sqlite import SqliteItemStorage -from ..services.invocation_stats import InvocationStatsService from .events import FastAPIEventService diff --git a/invokeai/app/api/routers/models.py b/invokeai/app/api/routers/models.py index 1961a79c47..a81c3e05de 100644 --- a/invokeai/app/api/routers/models.py +++ b/invokeai/app/api/routers/models.py @@ -10,13 +10,13 @@ from pydantic import BaseModel, parse_obj_as from starlette.exceptions import HTTPException from invokeai.backend import BaseModelType, ModelType -from invokeai.backend.model_manager import MergeInterpolationMethod from invokeai.backend.model_manager import ( OPENAPI_MODEL_CONFIGS, - ModelConfigBase, InvalidModelException, - UnknownModelException, + MergeInterpolationMethod, + ModelConfigBase, SchedulerPredictionType, + UnknownModelException, ) from ..dependencies import ApiDependencies diff --git a/invokeai/app/invocations/controlnet_image_processors.py b/invokeai/app/invocations/controlnet_image_processors.py index 231cf1126c..cb15caf306 100644 --- a/invokeai/app/invocations/controlnet_image_processors.py +++ b/invokeai/app/invocations/controlnet_image_processors.py @@ -28,7 +28,6 @@ from pydantic import BaseModel, Field, validator from invokeai.app.invocations.primitives import ImageField, ImageOutput - from ...backend.model_manager import BaseModelType from ..models.image import ImageCategory, ResourceOrigin from .baseinvocation import ( diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index d48ef92ee0..9527453f6f 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -34,8 +34,8 @@ from invokeai.app.util.step_callback import stable_diffusion_step_callback from invokeai.backend.model_manager import BaseModelType, ModelType, SilenceWarnings from ...backend.model_manager.lora import ModelPatcher -from ...backend.model_manager.seamless import set_seamless from ...backend.model_manager.models import BaseModelType +from ...backend.model_manager.seamless import set_seamless from ...backend.stable_diffusion import PipelineIntermediateState from ...backend.stable_diffusion.diffusers_pipeline import ( ConditioningData, diff --git a/invokeai/app/invocations/math.py b/invokeai/app/invocations/math.py index ac15146478..d9264717c9 100644 --- a/invokeai/app/invocations/math.py +++ b/invokeai/app/invocations/math.py @@ -178,7 +178,7 @@ class IntegerMathInvocation(BaseInvocation): elif self.operation == "DIV": return IntegerOutput(value=int(self.a / self.b)) elif self.operation == "EXP": - return IntegerOutput(value=self.a**self.b) + return IntegerOutput(value=self.a ** self.b) elif self.operation == "MOD": return IntegerOutput(value=self.a % self.b) elif self.operation == "ABS": @@ -252,7 +252,7 @@ class FloatMathInvocation(BaseInvocation): elif self.operation == "DIV": return FloatOutput(value=self.a / self.b) elif self.operation == "EXP": - return FloatOutput(value=self.a**self.b) + return FloatOutput(value=self.a ** self.b) elif self.operation == "SQRT": return FloatOutput(value=np.sqrt(self.a)) elif self.operation == "ABS": diff --git a/invokeai/app/services/download_manager.py b/invokeai/app/services/download_manager.py index ab51510d0e..4394a420b2 100644 --- a/invokeai/app/services/download_manager.py +++ b/invokeai/app/services/download_manager.py @@ -5,10 +5,13 @@ Model download service. from abc import ABC, abstractmethod from pathlib import Path -from typing import Optional, List, Union +from typing import List, Optional, Union + from pydantic.networks import AnyHttpUrl + +from invokeai.backend.model_manager.download import DownloadEventHandler, DownloadJobBase, DownloadQueue + from .events import EventServiceBase -from invokeai.backend.model_manager.download import DownloadQueue, DownloadJobBase, DownloadEventHandler class DownloadQueueServiceBase(ABC): diff --git a/invokeai/app/services/events.py b/invokeai/app/services/events.py index ab9f85fa6f..f5cf88e6ff 100644 --- a/invokeai/app/services/events.py +++ b/invokeai/app/services/events.py @@ -5,12 +5,6 @@ from typing import Any, Optional from invokeai.app.models.image import ProgressImage from invokeai.app.services.model_manager_service import BaseModelType, ModelInfo, ModelType, SubModelType from invokeai.app.util.misc import get_timestamp -from invokeai.app.services.model_manager_service import ( - BaseModelType, - ModelType, - SubModelType, - ModelInfo, -) from invokeai.backend.model_manager.download import DownloadJobBase diff --git a/invokeai/app/services/invocation_services.py b/invokeai/app/services/invocation_services.py index f3ce4c9b40..2bdf406870 100644 --- a/invokeai/app/services/invocation_services.py +++ b/invokeai/app/services/invocation_services.py @@ -1,5 +1,6 @@ # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) and the InvokeAI Team from __future__ import annotations + from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: diff --git a/invokeai/app/services/invocation_stats.py b/invokeai/app/services/invocation_stats.py index 35ab55ccda..96cdb93a01 100644 --- a/invokeai/app/services/invocation_stats.py +++ b/invokeai/app/services/invocation_stats.py @@ -44,7 +44,6 @@ from ..invocations.baseinvocation import BaseInvocation from .graph import GraphExecutionState from .item_storage import ItemStorageABC from .model_manager_service import ModelManagerService -from invokeai.backend.model_manager.cache import CacheStats # size of GIG in bytes GIG = 1073741824 diff --git a/invokeai/app/services/model_manager_service.py b/invokeai/app/services/model_manager_service.py index 7ac813bbe6..63ea5b6452 100644 --- a/invokeai/app/services/model_manager_service.py +++ b/invokeai/app/services/model_manager_service.py @@ -5,9 +5,15 @@ from __future__ import annotations import shutil from abc import ABC, abstractmethod from pathlib import Path +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from pydantic import Field +from pydantic.networks import AnyHttpUrl + +from invokeai.app.models.exceptions import CanceledException from invokeai.backend.model_manager import ( BaseModelType, + DuplicateModelException, MergeInterpolationMethod, ModelConfigBase, ModelInfo, @@ -18,15 +24,9 @@ from invokeai.backend.model_manager import ( ModelType, SubModelType, UnknownModelException, - DuplicateModelException, ) from invokeai.backend.model_manager.cache import CacheStats -from typing import TYPE_CHECKING, List, Optional, Union, Dict, Any -from pydantic import Field -from pydantic.networks import AnyHttpUrl - -from invokeai.app.models.exceptions import CanceledException from .config import InvokeAIAppConfig from .events import EventServiceBase diff --git a/invokeai/app/util/step_callback.py b/invokeai/app/util/step_callback.py index 39d9f511fc..611685dde4 100644 --- a/invokeai/app/util/step_callback.py +++ b/invokeai/app/util/step_callback.py @@ -3,10 +3,11 @@ from PIL import Image from invokeai.app.models.exceptions import CanceledException from invokeai.app.models.image import ProgressImage -from ..invocations.baseinvocation import InvocationContext -from ...backend.util.util import image_to_dataURL -from ...backend.stable_diffusion import PipelineIntermediateState + from ...backend.model_manager import BaseModelType +from ...backend.stable_diffusion import PipelineIntermediateState +from ...backend.util.util import image_to_dataURL +from ..invocations.baseinvocation import InvocationContext def sample_to_lowres_estimated_image(samples, latent_rgb_factors, smooth_matrix=None): diff --git a/invokeai/backend/__init__.py b/invokeai/backend/__init__.py index 3ce65cfa2e..72d5113864 100644 --- a/invokeai/backend/__init__.py +++ b/invokeai/backend/__init__.py @@ -2,15 +2,15 @@ Initialization file for invokeai.backend """ from .model_manager import ( # noqa F401 - ModelLoader, - ModelInstall, - ModelConfigStore, - SilenceWarnings, + BaseModelType, DuplicateModelException, InvalidModelException, - BaseModelType, + ModelConfigStore, + ModelInstall, + ModelLoader, ModelType, - SubModelType, - SchedulerPredictionType, ModelVariantType, + SchedulerPredictionType, + SilenceWarnings, + SubModelType, ) diff --git a/invokeai/backend/model_manager/__init__.py b/invokeai/backend/model_manager/__init__.py index 51d43225dc..6fc8922b33 100644 --- a/invokeai/backend/model_manager/__init__.py +++ b/invokeai/backend/model_manager/__init__.py @@ -1,7 +1,6 @@ """ Initialization file for invokeai.backend.model_manager.config """ -from .models import read_checkpoint_meta, OPENAPI_MODEL_CONFIGS # noqa F401 from .config import ( # noqa F401 BaseModelType, InvalidModelConfigException, @@ -11,19 +10,20 @@ from .config import ( # noqa F401 ModelType, ModelVariantType, SchedulerPredictionType, - SubModelType, SilenceWarnings, + SubModelType, ) -from .lora import ONNXModelPatcher, ModelPatcher -from .loader import ModelLoader, ModelInfo # noqa F401 from .install import ModelInstall, ModelInstallJob # noqa F401 -from .probe import ModelProbe, InvalidModelException # noqa F401 -from .storage import ( - UnknownModelException, +from .loader import ModelInfo, ModelLoader # noqa F401 +from .lora import ModelPatcher, ONNXModelPatcher +from .merge import MergeInterpolationMethod, ModelMerger +from .models import OPENAPI_MODEL_CONFIGS, read_checkpoint_meta # noqa F401 +from .probe import InvalidModelException, ModelProbe # noqa F401 +from .search import ModelSearch # noqa F401 +from .storage import ( # noqa F401 DuplicateModelException, ModelConfigStore, - ModelConfigStoreYAML, ModelConfigStoreSQL, -) # noqa F401 -from .search import ModelSearch # noqa F401 -from .merge import MergeInterpolationMethod, ModelMerger + ModelConfigStoreYAML, + UnknownModelException, +) diff --git a/invokeai/backend/model_manager/config.py b/invokeai/backend/model_manager/config.py index a148c2b93a..94ffc53155 100644 --- a/invokeai/backend/model_manager/config.py +++ b/invokeai/backend/model_manager/config.py @@ -20,16 +20,16 @@ Validation errors will raise an InvalidModelConfigException error. """ import warnings - from enum import Enum -from typing import Optional, Literal, List, Union, Type -from omegaconf.listconfig import ListConfig # to support the yaml backend +from typing import List, Literal, Optional, Type, Union + import pydantic -from pydantic import BaseModel, Field, Extra -from pydantic.error_wrappers import ValidationError # import these so that we can silence them from diffusers import logging as diffusers_logging +from omegaconf.listconfig import ListConfig # to support the yaml backend +from pydantic import BaseModel, Extra, Field +from pydantic.error_wrappers import ValidationError from transformers import logging as transformers_logging diff --git a/invokeai/backend/model_manager/download/__init__.py b/invokeai/backend/model_manager/download/__init__.py index 85f60b8d1d..ef4756be13 100644 --- a/invokeai/backend/model_manager/download/__init__.py +++ b/invokeai/backend/model_manager/download/__init__.py @@ -1,14 +1,13 @@ """Initialization file for threaded download manager.""" from .base import ( # noqa F401 - DownloadQueueBase, - DownloadJobStatus, - DownloadEventHandler, - UnknownJobIDException, - DownloadJobBase, - ModelSourceMetadata, - REPO_ID_RE, HTTP_RE, + REPO_ID_RE, + DownloadEventHandler, + DownloadJobBase, + DownloadJobStatus, + DownloadQueueBase, + ModelSourceMetadata, + UnknownJobIDException, ) - from .queue import DownloadQueue # noqa F401 diff --git a/invokeai/backend/model_manager/download/base.py b/invokeai/backend/model_manager/download/base.py index 167053d441..4a02ac02ce 100644 --- a/invokeai/backend/model_manager/download/base.py +++ b/invokeai/backend/model_manager/download/base.py @@ -7,7 +7,8 @@ from abc import ABC, abstractmethod from enum import Enum from functools import total_ordering from pathlib import Path -from typing import List, Optional, Callable, Union +from typing import Callable, List, Optional, Union + from pydantic import BaseModel, Field from pydantic.networks import AnyHttpUrl diff --git a/invokeai/backend/model_manager/download/queue.py b/invokeai/backend/model_manager/download/queue.py index d54ddb38f3..c3654b77bc 100644 --- a/invokeai/backend/model_manager/download/queue.py +++ b/invokeai/backend/model_manager/download/queue.py @@ -1,37 +1,36 @@ # Copyright (c) 2023, Lincoln D. Stein """Implementation of multithreaded download queue for invokeai.""" -import re import os -import requests +import re import shutil import threading import time import traceback - from json import JSONDecodeError from pathlib import Path -from requests import HTTPError -from typing import Dict, Optional, Set, List, Tuple, Union - -from pydantic import Field, validator, ValidationError -from pydantic.networks import AnyHttpUrl from queue import PriorityQueue +from typing import Dict, List, Optional, Set, Tuple, Union +import requests from huggingface_hub import HfApi, hf_hub_url +from pydantic import Field, ValidationError, validator +from pydantic.networks import AnyHttpUrl +from requests import HTTPError -from invokeai.backend.util.logging import InvokeAILogger from invokeai.app.services.config import InvokeAIAppConfig -from . import REPO_ID_RE, HTTP_RE -from .base import ( - DownloadQueueBase, - DownloadJobStatus, - DownloadEventHandler, - UnknownJobIDException, - DownloadJobBase, - ModelSourceMetadata, -) +from invokeai.backend.util.logging import InvokeAILogger + from ..storage import DuplicateModelException +from . import HTTP_RE, REPO_ID_RE +from .base import ( + DownloadEventHandler, + DownloadJobBase, + DownloadJobStatus, + DownloadQueueBase, + ModelSourceMetadata, + UnknownJobIDException, +) # Maximum number of bytes to download during each call to requests.iter_content() DOWNLOAD_CHUNK_SIZE = 100000 diff --git a/invokeai/backend/model_manager/hash.py b/invokeai/backend/model_manager/hash.py index 873d1b87b2..98359f1fdd 100644 --- a/invokeai/backend/model_manager/hash.py +++ b/invokeai/backend/model_manager/hash.py @@ -8,12 +8,13 @@ from invokeai.backend.model_managre.model_hash import FastModelHash 'a8e693a126ea5b831c96064dc569956f' """ -import os import hashlib -from imohash import hashfile +import os from pathlib import Path from typing import Dict, Union +from imohash import hashfile + class FastModelHash(object): """FastModelHash obect provides one public class method, hash().""" diff --git a/invokeai/backend/model_manager/install.py b/invokeai/backend/model_manager/install.py index 4c9f27f0cf..ba6cfafc7e 100644 --- a/invokeai/backend/model_manager/install.py +++ b/invokeai/backend/model_manager/install.py @@ -53,32 +53,29 @@ import tempfile from abc import ABC, abstractmethod from pathlib import Path from shutil import rmtree -from typing import Optional, List, Union, Dict, Set, Any, Callable +from typing import Any, Callable, Dict, List, Optional, Set, Union + from pydantic import Field from pydantic.networks import AnyHttpUrl + from invokeai.app.services.config import InvokeAIAppConfig from invokeai.backend.util.logging import InvokeAILogger -from .search import ModelSearch -from .storage import ModelConfigStore, DuplicateModelException, get_config_store + +from .config import BaseModelType, ModelFormat, ModelType, ModelVariantType, SchedulerPredictionType from .download import ( - DownloadQueueBase, - DownloadQueue, - DownloadJobBase, - ModelSourceMetadata, - DownloadEventHandler, - REPO_ID_RE, HTTP_RE, + REPO_ID_RE, + DownloadEventHandler, + DownloadJobBase, + DownloadQueue, + DownloadQueueBase, + ModelSourceMetadata, ) -from .download.queue import DownloadJobURL, DownloadJobRepoID, DownloadJobPath +from .download.queue import DownloadJobPath, DownloadJobRepoID, DownloadJobURL from .hash import FastModelHash -from .probe import ModelProbe, ModelProbeInfo, InvalidModelException -from .config import ( - ModelType, - BaseModelType, - ModelVariantType, - ModelFormat, - SchedulerPredictionType, -) +from .probe import InvalidModelException, ModelProbe, ModelProbeInfo +from .search import ModelSearch +from .storage import DuplicateModelException, ModelConfigStore, get_config_store class ModelInstallJob(DownloadJobBase): diff --git a/invokeai/backend/model_manager/loader.py b/invokeai/backend/model_manager/loader.py index 2773b139e4..92f7031458 100644 --- a/invokeai/backend/model_manager/loader.py +++ b/invokeai/backend/model_manager/loader.py @@ -5,18 +5,19 @@ import hashlib from abc import ABC, abstractmethod from dataclasses import dataclass from pathlib import Path -from typing import Union, Optional, List +from typing import List, Optional, Union import torch from invokeai.app.services.config import InvokeAIAppConfig -from invokeai.backend.util import choose_precision, choose_torch_device, InvokeAILogger, Chdir -from .config import BaseModelType, ModelType, SubModelType, ModelConfigBase -from .install import ModelInstallBase, ModelInstall -from .storage import ModelConfigStore, get_config_store -from .cache import ModelCache, ModelLocker, CacheStats -from .models import InvalidModelException, ModelBase, MODEL_CLASSES +from invokeai.backend.util import Chdir, InvokeAILogger, choose_precision, choose_torch_device + +from .cache import CacheStats, ModelCache, ModelLocker +from .config import BaseModelType, ModelConfigBase, ModelType, SubModelType from .download import DownloadEventHandler +from .install import ModelInstall, ModelInstallBase +from .models import MODEL_CLASSES, InvalidModelException, ModelBase +from .storage import ModelConfigStore, get_config_store @dataclass diff --git a/invokeai/backend/model_manager/merge.py b/invokeai/backend/model_manager/merge.py index 6dcb1cab2b..a220184e3a 100644 --- a/invokeai/backend/model_manager/merge.py +++ b/invokeai/backend/model_manager/merge.py @@ -16,7 +16,7 @@ from diffusers import logging as dlogging import invokeai.backend.util.logging as logger -from . import ModelLoader, ModelType, BaseModelType, ModelVariantType, ModelConfigBase +from . import BaseModelType, ModelConfigBase, ModelLoader, ModelType, ModelVariantType class MergeInterpolationMethod(str, Enum): diff --git a/invokeai/backend/model_manager/models/__init__.py b/invokeai/backend/model_manager/models/__init__.py index a5be9f8865..a0675fd0fa 100644 --- a/invokeai/backend/model_manager/models/__init__.py +++ b/invokeai/backend/model_manager/models/__init__.py @@ -11,10 +11,9 @@ from .base import ( # noqa: F401 ModelConfigBase, ModelNotFoundException, ModelType, - SubModelType, ModelVariantType, SchedulerPredictionType, - InvalidModelException, + SubModelType, read_checkpoint_meta, ) from .controlnet import ControlNetModel # TODO: diff --git a/invokeai/backend/model_manager/models/base.py b/invokeai/backend/model_manager/models/base.py index 924db9664e..607fe6ab62 100644 --- a/invokeai/backend/model_manager/models/base.py +++ b/invokeai/backend/model_manager/models/base.py @@ -2,33 +2,30 @@ import inspect import json import os import sys -import torch import typing from abc import ABCMeta, abstractmethod from contextlib import suppress from enum import Enum from pathlib import Path -from typing import List, Dict, Optional, Type, Literal, TypeVar, Generic, Callable, Any, Union +from typing import Any, Callable, Dict, Generic, List, Literal, Optional, Type, TypeVar, Union import numpy as np import onnx import safetensors.torch -from diffusers import DiffusionPipeline, ConfigMixin +import torch +from diffusers import ConfigMixin, DiffusionPipeline from onnx import numpy_helper -from onnxruntime import ( - InferenceSession, - SessionOptions, - get_available_providers, -) +from onnxruntime import InferenceSession, SessionOptions, get_available_providers from picklescan.scanner import scan_file_path + from ..config import ( # noqa F401 BaseModelType, - ModelType, - SubModelType, - ModelVariantType, - ModelFormat, - SchedulerPredictionType, ModelConfigBase, + ModelFormat, + ModelType, + ModelVariantType, + SchedulerPredictionType, + SubModelType, ) diff --git a/invokeai/backend/model_manager/models/controlnet.py b/invokeai/backend/model_manager/models/controlnet.py index 426c3ec712..532da82470 100644 --- a/invokeai/backend/model_manager/models/controlnet.py +++ b/invokeai/backend/model_manager/models/controlnet.py @@ -7,7 +7,8 @@ import torch import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig -from ..config import ControlNetDiffusersConfig, ControlNetCheckpointConfig + +from ..config import ControlNetCheckpointConfig, ControlNetDiffusersConfig from .base import ( BaseModelType, EmptyConfigLoader, diff --git a/invokeai/backend/model_manager/models/lora.py b/invokeai/backend/model_manager/models/lora.py index a9bd95645a..ab97f228ed 100644 --- a/invokeai/backend/model_manager/models/lora.py +++ b/invokeai/backend/model_manager/models/lora.py @@ -2,10 +2,11 @@ import bisect import os from enum import Enum from pathlib import Path -from typing import Dict, Optional, Union, Literal +from typing import Dict, Literal, Optional, Union import torch from safetensors.torch import load_file + from ..config import LoRAConfig from .base import ( BaseModelType, diff --git a/invokeai/backend/model_manager/models/sdxl.py b/invokeai/backend/model_manager/models/sdxl.py index b054972f62..87bb5c251a 100644 --- a/invokeai/backend/model_manager/models/sdxl.py +++ b/invokeai/backend/model_manager/models/sdxl.py @@ -5,7 +5,8 @@ from typing import Literal, Optional from omegaconf import OmegaConf from pydantic import Field -from ..config import MainDiffusersConfig, MainCheckpointConfig + +from ..config import MainCheckpointConfig, MainDiffusersConfig from .base import ( BaseModelType, DiffusersModel, diff --git a/invokeai/backend/model_manager/models/stable_diffusion.py b/invokeai/backend/model_manager/models/stable_diffusion.py index 57f0124cfa..ef9c60352e 100644 --- a/invokeai/backend/model_manager/models/stable_diffusion.py +++ b/invokeai/backend/model_manager/models/stable_diffusion.py @@ -4,15 +4,14 @@ from enum import Enum from pathlib import Path from typing import Literal, Optional, Union +from diffusers import StableDiffusionInpaintPipeline, StableDiffusionPipeline from omegaconf import OmegaConf from pydantic import Field -from diffusers import StableDiffusionInpaintPipeline, StableDiffusionPipeline -from ..config import SilenceWarnings import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig -from ..config import MainCheckpointConfig, MainDiffusersConfig +from ..config import MainCheckpointConfig, MainDiffusersConfig, SilenceWarnings from .base import ( BaseModelType, DiffusersModel, diff --git a/invokeai/backend/model_manager/models/stable_diffusion_onnx.py b/invokeai/backend/model_manager/models/stable_diffusion_onnx.py index 0d1150788a..63cc9e4cea 100644 --- a/invokeai/backend/model_manager/models/stable_diffusion_onnx.py +++ b/invokeai/backend/model_manager/models/stable_diffusion_onnx.py @@ -2,6 +2,7 @@ from enum import Enum from typing import Literal from diffusers import OnnxRuntimeModel + from ..config import ONNXSD1Config, ONNXSD2Config from .base import ( BaseModelType, diff --git a/invokeai/backend/model_manager/models/textual_inversion.py b/invokeai/backend/model_manager/models/textual_inversion.py index b70ae0b9da..f242dee4fe 100644 --- a/invokeai/backend/model_manager/models/textual_inversion.py +++ b/invokeai/backend/model_manager/models/textual_inversion.py @@ -1,11 +1,12 @@ import os -from typing import Optional, Literal +from typing import Literal, Optional import torch +from ..config import ModelFormat, TextualInversionConfig + # TODO: naming from ..lora import TextualInversionModel as TextualInversionModelRaw -from ..config import ModelFormat, TextualInversionConfig from .base import ( BaseModelType, InvalidModelException, diff --git a/invokeai/backend/model_manager/models/vae.py b/invokeai/backend/model_manager/models/vae.py index ab7d5ba94d..e14f93e23f 100644 --- a/invokeai/backend/model_manager/models/vae.py +++ b/invokeai/backend/model_manager/models/vae.py @@ -1,14 +1,15 @@ import os from enum import Enum from pathlib import Path -from typing import Optional, Literal +from typing import Literal, Optional import safetensors import torch from omegaconf import OmegaConf from invokeai.app.services.config import InvokeAIAppConfig -from ..config import VaeDiffusersConfig, VaeCheckpointConfig + +from ..config import VaeCheckpointConfig, VaeDiffusersConfig from .base import ( BaseModelType, EmptyConfigLoader, diff --git a/invokeai/backend/model_manager/probe.py b/invokeai/backend/model_manager/probe.py index 5c5baf589c..f78c700147 100644 --- a/invokeai/backend/model_manager/probe.py +++ b/invokeai/backend/model_manager/probe.py @@ -10,21 +10,14 @@ import json from abc import ABC, abstractmethod from dataclasses import dataclass from pathlib import Path -from typing import Optional, Callable +from typing import Callable, Optional + +import safetensors.torch +import torch from picklescan.scanner import scan_file_path -import torch -import safetensors.torch - -from .util import read_checkpoint_meta -from .config import ( - ModelType, - BaseModelType, - ModelVariantType, - ModelFormat, - SchedulerPredictionType, -) -from .util import SilenceWarnings, lora_token_vector_length +from .config import BaseModelType, ModelFormat, ModelType, ModelVariantType, SchedulerPredictionType +from .util import SilenceWarnings, lora_token_vector_length, read_checkpoint_meta class InvalidModelException(Exception): diff --git a/invokeai/backend/model_manager/search.py b/invokeai/backend/model_manager/search.py index ba8e0d1d3a..a91c38e18a 100644 --- a/invokeai/backend/model_manager/search.py +++ b/invokeai/backend/model_manager/search.py @@ -22,11 +22,12 @@ Example usage: import os from abc import ABC, abstractmethod -from typing import Set, Optional, Callable, Union from pathlib import Path +from typing import Callable, Optional, Set, Union + +from pydantic import BaseModel, Field from invokeai.backend.util.logging import InvokeAILogger -from pydantic import Field, BaseModel default_logger = InvokeAILogger.getLogger() diff --git a/invokeai/backend/model_manager/storage/__init__.py b/invokeai/backend/model_manager/storage/__init__.py index 05ec34d37a..3094b73e31 100644 --- a/invokeai/backend/model_manager/storage/__init__.py +++ b/invokeai/backend/model_manager/storage/__init__.py @@ -3,9 +3,9 @@ Initialization file for invokeai.backend.model_manager.storage """ import pathlib -from .base import ModelConfigStore, UnknownModelException, DuplicateModelException # noqa F401 -from .yaml import ModelConfigStoreYAML # noqa F401 +from .base import DuplicateModelException, ModelConfigStore, UnknownModelException # noqa F401 from .sql import ModelConfigStoreSQL # noqa F401 +from .yaml import ModelConfigStoreYAML # noqa F401 def get_config_store(location: pathlib.Path) -> ModelConfigStore: diff --git a/invokeai/backend/model_manager/storage/base.py b/invokeai/backend/model_manager/storage/base.py index b16a126540..f9bd678b0e 100644 --- a/invokeai/backend/model_manager/storage/base.py +++ b/invokeai/backend/model_manager/storage/base.py @@ -4,9 +4,9 @@ Abstract base class for storing and retrieving model configuration records. """ from abc import ABC, abstractmethod -from typing import Union, Set, List, Optional +from typing import List, Optional, Set, Union -from ..config import ModelConfigBase, BaseModelType, ModelType +from ..config import BaseModelType, ModelConfigBase, ModelType # should match the InvokeAI version when this is first released. CONFIG_FILE_VERSION = "3.1.1" diff --git a/invokeai/backend/model_manager/storage/sql.py b/invokeai/backend/model_manager/storage/sql.py index 35575ef3c0..1f6b8e6415 100644 --- a/invokeai/backend/model_manager/storage/sql.py +++ b/invokeai/backend/model_manager/storage/sql.py @@ -40,26 +40,14 @@ Typical usage: configs = store.search_by_name(base_model='sd-2', model_type='main') """ -import threading -import sqlite3 import json +import sqlite3 +import threading from pathlib import Path -from typing import Union, List, Optional, Set +from typing import List, Optional, Set, Union - -from ..config import ( - ModelConfigBase, - ModelConfigFactory, - BaseModelType, - ModelType, -) - -from .base import ( - DuplicateModelException, - UnknownModelException, - ModelConfigStore, - CONFIG_FILE_VERSION, -) +from ..config import BaseModelType, ModelConfigBase, ModelConfigFactory, ModelType +from .base import CONFIG_FILE_VERSION, DuplicateModelException, ModelConfigStore, UnknownModelException class ModelConfigStoreSQL(ModelConfigStore): diff --git a/invokeai/backend/model_manager/storage/yaml.py b/invokeai/backend/model_manager/storage/yaml.py index acc6a55adc..1abc2e1430 100644 --- a/invokeai/backend/model_manager/storage/yaml.py +++ b/invokeai/backend/model_manager/storage/yaml.py @@ -41,26 +41,16 @@ Typical usage: """ import threading -import yaml from enum import Enum from pathlib import Path -from typing import Union, Set, List, Optional +from typing import List, Optional, Set, Union + +import yaml from omegaconf import OmegaConf from omegaconf.dictconfig import DictConfig -from ..config import ( - ModelConfigBase, - ModelConfigFactory, - BaseModelType, - ModelType, -) - -from .base import ( - DuplicateModelException, - UnknownModelException, - ModelConfigStore, - CONFIG_FILE_VERSION, -) +from ..config import BaseModelType, ModelConfigBase, ModelConfigFactory, ModelType +from .base import CONFIG_FILE_VERSION, DuplicateModelException, ModelConfigStore, UnknownModelException class ModelConfigStoreYAML(ModelConfigStore): diff --git a/invokeai/backend/model_manager/util.py b/invokeai/backend/model_manager/util.py index 80fcfe5e7c..cb4a49d4b7 100644 --- a/invokeai/backend/model_manager/util.py +++ b/invokeai/backend/model_manager/util.py @@ -4,13 +4,14 @@ Various utilities used by the model manager. """ import json import warnings -import torch -import safetensors from pathlib import Path from typing import Optional, Union + +import safetensors +import torch from diffusers import logging as diffusers_logging -from transformers import logging as transformers_logging from picklescan.scanner import scan_file_path +from transformers import logging as transformers_logging class SilenceWarnings(object): diff --git a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py index 03b438525f..85501095da 100644 --- a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py +++ b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py @@ -261,7 +261,7 @@ class InvokeAICrossAttentionMixin: if q.shape[1] <= 4096: # (512x512) max q.shape[1]: 4096 return self.einsum_lowest_level(q, k, v, None, None, None) else: - slice_size = math.floor(2**30 / (q.shape[0] * q.shape[1])) + slice_size = math.floor(2 ** 30 / (q.shape[0] * q.shape[1])) return self.einsum_op_slice_dim1(q, k, v, slice_size) def einsum_op_mps_v2(self, q, k, v): diff --git a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py index 6fe53fd002..a0417d62e1 100644 --- a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +++ b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py @@ -215,10 +215,7 @@ class InvokeAIDiffuserComponent: dim=0, ), } - ( - encoder_hidden_states, - encoder_attention_mask, - ) = self._concat_conditionings_for_batch( + (encoder_hidden_states, encoder_attention_mask,) = self._concat_conditionings_for_batch( conditioning_data.unconditioned_embeddings.embeds, conditioning_data.text_embeddings.embeds, ) @@ -280,10 +277,7 @@ class InvokeAIDiffuserComponent: wants_cross_attention_control = len(cross_attention_control_types_to_do) > 0 if wants_cross_attention_control: - ( - unconditioned_next_x, - conditioned_next_x, - ) = self._apply_cross_attention_controlled_conditioning( + (unconditioned_next_x, conditioned_next_x,) = self._apply_cross_attention_controlled_conditioning( sample, timestep, conditioning_data, @@ -291,10 +285,7 @@ class InvokeAIDiffuserComponent: **kwargs, ) elif self.sequential_guidance: - ( - unconditioned_next_x, - conditioned_next_x, - ) = self._apply_standard_conditioning_sequentially( + (unconditioned_next_x, conditioned_next_x,) = self._apply_standard_conditioning_sequentially( sample, timestep, conditioning_data, @@ -302,10 +293,7 @@ class InvokeAIDiffuserComponent: ) else: - ( - unconditioned_next_x, - conditioned_next_x, - ) = self._apply_standard_conditioning( + (unconditioned_next_x, conditioned_next_x,) = self._apply_standard_conditioning( sample, timestep, conditioning_data, diff --git a/invokeai/backend/training/textual_inversion_training.py b/invokeai/backend/training/textual_inversion_training.py index 153bd0fcc4..6f419a61de 100644 --- a/invokeai/backend/training/textual_inversion_training.py +++ b/invokeai/backend/training/textual_inversion_training.py @@ -470,10 +470,7 @@ class TextualInversionDataset(Dataset): if self.center_crop: crop = min(img.shape[0], img.shape[1]) - ( - h, - w, - ) = ( + (h, w,) = ( img.shape[0], img.shape[1], ) diff --git a/invokeai/backend/util/__init__.py b/invokeai/backend/util/__init__.py index e759cc380f..d5ff754225 100644 --- a/invokeai/backend/util/__init__.py +++ b/invokeai/backend/util/__init__.py @@ -11,12 +11,5 @@ from .devices import ( # noqa: F401 normalize_device, torch_dtype, ) -from .util import ( # noqa: F401 - ask_user, - download_with_resume, - instantiate_from_config, - url_attachment_name, - Chdir, -) -from .attention import auto_detect_slice_size # noqa: F401 from .logging import InvokeAILogger # noqa: F401 +from .util import Chdir, ask_user, download_with_resume, instantiate_from_config, url_attachment_name # noqa: F401 diff --git a/invokeai/backend/util/mps_fixes.py b/invokeai/backend/util/mps_fixes.py index ce21d33b88..dc428e9d51 100644 --- a/invokeai/backend/util/mps_fixes.py +++ b/invokeai/backend/util/mps_fixes.py @@ -203,7 +203,7 @@ class ChunkedSlicedAttnProcessor: if attn.upcast_attention: out_item_size = 4 - chunk_size = 2**29 + chunk_size = 2 ** 29 out_size = query.shape[1] * key.shape[1] * out_item_size chunks_count = min(query.shape[1], math.ceil((out_size - 1) / chunk_size)) diff --git a/invokeai/backend/util/util.py b/invokeai/backend/util/util.py index 0796f1a8cd..fb85425581 100644 --- a/invokeai/backend/util/util.py +++ b/invokeai/backend/util/util.py @@ -207,7 +207,7 @@ def parallel_data_prefetch( return gather_res -def rand_perlin_2d(shape, res, device, fade=lambda t: 6 * t**5 - 15 * t**4 + 10 * t**3): +def rand_perlin_2d(shape, res, device, fade=lambda t: 6 * t ** 5 - 15 * t ** 4 + 10 * t ** 3): delta = (res[0] / shape[0], res[1] / shape[1]) d = (shape[0] // res[0], shape[1] // res[1])