
    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)OFTLayer)BaseTunerLayer)QuantizedLinearc                      ^  \ rS rSr          SS\S\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$ )AqlmOFTLinear   adapter_nameroft_block_sizemodule_dropoutinit_weightscoftepsblock_sharefan_in_fan_outuse_cayley_neumannnum_cayley_neumann_termsc                    > [         TU ]  5         [        R                  " X5        X l        U R	                  UUUUUUUU	UUS9
  g )N)r   r   r   r   r   r   r   r   )super__init__r   _active_adapterupdate_layer)self
base_layerr   r   r   r   r   r   r   r   r   r   r   kwargs	__class__s                 N/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/oft/aqlm.pyr   AqlmOFTLinear.__init__   sU      	$++))%#1%= 	 	
    xc                    U R                   (       a  U R                  U5      $ U R                   H  nX R                  R	                  5       ;  a  M"  U R                  U   n[
        R                  " 5       (       + nU(       a1  UR                  nU R                  XR                  R                  5      nU" U5      nM     U R                  U5      nW(       a  UR                  W5      nU$ N)disable_adaptersr   active_adaptersoft_Rkeystorchis_autocast_enableddtype_cast_input_dtypeweightto)r   r#   active_adapterr(   requires_conversionexpected_dtyperesults          r    forwardAqlmOFTLinear.forward>   s      ??1%%"22NZZ__%66JJ~.E&+&?&?&A"A"!"**1ll.@.@AaA 3 #YY~.Fr"   returnc                 *   > [         TU ]  5       nSU-   $ )Nzoft.)r   __repr__)r   repr   s     r    r8   AqlmOFTLinear.__repr__T   s    g |r"   )r   )
r       g        TFgiUMu?FFF   )__name__
__module____qualname____firstlineno__strintfloatboolr   r*   Tensorr4   r8   __static_attributes____classcell__)r   s   @r    r
   r
      s    
   #!!$#(()
 
 	

 
 
 
 
 
 
 
 !
 #&
 
B ,#  r"   r
   targetr   r   r6   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)rH   r   r   
new_moduletarget_base_layers        r    dispatch_aqlmrP   Y   sc    
 J&.))"113"z*;_MM"6B6B
*00r"   )typingr   r   r*   peft.import_utilsr   peft.tuners.oft.layerr   peft.tuners.tuners_utilsr   aqlmr   nnModuler
   rA   rP    r"   r    <module>rY      sy    !  / * 3 $:EHHOOX :zHHOO  ehhoo	r"   