
    Oh:                       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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#  e       rejH                  jJ                  Z&g dZ' ejP                  d ejR                  d      g       ejP                  d ejR                  d      g       ejP                  d ejR                  d      g       ejP                  d ejR                  d             ejP                  d ejR                  d             ejP                  d ejR                  d            gZ*d!dZ+d Z, ejZ                  e*D  cg c]  } e'D ]  } e+| |      r	 e,| |        c}} e.      d        Z/ejZ                  d        Z0ejZ                  d        Z1ejZ                  d        Z2d"dZ3d#dZ4d Z5 G d d      Z6 G d d       Z7yc c}} w )$    )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                    | 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     j/var/www/html/diagnosisapp-backend/venv/lib/python3.12/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                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)   U   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_extr.   _   s     ==r$   c                    | \  }}|S N r.   r    r!   s      r"   r    r    o   s    *FHMr$   c                    | \  }}|S r0   r1   r2   s      r"   r!   r!   u   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nsr1   )r!   r    s     r"   get_exp_unitr@      s    r$   c                ~    d | j                   _        t        ||      }| j                   j                  |      | _         y r0   )indexnamer@   as_unit)expectedr!   r    units       r"   adjust_expectedrG      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    r-   s     r"   xfail_datetimes_with_pyxlsbrN      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d1/       e"d2d3ej@                  d4gd1/      d,      fg      d5        Z#d6 Z$d7 Z%d8 Z&ej                  j                  d9i d:fd;d<id:fg      d=        Z'd> Z(ej                  j                  d?d@ edAdBgi      fdC edDgE      fg      dF        Z)dG Z*dH Z+dI Z,dJ Z-dK Z.dL Z/ej                  ja                  dM      dN        Z1dO Z2dP Z3dQ Z4ej                  j                  dRdSdTdSgdSdTgdUdVdUgdUdVgg      dW        Z5dX Z6dY Z7ej                  jp                  ej                  jr                  dZ               Z:e;jx                  ej                  jr                  d[               Z=ej                  jr                  d\        Z>ej                  j~                  d]        Z@d^ ZA e;j                  d_      d`        ZCda ZDdb ZEdc ZFej                  j                  dddeej@                  dfdgdfgfdhej@                  gdiz  fg      dj        ZGdk ZHdl ZIdm ZJdn ZKdo ZLdp ZMdq ZNdr ZOej                  j                  dsdtdudTd:gdTdfdtdvddTd:gdfdtdwdTd:gdTd:gdfdtdxdTd:gdTdfdydzdddTdgfdydzddd{ fg      d|        ZPd} ZQd~ ZRd ZSd ZTd ZUd ZVd ZWd ZXy)TestReadersTautousec                    t        t        j                  |      }|j                   |ddd             |j	                  t        d|       y)zG
        Change directory and set engine for read_excel calls.
        r    r5   r6   excel
read_excelN)r   pdrV   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 r0   rT   )r[   argskwargss      r"   parserz,TestReaders.test_engine_used.<locals>.parser   s    ;;r$   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )rY   rW   	ExcelFileopenrV   )	r[   r!   r    r\   rc   expected_defaultsfresultrE   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{   TrueTre   >   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'matchrk   Sheet1r   rm   )
sheet_namer9   engine_kwargs)reescaper&   raises	TypeErrorrW   rV   )r[   r!   r    rp   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	   s   :#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`ry   rk   r{   r      r|   r9   usecolsSheet2rm   r|   skiprowsr9   r   r&   r   
ValueErrorrW   rV   r[   r!   r   s      r"   test_usecols_intzTestReaders.test_usecols_int   s    0]]:S1 	MM("x1a	 ]]:S1 	MM("#	 		 		 	s   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Crk   r{   r   )r      r   r   r   rm   r   rN   rG   rW   rV   tmassert_frame_equal)r[   r-   r    r!   r=   rE   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   rk   r{   r   zA:Dr   r   rm   r   r   r   zA,C,DzA,C:Dr   )r[   r-   r    r!   r=   rE   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   rm   r   )r   r   rm   )rm   r   r   )rm   r   r   )r   r   rm   )r   rm   r   c                    t        ||       |ddg   }t        |||       t        j                  d|z   dd|      }t	        j
                  ||       y )Nr   r   rk   r{   r   r   r   )r[   r-   r    r!   r   r=   rE   rr   s           r"   .test_usecols_diff_positional_int_columns_orderz:TestReaders.test_usecols_diff_positional_int_columns_order/  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   rk   r{   r|   r   )rangelenrB   rW   rV   r   r   )r[   r!   r   r=   rE   rr   s         r"   .test_usecols_diff_positional_str_columns_orderz:TestReaders.test_usecols_diff_positional_str_columns_order?  sH    3*%s8}-w1hPWX
fh/r$   c                    t        ||       |}t        |||       t        j                  d|z   dd      }t	        j
                  ||       y Nrk   r{   r   r|   r9   r   r[   r-   r    r!   r=   rE   rr   s          r"   test_read_excel_without_slicingz+TestReaders.test_read_excel_without_slicingG  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   rk   r{   r   zA,D:Er   r   r   s          r"   test_usecols_excel_range_strz(TestReaders.test_usecols_excel_range_strP  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: E1ry   rk   r{   zD:E1r   r   r   s      r"   $test_usecols_excel_range_str_invalidz0TestReaders.test_usecols_excel_range_str_invalid[  sC    ']]:S1 	SMM'H,6R	S 	S 	S   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 strry   rk   r{   r   r   r   r&   r   r   rW   rV   r   s      r"   test_index_col_label_errorz&TestReaders.test_index_col_label_errora  sM    8]]9C0 	MM("#%c
		 	 	s    AAc                    t        j                  d|z   dd      }t        g dt        g d            }t	        j
                  ||       y )Nrk   Sheet3r   r   )r   r   r   EFrC   columnsrB   )rW   rV   r   r   r   r   r[   r!   rr   rE   s       r"   test_index_col_strzTestReaders.test_index_col_strl  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 )	Nrk   r   r   r   )r   r   r   r   levelscodesnamesr   )rW   rV   r   r   r   r   r   s       r"   test_index_col_emptyz TestReaders.test_index_col_emptyt  sU    h8
 #RD1HRD1HOT
 	fh/r$   r9   Nr   c                    t        j                  d|z   d|      }t        g dg dgg d      }|r|j                  |j                  |         }t        j                  ||       y )Nrk   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )rW   rV   r   	set_indexr   r   r   )r[   r!   r9   rr   rE   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'\]ry   rk   r   r   r   r   s      r"   %test_usecols_pass_non_existent_columnz1TestReaders.test_usecols_pass_non_existent_column  sF     	 ]]:S1 	=MM'H,se<	= 	= 	=r   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.ry   rk   E1r   r   r   r   s      r"   test_usecols_wrong_typez#TestReaders.test_usecols_wrong_type  sM    D 	
 ]]:S1 	AMM'H,tQi@	A 	A 	As   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   rW   rV   r   r   r   )r[   r!   parsedrE   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 filesrI   test3r{   r   r   r   )rN   rK   r&   rL   rM   rW   rV   r   npnanr   r   )r[   r-   r    r!   r   rE   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 )
Nrk   r{   r   r   r   rm   r|   r   r9   r|   r9   
skipfooter)rN   rG   rW   rV   r   r   iloc)	r[   r-   r    r!   r=   rE   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)rm   r      r   )g      ?g      @gHzG?gQ?g&.>)TFTTF)rm   r   r   r      )r   r   cdei  
         iq  rm         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   rW   rV   r   r   copylocrB   	enumerater   r   applystr)r[   r-   r    r!   rF   rE   basenameactualfloat_expectedicolrC   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5 	/JD$]]8#DF $$T*C!!&#.	/ &h/55c:xH(C
 	fh/r$   c           
        d}t        j                  g ddt        j                  dddgg ddt        j                  d	d
dgd      }d d d d d}t	        j
                  ||z   d|      }t        j                  ||       y )Ntest_converters)rm   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& 266 r$   c                    | dk7  rdS dS )Nr  r  r  r1   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   rW   rV   r   r   )r[   r!   r
  rE   r  r  s         r"   test_reader_convertersz"TestReaders.test_reader_converters  s    $&&.!2664{CLS#6	
 =9<,	

 xH
 	fh/r$   c           	     @   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d      |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rm   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 int64ry   r   int64)rW   rV   r   r   r   r   r   r	  astyper   r&   r   r   )r[   r!   r
  r  rE   r   s         r"   test_reader_dtypezTestReaders.test_reader_dtype  s	   x(23!)!3,	
 	fh/xYYS'Q
 !,,Y7 ,,Y7;5I
fh/8]]:S1 	EMM(X-c7^D	E 	E 	Es   .DDzdtype,expectedr$  r%  r*  r+  r,  r-  r.  r/  r   r0  r	  r  2r  c                h    d}t        j                  ||z   |      }t        j                  ||       y )Nr#  r   rW   rV   r   r   )r[   r!   r   rE   r
  r  s         r"   test_reader_dtype_strz!TestReaders.test_reader_dtype_str.  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: ''rm   r   Int64r   r&  r(  Float64TFbooleanr   r   string   g      @z
2019-12-31r   )
r   r   r   r   r   rq   ghijtestr|   rB   r|   dtype_backendpyarrowr   )ArrowExtensionArray)from_pandasrG  us)rF   rH  r   r   )r&   skipr   r   rW   NA	Timestampr   ensure_cleanto_excelrV   rM  pandas.arraysrN  r   array	_pa_arraycast	timestampr@   r6  r   )r[   r!   rL  r    df	file_pathrr   parN  colrE   rF   s               r"   test_dtype_backendz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 ,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)Nr=  r>  r?  r*  r&  r   r   rI  FrJ  numpy_nullabler.  )r|   rL  r   )r&   rQ  r   r   r   r   rT  rU  rW   rV   r   )r[   r!   r[  r\  rr   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c           
        |dv rt        j                  d| 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        t	        t        ddgt        j                  |            t        dd gt        j                  |            d	      }t        j                  |d       d d d        y # 1 sw Y   xxY w# 1 sw Y   y xY w)Nr=  r>  r?  zmode.string_storager   r   r   r   ra  rI  FrJ  rb  rK  )check_column_type)r&   rQ  rW   option_contextr   r   rW  object_rR  r   rT  rU  rV   r   StringDtyper   )r[   r!   string_storager[  r\  rr   rE   s          r"   test_dtype_backend_stringz%TestReaders.test_dtype_backend_string  s0   ((KK3H:Q?@4nE 	M3*BJJ?3,bjjAB * iI&F&@P !c
"..2PQd2>>.3QRH !!&(eL-	M 	M 	M 	Ms%   A<E 0-EA.E E	E  E)zdtypes, exp_valuerm   a.1r5  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   rm   )r   rk  zdtype dict changed)objectr  rW   rV   r   r   r   r   )	r[   r!   dtypes	exp_valuer
  
dtype_dictdtype_dict_copyrr   rE   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  rE   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&   rQ  rW   rV   r   r   )r[   r    r!   r
  rE   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)rW   rV   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   )rW   rV   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   )rW   rV   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   )rW   rV   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   rW   rV   r   r   )r[   r!   rE   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\)$ry   r  rm   )headerr|   rk   c                    ddz  S )Nrm   r   r1   r  s    r"   r  zHTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>  s
    A r$   )r   r|   )r&   r   r   rW   rV   ZeroDivisionErrorr[   r!   s     r"   *test_exception_message_includes_sheet_namez6TestReaders.test_exception_message_includes_sheet_name  s    ]]:-CD 	WMM-8!QUV	W]],4JK 	XMM'H,oRVW	X 	X	W 	W	X 	Xs   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 openpyxlrI   )r   r   z)Defaults to openpyxl, maybe not supportedtestdateoverflow)rN   r   rW   rS  rK   r&   rL   rM   rV   r   r   )r[   r-   r    r!   rE   rr   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 Nrk   r{   r   r   )r9   r|   r   )
r[   r-   r!   r    r=   filenamer|   rE   r   r   s
             r"   test_sheet_namezTestReaders.test_sheet_name1  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)Nrk   r{   r   r   rl   )rW   rV   ro   r   r   )r[   r!   pthrE   rq   r  s         r"   test_excel_read_bufferz"TestReaders.test_excel_read_bufferB  s`     ==QG#t_ 	4]]1QGF!!(F3	4 	4 	4s   /A""A+c                    d}t        j                  t        d      5  t        j                  d|       d d d        y # 1 sw Y   y xY w)Nru   zUnknown engine: foory   r  rT   r   )r[   
bad_engines     r"   test_bad_engine_raisesz"TestReaders.test_bad_engine_raisesI  s9    
]]:-BC 	1MM"Z0	1 	1 	1s	   ?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 foundry   r  r   r   )r[   r!   r|   r   s       r"   test_bad_sheetname_raisesz%TestReaders.test_bad_sheetname_raisesN  sD     P]]:S1 	EMM'H,D	E 	E 	E   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)Nru   |)z(No such file or directoryu   没有那个文件或目录zFile o directory non esistente)ry   )joinr&   r   FileNotFoundErrorrW   rV   )r[   r!   bad_filerz   s       r"   test_missing_file_raisesz$TestReaders.test_missing_file_raisesX  sS    
#
 ]],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 filery   )r   r   r  r   r  r
   r&   r   rW   rV   r   )r[   r    
bad_streamerrorr   r  r  s          r"   test_corrupt_bytes_raisesz%TestReaders.test_corrupt_bytes_raisese  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)Nrk   rl   )content)ro   serve_contentreadrW   rV   urlr   r   )r[   
httpserverr!   rq   	url_tablelocal_tables         r"   test_read_from_http_urlz#TestReaders.test_read_from_http_url  sv     'H$d+ 	7q$$QVVX$6	7MM*..1	mmGh$67
i5		7 	7s   !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)Nrk   rl   KeyBodys3:///test1)storage_options)ro   
put_objectrC   rW   rV   r   r   )r[   r!   s3_public_buckets3sorq   r  r  r  s           r"   test_read_from_s3_urlz!TestReaders.test_read_from_s3_url  s     'H$d+ 	Hq''Gh,>Q'G	H &++,F3h>MM#t<	mmGh$67
i5	H 	H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)Nrk   rl   r  r   r  r  r1   )	ro   r  s3fsS3FileSystemrC   rW   rV   r   r   )	r[   r!   r  r  rq   r  s3r  r  s	            r"   test_read_from_s3_objectz$TestReaders.test_read_from_s3_object  s     'H$d+ 	Hq''Gh,>Q'G	H 	T&&WWu-2236:XEF 	)!a(I	) mmGh$67
i5	H 	H	) 	)s   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)Nr5   r6   rU   rk   zfile://localhost/ zfailing on )ospathr  rW   rV   r	   platformunamestripr&   rQ  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   )rW   rV   r   r   r   )r[   r!   str_pathrE   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   )localrk   r{   r   )	py.pathr  r  r  r  rW   rV   r   r   )r[   r!   	LocalPathr  rE   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)Nrk   rl   r{   r   r   )r  r  r  ro   rW   rV   r  )r[   r!   r  rq   r   s        r"   test_close_from_py_localpathz(TestReaders.test_close_from_py_localpath  sX    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)rI   Timerm   r   r   -   8   i r      1   i@ rD     *   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   rW   rV   r   r   )r[   r-   r    r!   rE   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 )*Nru   barr   r   testmultiindexrm   r&  
2015-01-01Tr   r'  
2015-01-02Fr   r(  
2015-01-03r   r)  
2015-01-04r   r   r   	mi_columnr   )r|   r  r9   r-  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   rW   rS  r6  rV   r   r   rB   r   	set_namesr  r   
set_levels)	r[   r-   r    r!   rF   mimi_filerE   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  ru   r  r   r   r  r  r   rm   r&  r  Tr   r'  r  Fr   r(  r  r   r)  r  )ru   ru   r  r  r  r  r   r   r   r   r  )rN   r   r  r@   r   rW   rS  from_arraysr6  rV   r   r   )r[   r-   r    r!   r|   idx_lvl2r  r  rF   rE   rr   s              r"   +test_read_excel_multiindex_blank_after_namez7TestReaders.test_read_excel_multiindex_blank_after_nameN  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   rm   r|   r  r   r   keyvalr$  r   r   )rW   rV   r   r  r   r   r   )r[   r!   r  rr   exp_columnsrE   s         r"   &test_read_excel_multiindex_header_onlyz2TestReaders.test_read_excel_multiindex_header_onlyv  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   rm   r   r   r   r   r   r   rB   r   single_namesr   r   multi_namesrm   )rN  rO  rP  rQ  rR  )rT  rU  rV  rW  rX  )r   rm   r   r   r   single_no_namesmulti_no_names)r   rW  r   rn  r   r   r   rW   rV   r   r   rB   )	r[   r!   r  r6   r   r  sirE   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)TFry   rk   r  r   )r[   r!   r   args       r"   test_read_excel_bool_header_argz+TestReaders.test_read_excel_bool_header_arg  sQ    3  	>Cy4 >g0=> >	>> >s   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   rm   r&  r  Tr'  r  Fr   r(  r  r   r)  r  r-  r   r   r   r   c                
    | dv S N)r   r   r1   r  s    r"   r  z6TestReaders.test_read_excel_skiprows.<locals>.<lambda>  s
    qF{ r$   )r|   r   r   )rN   r@   rW   rV   r   rS  r6  r   r   r   rW  r[   r-   r    r!   rF   r  rE   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 )Nre  rf  c                
    | dvS )N)rm   r   r   r1   r  s    r"   r  zFTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s    q	1 r$   rg  rm   r&  r  Tr   r(  r  Fr-  r   r   r   r   )	rN   r@   rW   rV   r   rS  r6  r   r   rj  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   rk   nrowsr:  )r[   r!   num_rows_to_pullr  rE   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 )Nrk   r   rp  )rW   rV   r   r   r   )r[   r!   rE   num_records_in_filerr  r  s         r"   0test_read_excel_nrows_greater_than_nrows_in_filez<TestReaders.test_read_excel_nrows_greater_than_nrows_in_file%  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 >=0ry   rk   r  rp  r   r   s      r"   +test_read_excel_nrows_non_integer_parameterz7TestReaders.test_read_excel_nrows_non_integer_parameter-  s=    .]]:S1 	9MM'H,C8	9 	9 	9r  z-filename,sheet_name,header,index_col,skiprowsr  r	  r
  r  r  re  rf  c                
    | dv S ri  r1   r  s    r"   r  zTestReaders.<lambda>;  s
    AK r$   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  r9   r   Nr   )r|   r  r9   r   rq  )rW   rV   r   r   r   )	r[   r!   r  r|   r  r9   r   rE   r  s	            r"   test_read_excel_nrows_paramsz(TestReaders.test_read_excel_nrows_params3  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 argumentsry   rk   r{   r   r   r  s     r"   test_deprecated_kwargsz"TestReaders.test_deprecated_kwargsW  s;    ]]9,HI 	;MM'H,h:	; 	; 	;s   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(  rm   r   r  )r   rm   r   )r   r   rY  r%  r   rm   r  )r   from_tuplesr   rW   rV   r   r   )r[   r!   	file_namer6   idxrE   rr   s          r"   "test_no_header_with_list_index_colz.TestReaders.test_no_header_with_list_index_col[  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      ?rm   r   numbersr   )r   r   r   rW   rV   r   r   )r[   r!   r  r6   rE   rr   s         r"   test_one_col_noskip_blank_linez*TestReaders.test_one_col_noskip_blank_lineh  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   rm   r   r   r   r   mi_column_empty_rowsr   r&  )	r   r  r   r   r   rW   rV   r   r   )r[   r!   r  r   r6   rE   rr   s          r"    test_multiheader_two_blank_linesz,TestReaders.test_multiheader_two_blank_linesp  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)rW   rV   shape)r[   r!   r  rr   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 worksheetsrI   z"Worksheet named 'Chart1' not foundry   
chartsheetChart1r   	r&   rQ  rK   rL   rM   r   r   rW   rV   r[   r-   r    r!   s       r"   test_ignore_chartsheets_by_strz*TestReaders.test_ignore_chartsheets_by_str  s    vKKDEX!!Q " 
 ]]:-QR 	HMM,1hG	H 	H 	H   *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  rI   z0Worksheet index 1 is invalid, 1 worksheets foundry   r  rm   r   r  r  s       r"   test_ignore_chartsheets_by_intz*TestReaders.test_ignore_chartsheets_by_int  s    vKKDEX!!Q " 
 ]]P
 	A MM,1a@	A 	A 	Ar  c                    t        j                  d|z   dd      }t        g dg dg dgg d	      }t        j                  ||       y )
Ntest_decimal,rm   )decimalr   )rm   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$   )Y__name__
__module____qualname__r&   fixturer^   rs   r   r   r   r   rL   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r!  r7  r   r   r   r	  r   r;  r_  rc  rj  rs  rw  rz  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,  r_  rc  rk  rn  rs  rv  rx  r{  r}  r  r  r  r  r  r  r  r1   r$   r"   rP   rP      s   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#$@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 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$   rP   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)rz   raise_on_extra_warningsrk   rl   rT   )r   assert_produces_warningFutureWarningro   rW   rV   r  )r[   r    r!   r   rq   s        r"   test_deprecate_bytes_inputz,TestExcelFileRead.test_deprecate_bytes_input  sy    : 	 ''e
 	7 g($/ 71affhv67	7 	77 7	7 	7s"   A2&A&A2&A/	+A22A;TrQ   c                    t        t        j                  |      }|j                   |ddd             |j	                  t        d|       y)zH
        Change directory and set engine for ExcelFile objects.
        rT   r5   r6   rU   rn   N)r   rW   rn   rX   rY   rZ   s        r"   r^   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   re   rk   rm   )rW   rn   r    )r[   r!   r    rp   rU   rr   rE   s          r"   rs   z"TestExcelFileRead.test_engine_used  sw    
 \\'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_valuesrR  rm   rabbitr   r   Ttest51.#QNANr   )rW   rn   rV   r   r   r   r   r   )r[   r!   rU   r   rE   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  rm   r   r  r   r   )rW   rn   rV   r   r   r   r   r   )r[   r!   r  rb   rU   r   rE   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)Nrk   r   r   rm   r   )r9   )r   r9   r   r   )r9   r   )	rN   rG   rW   rn   rV   r   r   rd   r   )
r[   r-   r    r!   r=   rE   rU   r   r   r   s
             r"   test_excel_table_sheet_by_indexz1TestExcelFileRead.test_excel_table_sheet_by_index  s   #FG4(F3\\'H,- 	P--!qAC--!qcQOC	P 	c8,
c8,\\'H,- 	<++a1+-C++a1#+;C	< 	c8,
c8,\\'H,- 	P--!qQOC	P
c388CR=1\\'H,- 	<++a1+;C	< 	c388CR=1'	P 	P	< 	<	P 	P	< 	<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  )rN   rG   rW   rn   rd   r   r   )r[   r-   r    r!   r=   rE   r  r|   rU   	df1_parse	df2_parses              r"   r  z!TestExcelFileRead.test_sheet_name2  s    #FG4(F3
\\(X-. 	H%zQGI	H \\(X-. 	H%aJGI	H 	i2
i2	H 	H	H 	H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   rW   rn   rd   )r[   r!   r|   r   rU   s        r"   r  z+TestExcelFileRead.test_bad_sheetname_raisesD  sh     P]]:S1 	3g01 3Uz23	3 	33 3	3 	3s"   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)Nrk   r{   r   r|   r9   r    rl   r   )rW   rV   ro   rn   r   r   )r[   r    r!   r  rE   rq   ri   r  s           r"   r  z(TestExcelFileRead.test_excel_read_bufferO  s     ==QvV#t_ 	Na NCsx1MN	N 	h/N N	N 	N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)Nrk   rl   r{   r   r  )ro   rW   rn   rV   closed)r[   r    r!   rq   rf   s        r"   test_reader_closes_filez)TestExcelFileRead.test_reader_closes_fileY  sq    'H$d+ 	Uqa UDdx1VTU	U
 xxx	U U	U 	U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 ExcelFilerk   ry   ru   rT   )rW   rn   r&   r   r   rV   )r[   r!   r   xls       r"   test_conflicting_excel_enginesz0TestExcelFileRead.test_conflicting_excel_enginesa  se    H\\'H,- 	0z5 0b/0	0 	00 0	0 	0s"   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)Nrk   rT   rl   )rW   rV   ro   r  r   r   r   )r[   r    r!   rE   rq   r6   r  s          r"   test_excel_read_binaryz(TestExcelFileRead.test_excel_read_binaryi  sn    ==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)Nrk   rl   rT   )ro   rW   rV   r   r   )r[   r!   r    rq   rr   rE   s         r"   %test_excel_read_binary_via_read_excelz7TestExcelFileRead.test_excel_read_binary_via_read_excels  s]    'H$d+ 	5q]]1V4F	5==8!3FC
fh/	5 	5s   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.xlsxrl   zexceeds maximumry   r   rm   ra  )ro   r&   r   r   rW   rV   )r[   r    rq   s      r"   )test_read_excel_header_index_out_of_rangez;TestExcelFileRead.test_read_excel_header_index_out_of_rangez  s_    &- 	0z1BC 0aA/0	0 	00 0	0 	0s"   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   rm   r   r5  )rB   r   r   r{   r   r  )r   r   r  r   rW   rV   r   r   )r[   r  r  colsrE   rr   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   rm   )r  r9   r    z
2020-02-29z
2020-03-01r   r   r   r   rY  )rN   rW   rn   rV   r@   DatetimeIndexr   r!  to_pydatetimer   r   r   )r[   r-   r    r!   rq   rU   r  rF   dtiexpected_column_indexrE   s              r"   test_read_datetime_multiindexz/TestExcelFileRead.test_read_datetime_multiindex  s    #FG4)\\!_ 	U]]5!Q1VTF	U Hf-l;Sa=Q * 6 6!Wc!"gA$$&A$$&!
 Rr3HI
h/	U 	U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 *ry   zio.excelz.readerabc)r&   r   r   rW   rf  r  s     r"   test_engine_invalid_optionz,TestExcelFileRead.test_engine_invalid_option  s\    ]]:-EF 	""XhZw#?G 	 	 	 	s!   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  rI   r  r{   )r&   rQ  rK   rL   rM   rW   rn   sheet_names)r[   r-   r    r!   rU   s        r"   test_ignore_chartsheetsz)TestExcelFileRead.test_ignore_chartsheets  s    vKKDEX!!Q " 
 \\,12 	3e$$
222	3 	3 	3s   '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)encodingFrT   )r
   r&   rQ  r   biffhr  r   r  r   rT  r   
write_textr  rW   rn   )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2 	dJ!!)g!>++E2 LLf5	 	
   	 	sB   /2C"!C#C:C"CCCCC	C""C+N)r  r  r  r  r&   r  r^   rs   r  rL   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1   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	  )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  pandasrW   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>r     s   "   	   	 !    - ) )   ''J=
 FLLBMM&!
 FLLBMM*%
 FLLBMM&!
 FLLx!89FLLmbmmE23FLL=2==1B#CD18*  !" $S#. 	S!! 	  
  
  2
R0 R0j(Y Y]*s   8 G>
