
    m*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Jr  S SKrS SK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#  \" 5       (       a  \RH                  RJ                  r&/ SQr'\RP                  " S\RR                  " S5      /S9\RP                  " S\RR                  " S5      /S9\RP                  " S\RR                  " S5      /S9\RP                  " S\RR                  " S5      S9\RP                  " S\RR                  " S5      S9\RP                  " S\RR                  " S5      S9/r*S!S jr+S r,\RZ                  " \* 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/\RZ                  S 5       r0\RZ                  S 5       r1\RZ                  S 5       r2S"S jr3S#S jr4S r5 " S S5      r6 " S S 5      r7gs  snn f )$    )annotations)datetimetime)partial)BytesION)Path)URLError)
BadZipFile)is_platform_windows)	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     b/var/www/html/land-doc-ocr/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                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)   U   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_extr.   _   s     ==r$   c                    U u  pU$ N r.   r    r!   s      r"   r    r    o   s    *FMr$   c                    U u  pU$ r0   r1   r2   s      r"   r!   r!   u   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nsr1   )r!   r    s     r"   get_exp_unitr@      s    r$   c                |    S U R                   l        [        X5      nU R                   R                  U5      U l         g r0   )indexnamer@   as_unit)expectedr!   r    units       r"   adjust_expectedrG      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_pyxlsbrN      s7    KKL  	
 r$   c                  r   \ 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S2S09\#" S3S4\ RB                  S5/S2S09S-.5      4/5      S6 5       r$S7 r%S8 r&S9 r'\R                  R                  S:0 S;4S<S=0S;4/5      S> 5       r(S? r)\R                  R                  S@SA\" SBSC/05      4SD\" SE/SF94/5      SG 5       r*SH r+SI r,SJ r-SK r.SL r/SM r0\R                  Rc                  SN5      SO 5       r2SP r3SQ r4SR r5\R                  R                  SSSTSUST/STSU/SVSWSV/SVSW//5      SX 5       r6SY r7SZ r8\R                  Rr                  \R                  Rt                  S[ 5       5       r;\<Rz                  \R                  Rt                  S\ 5       5       r>\R                  Rt                  S] 5       r?\R                  R                  S^ 5       rAS_ rB\<R                  " S`5      Sa 5       rDSb rESc rFSd rG\R                  R                  SeSf\ RB                  SgShSg/4Si\ RB                  /Sj-  4/5      Sk 5       rHSl rISm rJSn rKSo rLSp rMSq rNSr rOSs rP\R                  R                  StSuSvSUS;/SUS4SuSwSSUS;/S4SuSxSUS;/SUS;/S4SuSySUS;/SUS4SzS{SSSUS/4SzS{SSS| 4/5      S} 5       rQS~ rRS rSS rTS rUS rVS rWS rXS rYSrZg)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    r5   r6   excel
read_excelN)r   pdrW   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                   $ r0   rU   )r\   argskwargss      r"   parser,TestReaders.test_engine_used.<locals>.parser   s    ;;r$   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )rZ   rX   	ExcelFileopenrW   )	r\   r!   r    r]   re   expected_defaultsfresultrE   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{   TrueTrh   >   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'matchrn   Sheet1r   rp   )
sheet_namer9   engine_kwargs)reescaper&   raises	TypeErrorrX   rW   )r\   r!   r    rs   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}   rn   r   r      r   r9   usecolsSheet2rp   r   skiprowsr9   r   r&   r   
ValueErrorrX   rW   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Crn   r   r   )r      r   r   r   rp   r   rN   rG   rX   rW   tmassert_frame_equal)r\   r-   r    r!   r=   rE   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   rn   r   r   zA:Dr   r   rp   r   r   r   zA,C,DzA,C:Dr   )r\   r-   r    r!   r=   rE   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   rp   r   )r   r   rp   )rp   r   r   )rp   r   r   )r   r   rp   )r   rp   r   c                    [        X!5        USS/   n[        XcU5        [        R                  " SU-   SSUS9n[        R
                  " Xv5        g )Nr   r   rn   r   r   r   r   )r\   r-   r    r!   r   r=   rE   ru   s           r"   .test_usecols_diff_positional_int_columns_order:TestReaders.test_usecols_diff_positional_int_columns_order/  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   rn   r   r   r   )rangelenrB   rX   rW   r   r   )r\   r!   r   r=   rE   ru   s         r"   .test_usecols_diff_positional_str_columns_order:TestReaders.test_usecols_diff_positional_str_columns_order?  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 Nrn   r   r   r   r9   r   r\   r-   r    r!   r=   rE   ru   s          r"   test_read_excel_without_slicing+TestReaders.test_read_excel_without_slicingG  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   rn   r   r   zA,D:Er   r   r   s          r"   test_usecols_excel_range_str(TestReaders.test_usecols_excel_range_strP  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}   rn   r   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}   rn   r   r   r   r   r&   r   r   rX   rW   r   s      r"   test_index_col_label_error&TestReaders.test_index_col_label_errora  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 )Nrn   Sheet3r   r   )r   r   r   EFrC   columnsrB   )rX   rW   r   r   r   r   r\   r!   ru   rE   s       r"   test_index_col_strTestReaders.test_index_col_strl  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 )	Nrn   r   r   r   )r   r   r   r   levelscodesnamesr   )rX   rW   r   r   r   r   r   s       r"   test_index_col_empty TestReaders.test_index_col_emptyt  sS    h8
 #RD1HRD1HOT
 	f/r$   r9   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 )Nrn   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )rX   rW   r   	set_indexr   r   r   )r\   r!   r9   ru   rE   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}   rn   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}   rn   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   rX   rW   r   r   r   )r\   r!   parsedrE   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 filesrI   test3r   r   r   r   )rN   rK   r&   rL   rM   rX   rW   r   npnanr   r   )r\   r-   r    r!   r   rE   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 )
Nrn   r   r   r   r   rp   r   r   r9   r   r9   
skipfooter)rN   rG   rX   rW   r   r   iloc)	r\   r-   r    r!   r=   rE   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)rp   r      r   )g      ?g      @gHzG?gQ?g&.>)TFTTF)rp   r   r   r     )r   r   cdei  
         iq  rp         i  r   M8[]dtype)IntColFloatColBoolColStrColStr2ColDateCol
test_typesr   r   g      @r  r   r  r   
converters)rN   r@   r   	from_dictr   r   rX   rW   r   r   copylocrB   	enumerater   r   applystr)r\   r-   r    r!   rF   rE   basenameactualfloat_expectedicolrC   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)rp   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   r3  s    r"   r4  r5    s    A"q&"9266"9r$   c                    U S:w  a  S$ S$ )Nr1  r*  r+  r1   r3  s    r"   r4  r5    s    AG<<r$   c                *    U (       a  [        U 5      $ S$ )Nr1  )r  r3  s    r"   r4  r5    s    1Q,",r$   )r  r  r   r   r   r  )r   r  r   r   rX   rW   r   r   )r\   r!   r   rE   r  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rp   r   r   r        @      @      @      @      ?       @      @r   r   r  r  float64float32)r   r   r  r  r   r   001002003004r  r  z(Unable to convert column d to type int64r}   r  int64)rX   rW   r   r   r   r   r   r  astyper   r&   r   r   )r\   r!   r   r!  rE   r   s         r"   test_reader_dtypeTestReaders.test_reader_dtype  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,expectedr=  r>  rC  rD  rE  rF  rG  rH  r  rI  r  r,  2r.  c                b    Sn[         R                  " XA-   US9n[        R                  " XS5        g )Nr<  r  rX   rW   r   r   )r\   r!   r  rE   r   r!  s         r"   test_reader_dtype_str!TestReaders.test_reader_dtype_str.  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: ''rp   r   Int64r  r?  rA  Float64TFbooleanr   r   string   g      @z
2019-12-31r   )
r   r   r  r  r  rt   ghijtestr   rB   r   dtype_backendpyarrowr   )ArrowExtensionArray)from_pandasrb  us)rF   rc  r  r  )r&   skipr   r   rX   NA	Timestampr   ensure_cleanto_excelrW   rh  pandas.arraysri  r   array	_pa_arraycast	timestampr@   rO  r   )r\   r!   rg  r    df	file_pathru   pari  colrE   rF   s               r"   test_dtype_backendTestReaders.test_dtype_backendP  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)NrX  rY  rZ  rC  r?  r   r   rd  Fre  numpy_nullablerG  )r   rg  r  )r&   rl  r   r   r   r   ro  rp  rX   rW   r   )r\   r!   rv  rw  ru   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<c           
        US;   a  [         R                  " SU S35        [        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        [	        [        SS/[        R                  " U5      S9[        SS /[        R                  " U5      S9S	.5      n[        R                  " WUSS9  S S S 5        g ! , (       d  f       Nw= f! , (       d  f       g = f)NrX  rY  rZ  zmode.string_storager   r   r  r   r}  rd  Fre  r~  rf  )check_column_type)r&   rl  rX   option_contextr   r   rr  object_rm  r   ro  rp  rW   r   StringDtyper   )r\   r!   string_storagerv  rw  ru   rE   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 + !c
"..2PQd2>>.3QRH !!&(eL- FE +* FEs%   A9E1(E
A(E

E	E
E)zdtypes, exp_valuerp   a.1rN  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  rp   )r   r  zdtype dict changed)objectr  rX   rW   r   r   r   r   )	r\   r!   dtypes	exp_valuer   
dtype_dictdtype_dict_copyru   rE   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!  rE   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&   rl  rX   rW   r   r   )r\   r    r!   r   rE   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)rX   rW   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   )rX   rW   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   )rX   rW   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   )rX   rW   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   rX   rW   r   r   )r\   r!   rE   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  rp   )headerr   rn   c                    SS-  $ )Nrp   r   r1   r3  s    r"   r4  HTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>  s    Ar$   )r   r   )r&   r   r   rX   rW   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 openpyxlrI   )r   r   z)Defaults to openpyxl, maybe not supportedtestdateoverflow)rN   r   rX   rn  rK   r&   rL   rM   rW   r   r   )r\   r-   r    r!   rE   ru   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 Nrn   r   r   r   )r9   r   r   )
r\   r-   r!   r    r=   filenamer   rE   r   r   s
             r"   test_sheet_nameTestReaders.test_sheet_name1  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)Nrn   r   r   r   ro   )rX   rW   rr   r   r   )r\   r!   pthrE   rt   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)Nry   zUnknown engine: foor}   r1  rU   r   )r\   
bad_engines     r"   test_bad_engine_raises"TestReaders.test_bad_engine_raisesI  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_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)Nry   |)z(No such file or directoryu   没有那个文件或目录zFile o directory non esistente)r}   )joinr&   r   FileNotFoundErrorrX   rW   )r\   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   rX   rW   r   )r\   r    
bad_streamerrorr   r  r  s          r"   test_corrupt_bytes_raises%TestReaders.test_corrupt_bytes_raisese  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)Nrn   ro   )content)rr   serve_contentreadrX   rW   urlr   r   )r\   
httpserverr!   rt   	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)Nrn   ro   KeyBodys3:///test1)storage_options)rr   
put_objectrC   rX   rW   r   r   )r\   r!   s3_public_buckets3sort   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)Nrn   ro   r  r   r  r  r1   )	rr   r  s3fsS3FileSystemrC   rX   rW   r   r   )	r\   r!   r  r  rt   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)Nr5   r6   rV   rn   zfile://localhost/ zfailing on )ospathr  rX   rW   r	   platformunamestripr&   rl  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   )rX   rW   r   r   r   )r\   r!   str_pathrE   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   )localrn   r   r   )	py.pathr  r  r  r  rX   rW   r   r   )r\   r!   	LocalPathr  rE   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)Nrn   ro   r   r   r   )r  r  r  rr   rX   rW   r  )r\   r!   r  rt   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)rI   Timerp   r   r   -   8   i r     1   i@ r_     *   i    9   #   i 	   )      i           i'	 r  i`
 5   i 5    %   r   i       6   
times_1900r   r   
times_1904)rN   rK   r&   rL   rM   r   r  r   rX   rW   r   r   )r\   r-   r    r!   rE   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 )*Nry   barr   r   testmultiindexrp   r?  
2015-01-01Tr   r@  
2015-01-02Fr   rA  
2015-01-03r  rB  
2015-01-04r   r  r  	mi_columnr   )r   r  r9   rF  mi_indexr   bothr   r9   r  ilvl1ilvl2mi_index_namec1c2mi_column_name)levelname_with_int	both_nameboth_name_skiprows)r   r9   r  r   )rN   r@   r   from_productr   rX   rn  rO  rW   r   r   rB   r   	set_namesr  r   
set_levels)	r\   r-   r    r!   rF   mimi_filerE   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;  ry   r:  r   r   rG  rH  r   rp   r?  r<  Tr   r@  r=  Fr   rA  r>  r  rB  r?  )ry   ry   r:  r:  rD  rE  r   r  r  r   rC  )rN   r   rN  r@   r   rX   rn  from_arraysrO  rW   r   r   )r\   r-   r    r!   r   idx_lvl2rR  rQ  rF   rE   ru   s              r"   +test_read_excel_multiindex_blank_after_name7TestReaders.test_read_excel_multiindex_blank_after_nameN  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   rp   r   r  r   r   keyvalr=  r   r   )rX   rW   r   rN  r   r   r   )r\   r!   rR  ru   exp_columnsrE   s         r"   &test_read_excel_multiindex_header_only2TestReaders.test_read_excel_multiindex_header_onlyv  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   rp   r   r   r  r  r   r   rB   r   single_namesr   r   multi_namesrp   )r  r  r  r  r  )r  r  r  r  r  )r   rp   r   r   r  single_no_namesmulti_no_names)r   rr  r   r  r   r   r   rX   rW   r   r   rB   )	r\   r!   r  r6   r   rQ  sirE   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}   rn   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   rp   r?  r<  Tr@  r=  Fr   rA  r>  r  rB  r?  rF  r   r  r  r  c                    U S;   $ N)r   r   r1   r3  s    r"   r4  6TestReaders.test_read_excel_skiprows.<locals>.<lambda>  s    qF{r$   )r   r   r   )rN   r@   rX   rW   r   rn  rO  r   r   r   rr  r\   r-   r    r!   rF   r!  rE   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)rp   r   r  r1   r3  s    r"   r4  FTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s	    q	1r$   r  rp   r?  r<  Tr   rA  r>  FrF  r   r  r  r  )	rN   r@   rX   rW   r   rn  rO  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  rn   nrowsrT  )r\   r!   num_rows_to_pullr!  rE   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 )Nrn   r  r  )rX   rW   r   r   r   )r\   r!   rE   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_file%  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}   rn   r/  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;  r@  rA  rB  rI  r  r  c                    U S;   $ r  r1   r3  s    r"   r4  TestReaders.<lambda>;  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  r9   r   Nr   )r   r  r9   r   r  )rX   rW   r   r   r   )	r\   r!   r  r   r  r9   r   rE   r!  s	            r"   test_read_excel_nrows_params(TestReaders.test_read_excel_nrows_params3  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}   rn   r   r   r   r  s     r"   test_deprecated_kwargs"TestReaders.test_deprecated_kwargsW  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   ra  r   r  r  ))r   r   ra  rp   r   r  )r   rp   rX  )r   r   r  r^  r   rp   rC  )r   from_tuplesr   rX   rW   r   r   )r\   r!   	file_namer6   idxrE   ru   s          r"   "test_no_header_with_list_index_col.TestReaders.test_no_header_with_list_index_col[  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      ?rp   r   numbersr   )r   r   r   rX   rW   r   r   )r\   r!   r  r6   rE   ru   s         r"   test_one_col_noskip_blank_line*TestReaders.test_one_col_noskip_blank_lineh  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   rp   r   r   r  r   mi_column_empty_rowsr   r_  )	r   r  r   r   r   rX   rW   r   r   )r\   r!   r  r   r6   rE   ru   s          r"    test_multiheader_two_blank_lines,TestReaders.test_multiheader_two_blank_linesp  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)rX   rW   shape)r\   r!   r  ru   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 worksheetsrI   z"Worksheet named 'Chart1' not foundr}   
chartsheetChart1r   	r&   rl  rK   rL   rM   r   r   rX   rW   r\   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  rI   z0Worksheet index 1 is invalid, 1 worksheets foundr}   r  rp   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,rp   )decimalr   )rp   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$   r1   )[__name__
__module____qualname____firstlineno__r&   fixturer_   rv   r   r   r   r   rL   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r%  r9  rP  r   r   r   r  r   rU  rz  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  r  network
single_cpur  tdskip_if_not_us_localer  r  slowr  r  
skip_if_nor  r  r7  rS  r[  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r1   r$   r"   rP   rP      s   ^^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#$@N#S#rvvs$;5I	
	
60760.0`* M: [[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$   rP   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_warningsrn   ro   rU   )r   assert_produces_warningFutureWarningrr   rX   rW   r  )r\   r    r!   r   rt   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TrR   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.
rU   r5   r6   rV   rq   N)r   rX   rq   rY   rZ   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   rh   rn   rp   )rX   rq   r    )r\   r!   r    rs   rV   ru   rE   s          r"   rv   "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_valuesrm  rp   rabbitr   r   Ttest51.#QNANr   )rX   rq   rW   r   r   r   r   r   )r\   r!   rV   r   rE   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  rp   r   r  r   r   )rX   rq   rW   r   r   r   r   r   )r\   r!   r  rd   rV   r   rE   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)Nrn   r   r   rp   r   )r9   )r   r9   r   r   )r9   r   )	rN   rG   rX   rq   rW   r   r   rg   r   )
r\   r-   r    r!   r=   rE   rV   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  )rN   rG   rX   rq   rg   r   r   )r\   r-   r    r!   r=   rE   r  r   rV   	df1_parse	df2_parses              r"   r  !TestExcelFileRead.test_sheet_name2  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   rX   rq   rg   )r\   r!   r   r   rV   s        r"   r  +TestExcelFileRead.test_bad_sheetname_raisesD  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)Nrn   r   r   r   r9   r    ro   r   )rX   rW   rr   rq   r   r   )r\   r    r!   r  rE   rt   rl   r!  s           r"   r  (TestExcelFileRead.test_excel_read_bufferO  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)Nrn   ro   r   r   r,  )rr   rX   rq   rW   closed)r\   r    r!   rt   ri   s        r"   test_reader_closes_file)TestExcelFileRead.test_reader_closes_fileY  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 ExcelFilern   r}   ry   rU   )rX   rq   r&   r   r   rW   )r\   r!   r   xls       r"   test_conflicting_excel_engines0TestExcelFileRead.test_conflicting_excel_enginesa  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)Nrn   rU   ro   )rX   rW   rr   r  r   r   r   )r\   r    r!   rE   rt   r6   r!  s          r"   test_excel_read_binary(TestExcelFileRead.test_excel_read_binaryi  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)Nrn   ro   rU   )rr   rX   rW   r   r   )r\   r!   r    rt   ru   rE   s         r"   %test_excel_read_binary_via_read_excel7TestExcelFileRead.test_excel_read_binary_via_read_excels  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.xlsxro   zexceeds maximumr}   r   rp   r  )rr   r&   r   r   rX   rW   )r\   r    rt   s      r"   )test_read_excel_header_index_out_of_range;TestExcelFileRead.test_read_excel_header_index_out_of_rangez  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   r`  )r   zB.1I11I12rX  rp   r   rN  )rB   r   r  r   r   rC  )r   r   r  r   rX   rW   r   r   )r\   r  r  colsrE   ru   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   rp   )r  r9   r    z
2020-02-29z
2020-03-01r  r  r  rX  r  )rN   rX   rq   rW   r@   DatetimeIndexr   rY  to_pydatetimer   r   r   )r\   r-   r    r!   rt   rV   r!  rF   dtiexpected_column_indexrE   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   rX   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  rI   r  r   )r&   rl  rK   rL   rM   rX   rq   sheet_names)r\   r-   r    r!   rV   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)encodingFrU   )r
   r&   rl  r   biffhr  r   r  r   ro  r   
write_textr  rX   rq   )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r1   N)r  r  r  r  r  r&   r  r_   rv   r  rL   r  r   r#  r  r  r  r0  r4  r7  r:  r=  rE  rM  rQ  rU  r^  r  r1   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 | Noner`  r  )rE   r   r!   r  r    r  r`  None)8
__future__r   r   r   	functoolsr   r5   r   r  pathlibr   r	  r   urllib.errorr	   zipfiler
   numpyr   r&   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasrX   r   r   r   r   r   pandas._testing_testingr   rL   r  
pytestmarkread_ext_paramsr'   r  engine_paramsr#   r)   r  r  r.   r    r!   r=   r@   rG   rN   rP   r  )engexts   00r"   <module>ru     s   "   	   	 !    - ) )   ''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
R0 R0j(Y Y]*s   ,G<
G<
