
    Mh                        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Jr  S SKrS SKrS S	KJr  S S
KJ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 SK&J'r'J(r(  \" 5       (       a  \RR                  RT                  r+/ SQr,\RZ                  " S\R\                  " S5      /S9\RZ                  " S\R\                  " S5      /S9\RZ                  " S\R\                  " S5      /S9\RZ                  " S\R\                  " S5      S9\RZ                  " S\R\                  " S5      S9\RZ                  " S\R\                  " S5      S9/r/S#S jr0S r1\Rd                  " \/ V Vs/ s H$  n \,  H  n\0" X5      (       d  M  \1" X5      PM     M&     snn \3S9S 5       r4\Rd                  S 5       r5\Rd                  S 5       r6\Rd                  S 5       r7S$S jr8S%S jr9S r: " S S 5      r; " S! S"5      r<gs  snn f )&    )annotations)datetimetime)partial)BytesION)Path)URLError)
BadZipFile)using_pyarrow_string_dtype)is_platform_windows)	DataFrameIndex
MultiIndexSeriesread_csv)ArrowStringArrayStringArray).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     T/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/excel/test_readers.py_is_valid_engine_ext_pairr&   F   s    
 ]]1FF 28v-6f,??h'17v-CCH.    c                b    U R                   U4-   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,   [   s,    
 ]]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_extr1   e   s     ==r'   c                    U u  pU$ N r1   r#   r$   s      r%   r#   r#   u   s    *FMr'   c                    U u  pU$ r3   r4   r5   s      r%   r$   r$   {   s    *FOr'   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%   r@   r@      s)    
 fe[9Hh!hOFMr'   c                    g)Nnsr4   )r$   r#   s     r%   get_exp_unitrC      s    r'   c                |    S U R                   l        [        X5      nU R                   R                  U5      U l         g r3   )indexnamerC   as_unit)expectedr$   r#   units       r%   adjust_expectedrJ      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#   r0   s     r%   xfail_datetimes_with_pyxlsbrQ      s7    KKL  	
 r'   c                     \ rS 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*S+\ RB                  S,/S-.5      4S.S/\"\"S-.\" \#" / S(QS.S09\#" / S)QS/S09\#" / S1Q\$S09\#" S2S3\ RB                  S4/\$S09S-.5      4/5      S5 5       r%S6 r&S7 r'\R                  RQ                  \)" 5       S8S99S: 5       r*\R                  R                  S;0 S<4S=S>0S<4/5      S? 5       r+S@ r,\R                  R                  SASB\" SCSD/05      4SE\" SF/SG94/5      SH 5       r-SI r.SJ r/SK r0SL r1SM r2SN r3\R                  Ri                  SO5      SP 5       r5SQ r6SR r7SS r8\R                  R                  STSUSVSU/SUSV/SWSXSW/SWSX//5      SY 5       r9SZ r:S[ r;\R                  Rx                  \R                  Rz                  S\ 5       5       r>\?R                  \R                  Rz                  S] 5       5       rA\R                  Rz                  S^ 5       rB\R                  R                  S_ 5       rDS` rE\?R                  " Sa5      Sb 5       rGSc rHSd rISe rJ\R                  R                  SfSg\ RB                  ShSiSh/4Sj\ RB                  /Sk-  4/5      Sl 5       rKSm rLSn rMSo rNSp rOSq rPSr rQSs rRSt rS\R                  R                  SuSvSwSVS</SVS4SvSxSSVS</S4SvSySVS</SVS</S4SvSzSVS</SVS4S{S|SSSVS/4S{S|SSS} 4/5      S~ 5       rTS rUS rVS rWS rXS rYS rZS r[S r\Sr]g)TestReaders   T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#   r8   r9   excel
read_excelN)r   pdrZ   chdirsetattrselfr#   r>   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                   $ r3   rX   )r_   argskwargss      r%   parser,TestReaders.test_engine_used.<locals>.parser   s    ;;r'   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )r]   r[   	ExcelFileopenrZ   )	r_   r$   r#   r`   rh   expected_defaultsfresultrH   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fooabcd{   TrueTrk   >   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'matchrq   Sheet1r   rs   )
sheet_namer<   engine_kwargs)reescaper)   raises	TypeErrorr[   rZ   )r_   r$   r#   rv   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   rq   r   r      r   r<   usecolsSheet2rs   r   skiprowsr<   r   r)   r   
ValueErrorr[   rZ   r_   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Crq   r   r   )r      r   r   r   rs   r   rQ   rJ   r[   rZ   tmassert_frame_equal)r_   r0   r#   r$   r@   rH   df1df2s           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   rq   r   r   zA:Dr   r   rs   r   r   r   zA,C,DzA,C:Dr   )r_   r0   r#   r$   r@   rH   r   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   rs   r   )r   r   rs   )rs   r   r   )rs   r   r   )r   r   rs   )r   rs   r   c                    [        X!5        USS/   n[        XcU5        [        R                  " SU-   SSUS9n[        R
                  " Xv5        g )Nr   r   rq   r   r   r   r   )r_   r0   r#   r$   r   r@   rH   rx   s           r%   .test_usecols_diff_positional_int_columns_order:TestReaders.test_usecols_diff_positional_int_columns_order5  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   rq   r   r   r   )rangelenrE   r[   rZ   r   r   )r_   r$   r   r@   rH   rx   s         r%   .test_usecols_diff_positional_str_columns_order:TestReaders.test_usecols_diff_positional_str_columns_orderE  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 Nrq   r   r   r   r<   r   r_   r0   r#   r$   r@   rH   rx   s          r%   test_read_excel_without_slicing+TestReaders.test_read_excel_without_slicingM  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   rq   r   r   zA,D:Er   r   r   s          r%   test_usecols_excel_range_str(TestReaders.test_usecols_excel_range_strV  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   rq   r   zD:E1r   r   r   s      r%   $test_usecols_excel_range_str_invalid0TestReaders.test_usecols_excel_range_str_invalida  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   rq   r   r   r   r   r)   r   r   r[   rZ   r   s      r%   test_index_col_label_error&TestReaders.test_index_col_label_errorg  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 )Nrq   Sheet3r   r   )r   r   r   EFrF   columnsrE   )r[   rZ   r   r   r   r   r_   r$   rx   rH   s       r%   test_index_col_strTestReaders.test_index_col_strr  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 )	Nrq   r   r   r   )r   r   r   r   levelscodesnamesr   )r[   rZ   r   r   r   r   r   s       r%   test_index_col_empty TestReaders.test_index_col_emptyz  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 )Nrq   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )r[   rZ   r   	set_indexr   r   r   )r_   r$   r<   rx   rH   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   rq   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   rq   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test2r   r   aaaabbbbbTestTest1r   r[   rZ   r   r   r   )r_   r$   parsedrH   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 filesrL   test3r   r   r   r   )rQ   rN   r)   rO   rP   r[   rZ   r   npnanr   r   )r_   r0   r#   r$   r   rH   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 )
Nrq   r   r   r   r   rs   r   r   r<   r   r<   
skipfooter)rQ   rJ   r[   rZ   r   r   iloc)	r_   r0   r#   r$   r@   rH   r   r   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)rs   r      r   )g      ?g      @gHzG?gQ?g&.>)TFTTF)rs   r   r   r     )r   r   cdei  
         iq  rs         i  r   M8[]dtype)IntColFloatColBoolColStrColStr2ColDateCol
test_typesr   r   g      @r  r   r  r   
converters)rQ   rC   r   	from_dictr   r   r[   rZ   r   r   copylocrE   	enumerater   r   applystr)r_   r0   r#   r$   rI   rH   basenameactualfloat_expectedicolrF   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)rs   r   r  r   g      )@gL2@g3333333@g:0y5>)Foundr-  r-  	Not foundr-  1345)r  r  r  r  c                (    U S:w  a  [        U 5      $ S$ )N r,  )intr   s    r%   <lambda>4TestReaders.test_reader_converters.<locals>.<lambda>
  s    !r'A <u <r'   c                :    U (       a  SU -  $ [         R                  $ )Nr  )r   r   r6  s    r%   r7  r8    s    A"q&"9266"9r'   c                    U S:w  a  S$ S$ )Nr4  r-  r.  r4   r6  s    r%   r7  r8    s    AG<<r'   c                *    U (       a  [        U 5      $ S$ )Nr4  )r"  r6  s    r%   r7  r8    s    1Q,",r'   )r  r  r   r   r   r  )r   r  r   r   r[   rZ   r   r   )r_   r$   r#  rH   r  r$  s         r%   test_reader_converters"TestReaders.test_reader_converters  s    $&&.!2664{CLS#6	
 =9<,	

 H
 	f/r'   c           	     <   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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rs   r   r   r        @      @      @      @      ?       @      @r   r   r  r	  float64float32)r   r   r  r  r   r   001002003004r  z(Unable to convert column d to type int64r   r	  int64)r[   rZ   r   r   r   r   r   r"  astyper   objectr)   r   r   )r_   r$   r#  r$  rH   r   s         r%   test_reader_dtypeTestReaders.test_reader_dtype  s    x23!)!3,	
 	f/YYS'Q
 !,,Y7 ,,Y7;6J
f/8]]:S1MM(-c7^D 211s   *D
Dzdtype,expectedr@  rA  rF  rG  rH  rI  rJ  rK  r  rL  r/  2r1  c                b    Sn[         R                  " XA-   US9n[        R                  " XS5        g )Nr?  r  r[   rZ   r   r   )r_   r$   r  rH   r#  r$  s         r%   test_reader_dtype_str!TestReaders.test_reader_dtype_str4  s*    : x2%@
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[        R                  " U5       nUR                  USSS9  [        R                  " USUS9nS S S 5        US:X  a  SS KnSSKJn  [        UR                   V	s0 s H  n	X" UR                  XI   SS95      _M     sn	5      n
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*                  " WU
5        g ! , (       d  f       N= fs  sn	f )#Nr   r   No engine for filetype: ''rs   r   Int64r  rB  rD  Float64TFbooleanr   r   string   g      @z
2019-12-31r   )
r   r   r  r	  r
  rw   ghijtestr   rE   r   dtype_backendpyarrowr   )ArrowExtensionArray)from_pandasrf  us)rI   rg  r  r  )r)   skipr   r   r[   NA	Timestampr   ensure_cleanto_excelrZ   rl  pandas.arraysrm  r   array	_pa_arraycast	timestamprC   rR  r   )r_   r$   rk  r#   df	file_pathrx   parm  colrH   rI   s               r%   test_dtype_backendTestReaders.test_dtype_backendV  s   ((KK3H:Q?@QF'2S#Ji8T5M;S#Jh7RUUAJg6RUUCL	:RUUDM;RUUCL9R\\,781<=RUUBEEN':
 __X&)KK	fEKB]]fMF '
 I% 9   "zz) ,RXXbg4X-PQQ)H 0##--222<<T<3JKHSM 0$0FGHSMH1D$SM003tfA?HSM
fh/7 '&s   (H3/"I3
Ic                ~   US;   a  [         R                  " SU S35        [        [        R                  S/S[        R                  /S.5      n[
        R                  " U5       nUR                  USSS	9  [        R                  " USS
SS9nS S S 5        [
        R                  " WU5        g ! , (       d  f       N&= f)Nr\  r]  r^  rF  rB  r   r   rh  Fri  numpy_nullablerJ  )r   rk  r  )r)   rp  r   r   r   r   rs  rt  r[   rZ   r   )r_   r$   rz  r{  rx   s        r%   test_dtype_backend_and_dtype(TestReaders.test_dtype_backend_and_dtype  s    ((KK3H:Q?@bffc]#rvv?@__X&)KK	fEKB]]!.	F ' 	fb) '&s   %)B..
B<zinfer_string takes precedencerL   c                   US;   a  [         R                  " SU S35        [         R                  " S5      n[        R                  " SU5         [        [        R                  " SS/[        R                  S9[        R                  " S	[        R                  /[        R                  S9S
.5      n[        R                  " U5       nUR                  USSS9  [        R                  " USSS9nS S S 5        US:X  au  [        [        [        R                  " SS/[        R                  S95      [        [        R                  " S	[        R                  /[        R                  S95      S
.5      nOB[        [        UR                  SS/5      5      [        UR                  S	S /5      5      S
.5      n[        R                   " WU5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr\  r]  r^  rl  zmode.string_storager   r   r  r   r  rh  Fri  r  rj  r;   )r)   rp  importorskipr[   option_contextr   r   rv  object_rq  r   rs  rt  rZ   r   r   r   )r_   r$   string_storager|  rz  r{  rx   rH   s           r%   test_dtype_backend_string%TestReaders.test_dtype_backend_string  s|   
 ((KK3H:Q?@  +4nE3*BJJ?3,bjjAB *iI&F&@P + )$(3*BJJ)OP(3,bjj)QR %-bhhSz.BC-bhhT{.CD !!&(37 FE +* FEs&   A9G%(G/CG%
G"	G%%
G3zdtypes, exp_valuers   a.1rQ  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  rs   )r   r  zdtype dict changed)rS  r  r[   rZ   r   r   r   r   )	r_   r$   dtypes	exp_valuer#  
dtype_dictdtype_dict_copyrx   rH   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   )r_   r$   r#  r$  rH   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)   rp  r[   rZ   r   r   )r_   r#   r$   r#  rH   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)r[   rZ   r   assert_contains_allkeyslistr_   r$   r#  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   )r[   rZ   r  setr   r  r  r   )r_   r$   r#  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   )r   r   r   )r[   rZ   r   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blankr   r   )r[   rZ   r   r   r   )r_   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  r   r   )r   r[   rZ   r   r   )r_   r$   rH   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  rs   )headerr   rq   c                    SS-  $ )Nrs   r   r4   r6  s    r%   r7  HTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>#  s    Ar'   )r   r   )r)   r   r   r[   rZ   ZeroDivisionErrorr_   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 openpyxlrL   )r   r   z)Defaults to openpyxl, maybe not supportedtestdateoverflow)rQ   r   r[   rr  rN   r)   rO   rP   rZ   r   r   )r_   r0   r#   r$   rH   rx   s         r%   test_date_conversion_overflow)TestReaders.test_date_conversion_overflow%  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 Nrq   r   r   r   )r<   r   r   )
r_   r0   r$   r#   r@   filenamer   rH   r   r   s
             r%   test_sheet_nameTestReaders.test_sheet_nameA  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)Nrq   r   r   r   rr   )r[   rZ   ru   r   r   )r_   r$   pthrH   rw   r$  s         r%   test_excel_read_buffer"TestReaders.test_excel_read_bufferR  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   r4  rX   r   )r_   
bad_engines     r%   test_bad_engine_raises"TestReaders.test_bad_engine_raisesY  s1    
]]:-BCMM"Z0 DCCs	   ;
A	r   r   r   r   r   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   )r_   r$   r   r   s       r%   test_bad_sheetname_raises%TestReaders.test_bad_sheetname_raises^  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   FileNotFoundErrorr[   rZ   )r_   r$   bad_filer   s       r%   test_missing_file_raises$TestReaders.test_missing_file_raisesh  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   r[   rZ   r   )r_   r#   
bad_streamerrorr   r  r  s          r%   test_corrupt_bytes_raises%TestReaders.test_corrupt_bytes_raisesu  s    
>E.  v&E'  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)Nrq   rr   )content)ru   serve_contentreadr[   rZ   urlr   r   )r_   
httpserverr$   rw   	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)Nrq   rr   KeyBodys3:///test1)storage_options)ru   
put_objectrF   r[   rZ   r   r   )r_   r$   s3_public_buckets3sorw   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)Nrq   rr   r  r   r  r  r4   )	ru   r  s3fsS3FileSystemrF   r[   rZ   r   r   )	r_   r$   r  r  rw   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)Nr8   r9   rY   rq   zfile://localhost/ zfailing on )ospathr  r[   rZ   r	   platformunamestripr)   rp  r   r   )r_   r$   r>   
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   )r[   rZ   r   r   r   )r_   r$   str_pathrH   path_objr$  s         r%   test_read_from_pathlib_path'TestReaders.test_read_from_pathlib_path  sM    X%==h!L(*+xHJ
h/r'   zpy.pathc                
   SSK Jn  [        R                  R	                  SU-   5      n[
        R                  " USSS9nU" 5       R	                  SU-   5      n[
        R                  " USSS9n[        R                  " XF5        g )Nr   )localrq   r   r   )	py.pathr  r	  r
  r  r[   rZ   r   r   )r_   r$   	LocalPathr  rH   r  r$  s          r%   test_read_from_py_localpath'TestReaders.test_read_from_py_localpath  sg     	/77<<( 23==h!L;##Gh$67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)Nrq   rr   r   r   r   )r	  r
  r  ru   r[   rZ   r  )r_   r$   r  rw   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)rL   Timers   r   r   -   8   i r     1   i@ rc     *   i    9   #   i 	   )      i           i'	 r  i`
 5   i 5    %   r   i       6   
times_1900r   r   
times_1904)rQ   rN   r)   rO   rP   r   r  r   r[   rZ   r   r   )r_   r0   r#   r$   rH   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      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   testmultiindexrs   rB  
2015-01-01Tr   rC  
2015-01-02Fr   rD  
2015-01-03r  rE  
2015-01-04r   r  r  	mi_columnr   )r   r  r<   rI  mi_indexr   bothr   r<   r  ilvl1ilvl2mi_index_namec1c2mi_column_name)levelname_with_int	both_nameboth_name_skiprows)r   r<   r  r   )rQ   rC   r   from_productr   r[   rr  rR  rZ   r   r   rE   r   	set_namesr  r   
set_levels)	r_   r0   r#   r$   rI   mimi_filerH   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/ eAh<<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 )Nr=  r|   r<  r   r   rI  rJ  r   rs   rB  r>  Tr   rC  r?  Fr   rD  r@  r  rE  rA  )r|   r|   r<  r<  rF  rG  r   r  r  r   rE  )rQ   r   rP  rC   r   r[   rr  from_arraysrR  rZ   r   r   )r_   r0   r#   r$   r   idx_lvl2rT  rS  rI   rH   rx   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 )Nr=  index_col_noner   rs   r   r  r   r   keyvalr@  r   r   )r[   rZ   r   rP  r   r   r   )r_   r$   rT  rx   exp_columnsrH   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   rs   r   r   r  r  r   r   rE   r   single_namesr   r   multi_namesrs   )r  r  r  r  r  )r  r  r  r  r  )r   rs   r   r   r  single_no_namesmulti_no_names)r   rv  r   rS  r   r   r   r[   rZ   r   r   rE   )	r_   r$   r  r9   r   rS  sirH   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   rq   r  r   )r_   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   r   r   rs   rB  r>  TrC  r?  Fr   rD  r@  r  rE  rA  rI  r   r  r  r  c                    U S;   $ N)r   r   r4   r6  s    r%   r7  6TestReaders.test_read_excel_skiprows.<locals>.<lambda>  s    qF{r'   )r   r   r   )rQ   rC   r[   rZ   r   rr  rR  r   r   r   rv  r_   r0   r#   r$   rI   r$  rH   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)rs   r   r  r4   r6  s    r%   r7  FTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s	    q	1r'   r  rs   rB  r>  Tr   rD  r@  FrI  r   r  r  r  )	rQ   rC   r[   rZ   r   rr  rR  r   r   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  rq   nrowsrX  )r_   r$   num_rows_to_pullr$  rH   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 )Nrq   r  r  )r[   rZ   r   r   r   )r_   r$   rH   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_file5  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   rq   r2  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,skiprowsr=  rB  rC  rD  rK  r  r  c                    U S;   $ r  r4   r6  s    r%   r7  TestReaders.<lambda>K  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]).
)r   r  r<   r   Nr   )r   r  r<   r   r  )r[   rZ   r  r   r   )	r_   r$   r  r   r  r<   r   rH   r$  s	            r%   test_read_excel_nrows_params(TestReaders.test_read_excel_nrows_paramsC  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   rq   r   r   r   r  s     r%   test_deprecated_kwargs"TestReaders.test_deprecated_kwargsg  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 )Nr=  ))r   r   rc  r   r  r  ))r   r   rc  rs   r   r  )r   rs   rZ  )r   r   r  r`  r   rs   rE  )r   from_tuplesr   r[   rZ   r   r   )r_   r$   	file_namer9   idxrH   rx   s          r%   "test_no_header_with_list_index_col.TestReaders.test_no_header_with_list_index_colk  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      ?rs   r   numbersr   )r   r   r   r[   rZ   r   r   )r_   r$   r  r9   rH   rx   s         r%   test_one_col_noskip_blank_line*TestReaders.test_one_col_noskip_blank_linex  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 )Nr=  )r   r   )r   r   rs   r   r   r  r   mi_column_empty_rowsr   ra  )	r   r  r   r   r   r[   rZ   r   r   )r_   r$   r  r   r9   rH   rx   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)r[   rZ   shape)r_   r$   r  rx   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 worksheetsrL   z"Worksheet named 'Chart1' not foundr   
chartsheetChart1r   	r)   rp  rN   rO   rP   r   r   r[   rZ   r_   r0   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  rL   z0Worksheet index 1 is invalid, 1 worksheets foundr   r  rs   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,rs   )decimalr   )rs   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'   r4   )^__name__
__module____qualname____firstlineno__r)   fixturerb   ry   r   r   r   r   rO   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r(  r<  rT  r   r   r   r"  r   rS  rY  r~  r  rP   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  
skip_if_nor  r  r9  rU  r]  rg  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r4   r'   r%   rS   rS      sB   ^^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: [[ )1)!34	
  icD#L	B#$8	J#$@O#S#rvvs$;6J	
	
60760.0`*  [["$-L  "4"4H [[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$/6 [[[[6  6 [[	6  	6 [[6 6  [[6 60 ]]9
0 
0"0HR0h [[,rvvsC.EF(266(Q,7	
00B	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'   rS   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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)NzPassing bytes to 'read_excel' is deprecated and will be removed in a future version. To read from a byte string, wrap it in a `BytesIO` object.F)r   raise_on_extra_warningsrq   rr   rX   )r   assert_produces_warningFutureWarningru   r[   rZ   r  )r_   r#   r$   r   rw   s        r%   test_deprecate_bytes_input,TestExcelFileRead.test_deprecate_bytes_input  sm    : 	 ''e
 g($/1affhv6 0
 
 0/
 
s"   A3$A"A3"
A0	,A33
BTrU   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.
rX   r8   r9   rY   rt   N)r   r[   rt   r\   r]   r^   s        r%   rb   #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   rk   rq   rs   )r[   rt   r#   )r_   r$   r#   rv   rY   rx   rH   s          r%   ry   "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test4r   Fappler   keep_default_na	na_valuesrq  rs   rabbitr   r   Ttest51.#QNANr   )r[   rt   rZ   r   r   r   r   r   )r_   r$   rY   r   rH   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  r   Tr  r  Fr  rs   r   r  r   r   )r[   rt   rZ   r   r   r   r   r   )r_   r$   r   rg   rY   r   rH   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)Nrq   r   r   rs   r   )r<   )r   r<   r   r   )r<   r   )	rQ   rJ   r[   rt   rZ   r   r   rj   r  )
r_   r0   r#   r$   r@   rH   rY   r   r   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  )rQ   rJ   r[   rt   rj   r   r   )r_   r0   r#   r$   r@   rH   r  r   rY   	df1_parse	df2_parses              r%   r  !TestExcelFileRead.test_sheet_nameB  s    #F4F3
\\(-.%zQGI / \\(-.%aJGI / 	i2
i2 /. /.s   B/'C /
B= 
Cr   r   r   r   r   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   r[   rt   rj   )r_   r$   r   r   rY   s        r%   r  +TestExcelFileRead.test_bad_sheetname_raisesT  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)Nrq   r   r   r   r<   r#   rr   r   )r[   rZ   ru   rt   r   r   )r_   r#   r$   r  rH   rw   ro   r$  s           r%   r  (TestExcelFileRead.test_excel_read_buffer_  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)Nrq   rr   r   r   r.  )ru   r[   rt   rZ   closed)r_   r#   r$   rw   rl   s        r%   test_reader_closes_file)TestExcelFileRead.test_reader_closes_filei  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 ExcelFilerq   r   r|   rX   )r[   rt   r)   r   r   rZ   )r_   r$   r   xls       r%   test_conflicting_excel_engines0TestExcelFileRead.test_conflicting_excel_enginesq  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)Nrq   rX   rr   )r[   rZ   ru   r  r   r   r   )r_   r#   r$   rH   rw   r9   r$  s          r%   test_excel_read_binary(TestExcelFileRead.test_excel_read_binaryy  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)Nrq   rr   rX   )ru   r[   rZ   r   r   )r_   r$   r#   rw   rx   rH   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.xlsxrr   zexceeds maximumr   r   rs   r  )ru   r)   r   r   r[   rZ   )r_   r#   rw   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   rb  )r   zB.1I11I12rZ  rs   r   rQ  )rE   r   r  r   r   rE  )r   r   r  r   r[   rZ   r   r   )r_   r  r  colsrH   rx   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   rs   )r  r<   r#   z
2020-02-29z
2020-03-01r  r  r  rZ  r  )rQ   r[   rt   rZ   rC   DatetimeIndexr   r[  to_pydatetimer   r   r   )r_   r0   r#   r$   rw   rY   r$  rI   dtiexpected_column_indexrH   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   r[   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  rL   r  r   )r)   rp  rN   rO   rP   r[   rt   sheet_names)r_   r0   r#   r$   rY   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[        R                  " SU 35       n[        U5      R                  SSS9  [        R                  " S	5          [        R                  " XaS
9  S S S 5        S S S 5        g ! U a     Nf = f! , (       d  f       N#= f! , (       d  f       g = f)NzInvalid test for engine=r   r   r   r  corruptzutf-8)encodingFrX   )r
   r)   rp  r   biffhr  r    r  r   rs  r   
write_textr  r[   rt   )r_   r#   r$   errorsr   r  files          r%   test_corrupt_files_closed+TestExcelFileRead.test_corrupt_files_closed  s    >KK26(;<v $**"6"67Fz!5#%F__wxj12dJ!!)g!>++E2LL5 3 32
   32 32sB   40C($C&C:C(CCCC
C%	!C((
C6r4   N)r  r  r  r  r  r)   r  rb   ry   r  rO   r   r"  r%  r  r  r  r2  r6  r9  r<  r?  rG  rO  rS  rW  r`  r  r4   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$   r"  returnbool)r$   r"  r#   z
str | Nonerb  r"  )rH   r   r$   r"  r#   r"  rb  None)=
__future__r   r   r   	functoolsr   r8   r   r	  pathlibr   r  r   urllib.errorr	   zipfiler
   numpyr   r)   pandas._configr   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr[   r   r   r   r   r   pandas._testing_testingr   pandas.core.arraysr   r   rO   r  
pytestmarkread_ext_paramsr*   r  engine_paramsr&   r,   r  r"  r1   r#   r$   r@   rC   rJ   rQ   rS   r
  )engexts   00r%   <module>ry     s   "   	   	 !    5 - ) )   
 ''J=
 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~(Y Yq*s   :H

H

