
    W|h              	          S SK r S SKrS SKrS SKrS SKrS SKrS SKr S SKr\R                  S:  a  \r\R                  " \R                  \R                  5        \R                  " SS9r\R#                  SSSS	S
9  \R#                  SSSSSSS9  \R#                  SSSSSS
9  \R%                  5       u  rr\" \5      S:w  a  \R-                  S5        O\S    rS rS rS rS rS r\ R.                  R;                  \5      (       d  \	" S\-  5      e\" \5      r\" \5      r\R@                  (       d  \" \5        \" \S   \5        g! \ a	    \	" S5      ef = f)    Nz6[ERROR] Please make sure whisper is installed properly)   r   z
%prog path)usagez--prettyF
store_truez4Show human-readable timestamps instead of unix times)defaultactionhelpz-tz--time-formatstorestringtime_formatz5Time format to use with --pretty; see time.strftime())r   typedestr   z-rz--rawzFDump value only in the same format for whisper-update (UTC timestamps)   zrequire one input file namec                     [         R                  " U [         R                  5      n[        R                  " U[         R                  " U5      R
                  [        R                  S9n[         R                  " U5        U$ )N)prot)osopenO_RDONLYmmapfstatst_size	PROT_READclose)filenamefdmaps      S/home/james-whalen/.local/lib/python3.13/site-packages/../../../bin/whisper-dump.py	mmap_filer   (   sJ    	wwx%"		"bhhrl**@#((2,	*    c                     [         R                  " [        R                  U S [        R                   5      u  pp4/ n[        R                  n[        U5       H~  n [         R                  " [        R                  XU[        R                  -    5      u  pn
UU	U
X-  U
[        R                  -  S.nUR                  U5        U[        R                  -  nM     [        R                  R                  US5      UUUS.nU$ ! [         R
                  [        [        4 a    [        R                  " S5      ef = f! [         R
                  [        [        4 a    [        R                  " SU-  5      ef = f)NzUnable to unpack headerz"Unable to read archive %d metadata)offsetsecondsPerPointpoints	retentionsizeaverage)aggregationMethodmaxRetentionxFilesFactorarchives)structunpackwhispermetadataFormatmetadataSizeerror
ValueError	TypeErrorCorruptWhisperFilexrangearchiveInfoFormatarchiveInfoSize	pointSizeappendaggregationTypeToMethodget)r   aggregationTyper'   r(   archiveCountr)   archiveOffsetir    r!   r"   archiveInfoheaders                r   read_headerr@   /   sa   @g,,c2G73G3G.HI @_L
 (&&-,aQ*0--!!-'*A*AAB+'v ("+w(((K OOK W,,,M#  ( !88<<_iX  	& 
-? ,,
I	. @

$
$%>
??@ LL*i0 Q&&'Ka'OPPQs   9D ;D:6D7:9E3c                     [        S5        [        SU S   -  5        [        SU S   -  5        [        SU S   -  5        [        S5        [        U S	   5        g )
Nz
Meta data:z  aggregation method: %sr&   z  max retention: %dr'   z  xFilesFactor: %gr(    r)   )printdump_archive_headers)r?   s    r   dump_headerrE   U   sX    "V,?%@@A~ 667vn556)vj)*r   c                    [        U 5       Hs  u  p[        SU-  5        [        SUS   -  5        [        SUS   -  5        [        SUS   -  5        [        SUS	   -  5        [        S
US   -  5        [        S5        Mu     g )NzArchive %d info:z  offset: %dr    z  seconds per point: %dr!   z  points: %dr"   z  retention: %dr#   z
  size: %dr$   rB   )	enumeraterC   )r)   r=   archives      r   rD   rD   ^   s    h'ja	
q
 !	.78,
,-	
#g.?&@
@A	.78,
,-	
gk2
23	,
()	"I (r   c           	         [        U 5       GHE  u  p#UR                  (       d  [        SU-  5        US   n[        US   5       GH  n[        R
                  " [        R                  [        XD[        R                  -    5      u  pgUR                  (       a`  UR                  (       a8  [        R                  " U5      n[        R                  " UR                  U5      nO"[        R                  " U5      nO[!        U5      nUR                  (       a  [        SXg4-  5        O[        SXXU4-  5        U[        R                  -  nGM     [          GMH     g )NzArchive %d data:r    r"   z%s:%.35gz%d: %s, %10.35g)rG   rawrC   r3   r*   r+   r,   pointFormatr   r6   prettyr   time	localtimestrftimectimestr)	r)   optionsr=   rH   r    point	timestampvaluetimestrs	            r   dump_archivesrW   i   s   h'ja;;"#XF)*!==FG---.y 
NN9-'MM'"5"5w?'JJy)'i.	jI--.55"99:!!!f# +$ 
E- (r   z![ERROR] File "%s" does not exist!r)   )!r   r   rM   r*   signalsysoptparser,   ImportError
SystemExitversion_inforanger3   SIGPIPESIG_DFLOptionParseroption_parser
add_option
parse_argsrR   argslenr/   pathr   r@   rE   rD   rW   existsr   r?   rJ    r   r   <module>rj      s   
     
 M v& fnnfnn -%%,<=   eL=  ?   h]>  @   |O  Q  **,$t9>34	a$#L+
4 
ww~~d6=>>o	S	{{f fZ ' *{  MKLLMs   E
 
E