diff --git a/invokeai/app/invocations/baseinvocation.py b/invokeai/app/invocations/baseinvocation.py index 9084a7bf48..715ee5ca6e 100644 --- a/invokeai/app/invocations/baseinvocation.py +++ b/invokeai/app/invocations/baseinvocation.py @@ -3,10 +3,10 @@ from __future__ import annotations import json +import re from abc import ABC, abstractmethod from enum import Enum from inspect import signature -import re from typing import ( TYPE_CHECKING, AbstractSet, @@ -23,10 +23,10 @@ from typing import ( get_type_hints, ) -from pydantic import BaseModel, Field, validator -from pydantic.fields import Undefined, ModelField -from pydantic.typing import NoArgAnyCallable import semver +from pydantic import BaseModel, Field, validator +from pydantic.fields import ModelField, Undefined +from pydantic.typing import NoArgAnyCallable from invokeai.app.services.config.invokeai_config import InvokeAIAppConfig diff --git a/invokeai/app/invocations/cv.py b/invokeai/app/invocations/cv.py index 866b1c7894..cbe76091d6 100644 --- a/invokeai/app/invocations/cv.py +++ b/invokeai/app/invocations/cv.py @@ -7,6 +7,7 @@ from PIL import Image, ImageOps from invokeai.app.invocations.primitives import ImageField, ImageOutput from invokeai.app.models.image import ImageCategory, ResourceOrigin + from .baseinvocation import BaseInvocation, InputField, InvocationContext, invocation diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index 8fde088b36..b764b3b336 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_management.models import ModelType, SilenceWarnings from ...backend.model_management.lora import ModelPatcher -from ...backend.model_management.seamless import set_seamless from ...backend.model_management.models import BaseModelType +from ...backend.model_management.seamless import set_seamless from ...backend.stable_diffusion import PipelineIntermediateState from ...backend.stable_diffusion.diffusers_pipeline import ( ConditioningData, diff --git a/invokeai/app/services/config/__init__.py b/invokeai/app/services/config/__init__.py index 94eafac10a..a404f33638 100644 --- a/invokeai/app/services/config/__init__.py +++ b/invokeai/app/services/config/__init__.py @@ -2,8 +2,5 @@ Init file for InvokeAI configure package """ -from .invokeai_config import ( # noqa F401 - InvokeAIAppConfig, - get_invokeai_config, -) from .base import PagingArgumentParser # noqa F401 +from .invokeai_config import InvokeAIAppConfig, get_invokeai_config # noqa F401 diff --git a/invokeai/app/services/config/base.py b/invokeai/app/services/config/base.py index 33fd87b03a..02c6f15140 100644 --- a/invokeai/app/services/config/base.py +++ b/invokeai/app/services/config/base.py @@ -9,15 +9,17 @@ the command line. """ from __future__ import annotations + import argparse import os import pydoc import sys from argparse import ArgumentParser -from omegaconf import OmegaConf, DictConfig, ListConfig from pathlib import Path +from typing import ClassVar, Dict, List, Literal, Union, get_args, get_origin, get_type_hints + +from omegaconf import DictConfig, ListConfig, OmegaConf from pydantic import BaseSettings -from typing import ClassVar, Dict, List, Literal, Union, get_origin, get_type_hints, get_args class PagingArgumentParser(argparse.ArgumentParser): diff --git a/invokeai/app/services/config/invokeai_config.py b/invokeai/app/services/config/invokeai_config.py index 7b687a28a1..237aec5205 100644 --- a/invokeai/app/services/config/invokeai_config.py +++ b/invokeai/app/services/config/invokeai_config.py @@ -172,9 +172,9 @@ from __future__ import annotations import os from pathlib import Path -from typing import ClassVar, Dict, List, Literal, Union, get_type_hints, Optional +from typing import ClassVar, Dict, List, Literal, Optional, Union, get_type_hints -from omegaconf import OmegaConf, DictConfig +from omegaconf import DictConfig, OmegaConf from pydantic import Field, parse_obj_as from .base import InvokeAISettings diff --git a/invokeai/app/services/graph.py b/invokeai/app/services/graph.py index c47d437956..90f0ec51d1 100644 --- a/invokeai/app/services/graph.py +++ b/invokeai/app/services/graph.py @@ -14,12 +14,12 @@ from ..invocations import * # noqa: F401 F403 from ..invocations.baseinvocation import ( BaseInvocation, BaseInvocationOutput, - invocation, Input, InputField, InvocationContext, OutputField, UIType, + invocation, invocation_output, ) diff --git a/invokeai/backend/install/invokeai_configure.py b/invokeai/backend/install/invokeai_configure.py index e22f9dfb9e..0b3f50e3fc 100755 --- a/invokeai/backend/install/invokeai_configure.py +++ b/invokeai/backend/install/invokeai_configure.py @@ -18,7 +18,7 @@ from argparse import Namespace from enum import Enum from pathlib import Path from shutil import get_terminal_size -from typing import get_type_hints, get_args, Any +from typing import Any, get_args, get_type_hints from urllib import request import npyscreen @@ -46,17 +46,13 @@ from invokeai.frontend.install.model_install import addModelsForm, process_and_e # TO DO - Move all the frontend code into invokeai.frontend.install from invokeai.frontend.install.widgets import ( - SingleSelectColumnsSimple, - MultiSelectColumns, - CenteredButtonPress, - FileBox, - set_min_terminal_size, - CyclingForm, MIN_COLS, MIN_LINES, CenteredButtonPress, CyclingForm, FileBox, + MultiSelectColumns, + SingleSelectColumnsSimple, WindowTooSmallException, set_min_terminal_size, ) diff --git a/invokeai/backend/stable_diffusion/diffusers_pipeline.py b/invokeai/backend/stable_diffusion/diffusers_pipeline.py index f96e5e9420..fc4442c2d6 100644 --- a/invokeai/backend/stable_diffusion/diffusers_pipeline.py +++ b/invokeai/backend/stable_diffusion/diffusers_pipeline.py @@ -23,13 +23,9 @@ from pydantic import Field from transformers import CLIPFeatureExtractor, CLIPTextModel, CLIPTokenizer from invokeai.app.services.config import InvokeAIAppConfig -from .diffusion import ( - AttentionMapSaver, - InvokeAIDiffuserComponent, - PostprocessingSettings, - BasicConditioningInfo, -) -from ..util import normalize_device, auto_detect_slice_size + +from ..util import auto_detect_slice_size, normalize_device +from .diffusion import AttentionMapSaver, BasicConditioningInfo, InvokeAIDiffuserComponent, PostprocessingSettings @dataclass diff --git a/invokeai/backend/util/__init__.py b/invokeai/backend/util/__init__.py index a8d53f54a4..601aab00cb 100644 --- a/invokeai/backend/util/__init__.py +++ b/invokeai/backend/util/__init__.py @@ -1,6 +1,7 @@ """ Initialization file for invokeai.backend.util """ +from .attention import auto_detect_slice_size # noqa: F401 from .devices import ( # noqa: F401 CPU_DEVICE, CUDA_DEVICE, @@ -10,11 +11,4 @@ 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 .util import Chdir, ask_user, download_with_resume, instantiate_from_config, url_attachment_name # noqa: F401 diff --git a/invokeai/backend/util/attention.py b/invokeai/backend/util/attention.py index a821464394..910933044e 100644 --- a/invokeai/backend/util/attention.py +++ b/invokeai/backend/util/attention.py @@ -3,8 +3,8 @@ Utility routine used for autodetection of optimal slice size for attention mechanism. """ -import torch import psutil +import torch def auto_detect_slice_size(latents: torch.Tensor) -> str: diff --git a/tests/nodes/test_node_graph.py b/tests/nodes/test_node_graph.py index cce2fae9ed..4793e6ffa6 100644 --- a/tests/nodes/test_node_graph.py +++ b/tests/nodes/test_node_graph.py @@ -1,4 +1,5 @@ import pytest + from invokeai.app.invocations.baseinvocation import ( BaseInvocation, BaseInvocationOutput, @@ -6,29 +7,10 @@ from invokeai.app.invocations.baseinvocation import ( invocation, invocation_output, ) -from .test_nodes import ( - ImageToImageTestInvocation, - TextToImageTestInvocation, - ListPassThroughInvocation, - PromptTestInvocation, -) -from invokeai.app.services.graph import ( - Edge, - Graph, - GraphInvocation, - InvalidEdgeError, - NodeAlreadyInGraphError, - NodeNotFoundError, - are_connections_compatible, - EdgeConnection, - CollectInvocation, - IterateInvocation, -) -from invokeai.app.invocations.upscale import ESRGANInvocation - from invokeai.app.invocations.image import ShowImageInvocation from invokeai.app.invocations.math import AddInvocation, SubtractInvocation from invokeai.app.invocations.primitives import FloatInvocation, IntegerInvocation +from invokeai.app.invocations.upscale import ESRGANInvocation from invokeai.app.services.default_graphs import create_text_to_image from invokeai.app.services.graph import ( CollectInvocation, diff --git a/tests/nodes/test_nodes.py b/tests/nodes/test_nodes.py index 3a28c53819..1a07b59828 100644 --- a/tests/nodes/test_nodes.py +++ b/tests/nodes/test_nodes.py @@ -1,5 +1,7 @@ from typing import Any, Callable, Union + from pydantic import Field + from invokeai.app.invocations.baseinvocation import ( BaseInvocation, BaseInvocationOutput, diff --git a/tests/test_config.py b/tests/test_config.py index d915316a10..a950a9c06f 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -73,6 +73,8 @@ def test_use_init(patch_rootdir): def test_legacy(): + from invokeai.app.services.config import InvokeAIAppConfig + conf = InvokeAIAppConfig.get_config() assert conf conf.parse_args(conf=init3, argv=[]) @@ -84,6 +86,8 @@ def test_legacy(): def test_argv_override(): + from invokeai.app.services.config import InvokeAIAppConfig + conf = InvokeAIAppConfig.get_config() conf.parse_args(conf=init1, argv=["--always_use_cpu", "--max_cache=10"]) assert conf.always_use_cpu @@ -165,6 +169,7 @@ def test_type_coercion(patch_rootdir): ) def test_deny_nodes(patch_rootdir): from invokeai.app.services.config import InvokeAIAppConfig + # Allow integer, string and float, but explicitly deny float allow_deny_nodes_conf = OmegaConf.create( """