ó
    >: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r " S S	\R                  R                  \5      rS
\R                  R                  S\S\S\S\\R                  R                     4
S jrg)é    )ÚAnyÚOptionalN)Úis_te_pytorch_available)Ú	LoraLayer)ÚBaseTunerLayeré   )Ú
LoraConfigc            	       óÎ   ^ • \ rS rSrSr  SS\S\S\S\4U 4S jjjrSS	\	S
\
\\      SS4S jjrSS jrS\R                  S\S\S\R                  4S jrS\4U 4S jjrSrU =r$ )ÚTeLinearé   zøLoRA layer for TransformerEngine linear modules.

Supports ``te.pytorch.Linear``, ``te.pytorch.LayerNormLinear``, and ``te.pytorch.LayerNormMLP`` as base layers.

Note:
    Adapter weight merging (``merge`` / ``unmerge``) is **not supported** yet.
Úadapter_nameÚconfigÚrÚ
lora_alphac                 óê   >• UR                   (       a"  [        U R                  R                   S35      e[        TU ]  5         [        R
                  " U 4SU0UD6  X l        U R                  UUUUS9  g )Nz2 does not support DoRA yet, please set it to FalseÚ
base_layer)r   r   )	Úuse_doraÚ
ValueErrorÚ	__class__Ú__name__ÚsuperÚ__init__r   Ú_active_adapterÚupdate_layer)Úselfr   r   r   r   r   Úkwargsr   s          €ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/lora/te.pyr   ÚTeLinear.__init__(   sr   ø€ ð �?�?Ü §¡× 7Ñ 7Ð8Ð8jÐkÓlÐlä‰ÑÔÜ×Ò˜4ÑA¨JÐA¸&ÒAà+ÔØ×ÑØØØ!Øð	 	ò 	
ó    NÚ
safe_mergeÚadapter_namesÚreturnc                 óF   • [        U R                  R                   S35      e)úZNot supported yet for TransformerEngine layers.

Raises:
    NotImplementedError: Always.
z does not support merge yet.©ÚNotImplementedErrorr   r   )r   r    r!   s      r   ÚmergeÚTeLinear.merge?   s"   € ô " T§^¡^×%<Ñ%<Ð$=Ð=YÐ"ZÓ[Ð[r   c                 óF   • [        U R                  R                   S35      e)r$   z does not support unmerge yet.r%   )r   s    r   ÚunmergeÚTeLinear.unmergeG   s"   € ô " T§^¡^×%<Ñ%<Ð$=Ð=[Ð"\Ó]Ð]r   ÚxÚargsr   c           	      ó´  • U R                   " U/UQ70 UD6  UR                  SS 5      nU R                  (       a  U R                  " U/UQ70 UD6nU$ Ub"  [	        U R
                  R                   S35      eU R                  " U/UQ70 UD6nUR                  nU R                  R                  5       nU R                   H„  nX‡;  a  M
  U R                  U   n	U R                  U   n
U R                  U   nU R                  U   nU R                  XR                  R                  5      nXZ" U	" U" U5      5      5      U-  -   nM†     UR!                  U5      nU$ )Nr!   z* does not support mixed_batch_forward yet.)Ú_check_forward_argsÚpopÚdisable_adaptersr   r   r   r   ÚdtypeÚlora_AÚkeysÚactive_adaptersÚlora_BÚlora_dropoutÚscalingÚ_cast_input_dtypeÚweightÚto)r   r,   r-   r   r!   ÚresultÚtorch_result_dtypeÚlora_A_keysÚactive_adapterr3   r6   Údropoutr8   s                r   ÚforwardÚTeLinear.forwardO   sL  € Ø× Ò  Ð4 TÒ4¨VÒ4ØŸ
™
 ?°DÓ9ˆà× × Ø—_’_ QÐ8¨Ò8°Ñ8ˆFð* ˆð) Ñ&Ü §¡× 7Ñ 7Ð8Ð8bÐcÓdÐdà—_’_ QÐ8¨Ò8°Ñ8ˆFØ!'§¡ÐàŸ+™+×*Ñ*Ó,ˆKØ"&×"6Ô"6�Ø!Ó4ÙàŸ™ ^Ñ4�ØŸ™ ^Ñ4�Ø×+Ñ+¨NÑ;�ØŸ,™, ~Ñ6�Ø×*Ñ*¨1¯m©m×.AÑ.AÓB�Ø &©±¸³
Ó);Ó"<¸wÑ"FÑF’ñ #7ð —Y‘YÐ1Ó2ˆFàˆr   c                 ó*   >• [         TU ]  5       nSU-   $ )Nzlora.)r   Ú__repr__)r   Úrepr   s     €r   rD   ÚTeLinear.__repr__k   s   ø€ Ü‰gÑÓ ˆØ˜‰}Ðr   )r   )r   r   )FN)r"   N)r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ústrr	   Úintr   Úboolr   Úlistr'   r*   ÚtorchÚTensorr   rA   rD   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      sª   ø† ñð Øñ
ð ð
ð ð	
ð
 ð
ð ÷
ð 
ñ.\ ð \¸XÀdÈ3ÁiÑ=Pð \Ð\`õ \ô^ð˜Ÿ™ð ¨cð ¸Sð ÀUÇ\Á\ô ð8˜#÷ õ r   r   Útargetr   r   r   r"   c                 óL  • S n[        U [        5      (       a  U R                  5       nOU n[        5       (       aj  [        U[        R
                  R                  [        R
                  R                  [        R
                  R                  45      (       a  [        X4SU0UD6nU$ )Nr   )
Ú
isinstancer   Úget_base_layerr   ÚteÚpytorchÚLayerNormLinearÚLayerNormMLPÚLinearr   )rS   r   r   r   Ú
new_moduleÚtarget_base_layers         r   Údispatch_transformer_enginer^   p   s‰   € ð €Jä�&œ.×)Ñ)Ø"×1Ñ1Ó3Ñà"Ðä× Ñ ¤ZØœBŸJ™J×6Ñ6¼¿
¹
×8OÑ8OÔQS×Q[ÑQ[×QbÑQbÐc÷&ñ &ô ˜fÑL¸6ÐLÀVÑLˆ
àÐr   )Útypingr   r   rO   Úpeft.import_utilsr   Úpeft.tuners.lora.layerr   Úpeft.tuners.tuners_utilsr   r   r	   Útransformer_enginerW   ÚnnÚModuler   rK   r^   © r   r   Ú<module>rg      sˆ   ð÷  !ã å 5Ý ,Ý 3å ñ ×ÑÛ#ôNˆu�x‰x�‰ 	ô NðbØ�H‰H�O‰Oðàðð ðð ð	ð
 ˆe�h‰h�o‰oÑõr   