o
    i/
                     @   sX   d dl m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                	   @   sP   e Zd Zedd ZeddejfddZedej	dej	d	e
d
efddZdS )DifferentialDiffusionc                 C   sD   t jdddgddt jdt jjddd	dd
ddgt j gddS )Nr   zinpaint gradientzvariable denoise strengthzDifferential Diffusion_for_testingmodelstrength      ?g        g{Gz?T)defaultminmaxstepoptional)node_idsearch_aliasesdisplay_namecategoryinputsoutputsis_experimental)r   SchemaModelInputFloatOutput)cls r   G/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_differential_diffusion.pydefine_schema
   s$   

z#DifferentialDiffusion.define_schemar	   returnc                    s&   |  }| fdd t|S )Nc                     s    j | i |diS )Nr   )forward)argskwargsr   r   r   r   <lambda>#   s    z/DifferentialDiffusion.execute.<locals>.<lambda>)cloneset_model_denoise_mask_functionr   
NodeOutput)r   r   r   r   r#   r   execute    s   
zDifferentialDiffusion.executesigmadenoise_maskextra_optionsr   c                 C   s   |d }|d }|j jj}|d |kr|d }|d }|j j|}	|j j|}
|j j|d }||
 |	|
  }||k|j}|rT|dk rT|| d| |  }|S |S )Nr   sigmasr      )inner_modelmodel_sampling	sigma_mintimesteptodtype)r   r)   r*   r+   r   r   step_sigmassigma_to
sigma_fromts_fromts_to
current_ts	thresholdbinary_maskblended_maskr   r   r   r    &   s   
zDifferentialDiffusion.forwardN)r	   )__name__
__module____qualname__classmethodr   r   r'   r(   torchTensordictfloatr    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 )DifferentialDiffusionExtensionr   c                    s   t gS N)r   )selfr   r   r   get_node_listA   s   z,DifferentialDiffusionExtension.get_node_listN)	r>   r?   r@   r   listtyper   	ComfyNoderI   r   r   r   r   rF   @   s    rF   r   c                      s   t  S rG   )rF   r   r   r   r   comfy_entrypointH   s   rM   )
typing_extensionsr   rB   comfy_api.latestr   r   rL   r   rF   rM   r   r   r   r   <module>   s   7