
    A>i                       S SK Jr  S SKJrJr  S SKJr  S SKJr  S SKrS SK	J
r
  S SKrS SKrS SKJr  S SKrS SKJr  S SKrS SKrS SKJs  Jr  S SKrS S	KJrJrJrJrJr  S SK J!r"  / S
Qr#\RH                  " S\RJ                  " S5      /S9\RH                  " S\RJ                  " S5      /S9\RH                  " S\RJ                  " S5      /S9\RH                  " S\RJ                  " S5      S9\RH                  " S\RJ                  " S5      S9\RH                  " S\RJ                  " S5      S9/r&S!S jr'S r(\RR                  " \& V Vs/ s H$  n \#  H  n\'" X5      (       d  M  \(" X5      PM     M&     snn \*S9S 5       r+\RR                  S 5       r,\RR                  S 5       r-\RR                  S 5       r.\RR                  S 5       r/S"S jr0S#S jr1S r2 " S S5      r3 " S S 5      r4gs  snn f )$    )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_calaminec                    U R                   S   n U S:X  a  US:X  a  gU S:X  a  US:w  a  gUS:X  a  U S;  a  gU S:X  a  US	:w  a  gUS	:X  a  U S
;  a  gU S:X  a  US:w  a  gg)za
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)engineread_exts     a/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/io/excel/test_readers.py_is_valid_engine_ext_pairr"   =   s    
 ]]1FF 28v-6f,??h'17v-CCH.    c                d    / U R                   QUP7n[        R                  " X R                  S9nU$ )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   s/    
 (v}}'h'FV<<8Ir#   )paramsidsc                    U R                   $ )zK
Fixture for Excel reader engine and read_ext, only including valid pairs.
)r&   )requests    r!   engine_and_read_extr-   \   s     ==r#   c                    U u  pU$ N r-   r   r    s      r!   r   r   l   s    *FMr#   c                    U u  pU$ r/   r0   r1   s      r!   r    r    r   s    *FOr#   c                p    U[         R                  " 5        U  3-  nUR                  5         [        U5      $ r/   )uuiduuid4touchstr)r    tmp_pathtmps      r!   	tmp_excelr:   x   s-    


~hZ0
0CIIKs8Or#   c                4    U " SSSS5      n[        USSSS9nU$ )	zA
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!   rD   rD      s)    
 fe[9Hh!hOFMr#   c                    g)Nusr0   )r    r   s     r!   get_exp_unitrG      s    r#   c                |    S U R                   l        [        X5      nU R                   R                  U5      U l         g r/   )indexnamerG   as_unit)expectedr    r   units       r!   adjust_expectedrN      s.    HNN)D^^++D1HNr#   c                j    U S:X  a-  UR                  [        R                  R                  SS95        g g )Nr   z3Sheets containing datetimes not supported by pyxlsbreason)applymarkerr%   markxfail)r   r,   s     r!   xfail_datetimes_with_pyxlsbrU      s7    KKL  	
 r#   c                     \ rS rSr\R
                  R                  S/ SQS/SS//5      S 5       rS r\R                  " SS9S	 5       r
S
 rS rS rS rS r\R
                  R                  S/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      S 5       r\R
                  R                  SSS/SS//5      S 5       rS rS rS rS rS rS r\R
                  R                  S S!S"/5      S# 5       rS$ rS% rS& rS' rS( rS) rS* rS+ r \R
                  R                  S,S!/ S-Q/ S.Q/ S-QS/S0\!RD                  S1/S2.4S3S4\#\#S2.\$" / S-QS3S59\$" / S.QS4S59\$" / S6QS7S59\$" S8S9\!RD                  S:/S7S59S2.4/5      S; 5       r%S< r&S= r'S> r(\R
                  R                  S?0 S@4SASB0S@4/5      SC 5       r)SD r*\R
                  R                  SESF\+" SGSH/05      4SI\+" SJ/SK94/5      SL 5       r,SM r-SN r.SO r/SP r0SQ r1SR r2\R
                  Rg                  SS5      ST 5       r4SU r5SV r6SW r7\R
                  R                  SXSYSZSY/SYSZ/S[S\S[/S[S\//5      S] 5       r8S^ r9S_ r:\R
                  Rv                  \R
                  Rx                  S` 5       5       r=\>R~                  \R
                  Rx                  Sa 5       5       r@\R
                  Rx                  Sb 5       rA\R
                  R                  Sc 5       rCSd rDSe rESf rFSg rG\R
                  R                  ShSi\!RD                  SjSkSj/4Sl\!RD                  /Sm-  4/5      Sn 5       rHSo rISp rJSq rKSr rLSs rMSt rNSu rOSv rP\R
                  R                  SwSxSySZS@/SZS!4SxSzS!SZS@/S!4SxS{SZS@/SZS@/S!4SxS|SZS@/SZS!4S}S~S!S!SZS"/4S}S~S!S!S 4/5      S 5       rQS rRS rSS rTS rUS rVS rWS rXS rYSrZg!)TestReaders   col)TNFTFc                    US;   a  [         R                  " SU S35        [        SU0SS9nUR                  USS9  [        R
                  " USS0S9n[        R                  " XE5        g )	Nr   r   No engine for filetype: ''bool_columnbooleandtypeF)rI   )r%   skipr   to_excelpd
read_exceltmassert_frame_equal)selfrY   r:   r    dfdf2s         r!   test_read_excel_type_check&TestReaders.test_read_excel_type_check   sg     ((KK3H:Q?@s+9=
IU+mmImY-GH
b&r#   c           
         U" SSSS5      n[         R                  " U5       n[         R                  " USS/ SQSS	S
9nS S S 5        [        S/ SQ0SS9n[        R
                  " WU5        g ! , (       d  f       N4= f)Nr<   r=   excelztest_none_type.xlsxSheet1T)nanNoneabcdr_   r   )
sheet_namekeep_default_na	na_valuesra   r   Test)TNFNFNTr`   )rd   	ExcelFilere   r   rf   rg   )rh   rB   f_pathrn   parsedrL   s         r!   test_pass_none_typeTestReaders.test_pass_none_type   sy    $1FG\\&!U]]# $1!F " AB

 	fh/ "!s   A,,
A:autousec                    [        [        R                  US9nUR                  U" SSS5      5        UR	                  [        SU5        g)z7
Change directory and set engine for read_excel calls.
r   r<   r=   rn   re   N)r   rd   re   chdirsetattrrh   r   rB   monkeypatchfuncs        r!   cd_and_set_engineTestReaders.cd_and_set_engine   s=    
 r}}V4(49:Bd3r#   c                   S nUR                  [        R                  SU5        SSSSSS.n[        SU-   S	5       n[        R                  " U5      nS S S 5        Ub  UnOXQS
S     nWU:X  d   eg ! , (       d  f       N$= f)Nc                    U R                   $ r/   r   )rh   argskwargss      r!   parser,TestReaders.test_engine_used.<locals>.parser   s    ;;r#   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )r   rd   rw   openre   )	rh   r    r   r   r   expected_defaultsfresultrL   s	            r!   test_engine_usedTestReaders.test_engine_used   s    	 	BLL'6: 
 'H$d+q]]1%F , H(!"6H!!! ,+s   A11
A?c           
     t   SS0SS0SS0SS0SS0S.nUS;   a  [         R                  " S5      nO3US	:X  a  [         R                  " S
5      nO[         R                  " S5      nUbB  [        R                  " [        US9   [
        R                  " SU-   SSX1SS     S9  S S S 5        g g ! , (       d  f       g = f)Nfoorr   {   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   ro   r   r   )rs   r@   engine_kwargs)reescaper%   raises	TypeErrorrd   re   )rh   r    r   r   msgs        r!   test_engine_kwargsTestReaders.test_engine_kwargs   s     FOCLFO4=6?
 ''))WXCu_))NOC))WXCy4h&'"3QRL"A	 54 44s   ? B))
B7c           	     @   Sn[         R                  " [        US9   [        R                  " SU-   SSSS9  S S S 5        [         R                  " [        US9   [        R                  " SU-   SS	/SSS
9  S S S 5        g ! , (       d  f       NM= f! , (       d  f       g = f)Nz Passing an integer for `usecols`r   r   ro   r      rs   r@   usecolsSheet2r   rs   skiprowsr@   r   r%   r   
ValueErrorrd   re   rh   r    r   s      r!   test_usecols_intTestReaders.test_usecols_int   s    0]]:S1MM("x1a 2 ]]:S1MM("# 21 21 21s   A>B>
B
Bc                   [        X!5        USS/   n[        XSU5        [        R                  " SU-   SS/ SQS9n[        R                  " SU-   SS	/S/ SQS
9n[        R
                  " Xe5        [        R
                  " Xu5        g )NBCr   ro   r   )r      r   r   r   r   r   rU   rN   rd   re   rf   rg   )rh   r,   r   r    rD   rL   df1rj   s           r!   test_usecols_listTestReaders.test_usecols_list	  s    #F43*%F3mmh8q)
 mmhS
 	c,
c,r#   c                   [        X!5        U/ SQ   n[        XSU5        [        R                  " SU-   SSSS9n[        R                  " SU-   SS/SSS	9n[        R
                  " Xe5        [        R
                  " Xu5        US
S/   n[        XSU5        [        R                  " SU-   SSSS9n[        R                  " SU-   SS/SSS	9n[        R
                  " Xe5        [        R
                  " Xu5        [        R                  " SU-   SSSS9n[        R                  " SU-   SS/SSS	9n[        R
                  " Xe5        [        R
                  " Xu5        g )NAr   r   r   ro   r   zA:Dr   r   r   r   r   r   zA,C,DzA,C:Dr   )rh   r,   r   r    rD   rL   rj   df3s           r!   test_usecols_strTestReaders.test_usecols_str  sV   #F4/*F3mmh8q%
 mmhS
 	c,
c,3*%F3mmh8q'
 mmhS
 	c,
c,mmh8q'
 mmhS
 	c,
c,r#   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   c                    [        X!5        USS/   n[        XcU5        [        R                  " SU-   SSUS9n[        R
                  " Xv5        g )Nr   r   r   ro   r   r   r   )rh   r,   r   r    r   rD   rL   r   s           r!   .test_usecols_diff_positional_int_columns_order:TestReaders.test_usecols_diff_positional_int_columns_orderQ  sP     	$F43*%F3h8q'
 	f/r#   r   Dc                    USS/   n[        [        U5      5      Ul        [        R                  " SU-   SUS9n[
        R                  " XT5        g )Nr   r   r   ro   rs   r   )rangelenrI   rd   re   rf   rg   )rh   r    r   rD   rL   r   s         r!   .test_usecols_diff_positional_str_columns_order:TestReaders.test_usecols_diff_positional_str_columns_ordera  sF    3*%s8}-w1hPWX
f/r#   c                    [        X!5        Un[        XSU5        [        R                  " SU-   SSS9n[        R
                  " Xe5        g Nr   ro   r   rs   r@   r   rh   r,   r   r    rD   rL   r   s          r!   test_read_excel_without_slicing+TestReaders.test_read_excel_without_slicingi  s?    #F4F3w1hRST
f/r#   c                    [        X!5        USS/   n[        XSU5        [        R                  " SU-   SSSS9n[        R
                  " Xe5        g )Nr   r   r   ro   r   zA,D:Er   r   r   s          r!   test_usecols_excel_range_str(TestReaders.test_usecols_excel_range_strr  sN    #F43*%F3h8q'
 	f/r#   c                    Sn[         R                  " [        US9   [        R                  " SU-   SSS9  S S S 5        g ! , (       d  f       g = f)NzInvalid column name: E1r   r   ro   zD:E1r   r   r   s      r!   $test_usecols_excel_range_str_invalid0TestReaders.test_usecols_excel_range_str_invalid}  s6    ']]:S1MM'H,6R 211	   ?
Ac                    Sn[         R                  " [        US9   [        R                  " SU-   SS/SS/S9  S S S 5        g ! , (       d  f       g = f)Nz(list indices must be integers.*, not strr   r   ro   r   r   r   r%   r   r   rd   re   r   s      r!   test_index_col_label_error&TestReaders.test_index_col_label_error  sD    8]]9C0MM("#%c
	 100s   A
Ac                    [         R                  " SU-   SSS9n[        / SQ[        / SS9S9n[        R
                  " X#5        g )Nr   Sheet3r   r   )r   r   r   EFrJ   columnsrI   )rd   re   r   r   rf   rg   rh   r    r   rL   s       r!   test_index_col_strTestReaders.test_index_col_str  s@    w1hRUV-U2C5H
 	f/r#   c           	         [         R                  " SU-   S/ SQS9n[        / SQ[        / /S-  / /S-  / SQS9S9n[        R
                  " X#5        g )	Nr   r   r   r   )r   r   r   r   levelscodesnamesr   )rd   re   r   r   rf   rg   r   s       r!   test_index_col_empty TestReaders.test_index_col_empty  sS    h8
 #RD1HRD1HOT
 	f/r#   r@   Nr   c                    [         R                  " SU-   SUS9n[        / SQ/ SQ// SQS9nU(       a  UR                  UR                  U   5      n[
        R                  " X45        g )Nr   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )rd   re   r   	set_indexr   rf   rg   )rh   r    r@   r   rL   s        r!   test_index_col_with_unnamed'TestReaders.test_index_col_with_unnamed  sd     h8y
 /0:X
 ))(*:*:9*EFH
f/r#   c                    Sn[         R                  " [        US9   [        R                  " SU-   S/S9  S S S 5        g ! , (       d  f       g = f)NzEUsecols do not match columns, columns expected but not found: \['E'\]r   r   r   r   r   r   s      r!   %test_usecols_pass_non_existent_column1TestReaders.test_usecols_pass_non_existent_column  s=     	 ]]:S1MM'H,se< 211r   c                    Sn[         R                  " [        US9   [        R                  " SU-   SS/S9  S S S 5        g ! , (       d  f       g = f)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_type#TestReaders.test_usecols_wrong_type  s@    D 	
 ]]:S1MM'H,tQi@ 211s   A  
Ac                ~    [         R                  " SU-   SS9n[        SS//SS/S9n[        R                  " X#5        g )	Ntest2ro   rs   aaaabbbbbrv   Test1r   rd   re   r   rf   rg   )rh   r    ry   rL   s       r!   test_excel_stop_iterator$TestReaders.test_excel_stop_iterator  s>    w1hGvw/067:KL
f/r#   c                   [        X!5        US:X  a2  US:X  a,  UR                  [        R                  R	                  SS95        [
        R                  " SU-   SS9n[        [        R                  //S/S	9n[        R                  " XE5        g )
Nr   r   z+Calamine can't extract error from ods filesrP   test3ro   r	  rv   r   )rU   rR   r%   rS   rT   rd   re   r   nprp   rf   rg   )rh   r,   r   r    ry   rL   s         r!   test_excel_cell_error_na$TestReaders.test_excel_cell_error_na  sz    #F4 ZH$6!!)V!W w1hGrvvhZ&:
f/r#   c                p   [        X!5        Un[        XSU5        [        R                  " SU-   SSS9n[        R                  " SU-   SS/SS9n[        R
                  " Xe5        [        R
                  " Xu5        [        R                  " SU-   SSSS9n[        R
                  " XR                  S S	 5        g )
Nr   ro   r   r   r   r   rs   r   r@   rs   r@   
skipfooter)rU   rN   rd   re   rf   rg   iloc)	rh   r,   r   r    rD   rL   r   rj   r   s	            r!   test_excel_tableTestReaders.test_excel_table  s    #F4F3mmGh.8qQmmh8qcQ
 	c,
c,mmh8qQ
 	c88CR=1r#   c                z   [        X!5        [        X25      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ[	        [        SSS5      [        SSS	5      [        S
SS5      [        SSS5      [        SSS5      /SU S3S9S.5      nSn[        R                  " Xc-   SS9n[        R                  " Xu5        UR                  5       nSUR                  UR                  S   S4'   [        R                  " Xc-   SS9n[        R                  " Xx5        [        UR                  5       HD  u  p[        R                  " Xc-   SU	S9nUR                  U
5      n[        R                  " X{5        MF     US   R!                  ["        5      US'   [        R                  " Xc-   SS["        0S9n[        R                  " Xu5        g )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[]r`   )IntColFloatColBoolColStrColStr2ColDateCol
test_typesro   r	  g      @r/  r   r.  rs   
converters)rU   rG   r   	from_dictr   r   rd   re   rf   rg   copylocrI   	enumerater   r   applyr7   )rh   r,   r   r    rM   rL   basenameactualfloat_expectedicolrJ   exps               r!   test_reader_special_dtypes&TestReaders.test_reader_special_dtypes  s   #F4H-&&*B;)2  r2. r2. q!, r2. q"-  vQ-	
&   x2xH
f/ "AD>//2I=>x2xH
f5 $H$4$45JD]]#DF $$T*C!!&. 6 &h/55c:H(C
 	f/r#   c           
        Sn[         R                  " / SQS[        R                  SSS// SQS[        R                  S	S
S/S.5      nS S S S S.n[        R
                  " X!-   SUS9n[        R                  " XS5        g )Ntest_converters)r   r   r  r   g      )@gL2@g3333333@g:0y5>)FoundrC  rC  	Not foundrC  1345)r+  r,  r-  r.  c                (    U S:w  a  [        U 5      $ S$ )N rB  )intr   s    r!   <lambda>4TestReaders.test_reader_converters.<locals>.<lambda>&  s    !r'A <u <r#   c                :    U (       a  SU -  $ [         R                  $ )Nr$  )r  rp   rL  s    r!   rM  rN  '  s    A"q&"9266"9r#   c                    U S:w  a  S$ S$ )NrJ  rC  rD  r0   rL  s    r!   rM  rN  (  s    AG<<r#   c                *    U (       a  [        U 5      $ S$ )NrJ  )r7   rL  s    r!   rM  rN  )  s    1Q,",r#   )r+  r,  r   r   ro   r2  )r   r4  r  rp   rd   re   rf   rg   )rh   r    r9  rL   r3  r:  s         r!   test_reader_converters"TestReaders.test_reader_converters  s    $&&.!2664{CLS#6	
 =9<,	

 H
 	f/r#   c           	     4   Sn[         R                  " X!-   5      n[        / SQ/ SQ/ SQSS[        R                  S/S.5      n[
        R                  " X45        [         R                  " X!-   SS	[        S
.S9nUS   R                  S5      US'   US   R                  S	5      US'   [        / SQSS9US'   [
        R                  " X45        Sn[        R                  " [        US9   [         R                  " X!-   SS0S9  S S S 5        g ! , (       d  f       g = f)N	testdtyper   r   r   r        @      @      @      @      ?       @      @r   r   r!  r"  float64float32)r   r   r!  r`   r   r   001002003004r7   r!  z(Unable to convert column d to type int64r   r"  int64)rd   re   r   r  rp   rf   rg   r7   astyper   r%   r   r   )rh   r    r9  r:  rL   r   s         r!   test_reader_dtypeTestReaders.test_reader_dtype3  s    x23!)!3,	
 	f/YYS'Q
 !,,Y7 ,,Y7;5I
f/8]]:S1MM(-c7^D 211s   &D		
Dzdtype,expectedrV  rW  r\  r]  r^  r_  r`  ra  r`   rb  r7   rE  2rG  c                x    Sn[         R                  " XA-   US9n[        U5      n[        R                  " XS5        g )NrU  r`   r  )rh   r    ra   rL   r9  r:  s         r!   test_reader_dtype_str!TestReaders.test_reader_dtype_strP  s4    2 x2%@X&
f/r#   c                   US;   a  [         R                  " SU S35        [        [        SS/SS9[        SS	/S
S9[        SS/SS9[        SS/SS9[        [        R
                  S/SS9[        [        R
                  S/S
S9[        [        R
                  S/SS9[        [        R
                  S/SS9[        [        R                  " S5      /S-  5      [        [        R
                  [        R
                  /SS9S.
5      nUR                  USSS9  [        R                  " USUS9nUS:X  Ga  SS K	nSSK
Jn  [        UR                   V	s0 s H  n	X" UR                  XY   SS95      _M     sn	5      n
U
S   R                  [        R                  " UR!                  5       5      5      U
S'   U
S   R                  [        R                  " UR!                  5       5      5      U
S'   U" U
S   R                  R"                  R%                  UR'                  S S!95      5      U
S'   U" UR                  S S /5      5      U
S"'   O(Un
[)        X5      nU
S   R                  S#U S$35      U
S'   [*        R,                  " Xj5        g s  sn	f )%Nr[   r\   r]   r   r   Int64r`   rX  rZ  Float64TFr_   r   r   string   g      @z
2019-12-31r   )
r   r   r!  r"  r#  r   ghijtestrs   rI   rs   dtype_backendpyarrowr   )ArrowExtensionArray)from_pandasr"  ru  rv  rF   )rM   rw  r)  r*  )r%   rb   r   r   rd   NA	Timestamprc   re   r|  pandas.arraysr}  r   arrayrh  
ArrowDtyperr  	_pa_arraycast	timestamprG   rf   rg   )rh   r    r{  r   r:   ri   r   par}  rY   rL   rM   s               r!   test_dtype_backendTestReaders.test_dtype_backendo  sC   ((KK3H:Q?@QF'2S#Ji8T5M;S#Jh7RUUAJg6RUUCL	:RUUDM;RUUCL9R\\,781<=RUUBEEN':
 	I&>&
 I% 9   "zz) ,RXXbg4X-PQQ)H %SM00ryy{1KLHSM$SM00ryy{1KLHSM/##--222<<T<3JKHSM 0$0FGHSMH1D$SM003tfA?HSM
f/)s   "Jc                   US;   a  [         R                  " SU S35        [        [        R                  S/S[        R                  /S.5      nUR                  USSS	9  [        R                  " USS
SS9n[        R                  " XC5        g )Nr[   r\   r]   r\  rX  r   r   rx  Fry  numpy_nullabler`  )rs   r{  ra   )
r%   rb   r   r  rp   rc   rd   re   rf   rg   )rh   r    r:   ri   r   s        r!   test_dtype_backend_and_dtype(TestReaders.test_dtype_backend_and_dtype  s|    ((KK3H:Q?@bffc]#rvv?@
I&>*	
 	f)r#   c           	     x   US;   a  [         R                  " SU S35        [        [        R                  " SS/[        R
                  S9[        R                  " S[        R                  /[        R
                  S9S.5      nUR                  US	S
S9  [        R                  " SU5         [        R                  " US	SS9nS S S 5        [        [        SS/[        R                  " U5      S9[        SS /[        R                  " U5      S9S.5      n[        R                  " WUS
S9  g ! , (       d  f       No= f)Nr[   r\   r]   r   r   r`   r   r  rx  Fry  zmode.string_storager  rz  )check_column_type)r%   rb   r   r  r  object_rd   r  rc   option_contextre   r   StringDtyperf   rg   )rh   r    string_storager:   ri   r   rL   s          r!   test_dtype_backend_string%TestReaders.test_dtype_backend_string  s    ((KK3H:Q?@XXsCj

;XXsBEEl"**=
 	I&>4nE]]f<LF F
 S#Jbnn^.LMS$Kr~~n/MN
 	fh%H FEs   +D++
D9zdtypes, exp_valuer   a.1rg  c                   SnS[         0UEnUR                  5       n[        R                  " XA-   US9n[	        [        S/[         S9[        U/U(       d  [         OS S9S.5      nXV:X  d   S5       e[        R                  " Xx5        g )Ndf_mangle_dup_col_dtypesr   r`   r   )r   r  zdtype dict changed)objectr5  rd   re   r   r   rf   rg   )	rh   r    dtypes	exp_valuer9  
dtype_dictdtype_dict_copyr   rL   s	            r!   test_dtype_mangle_dup_cols&TestReaders.test_dtype_mangle_dup_cols  s     .6,V,
$//+x2*EQCv.ykv4P
 ,B.BB,
f/r#   c                    Sn[         R                  " X!-   5      n[        S/ SQ05      n[        R                  " X45        g )Ntest_spacestestcol)zthis is greatz4    spacesz1 trailing z
 1 leadingz2  spaces  multiple  timesr  )rh   r    r9  r:  rL   s        r!   test_reader_spacesTestReaders.test_reader_spaces  s?     x23 

 	f/r#   zbasename,expectedzgh-35802COLUMNzTest (1)zgh-36122z
got 2nd sar   c                    US:w  a  [         R                  " SU 35        [        R                  " X2-   5      n[        R
                  " XT5        g )Nr   zSkipped for engine: )r%   rb   rd   re   rf   rg   )rh   r   r    r9  rL   r:  s         r!   test_read_excel_ods_nested_xml*TestReaders.test_read_excel_ods_nested_xml  s>     U?KK.vh78x23
f/r#   c                    Sn[         R                  " X!-   S S9n/ SQn[        R                  " XCR	                  5       5        U[        UR	                  5       5      :X  d   eg )Ntest_multisheetr	  )CharlieAlphaBeta)rd   re   rf   assert_contains_allkeyslistrh   r    r9  dfsexpected_keyss        r!   test_reading_all_sheets#TestReaders.test_reading_all_sheets   sP     %mmH/DA4
}hhj9 SXXZ 0000r#   c                    Sn/ SQn[         R                  " X!-   US9n[        [        U5      5      n[        R
                  " X4R                  5       5        [        U5      [        UR                  5       5      :X  d   eg )Nr  )r   r  r  r	  )rd   re   r  setrf   r  r  r   )rh   r    r9  r  r  s        r!   %test_reading_multiple_specific_sheets1TestReaders.test_reading_multiple_specific_sheets  sa     %1mmH/MJS/0
}hhj9=!S_444r#   c                    Sn[         R                  " X!-   S S9n/ SQn[        R                  " XCR	                  5       5        g )Nblank_with_headerr	  )ro   r   r   )rd   re   rf   r  r  r  s        r!   "test_reading_all_sheets_with_blank.TestReaders.test_reading_all_sheets_with_blank  s5     'mmH/DA6
}hhj9r#   c                r    [         R                  " SU-   SS9n[        R                  " U[	        5       5        g )Nblankro   r	  )rd   re   rf   rg   r   )rh   r    r:  s      r!   test_read_excel_blank!TestReaders.test_read_excel_blank%  s)    w1hG
fik2r#   c                v    [        SS/S9n[        R                  " SU-   SS9n[        R                  " X25        g )Ncol_1col_2r   r  ro   r	  )r   rd   re   rf   rg   )rh   r    rL   r:  s       r!   !test_read_excel_blank_with_header-TestReaders.test_read_excel_blank_with_header)  s5    gw%782X=(S
f/r#   c                8   [         R                  " [        SS9   [        R                  " SU-   S/S S9  S S S 5        [         R                  " [
        SS9   [        R                  " SU-   S S S9  S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)	Nz \(sheet: Sheet1\)$r   r  r   )headerrs   r   c                    SS-  $ )Nr   r   r0   rL  s    r!   rM  HTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>3  s    Ar#   )r   rs   )r%   r   r   rd   re   ZeroDivisionErrorrh   r    s     r!   *test_exception_message_includes_sheet_name6TestReaders.test_exception_message_includes_sheet_name.  sp    ]]:-CDMM-8!QUV E]],4JKMM'H,oRVW LK EDKKs   A:B:
B
Bz-ignore:Cell A4 is marked:UserWarning:openpyxlc                   [        X!5        [        [        R                  " S5      S/[        R                  " S5      S/SS//SS/S	9nUS
:X  a,  UR	                  [
        R                  R                  SS95        Uc2  US;   a,  UR	                  [
        R                  R                  SS95        [        R                  " SU-   5      n[        R                  " XT5        g )Nz
2016-03-12zMarc Johnsonz
2016-03-16z
Jack Blackg@xDzTimothy BrownDateColWithBigInt	StringColr   r   zMaybe not supported by openpyxlrP   )r   r   z)Defaults to openpyxl, maybe not supportedtestdateoverflow)rU   r   rd   r  rR   r%   rS   rT   re   rf   rg   )rh   r,   r   r    rL   r   s         r!   test_date_conversion_overflow)TestReaders.test_date_conversion_overflow5  s     	$F4l+^<l+\:'
 )+6
 Z!!)J!K >h*<<!!)T!U 1H<=
f/r#   c                    [        X15        SnSnUn[        XrU5        [        R                  " XR-   USS9n[        R                  " XR-   SUS9n	[        R
                  " X5        [        R
                  " X5        g Nr   ro   r   r   )r@   rs   r   )
rh   r,   r    r   rD   filenamers   rL   r   rj   s
             r!   test_sheet_nameTestReaders.test_sheet_nameQ  sn    #F4
F3mmJ!
 mmH/1T
c,
c,r#   c                    SU-   n[         R                  " USSS9n[        US5       n[         R                  " USSS9n[        R                  " X55        S S S 5        g ! , (       d  f       g = f)Nr   ro   r   r   r   )rd   re   r   rf   rg   )rh   r    pthrL   r   r:  s         r!   test_excel_read_buffer"TestReaders.test_excel_read_bufferb  sS     ==QG#t_]]1QGF!!(3 __s   -A
A,c                    Sn[         R                  " [        SS9   [        R                  " SUS9  S S S 5        g ! , (       d  f       g = f)Nr   zUnknown engine: foor   rJ  r   r   )rh   
bad_engines     r!   test_bad_engine_raises"TestReaders.test_bad_engine_raisesi  s1    
]]:-BCMM"Z0 DCCs	   ;
A	rs   r   r   r   ro   c                    Sn[         R                  " [        US9   [        R                  " SU-   US9  S S S 5        g ! , (       d  f       g = fNz?Worksheet index 3 is invalid|Worksheet named 'Sheet4' not foundr   r  r	  r   )rh   r    rs   r   s       r!   test_bad_sheetname_raises%TestReaders.test_bad_sheetname_raisesn  s7     P]]:S1MM'H,D 211	   >
Ac                    SU 3nSR                  / SQ5      n[        R                  " [        US9   [        R
                  " U5        S S S 5        g ! , (       d  f       g = f)Nr   |)z(No such file or directoryu   没有那个文件或目录zFile o directory non esistente)r   )joinr%   r   FileNotFoundErrorrd   re   )rh   r    bad_filer   s       r!   test_missing_file_raises$TestReaders.test_missing_file_raisesx  sJ    
#
 ]],E:MM(# ;::s   A
A c                   SnUc	  [         nSnO*US:X  a  SSKJn  UnSnOUS:X  a  SSKJn  UnS	nO[
        nS
n[        R                  " X4S9   [        R                  " [        U5      5        S S S 5        g ! , (       d  f       g = f)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   rd   re   r   )rh   r   
bad_streamerrorr   r  r  s          r!   test_corrupt_bytes_raises%TestReaders.test_corrupt_bytes_raises  s    
>E.  v&EX  z!5!E-CE*C]]5,MM'*-. -,,s    A66
Bc                .   [        SU-   S5       nUR                  UR                  5       S9  S S S 5        [        R                  " UR
                  5      n[        R                  " SU-   5      n[        R                  " XE5        g ! , (       d  f       N^= f)Nr   r   )content)r   serve_contentreadrd   re   urlrf   rg   )rh   
httpserverr    r   	url_tablelocal_tables         r!   test_read_from_http_url#TestReaders.test_read_from_http_url  sm     'H$d+q$$QVVX$6 ,MM*..1	mmGh$67
i5	 ,+s   B
Bc                (   [        SU-   S5       nUR                  SU-   US9  S S S 5        SUR                   S3U-   n[        R                  " XSS9n[        R                  " SU-   5      n[
        R                  " Xg5        g ! , (       d  f       Ne= f)Nr   r   KeyBodys3:///test1)storage_options)r   
put_objectrJ   rd   re   rf   rg   )rh   r    s3_bucket_publics3sor   r  r  r  s           r!   test_read_from_s3_url!TestReaders.test_read_from_s3_url  s     'H$d+q''Gh,>Q'G , &++,F3h>MM#<	mmGh$67
i5 ,+s   B
Bc                   [        SU-   S5       nUR                  SU-   US9  S S S 5        SS KnUR                  " S0 UD6nUR                  SUR                   S3U-   5       n[
        R                  " U5      nS S S 5        [
        R                  " SU-   5      n[        R                  " WU5        g ! , (       d  f       N= f! , (       d  f       NP= f)Nr   r   r  r   r  r  r0   )	r   r  s3fsS3FileSystemrJ   rd   re   rf   rg   )	rh   r    r	  r
  r   r  s3r  r  s	            r!   test_read_from_s3_object$TestReaders.test_read_from_s3_object  s     'H$d+q''Gh,>Q'G , 	&&WWu-2236:XEF!a(I G mmGh$67
i5 ,+ GFs   B4$C4
C
Cc                   [         R                  R                  U" SSS5      SU-   5      n[        R                  " U5      n [        R                  " SU-   5      n[        R                  " WU5        g ! [
         aN    SR                  [        R                  " 5       5      R                  5       n[        R                  " SU 35         Nof = f)Nr<   r=   rn   r   zfile://localhost/ zfailing on )ospathr  rd   re   r	   platformunamestripr%   rb   rf   rg   )rh   r    rB   
localtabler  r  platform_infos          r!   test_read_from_file_url#TestReaders.test_read_from_file_url  s     WW\\(4"A7XCUV
mmJ/	7&9J&FGI 	i5  	7HHX^^%56<<>MKK+m_56	7s   A4 4ACCc                    SU-   n[         R                  " USSS9n[        SU-   5      n[         R                  " USSS9n[        R                  " X55        g r   )rd   re   r   rf   rg   )rh   r    str_pathrL   path_objr:  s         r!   test_read_from_pathlib_path'TestReaders.test_read_from_pathlib_path  sM    X%==h!L(*+xHJ
h/r#   c                    [         R                  R                  SU-   5      n[        US5       n[        R
                  " USSS9nAUR                  5         S S S 5        g ! , (       d  f       g = f)Nr   r   ro   r   r   )r  r  r  r   rd   re   r  )rh   r    r  r   r   s        r!   test_close_from_py_localpath(TestReaders.test_close_from_py_localpath  sO    77<<( 23(D!QaHBAFFH	 "!!s   (A  
A.c                   [        X!5        US:X  a2  US:X  a,  UR                  [        R                  R	                  SS95        [
        R                  " S[        SSS5      [        SS	S
S5      [        SSSS5      [        SSSS5      [        SSSS5      [        SSSS5      [        SSSS5      [        SSS S!5      [        S S"SS#5      [        S$S%S&S'5      [        S(S)S*5      /05      n[        R                  " S+U-   S,S-9n[        R                  " XT5        [        R                  " S.U-   S,S-9n[        R                  " XT5        g )/Nr   r   z0ODS file contains bad datetime (seconds as text)rP   Timer   r   r   -   8   i r     1   i@ rs     *   i    9   #   i 	   )      i           i'	 r(  i`
 5   i 5    %   r   i       6   
times_1900ro   r	  
times_1904)rU   rR   r%   rS   rT   r   r4  r   rd   re   rf   rg   )rh   r,   r   r    rL   r:  s         r!   test_reader_secondsTestReaders.test_reader_seconds  s?   #F4 ZH$6!!M "  &&AqMBF+BF+BF+BF+BF+RV,QF+RF+RF+R$
$ |h68L
f/|h68L
f/r#   c           
        [        X!5        [        X25      n[        R                  " SS/SS//5      nSU-   n[	        SS[
        R                  " S5      S	/S
S[
        R                  " S5      S/SS[
        R                  " S5      S/SS[
        R                  " S5      S	//US9nXuS
      R                  SU S35      XuS
   '   [
        R                  " USSS/SS9n[        R                  " X5        XWl        / SQUl        [
        R                  " USSS/S9n[        R                  " X5        XWl        [
        R                  " USSS/SS/S9n[        R                  " X5        / SQUl        UR                  SS /5      Ul        [
        R                  " US!SS/S9n[        R                  " X5        [        S5      Ul        UR                  S"S#/5      Ul        [
        R                  " US$SS/SS9n[        R                  " X5        UR                  SS
/SS%9R                  S"S#/5      Ul        [
        R                  " US&SSS/S9n[        R                  " X5        UR                  S"S#/5      Ul        UR                  SS /5      Ul        [
        R                  " US'SS/SS/S9n[        R                  " X5        [
        R                  " US(SS/SS/S
S)9n[        R                  " X5        g )*Nr   barr   r   testmultiindexr   rX  
2015-01-01Tr   rY  
2015-01-02Fr   rZ  
2015-01-03r  r[  
2015-01-04r   r)  r*  	mi_columnr   )rs   r  r@   r_  mi_indexr   bothrs   r@   r  ilvl1ilvl2mi_index_namec1c2mi_column_name)levelname_with_int	both_nameboth_name_skiprows)rs   r@   r  r   )rU   rG   r   from_productr   rd   r  rh  re   rf   rg   rI   r   	set_namesr   
set_levels)	rh   r,   r   r    rM   mimi_filerL   r:  s	            r!   test_read_excel_multiindex&TestReaders.test_read_excel_multiindex
  s   #F4H-$$uensCj%AB"X- Cl3T:Cl3U;Cl3U;Cl3T:	 
 #a5/003tfA?AQFa
 	f/ /w:!QP
f/ 1a&!Q
 	f/ 0w&89w?qRSfU
f/ q<<t5 0!Q1
 	f/ ==!Qq=9CCT4LQ1aV
 	f/ <<t5w&891vq!f
 	f/ +!fq6
 	f/r#   zsheet_name,idx_lvl2both_name_blank_after_mi_namer   r   both_name_multiple_blanksr  c           
     $   [        X!5        SU-   n[        R                  " SS/SS//SS/S9n[        X25      n[	        S	S
[
        R                  " S5      S/SS[
        R                  " S5      S/SS[
        R                  " S5      S/SS[
        R                  " S5      S//U[        R                  " / SQU4SS/S9S9n	XS      R                  SU S35      XS   '   [
        R                  " UUSS	/SS	/S9n
[        R                  " X5        g )NrC  r   rB  r   r   rO  rP  r   r   rX  rD  Tr   rY  rE  Fr   rZ  rF  r  r[  rG  )r   r   rB  rB  rL  rM  r   r)  r*  r   rK  )rU   r   rV  rG   r   rd   r  from_arraysrh  re   rf   rg   )rh   r,   r   r    rs   idx_lvl2rZ  rY  rM   rL   r   s              r!   +test_read_excel_multiindex_blank_after_name7TestReaders.test_read_excel_multiindex_blank_after_name^  s"    	$F4"X-$$uensCj%A$PTVH-Cl3T:Cl3U;Cl3U;Cl3T:	 ((-x8(
 #a5/003tfA?A!!fq6	
 	f/r#   c                    SU-   n[         R                  " USSS/S9n[        R                  " SS/5      n[	        / SQ/S	-  US
9n[
        R                  " X55        g )NrC  index_col_noner   r   rs   r  r   r   keyvalrV  r   r   )rd   re   r   rV  r   rf   rg   )rh   r    rZ  r   exp_columnsrL   s         r!   &test_read_excel_multiindex_header_only2TestReaders.test_read_excel_multiindex_header_only  s\     #X-w3CQPQFS --z>.JKl^a/E
f/r#   c           	        SU-   n[         R                  " [         R                  [         R                  [         R                  [         R                  [         R                  // SQ/ SQ/ SQ/ SQ/ SQ/[        S9n/ SQn[	        / S	Q/ S
Q// SQ/ SQ/S S /S9n[        / S	QS S9n[        X6US9n[        R                  " USSS9n[        R                  " X5        XWl        [        R                  " USSS/S9n[        R                  " X5        [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n/ SQn[	        / SQ/ SQ// SQ/ SQ/S S /S9n[        / SQS S9n[        X6US9n[        R                  " USSS9n[        R                  " X5        XWl        [        R                  " USSS/S9n[        R                  " X5        g )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   r   r   r   r  r   r   r   rI   r   single_namesr   r   multi_namesr   )r  r  r  r  r  )r  r  r  r  r  )r   r   r   r   r  single_no_namesmulti_no_names)r  r  rp   r  r   r   r   rd   re   rf   rg   rI   )	rh   r    r  r=   r   rY  sirL   r:  s	            r!   test_excel_old_index_format'TestReaders.test_excel_old_index_format  s   *X5
 xx888888 

 JMM &'9:,
 IPT
 TW=xNaP
f/xMaQRVT
f/ xx88888
 JGG #O4,
 JQUVTW=x4EQRS
f/x4DQRTUPVW
f/r#   c                    SnS H=  n[         R                  " [        US9   [        R                  " SU-   US9  S S S 5        M?     g ! , (       d  f       MQ  = f)Nz#Passing a bool to header is invalid)TFr   r   r  r   )rh   r    r   args       r!   test_read_excel_bool_header_arg+TestReaders.test_read_excel_bool_header_arg  sA    3 Cy4g0= 54 !44s   A
A	c           
        [        X!5        [        X25      n[        R                  " SU-   SSS/S9n[	        SS[        R
                  " S5      S	/SS
[        R
                  " S5      S/SS[        R
                  " S5      S/SS[        R
                  " S5      S	/// SQS9nUS   R                  SU S35      US'   [        R                  " XV5        [        R                  " SU-   S[        R                  " SS/5      S9n[        R                  " XV5        [        R                  " SU-   SS S9n[        R                  " XV5        [        R                  " SU-   SS/ SQS9n[	        SS
[        R
                  " S5      S/SS[        R
                  " S5      S/SS[        R
                  " S5      S	/// SQS9nUS   R                  SU S35      US'   [        R                  " XV5        g )Ntestskiprowsskiprows_listr   r   rs   r   r   rX  rD  TrY  rE  Fr   rZ  rF  r  r[  rG  r_  r   r!  r)  r*  c                    U S;   $ N)r   r   r0   rL  s    r!   rM  6TestReaders.test_read_excel_skiprows.<locals>.<lambda>   s    qF{r#   )rs   r   r   )rU   rG   rd   re   r   r  rh  rf   rg   r  r  rh   r,   r   r    rM   r:  rL   s          r!   test_read_excel_skiprows$TestReaders.test_read_excel_skiprows  s   #F4H-X%/QPQF
 Cl3T:Cl3U;Cl3U;Cl3T:	 )
 !,,s4&];
f/X%&XXq!f%

 	f/ X%&*

 	f/X%&&	
  Cl3U;Cl3U;Cl3T:	 )
 !,,s4&];
f/r#   c                B   [        X!5        [        X25      n[        R                  " SU-   SS S9n[	        SS[        R
                  " S5      S/S	S
[        R
                  " S5      S/// SQS9nUS   R                  SU S35      US'   [        R                  " XV5        g )Nr  r  c                    U S;  $ )N)r   r   r   r0   rL  s    r!   rM  FTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s	    q	1r#   r  r   rX  rD  Tr   rZ  rF  Fr_  r   r!  r)  r*  )	rU   rG   rd   re   r   r  rh  rf   rg   r  s          r!   (test_read_excel_skiprows_callable_not_in4TestReaders.test_read_excel_skiprows_callable_not_in  s    #F4H-X%&1

 Cl3T:Cl3U; )
 !,,s4&];
f/r#   c                    Sn[         R                  " SU-   US9n[         R                  " SU-   5      nUS U n[        R                  " X45        g )Nr   r   nrows)rd   re   rf   rg   )rh   r    num_rows_to_pullr:  rL   s        r!   test_read_excel_nrows!TestReaders.test_read_excel_nrows,  sM    w19IJ==8!34--.
f/r#   c                    [         R                  " SU-   5      n[        U5      nUS-   n[         R                  " SU-   US9n[        R                  " XR5        g )Nr   r$  r  )rd   re   r   rf   rg   )rh   r    rL   num_records_in_filer  r:  s         r!   0test_read_excel_nrows_greater_than_nrows_in_file<TestReaders.test_read_excel_nrows_greater_than_nrows_in_file4  sN    ==8!34!(m.3w19IJ
f/r#   c                    Sn[         R                  " [        US9   [        R                  " SU-   SS9  S S S 5        g ! , (       d  f       g = f)Nz'nrows' must be an integer >=0r   r   rH  r  r   r   s      r!   +test_read_excel_nrows_non_integer_parameter7TestReaders.test_read_excel_nrows_non_integer_parameter<  s4    .]]:S1MM'H,C8 211r  z-filename,sheet_name,header,index_col,skiprowsrC  rH  rI  rJ  rQ  r  r  c                    U S;   $ r  r0   rL  s    r!   rM  TestReaders.<lambda>J  s    AKr#   c           	         [         R                  " X!-   UUUUS9R                  SS n[         R                  " X!-   UUUUSS9n[        R                  " X5        g)z
For various parameters, we should get the same result whether we
limit the rows during load (nrows=3) or after (df.iloc[:3]).
)rs   r  r@   r   Nr   )rs   r  r@   r   r  )rd   re   r  rf   rg   )	rh   r    r  rs   r  r@   r   rL   r:  s	            r!   test_read_excel_nrows_params(TestReaders.test_read_excel_nrows_paramsB  si    & ==!
 $r !
 	f/r#   c                    [         R                  " [        SS9   [        R                  " SU-   SS5        S S S 5        g ! , (       d  f       g = f)Nzbut 3 positional argumentsr   r   ro   r   r   r  s     r!   test_deprecated_kwargs"TestReaders.test_deprecated_kwargsf  s3    ]]9,HIMM'H,h: JIIs	   ?
Ac                    SU-   n/ SQn[         R                  " / SQSS9n[        X4SS9n[        R                  " USS	S
/S S9n[
        R                  " XV5        g )NrC  ))r   r   ri  r   r  r  ))r   r   ri  r   r   r  )r   r   r`  )r   r   r  rf  r   r   rK  )r   from_tuplesr   rd   re   rf   rg   )rh   r    	file_namer=   idxrL   r   s          r!   "test_no_header_with_list_index_col.TestReaders.test_no_header_with_list_index_colj  s`    $x/	;$$8
 Tf="2q!fT
 	h/r#   c                    SU-   nS[         R                  SS/n[        US/S9n[        R                  " U5      n[
        R                  " XT5        g )None_col_blank_lineg      ?r   r   numbersr   )r  rp   r   rd   re   rf   rg   )rh   r    r  r=   rL   r   s         r!   test_one_col_noskip_blank_line*TestReaders.test_one_col_noskip_blank_linew  sH    (83	RVVQ"TI;7y)
f/r#   c                8   SU-   n[         R                  " SS/5      n[        R                  [        R                  /[        R                  [        R                  /SS/SS//n[	        XCS9n[
        R                  " US	S
S/S9n[        R                  " Xe5        g )NrC  )r   r   )r   r   r   r   r   r  r   mi_column_empty_rowsr   rg  )	r   r  r  rp   r   rd   re   rf   rg   )rh   r    r  r   r=   rL   r   s          r!    test_multiheader_two_blank_lines,TestReaders.test_multiheader_two_blank_lines  s    $x/	((*j)AB 266266"2QFQFCT3"8!Q
 	f/r#   c                ^    SU-   n[         R                  " U5      nUR                  S:X  d   eg)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)rd   re   shape)rh   r    r  r   s       r!   test_trailing_blanks TestReaders.test_trailing_blanks  s.    
 &0	y)||v%%%r#   c                6   US:X  a  [         R                  " S5        US:X  a,  UR                  [         R                  R	                  SS95        [         R
                  " [        SS9   [        R                  " SU-   S	S
9  S S S 5        g ! , (       d  f       g = f)Nr   *chartsheets do not exist in the ODF formatr   4pyxlsb can't distinguish chartsheets from worksheetsrP   z"Worksheet named 'Chart1' not foundr   
chartsheetChart1r	  	r%   rb   rR   rS   rT   r   r   rd   re   rh   r,   r   r    s       r!   test_ignore_chartsheets_by_str*TestReaders.test_ignore_chartsheets_by_str  sx    vKKDEX!!Q " 
 ]]:-QRMM,1hG SRR   (B


Bc                6   US:X  a  [         R                  " S5        US:X  a,  UR                  [         R                  R	                  SS95        [         R
                  " [        SS9   [        R                  " SU-   S	S
9  S S S 5        g ! , (       d  f       g = f)Nr   r  r   r  rP   z0Worksheet index 1 is invalid, 1 worksheets foundr   r  r   r	  r  r  s       r!   test_ignore_chartsheets_by_int*TestReaders.test_ignore_chartsheets_by_int  s    vKKDEX!!Q " 
 ]]P
 MM,1a@
 
 
r  c                    [         R                  " SU-   SSS9n[        / SQ/ SQ/ SQ// SQS	9n[        R                  " X#5        g )
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_format$TestReaders.test_euro_decimal_format  sH    ~8#PQRF@C
 N
 	f/r#   r0   )[__name__
__module____qualname____firstlineno__r%   rS   parametrizerk   rz   fixturer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r>  rR  ri  r  rp   r7   r   rm  r  r  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[  rc  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r0   r#   r!   rW   rW      s"   [[U%84&4-$PQ' R'0( ^^D!4 "4"04$-*1-f [[Iy)Y	9U00 [[Y#sc3Z(@A0 B00	0S	0	0 [[[4)40 50=A0
02&/0d04E: [[ %-%sBFFC0	  icDI> 4IF <EJc2663 7uE		
.0/.010f*I8 [[0B7eW=Mq<Q2RS0 T0 0& [[Hzl#;<=L>:;	
0015:30
X [[ OP0 Q06-"41
 [[	
QFQFHx&:Xx<PQE	E$/4 [[[[6  6 [[6  6 [[6 6 [[6 60"0HR0h [[,rvvsC.EF(266(Q,7	
00@	0G0R>40l0,009 [[7{QFAt<z4!Q>v1v1vt</!QDA_dD1a&A_dD:OP	

0
02;00	0&HA0r#   rW   c            
         \ rS rSrS r\R                  " SS9S 5       rS rS r	\R                  R                  S/ S	Q5      S
 5       rS rS r\R                  R                  SSSS/SS/SSS/SS//5      S 5       rS rS rS rS rS rS r\R                  R                  SSS/5      S 5       rS rS rS rS  rS!rg")#TestExcelFileReadi  c                   Sn[         R                  " [        US9   [        SU-   S5       n[        R
                  " UR                  5       US9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz+Expected file path name or file-like objectr   r   r   r   )r%   r   r   r   rd   re   r  )rh   r   r    r   r   s        r!   test_raises_bytes_input)TestExcelFileRead.test_raises_bytes_input  sW    ;]]9C0g($/1affhv6 0 10// 10s"   A2$A!A2!
A/	+A22
B Tr|   c                    [        [        R                  US9nUR                  U" SSS5      5        UR	                  [        SU5        g)z8
Change directory and set engine for ExcelFile objects.
r   r<   r=   rn   rw   N)r   rd   rw   r   r   r   s        r!   r   #TestExcelFileRead.cd_and_set_engine  s=    
 r||F3(49:BT2r#   c                    SSSSSS.n[         R                  " SU-   5       nUR                  nS S S 5        Ub  UnOX1SS     nWU:X  d   eg ! , (       d  f       N$= f)Nr   r   r   r   r   r   r   )rd   rw   r   )rh   r    r   r   rn   r   rL   s          r!   r   "TestExcelFileRead.test_engine_used  sn    
 \\'H,-\\F . H(!"6H!!! .-s   A
Ac                   [         R                  " SU-   5       n[         R                  " USSS/S9nS S S 5        [        S/S/S/[        R
                  /S//S	/S
9n[        R                  " WU5        [         R                  " SU-   5       n[         R                  " USSS/S9nS S S 5        [        [        R
                  /S/[        R
                  /[        R
                  /S//S	/S
9n[        R                  " X45        [         R                  " SU-   5       n[         R                  " USSS/S9nS S S 5        [        S/S/S/[        R
                  /S//S	/S
9n[        R                  " X45        [         R                  " SU-   5       n[         R                  " USSS/S9nS S S 5        [        [        R
                  /S/[        R
                  /[        R
                  /S//S	/S
9n[        R                  " X45        g ! , (       d  f       GN= f! , (       d  f       GNy= f! , (       d  f       N= f! , (       d  f       N= f)Ntest4ro   Fapplers   rt   ru   r  r   rabbitrv   r   Ttest51.#QNANrp   )rd   rw   re   r   r  rp   rf   rg   )rh   r    rn   ry   rL   s        r!   test_excel_passes_na&TestExcelFileRead.test_excel_passes_na  s   \\'H,-]](EgYF . VaS4&266(XJ7&
 	fh/\\'H,-]](DWIF . ffXsRVVHrvvh
;fX
 	f/ \\'H,-]](EgYF . [1#w8*=x
 	f/\\'H,-]](DWIF . ffXsRVVHrvvh
;fX
 	f/G .- .- .- .-s/   HHH+H<
H
H(+
H9<
I
	na_filter)NTFc                   0 nUb  X#S'   [         R                  " SU-   5       n[         R                  " U4SSS/S.UD6nS S S 5        USL a  S/S	/S
/S/S//nO6[        R                  /S	/[        R                  /[        R                  /S//n[        US/S9n[        R                  " WU5        g ! , (       d  f       Ny= f)Nr   r  ro   Tr  r  Fr  r   rp   r  rv   r   )rd   rw   re   r  rp   r   rf   rg   )rh   r    r   r   rn   ry   rL   s          r!   test_excel_passes_na_filter-TestExcelFileRead.test_excel_passes_na_filter  s      "+;\\'H,-]]# $")	
 F . "aS5'G9xjIH1#x"&&H:FHXx8
fh/ .-s   B33
Cc                   [        X!5        Un[        XSU5        [        R                  " SU-   5       n[        R                  " USSS9n[        R                  " USS/SS9nS S S 5        [
        R                  " WU5        [
        R                  " WU5        [        R                  " SU-   5       nUR                  SSS9nUR                  SS/SS9nS S S 5        [
        R                  " Xu5        [
        R                  " X5        [        R                  " SU-   5       n[        R                  " USSSS9n	S S S 5        [
        R                  " W	UR                  S S	 5        [        R                  " SU-   5       nUR                  SSSS
9n	S S S 5        [
        R                  " XR                  S S	 5        g ! , (       d  f       GNa= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Ng= f)Nr   r   r   r   r  )r@   )r   r@   r  r  )r@   r  )	rU   rN   rd   rw   re   rf   rg   r   r  )
rh   r,   r   r    rD   rL   rn   r   rj   r   s
             r!   test_excel_table_sheet_by_index1TestExcelFileRead.test_excel_table_sheet_by_index  s   #F4F3\\'H,---!qAC--!qcQOC . 	c8,
c8,\\'H,-++a1+-C++a1#+;C . 	c,
c,\\'H,---!qQOC .
c388CR=1\\'H,-++a1+;C . 	c88CR=1' .- .- .- .-s/   /F<1#G!G >G1<
G
G 
G.1
G?c                   [        X!5        Un[        XSU5        SnSn[        R                  " Xc-   5       nUR	                  USS9n	S S S 5        [        R                  " Xc-   5       nUR	                  SUS9n
S S S 5        [
        R                  " W	U5        [
        R                  " W
U5        g ! , (       d  f       Nn= f! , (       d  f       NN= fr  )rU   rN   rd   rw   r   rf   rg   )rh   r,   r   r    rD   rL   r  rs   rn   	df1_parse	df2_parses              r!   r  !TestExcelFileRead.test_sheet_name:  s    #F4F3
\\(-.%zQGI / \\(-.%aJGI / 	i2
i2 /. /.s   B/'C /
B= 
Crs   r   r   r   ro   c                    Sn[         R                  " [        US9   [        R                  " SU-   5       nUR                  US9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr  )r%   r   r   rd   rw   r   )rh   r    rs   r   rn   s        r!   r  +TestExcelFileRead.test_bad_sheetname_raisesL  sV     P]]:S1g01Uz2 2 2111 21s"   A(AA(
A%	!A((
A6c                B   SU-   n[         R                  " USSUS9n[        US5       n[         R                  " U5       n[         R                  " USSS9nS S S 5        S S S 5        [        R
                  " UW5        g ! , (       d  f       N.= f! , (       d  f       N7= f)Nr   ro   r   rs   r@   r   r   r   )rd   re   r   rw   rf   rg   )rh   r   r    r  rL   r   r   r:  s           r!   r  (TestExcelFileRead.test_excel_read_bufferW  sv     ==QvV#t_aCsx1M !  	h/ ! _s#   B A?B?
B		B
Bc           	     
   [        SU-   S5       n[        R                  " U5       n[        R                  " USSUS9  S S S 5        S S S 5        WR                  (       d   eg ! , (       d  f       N*= f! , (       d  f       N3= f)Nr   r   ro   r   r.  )r   rd   rw   re   closed)rh   r   r    r   r   s        r!   test_reader_closes_file)TestExcelFileRead.test_reader_closes_filea  sZ    'H$d+qaDdx1VT ! ,
 xxx	 ! ,+s!   A4A#A4#
A1	-A44
Bc                    Sn[         R                  " SU-   5       n[        R                  " [        US9   [         R
                  " USS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz8Engine should not be specified when passing an ExcelFiler   r   r   r   )rd   rw   r%   r   r   re   )rh   r    r   xls       r!   test_conflicting_excel_engines0TestExcelFileRead.test_conflicting_excel_enginesi  sS    H\\'H,-z5b/ 6 .-55 .-s"   A.AA.
A+	'A..
A<c                   [         R                  " SU-   US9n[        SU-   S5       nUR                  5       nS S S 5        [         R                  " [	        W5      US9n[
        R                  " X65        g ! , (       d  f       NC= f)Nr   r   r   )rd   re   r   r  r   rf   rg   )rh   r   r    rL   r   r=   r:  s          r!   test_excel_read_binary(TestExcelFileRead.test_excel_read_binaryq  se    ==8!3FC'H$d+q668D , wt}V<
h/	 ,+s   A66
Bc                    [        SU-   S5       n[        R                  " X2S9nS S S 5        [        R                  " SU-   US9n[        R                  " WU5        g ! , (       d  f       N>= f)Nr   r   r   )r   rd   re   rf   rg   )rh   r    r   r   r   rL   s         r!   %test_excel_read_binary_via_read_excel7TestExcelFileRead.test_excel_read_binary_via_read_excel{  sT    'H$d+q]]14F ,==8!3FC
fh/ ,+s   A
A+c                    [        SS5       n[        R                  " [        SS9   [        R
                  " USS/S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzdf_header_oob.xlsxr   zexceeds maximumr   r   r   r  )r   r%   r   r   rd   re   )rh   r   r   s      r!   )test_read_excel_header_index_out_of_range;TestExcelFileRead.test_read_excel_header_index_out_of_range  sN    &-z1BCaA/ D .-CC .-s!   A!AA!
A	A!!
A/r  zdf_empty.xlsxzdf_equals.xlsxc                    [        S/SS9n[        R                  " SS/SS/S9n[        S	S
//X#SS9n[        R
                  " USSSS	/S9n[        R                  " XE5        g )NZI2r   rh  )r   zB.1I11I12r`  r   r   rg  )rI   r   ra   ro   r   rK  )r   r   r  r   rd   re   rf   rg   )rh   r  r  colsrL   r   s         r!   test_header_with_index_col,TestExcelFileRead.test_header_with_index_col  sm     SE%%%z<&@PUWq!fXSgNQ1v
 	h/r#   c                   [        X!5        SU-   n[        R                  " U5       n[        R                  " USS/SUS9nS S S 5        [	        X25      n[        R
                  " SS/SU S3S	9n[        R                  " US S USS  /US   R                  5       US   R                  5       /S
9n	[        / / U	S9n
[        R                  " U
W5        g ! , (       d  f       N= f)Ntest_datetime_mir   r   )r  r@   r   z
2020-02-29z
2020-03-01r)  r*  r`   r`  r  )rU   rd   rw   re   rG   DatetimeIndexr   ra  to_pydatetimer   rf   rg   )rh   r,   r   r    r   rn   r:  rM   dtiexpected_column_indexrL   s              r!   test_read_datetime_multiindex/TestExcelFileRead.test_read_datetime_multiindex  s    #F4)\\!_]]5!Q1VTF  H-l;Sa=Q * 6 6!Wc!"gA$$&A$$&!
 Rr3HI
h/ _s   C
C!c                    [         R                  " [        SS9   [        R                  " SU S3S5          S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NzValue must be one of *r   zio.excelz.readerabc)r%   r   r   rd   r  r  s     r!   test_engine_invalid_option,TestExcelFileRead.test_engine_invalid_option  sM    ]]:-EF""XhZw#?G H GFGG GFs!   AA	A	
A	A
A(c                .   US:X  a  [         R                  " S5        US:X  a,  UR                  [         R                  R	                  SS95        [
        R                  " SU-   5       nUR                  S/:X  d   e S S S 5        g ! , (       d  f       g = f)Nr   r  r   r  rP   r  ro   )r%   rb   rR   rS   rT   rd   rw   sheet_names)rh   r,   r   r    rn   s        r!   test_ignore_chartsheets)TestExcelFileRead.test_ignore_chartsheets  s~    vKKDEX!!Q " 
 \\,12e$$
222 322s   (B
Bc                   [         4nUc  [        R                  " SU 35        O6US:X  a!  SS Kn[         UR                  R
                  4nOUS:X  a	  SSKJn  U4n[        U5      R                  SSS9  [        R                  " S	5          [        R                  " X!S
9  S S S 5        g ! U a     Nf = f! , (       d  f       g = f)NzInvalid test for engine=r   r   r   r  corruptzutf-8)encodingFr   )r
   r%   rb   r   biffhr  r   r  r   
write_textrf   assert_produces_warningrd   rw   )rh   r   r:   errorsr   r  s         r!   test_corrupt_files_closed+TestExcelFileRead.test_corrupt_files_closed  s    >KK26(;<v $**"6"67Fz!5#%FY""9w"?''.Y6 /.   /.s*   
B5B))B2/B51B22B55
Cr0   N)r  r  r  r  r  r%   r  r   r   r  rS   r  r"  r%  r  r  r  r2  r6  r9  r<  r?  rG  rO  rS  rW  r`  r  r0   r#   r!   r  r    s   7 ^^D!3 "3"$$0L [[[*=>0 ?00263$ [[	
QFQFHx&:Xx<PQ3	300000 [[Z/;K)LM0 N00,3r#   r  )r    r7   returnbool)r    r7   r   
str | Nonerb  r7   )rL   r   r    r7   r   rd  rb  rq   )5
__future__r   r   r   	functoolsr   r<   r   r  pathlibr   r  r   urllib.errorr	   r4   zipfiler
   numpyr  r%   pandas.util._test_decoratorsutil_test_decoratorsr
  pandasrd   r   r   r   r   r   pandas._testing_testingrf   read_ext_paramsr&   
skip_if_noengine_paramsr"   r(   r  r7   r-   r   r    r:   rD   rG   rN   rU   rW   r  )engexts   00r!   <module>rv     s   "   	   	 !     ) )   =
 LLMM&!
 LLMM*%
 LLMM&!
 LLx!89
LLbmmE23
LL2==1B#CD18*  ! C"C$S. 	"!" 	"  	  
  
    2
]0 ]0@)R RA+s   G*
#G*
