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                   @   s4   e Zd Zg dZedd ZedejfddZdS )PatchModelAddDownscale)bicubicznearest-exactbilinearareabislerpc                 C   s   t jdddt jdt jjdddddd	d
t jjdddd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d	d	dt jjd| jdt jjd| jdgt j	 gdS )Nr   z*PatchModelAddDownscale (Kohya Deep Shrink)zmodel_patches/unetmodelblock_number          T)defaultminmaxstepadvanceddownscale_factorg       @g?g      "@gMbP?)r   r   r   r   start_percentg              ?end_percentgffffff?downscale_after_skip)r   r   downscale_method)optionsupscale_method)node_iddisplay_namecategoryinputsoutputs)
r   SchemaModelInputIntFloatBooleanComboUPSCALE_METHODSOutput)cls r+   @/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_model_downscale.pydefine_schema   s    
z$PatchModelAddDownscale.define_schemareturnc	                    st   | d}	|	||	| fdd}
fdd}| }|r+||
 n||
 || t|S )Nmodel_samplingc                    sl   |d d  kr4|d d   }|kr4|kr4tj| t| jd d  t| jd d  d} | S )	Nblockr   sigmasr   r   disabled)itemcomfyutilscommon_upscaleroundshape)htransformer_optionssigma)r   r   r   	sigma_endsigma_startr+   r,   input_block_patch#   s
   8z9PatchModelAddDownscale.execute.<locals>.input_block_patchc                    s<   | j d |j d krtj| |j d |j d  d} | |fS )N   r2   r3   r4   )r:   r6   r7   r8   )r;   hspr<   )r   r+   r,   output_block_patch*   s    z:PatchModelAddDownscale.execute.<locals>.output_block_patch)get_model_objectpercent_to_sigmaclone&set_model_input_block_patch_after_skipset_model_input_block_patchset_model_output_block_patchr   
NodeOutput)r*   r
   r   r   r   r   r   r   r   r/   r@   rC   mr+   )r   r   r   r>   r?   r   r,   execute   s   





zPatchModelAddDownscale.executeN)	__name__
__module____qualname__r(   classmethodr-   r   rJ   rL   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 )ModelDownscaleExtensionr.   c                    s   t gS N)r   )selfr+   r+   r,   get_node_list9   s   z%ModelDownscaleExtension.get_node_listN)	rM   rN   rO   r   listtyper   	ComfyNoderT   r+   r+   r+   r,   rQ   8   s    rQ   r.   c                      s   t  S rR   )rQ   r+   r+   r+   r,   comfy_entrypoint@   s   rX   )typing_extensionsr   comfy.utilsr6   comfy_api.latestr   r   rW   r   rQ   rX   r+   r+   r+   r,   <module>   s    2