
    >CiU                    (   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
  S\R                  ;  a  \" \5      R                  R                  R                  R                  S-  R                  5       (       aF  \R                  R!                  S \" \" \5      R                  R                  R                  5      5        S SKJrJrJr  \R,                  " S5      rSS	 jrSS
 jrSS jrSS jrSS jrS rSS jrSS jr\ S:X  a  \" 5         gg)    )annotationsN)Path)AnyNO_LOCAL_GGUFzgguf-py)
GGUFReaderGGUFValueTypeReaderTensorz	gguf-dumpc                r    U R                   R                  nU R                  S:X  a  US:X  a  SOSnX!4$ UnX!4$ )NSLITTLEBIG)	endianessname
byte_order)readerfile_endianhost_endians      P/home/james-whalen/.local/lib/python3.13/site-packages/gguf/scripts/gguf_dump.pyget_file_host_endianr      sJ    ""''KC*h6eH %% "%%    c                X   [        U 5      u  p#[        SU SU S35        [        S[        U R                  5       S35        [	        U R                  R                  5       S5       GH  u  pEUR                  (       d  SnOUR                  S   [        R                  :X  aG  [        UR                  5      S-
  nS	U-  [        UR                  S
   R                  5      -   SU-  -   nO"[        UR                  S
   R                  5      nSUS SUS S[        UR                  5      S SUR                   3nUR                  (       a  UR                  S   n	U	[        R                  :X  aE  UR                  5       n
[        U
5      S:  a  U
S S S-   n
USR                  [        U
5      5      -  nOXR                   ;   a#  USR                  UR                  5       5      -  nOX[        UR                  [#        S5      5      5      n
[        UR                  5      S:  a  U
S S
 S-   n
USR                  U
5      -  n[        U5        GM     UR$                  (       a  g [        S[        U R&                  5       S35        [	        U R&                  S5       H  u  pKSR)                  S [+        UR,                  5      S/S[        UR,                  5      -
  -  -    5       5      n[        SUS SUR.                  S SU SUR0                  R                  S SUR                   3
5        M     g )Nz
* File is z  endian, script is running on a z endian host.z
* Dumping z key/value pair(s)   N/Ar   []z  5z: 10z | 8<   9   z...z = {0}   z, ...]z
 tensor(s), c              3  D   #    U  H  nS R                  U5      v   M     g7f)z{0:5}N)format).0ds     r   	<genexpr> dump_metadata.<locals>.<genexpr>A   s     m:lQw~~a00:ls       7)r   printlenfields	enumeratevaluestypesr   ARRAYstrr   dataSTRINGcontentsr%   reprgguf_scalar_to_npslice
no_tensorstensorsjoinlistshape
n_elementstensor_type)r   argsr   r   nfieldpretty_type
nest_countlog_message	curr_typecontenttensor
prettydimss                r   dump_metadatarK       s   3F;K	J{m#CK=P]
^_	Js6==)**<
=>fmm224a8{{K[[^}222U[[)A-J
*SR1E1E-FFzIYYKekk"o223K1Q%r+b!1S_Q4Gs5::,W;;AIM000..*w<"$%crlU2GxtG}==666xu~~/?@@u~~eAh78uzz?Q&%crlX5Gxw77k1 92 	Js6>>*+:
67v~~q1	YYm$v||:LPQsVWZ]^d^j^jZkVkOl:lmm
1Q%r&++B/s:,c&BTBTBYBYZ[A\\_`f`k`k_lmn 2r   c                   SS K n[        U 5      u  p40 n0 nUR                  UUUS.n[        U R                  R                  5       5       H  u  pUU	R                  (       a  U	R                  S   R                  OSU	R                  S.n
XU	R                  '   U	R                  S S [        R                  /:X  aT  U	R                   Vs/ s H  oR                  PM     snSS  U
S'   UR                  (       d  M  U	R                  5       U
S'   M  U	R                  5       U
S'   M     UR                  (       dq  [        U R                  5       HX  u  pUUR                  R!                  5       UR"                  R                  UR$                  R                  S.XlR                  '   MZ     UR'                  U[(        R*                  5        g s  snf )	Nr   )filenameendianmetadatar;   UNKNOWN)indextypeoffsetr   array_typesvalue)rQ   r>   rR   rS   )jsonr   modelr/   r.   r0   r1   r   rS   r   r2   
json_arrayr6   r:   r;   r>   tolistr@   rC   dumpsysstdout)r   rA   rV   r   r   rO   r;   resultidxrC   currtrI   s                r   dump_metadata_jsonra   E   sk   3F;K!H GJJ	F   4 4 67
+0;;EKKN''Ill 

  $;;r?}223338;;"?;a66;"?"CD??!NN,DM!NN,DM 8 ??$V^^4KC,,.**// ,,--	$GKK  5 	IIfcjj! #@s   Gc                  ^^^^ SS jmSS jm0 m[        U 5       Hy  u  p#[        U VVVs/ s H:  oDR                  5         H#  u  pVXSS   :X  d  M  [        [	        U5      5      PM%     M<     snnnSS9S-   n[        US   5      S-   nXx::  a  UOUTU'   M{     / n	U	R                  SR                  UU4S	 j[        U 5       5       5      5        U	R                  SR                  UU4S
 j[        U 5       5       5      5        U H8  mU	R                  SR                  UUU4S j[        U 5       5       5      5        M:     Sn
U	 H  nU
SU S3-  n
M     U
$ s  snnnf )Nc                    US:X  a  UR                  U 5      $ US:X  a  UR                  U S-
  5      S-   $ US:X  a  SUR                  U S-
  5      -   $ SUR                  U S-
  5      -   $ )Ncenterrightr    left)rd   rjustljust)padding	alignModestrVals      r   strAlign7markdown_table_with_alignment_support.<locals>.strAlignm   sq     ==))'!<<!,s22& gk222gk222r   c                x    US:X  a  SSU S-
  -  -   S-   $ US:X  a  SU S-
  -  S-   $ US:X  a  SSU S-
  -  -   $ SU -  $ )Nrd   :-   re   r   rg    )rj   rk   s     r   	dashAlign8markdown_table_with_alignment_support.<locals>.dashAlignw   se     !,,s22'!'A+&,,& !,,,'?"r   key_namer   defaultrr   header_name|c           	   3  x   >#    U  H/  u  pT" TU   UR                  S 5      [        US   5      5      v   M1     g7f)alignry   Ngetr3   )r&   rQ   columnEntryrowsPaddingrm   s      r   r(   8markdown_table_with_alignment_support.<locals>.<genexpr>   sM       b  La  vHuz+e"4koog6NPST_`mTnPopp  Las   7:c              3  ^   >#    U  H"  u  pT" TU   UR                  S 5      5      v   M$     g7f)r|   N)r~   )r&   rQ   r   rt   r   s      r   r(   r      s:       B  lAUgUZ;u#5{w7OPP  lAs   *-c           
   3  ~   >#    U  H2  u  pT" TU   UR                  S 5      [        TUS      5      5      v   M4     g7f)r|   rv   Nr}   )r&   rQ   r   itemr   rm   s      r   r(   r      sW       i  Sh  }O  }BXk%&8+//':RTWX\]his]tXuTvww  Shs   := z|
)rj   intrk   
str | Nonerl   r3   )rj   r   rk   r   )r/   maxitemsr-   r3   appendr<   )
header_mapr4   rQ   r   r'   kvpadCountheaderPadCountrowstableStringrowrt   r   r   rm   s               @@@@r   %markdown_table_with_alignment_supportr   i   sz   3# K'
3ThTggida1\fPgKgCFiThrstwxx[781</7/I^xE 4 DKK  b  LU  V`  La  b  b  cKK  Bktu  lA  B  B  C CHH  i  S\  ]g  Sh  i  i  	j  K3%s|#  % is   !EEc                    U S:  a  U S-  nSnO<U S:  a  U S-  nSnO.U S:  a  U S-  nS	nO U S
:  a  U S-  nSnOU S:  a  U S-  nSnOU nSnU S:  a  SOS [        U5       U 3$ )Ng  4&kCgV瞯<Qg   mBg-q=Tg    eAg&.>Bg    .Agư>Mg     @@gMbP?Kr   ~)round)countscaled_amountscale_suffixs      r   element_count_rounded_notationr      s    t|				 S[cb)%*>)?~NNr   c                   U R                  S5      n0 SS_SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$S%S&S'S(S)S*S+S,S-S.S/.En/ nU Hh  nUR                  5       R                  5       nXR;   a#  UR                  X%   R	                  5       5        MI  UR                  UR	                  5       5        Mj     S0R                  U5      $ )1N.
token_embdzToken embeddingpos_embdzPosition embeddingoutput_normzOutput normalizationoutputOutput	attn_normzAttention normalizationattn_norm_2attn_qkvzAttention query-key-valueattn_qzAttention queryattn_kzAttention keyattn_vzAttention valueattn_outputzAttention outputffn_normz"Feed-forward network normalizationffn_upzFeed-forward network "up"ffn_gatezFeed-forward network "gate"ffn_downzFeed-forward network "down"ffn_gate_inpzMExpert-routing layer for the Feed-forward network in Mixture of Expert modelsffn_gate_expzHFeed-forward network "gate" layer per expert in Mixture of Expert modelszHFeed-forward network "down" layer per expert in Mixture of Expert modelszFFeed-forward network "up" layer per expert in Mixture of Expert modelsz#State space model input projectionszState space model rolling/shiftz+State space model selective parametrizationz#State space model state compressionz!State space model skip connectionzState space model time stepz#State space model output projectionBlockEncoderDecoder)ffn_down_exp
ffn_up_expssm_in
ssm_conv1dssm_xssm_assm_dssm_dtssm_outblkencdecrf   )splitstriplowerr   titler<   )r   wordsabbreviation_dictionaryexpanded_wordsword	word_norms         r   translate_tensor_namer      s   JJsOE'( 	- 	(	
 	. 	0 	/ 	# 	/ 	# 	) 	8 	- 	1 	1  	g!" 	b#$ c^77>64/8;@ NJJL&&(	/!!"9"D"J"J"LM!!$**,/  88N##r   c                h  ^0 [        U 5      u  p#SnUSUR                   S3-  nUSU S3-  nUS-  nUS-  nUS[        U R                  5       S	3-  nUS-  n/ n[	        U R                  R                  5       S
5       GH-  u  pgUR                  (       d  SnOUR                  S   [        R                  :X  aG  [        UR                  5      S
-
  n	SU	-  [        UR                  S   R                  5      -   SU	-  -   nO"[        UR                  S   R                  5      nS n
[        UR                  5      nSn[        UR                  5      S
:X  a  UR                  S   nU[        R                  :X  ai  Sn[        [        UR                  S   5      SS9n[        U5      U:  a.  U
" US US-   5      nU
" X* S-  S  5      nSR                  UUS9nGOU
" U5      nGOXR                   ;   a  [        UR                  S   S   5      nGOUR                  S   [        R                  :X  Ga]  UR                  S
   n/ nU[        R                  :X  a  [#        SU5      n[%        U5       H  nSn[        [        UR                  SUU-
  S
-
  S-  -
     5      SS9n[        U5      U:  a-  U
" US US-   5      nU
" X* S-  S  5      nSR                  UUS9nOU
" U5      nUR'                  U5        M     O`XR                   ;   aQ  [#        SU5      n[%        U5       H6  nUR'                  [        UR                  SUU-
  S
-
  -
     S   5      5        M8     SSR)                  U5      R+                  5        U[        U5      :  a  SOS S3nUR'                  XhXR                  US.5        GM0     SS S!S".S#S$S%S".S&S'S!S".S(S)S%S".S*S+S%S"./nU[-        UU5      -  nUS-  nUR.                  (       Gd  / n0 n0 n[1        S, U R2                   5       5      n[	        U R2                  5       H  u  nnUR                  R5                  S-5      nS.nUS   S/:X  a  US    S-US
    3nO5US   S0;   a  US
   S/:X  a  US    S-US
    S-US    3nOUS   S0;   a  US    nUU;  a  / UU'   UR'                  U5        UU   R'                  U5        UUUR                  '   M     US1[7        U5       S23-  nUS3U S43-  nUS-  nU HK  nUU   n[1        S5 U 5       5      nUS6[9        U5       S7[7        U5       S8UR;                  S-S95       S:3-  nMM     US-  nUS;-  nUS-  nUS<-  nUS-  n/ n [	        U R2                  5       H\  u  nnS=R                  UR<                  5      n!S=R                  UR>                  5      n"U R'                  UUR                  U!U"S>.5        M^     S?S@S!S".SASBS%S".SCSDS!S".SESFS!S"./n#U[-        U#U 5      -  nUS-  nU GH  nUU   n[1        SG U 5       5      nUU-  SH-  n$USIUR;                  S-S95       SJ[9        U5       SK[7        U5       SL3-  nS
n%S
n&0 m0U H  n[A        U%[        [        [7        URB                  5      5      5      5      n%[A        U&[        [        URB                  5      5      5      n&[	        [E        URF                  5      S
/SM[        URF                  5      -
  -  -   5       H7  u  n'n([A        T0RI                  U'S
5      [        [        U(5      5      5      T0U''   M9     M     / n)U GH  n[9        UR                  R;                  SNSO5      R;                  SPSQ5      5      n*SRR)                  U04SS j[	        [E        URF                  5      S
/SM[        URF                  5      -
  -  -   5       5       5      n+ST[7        URB                  5      SUU% 3 SV3n,U, SWURB                  SUU& 3 3n-URJ                  R                   n.U)R'                  UUR                     UR                  U*U-U+U.SX.5        GM     S?S@S!S".SASBS%S".SYSZS%S".S[S\S%S".S]S^S%S".S_S`S%S"./n/U[-        U/U)5      -  nUS-  nUSaU Sb[7        U5      Sc SdU S3-  nUSeU$Sf Sg3-  nUSh-  nGM     [M        U5        g )iNr   z# z - GGUF Internal File Dump

z
- Endian: z endian

z## Key Value Metadata Store

z
There are z key-value pairs in this file
r   r   r   r   r   r   c                    [        S [        R                  " SU 5       5       SS9nSUS-   -  nU R                  S5      (       d  U R	                  S5      (       a  SU  S3n U U  U 3$ )Nc              3  V   #    U  H  n[        UR                  S 5      5      v   M!     g7f)r   N)r-   group)r&   matchs     r   r(   Ndump_markdown_metadata.<locals>.escape_markdown_inline_code.<locals>.<genexpr>   s"      cBbU[[^!4!4Bbs   ')z`+r   rw   `r   rf   )r   refinditer
startswithendswith)value_stringmax_backticksinline_code_markers      r   escape_markdown_inline_code;dump_markdown_metadata.<locals>.escape_markdown_inline_code   sz       c"++eUaBb cmnoM!$(9!: &&s++|/D/DS/I/I!"<.2(),8J7KLLr   r    zutf-8)encodingrr   z{head}...{tail})headtail         z[ r#   z, ...z ])rB   rD   total_elements
field_namerU   rB   POSre   )rv   ry   r|   rD   TYPErg   r   Countr   KeyrU   Valuec              3  8   #    U  H  oR                   v   M     g 7fNr?   r&   rI   s     r   r(   )dump_markdown_metadata.<locals>.<genexpr>?  s     L^6..^   r   baser   )r   r   z## Tensors Overview z Elements

z)Total number of elements in all tensors: z
 Elements
c              3  8   #    U  H  oR                   v   M     g 7fr   r   r   s     r   r(   r   ^        Iv!2!2r   z- [z Tensor Group - z Elements](#_z)
z### Tensor Data Offset
zJThis table contains the offset and data segment relative to start of file
z{0:#16x})t_id
layer_namedata_offset	data_sizer   T_IDr   zTensor Layer Namer   zData Offset (B)r   zData Size (B)c              3  8   #    U  H  oR                   v   M     g 7fr   r   r   s     r   r(   r   z  r   r   d   z### <a name="z">z Tensor Group : z Elements</a>

r*   z.weightz.(W)z.biasz.(B)z x c              3  N   >#    U  H  u  p[        U5      S TU    3 v   M     g7f)>N)r3   )r&   ir'   prettify_dimension_max_widthss      r   r(   r     s=       .i  khbfbcQ:WXY:Z9[7[0\.]  khs   "%(r   )rf   )r   r   human_layer_nameelement_countpretty_dimensionr@   r  z Human Friendly Tensor Layer Namer  Elementsr  Shaper@   Typez- Total elements in z: (z>4z) z - Percentage of total elements: z.2fz%
z

)'r   rW   r-   r.   r/   r0   r1   r   r2   r3   r   r4   r5   bytespartsr%   r8   minranger   r<   r   r   r:   sumr;   r   r   r   replacer   n_bytesr   r?   r=   r>   r~   r@   r,   )1r   rA   r   r   markdown_contentkv_dump_tablerB   rC   rD   rE   r   r   rU   rG   truncate_lengthr   r   r   array_elementsrender_elementelement_poskv_dump_table_header_maptensor_prefix_ordertensor_name_to_keytensor_groupskeyrI   tensor_componentstensor_group_namer   r;   group_elementstensor_mapping_tabledata_offset_prettydata_size_pretty tensors_mapping_table_header_mapgroup_percentageprettify_element_est_count_sizeprettify_element_count_sizer   dimension_sizetensor_dump_tablehuman_friendly_namer  element_count_estelement_count_stringtype_name_stringtensor_dump_table_header_mapr   s1                                                   @r   dump_markdown_metadatar+     s
   3F;K"TZZL(FGG*[M;;99*S%7$88WXX02Mfmm224a8{{K[[^}222U[[)A-J
*SR1E1E-FFzIYYKekk"o223K
	M UZZu{{q AIM000"$"5R#9GL|$66|DY_XYEY7Z[D6|DTXYDYDZ7[\D-44$T4JE7EE666EKKOA./{{1~!4!44!KKN	!# 4 44%(N%;N',^'<*,'*5R>T_C_bcCcghBh=h1i+ju|'}|,>#>|La_`aMa?b#cD#>|L\`aLaLb?c#dD$5$<$<$T$<$RE$?$ME&--e4 (= ":"::%(N%;N',^'<&--c%++bNU`D`cdDd>e2fgh2i.jk (= TYY~6<<>?>\_`n\oKouw?xxz{!Q_nxnx  CH  I  	J{ 9@ e'R!f&Q$g'R e&Qg&Q  =>VXeff???)+-/79LV^^LL %V^^4KC & 1 1# 6 !' #u,'8';&<A>OPQ>R=S$T!"1%7<Ma<PTY<Y'8';&<A>OPQ>R=SSTUfghUiTj$k!"1%7'8';&<! !535/0#**+<= +,33F;.1v{{+' 5, 	23QR`3a2bboppGGWWbccD (E#E*G  I IIN#&;E&B%CCSTr  tB  UC  TD  DP  QV  Q^  Q^  _b  dg  Qh  Pi  il  !m  m )
 	D 66D iiD ;=$V^^4KC!+!2!263E3E!F)00@ ''&++]o  ~N  )O  P 5 fT[\$6ITZ[%6GT[\#oT[\	,
( 	ABbdxyyD (E#E*G  I IIN->D.sC1H0IMbchMiLjjz  |Z  [i  |j  {k  k|  !}  } 45+/0'<>)!256UWZ[^_}  E  P  P  `Q  \R  XS  3T/.12MsSVW]WhWhSiOj.k+)243EqSVW]WcWcSdOdHe3e)f%A~7:;X;\;\]^_`;acfgjkygzc{7|1!4 *g " =?!&;FKK<O<OPY[a<b<j<jkrtz<{&|##(::  .ijstxy  zF  zF  uG  KL  JM  QR  UX  Y_  Ye  Ye  Uf  Qf  Jg  ug  kh  .i  $i &'(FvGXGX(YZ[\{[|Y|'}}~$!*;)<Af>O>OPQRmQnOn=o'p$&,&8&8&=&=%> !((1CFKK1P_e_j_j  @S  ey  N^  n~  *  @ " #fjqr(>Qjpq.>`jpq+jjpq.gjpq)fjpq,(  EFbdu vv$"6ugSA_`nAopr@ssu  wE  vF  FH  !I  I"BCSTWBXX[ \\&Q )T 

r   c                 J   [         R                  " SS9n U R                  S[        SS9  U R                  SSSS	9  U R                  S
SSS	9  U R                  SSSS	9  U R                  SSSS	9  U R                  SSSS	9  U R                  SSSS	9  U R                  SSSS	9  U R	                  [        [        R                  5      S:  a  S OS/5      n[        R                  " UR                  (       a  [        R                  O[        R                  S9  UR                  (       dU  UR                  (       dD  UR                  (       d3  UR                   (       d"  ["        R%                  SUR&                   35        [)        UR&                  S5      nUR                  (       a  [+        X!5        g UR                  (       a  [-        X!5        g UR                  (       a  [/        UR                  5        g UR                   (       a  [/        UR0                  5        g [3        X!5        g )NzDump GGUF file metadata)descriptionrW   zGGUF format model filename)rR   helpz--no-tensors
store_truezDon't dump tensor metadata)actionr.  z--jsonzProduce JSON outputz--json-arrayz/Include full array values in JSON output (long)z--data-offsetzStart of data offsetz--data-alignmentz-Data alignment applied globally to data fieldz
--markdownzProduce markdown outputz	--verbosezincrease output verbosityr   z--help)levelz* Loading: r)argparseArgumentParseradd_argumentr3   
parse_argsr-   r[   argvloggingbasicConfigverboseDEBUGINFOrV   markdownr   data_alignmentloggerinforW   r   ra   r+  r,   	alignmentrK   )parserrA   r   s      r   mainrC    s   $$1JKF
Eab
|B^_
|BWX
|Bst
<F\]
*<Fuv
|B[\
|B]^S]Q%6TXJGDt||gmmN99T]]43C3CDL_L_k$**./

C(Fyy6(	v,			f  !			ff#r   __main__)r   r   returnztuple[str, str])r   r   rA   zargparse.NamespacerE  None)r   zlist[dict[str, str]]r4   zlist[dict[str, Any]])r   r   rE  r3   )rE  rF  )!
__future__r   r8  r3  osr   r[   pathlibr   typingr   environ__file__parentexistspathinsertr3   ggufr   r   r	   	getLoggerr?  r   rK   ra   r   r   r   r+  rC  __name__rs   r   r   <module>rT     s    "   	 	 
   "**$$x.*?*?*F*F*M*M*T*TW`*`)h)h)j)jHHOOAs4>0077>>?@ 8 8			;	'&"oJ!"H-`O8,$^~B$@ zF r   