From 9da592528727753116a265fc52fb50476ffb3c91 Mon Sep 17 00:00:00 2001 From: Ryan Dick Date: Wed, 3 Jul 2024 12:04:22 -0400 Subject: [PATCH] Add ruff rule to disallow relative parent imports. --- invokeai/app/api/dependencies.py | 50 ++++++++++--------- invokeai/app/api/routers/app_info.py | 3 +- invokeai/app/api/routers/board_images.py | 2 +- invokeai/app/api/routers/boards.py | 3 +- invokeai/app/api/routers/download_queue.py | 3 +- invokeai/app/api/routers/images.py | 3 +- invokeai/app/api/routers/model_manager.py | 3 +- invokeai/app/api/routers/session_queue.py | 3 +- invokeai/app/api_app.py | 2 +- invokeai/app/invocations/baseinvocation.py | 2 +- invokeai/app/invocations/metadata.py | 3 +- invokeai/app/invocations/noise.py | 2 +- invokeai/app/services/boards/boards_common.py | 2 +- .../app/services/images/images_default.py | 12 ++--- .../model_manager/model_manager_base.py | 13 +++-- .../model_manager/model_manager_default.py | 14 +++--- .../model_records/model_records_sql.py | 2 +- .../session_processor_default.py | 2 +- invokeai/app/util/step_callback.py | 5 +- invokeai/backend/ip_adapter/ip_adapter.py | 2 +- invokeai/backend/model_manager/config.py | 3 +- .../model_manager/load/memory_snapshot.py | 2 +- .../load/model_loader_registry.py | 3 +- .../load/model_loaders/controlnet.py | 2 +- .../load/model_loaders/generic_diffusers.py | 4 +- .../model_manager/load/model_loaders/lora.py | 4 +- .../model_manager/load/model_loaders/onnx.py | 2 +- .../load/model_loaders/stable_diffusion.py | 2 +- .../load/model_loaders/textual_inversion.py | 4 +- .../model_manager/load/model_loaders/vae.py | 2 +- .../metadata/fetch/fetch_base.py | 7 ++- .../metadata/fetch/huggingface.py | 4 +- .../model_manager/metadata/metadata_base.py | 7 +-- .../model_manager/util/select_hf_files.py | 2 +- invokeai/backend/onnx/onnx_runtime.py | 2 +- pyproject.toml | 7 ++- 36 files changed, 94 insertions(+), 94 deletions(-) diff --git a/invokeai/app/api/dependencies.py b/invokeai/app/api/dependencies.py index 19a7bb083d..27ab030d4c 100644 --- a/invokeai/app/api/dependencies.py +++ b/invokeai/app/api/dependencies.py @@ -4,37 +4,39 @@ from logging import Logger import torch +from invokeai.app.services.board_image_records.board_image_records_sqlite import SqliteBoardImageRecordStorage +from invokeai.app.services.board_images.board_images_default import BoardImagesService +from invokeai.app.services.board_records.board_records_sqlite import SqliteBoardRecordStorage +from invokeai.app.services.boards.boards_default import BoardService +from invokeai.app.services.bulk_download.bulk_download_default import BulkDownloadService +from invokeai.app.services.config.config_default import InvokeAIAppConfig +from invokeai.app.services.download.download_default import DownloadQueueService +from invokeai.app.services.events.events_fastapievents import FastAPIEventService +from invokeai.app.services.image_files.image_files_disk import DiskImageFileStorage +from invokeai.app.services.image_records.image_records_sqlite import SqliteImageRecordStorage +from invokeai.app.services.images.images_default import ImageService +from invokeai.app.services.invocation_cache.invocation_cache_memory import MemoryInvocationCache +from invokeai.app.services.invocation_services import InvocationServices +from invokeai.app.services.invocation_stats.invocation_stats_default import InvocationStatsService +from invokeai.app.services.invoker import Invoker +from invokeai.app.services.model_images.model_images_default import ModelImageFileStorageDisk +from invokeai.app.services.model_manager.model_manager_default import ModelManagerService +from invokeai.app.services.model_records.model_records_sql import ModelRecordServiceSQL +from invokeai.app.services.names.names_default import SimpleNameService from invokeai.app.services.object_serializer.object_serializer_disk import ObjectSerializerDisk from invokeai.app.services.object_serializer.object_serializer_forward_cache import ObjectSerializerForwardCache +from invokeai.app.services.session_processor.session_processor_default import ( + DefaultSessionProcessor, + DefaultSessionRunner, +) +from invokeai.app.services.session_queue.session_queue_sqlite import SqliteSessionQueue from invokeai.app.services.shared.sqlite.sqlite_util import init_db +from invokeai.app.services.urls.urls_default import LocalUrlService +from invokeai.app.services.workflow_records.workflow_records_sqlite import SqliteWorkflowRecordsStorage from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningFieldData from invokeai.backend.util.logging import InvokeAILogger from invokeai.version.invokeai_version import __version__ -from ..services.board_image_records.board_image_records_sqlite import SqliteBoardImageRecordStorage -from ..services.board_images.board_images_default import BoardImagesService -from ..services.board_records.board_records_sqlite import SqliteBoardRecordStorage -from ..services.boards.boards_default import BoardService -from ..services.bulk_download.bulk_download_default import BulkDownloadService -from ..services.config import InvokeAIAppConfig -from ..services.download import DownloadQueueService -from ..services.events.events_fastapievents import FastAPIEventService -from ..services.image_files.image_files_disk import DiskImageFileStorage -from ..services.image_records.image_records_sqlite import SqliteImageRecordStorage -from ..services.images.images_default import ImageService -from ..services.invocation_cache.invocation_cache_memory import MemoryInvocationCache -from ..services.invocation_services import InvocationServices -from ..services.invocation_stats.invocation_stats_default import InvocationStatsService -from ..services.invoker import Invoker -from ..services.model_images.model_images_default import ModelImageFileStorageDisk -from ..services.model_manager.model_manager_default import ModelManagerService -from ..services.model_records import ModelRecordServiceSQL -from ..services.names.names_default import SimpleNameService -from ..services.session_processor.session_processor_default import DefaultSessionProcessor, DefaultSessionRunner -from ..services.session_queue.session_queue_sqlite import SqliteSessionQueue -from ..services.urls.urls_default import LocalUrlService -from ..services.workflow_records.workflow_records_sqlite import SqliteWorkflowRecordsStorage - # TODO: is there a better way to achieve this? def check_internet() -> bool: diff --git a/invokeai/app/api/routers/app_info.py b/invokeai/app/api/routers/app_info.py index c3bc98a038..3206adb242 100644 --- a/invokeai/app/api/routers/app_info.py +++ b/invokeai/app/api/routers/app_info.py @@ -10,14 +10,13 @@ from fastapi import Body from fastapi.routing import APIRouter from pydantic import BaseModel, Field +from invokeai.app.api.dependencies import ApiDependencies from invokeai.app.invocations.upscale import ESRGAN_MODELS from invokeai.app.services.invocation_cache.invocation_cache_common import InvocationCacheStatus from invokeai.backend.image_util.infill_methods.patchmatch import PatchMatch from invokeai.backend.util.logging import logging from invokeai.version import __version__ -from ..dependencies import ApiDependencies - class LogLevel(int, Enum): NotSet = logging.NOTSET diff --git a/invokeai/app/api/routers/board_images.py b/invokeai/app/api/routers/board_images.py index 8e36a682d2..eb193f6585 100644 --- a/invokeai/app/api/routers/board_images.py +++ b/invokeai/app/api/routers/board_images.py @@ -2,7 +2,7 @@ from fastapi import Body, HTTPException from fastapi.routing import APIRouter from pydantic import BaseModel, Field -from ..dependencies import ApiDependencies +from invokeai.app.api.dependencies import ApiDependencies board_images_router = APIRouter(prefix="/v1/board_images", tags=["boards"]) diff --git a/invokeai/app/api/routers/boards.py b/invokeai/app/api/routers/boards.py index 19c2b330f0..77d6956033 100644 --- a/invokeai/app/api/routers/boards.py +++ b/invokeai/app/api/routers/boards.py @@ -4,12 +4,11 @@ from fastapi import Body, HTTPException, Path, Query from fastapi.routing import APIRouter from pydantic import BaseModel, Field +from invokeai.app.api.dependencies import ApiDependencies from invokeai.app.services.board_records.board_records_common import BoardChanges from invokeai.app.services.boards.boards_common import BoardDTO from invokeai.app.services.shared.pagination import OffsetPaginatedResults -from ..dependencies import ApiDependencies - boards_router = APIRouter(prefix="/v1/boards", tags=["boards"]) diff --git a/invokeai/app/api/routers/download_queue.py b/invokeai/app/api/routers/download_queue.py index a6e53c7a5c..2633b28bca 100644 --- a/invokeai/app/api/routers/download_queue.py +++ b/invokeai/app/api/routers/download_queue.py @@ -8,13 +8,12 @@ from fastapi.routing import APIRouter from pydantic.networks import AnyHttpUrl from starlette.exceptions import HTTPException +from invokeai.app.api.dependencies import ApiDependencies from invokeai.app.services.download import ( DownloadJob, UnknownJobIDException, ) -from ..dependencies import ApiDependencies - download_queue_router = APIRouter(prefix="/v1/download_queue", tags=["download_queue"]) diff --git a/invokeai/app/api/routers/images.py b/invokeai/app/api/routers/images.py index d540fd3b55..8e3824ce93 100644 --- a/invokeai/app/api/routers/images.py +++ b/invokeai/app/api/routers/images.py @@ -8,6 +8,7 @@ from fastapi.routing import APIRouter from PIL import Image from pydantic import BaseModel, Field, JsonValue +from invokeai.app.api.dependencies import ApiDependencies from invokeai.app.invocations.fields import MetadataField from invokeai.app.services.image_records.image_records_common import ( ImageCategory, @@ -18,8 +19,6 @@ from invokeai.app.services.images.images_common import ImageDTO, ImageUrlsDTO from invokeai.app.services.shared.pagination import OffsetPaginatedResults from invokeai.app.services.shared.sqlite.sqlite_common import SQLiteDirection -from ..dependencies import ApiDependencies - images_router = APIRouter(prefix="/v1/images", tags=["images"]) diff --git a/invokeai/app/api/routers/model_manager.py b/invokeai/app/api/routers/model_manager.py index 298756d175..f73b7a86b1 100644 --- a/invokeai/app/api/routers/model_manager.py +++ b/invokeai/app/api/routers/model_manager.py @@ -16,6 +16,7 @@ from pydantic import AnyHttpUrl, BaseModel, ConfigDict, Field from starlette.exceptions import HTTPException from typing_extensions import Annotated +from invokeai.app.api.dependencies import ApiDependencies from invokeai.app.services.model_images.model_images_common import ModelImageFileNotFoundException from invokeai.app.services.model_install.model_install_common import ModelInstallJob from invokeai.app.services.model_records import ( @@ -35,8 +36,6 @@ from invokeai.backend.model_manager.metadata.metadata_base import ModelMetadataW from invokeai.backend.model_manager.search import ModelSearch from invokeai.backend.model_manager.starter_models import STARTER_MODELS, StarterModel, StarterModelWithoutDependencies -from ..dependencies import ApiDependencies - model_manager_router = APIRouter(prefix="/v2/models", tags=["model_manager"]) # images are immutable; set a high max-age diff --git a/invokeai/app/api/routers/session_queue.py b/invokeai/app/api/routers/session_queue.py index 7161e54a41..5dd4693795 100644 --- a/invokeai/app/api/routers/session_queue.py +++ b/invokeai/app/api/routers/session_queue.py @@ -4,6 +4,7 @@ from fastapi import Body, Path, Query from fastapi.routing import APIRouter from pydantic import BaseModel +from invokeai.app.api.dependencies import ApiDependencies from invokeai.app.services.session_processor.session_processor_common import SessionProcessorStatus from invokeai.app.services.session_queue.session_queue_common import ( QUEUE_ITEM_STATUS, @@ -19,8 +20,6 @@ from invokeai.app.services.session_queue.session_queue_common import ( ) from invokeai.app.services.shared.pagination import CursorPaginatedResults -from ..dependencies import ApiDependencies - session_queue_router = APIRouter(prefix="/v1/queue", tags=["queue"]) diff --git a/invokeai/app/api_app.py b/invokeai/app/api_app.py index e69d95af71..654279536c 100644 --- a/invokeai/app/api_app.py +++ b/invokeai/app/api_app.py @@ -24,8 +24,8 @@ from invokeai.app.api.no_cache_staticfiles import NoCacheStaticFiles from invokeai.app.services.config.config_default import get_config from invokeai.app.util.custom_openapi import get_openapi_func from invokeai.backend.util.devices import TorchDevice +from invokeai.backend.util.logging import InvokeAILogger -from ..backend.util.logging import InvokeAILogger from .api.dependencies import ApiDependencies from .api.routers import ( app_info, diff --git a/invokeai/app/invocations/baseinvocation.py b/invokeai/app/invocations/baseinvocation.py index 1d169f0a82..b527de41bc 100644 --- a/invokeai/app/invocations/baseinvocation.py +++ b/invokeai/app/invocations/baseinvocation.py @@ -40,7 +40,7 @@ from invokeai.app.util.misc import uuid_string from invokeai.backend.util.logging import InvokeAILogger if TYPE_CHECKING: - from ..services.invocation_services import InvocationServices + from invokeai.app.services.invocation_services import InvocationServices logger = InvokeAILogger.get_logger() diff --git a/invokeai/app/invocations/metadata.py b/invokeai/app/invocations/metadata.py index 9c7264a9bb..17b68ffc0b 100644 --- a/invokeai/app/invocations/metadata.py +++ b/invokeai/app/invocations/metadata.py @@ -14,8 +14,7 @@ from invokeai.app.invocations.fields import ( from invokeai.app.invocations.model import ModelIdentifierField from invokeai.app.services.shared.invocation_context import InvocationContext from invokeai.app.util.controlnet_utils import CONTROLNET_MODE_VALUES, CONTROLNET_RESIZE_VALUES - -from ...version import __version__ +from invokeai.version.invokeai_version import __version__ class MetadataItemField(BaseModel): diff --git a/invokeai/app/invocations/noise.py b/invokeai/app/invocations/noise.py index 931e639106..3e628ef1ba 100644 --- a/invokeai/app/invocations/noise.py +++ b/invokeai/app/invocations/noise.py @@ -8,8 +8,8 @@ from invokeai.app.invocations.constants import LATENT_SCALE_FACTOR from invokeai.app.invocations.fields import FieldDescriptions, InputField, LatentsField, OutputField from invokeai.app.services.shared.invocation_context import InvocationContext from invokeai.app.util.misc import SEED_MAX +from invokeai.backend.util.devices import TorchDevice -from ...backend.util.devices import TorchDevice from .baseinvocation import ( BaseInvocation, BaseInvocationOutput, diff --git a/invokeai/app/services/boards/boards_common.py b/invokeai/app/services/boards/boards_common.py index 0cb54102bb..15d0b3c37f 100644 --- a/invokeai/app/services/boards/boards_common.py +++ b/invokeai/app/services/boards/boards_common.py @@ -2,7 +2,7 @@ from typing import Optional from pydantic import Field -from ..board_records.board_records_common import BoardRecord +from invokeai.app.services.board_records.board_records_common import BoardRecord class BoardDTO(BoardRecord): diff --git a/invokeai/app/services/images/images_default.py b/invokeai/app/services/images/images_default.py index 4e78375034..6cf702cf62 100644 --- a/invokeai/app/services/images/images_default.py +++ b/invokeai/app/services/images/images_default.py @@ -3,16 +3,12 @@ from typing import Optional from PIL.Image import Image as PILImageType from invokeai.app.invocations.fields import MetadataField -from invokeai.app.services.invoker import Invoker -from invokeai.app.services.shared.pagination import OffsetPaginatedResults -from invokeai.app.services.shared.sqlite.sqlite_common import SQLiteDirection - -from ..image_files.image_files_common import ( +from invokeai.app.services.image_files.image_files_common import ( ImageFileDeleteException, ImageFileNotFoundException, ImageFileSaveException, ) -from ..image_records.image_records_common import ( +from invokeai.app.services.image_records.image_records_common import ( ImageCategory, ImageRecord, ImageRecordChanges, @@ -23,6 +19,10 @@ from ..image_records.image_records_common import ( InvalidOriginException, ResourceOrigin, ) +from invokeai.app.services.invoker import Invoker +from invokeai.app.services.shared.pagination import OffsetPaginatedResults +from invokeai.app.services.shared.sqlite.sqlite_common import SQLiteDirection + from .images_base import ImageServiceABC from .images_common import ImageDTO, image_record_to_dto diff --git a/invokeai/app/services/model_manager/model_manager_base.py b/invokeai/app/services/model_manager/model_manager_base.py index af1b68e1ec..a906076b16 100644 --- a/invokeai/app/services/model_manager/model_manager_base.py +++ b/invokeai/app/services/model_manager/model_manager_base.py @@ -5,14 +5,13 @@ from abc import ABC, abstractmethod import torch from typing_extensions import Self +from invokeai.app.services.config.config_default import InvokeAIAppConfig +from invokeai.app.services.download.download_base import DownloadQueueServiceBase +from invokeai.app.services.events.events_base import EventServiceBase from invokeai.app.services.invoker import Invoker - -from ..config import InvokeAIAppConfig -from ..download import DownloadQueueServiceBase -from ..events.events_base import EventServiceBase -from ..model_install import ModelInstallServiceBase -from ..model_load import ModelLoadServiceBase -from ..model_records import ModelRecordServiceBase +from invokeai.app.services.model_install.model_install_base import ModelInstallServiceBase +from invokeai.app.services.model_load.model_load_base import ModelLoadServiceBase +from invokeai.app.services.model_records.model_records_base import ModelRecordServiceBase class ModelManagerServiceBase(ABC): diff --git a/invokeai/app/services/model_manager/model_manager_default.py b/invokeai/app/services/model_manager/model_manager_default.py index f695c3c8c1..7353b98bb4 100644 --- a/invokeai/app/services/model_manager/model_manager_default.py +++ b/invokeai/app/services/model_manager/model_manager_default.py @@ -6,17 +6,19 @@ from typing import Optional import torch from typing_extensions import Self +from invokeai.app.services.config.config_default import InvokeAIAppConfig +from invokeai.app.services.download.download_base import DownloadQueueServiceBase +from invokeai.app.services.events.events_base import EventServiceBase from invokeai.app.services.invoker import Invoker +from invokeai.app.services.model_install.model_install_base import ModelInstallServiceBase +from invokeai.app.services.model_install.model_install_default import ModelInstallService +from invokeai.app.services.model_load.model_load_base import ModelLoadServiceBase +from invokeai.app.services.model_load.model_load_default import ModelLoadService +from invokeai.app.services.model_records.model_records_base import ModelRecordServiceBase from invokeai.backend.model_manager.load import ModelCache, ModelLoaderRegistry from invokeai.backend.util.devices import TorchDevice from invokeai.backend.util.logging import InvokeAILogger -from ..config import InvokeAIAppConfig -from ..download import DownloadQueueServiceBase -from ..events.events_base import EventServiceBase -from ..model_install import ModelInstallService, ModelInstallServiceBase -from ..model_load import ModelLoadService, ModelLoadServiceBase -from ..model_records import ModelRecordServiceBase from .model_manager_base import ModelManagerServiceBase diff --git a/invokeai/app/services/model_records/model_records_sql.py b/invokeai/app/services/model_records/model_records_sql.py index 16abf4c523..3abbc662ee 100644 --- a/invokeai/app/services/model_records/model_records_sql.py +++ b/invokeai/app/services/model_records/model_records_sql.py @@ -46,6 +46,7 @@ from pathlib import Path from typing import List, Optional, Union from invokeai.app.services.shared.pagination import PaginatedResults +from invokeai.app.services.shared.sqlite.sqlite_database import SqliteDatabase from invokeai.backend.model_manager.config import ( AnyModelConfig, BaseModelType, @@ -54,7 +55,6 @@ from invokeai.backend.model_manager.config import ( ModelType, ) -from ..shared.sqlite.sqlite_database import SqliteDatabase from .model_records_base import ( DuplicateModelException, ModelRecordChanges, diff --git a/invokeai/app/services/session_processor/session_processor_default.py b/invokeai/app/services/session_processor/session_processor_default.py index 3f348fb239..336a17d3d5 100644 --- a/invokeai/app/services/session_processor/session_processor_default.py +++ b/invokeai/app/services/session_processor/session_processor_default.py @@ -13,6 +13,7 @@ from invokeai.app.services.events.events_common import ( register_events, ) from invokeai.app.services.invocation_stats.invocation_stats_common import GESStatsNotFoundError +from invokeai.app.services.invoker import Invoker from invokeai.app.services.session_processor.session_processor_base import ( OnAfterRunNode, OnAfterRunSession, @@ -27,7 +28,6 @@ from invokeai.app.services.shared.graph import NodeInputError from invokeai.app.services.shared.invocation_context import InvocationContextData, build_invocation_context from invokeai.app.util.profiler import Profiler -from ..invoker import Invoker from .session_processor_base import InvocationServices, SessionProcessorBase, SessionRunnerBase from .session_processor_common import SessionProcessorStatus diff --git a/invokeai/app/util/step_callback.py b/invokeai/app/util/step_callback.py index 8992e59ace..c0c101cd75 100644 --- a/invokeai/app/util/step_callback.py +++ b/invokeai/app/util/step_callback.py @@ -5,9 +5,8 @@ from PIL import Image from invokeai.app.services.session_processor.session_processor_common import CanceledException, ProgressImage from invokeai.backend.model_manager.config import BaseModelType - -from ...backend.stable_diffusion import PipelineIntermediateState -from ...backend.util.util import image_to_dataURL +from invokeai.backend.stable_diffusion.diffusers_pipeline import PipelineIntermediateState +from invokeai.backend.util.util import image_to_dataURL if TYPE_CHECKING: from invokeai.app.services.events.events_base import EventServiceBase diff --git a/invokeai/backend/ip_adapter/ip_adapter.py b/invokeai/backend/ip_adapter/ip_adapter.py index abd6ca655a..ed3d70d832 100644 --- a/invokeai/backend/ip_adapter/ip_adapter.py +++ b/invokeai/backend/ip_adapter/ip_adapter.py @@ -11,8 +11,8 @@ from PIL import Image from transformers import CLIPImageProcessor, CLIPVisionModelWithProjection from invokeai.backend.ip_adapter.ip_attention_weights import IPAttentionWeights +from invokeai.backend.raw_model import RawModel -from ..raw_model import RawModel from .resampler import Resampler diff --git a/invokeai/backend/model_manager/config.py b/invokeai/backend/model_manager/config.py index d788012dc7..a8eb13d339 100644 --- a/invokeai/backend/model_manager/config.py +++ b/invokeai/backend/model_manager/config.py @@ -33,8 +33,7 @@ from typing_extensions import Annotated, Any, Dict from invokeai.app.invocations.constants import SCHEDULER_NAME_VALUES from invokeai.app.util.misc import uuid_string from invokeai.backend.model_hash.hash_validator import validate_hash - -from ..raw_model import RawModel +from invokeai.backend.raw_model import RawModel # ModelMixin is the base class for all diffusers and transformers models # RawModel is the InvokeAI wrapper class for ip_adapters, loras, textual_inversion and onnx runtime diff --git a/invokeai/backend/model_manager/load/memory_snapshot.py b/invokeai/backend/model_manager/load/memory_snapshot.py index 195e39361b..66dd070963 100644 --- a/invokeai/backend/model_manager/load/memory_snapshot.py +++ b/invokeai/backend/model_manager/load/memory_snapshot.py @@ -5,7 +5,7 @@ import psutil import torch from typing_extensions import Self -from ..util.libc_util import LibcUtil, Struct_mallinfo2 +from invokeai.backend.model_manager.util.libc_util import LibcUtil, Struct_mallinfo2 GB = 2**30 # 1 GB diff --git a/invokeai/backend/model_manager/load/model_loader_registry.py b/invokeai/backend/model_manager/load/model_loader_registry.py index bb6bd18d7f..e44d1bd41f 100644 --- a/invokeai/backend/model_manager/load/model_loader_registry.py +++ b/invokeai/backend/model_manager/load/model_loader_registry.py @@ -18,7 +18,7 @@ Use like this: from abc import ABC, abstractmethod from typing import Callable, Dict, Optional, Tuple, Type, TypeVar -from ..config import ( +from invokeai.backend.model_manager.config import ( AnyModelConfig, BaseModelType, ModelConfigBase, @@ -26,6 +26,7 @@ from ..config import ( ModelType, SubModelType, ) + from . import ModelLoaderBase diff --git a/invokeai/backend/model_manager/load/model_loaders/controlnet.py b/invokeai/backend/model_manager/load/model_loaders/controlnet.py index b2fae37d29..6edcc48760 100644 --- a/invokeai/backend/model_manager/load/model_loaders/controlnet.py +++ b/invokeai/backend/model_manager/load/model_loaders/controlnet.py @@ -13,8 +13,8 @@ from invokeai.backend.model_manager import ( ModelType, ) from invokeai.backend.model_manager.config import ControlNetCheckpointConfig, SubModelType +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry -from .. import ModelLoaderRegistry from .generic_diffusers import GenericDiffusersLoader diff --git a/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py b/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py index 6320797b8a..dfe38aa79c 100644 --- a/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +++ b/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py @@ -18,8 +18,8 @@ from invokeai.backend.model_manager import ( SubModelType, ) from invokeai.backend.model_manager.config import DiffusersConfigBase - -from .. import ModelLoader, ModelLoaderRegistry +from invokeai.backend.model_manager.load.load_default import ModelLoader +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry @ModelLoaderRegistry.register(base=BaseModelType.Any, type=ModelType.CLIPVision, format=ModelFormat.Diffusers) diff --git a/invokeai/backend/model_manager/load/model_loaders/lora.py b/invokeai/backend/model_manager/load/model_loaders/lora.py index aa0acab6bc..367107c662 100644 --- a/invokeai/backend/model_manager/load/model_loaders/lora.py +++ b/invokeai/backend/model_manager/load/model_loaders/lora.py @@ -15,9 +15,9 @@ from invokeai.backend.model_manager import ( ModelType, SubModelType, ) +from invokeai.backend.model_manager.load.load_default import ModelLoader from invokeai.backend.model_manager.load.model_cache.model_cache_base import ModelCacheBase - -from .. import ModelLoader, ModelLoaderRegistry +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry @ModelLoaderRegistry.register(base=BaseModelType.Any, type=ModelType.LoRA, format=ModelFormat.Diffusers) diff --git a/invokeai/backend/model_manager/load/model_loaders/onnx.py b/invokeai/backend/model_manager/load/model_loaders/onnx.py index b43e0a1bdf..de4b4f0e2b 100644 --- a/invokeai/backend/model_manager/load/model_loaders/onnx.py +++ b/invokeai/backend/model_manager/load/model_loaders/onnx.py @@ -13,8 +13,8 @@ from invokeai.backend.model_manager import ( ModelType, SubModelType, ) +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry -from .. import ModelLoaderRegistry from .generic_diffusers import GenericDiffusersLoader diff --git a/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py b/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py index 95caf848e5..46b527acc9 100644 --- a/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +++ b/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py @@ -25,9 +25,9 @@ from invokeai.backend.model_manager.config import ( DiffusersConfigBase, MainCheckpointConfig, ) +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry from invokeai.backend.util.silence_warnings import SilenceWarnings -from .. import ModelLoaderRegistry from .generic_diffusers import GenericDiffusersLoader VARIANT_TO_IN_CHANNEL_MAP = { diff --git a/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py b/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py index cfdc689cc8..8d0f08f91a 100644 --- a/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +++ b/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py @@ -12,10 +12,10 @@ from invokeai.backend.model_manager import ( ModelType, SubModelType, ) +from invokeai.backend.model_manager.load.load_default import ModelLoader +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry from invokeai.backend.textual_inversion import TextualInversionModelRaw -from .. import ModelLoader, ModelLoaderRegistry - @ModelLoaderRegistry.register(base=BaseModelType.Any, type=ModelType.TextualInversion, format=ModelFormat.EmbeddingFile) @ModelLoaderRegistry.register( diff --git a/invokeai/backend/model_manager/load/model_loaders/vae.py b/invokeai/backend/model_manager/load/model_loaders/vae.py index 3c496f59ab..e01d4c9251 100644 --- a/invokeai/backend/model_manager/load/model_loaders/vae.py +++ b/invokeai/backend/model_manager/load/model_loaders/vae.py @@ -12,8 +12,8 @@ from invokeai.backend.model_manager import ( ModelType, ) from invokeai.backend.model_manager.config import AnyModel, SubModelType, VAECheckpointConfig +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry -from .. import ModelLoaderRegistry from .generic_diffusers import GenericDiffusersLoader diff --git a/invokeai/backend/model_manager/metadata/fetch/fetch_base.py b/invokeai/backend/model_manager/metadata/fetch/fetch_base.py index f84479404e..b86a029b3e 100644 --- a/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +++ b/invokeai/backend/model_manager/metadata/fetch/fetch_base.py @@ -18,8 +18,11 @@ from pydantic.networks import AnyHttpUrl from requests.sessions import Session from invokeai.backend.model_manager import ModelRepoVariant - -from ..metadata_base import AnyModelRepoMetadata, AnyModelRepoMetadataValidator, BaseMetadata +from invokeai.backend.model_manager.metadata.metadata_base import ( + AnyModelRepoMetadata, + AnyModelRepoMetadataValidator, + BaseMetadata, +) class ModelMetadataFetchBase(ABC): diff --git a/invokeai/backend/model_manager/metadata/fetch/huggingface.py b/invokeai/backend/model_manager/metadata/fetch/huggingface.py index ab78b3e064..49b942c7d7 100644 --- a/invokeai/backend/model_manager/metadata/fetch/huggingface.py +++ b/invokeai/backend/model_manager/metadata/fetch/huggingface.py @@ -25,13 +25,13 @@ from pydantic.networks import AnyHttpUrl from requests.sessions import Session from invokeai.backend.model_manager.config import ModelRepoVariant - -from ..metadata_base import ( +from invokeai.backend.model_manager.metadata.metadata_base import ( AnyModelRepoMetadata, HuggingFaceMetadata, RemoteModelFile, UnknownMetadataException, ) + from .fetch_base import ModelMetadataFetchBase HF_MODEL_RE = r"https?://huggingface.co/([\w\-.]+/[\w\-.]+)" diff --git a/invokeai/backend/model_manager/metadata/metadata_base.py b/invokeai/backend/model_manager/metadata/metadata_base.py index f9f5335d17..97fc598380 100644 --- a/invokeai/backend/model_manager/metadata/metadata_base.py +++ b/invokeai/backend/model_manager/metadata/metadata_base.py @@ -24,8 +24,7 @@ from requests.sessions import Session from typing_extensions import Annotated from invokeai.backend.model_manager import ModelRepoVariant - -from ..util import select_hf_files +from invokeai.backend.model_manager.util.select_hf_files import filter_files class UnknownMetadataException(Exception): @@ -112,9 +111,7 @@ class HuggingFaceMetadata(ModelMetadataWithFiles): session = session or Session() configure_http_backend(backend_factory=lambda: session) # used in testing - paths = select_hf_files.filter_files( - [x.path for x in self.files], variant, subfolder - ) # all files in the model + paths = filter_files([x.path for x in self.files], variant, subfolder) # all files in the model prefix = f"{subfolder}/" if subfolder else "" # the next step reads model_index.json to determine which subdirectories belong # to the model diff --git a/invokeai/backend/model_manager/util/select_hf_files.py b/invokeai/backend/model_manager/util/select_hf_files.py index 4a63ab27b7..b0a9551437 100644 --- a/invokeai/backend/model_manager/util/select_hf_files.py +++ b/invokeai/backend/model_manager/util/select_hf_files.py @@ -17,7 +17,7 @@ from dataclasses import dataclass from pathlib import Path from typing import Dict, List, Optional, Set -from ..config import ModelRepoVariant +from invokeai.backend.model_manager.config import ModelRepoVariant def filter_files( diff --git a/invokeai/backend/onnx/onnx_runtime.py b/invokeai/backend/onnx/onnx_runtime.py index 9fcd4d093f..d562a46dff 100644 --- a/invokeai/backend/onnx/onnx_runtime.py +++ b/invokeai/backend/onnx/onnx_runtime.py @@ -10,7 +10,7 @@ import torch from onnx import numpy_helper from onnxruntime import InferenceSession, SessionOptions, get_available_providers -from ..raw_model import RawModel +from invokeai.backend.raw_model import RawModel ONNX_WEIGHTS_NAME = "model.onnx" diff --git a/pyproject.toml b/pyproject.toml index fcc0aff60c..ec215230f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -206,7 +206,12 @@ ignore = [ "B008", # https://docs.astral.sh/ruff/rules/function-call-in-default-argument/ "B904", # https://docs.astral.sh/ruff/rules/raise-without-from-inside-except/ ] -select = ["B", "C", "E", "F", "W", "I"] +select = ["B", "C", "E", "F", "W", "I", "TID"] + +[tool.ruff.lint.flake8-tidy-imports] +# Disallow all relative imports. +ban-relative-imports = "parents" + #=== End: Ruff #=== Begin: MyPy