o
    q¨Êh©?  ã                   @   sü  d dl mZ dZdaedkrüd ad dl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mZ G dd„ deƒZejZdd	„ Zd
d„ Zdd„ Zdd„ Zd*dd„Zdd„ Zdd„ Zd+dd„Zdd„ Zdd„ Zejdd… Zesreeƒ ed   ¡ Z e dkr½d dl!Z!d dl"Z!edd… ZdZ#e! $e#¡Z%e%j&egef¢R Ž Z'e(d e)e'ƒƒ e% *¡  e!j+ ,e#¡Z+e+ -¡  e+ .d!d"¡ e+ /d#¡ dS e d$kræd dl0Z0edd… Ze0 1d%d&¡ d dl2Z2e2 3d&¡Z4e4 -¡  .d'¡ /d(¡ dS e d)krödaeedd… ƒ dS eeƒ dS dS ),é    )Úprint_functionaj  
Commands:

2rows           Print the contents of first and last row in each sheet
3rows           Print the contents of first, second and last row in each sheet
bench           Same as "show", but doesn't print -- for profiling
biff_count[1]   Print a count of each type of BIFF record in the file
biff_dump[1]    Print a dump (char and hex) of the BIFF records in the file
fonts           hdr + print a dump of all font objects
hdr             Mini-overview of file (no per-sheet information)
hotshot         Do a hotshot profile run e.g. ... -f1 hotshot bench bigfile*.xls
labels          Dump of sheet.col_label_ranges and ...row... for each sheet
name_dump       Dump of each object in book.name_obj_list
names           Print brief information for each NAME record
ov              Overview of file
profile         Like "hotshot", but uses cProfile
show            Print the contents of all rows in each sheet
version[0]      Print versions of xlrd and Python and exit
xfc             Print "XF counts" and cell-type counts -- see code for details

[0] means no file arg
[1] means only one file arg i.e. no glob.glob pattern
NÚ__main__)ÚxrangeÚREPRc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
LogHandlerc                 C   s   || _ d | _d| _d S ©Nr   )Ú
logfileobjÚfileheadingÚshown)Úselfr   © r   úF/var/www/html/env/lib/python3.10/site-packages/../../../bin/runxlrd.pyÚ__init__1   s   
zLogHandler.__init__c                 C   s   || _ d| _d S r   )r	   r
   )r   r	   r   r   r   Úsetfileheading6   s   
zLogHandler.setfileheadingc                 C   s0   | j r| js| j | j ¡ d| _| j |¡ d S )Né   )r	   r
   r   Úwrite)r   Útextr   r   r   r   :   s   zLogHandler.writeN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   /   s    r   c           
      C   s²   | j r
t| |¡ƒ}|sd S |rtƒ  | jr8t| |||ƒD ]\}}}}|r5tdt |¡|d |||f ƒ qd S t| |||ƒD ]\}}}}	|rVtdt |¡|d ||f ƒ q?d S )Nz%cell %s%d: type=%d, data: %r, xfx: %sr   zcell %s%d: type=%d, data: %r)Úragged_rowsÚrangeÚrow_lenÚprintÚformatting_infoÚget_row_dataÚxlrdÚcolname)
ÚbkÚshÚrowxÚcolrangeÚprintitÚcolxÚtyÚvalÚcxfxÚ_unusedr   r   r   Úshow_rowB   s"   
ÿ€þ€þr(   c                 C   sæ   g }| j }| |¡}| |¡}|D ]_}|| }	|| }
| jr't| ||¡ƒ}nd}|	tjkrVzt |
|¡}W n0 tj	yU } zdt
|ƒj|f }tj}	W Y d }~nd }~ww |	tjkretj |
d|
 ¡}n|
}| ||	||f¡ q|S )NÚ z%s:%sz<Unknown error code 0x%02x>)ÚdatemodeÚ	row_typesÚ
row_valuesr   ÚstrÚcell_xf_indexr   ÚXL_CELL_DATEÚxldate_as_tupleÚXLDateErrorÚtyper   ÚXL_CELL_ERRORÚerror_text_from_codeÚgetÚappend)r   r   r    r!   ÚresultÚdmodeÚctysÚcvalsr#   ÚctyÚcvalr&   ÚshowvalÚer   r   r   r   Q   s.   


€þ
r   c                 C   sÈ   t ƒ  t dtj| j | jf ƒ t d| j| j| jf ƒ t d| j ƒ t d| j	 ƒ t d| j
| j| jf ƒ t d| j ƒ | jrRt dt| jƒt| jƒt| jƒf ƒ tjs_t d| j| jf ƒ t ƒ  d S )	NzBIFF version: %s; datemode: %sz*codepage: %r (encoding: %s); countries: %rzLast saved by: %rzNumber of data sheets: %dz+Use mmap: %d; Formatting: %d; On demand: %dzRagged rows: %dzFORMATs: %d, FONTs: %d, XFs: %dz8Load time: %.2f seconds (stage 1) %.2f seconds (stage 2))r   r   Úbiff_text_from_numÚbiff_versionr*   ÚcodepageÚencodingÚ	countriesÚ	user_nameÚnsheetsÚuse_mmapr   Ú	on_demandr   ÚlenÚformat_listÚ	font_listÚxf_listÚoptionsÚsuppress_timingÚload_time_stage_1Úload_time_stage_2)r   r   r   r   Ú	bk_headerj   s,   ÿÿÿÿ
ÿ
rP   c                 C   s<   t dƒ tt| jƒƒD ]}| j| }|jd| dd� qd S )NzFonts:z== Index %d ==é   )ÚheaderÚindent)r   r   rH   rJ   Údump)r   ÚxÚfontr   r   r   Ú
show_fonts}   s
   
þrW   c                 C   s~   t | ƒ | jdk rtdƒ d S | j}tdt|ƒ ƒ |D ] }|r,|jtjd|j d� qtd|j|j	|j
|j|jf ƒ qd S )Né2   z(Names not extracted in this BIFF versionzName list: %d entriesz"
=== Dump of name_obj_list[%d] ===)rR   z*[%d]	Name:%r macro:%r scope:%d
	result:%r
)rP   r@   r   Úname_obj_listrH   rT   ÚsysÚstdoutÚ
name_indexÚnameÚmacroÚscoper7   )r   rT   ÚnlistÚnobjr   r   r   Ú
show_namesƒ   s   
ÿÿûrb   c           	   
   C   sˆ   |sd S |D ];\}}}}t d|t ||¡t |d |d ¡f ƒ t||ƒD ]}t||ƒD ]}t dt ||¡|  ||¡f ƒ q-q&qd S )Nz%s label range %s:%s contains:r   z
    %s: %r)r   r   Úcellnamer   Ú
cell_value)	r   ÚlabsÚtitleÚrloÚrhiÚcloÚchiÚrxÚcxr   r   r   Úprint_labels’   s    ÿ"ÿÿýrm   c                 C   sˆ   d}t | jƒD ]:}|  |¡}|j}|j}|s|r9|s t| ƒ d}td||j|j|j	f ƒ t
||dƒ t
||dƒ | jrA|  |¡ qd S )Nr   r   ú+sheet %d: name = %r; nrows = %d; ncols = %dÚColÚRow)r   rE   Úsheet_by_indexÚcol_label_rangesÚrow_label_rangesrP   r   r]   ÚnrowsÚncolsrm   rG   Úunload_sheet)r   ÚhdrÚshxr   ÚclabsÚrlabsr   r   r   Úshow_labels›   s"   
ÿ€ôr{   éÿÿ  r   c                 C   s~  t | ƒ 	 tjr$zt	tjƒ}W n t
y   |  tj¡j}Y nw |g}nt| jƒ}|D ]‘}|  |¡}|j|j}	}
t|
ƒ}t||	ƒ}td|t|jƒ|j|jf ƒ |	r}|
r}t|	ƒD ]#}| |¡}|r|| |¡|d   | |¡|d   | ||d ¡ qYt|d ƒD ]}|sš|d dkrš|dkrštd|d f ƒ t| ||||ƒ qƒ|r±|	r±t| ||	d ||ƒ tƒ  | jr¼|  |¡ q+d S )Nr   zrc statsz
0x%04x %7dz+sheet %d: name = %s; nrows = %d; ncols = %dr   i'  zdone %d rows)rP   r   ÚsheetÚrc_statsÚitemsÚsortedr   rL   ÚonesheetÚintÚ
ValueErrorÚsheet_by_nameÚnumberr   rE   rq   rt   ru   Úminr   r]   r   r   r+   r,   Úcellr(   rG   rv   )r   Únshowr"   ÚrclistÚkÚvrx   Úshxranger   rt   ru   r!   Úanshowr    Úncr   r   r   Úshow¬   sH   ÿ


ÿ
€€êr�   c           	      C   sÐ   t | ƒ t| jƒD ]\}|  |¡}|j}td||j|j|jf ƒ g d¢}t|ƒD ]&}t| 	|¡ƒD ]}| 
||¡}|dks?J ‚| ||¡}||  d7  < q1q(td|jƒ td|ƒ tƒ  | jre|  |¡ q	d S )Nrn   )r   r   r   r   r   r   r   r   r   zXF statsz
type stats)rP   r   rE   rq   rt   r   r]   ru   r   r   r.   Ú	cell_typeÚ_xf_index_statsrG   rv   )	r   rx   r   rt   Ú
type_statsr    r#   Úxfxr;   r   r   r   Ú	count_xfsÕ   s*   
ÿü
€ðr”   c                 C   s,  dd l }dt }| |¡}|jddddd� |jdd	d
ddd� |jddd
ddd� |jddddd� |jddd
ddd� |jddd
ddd� |jddddd� |jddddd d!� |jd"d#ddd$d!� |jd%d&ddd'd!� |jd(d)ddd*d!� | | ¡\a}t|ƒd+krŒ|d d,v rŒnt|ƒd-k r›| d.t|ƒ ¡ |d }tt	d/d0ƒ}|d1kr¸t	j
|d+ tjd2� t d¡ |d3krÈt	 |d+ ¡ t d¡ |d4kràtd5|t	jf ƒ td6tjƒ t d¡ tjrìtttjd7ƒƒ}ntj}tj}t	j}	|d8v rü|}	n|dk�rtd9| ƒ tj|d:v B }
tj}|�rt ¡  |d+d … D �]t}t |¡D �]j}td;| ƒ |tjk�r<| d<| ¡ |d+k�rNt ¡ }|�rNtd=|d>ƒ t�r[dd l}|  ¡  daz(t! !¡ }t	j"|tj#||	tj$|
tj%tj&d?�}t! !¡ }tj'�s‚td@|| f ƒ W n^ t	j(�y£ } ztdAt)|ƒj*|f ƒ W Y d }~�q&d }~w t+�y¼   tdBƒ t,j-tjdC� t d+¡ Y n& t.�yá } ztdAt)|ƒj*|f ƒ t,j-tjdC� W Y d }~�q&d }~ww t! !¡ }|dDk�rðt/|ƒ nz|dEk�rût0|dƒ no|dFk�rt0|ƒ ne|dGk�rt0|d-ƒ nZ|dHk�rt0|dIƒ nO|dJk�r't0|ddK� nC|dLk�r5t/|ƒ t1|ƒ n5|dMk�r?t2|ƒ n+|dNk�rKt2|d+dO� n|dPk�rUt3|ƒ n|dQk�r_t4|ƒ ntdR| ƒ t d+¡ ~|d+k�rt ¡ }|�rtdS|dT|d>ƒ tj'�s�t! !¡ }tdU|| f ƒ �q&�qd S )VNr   z/
%prog [options] command [input-file-patterns]
z-lz--logfilenamer)   zcontains error messages)ÚdefaultÚhelpz-vz--verbosityr‚   z-level of information and diagnostics provided)r2   r•   r–   z-mz--mmapéÿÿÿÿz41: use mmap; 0: don't use mmap; -1: accept heuristicz-ez
--encodingzencoding overridez-fz--formattingz10 (default): no fmt info
1: fmt info (all cells)
z-gz--gczQ0: auto gc enabled; 1: auto gc disabled, manual collect after each file; 2: no gcz-sz
--onesheetz-restrict output to this sheet (name or index)z-uz--unnumberedÚ
store_truez)omit line numbers or offsets in biff_dump)Úactionr•   r–   z-dz--on-demandz,load sheets on demand instead of all at oncez-tz--suppress-timingz*don't print timings (diffs are less messy)z-rz--ragged-rowsz$open_workbook(..., ragged_rows=True)r   )Úversioné   z"Expected at least 2 args, found %dÚ__VERSION__zunknown; before 0.5Ú	biff_dump)Ú
unnumberedÚ
biff_countrš   zxlrd: %s, from %szPython:Úw)r   r   z9Unexpected value (%r) for mmap option -- assuming default)Úxfcz
=== File: %s ===z
=== File: %s ===
zGC before open:zunreachable objects)Ú	verbosityÚlogfilerF   Úencoding_overrider   rG   r   zOpen took %.2f secondsz*** Open failed: %s: %sz*** KeyboardInterrupt ***)Úfilerw   Úovr�   Ú2rowsÚ3rowsé   Úbench)r"   ÚfontsÚnamesÚ	name_dump)rT   Úlabelsr¡   z*** Unknown command <%s>zGC post cmd:z->z
command took %.2f seconds
)5ÚoptparseÚcmd_docÚOptionParserÚ
add_optionÚ
parse_argsrL   rH   ÚerrorÚgetattrr   rT   rž   rZ   ÚexitÚcount_recordsr   Ú__file__rš   Úlogfilenamer   Úopenr[   ÚmmapÚUSE_MMAPÚ
formattingÚgcÚdisableÚglobr   ÚcollectÚPSYCOÚpsycoÚfullÚtimeÚopen_workbookr¢   rB   rG   r   rM   Ú	XLRDErrorr2   r   ÚKeyboardInterruptÚ	tracebackÚ	print_excÚBaseExceptionrP   r�   rW   rb   r{   r”   )Úcmd_argsr¯   ÚusageÚoparserÚargsÚcmdÚxlrd_versionr£   Úmmap_optÚmmap_argÚfmt_optÚgc_modeÚpatternÚfnameÚn_unreachablerÃ   Út0r   Út1r>   r   r   r   Úmainé   sN  
ýýýýýýýýýýý




ù	€€€ý


















€¹IrÛ   Úhotshotz	XXXX.profr7   rÅ   Úcallsé   Úprofilezmain(av)z	YYYY.profÚ
cumulativeé   rÃ   )r   )r|   r   )5Ú
__future__r   r°   rL   r   rÂ   r   rZ   rÅ   rÀ   rÉ   r¾   Úxlrd.timemachiner   r   Úobjectr   Ú
empty_cellÚ	null_cellr(   r   rP   rW   rb   rm   r{   r�   r”   rÛ   ÚargvÚavÚlowerÚfirstargrÜ   Úhotshot.statsÚprof_log_nameÚProfileÚprofÚruncallr7   r   ÚreprÚcloseÚstatsÚloadÚ
strip_dirsÚ
sort_statsÚprint_statsÚcProfileÚrunÚpstatsÚStatsÚpr   r   r   r   Ú<module>   sr   
	
) 

 � � �ú