
    oi)              	          S SK JrJr  S SKrS SKJr  S SKJr  S SKJ	r	  \" 5       (       a&  S SK
Jr   " S S\R                  R                  \5      rS	\R                  R                  S
\S\S\\R                  R                     4S jrg)    )AnyOptionalN)is_eetq_available)	LoraLayer)BaseTunerLayer)
EetqLinearc                      ^  \ rS rSr       SS\S\S\S\S\S\S\4U 4S	 jjjrS
\R                  4S jr
SS\S\\\      SS4S jjrSS jrS\4U 4S jjrSrU =r$ )EetqLoraLinear   r
lora_alphalora_dropoutinit_lora_weights
use_rslorause_dora	lora_biasc
                    > U(       a"  [        U R                  R                   S35      e[        TU ]  5         [
        R                  " X5        Xl        X l        U R                  UUUUUUUU	S9  g )Nz2 does not support DoRA yet, please set it to False)r   r   r   r   r   r   )	
ValueError	__class____name__super__init__r   quant_linear_module_active_adapterupdate_layer)self
base_layeradapter_namer   r   r   r   r   r   r   kwargsr   s              O/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/lora/eetq.pyr   EetqLoraLinear.__init__   sx      DNN$;$;#<<n!oppGt0 (2$#/ %)"3%!#  	    xc                 6   U R                  U5      nU R                  (       a  U$ U R                   H  nX0R                  R	                  5       ;  a  M"  U R                  U   nU R
                  U   nU R                  U   nU R                  U   n[        R                  " 5       (       + nU(       a1  UR                  n	U R                  XR                  R                  5      nU" U" U" U5      5      5      n
U(       a  U
R                  W	5      n
X-  n
X*-   nM     U$ )N)r   disable_adaptersactive_adapterslora_Akeyslora_Br   scalingtorchis_autocast_enableddtype_cast_input_dtypeweightto)r   r#   resultactive_adapterr'   r)   dropoutr*   requires_conversionexpected_dtypeoutputs              r    forwardEetqLoraLinear.forward>   s    --a0F$$"&"6"6!)9)9);;^4^4++N;,,~6*/*C*C*E&E#&%+\\N..q--2E2EFAwqz 23&#YY~6F)# #7$ Mr"   N
safe_mergeadapter_namesreturnc                     [        S5      e)Nz5Merging LoRA layers is not supported for Eetq layers.AttributeError)r   r9   r:   s      r    mergeEetqLoraLinear.mergeX   s     !XYYr"   c                     [        S5      e)Nz7Unmerging LoRA layers is not supported for Eetq layers.r=   )r   s    r    unmergeEetqLoraLinear.unmerge[   s     !Z[[r"   c                 *   > [         TU ]  5       nSU-   $ )Nzlora.)r   __repr__)r   repr   s     r    rE   EetqLoraLinear.__repr__^   s    '"$CS= r"   )r   r   )r      g        TFFF)FN)r;   N)r   
__module____qualname____firstlineno__intfloatboolr   r+   Tensorr7   r   liststrr?   rB   rE   __static_attributes____classcell__)r   s   @r    r
   r
      s    
 "%&*$"#!	 	!	
 !	  !	  $!	 !	 !	 !	 !	F	U\\ 	4	ZD 	Z$s)AT 	Z`d 	Z	\	!c 	! 	!r"   r
   targetr   r   r;   c                     S n[        U [        5      (       a  U R                  5       nOU n[        5       (       aT  [        U[        5      (       a?  [        X40 UD6nUR                  U l        [        U S5      (       a  UR                  U l        U$ )Nbias)	
isinstancer   get_base_layerr   r   r
   r/   hasattrrV   )rT   r   r   
new_moduletarget_base_layers        r    dispatch_eetqr\   c   s}    
 J&.))"113"z*;ZHH#FCFC
)0066""+00FKr"   )typingr   r   r+   peft.import_utilsr   peft.tuners.lora.layerr   peft.tuners.tuners_utilsr   eetqr   nnModuler
   rQ   r\    r"   r    <module>re      s{    !  / , 3 F!) F!RHHOO  ehhoo	r"   