
    +j                         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j                  Z G d d	e          Z	d
e	fdZ
dS )    )overrideN)ComfyExtensionioc                   J    e Zd Zed             Zedej        fd            ZdS )	RenormCFGc                 8   t          j        ddt           j                            d          t           j                            dddddd	
          t           j                            dddddd	
          gt           j                                        g          S )Nr   zadvanced/modelmodel	cfg_truncd           g      Y@g{Gz?T)defaultminmaxstepadvanced
renorm_cfgg      ?)node_idcategoryinputsoutputs)r   SchemaModelInputFloatOutputclss    :/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_lumina2.pydefine_schemazRenormCFG.define_schema   s    y%w''{CSeRVaeff|ScuSWbfgg !!
 
 
 	
    returnc                     fd}                                 }|                    |           t          j        |          S )Nc                 p   | d         }| d         }| d         }| d         }| d         }j         j        j        }|d         k     r|d d d |f         |d d d |f         }}|d d |d f         |d d |d f         }
}	||||z
  z  z   }|	}t                    dk    rt          j                            |t          t          dt          |j
                                      d	
          }|t                    z  }t          j                            |t          t          dt          |j
                                      d	
          }||k    r|||z  z  }n<|d d d |f         |d d d |f         }}|d d |d f         |d d |d f         }
}	|}|	}t	          j        ||gd          }||z
  S )Ncond_denoiseduncond_denoised
cond_scaletimestepinputr   r      T)dimkeepdim)r*   )r	   diffusion_modelin_channelsfloattorchlinalgvector_normtuplerangelenshapecat)argsr$   r%   r&   r'   x_origr-   cond_eps
uncond_eps	cond_rest_half_eps	half_restori_pos_normmax_new_normnew_pos_norm
cfg_resultr
   r	   r   s                    r   renorm_cfg_funcz*RenormCFG.execute.<locals>.renorm_cfg_func   s    1M"#45Ol+JJ'H']F+5AK{Y&&'4QQQ_'EWXWXWXZf[fZfWfGg*,QQQ_=qqqR]R^R^?_1	%
h6K(LL%	$$s**#(<#;#;H"'aX^1D1D(E(E"F"FPT $< $ $L $0%
2C2C#CL#(<#;#;$%aX^9L9L0M0M*N*NX\ $< $ $L $|33#+|l/J#K'4QQQ_'EWXWXWXZf[fZfWfGg*,QQQ_=qqqR]R^R^?_1	#%	Hi#8a@@@J J&&r    )cloneset_model_sampler_cfg_functionr   
NodeOutput)r   r	   r
   r   rC   ms    ```  r   executezRenormCFG.execute   s\    "	' "	' "	' "	' "	' "	' "	'H KKMM	((999}Qr    N)__name__
__module____qualname__classmethodr   r   rF   rH    r    r   r   r      sV        
 
 [
 ' bm '  '  '  ['  '  ' r    r   c                   X    e Zd ZdddZdZed             Zedej        fd            Z	dS )	CLIPTextEncodeLumina2zYou are an assistant designed to generate superior images with the superior degree of image-text alignment based on textual prompts or user prompts.zYou are an assistant designed to generate high-quality images with the highest degree of image-text alignment based on textual prompts.)superior	alignmenta]  Lumina2 provide two types of system prompts:Superior: You are an assistant designed to generate superior images with the superior degree of image-text alignment based on textual prompts or user prompts. Alignment: You are an assistant designed to generate high-quality images with the highest degree of image-text alignment based on textual prompts.c                    t          j        ddgdddt           j                            dt	          | j                                                  | j                  t           j                            dd	d	d
          t           j	                            dd          gt           j
                            d          g          S )NrO   zlumina promptzCLIP Text Encode for Lumina2zmodel/conditioningzEncodes a system prompt and a user prompt using a CLIP model into an embedding that can be used to guide the diffusion model towards generating specific images.system_prompt)optionstooltipuser_promptTzThe text to be encoded.)	multilinedynamic_promptsrU   clipz*The CLIP model used for encoding the text.)rU   zNA conditioning containing the embedded text used to guide the diffusion model.)r   search_aliasesdisplay_namer   descriptionr   r   )r   r   Combor   listSYSTEM_PROMPTkeysSYSTEM_PROMPT_TIPStringClipConditioningr   r   s    r   r   z#CLIPTextEncodeLumina2.define_schemaN   s    y++,7)l # !2!7!7!9!9::1   
 	!"$(5	     f.Z[[ &&l '  +
 
 
 	
r    r!   c                     |t          d          | j        |         }| d| }|                    |          }t          j        |                    |                    S )NzERROR: clip input is invalid: None

If the clip is from a checkpoint loader node your checkpoint does not contain a valid clip or text encoder model.z <Prompt Start> )RuntimeErrorr_   tokenizer   rF   encode_from_tokens_scheduled)r   rY   rV   rS   prompttokenss         r   rH   zCLIPTextEncodeLumina2.executel   sq    <   y  z  z  z)-8!@@;@@v&&}T>>vFFGGGr    N)
rI   rJ   rK   r_   ra   rL   r   r   rF   rH   rM   r    r   rO   rO   B   s        WO MC
 
 
 [
: H"- H H H [H H Hr    rO   c                   L    e Zd Zedeeej                          fd            ZdS )Lumina2Extensionr!   c                 "   K   t           t          gS N)rO   r   )selfs    r   get_node_listzLumina2Extension.get_node_listw   s       "
 	
r    N)	rI   rJ   rK   r   r^   typer   	ComfyNoderp   rM   r    r   rl   rl   v   sE        
T$r|*<%= 
 
 
 X
 
 
r    rl   r!   c                  "   K   t                      S rn   )rl   rM   r    r   comfy_entrypointrt      s      r    )typing_extensionsr   r/   comfy_api.latestr   r   rr   r   rO   rl   rt   rM   r    r   <module>rw      s    & & & & & &  / / / / / / / /8  8  8  8  8  8  8  8 v1H 1H 1H 1H 1HBL 1H 1H 1Hh
 
 
 
 
~ 
 
 
 0      r    