
    >Ci                    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'       J/home/james-whalen/.local/lib/python3.13/site-packages/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               SS jjrSS jrSS jrSSS jjrSS  jrSS! jrSSS" jjrSS# jrSS$ jrSSS% jjrSS& jrSS' jrSS( jr SS) jr!SS* jr"SS+ jr#SS, jr$SS- jr%SS. jr&SS/ jr'SS0 jr(SS1 jr)SS2 jr*\+SS3 j5       r, S           SS4 jjr-  S         SS5 jjr.SSS6 jjr/SS7 jr0SS8.SS9 jjr1SS: jr2SS; jr3SS< jr4SS= jr5SS> jr6SS? jr7SS@ jr8SSA 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SS\ jrTGSS] jrUGSS^ 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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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S!S jr|GS!S jr}GS"S jr~GS"S jrG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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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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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S0S jrGS1S jrGSS jrGSS jrGS2S jrGS#S jrGS#S jrGS3S 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S4S jrGS4S 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S%S jrGS5GS6S jjrSGS7S jjr\+GS8S j5       rSrg(9  
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  X;U
S
   -  -  nXJS
   -  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.)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   s;   
59||G%mmo


==++#',K]]9--"*k!nSb	C.O'cd) G%* Gk!n.B.B2.F GE{t#!eBi&78M)+J$)$!)M$1 . $8 <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   rv   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`   ro   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   	bytearrayrm   	_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   rm   r   r   r   r}   r"   r   r~   r#   rA   ggml_padr%   rZ   r   r   r>   )	rf   rC   rG   ti_dataoffset_tensorrv   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`   ro   rv   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_float641  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   BOOLr   s      r/   add_boolGGUFWriter.add_bool4  r   r.   c                T    U(       d  g U R                  X[        R                  5        g r   )r   r   r   r   s      r/   
add_stringGGUFWriter.add_string7  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_padA  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   rv   s     r/   r   -GGUFWriter.add_tensor_info.<locals>.<genexpr>L  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  l  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   rv   tensor_shapetensor_dtypetensor_nbytes	raw_dtyper#   s    `     r/   add_tensor_infoGGUFWriter.add_tensor_infoE  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   rv   r&   	raw_shaper&  fpr"   s          r/   
add_tensorGGUFWriter.add_tensorr  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   r5  r  alignpads        r/   r3  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%   r3  tellr2  )
rf   r&   file_idrO   rG   rC   rv   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   rI    s     E4Db		4Dr   )rM  )r   rC   r3  r@  rF   rG  r   rG   r}   r   r   set_descriptionr   resetr&   r%   r2  updater1  shutilcopyfileobjr_   r   closer8   r?   rI   )rf   rE  rC   	shard_barbarrG  total_bytesrO   rG   rM  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   rX  r_  s     r/   rX  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   rd  ARCHITECTURErX   )rf   s    r/   re   GGUFWriter.add_architecture  s    11499=r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rd  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   rd  	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   rd  	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   rd  NAME)rf   rv   s     r/   add_nameGGUFWriter.add_name      ))40r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  AUTHOR)rf   authors     r/   
add_authorGGUFWriter.add_author  s    ++V4r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  VERSION)rf   versions     r/   add_versionGGUFWriter.add_version      ,,g6r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  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   rd  FINETUNE)rf   finetunes     r/   add_finetuneGGUFWriter.add_finetune      --x8r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  BASENAME)rf   basenames     r/   add_basenameGGUFWriter.add_basename  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  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   rd  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   rd  
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   rd  LICENSErf   licenses     r/   add_licenseGGUFWriter.add_license  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  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   rd  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   rd  URLrf   urls     r/   add_urlGGUFWriter.add_url      ((#.r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  DOIrf   dois     r/   add_doiGGUFWriter.add_doi  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  UUIDrf   uuids     r/   add_uuidGGUFWriter.add_uuid  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  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   rd  
SOURCE_URLr  s     r/   add_source_urlGGUFWriter.add_source_url"      //5r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rd  
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   rd  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   rd  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   rd  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   rd  BASE_MODEL_NAMErb   rf   	source_idrv   s      r/   add_base_model_nameGGUFWriter.add_base_model_name1  (    44;;y;I4Pr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  BASE_MODEL_AUTHORrb   rf   r  r  s      r/   add_base_model_author GGUFWriter.add_base_model_author4  s(    66===KVTr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  BASE_MODEL_VERSIONrb   rf   r  r  s      r/   add_base_model_version!GGUFWriter.add_base_model_version7  s(    77>>)>LgVr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  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   rd  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   rd  BASE_MODEL_URLrb   rf   r  r  s      r/   add_base_model_urlGGUFWriter.add_base_model_url@  (    33::i:H#Nr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  BASE_MODEL_DOIrb   rf   r  r  s      r/   add_base_model_doiGGUFWriter.add_base_model_doiC  r  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  BASE_MODEL_UUIDrb   rf   r  r  s      r/   add_base_model_uuidGGUFWriter.add_base_model_uuidF  r  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  BASE_MODEL_REPO_URLrb   rf   r  r  s      r/   add_base_model_repo_url"GGUFWriter.add_base_model_repo_urlI  s(    88??9?MxXr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rd  DATASET_COUNTr  s     r/   add_dataset_countGGUFWriter.add_dataset_countL  s    22LAr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  DATASET_NAMErb   r  s      r/   add_dataset_nameGGUFWriter.add_dataset_nameO  (    1188I8FMr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  DATASET_AUTHORrb   r  s      r/   add_dataset_authorGGUFWriter.add_dataset_authorR  s(    33::i:H&Qr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  DATASET_VERSIONrb   r  s      r/   add_dataset_versionGGUFWriter.add_dataset_versionU  s(    44;;y;I7Sr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  DATASET_ORGANIZATIONrb   r  s      r/   add_dataset_organization#GGUFWriter.add_dataset_organizationX  s)    99@@I@NP\]r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  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   rd  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   rd  DATASET_DOIrb   r  s      r/   add_dataset_doiGGUFWriter.add_dataset_doia  r8  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  DATASET_UUIDrb   r  s      r/   add_dataset_uuidGGUFWriter.add_dataset_uuidd  r#  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r  )r  r   rd  DATASET_REPO_URLrb   r  s      r/   add_dataset_repo_urlGGUFWriter.add_dataset_repo_urlg  s(    55<<	<JHUr.   c                X    U R                  [        R                  R                  U5        g r   )r	  r   rd  TAGS)rf   tagss     r/   add_tagsGGUFWriter.add_tagsj  s    t||(($/r.   c                X    U R                  [        R                  R                  U5        g r   )r	  r   rd  	LANGUAGES)rf   	languagess     r/   add_languagesGGUFWriter.add_languagesm  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_layoutp  s,    33::		:JFSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rQ  
VOCAB_SIZErb   rX   rf   rw   s     r/   add_vocab_sizeGGUFWriter.add_vocab_sizes  s,    ++22		2BDIr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rQ  CONTEXT_LENGTHrb   rX   rf   lengths     r/   add_context_lengthGGUFWriter.add_context_lengthv  s,    //66DII6FOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rQ  EMBEDDING_LENGTHrb   rX   r]  s     r/   add_embedding_lengthGGUFWriter.add_embedding_lengthy  s,    1188dii8H&Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rQ  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 rP  )r   r   PosNetrb  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 rP  )r   r   rj  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 rP  )r   r   ConvNextrb  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 rP  )r   r   rr  rn  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 rP  )r   r   rQ  rn  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 rP  )r   r   rQ  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 rP  )	
isinstancer$   r   r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   rQ  !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 rP  )r  r   rQ  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 rP  )r   r   rQ  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                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 rP  )	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 rP  )	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 rP  )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 rP  )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 rP  )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 rP  )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 rP  )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 rP  )r   r   r  	CLAMP_KQVrb   rX   rf   r3   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 rP  )r   r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   rQ  EXPERT_SHARED_COUNTrb   rX   r  s     r/   add_expert_shared_count"GGUFWriter.add_expert_shared_count  s,    44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rQ  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 rP  )r  r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   rQ  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 rP  )r  r   rQ  	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 rP  )r   r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   rQ  TIME_DECAY_EXTRA_DIMrb   rX   r  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 rP  )r   r   rQ  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 rP  )r   r   rQ  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 rP  )r   r   WKV	HEAD_SIZErb   rX   rX  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 rP  )r   r   rQ  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 rP  )r   r   rQ  INTERLEAVE_MOE_LAYER_STEPrb   rX   r  s     r/   add_interleave_moe_layer_step(GGUFWriter.add_interleave_moe_layer_step  s-    ::AAtyyAQSXYr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )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 rP  )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 rP  )r   r   r  GROUPNORM_EPSrb   rX   r  s     r/   add_group_norm_epsGGUFWriter.add_group_norm_eps   r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   r  GROUPNORM_GROUPSrb   rX   r  s     r/   add_group_norm_groups GGUFWriter.add_group_norm_groups  s-    77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r  r   r  CAUSALrb   rX   r  s     r/   add_causal_attentionGGUFWriter.add_causal_attention  s,    dnn++22		2BEJr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   r  Q_LORA_RANKrb   rX   r]  s     r/   add_q_lora_rankGGUFWriter.add_q_lora_rank	  s,    2299tyy9I6Rr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   r  KV_LORA_RANKrb   rX   r]  s     r/   add_kv_lora_rankGGUFWriter.add_kv_lora_rank  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )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 rP  )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 rP  )r   r   r  VALUE_RESIDUAL_MIX_LORA_RANKrb   rX   r]  s     r/    add_value_residual_mix_lora_rank+GGUFWriter.add_value_residual_mix_lora_rank  s0    CCJJPTPYPYJZ\bcr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   r  GATE_LORA_RANKrb   rX   r]  s     r/   add_gate_lora_rankGGUFWriter.add_gate_lora_rank  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   r  REL_BUCKETS_COUNTrb   rX   r  s     r/   add_relative_attn_buckets_count*GGUFWriter.add_relative_attn_buckets_count  s-    88??TYY?OQVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   r  SLIDING_WINDOWrb   rX   r  s     r/   add_sliding_windowGGUFWriter.add_sliding_window  s,    55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   r  SCALErb   rX   r  s     r/   add_attention_scaleGGUFWriter.add_attention_scale!  s.    --44$))4DeLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9UR                  5        g rP  )r   r   rQ  POOLING_TYPErb   rX   r3   r  s     r/   add_pooling_typeGGUFWriter.add_pooling_type$  s0    --44$))4DekkRr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   RopeDIMENSION_COUNTrb   rX   r  s     r/   add_rope_dimension_count#GGUFWriter.add_rope_dimension_count'  s,    		1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r	  r   rK  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 rP  )r   r   rK  	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 rP  )r  r   rK  SCALING_TYPErb   rX   r3   r  s     r/   add_rope_scaling_type GGUFWriter.add_rope_scaling_type0  s0    		..554995Eu{{Sr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rK  SCALING_FACTORrb   rX   r  s     r/   add_rope_scaling_factor"GGUFWriter.add_rope_scaling_factor3  s.    1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rK  SCALING_ATTN_FACTORrb   rX   r  s     r/   add_rope_scaling_attn_factors(GGUFWriter.add_rope_scaling_attn_factors6  s.    66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rK  SCALING_ORIG_CTX_LENrb   rX   r  s     r/   add_rope_scaling_orig_ctx_len(GGUFWriter.add_rope_scaling_orig_ctx_len9  s,    		66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r  r   rK  SCALING_FINETUNEDrb   rX   r  s     r/   add_rope_scaling_finetuned%GGUFWriter.add_rope_scaling_finetuned<  s,    dii1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rK  SCALING_YARN_LOG_MULrb   rX   r  s     r/   add_rope_scaling_yarn_log_mul(GGUFWriter.add_rope_scaling_yarn_log_mul?  s/    77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   SSMCONV_KERNELrb   rX   r  s     r/   add_ssm_conv_kernelGGUFWriter.add_ssm_conv_kernelB  s,    ,,333CUKr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rq  
INNER_SIZErb   rX   r  s     r/   add_ssm_inner_sizeGGUFWriter.add_ssm_inner_sizeE  ,    ++22		2BEJr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rq  
STATE_SIZErb   rX   r  s     r/   add_ssm_state_sizeGGUFWriter.add_ssm_state_sizeH  ry  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r   r   rq  TIME_STEP_RANKrb   rX   r  s     r/   add_ssm_time_step_rank!GGUFWriter.add_ssm_time_step_rankK  s,    //66DII6FNr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g rP  )r  r   rq  
DT_B_C_RMSrb   rX   r  s     r/   add_ssm_dt_b_c_rmsGGUFWriter.add_ssm_dt_b_c_rmsN  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_modelQ  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_preT  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_listW  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_mergesZ      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_scoresc  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_idf      --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_idi  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_idl  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_ido  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_idr  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_idu  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_tokenx      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_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 )Nrv    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)rv   )r  strsetgetjoinaddr  r   r  CHAT_TEMPLATE_Nrb   r	  CHAT_TEMPLATESlistCHAT_TEMPLATE)rf   r3   template_defaulttemplate_nameschoicerv   r  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 rP  )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   r  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   r  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   r  
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   r  rb  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   r  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   r  rn  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   r  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   r  r  r  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   r  
IMAGE_SIZEr  s     r/   add_vision_image_size GGUFWriter.add_vision_image_size  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r	  r   r  
IMAGE_MEANrf   r   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   r  	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   r  SPATIAL_MERGE_SIZEr  s     r/   add_vision_spatial_merge_size(GGUFWriter.add_vision_spatial_merge_size  s    ::EBr.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  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   r  USE_SILUr  s     r/   add_vision_use_siluGGUFWriter.add_vision_use_silu  r8  r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  	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   r  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   	ClipAudior  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   rG  rb  r  s     r/   add_audio_embedding_length%GGUFWriter.add_audio_embedding_length  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rG  r  r  s     r/   add_audio_feed_forward_length(GGUFWriter.add_audio_feed_forward_length  s    ::EBr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rG  rn  r  s     r/   add_audio_block_count GGUFWriter.add_audio_block_count  s    22E:r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rG  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   rG  r  r  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   rG  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   rG  r>  STACK_FACTORr  s     r/   add_audio_stack_factor!GGUFWriter.add_audio_stack_factor  s     00==uEr.   c                    SnU(       d"  U R                   [        R                  :X  a  SOSn[        R                  " U U 3U5      $ )Nr  <>)rY   r   LITTLEstructpack)rf   fmtr3   r   pack_prefixs        r/   r   GGUFWriter._pack  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>   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_packingr  r   r   r   r  r  encoder}   r  r   r   r9  r   rl  allr   )
rf   r   r   r   r6   rH   pack_fmtencoded_valitemrm  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)r  KMGg     @@z3.1fz.1fzT - over 1TB, split recommended)floatabs)numfnumrN  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   r  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   r  r   r   r   r   r6   r5   r  r  )r   r  r   r$   r  r  )r   r  r   rz  r  r  )r   r  r   r  r  r  )r   r  r   r  r  r  )r   r  r   zSequence[Any]r  r  )r  r$   r  r$   r  r$   )rv   r  r#  r!   r$  znp.dtyper%  r$   r&  GGMLQuantizationType | Noner  r  )NN)
rv   r  r&   np.ndarray[Any, Any]r4  zSequence[int] | Noner&  r  r  r  )r5  z	IO[bytes]r  r$   r:  z
int | Noner  r  )r&   r  r  r  )rE  r  r  r  )rf  r  r  r  )rn  r$   r  r  )rs  r$   r  r  )rx  r$   r  r  )rv   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  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r$   r  r  )r  r$   rv   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$   r  r  r  r  )r  r$   r  r  r  r  )rG  Sequence[str]r  r  )rL  r  r  r  )rS  r  r  r  )rw   r$   r  r  )r^  r$   r  r  )r^  int | Sequence[int]r  r  )r  r  r  r  )r  r$   r  r  )r  r  r  r  )r  rz  r  r  )r3   rz  r  r  )r  r$   r  r  )r3   r  r  r  )r3   r   r  r  )r3   r$   r  r  )r  r$   r  r  )r3   r   r  r  )rQ  r!   r  r  )r3   r   r  r  )r  r  r  r  )r  r  r  r  )r  5Sequence[str] | Sequence[bytes] | Sequence[bytearray]r  r  )r  r  r  r  )r  z#Sequence[TokenType] | Sequence[int]r  r  )r  Sequence[float]r  r  )r  r9  r  r  )r3   z!str | Sequence[Mapping[str, str]]r  r  )r  r  r  r  )r3   r  r  r  )r   r  r  r  )F)rg  r  r3   r   r   r  r  r9  )
r   r   r   r   r   r  r6   r5   r  r9  )r|  r$   r  r  )r(   r)   r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   ro  r   rd  rg   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  staticmethodr   r'  r6  r3  rC  r\  r   rX  rg  re   ro  rt  ry  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.  r2  r6  r;  r?  rC  rH  rM  rT  rY  r_  rc  rg  rk  ro  rs  rv  ry  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,  r0  r4  r8  r<  r@  rD  rH  rM  rR  rV  rZ  r^  rb  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  r!  r%  r*  r.  r2  r6  r;  r@  rD  rH  rK  rN  rQ  rT  rW  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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M[X\cRTTWRTVXUQMXYMRTVRYSHWQSPQIRZUYUWKSTWVdVXUMSQRLTQVVQWLKKOI51469@6333334558=F=:33U
;:9?;AD<EI;;:C77G=
>@C;DH<F9 9$L < <r.   rA   )2
__future__r   loggingosrV  re  r/  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  / / / * * *$ t< t<r.   