
    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_aqlm_available)	LoraLayer)BaseTunerLayer)QuantizedLinearc                      ^  \ rS rSr       SS\S\S\S\S\S\S\S	\4U 4S
 jjjrS\	R                  4S jrS\4U 4S jjrSrU =r$ )AqlmLoraLinear   adapter_name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        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   _active_adapterupdate_layer)self
base_layerr   r   r   r   r   r   r   r   kwargsr   s              O/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/lora/aqlm.pyr   AqlmLoraLinear.__init__   sp      7 788jkll4,+!%/! 	 		
    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AqlmLoraLinear.forward<   s    #  M"22N[[%5%5%77[[0F[[0F''7Gll>2G&+&?&?&A"A"!'**1mm.A.ABF71:./F">2%FF# 3$ r!   returnc                 *   > [         TU ]  5       nSU-   $ )Nzlora.)r   __repr__)r   repr   s     r   r;   AqlmLoraLinear.__repr__W   s    g }r!   )r   )r      g        TFFF)r   
__module____qualname____firstlineno__strintfloatboolr   r+   Tensorr7   r;   __static_attributes____classcell__)r   s   @r   r
   r
      s    
 !"& 
 
 	

 
 
  
 
 
 
 
> 6#  r!   r
   targetr   r   r9   c                     S n[        U [        5      (       a  U R                  5       nOU n[        5       (       a2  [        U[        5      (       a  [        X40 UD6nUR                  U l        U$ r$   )
isinstancer   get_base_layerr   r   r
   codesqweight)rI   r   r   
new_moduletarget_base_layers        r   dispatch_aqlmrQ   b   sc    
 J&.))"113"z*;_MM#FCFC
*00r!   )typingr   r   r+   peft.import_utilsr   peft.tuners.lora.layerr   peft.tuners.tuners_utilsr   aqlmr   nnModuler
   rB   rQ    r!   r   <module>rZ      sy    !  / , 3 $=UXX__i =LHHOO  ehhoo	r!   