a
    Aþd  ã                   @   s   d dl Z G dd„ dƒZdS )é    Nc                       s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚCondFuncc              	      sÐ   t t| ƒ | ¡‰ t|tƒr¶| d¡}tt|ƒd ddƒD ]:}z"t 	d 
|d |… ¡¡}W  qtW q8 typ   Y q80 q8||d… D ]}t||ƒ}q€t||d ƒ}t||d ‡ fdd„ƒ ˆ  |||¡ ‡ fdd„S )NÚ.é   éÿÿÿÿc                     s   ˆ | i |¤ŽS ©N© ©ÚargsÚkwargs©Úselfr   ú?/var/www/html/stable-diffusion-webui/modules/sd_hijack_utils.pyÚ<lambda>   ó    z"CondFunc.__new__.<locals>.<lambda>c                     s   ˆ | i |¤ŽS r   r   r   r   r   r   r      r   )Úsuperr   Ú__new__Ú
isinstanceÚstrÚsplitÚrangeÚlenÚ	importlibÚimport_moduleÚjoinÚImportErrorÚgetattrÚsetattrÚ__init__)ÚclsÚ	orig_funcÚsub_funcÚ	cond_funcZ	func_pathÚiZresolved_objÚ	attr_name©Ú	__class__r   r   r      s    


zCondFunc.__new__c                 C   s   || _ || _|| _d S r   )Ú_CondFunc__orig_funcÚ_CondFunc__sub_funcÚ_CondFunc__cond_func)r   r   r    r!   r   r   r   r      s    zCondFunc.__init__c                 O   sN   | j r | j | jg|¢R i |¤Žr:| j| jg|¢R i |¤ŽS | j|i |¤ŽS d S r   )r(   r&   r'   )r   r	   r
   r   r   r   Ú__call__   s     zCondFunc.__call__)Ú__name__Ú
__module__Ú__qualname__r   r   r)   Ú__classcell__r   r   r$   r   r      s   r   )r   r   r   r   r   r   Ú<module>   s   