
    `i'&                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m	Z	 d dl
mZmZmZ dej        vrp ee          j        j        j        j        dz                                  r<ej                            d  e ee          j        j        j                             d dlZ ej        d          Z G d	 d
e          Zd dZd!dZd"dZd#dZedk    r e             dS dS )$    )annotationsN)Path)tqdm)AnySequence
NamedTupleNO_LOCAL_GGUFzgguf-pyzgguf-new-metadatac                  @    e Zd ZU ded<   ded<   dZded<   dZd	ed
<   dS )MetadataDetailszgguf.GGUFValueTypetyper   value strdescriptionNzgguf.GGUFValueType | Nonesub_type)__name__
__module____qualname____annotations__r   r        r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gguf/scripts/gguf_new_metadata.pyr   r      sI         JJJK*.H......r   r   readergguf.GGUFReaderkeyr   returnr   c                \    |                      |          }|r|                                nd S N)	get_fieldcontents)r   r   fields      r   get_field_datar"      s/    S!!E$.5>>$.r   
token_listSequence[int]tokenc                    fdt          |           D             }t          |          dk    rt          d d          |S )Nc                &    g | ]\  }}|k    |S r   r   ).0indexr   r%   s      r   
<listcomp>zfind_token.<locals>.<listcomp>%   s"    SSS<5%EUNNNNNr   r   zUnable to find "z" in token list!)	enumeratelenLookupError)r#   r%   	token_idss    ` r   
find_tokenr/   $   sU    SSSS9Z+@+@SSSI
9~~DUDDDEEEr   writergguf.GGUFWriternew_metadatadict[str, MetadataDetails]remove_metadataSequence[str]Nonec                "   | j                                         D ]}|j        t          j        j        j        k    s|j                            d          r#t          	                    d|j                    _|j                            t          j        j
        j                  r;t          j        j
        j        |v r#t          	                    d|j                    |j        |v r#t          	                    d|j                    |j        d         }|t          j        j        k    r|j        d         nd }t          ||                                |          }|                    |j        |          }|j        |v rCt          	                    d|j         d	|j         d
|j         d|j                    ||j        = n)|j        "t          	                    d|j                    |j        6|                    |j        |j        |j        |j        |n|j                   t          j        j
        j        |v ret          	                    d           |                    |t          j        j
        j                 j                   |t          j        j
        j        = |                                D ]S\  }	}t          	                    d|	 d	|j         d|j                    |                    |	|j        |j                   Td}
| j        D ]M}|
|j        z  }
|                    |j        |j        j        |j        j        |j        j        |j                    NtC          d|
dd          }|"                                 |#                                 |$                                 | j        D ]6}|%                    |j                   |&                    |j                   7|'                                 d S )NzGGUF.zSuppressing z	Skipping z	Removing r   )r   z
Modifying z: "z" -> "z" zCopying zAdding chat template(s)zAdding WritingbyteT)desctotalunit
unit_scale)(fieldsvaluesnameggufKeysGeneralARCHITECTURE
startswithloggerdebug	TokenizerCHAT_TEMPLATEtypesGGUFValueTypeARRAYr   r    getr   r   add_key_valuer   r   add_chat_templateitemstensorsn_bytesadd_tensor_infodatashapedtypenbytestensor_typer   write_header_to_filewrite_kv_data_to_filewrite_ti_data_to_filewrite_tensor_dataupdateclose)r   r0   r2   r4   r!   val_typer   old_valvalr   total_bytestensorbars                r   copy_with_new_metadatarf   -   s   %%''  :*7775:;P;PQX;Y;Y7LL4
44555 :  !4!BCC 		H[HimyHyHyLL1UZ11222:((LL1UZ11222;q>&.$2D2J&J&J5;r??PT!(ENN,<,<xPPPuz733:%%LLhejhhW]hh#)hhWZWfhhiiiUZ((Y"LL0EJ001119   SYWZWcWk88qtq} ~~~y(L88.///  di.A.O!P!VWWW,:; &&(( 7 7SEsEEsyEECOEEFFFS#)SX6666K. z zv~%v{FK,=v{?PRXR]Rdflfxyyyy
I[v$
O
O
OC
!!!
  """
  """. # #  ---

6>""""
LLNNNNNr   c                 6   d t           j        j        j                                        D             } t          d | D                       }t          j        d          }|                    dt          d           |                    dt          d	           |                    d
t          dd           |                    dt          dd           |                    dt          dd           |                    dt          dd           |                    dt          dd           |                    ddt          dd           |                    ddt          d d!d"                    |                                          d#f$           |                    d%dt          d&d!d"                    |                                          d'f$           |                    d(d)d*+           |                    d,d)d-+           |                    t          t          j                  d!k    rd nd.g          }t!          j        |j        rt           j        nt           j        /           i }|j        pg }|j        r;t/          t           j        j        |j                  |t           j        j        j        <   |j        r;t/          t           j        j        |j                  |t           j        j        j        <   |j        rnt/          t           j        j        |j                            d0          rtA          j!        |j                  n|j                  |t           j        j        j"        <   |j#        rtI          |j#        d1          5 }tA          j%        |          }|&                    d2          }|r6t/          t           j        j        |          |t           j        j        j"        <   d d d            n# 1 swxY w Y   |j'        r;t/          t           j        j        |j'                  |t           j        j        j(        <   |rtR          *                    d3           tR          *                    d4           tR          *                    d5           |j+        s]tR          *                    d6           tY          d7          }	|	d8k    r.tR          -                    d9           t          j.        d:           tR          -                    d;|j,                    t          j/        |j,        d1          }
ta          |
t           j        j        j1                  }ta          |
t           j        j        j2                  pg }|j3        pg D ]\  }}||vrtR          *                    d<| d=           (ti          ||          }t/          t           j        j5        |d:         d>|           |||         <   t          |          d?k    r^tR          *                    d@| dA|d:          dB           tR          *                    dC                    dD |D                                  |j6        pg D ]\  }}||vrtR          *                    d<| d=           (|7                                stq          dE| dF          ts          |          }|d:k    rF|t          |          k     r3t/          t           j        j5        |d>||                    |||         <   tq          dG| dH          tt          j;        <                    |j=                  r|j+        stR          *                    d3           tR          *                    dI|j=         dJ           tR          *                    d6           tY          d7          }	|	d8k    r.tR          -                    d9           t          j.        d:           tR          -                    dK|j=                    t          j>        |j=        ||
j?        L          }ta          |
t           j        j        j@                  }|$tR          A                    dM|            ||_B        t          |
|||           d S )NNc              3  ~   K   | ]8}|                     d           t          t          j        j        |          V  9dS )_N)rF   getattrrB   rC   rI   r(   ns     r   	<genexpr>zmain.<locals>.<genexpr>h   sa        A  Aanonznz{~nn  A'$)"5q99  A  A  A  A  A  Ar   c              3     K   | ]L}|                     d           |                    d          d         dt          d                     |fV  MdS )	_token_id.r8   N)endswithsplitr,   rk   s     r   rm   zmain.<locals>.<genexpr>i   sa      xxQ`a`j`jkv`w`wxR();3{+;+;*;);<a@xxxxxxr   z,Make a copy of a GGUF file with new metadata)r   inputz GGUF format model input filename)r   helpoutputz!GGUF format model output filenamez--general-namezThe models general.namez"name")r   rt   metavarz--general-descriptionzThe models general.descriptionz"Description ..."z--chat-templatez:Chat template string (or JSON string containing templates)z"{% ... %} ..."z--chat-template-configz'Config file containing chat template(s)ztokenizer_config.jsonz--pre-tokenizerzThe models tokenizer.ggml.prez"pre tokenizer"z--remove-metadataappendz/Remove metadata (by key name) from output modelzgeneral.url)actionr   rt   rv   z--special-tokenzSpecial token by value   z | z	"<token>")rx   r   rt   nargsrv   z--special-token-by-idzSpecial token by id0z--force
store_truez$Bypass warnings without confirmation)rx   rt   z	--verbosezIncrease output verbosityz--help)level[rchat_templatez&*** Warning *** Warning *** Warning **z=* Most metadata is required for a fully functional GGUF file,z@* removing crucial metadata may result in a corrupt output file!z<* Enter exactly YES if you are positive you want to proceed:zYES, I am sure> YESz(You didn't enter YES. Okay then, see ya!r   z* Loading: zUnknown special token "z", ignoring...z=    z
Multiple "z" tokens found, choosing ID z0, use --special-token-by-id if you want another:z, c              3  4   K   | ]}t          |          V  d S r   )r   )r(   is     r   rm   zmain.<locals>.<genexpr>   s(      (=(=AQ(=(=(=(=(=(=r   z
Token ID "z" is not a valid ID!z	Token ID z is not within token list!z* The "z3" GGUF file already exists, it will be overwritten!z* Writing: )arch	endianesszSetting custom alignment: )DrB   rC   rI   __dict__keysdictargparseArgumentParseradd_argumentr   r   join
parse_argsr,   sysargvloggingbasicConfigverboseDEBUGINFOr4   general_namer   rL   STRINGrD   NAMEgeneral_descriptionDESCRIPTIONr   rF   jsonloadsrJ   chat_template_configopenloadrN   pre_tokenizerPRErG   warningforcers   infoexit
GGUFReaderr"   rE   LISTspecial_tokenr/   UINT32special_token_by_id	isdecimalr-   intospathisfileru   
GGUFWriterr   	ALIGNMENTrH   data_alignmentrf   )tokenizer_metadatatoken_namesparserargsr2   r4   fpconfigtemplateresponser   r   r#   rA   r%   ids	id_stringid_intr0   	alignments                       r   mainr   g   sw	    A  A49CVC_CdCdCfCf  A  A  AxxJ\xxxxxK$1_```F
DWyzzz
DWz{{{
(CWp  {C  D  D  D
/CWw  BU  V  V  V
)C  XT  ^o  p  p  p
0D  XA  Kb  c  c  c
)CWv  AR  S  S  S
+C  XI  S`  a  a  a
)CWowx  DI  DN  DN  OZ  O_  O_  Oa  Oa  Db  Db  do  Cp  q  q  q
/CWltu  AF  AK  AK  LW  L\  L\  L^  L^  A_  A_  ad  @e  f  f  f
	W}~~~
WrsssS]]Q%6%6TTXJGGDt|MgmmNNNNL*0bO m/>t?Q?XZ^Zk/l/lTY&+, {6EdFXF_aeay6z6zTY&23 C:I$J\Jc  HL  HZ  He  He  fi  Hj  Hj  fBeieopt  qC  fD  fD  fD  pt  pB  ;C  ;CTY(67  w$+S11 	wRYr]]Fzz/22H wBQRVRdRkmuBvBvTY0>?		w 	w 	w 	w 	w 	w 	w 	w 	w 	w 	w 	w 	w 	w 	w  o0?@R@Y[_[m0n0nTY(,- 
?@@@VWWWYZZZz 	NNYZZZ/00H5  FGGG
KK*dj**+++_TZ--F&$)"3"@AAD	(;(@AAGRJ)/R 	? 	?e{""NNITIIIJJJJZ//C.=d>P>WY\]^Y_amfkamam.n.nLT*+3xx!||   HE   H   HsSTv   H   H   H  I  I  Ityy(=(=(=(=(===>>>39r R Ri{""NNITIIIJJJJ$$&& 	RJ9JJJKKK^^F{{vJ772A$BTB[]ce~jtu{j|e~e~22[.//!"Pf"P"P"PQQQ	w~~dk"" 4: ?@@@aaaabbbUVVV+,,uKKBCCCHQKKK
KK+dk++,,,_T[tv?OPPPFvty'8'BCCI=)==>>> )66<IIIIIs   A"PP
P__main__)r   r   r   r   r   r   )r#   r$   r%   r   r   r$   )
r   r   r0   r1   r2   r3   r4   r5   r   r6   )r   r6   )
__future__r   r   r   r   r   r   pathlibr   r   typingr   r   r   environ__file__parentexistsr   insertr   rB   	getLoggerrG   r   r"   r/   rf   r   r   r   r   r   <module>r      s   " " " " " "   				 



              , , , , , , , , , , "*$$$$x..*?*F*M*TW`*`)h)h)j)j$HOOAss44>>07>??@@@ 		.	/	// / / / /j / / // / / /   7 7 7 7tgJ gJ gJ gJT zDFFFFF r   