
    o[weD              
          d dl m Z mZ d dlmZ d dlmZ d dlZd dlmZ d dl	Z	d dl
Z
d dlmZ d dlmZ d dlZd dlZd dlmc mZ d dlZd dlmZmZmZmZ d dlmZ d d	lm Z m!Z! g d
Z" ej#        d ej$        d          g           ej#        d ej$        d          g           ej#        d ej$        d          g           ej#        d ej$        d                     ej#        d ej$        d                    gZ%de&de'fdZ(d Z) ej*        d e%D             e&          d             Z+ej*        d             Z,ej*        d             Z- G d d          Z. G d d          Z/dS )    )datetimetime)partial)BytesION)Path)URLError)
BadZipFile)	DataFrameIndex
MultiIndexSeries)ArrowStringArrayStringArray).xls.xlsx.xlsm.xlsb.odsxlrdmarksopenpyxlpyxlsbodfread_extreturnc                     | j         d         } | dk    r|dk    rdS | dk    r|dk    rdS |dk    r| dk    rdS | dk    r|dk    rdS |dk    r| dk    rdS | d	k    r|dk    rdS d
S )zm
    Filter out invalid (engine, ext) pairs instead of skipping, as that
    produces 500+ pytest.skips.
    r   r   r   Fr   r   r   r   r   T)values)enginer   s     Blib/python3.11/site-packages/pandas/tests/io/excel/test_readers.py_is_valid_engine_ext_pairr!   <   s    
 ]1FF 2 2u8v--u6foouh'11u7v11uH..u4    c                 R    | j         |fz   }t          j        || j                  }|S )z
    engine gives us a pytest.param object with some marks, read_ext is just
    a string.  We need to generate a new pytest.param inheriting the marks.
    r   )r   pytestparamr   )r   r   r   	new_params       r    _transfer_marksr'   Q   s.    
 ]h[(FV6<888Ir"   c                 b    g | ],}t           D ]"}t          ||          t          ||          #-S  )read_ext_paramsr!   r'   ).0engexts      r    
<listcomp>r.   \   sY       "  $S#..	S!!   r"   )paramsidsc                     | j         S )zS
    Fixture for Excel reader engine and read_ext, only including valid pairs.
    )r%   )requests    r    engine_and_read_extr3   [   s     =r"   c                     | \  }}|S Nr)   r3   r   r   s      r    r   r   k   s    *FHMr"   c                     | \  }}|S r5   r)   r6   s      r    r   r   q   s    *FHOr"   c                   N   e Zd Z ej        d          d             Zd Zd Zd Zd Z	d Z
ej                            d	g d
g dg dg dg dg dg          d             Zej                            d	ddgddgg          d             Zd Zd Zd Zd Zd Zd Zej                            dddg          d             Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zej                            d&d eg d'g d(g d'd)d*ej         d+gd,          fd-d.e!e!d, e e"g d'd-/           e"g d(d./          g d0d1d2ej         d3gd,          fg          d4             Z#d5 Z$d6 Z%d7 Z&ej                            d8i d1fd9d:id;fg          d<             Z'd= Z(ej                            d>d? ed@dAgi          fdB edCgD          fg          dE             Z)dF Z*dG Z+dH Z,dI Z-dJ Z.dK Z/ej        0                    dL          dM             Z1dN Z2dO Z3dP Z4ej                            dQdRdSdRgdRdSgdTdUdTgdTdUgg          dV             Z5dW Z6dX Z7ej        j8        ej        j9        dY                         Z:e;j<        ej        j9        dZ                         Z=ej        j9        d[             Z>ej        j?        d\             Z@d] ZA e;jB        d^          d_             ZCd` ZDda ZEdb ZFej                            dcddej         dedfdegfdgej         gdhz  fg          di             ZGdj ZHdk ZIdl ZJdm ZKdn ZLdo ZMdp ZNdq ZOej                            drdsdtdSd;gdSdfdsduddSd;gdfdsdvdSd;gdSd;gdfdsdwdSd;gdSdfdxdydddSdgfdxdydddz fg          d{             ZPd| ZQd} ZRd~ ZSd ZTd ZUd ZVd ZWd ZXdS )TestReadersTautousec                     t          t          j        |          }|                     |ddd                     |                    t          d|           dS )zG
        Change directory and set engine for read_excel calls.
        r   iodataexcel
read_excelN)r   pdrA   chdirsetattrselfr   datapathmonkeypatchfuncs        r    cd_and_set_enginezTestReaders.cd_and_set_enginex   sX    
 r}V444((499:::Bd33333r"   c                    d }|                     t          j        d|           dddddd}t          d|z   d	          5 }t          j        |          }d d d            n# 1 swxY w Y   ||}n||d
d                   }||k    sJ d S )Nc                     | j         S r5   r=   )rF   argskwargss      r    parserz,TestReaders.test_engine_used.<locals>.parser   s
    ;r"   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )rD   rB   	ExcelFileopenrA   )	rF   r   r   rH   rO   expected_defaultsfresultexpecteds	            r    test_engine_usedzTestReaders.test_engine_used   s    	 	 	 	BL'6::: 
 
 'H$d++ 	&q]1%%F	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& HH(!""6H!!!!!!s    A!!A%(A%c           
         ddiddiddiddiddid}|dd          dv rt          j        d	          }n7|dd          d
k    rt          j        d          }nt          j        d          }|_t          j        t          |          5  t          j        d|z   dd||dd                              d d d            d S # 1 swxY w Y   d S d S )Nfooabcd{   TrueTrQ   rY   >   rU   rT   z8open_workbook() got an unexpected keyword argument 'foo'rV   z/load() got an unexpected keyword argument 'foo'z8load_workbook() got an unexpected keyword argument 'foo'matchrW   Sheet1r   )
sheet_name	index_colengine_kwargs)reescaper$   raises	TypeErrorrB   rA   )rF   r   r   r\   msgs        r    test_engine_kwargszTestReaders.test_engine_kwargs   sN    FOCLFO4=6?
 
 ABB<?**)WXXCCabb\U"")NOOCC)WXXCy444  h&'"3HQRRL"A	                     s   *B??CCc                 H   d}t          j        t          |          5  t          j        d|z   ddd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d|z   dd	gdd
           d d d            d S # 1 swxY w Y   d S )Nz Passing an integer for `usecols`rf   rW   rh   r      ri   rj   usecolsSheet2rY   ri   skiprowsrj   ru   r$   rn   
ValueErrorrB   rA   rF   r   rp   s      r    test_usecols_intzTestReaders.test_usecols_int   sB   0]:S111 	 	M("x1a   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	M("#   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA
A
,BBBc                    |dk    r8|j                             t          j                            d                     |                    ddg          }t          j        d|z   dd	g d
          }t          j        d|z   ddgd	g d
          }t          j	        ||d           t          j	        ||d           d S )Nr   3Sheets containing datetimes not supported by pyxlsbreasonBCcolumnsrW   rh   r   )r      rs   rt   rv   rY   rw   Fcheck_names
node
add_markerr$   markxfailreindexrB   rA   tmassert_frame_equal)rF   r2   r   df_refdf1df2s         r    test_usecols_listzTestReaders.test_usecols_list   s    wL##!!P "     c
33mh8q)))
 
 
 mhSII
 
 
 	c6u====
c6u======r"   c                 v   |dk    r8|j                             t          j                            d                     |                    g d          }t          j        d|z   ddd	
          }t          j        d|z   ddgdd	          }t          j	        ||d           t          j	        ||d           |                    ddg          }t          j        d|z   ddd
          }t          j        d|z   ddgdd          }t          j	        ||d           t          j	        ||d           |                    ddg          }t          j        d|z   ddd
          }t          j        d|z   ddgdd          }t          j	        ||d           t          j	        ||d           d S )Nr   r~   r   Ar   r   r   rW   rh   r   zA:Drt   rv   rY   rw   Fr   r   r   zA,C,DzA,C:Dr   rF   r2   r   r   r   r   df3s          r    test_usecols_strzTestReaders.test_usecols_str   s   wL##!!P "     nn___n55mh8q%
 
 
 mhS
 
 
 	c3E::::
c3E::::nnc3Zn00mh8q'
 
 
 mhS
 
 
 	c3E::::
c3E::::nnc3Zn00mh8q'
 
 
 mhS
 
 
 	c3E::::
c3E::::::r"   ru   )r   rY   rs   )r   rs   rY   )rY   r   rs   )rY   rs   r   )rs   r   rY   )rs   rY   r   c                     |dk    r8|j                             t          j                            d                     |ddg         }t          j        d|z   dd|	          }t          j        ||d
           d S )Nr   r~   r   r   r   rW   rh   r   rt   Fr   	r   r   r$   r   r   rB   rA   r   r   )rF   r2   r   ru   r   r_   r^   s          r    .test_usecols_diff_positional_int_columns_orderz:TestReaders.test_usecols_diff_positional_int_columns_order  s     wL##!!P "     3*%h8q'
 
 
 	fhEBBBBBBr"   r   Dc                     |ddg         }t          t          |                    |_        t          j        d|z   d|          }t          j        ||d           d S )Nr   r   rW   rh   ri   ru   Fr   )rangelenindexrB   rA   r   r   )rF   r   ru   r   r_   r^   s         r    .test_usecols_diff_positional_str_columns_orderz:TestReaders.test_usecols_diff_positional_str_columns_order%  s_    3*%s8}}--w1hPWXXX
fhEBBBBBBr"   c                     |dk    r8|j                             t          j                            d                     |}t          j        d|z   dd          }t          j        ||d	           d S )
Nr   r~   r   rW   rh   r   ri   rj   Fr   r   rF   r2   r   r   r_   r^   s         r    test_read_excel_without_slicingz+TestReaders.test_read_excel_without_slicing-  s    wL##!!P "     w1hRSTTT
fhEBBBBBBr"   c                     |dk    r8|j                             t          j                            d                     |ddg         }t          j        d|z   ddd	
          }t          j        ||d           d S )Nr   r~   r   r   r   rW   rh   r   zA,D:Ert   Fr   r   r   s         r    test_usecols_excel_range_strz(TestReaders.test_usecols_excel_range_str9  s    wL##!!P "     3*%h8q'
 
 
 	fhEBBBBBBr"   c                     d}t          j        t          |          5  t          j        d|z   dd           d d d            d S # 1 swxY w Y   d S )NzInvalid column name: E1rf   rW   rh   zD:E1r   ry   r{   s      r    $test_usecols_excel_range_str_invalidz0TestReaders.test_usecols_excel_range_str_invalidG  s    ']:S111 	S 	SM'H,6RRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S   AA
A
c                     d}t          j        t          |          5  t          j        d|z   ddgddg           d d d            d S # 1 swxY w Y   d S )Nz(list indices must be integers.*, not strrf   rW   rh   r   r   rt   r$   rn   ro   rB   rA   r{   s      r    test_index_col_label_errorz&TestReaders.test_index_col_label_errorM  s    8]9C000 	 	M("#%c
	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A

AAc                     t          j        d|z   dd          }t          g dt          g d                    }t	          j        ||           d S )NrW   Sheet3r   r   )r   r   r   EFnamer   r   )rB   rA   r
   r   r   r   rF   r   r^   r_   s       r    test_index_col_strzTestReaders.test_index_col_strX  se    w1hRUVVV---U2C5H5H5H
 
 
 	fh/////r"   c           	          t          j        d|z   dg d          }t          g dt          g gdz  g gdz  g d                    }t	          j        ||           d S )	NrW   r   r   r   )r   r   r   rs   levelscodesnamesr   )rB   rA   r
   r   r   r   r   s       r    test_index_col_emptyz TestReaders.test_index_col_empty`  s    h8
 
 
 #OORD1HRD1HOOOTTT
 
 
 	fh/////r"   rj   Nr   c                     t          j        d|z   d|          }t          g dg dgg d          }|r |                    |j        |                   }t          j        ||           d S )NrW   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )rB   rA   r
   	set_indexr   r   r   )rF   r   rj   r^   r_   s        r    test_index_col_with_unnamedz'TestReaders.test_index_col_with_unnamedk  s     h8y
 
 
 ///0:X:X:X
 
 
  	G))(*:9*EFFH
fh/////r"   c                     d}t          j        t          |          5  t          j        d|z   dg           d d d            d S # 1 swxY w Y   d S )NzEUsecols do not match columns, columns expected but not found: \['E'\]rf   rW   r   ru   ry   r{   s      r    %test_usecols_pass_non_existent_columnz1TestReaders.test_usecols_pass_non_existent_columny  s     	 ]:S111 	= 	=M'H,se<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=r   c                     d}t          j        t          |          5  t          j        d|z   ddg           d d d            d S # 1 swxY w Y   d S )Nz['usecols' must either be list-like of all strings, all unicode, all integers or a callable.rf   rW   E1r   r   ry   r{   s      r    test_usecols_wrong_typez#TestReaders.test_usecols_wrong_type  s    D 	
 ]:S111 	A 	AM'H,tQi@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   AAAc                     t          j        d|z   d          }t          ddggddg          }t          j        ||           d S )	Ntest2rh   ri   aaaabbbbbTestTest1r   rB   rA   r
   r   r   )rF   r   parsedr_   s       r    test_excel_stop_iteratorz$TestReaders.test_excel_stop_iterator  sS    w1hGGGvw/067:KLLL
fh/////r"   c                    |dk    r8|j                             t          j                            d                     t          j        d|z   d          }t          t          j	        ggdg          }t          j        ||           d S )	Nr   r~   r   test3rh   r   r   r   )r   r   r$   r   r   rB   rA   r
   npnanr   r   )rF   r2   r   r   r_   s        r    test_excel_cell_error_naz$TestReaders.test_excel_cell_error_na  s    wL##!!P "     w1hGGGrvhZ&:::
fh/////r"   c                    |dk    r8|j                             t          j                            d                     t          j        d|z   dd          }t          j        d|z   dd	gd
          }t          j        ||d           t          j        ||d           t          j        d|z   ddd	          }t          j        ||j	        d d                    d S )Nr   r~   r   rW   rh   r   r   rv   rY   ri   rx   rj   Fr   ri   rj   
skipfooter)
r   r   r$   r   r   rB   rA   r   r   ilocr   s          r    test_excel_tablezTestReaders.test_excel_table  s   wL##!!P "     mGh.8qQQQmh8qcQ
 
 
 	c6u====
c6u====mh8qQ
 
 
 	c38CRC=11111r"   c                    |dk    r8|j                             t          j                            d                     t          j        g dg dg dg dg dt          d	d
d          t          d	d
d          t          ddd          t          d	dd          t          ddd          gd          }d}t          j	        ||z   d          }t          j        ||           |                                }d|j        |j        d         df<   t          j	        ||z   d          }t          j        ||           t          |j                  D ]I\  }}t          j	        ||z   d|          }|                    |          }	t          j        ||	           J|d                             t&                    |d<   t          j	        ||z   ddt&          i          }t          j        ||           d S )Nr   r~   r   )rY   r      r   )g      ?g      @gHzG?gQ?g&.>)TFTTF)rY   r   rs   r      )r   rs   cdei  
         iq  rY         i  rs   )IntColFloatColBoolColStrColStr2ColDateCol
test_typesrh   r   g      @r   r   r   ri   
converters)r   r   r$   r   r   r
   	from_dictr   rB   rA   r   r   copylocr   	enumerater   r   applystr)
rF   r2   r   r_   basenameactualfloat_expectedicolr   exps
             r    test_reader_special_dtypesz&TestReaders.test_reader_special_dtypes  s2   wL##!!P "     &***BBB;;;)//222T2r**T2r**T1a((T2r**T1b)) 
 
    x(2xHHH
fh/// "AD>/2I=>x(2xHHH
fn555 $H$455 	/ 	/JD$]8#D  F $$T**C!&#....%h/55c::xH(C
 
 
 	fh/////r"   c           
          d}t          j        g ddt          j        dddgg ddt          j        d	d
dgd          }d d d d d}t	          j        ||z   d|          }t          j        ||           d S )Ntest_converters)rY   r   r   r   g      )@gL2@g3333333@g:0y5>)Foundr  r  	Not foundr  1345)r   r   r   r   c                 0    | dk    rt          |           ndS )N r
  )intr   s    r    <lambda>z4TestReaders.test_reader_converters.<locals>.<lambda>  s    !r''Au r"   c                 (    | rd| z  nt           j        S )Nr   )r   r   r  s    r    r  z4TestReaders.test_reader_converters.<locals>.<lambda>  s    A"9"q&&26 r"   c                     | dk    rdndS )Nr  r  r  r)   r  s    r    r  z4TestReaders.test_reader_converters.<locals>.<lambda>  s    AGG r"   c                 (    | rt          |           ndS )Nr  )r  r  s    r    r  z4TestReaders.test_reader_converters.<locals>.<lambda>  s    1,Q" r"   )r   r   r   rs   rh   r   )r
   r   r   r   rB   rA   r   r   )rF   r   r  r_   r   r  s         r    test_reader_convertersz"TestReaders.test_reader_converters  s    $&...!264{CLLLS#6	 
 
 =<99<<,,	
 

 xH
 
 
 	fh/////r"   c           	      t   d}t          j        ||z             }t          g dg dg dddt          j        dgd                              g d          }t          j        ||           t          j        ||z   d	d
t          d          }|d         	                    d	          |d<   |d         	                    d
          |d<   g d|d<   t          j        ||           d}t          j        t          |          5  t          j        ||z   ddi           d d d            d S # 1 swxY w Y   d S )N	testdtyperY   r   rs   r         @      @      @      @      ?       @      @r   r   r   r   r   float64float32)r   r   r   dtyper   r   001002003004r   z(Unable to convert column d to type int64rf   r   int64)rB   rA   r
   r   r   r   r   r   r  astyper$   rn   rz   )rF   r   r  r  r_   rp   s         r    test_reader_dtypezTestReaders.test_reader_dtype  s   x(233!\\)))!\\3,	 
 
 '...'
/
/ 	 	fh///xYYS'Q'Q
 
 
 !,,Y77 ,,Y77444
fh///8]:S111 	E 	EM(X-c7^DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   D--D14D1zdtype,expectedr  r  r"  r#  r$  r%  r&  r'  r(  r*  r  2r  c                 f    d}t          j        ||z   |          }t          j        ||           d S )Nr  r(  rB   rA   r   r   )rF   r   r)  r_   r  r  s         r    test_reader_dtype_strz!TestReaders.test_reader_dtype_str  s;    : x(2%@@@
fh/////r"   c                    |dv rt          j        d| d           t          t          ddgd          t          dd	gd
          t          ddgd          t          ddgd          t          t          j        dgd          t          t          j        dgd
          t          t          j        dgd          t          t          j        dgd          t          t	          j        d          gdz            t          t          j        t          j        gd          d
          t          j        |          5 }	                    |dd           t	          j
        |d|          }d d d            n# 1 swxY w Y   |dk    rdd lddlm t          fdj        D                       } |d         j        j                                                d                              |d<                        d d g                    |d <   n}t          j        ||           d S )!Nr   r   No engine for filetype: ''rY   rs   Int64r(  r  r   Float64TFbooleanr   r   string   g      @z
2019-12-31r   )
r   r   r   r   r   r]   ghijtestr   ri   dtype_backendpyarrowr   )ArrowExtensionArrayc           	      ^    i | ])}|                      |         d                     *S )T)from_pandas)array)r+   colrH  dfpas     r    
<dictcomp>z2TestReaders.test_dtype_backend.<locals>.<dictcomp>\  sK        ,,RXXbg4X-P-PQQ  r"   rA  us)unitrB  )r$   skipr
   r   rB   NA	Timestampr   ensure_cleanto_excelrA   rG  pandas.arraysrH  r   rK  	_pa_arraycast	timestampr   )	rF   r   rF  	file_pathr^   r_   rH  rM  rN  s	         @@@r    test_dtype_backendzTestReaders.test_dtype_backend>  s   (((K?H???@@@QF'222S#Ji888T5M;;;S#Jh777RUAJg666RUCL	:::RUDM;;;RUCL999R\,7781<==RUBEN'::: 
 
 _X&& 	)KK	6K777]fM  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 I%%    999999      !z   H 0/#-222<<T<3J3JKK HSM 0/$0F0FGGHSMMH
fh/////s   0FF	Fc                 t   |dv rt          j        d| d           t          t          j        dgdt          j        gd          }t          j        |          5 }|                    |dd	           t          j	        |dd
d          }d d d            n# 1 swxY w Y   t          j
        ||           d S )Nr7  r8  r9  r"  r  r   r   rC  FrD  numpy_nullabler&  )ri   rF  r)  )r$   rR  r
   r   r   r   rU  rV  rB   rA   r   )rF   r   rM  r[  r^   s        r    test_dtype_backend_and_dtypez(TestReaders.test_dtype_backend_and_dtypek  s   (((K?H???@@@bfc]#rv??@@_X&& 	)KK	6K777]!.	  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	fb)))))s   1BBBc           
          |dv rt          j        d| d           t          j        d          }t          j        d|          5  t          t          j        ddgt          j                  t          j        d	t          j	        gt          j                  d
          }t          j        |          5 }|                    |dd           t          j        |dd          }d d d            n# 1 swxY w Y   |dk    rwt          t          t          j        ddgt          j                            t          t          j        d	t          j	        gt          j                            d
          }nVt          t          |                    ddg                    t          |                    d	d g                    d
          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr7  r8  r9  rG  zmode.string_storager   r   r(  r   r^  rC  FrD  r_  rE  python)r$   rR  importorskiprB   option_contextr
   r   rK  object_rS  r   rU  rV  rA   r   r   r   )rF   r   string_storagerN  rM  r[  r^   r_   s           r    test_dtype_backend_stringz%TestReaders.test_dtype_backend_string{  sg   (((K?H???@@@ ++4nEE 	4 	43*BJ???3,bjAAA  B ** iIvU;;;&@P                 ))$(3*BJ)O)O)OPP(3,bj)Q)Q)QRR   %-bhhSz.B.BCC-bhhT{.C.CDD   !&(3337	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s8   A1G370C3'G33C7	7G3:C7	;C+G33G7:G7zdtypes, exp_valuea.1r/  rY   c                     d}dt           i|}|                                }t          j        ||z   |          }t	          dg|gd          }||k    s
J d            t          j        ||           d S )Ndf_mangle_dup_col_dtypesr   r(  r  )r   rh  zdtype dict changed)r  r   rB   rA   r
   r   r   )	rF   r   dtypes	exp_valuer  
dtype_dictdtype_dict_copyr^   r_   s	            r    test_dtype_mangle_dup_colsz&TestReaders.test_dtype_mangle_dup_cols  s     .3)&)
$//++x(2*EEEC5)==>>_,,,.B,,,
fh/////r"   c                     d}t          j        ||z             }t          dg di          }t          j        ||           d S )Ntest_spacestestcol)zthis is greatz4    spacesz1 trailing z
 1 leadingz2  spaces  multiple  timesr   )rF   r   r  r  r_   s        r    test_reader_spaceszTestReaders.test_reader_spaces  s\     x(233   

 

 	fh/////r"   zbasename,expectedzgh-35802COLUMNzTest (1)zgh-36122z
got 2nd sar   c                     |dk    rt          j        d|            t          j        ||z             }t	          j        ||           d S )Nr   zSkipped for engine: )r$   rR  rB   rA   r   r   )rF   r   r   r  r_   r  s         r    test_read_excel_ods_nested_xmlz*TestReaders.test_read_excel_ods_nested_xml  sS     U??K7v77888x(233
fh/////r"   c                     d}t          j        ||z   d           }g d}t          j        ||                                           |t          |                                          k    sJ d S )Ntest_multisheetr   )CharlieAlphaBeta)rB   rA   r   assert_contains_allkeyslistrF   r   r  dfsexpected_keyss        r    test_reading_all_sheetsz#TestReaders.test_reading_all_sheets  sq     %mHx/DAAA444
}chhjj999 SXXZZ 0 0000000r"   c                 2   d}g d}t          j        ||z   |          }t          t          |                    }t	          j        ||                                           t          |          t          |                                          k    sJ d S )Nrx  )r   ry  ry  r   )rB   rA   r~  setr   r|  r}  r   )rF   r   r  r  r  s        r    %test_reading_multiple_specific_sheetsz1TestReaders.test_reading_multiple_specific_sheets  s     %111mHx/MJJJS//00
}chhjj999=!!S__444444r"   c                     d}t          j        ||z   d           }g d}t          j        ||                                           d S )Nblank_with_headerr   )rh   rv   r   )rB   rA   r   r|  r}  r  s        r    "test_reading_all_sheets_with_blankz.TestReaders.test_reading_all_sheets_with_blank  sN     'mHx/DAAA666
}chhjj99999r"   c                 z    t          j        d|z   d          }t          j        |t	                                 d S )Nblankrh   r   )rB   rA   r   r   r
   )rF   r   r  s      r    test_read_excel_blankz!TestReaders.test_read_excel_blank  s8    w1hGGG
fikk22222r"   c                     t          ddg          }t          j        d|z   d          }t          j        ||           d S )Ncol_1col_2r   r  rh   r   )r
   rB   rA   r   r   )rF   r   r_   r  s       r    !test_read_excel_blank_with_headerz-TestReaders.test_read_excel_blank_with_header  sJ    gw%78882X=(SSS
fh/////r"   c                 @   t          j        t          d          5  t          j        d|z   dgd            d d d            n# 1 swxY w Y   t          j        t
          d          5  t          j        d|z   d d            d d d            d S # 1 swxY w Y   d S )	Nz \(sheet: Sheet1\)$rf   r  rY   )headerri   rW   c                     ddz  S )NrY   r   r)   r  s    r    r  zHTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>   s
    A r"   )ru   ri   )r$   rn   rz   rB   rA   ZeroDivisionErrorrF   r   s     r    *test_exception_message_includes_sheet_namez6TestReaders.test_exception_message_includes_sheet_name  sL   ]:-CDDD 	W 	WM-8!QUVVVV	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W],4JKKK 	X 	XM'H,ooRVWWWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	Xs#   AAA*BBBz-ignore:Cell A4 is marked:UserWarning:openpyxlc                 R   |dk    r8|j                             t          j                            d                     t          t          j        d          dgt          j        d          dgdd	ggd
dg          }|dk    r8|j                             t          j                            d                     |<|dv r8|j                             t          j                            d                     t          j        d|z             }t          j
        ||           d S )Nr   r~   r   z
2016-03-12zMarc Johnsonz
2016-03-16z
Jack Blackg@xDzTimothy BrownDateColWithBigInt	StringColr   r   zMaybe not supported by openpyxl)r   r   z)Defaults to openpyxl, maybe not supportedtestdateoverflow)r   r   r$   r   r   r
   rB   rT  rA   r   r   )rF   r2   r   r   r_   r^   s         r    test_date_conversion_overflowz)TestReaders.test_date_conversion_overflow  sH    XL##!!P "     l++^<l++\:'
 )+6
 
 
 ZL##!!)J!KK   >h*<<<L##!!)T!UU   1H<==
fh/////r"   c                 N   |dk    r8|j                             t          j                            d                     d}d}t          j        ||z   |d          }t          j        ||z   d|          }t          j        ||d	
           t          j        ||d	
           d S Nr   r~   r   rW   rh   r   r   )rj   ri   Fr   r   )rF   r2   r   r   filenameri   r   r   s           r    test_sheet_namezTestReaders.test_sheet_name#  s    wL##!!P "    
 
mxJ!
 
 
 mHx/1TTT
c6u====
c6u======r"   c                     d|z   }t          j        |dd          }t          |d          5 }t          j        |dd          }t          j        ||           d d d            d S # 1 swxY w Y   d S )NrW   rh   r   r   rX   )rB   rA   r[   r   r   )rF   r   pthr_   r]   r  s         r    test_excel_read_bufferz"TestReaders.test_excel_read_buffer5  s     =QGGG#t__ 	4]1QGGGF!(F333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   -A''A+.A+c                     d}t          j        t          d          5  t          j        d|           d d d            d S # 1 swxY w Y   d S )Nrb   zUnknown engine: foorf   r  r=   ry   )rF   
bad_engines     r    test_bad_engine_raisesz"TestReaders.test_bad_engine_raises<  s    
]:-BCCC 	1 	1M"Z0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AA	Ari   rs   r   r   rh   c                     d}t          j        t          |          5  t          j        d|z   |           d d d            d S # 1 swxY w Y   d S Nz?Worksheet index 3 is invalid|Worksheet named 'Sheet4' not foundrf   r  r   ry   )rF   r   ri   rp   s       r    test_bad_sheetname_raisesz%TestReaders.test_bad_sheetname_raisesA  s     P]:S111 	E 	EM'H,DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E   AA	A	c                     d| }d                     g d          }t          j        t          |          5  t	          j        |           d d d            d S # 1 swxY w Y   d S )Nrb   |)z(No such file or directoryu   没有那个文件或目录zFile o directory non esistente)rf   )joinr$   rn   FileNotFoundErrorrB   rA   )rF   r   bad_filerg   s       r    test_missing_file_raisesz$TestReaders.test_missing_file_raisesK  s    ###  
 
 ],E::: 	$ 	$M(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA!Ac                     d}|
t           }d}n|dk    rddlm} |}d}n	t          }d}t	          j        ||          5  t          j        t          |                     d d d            d S # 1 swxY w Y   d S )	Ns   foozLExcel file format cannot be determined, you must specify an engine manually.r   r   )	XLRDErrorzFUnsupported format, or corrupt file: Expected BOF record; found b'foo'zFile is not a zip filerf   )	rz   r   r  r	   r$   rn   rB   rA   r   )rF   r   
bad_streamerrorrp   r  s         r    test_corrupt_bytes_raisesz%TestReaders.test_corrupt_bytes_raisesX  s    
>E. C v&&&&&&E' C
 E*C]5,,, 	/ 	/M'*--...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   "A..A25A2c                 6   t          d|z   d          5 }|                    |                                           d d d            n# 1 swxY w Y   t          j        |j                  }t          j        d|z             }t          j        ||           d S )NrW   rX   )content)r[   serve_contentreadrB   rA   urlr   r   )rF   
httpserverr   r]   	url_tablelocal_tables         r    test_read_from_http_urlz#TestReaders.test_read_from_http_urln  s     'H$d++ 	7q$$QVVXX$666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7M*.11	mGh$677
i55555s   )A		AAc                 0   t          d|z   d          5 }|                    d|z   |           d d d            n# 1 swxY w Y   d|j         d|z   }t          j        ||          }t          j        d|z             }t          j        ||           d S )NrW   rX   KeyBodys3:///test1)storage_options)r[   
put_objectr   rB   rA   r   r   )rF   r   s3_public_buckets3sor]   r  r  r  s           r    test_read_from_s3_urlz!TestReaders.test_read_from_s3_urlw  s     'H$d++ 	Hq''Gh,>Q'GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 4&+333h>M#t<<<	mGh$677
i55555s   ;??c                    t          d|z   d          5 }|                    d|z   |           d d d            n# 1 swxY w Y   dd l} |j        di |}|                     d|j         d|z             5 }t          j        |          }d d d            n# 1 swxY w Y   t          j        d|z             }t          j        ||           d S )NrW   rX   r  r   r  r  r)   )	r[   r  s3fsS3FileSystemr   rB   rA   r   r   )	rF   r   r  r  r]   r  s3r  r  s	            r    test_read_from_s3_objectz$TestReaders.test_read_from_s3_object  ss    'H$d++ 	Hq''Gh,>Q'GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	T&&&&WW:-2:::XEFF 	)!a((I	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) mGh$677
i55555s   ;??8BB Bc                    t           j                             |ddd          d|z             }t          j        |          }	 t          j        d|z             }n_# t
          $ rR d                    t          j                                                              }t          j
        d|            Y nw xY wt          j        ||           d S )Nr>   r?   r@   rW   zfile://localhost/ zfailing on )ospathr  rB   rA   r   platformunamestripr$   rR  r   r   )rF   r   rG   
localtabler  r  platform_infos          r    test_read_from_file_urlz#TestReaders.test_read_from_file_url  s     W\\((4"A"A7XCUVV
mJ//	7&9J&FGGII 	7 	7 	7HHX^%5%566<<>>MK5m5566666	7
 	i55555s   A AB87B8c                     d|z   }t          j        |dd          }t          d|z             }t          j        |dd          }t          j        ||           d S )NrW   rh   r   r   )rB   rA   r   r   r   )rF   r   str_pathr_   path_objr  s         r    test_read_from_pathlib_pathz'TestReaders.test_read_from_pathlib_path  sc    X%=h!LLL(*++xHJJJ
h/////r"   zpy.pathc                    ddl m} t          j                            d|z             }t          j        |dd          } |                                d|z             }t          j        |dd          }t          j        ||           d S )Nr   )localrW   rh   r   )	py.pathr  r  r  r  rB   rA   r   r   )rF   r   	LocalPathr  r_   r  r  s          r    test_read_from_py_localpathz'TestReaders.test_read_from_py_localpath  s     	/.....7<<( 233=h!LLL9;;##Gh$677xHJJJ
h/////r"   c                     t           j                            d|z             }t          |d          5 }t	          j        |dd          }~|                                 d d d            d S # 1 swxY w Y   d S )NrW   rX   rh   r   r   )r  r  r  r[   rB   rA   r  )rF   r   r  r]   r   s        r    test_close_from_py_localpathz(TestReaders.test_close_from_py_localpath  s    7<<( 233(D!! 	QaHBBBAFFHHH		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   -A--A14A1c                    |dk    r8|j                             t          j                            d                     t          j        dt          ddd          t          ddd	d
          t          dddd          t          dddd          t          dddd          t          dddd          t          dddd          t          dddd           t          dd!dd"          t          d#d$d%d&          t          d'd(d)          gi          }t          j	        d*|z   d+,          }t          j        ||           t          j	        d-|z   d+,          }t          j        ||           d S ).Nr   r~   r   TimerY   r   rs   -   8   i r      1   i@ r>     *   i    9   #   i 	   )      i           i'	 r   i`
 5   i 5    %   r   i       6   
times_1900rh   r   
times_1904)r   r   r$   r   r   r
   r   r   rB   rA   r   r   )rF   r2   r   r   r_   r  s         r    test_reader_secondszTestReaders.test_reader_seconds  sz   XL##!!P "     &AqMMBF++BF++BF++BF++BF++RV,,QF++RF++RF++R$$
 
$ |h68LLL
fh///|h68LLL
fh/////r"   c           
      d   |dk    r8|j                             t          j                            d                     t          j        ddgddgg          }d|z   }t          d	d
t          j	        d          dgddt          j	        d          dgddt          j	        d          dgddt          j	        d          dgg|          }t          j
        |ddd	gd          }t          j        ||           ||_        g d|_        t          j
        |ddd	g          }t          j        ||d           ||_        t          j
        |ddd	gdd	g           }t          j        ||d           g d|_        |                    d!d"g          |_        t          j
        |d#dd	g          }t          j        ||           t!          t#          d                    |_        |                    d$d%g          |_        t          j
        |d&dd	gd          }t          j        ||           |                    d	dgd	'                              d$d%g          |_        t          j
        |d(ddd	g           }t          j        ||           |                    d$d%g          |_        |                    d!d"g          |_        t          j
        |d)dd	gdd	g           }t          j        ||           t          j
        |d*dd	gdd	gd+          }t          j        ||           d S ),Nr   r~   r   rb   barr   r   testmultiindexrY   r  
2015-01-01Tr   r  
2015-01-02Frs   r   
2015-01-03r   r!  
2015-01-04r   	mi_columnr   )ri   r  rj   r%  mi_indexr   r   bothri   rj   r  ilvl1ilvl2mi_index_namec1c2mi_column_name)levelname_with_int	both_nameboth_name_skiprows)ri   rj   r  rx   )r   r   r$   r   r   r   from_productr
   rB   rT  rA   r   r   r   r   	set_namesr~  r   
set_levels)rF   r2   r   mimi_filer_   r  s          r    test_read_excel_multiindexz&TestReaders.test_read_excel_multiindex  s   wL##!!P "     $uensCj%ABB"X- Cl33T:Cl33U;Cl33U;Cl33T:	 
 
 
 QFa
 
 
 	fh/// ///w:!QPPP
fhEBBBB 1a&!Q
 
 
 	fhEBBBB 0//w&899w?qRSfUUU
fh/// eAhh<<t55 0!Q1
 
 
 	fh/// ==!Qq=99CCT4LQQ1aV
 
 
 	fh/// <<t55w&8991vq!f
 
 
 	fh/// +!fq6
 
 
 	fh/////r"   zsheet_name,idx_lvl2both_name_blank_after_mi_namer   r   both_name_multiple_blanksr   c           
      :   |dk    r8|j                             t          j                            d                     d|z   }t          j        ddgddggd	d
g          }t          ddt          j	        d          dgddt          j	        d          dgddt          j	        d          dgddt          j	        d          dgg|t          j
        g d|fddg                    }t          j        ||ddgddg          }t          j        ||           d S ) Nr   z;Sheets containing datetimes not supported by pyxlsb (GH4679r   r  rb   r  r   r   r
  r  r   rY   r  r  Tr   r  r   Frs   r   r  r   r!  r  )rb   rb   r  r  r  r  r   r   r  )r   r   r$   r   r   r   r  r
   rB   rT  from_arraysrA   r   r   )	rF   r2   r   ri   idx_lvl2r  r  r_   r^   s	            r    +test_read_excel_multiindex_blank_after_namez7TestReaders.test_read_excel_multiindex_blank_after_name;  sa    wL##!!X "     #X-$uensCj%A$PTVVVCl33T:Cl33U;Cl33U;Cl33T:	 (---x8(  
 
 
 !!fq6	
 
 
 	fh/////r"   c                     d|z   }t          j        |dddg          }t          j        ddg          }t	          g dgd	z  |
          }t          j        ||           d S )Nr  index_col_noner   rY   ri   r  r   r   keyvalr  r   r   )rB   rA   r   r  r
   r   r   )rF   r   r  r^   exp_columnsr_   s         r    &test_read_excel_multiindex_header_onlyz2TestReaders.test_read_excel_multiindex_header_onlyd  su     #X-w3CQPQFSSS -z>.JKKlll^a/EEE
fh/////r"   c           	         d|z   }t          j        t           j        t           j        t           j        t           j        t           j        gg dg dg dg dg dgt                    }g d}t	          g d	g d
gg dg dgd d g          }t          g d	d           }t          |||          }t          j        |dd          }t          j
        ||           ||_        t          j        |dddg          }t          j
        ||           t          j        g dg dg dg dg dg          }g d}t	          g dg dgg dg dgd d g          }t          g dd           }t          |||          }t          j        |dd          }t          j
        ||           ||_        t          j        |dddg          }t          j
        ||d           d S )Ntest_index_name_pre17)R0C0R0C1R0C2R0C3R0C4)R1C0R1C1R1C2R1C3R1C4)R2C0R2C1R2C2R2C3R2C4)R3C0R3C1R3C2R3C3R3C4)R4C0R4C1R4C2R4C3R4C4r(  )C_l0_g0C_l0_g1C_l0_g2C_l0_g3C_l0_g4)R0R_l0_g0R_l0_g1R_l0_g2R_l0_g3R_l0_g4)R1R_l1_g0R_l1_g1R_l1_g2R_l1_g3R_l1_g4)r   rY   r   rs   r   r   r   r   r   r   single_namesr   r   multi_namesrY   )rH  rI  rJ  rK  rL  )rN  rO  rP  rQ  rR  )r   rY   r   rs   r   single_no_namesmulti_no_namesFr   )r   rK  r   objectr   r   r
   rB   rA   r   r   r   )	rF   r   r  r?   r   r  sir_   r  s	            r    test_excel_old_index_formatz'TestReaders.test_excel_old_index_formato  s   *X5
 x8888888888888888 

 

 

 JIIMMMMMM &%%'9'9'9:,
 
 
 IIIPT
 
 
 TW===xNaPPP
fh///xMaQRVTTT
fh/// x888888888888888
 
 JIIGGGGGG #??OOO4,
 
 
 JJJQUVVVTW===x4EQRSSS
fh///x4DQRTUPVWWW
fhEBBBBBBr"   c                     d}dD ]N}t          j        t          |          5  t          j        d|z   |           d d d            n# 1 swxY w Y   Od S )Nz#Passing a bool to header is invalid)TFrf   rW   r  r   )rF   r   rp   args       r    test_read_excel_bool_header_argz+TestReaders.test_read_excel_bool_header_arg  s    3  	> 	>Cy444 > >g0====> > > > > > > > > > > > > > >	> 	>s   AA	A	c           
         |dk    r8|j                             t          j                            d                     t          j        d|z   dddg          }t          d	d
t          j        d          dgddt          j        d          dgddt          j        d          dgddt          j        d          dggg d          }t          j
        ||           t          j        d|z   dt          j        ddg                    }t          j
        ||           t          j        d|z   dd           }t          j
        ||           t          j        d|z   ddg d          }t          ddt          j        d          dgddt          j        d          dgddt          j        d          dggg d          }t          j
        ||           d S )Nr   r~   r   testskiprowsskiprows_listr   r   ri   rx   rY   r  r  Tr  r   Frs   r   r  r   r!  r  r%  r   c                 
    | dv S N)r   r   r)   r  s    r    r  z6TestReaders.test_read_excel_skiprows.<locals>.<lambda>  s
    qF{ r"   )ri   rx   r   )r   r   r$   r   r   rB   rA   r
   rT  r   r   r   rK  rF   r2   r   r  r_   s        r    test_read_excel_skiprowsz$TestReaders.test_read_excel_skiprows  s7   wL##!!P "     X%/QPQF
 
 
 Cl33T:Cl33U;Cl33U;Cl33T:	 )((
 
 
 	fh///X%&Xq!f%%
 
 

 	fh/// X%&**
 
 

 	fh///X%&&&&	
 
 
  Cl33U;Cl33U;Cl33T:	 )((
 
 
 	fh/////r"   c                 d   |dk    r8|j                             t          j                            d                     t          j        d|z   dd           }t          dd	t          j        d
          dgddt          j        d          dggg d          }t          j
        ||           d S )Nr   r~   r   r`  ra  c                 
    | dvS )N)rY   rs   r   r)   r  s    r    r  zFTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s    q	1 r"   rb  rY   r  r  Trs   r   r  Fr%  r   )r   r   r$   r   r   rB   rA   r
   rT  r   r   re  s        r    (test_read_excel_skiprows_callable_not_inz4TestReaders.test_read_excel_skiprows_callable_not_in  s    wL##!!P "     X%&11
 
 

 Cl33T:Cl33U; )((
 
 
 	fh/////r"   c                     d}t          j        d|z   |          }t          j        d|z             }|d |         }t          j        ||           d S )Nr   rW   nrowsr4  )rF   r   num_rows_to_pullr  r_   s        r    test_read_excel_nrowsz!TestReaders.test_read_excel_nrows  s`    w19IJJJ=8!344---.
fh/////r"   c                     t          j        d|z             }t          |          }|dz   }t          j        d|z   |          }t          j        ||           d S )NrW   r   rk  )rB   rA   r   r   r   )rF   r   r_   num_records_in_filerm  r  s         r    0test_read_excel_nrows_greater_than_nrows_in_filez<TestReaders.test_read_excel_nrows_greater_than_nrows_in_file  s`    =8!344!(mm.3w19IJJJ
fh/////r"   c                     d}t          j        t          |          5  t          j        d|z   d           d d d            d S # 1 swxY w Y   d S )Nz'nrows' must be an integer >=0rf   rW   r  rk  ry   r{   s      r    +test_read_excel_nrows_non_integer_parameterz7TestReaders.test_read_excel_nrows_non_integer_parameter  s    .]:S111 	9 	9M'H,C8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9r  z-filename,sheet_name,header,index_col,skiprowsr  r  r  r  r  r`  ra  c                 
    | dv S rd  r)   r  s    r    r  zTestReaders.<lambda>-  s
    AK r"   c                     t          j        ||z   ||||          j        dd         }t          j        ||z   ||||d          }t          j        ||           dS )z
        For various parameters, we should get the same result whether we
        limit the rows during load (nrows=3) or after (df.iloc[:3]).
        )ri   r  rj   rx   Nrs   )ri   r  rj   rx   rl  )rB   rA   r   r   r   )	rF   r   r  ri   r  rj   rx   r_   r  s	            r    test_read_excel_nrows_paramsz(TestReaders.test_read_excel_nrows_params%  s    & =x!
 
 
 rr x!
 
 
 	fh/////r"   c                     t          j        t          d          5  t          j        d|z   dd           d d d            d S # 1 swxY w Y   d S )Nzbut 3 positional argumentsrf   rW   rh   r   r   r  s     r    test_deprecated_kwargsz"TestReaders.test_deprecated_kwargsI  s    ]9,HIII 	; 	;M'H,h:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   AA
Ac                     d|z   }g d}t          j        g dd          }t          ||d          }t          j        |dd	d
gd           }t          j        ||           d S )Nr  ))r   r   r"  rs   r   rz  ))r   r   r"  rY   r   r{  )r   rY   r  )r   rs   rS  r  r   rY   r  )r   from_tuplesr
   rB   rA   r   r   )rF   r   	file_namer?   idxr_   r^   s          r    "test_no_header_with_list_index_colz.TestReaders.test_no_header_with_list_index_colM  s    $x/	;;;$888
 
 
 Tf==="2q!fT
 
 
 	h/////r"   c                     d|z   }dt           j        ddg}t          |dg          }t          j        |          }t          j        ||           d S )None_col_blank_lineg      ?rY   r   numbersr   )r   r   r
   rB   rA   r   r   )rF   r   r}  r?   r_   r^   s         r    test_one_col_noskip_blank_linez*TestReaders.test_one_col_noskip_blank_lineZ  sX    (83	RVQ"TI;777y))
fh/////r"   c                 &   d|z   }t          j        ddg          }t          j        t          j        gt          j        t          j        gddgddgg}t	          ||          }t          j        |d	d
dg          }t          j        ||           d S )Nr  )r   r   )r   r   rY   rs   r   r   r   mi_column_empty_rowsr   r   )	r   r|  r   r   r
   rB   rA   r   r   )rF   r   r}  r   r?   r_   r^   s          r     test_multiheader_two_blank_linesz,TestReaders.test_multiheader_two_blank_linesb  s    $x/	(*j)ABB 2626"2QFQFCT7333"8!Q
 
 
 	fh/////r"   c                 R    d|z   }t          j        |          }|j        dk    sJ dS )z
        Sheets can contain blank cells with no data. Some of our readers
        were including those cells, creating many empty rows and columns
        trailing_blanks)rs   rs   N)rB   rA   shape)rF   r   r}  r^   s       r    test_trailing_blanksz TestReaders.test_trailing_blanksm  s6    
 &0	y))|v%%%%%%r"   c                 P   |dk    rt          j        d           |dk    r8|j                            t           j                            d                     t          j        t          d          5  t          j	        d|z   d	
           d d d            d S # 1 swxY w Y   d S )Nr   *chartsheets do not exist in the ODF formatr   4pyxlsb can't distinguish chartsheets from worksheetsr   z"Worksheet named 'Chart1' not foundrf   
chartsheetChart1r   
r$   rR  r   r   r   r   rn   rz   rB   rA   rF   r2   r   r   s       r    test_ignore_chartsheets_by_strz*TestReaders.test_ignore_chartsheets_by_strv  s   U??KDEEEXL##!!Q "    
 ]:-QRRR 	H 	HM,1hGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H   4BB"Bc                 P   |dk    rt          j        d           |dk    r8|j                            t           j                            d                     t          j        t          d          5  t          j	        d|z   d	
           d d d            d S # 1 swxY w Y   d S )Nr   r  r   r  r   z0Worksheet index 1 is invalid, 1 worksheets foundrf   r  rY   r   r  r  s       r    test_ignore_chartsheets_by_intz*TestReaders.test_ignore_chartsheets_by_int  s   U??KDEEEXL##!!Q "    
 ]P
 
 
 	A 	A M,1a@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ar  c                     t          j        d|z   dd          }t          g dg dg dgg d	          }t          j        ||           d S )
Ntest_decimal,rY   )decimalrx   )rY   gAc̝ė@g	hAABCpoig2[j@)r   gHzG^@g{G@DEFuytgUq&?)rs   g%Cq@g^@GHIrezg)@)IdNumber1Number2Text1Text2Number3r   r   r   s       r    test_euro_decimal_formatz$TestReaders.test_euro_decimal_format  sy    ~8#PQRRRFFF@@@CCC
 NMM
 
 
 	fh/////r"   )Y__name__
__module____qualname__r$   fixturerJ   r`   rq   r|   r   r   r   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r1  r
   r   r   r  r   r5  r\  r`  rg  ro  rs  rv  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  r  network
single_cpur  tdskip_if_not_us_localer  r  slowr  r  
skip_if_nor  r  r  r  r  r&  rZ  r^  rf  ri  rn  rq  rs  rv  rx  r  r  r  r  r  r  r  r)   r"   r    r9   r9   w   sU       V^D!!!4 4 "!4" " "0  4  $> > >03; 3; 3;j [IIIyyy)))YYY			999U C C C  [Y#sc3Z(@AAC C BAC
C 
C 
CC C CS S S	 	 	0 0 0	0 	0 	0 [[4)440 0 540= = =A A A0 0 0

0 
0 
02 2 2*00 00 00f0 0 04E E E: [ 	)\\111)\\!34	  
  icDD	#VLLL	BBB#V$8$8$8	JJJ999!34	  
	
 60 07 60+0 +0 +0Z* * * "4 "4 "4H [0B9w?OQR>S2TUU	0 	0 VU	00 0 0& [Hzl#;<<=L>:::;	
 0 0 01 1 15 5 5: : :3 3 30 0 0
X X X [ OPP0 0 QP0@> > >$4 4 41 1 1
 [	
QFQFHx&:Xx<PQ E E	 E$ $ $/ / /, [[6 6  6 [	6 	6  	6 [6 6 6  [6 6 60 0 0 R]9
0 
0 
0  0 0 0BT0 T0 T0l [,rvsC.EF(26(Q,7	
  0  0  0D	0 	0 	0GC GC GCR> > >50 50 50n0 0 020 0 00 0 09 9 9 [7{QFAt<z4!Q>v1v1vt</!QDA_dD1a&A_dD:O:OP	

 
0 0
 
02; ; ;0 0 00 0 0	0 	0 	0& & &H H HA A A0 0 0 0 0r"   r9   c            
          e Zd Zd Z ej        d          d             Zd Zd Zej	        
                    dg d          d	             Zd
 Zd Zej	        
                    ddddgddgdddgddgg          d             Zd Zd Zd Zd Zd Zd Zej	        
                    dddg          d             Zd Zd Zd Zd Zd S )!TestExcelFileReadc                    d}t          j        t          |d          5  t          d|z   d          5 }t	          j        |                                |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzPassing bytes to 'read_excel' is deprecated and will be removed in a future version. To read from a byte string, wrap it in a `BytesIO` object.F)rg   raise_on_extra_warningsrW   rX   r=   )r   assert_produces_warningFutureWarningr[   rB   rA   r  )rF   r   r   rp   r]   s        r    test_deprecate_bytes_inputz,TestExcelFileRead.test_deprecate_bytes_input  s   : 	 'e
 
 
 	7 	7 g($// 71affhhv66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s4   B )A(B (A,	,B /A,	0B  BBTr:   c                     t          t          j        |          }|                     |ddd                     |                    t          d|           dS )zH
        Change directory and set engine for ExcelFile objects.
        r=   r>   r?   r@   rZ   N)r   rB   rZ   rC   rD   rE   s        r    rJ   z#TestExcelFileRead.cd_and_set_engine  sX    
 r|F333((499:::BT22222r"   c                     dddddd}t          j        d|z             5 }|j        }d d d            n# 1 swxY w Y   ||}n||dd                   }||k    sJ d S )Nr   r   r   r   rQ   rW   rY   )rB   rZ   r   )rF   r   r   r\   r@   r^   r_   s          r    r`   z"TestExcelFileRead.test_engine_used  s    
 
 \'H,-- 	"\F	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" HH(!""6H!!!!!!s   488c                 n   t          j        d|z             5 }t          j        |dddg          }d d d            n# 1 swxY w Y   t          dgdgdgt          j        gdggd	g
          }t          j        ||           t          j        d|z             5 }t          j        |dddg          }d d d            n# 1 swxY w Y   t          t          j        gdgt          j        gt          j        gdggd	g
          }t          j        ||           t          j        d|z             5 }t          j        |dddg          }d d d            n# 1 swxY w Y   t          dgdgdgt          j        gdggd	g
          }t          j        ||           t          j        d|z             5 }t          j        |dddg          }d d d            n# 1 swxY w Y   t          t          j        gdgt          j        gt          j        gdggd	g
          }t          j        ||           d S )Ntest4rh   Fappleri   keep_default_na	na_valuesrS  rY   rabbitr   r   Ttest51.#QNANr   )rB   rZ   rA   r
   r   r   r   r   )rF   r   r@   r   r_   s        r    test_excel_passes_naz&TestExcelFileRead.test_excel_passes_na  sV   \'H,-- 	](EgY  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 VaS4&26(XJ7&
 
 
 	fh///\'H,-- 	](DWI  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 fXsRVHrvh
;fX
 
 
 	fh/// \'H,-- 	](EgY  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 [1#w8*=x
 
 
 	fh///\'H,-- 	](DWI  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 fXsRVHrvh
;fX
 
 
 	fh/////sE   >AACCC2EEE5GG"G	na_filter)NTFc                 h   i }|||d<   t          j        d|z             5 }t          j        |fdddgd|}d d d            n# 1 swxY w Y   |du rdgd	gd
gdgdgg}n*t          j        gd	gt          j        gt          j        gdgg}t          |dg          }t          j        ||           d S )Nr  r  rh   Tr  r  Fr  rY   r   r  r   r   )rB   rZ   rA   r   r   r
   r   r   )rF   r   r  rN   r@   r   r_   s          r    test_excel_passes_na_filterz-TestExcelFileRead.test_excel_passes_na_filter  s)     "+F;\'H,-- 	]# $")	 
  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 "aS5'G9xjIHH1#x"&H:FHXx888
fh/////s   AA	A	c                 Z   |dk    r8|j                             t          j                            d                     t          j        d|z             5 }t          j        |dd          }t          j        |ddgd          }d d d            n# 1 swxY w Y   t          j	        ||d	
           t          j	        ||d	
           t          j        d|z             5 }|
                    dd          }|
                    ddgd          }d d d            n# 1 swxY w Y   t          j	        ||d	
           t          j	        ||d	
           t          j        d|z             5 }t          j        |ddd          }d d d            n# 1 swxY w Y   t          j	        ||j        d d                    t          j        d|z             5 }|
                    ddd          }d d d            n# 1 swxY w Y   t          j	        ||j        d d                    d S )Nr   r~   r   rW   r   r   rY   r   Fr   )rj   )rx   rj   r   r   )rj   r   )r   r   r$   r   r   rB   rZ   rA   r   r   rP   r   )rF   r2   r   r   r@   r   r   r   s           r    test_excel_table_sheet_by_indexz1TestExcelFileRead.test_excel_table_sheet_by_index	  s5   wL##!!P "     \'H,-- 	P-!qAAAC-!qcQOOOC	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	c6u====
c6u====\'H,-- 	<++a1+--C++a1#+;;C	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	c6u====
c6u====\'H,-- 	P-!qQOOOC	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P
c38CRC=111\'H,-- 	<++a1+;;C	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	c38CRC=11111sH   1BBB#1D  D$'D$0FFFG>>HHc                    |dk    r8|j                             t          j                            d                     d}d}t          j        ||z             5 }|                    |d          }d d d            n# 1 swxY w Y   t          j        ||z             5 }|                    d|          }d d d            n# 1 swxY w Y   t          j	        ||d	
           t          j	        ||d	
           d S r  )
r   r   r$   r   r   rB   rZ   rP   r   r   )	rF   r2   r   r   r  ri   r@   	df1_parse	df2_parses	            r    r  z!TestExcelFileRead.test_sheet_name&  s   wL##!!P "     
\(X-.. 	H%zQGGI	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H \(X-.. 	H%aJGGI	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	iUCCCC
iUCCCCCCs$   A>>BB CCCri   rs   r   r   rh   c                     d}t          j        t          |          5  t          j        d|z             5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r  )r$   rn   rz   rB   rZ   rP   )rF   r   ri   rp   r@   s        r    r  z+TestExcelFileRead.test_bad_sheetname_raises:  s     P]:S111 	3 	3g011 3Uz2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s4   A1AA1A	A1 A	!A11A58A5c                 @   d|z   }t          j        |dd|          }t          |d          5 }t          j        |          5 }t          j        |dd          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          j        ||           d S )NrW   rh   r   ri   rj   r   rX   r   )rB   rA   r[   rZ   r   r   )rF   r   r   r  r_   r]   rU   r  s           r    r  z(TestExcelFileRead.test_excel_read_bufferE  s5    =QvVVV#t__ 	Na NCsx1MMMN N N N N N N N N N N N N N N	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	h/////s5   A>A'A>'A+	+A>.A+	/A>>BBc                     t          d|z   d          5 }t          j        |          5 }t          j        |dd|           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        sJ d S )NrW   rX   rh   r   r  )r[   rB   rZ   rA   closed)rF   r   r   r]   rR   s        r    test_reader_closes_filez)TestExcelFileRead.test_reader_closes_fileO  s   'H$d++ 	Uqa UDdx1VTTTTU U U U U U U U U U U U U U U	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U
 xs4   A%AA%A	A%A	A%%A),A)c                     d}t          j        d|z             5 }t          j        t          |          5  t          j        |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz8Engine should not be specified when passing an ExcelFilerW   rf   rb   r=   )rB   rZ   r$   rn   rz   rA   )rF   r   rp   xls       r    test_conflicting_excel_enginesz0TestExcelFileRead.test_conflicting_excel_enginesW  s    H\'H,-- 	0z555 0 0b////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s4   A1AA1A	A1 A	!A11A58A5c                 &   t          j        d|z   |          }t          d|z   d          5 }|                                }d d d            n# 1 swxY w Y   t          j        t	          |          |          }t          j        ||           d S )NrW   r=   rX   )rB   rA   r[   r  r   r   r   )rF   r   r   r_   r]   r?   r  s          r    test_excel_read_binaryz(TestExcelFileRead.test_excel_read_binary_  s    =8!3FCCC'H$d++ 	q6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 wt}}V<<<
h/////s   AAAc                     t          d|z   d          5 }t          j        |          }d d d            n# 1 swxY w Y   t          j        d|z   |          }t          j        ||           d S )NrW   rX   r=   )r[   rB   rA   r   r   )rF   r   r   r]   r^   r_   s         r    %test_excel_read_binary_via_read_excelz7TestExcelFileRead.test_excel_read_binary_via_read_exceli  s    'H$d++ 	&q]1%%F	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&=8!3FCCC
fh/////s   599c                     t          dd          5 }t          j        t          d          5  t	          j        |ddg           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nzdf_header_oob.xlsxrX   zexceeds maximumrf   r   rY   r\  )r[   r$   rn   rz   rB   rA   )rF   r   r]   s      r    )test_read_excel_header_index_out_of_rangez;TestExcelFileRead.test_read_excel_header_index_out_of_rangep  s    &-- 	0z1BCCC 0 0aA////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s4   A*AA*A	A*A	A**A.1A.r  zdf_empty.xlsxzdf_equals.xlsxc                     t          dgd          }t          j        ddgddg          }t          d	d
gg||d          }t	          j        |dddd	g          }t          j        ||           d S )NZI2r   r!  )r   zB.1I11I12r  rY   rs   r/  )r   r   r)  rh   r   r  )r   r   r|  r
   rB   rA   r   r   )rF   r  r~  colsr_   r^   s         r    test_header_with_index_colz,TestExcelFileRead.test_header_with_index_colv  s     SE%%%%z<&@PUWWWq!fXS$gNNNQ1v
 
 
 	h/////r"   c                 t   |dk    r8|j                             t          j                            d                     d|z   }t          j        |          5 }t          j        |ddgd|          }d d d            n# 1 swxY w Y   t          j	        t          j
        d          t          j
        d	          fgt          j
        d                                          t          j
        d	                                          g
          }t          g g |          }t          j        ||           d S )Nr   r~   r   test_datetime_mir   rY   )r  rj   r   z
02/29/2020z
03/01/2020r  rS  )r   r   r$   r   r   rB   rZ   rA   r   r|  to_datetimeto_pydatetimer
   r   r   )	rF   r2   r   r   r]   r@   r  expected_column_indexr_   s	            r    test_read_datetime_multiindexz/TestExcelFileRead.test_read_datetime_multiindex  sz   XL##!!P "     )\!__ 	U]5!Q1VTTTF	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U * 6n\**BN<,H,HIJ|,,::<<|,,::<<!
 !
 !
 Rr3HIII
h/////s   A??BBc                     t          j        t          d          5  t          j        d| dd          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzValue must be one of *rf   zio.excelz.readerabc)r$   rn   rz   rB   rd  r  s     r    test_engine_invalid_optionz,TestExcelFileRead.test_engine_invalid_option  s    ]:-EFFF 	 	"#?h#?#?#?GG                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s3   AAAA	AA	AA #A c                 4   |dk    rt          j        d           |dk    r8|j                            t           j                            d                     t          j        d|z             5 }|j        dgk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r  r   r  r   r  rh   )	r$   rR  r   r   r   r   rB   rZ   sheet_names)rF   r2   r   r   r@   s        r    test_ignore_chartsheetsz)TestExcelFileRead.test_ignore_chartsheets  s    U??KDEEEXL##!!Q "    
 \,122 	3e$
22222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   0BBBc                    t           f}|t          j        d|            n|dk    rdd l}t           |j        j        f}t          j        d|           5 }t          |          	                    dd           t          j
        d          5  	 t          j        ||           n# |$ r Y nw xY wd d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	NzInvalid test for engine=r   r   corruptzutf-8)encodingFr=   )r	   r$   rR  r   biffhr  r   rU  r   
write_textr  rB   rZ   )rF   r   r   errorsr   files         r    test_corrupt_files_closedz+TestExcelFileRead.test_corrupt_files_closed  s   >K;6;;<<<<vKKK $*"67F_1x1122 	dJJ!!)g!>>>+E22  Lf55555   D              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   9CC B)(C )B1.C 0B11C 4C C	CC	CCCN)r  r  r  r  r$   r  rJ   r`   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)   r"   r    r  r    s       7 7 7 V^D!!!3 3 "!3" " "$$0 $0 $0L [[*=*=*=>>0 0 ?>002 2 2:D D D( [	
QFQFHx&:Xx<PQ 3 3	 30 0 0  0 0 00 0 00 0 00 0 0 [Z/;K)LMM0 0 NM00 0 0.  3 3 3    r"   r  )0r   r   	functoolsr   r>   r   r  pathlibr   r  rl   urllib.errorr   zipfiler	   numpyr   r$   pandas.util._test_decoratorsutil_test_decoratorsr  pandasrB   r
   r   r   r   pandas._testing_testingr   pandas.core.arraysr   r   r*   r%   r  engine_paramsr  boolr!   r'   r  r3   r   r   r9   r  r)   r"   r    <module>r     se                      				        				 ! ! ! ! ! !            ) ) ) ) ) ) ) ) )                            
 >==
 FLBM&!!
   FLBM*%%
   FLBM&!!
   FLx!8!8999FLmbmE22333/6     *        	       
   
f0 f0 f0 f0 f0 f0 f0 f0R)[ [ [ [ [ [ [ [ [ [r"   