ó
    >: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_eetq_available)ÚOFTLayer)ÚBaseTunerLayer)Ú
EetqLinearc                   óÒ   ^ • \ rS rSr          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S\S\\\      SS4S jjrSS jrS\4U 4S jjrSrU =r$ )ÚEetqOFTLinearé   ÚrÚoft_block_sizeÚmodule_dropoutÚinit_weightsÚcoftÚepsÚblock_shareÚuse_cayley_neumannÚnum_cayley_neumann_termsÚfan_in_fan_outc                 ó˜   >• [         TU ]  5         [        R                  " X5        Xl        X l        U R                  UUUUUUUU	UU
US9  g )N)	r   r   r   r   r   r   r   r   r   )ÚsuperÚ__init__r   Úquant_linear_moduleÚ_active_adapterÚupdate_layer)ÚselfÚ
base_layerÚadapter_namer   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/eetq.pyr   ÚEetqOFTLinear.__init__   s`   ø€ ô  ‰GÑÔÜ×Ò˜dÔ/ð (2Ô$à#/Ô Ø×ÑØØØ-Ø-Ø)ØØØ'Ø-Ø#5Ø)Að ò ó    Ú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ÚEetqOFTLinear.forwardA   s·   € Ø×$×$Ø×/Ñ/°Ó2Ð2à"&×"6Ô"6�Ø!¯©¯©Ó):Ó:ÙØŸ
™
 >Ñ2�ä*/×*CÒ*CÓ*EÔ&EÐ#Þ&Ø%&§W¡W�NØ×.Ñ.¨q·,±,×2DÑ2DÓE�Aá˜!“H’ñ #7ð ×-Ñ-¨aÓ0ˆFÞ"ØŸ™ >Ó2�ØˆMr#   NÚ
safe_mergeÚadapter_namesÚreturnc                 ó   • [        S5      e)Nz5Merging LoRA layers is not supported for Eetq layers.©ÚAttributeError)r   r6   r7   s      r!   ÚmergeÚEetqOFTLinear.mergeV   s   € Ü Ð!XÓYÐYr#   c                 ó   • [        S5      e)Nz7Unmerging LoRA layers is not supported for Eetq layers.r:   )r   s    r!   ÚunmergeÚEetqOFTLinear.unmergeY   s   € Ü Ð!ZÓ[Ð[r#   c                 ó*   >• [         TU ]  5       nSU-   $ )Nzoft.)r   Ú__repr__)r   Úrepr    s     €r!   rB   ÚEetqOFTLinear.__repr__\   s   ø€ Ü‘'Ñ"Ó$ˆCØ˜C‘<Ðr#   )r   r   )
r   r   g        TFgiUMu?FFé   F)FN)r8   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚfloatÚboolr   r*   ÚTensorr4   r   ÚlistÚstrr<   r?   rB   Ú__static_attributes__Ú__classcell__)r    s   @r!   r
   r
      sá   ø† ð
 Ø"#Ø$'Ø!%ØØØ %Ø',Ø,-Ø#(ñ$	ð ð	$	ð
  ð$	ð "ð$	ð ð$	ð ð$	ð ð$	ð ð$	ð !%ð$	ð '*ð$	ð !÷$	ð $	ðL	˜UŸ\™\ô 	ñ*	Z Dð 	ZÀÈ$ÈsÉ)ÑATð 	ZÐ`dõ 	Zô	\ð	 ˜c÷ 	 õ 	 r#   r
   Útargetr   r   r8   c                 ó   • S n[        U [        5      (       a  U R                  5       nOU n[        5       (       aT  [        U[        5      (       a?  [        X40 UD6nUR                  U l        [        U S5      (       a  UR                  U l        U$ )NÚbias)	Ú
isinstancer   Úget_base_layerr   r   r
   r.   ÚhasattrrT   )rR   r   r   Ú
new_moduleÚtarget_base_layers        r!   Údispatch_eetqrZ   a   s}   € ð
 €Jä�&œ.×)Ñ)Ø"×1Ñ1Ó3Ñà"Ðä×ÑœzÐ*;¼Z×HÑHÜ" 6ÑB¸6ÑBˆ
Ø)×0Ñ0ˆŒä�6˜6×"Ñ"Ø+×0Ñ0ˆFŒKàÐr#   )Útypingr   r   r*   Úpeft.import_utilsr   Úpeft.tuners.oft.layerr   Úpeft.tuners.tuners_utilsr   Úeetqr   ÚnnÚModuler
   rO   rZ   © r#   r!   Ú<module>rc      s{   ð÷ !ã å /Ý *Ý 3ñ ×ÑÝôD ˜Ÿ™Ÿ™¨ô D ðNØ�H‰H�O‰Oðàðð ðð ˆe�h‰h�o‰oÑõ	r#   