
    +j	                     v    S SK Jr  S SKrS SKJrJr   " S S\R                  5      r " S S\5      rS\4S	 jr	g)
    )overrideN)ComfyExtensionioc            	           \ rS rSr\S 5       r\SS\R                  4S jj5       r\S\	R                  S\	R                  S\S\4S	 j5       rS
rg)DifferentialDiffusion	   c                     [         R                  " SSS/SS[         R                  R                  S5      [         R                  R                  SSS	SS
SS9/[         R                  R                  5       /SS9$ )Nr   zinpaint gradientzvariable denoise strengthzDifferential Diffusionexperimental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)clss    I/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_differential_diffusion.pydefine_schema#DifferentialDiffusion.define_schema
   sw    yy+.0KL1#w'!  
 XX__&' #
 	
    returnc                 ~   ^ ^ UR                  5       nUR                  U U4S j5        [        R                  " U5      $ )Nc                  0   > TR                   " U 0 UDST0D6$ )Nr   )forward)argskwargsr   r   s     r    <lambda>/DifferentialDiffusion.execute.<locals>.<lambda>#   s    ckkSWFu[aFultFur#   )cloneset_model_denoise_mask_functionr   
NodeOutput)r   r   r   s   ` `r    executeDifferentialDiffusion.execute    s,    --.uv}}U##r#   sigmadenoise_maskextra_optionsr   c                    US   nUS   nUR                   R                  R                  nUS   U:  a  US   nUS   nUR                   R                  R                  U5      n	UR                   R                  R                  U5      n
UR                   R                  R                  US   5      nX-
  X-
  -  nX,:  R	                  UR
                  5      nU(       a  US:  a  XM-  SU-
  U-  -   nU$ U$ )Nr   sigmasr      )inner_modelmodel_sampling	sigma_mintimesteptodtype)r   r1   r2   r3   r   r   step_sigmassigma_to
sigma_fromts_fromts_to
current_ts	thresholdbinary_maskblended_masks                  r    r'   DifferentialDiffusion.forward&   s    g&#H-$$33==r?X%"2H ^
##22;;JG!!0099(C&&55>>uQxH
'GO<	 $044\5G5GH 1#1Q\\4QQLr#    N)r   )__name__
__module____qualname____firstlineno__classmethodr!   r   r.   r/   torchTensordictfloatr'   __static_attributes__rH   r#   r    r   r   	   sm    
 
* $R]] $ $
 ELL  UY ej  r#   r   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)DifferentialDiffusionExtension@   r$   c                    #    [         /$ 7fN)r   )selfs    r    get_node_list,DifferentialDiffusionExtension.get_node_listA   s      "
 	
s   
rH   N)rI   rJ   rK   rL   r   listtyper   	ComfyNoderY   rR   rH   r#   r    rT   rT   @   s)    
T$r||*<%= 
 
r#   rT   r$   c                     #    [        5       $ 7frW   )rT   rH   r#   r    comfy_entrypointr_   H   s     )++s   )
typing_extensionsr   rN   comfy_api.latestr   r   r]   r   rT   r_   rH   r#   r    <module>rb      s:    '  /4BLL 4n
^ 
, > ,r#   