
    5h                    v   S SK Jr  S SKrS SK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  S SKJr  S SKJr  S SKJr  S SKJrJrJrJr  S S	KJrJr  S SKrS
SKJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'  S
SK(J)r)  \RT                  " \+5      r,Sr-\ " S S5      5       r.\ " S S5      5       r/ " S S\
5      r0 " S S5      r1g)    )annotationsN)	dataclass)Enumauto)prod)Path)BufferedWriter)IOAnySequenceMappingascii_lettersdigits   )GGUF_DEFAULT_ALIGNMENT
GGUF_MAGICGGUF_VERSIONGGMLQuantizationType
GGUFEndianGGUFValueTypeKeysRopeScalingTypePoolingType	TokenTypeExpertGatingFuncType)quant_shape_from_byte_shapez{:s}-{:05d}-of-{:05d}.ggufc                  B    \ rS rSr% S\S'   S\S'   S\S'   SrS	\S
'   Srg)
TensorInfo(   Sequence[int]shaper   dtypeintnbytesNznp.ndarray[Any, Any] | Nonetensor )__name__
__module____qualname____firstlineno____annotations__r&   __static_attributes__r'       8/home/james-whalen/llama.cpp/gguf-py/gguf/gguf_writer.pyr   r   (   s    K*.F'.r.   r   c                  8    \ rS rSr% S\S'   S\S'   SrS\S'   S	rg)
	GGUFValue0   r   valuer   typeNGGUFValueType | Nonesub_typer'   )r(   r)   r*   r+   r,   r6   r-   r'   r.   r/   r1   r1   0   s    J
%)H")r.   r1   c                  h    \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
Srg)WriterState7   r'   N)r(   r)   r*   r+   r   NO_FILEEMPTYHEADERKV_DATATI_DATAWEIGHTSr-   r'   r.   r/   r8   r8   7   s,    fGfEfFfGfGfGr.   r8   c                     \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   \R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                   S0rS\R&                  SSSS4               GSS jjrGSS jrGSS jrGSGSS jjrGSS  jrGS	S! jrGSGSS" jjrGS	S# jrGS	S$ jrGSGS
S% jjrGSS& jrGSS' jrGSS( jr GSS) jr!GSS* jr"GSS+ jr#GSS, jr$GSS- jr%GSS. jr&GSS/ jr'GSS0 jr(GSS1 jr)GSS2 jr*\+GSS3 j5       r, GS           GSS4 jjr-  GS         GSS5 jjr.GSGSS6 jjr/GSS7 jr0SS8.GSS9 jjr1GS	S: jr2GS	S; jr3GSS< jr4GS	S= jr5GSS> jr6GSS? jr7GSS@ jr8GSSA jr9GSSB jr:GSSC jr;GSSD jr<GSSE jr=GS SF jr>GS!SG jr?GS"SH jr@GS#SI jrAGS$SJ jrBGS$SK jrCGS$SL jrDGS%SM jrEGS&SN jrFGS'SO jrGGS(SP jrHGS%SQ jrIGS&SR jrJGS'SS jrKGS(ST jrLGS)SU jrMGS*SV jrNGS+SW jrOGS,SX jrPGS-SY jrQGS.SZ jrRGS/S[ jrSGS0S\ jrTGS1S] jrUGS2S^ jrVGS)S_ jrWGS*S` jrXGS+Sa jrYGS,Sb jrZGS-Sc jr[GS.Sd jr\GS/Se jr]GS0Sf jr^GS1Sg jr_GS2Sh jr`GS3Si jraGS4Sj jrbGS5Sk jrcGS6Sl jrdGS7Sm jreGS7Sn jrfGS7So jrgGS7Sp jrhGS7Sq jriGS7Sr jrjGS7Ss jrkGS7St jrlGS7Su jrmGS7Sv jrnGS8Sw jroGS7Sx jrpGS7Sy jrqGS7Sz jrrGS9S{ jrsGS:S| jrtGS;S} jruGS;S~ jrvGS<S jrwGS<S jrxGS=S jryGS>S jrzGS>S jr{GS7S jr|GS7S jr}GS7S jr~GS7S jrGS?S jrGS@S jrGS;S jrGSAS jrGSBS jrGS@S jrGS@S jrGS@S jrGS@S jrGSCS jrGSCS jrGSCS jrGS@S jrGSDS jrGSES jrGS@S jrGSCS jrGS;S jrGSCS jrGSDS jrGSCS jrGSFS jrGSFS jrGS@S jrGS@S jrGS6S jrGSCS jrGS;S jrGS@S jrGS@S jrGS@S jrGS;S jrGSDS jrGS7S jrGS7S jrGS7S jrGS7S jrGS7S jrGS7S jrGS;S jrGS;S jrGS@S jrGS@S jrGS;S jrGSGS jrGSCS jrGSHS jrGS@S jrGSIS jrGS@S jrGS@S jrGS;S jrGSDS jrGS@S jrGS@S jrGS@S jrGS@S jrGS@S jrGS;S jrGS;S jrGS;S jrGS;S jrGS;S jrGSDS jrGSJS jrGSKS jrGSLS jrGSMS jrGSNS jrGS;S jrGSOS jrGS:S jrGS:S jrGS:S jrGS:S jrGS:S jrGS:S jrGSDS jrGSDS jrGSDS jrGSDS jrGSDS jrGSPS jrGSQS jrGS:S jrGS:S jrGSRS jrGSDS jrGSDS jrGSSS jrGS;S jrGS;S jrGS;S jrGS;S jrGS;S jrGS;S jrGS@S jrGS;S jrGS;S jrGS=S jrGS=S jrGS;S jrGSDS jrGSDS jrGS;S jrGS;S jrGS;S jrGS;S jrGS;S jrGS;S jrGS;S jrGS@S jrGS;S jrGS;S jrGSTS jrGSTS jrGSTS jrGSTS jrGSDS jrGSUGSVS jjrGSGSWGS  jjr\+GSXGS j5       rGSrg(Y  
GGUFWriter@   zlist[BufferedWriter] | NonefoutPath | Nonepathz+tempfile.SpooledTemporaryFile[bytes] | None	temp_filezlist[dict[str, TensorInfo]]tensorszlist[dict[str, GGUFValue]]kv_datar8   stateBbHhIifQqd?Fr   c	                   S U l         U(       a  [        U5      OS U l        X l        X@l        [
        U l        X0l        S U l        0 /U l	        0 /U l
        XPl        X`l        Xpl        Xl        [        R!                  SR#                  U R                  [$        R&                  :X  a  SOS5      5        [(        R*                  U l        U R                  (       a  U R                  R/                  0 5        U R1                  5         g )Nz+gguf: This GGUF file is for {0} Endian onlyBigLittle)rC   r   rE   arch	endianessr   data_alignmentuse_temp_filerF   rG   rH   split_max_tensorssplit_max_sizedry_runsmall_first_shardloggerinfoformatr   BIGr8   r:   rI   appendadd_architecture)	selfrE   rX   r[   rY   r\   r]   r^   r_   s	            r/   __init__GGUFWriter.__init__U   s     	"&DJD		"4*tt!2,!2AHH^^z~~5E8
 	 !((
!!LL#r.   c                   SnSnSnSnSnS nU R                    H  nUR                  5        H  u  pU	R                  n
UR                  S5      (       a  X4nM,  UR                  S5      (       aD  Ub  US   US S S-   :w  a  [        R                  S5            g/ U
S S QUS   R                  S   P7n
[        U
5      nS	U;   a  U
S
U;   a  SOS   nX;U-  -  nXL-  nUS-  nOX+-  nX-  nM     M     US:  a  XE-  OSnUb  U* nXX<4$ )Nr   z.lora_az.lora_baz:can't measure LoRA size correctly, tensor order is unusual)r   r   r   r   r   z_exps.z.bias)rG   itemsr"   endswithr`   warningr   )rf   total_paramsshared_paramsexpert_params
expert_sumn_expert_tensorslast_lora_arG   namera   r"   sizeexpert_counts                r/   get_total_parameter_count$GGUFWriter.get_total_parameter_countp   sE   
59||G%mmo


==++#',K]]9--"*k!nSb	C.O'cd) G%* Gk!n.B.B2.F GE{t##(w$B#GL!l&:;M.J$)$!)M$3 . $: <La;O
6UV "(=L MGGr.   c                (   [        U R                  5      S:X  a  U/$ [        [        U R                  5      5       Vs/ s HH  o!R                  [        R                  UR                  US-   [        U R                  5      5      5      PMJ     sn$ s  snf Nr   )lenrG   range	with_nameSHARD_NAME_FORMATrb   stem)rf   rE   rO   s      r/   format_shard_namesGGUFWriter.format_shard_names   s{    t||!6Mglmpquq}q}m~g  Agbc077		1q5#dllJ[\]g  A  	A  As   ABNc                   U R                   [        R                  L a   U R                  b  Ub  XR                  :X  a  g U R                   [        R
                  La  [        SU R                    35      eUb  Xl        U R                  bH  U R                  5       nU Vs/ s H  n[        US5      PM     snU l        [        R                  U l         g g s  snf )N/Expected output file to be not yet opened, got wb)	rI   r8   r;   rC   rE   r:   
ValueError
print_planopen)rf   rE   	filenamesfilenames       r/   open_output_fileGGUFWriter.open_output_file   s    ::***tyy/D$,Z^bkbkZk::[000Ntzzl[\\I99 )I>GHi(h-iHDI$**DJ !Hs   Cc                >   [         R                  S5        U R                  c   eU R                  U R                  5      n[	        U5      [	        U R
                  5      :X  d   e[        XR
                  5       H\  u  p#[         R                  U S[	        U5       S[        R                  [        S UR                  5        5       5      5       35        M^     U R                  (       a3  [         R                  S5        U H  n[        U5        M     [        5         U$ )NzWriting the following files:z: n_tensors = z, total_size = c              3  8   #    U  H  oR                   v   M     g 7fNr%   .0tis     r/   	<genexpr>(GGUFWriter.print_plan.<locals>.<genexpr>   s'       qW  FV  @Bqzqz  FV   zDry run, not writing files)r`   ra   rE   r   r~   rG   ziprA   format_n_bytes_to_strsumvaluesr^   printexit)rf   r   rw   rG   s       r/   r   GGUFWriter.print_plan   s   23yy$$$++DII6	9~T\\!2222 LL9MDKK4&s7|nOJLlLlmp  qW  FM  FT  FT  FV  qW  nW  MX  LY  Z  [ : <<KK45!d "Fr.   c                   [        U R                  5      S:X  a  g [        S U R                   5       5      nU R                  c   e[        U R                  5      nU R                  R                  S [        [        U R                  5      U5       5       5        [        U R                  5       H  u  p4[        U[        R                  5      U[        R                  R                  '   [        U[        R                  5      U[        R                  R                  '   [        U[        R                  5      U[        R                  R                   '   M     g )Nr   c              3  8   #    U  H  n[        U5      v   M     g 7fr   )r~   )r   ts     r/   r   /GGUFWriter.add_shard_kv_data.<locals>.<genexpr>   s     9LqCFFLr   c              3  &   #    U  H  n0 v   M	     g 7fr   r'   )r   _s     r/   r   r      s     O(N1B(Ns   )r~   rG   r   rC   rH   extendr   	enumerater1   r   UINT16r   SplitLLM_KV_SPLIT_NOLLM_KV_SPLIT_COUNTINT32LLM_KV_SPLIT_TENSORS_COUNT)rf   total_tensorstotal_splitsrO   rH   s        r/   add_shard_kv_dataGGUFWriter.add_shard_kv_data   s    t||!9DLL99yy$$$499~Oc$,,.?(NOO#DLL1JA2;A}?S?S2TGDJJ../5>|]MaMa5bGDJJ112=F}VcViVi=jGDJJ99: 2r.   c           	        [        U R                  5      S:X  a5  U R                  S:w  d  U R                  S:w  a  [        R                  S5        U R                  U5        U R                  [        R                  La  [        SU R                   35      eU R                  c   e[        U R                  5      [        U R                  5      :X  d   e[        U R                  5      S:X  d   eU R                  5         [        U R                  U R                  U R                  5       H  u  p#nUR                  U R!                  S["        SS95        UR                  U R!                  S[$        5      5        UR                  U R!                  S	[        U5      5      5        UR                  U R!                  S	[        U5      5      5        UR'                  5         M     [        R(                  U l        g )
Nr   r   z-Model fails split requirements, not splittingz&Expected output file to be empty, got z<ITskip_pack_prefixrN   rQ   )r~   rG   r\   r]   r`   rp   r   rI   r8   r;   r   rC   rH   r   r   write_packr   r   flushr<   )rf   rE   rC   rG   rH   s        r/   write_header_to_fileGGUFWriter.write_header_to_file   si   t||!t'='='BdFYFY]^F^NNJKd#::[...Edjj\RSSyy$$$499~T\\!22224<< A%%% &)$))T\\4<<&P"D7JJtzz$
tzLMJJtzz#|45JJtzz#s7|45JJtzz#s7|45JJL 'Q !''
r.   c           
     6   U R                   [        R                  La  [        SU R                    35      eU R                  c   e[        U R                  U R                  5       H  u  p[        5       nUR                  5        HX  u  pEX0R                  U[        R                  SS9-  nX0R                  UR                  UR                  SUR                  S9-  nMZ     UR                  U5        M     U R!                  5         [        R"                  U l         g )Nz0Expected output file to contain the header, got F	add_vtypeT)r   r6   )rI   r8   r<   r   rC   r   rH   	bytearrayrn   	_pack_valr   STRINGr3   r4   r6   r   r   r=   )rf   rC   rH   kv_byteskeyvals         r/   write_kv_data_to_file GGUFWriter.write_kv_data_to_file   s    ::[///OPTPZPZ|\]]yy$$$ DLL9MD {H#MMONN30D0DPUNVVNN399chh$Y\YeYeNff , JJx  : 	

 ((
r.   c           
     \   U R                   [        R                  La  [        SU R                    35      eU R                  c   e[        U R                  U R                  5       GH.  u  p[        5       nSnUR                  5        H  u  pVX0R                  U[        R                  SS9-  n[        UR                  5      nX0R                  SU5      -  n[        U5       H*  nX0R                  SUR                  US-
  U-
     5      -  nM,     X0R                  SUR                   5      -  nX0R                  SU5      -  nU["        R%                  UR&                  U R(                  5      -  nM     UR+                  U5        UR-                  5         GM1     [        R.                  U l         g )Nz-Expected output file to contain KV data, got r   Fr   rN   rQ   r   )rI   r8   r=   r   rC   r   rG   r   rn   r   r   r   r~   r"   r   r   r#   rA   ggml_padr%   rZ   r   r   r>   )	rf   rC   rG   ti_dataoffset_tensorrw   r   n_dimsjs	            r/   write_ti_data_to_file GGUFWriter.write_ti_data_to_file   sU   ::[000LTZZLYZZyy$$$ DLL9MDkGM#MMO>>$0D0DPU>VVRXX::c622vAzz#rxx
Q/GHHG '::c28844::c=99!4!4RYY@S@S!TT , JJwJJL :  !((
r.   c                   ^ [        U4S jU R                   5       5      (       a*  [        R                  ST< SU< SUR                   35        [        X#US9U R                  S   T'   g )Nc              3  .   >#    U  H
  nTU;   v   M     g 7fr   r'   )r   rH   r   s     r/   r   +GGUFWriter.add_key_value.<locals>.<genexpr>  s     :\'sg~\   zDuplicated key name z , overwriting it with new value z	 of type )r3   r4   r6   r   )anyrH   r`   rp   rw   r1   )rf   r   r   vtyper6   s    `   r/   add_key_valueGGUFWriter.add_key_value  s]    :T\\:::NN1#8XY\X__hinisishtuv(sRQr.   c                D    U R                  X[        R                  5        g r   )r   r   UINT8rf   r   r   s      r/   	add_uint8GGUFWriter.add_uint8  s    3M$7$78r.   c                D    U R                  X[        R                  5        g r   )r   r   INT8r   s      r/   add_int8GGUFWriter.add_int8      3]%7%78r.   c                D    U R                  X[        R                  5        g r   )r   r   r   r   s      r/   
add_uint16GGUFWriter.add_uint16      3]%9%9:r.   c                D    U R                  X[        R                  5        g r   )r   r   INT16r   s      r/   	add_int16GGUFWriter.add_int16       3]%8%89r.   c                D    U R                  X[        R                  5        g r   )r   r   UINT32r   s      r/   
add_uint32GGUFWriter.add_uint32#  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   r   r   s      r/   	add_int32GGUFWriter.add_int32&  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   FLOAT32r   s      r/   add_float32GGUFWriter.add_float32)      3]%:%:;r.   c                D    U R                  X[        R                  5        g r   )r   r   UINT64r   s      r/   
add_uint64GGUFWriter.add_uint64,  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   INT64r   s      r/   	add_int64GGUFWriter.add_int64/  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   FLOAT64r   s      r/   add_float64GGUFWriter.add_float642  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   BOOLr   s      r/   add_boolGGUFWriter.add_bool5  r   r.   c                T    U(       d  g U R                  X[        R                  5        g r   )r   r   r   r   s      r/   
add_stringGGUFWriter.add_string8  s    3]%9%9:r.   c                d    [        U5      S:X  a  g U R                  X[        R                  5        g Nr   )r~   r   r   ARRAYr   s      r/   	add_arrayGGUFWriter.add_array=  s&    s8q=3]%8%89r.   c                    X-   S-
  U-  U-  $ r}   r'   )xns     r/   r   GGUFWriter.ggml_padB  s    q A%%r.   c                  ^ U R                   [        R                  La  [        SU R                    35      e[	        U4S jU R
                   5       5      (       a  [        ST< 35      eUGc  U[        R                  :X  a  [        R                  nGO
U[        R                  :X  a  [        R                  nOU[        R                  :X  a  [        R                  nOU[        R                  :X  a  [        R                  nOU[        R                   :X  a  [        R"                  nOvU[        R$                  :X  a  [        R&                  nOQU[        R(                  :X  a  [        R*                  nO,[        S5      eUnU[        R,                  :X  a  [/        X%5      n[1        U R
                  S   5      S:  a  U R2                  S:w  a&  [1        U R
                  S   5      U R2                  :  dN  U R4                  S:w  aY  [7        S U R
                  S   R9                  5        5       5      U-   U R4                  :  a  U R
                  R;                  0 5        [=        X&US9U R
                  S   T'   g )	Nr   c              3  .   >#    U  H
  nTU;   v   M     g 7fr   r'   )r   rG   rw   s     r/   r   -GGUFWriter.add_tensor_info.<locals>.<genexpr>M  s     ;l7twlr   zDuplicated tensor name zCOnly F16, F32, F64, I8, I16, I32, I64 tensors are supported for nowrj   r   c              3  8   #    U  H  oR                   v   M     g 7fr   r   r   s     r/   r   r  m  s     F,Eb		,Er   )r"   r#   r%   )rI   r8   r:   r   r   rG   npfloat16r   F16float32F32float64F64int8I8int16I16int32I32int64I64uint8r   r~   r\   r]   r   r   rd   r   )rf   rw   tensor_shapetensor_dtypetensor_nbytes	raw_dtyper#   s    `     r/   add_tensor_infoGGUFWriter.add_tensor_infoF  s    ::[000Ntzzl[\\;dll;;;6th?@@rzz),00+,00+,00(,//),00),00),00 !fggErxx':<S t||B 1$&&!+R()T-C-CC##q(FDLL,<,C,C,EFFVY]YlYll##B'!+,Ta!bRr.   c                *   U R                   [        R                  :X  a  UR                  SS9  U R                  (       a9  U R
                  c,  [        R                  " SSS9nUR                  S5        XPl        Ub  UOUR                  nU R                  XUR                  UR                  US9  U R
                  c  X R                  S   U   l        g UR                  U R
                  5        U R!                  U R
                  UR                  5        g )	NTinplacezw+bi   )modemax_sizer   )r'  rj   )rY   r   rc   byteswapr[   rF   tempfileSpooledTemporaryFileseekr"   r(  r#   r%   rG   r&   tofilewrite_padding)rf   rw   r&   	raw_shaper'  fpr"   s          r/   
add_tensorGGUFWriter.add_tensors  s     >>Z^^+OODO)$.."8..EDUVBGGAJN,5,Ayv||T&,,QZ[>>!,2LLT")dnn%4>>6==9r.   c                    [         R                  X#b  UOU R                  5      U-
  nUS:w  a  UR                  [	        S/U-  5      5        g g r  )rA   r   rZ   r   bytes)rf   r6  r  alignpads        r/   r4  GGUFWriter.write_padding  sH    !!!.?UTEXEXY\]]!8HHUA39%& r.   c                t   U R                   [        R                  La5  U R                   [        R                  La  [	        SU R                    35      eU R
                  c   eU R                  [        R                  :X  a  UR                  SS9  Sn[        U R                  5       H  u  p4[        U5      S:  d  M  Un  O   U R
                  U   n[        U R                  U   R                  5       [        S5      5       VVs/ s H  u  pgUPM	     snnS   nU R                  U   R!                  U5      n	U	R"                  UR"                  :X  d   eU R%                  XUR'                  5       5        UR)                  U5        U R%                  XQR"                  5        [        R                  U l         g s  snnf )Nz<Expected output file to contain tensor info or weights, got Tr+  rj   r   r   )rI   r8   r>   r?   r   rC   rY   r   rc   r/  r   rG   r~   r   keysr   popr%   r4  tellr3  )
rf   r&   file_idrO   rG   rC   rw   r   first_tensor_namer   s
             r/   write_tensor_dataGGUFWriter.write_tensor_data  sb   ::[000TZZ{GZGZ5Z[\`\f\f[ghiiyy$$$>>Z^^+OODO)#DLL1JA7|a 2
 yy! 25T\\'5J5O5O5QSXYZS[1\]1\gdT1\]^_`\\'"&&'89yyFMM)))4-d4/ ((
 ^s   F4)progressc          	        U R                  5         U R                  c   eU R                   H"  nU R                  X"R                  5       5        M$     U R                  Gc  S nS nU(       ad  SSKJn  [        S U R                   5       5      n[        U R                  5      S:  a   U" S[        U R                  5       S3S SSS	9nU" S
USSS	9n[        [        U R                  U R                  5      5       GH6  u  nu  p(Ube  UR                  SUS-    S[        U R                  5       S35        [        S UR                  5        5       5      n	UR                  U	S:  a  U	OS S9  UR                  5        H  n
U
R                  c   eU
R                  R                  U
R                  :X  d   eU
R                  R!                  U5        Ub  UR#                  U
R                  5        Ub  UR#                  U
R                  5        U R                  X*R                  5        S U
l        M     GM9     OU R                  R%                  S5        [&        R(                  " U R                  U R                  U R*                  (       d  SOS   5        U R-                  5         U R                  R/                  5         [0        R2                  U l        g )Nr   )tqdmc              3  f   #    U  H'  oR                  5         H  o"R                  v   M     M)     g 7fr   )r   r%   )r   r   r   s      r/   r   3GGUFWriter.write_tensors_to_file.<locals>.<genexpr>  s     !W\HHJb))J)\s   /1r   z	Shard (0/)byteT)desctotalunit
unit_scaleWritingzShard (/c              3  8   #    U  H  oR                   v   M     g 7fr   r   r   s     r/   r   rJ    s     E4Db		4Dr   )rN  )r   rC   r4  rA  rF   rH  r   rG   r~   r   r   set_descriptionr   resetr&   r%   r3  updater2  shutilcopyfileobjr_   r   closer8   r?   rI   )rf   rF  rC   	shard_barbarrH  total_bytesrO   rG   rN  r   s              r/   write_tensors_to_file GGUFWriter.write_tensors_to_file  s1   ""$yy$$$IIDtYY[1  >>!IC%!!WT\\!WWtyy>A% $Ic$))n5EQ*GtZ`mq rI	6VZ[&/DIIt||0L&M"?D(--AwaDII?Oq.QREGNN4DEEEOOEAI54OI "..*B9900099++ryy888II$$T* ,!((3

299-&&tYY7 $BI + 'N$ NN"t~~tyy$BXBX^_/`aJJLNN  " ((
r.   c                h    U R                   c   eU R                    H  nUR                  5         M     g r   )rC   r   rf   rC   s     r/   r   GGUFWriter.flush  s)    yy$$$IIDJJL r.   c                t    U R                   b+  U R                    H  nUR                  5         M     S U l         g g r   )rC   rY  r`  s     r/   rY  GGUFWriter.close  s/    99 		

 "DI !r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   GeneralTYPE)rf   	type_names     r/   add_typeGGUFWriter.add_type  s    ))95r.   c                l    U R                  [        R                  R                  U R                  5        g r   )r  r   re  ARCHITECTURErX   )rf   s    r/   re   GGUFWriter.add_architecture  s    11499=r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   re  QUANTIZATION_VERSION)rf   quantization_versions     r/   add_quantization_version#GGUFWriter.add_quantization_version  s    99;OPr.   c                d    Xl         U R                  [        R                  R                  U5        g r   )rZ   r   r   re  	ALIGNMENT)rf   	alignments     r/   add_custom_alignmentGGUFWriter.add_custom_alignment  s     '..	:r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   re  	FILE_TYPE)rf   ftypes     r/   add_file_typeGGUFWriter.add_file_type  s    ..6r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  NAME)rf   rw   s     r/   add_nameGGUFWriter.add_name      ))40r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  AUTHOR)rf   authors     r/   
add_authorGGUFWriter.add_author  s    ++V4r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  VERSION)rf   versions     r/   add_versionGGUFWriter.add_version      ,,g6r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  ORGANIZATION)rf   organizations     r/   add_organizationGGUFWriter.add_organization  s    11<@r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  FINETUNE)rf   finetunes     r/   add_finetuneGGUFWriter.add_finetune      --x8r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  BASENAME)rf   basenames     r/   add_basenameGGUFWriter.add_basename  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  DESCRIPTION)rf   descriptions     r/   add_descriptionGGUFWriter.add_description  s    00+>r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  QUANTIZED_BY)rf   	quantizeds     r/   add_quantized_byGGUFWriter.add_quantized_by  s    119=r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  
SIZE_LABEL)rf   
size_labels     r/   add_size_labelGGUFWriter.add_size_label  s    //<r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  LICENSErf   licenses     r/   add_licenseGGUFWriter.add_license  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  LICENSE_NAMEr  s     r/   add_license_nameGGUFWriter.add_license_name      117;r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  LICENSE_LINKr  s     r/   add_license_linkGGUFWriter.add_license_link  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  URLrf   urls     r/   add_urlGGUFWriter.add_url      ((#.r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  DOIrf   dois     r/   add_doiGGUFWriter.add_doi  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  UUIDrf   uuids     r/   add_uuidGGUFWriter.add_uuid  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  REPO_URLrf   repo_urls     r/   add_repo_urlGGUFWriter.add_repo_url   r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  
SOURCE_URLr  s     r/   add_source_urlGGUFWriter.add_source_url#      //5r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  
SOURCE_DOIr  s     r/   add_source_doiGGUFWriter.add_source_doi&  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  SOURCE_UUIDr  s     r/   add_source_uuidGGUFWriter.add_source_uuid)  s    00$7r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   re  SOURCE_REPO_URLr  s     r/   add_source_repo_urlGGUFWriter.add_source_repo_url,  s    44h?r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   re  BASE_MODEL_COUNTrf   source_counts     r/   add_base_model_countGGUFWriter.add_base_model_count/  s    55|Dr.   c                r    U R                  [        R                  R                  R	                  US9U5        g N)id)r  r   re  BASE_MODEL_NAMErb   rf   	source_idrw   s      r/   add_base_model_nameGGUFWriter.add_base_model_name2  (    44;;y;I4Pr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_AUTHORrb   rf   r  r  s      r/   add_base_model_author GGUFWriter.add_base_model_author5  s(    66===KVTr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_VERSIONrb   rf   r  r  s      r/   add_base_model_version!GGUFWriter.add_base_model_version8  s(    77>>)>LgVr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_ORGANIZATIONrb   rf   r  r  s      r/   add_base_model_organization&GGUFWriter.add_base_model_organization;  s)    <<CCyCQS_`r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_DESCRIPTIONrb   rf   r  r  s      r/   add_base_model_description%GGUFWriter.add_base_model_description>  s)    ;;BBiBPR]^r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_URLrb   rf   r  r  s      r/   add_base_model_urlGGUFWriter.add_base_model_urlA  (    33::i:H#Nr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_DOIrb   rf   r  r  s      r/   add_base_model_doiGGUFWriter.add_base_model_doiD  r  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_UUIDrb   rf   r  r  s      r/   add_base_model_uuidGGUFWriter.add_base_model_uuidG  r  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  BASE_MODEL_REPO_URLrb   rf   r  r  s      r/   add_base_model_repo_url"GGUFWriter.add_base_model_repo_urlJ  s(    88??9?MxXr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   re  DATASET_COUNTr  s     r/   add_dataset_countGGUFWriter.add_dataset_countM  s    22LAr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_NAMErb   r  s      r/   add_dataset_nameGGUFWriter.add_dataset_nameP  (    1188I8FMr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_AUTHORrb   r  s      r/   add_dataset_authorGGUFWriter.add_dataset_authorS  s(    33::i:H&Qr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_VERSIONrb   r  s      r/   add_dataset_versionGGUFWriter.add_dataset_versionV  s(    44;;y;I7Sr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_ORGANIZATIONrb   r  s      r/   add_dataset_organization#GGUFWriter.add_dataset_organizationY  s)    99@@I@NP\]r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_DESCRIPTIONrb   r  s      r/   add_dataset_description"GGUFWriter.add_dataset_description\  s(    88??9?M{[r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_URLrb   r	  s      r/   add_dataset_urlGGUFWriter.add_dataset_url_  (    007797EsKr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_DOIrb   r  s      r/   add_dataset_doiGGUFWriter.add_dataset_doib  r9  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_UUIDrb   r  s      r/   add_dataset_uuidGGUFWriter.add_dataset_uuide  r$  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   re  DATASET_REPO_URLrb   r  s      r/   add_dataset_repo_urlGGUFWriter.add_dataset_repo_urlh  s(    55<<	<JHUr.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   re  TAGS)rf   tagss     r/   add_tagsGGUFWriter.add_tagsk  s    t||(($/r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   re  	LANGUAGES)rf   	languagess     r/   add_languagesGGUFWriter.add_languagesn  s    t||--y9r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g N)rX   )r  r   LLMTENSOR_DATA_LAYOUTrb   rX   )rf   layouts     r/   add_tensor_data_layout!GGUFWriter.add_tensor_data_layoutq  s,    33::		:JFSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  
VOCAB_SIZErb   rX   rf   rx   s     r/   add_vocab_sizeGGUFWriter.add_vocab_sizet  s,    ++22		2BDIr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  CONTEXT_LENGTHrb   rX   rf   lengths     r/   add_context_lengthGGUFWriter.add_context_lengthw  s,    //66DII6FOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EMBEDDING_LENGTHrb   rX   r^  s     r/   add_embedding_lengthGGUFWriter.add_embedding_lengthz  s,    1188dii8H&Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  FEATURES_LENGTHrb   rX   r^  s     r/   add_features_lengthGGUFWriter.add_features_length}  s,    0077TYY7GPr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   PosNetrc  rb   rX   r^  s     r/   add_posnet_embedding_length&GGUFWriter.add_posnet_embedding_length  s,    44;;;KVTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rk  BLOCK_COUNTrb   rX   r^  s     r/   add_posnet_block_count!GGUFWriter.add_posnet_block_count  s,    //66DII6FOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   ConvNextrc  rb   rX   r^  s     r/   add_convnext_embedding_length(GGUFWriter.add_convnext_embedding_length  s,    66==499=MvVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rs  ro  rb   rX   r^  s     r/   add_convnext_block_count#GGUFWriter.add_convnext_block_count  s,    1188dii8H&Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   	ShortConvL_CACHErb   rX   r^  s     r/   add_shortconv_l_cache GGUFWriter.add_shortconv_l_cache  s,    ..554995EvNr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  ro  rb   rX   r^  s     r/   add_block_countGGUFWriter.add_block_count  s,    ,,333CVLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  LEADING_DENSE_BLOCK_COUNTrb   rX   r^  s     r/   add_leading_dense_block_count(GGUFWriter.add_leading_dense_block_count  s-    ::AAtyyAQSYZr.   c                4   [        U[        5      (       aB  U R                  [        R                  R
                  R                  U R                  S9U5        g U R                  [        R                  R
                  R                  U R                  S9U5        g rQ  )	
isinstancer$   r   r   rR  FEED_FORWARD_LENGTHrb   rX   r
  r^  s     r/   add_feed_forward_length"GGUFWriter.add_feed_forward_length  se    fc""OODHH88??TYY?OQWXNN48877>>DII>NPVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EXPERT_FEED_FORWARD_LENGTHrb   rX   r^  s     r/   add_expert_feed_forward_length)GGUFWriter.add_expert_feed_forward_length  s-    ;;BB		BRTZ[r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  !EXPERT_SHARED_FEED_FORWARD_LENGTHrb   rX   r^  s     r/   %add_expert_shared_feed_forward_length0GGUFWriter.add_expert_shared_feed_forward_length  s-    BBIItyyIY[abr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR   EXPERT_CHUNK_FEED_FORWARD_LENGTHrb   rX   r^  s     r/   $add_expert_chunk_feed_forward_length/GGUFWriter.add_expert_chunk_feed_forward_length  s-    AAHHdiiHXZ`ar.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r  r   rR  USE_PARALLEL_RESIDUALrb   rX   )rf   uses     r/   add_parallel_residual GGUFWriter.add_parallel_residual  s,    dhh44;;;KSQr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  DECODER_START_TOKEN_IDrb   rX   rf   r  s     r/   add_decoder_start_token_id%GGUFWriter.add_decoder_start_token_id  s-    77>>DII>NPRSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  DECODER_BLOCK_COUNTrb   rX   rf   r3   s     r/   add_decoder_block_count"GGUFWriter.add_decoder_block_count  ,    44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EMBD_LENGTH_PER_LAYER_INPrb   rX   r  s     r/   $add_embedding_length_per_layer_input/GGUFWriter.add_embedding_length_per_layer_input  -    ::AAtyyAQSXYr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  ALTUP_ACTIVE_IDXrb   rX   rf   r   s     r/   add_altup_active_idxGGUFWriter.add_altup_active_idx  ,    1188dii8H#Nr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  ALTUP_NUM_INPUTSrb   rX   r  s     r/   add_altup_num_inputsGGUFWriter.add_altup_num_inputs  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r
  r   rR  ACTIVATION_SPARSITY_SCALErb   rX   rf   r   s     r/   add_activation_sparsity_scale(GGUFWriter.add_activation_sparsity_scale  s-    txx99@@dii@PRXYr.   c                4   [        U[        5      (       aB  U R                  [        R                  R
                  R                  U R                  S9U5        g U R                  [        R                  R
                  R                  U R                  S9U5        g rQ  )	r  r$   r   r   	Attention
HEAD_COUNTrb   rX   r
  rf   counts     r/   add_head_countGGUFWriter.add_head_count  sc    eS!!OODNN55<<$))<LeTNN4>>44;;;KUSr.   c                4   [        U[        5      (       aB  U R                  [        R                  R
                  R                  U R                  S9U5        g U R                  [        R                  R
                  R                  U R                  S9U5        g rQ  )	r  r$   r   r   r  HEAD_COUNT_KVrb   rX   r
  r  s     r/   add_head_count_kvGGUFWriter.add_head_count_kv  se    eS!!OODNN88??TYY?OQVWNN4>>77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  
KEY_LENGTHrb   rX   r^  s     r/   add_key_lengthGGUFWriter.add_key_length  s,    1188dii8H&Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  VALUE_LENGTHrb   rX   r^  s     r/   add_value_lengthGGUFWriter.add_value_length  ,    33::		:JFSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  KEY_LENGTH_MLArb   rX   r^  s     r/   add_key_length_mlaGGUFWriter.add_key_length_mla  ,    55<<$))<LfUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  VALUE_LENGTH_MLArb   rX   r^  s     r/   add_value_length_mlaGGUFWriter.add_value_length_mla  s-    77>>DII>NPVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  MAX_ALIBI_BIASrb   rX   )rf   biass     r/   add_max_alibi_biasGGUFWriter.add_max_alibi_bias  s.    66==499=MtTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  	CLAMP_KQVrb   rX   r  s     r/   add_clamp_kqvGGUFWriter.add_clamp_kqv  s.    1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SHARED_KV_LAYERSrb   rX   r  s     r/   add_shared_kv_layersGGUFWriter.add_shared_kv_layers  -    77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r
  r   r  SLIDING_WINDOW_PATTERNrb   rX   r  s     r/   add_sliding_window_pattern%GGUFWriter.add_sliding_window_pattern  s-    t~~<<CCCSUZ[r.   c                   U R                  [        R                  R                  R	                  U R
                  US9U5        U R                  [        R                  R                  R	                  U R
                  US9U5        g )N)rX   dense)r   r   rR  DENSE_FEAT_IN_SIZErb   rX   DENSE_FEAT_OUT_SIZE)rf   r  in_fout_fs       r/   add_dense_features_dims"GGUFWriter.add_dense_features_dims  s^    33::		QV:WY]^44;;RW;XZ_`r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  LOGIT_SCALErb   rX   r  s     r/   add_logit_scaleGGUFWriter.add_logit_scale  s.    --44$))4DeLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  ATTN_LOGIT_SOFTCAPPINGrb   rX   r  s     r/   add_attn_logit_softcapping%GGUFWriter.add_attn_logit_softcapping  s/    88??TYY?OQVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  ROUTER_LOGIT_SOFTCAPPINGrb   rX   r  s     r/   add_router_logit_softcapping'GGUFWriter.add_router_logit_softcapping  s/    ::AAtyyAQSXYr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  FINAL_LOGIT_SOFTCAPPINGrb   rX   r  s     r/   add_final_logit_softcapping&GGUFWriter.add_final_logit_softcapping  s/    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EXPERT_COUNTrb   rX   r  s     r/   add_expert_countGGUFWriter.add_expert_count  s,    --44$))4DeLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EXPERT_USED_COUNTrb   rX   r  s     r/   add_expert_used_count GGUFWriter.add_expert_used_count  ,    2299tyy9I5Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EXPERT_SHARED_COUNTrb   rX   r  s     r/   add_expert_shared_count"GGUFWriter.add_expert_shared_count  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EXPERT_WEIGHTS_SCALErb   rX   r  s     r/   add_expert_weights_scale#GGUFWriter.add_expert_weights_scale  s.    66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r  r   rR  EXPERT_WEIGHTS_NORMrb   rX   r  s     r/   add_expert_weights_norm"GGUFWriter.add_expert_weights_norm  s,    dhh2299tyy9I5Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9UR                  5        g rQ  )r   r   rR  EXPERT_GATING_FUNCrb   rX   r3   r  s     r/   add_expert_gating_func!GGUFWriter.add_expert_gating_func  s0    33::		:JEKKXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EXPERT_GROUP_SCALErb   rX   r  s     r/   add_expert_group_scale!GGUFWriter.add_expert_group_scale  s.    44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EXPERTS_PER_GROUPrb   rX   r  s     r/   add_experts_per_group GGUFWriter.add_experts_per_group  r	  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  MOE_EVERY_N_LAYERSrb   rX   r  s     r/   add_moe_every_n_layers!GGUFWriter.add_moe_every_n_layers  s,    33::		:JERr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  NEXTN_PREDICT_LAYERSrb   rX   r  s     r/   add_nextn_predict_layers#GGUFWriter.add_nextn_predict_layers  s,    55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r  r   rR  	SWIN_NORMrb   rX   r  s     r/   add_swin_normGGUFWriter.add_swin_norm  s,    dhh((//TYY/?Gr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  RESCALE_EVERY_N_LAYERSrb   rX   r  s     r/   add_rescale_every_n_layers%GGUFWriter.add_rescale_every_n_layers  s-    77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  TIME_MIX_EXTRA_DIMrb   rX   rf   dims     r/   add_time_mix_extra_dim!GGUFWriter.add_time_mix_extra_dim  s,    33::		:JCPr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  TIME_DECAY_EXTRA_DIMrb   rX   r4  s     r/   add_time_decay_extra_dim#GGUFWriter.add_time_decay_extra_dim  s,    55<<$))<LcRr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  RESIDUAL_SCALErb   rX   r  s     r/   add_residual_scaleGGUFWriter.add_residual_scale  s.    0077TYY7GOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  EMBEDDING_SCALErb   rX   r  s     r/   add_embedding_scaleGGUFWriter.add_embedding_scale  s.    1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   WKV	HEAD_SIZErb   rX   rY  s     r/   add_wkv_head_sizeGGUFWriter.add_wkv_head_size  s,    **11tyy1A4Hr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  TOKEN_SHIFT_COUNTrb   rX   r  s     r/   add_token_shift_count GGUFWriter.add_token_shift_count   r	  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   rR  INTERLEAVE_MOE_LAYER_STEPrb   rX   r  s     r/   add_interleave_moe_layer_step(GGUFWriter.add_interleave_moe_layer_step#  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  LAYERNORM_EPSrb   rX   r  s     r/   add_layer_norm_epsGGUFWriter.add_layer_norm_eps&  .    55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  LAYERNORM_RMS_EPSrb   rX   r  s     r/   add_layer_norm_rms_eps!GGUFWriter.add_layer_norm_rms_eps)  s/    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  GROUPNORM_EPSrb   rX   r  s     r/   add_group_norm_epsGGUFWriter.add_group_norm_eps,  rU  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  GROUPNORM_GROUPSrb   rX   r  s     r/   add_group_norm_groups GGUFWriter.add_group_norm_groups/  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r  r   r  CAUSALrb   rX   r  s     r/   add_causal_attentionGGUFWriter.add_causal_attention2  s,    dnn++22		2BEJr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  Q_LORA_RANKrb   rX   r^  s     r/   add_q_lora_rankGGUFWriter.add_q_lora_rank5  s,    2299tyy9I6Rr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  KV_LORA_RANKrb   rX   r^  s     r/   add_kv_lora_rankGGUFWriter.add_kv_lora_rank8  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  DECAY_LORA_RANKrb   rX   r^  s     r/   add_decay_lora_rankGGUFWriter.add_decay_lora_rank;  s,    66==499=MvVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  ICLR_LORA_RANKrb   rX   r^  s     r/   add_iclr_lora_rankGGUFWriter.add_iclr_lora_rank>  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  VALUE_RESIDUAL_MIX_LORA_RANKrb   rX   r^  s     r/    add_value_residual_mix_lora_rank+GGUFWriter.add_value_residual_mix_lora_rankA  s0    CCJJPTPYPYJZ\bcr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  GATE_LORA_RANKrb   rX   r^  s     r/   add_gate_lora_rankGGUFWriter.add_gate_lora_rankD  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  REL_BUCKETS_COUNTrb   rX   r  s     r/   add_relative_attn_buckets_count*GGUFWriter.add_relative_attn_buckets_countG  s-    88??TYY?OQVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SLIDING_WINDOWrb   rX   r  s     r/   add_sliding_windowGGUFWriter.add_sliding_windowJ  s,    55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALErb   rX   r  s     r/   add_attention_scaleGGUFWriter.add_attention_scaleM  s.    --44$))4DeLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  OUTPUT_SCALErb   rX   r  s     r/   add_attn_output_scale GGUFWriter.add_attn_output_scaleP  s.    44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  TEMPERATURE_LENGTHrb   rX   r  s     r/   add_attn_temperature_length&GGUFWriter.add_attn_temperature_lengthS  s-    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9UR                  5        g rQ  )r   r   rR  POOLING_TYPErb   rX   r3   r  s     r/   add_pooling_typeGGUFWriter.add_pooling_typeV  s0    --44$))4DekkRr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   RopeDIMENSION_COUNTrb   rX   r  s     r/   add_rope_dimension_count#GGUFWriter.add_rope_dimension_countY  s,    		1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r
  r   r  DIMENSION_SECTIONSrb   rX   )rf   dimss     r/   add_rope_dimension_sections&GGUFWriter.add_rope_dimension_sections\  s,    tyy33::		:JDQr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  	FREQ_BASErb   rX   r  s     r/   add_rope_freq_baseGGUFWriter.add_rope_freq_base_  s.    ,,333CUKr.   c                    U R                  [        R                  R                  R	                  U R
                  S9UR                  5        g rQ  )r  r   r  SCALING_TYPErb   rX   r3   r  s     r/   add_rope_scaling_type GGUFWriter.add_rope_scaling_typeb  s0    		..554995Eu{{Sr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_FACTORrb   rX   r  s     r/   add_rope_scaling_factor"GGUFWriter.add_rope_scaling_factore  s.    1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_ATTN_FACTORrb   rX   r  s     r/   add_rope_scaling_attn_factors(GGUFWriter.add_rope_scaling_attn_factorsh  s.    66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_ORIG_CTX_LENrb   rX   r  s     r/   add_rope_scaling_orig_ctx_len(GGUFWriter.add_rope_scaling_orig_ctx_lenk  s,    		66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r  r   r  SCALING_FINETUNEDrb   rX   r  s     r/   add_rope_scaling_finetuned%GGUFWriter.add_rope_scaling_finetunedn  s,    dii1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_YARN_LOG_MULrb   rX   r  s     r/   add_rope_scaling_yarn_log_mul(GGUFWriter.add_rope_scaling_yarn_log_mulq  s/    77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_YARN_EXT_FACTORrb   rX   r  s     r/    add_rope_scaling_yarn_ext_factor+GGUFWriter.add_rope_scaling_yarn_ext_factort  s/    ::AAtyyAQSXYr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_YARN_ATTN_FACTORrb   rX   r  s     r/   !add_rope_scaling_yarn_attn_factor,GGUFWriter.add_rope_scaling_yarn_attn_factorw  s/    ;;BB		BRTYZr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_YARN_BETA_FASTrb   rX   r  s     r/   add_rope_scaling_yarn_beta_fast*GGUFWriter.add_rope_scaling_yarn_beta_fastz  /    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  SCALING_YARN_BETA_SLOWrb   rX   r  s     r/   add_rope_scaling_yarn_beta_slow*GGUFWriter.add_rope_scaling_yarn_beta_slow}  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   SSMCONV_KERNELrb   rX   r  s     r/   add_ssm_conv_kernelGGUFWriter.add_ssm_conv_kernel  ,    ,,333CUKr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  
INNER_SIZErb   rX   r  s     r/   add_ssm_inner_sizeGGUFWriter.add_ssm_inner_size  ,    ++22		2BEJr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  
STATE_SIZErb   rX   r  s     r/   add_ssm_state_sizeGGUFWriter.add_ssm_state_size  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  TIME_STEP_RANKrb   rX   r  s     r/   add_ssm_time_step_rank!GGUFWriter.add_ssm_time_step_rank  s,    //66DII6FNr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r   r   r  GROUP_COUNTrb   rX   r  s     r/   add_ssm_group_countGGUFWriter.add_ssm_group_count  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r  r   r  
DT_B_C_RMSrb   rX   r  s     r/   add_ssm_dt_b_c_rmsGGUFWriter.add_ssm_dt_b_c_rms  s,    dhh))00dii0@%Hr.   c                X    U R                  [        R                  R                  U5        g r   )r  r   	TokenizerMODEL)rf   models     r/   add_tokenizer_modelGGUFWriter.add_tokenizer_model  s    ,,e4r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  PRE)rf   pres     r/   add_tokenizer_preGGUFWriter.add_tokenizer_pre  s    **C0r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  LIST)rf   tokenss     r/   add_token_listGGUFWriter.add_token_list  s    t~~**F3r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  MERGES)rf   mergess     r/   add_token_mergesGGUFWriter.add_token_merges      t~~,,f5r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  
TOKEN_TYPE)rf   typess     r/   add_token_typesGGUFWriter.add_token_types  s    t~~00%8r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  TOKEN_TYPE_COUNTr  s     r/   add_token_type_countGGUFWriter.add_token_type_count      77?r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  SCORES)rf   scoress     r/   add_token_scoresGGUFWriter.add_token_scores  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  BOS_IDr  s     r/   add_bos_token_idGGUFWriter.add_bos_token_id      --r2r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  EOS_IDr  s     r/   add_eos_token_idGGUFWriter.add_eos_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  UNK_IDr  s     r/   add_unk_token_idGGUFWriter.add_unk_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  SEP_IDr  s     r/   add_sep_token_idGGUFWriter.add_sep_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  PAD_IDr  s     r/   add_pad_token_idGGUFWriter.add_pad_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  MASK_IDr  s     r/   add_mask_token_idGGUFWriter.add_mask_token_id  s    ..3r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  ADD_BOSr  s     r/   add_add_bos_tokenGGUFWriter.add_add_bos_token      dnn,,e4r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  ADD_EOSr  s     r/   add_add_eos_tokenGGUFWriter.add_add_eos_token  r*  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  ADD_SEPr  s     r/   add_add_sep_tokenGGUFWriter.add_add_sep_token  r*  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  
ADD_PREFIXr  s     r/   add_add_space_prefixGGUFWriter.add_add_space_prefix  s    dnn//7r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  REMOVE_EXTRA_WSr  s     r/   add_remove_extra_whitespaces'GGUFWriter.add_remove_extra_whitespaces  s    dnn44e<r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  PRECOMPILED_CHARSMAP)rf   charsmaps     r/   add_precompiled_charsmap#GGUFWriter.add_precompiled_charsmap  s    t~~::HEr.   c                b   [        U[        5      (       d  S n[        5       nU H  nUR                  SS5      nUR                  S5      nSR	                  S U 5       5      nU(       d  MG  Uc  ML  US:X  a  UnMV  UR                  U5        U R                  [        R                  R                  R                  US9U5        M     U(       a3  U R                  [        R                  R                  [        U5      5        Uc  g UnU R                  [        R                  R                  U5        g )Nrw    templatec              3  J   #    U  H  o[         [        -   ;   a  UOS v   M     g7f)r   Nr   )r   cs     r/   r   /GGUFWriter.add_chat_template.<locals>.<genexpr>  s!     XSWa-&*@%@c ISWs   !#default)rw   )r  strsetgetjoinaddr  r   r  CHAT_TEMPLATE_Nrb   r
  CHAT_TEMPLATESlistCHAT_TEMPLATE)rf   r3   template_defaulttemplate_nameschoicerw   rB  s          r/   add_chat_templateGGUFWriter.add_chat_template  s    %%%# UNzz&"-!::j1 wwXSWXY4H0y(+3(&**40(F(F(M(MSW(M(XZbc   t~~<<d>>RS'$E44e<r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  EOT_IDr  s     r/   add_eot_token_idGGUFWriter.add_eot_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  EOM_IDr  s     r/   add_eom_token_idGGUFWriter.add_eom_token_id  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rQ  )r
  r   
ClassifierOUTPUT_LABELSrb   rX   )rf   labelss     r/   add_classifier_output_labels'GGUFWriter.add_classifier_output_labels  s,    t44;;;KVTr.   c                X    U R                  [        R                  R                  U5        g r   )r  r   ClipHAS_VISION_ENCODERr  s     r/   add_clip_has_vision_encoder&GGUFWriter.add_clip_has_vision_encoder  s    dii22E:r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  HAS_AUDIO_ENCODERr  s     r/   add_clip_has_audio_encoder%GGUFWriter.add_clip_has_audio_encoder  s    dii1159r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  PROJECTOR_TYPEr  s     r/   add_clip_projector_type"GGUFWriter.add_clip_projector_type  s    		00%8r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   
ClipVisionPROJECTION_DIMr  s     r/   add_vision_projection_dim$GGUFWriter.add_vision_projection_dim  s    66>r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  
PATCH_SIZEr  s     r/   add_vision_patch_size GGUFWriter.add_vision_patch_size      22E:r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  rc  r  s     r/   add_vision_embedding_length&GGUFWriter.add_vision_embedding_length  s    88%@r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  r  r  s     r/   add_vision_feed_forward_length)GGUFWriter.add_vision_feed_forward_length  s    ;;UCr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  ro  r  s     r/   add_vision_block_count!GGUFWriter.add_vision_block_count  s    33U;r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rq  r  r  r  s     r/   add_vision_head_count GGUFWriter.add_vision_head_count  s     11<<eDr.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rq  r  rR  r  s     r/   "add_vision_attention_layernorm_eps-GGUFWriter.add_vision_attention_layernorm_eps  s"    22@@%Hr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  
IMAGE_SIZEr  s     r/   add_vision_image_size GGUFWriter.add_vision_image_size  ry  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  PREPROC_IMAGE_SIZEr  s     r/   add_vision_preproc_image_size(GGUFWriter.add_vision_preproc_image_size      ::EBr.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   rq  
IMAGE_MEANr  s     r/   add_vision_image_mean GGUFWriter.add_vision_image_mean  s    t116:r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   rq  	IMAGE_STDr  s     r/   add_vision_image_stdGGUFWriter.add_vision_image_std  s    t00&9r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  SPATIAL_MERGE_SIZEr  s     r/   add_vision_spatial_merge_size(GGUFWriter.add_vision_spatial_merge_size  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rq  USE_GELUr  s     r/   add_vision_use_geluGGUFWriter.add_vision_use_gelu       doo..6r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rq  USE_SILUr  s     r/   add_vision_use_siluGGUFWriter.add_vision_use_silu#  r  r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rq  	ProjectorSCALE_FACTORr  s     r/   !add_vision_projector_scale_factor,GGUFWriter.add_vision_projector_scale_factor&  s     11>>Fr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rq  N_WA_PATTERNr  s     r/   add_vision_n_wa_pattern"GGUFWriter.add_vision_n_wa_pattern)  s    44e<r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   	ClipAudiorr  r  s     r/   add_audio_projection_dim#GGUFWriter.add_audio_projection_dim.  s    55u=r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  rc  r  s     r/   add_audio_embedding_length%GGUFWriter.add_audio_embedding_length1  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  r  r  s     r/   add_audio_feed_forward_length(GGUFWriter.add_audio_feed_forward_length4  s    ::EBr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  ro  r  s     r/   add_audio_block_count GGUFWriter.add_audio_block_count7  s    22E:r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  r  r  r  s     r/   add_audio_head_countGGUFWriter.add_audio_head_count:  s     00;;UCr.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  r  rR  r  s     r/   !add_audio_attention_layernorm_eps,GGUFWriter.add_audio_attention_layernorm_eps=  s"    11??Gr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  NUM_MEL_BINSr  s     r/   add_audio_num_mel_bins!GGUFWriter.add_audio_num_mel_bins@  s    33U;r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  r  STACK_FACTORr  s     r/   add_audio_stack_factor!GGUFWriter.add_audio_stack_factorC  s     00==uEr.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   xIELUALPHA_Pr  s     r/   add_xielu_alpha_pGGUFWriter.add_xielu_alpha_pF      tzz))62r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  ALPHA_Nr  s     r/   add_xielu_alpha_nGGUFWriter.add_xielu_alpha_nI  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  BETAr  s     r/   add_xielu_betaGGUFWriter.add_xielu_betaL  s    tzz/r.   c                X    U R                  [        R                  R                  U5        g r   )r
  r   r  EPSr  s     r/   add_xielu_epsGGUFWriter.add_xielu_epsO  s    tzz~~v.r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   	DiffusionSHIFT_LOGITSr  s     r/   add_diffusion_shift_logits%GGUFWriter.add_diffusion_shift_logitsT  s    dnn1159r.   c                    SnU(       d"  U R                   [        R                  :X  a  SOSn[        R                  " U U 3U5      $ )NrA  <>)rY   r   LITTLEstructpack)rf   fmtr3   r   pack_prefixs        r/   r   GGUFWriter._packW  s<    !%:3D3D!D##K{{k]3%0%88r.   c                  ^	 [        5       nU(       a  XPR                  SU5      -  nU R                  R                  U5      nUb%  XPR                  XaU[        R
                  :H  S9-  nU$ U[        R                  :X  aK  [        U[        5      (       a  UR                  S5      OUnXPR                  S[        U5      5      -  nXW-  nU$ U[        R                  :X  a  [        U[        5      (       d  [        S5      e[        U5      S:X  a  [        S5      eUb  Um	Og[        U[        5      (       a  [        R                  m	OA[        R                   " US   5      m	[#        U	4S jUS	S   5       5      (       d  [        S
5      eXPR                  ST	5      -  nXPR                  S[        U5      5      -  nU H  nXPR%                  UT	SS9-  nM     U$ [        S5      e)NrN   r   zutf-8rQ   z/Invalid GGUF metadata array, expecting sequencer   z(Invalid GGUF metadata array. Empty arrayc              3  T   >#    U  H  n[         R                  " U5      TL v   M     g 7fr   )r   get_type)r   rO   ltypes     r/   r   'GGUFWriter._pack_val.<locals>.<genexpr>x  s!     Ow!=11!4=ws   %(r   z4All items in a GGUF array should be of the same typeFr   z)Invalid GGUF metadata value type or value)r   r   _simple_value_packingrI  r   r  r   r  rG  encoder~   r	  r   r   r:  r   r  allr   )
rf   r   r   r   r6   rH   pack_fmtencoded_valitemr  s
            @r/   r   GGUFWriter._pack_val]  s   +zz#u--G--11%8zz(E]M_M_D_z``G8 7 m***1;C1E1E#**W-3Kzz#s;'788G"G0 / m)))c8,, !RSS3x1} !KLL# C''%++%..s1v6Os12wOOO$%[\\zz#u--Gzz#s3x00G>>$>GG 
  HIIr.   c                ~    U S:X  a  g[        U 5      nS H   n[        U5      S:  a	  US U 3s  $ US-  nM"     US S3$ )Nr   znegligible - metadata only)rA  KMGg     @@z3.1fz.1fzT - over 1TB, split recommended)floatabs)numfnumrO  s      r/   r    GGUFWriter.format_n_bytes_to_str  sW    !8/Sz'D4y6!tTF++FND ( s:;;r.   )rX   rZ   r^   rY   rC   rH   rE   r_   r]   r\   rI   rF   rG   r[   )rE   zos.PathLike[str] | str | NonerX   rG  r[   boolrY   r   r\   r$   r]   r$   r^   r   r_   r   )returnztuple[int, int, int, int])rE   r   r  
list[Path]r   )rE   rD   r  None)r  r  )r  r  )
r   rG  r   r   r   r   r6   r5   r  r  )r   rG  r   r$   r  r  )r   rG  r   r  r  r  )r   rG  r   r   r  r  )r   rG  r   rG  r  r  )r   rG  r   zSequence[Any]r  r  )r  r$   r  r$   r  r$   )rw   rG  r$  r!   r%  znp.dtyper&  r$   r'  GGMLQuantizationType | Noner  r  )NN)
rw   rG  r&   np.ndarray[Any, Any]r5  zSequence[int] | Noner'  r  r  r  )r6  z	IO[bytes]r  r$   r;  z
int | Noner  r  )r&   r  r  r  )rF  r   r  r  )rg  rG  r  r  )ro  r$   r  r  )rt  r$   r  r  )ry  r$   r  r  )rw   rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  rG  r  r  )r  r$   r  r  )r  r$   rw   rG  r  r  )r  r$   r  rG  r  r  )r  r$   r  rG  r  r  )r  r$   r  rG  r  r  )r  r$   r  rG  r  r  )r  r$   r  rG  r  r  )r  r$   r  rG  r  r  )r  r$   r  rG  r  r  )r  r$   r  rG  r  r  )rH  Sequence[str]r  r  )rM  r  r  r  )rT  rG  r  r  )rx   r$   r  r  )r_  r$   r  r  )r_  int | Sequence[int]r  r  )r  r   r  r  )r  r$   r  r  )r3   r$   r  r  )r   r$   r  r  )r   Sequence[float]r  r  )r  r  r  r  )r  r  r  r  )r3   r  r  r  )r3   zSequence[bool]r  r  )r  rG  r  r$   r  r$   r  r  )r  r$   r  r  )r3   r   r  r  )r3   r   r  r  )r5  r$   r  r  )r3   r   r  r  )r  r!   r  r  )r3   r   r  r  )r  rG  r  r  )r  rG  r  r  )r  5Sequence[str] | Sequence[bytes] | Sequence[bytearray]r  r  )r  r	  r  r  )r   z#Sequence[TokenType] | Sequence[int]r  r  )r
  r  r  r  )r=  r:  r  r  )r3   z!str | Sequence[Mapping[str, str]]r  r  )r`  r  r  r  )r3   rG  r  r  )r   r  )F)r  rG  r3   r   r   r   r  r:  )
r   r   r   r   r   r   r6   r5   r  r:  )r  r$   r  rG  )r(   r)   r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  rg   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  staticmethodr   r(  r7  r4  rD  r]  r   rY  rh  re   rp  ru  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r
  r  r  r  r  r"  r'  r+  r/  r3  r7  r<  r@  rD  rI  rN  rU  rZ  r`  rd  rh  rl  rp  rt  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r(  r,  r0  r6  r:  r>  rB  rG  rK  rO  rS  rX  r\  r`  rd  rh  rl  rp  rt  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r(  r-  r1  r5  r9  r>  rS  rW  r[  ra  rf  rj  rn  rs  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r-   r'   r.   r/   rA   rA   @   s   
%%
::((''sssssssssss UZs}  tE  tE!"!Uns 1 9< MQ fp  47 FJ gk 6.H`A
+ +  k( (.)").S S99;:;:<;:<9;
:
 & &
 FJ+c+c'4+cDL+c+c'B+c 
+c\ Z^15::!5:BV:.: 
:*' '
)8 9> -) -)^
6>Q;7157A99?>=7<<//19668@EQUWa_OOQYBNRT^\LLNV0:TJPRQUPWROM[X\cbRTTZOOZTWRTVXUQW\aMXZYMRTVRYTRSUHWQSPQIRZUYUWKSTWVdVXUMTYSQRLTQVVQWZ[YYLKKOLI51469@63333345558=F=:33U
;:9?;AD<EI;C;:C77G=
>@C;DH<F330/
:9 9$ $L < <r.   rA   )2
__future__r   loggingosrW  r  r0  dataclassesr   enumr   r   mathr   pathlibr   ior	   typingr
   r   r   r   stringr   r   numpyr  	constantsr   r   r   r   r   r   r   r   r   r   r   quantsr   	getLoggerr(   r`   r   r   r1   r8   rA   r'   r.   r/   <module>r     s    "  	    !     - - (     0			8	$ 1  / / / * * *$ L< L<r.   