
    oi                     F   S SK r S SKrS SKrS SKr/ SQrSSKJr  SSKJrJ	r	  SSK
JrJrJr  S r S r S3S jr S r S r S r     S4S jr S r S rS rS rS\S\R4                  4S jr " S S\R8                  5      rS SKrS SKr \!" \ RD                  RF                  S5      (       Ga  \ RD                  RF                  RH                  RJ                  S:w  Ga  \RL                  " \ RD                  RF                  RH                  5      r'\(" \ RD                  RF                  5      r)\) V s/ s H"  n SU  3\';   d  U  S3\';   d  U  S3\';   d  M   U PM$     sn r)\) V s/ s H  o S:w  d  M
  U PM     sn r)SRU                  \)5      r+\," S\+ S 3\-" 5       5        S!\';  a  \." S"5      e S	r/\'Ra                  S#S$S5      r1\Rd                  " \15      r3\" 5       Ri                  \35      r3\Rj                  " \35        \Rl                  " \35      r1\7" \1S%S&5        S'\1;  a7  S(\1;  a1  \Rp                  Rs                  S)S*5      S+:H  r:\:(       a  \;" S,5        S
r/O\1r' \/(       a  \'Ra                  S#S.S5      r'\'Ra                  SS5      r'S/r>S0r?S1 r@\R                  " \?\@\'\R                  S29r'\," \'\-" 5       5        \C\ RD                  RF                  l$        gs  sn f s  sn f ! \< aC  r=\Rp                  Rs                  S)S*5      S+:H  r:\:(       a  \;" S-\" \=5       35        S
r/ Sr=C=NSr=C=ff = f)5    N)patch_compiling_bitsandbytespatch_layernormpatch_torch_compilepatch_model_and_tokenizerpatch_compiled_autograd   )UNSLOTH_COMPILE_LOCATION)
_get_dtypeVersion)dtype_from_configset_dtype_in_configHAS_TORCH_DTYPEc                     S[         R                  S'   SS Kn [        U R                  5      [        S5      :  a1  [         R                  R                  SS5      S:X  a  [        S5         g [         R                  R                  SS5      S:X  a  [        S5        S	 H  n[        S
U 3[        5       [        5       5        [        [        U5      5      nU Hq  n[        U SU 35      n[        US5      (       d  M&  [        [        U SU S35      S5      (       a  MH  [        U SU SU SU S3[        5       [        5       5        Ms     M       g !    M  = f)N1UNSLOTH_PATCHEDr   z0.46.0UNSLOTH_ENABLE_LOGGING0zBUnsloth: Bitsandbytes >= 0.46.0 supports torch.compile - enabling.zJUnsloth: Bitsandbytes < 0.46.0 does not support torch.compile - disabling.)zbitsandbytes.nn.moduleszpeft.tuners.lora.bnbzimport .forwardz.forward__wrapped__z!.forward = torch._disable_dynamo(z	.forward))osenvironbitsandbytesr   __version__getprintexecglobalslocalsdirevalhasattr)r   xlayersfxlayers        T/home/james-whalen/.local/lib/python3.13/site-packages/unsloth_zoo/patching_utils.pyr   r   #   s?   $'BJJ !|''(GH,==::>>2C8C?VW  	 ' ::>>2C8C?^_EA71#	684a\F!QCq+.Uui00(41#Qrd( 34mDDhs!B4@1RD	RT[T]_e_gh   F 	  !s   EEc                    ^  SS K nUR                  R                  R                  S:w  a8  S[        R
                  S'   SSK Jn   " U 4S jSU5      n X1R                  l        g )Nr   Unsloth_LayerNormr   r   )	LayerNormc                   "   > \ rS rSrU 4S jrSrg)*patch_layernorm.<locals>.Unsloth_LayerNormK   c                    > T" X5      $ N )selfXfast_layernorms     r'   r   2patch_layernorm.<locals>.Unsloth_LayerNorm.forwardL   s    %d..    r0   N)__name__
__module____qualname____firstlineno__r   __static_attributes__)r3   s   r'   r)   r,   K   s    /r5   )torch.nnnnr*   r6   r   r   )r3   torchr*   r)   s   `   r'   r   r   D   sO    xx""&99(+

$%&		 	 	.
r5   FTc                    [        U 5      [        L d   e[        U5      [        L d   eSS KnSS KnU (       a  SnSUR                  S'   SUR                  S'   SUR                  S'   [
        R                  R                  UR                  UR                  SSSSSSSS	9	  S[
        R                  R                  l        OS
nUR                  R                  SS 5        UR                  R                  SS 5        UR                  R                  SS 5        UR                  R                  SS 5        [
        R                  R                  UR                  S9  S[
        R                  R                  l          [        SU S35         SUR                  S'   SUR                  S'   SUR                  S'   UR                  R                  SS 5        SUR                  S'   SU  3SSSSSSU 3SU 3SSSS S!U 3S"U 3S#S$S%S&U(       a  S'OS( 3/nS)S*U (       + =(       a    U 3S+U (       +  3S,S-S.S/S0S1S2U (       +  3S3S4/nU (       d&  U(       a  S[
        R                  R                  l         SS KJs  J
n  U H  n	[%        U	5        M      SS KJ	s  J
n  U H  n
[%        U
5        M     g !   [        SU S35         GN5= f!    MM  = f!    M7  = f)5Nr   z with debuggingr   TORCHDYNAMO_VERBOSE"TORCHINDUCTOR_FORCE_DISABLE_CACHESTORCHINDUCTOR_COMPILE_THREADSTF)	dynamoinductorgraph_breaks
recompilesrecompiles_verbosecompiled_autograd_verboseaot_joint_graph
aot_graphs
perf_hints 
TORCH_LOGS)allu*   🦥 Unsloth Zoo will now patch everythingz to make training faster!z%Unsloth Zoo will now patch everythingr   TORCHINDUCTOR_FX_GRAPH_CACHE#TORCHINDUCTOR_AUTOTUNE_REMOTE_CACHETORCHINDUCTOR_CACHE_DIRENABLE_AOT_AUTOGRAD_CACHEzconfig.debug = zconfig.dce = Truezconfig.memory_planning = Truezconfig.memory_pool = 'none'z.config.efficient_conv_bn_eval_fx_passes = Truez"config.dynamic_scale_rblock = Truezconfig.max_autotune = z config.max_autotune_pointwise = z config.max_autotune_gemm = Falsez5config.max_autotune_gemm_backends = 'ATEN,TRITON,CPP'z'config.autotune_fallback_to_aten = Truez#config.autotune_multi_device = Truez#config.coordinate_descent_tuning = zconfig.aggressive_fusion = zconfig.freezing = Falsez"config.cuda.enable_cuda_lto = Truez config.cuda.use_fast_math = Truez config.cuda.compile_opt_level = z-O2z-O1z*config.accumulated_cache_size_limit = 1024zconfig.suppress_errors = z%config.do_not_emit_runtime_asserts = z'config.inline_inbuilt_nn_modules = Truez&config.numpy_default_float = 'float32'z config.compiled_autograd = Falsezconfig.recompile_limit = 1024zconfig.cache_size_limit = 1024z+config.allow_unspec_int_on_nn_module = Truezconfig.optimize_ddp = z$config.capture_scalar_outputs = Truez.config.capture_dynamic_output_shape_ops = True)typeboolr   loggingr   r=   _loggingset_logsWARN_dynamoconfigverbosepopCRITICALr   suppress_errorstorch._inductor.config	_inductorr   torch._dynamo.config)debugO3ignore_errorsr   rT   	DEBUGGINGtorch_compile_argumentstorch_dynamo_argumentsrY   _try_compile_argument_try_dynamo_arguments              r'   r   r   V   s   ;$8$%	,/

();>

7869

23\\||!%(-# 	  
	
 (,$	


,d3


6=


;TB


|T*g&6&67',$\:9+E^_` 	$'BJJ ! 25BJJ-.8;BJJ45JJNN,d3 /2BJJ*+ %!'%8, !%
*2$/
*?1-
-bT2
%bT* 	",*
*B5E*BC3 F 	5
#I$?-#@A
/E	{;10* 	((5
 U, 	/8'* ]/3,++!8*+ "9 	)) 6)* !7 	o\5i[@YZ[` 	
 	s$   :J* <KK	*J>K	Kc                    SnU n [        US5      (       a  SnOm[        US5      (       a  UR                  nOM[        US5      (       a  UR                  U:w  a  UR                  nO[        US5      (       a  UR                  nOOM   X!4$ )NFTr$   model
base_modellanguage_model)r"   rj   rk   rl   )rj   found_layersr#   s      r'   	get_modelrn      s    LA
1hLQ  AQ%%!,,*: AQ())  A  	?r5   c                     [        S U R                  5        5       5      n[        U5      S:  a  [        SU  S35      eUR	                  5       nUR
                  U l        g)z@
Verify that all parameters of a module are on the same device.
c              3   8   #    U  H  oR                   v   M     g 7fr/   )device.0r#   s     r'   	<genexpr>(verify_and_set_device.<locals>.<genexpr>   s     ?+>a+>s   r   zUnsloth: All parameters of z should be on the same deviceN)set
parameterslen
ValueErrorr[   index_per_layer_device_index)moduleset_of_devicesrq   s      r'   verify_and_set_devicer~      sZ     ?6+<+<+>??N
>Q6vh>[\]]!F%+\\F"r5   c                  b  ^^^ SSK Jn    SSKJn  UnSSKJm  UR                  mUR                  mU " T5      UU4S j5       nU " T5      UU4S j5       nS	Ul	        [        US
S5      (       d  [        USU5         S	Ul	        [        US
S5      (       d  [        USU5        g g !   SSKJn   N= f)Nr   )wraps)PreTrainedConfig)PretrainedConfigr   )_normalize_dict_dtypesc                 ,   > T" U /UQ70 UD6nT" U5      $ r/   r0   )r1   argskwargsresultr   original_to_dicts       r'   wrapped_to_dict&patch_to_dict.<locals>.wrapped_to_dict   s"    !$888%f--r5   c                 ,   > T" U /UQ70 UD6nT" U5      $ r/   r0   )r1   r   r   r   r   original_to_diff_dicts       r'   wrapped_to_diff_dict+patch_to_dict.<locals>.wrapped_to_diff_dict  s"    &t=d=f=%f--r5   T_unsloth_patchedFto_diff_dictto_dict)	functoolsr    transformers.configuration_utilsr   r   hf_utilsr   r   r   r   getattrsetattr)r   r   r   r   r   r   r   r   s        @@@r'   patch_to_dictr      s    FE+ 1'//,99
. .  !. ". -1)#%7?? .2FG'+O$#%7?? )_= @/FEs   B$ $B.c           
        ^^ [        U5      [        L d   eSS KnU n[        US5      (       a  [        US5      (       a  [	        UR
                  5      nUS:X  a%  [        UR
                  [        R                  5        OUUS:X  a%  [        UR
                  [        R                  5        O*US:X  a$  [        UR
                  [        R                  5         UR                  n[        US5      (       a  M   [        US5      (       a  [	        UR
                  5      nUS:X  a%  [        UR
                  [        R                  5        OUUS:X  a%  [        UR
                  [        R                  5        O*US:X  a$  [        UR
                  [        R                  5          SSKJn	   SSKJn
   Tc   [!        [	        U R
                  5      5      m U(       Ga  [        R                  mU R)                  5        GH9  u  p[        US
5      (       a  UR*                  nO[        R                  nSU;   d  SU;   d  SU;   d  SU;   d  SU;   a  UR-                  U5        SU;   d  SU;   d  SU;   d  SU;   d  SU;   a  UR-                  U5        SU;   d  SU;   a  UR-                  U5        SU;   d  SU;   a  UR-                  U5        UR/                  S5      (       a"  [        US5      (       a  UR-                  U5        SU;   a  UR-                  U5        [        R0                  R3                  5         GM<     U R5                  5        H  u  p[        US
5      (       a,  UR6                  R-                  UR*                  5      Ul        MB  UR&                  [        R                  :X  d  Mb  UR6                  R-                  [        R                  5      Ul        M     U R9                  5        H  u  p[        US
5      (       a,  UR6                  R-                  UR*                  5      Ul        MB  UR&                  [        R                  :X  d  Mb  UR6                  R-                  [        R                  5      Ul        M       U R)                  5        H3  u  p[        US
5      (       d  M  UR-                  UR*                  5        M5      UU4S jmU n[        US5      (       a`  [        US5      (       a  [;        UST5        [        US5      (       a  T" UR
                  5        UR                  n[        US5      (       a  M`   [        US5      (       a  T" UR
                  5        [        US5      (       a  [;        UST5         [=        5         U R)                  5        GH  u  p[?        XU
45      (       a  UR$                  n[        US5      (       d  [A        SU S35        MF  URB                  n[        US
5      (       a  UR*                  nOTn[        U5      [D        L a  XR$                  RB                  S '   OUUl         [        US!5      (       a  Xl#         U(       a  UR/                  S"5      (       d  [        US#5      (       a  [        US#5      (       a[  URH                  R&                  T:w  aA  URH                  R-                  T5      Ul$        URJ                  R-                  T5      Ul%        Ok[        US$5      (       aZ  URL                  R&                  T:w  a@  URL                  R-                  T5      Ul&        URN                  R-                  T5      Ul'         GM      U(       d  X4$ S%n U R#                  5       n[        U5      [        RP                  RR                  L nUR$                  nU RU                  5       R$                  nURY                  5       URY                  5       :H  =(       d    U R
                  RZ                  nU(       Ga  UGb  []        U5      UR^                  S   :  Ga  UR`                  nURc                  S%5        URe                  []        U5      UR^                  S&   5        URc                  U5        U n[        US5      (       a  [        US5      (       a  [        UR
                  S'5      (       a&  UR
                  Rg                  S'[]        U5      05        UR
                  Rg                  S(S)05        UR                  n[        US5      (       a  [        US5      (       a  M  [        US5      (       ao  [        US5      (       a^  [        UR
                  S'5      (       a&  UR
                  Rg                  S'[]        U5      05        UR
                  Rg                  S(S)05          U(       aL  U Ri                  [        RP                  RR                  Rk                  U[m        U R
                  S*S 5      S+95         URo                  5       S:w  a  UR`                  n[        RP                  Rq                  S&S&S S,9nU?U(       d  UOUUl        UR$                  R^                  S&   Ul9        UR$                  R^                  S   Ul:        UR$                  Rc                  U5        U Rw                  U5        [        U S5      (       a  UU l<         U(       a  U R{                  5         [}        U 5      u  nnU(       a  UR~                   H  n[        U5        M      [        S-5       H1  nUR                  5         [        R0                  R3                  5         M3     X4$ !   [        S5      e= f!   [        S	5      e= f!   U R#                  5       R$                  R&                  m G	N= f!    GN= f!    GNJ= f!   X4s $ = f!   [        RV                  " S5      n GN&= f).Nr   rj   rY   float32bfloat16float16)
Linear4bitzCUnsloth: Please install bitsandbytes via `pip install bitsandbytes`z3Unsloth: Please install peft via `pip install peft`_pre_set_compute_dtype	down_projup_proj	gate_projfc1fc2q_projk_projv_projo_projout_projlm_headembed_tokenspatch_embeddingnormweightbiasc                    > [        U S5      (       d  g U R                  5       nUR                  5        H1  u  p#US:X  d  US:X  a  [        XT5        M  T" [	        XS 5      5        M3     g )Nr   torch_dtypedtype)r"   r   itemsr   r   )rY   dictskeyvalue__fix_dtypecorrect_dtypes       r'   r   .patch_model_and_tokenizer.<locals>.__fix_dtyper  sW    vy))6 ++-JCm#sg~]3GF67	 (r5   r   quant_statez	Skipping z: no quant_state found   compute_dtype
rotary_emb
cos_cachedshort_cos_cachedFr   
vocab_sizeunsloth_optimizedTpad_token_id)padding_idx)r      )CrR   rS   gcr"   r   rY   r   r=   r   r   r   rj   bitsandbytes.nnr   ImportErrorpeft.tuners.lorar
   get_input_embeddingsr   r   named_modulesr   toendswithcudaempty_cachenamed_parametersdatanamed_buffersr   r   
isinstancer   r   listr   r   
sin_cachedr   short_sin_cachedr<   	Embeddingget_output_embeddingszerosdata_ptrtie_word_embeddingsrx   shaperequires_gradrequires_grad_resize_updateset_input_embeddingsfrom_pretrainedr   numelLinearin_featuresout_featuresset_output_embeddingsr   tie_weightsrn   r$   r~   rangecollect)rj   	tokenizerdowncast_ropefix_embeddingsdo_forced_float32r   r   mconfig_dtypeBnb_Linear4bitPeft_Linear4bitnamer|   setted_dtypeparambufferr   r   is_torch_embeddingold_input_embeddingold_output_embeddingis_tiedr   current_modelr   r#   rm   r&   _r   s        `                       @r'   r   r     s	    $&'& 	A
!W

1h,QXX6L)+-@5==-Y+-@5>>-Z)+-@5==-YGG !W

 	q((2i')<QXXu}})UZ')<QXXu~~)Vi')<QXXu}})UaAQB 	 	F&'8'FGM 	!//1LDv788%<<$}}d"i4&7;$;NRW[_R_chlpcp		,'48t#3x47G8W[K[_imq_q		,'D Nd$:		,'%):d)B		,'}}V$$)B)B		,'~		,'JJ""$# 2( !113KDu677"ZZ]]5+G+GH
."ZZ]]5==9
	 4 "//1LDv788$kknnV-J-JK/$kknnU]];	 2
 	 ++-6344IIf334 . 	8 	A
!W

1gG]31hQXX!6GG !W

 	q([2q'Q/ O ++-f?@@]]F6=11	$'=>? ,,Kv788%<<,K D(/;))!, %1!v//'3$t}}\::gfl>[>[v|,,""((M9$*$5$5$8$8$G!$*$5$5$8$8$G!!344((..-?*0*A*A*D*D]*S'*0*A*A*D*D]*S'S .T 	%"22  #88:"#67588;M;MM188
 !& ; ; = D D	 #++-1E1N1N1PP .LL,,  y43y>L_LeLefgLh;h+99**51##C	N4G4M4Ma4PQ**=9 mW--'-2R2R}++\::$$++\C	N,KL  '')<t(DE)//M	 mW--'-2R2R
 ='**w}h/O/O}++\::$$++\C	N,KL  '')<t(DE""HH..#%ellNDI / 	
 	 !!#q(,::((//!Qt/4N5<-BU&~~33A6&~~33A6%%m4##G,5)$$gem !!#  &OA|XXE!%(  1X




   oa_``QOPP	F!668??EEMv D 	~  25;;q> sU   m3 $n /n 1n? 5o 3Ao 4o 3n n&n<?oooo4c                  z  ^ SS K n SS KnSS KnUR                  R                  R
                  R                  nUR                  S:X  a  g U R                  " U5      nSU;   a  g UR                  S5      mUR                  S5      nSR                  U4S jU 5       5      nSnUR                  " SU5      nU(       a  [        UR                  S	5      5      OSnUR                  US
SUS-   -   U 35      nUR                  SSS	5      n[!        UR                  R                  5      nU V	s/ s H  oU;   d  M
  U	PM     n
n	[#        SSR                  S U
 5       5      -   S-   [%        5       5        [#        U[%        5       5        [&        UR                  R                  R
                  l         SS KnUR                  R*                  R,                  R.                  R0                  nUR                  S:X  a  g U R                  " U5      nSU;   a  g UR                  S5      mUR                  S5      nSR                  U4S jU 5       5      nUR                  SSS	5      nUR                  SSS	5      n[!        UR                  R*                  R,                  5      nU V	s/ s H  oU;   d  M
  U	PM     n
n	[#        SSR                  S U
 5       5      -   S-   [%        5       5        [#        U[%        5       5        [2        UR                  R*                  R,                  R.                  l        g s  sn	f !    g = fs  sn	f )Nr   unsloth_end_capturezwith disable()def
c              3   ,   >#    U  H	  oTS  v   M     g 7fr/   r0   rs   r#   spacess     r'   rt   *patch_compiled_autograd.<locals>.<genexpr>       26az6   z1return compiled_fn(inputs, sizes, scalars, hooks)z\n([ ]{1,})return compiled_fnr   zwith disable():
    zdef end_capturezdef unsloth_end_capturez-from torch._dynamo.compiled_autograd import (, c              3   $   #    U  H  ov   M     g 7fr/   r0   rr   s     r'   rt   r  )  s     D[PZ1QPZ   )unsloth_call_methodin_compiled_autograd_regionc              3   ,   >#    U  H	  oTS  v   M     g 7fr/   r0   r   s     r'   rt   r  8  r  r  z9torch._dynamo.compiled_autograd.compiled_autograd_enabledz;torch._dynamo.compiled_autograd.in_compiled_autograd_regionzdef call_methodzdef unsloth_call_methodz*from torch._dynamo.variables.misc import (c              3   $   #    U  H  ov   M     g 7fr/   r0   rr   s     r'   rt   r  C  s     AXZ!Zr  )inspectretorch._dynamo.compiled_autogradrX   compiled_autogradAutogradCompilerInstanceend_capturer6   	getsourcefindsplitjoinsearchrx   groupreplacer    r   r   r   torch._dynamo.variables.misc	variablesmiscAutogradEngineVariablecall_methodr
  )r  r  r=   r%   sourceoldmatchn	all_itemsr#   
good_itemsr   s              @r'   r   r     s     +		(	(	A	A	M	MB	{{++Vr"F6!6[[F\\$FYY2622F
=CII6?E$EKKN!A^^C#4S!a%[M#!GHF^^-/H!LF EMM334I&6Yv+!YJ6	8499D[PZD[;[	[^a	acjclmK^EMM##<<H+]]$$))@@LL 
{{++Vr"F$.[[F\\$FYY2622F^^CE	F
 ^^-/H!LF EMM++001I&6Yv+!YJ6	5		AXZAX8X	X[^	^`g`ijFYEMM  77C
= 7  7s$   *	L,7L,-8L1 	L8,L81L5c                    [        U S[        U S5      (       a  U OS 5      nUc  g[        US5      (       a  [        UR                  5      S:  a  UR                  R	                  5        VVs0 s H  u  pEXT_M	     nnnUnUR	                  5        HR  u  p U	R                  S5      n	[        R                  " SSU	5      n	[        R                  " XU5      u  pUS:  a  U
n  OMT     [        U Vs/ s H  oS-   U;   =(       d    X:H  PM     sn5      $ gs  snnf ! [         aM  n[        R                  R                  SS	5      S
:H  nU(       a  [        S[        U5       35         S nA  M  S nAff = fs  snf )N	_root_cls_checkpoint_conversion_mappingFr   ^z\(.*?\)rK   r   r   r   zUnsloth: Replace bnb issue: r   )r   r"   rx   r(  r   lstripr  subsubn	Exceptionr   r   r   r   strany)rj   current_key_name_strskip_modulesmodel_root_clskvreverse_conversion_mappingsnew_current_key_names_strpatternreplacementr   	n_replacee
do_loggingskip_keys                  r'   check_conversion_mappingsr=  K  s   UK'%Ii:j:jptuN~?@@SIvIvEwz{E{ 9G8e8e8k8k8m&n8mqt8m#&n$8!$?$E$E$G G)005 ffZ[A!#?S!Tq=03- ! %H   ~J  K  ~Jqy^'@@lhFkl  ~J  K  L  	L% 'o  ZZ^^,DcJcQ
8QAB Ks&   ,DA
D.E2
E/"AE**E/c                     Xl         g)u>   Attach the parent’s class so the child can inspect it later.N)r'  )childparent_types     r'   _mark_parentrA  o  s    !Or5   c                 @    [        U S5      (       a  [        U S5        gg)z0Remove the temporary attribute if it is present.r'  N)r"   delattr)r?  s    r'   _unmark_parentrD  t  s    uk""{# #r5   codereturnc                 H    [         R                  " U 5      R                  S   $ )z-Return the statement parsed from a one-liner.r   )astparsebody)rE  s    r'   parsed_statementrK  z  s    99T?""r5   c                   Z    \ rS rSrSr\" S5      r\" S5      rS\R                  4S jr
Srg)	WrapRecursiveCalli  _replace_with_bnb_linearzU_mark_parent(module, model._root_cls if hasattr(model, "_root_cls") else type(model))z_unmark_parent(module)nodec                 >   [        UR                  [        R                  5      (       as  [	        UR                  R
                  SS5      U R                  :X  aD  [        R                  " U R                  U// / U R                  /S9n[        R                  " X!5      $ U$ )aV  
Replace
    _, has_been_replaced = _replace_with_bnb_linear(...)
with
    try:
        _mark_parent(module,
                     model._root_cls
                     if hasattr(model, "_root_cls")
                     else type(model))
        _, has_been_replaced = _replace_with_bnb_linear(...)
    finally:
        _unmark_parent(module)
idN)rJ  handlersorelse	finalbody)r   r   rH  Callr   funcfunction_nameTrymark_statementunmark_statementcopy_location)r1   rO  wrappeds      r'   visit_AssignWrapRecursiveCall.visit_Assign  s~     tzz388,,

t48J8JJgg //6 112	G $$W33r5   r0   N)r6   r7   r8   r9   rW  rK  rY  rZ  rH  Assignr]  r:   r0   r5   r'   rM  rM    s4    .M%	;N ((@A r5   rM  rN   _unsloth_replace_with_bnb_linearr  r   (r  z4from transformers.integrations.bitsandbytes import (r	  r0  zYUnsloth: Patch for dynamic quantization failed since current_key_name_str does not exist.z2name in quantization_config.llm_int8_skip_modules
z((name in quantization_config.llm_int8_skip_modules) or (current_key_name_str in quantization_config.llm_int8_skip_modules) or (check_conversion_mappings(model, current_key_name_str, quantization_config.llm_int8_skip_modules)))
z<temp_patched>r   rA  rD  r   r   r   zGUnsloth: Could not wrap replace_with_bnb_linear but may not be an issuezIUnsloth: Could not wrap replace_with_bnb_linear but may not be an issue. z}((name in quantization_config.llm_int8_skip_modules) or (current_key_name_str in quantization_config.llm_int8_skip_modules))
z>if name == 'score':
    modules_to_not_convert.append("score")z((^\s*)(current_key_name\.append\(name\))c                     U R                  S5      nU R                  S5      nSR                  [        R                  5        Vs/ s H  o1 U 3PM
     sn5      nU U SU 3$ s  snf )Nr   r   r   )r  r  
score_code
splitlines)r"  indentationline_contentlineindented_breakpoint_codes        r'   add_score_coderi    sj    kk!n{{1~#'99Q[QfQfQh-iQhdV.DQh-i#j |nB/G.HII .js   A#)flags)FFT)TTFN)Dr=   r   r  rH  __all__compilerr	   utilsr
   r   r   r   r   r   r   r   r   rn   r~   r   r   r   r=  rA  rD  r.  stmtrK  NodeTransformerrM  r  &transformers.integrations.bitsandbytestransformersr"   integrationsr   rN  r6   r  r   r    	functionsr  r#   r   r   RuntimeErrormark_parent_errorr  
new_sourcerI  source_treevisitfix_missing_locationsunparsecompiler   r   r;  r   r-  r:  rc  r7  ri  r+  	MULTILINEr`  )r#   s   0r'   <module>r}     se  "  	 	 
 / & M M<  z	v & 2 >< 
 yt 5l !H"
$#3 #388 #
!++ !J  -
<$$113MNN++DDMMQss |88EE^^_FL--::;I%eIq1QCF):1g>OVWUXXYSZ^dSdIeI%IIq.H)HIII		)A?s!	DgiPV+vww!!^^A t

 ii
+')//<!!+.[[-
 	
,f5+0@
0R(@#F#MJ_a $F A M
 ^^"*F
.J :GJ VVG^V2<<HFFfL**C I fI>  !ZZ^^$<cBcI
]^abc^d]efg 	!s7   0KK 	K-K(B'K K L 9LL 