
    Pi                    x   d dl mZ 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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mZ d dl 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                     ej$        d ej%        d                    gZ&d+dZ'd Z( ej)        d e&D             e*          d             Z+ej)        d             Z,ej)        d             Z-ej)        d             Z.ej)        d             Z/d,d!Z0d-d%Z1d& Z2 G d' d(          Z3 G d) d*          Z4dS ).    )annotations)datetimetime)partial)BytesION)Path)URLError)
BadZipFile)	DataFrameIndex
MultiIndexSeriesread_csv).xls.xlsx.xlsm.xlsb.odsxlrdmarksopenpyxlpyxlsbodfcalaminepython_calamineread_extstrreturnboolc                    | j         d         } | dk    r|dk    rdS | dk    r|dk    rdS |dk    r| dvrdS | dk    r|d	k    rdS |d	k    r| d
v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   r   >   r   r   r   T)values)enginer   s     v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/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,???uh'11u7v-CCCuH..u4    c                T    g | j         |R }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+   R   s4    
 (v}'h''FV6<888Ir&   c                b    g | ],}t           D ]"}t          ||          t          ||          #-S  )read_ext_paramsr%   r+   ).0engexts      r$   
<listcomp>r2   ]   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_extr7   \   s     =r&   c                    | \  }}|S Nr-   r7   r#   r   s      r$   r#   r#   l   s    *FHMr&   c                    | \  }}|S r9   r-   r:   s      r$   r   r   r   s    *FHOr&   c                |    |t          j                     |  z  }|                                 t          |          S r9   )uuiduuid4touchr   )r   tmp_pathtmps      r$   	tmp_excelrB   x   s5    

0h00
0CIIKKKs88Or&   c                H     | dddd          }t          |ddd          }|S )	zI
    Obtain the reference data from read_csv with the Python engine.
    iodatacsvz	test1.csvr   Tpython)	index_colparse_datesr#   )r   )datapathfilepathdf_refs      r$   rL   rL      s4    
 xfe[99Hh!hOOOFMr&   r#   
str | Nonec                    dS )Nusr-   )r   r#   s     r$   get_exp_unitrP      s    4r&   expectedr   Nonec                |    d | j         _        t          ||          }| j                             |          | _         d S r9   )indexnamerP   as_unit)rQ   r   r#   units       r$   adjust_expectedrX      s6    HN&))D^++D11HNNNr&   c                |    | dk    r5|                     t          j                            d                     d S d S )Nr   z3Sheets containing datetimes not supported by pyxlsbreason)applymarkerr(   markxfail)r#   r6   s     r$   xfail_datetimes_with_pyxlsbr_      sT    KL   	
 	
 	
 	
 	
 r&   c                     e Zd Zej                            dg ddgddgg          d             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 g d,g d-g d,d.d/e j!        d0gd1fd2d3e"e"d1 e#g d,d24           e#g d-d34           e#g d5d64           e#d7d8e j!        d9gd64          d1fg          d:             Z$d; Z%d< Z&d= Z'ej                            d>i d?fd@dAid?fg          dB             Z(dC Z)ej                            dDdE e*dFdGgi          fdH e*dIgJ          fg          dK             Z+dL Z,dM Z-dN Z.dO Z/dP Z0dQ Z1ej        2                    dR          dS             Z3dT Z4dU Z5dV Z6ej                            dWdXdYdXgdXdYgdZd[dZgdZd[gg          d\             Z7d] Z8d^ Z9ej        j:        ej        j;        d_                         Z<e=j>        ej        j;        d`                         Z?ej        j;        da             Z@ej        jA        db             ZBdc ZCdd ZDde ZEdf ZFej                            dgdhe j!        didjdigfdke j!        gdlz  fg          dm             ZGdn ZHdo ZIdp ZJdq ZKdr ZLds ZMdt ZNdu ZOej                            dvdwdxdYd?gdYd fdwdyd dYd?gd fdwdzdYd?gdYd?gd fdwd{dYd?gdYd fd|d}d d dYd!gfd|d}d d d~ fg          d             ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXd S )TestReaderscol)TNFTFc                    |dv rt          j        d| d           t          d|id          }|                    |d           t	          j        |ddi          }t          j        ||           d S )	Nr   r   No engine for filetype: ''bool_columnbooleandtypeF)rT   )r(   skipr   to_excelpd
read_exceltmassert_frame_equal)selfrb   rB   r   dfdf2s         r$   test_read_excel_type_checkz&TestReaders.test_read_excel_type_check   s     (((K?H???@@@s+9===
IU+++mImY-GHHH
b#&&&&&r&   c           	         |dddd          }t          j        |          5 }t          j        |ddg ddd	
          }d d d            n# 1 swxY w Y   t          dg did          }t	          j        ||           d S )NrD   rE   excelztest_none_type.xlsxSheet1T)nanrR   abcdrh   r   )
sheet_namekeep_default_na	na_valuesrj   r#   Test)TNFNFNTri   )rm   	ExcelFilern   r   ro   rp   )rq   rJ   f_pathrv   parsedrQ   s         r$   test_pass_none_typezTestReaders.test_pass_none_type   s    $1FGG\&!! 	U]# $111!  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 AAAB
 
 

 	fh/////s   AAAautousec                    t          t          j        |          }|                     |ddd                     |                    t          d|           dS )zG
        Change directory and set engine for read_excel calls.
        r#   rD   rE   rv   rn   N)r   rm   rn   chdirsetattrrq   r#   rJ   monkeypatchfuncs        r$   cd_and_set_enginezTestReaders.cd_and_set_engine   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 r9   r   )rq   argskwargss      r$   parserz,TestReaders.test_engine_used.<locals>.parser   s
    ;r&   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )r   rm   r~   openrn   )	rq   r   r#   r   r   expected_defaultsfresultrQ   s	            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v rt          j        d          }n/|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foory   {   TrueTr   >   r   r   z8open_workbook() got an unexpected keyword argument 'foo'r   z/load() got an unexpected keyword argument 'foo'z8load_workbook() got an unexpected keyword argument 'foo'matchr   rw   r   r   )rz   rH   engine_kwargs)reescaper(   raises	TypeErrorrm   rn   )rq   r   r#   r   msgs        r$   test_engine_kwargszTestReaders.test_engine_kwargs   s=    FOCLFO4=6?
 
 ''')WXXCCu__)NOOCC)WXXCy444  h&'"3HQRRL"A	                     s   8*B//B36B3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`r   r   rw   r      rz   rH   usecolsSheet2r   rz   skiprowsrH   r   r(   r   
ValueErrorrm   rn   rq   r   r   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                (   t          ||           |ddg         }t          |||           t          j        d|z   ddg d          }t          j        d|z   dd	gdg d
          }t	          j        ||           t	          j        ||           d S )NBCr   rw   r   )r      r   r   r   r   r   r_   rX   rm   rn   ro   rp   )rq   r6   r#   r   rL   rQ   df1rs   s           r$   test_usecols_listzTestReaders.test_usecols_list	  s    #FG4443*%(F333mh8q)))
 
 
 mhSII
 
 
 	c8,,,
c8,,,,,r&   c                   t          ||           |g d         }t          |||           t          j        d|z   ddd          }t          j        d|z   ddgdd	          }t	          j        ||           t	          j        ||           |d
dg         }t          |||           t          j        d|z   ddd          }t          j        d|z   ddgdd	          }t	          j        ||           t	          j        ||           t          j        d|z   ddd          }t          j        d|z   ddgdd	          }t	          j        ||           t	          j        ||           d S )NAr   r   r   rw   r   zA:Dr   r   r   r   r   r   zA,C,DzA,C:Dr   )rq   r6   r#   r   rL   rQ   rs   df3s           r$   test_usecols_strzTestReaders.test_usecols_str  s   #FG444///*(F333mh8q%
 
 
 mhS
 
 
 	c8,,,
c8,,,3*%(F333mh8q'
 
 
 mhS
 
 
 	c8,,,
c8,,,mh8q'
 
 
 mhS
 
 
 	c8,,,
c8,,,,,r&   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   c                    t          ||           |ddg         }t          |||           t          j        d|z   dd|          }t	          j        ||           d S )Nr   r   r   rw   r   r   r   )rq   r6   r#   r   r   rL   rQ   r   s           r$   .test_usecols_diff_positional_int_columns_orderz:TestReaders.test_usecols_diff_positional_int_columns_orderQ  ss     	$FG4443*%(F333h8q'
 
 
 	fh/////r&   r   Dc                    |ddg         }t          t          |                    |_        t          j        d|z   d|          }t          j        ||           d S )Nr   r   r   rw   rz   r   )rangelenrT   rm   rn   ro   rp   )rq   r   r   rL   rQ   r   s         r$   .test_usecols_diff_positional_str_columns_orderz:TestReaders.test_usecols_diff_positional_str_columns_ordera  sZ    3*%s8}}--w1hPWXXX
fh/////r&   c                    t          ||           |}t          |||           t          j        d|z   dd          }t	          j        ||           d S Nr   rw   r   rz   rH   r   rq   r6   r#   r   rL   rQ   r   s          r$   test_read_excel_without_slicingz+TestReaders.test_read_excel_without_slicingi  s^    #FG444(F333w1hRSTTT
fh/////r&   c                    t          ||           |ddg         }t          |||           t          j        d|z   ddd          }t	          j        ||           d S )Nr   r   r   rw   r   zA,D:Er   r   r   s          r$   test_usecols_excel_range_strz(TestReaders.test_usecols_excel_range_strr  sq    #FG4443*%(F333h8q'
 
 
 	fh/////r&   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: E1r   r   rw   zD:E1r   r   r   s      r$   $test_usecols_excel_range_str_invalidz0TestReaders.test_usecols_excel_range_str_invalid}  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 strr   r   rw   r   r   r   r(   r   r   rm   rn   r   s      r$   test_index_col_label_errorz&TestReaders.test_index_col_label_error  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 )Nr   Sheet3r   r   )r   r   r   EFrU   columnsrT   )rm   rn   r   r   ro   rp   rq   r   r   rQ   s       r$   test_index_col_strzTestReaders.test_index_col_str  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 )	Nr   r   r   r   )r   r   r   r   levelscodesnamesr   )rm   rn   r   r   ro   rp   r   s       r$   test_index_col_emptyz TestReaders.test_index_col_empty  s    h8
 
 
 #OORD1HRD1HOOOTTT
 
 
 	fh/////r&   rH   Nr   c                    t          j        d|z   d|          }t          g dg dgg d          }|r |                    |j        |                   }t          j        ||           d S )Nr   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )rm   rn   r   	set_indexr   ro   rp   )rq   r   rH   r   rQ   s        r$   test_index_col_with_unnamedz'TestReaders.test_index_col_with_unnamed  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'\]r   r   r   r   r   r   s      r$   %test_usecols_pass_non_existent_columnz1TestReaders.test_usecols_pass_non_existent_column  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.r   r   E1r   r   r   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test2rw   rz   aaaabbbbbr}   Test1r   rm   rn   r   ro   rp   )rq   r   r   rQ   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                <   t          ||           |dk    r9|dk    r3|                    t          j                            d                     t          j        d|z   d          }t          t          j	        ggdg	          }t          j        ||           d S )
Nr   r   z+Calamine can't extract error from ods filesrZ   test3rw   r   r}   r   )r_   r\   r(   r]   r^   rm   rn   r   nprx   ro   rp   )rq   r6   r#   r   r   rQ   s         r$   test_excel_cell_error_naz$TestReaders.test_excel_cell_error_na  s    #FG444 ZH$6$6!!)V!WW   w1hGGGrvhZ&:::
fh/////r&   c                   t          ||           |}t          |||           t          j        d|z   dd          }t          j        d|z   ddgd          }t	          j        ||           t	          j        ||           t          j        d|z   ddd          }t	          j        ||j        d d	                    d S )
Nr   rw   r   r   r   r   rz   r   rH   rz   rH   
skipfooter)r_   rX   rm   rn   ro   rp   iloc)	rq   r6   r#   r   rL   rQ   r   rs   r   s	            r$   test_excel_tablezTestReaders.test_excel_table  s    #FG444(F333mGh.8qQQQmh8qcQ
 
 
 	c8,,,
c8,,,mh8qQ
 
 
 	c38CRC=11111r&   c                   t          ||           t          ||          }t          j        g dg dg dg dg dt	          t          ddd          t          ddd	          t          d
dd          t          ddd          t          ddd          gd| d          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 )N)r   r      r   )g      ?g      @gHzG?gQ?g&.>)TFTTF)r   r   r   r     )r   r   cdei  
         iq  r         i  r   M8[]ri   )IntColFloatColBoolColStrColStr2ColDateCol
test_typesrw   r   g      @r   r   r  rz   
converters)r_   rP   r   	from_dictr   r   rm   rn   ro   rp   copylocrT   	enumerater   r   applyr   )rq   r6   r#   r   rW   rQ   basenameactualfloat_expectedicolrU   exps               r$   test_reader_special_dtypesz&TestReaders.test_reader_special_dtypes  s,   #FG444Hf--&***BBB;;;)//222  r2.. r2.. q!,, r2.. q"-- (---	 	 	 
 
&   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)r   r   r  r   g      )@gL2@g3333333@g:0y5>)Foundr3  r3  	Not foundr3  1345)r  r  r  r  c                0    | dk    rt          |           ndS )N r2  )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  rx   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:  r3  r4  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   r   rw   r#  )r   r%  r  rx   rm   rn   ro   rp   )rq   r   r*  rQ   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           	     f   d}t          j        ||z             }t          g dg dg dddt          j        dgd          }t          j        ||           t          j        ||z   dd	t          d
          }|d                             d          |d<   |d                             d	          |d<   t          g d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r   r   r   r        @      @      @      @      ?       @      @r   r   r  r  float64float32)r   r   r  ri   r   r   001002003004r   r  z(Unable to convert column d to type int64r   r  int64)rm   rn   r   r  rx   ro   rp   r   astyper   r(   r   r   )rq   r   r*  r+  rQ   r   s         r$   test_reader_dtypezTestReaders.test_reader_dtype3  s   x(233!\\)))!\\3,	 
 
 	fh///xYYS'Q'Q
 
 
 !,,Y77 ,,Y77;;;5III
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&&D*-D*zdtype,expectedrD  rE  rJ  rK  rL  rM  rN  rO  ri   rP  r   r5  2r7  c                    d}t          j        ||z   |          }t          |          }t          j        ||           d S )NrC  ri   r  )rq   r   rj   rQ   r*  r+  s         r$   test_reader_dtype_strz!TestReaders.test_reader_dtype_strP  sH    2 x(2%@@@X&&
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
          		                    |dd           t	          j        |d|          }|dk    rdd l	
ddl
m t          	
fd	j        D                       }|d                             t	          j        
                                                    |d<   |d                             t	          j        
                                                    |d<    |d         j        j                            
                    d !                              |d<    
                    d d g                    |d"<   n4	}t)          ||          }|d                             d#| d$          |d<   t+          j        ||           d S )%Nrd   re   rf   r   r   Int64ri   rF  rH  Float64TFrh   r   r   string   g      @z
2019-12-31r   )
r   r   r  r  r  r   ghijtestrz   rT   rz   dtype_backendpyarrowr   )ArrowExtensionArrayc           	     ^    i | ])}|                      |         d                     *S )T)from_pandas)array)r/   rb   ri  rr   pas     r$   
<dictcomp>z2TestReaders.test_dtype_backend.<locals>.<dictcomp>  sK        ,,RXXbg4X-P-PQQ  r&   r  ra  rb  rO   )rW   rc  r  r  )r(   rk   r   r   rm   NA	Timestamprl   rn   rh  pandas.arraysri  r   rV  
ArrowDtyper^  rl  	_pa_arraycast	timestamprP   ro   rp   )rq   r   rg  r#   rB   r   rQ   rW   ri  rr   rm  s           @@@r$   test_dtype_backendzTestReaders.test_dtype_backendo  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'::: 
 
 	I&>>>&
 
 
 I%%    999999      !z   H %SM00ryy{{1K1KLLHSM$SM00ryy{{1K1KLLHSM//#-222<<T<3J3JKK HSM 0/$0F0FGGHSMMH&11D$SM00t??HSM
fh/////r&   c                   |dv rt          j        d| d           t          t          j        dgdt          j        gd          }|                    |dd	           t          j        |dd
d          }t          j	        ||           d S )Nrd   re   rf   rJ  rF  r   r   rd  Fre  numpy_nullablerN  )rz   rg  rj   )
r(   rk   r   r  rx   rl   rm   rn   ro   rp   )rq   r   rB   rr   r   s        r$   test_dtype_backend_and_dtypez(TestReaders.test_dtype_backend_and_dtype  s    (((K?H???@@@bfc]#rv??@@
I&>>>*	
 
 
 	fb)))))r&   c           	        |dv rt          j        d| d           t          t          j        ddgt          j                  t          j        dt          j        gt          j                  d          }|                    |d	d
           t          j	        d|          5  t          j
        |d	d          }d d d            n# 1 swxY w Y   t          t          ddgt          j        |                    t          dd gt          j        |                    d          }t          j        ||d
           d S )Nrd   re   rf   r   r   ri   r   rx  rd  Fre  zmode.string_storagery  rf  )check_column_type)r(   rk   r   r  rl  object_rm   ro  rl   option_contextrn   r   StringDtypero   rp   )rq   r   string_storagerB   rr   r   rQ   s          r$   test_dtype_backend_stringz%TestReaders.test_dtype_backend_string  s   (((K?H???@@@XsCj
;;;XsBEl"*=== 
 
 	I&>>>4nEE 	 	]f<L  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 S#Jbn^.L.LMMMS$Kr~n/M/MNNN 
 
 	fh%HHHHHHs   &C

CCzdtypes, exp_valuer   a.1rU  c                D   d}dt           i|}|                                }t          j        ||z   |          }t	          t          dgt                     t          |g|st           nd           d          }||k    s
J d            t          j        ||           d S )Ndf_mangle_dup_col_dtypesr   ri   r   )r   r  zdtype dict changed)objectr&  rm   rn   r   r   ro   rp   )	rq   r   dtypes	exp_valuer*  
dtype_dictdtype_dict_copyr   rQ   s	            r$   test_dtype_mangle_dup_colsz&TestReaders.test_dtype_mangle_dup_cols  s     .6,V,
$//++x(2*EEEQCv...ykv1O4PPP 
 
 _,,,.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  )rq   r   r*  r+  rQ   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(   rk   rm   rn   ro   rp   )rq   r#   r   r*  rQ   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)rm   rn   ro   assert_contains_allkeyslistrq   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 )Nr  )r   r  r  r   )rm   rn   r  setro   r  r  r   )rq   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   )rw   r   r   )rm   rn   ro   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blankrw   r   )rm   rn   ro   rp   r   )rq   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  rw   r   )r   rm   rn   ro   rp   )rq   r   rQ   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\)$r   r  r   )headerrz   r   c                    ddz  S )Nr   r   r-   r<  s    r$   r=  zHTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>3  s
    A r&   )r   rz   )r(   r   r   rm   rn   ZeroDivisionErrorrq   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                   t          ||           t          t          j        d          dgt          j        d          dgddggddg	          }|d
k    r3|                    t
          j                            d                     |7|dv r3|                    t
          j                            d                     t          j        d|z             }t          j
        ||           d S )Nz
2016-03-12zMarc Johnsonz
2016-03-16z
Jack Blackg@xDzTimothy BrownDateColWithBigInt	StringColr   r   zMaybe not supported by openpyxlrZ   )r   r   z)Defaults to openpyxl, maybe not supportedtestdateoverflow)r_   r   rm   rp  r\   r(   r]   r^   rn   ro   rp   )rq   r6   r#   r   rQ   r   s         r$   test_date_conversion_overflowz)TestReaders.test_date_conversion_overflow5  s    	$FG444l++^<l++\:'
 )+6
 
 
 Z!!)J!KK   >h*<<<!!)T!UU   1H<==
fh/////r&   c                   t          ||           d}d}|}t          |||           t          j        ||z   |d          }t          j        ||z   d|          }	t	          j        ||           t	          j        |	|           d S Nr   rw   r   r   )rH   rz   r   )
rq   r6   r   r#   rL   filenamerz   rQ   r   rs   s
             r$   test_sheet_namezTestReaders.test_sheet_nameQ  s    #FG444
(F333mxJ!
 
 
 mHx/1TTT
c8,,,
c8,,,,,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 )Nr   rw   r   r   r   )rm   rn   r   ro   rp   )rq   r   pthrQ   r   r+  s         r$   test_excel_read_bufferz"TestReaders.test_excel_read_bufferb  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 )Nr   zUnknown engine: foor   r:  r   r   )rq   
bad_engines     r$   test_bad_engine_raisesz"TestReaders.test_bad_engine_raisesi  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rz   r   r   r   rw   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 foundr   r  r   r   )rq   r   rz   r   s       r$   test_bad_sheetname_raisesz%TestReaders.test_bad_sheetname_raisesn  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 )Nr   |)z(No such file or directoryu   没有那个文件或目录zFile o directory non esistente)r   )joinr(   r   FileNotFoundErrorrm   rn   )rq   r   bad_filer   s       r$   test_missing_file_raisesz$TestReaders.test_missing_file_raisesx  s    ###  
 
 ],E::: 	$ 	$M(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA!Ac                   d}|
t           }d}n+|dk    rddlm} |}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'r   CalamineErrorzCannot detect file formatzFile is not a zip filer   )r   r   r  r   r  r
   r(   r   rm   rn   r   )rq   r#   
bad_streamerrorr   r  r  s          r$   test_corrupt_bytes_raisesz%TestReaders.test_corrupt_bytes_raises  s   
>E. C v&&&&&&EX C z!!555555!E-CCE*C]5,,, 	/ 	/M'*--...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   "A??BB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 )Nr   r   )content)r   serve_contentreadrm   rn   urlro   rp   )rq   
httpserverr   r   	url_tablelocal_tables         r$   test_read_from_http_urlz#TestReaders.test_read_from_http_url  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 )Nr   r   KeyBodys3:///test1)storage_options)r   
put_objectrU   rm   rn   ro   rp   )rq   r   s3_bucket_publics3sor   r  r  r  s           r$   test_read_from_s3_urlz!TestReaders.test_read_from_s3_url  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 )Nr   r   r  r   r  r  r-   )	r   r  s3fsS3FileSystemrU   rm   rn   ro   rp   )	rq   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 )NrD   rE   rv   r   zfile://localhost/ zfailing on )ospathr  rm   rn   r	   platformunamestripr(   rk   ro   rp   )rq   r   rJ   
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 r   )rm   rn   r   ro   rp   )rq   r   str_pathrQ   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&   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 )Nr   r   rw   r   r   )r  r  r  r   rm   rn   r  )rq   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                   t          ||           |dk    r9|dk    r3|                    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   z0ODS file contains bad datetime (seconds as text)rZ   Timer   r   r   -   8   i r     1   i@ r_     *   i    9   #   i 	   )      i           i'	 r  i`
 5   i 5    %   r   i       6   
times_1900rw   r   
times_1904)r_   r\   r(   r]   r^   r   r%  r   rm   rn   ro   rp   )rq   r6   r#   r   rQ   r+  s         r$   test_reader_secondszTestReaders.test_reader_seconds  s   #FG444 ZH$6$6!!M "     &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           
     b   t          ||           t          ||          }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|          }||d
                                      d| d          ||d
         <   t          j        |dddgd          }t          j
        ||           ||_        g d|_        t          j        |dddg          }t          j
        ||           ||_        t          j        |dddgddg          }t          j
        ||           g d|_        |                    dd g          |_        t          j        |d!ddg          }t          j
        ||           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   barr   r   testmultiindexr   rF  
2015-01-01Tr   rG  
2015-01-02Fr   rH  
2015-01-03r  rI  
2015-01-04r   r  r  	mi_columnr   )rz   r  rH   rM  mi_indexr   bothrz   rH   r  ilvl1ilvl2mi_index_namec1c2mi_column_name)levelname_with_int	both_nameboth_name_skiprows)rz   rH   r  r   )r_   rP   r   from_productr   rm   rp  rV  rn   ro   rp   rT   r   	set_namesr   
set_levels)	rq   r6   r#   r   rW   mimi_filerQ   r+  s	            r$   test_read_excel_multiindexz&TestReaders.test_read_excel_multiindex
  s   #FG444Hf--$uensCj%ABB"X- Cl33T:Cl33U;Cl33U;Cl33T:	 
 
 
 #2a5/00t??AQFa
 
 
 	fh/// ///w:!QPPP
fh/// 1a&!Q
 
 
 	fh/// 0//w&899w?qRSfUUU
fh/// q<<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           
     Z   t          ||           d|z   }t          j        ddgddggddg          }t          ||          }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                    }	|	|d                                      d| d          |	|d         <   t          j	        ||dd	gdd	g          }
t          j        |
|	           d S )Nr  r   r  r   r   r"  r#  r   r   rF  r  Tr   rG  r  Fr   rH  r  r  rI  r  )r   r   r  r  r  r   r   r  r  r   r  )r_   r   r)  rP   r   rm   rp  from_arraysrV  rn   ro   rp   )rq   r6   r#   r   rz   idx_lvl2r-  r,  rW   rQ   r   s              r$   +test_read_excel_multiindex_blank_after_namez7TestReaders.test_read_excel_multiindex_blank_after_name^  sg    	$FG444"X-$uensCj%A$PTVVVHf--Cl33T:Cl33U;Cl33U;Cl33T:	 (---x8(  
 
 
 #2a5/00t??A!!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   r   rz   r  r   r   keyvalrD  r   r   )rm   rn   r   r)  r   ro   rp   )rq   r   r-  r   exp_columnsrQ   s         r$   &test_read_excel_multiindex_header_onlyz2TestReaders.test_read_excel_multiindex_header_only  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 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R4C4ri   )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   r   r   r   r  r  r   r   rT   r   single_namesr   r   multi_namesr   )r`  ra  rb  rc  rd  )rf  rg  rh  ri  rj  )r   r   r   r   r  single_no_namesmulti_no_names)r  rl  rx   r  r   r   r   rm   rn   ro   rp   rT   )	rq   r   r  rE   r   r,  sirQ   r+  s	            r$   test_excel_old_index_formatz'TestReaders.test_excel_old_index_format  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
fh/////r&   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)TFr   r   r  r   )rq   r   r   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           
        t          ||           t          ||          }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          }|d                             d| d          |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          }|d                             d| d          |d<   t          j        ||           d S )Ntestskiprowsskiprows_listr   r   rz   r   r   rF  r  TrG  r  Fr   rH  r  r  rI  r  rM  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&   )rz   r   r   )r_   rP   rm   rn   r   rp  rV  ro   rp   r  rl  rq   r6   r#   r   rW   r+  rQ   s          r$   test_read_excel_skiprowsz$TestReaders.test_read_excel_skiprows  sX   #FG444Hf--X%/QPQF
 
 
 Cl33T:Cl33U;Cl33U;Cl33T:	 )((
 
 
 !,,]4]]];;
fh///X%&Xq!f%%
 
 

 	fh/// X%&**
 
 

 	fh///X%&&&&	
 
 
  Cl33U;Cl33U;Cl33T:	 )((
 
 
 !,,]4]]];;
fh/////r&   c                l   t          ||           t          ||          }t          j        d|z   dd           }t	          ddt          j        d          dgd	d
t          j        d          dggg d          }|d                             d| d          |d<   t          j        ||           d S )Nrw  rx  c                
    | dvS )N)r   r   r  r-   r<  s    r$   r=  zFTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s    q	1 r&   ry  r   rF  r  Tr   rH  r  FrM  r   r  r  r  )	r_   rP   rm   rn   r   rp  rV  ro   rp   r|  s          r$   (test_read_excel_skiprows_callable_not_inz4TestReaders.test_read_excel_skiprows_callable_not_in  s    #FG444Hf--X%&11
 
 

 Cl33T:Cl33U; )((
 
 
 !,,]4]]];;
fh/////r&   c                    d}t          j        d|z   |          }t          j        d|z             }|d |         }t          j        ||           d S )Nr  r   nrows)rm   rn   ro   rp   )rq   r   num_rows_to_pullr+  rQ   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 )Nr   r  r  )rm   rn   r   ro   rp   )rq   r   rQ   num_records_in_filer  r+  s         r$   0test_read_excel_nrows_greater_than_nrows_in_filez<TestReaders.test_read_excel_nrows_greater_than_nrows_in_file4  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 >=0r   r   r8  r  r   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$  rw  rx  c                
    | dv S r{  r-   r<  s    r$   r=  zTestReaders.<lambda>J  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]).
        )rz   r  rH   r   Nr   )rz   r  rH   r   r  )rm   rn   r  ro   rp   )	rq   r   r  rz   r  rH   r   rQ   r+  s	            r$   test_read_excel_nrows_paramsz(TestReaders.test_read_excel_nrows_paramsB  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 argumentsr   r   rw   r   r   r  s     r$   test_deprecated_kwargsz"TestReaders.test_deprecated_kwargsf  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:  r   r  r  ))r   r   r:  r   r   r  )r   r   r2  )r   r   rk  r7  r   r   r  )r   from_tuplesr   rm   rn   ro   rp   )rq   r   	file_namerE   idxrQ   r   s          r$   "test_no_header_with_list_index_colz.TestReaders.test_no_header_with_list_index_colj  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      ?r   r   numbersr   )r  rx   r   rm   rn   ro   rp   )rq   r   r  rE   rQ   r   s         r$   test_one_col_noskip_blank_linez*TestReaders.test_one_col_noskip_blank_linew  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   r   r   r   r  r   mi_column_empty_rowsr   r8  )	r   r  r  rx   r   rm   rn   ro   rp   )rq   r   r  r   rE   rQ   r   s          r$    test_multiheader_two_blank_linesz,TestReaders.test_multiheader_two_blank_lines  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)r   r   N)rm   rn   shape)rq   r   r  r   s       r$   test_trailing_blanksz TestReaders.test_trailing_blanks  s6    
 &0	y))|v%%%%%%r&   c                F   |dk    rt          j        d           |dk    r3|                    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 worksheetsrZ   z"Worksheet named 'Chart1' not foundr   
chartsheetChart1r   	r(   rk   r\   r]   r^   r   r   rm   rn   rq   r6   r#   r   s       r$   test_ignore_chartsheets_by_strz*TestReaders.test_ignore_chartsheets_by_str  s   vKDEEEX!!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   /BBBc                F   |dk    rt          j        d           |dk    r3|                    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  rZ   z0Worksheet index 1 is invalid, 1 worksheets foundr   r  r   r   r  r  s       r$   test_ignore_chartsheets_by_intz*TestReaders.test_ignore_chartsheets_by_int  s   vKDEEEX!!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,r   )decimalr   )r   gAc̝ė@g	hAABCpoig2[j@)r   gHzG^@g{G@DEFuytgUq&?)r   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(   r]   parametrizert   r   fixturer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r/  rA  rW  r  rx   r   r   rZ  rv  rz  r  r  r  r   r  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  r  r  r.  r5  r>  rq  ru  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r-   r&   r$   ra   ra      sq       [U%8%8%84&4-$PQQ' ' RQ'0 0 0( V^D!!!4 4 "!4" " "0  4  $- - -*1- 1- 1-f [IIIyyy)))YYY			999U 0 0 0 [Y#sc3Z(@AA0 0 BA00 0 0	0 	0 	0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 /0d0 0 04E E E: [ %---%sBFC0	   icDDI>>> 4 4 4IFFF < < <EJJJc263 7uEEE	 	
 .0 0/ .010 10 10f* * *I I I8 [0B7eW=Mq<Q2RSS0 0 TS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06- - -"4 4 41 1 1
 [	
QFQFHx&:Xx<PQ E E	 E$ $ $/ / /4 [[6 6  6 [6 6  6 [6 6 6 [6 6 60 0 0  "0 "0 "0HR0 R0 R0h [,rvsC.EF(26(Q,7	
 0 0 0@	0 	0 	0G0 G0 G0R> > >40 40 40l0 0 0,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&   ra   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          |          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 )Nz+Expected file path name or file-like objectr   r   r   r   )r(   r   r   r   rm   rn   r  )rq   r#   r   r   r   s        r$   test_raises_bytes_inputz)TestExcelFileRead.test_raises_bytes_input  s   ;]9C000 	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   A?)A'A?'A+	+A?.A+	/A??BBTr   c                    t          t          j        |          }|                     |ddd                     |                    t          d|           dS )zH
        Change directory and set engine for ExcelFile objects.
        r   rD   rE   rv   r~   N)r   rm   r~   r   r   r   s        r$   r   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   r   r   r   )rm   r~   r#   )rq   r   r#   r   rv   r   rQ   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test4rw   Fapplerz   r{   r|   ro  r   rabbitr}   r   Ttest51.#QNANrx   )rm   r~   rn   r   r  rx   ro   rp   )rq   r   rv   r   rQ   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  rw   Tr  r  Fr  r   rx   r  r}   r   )rm   r~   rn   r  rx   r   ro   rp   )rq   r   r  r   rv   r   rQ   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                   t          ||           |}t          |||           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        ||           t          j        ||           t          j        d|z             5 }|                    dd          }|                    ddgd          }d d d            n# 1 swxY w Y   t          j        ||           t          j        ||           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   r   r  )rH   )r   rH   r	  r  )rH   r
  )	r_   rX   rm   r~   rn   ro   rp   r   r  )
rq   r6   r#   r   rL   rQ   rv   r   rs   r   s
             r$   test_excel_table_sheet_by_indexz1TestExcelFileRead.test_excel_table_sheet_by_index  s   #FG444(F333\'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 	c8,,,
c8,,,\'H,-- 	<++a1+--C++a1#+;;C	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	c8,,,
c8,,,\'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1sG   1A88A<?A<1DDDE22E69E66GG"Gc                   t          ||           |}t          |||           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        |	|           t          j        |
|           d S r  )r_   rX   rm   r~   r   ro   rp   )rq   r6   r#   r   rL   rQ   r  rz   rv   	df1_parse	df2_parses              r$   r  z!TestExcelFileRead.test_sheet_name:  s{   #FG444(F333
\(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222
i22222s#   A##A'*A'B))B-0B-rz   r   r   r   rw   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(   r   r   rm   r~   r   )rq   r   rz   r   rv   s        r$   r  z+TestExcelFileRead.test_bad_sheetname_raisesL  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 )Nr   rw   r   rz   rH   r#   r   r   )rm   rn   r   r~   ro   rp   )rq   r#   r   r  rQ   r   r   r+  s           r$   r  z(TestExcelFileRead.test_excel_read_bufferW  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 )Nr   r   rw   r   r  )r   rm   r~   rn   closed)rq   r#   r   r   r   s        r$   test_reader_closes_filez)TestExcelFileRead.test_reader_closes_filea  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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 ExcelFiler   r   r   r   )rm   r~   r(   r   r   rn   )rq   r   r   xls       r$   test_conflicting_excel_enginesz0TestExcelFileRead.test_conflicting_excel_enginesi  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 )Nr   r   r   )rm   rn   r   r  r   ro   rp   )rq   r#   r   rQ   r   rE   r+  s          r$   test_excel_read_binaryz(TestExcelFileRead.test_excel_read_binaryq  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 )Nr   r   r   )r   rm   rn   ro   rp   )rq   r   r#   r   r   rQ   s         r$   %test_excel_read_binary_via_read_excelz7TestExcelFileRead.test_excel_read_binary_via_read_excel{  s    'H$d++ 	5q]1V444F	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5=8!3FCCC
fh/////s   7;;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.xlsxr   zexceeds maximumr   r   r   rs  )r   r(   r   r   rm   rn   )rq   r#   r   s      r$   )test_read_excel_header_index_out_of_rangez;TestExcelFileRead.test_read_excel_header_index_out_of_range  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   r9  )r   zB.1I11I12r2  r   r   rU  )rT   r   rj   rw   r   r  )r   r   r  r   rm   rn   ro   rp   )rq   r  r  colsrQ   r   s         r$   test_header_with_index_colz,TestExcelFileRead.test_header_with_index_col  s     SE%%%%z<&@PUWWWq!fXS$gNNNQ1v
 
 
 	h/////r&   c                   t          ||           d|z   }t          j        |          5 }t          j        |ddgd|          }d d d            n# 1 swxY w Y   t	          ||          }t          j        ddgd| d	          }t          j        |d d         |dd          g|d                                         |d                                         g
          }	t          g g |	          }
t          j        |
|           d S )Ntest_datetime_mir   r   )r  rH   r#   z
2020-02-29z
2020-03-01r  r  ri   r2  rk  )r_   rm   r~   rn   rP   DatetimeIndexr   r3  to_pydatetimer   ro   rp   )rq   r6   r#   r   r   rv   r+  rW   dtiexpected_column_indexrQ   s              r$   test_read_datetime_multiindexz/TestExcelFileRead.test_read_datetime_multiindex  sf   #FG444)\!__ 	U]5!Q1VTTTF	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U Hf--l;====QQQ * 6!Wc!""gA$$&&A$$&&!
 !
 !
 Rr3HIII
h/////s   AAA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 *r   zio.excelz.readerabc)r(   r   r   rm   r~  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                *   |dk    rt          j        d           |dk    r3|                    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  rZ   r  rw   )r(   rk   r\   r]   r^   rm   r~   sheet_names)rq   r6   r#   r   rv   s        r$   test_ignore_chartsheetsz)TestExcelFileRead.test_ignore_chartsheets  s    vKDEEEX!!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   +BBBc                   t           f}|t          j        d|            n-|dk    rdd l}t           |j        j        f}n|dk    r	ddlm} |f}t          |          	                    dd           t          j        d	          5  	 t          j        ||
           n# |$ r Y nw xY wd d d            d S # 1 swxY w Y   d S )NzInvalid test for engine=r   r   r   r  corruptzutf-8)encodingFr   )r
   r(   rk   r   biffhr  r   r  r   
write_textro   assert_produces_warningrm   r~   )rq   r#   rB   errorsr   r  s         r$   test_corrupt_files_closedz+TestExcelFileRead.test_corrupt_files_closed  sE   >K;6;;<<<<vKKK $*"67FFz!!555555#%FY""9w"???'.. 	 	Yv66666   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   B9
B! B9!B)&B9(B))B99B= B=N)r  r  r  r  r(   r  r   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 263 3 3$ [	
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  )r   r   r   r    )r   r   r#   rM   r   r   )rQ   r   r   r   r#   rM   r   rR   )5
__future__r   r   r   	functoolsr   rD   r   r  pathlibr   r  r   urllib.errorr	   r=   zipfiler
   numpyr  r(   pandas.util._test_decoratorsutil_test_decoratorsr  pandasrm   r   r   r   r   r   pandas._testing_testingro   r.   r)   
skip_if_noengine_paramsr%   r+   r  r   r7   r#   r   rB   rL   rP   rX   r_   ra   r  r-   r&   r$   <module>r     s   " " " " " "                    				        				 ! ! ! ! ! !             ) ) ) ) ) ) ) ) )                       ===
 FLBM&!!
   FLBM*%%
   FLBM&!!
   FLx!8!8999FLmbmE22333FL=2=1B#C#CDDD18   *        	       
   
         2 2 2 2
 
 
]0 ]0 ]0 ]0 ]0 ]0 ]0 ]0@)R R R R R R R R R Rr&   