o
    ٷiU                     @   sj   d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 ddl
mZmZ d dlmZ eeZG dd dZdS )	    N)AnyTupleListDictCallableUnion)DiffusionPipeline   )BlockAdapterFakeDiffusionPipeline)init_loggerc                   @   s   e Zd ZU i Zeeedef f ed< g dZ	e
e ed< eddedefdd	Zed
eejjB eB eB dedB fddZedeeeeejjf defddZedefddZedeee
e f fddZdS )BlockAdapterRegister.	_adapters)	QwenImageWanCogView4Cosmos
SkyReelsV2ChromaLumina2
Kandinsky5
ChronoEditHunyuanVideo15	OvisImage%_predefined_adapters_has_separate_cfgTname	supportedc                    s.   dt dtf dt dtf f fdd}|S )Nfunc.returnc                    s   r|  j < | S N)r   )r   clsr   r    d/home/ubuntu/.local/lib/python3.10/site-packages/cache_dit/caching/block_adapters/block_registers.py	decorator!   s   
z0BlockAdapterRegister.register.<locals>.decorator)r   r
   )r!   r   r   r$   r"   r    r#   register   s   *zBlockAdapterRegister.registerpipe_or_moduler   Nc                 K   s   t |ts
|jj}n|}| jD ]1}||r@t |ts3t |tjj	s$J | j| t
|fi |  S | j| |fi |  S qd S r   )
isinstancestr	__class____name__r   
startswithr   torchnnModuler   )r!   r&   kwargscls_namer   r"   r"   r#   get_adapter(   s   




z BlockAdapterRegister.get_adapterpipe_or_adapter_or_modulec                 C   s   t |tr|jS d}t |trdS t |ttjjfr(| j|dd}|d ur(|j}|r,dS |j	j
}| jD ]
}||r= dS q3dS )NFT)skip_post_init)r'   r
   has_separate_cfgr   r   r,   r-   r.   r1   r)   r*   r   r+   )r!   r2   r4   adapterpipe_cls_namer   r"   r"   r#   r4   D   s(   



z%BlockAdapterRegister.has_separate_cfgc                 C   s(   |j j}| jD ]
}||r dS qdS )NTF)r)   r*   r   r+   )r!   r&   r0   r   r"   r"   r#   is_supportedi   s   

z!BlockAdapterRegister.is_supportedc                 K   s    | j  }t|dd |D fS )Nc                 S   s   g | ]}|qS r"   r"   ).0pr"   r"   r#   
<listcomp>u   s    z<BlockAdapterRegister.supported_pipelines.<locals>.<listcomp>)r   keyslen)r!   r/   val_pipelinesr"   r"   r#   supported_pipelinesr   s   
z(BlockAdapterRegister.supported_pipelines)T)r*   
__module____qualname__r   r   r(   r   r
   __annotations__r   r   classmethodboolr%   r   r,   r-   r.   r   r1   r   r   r4   r7   r   intr>   r"   r"   r"   r#   r      s6   
 $ r   )r,   typingr   r   r   r   r   r   	diffusersr   block_adaptersr
   r   cache_dit.loggerr   r*   loggerr   r"   r"   r"   r#   <module>   s     