
    A[g                    $   d dl mZ d dlmZmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlZd dlZd d	lmZ d d
lmZ d dlmc mZ d dlZd dlmZmZm Z m!Z!m"Z" d dl#m$Z% d dl&m'Z'm(Z(  e       rejR                  jT                  Z+g dZ, ejZ                  d ej\                  d      g       ejZ                  d ej\                  d      g       ejZ                  d ej\                  d      g       ejZ                  d ej\                  d             ejZ                  d ej\                  d             ejZ                  d ej\                  d            gZ/d#dZ0d Z1 ejd                  e/D  cg c]  } e,D ]  } e0| |      r	 e1| |        c}} e3      d        Z4ejd                  d        Z5ejd                  d        Z6ejd                  d        Z7d$dZ8d%dZ9d Z: G d d       Z; G d! d"      Z<yc c}} w )&    )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                    | j                   d   } | dk(  r|dk(  ry| dk(  r|dk7  ry|dk(  r| dvry| dk(  r|d	k7  ry|d	k(  r| d
vry| dk(  r|dk7  ryy)zm
    Filter out invalid (engine, ext) pairs instead of skipping, as that
    produces 500+ pytest.skips.
    r   r   r   Fr   r   >   r   r   r   r   >   r   r   r   T)values)engineread_exts     ]/var/www/html/bid-api/venv/lib/python3.12/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                h    | j                   |fz   }t        j                  || j                        }|S )z
    engine gives us a pytest.param object with some marks, read_ext is just
    a string.  We need to generate a new pytest.param inheriting the marks.
    r   )r"   pytestparamr   )r#   r$   r"   	new_params       r%   _transfer_marksr,   [   s.    
 ]]h[(FV6<<8Ir'   )paramsidsc                    | j                   S )zS
    Fixture for Excel reader engine and read_ext, only including valid pairs.
    )r*   )requests    r%   engine_and_read_extr1   e   s     ==r'   c                    | \  }}|S N r1   r#   r$   s      r%   r#   r#   u   s    *FHMr'   c                    | \  }}|S r3   r4   r5   s      r%   r$   r$   {   s    *FHOr'   c                :     | dddd      }t        |ddd      }|S )	zI
    Obtain the reference data from read_csv with the Python engine.
    iodatacsvz	test1.csvr   Tpython)	index_colparse_datesr#   )r   )datapathfilepathdf_refs      r%   r@   r@      s)    
 fe[9Hh!hOFMr'   c                     y)Nnsr4   )r$   r#   s     r%   get_exp_unitrC      s    r'   c                ~    d | j                   _        t        ||      }| j                   j                  |      | _         y r3   )indexnamerC   as_unit)expectedr$   r#   units       r%   adjust_expectedrJ      s0    HNN&)D^^++D1HNr'   c                n    | dk(  r0|j                  t        j                  j                  d             y y )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                     e Zd Z ej                  d      d        Zd Zd Zd Zd Z	d Z
ej                  j                  d	g d
g dg dg dg dg dg      d        Zej                  j                  d	ddgddgg      d        Zd Zd Zd Zd Zd Zd Zej                  j                  dddg      d        Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zej                  j                  d&d eg d'g d(g d'd)d*ej@                  d+gd,      fd-d.e!e!d, e e"g d'd-/       e"g d(d./       e"g d0e#/       e"d1d2ej@                  d3ge#/      d,      fg      d4        Z$d5 Z%d6 Z&ej                  jO                   e(       d78      d9        Z)ej                  j                  d:i d;fd<d=id;fg      d>        Z*d? Z+ej                  j                  d@dA edBdCgi      fdD edEgF      fg      dG        Z,dH Z-dI Z.dJ Z/dK Z0dL Z1dM Z2ej                  jg                  dN      dO        Z4dP Z5dQ Z6dR Z7ej                  j                  dSdTdUdTgdTdUgdVdWdVgdVdWgg      dX        Z8dY Z9dZ Z:ej                  jv                  ej                  jx                  d[               Z=e>j~                  ej                  jx                  d\               Z@ej                  jx                  d]        ZAej                  j                  d^        ZCd_ ZD e>j                  d`      da        ZFdb ZGdc ZHdd ZIej                  j                  dedfej@                  dgdhdggfdiej@                  gdjz  fg      dk        ZJdl ZKdm ZLdn ZMdo ZNdp ZOdq ZPdr ZQds ZRej                  j                  dtdudvdUd;gdUdfdudwddUd;gdfdudxdUd;gdUd;gdfdudydUd;gdUdfdzd{dddUdgfdzd{ddd| fg      d}        ZSd~ ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[y)TestReadersTautousec                    t        t        j                  |      }|j                   |ddd             |j	                  t        d|       y)zG
        Change directory and set engine for read_excel calls.
        r#   r8   r9   excel
read_excelN)r   pdrY   chdirsetattrselfr#   r>   monkeypatchfuncs        r%   cd_and_set_enginezTestReaders.cd_and_set_engine   s=    
 r}}V4(49:Bd3r'   c                    d }|j                  t        j                  d|       dddddd}t        d|z   d	      5 }t        j                  |      }d d d        ||}n||d
d     }|k(  sJ y # 1 sw Y   xY w)Nc                    | j                   S r3   rW   )r^   argskwargss      r%   parserz,TestReaders.test_engine_used.<locals>.parser   s    ;;r'   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )r\   rZ   	ExcelFileopenrY   )	r^   r$   r#   r_   rf   expected_defaultsfresultrH   s	            r%   test_engine_usedzTestReaders.test_engine_used   s    	 	BLL'6: 
 'H$d+q]]1%F , H(!"6H!!! ,+s   A//A8c           
     f   ddiddiddiddiddid}|dv rt        j                  d      }n0|d	k(  rt        j                  d
      }nt        j                  d      }|Gt        j                  t        |      5  t        j                  d|z   dd||dd            d d d        y y # 1 sw Y   y xY w)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_namer<   engine_kwargs)reescaper)   raises	TypeErrorrZ   rY   )r^   r$   r#   rs   msgs        r%   test_engine_kwargszTestReaders.test_engine_kwargs   s     FOCLFO4=6?
 ''))WXCu_))NOC))WXCy4h&'"3HQRL"A	 54 44s   :#B''B0c                <   d}t        j                  t        |      5  t        j                  d|z   ddd       d d d        t        j                  t        |      5  t        j                  d|z   dd	gdd
       d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)Nz Passing an integer for `usecols`r|   rn   r~   r      r   r<   usecolsSheet2rp   r   skiprowsr<   r   r)   r   
ValueErrorrZ   rY   r^   r$   r   s      r%   test_usecols_intzTestReaders.test_usecols_int   s    0]]:S1MM("x1a 2 ]]:S1MM("# 21 21 21s   BBBBc                   t        ||       |ddg   }t        |||       t        j                  d|z   ddg d      }t        j                  d|z   dd	gdg d
      }t	        j
                  ||       t	        j
                  ||       y )NBCrn   r~   r   )r      r   r   r   rp   r   rQ   rJ   rZ   rY   tmassert_frame_equal)r^   r0   r#   r$   r@   rH   df1df2s           r%   test_usecols_listzTestReaders.test_usecols_list   s    #FG43*%(F3mmh8q)
 mmhS
 	c8,
c8,r'   c                   t        ||       |g d   }t        |||       t        j                  d|z   ddd      }t        j                  d|z   ddgdd	      }t	        j
                  ||       t	        j
                  ||       |d
dg   }t        |||       t        j                  d|z   ddd      }t        j                  d|z   ddgdd	      }t	        j
                  ||       t	        j
                  ||       t        j                  d|z   ddd      }t        j                  d|z   ddgdd	      }t	        j
                  ||       t	        j
                  ||       y )NAr   r   rn   r~   r   zA:Dr   r   rp   r   r   r   zA,C,DzA,C:Dr   )r^   r0   r#   r$   r@   rH   r   df3s           r%   test_usecols_strzTestReaders.test_usecols_str  sh   #FG4/*(F3mmh8q%
 mmhS
 	c8,
c8,3*%(F3mmh8q'
 mmhS
 	c8,
c8,mmh8q'
 mmhS
 	c8,
c8,r'   r   )r   rp   r   )r   r   rp   )rp   r   r   )rp   r   r   )r   r   rp   )r   rp   r   c                    t        ||       |ddg   }t        |||       t        j                  d|z   dd|      }t	        j
                  ||       y )Nr   r   rn   r~   r   r   r   )r^   r0   r#   r$   r   r@   rH   ru   s           r%   .test_usecols_diff_positional_int_columns_orderz:TestReaders.test_usecols_diff_positional_int_columns_order5  sV     	$FG43*%(F3h8q'
 	fh/r'   r   Dc                    |ddg   }t        t        |            |_        t        j                  d|z   d|      }t        j                  ||       y )Nr   r   rn   r~   r   r   )rangelenrE   rZ   rY   r   r   )r^   r$   r   r@   rH   ru   s         r%   .test_usecols_diff_positional_str_columns_orderz:TestReaders.test_usecols_diff_positional_str_columns_orderE  sH    3*%s8}-w1hPWX
fh/r'   c                    t        ||       |}t        |||       t        j                  d|z   dd      }t	        j
                  ||       y Nrn   r~   r   r   r<   r   r^   r0   r#   r$   r@   rH   ru   s          r%   test_read_excel_without_slicingz+TestReaders.test_read_excel_without_slicingM  sE    #FG4(F3w1hRST
fh/r'   c                    t        ||       |ddg   }t        |||       t        j                  d|z   ddd      }t	        j
                  ||       y )Nr   r   rn   r~   r   zA,D:Er   r   r   s          r%   test_usecols_excel_range_strz(TestReaders.test_usecols_excel_range_strV  sT    #FG43*%(F3h8q'
 	fh/r'   c                    d}t        j                  t        |      5  t        j                  d|z   dd       d d d        y # 1 sw Y   y xY w)NzInvalid column name: E1r|   rn   r~   zD:E1r   r   r   s      r%   $test_usecols_excel_range_str_invalidz0TestReaders.test_usecols_excel_range_str_invalida  s6    ']]:S1MM'H,6R 211   AAc                    d}t        j                  t        |      5  t        j                  d|z   ddgddg       d d d        y # 1 sw Y   y xY w)Nz(list indices must be integers.*, not strr|   rn   r~   r   r   r   r)   r   r   rZ   rY   r   s      r%   test_index_col_label_errorz&TestReaders.test_index_col_label_errorg  sD    8]]9C0MM("#%c
	 100s    AAc                    t        j                  d|z   dd      }t        g dt        g d            }t	        j
                  ||       y )Nrn   Sheet3r   r   )r   r   r   EFrF   columnsrE   )rZ   rY   r   r   r   r   r^   r$   ru   rH   s       r%   test_index_col_strzTestReaders.test_index_col_strr  sB    w1hRUV-U2C5H
 	fh/r'   c           	         t        j                  d|z   dg d      }t        g dt        g gdz  g gdz  g d            }t	        j
                  ||       y )	Nrn   r   r   r   )r   r   r   r   levelscodesnamesr   )rZ   rY   r   r   r   r   r   s       r%   test_index_col_emptyz TestReaders.test_index_col_emptyz  sU    h8
 #RD1HRD1HOT
 	fh/r'   r<   Nr   c                    t        j                  d|z   d|      }t        g dg dgg d      }|r|j                  |j                  |         }t        j                  ||       y )Nrn   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )rZ   rY   r   	set_indexr   r   r   )r^   r$   r<   ru   rH   s        r%   test_index_col_with_unnamedz'TestReaders.test_index_col_with_unnamed  sf     h8y
 /0:X
 ))(*:*:9*EFH
fh/r'   c                    d}t        j                  t        |      5  t        j                  d|z   dg       d d d        y # 1 sw Y   y xY w)NzEUsecols do not match columns, columns expected but not found: \['E'\]r|   rn   r   r   r   r   s      r%   %test_usecols_pass_non_existent_columnz1TestReaders.test_usecols_pass_non_existent_column  s=     	 ]]:S1MM'H,se< 211r   c                    d}t        j                  t        |      5  t        j                  d|z   ddg       d d d        y # 1 sw Y   y xY w)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_typez#TestReaders.test_usecols_wrong_type  s@    D 	
 ]]:S1MM'H,tQi@ 211s   AAc                    t        j                  d|z   d      }t        ddggddg      }t        j                  ||       y )	Ntest2r~   r   aaaabbbbbTestTest1r   rZ   rY   r   r   r   )r^   r$   parsedrH   s       r%   test_excel_stop_iteratorz$TestReaders.test_excel_stop_iterator  s@    w1hGvw/067:KL
fh/r'   c                *   t        ||       |dk(  r4|dk(  r/|j                  t        j                  j	                  d             t        j                  d|z   d      }t        t        j                  ggdg	      }t        j                  ||       y )
Nr   r   z+Calamine can't extract error from ods filesrL   test3r~   r   r   r   )rQ   rN   r)   rO   rP   rZ   rY   r   npnanr   r   )r^   r0   r#   r$   r   rH   s         r%   test_excel_cell_error_naz$TestReaders.test_excel_cell_error_na  s~    #FG4 ZH$6!!)V!W w1hGrvvhZ&:
fh/r'   c                   t        ||       |}t        |||       t        j                  d|z   dd      }t        j                  d|z   ddgd      }t	        j
                  ||       t	        j
                  ||       t        j                  d|z   ddd      }t	        j
                  ||j                  d d	        y )
Nrn   r~   r   r   r   rp   r   r   r<   r   r<   
skipfooter)rQ   rJ   rZ   rY   r   r   iloc)	r^   r0   r#   r$   r@   rH   r   r   r   s	            r%   test_excel_tablezTestReaders.test_excel_table  s    #FG4(F3mmGh.8qQmmh8qcQ
 	c8,
c8,mmh8qQ
 	c388CR=1r'   c                   t        ||       t        ||      }t        j                  g dg dg dg dg dt	        t        ddd      t        ddd	      t        d
dd      t        ddd      t        ddd      gd| d      d      }d}t        j                  ||z   d      }t        j                  ||       |j                         }d|j                  |j                  d   df<   t        j                  ||z   d      }t        j                  ||       t        |j                        D ]G  \  }	}
t        j                  ||z   d|	      }|j                  |
      }t        j                  ||       I |d   j!                  t"              |d<   t        j                  ||z   ddt"        i      }t        j                  ||       y )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)rQ   rC   r   	from_dictr   r   rZ   rY   r   r   copylocrE   	enumerater   r   applystr)r^   r0   r#   r$   rI   rH   basenameactualfloat_expectedicolrF   exps               r%   test_reader_special_dtypesz&TestReaders.test_reader_special_dtypes  s   #FG4Hf-&&*B;)2  r2. r2. q!, r2. q"-  vQ-	
&   x(2xH
fh/ "AD>//2I=>x(2xH
fn5 $H$4$45JD$]]8#DF $$T*C!!&#. 6 &h/55c:xH(C
 	fh/r'   c           
        d}t        j                  g ddt        j                  dddgg ddt        j                  d	d
dgd      }d d d d d}t	        j
                  ||z   d|      }t        j                  ||       y )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                &    | dk7  rt        |       S dS )N r  )intr   s    r%   <lambda>z4TestReaders.test_reader_converters.<locals>.<lambda>
  s    !r'A <u <r'   c                0    | rd| z  S t         j                  S )Nr   )r   r   r  s    r%   r   z4TestReaders.test_reader_converters.<locals>.<lambda>  s    A"q&"9266"9r'   c                    | dk7  rdS dS )Nr  r  r  r4   r  s    r%   r   z4TestReaders.test_reader_converters.<locals>.<lambda>  s    AG<<r'   c                     | rt        |       S dS )Nr  )r  r  s    r%   r   z4TestReaders.test_reader_converters.<locals>.<lambda>  s    1Q,",r'   )r   r   r   r   r~   r  )r   r  r   r   rZ   rY   r   r   )r^   r$   r  rH   r  r  s         r%   test_reader_convertersz"TestReaders.test_reader_converters  s    $&&.!2664{CLS#6	
 =9<,	

 xH
 	fh/r'   c           	     H   d}t        j                  ||z         }t        g dg dg dddt        j                  dgd      }t        j                  ||       t        j                  ||z   dd	t        d
      }|d   j                  d      |d<   |d   j                  d	      |d<   t        g dt              |d<   t        j                  ||       d}t        j                  t        |      5  t        j                  ||z   ddi       d d d        y # 1 sw Y   y xY w)N	testdtyperp   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)rZ   rY   r   r   r   r   r   r  astyper   objectr)   r   r   )r^   r$   r  r  rH   r   s         r%   test_reader_dtypezTestReaders.test_reader_dtype  s    x(23!)!3,	
 	fh/xYYS'Q
 !,,Y7 ,,Y7;6J
fh/8]]:S1MM(X-c7^D 211s   2DD!zdtype,expectedr'  r(  r-  r.  r/  r0  r1  r2  r   r3  r  2r  c                h    d}t        j                  ||z   |      }t        j                  ||       y )Nr&  r   rZ   rY   r   r   )r^   r$   r   rH   r  r  s         r%   test_reader_dtype_strz!TestReaders.test_reader_dtype_str4  s.    : x(2%@
fh/r'   c                   |dv rt        j                  d| d       t        t        ddgd      t        dd	gd
      t        ddgd      t        ddgd      t        t        j
                  dgd      t        t        j
                  dgd
      t        t        j
                  dgd      t        t        j
                  dgd      t        t	        j                  d      gdz        t        t        j
                  t        j
                  gd      d
      }t        j                  |      5 }|j                  |dd       t	        j                  |d|      }d d d        |dk(  rdd l}ddlm} t        |j                  D 	ci c]  }	|	 ||j                  ||	   d            ! c}	      }
 ||
d   j                  j                   j#                  |j%                  d                  |
d<    ||j                  d d g            |
d <   n)|}
t'        ||      }|
d   j)                  d!| d"      |
d<   t        j*                  |
       y # 1 sw Y   xY wc c}	w )#Nr   r   No engine for filetype: ''rp   r   Int64r   r)  r+  Float64TFbooleanr   r   string   g      @z
2019-12-31r   )
r   r   r   r   r   rt   ghijtestr   rE   r   dtype_backendpyarrowr   )ArrowExtensionArray)from_pandasrK  us)rI   rL  r   r   )r)   skipr   r   rZ   NA	Timestampr   ensure_cleanto_excelrY   rQ  pandas.arraysrR  r   array	_pa_arraycast	timestamprC   r9  r   )r^   r$   rP  r#   df	file_pathru   parR  colrH   rI   s               r%   test_dtype_backendz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) ,RXXbg4X-PQQ)H 0##--222<<T<3JKHSM 0$0FGHSMH&1D$SM003tfA?HSM
fh/7 '&s   2-I	$IIc                t   |dv rt        j                  d| d       t        t        j                  dgdt        j                  gd      }t        j                  |      5 }|j                  |dd	       t        j                  |dd
d      }d d d        t        j                  |       y # 1 sw Y    xY w)NrA  rB  rC  r-  r)  r   r   rM  FrN  numpy_nullabler1  )r   rP  r   )r)   rU  r   r   r   r   rX  rY  rZ   rY   r   )r^   r$   r_  r`  ru   s        r%   test_dtype_backend_and_dtypez(TestReaders.test_dtype_backend_and_dtype  s    ((KK3H:Q?@bffc]#rvv?@__X&)KK	fEKB]]!.	F ' 	fb) '&s   !.B..B7zinfer_string takes precedencerL   c           
        |dv rt        j                  d| d       t        j                  d      }t        j                  d|      5  t        t        j                  ddgt        j                        t        j                  d	t        j                  gt        j                        d
      }t        j                  |      5 }|j                  |dd       t        j                  |dd      }d d d        |dk(  ryt        t        t        j                  ddgt        j                              t        t        j                  d	t        j                  gt        j                              d
      }nBt        t        |j                  ddg            t        |j                  d	d g            d
      }t        j                   |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrA  rB  rC  rQ  zmode.string_storager   r   r   r   re  rM  FrN  rf  rO  r;   )r)   rU  importorskiprZ   option_contextr   r   r[  object_rV  r   rX  rY  rY   r   r   r   )r^   r$   string_storagera  r_  r`  ru   rH   s           r%   test_dtype_backend_stringz%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&   	A<G%-G2CG%G"	G%%G.zdtypes, exp_valuerp   a.1r8  c                   d}dt         i|}|j                         }t        j                  ||z   |      }t	        t        dgt               t        |g|st         nd       d      }||k(  sJ d       t        j                  ||       y )Ndf_mangle_dup_col_dtypesr   r   rp   )r   rn  zdtype dict changed)r:  r  rZ   rY   r   r   r   r   )	r^   r$   dtypes	exp_valuer  
dtype_dictdtype_dict_copyru   rH   s	            r%   test_dtype_mangle_dup_colsz&TestReaders.test_dtype_mangle_dup_cols  s     .6,V,
$//+x(2*EQCv.ykv4P
 _,B.BB,
fh/r'   c                    d}t        j                  ||z         }t        dg di      }t        j                  ||       y )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_spaceszTestReaders.test_reader_spaces  sC     x(23 

 	fh/r'   zbasename,expectedzgh-35802COLUMNzTest (1)zgh-36122z
got 2nd sar   c                    |dk7  rt        j                  d|        t        j                  ||z         }t	        j
                  ||       y )Nr   zSkipped for engine: )r)   rU  rZ   rY   r   r   )r^   r#   r$   r  rH   r  s         r%   test_read_excel_ods_nested_xmlz*TestReaders.test_read_excel_ods_nested_xml  sB     U?KK.vh78x(23
fh/r'   c                    d}t        j                  ||z   d       }g d}t        j                  ||j	                                |t        |j	                               k(  sJ y )Ntest_multisheetr   )CharlieAlphaBeta)rZ   rY   r   assert_contains_allkeyslistr^   r$   r  dfsexpected_keyss        r%   test_reading_all_sheetsz#TestReaders.test_reading_all_sheets  sT     %mmHx/DA4
}chhj9 SXXZ 0000r'   c                   d}g d}t        j                  ||z   |      }t        t        |            }t	        j
                  ||j                                t        |      t        |j                               k(  sJ y )Nr~  )r   r  r  r   )rZ   rY   r  setr   r  r  r   )r^   r$   r  r  r  s        r%   %test_reading_multiple_specific_sheetsz1TestReaders.test_reading_multiple_specific_sheets  se     %1mmHx/MJS/0
}chhj9=!S_444r'   c                    d}t        j                  ||z   d       }g d}t        j                  ||j	                                y )Nblank_with_headerr   )r~   r   r   )rZ   rY   r   r  r  r  s        r%   "test_reading_all_sheets_with_blankz.TestReaders.test_reading_all_sheets_with_blank  s9     'mmHx/DA6
}chhj9r'   c                t    t        j                  d|z   d      }t        j                  |t	                      y )Nblankr~   r   )rZ   rY   r   r   r   )r^   r$   r  s      r%   test_read_excel_blankz!TestReaders.test_read_excel_blank  s)    w1hG
fik2r'   c                    t        ddg      }t        j                  d|z   d      }t        j                  ||       y )Ncol_1col_2r   r  r~   r   )r   rZ   rY   r   r   )r^   r$   rH   r  s       r%   !test_read_excel_blank_with_headerz-TestReaders.test_read_excel_blank_with_header  s7    gw%782X=(S
fh/r'   c                4   t        j                  t        d      5  t        j                  d|z   dgd        d d d        t        j                  t
        d      5  t        j                  d|z   d d        d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY w)	Nz \(sheet: Sheet1\)$r|   r  rp   )headerr   rn   c                    ddz  S )Nrp   r   r4   r  s    r%   r   zHTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>#  s    Ar'   )r   r   )r)   r   r   rZ   rY   ZeroDivisionErrorr^   r$   s     r%   *test_exception_message_includes_sheet_namez6TestReaders.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   BBBBz-ignore:Cell A4 is marked:UserWarning:openpyxlc                   t        ||       t        t        j                  d      dgt        j                  d      dgddggddg	      }|d
k(  r/|j	                  t
        j                  j                  d             |3|dv r/|j	                  t
        j                  j                  d             t        j                  d|z         }t        j                  ||       y )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   rZ   rW  rN   r)   rO   rP   rY   r   r   )r^   r0   r#   r$   rH   ru   s         r%   test_date_conversion_overflowz)TestReaders.test_date_conversion_overflow%  s     	$FG4l+^<l+\:'
 )+6
 Z!!)J!K >h*<<!!)T!U 1H<=
fh/r'   c                   t        ||       d}d}|}t        |||       t        j                  ||z   |d      }t        j                  ||z   d|      }	t	        j
                  ||       t	        j
                  |	|       y Nrn   r~   r   r   )r<   r   r   )
r^   r0   r$   r#   r@   filenamer   rH   r   r   s
             r%   test_sheet_namezTestReaders.test_sheet_nameA  sz    #FG4
(F3mmxJ!
 mmHx/1T
c8,
c8,r'   c                    d|z   }t        j                  |dd      }t        |d      5 }t        j                  |dd      }t        j                  ||       d d d        y # 1 sw Y   y xY w)Nrn   r~   r   r   ro   )rZ   rY   rr   r   r   )r^   r$   pthrH   rt   r  s         r%   test_excel_read_bufferz"TestReaders.test_excel_read_bufferR  sU     ==QG#t_]]1QGF!!(F3 __s   /A""A+c                    d}t        j                  t        d      5  t        j                  d|       d d d        y # 1 sw Y   y xY w)Nrx   zUnknown engine: foor|   r  rW   r   )r^   
bad_engines     r%   test_bad_engine_raisesz"TestReaders.test_bad_engine_raisesY  s1    
]]:-BCMM"Z0 DCCs	   ?Ar   r   r   r   r~   c                    d}t        j                  t        |      5  t        j                  d|z   |       d d d        y # 1 sw Y   y xY wNz?Worksheet index 3 is invalid|Worksheet named 'Sheet4' not foundr|   r  r   r   )r^   r$   r   r   s       r%   test_bad_sheetname_raisesz%TestReaders.test_bad_sheetname_raises^  s7     P]]:S1MM'H,D 211   AAc                    d| }dj                  g d      }t        j                  t        |      5  t	        j
                  |       d d d        y # 1 sw Y   y xY w)Nrx   |)z(No such file or directoryu   没有那个文件或目录zFile o directory non esistente)r|   )joinr)   r   FileNotFoundErrorrZ   rY   )r^   r$   bad_filer}   s       r%   test_missing_file_raisesz$TestReaders.test_missing_file_raisesh  sJ    
#
 ]],E:MM(# ;::s   AAc                   d}|	t         }d}n(|dk(  rddlm} |}d}n|dk(  rddlm} |}d	}nt
        }d
}t        j                  ||      5  t        j                  t        |             d d d        y # 1 sw Y   y xY w)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   rZ   rY   r   )r^   r#   
bad_streamerrorr   r  r  s          r%   test_corrupt_bytes_raisesz%TestReaders.test_corrupt_bytes_raisesu  s    
>E.  v&E'  z!5!E-CE*C]]5,MM'*-. -,,s   A55A>c                &   t        d|z   d      5 }|j                  |j                                d d d        t        j                  |j
                        }t        j                  d|z         }t        j                  ||       y # 1 sw Y   WxY w)Nrn   ro   )content)rr   serve_contentreadrZ   rY   urlr   r   )r^   
httpserverr$   rt   	url_tablelocal_tables         r%   test_read_from_http_urlz#TestReaders.test_read_from_http_url  so     'H$d+q$$QVVX$6 ,MM*..1	mmGh$67
i5	 ,+s   !BBc                (   t        d|z   d      5 }|j                  d|z   |       d d d        d|j                   d|z   }t        j                  ||      }t        j                  d|z         }t        j                  ||       y # 1 sw Y   bxY w)Nrn   ro   KeyBodys3:///test1)storage_options)rr   
put_objectrF   rZ   rY   r   r   )r^   r$   s3_public_buckets3sort   r  r  r  s           r%   test_read_from_s3_urlz!TestReaders.test_read_from_s3_url  s     'H$d+q''Gh,>Q'G , &++,F3h>MM#t<	mmGh$67
i5 ,+s   BBc                   t        d|z   d      5 }|j                  d|z   |       d d d        dd l} |j                  di |}|j                  d|j                   d|z         5 }t        j                  |      }d d d        t        j                  d|z         }t        j                  |       y # 1 sw Y   xY w# 1 sw Y   DxY w)Nrn   ro   r  r   r  r  r4   )	rr   r  s3fsS3FileSystemrF   rZ   rY   r   r   )	r^   r$   r  r  rt   r  s3r  r  s	            r%   test_read_from_s3_objectz$TestReaders.test_read_from_s3_object  s     'H$d+q''Gh,>Q'G , 	T&&WWu-2236:XEF!a(I G mmGh$67
i5 ,+ GFs   B4'C 4B= C	c                   t         j                  j                   |ddd      d|z         }t        j                  |      }	 t        j                  d|z         }t        j                  |       y # t
        $ rL dj                  t        j                               j                         }t        j                  d|        Y kw xY w)Nr8   r9   rX   rn   zfile://localhost/ zfailing on )ospathr  rZ   rY   r	   platformunamestripr)   rU  r   r   )r^   r$   r>   
localtabler  r  platform_infos          r%   test_read_from_file_urlz#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   A1 1ACCc                    d|z   }t        j                  |dd      }t        d|z         }t        j                  |dd      }t        j                  ||       y r   )rZ   rY   r   r   r   )r^   r$   str_pathrH   path_objr  s         r%   test_read_from_pathlib_pathz'TestReaders.test_read_from_pathlib_path  sO    X%==h!L(*+xHJ
h/r'   zpy.pathc                   ddl m} t        j                  j	                  d|z         }t        j                  |dd      } |       j	                  d|z         }t        j                  |dd      }t        j                  ||       y )Nr   )localrn   r~   r   )	py.pathr  r  r  r  rZ   rY   r   r   )r^   r$   	LocalPathr  rH   r  r  s          r%   test_read_from_py_localpathz'TestReaders.test_read_from_py_localpath  si     	/77<<( 23==h!L;##Gh$67xHJ
h/r'   c                    t         j                  j                  d|z         }t        |d      5 }t	        j
                  |dd      }~|j                          d d d        y # 1 sw Y   y xY w)Nrn   ro   r~   r   r   )r  r  r  rr   rZ   rY   r  )r^   r$   r  rt   r   s        r%   test_close_from_py_localpathz(TestReaders.test_close_from_py_localpath  sO    77<<( 23(D!QaHBAFFH	 "!!s   *A""A+c                   t        ||       |dk(  r4|dk(  r/|j                  t        j                  j	                  d             t        j                  dt        ddd      t        dd	d
d      t        dddd      t        dddd      t        dddd      t        dddd      t        dddd      t        ddd d!      t        d d"dd#      t        d$d%d&d'      t        d(d)d*      gi      }t        j                  d+|z   d,-      }t        j                  ||       t        j                  d.|z   d,-      }t        j                  ||       y )/Nr   r   z0ODS file contains bad datetime (seconds as text)rL   Timerp   r   r   -   8   i r      1   i@ rH     *   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   rZ   rY   r   r   )r^   r0   r#   r$   rH   r  s         r%   test_reader_secondszTestReaders.test_reader_seconds  sE   #FG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
fh/|h68L
fh/r'   c           
     2   t        ||       t        ||      }t        j                  ddgddgg      }d|z   }t	        ddt        j                  d      d	gd
dt        j                  d      dgddt        j                  d      dgddt        j                  d      d	gg|      }||d
      j                  d| d      ||d
   <   t        j                  |dddgd      }t        j                  ||       ||_        g d|_        t        j                  |dddg      }t        j                  ||       ||_        t        j                  |dddgddg      }t        j                  ||       g d|_        |j                  dd g      |_        t        j                  |d!ddg      }t        j                  ||       t        t        d            |_        |j                  d"d#g      |_        t        j                  |d$ddgd      }t        j                  ||       |j!                  dd
gd%      j                  d"d#g      |_        t        j                  |d&dddg      }t        j                  ||       |j                  d"d#g      |_        |j                  dd g      |_        t        j                  |d'ddgddg      }t        j                  ||       t        j                  |d(ddgddgd
)      }t        j                  ||       y )*Nrx   barr   r   testmultiindexrp   r)  
2015-01-01Tr   r*  
2015-01-02Fr   r+  
2015-01-03r   r,  
2015-01-04r   r   r   	mi_columnr   )r   r  r<   r0  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   rZ   rW  r9  rY   r   r   rE   r   	set_namesr  r   
set_levels)	r^   r0   r#   r$   rI   mimi_filerH   r  s	            r%   test_read_excel_multiindexz&TestReaders.test_read_excel_multiindex
  s   #FG4Hf-$$uensCj%AB"X- Cl3T:Cl3U;Cl3U;Cl3T:	 
 #2a5/003tfA?AQFa
 	fh/ /w:!QP
fh/ 1a&!Q
 	fh/ 0w&89w?qRSfU
fh/ eAh<<t5 0!Q1
 	fh/ ==!Qq=9CCT4LQ1aV
 	fh/ <<t5w&891vq!f
 	fh/ +!fq6
 	fh/r'   zsheet_name,idx_lvl2both_name_blank_after_mi_namer   r   both_name_multiple_blanksr   c           
     6   t        ||       d|z   }t        j                  ddgddggddg      }t        ||      }t	        d	d
t        j                  d      dgddt        j                  d      dgddt        j                  d      dgddt        j                  d      dgg|t        j                  g d|fddg            }	|	|d      j                  d| d      |	|d   <   t        j                  ||dd	gdd	g      }
t        j                  |
|	       y )Nr  rx   r  r   r   r  r  r   rp   r)  r  Tr   r*  r  Fr   r+  r	  r   r,  r
  )rx   rx   r  r  r  r  r   r   r   r   r  )rQ   r   r  rC   r   rZ   rW  from_arraysr9  rY   r   r   )r^   r0   r#   r$   r   idx_lvl2r  r  rI   rH   ru   s              r%   +test_read_excel_multiindex_blank_after_namez7TestReaders.test_read_excel_multiindex_blank_after_name^  s,    	$FG4"X-$$uensCj%A$PTVHf-Cl3T:Cl3U;Cl3U;Cl3T:	 ((-x8(
 #2a5/003tfA?A!!fq6	
 	fh/r'   c                    d|z   }t        j                  |dddg      }t        j                  ddg      }t	        g dgd	z  |
      }t        j                  ||       y )Nr  index_col_noner   rp   r   r  r   r   keyvalr'  r   r   )rZ   rY   r   r  r   r   r   )r^   r$   r  ru   exp_columnsrH   s         r%   &test_read_excel_multiindex_header_onlyz2TestReaders.test_read_excel_multiindex_header_only  s^     #X-w3CQPQFS --z>.JKl^a/E
fh/r'   c           	        d|z   }t        j                  t         j                  t         j                  t         j                  t         j                  t         j                  gg dg dg dg dg dgt              }g d}t	        g d	g d
gg dg dgd d g      }t        g d	d       }t        |||      }t        j                  |dd      }t        j                  ||       ||_        t        j                  |dddg      }t        j                  ||       t        j                  g dg dg dg dg dg      }g d}t	        g dg dgg dg dgd d g      }t        g dd       }t        |||      }t        j                  |dd      }t        j                  ||       ||_        t        j                  |dddg      }t        j                  ||       y )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   rE   r   single_namesr   r   multi_namesrp   )rP  rQ  rR  rS  rT  )rV  rW  rX  rY  rZ  )r   rp   r   r   r   single_no_namesmulti_no_names)r   r[  r   r:  r   r   r   rZ   rY   r   r   rE   )	r^   r$   r  r9   r   r  sirH   r  s	            r%   test_excel_old_index_formatz'TestReaders.test_excel_old_index_format  s   *X5
 xx888888 

 JMM &'9:,
 IPT
 TW=xNaP
fh/xMaQRVT
fh/ xx88888
 JGG #O4,
 JQUVTW=x4EQRS
fh/x4DQRTUPVW
fh/r'   c                    d}dD ]@  }t        j                  t        |      5  t        j                  d|z   |       d d d        B y # 1 sw Y   MxY w)Nz#Passing a bool to header is invalid)TFr|   rn   r  r   )r^   r$   r   args       r%   test_read_excel_bool_header_argz+TestReaders.test_read_excel_bool_header_arg  sA    3 Cy4g0= 54 !44s   A		A	c           
        t        ||       t        ||      }t        j                  d|z   dddg      }t	        ddt        j
                  d      d	gdd
t        j
                  d      dgddt        j
                  d      dgddt        j
                  d      d	ggg d      }|d   j                  d| d      |d<   t        j                  ||       t        j                  d|z   dt        j                  ddg            }t        j                  ||       t        j                  d|z   dd       }t        j                  ||       t        j                  d|z   ddg d      }t	        dd
t        j
                  d      dgddt        j
                  d      dgddt        j
                  d      d	ggg d      }|d   j                  d| d      |d<   t        j                  ||       y )Ntestskiprowsskiprows_listr   r   r   r   rp   r)  r  Tr*  r  Fr   r+  r	  r   r,  r
  r0  r   r   r   r   c                
    | dv S N)r   r   r4   r  s    r%   r   z6TestReaders.test_read_excel_skiprows.<locals>.<lambda>  s    qF{r'   )r   r   r   )rQ   rC   rZ   rY   r   rW  r9  r   r   r   r[  r^   r0   r#   r$   rI   r  rH   s          r%   test_read_excel_skiprowsz$TestReaders.test_read_excel_skiprows  s   #FG4Hf-X%/QPQF
 Cl3T:Cl3U;Cl3U;Cl3T:	 )
 !,,s4&];
fh/X%&XXq!f%

 	fh/ X%&*

 	fh/X%&&	
  Cl3U;Cl3U;Cl3T:	 )
 !,,s4&];
fh/r'   c                L   t        ||       t        ||      }t        j                  d|z   dd       }t	        ddt        j
                  d      dgd	d
t        j
                  d      dggg d      }|d   j                  d| d      |d<   t        j                  ||       y )Nrg  rh  c                
    | dvS )N)rp   r   r   r4   r  s    r%   r   zFTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s	    q	1r'   ri  rp   r)  r  Tr   r+  r	  Fr0  r   r   r   r   )	rQ   rC   rZ   rY   r   rW  r9  r   r   rl  s          r%   (test_read_excel_skiprows_callable_not_inz4TestReaders.test_read_excel_skiprows_callable_not_in  s    #FG4Hf-X%&1

 Cl3T:Cl3U; )
 !,,s4&];
fh/r'   c                    d}t        j                  d|z   |      }t        j                  d|z         }|d | }t        j                  ||       y )Nr   rn   nrowsr>  )r^   r$   num_rows_to_pullr  rH   s        r%   test_read_excel_nrowsz!TestReaders.test_read_excel_nrows-  sO    w19IJ==8!34--.
fh/r'   c                    t        j                  d|z         }t        |      }|dz   }t        j                  d|z   |      }t        j                  ||       y )Nrn   r   rr  )rZ   rY   r   r   r   )r^   r$   rH   num_records_in_filert  r  s         r%   0test_read_excel_nrows_greater_than_nrows_in_filez<TestReaders.test_read_excel_nrows_greater_than_nrows_in_file5  sP    ==8!34!(m.3w19IJ
fh/r'   c                    d}t        j                  t        |      5  t        j                  d|z   d       d d d        y # 1 sw Y   y xY w)Nz'nrows' must be an integer >=0r|   rn   r  rr  r   r   s      r%   +test_read_excel_nrows_non_integer_parameterz7TestReaders.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  r  r  r  rg  rh  c                
    | dv S rk  r4   r  s    r%   r   zTestReaders.<lambda>K  s    AKr'   c                    t        j                  ||z   ||||      j                  dd }t        j                  ||z   ||||d      }t        j                  ||       y)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   rs  )rZ   rY   r   r   r   )	r^   r$   r  r   r  r<   r   rH   r  s	            r%   test_read_excel_nrows_paramsz(TestReaders.test_read_excel_nrows_paramsC  so    & ==x!
 $r x!
 	fh/r'   c                    t        j                  t        d      5  t        j                  d|z   dd       d d d        y # 1 sw Y   y xY w)Nzbut 3 positional argumentsr|   rn   r~   r   r   r  s     r%   test_deprecated_kwargsz"TestReaders.test_deprecated_kwargsg  s3    ]]9,HIMM'H,h: JIIs   A  A	c                    d|z   }g d}t        j                  g dd      }t        ||d      }t        j                  |dd	d
gd       }t        j                  ||       y )Nr  ))r   r   r*  r   r   r  ))r   r   r*  rp   r   r  )r   rp   r"  )r   r   r[  r'  r   rp   r  )r   from_tuplesr   rZ   rY   r   r   )r^   r$   	file_namer9   idxrH   ru   s          r%   "test_no_header_with_list_index_colz.TestReaders.test_no_header_with_list_index_colk  sd    $x/	;$$8
 Tf="2q!fT
 	h/r'   c                    d|z   }dt         j                  ddg}t        |dg      }t        j                  |      }t        j                  ||       y )None_col_blank_lineg      ?rp   r   numbersr   )r   r   r   rZ   rY   r   r   )r^   r$   r  r9   rH   ru   s         r%   test_one_col_noskip_blank_linez*TestReaders.test_one_col_noskip_blank_linex  sJ    (83	RVVQ"TI;7y)
fh/r'   c                B   d|z   }t        j                  ddg      }t        j                  t        j                  gt        j                  t        j                  gddgddgg}t	        ||      }t        j                  |d	d
dg      }t        j                  ||       y )Nr  )r   r   )r   r   rp   r   r   r   r   mi_column_empty_rowsr   r(  )	r   r  r   r   r   rZ   rY   r   r   )r^   r$   r  r   r9   rH   ru   s          r%    test_multiheader_two_blank_linesz,TestReaders.test_multiheader_two_blank_lines  s    $x/	((*j)AB 266266"2QFQFCT73"8!Q
 	fh/r'   c                Z    d|z   }t        j                  |      }|j                  dk(  sJ y)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)rZ   rY   shape)r^   r$   r  ru   s       r%   test_trailing_blanksz TestReaders.test_trailing_blanks  s.    
 &0	y)||v%%%r'   c                4   |dk(  rt        j                  d       |dk(  r/|j                  t         j                  j	                  d             t        j
                  t        d      5  t        j                  d|z   d	
       d d d        y # 1 sw Y   y xY w)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)   rU  rN   rO   rP   r   r   rZ   rY   r^   r0   r#   r$   s       r%   test_ignore_chartsheets_by_strz*TestReaders.test_ignore_chartsheets_by_str  sx    vKKDEX!!Q " 
 ]]:-QRMM,1hG SRR   *BBc                4   |dk(  rt        j                  d       |dk(  r/|j                  t         j                  j	                  d             t        j
                  t        d      5  t        j                  d|z   d	
       d d d        y # 1 sw Y   y xY w)Nr   r  r   r  rL   z0Worksheet index 1 is invalid, 1 worksheets foundr|   r  rp   r   r  r  s       r%   test_ignore_chartsheets_by_intz*TestReaders.test_ignore_chartsheets_by_int  s    vKKDEX!!Q " 
 ]]P
 MM,1a@
 
 
r  c                    t        j                  d|z   dd      }t        g dg dg dgg d	      }t        j                  ||       y )
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_formatz$TestReaders.test_euro_decimal_format  sJ    ~8#PQRF@C
 N
 	fh/r'   )\__name__
__module____qualname__r)   fixturera   rv   r   r   r   r   rO   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r$  r;  r   r   r   r  r   r:  r?  rc  rg  rP   r   rm  ru  ry  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  r  r  r%  r.  ra  re  rm  rp  ru  rx  rz  r}  r  r  r  r  r  r  r  r  r4   r'   r%   rS   rS      sF   V^^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 R]]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            
         e Zd Zd Z ej
                  d      d        Zd Zd Zej                  j                  dg d      d	        Zd
 Zd Zej                  j                  ddddgddgdddgddgg      d        Zd Zd Zd Zd Zd Zd Zej                  j                  dddg      d        Zd Zd Zd Zd Zy )!TestExcelFileReadc                    d}t        j                  t        |d      5  t        d|z   d      5 }t	        j
                  |j                         |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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   rW   )r   assert_produces_warningFutureWarningrr   rZ   rY   r  )r^   r#   r$   r   rt   s        r%   test_deprecate_bytes_inputz,TestExcelFileRead.test_deprecate_bytes_input  sm    : 	 ''e
 g($/1affhv6 0
 
 0/
 
s"   A2&A&A2&A/	+A22A;TrT   c                    t        t        j                  |      }|j                   |ddd             |j	                  t        d|       y)zH
        Change directory and set engine for ExcelFile objects.
        rW   r8   r9   rX   rq   N)r   rZ   rq   r[   r\   r]   s        r%   ra   z#TestExcelFileRead.cd_and_set_engine  s=    
 r||F3(49:BT2r'   c                    dddddd}t        j                  d|z         5 }|j                  }d d d        ||}n||dd     }|k(  sJ y # 1 sw Y   xY w)Nr   r   r   r   rh   rn   rp   )rZ   rq   r#   )r^   r$   r#   rs   rX   ru   rH   s          r%   rv   z"TestExcelFileRead.test_engine_used  sp    
 \\'H,-\\F . H(!"6H!!! .-s   AAc                   t        j                  d|z         5 }t        j                  |dddg      }d d d        t        dgdgdgt        j
                  gdggd	g
      }t        j                  |       t        j                  d|z         5 }t        j                  |dddg      }d d d        t        t        j
                  gdgt        j
                  gt        j
                  gdggd	g
      }t        j                  ||       t        j                  d|z         5 }t        j                  |dddg      }d d d        t        dgdgdgt        j
                  gdggd	g
      }t        j                  ||       t        j                  d|z         5 }t        j                  |dddg      }d d d        t        t        j
                  gdgt        j
                  gt        j
                  gdggd	g
      }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   xY w# 1 sw Y   xY w)Ntest4r~   Fappler   keep_default_na	na_valuesrV  rp   rabbitr   r   Ttest51.#QNANr   )rZ   rq   rY   r   r   r   r   r   )r^   r$   rX   r   rH   s        r%   test_excel_passes_naz&TestExcelFileRead.test_excel_passes_na  s   \\'H,-]](EgYF . VaS4&266(XJ7&
 	fh/\\'H,-]](DWIF . ffXsRVVHrvvh
;fX
 	fh/ \\'H,-]](EgYF . [1#w8*=x
 	fh/\\'H,-]](DWIF . ffXsRVVHrvvh
;fX
 	fh/G .- .- .- .-s/   HH##H0H<H #H-0H9<I	na_filter)NTFc                |   i }|||d<   t        j                  d|z         5 }t        j                  |fdddgd|}d d d        |du rdgd	gd
gdgdgg}n6t        j                  gd	gt        j                  gt        j                  gdgg}t        |dg      }t        j                  |       y # 1 sw Y   uxY w)Nr  r  r~   Tr  r  Fr  rp   r   r  r   r   )rZ   rq   rY   r   r   r   r   r   )r^   r$   r  re   rX   r   rH   s          r%   test_excel_passes_na_filterz-TestExcelFileRead.test_excel_passes_na_filter  s      "+F;\\'H,-]]# $")	
 F . "aS5'G9xjIH1#x"&&H:FHXx8
fh/ .-s   B22B;c                   t        ||       |}t        |||       t        j                  d|z         5 }t        j                  |dd      }t        j                  |ddgd      }d d d        t        j                  |       t        j                  |       t        j                  d|z         5 }|j                  dd      }|j                  ddgd      }d d d        t        j                  ||       t        j                  ||       t        j                  d|z         5 }t        j                  |ddd      }	d d d        t        j                  	|j                  d d	        t        j                  d|z         5 }|j                  ddd
      }	d d d        t        j                  |	|j                  d d	        y # 1 sw Y   axY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   RxY w)Nrn   r   r   rp   r   )r<   )r   r<   r   r   )r<   r   )	rQ   rJ   rZ   rq   rY   r   r   rg   r   )
r^   r0   r#   r$   r@   rH   rX   r   r   r   s
             r%   test_excel_table_sheet_by_indexz1TestExcelFileRead.test_excel_table_sheet_by_index'  s   #FG4(F3\\'H,---!qAC--!qcQOC . 	c8,
c8,\\'H,-++a1+-C++a1#+;C . 	c8,
c8,\\'H,---!qQOC .
c388CR=1\\'H,-++a1+;C . 	c388CR=1' .- .- .- .-s/   3G3)G(GG+GGG(+G4c                   t        ||       |}t        |||       d}d}t        j                  ||z         5 }|j	                  |d      }	d d d        t        j                  ||z         5 }|j	                  d|      }
d d d        t        j                  	|       t        j                  
|       y # 1 sw Y   jxY w# 1 sw Y   BxY wr  )rQ   rJ   rZ   rq   rg   r   r   )r^   r0   r#   r$   r@   rH   r  r   rX   	df1_parse	df2_parses              r%   r  z!TestExcelFileRead.test_sheet_nameB  s    #FG4(F3
\\(X-.%zQGI / \\(X-.%aJGI / 	i2
i2 /. /.s   B5,C5B>C
r   r   r   r   r~   c                    d}t        j                  t        |      5  t        j                  d|z         5 }|j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr  )r)   r   r   rZ   rq   rg   )r^   r$   r   r   rX   s        r%   r  z+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''A0c                2   d|z   }t        j                  |dd|      }t        |d      5 }t        j                  |      5 }t        j                  |dd      }d d d        d d d        t	        j
                  |       y # 1 sw Y   (xY w# 1 sw Y   ,xY w)Nrn   r~   r   r   r<   r#   ro   r   )rZ   rY   rr   rq   r   r   )r^   r#   r$   r  rH   rt   rl   r  s           r%   r  z(TestExcelFileRead.test_excel_read_buffer_  sv     ==QvV#t_aCsx1M !  	h/ ! _s#   BBBB
	BBc                    t        d|z   d      5 }t        j                  |      5 }t        j                  |dd|       d d d        d d d        j                  sJ y # 1 sw Y    xY w# 1 sw Y   $xY w)Nrn   ro   r~   r   r  )rr   rZ   rq   rY   closed)r^   r#   r$   rt   ri   s        r%   test_reader_closes_filez)TestExcelFileRead.test_reader_closes_filei  sZ    'H$d+qaDdx1VT ! ,
 xxx	 ! ,+s"   A+A A+A(	$A++A4c                    d}t        j                  d|z         5 }t        j                  t        |      5  t        j
                  |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz8Engine should not be specified when passing an ExcelFilern   r|   rx   rW   )rZ   rq   r)   r   r   rY   )r^   r$   r   xls       r%   test_conflicting_excel_enginesz0TestExcelFileRead.test_conflicting_excel_enginesq  sS    H\\'H,-z5b/ 6 .-55 .-s"   A,A A, A)	%A,,A5c                   t        j                  d|z   |      }t        d|z   d      5 }|j                         }d d d        t        j                  t	              |      }t        j                  ||       y # 1 sw Y   @xY w)Nrn   rW   ro   )rZ   rY   rr   r  r   r   r   )r^   r#   r$   rH   rt   r9   r  s          r%   test_excel_read_binaryz(TestExcelFileRead.test_excel_read_binaryy  sg    ==8!3FC'H$d+q668D , wt}V<
h/	 ,+s   A::Bc                    t        d|z   d      5 }t        j                  ||      }d d d        t        j                  d|z   |      }t        j                  |       y # 1 sw Y   :xY w)Nrn   ro   rW   )rr   rZ   rY   r   r   )r^   r$   r#   rt   ru   rH   s         r%   %test_excel_read_binary_via_read_excelz7TestExcelFileRead.test_excel_read_binary_via_read_excel  sV    'H$d+q]]1V4F ,==8!3FC
fh/ ,+s   A!!A*c                    t        dd      5 }t        j                  t        d      5  t	        j
                  |ddg       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nzdf_header_oob.xlsxro   zexceeds maximumr|   r   rp   rc  )rr   r)   r   r   rZ   rY   )r^   r#   rt   s      r%   )test_read_excel_header_index_out_of_rangez;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                    t        dgd      }t        j                  ddgddg      }t        d	d
gg||d      }t	        j
                  |dddd	g      }t        j                  ||       y )NZI2r   r)  )r   zB.1I11I12r"  rp   r   r8  )rE   r   r   r~   r   r  )r   r   r  r   rZ   rY   r   r   )r^   r  r  colsrH   ru   s         r%   test_header_with_index_colz,TestExcelFileRead.test_header_with_index_col  sq     SE%%%z<&@PUWq!fXS$gNQ1v
 	h/r'   c                   t        ||       d|z   }t        j                  |      5 }t        j                  |ddgd|      }d d d        t	        ||      }t        j
                  ddgd| d	      }t        j                  |d d |dd  g|d   j                         |d   j                         g
      }	t        g g |	      }
t        j                  |
       y # 1 sw Y   xY w)Ntest_datetime_mir   rp   )r  r<   r#   z
2020-02-29z
2020-03-01r   r   r   r"  r[  )rQ   rZ   rq   rY   rC   DatetimeIndexr   r#  to_pydatetimer   r   r   )r^   r0   r#   r$   rt   rX   r  rI   dtiexpected_column_indexrH   s              r%   test_read_datetime_multiindexz/TestExcelFileRead.test_read_datetime_multiindex  s    #FG4)\\!_]]5!Q1VTF  Hf-l;Sa=Q * 6 6!Wc!"gA$$&A$$&!
 Rr3HI
h/ _s   CC%c                    t        j                  t        d      5  t        j                  d| dd      5  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzValue must be one of *r|   zio.excelz.readerabc)r)   r   r   rZ   rj  r  s     r%   test_engine_invalid_optionz,TestExcelFileRead.test_engine_invalid_option  sM    ]]:-EF""XhZw#?G H GFGG GFs!   AA
A
A	AAc                    |dk(  rt        j                  d       |dk(  r/|j                  t         j                  j	                  d             t        j                  d|z         5 }|j                  dgk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r  r   r  rL   r  r~   )r)   rU  rN   rO   rP   rZ   rq   sheet_names)r^   r0   r#   r$   rX   s        r%   test_ignore_chartsheetsz)TestExcelFileRead.test_ignore_chartsheets  s~    vKKDEX!!Q " 
 \\,12e$$
222 322s   'BBc                   t         f}|t        j                  d|        n4|dk(  r!dd l}t         |j                  j
                  f}n|dk(  r	ddlm} |f}t        j                  d|       5 }t        |      j                  dd       t        j                  d	      5  	 t        j                  ||
       d d d        d d d        y # |$ r Y w xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NzInvalid test for engine=r   r   r   r  corruptzutf-8)encodingFrW   )r
   r)   rU  r   biffhr  r    r  r   rX  r   
write_textr  rZ   rq   )r^   r#   r$   errorsr   r  files          r%   test_corrupt_files_closedz+TestExcelFileRead.test_corrupt_files_closed  s    >KK26(;<v $**"6"67Fz!5#%F__wxj12dJ!!)g!>++E2LLf5 3 32
   32 32sB   /2C"!C#C:C"CCCCC	C""C+N)r  r  r  r  r)   r  ra   rv   r  rO   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r4   r'   r%   r  r    s   7 V^^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  )rH   r   r$   r  r#   r  r   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  pandasrZ   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>r     s   "   	   	 !    5 - ) )   
 ''J=
 FLLBMM&!
 FLLBMM*%
 FLLBMM&!
 FLLx!89FLLmbmmE23FLL=2==1B#CD18*  ! C"C$S#. 	S!" 	"  	  
  
  2
\0 \0~(Y Yq*s    H
