ó
    >: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	  SSK
Jr  \" 5       (       a  S SKJr   " S	 S
\R                  R                  \5      rS\R                  R                  S\S\S\S\\R                  R                     4
S jrg)é    )ÚAnyÚOptionalN)Úis_aqlm_available)Ú	LoraLayer)ÚBaseTunerLayeré   )Ú
LoraConfig)ÚQuantizedLinearc            	       óz   ^ • \ rS rSr  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ÚconfigÚrÚ
lora_alphac                 óä   >• UR                   (       a"  [        U R                  R                   S35      e[        TU ]  5         [        R
                  " X5        X l        U R                  UUUUS9  g )Nz2 does not support DoRA yet, please set it to False)r   r   )	Úuse_doraÚ
ValueErrorÚ	__class__Ú__name__ÚsuperÚ__init__r   Ú_active_adapterÚupdate_layer)ÚselfÚ
base_layerr   r   r   r   Úkwargsr   s          €ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/lora/aqlm.pyr   ÚAqlmLoraLinear.__init__   sh   ø€ ð �?�?Ü §¡× 7Ñ 7Ð8Ð8jÐ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_BÚlora_dropoutÚ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.forward6   sñ   € à—‘ Ó#ˆà× × ØˆMà"×2Ô2ˆNØ§[¡[×%5Ñ%5Ó%7Ó7ÙØ—[‘[ Ñ0ˆFØ—[‘[ Ñ0ˆFØ×'Ñ'¨Ñ7ˆGØ—l‘l >Ñ2ˆGä&+×&?Ò&?Ó&AÔ"AÐÞ"Ø!'§¡�Ø×*Ñ*¨1¯m©m×.AÑ.AÓB�á™F¡7¨1£:Ó.Ó/ˆFÞ"ØŸ™ >Ó2�ØÑ%ˆFØÑŠFñ# 3ð$ ˆr    Úreturnc                 ó*   >• [         TU ]  5       nSU-   $ )Nzlora.)r   Ú__repr__)r   Úrepr   s     €r   r:   ÚAqlmLoraLinear.__repr__Q   s   ø€ Ü‰gÑÓ ˆØ˜‰}Ðr    )r   )r   r   )r   Ú
__module__Ú__qualname__Ú__firstlineno__Ústrr	   Úintr   r*   ÚTensorr6   r:   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s^   ø† ð Øñ
ð ð
ð ð	
ð
 ð
ð ÷
ð 
ð.˜Ÿ™ô ð6˜#÷ õ r    r   Útargetr   r   r   r8   c                 óà   • S n[        U [        5      (       a  U R                  5       nOU n[        5       (       a4  [        U[        5      (       a  [        X4SU0UD6nUR                  U l        U$ )Nr   )Ú
isinstancer   Úget_base_layerr   r
   r   ÚcodesÚqweight)rE   r   r   r   Ú
new_moduleÚtarget_base_layers         r   Údispatch_aqlmrM   \   sh   € ð €Jä�&œ.×)Ñ)Ø"×1Ñ1Ó3Ñà"Ðä×ÑœzÐ*;¼_×MÑMÜ# FÑRÀÐRÈ6ÑRˆ
Ø*×0Ñ0ˆŒàÐr    )Útypingr   r   r*   Úpeft.import_utilsr   Úpeft.tuners.lora.layerr   Úpeft.tuners.tuners_utilsr   r   r	   Úaqlmr
   ÚnnÚModuler   r@   rM   © r    r   Ú<module>rV      s†   ð÷ !ã å /Ý ,Ý 3å ñ ×ÑÝ$ô5�U—X‘X—_‘_ iô 5ð|Ø�H‰H�O‰Oðàðð ðð ð	ð
 ˆe�h‰h�o‰oÑõr    