
    .i                       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Zd dlmZ d dlZd dl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" g d
Z# ejH                  d ejJ                  d      g       ejH                  d ejJ                  d      g       ejH                  d ejJ                  d      g       ejH                  d ejJ                  d             ejH                  d ejJ                  d             ejH                  d ejJ                  d            gZ&d!dZ'd Z( ejR                  e&D  cg c]  } e#D ]  } e'| |      r	 e(| |        c}} e*      d        Z+ejR                  d        Z,ejR                  d        Z-ejR                  d        Z.ejR                  d        Z/d"dZ0d#dZ1d Z2 G d d      Z3 G d d       Z4yc c}} w )$    )annotations)datetimetime)partial)BytesION)Path)URLError)
BadZipFile)	DataFrameIndex
MultiIndexSeriesread_csv).xls.xlsx.xlsm.xlsb.odsxlrdmarksopenpyxlpyxlsbodfcalaminepython_calaminec                    | 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/app/trading-bot/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                j    g | j                   |}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(   R   s1    
 (v}}'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   l   s    *FHMr#   c                    | \  }}|S r/   r0   r1   s      r!   r    r    r   s    *FHOr#   c                n    |t        j                          |  z  }|j                          t        |      S r/   )uuiduuid4touchstr)r    tmp_pathtmps      r!   	tmp_excelr:   x   s-    


~hZ0
0CIIKs8Or#   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!   rD   rD      s)    
 fe[9Hh!hOFMr#   c                     y)Nusr0   )r    r   s     r!   get_exp_unitrG      s    r#   c                ~    d | j                   _        t        ||      }| j                   j                  |      | _         y r/   )indexnamerG   as_unit)expectedr    r   units       r!   adjust_expectedrN      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_pyxlsbrU      s7    KKL  	
 r#   c                     e Zd Zej                  j                  dg ddgddgg      d        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 g d,g d-g d,d.d/e jB                  d0gd1fd2d3e"e"d1 e#g d,d24       e#g d-d34       e#g d5d64       e#d7d8e jB                  d9gd64      d1fg      d:        Z$d; Z%d< Z&d= Z'ej                  j                  d>i d?fd@dAid?fg      dB        Z(dC Z)ej                  j                  dDdE e*dFdGgi      fdH e*dIgJ      fg      dK        Z+dL Z,dM Z-dN Z.dO Z/dP Z0dQ Z1ej                  je                  dR      dS        Z3dT Z4dU Z5dV Z6ej                  j                  dWdXdYdXgdXdYgdZd[dZgdZd[gg      d\        Z7d] Z8d^ Z9ej                  jt                  ej                  jv                  d_               Z<e=j|                  ej                  jv                  d`               Z?ej                  jv                  da        Z@ej                  j                  db        ZBdc ZCdd ZDde ZEdf ZFej                  j                  dgdhe jB                  didjdigfdke jB                  gdlz  fg      dm        ZGdn ZHdo ZIdp ZJdq ZKdr ZLds ZMdt ZNdu ZOej                  j                  dvdwdxdYd?gdYd fdwdyd dYd?gd fdwdzdYd?gdYd?gd fdwd{dYd?gdYd fd|d}d d dYd!gfd|d}d d d~ fg      d        ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXy )TestReaderscol)TNFTFc                    |dv rt        j                  d| d       t        d|id      }|j                  |d       t	        j
                  |ddi      }t        j                  ||       y )	Nr   r   No engine for filetype: ''bool_columnbooleandtypeF)rI   )r%   skipr   to_excelpd
read_exceltmassert_frame_equal)selfrX   r:   r    dfdf2s         r!   test_read_excel_type_checkz&TestReaders.test_read_excel_type_check   si     ((KK3H:Q?@s+9=
IU+mmImY-GH
b#&r#   c           	          |dddd      }t        j                  |      5 }t        j                  |ddg ddd	
      }d d d        t        dg did      }t	        j
                  |       y # 1 sw Y   1xY w)Nr<   r=   excelztest_none_type.xlsxSheet1T)nanNoneabcdr^   r   )
sheet_namekeep_default_na	na_valuesr`   r   Test)TNFNFNTr_   )rc   	ExcelFilerd   r   re   rf   )rg   rB   f_pathrl   parsedrL   s         r!   test_pass_none_typezTestReaders.test_pass_none_type   s    $1FG\\&! 	U]]# $1!F	 AB

 	fh/	 	s   A//A8autousec                    t        t        j                  |      }|j                   |ddd             |j	                  t        d|       y)zG
        Change directory and set engine for read_excel calls.
        r   r<   r=   rl   rd   N)r   rc   rd   chdirsetattrrg   r   rB   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 r/   r|   )rg   argskwargss      r!   parserz,TestReaders.test_engine_used.<locals>.parser   s    ;;r#   parser   r   r   r   xlsxxlsmxlsbxlsodstest1rb   )r~   rc   ru   openrd   )	rg   r    r   r   r   expected_defaultsfresultrL   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foorp   {   TrueTr   >   r   r   z8open_workbook() got an unexpected keyword argument 'foo'r   z/load() got an unexpected keyword argument 'foo'z8load_workbook() got an unexpected keyword argument 'foo'matchr   rm   r   r   )rq   r@   engine_kwargs)reescaper%   raises	TypeErrorrc   rd   )rg   r    r   r   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`r   r   rm   r      rq   r@   usecolsSheet2r   rq   skiprowsr@   r   r%   r   
ValueErrorrc   rd   rg   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Cr   rm   r   )r      r   r   r   r   r   rU   rN   rc   rd   re   rf   )rg   r,   r   r    rD   rL   df1ri   s           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   r   rm   r   zA:Dr   r   r   r   r   r   zA,C,DzA,C:Dr   )rg   r,   r   r    rD   rL   ri   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   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   c                    t        ||       |ddg   }t        |||       t        j                  d|z   dd|      }t	        j
                  ||       y )Nr   r   r   rm   r   r   r   )rg   r,   r   r    r   rD   rL   r   s           r!   .test_usecols_diff_positional_int_columns_orderz:TestReaders.test_usecols_diff_positional_int_columns_orderQ  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   r   rm   rq   r   )rangelenrI   rc   rd   re   rf   )rg   r    r   rD   rL   r   s         r!   .test_usecols_diff_positional_str_columns_orderz:TestReaders.test_usecols_diff_positional_str_columns_ordera  sH    3*%s8}-w1hPWX
fh/r#   c                    t        ||       |}t        |||       t        j                  d|z   dd      }t	        j
                  ||       y Nr   rm   r   rq   r@   r   rg   r,   r   r    rD   rL   r   s          r!   test_read_excel_without_slicingz+TestReaders.test_read_excel_without_slicingi  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   r   rm   r   zA,D:Er   r   r   s          r!   test_usecols_excel_range_strz(TestReaders.test_usecols_excel_range_strr  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   r   rm   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 strr   r   rm   r   r   r   r%   r   r   rc   rd   r   s      r!   test_index_col_label_errorz&TestReaders.test_index_col_label_error  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 )Nr   Sheet3r   r   )r   r   r   EFrJ   columnsrI   )rc   rd   r   r   re   rf   rg   r    r   rL   s       r!   test_index_col_strzTestReaders.test_index_col_str  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 )	Nr   r   r   r   )r   r   r   r   levelscodesnamesr   )rc   rd   r   r   re   rf   r   s       r!   test_index_col_emptyz TestReaders.test_index_col_empty  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 )Nr   Sheet4r   )i1ax)i2by)z
Unnamed: 0col1col2r   )rc   rd   r   	set_indexr   re   rf   )rg   r    r@   r   rL   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   r   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.r   r   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test2rm   rq   aaaabbbbbrt   Test1r   rc   rd   r   re   rf   )rg   r    rw   rL   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 filesrP   test3rm   r   rt   r   )rU   rR   r%   rS   rT   rc   rd   r   nprn   re   rf   )rg   r,   r   r    rw   rL   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 )
Nr   rm   r   r   r   r   rq   r   r@   rq   r@   
skipfooter)rU   rN   rc   rd   re   rf   iloc)	rg   r,   r   r    rD   rL   r   ri   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)r   r      r   )g      ?g      @gHzG?gQ?g&.>)TFTTF)r   r   r   r     )r   r   cdei  
         iq  r         i  r   M8[]r_   )IntColFloatColBoolColStrColStr2ColDateCol
test_typesrm   r   g      @r  r   r  rq   
converters)rU   rG   r   	from_dictr   r   rc   rd   re   rf   copylocrI   	enumerater   r   applyr7   )rg   r,   r   r    rM   rL   basenameactualfloat_expectedicolrJ   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)r   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   rn   r3  s    r!   r4  z4TestReaders.test_reader_converters.<locals>.<lambda>'  s    A"q& 266 r#   c                    | dk7  rdS dS )Nr1  r*  r+  r0   r3  s    r!   r4  z4TestReaders.test_reader_converters.<locals>.<lambda>(  s    AG  r#   c                     | rt        |       S dS )Nr1  )r7   r3  s    r!   r4  z4TestReaders.test_reader_converters.<locals>.<lambda>)  s    1Q " r#   )r  r  r   r   rm   r  )r   r  r   rn   rc   rd   re   rf   )rg   r    r!  rL   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r   r   r   r        @      @      @      @      ?       @      @r   r   r	  r
  float64float32)r   r   r	  r_   r   r   001002003004r7   r	  z(Unable to convert column d to type int64r   r
  int64)rc   rd   r   r   rn   re   rf   r7   astyper   r%   r   r   )rg   r    r!  r"  rL   r   s         r!   test_reader_dtypezTestReaders.test_reader_dtype3  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<  rA  rB  rC  rD  rE  rF  r_   rG  r7   r,  2r.  c                ~    d}t        j                  ||z   |      }t        |      }t        j                  ||       y )Nr:  r_   r   )rg   r    r`   rL   r!  r"  s         r!   test_reader_dtype_strz!TestReaders.test_reader_dtype_strP  s8    2 x(2%@X&
fh/r#   c                T   |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
      }|j                  |dd       t	        j                  |d|      }|dk(  rdd l	}ddl
m} t        |j                  D 	ci c]  }	|	 ||j                  ||	   d            ! c}	      }
|
d   j                  t	        j                  |j!                                     |
d<   |
d   j                  t	        j                  |j!                                     |
d<    ||
d   j                  j"                  j%                  |j'                  d !                  |
d<    ||j                  d d g            |
d"<   n)|}
t)        ||      }|
d   j                  d#| d$      |
d<   t+        j,                  ||
       y c c}	w )%NrZ   r[   r\   r   r   Int64r_   r=  r?  Float64TFr^   r   r   string   g      @z
2019-12-31r   )
r   r   r	  r
  r  r   ghijtestrq   rI   rq   dtype_backendpyarrowr   )ArrowExtensionArray)from_pandasr
  rX  rY  rF   )rM   rZ  r  r  )r%   ra   r   r   rc   NA	Timestamprb   rd   r_  pandas.arraysr`  r   arrayrM  
ArrowDtyperU  	_pa_arraycast	timestamprG   re   rf   )rg   r    r^  r   r:   rh   r   par`  rX   rL   rM   s               r!   test_dtype_backendzTestReaders.test_dtype_backendo  sD   ((KK3H:Q?@QF'2S#Ji8T5M;S#Jh7RUUAJg6RUUCL	:RUUDM;RUUCL9R\\,781<=RUUBEEN':
 	I&>&
 I% 9   "zz ,RXXbg4X-PQQH %SM00ryy{1KLHSM$SM00ryy{1KLHSM/##--222<<T<3JKHSM 0$0FGHSMH&1D$SM003tfA?HSM
fh/)s   ,$J%c                    |dv rt        j                  d| d       t        t        j                  dgdt        j                  gd      }|j                  |dd	       t        j                  |dd
d      }t        j                  ||       y )NrZ   r[   r\   rA  r=  r   r   r[  Fr\  numpy_nullablerE  )rq   r^  r`   )
r%   ra   r   r   rn   rb   rc   rd   re   rf   )rg   r    r:   rh   r   s        r!   test_dtype_backend_and_dtypez(TestReaders.test_dtype_backend_and_dtype  s~    ((KK3H:Q?@bffc]#rvv?@
I&>*	
 	fb)r#   c           	        |dv rt        j                  d| d       t        t        j                  ddgt        j
                        t        j                  dt        j                  gt        j
                        d      }|j                  |d	d
       t        j                  d|      5  t        j                  |d	d      }d d d        t        t        ddgt        j                  |            t        dd gt        j                  |            d      }t        j                  |d
       y # 1 sw Y   pxY w)NrZ   r[   r\   r   r   r_   r   rm  r[  Fr\  zmode.string_storagern  r]  )check_column_type)r%   ra   r   r   re  object_rc   rb  rb   option_contextrd   r   StringDtypere   rf   )rg   r    string_storager:   rh   r   rL   s          r!   test_dtype_backend_stringz%TestReaders.test_dtype_backend_string  s   ((KK3H:Q?@XXsCj

;XXsBEEl"**=
 	I&>4nE 	]]f<LF	
 S#Jbnn^.LMS$Kr~~n/MN
 	fh%H	 	s   .D66D?zdtypes, exp_valuer   a.1rL  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_   r   )r   rw  zdtype dict changed)objectr  rc   rd   r   r   re   rf   )	rg   r    dtypes	exp_valuer!  
dtype_dictdtype_dict_copyr   rL   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   )rg   r    r!  r"  rL   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%   ra   rc   rd   re   rf   )rg   r   r    r!  rL   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)rc   rd   re   assert_contains_allkeyslistrg   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   )rc   rd   r  setre   r  r  r   )rg   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   )rm   r   r   )rc   rd   re   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blankrm   r   )rc   rd   re   rf   r   )rg   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  rm   r   )r   rc   rd   re   rf   )rg   r    rL   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  r   )headerrq   r   c                    ddz  S )Nr   r   r0   r3  s    r!   r4  zHTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>3  s
    A r#   )r   rq   )r%   r   r   rc   rd   ZeroDivisionErrorrg   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 openpyxlrP   )r   r   z)Defaults to openpyxl, maybe not supportedtestdateoverflow)rU   r   rc   rc  rR   r%   rS   rT   rd   re   rf   )rg   r,   r   r    rL   r   s         r!   test_date_conversion_overflowz)TestReaders.test_date_conversion_overflow5  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 Nr   rm   r   r   )r@   rq   r   )
rg   r,   r    r   rD   filenamerq   rL   r   ri   s
             r!   test_sheet_namezTestReaders.test_sheet_nameQ  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)Nr   rm   r   r   r   )rc   rd   r   re   rf   )rg   r    pthrL   r   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)Nr   zUnknown engine: foor   r1  r|   r   )rg   
bad_engines     r!   test_bad_engine_raisesz"TestReaders.test_bad_engine_raisesi  s9    
]]:-BC 	1MM"Z0	1 	1 	1s	   ?Arq   r   r   r   rm   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   )rg   r    rq   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)Nr   |)z(No such file or directoryu   没有那个文件或目录zFile o directory non esistente)r   )joinr%   r   FileNotFoundErrorrc   rd   )rg   r    bad_filer   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 filer   )r   r   r  r   r  r
   r%   r   rc   rd   r   )rg   r   
bad_streamerrorr   r  r  s          r!   test_corrupt_bytes_raisesz%TestReaders.test_corrupt_bytes_raises  s    
>E.  v&EX  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)Nr   r   )content)r   serve_contentreadrc   rd   urlre   rf   )rg   
httpserverr    r   	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)Nr   r   KeyBodys3:///test1)storage_options)r   
put_objectrJ   rc   rd   re   rf   )rg   r    s3_bucket_publics3sor   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)Nr   r   r  r   r  r  r0   )	r   r  s3fsS3FileSystemrJ   rc   rd   re   rf   )	rg   r    r  r  r   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)Nr<   r=   rl   r   zfile://localhost/ zfailing on )ospathr  rc   rd   r	   platformunamestripr%   ra   re   rf   )rg   r    rB   
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   )rc   rd   r   re   rf   )rg   r    str_pathrL   path_objr"  s         r!   test_read_from_pathlib_pathz'TestReaders.test_read_from_pathlib_path  sO    X%==h!L(*+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)Nr   r   rm   r   r   )r  r  r  r   rc   rd   r  )rg   r    r  r   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)rP   Timer   r   r   -   8   i r     1   i@ rV     *   i    9   #   i 	   )      i           i'	 r  i`
 5   i 5    %   r   i       6   
times_1900rm   r   
times_1904)rU   rR   r%   rS   rT   r   r  r   rc   rd   re   rf   )rg   r,   r   r    rL   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           
         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        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 )*Nr   barr   r   testmultiindexr   r=  
2015-01-01Tr   r>  
2015-01-02Fr   r?  
2015-01-03r  r@  
2015-01-04r   r  r  	mi_columnr   )rq   r  r@   rD  mi_indexr   bothrq   r@   r  ilvl1ilvl2mi_index_namec1c2mi_column_name)levelname_with_int	both_nameboth_name_skiprows)rq   r@   r  r   )rU   rG   r   from_productr   rc   rc  rM  rd   re   rf   rI   r   	set_namesr   
set_levels)	rg   r,   r   r    rM   mimi_filerL   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/ q<<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  r   r
  r   r   r  r  r   r   r=  r  Tr   r>  r  Fr   r?  r  r  r@  r  )r   r   r
  r
  r  r  r   r  r  r   r  )rU   r   r  rG   r   rc   rc  from_arraysrM  rd   re   rf   )rg   r,   r   r    rq   idx_lvl2r"  r!  rM   rL   r   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   r   rq   r  r   r   keyvalr;  r   r   )rc   rd   r   r  r   re   rf   )rg   r    r"  r   exp_columnsrL   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   r   r   r   r  r  r   r   rI   r   single_namesr   r   multi_namesr   )rU  rV  rW  rX  rY  )r[  r\  r]  r^  r_  )r   r   r   r   r  single_no_namesmulti_no_names)r   re  rn   rz  r   r   r   rc   rd   re   rf   rI   )	rg   r    r  r=   r   r!  sirL   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   r   r  r   )rg   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   rq   r   r   r=  r  Tr>  r  Fr   r?  r  r  r@  r  rD  r   r	  r  r  c                
    | dv S N)r   r   r0   r3  s    r!   r4  z6TestReaders.test_read_excel_skiprows.<locals>.<lambda>   s
    qF{ r#   )rq   r   r   )rU   rG   rc   rd   r   rc  rM  re   rf   r   re  rg   r,   r   r    rM   r"  rL   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 )Nrl  rm  c                
    | dvS )N)r   r   r  r0   r3  s    r!   r4  zFTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>  s    q	1 r#   rn  r   r=  r  Tr   r?  r  FrD  r   r	  r  r  )	rU   rG   rc   rd   r   rc  rM  re   rf   rq  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  r   nrows)rc   rd   re   rf   )rg   r    num_rows_to_pullr"  rL   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 )Nr   r  rw  )rc   rd   r   re   rf   )rg   r    rL   num_records_in_filery  r"  s         r!   0test_read_excel_nrows_greater_than_nrows_in_filez<TestReaders.test_read_excel_nrows_greater_than_nrows_in_file4  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   r   r/  rw  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  rl  rm  c                
    | dv S rp  r0   r3  s    r!   r4  zTestReaders.<lambda>J  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]).
        )rq   r  r@   r   Nr   )rq   r  r@   r   rx  )rc   rd   r  re   rf   )	rg   r    r  rq   r  r@   r   rL   r"  s	            r!   test_read_excel_nrows_paramsz(TestReaders.test_read_excel_nrows_paramsB  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   r   rm   r   r   r  s     r!   test_deprecated_kwargsz"TestReaders.test_deprecated_kwargsf  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/  r   r   r  )r   r   r'  )r   r   r`  r,  r   r   r  )r   from_tuplesr   rc   rd   re   rf   )rg   r    	file_namer=   idxrL   r   s          r!   "test_no_header_with_list_index_colz.TestReaders.test_no_header_with_list_index_colj  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      ?r   r   numbersr   )r   rn   r   rc   rd   re   rf   )rg   r    r  r=   rL   r   s         r!   test_one_col_noskip_blank_linez*TestReaders.test_one_col_noskip_blank_linew  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   r   r   r   r  r   mi_column_empty_rowsr   r-  )	r   r  r   rn   r   rc   rd   re   rf   )rg   r    r  r   r=   rL   r   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)rc   rd   shape)rg   r    r  r   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 worksheetsrP   z"Worksheet named 'Chart1' not foundr   
chartsheetChart1r   	r%   ra   rR   rS   rT   r   r   rc   rd   rg   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  rP   z0Worksheet index 1 is invalid, 1 worksheets foundr   r  r   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,r   )decimalr   )r   gAc̝ė@g	hAABCpoig2[j@)r   gHzG^@g{G@DEFuytgUq&?)r   g%Cq@g^@GHIrezg)@)IdNumber1Number2Text1Text2Number3r   r   r   s       r!   test_euro_decimal_formatz$TestReaders.test_euro_decimal_format  sJ    ~8#PQRF@C
 N
 	fh/r#   )Y__name__
__module____qualname__r%   rS   parametrizerj   rx   fixturer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r&  r8  rN  r   rn   r7   r   rQ  rk  ro  rv  r  r  r   r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  r  network
single_cpur  tdskip_if_not_us_localer  r  slowr  r  r  r  r#  r*  r3  rf  rj  rr  ru  rz  r}  r  r  r  r  r  r  r  r  r  r  r0   r#   r!   rW   rW      s$   [[U%84&4-$PQ' R'0( 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: [[ %-%sBFFC0	  icDI> 4IF <EJc2663 7uE		
.0/.010f*I8 [[0B7eW=Mq<Q2RS0 T0 0& [[Hzl#;<=L>:;	
0015:30
X [[ OP0 Q06-"41
 [[	
QFQFHx&:Xx<PQE	E$/4 [[[[6  6 [[6  6 [[6 6 [[6 60"0HR0h [[,rvvsC.EF(266(Q,7	
00@	0G0R>40l0,009 [[7{QFAt<z4!Q>v1v1vt</!QDA_dD1a&A_dD:OP	

0
02;00	0&HA0r#   rW   c            
         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        |      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)Nz+Expected file path name or file-like objectr   r   r   r|   )r%   r   r   r   rc   rd   r  )rg   r   r    r   r   s        r!   test_raises_bytes_inputz)TestExcelFileRead.test_raises_bytes_input  si    ;]]9C0 	7g($/ 71affhv67	7 	77 7	7 	7s"   A1&A%A1%A.	*A11A:Try   c                    t        t        j                  |      }|j                   |ddd             |j	                  t        d|       y)zH
        Change directory and set engine for ExcelFile objects.
        r|   r<   r=   rl   ru   N)r   rc   ru   r}   r~   r   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   r   r   r   )rc   ru   r   )rg   r    r   r   rl   r   rL   s          r!   r   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test4rm   Fapplerq   rr   rs   rb  r   rabbitrt   r   Ttest51.#QNANrn   )rc   ru   rd   r   r   rn   re   rf   )rg   r    rl   rw   rL   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  rm   Tr  r  Fr  r   rn   r  rt   r   )rc   ru   rd   r   rn   r   re   rf   )rg   r    r  r   rl   rw   rL   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)Nr   r   r   r   r   )r@   )r   r@   r   r  )r@   r  )	rU   rN   rc   ru   rd   re   rf   r   r  )
rg   r,   r   r    rD   rL   rl   r   ri   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  )rU   rN   rc   ru   r   re   rf   )rg   r,   r   r    rD   rL   r  rq   rl   	df1_parse	df2_parses              r!   r  z!TestExcelFileRead.test_sheet_name:  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
rq   r   r   r   rm   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   rc   ru   r   )rg   r    rq   r   rl   s        r!   r  z+TestExcelFileRead.test_bad_sheetname_raisesL  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)Nr   rm   r   rq   r@   r   r   r   )rc   rd   r   ru   re   rf   )rg   r   r    r  rL   r   r   r"  s           r!   r  z(TestExcelFileRead.test_excel_read_bufferW  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)Nr   r   rm   r   r  )r   rc   ru   rd   closed)rg   r   r    r   r   s        r!   test_reader_closes_filez)TestExcelFileRead.test_reader_closes_filea  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 ExcelFiler   r   r   r|   )rc   ru   r%   r   r   rd   )rg   r    r   xls       r!   test_conflicting_excel_enginesz0TestExcelFileRead.test_conflicting_excel_enginesi  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)Nr   r|   r   )rc   rd   r   r  r   re   rf   )rg   r   r    rL   r   r=   r"  s          r!   test_excel_read_binaryz(TestExcelFileRead.test_excel_read_binaryq  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)Nr   r   r|   )r   rc   rd   re   rf   )rg   r    r   r   r   rL   s         r!   %test_excel_read_binary_via_read_excelz7TestExcelFileRead.test_excel_read_binary_via_read_excel{  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.xlsxr   zexceeds maximumr   r   r   rh  )r   r%   r   r   rc   rd   )rg   r   r   s      r!   )test_read_excel_header_index_out_of_rangez;TestExcelFileRead.test_read_excel_header_index_out_of_range  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'  r   r   rL  )rI   r   r`   rm   r   r  )r   r   r  r   rc   rd   re   rf   )rg   r  r  colsrL   r   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   r   )r  r@   r   z
2020-02-29z
2020-03-01r  r  r_   r'  r`  )rU   rc   ru   rd   rG   DatetimeIndexr   r(  to_pydatetimer   re   rf   )rg   r,   r   r    r   rl   r"  rM   dtiexpected_column_indexrL   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 *r   zio.excelz.readerabc)r%   r   r   rc   rs  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  rP   r  rm   )r%   ra   rR   rS   rT   rc   ru   sheet_names)rg   r,   r   r    rl   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d       t        j                  d	      5  	 t        j                  ||
       d d d        y # |$ r Y w xY w# 1 sw Y   y xY w)NzInvalid test for engine=r   r   r   r  corruptzutf-8)encodingFr|   )r
   r%   ra   r   biffhr  r   r  r   
write_textre   assert_produces_warningrc   ru   )rg   r   r:   errorsr   r  s         r!   test_corrupt_files_closedz+TestExcelFileRead.test_corrupt_files_closed  s    >KK26(;<v $**"6"67Fz!5#%FY""9w"?''. 	Yv6	 	  	 	s*   B5
B**B2/B51B22B55B>N)r  r  r  r  r%   r  r   r   r  rS   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0   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    r7   returnbool)r    r7   r   
str | Noner  r7   )rL   r   r    r7   r   r  r  ro   )5
__future__r   r   r   	functoolsr   r<   r   r  pathlibr   r  r   urllib.errorr	   r4   zipfiler
   numpyr   r%   pandas.util._test_decoratorsutil_test_decoratorsr  pandasrc   r   r   r   r   r   pandas._testing_testingre   read_ext_paramsr&   
skip_if_noengine_paramsr"   r(   r  r7   r-   r   r    r:   rD   rG   rN   rU   rW   r  )engexts   00r!   <module>r     s   "   	   	 !     ) )   =
 FLLBMM&!
 FLLBMM*%
 FLLBMM&!
 FLLx!89FLLmbmmE23FLL=2==1B#CD18*  !" $S#. 	S!! 	  
  
    2
]0 ]0@)R RA+s    G1
