o
    i
                     @   s   d dl Zd dlZd dlmZ d dlmZmZ dd Zg dg dg 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)override)ComfyExtensionioc                 C   s^   t ddt| }t | ddd }t dd|}t |||}t |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_ys r   A/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_align_your_steps.pyloglinear_interp	   s   r   );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                   @   s<   e Zd ZedejfddZdd ZedejfddZ	dS )	AlignYourStepsSchedulerreturnc                 C   sV   t jddgdt jjdg ddt jjddd	d
dt jjddddddgt j gdS )Nr   zAYS schedulerz#sampling/custom_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)clsr   r   r   define_schema   s   
z%AlignYourStepsScheduler.define_schemac                 C   s   t  |||jS N)r   executeresult)selfr    r"   r'   r   r   r   
get_sigmas)   s   z"AlignYourStepsScheduler.get_sigmasc                 C   s   |}|dk r|dkrt tg S t|| }t| d d  }|d t|kr/t||d }||d  d  }d|d< t t|S )Nr(   r)   r   r   r   )r   
NodeOutputtorchFloatTensorroundNOISE_LEVELSr	   r   )r7   r    r"   r'   total_stepssigmasr   r   r   r:   -   s   zAlignYourStepsScheduler.executeN)
__name__
__module____qualname__classmethodr   r0   r8   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 )AlignYourStepsExtensionr   c                    s   t gS r9   )r   )r<   r   r   r   get_node_list?   s   z%AlignYourStepsExtension.get_node_listN)	rE   rF   rG   r   listtyper   	ComfyNoderJ   r   r   r   r   rI   >   s    rI   r   c                      s   t  S r9   )rI   r   r   r   r   comfy_entrypointE   s   rN   )numpyr   r?   typing_extensionsr   comfy_api.latestr   r   r   rB   rM   r   rI   rN   r   r   r   r   <module>   s   $