
    +j                     Z    S SK r S SKrS SKr " S S5      r " S S\5      r\\S.rSSS.rg)	    Nc                   L    \ rS rSrSrS r\S 5       rSrSr	Sr
SrS	rS
rS rSrg)LoraLoaderBypass   z
Apply LoRA in bypass mode without modifying base model weights.

Bypass mode computes: output = base_forward(x) + lora_path(x)
This is useful for training and when model weights are offloaded.
c                     S U l         g )Nloaded_lora)selfs    =/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_lora_debug.py__init__LoraLoaderBypass.__init__   s
        c                 v    SSSS04SSS04[         R                  " S5      SS04S	S
SSSSS.4S	S
SSSSS.4S.0$ )NrequiredMODELtooltipz0The diffusion model the LoRA will be applied to.CLIPz+The CLIP model the LoRA will be applied to.loraszThe name of the LoRA.FLOAT      ?      Y      Y@{Gz?zGHow strongly to modify the diffusion model. This value can be negative.)defaultminmaxstepr   zBHow strongly to modify the CLIP model. This value can be negative.)modelclip	lora_namestrength_modelstrength_clipfolder_pathsget_filename_listss    r
   INPUT_TYPESLoraLoaderBypass.INPUT_TYPES   s     !I/a#bc)-Z![\*<<WE	SjGkl#*FSXbf  t}  -~  #")s6RWae  sw  ,x  "y
 	
r   )r   r   )zThe modified diffusion model.zThe modified CLIP model.	load_lorazmodel/loaderszApply LoRA in bypass mode. Unlike regular LoRA, this doesn't modify model weights - instead it injects the LoRA computation during forward pass. Useful for training scenarios.Tc                 ^   US:X  a	  US:X  a  X4$ [         R                  " SU5      nS nU R                  b*  U R                  S   U:X  a  U R                  S   nOS U l        Uc&  [        R                  R                  USS9nXg4U l        [        R                  R                  XXtU5      u  pX4$ )Nr   r      T)	safe_load)r#   get_full_path_or_raiser   comfyutilsload_torch_filesdload_bypass_lora_for_models)
r	   r   r   r   r    r!   	lora_pathlora
model_lora	clip_loras
             r
   r)   LoraLoaderBypass.load_lora%   s    Q=A#5=  77K	'"i/''*#' <;;..yD.ID )0D % D DURVhu v
&&r   r   N)__name__
__module____qualname____firstlineno____doc__r   classmethodr'   RETURN_TYPESOUTPUT_TOOLTIPSFUNCTIONCATEGORYDESCRIPTIONEXPERIMENTALr)   __static_attributes__ r   r
   r   r      sH      	
 	
 %LSOHH DKL'r   r   c                   2    \ rS rSr\S 5       rSrSrS rSr	g)LoraLoaderBypassModelOnly9   c           	      J    SS[         R                  " S5      4SSSSSS	.4S
.0$ )Nr   r   r   r   r   r   r   r   )r   r   r   r   )r   r   r    r"   r%   s    r
   r'   %LoraLoaderBypassModelOnly.INPUT_TYPES:   s;    z,8,J,J7,S+V18cRXafpt:u0v  ! 	!r   rJ   load_lora_model_onlyc                 2    U R                  US X#S5      S   4$ )Nr   )r)   )r	   r   r   r    s       r
   rL   .LoraLoaderBypassModelOnly.load_lora_model_onlyC   s    udIqI!LNNr   rE   N)
r8   r9   r:   r;   r=   r'   r>   r@   rL   rD   rE   r   r
   rG   rG   9   s&    ! !
 L%HOr   rG   )r   rG   z"Load LoRA (Bypass) (For debugging)z.Load LoRA (Bypass, Model Only) (for debugging))r#   comfy.utilsr.   comfy.sdr   rG   NODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSrE   r   r
   <module>rS      sH      0' 0'fO 0 O )!:  =!Q r   