
    +ji                     x    d dl mZ d dlZd dlmZmZ  G d dej                  Z G d de          Z	de	fd	Z
dS )
    )overrideN)ComfyExtensionioc                   R    e Zd Zg dZed             Zedej        fd            ZdS )PatchModelAddDownscale)bicubicznearest-exactbilinearareabislerpc                    t          j        dddt           j                            d          t           j                            dddddd	
          t           j                            ddddd          t           j                            dddddd	
          t           j                            dddddd	
          t           j                            dd	d	          t           j                            d| j                  t           j                            d| j                  gt           j        	                                g          S )Nr   z*PatchModelAddDownscale (Kohya Deep Shrink)zmodel/patch/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)clss    B/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_model_downscale.pydefine_schemaz$PatchModelAddDownscale.define_schema   s   y,E'w''^QA2AX\]]13CSW\]]#TYdhii}dSXcghh
  !7PT UU13;NOO/9LMM	 !!
 
 
 	
    returnc	                 |   |                     d          }	|	                    |          |	                    |          fd}
fd}|                                }|r|                    |
           n|                    |
           |                    |           t          j        |          S )Nmodel_samplingc           	      B   |d         d         k    r|d         d                                          }|k    re|k    r_t          j                            | t	          | j        d         dz  z            t	          | j        d         dz  z            d          } | S )	Nblockr   sigmasr   r   disabled)itemcomfyutilscommon_upscaleroundshape)htransformer_optionssigmar   r   r   	sigma_endsigma_starts      r.   input_block_patchz9PatchModelAddDownscale.execute.<locals>.input_block_patch#   s    "7+A.,>>+H5a8==??K''EY,>,>221eAGBK3QaKa<b6c6cejklkrsukvz}  AQ  {Q  lR  fS  fS  Ue  gq  r  rAHr0   c                     | j         d         |j         d         k    r9t          j                            | |j         d         |j         d         d          } | |fS )N   r7   r8   r9   )r?   r;   r<   r=   )r@   hsprA   r   s      r.   output_block_patchz:PatchModelAddDownscale.execute.<locals>.output_block_patch*   sN    wqzSYq\))K..q#)B-2P^`jkkc6Mr0   )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   r3   rE   rI   mrC   rD   s     ``   ``    @@r.   executezPatchModelAddDownscale.execute   s    //0@AA$55mDD"33K@@		 	 	 	 	 	 	 	 		 	 	 	 	
 KKMM 	=445FGGGG))*;<<<	&&'9:::}Qr0   N)	__name__
__module____qualname__r+   classmethodr/   r   rP   rR    r0   r.   r   r      sk        QQQO
 
 [
(    TV  Ta       [     r0   r   c                   L    e Zd Zedeeej                          fd            ZdS )ModelDownscaleExtensionr1   c                    K   t           gS N)r   )selfs    r.   get_node_listz%ModelDownscaleExtension.get_node_list9   s       #
 	
r0   N)	rS   rT   rU   r   listtyper   	ComfyNoder]   rW   r0   r.   rY   rY   8   sE        
T$r|*<%= 
 
 
 X
 
 
r0   rY   r1   c                  "   K   t                      S r[   )rY   rW   r0   r.   comfy_entrypointrb   @   s      "$$$r0   )typing_extensionsr   comfy.utilsr;   comfy_api.latestr   r   r`   r   rY   rb   rW   r0   r.   <module>rf      s    & & & & & &     / / / / / / / //  /  /  /  / R\ /  /  / d
 
 
 
 
n 
 
 
% 7 % % % % % %r0   