
    +jt
                         d dl Zd dlZd dlmZ d dlmZmZ d Zg dg dg ddZ	 G d	 d
ej
                  Z G d de          ZdefdZdS )    N)override)ComfyExtensionioc                 <   t          j        ddt          |                     }t          j        | ddd                   }t          j        dd|          }t          j        |||          }t          j        |          ddd                                         }|S )zS
    Performs log-linear interpolation of a given array of decreasing numbers.
    r      N)nplinspacelenloginterpexpcopy)t_steps	num_stepsxsysnew_xsnew_ysinterped_yss          C/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_align_your_steps.pyloglinear_interpr   	   s     
Q3w<<	(	(B	"		B[Ay))FYvr2&&F&..2&++--K    );UA:-@gBF@g%W:@g&+c@gpN%?gaO?g+ui4?gg4?gQ<t?gĿtHe?TXݝ?)r   g= _F@gN;%@g}&Pr@gr?goLB?gk ?gxrO?gװ?gT4.?r   )g     @g     @K@gʡ/@g r@gˡE@g9v?g1Zd?gn?g/$?g rh?gMb`?SD1SDXLSVDc                   `    e Zd Zedej        fd            Zd Zedej        fd            Z	dS )AlignYourStepsSchedulerreturnc                 >   t          j        ddgdt           j                            dg d          t           j                            ddd	d
          t           j                            ddddd          gt           j                                        g          S )Nr!   zAYS schedulerzmodel/sampling/schedulers
model_typer   )optionssteps
   r   i'  )defaultminmaxdenoise      ?        g{Gz?)r(   r)   r*   step)node_idsearch_aliasescategoryinputsoutputs)r   SchemaComboInputIntFloatSigmasOutput)clss    r   define_schemaz%AlignYourStepsScheduler.define_schema   s    y-+,0|5K5K5KLLWbaUCCy#3CdSS
 Y%%''(

 

 

 
	
r   c                 R    t                                          |||          j        S N)r!   executeresult)selfr$   r&   r+   s       r   
get_sigmasz"AlignYourStepsScheduler.get_sigmas)   s#    &((00UGLLSSr   c                 |   |}|dk     r>|dk    r&t          j        t          j        g                     S t	          ||z            }t
          |         d d          }|dz   t          |          k    rt          ||dz             }||dz    d          }d|d<   t          j        t          j        |                    S )Nr,   r-   r   r   r   )r   
NodeOutputtorchFloatTensorroundNOISE_LEVELSr   r   )r;   r$   r&   r+   total_stepssigmass         r   r?   zAlignYourStepsScheduler.execute-   s    S==#~~}U%6r%:%:;;;00Kj)!!!,AI#f++%%%feai88F+/*++,r
}U.v66777r   N)
__name__
__module____qualname__classmethodr   r4   r<   rB   rD   r?    r   r   r!   r!      sv        
bi 
 
 
 [
T T T 8BM 8 8 8 [8 8 8r   r!   c                   L    e Zd Zedeeej                          fd            ZdS )AlignYourStepsExtensionr"   c                    K   t           gS r>   )r!   )rA   s    r   get_node_listz%AlignYourStepsExtension.get_node_list?   s       $
 	
r   N)	rK   rL   rM   r   listtyper   	ComfyNoderS   rO   r   r   rQ   rQ   >   sE        
T$r|*<%= 
 
 
 X
 
 
r   rQ   r"   c                  "   K   t                      S r>   )rQ   rO   r   r   comfy_entrypointrX   E   s      "$$$r   )numpyr	   rE   typing_extensionsr   comfy_api.latestr   r   r   rH   rV   r!   rQ   rX   rO   r   r   <module>r\      s        & & & & & & / / / / / / / /   z  z  z z  z  zeeeg g!8 !8 !8 !8 !8bl !8 !8 !8H
 
 
 
 
n 
 
 
% 7 % % % % % %r   