o
    հi1                     @   s   d dl Z d dlZd dlZd dlZd dlmZ dejvr5eejjjjd 	 r5ej
d eeejjj d dlmZ e dZdeddfd	d
ZdedejddfddZdddZedkrce  dS dS )    N)PathNO_LOCAL_GGUFzgguf-py)
GGUFReaderzgguf-set-metadatafilenamereturnc                 C   s<   t | d}|jd }|d u rd S |jd }d|j| d< d S )Nr+ztokenizer.ggml.bos_token_idr      )r   fieldsdataparts)r   readerfield
part_index r   R/home/ubuntu/.local/lib/python3.10/site-packages/gguf/scripts/gguf_set_metadata.pyminimal_example   s   


r   r   argsc                 C   sj  |  |j}|d u rtdt|j d td |jr'| j	|jd nd }|d u rAtdt|j d|j  td |j
|jd  d }||j}tdt|j d| d	|  ||krxtd
t|j d|  td |jrtd |jstd td td td}|dkrtd td ||j
|jd  d< td d S )Nz! Field z
 not found   r   z2! This tool only supports changing simple values, z has unsupported type z* Preparing to change field z from z to z- Key z  already set to requested value z&*** Warning *** Warning *** Warning **zP* Changing fields in a GGUF file can make it unusable. Proceed at your own risk.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!z'* Field changed. Successful completion.)	get_fieldkeyloggererrorreprsysexittypesgguf_scalar_to_npgetr   r
   valueinfodry_runforcewarninginput)r   r   r   handlercurrent_value	new_valueresponser   r   r   set_metadata,   s4   


"






r)   c                  C   s   t jdd} | jdtdd | jdtdd | jdtd	d | jd
ddd | jdddd | jdddd | ttjdkrAd ndg}tj	|j
rMtjntjd td|j  t|j|jrcdnd}t|| d S )Nz(Set a simple value in GGUF file metadata)descriptionmodelzGGUF format model filename)typehelpr   zMetadata key to setr   zMetadata value to setz	--dry-run
store_truezDon't actually change anything)actionr-   z--forcez%Change the field without confirmationz	--verbosezincrease output verbosityr   z--help)levelz* Loading: rr   )argparseArgumentParseradd_argumentstr
parse_argslenr   argvloggingbasicConfigverboseDEBUGINFOr   r    r+   r   r!   r)   )parserr   r   r   r   r   mainL   s   r?   __main__)r   N)r9   r2   osr   pathlibr   environ__file__parentexistspathinsertr5   ggufr   	getLoggerr   r   	Namespacer)   r?   __name__r   r   r   r   <module>   s   "

 
