o
    i                     @   s`   d dl mZ d dlZd dlZd dlmZmZ G dd dejZ	G dd deZ
de
fd	d
ZdS )    )overrideN)ComfyExtensionioc                   @   s,   e Zd Zedd ZedejfddZdS )PerturbedAttentionGuidancec                 C   s:   t jddt jdt jjddddddd	gt j gd
S )Nr   zmodel_patches/unetmodelscaleg      @g        g      Y@g{Gz?)defaultminmaxstepround)node_idcategoryinputsoutputs)r   SchemaModelInputFloatOutput)cls r   4/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_pag.pydefine_schema   s   
z(PerturbedAttentionGuidance.define_schemareturnc                    s@   dd|  }ddd  fdd}|| t|S )Nmiddler   c                 S   s   |S Nr   )qkvextra_optionsmaskr   r   r   perturbed_attention"   s   z?PerturbedAttentionGuidance.execute.<locals>.perturbed_attentionc           	         s   | d }| d }| d }| d }| d }| d   }| d }dkr$|S tj| d	}tj||g|||\}|||   S )
Nr   cond_denoisedconddenoisedsigmamodel_optionsinputr   attn1)copycomfymodel_patcherset_model_options_patch_replacesamplerscalc_cond_batch)	argsr   	cond_predr$   
cfg_resultr&   r'   xpagr"   r   
unet_blockunet_block_idr   r   post_cfg_function%   s   z=PerturbedAttentionGuidance.execute.<locals>.post_cfg_functionr   )clone#set_model_sampler_post_cfg_functionr   
NodeOutput)r   r   r   mr8   r   r5   r   execute   s   


z"PerturbedAttentionGuidance.executeN)__name__
__module____qualname__classmethodr   r   r;   r=   r   r   r   r   r      s
    
r   c                   @   s(   e Zd Zedeeej  fddZdS )PAGExtensionr   c                    s   t gS r   )r   )selfr   r   r   get_node_list=   s   zPAGExtension.get_node_listN)	r>   r?   r@   r   listtyper   	ComfyNoderD   r   r   r   r   rB   <   s    rB   r   c                      s   t  S r   )rB   r   r   r   r   comfy_entrypointD   s   rH   )typing_extensionsr   comfy.model_patcherr+   comfy.samplerscomfy_api.latestr   r   rG   r   rB   rH   r   r   r   r   <module>   s   /