
    `i9                       d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ d dlZd dlmZ ddlmZ edk    r=d dlmZ ej                            d  e ee          j        j                             d d	lmZmZmZmZm Z m!Z!m"Z"  ej#        e          Z$d
egZ% G d de
          Z& G d de
          Z' G d d          Z(dS )    )annotationsN)OrderedDict)AnyLiteral
NamedTupleTypeVarUnion   )quant_shape_to_byte_shape__main__)Path)GGML_QUANT_SIZESGGUF_DEFAULT_ALIGNMENT
GGUF_MAGICGGUF_VERSIONGGMLQuantizationTypeGGUFValueType
GGUFEndian   c                  n    e Zd ZU ded<   ded<   g Zded<   dgZded	<   g Zd
ed<    ed          fddZdS )ReaderFieldintoffsetstrnamezlist[npt.NDArray[Any]]partsz	list[int]datazlist[GGUFValueType]typesNindex_or_sliceint | slicereturnr   c                t     j         r-d  j         d         }|t          j        k    r j         d         }|t          j        k    rG j        |         }t          |t                    r  j        |                   S  fd|D             S t          |t                    r0 j         j        |                                                  d         S  fd j        |         D             S |t          j        k    r  j        d                   S  j        d                                         d         S d S )Nc                H    t          |                                 d          S )Nutf-8encoding)r   tobytes)xs    d/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gguf/gguf_reader.py<lambda>z&ReaderField.contents.<locals>.<lambda>;   s    #aiikkG"D"D"D     r   r   c                <    g | ]} j         |                   S  )r   ).0idxself	to_strings     r*   
<listcomp>z(ReaderField.contents.<locals>.<listcomp>G   s)    NNNs		$*S/ : :NNNr,   c                X    g | ]&}j         |                                         D ]}|'S r.   )r   tolist)r/   r0   pvr1   s      r*   r3   z(ReaderField.contents.<locals>.<listcomp>Z   s<    kkksRVR\]`RaRhRhRjRjkkBkkkkr,   )	r   r   ARRAYSTRINGr   
isinstancer   r   r5   )r1   r    	main_typesub_typeindicesr2   s   `    @r*   contentszReaderField.contents9   s<   : %	2DDI
1IM///:b>}333"i7G!.#66 O(yG)<===NNNNNgNNNN  ".#66 l#z$)N*CDKKMMaPPkkkkdi.GkkkkM000 yB000z"~,,..q11tr,   )r    r!   r"   r   )	__name__
__module____qualname____annotations__r   r   r   slicer=   r.   r,   r*   r   r   '   s         KKK III %'E&&&&
 dD!#E####5:U4[[ ( ( ( ( ( ( (r,   r   c                  `    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   dS )ReaderTensorr   r   r   tensor_typeznpt.NDArray[np.uint32]shaper   
n_elementsn_bytesdata_offsetnpt.NDArray[Any]r   r   fieldN)r>   r?   r@   rA   r.   r,   r*   rD   rD   d   si         III%%%%!!!!OOOLLLr,   rD   c                     e Zd ZU dZded<   eZded<   ded<   ej        e	j
        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        iZded<   d9d:dZ  e!de"j#                  Z$d;dZ%d<dZ&	 d=d>d"Z'd?d@d(Z(dAd*Z)dBd.Z*dCd/Z+dDd1Z,dEd3Z-dFd8Z.dS )G
GGUFReaderIzLiteral['I', 'S']
byte_orderr   	alignmentrI   z%dict[GGUFValueType, type[np.generic]]gguf_scalar_to_nprpathos.PathLike[str] | strmodeLiteral['r', 'r+', 'c']c           
        t          j        ||          | _        d}|                     |t           j        d          d         t
          k    rt          d          |dz  }|                     |t           j                  }|d         dz  dk    r9d| _        |                    |j	        
                    | j                            }|d         }|t          vrt          d	| d
          t          j        dk    rt          j        }t          j        }nt          j        }t          j        }| j        dk    r|n|| _        t%                      | _        g | _        ||                     t-          |d|gdgt.          j        g                    z  }|                     |t           j        d          }||                     t-          |d|d d         gdgt.          j        g                    z  }||                     t-          |d|dd          gdgt.          j        g                    z  }|\  }	}
|                     ||
          }|                     ||	          \  }}| j                            d          }|=|j        t.          j        gk    rt          d          |j        d         d         | _         || j         z  }|dk    r|| j         |z
  z  }|| _!        | "                    ||           d S )N)rU   r   <)override_orderzGGUF magic invalid   i  Sz"Sorry, file appears to be version z which we cannot handlelittlezGGUF.versionr   zGGUF.tensor_countr
   zGGUF.kv_countzgeneral.alignmentz$Bad type for general.alignment fieldr   )#npmemmapr   _getuint32r   
ValueErrorrO   viewdtypenewbyteorderREADER_SUPPORTED_VERSIONSsys	byteorderr   LITTLEBIG	endianessr   fieldstensors_push_fieldr   r   UINT32uint64UINT64_build_fields_build_tensor_infogetr   r   rP   rI   _build_tensors)r1   rS   rU   offstemp_versionversionhost_endianswapped_endiantemp_countstensor_countkv_counttensors_fields	new_alignpaddings                 r*   __init__zGGUFReader.__init__   s   Id4000	 99T29s9;;A>*LL1222	 yyry11?U"a'' "DO',,\-?-L-LT_-]-]^^Lq/333b'bbbccc=H$$$+K'^NN %.K'.N+/?c+A+A{5@]]+-  T>L>TUSVYfYmXn!o!oppp iibi33  T3FUWVWUWHY\][^anau`v!w!wxxx  T?[QRQSQS_DUXYWZ]j]q\r!s!sttt!,h!!$11  $66t\JJnKOO$788	 =#7"888 !GHHH&_R03DN'a<<DNW,,DD.11111r,   _DT)boundkeyr   r"   Union[ReaderField, None]c                8    | j                             |d           S N)rk   rs   )r1   r   s     r*   	get_fieldzGGUFReader.get_field   s    {sD)))r,   r0   rD   c                    | j         |         S r   )rl   )r1   r0   s     r*   
get_tensorzGGUFReader.get_tensor   s    |C  r,   r
   Nr   rc   npt.DTypeLikecountrY   None | Literal['I', 'S', '<']rJ   c                B   t          |          }t          t          j        g |          j                  }|||z  z   }| j        ||                             |          d |         }|                    |j                            || j        n|                    S )N)rc   )	r   r]   emptyitemsizer   rb   rc   rd   rO   )r1   r   rc   r   rY   r   end_offsarrs           r*   r_   zGGUFReader._get   s     E

rxE222;<<Hu,,ix(--E-::6E6Bxx	...BXt^lmmnnnr,   FrK   r   skip_sumboolc                *   |j         | j        v rUt                              d|j          d|j                    || j        |j         d                    |j                  z   <   n|| j        |j         <   |rdnt          d |j        D                       S )NzDuplicate key z at offset z_{}r   c              3  >   K   | ]}t          |j                  V  d S r   r   nbytesr/   parts     r*   	<genexpr>z)GGUFReader._push_field.<locals>.<genexpr>   s,      %O%O4c$+&6&6%O%O%O%O%O%Or,   )r   rk   loggerwarningr   formatsumr   )r1   rK   r   s      r*   rm   zGGUFReader._push_field   s    :$$ NNQEJQQ5<QQRRRCHDK
U\\%,%?%??@@&+DK
#Oqq#%O%O5;%O%O%O"O"OOr,   4tuple[npt.NDArray[np.uint64], npt.NDArray[np.uint8]]c                    |                      |t          j                  }||                      |dz   t          j        |d                   fS )N   r   )r_   r]   ro   uint8)r1   r   slens      r*   _get_strzGGUFReader._get_str   s<    yy++TYYvz28T!W====r,   	orig_offsraw_typeBtuple[int, list[npt.NDArray[Any]], list[int], list[GGUFValueType]]c                   |}g }t          |          }|                    |           |t           j        k    rBt          |                     |                    }t          d |D                       }||dg|fS | j                            |          }|0|                     ||          }	t          |	j
                  |	gdg|fS |t           j        k    r|                     |t          j                  }
|t          |
j
                  z  }|                     |t          j                  }|t          |j
                  z  }|
|g}g }t          |d                   D ]X}|                     ||
d                   \  }}}}|dk    r||z  }t#          |          ||z  }|fd|D             z  }||z  }Y||z
  |||fS t%          d|           )Nc              3  >   K   | ]}t          |j                  V  d S r   r   r   s     r*   r   z.GGUFReader._get_field_parts.<locals>.<genexpr>   s,      ;;Ds4;'';;;;;;r,   r
   r   c              3  "   K   | ]	}|z   V  
d S r   r.   r/   r0   	idxs_offss     r*   r   z.GGUFReader._get_field_parts.<locals>.<genexpr>   s'      CC#cIoCCCCCCr,   zUnknown/unhandled field type )r   appendr8   listr   r   rQ   rs   r_   r   r   r7   r]   r`   ro   range_get_field_partslenra   )r1   r   r   ru   r   gtypespartssizenptypeval	raw_itypealenaparts	data_idxsr0   	curr_size
curr_parts	curr_idxs
curr_typesr   s                      @r*   r   zGGUFReader._get_field_parts   s    %'h''UM(((-1$--2E2E-F-FF;;F;;;;;D!e++'++E22))D&))Csz??SEA355M'''		$	22IC	()))D99T29--DC$$$D.7->F#%IT!W~~ " "?C?T?TUY[def[g?h?h<	:y*!88Z'EKK	*$CCCCCCCC		!)#VY==@@@AAAr,   c           
        |}|                      |          \  }}|t          |j        |j        z             z  }|                     |t          j                  }|t          |j                  z  }|                     |t          j        |d                   }|t          |j                  z  }|                     |t          j                  }|t          |j                  z  }|                     |t          j                  }|t          |j                  z  }t          |t          t          |          d          ||||||gg d          S )Nr   r%   r&   )r
      rZ      )
r   r   r   r_   r]   r`   ro   r   r   bytes)	r1   r   ru   name_len	name_datan_dimsdims	raw_dtypeoffset_tensors	            r*   _get_tensor_info_fieldz!GGUFReader._get_tensor_info_field   s3    #mmD11)HOi&66777 4++FM""" yyry&)44DK    IIdBI..	I$%%% 		$	22M()))i  W555y&$	=ILL	
 
 	
r,   ru   c                .   t          |          D ]}|}|                     |          \  }}|t          |j        |j        z             z  }|                     |t
          j                  }|t          |j                  z  }|||g}t          |          |                     ||d                   \  }	}
}}||
z  }| 	                    t          |t          t          |          d          |fd|D             |          d           ||	z  }|S )Nr   r%   r&   c                    g | ]}|z   S r.   r.   r   s     r*   r3   z,GGUFReader._build_fields.<locals>.<listcomp>-  s    777Sy777r,   T)r   )r   r   r   r   r_   r]   r`   r   r   rm   r   r   r   )r1   ru   r   _r   kv_klenkv_kdataraw_kv_typer   
field_sizefield_parts
field_idxsfield_typesr   s                @r*   rq   zGGUFReader._build_fields  s6   u 	 	AI $d 3 3GXC8999D))D")44KC*+++D-4h,LEE

I?C?T?TUY[fgh[i?j?j<JZ[ E[E(OO8887777J777          JDDr,   tuple[int, list[ReaderField]]c                    g }t          |          D ]M}|                     |          }|t          d |j        D                       z  }|                    |           N||fS )Nc              3  >   K   | ]}t          |j                  V  d S r   r   r   s     r*   r   z0GGUFReader._build_tensor_info.<locals>.<genexpr>7  s,      AATDK((AAAAAAr,   )r   r   r   r   r   )r1   ru   r   tensor_fieldsr   rK   s         r*   rr   zGGUFReader._build_tensor_info3  st    u 	( 	(A//55ECAAU[AAAAAAD  '''']""r,   
start_offsrk   list[ReaderField]Nonec                   g }t                      }|D ]7}|j        \  }}}}	}
}t          t          |          d          }||v rt	          d|           |                    |           t          |
d                   }t          t          j	        |	                    }t          t          |	                                                    }t          |         \  }}||z  |z  }t          ||d         z             }|t          j        k    r|}t          j        }n|t          j        k    r|}t          j        }n|t          j        k    r|}t          j        }n|t          j        k    r|}t          j        }n{|t          j        k    r|}t          j        }n\|t          j        k    r|}t          j        }n=|t          j        k    r|}t          j        }n|}t          j        }t;          ||          }|                    t?          |||	||||                      |||          !                    |          |                     9|| _"        d S )Nr%   r&   z"Found duplicated tensor with name r   )r   rE   rF   rG   rH   rI   r   rK   )#setr   r   r   ra   addr   r   r]   prodtuplereversedr5   r   F16float16F32float32F64float64I8int8I16int16I32int32I64int64r   r   r   rD   r_   reshaperl   )r1   r   rk   rl   tensor_namesrK   	_name_lenr   _n_dimsr   r   r   tensor_name	ggml_typen_elemsnp_dims
block_size	type_sizerH   	data_offs
item_count	item_types                         r*   rt   zGGUFReader._build_tensors;  sP   uu 0	 0	ELQKIIy'4MeI..7CCCKl** !Sk!S!STTT[))),Yq\::I"'$--((GHT[[]]3344G$4Y$?!J		)Z7GJq)99::I0444$
J		2666$
J		2666$
J		2555$
G		2666$
H		2666$
H		2666$
H		$
H	3GYGGNN<"'$!'yyIzBBJJ7SS	 	 	 	 	 	 	 r,   )rR   )rS   rT   rU   rV   )r   r   r"   r   )r0   r   r"   rD   )r
   N)
r   r   rc   r   r   r   rY   r   r"   rJ   )F)rK   r   r   r   r"   r   )r   r   r"   r   )r   r   r   r   r"   r   )r   r   r"   r   )ru   r   r   r   r"   r   )ru   r   r   r   r"   r   )r   r   rk   r   r"   r   )/r>   r?   r@   rO   rA   r   rP   r   UINT8r]   r   INT8r   UINT16uint16INT16r   rn   r`   INT32r   FLOAT32r   rp   ro   INT64r   FLOAT64r   BOOLbool_rQ   r   r   npt	DTypeLiker   r   r   r_   rm   r   r   r   rq   rr   rt   r.   r,   r*   rM   rM   o   s        $'J''''+I++++ 	rxrwryrxryrxrzryrxrzrx@    22 22 22 22 22h '%
/
/
/C* * * *! ! ! ! rvo o o o o	P 	P 	P 	P 	P> > > >$B $B $B $BL
 
 
 
<   *# # # #4 4 4 4 4 4r,   rM   ))
__future__r   loggingosrf   collectionsr   typingr   r   r   r   r	   numpyr]   numpy.typingr  quantsr   r>   pathlibr   rS   insertr   __file__parentgguf.constantsr   r   r   r   r   r   r   	getLoggerr   re   r   rD   rM   r.   r,   r*   <module>r     s  
 # " " " " "  				 



 # # # # # # ; ; ; ; ; ; ; ; ; ; ; ; ; ;           - - - - - -z HOOAss44>>0788999                  
	8	$	$- : : : : :* : : :z    :   @ @ @ @ @ @ @ @ @ @r,   