ó
    >:jÛ  ã            	       ó  • 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                 €ÚQ/home/mande/repo/quber/.venv/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Ô2ˆNØ§Z¡Z§_¡_Ó%6Ó6ÙØ—J‘J˜~Ñ.ˆEä&+×&?Ò&?Ó&AÔ"AÐÞ"Ø!"§¡�Ø×*Ñ*¨1¯l©l×.@Ñ.@ÓA�á�a“ŠAñ 3ð —‘ Ó#ˆÞØ—Y‘Y˜~Ó.ˆ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ÑB¸6Ñ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ñ ×ÑÝ$ô:�E—H‘H—O‘O Xô :ðzØ�H‰H�O‰Oðàðð ðð ˆe�h‰h�o‰oÑõ	r"   