o
    i                     @   s   d dl Zd dlZd dlmZ d dlmZ d dlZd dl	Zd dl
Zd dlmZ d dlmZmZ e ddd	ZG d
d dejZe dddZG dd dejZG dd deZdefddZdS )    N)trange)override)to_d)ComfyExtensionio       @bislerpc	              	   C   sD  |d u ri n|}|d u rt t|d d d}n|d7 }t|t|d }td||dd  }	| }
||jd g}tt|d |dD ]X}| ||| | fi |}|d urh||||| || |d |}|t|	k rt	j
|t|
d |	|  t|
d |	|  |d	}||d  dkr|||d  t| 7 }qG|S )
N            ?r   disablexisigma	sigma_hatdenoiseddisabled)maxlenminnplinspacesizenew_onesshaper   comfyutilscommon_upscaleroundtorch
randn_like)modelr   sigmas
extra_argscallbackr   total_upscaleupscale_methodupscale_stepsupscales
orig_shapes_inr   r    r/   B/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_advanced_samplers.pysample_lcm_upscale   s&   4r1   c                   @   s<   e Zd Zg dZedejfddZedejfddZ	dS )SamplerLCMUpscale)r   znearest-exactbilinearareabicubicreturnc                 C   sV   t jddt jjddddddd	t jjd
dddddd	t jjd| jdgt j gdS )Nr2   z!sampling/custom_sampling/samplersscale_ratior   g?g      4@g{Gz?T)defaultr   r   stepadvancedscale_stepsr   i  r
   r*   )options)node_idcategoryinputsoutputs)	r   SchemaFloatInputIntComboUPSCALE_METHODSSamplerOutputclsr/   r/   r0   define_schema,   s   
zSamplerLCMUpscale.define_schemac                 C   s.   |dk rd }t jjt|||dd}t|S )Nr   )r)   r+   r*   )extra_options)r   samplersKSAMPLERr1   r   
NodeOutput)rJ   r7   r;   r*   samplerr/   r/   r0   execute9   s   
zSamplerLCMUpscale.executeN)
__name__
__module____qualname__rF   classmethodr   rA   rK   rO   rQ   r/   r/   r/   r0   r2   )   s    r2   c                    s   |d u ri n|}dg  fdd}| di  }tjj||dd|d< ||jd g}tt|d |dD ]=}	||	 }
| ||
| fi |}t	||  d  ||	 |}|d urf|||	||	 |
|d	 ||	d  |
 }|||  }q7|S )
Nr   c                    s   | d  d< | d S )Nuncond_denoisedr   r   r/   )argstempr/   r0   post_cfg_functionF   s   z*sample_euler_pp.<locals>.post_cfg_functionmodel_optionsT)disable_cfg1_optimizationr
   r   r   )
getcopyr   model_patcher#set_model_options_post_cfg_functionr   r   r   r   r   )r%   r   r&   r'   r(   r   rZ   r[   r.   r   r   r   ddtr/   rX   r0   sample_euler_ppA   s   rc   c                   @   s4   e Zd ZedejfddZedejfddZdS )SamplerEulerCFGppr6   c              	   C   s2   t jdddt jjdddgddgt j gdd	S )
Nrd   zSamplerEulerCFG++_for_testingversionregularalternativeT)r<   r:   )r=   display_namer>   r?   r@   is_experimental)r   rA   rE   rC   rG   rH   rI   r/   r/   r0   rK   Z   s   
zSamplerEulerCFGpp.define_schemac                 C   s,   |dkrt jt}nt jd}t|S )Nrh   euler_cfg_pp)r   rM   rN   rc   ksamplerr   rO   )rJ   rf   rP   r/   r/   r0   rQ   g   s   
zSamplerEulerCFGpp.executeN)	rR   rS   rT   rU   r   rA   rK   rO   rQ   r/   r/   r/   r0   rd   Y   s
    rd   c                   @   s(   e Zd Zedeeej  fddZdS )AdvancedSamplersExtensionr6   c                    s
   t tgS N)r2   rd   )selfr/   r/   r0   get_node_listq   s   z'AdvancedSamplersExtension.get_node_listN)	rR   rS   rT   r   listtyper   	ComfyNoderp   r/   r/   r/   r0   rm   p   s    rm   r6   c                      s   t  S rn   )rm   r/   r/   r/   r0   comfy_entrypointx   s   rt   )NNNr   r   N)NNN)numpyr   r#   	tqdm.autor   typing_extensionsr   comfy.model_patcherr   comfy.samplerscomfy.utilscomfy.k_diffusion.samplingr   comfy_api.latestr   r   no_gradr1   rs   r2   rc   rd   rm   rt   r/   r/   r/   r0   <module>   s"    