
    oi`e                        / S Qr SSKrSSKrSSKrSSKJr  SSKJrJrJ	r	J
r
JrJr   \R                  rSSKJr  SS	KJrJrJrJr  \R.                  rSPS
\S\4S jjr 0 qS\S\	S\4S jr  \R<                  r SSK Jr  \" \5      \" \5      L d   S5       e  \\   r%S\S\	S\	S\	4S jr& \r' SSK(J'r'  \" \'5      \L d   S5       e  \r, SS#K-J,r,  \" \,5      \L d   S$5       e  \r.\r/ SS%K(J.r.  \" \.5      \L d   S&5       e\,\:w  a   " S' S(\,\.5      r/ \R                  r1SS*K2J1r1  \R                  r3SS+K2J3r3  \R                  r4SS,K2J4r4  \R                  r5SS-K2J5r5  \r6SS.K7J6r6  \
\   r8SS/K7J8r8  \R                  r9SS0K:J9r9  \R                  r;SS1K J;r;  \R                  r<SS2K J<r<  \R                  r=SS3K J=r=  \R                  r>SS4K J>r>  \R~                  R                  R                  rB\R~                  R                  R                  rD0 \R                  \R                  _\R                  \R                  _\R                  \R                  _\H\R                  _\I\R                  _\J\R                  _\L\R                  _\M\R                  _\\_\%\\   _\1\R                  _\3\R                  _\4\R                  _\5\R                  _\9\R                  _\;\R                  _\<\R                  _\=\R                  \>\R                  0ErO\6\:w  a  \R                  \O\6'   \8\
\   :w  a  \R                  \O\8'   \'\:w  a  \\O\''   \,\:w  a  \\O\,'   \.\:w  a  \\O\.'    SSKPrP\R                  \O\PR                  '   S5\S\4S6 jrR S5\S\4S7 jrS S8\S\
\	\\4      4S9 jrT S:\
\	   S;\
\	   S\
\   4S< jrU  SQS=\S>\S?\S\\V\4   4S@ jjrW SA\SB\S\4SC jrX      SRSA\SB\S>\SD\VSE\VS?\S\V4SF jjrY      SRSA\SB\SG\\\
\   4   SD\VSE\VS?\S\V4SH jjrZ      SRSI\
\\\\4      SD\VSJ\VS?\S\	\\V4   4
SK jjr[ SA\SB\S\V4SL jr\ SA\S\
\   4SM jr] SN\
\\\4      S\	\\V4   4SO jr^g!   SSKJr   GNE= f!   SSKJr   GN= f! \! aI  r"\" \"5      r"S\";   a  \#" S5      eS\";   a  \#" S5      eS\";  a  \$" \"5      e\#" S\" \"5       S35      eSr"C"f\$ a  r"\$" \"5      eSr"C"ff = f! \! a5  r"SS K)J*r+  \" \+5      \" S!5      :  a  \#" S"\" \"5       S35      e Sr"C"GNZSr"C"f\$ a  r"\$" \"5      eSr"C"ff = f!    GN[= f!   \'r/\/\:X  a  \R`                  " S)\" \'5       35         GNV= f!    GNK= f!    GNA= f!    GN7= f!    GN-= f!    GN-= f!    GN*= f!    GN = f!    GN= f!    GN= f!    GN= f!    GN= f!    GNN= f)S)patch_functionpatch_function_past_key_valuesprocess_returnprocess_output_optionsKWARGS_TYPEraise_errorUnpackCacheDynamicCacheHybridCacheStaticCache	TextInputPreTokenizedInput
ImageInputImagesKwargsMultiModalDataProcessingKwargsProcessorMixin_get_unique_storage_namededent    N)r   )AnyCallableDictListTupleUnion)_TypedDictMeta   )Version   )UNSLOTH_ENABLE_LOGGINGUNSLOTH_COMPILE_DISABLEtorch_compile_optionsloggerf	exceptionc                 p    [         (       a+  [        R                  " SU  SUb  [        U5      OS S35        g )Nz#==================
Failed to patch z. Error
 z
==================
)r    r#   errorstr)r$   r%   s     ]/home/james-whalen/.local/lib/python3.13/site-packages/unsloth_zoo/temporary_patches/utils.pyraise_errorr+   6   sA     c!*!6s9~B? @#$	
     output_classreturn_dictreturnc                 4    U [         ;   a/  [         U    nX!R                  5       -  nU Vs0 s H  oDX   _M	     nnU " S0 UD6$ s  snf !   UR                  5       n[        [        R                  " U 5      R
                  R                  5       5      nX%-  nU Vs0 s H  oDX   _M	     Os  snf nn[        R                  " SU R                   SU SU SXR-
   35         U[         U '   U " S0 UD6s $ ! [         a  n[        [        U5      5      eSnAff = f= f)z4CausalLMOutputWithPast(...) might change arguments! zUnsloth: Returning z+ changed return args.
Previously we wanted z
Now we can only use  z
These keys are gone: N )PROCESS_RETURN_ALLOWED_TYPESkeyssetinspect	signature
parametersr#   warning_once__name__	ExceptionRuntimeErrorr)   )r-   r.   allowed_keyschosen_keyskeyreturn_dict_keyses          r*   r   r   E   s9   
'777EL&)9)9);;K=HI[c!11[KI*k** J'&++-7,,\:EEJJLM#6:EF+3k..+FF!,"7"7!8 9$$4#5 6$$0> 2$$4$C#DF	
	'9E(6.+.. 	's1v&&	'sL   )A A	A A ADB('6DC1.D1
D;DDD)Unpackz<Unsloth: Unpack type changed! Please file a bug report asap!z5cannot import name '_center' from 'numpy._core.umath'zj***** You might have used uv to install packages, and they broke numpy. Try restarting your runtime. *****ztorchvision::nms does not existz***** Please update and reinstall torchvision - it broke! `pip install --upgrade --force-reinstall --no-cache-dir torchvision` *****rA   z.Unsloth: Unpack has been moved! Other error = z .
Please file a bug report asap!selflocals_itemskwargsc                     UR                  SS5      nUR                  SS5      nUb  UO[        U R                  SS5      nUb  UO[        U R                  SS5      nX2S'   XBS'   U$ )zLLatest transformers also deletes output_attentions and output_hidden_states output_attentionsFoutput_hidden_states)getgetattrconfig)rB   rC   rD   rF   rG   s        r*   r   r      s     (++,?EJ'++,BEJ->-J)PWX\XcXcexz  QA 4 @gdkk[qsxFy  &7%9!"Mr,   )TransformersKwargszHUnsloth: TransformersKwargs type changed! Please file a bug report asap!)__version__z4.54.0.dev0z:Unsloth: TransformersKwargs has been moved! Other error = )FlashAttentionKwargszJUnsloth: FlashAttentionKwargs type changed! Please file a bug report asap!)
LossKwargsz@Unsloth: LossKwargs type changed! Please file a bug report asap!c                       \ rS rSrSrg)KwargsForCausalLM   r1   N)r9   
__module____qualname____firstlineno____static_attributes__r1   r,   r*   rP   rP      s    3r,   rP   z\Unsloth: KwargsForCausalLM cannot be inherited from TransformersKwargs since it's of type = )r   )r	   )r
   )r   )r   )r   )r   )r   )r   )r   )r   
annotationc                     U [         L a  [         $ [        [        S5      (       aD  [        R                  " U 5      nUb+  [        R                  " U 5      n[        S U 5       5      nX4$ [        R                  X 5      $ )zs
Canonicalize type annotations for consistent comparison.
Makes List[int], typing.List[int], list[int] equivalent.

get_originc              3   8   #    U  H  n[        U5      v   M     g 7fN)canonicalize_annotation).0args     r*   	<genexpr>+_canonicalize_annotation.<locals>.<genexpr>&  s     F#055s   )EMPTYhasattrtrX   get_argstupleTYPE_MAPPINGSrH   )rV   originargss      r*   _canonicalize_annotationrh     si    
 Uq,j)::j)DFFFD>!Z44r,   c                 4   [        U 5      n [        U 5      [        L a  [        U 5      S:X  a  U S   [        R
                  :X  a;  [        [        U S   5      5      nUR                  S S9  [        U5      nU S   U4n U $ U S   [        :X  aK  [        U S   5      [        L a6  [        U S   5      S:X  a$  S[        U S   S   5      ;   a  [        [        44n U $ U S   [        :X  a4  [        U S   5      [        L a  S[        U S   5      ;   a  [        [        44n U $ )Nr   r   r   c                     [        U 5      $ rZ   )r)   )xs    r*   <lambda>)canonicalize_annotation.<locals>.<lambda>3  s    c!fr,   )r>   Kwargs)rh   typerd   lenrb   r   listr4   sortt_Unpackr)   t_TypedDictMeta)rV   rg   s     r*   r[   r[   *  s   )*5JJ5 S_%9 a=AGG#JqM*+DII,I-;D$Q-/J   ]h&A5(
1!#JqM!,--"_$68J  ]h&A4'JqM**"_$68Jr,   funcc           	          [         R                  " U 5      n/ nUR                  R                  5       n[        U5       H  u  pV[        UR                  5      nUR                  R                  nUR                  n	SUR                  5       ;   a5  SnU[        :X  a)  U	[        :X  a  [        U5      S-
  U:X  a  [         ["        44n	 US:X  a9  [        U5      S:X  a*  U R$                  S:X  a  U	[        :X  a  [&        R(                  n	 UR+                  UUUR,                  [        L [/        U	5      S.5        M     U$ ! [        [        4 a  n[        SU 35      eSnAff = f)	z
Return a fingerprint we can use to compare function signatures.
Returns: [{'name': str, 'kind': int, 'is_required': bool, 'annotation': Any}]
z,Unsloth: Cannot inspect function signature: NrD   r   rk   r   forward)namekindis_requiredrV   )r5   r6   
ValueError	TypeErrorr7   values	enumerater)   rx   ry   valuerV   lowerVAR_KEYWORD_IDr`   rp   rs   rt   r9   torchTensorappenddefaultr[   )
ru   r6   r@   fingerprintsignature_parameterskkparam
param_name
param_kindrV   s
             r*   get_function_fingerprintr   I  sT   
M%%d+	 K$//66834	_
ZZ%%
%%
 z''))!J ~-u$)*1,2&(:<
 3%&!+]]i'5 J ==E12:>	
 	1 5< G 	" MGsKLLMs   D: :E
EEold_fpnew_fpc                     [        S U  5       5      n[        S U 5       5      n[        X#-  5      nUR                  5         [        U5      $ )Nc              3   *   #    U  H	  oS    v   M     g7frx   Nr1   r\   rk   s     r*   r^    removed_flags.<locals>.<genexpr>{       /1vY   c              3   *   #    U  H	  oS    v   M     g7fr   r1   r   s     r*   r^   r   |  r   r   )r4   rq   rr   rd   )r   r   
old_params
new_paramsremoved_paramss        r*   removed_flagsr   w  sH     ///J///J*12N  r,   original_funcnew_funcmatch_levelc           	         US;  a  SSU S34$  [        U 5      n[        U5      nS n [        U5      [        U5      :w  aD  [        X45      nUS:X  a  S$ U" X4U5      u  pUS	:X  a  S	U	4$ SS
[        U5       S[        U5       34$  [	        X45       H  u  pU
S   U
S   4US   US   4:w  a5  US:X  a"  [        X45      nU" X4U5      u  pUS	:X  a  S	U	4s  $ SSU
S    S34s  $ US   (       a  U
S   (       d  SSUS    S34s  $ US:X  d  My  U
S   US   :w  d  M  SSU
S    SU
S    SUS    34s  $    g! [         a  nSSU 34s SnA$ SnAff = f)z:
Check if it's safe to patch original_func with new_func.
)strictrelaxedFzInvalid match_level: z. Use 'strict' or 'relaxed'zSignature inspection failed: Nc                    [        U5      S:  a  US   S   [        :X  a  US   S   S:X  a  US   S   [        :X  a  US   S   S:X  a  [        U5      nU[        SS15      -  nSnS	nU[        U 5      :  az  X   nUS   U;   aW  US
-  nU[        U 5      :  aC  X   nUS   U;  a   US   S;   a  US   [        [        4;   a  OSnOUS
-  nU[        U 5      :  a  MC  US
-  nU[        U 5      :  a  Mz  U(       d  S$ g)Nr   ry   rx   rD   rg   r   Fr   )rg   rD   T)Fr'   )TzReplacing with *args, **kwargs)rp   r   VAR_POSITIONAL_IDr4   )r   r   removed_flags_listifailold_args         r*   check_args_kwargs+can_safely_patch.<locals>.check_args_kwargs  s+   K12Jv.0VBZ5G85S2Jv"33r
68Jf8T "%%7!8#vx&8"99ADc&k/ )6?&88FAc&k/"()"6?2DD '3F F!(^EV4X!X $'+ %Q c&k/ Q! c&k/" >>r,   )rF   rG   TzParameter count mismatch: z vs rx   ry   r   zParameter 'z' signature changedrz   z#' changed from optional to requiredr   rV   z ' type annotation changed from:
z to
)Tr'   )Fz?New function removed output_attentions and output_hidden_states)r   r{   rp   r   zip)r   r   r   r   r   r@   r   r   resultr(   	old_param	new_params               r*   can_safely_patchr     s    //-k]:UVVV:)-8)(3
> 	 6{c&k! +6:!OO\\)&:LMT>;23v;-tCK=QQQ !$F 3	fy01i6GSYIZ5[[i'%26%B" 1&BT UT>;&K	&(9'::MNNN]#Im,DK	&(9'::]^^^ ("y'>)LBY'Y)F+,,M&'u&')) ) !4( O  :5aS999:s   D4 4
E>E
E
E
target_obj	attr_namec                 N   [        U S5      (       a  U R                  nOF[        U S5      (       a  U R                  R                  nO[        [	        U 5      R                  5      n[        U S5      (       a)  U R
                  R                  S5      S   nSU SU SU 3$ SU SU 3$ )z;
Generate a unique name for storing the original function.
r9   	__class__rR   .r   
_original__)ra   r9   r   r)   ro   rR   split)r   r   obj_namemodule_names       r*   r   r     s     z:&&&&	[	)	)''00tJ'001 z<(( ++11#6r:K=(1YK@@H:Qyk22r,   forcestore_originalc           	         [        X5      (       d2  [        (       a&  [        R                  " SU SU R                   35        g[        X5      nUbr  [        U5      [        L a`  [        (       dU  [        US5      (       a  UR                  n[        US5      (       a  UR                  n[        R                  " UUU[        S9n U(       a  [        X5      n	[        X	U5         U(       dJ  [        XU5      u  pU
(       d5  [        (       a)  [        R                  " SU R                   SU S	U 35        g  [        XU5        [        (       a'  [        R                   " S
U R                   SU S35        g! ["         a>  n[        (       a)  [        R                  " SU R                   SU SU 35         SnAgSnAff = f)z'
Patch a function/method on an object.
Unsloth: Attribute '' not found on FNget_compiler_config)	fullgraphdynamicoptionszUnsloth: Skipped r   z	
Reason: zUnsloth: Patched TUnsloth: Failed to patch : )ra   r    r#   r(   r9   rI   ro   boolr!   __wrapped__r   compiler"   r   setattrr   infor:   )r   r   r   r   r   r   r   r   r   unique_nameis_safereasonr@   s                r*   r   r     s    :))!!LL/	{/*J]J]I^_`J2M iD!8AXAX8233++H="788)55M==!+	
 	 .zE
7 	*=KP%%01D1D0EQykQ[\b[cde
x0!!KK+J,?,?+@)ANO !!LL4Z5H5H4I9+UWXYWZ[\s   6>E5 5
F=?4F88F=new_functionsc                 0   [        X5      (       d2  [        (       a&  [        R                  " SU SU R                   35        g[        X5      n [        R                  " U5      R                  R                  5       n	Sn
SnU Hd  n [        R                  " U5      R                  R                  5       nS H,  nX;   d  M
  X;   d  M   [        U UUUUUUUS9n
U
(       a    M`  M.     Mf     U
(       d4  [        (       a)  [        R                  " S	U R                   S
U SU 35        U
$ !   [        R                  " SU R                   35         g= f! [         a  n[        U5      n SnAM  SnAff = f! [         a  n[        U5      n SnAM  SnAff = f)z/Patch either past_key_value or past_key_values r   r   FzUnsloth: Cannot inspect r'   N)past_key_valuepast_key_values)r   r   r   r   r   r   r   r   r   r   r   )ra   r    r#   r(   r9   rI   r5   r6   r7   r3   r:   r)   r   )r   r   r   r   r   r   r   r   r   old_keyssuccessr(   ru   new_keysr@   r>   s                   r*   r   r   2  s    :))!!LL/	{/*J]J]I^_`J2M$$]3>>CCE GE	((.99>>@H
 :C3?,%/$-#' %)7&1$-")	G w : 0 --01D1D0EQykQSTYSZ[\N?/
0C0C/DEF  	FE	$ ! FEs<   .D( .E	E5(%E
E2E--E25
F?FFpatches	fail_fastc                     0 nU  Hk  u  pxn	[        US[        U5      5       SU 3n
[        UUU	UUUUS9nXU
'   U(       d  M=  U(       a  MF  [        (       a  [        R
                  " SU
 35          U$    U$ )z!
Apply multiple patches at once.
r9   r   )r   r   r   r   z2Unsloth: Stopping patch process due to failure on )rI   r)   r   r    r#   r(   )r   r   r   r   r   r   resultsr   r   r   r>   r   s               r*   patch_multipler   h  s     G+2'
xZZAB!I;O %!
 9WW%%QRUQVWXN% ,3$ Nr,   c                    [        X5      n[        X5      (       d)  [        (       a  [        R                  " SU SU S35        g [        X5      n[        XU5        [        X5        [        (       a  [        R                  " SU 35        g! [         a1  n[        (       a  [        R                  " SU SU 35         S	nAgS	nAff = f)
z-
Restore original function if it was stored.
z&Unsloth: No stored original found for z (looked for )FzUnsloth: Restored original TzUnsloth: Failed to restore r   N)
r   ra   r    r#   r(   rI   r   delattrr   r:   )r   r   r   r   r@   s        r*   restore_originalr     s     +:AK:++!!LLA)MZeYffghi

8
}5
(!!KK5i[AB !!LL6ykA3GHs   AB 
C'CCc                 :   / n[        U 5       Hn  nUR                  S5      (       d  M  UR                  S5      (       a  M3  UR                  S5      SS n[        U5      S:  d  MX  US   nUR	                  U5        Mp     [        [        [        U5      5      5      $ )z8
List all stored original functions on a target object.
r   _original___r   r   Nr   )dir
startswithr   rp   r   sortedrq   r4   )r   storedr   partsmethod_names        r*   list_stored_originalsr     s     F_	--i6J6J>6Z6Z OOC(,E5zQ#Bik* % $s6{#$$r,   target_objs_and_attrsc                 p    0 nU  H-  u  p#[        US[        U5      5       SU 3n[        X#5      X'   M/     U$ )z&
Restore multiple original functions.
r9   r   )rI   r)   r   )r   r   r   r   r>   s        r*   restore_multipler     sG     G!6
ZZAB!I;O'
> "7 Nr,   rZ   )r   )FTr   NT)___all__r5   typingrb   r   textwrapr   r   r   r   r   r   r   r   rt   typing_extensionsutilsr   commonr    r!   r"   r#   _emptyr`   r)   r+   r2   ro   r   rA   rs   transformers.processing_utilsImportErrorr@   r;   r:   r   r   rK   transformers.utilstransformersrL   transformers_versionrM   +transformers.modeling_flash_attention_utilsrN   rP   r(   r   transformers.cache_utilsr	   r
   r   r   $transformers.tokenization_utils_baser   r   transformers.image_utilsr   r   r   r   	ParameterVAR_KEYWORDr   r   VAR_POSITIONALr   r   	IntTensorFloatTensorrq   dictr4   Setrd   	frozenset	FrozenSetre   types	UnionTyperh   r[   r   r   r   r   r   r   r   r   r   r   r   r1   r,   r*   <module>r     sh  ",     : :D&&O  b b	3 	3 	   " 			 		: 5xxH4VX&GFG&( '  
	&  % 5 O3SRS3  ' 	P!"o5UTU5
  
# 
-ZO+KJK+.F 4jF  	
/uu6ee5ee5 	?I GUU
4uu;=55 ?= %%1177%%44:: 	LL5<<	OO5<< 
5<< 	166	
 	166 155 
177 1;; 8 8O4 
155 155 155 155 155  155!" 155#$ 155155'* aee=#;S	!aee=1B#C?*RaM:L,M?*RaM:N,O?*RaM*,E	%&WWM%//"5 5 5   8 *8 *T#s(^0D *V !$Z!$Z! 
#Y!   UUU U 49	Ul 333 	3(  ;	;	;	 ;	 	;	
 ;	 ;	 
;	x  222 4>122 	2
 2 2 
2f 
 %S(*+,  	 
#t)_@  
2 %c %d3i % 
DsCx,A 
d3PT9o 
 mDCCr544  AA>!Cx
 	
 
+a	/ S
 	
 
	l

8Q A) 	)   
A,H  @#$(>>HQ Q- -
 	

 	 
A,	
*O+77;<N7O6PR	
    
       H	s  Q. -Q< :R
 0S- T< ,*U #U/ 5U7 U? V !V ,V >V V' "V/ 4V7 V? !W .Q9<R
S*AS	S*S%%S*-T93*T##	T9,T44T9<U%U,/U47U<?VVVVV$'V,/V47V<?WW