from abc import ABC, abstractmethod from typing import Optional import torch class RawModel(ABC): """Base class for 'Raw' models. The RawModel class is the base class of LoRAModelRaw, TextualInversionModelRaw, etc. and is used for type checking of calls to the model patcher. Its main purpose is to avoid a circular import issues when lora.py tries to import BaseModelType from invokeai.backend.model_manager.config, and the latter tries to import LoRAModelRaw from lora.py. The term 'raw' was introduced to describe a wrapper around a torch.nn.Module that adds additional methods and attributes. """ @abstractmethod def to(self, device: Optional[torch.device] = None, dtype: Optional[torch.dtype] = None) -> None: pass