U
    `»{j¢ç  ã                	   @   s†  d dl m Z mZ d dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlZd dlZd dlm  mZ d dlZd dlmZmZmZmZ d dlmZ dd	d
ddgZejde d¡gd�ejde d¡ej d¡gd�ejde d¡gd�ejde d¡d�ejde d¡d�gZ e!e"dœdd„Z#dd„ Z$ej%dd„ e D ƒe!d�dd„ ƒZ&ej%dd„ ƒZ'ej%dd „ ƒZ(G d!d"„ d"ƒZ)G d#d$„ d$ƒZ*dS )%é    )ÚdatetimeÚtime)ÚpartialN©ÚPath)ÚURLError)Ú
BadZipFile)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesú.xlsú.xlsxú.xlsmú.xlsbú.odsÚxlrd©ÚmarksÚopenpyxlzignore:.*html argumentÚpyxlsbÚodf)Úread_extÚreturnc                 C   s†   | j d } | dkr|dkrdS | dkr2|dkr2dS |dkrF| dkrFdS | dkrZ|dkrZdS |dkrn| dkrndS | d	kr‚|dkr‚dS d
S )zm
    Filter out invalid (engine, ext) pairs instead of skipping, as that
    produces 500+ pytest.skips.
    r   r   r   Fr   r   r   r   r   T)Úvalues)Úenginer   © r   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/io/excel/test_readers.pyÚ_is_valid_engine_ext_pair6   s    
r   c                 C   s    | j |f }tj|| jd�}|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_paramr   r   r   Ú_transfer_marksK   s    r"   c                 C   s*   g | ]"}t D ]}t||ƒrt||ƒ‘qqS r   )Úread_ext_paramsr   r"   )Ú.0ZengÚextr   r   r   Ú
<listcomp>V   s
    
ýr&   )ÚparamsZidsc                 C   s   | j S )zS
    Fixture for Excel reader engine and read_ext, only including valid pairs.
    )r    )Úrequestr   r   r   Úengine_and_read_extU   s    r)   c                 C   s   | \}}|S ©Nr   ©r)   r   r   r   r   r   r   e   s    r   c                 C   s   | \}}|S r*   r   r+   r   r   r   r   k   s    r   c                   @   s†  e Zd Zejdd�dd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	ej
 ddddgdddgdddgdddgdddgdddgg¡dd„ ƒZej
 dddgddgg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zej
 d!d"d#g¡d$d%„ ƒZd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zej
 d6d"edd#dd7gd8d9d:d;gdd#dd7gd<d=ejd>gd?œƒfd@dAeed?œee dd#dd7gd@dB�e d8d9d:d;gdAdB�dCdDdEdFgdGdHejdIgd?œƒfg¡dJdK„ ƒZ!ej
 dLi dGfdMdNidfg¡dOdP„ ƒZ"dQdR„ Z#ej
 dSdTedUdVgiƒfdWedXgdY�fg¡dZd[„ ƒZ$d\d]„ Z%d^d_„ Z&d`da„ Z'dbdc„ Z(ddde„ Z)ej
 *df¡dgdh„ ƒZ+didj„ Z,dkdl„ Z-dmdn„ Z.ej
 dodddgddgdpdqdpgdpdqgg¡drds„ ƒZ/dtdu„ Z0dvdw„ Z1ej
j2e3j2dxddy�dzd{„ ƒƒZ4e5j6ej
j7d|d}„ ƒƒZ8ej
j7d~d„ ƒZ9ej
j:d€d�„ ƒZ;d‚dƒ„ Z<e5 =d„¡e5j>d…d†„ ƒƒZ?e5j>d‡dˆ„ ƒZ@d‰dŠ„ ZAd‹dŒ„ ZBej
 d�dŽejd�d�d�gfd‘ejgd7 fg¡d’d“„ ƒZCd”d•„ ZDd–d—„ ZEd˜d™„ ZFdšd›„ ZGdœd�„ ZHdždŸ„ ZId d¡„ ZJd¢d£„ ZKej
 d¤d¥d¦ddgdd"fd¥d§d"ddgd"fd¥d¨ddgddgd"fd¥d©ddgdd"fdªd«d"d"dd#gfdªd«d"d"d¬d­„ fg¡d®d¯„ ƒZLd°d±„ ZMd²d³„ ZNd´dµ„ ZOd¶d·„ ZPd¸d¹„ ZQdºd»„ ZRd¼d½„ ZSd¾d¿„ ZTdÀdÁ„ ZUd"S )ÂÚTestReadersT©Zautousec                 C   s2   t tj|d�}| |dddƒ¡ | td|¡ dS )zG
        Change directory and set engine for read_excel calls.
        ©r   ÚioÚdataÚexcelÚ
read_excelN)r   Úpdr2   ÚchdirÚsetattr©Úselfr   ÚdatapathÚmonkeypatchÚfuncr   r   r   Úcd_and_set_enginer   s    zTestReaders.cd_and_set_enginec           	   	   C   sz   dd„ }|  tjd|¡ ddddddœ}td	| d
ƒ�}t |¡}W 5 Q R X |d k	rZ|}n||dd …  }||ksvt‚d S )Nc                 _   s   | j S r*   r.   )r7   ÚargsÚkwargsr   r   r   Úparser}   s    z,TestReaders.test_engine_used.<locals>.parserÚparser   r   r   r   ©ÚxlsxZxlsmZxlsbÚxlsZodsÚtest1Úrbé   )r5   r3   Ú	ExcelFileÚopenr2   ÚAssertionError)	r7   r   r   r9   r>   Úexpected_defaultsÚfÚresultÚexpectedr   r   r   Útest_engine_used{   s    ûzTestReaders.test_engine_usedc              	   C   sl   d}t jt|d�� tjd| dddd� W 5 Q R X t jt|d��  tjd| dd	gddd
� W 5 Q R X d S )Nz Passing an integer for `usecols`©ÚmatchrC   ÚSheet1r   é   ©Ú
sheet_nameÚ	index_colÚusecolsÚSheet2rE   ©rS   ÚskiprowsrT   rU   ©r   ÚraisesÚ
ValueErrorr3   r2   ©r7   r   Úmsgr   r   r   Útest_usecols_int“   s        ÿûzTestReaders.test_usecols_intc                 C   sŽ   |dkr|j  tjjdd�¡ |jddgd�}tjd| dd	d	d
dgd�}tjd| ddgd	d	d
dgd�}tj	||dd� tj	||dd� d S )Nr   ú3Sheets containing datetimes not supported by pyxlsb©ÚreasonÚBÚC©ÚcolumnsrC   rP   r   é   rQ   rR   rV   rE   rW   F©Zcheck_names©
ÚnodeÚ
add_markerr   ÚmarkÚxfailÚreindexr3   r2   ÚtmÚassert_frame_equal)r7   r(   r   Údf_refÚdf1Údf2r   r   r   Útest_usecols_list¥   s,    ÿÿ   ÿû	zTestReaders.test_usecols_listc                 C   sD  |dkr|j  tjjdd�¡ |jdddgd�}tjd| d	d
dd�}tjd| ddgd
dd�}tj	||dd� tj	||dd� |jddgd�}tjd| d	d
dd�}tjd| ddgd
dd�}tj	||dd� tj	||dd� |jddgd�}tjd| d	d
dd�}tjd| ddgd
dd�}tj	||dd� tj	||dd� d S )Nr   r_   r`   ÚArb   rc   rd   rC   rP   r   zA:DrR   rV   rE   rW   Frg   zA,C,DzA,C:Drh   ©r7   r(   r   rp   rq   rr   Údf3r   r   r   Útest_usecols_str½   sl    ÿÿ   ÿû	   ÿû   ÿûzTestReaders.test_usecols_strrU   r   rE   rQ   c                 C   sT   |dkr|j  tjjdd�¡ |ddg }tjd| dd|d	�}tj||d
d� d S )Nr   r_   r`   rt   rc   rC   rP   r   rR   Frg   ©	ri   rj   r   rk   rl   r3   r2   rn   ro   )r7   r(   r   rU   rp   rL   rK   r   r   r   Ú.test_usecols_diff_positional_int_columns_orderò   s    ÿÿ   ÿz:TestReaders.test_usecols_diff_positional_int_columns_orderrb   ÚDc                 C   sB   |ddg }t t|ƒƒ|_tjd| d|d�}tj||dd� d S )Nrb   rz   rC   rP   ©rS   rU   Frg   )ÚrangeÚlenÚindexr3   r2   rn   ro   )r7   r   rU   rp   rL   rK   r   r   r   Ú.test_usecols_diff_positional_str_columns_order  s    z:TestReaders.test_usecols_diff_positional_str_columns_orderc                 C   sJ   |dkr|j  tjjdd�¡ |}tjd| ddd�}tj||dd	� d S )
Nr   r_   r`   rC   rP   r   ©rS   rT   Frg   rx   ©r7   r(   r   rp   rL   rK   r   r   r   Útest_read_excel_without_slicing  s    ÿÿz+TestReaders.test_read_excel_without_slicingc                 C   sT   |dkr|j  tjjdd�¡ |ddg }tjd| ddd	d
�}tj||dd� d S )Nr   r_   r`   rc   rz   rC   rP   r   zA,D:ErR   Frg   rx   r�   r   r   r   Útest_usecols_excel_range_str  s    ÿÿ   ÿz(TestReaders.test_usecols_excel_range_strc              	   C   s6   d}t jt|d�� tjd| ddd� W 5 Q R X d S )NzInvalid column name: E1rN   rC   rP   zD:E1r{   rY   r\   r   r   r   Ú$test_usecols_excel_range_str_invalid'  s    z0TestReaders.test_usecols_excel_range_str_invalidc              	   C   s>   d}t jt|d��" tjd| ddgddgd� W 5 Q R X d S )Nz(list indices must be integers.*, not strrN   rC   rP   rt   rc   rR   ©r   rZ   Ú	TypeErrorr3   r2   r\   r   r   r   Útest_index_col_label_error-  s    üz&TestReaders.test_index_col_label_errorc                 C   sX   t jd| ddddgd�}tddd	gtg gd
 g gd
 dddgd�d�}t ||¡ d S )NrC   ÚSheet3rt   rb   rc   r€   rz   ÚEÚFrQ   ©ZlevelsÚcodesÚnames©re   r~   )r3   r2   r	   r   rn   ro   ©r7   r   rK   rL   r   r   r   Útest_index_col_empty8  s      ÿþz TestReaders.test_index_col_emptyrT   Nrf   c                 C   sZ   t jd| d|d�}tdddgddd	ggd
ddgd�}|rJ| |j| ¡}t ||¡ d S )NrC   ÚSheet4r€   Úi1ÚaÚxÚi2ÚbÚyz
Unnamed: 0Zcol1Zcol2rd   )r3   r2   r	   Ú	set_indexre   rn   ro   )r7   r   rT   rK   rL   r   r   r   Útest_index_col_with_unnamedC  s      ÿ ÿz'TestReaders.test_index_col_with_unnamedc              	   C   s6   d}t jt|d�� tjd| dgd� W 5 Q R X d S )NzEUsecols do not match columns, columns expected but not found: \['E'\]rN   rC   r‰   ©rU   rY   r\   r   r   r   Ú%test_usecols_pass_non_existent_columnQ  s    ÿz1TestReaders.test_usecols_pass_non_existent_columnc              	   C   s8   d}t jt|d�� tjd| ddgd� W 5 Q R X d S )Nz['usecols' must either be list-like of all strings, all unicode, all integers or a callable.rN   rC   ZE1r   rš   rY   r\   r   r   r   Útest_usecols_wrong_typeZ  s    ÿz#TestReaders.test_usecols_wrong_typec                 C   s8   t jd| dd�}tddggddgd�}t ||¡ d S )	NZtest2rP   ©rS   ZaaaaZbbbbbÚTestZTest1rd   ©r3   r2   r	   rn   ro   )r7   r   ÚparsedrL   r   r   r   Útest_excel_stop_iteratorc  s    z$TestReaders.test_excel_stop_iteratorc                 C   sT   |dkr|j  tjjdd�¡ tjd| dd�}ttj	ggdgd�}t
 ||¡ d S )	Nr   r_   r`   Ztest3rP   r�   rž   rd   )ri   rj   r   rk   rl   r3   r2   r	   ÚnpÚnanrn   ro   )r7   r(   r   r    rL   r   r   r   Útest_excel_cell_error_nai  s    ÿÿz$TestReaders.test_excel_cell_error_nac                 C   sš   |dkr|j  tjjdd�¡ tjd| ddd�}tjd| dd	gdd
�}tj||dd� tj||dd� tjd| ddd	d�}t ||j	d d… ¡ d S )Nr   r_   r`   rC   rP   r   r€   rV   rE   ©rS   rX   rT   Frg   ©rS   rT   Ú
skipfooteréÿÿÿÿ)
ri   rj   r   rk   rl   r3   r2   rn   ro   Úilocru   r   r   r   Útest_excel_tableu  s,    ÿÿ   ÿ   ÿzTestReaders.test_excel_tablec                 C   sü  |dkr|j  tjjdd�¡ t dddddgd	d
dddgdddddgdddddgdddddgtdddƒtdddƒtdddƒtdddƒtdddƒgdœ¡}d}tj	|| d d!�}t
 ||¡ | ¡ }|d"  t¡|d"< d#|j|jd d$f< t
jtd%dd&�� tj	|| d dd'�}W 5 Q R X t
 ||¡ t|jƒD ]4\}}tj	|| d |d(�}| |¡}	t
 ||	¡ �q0|d)  t¡|d)< tj	|| d d)tid*�}t
 ||¡ | ¡ }
|
d)  t¡|
d)< t
jtd%dd&��  tj	|| d dd)tid+�}W 5 Q R X t
 ||
¡ d S ),Nr   r_   r`   rE   rf   éýÿÿÿé   r   g      ô?g      @gHáz®Gý?g¸…ëQ¸þ?g•Ö&è.>TFrQ   é   r“   ÚcÚdÚeiÝ  é
   é   é   iq  é   é   iß  )ÚIntColÚFloatColÚBoolColÚStrColÚStr2ColZDateColZ
test_typesrP   r�   r¶   g      @rº   zconvert_float is deprecated)rO   Úraise_on_extra_warnings)rS   Úconvert_floatr€   r¹   ©rS   Ú
converters)rS   r¼   r¾   )ri   rj   r   rk   rl   r	   Ú	from_dictr   r3   r2   rn   ro   ÚcopyÚastypeÚfloatÚlocr~   Úassert_produces_warningÚFutureWarningÚ	enumeratere   r˜   ÚapplyÚstr)r7   r(   r   rL   ÚbasenameÚactualZfloat_expectedZicolÚnameÚexpZno_convert_floatr   r   r   Útest_reader_special_dtypesŠ  s„    ÿÿ




ûùÿý  ÿ  ÿ
  ÿýüz&TestReaders.test_reader_special_dtypesc              
   C   s†   d}t  dddddgdtjdd	d
gdddddgdtjdddgdœ¡}dd„ dd„ dd„ dd„ dœ}tj|| d|d�}t ||¡ d S )NZtest_convertersrE   rf   r«   éüÿÿr   g      )@gÍÌÌÌÌL2@g3333333@g:Œ0âŽy5>ÚFoundú	Not foundÚ1Ú3Ú4Ú5)r¶   r·   r¸   r¹   c                 S   s   | dkrt | ƒS dS )NÚ rÎ   )Úint©r”   r   r   r   Ú<lambda>ê  ó    z4TestReaders.test_reader_converters.<locals>.<lambda>c                 S   s   | rd|  S t jS )Nr±   )r¢   r£   r×   r   r   r   rØ   ë  rÙ   c                 S   s   | dkrdS dS )NrÕ   rÏ   rÐ   r   r×   r   r   r   rØ   ì  rÙ   c                 S   s   | rt | ƒS dS )NrÕ   )rÈ   r×   r   r   r   rØ   í  rÙ   )r¶   r·   rf   rQ   rP   r½   )r	   r¿   r¢   r£   r3   r2   rn   ro   )r7   r   rÉ   rL   r¾   rÊ   r   r   r   Útest_reader_convertersÜ  s&    üÿ
ü	  ÿz"TestReaders.test_reader_convertersc              	   C   sô   d}t  || ¡}tddddgdddd	gddddgd
dtjdgdœƒjddddgd�}t ||¡ t j|| ddtdœd�}|d  	d¡|d< |d  	d¡|d< ddddg|d< t ||¡ d}t
jt|d�� t j|| ddid� W 5 Q R X d S )NÚ	testdtyperE   rf   rQ   r¬   ç      @ç      @ç      @ç      @ç      ð?ç       @ç      @©r“   r–   r®   r¯   r“   r–   r®   r¯   rd   Úfloat64Úfloat32)r“   r–   r®   ©ÚdtypeÚ001Ú002Ú003Ú004z(Unable to convert column d to type int64rN   Úint64)r3   r2   r	   r¢   r£   rm   rn   ro   rÈ   rÁ   r   rZ   r[   )r7   r   rÉ   rÊ   rL   r]   r   r   r   Útest_reader_dtype÷  s.    


üÿ
ù	 
ÿzTestReaders.test_reader_dtypezdtype,expectedr¬   rÜ   rÝ   rÞ   rß   rà   rá   râ   rã   rä   rå   ræ   rè   ré   rê   rë   rÑ   Ú2rÓ   c                 C   s&   d}t j|| |d�}t ||¡ d S )NrÛ   ræ   ©r3   r2   rn   ro   )r7   r   rç   rL   rÉ   rÊ   r   r   r   Útest_reader_dtype_str  s    z!TestReaders.test_reader_dtype_strzdtypes, exp_valueúa.1rì   c           	      C   s\   d}dt i|–}| ¡ }tj|| |d�}tdg|gdœƒ}||ksLtdƒ‚t ||¡ d S )NZdf_mangle_dup_col_dtypesr“   ræ   rÑ   )r“   rñ   zdtype dict changed)rÈ   rÀ   r3   r2   r	   rH   rn   ro   )	r7   r   ZdtypesZ	exp_valuerÉ   Z
dtype_dictZdtype_dict_copyrK   rL   r   r   r   Útest_dtype_mangle_dup_cols6  s    z&TestReaders.test_dtype_mangle_dup_colsc                 C   s8   d}t  || ¡}tddddddgiƒ}t ||¡ d S )NZtest_spacesZtestcolzthis is greatz4    spacesz1 trailing z
 1 leadingz2  spaces  multiple  timesrŸ   )r7   r   rÉ   rÊ   rL   r   r   r   Útest_reader_spacesB  s    ûÿÿzTestReaders.test_reader_spaceszbasename,expectedzgh-35802ZCOLUMNzTest (1)zgh-36122z
got 2nd sard   c                 C   s6   |dkrt  d|› �¡ t || ¡}t ||¡ d S )Nr   zSkipped for engine: )r   Úskipr3   r2   rn   ro   )r7   r   r   rÉ   rL   rÊ   r   r   r   Útest_read_excel_ods_nested_xmlU  s    	z*TestReaders.test_read_excel_ods_nested_xmlc                 C   sH   d}t j|| d d�}dddg}t || ¡ ¡ |t| ¡ ƒksDt‚d S )NÚtest_multisheetr�   ÚCharlieÚAlphaÚBeta)r3   r2   rn   Úassert_contains_allÚkeysÚlistrH   ©r7   r   rÉ   ÚdfsÚexpected_keysr   r   r   Útest_reading_all_sheetsd  s
    
z#TestReaders.test_reading_all_sheetsc                 C   sX   d}dddg}t j|| |d�}tt|ƒƒ}t || ¡ ¡ t|ƒt| ¡ ƒksTt‚d S )Nrö   rf   r÷   r�   )	r3   r2   rü   Úsetrn   rú   rû   r}   rH   )r7   r   rÉ   rÿ   rþ   r   r   r   Ú%test_reading_multiple_specific_sheetsq  s    
z1TestReaders.test_reading_multiple_specific_sheetsc                 C   s4   d}t j|| d d�}dddg}t || ¡ ¡ d S )NÚblank_with_headerr�   rP   rV   rˆ   )r3   r2   rn   rú   rû   rý   r   r   r   Ú"test_reading_all_sheets_with_blank  s    
z.TestReaders.test_reading_all_sheets_with_blankc                 C   s$   t jd| dd�}t |tƒ ¡ d S )NÚblankrP   r�   )r3   r2   rn   ro   r	   )r7   r   rÊ   r   r   r   Útest_read_excel_blank‰  s    z!TestReaders.test_read_excel_blankc                 C   s0   t ddgd�}tjd| dd�}t ||¡ d S )NZcol_1Zcol_2rd   r  rP   r�   )r	   r3   r2   rn   ro   )r7   r   rL   rÊ   r   r   r   Ú!test_read_excel_blank_with_header�  s    z-TestReaders.test_read_excel_blank_with_headerz-ignore:Cell A4 is marked:UserWarning:openpyxlc                 C   s®   |dkr|j  tjjdd�¡ tt d¡dgt d¡dgdd	ggd
dgd�}|dkrj|j  tjjdd�¡ |d kr�|dkr�|j  tjjdd�¡ t d| ¡}t	 
||¡ d S )Nr   r_   r`   z
2016-03-12zMarc Johnsonz
2016-03-16z
Jack Blackg@Œµx¯DzTimothy BrownZDateColWithBigIntZ	StringColrd   r   zMaybe not supported by openpyxl)r   r   z)Defaults to openpyxl, maybe not supportedZtestdateoverflow)ri   rj   r   rk   rl   r	   r3   Ú	Timestampr2   rn   ro   )r7   r(   r   r   rL   rK   r   r   r   Útest_date_conversion_overflow’  s.    ÿÿýú	ÿÿz)TestReaders.test_date_conversion_overflowc                 C   sr   |dkr|j  tjjdd�¡ d}d}tj|| |dd�}tj|| d|d�}tj||d	d
� tj||d	d
� d S ©Nr   r_   r`   rC   rP   r   r€   )rT   rS   Frg   rx   )r7   r(   r   rp   ÚfilenamerS   rq   rr   r   r   r   Útest_sheet_name³  s     ÿÿ  ÿzTestReaders.test_sheet_namec              	   C   sN   d| }t j|ddd�}t|dƒ�"}t j|ddd�}t ||¡ W 5 Q R X d S )NrC   rP   r   r€   rD   )r3   r2   rG   rn   ro   )r7   r   ÚpthrL   rJ   rÊ   r   r   r   Útest_excel_read_bufferÅ  s
    z"TestReaders.test_excel_read_bufferc              	   C   s0   d}t jtdd�� tjd|d� W 5 Q R X d S )NÚfoozUnknown engine: foorN   rÕ   r.   rY   )r7   Z
bad_enginer   r   r   Útest_bad_engine_raisesÍ  s    z"TestReaders.test_bad_engine_raisesrS   r‘   rP   c              	   C   s4   d}t jt|d�� tjd| |d� W 5 Q R X d S ©Nz?Worksheet index 3 is invalid|Worksheet named 'Sheet4' not foundrN   r  r�   rY   )r7   r   rS   r]   r   r   r   Útest_bad_sheetname_raisesÒ  s    z%TestReaders.test_bad_sheetname_raisesc              	   C   s6   d|› �}d}t jt|d�� t |¡ W 5 Q R X d S )Nr  uV   (No such file or directory|æ²¡æœ‰é‚£ä¸ªæ–‡ä»¶æˆ–ç›®å½•|File o directory non esistente)rN   )r   rZ   ÚFileNotFoundErrorr3   r2   )r7   r   Zbad_filerO   r   r   r   Útest_missing_file_raisesÜ  s    
z$TestReaders.test_missing_file_raisesc              	   C   sd   d}|d krt }d}n&|dkr4ddlm} |}d}nt}d}tj||d�� t |¡ W 5 Q R X d S )	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'zFile is not a zip filerN   )r[   r   r  r   r   rZ   r3   r2   )r7   r   Z
bad_streamÚerrorr]   r  r   r   r   Útest_corrupt_bytes_raisesã  s    ÿÿz%TestReaders.test_corrupt_bytes_raisesz^https://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/excel/test1.xlsx)ÚurlZcheck_before_testc                 C   s0   d| }t  |¡}t  d| ¡}t ||¡ d S )NzYhttps://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/excel/test1rC   rï   )r7   r   r  Ú	url_tableÚlocal_tabler   r   r   Útest_read_from_http_urlù  s    
ÿÿ
z#TestReaders.test_read_from_http_urlc              	   C   sf   t d| dƒ�}| d¡jd| |d� W 5 Q R X d| }tj||d�}t d| ¡}t ||¡ d S )NrC   rD   úpandas-test©ÚKeyZBodyús3://pandas-test/test1)Zstorage_options)rG   ÚBucketÚ
put_objectr3   r2   rn   ro   )r7   r   Ús3_resourceÚs3sorJ   r  r  r  r   r   r   Útest_read_from_s3_url
  s    "z!TestReaders.test_read_from_s3_urlc           	   	   C   sˆ   t d| dƒ�}| d¡jd| |d� W 5 Q R X dd l}|jf |Ž}|  d| ¡�}t |¡}W 5 Q R X t d| ¡}t ||¡ d S )NrC   rD   r  r  r   r  )	rG   r   r!  Ús3fsZS3FileSystemr3   r2   rn   ro   )	r7   r   r"  r#  rJ   r%  Zs3r  r  r   r   r   Útest_read_from_s3_object  s    "z$TestReaders.test_read_from_s3_objectc                 C   s†   t j |dddƒd| ¡}t |¡}zt d| ¡}W n> tk
rt   dd l}d | ¡ ¡ ¡ }t	 
d|› �¡ Y nX t ||¡ d S )	Nr/   r0   r1   rC   zfile://localhost/r   ú zfailing on )ÚosÚpathÚjoinr3   r2   r   ÚplatformÚunameÚstripr   rô   rn   ro   )r7   r   r8   Z
localtabler  r  r+  Zplatform_infor   r   r   Útest_read_from_file_url(  s    
z#TestReaders.test_read_from_file_urlc                 C   sP   ddl m} d| }tj|ddd�}|d| ƒ}tj|ddd�}t ||¡ d S )Nr   r   rC   rP   r€   )Úpathlibr   r3   r2   rn   ro   )r7   r   r   Ústr_pathrL   Úpath_objrÊ   r   r   r   Útest_read_from_pathlib_path:  s    z'TestReaders.test_read_from_pathlib_pathzpy.pathc                 C   s\   ddl m} tj d| ¡}tj|ddd�}|ƒ  d| ¡}tj|ddd�}t ||¡ d S )Nr   )ÚlocalrC   rP   r€   )	Zpy.pathr3  r(  r)  r*  r3   r2   rn   ro   )r7   r   Z	LocalPathr0  rL   r1  rÊ   r   r   r   Útest_read_from_py_localpathG  s    z'TestReaders.test_read_from_py_localpathc              	   C   sD   t j d| ¡}t|dƒ� }tj|ddd�}~| ¡  W 5 Q R X d S )NrC   rD   rP   r   r€   )r(  r)  r*  rG   r3   r2   Úread)r7   r   r0  rJ   r”   r   r   r   Útest_close_from_py_localpathV  s
    z(TestReaders.test_close_from_py_localpathc                 C   sì   |dkr|j  tjjdd�¡ t 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*| d+d,�}t
 ||¡ tj	d-| d+d,�}t
 ||¡ d S ).Nr   r_   r`   ZTimerE   rf   rQ   é-   é8   i † r¬   é   é1   i@ é   é   é*   ià“ é   é9   é#   i€ é	   é)   é   i ¡ é   é   é   iÀ'	 rµ   i`®
 é5   i 5 é   é%   r   i » é   é   é6   Z
times_1900rP   r�   Z
times_1904)ri   rj   r   rk   rl   r	   r¿   r   r3   r2   rn   ro   )r7   r(   r   r   rL   rÊ   r   r   r   Útest_reader_secondsa  s4    ÿÿ

õÿÿzTestReaders.test_reader_secondsc              	   C   sB  |dkr|j  tjjdd�¡ t ddgddgg¡}d| }td	d
t 	d¡dgddt 	d¡dgddt 	d¡dgddt 	d¡dgg|d�}tj
|ddd	gdd�}t ||¡ ||_ddddg|_tj
|ddd	gd�}tj||dd� ||_tj
|d dd	gdd	gd!�}tj||dd� ddddg|_| d"d#g¡|_tj
|d$dd	gd�}t ||¡ ttdƒƒ|_| d%d&g¡|_tj
|d'dd	gdd�}t ||¡ |jd	dgd	d(� d%d&g¡|_tj
|d)ddd	gd!�}t ||¡ | d%d&g¡|_| d"d#g¡|_tj
|d*dd	gdd	gd!�}t ||¡ tj
|d+dd	gdd	gdd,�}t ||¡ d S )-Nr   r_   r`   r  Úbarr“   r–   ÚtestmultiindexrE   rÜ   ú
2015-01-01Trf   rÝ   ú
2015-01-02FrQ   rÞ   ú
2015-01-03r¬   rß   ú
2015-01-04rd   Ú	mi_columnr   )rS   ÚheaderrT   r®   r¯   Úmi_indexr€   rg   Úboth©rS   rT   rU  Úilvl1Úilvl2Zmi_index_nameÚc1Úc2Úmi_column_name)ÚlevelZname_with_intZ	both_nameZboth_name_skiprows)rS   rT   rU  rX   )ri   rj   r   rk   rl   r   Úfrom_productr	   r3   r  r2   rn   ro   r~   re   Z	set_namesrü   r|   Z
set_levels)r7   r(   r   ÚmiÚmi_filerL   rÊ   r   r   r   Útest_read_excel_multiindex‚  s’    ÿÿüù
   ÿ   ÿ   ÿ   ÿ   ÿûz&TestReaders.test_read_excel_multiindexzsheet_name,idx_lvl2Zboth_name_blank_after_mi_namer–   r“   Zboth_name_multiple_blanksc           	   	   C   sÖ   |dkr|j  tjjdd�¡ d| }tjddgddggd	d
gd�}tddt 	d¡dgddt 	d¡dgddt 	d¡dgddt 	d¡dgg|tj
ddddg|fddgd�d�}tj||ddgddgd�}t ||¡ d S )Nr   z;Sheets containing datetimes not supported by pyxlsb (GH4679r`   rO  r  rN  r“   r–   r[  r\  ©r�   rE   rÜ   rP  Trf   rÝ   rQ  FrQ   rÞ   rR  r¬   rß   rS  rY  rZ  rŽ   r   rX  )ri   rj   r   rk   rl   r   r_  r	   r3   r  Zfrom_arraysr2   rn   ro   )	r7   r(   r   rS   Zidx_lvl2ra  r`  rL   rK   r   r   r   Ú+test_read_excel_multiindex_blank_after_nameØ  s6    ÿÿüþøüz7TestReaders.test_read_excel_multiindex_blank_after_namec                 C   sT   d| }t j|dddgd�}t ddg¡}tddd	d
ggd |d�}t ||¡ d S )NrO  Úindex_col_noner   rE   ©rS   rU  ©rt   rb   ©ÚkeyÚvalrf   rQ   r¬   rd   )r3   r2   r   r_  r	   rn   ro   )r7   r   ra  rK   Zexp_columnsrL   r   r   r   Ú&test_read_excel_multiindex_header_only  s
    z2TestReaders.test_read_excel_multiindex_header_onlyc           	      C   s  d| }t  d d d d d gdddddgddd	d
dgdddddgdddddgdddddgg¡}dddddg}td d!d"d#d$d%gd&d'd(d)d*d+ggd,d-d.d/d0d1gd,d-d.d/d0d1ggd d gd2�}td d!d"d#d$d%gd d3�}t|||d4�}tj|d5d,d6�}t ||¡ ||_	tj|d7d,d-gd6�}t ||¡ t  dddddgddd	d
dgdddddgdddddgdddddgg¡}dddddg}td!d"d#d$d%gd'd(d)d*d+ggd,d-d.d/d0gd,d-d.d/d0ggd d gd2�}td!d"d#d$d%gd d3�}t|||d4�}tj|d8d,d6�}t ||¡ ||_	tj|d9d,d-gd6�}tj||d:d;� d S )<NZtest_index_name_pre17ZR0C0ZR0C1ZR0C2ZR0C3ZR0C4ZR1C0ZR1C1ZR1C2ZR1C3ZR1C4ZR2C0ZR2C1ZR2C2ZR2C3ZR2C4ZR3C0ZR3C1ZR3C2ZR3C3ZR3C4ZR4C0ZR4C1ZR4C2ZR4C3ZR4C4ZC_l0_g0ZC_l0_g1ZC_l0_g2ZC_l0_g3ZC_l0_g4ZR0ZR_l0_g0ZR_l0_g1ZR_l0_g2ZR_l0_g3ZR_l0_g4ZR1ZR_l1_g0ZR_l1_g1ZR_l1_g2ZR_l1_g3ZR_l1_g4r   rE   rf   rQ   r¬   r­   r‹   ©rË   ©r~   re   Zsingle_namesr€   Zmulti_namesZsingle_no_namesZmulti_no_namesFrg   )
r¢   Úarrayr   r
   r	   r3   r2   rn   ro   r~   )	r7   r   r  r0   re   r`  ÚsirL   rÊ   r   r   r   Útest_excel_old_index_format  sf    úÿ
þú ÿûÿ	þúz'TestReaders.test_excel_old_index_formatc              
   C   s>   d}dD ]0}t jt|d�� tjd| |d� W 5 Q R X qd S )Nz#Passing a bool to header is invalid)TFrN   rC   ©rU  r…   )r7   r   r]   Úargr   r   r   Útest_read_excel_bool_header_argT  s    z+TestReaders.test_read_excel_bool_header_argc              	   C   sV  |dkr|j  tjjdd�¡ tjd| dddgd�}td	d
t d¡dgddt d¡dgddt d¡dgddt d¡dggddddgd�}t	 
||¡ tjd| dt ddg¡d�}t	 
||¡ tjd| ddd„ d�}t	 
||¡ tjd| ddddddgd�}tddt d¡dgddt d¡dgddt d¡dggddddgd�}t	 
||¡ d S )Nr   r_   r`   ÚtestskiprowsÚskiprows_listr   rf   ©rS   rX   rE   rÜ   rP  TrÝ   rQ  FrQ   rÞ   rR  r¬   rß   rS  r“   r–   r®   r¯   rd   c                 S   s   | dkS )N)r   rf   r   r×   r   r   r   rØ   }  rÙ   z6TestReaders.test_read_excel_skiprows.<locals>.<lambda>)rS   rX   r�   )ri   rj   r   rk   rl   r3   r2   r	   r  rn   ro   r¢   rn  ©r7   r(   r   rÊ   rL   r   r   r   Útest_read_excel_skiprows[  s\    ÿÿ  ÿü
ù	ýý
üü
ù	z$TestReaders.test_read_excel_skiprowsc                 C   sz   |dkr|j  tjjdd�¡ tjd| ddd„ d�}td	d
t d¡dgddt d¡dggddddgd�}t	 
||¡ d S )Nr   r_   r`   rt  ru  c                 S   s   | dkS )N)rE   rQ   r­   r   r×   r   r   r   rØ   ž  rÙ   zFTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>rv  rE   rÜ   rP  TrQ   rÞ   rR  Fr“   r–   r®   r¯   rd   )ri   rj   r   rk   rl   r3   r2   r	   r  rn   ro   rw  r   r   r   Ú(test_read_excel_skiprows_callable_not_in’  s$    ÿÿýý
ù	z4TestReaders.test_read_excel_skiprows_callable_not_inc                 C   s@   d}t jd| |d�}t  d| ¡}|d |… }t ||¡ d S )Nr­   rC   ©Únrowsrï   )r7   r   Únum_rows_to_pullrÊ   rL   r   r   r   Útest_read_excel_nrows«  s
    z!TestReaders.test_read_excel_nrowsc                 C   s@   t  d| ¡}t|ƒ}|d }t jd| |d�}t ||¡ d S )NrC   r±   rz  )r3   r2   r}   rn   ro   )r7   r   rL   Znum_records_in_filer|  rÊ   r   r   r   Ú0test_read_excel_nrows_greater_than_nrows_in_file³  s
    z<TestReaders.test_read_excel_nrows_greater_than_nrows_in_filec              	   C   s4   d}t jt|d�� tjd| dd� W 5 Q R X d S )Nz'nrows' must be an integer >=0rN   rC   rÔ   rz  rY   r\   r   r   r   Ú+test_read_excel_nrows_non_integer_parameter»  s    z7TestReaders.test_read_excel_nrows_non_integer_parameterz-filename,sheet_name,header,index_col,skiprowsrO  rT  rV  rW  r]  rt  ru  c                 C   s   | dkp| dkS )Nr   rf   r   r×   r   r   r   rØ   É  rÙ   zTestReaders.<lambda>c           	      C   sL   t j|| ||||d�jdd… }t j|| ||||dd�}t ||¡ dS )z—
        For various parameters, we should get the same result whether we
        limit the rows during load (nrows=3) or after (df.iloc[:3]).
        )rS   rU  rT   rX   NrQ   )rS   rU  rT   rX   r{  )r3   r2   r©   rn   ro   )	r7   r   r  rS   rU  rT   rX   rL   rÊ   r   r   r   Útest_read_excel_nrows_paramsÁ  s$    ûúúz(TestReaders.test_read_excel_nrows_paramsc              	   C   sÊ   d| }t jtdd��ª tj|dddd�}tdd	d
gd
ddgdd�}d|j_t  ||¡ tj|ddd�}t	d
ddgdd	d
gdœƒ}t  
||¡ tj|ddd�}tddd	gdd�}t  ||¡ W 5 Q R X d S )NZtest_squeezezˆThe squeeze argument has been deprecated and will be removed in a future version. Append .squeeze\("columns"\) to the call to squeeze.

rN   Ztwo_columnsr   T)rS   rT   Úsqueezerf   rQ   r¬   r­   r;  r–   rl  r“   )rS   r�  )r“   r–   Z
one_columnrE   )rn   rÄ   rÅ   r3   r2   r   r~   rË   Zassert_series_equalr	   ro   )r7   r   rJ   rÊ   rL   r   r   r   Útest_read_excel_squeezeå  s(    þ   ÿz#TestReaders.test_read_excel_squeezec              	   C   s>   t jtdd�� t d| dd¡ W 5 Q R X t d| ¡ d S )NF)r»   rC   rP   r   )rn   rÄ   rÅ   r3   r2   ©r7   r   r   r   r   Útest_deprecated_kwargsþ  s    z"TestReaders.test_deprecated_kwargsc                 C   s^   d| }ddddg}t jddddgdd�}t||d	d
�}tj|dddgd d�}t ||¡ d S )NrO  )rb   rb   rh  )rQ   r¬   )rt   rt   )rE   rf   )r   rE   rc  )rf   rQ   rm  re  r   rE   rX  )r   Úfrom_tuplesr	   r3   r2   rn   ro   )r7   r   Ú	file_namer0   ÚidxrL   rK   r   r   r   Ú"test_no_header_with_list_index_col  s    
 ÿ   ÿz.TestReaders.test_no_header_with_list_index_colc                 C   s>   d| }dt jddg}t|dgd�}t |¡}t ||¡ d S )NZone_col_blank_lineg      à?rE   rf   Únumbersrd   )r¢   r£   r	   r3   r2   rn   ro   )r7   r   r†  r0   rL   rK   r   r   r   Útest_one_col_noskip_blank_line  s
    
z*TestReaders.test_one_col_noskip_blank_linec                 C   sj   d| }t  ddg¡}tjtjgtjtjgddgddgg}t||d�}tj|d	d
dgd�}t ||¡ d S )NrO  )r“   rt   )r–   rb   rE   rQ   rf   r¬   rd   Zmi_column_empty_rowsr   rf  )	r   r…  r¢   r£   r	   r3   r2   rn   ro   )r7   r   r†  re   r0   rL   rK   r   r   r   Ú test_multiheader_two_blank_lines  s    $  ÿz,TestReaders.test_multiheader_two_blank_linesc                 C   s$   d| }t  |¡}|jdks t‚dS )z›
        Sheets can contain blank cells with no data. Some of our readers
        were including those cells, creating many empty rows and columns
        Ztrailing_blanks)rQ   rQ   N)r3   r2   ÚshaperH   )r7   r   r†  rK   r   r   r   Útest_trailing_blanks$  s    
z TestReaders.test_trailing_blanksc              	   C   s`   |dkrt  d¡ |dkr0|j t jjdd�¡ t jtdd�� tj	d| d	d
� W 5 Q R X d S )Nr   ú*chartsheets do not exist in the ODF formatr   ú4pyxlsb can't distinguish chartsheets from worksheetsr`   z"Worksheet named 'Chart1' not foundrN   Ú
chartsheetZChart1r�   ©
r   rô   ri   rj   rk   rl   rZ   r[   r3   r2   ©r7   r(   r   r   r   r   r   Útest_ignore_chartsheets_by_str-  s    
ÿÿz*TestReaders.test_ignore_chartsheets_by_strc              	   C   s`   |dkrt  d¡ |dkr0|j t jjdd�¡ t jtdd�� tj	d| d	d
� W 5 Q R X d S )Nr   rŽ  r   r�  r`   z0Worksheet index 1 is invalid, 1 worksheets foundrN   r�  rE   r�   r‘  r’  r   r   r   Útest_ignore_chartsheets_by_int:  s    
ÿÿ ÿz*TestReaders.test_ignore_chartsheets_by_intc              	   C   sf   t jd| ddd�}tdddddd	gd
dddddgddddddggddddddgd�}t ||¡ d S )NZtest_decimalú,rE   )ÚdecimalrX   gAñcÌ�Ä—@gÕ	h¢ïÖAÚABCZpoig2Ø[j‡ô@rf   gHáz®G^@g{®GáÍ@ZDEFZuytg¥Uq&Ø?rQ   g%�•Cq‹@gçû©ñÖ^ú@ZGHIZrezgÈ)¬ç³â@ZIdZNumber1ZNumber2ZText1ZText2ZNumber3rd   rŸ   r�   r   r   r   Útest_euro_decimal_formatI  s    ýúz$TestReaders.test_euro_decimal_format)VÚ__name__Ú
__module__Ú__qualname__r   Úfixturer;   rM   r^   rs   rw   rk   Úparametrizery   r   r‚   rƒ   r„   r‡   r�   r™   r›   rœ   r¡   r¤   rª   rÍ   rÚ   rí   r	   r¢   r£   rÈ   r   rð   rò   ró   rõ   r   r  r  r  r  Úfilterwarningsr	  r  r  r  r  r  r  Únetworkrn   r  ÚtdZskip_if_not_us_localeZ
single_cpur$  r&  Zslowr.  r2  Ú
skip_if_noZcheck_file_leaksr4  r6  rM  rb  rd  rk  rp  rs  rx  ry  r}  r~  r  r€  r‚  r„  rˆ  rŠ  r‹  r�  r“  r”  r˜  r   r   r   r   r,   q   s  

5 2ÿ


		R


üÿþ
üÿþôþ

þþ



 þ
û	



!Vþþ
"H7úþ
	r,   c                
   @   sø   e Zd Zejdd�dd„ ƒZdd„ Zdd„ Zej 	d	d
ddg¡dd„ ƒZ
dd„ Zdd„ Zej 	ddddgddgdddgddgg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zej 	d%d&d'g¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd
S )2ÚTestExcelFileReadTr-   c                 C   s2   t tj|d�}| |dddƒ¡ | td|¡ dS )zH
        Change directory and set engine for ExcelFile objects.
        r.   r/   r0   r1   rF   N)r   r3   rF   r4   r5   r6   r   r   r   r;   X  s    z#TestExcelFileRead.cd_and_set_enginec              	   C   s^   ddddddœ}t  d| ¡�}|j}W 5 Q R X |d k	r>|}n||dd …  }||ksZt‚d S )Nr   r   r   r   r@   rC   rE   )r3   rF   r   rH   )r7   r   r   rI   r1   rK   rL   r   r   r   rM   a  s    ûz"TestExcelFileRead.test_engine_usedc              	   C   s„  t  d| ¡�}t j|dddgd�}W 5 Q R X tdgdgdgtjgdggd	gd
�}t ||¡ t  d| ¡�}t j|dddgd�}W 5 Q R X ttjgdgtjgtjgdggd	gd
�}t ||¡ t  d| ¡�}t j|dddgd�}W 5 Q R X tdgdgdgtjgdggd	gd
�}t ||¡ t  d| ¡�}t j|dddgd�}W 5 Q R X ttjgdgtjgtjgdggd	gd
�}t ||¡ d S )NZtest4rP   FÚapple©rS   Zkeep_default_naZ	na_valuesZNArE   Úrabbitrž   rd   TÚtest5ú1.#QNANr£   )r3   rF   r2   r	   r¢   r£   rn   ro   )r7   r   r1   r    rL   r   r   r   Útest_excel_passes_nas  s`       ÿ ÿ   ÿ ÿ   ÿ ÿ   ÿ ÿz&TestExcelFileRead.test_excel_passes_naÚ	na_filterNFc              	   C   s¨   i }|d k	r||d< t  d| ¡�"}t j|fdddgdœ|—Ž}W 5 Q R X |dkrldgd	gd
gdgdgg}ntjgd	gtjgtjgdgg}t|dgd�}t ||¡ d S )Nr©  r¦  rP   Tr£  r¤  Fr§  rE   r£   r¥  rž   rd   )r3   rF   r2   r¢   r£   r	   rn   ro   )r7   r   r©  r=   r1   r    rL   r   r   r   Útest_excel_passes_na_filter™  s$    ÿüûz-TestExcelFileRead.test_excel_passes_na_filterc              	   C   s\  |dkr|j  tjjdd�¡ t d| ¡�*}tj|ddd�}tj|ddgdd�}W 5 Q R X tj	||d	d
� tj	||d	d
� t d| ¡�&}|j
ddd�}|j
ddgdd�}W 5 Q R X tj	||d	d
� tj	||d	d
� t d| ¡�}tj|dddd�}W 5 Q R X t 	||jd d… ¡ t d| ¡�}|j
dddd�}W 5 Q R X t 	||jd d… ¡ d S )Nr   r_   r`   rC   r   r€   rE   r¥   Frg   )rT   )rX   rT   r¦   r¨   )rT   r§   )ri   rj   r   rk   rl   r3   rF   r2   rn   ro   r?   r©   )r7   r(   r   rp   r1   rq   rr   rv   r   r   r   Útest_excel_table_sheet_by_index²  s,    ÿÿz1TestExcelFileRead.test_excel_table_sheet_by_indexc           	   	   C   sš   |dkr|j  tjjdd�¡ d}d}t || ¡�}|j|dd�}W 5 Q R X t || ¡�}|jd|d�}W 5 Q R X tj	||d	d
� tj	||d	d
� d S r
  )
ri   rj   r   rk   rl   r3   rF   r?   rn   ro   )	r7   r(   r   rp   r  rS   r1   Z	df1_parseZ	df2_parser   r   r   r  Ï  s    ÿÿz!TestExcelFileRead.test_sheet_namerS   rQ   r   r‘   rP   c              
   C   sH   d}t jt|d��, t d| ¡�}|j|d� W 5 Q R X W 5 Q R X d S r  )r   rZ   r[   r3   rF   r?   )r7   r   rS   r]   r1   r   r   r   r  ã  s    z+TestExcelFileRead.test_bad_sheetname_raisesc              
   C   sf   d| }t j|dd|d�}t|dƒ�,}t  |¡�}t j|ddd�}W 5 Q R X W 5 Q R X t ||¡ d S )NrC   rP   r   ©rS   rT   r   rD   r€   )r3   r2   rG   rF   rn   ro   )r7   r   r   r  rL   rJ   rB   rÊ   r   r   r   r  î  s    $z(TestExcelFileRead.test_excel_read_bufferc              
   C   sP   t d| dƒ�.}t |¡�}tj|dd|d� W 5 Q R X W 5 Q R X |jsLt‚d S )NrC   rD   rP   r   r¬  )rG   r3   rF   r2   ÚclosedrH   )r7   r   r   rJ   rA   r   r   r   Útest_reader_closes_fileø  s    &z)TestExcelFileRead.test_reader_closes_filec              
   C   sJ   d}t  d| ¡�.}tjt|d�� t j|dd� W 5 Q R X W 5 Q R X d S )Nz8Engine should not be specified when passing an ExcelFilerC   rN   r  r.   )r3   rF   r   rZ   r[   r2   )r7   r   r]   Zxlr   r   r   Útest_conflicting_excel_engines   s    z0TestExcelFileRead.test_conflicting_excel_enginesc              	   C   sR   t jd| |d�}td| dƒ�}| ¡ }W 5 Q R X t j||d�}t ||¡ d S )NrC   r.   rD   )r3   r2   rG   r5  rn   ro   )r7   r   r   rL   rJ   r0   rÊ   r   r   r   Útest_excel_read_binary  s
    z(TestExcelFileRead.test_excel_read_binaryc              	   C   sF   t d| dƒ�}t |¡}W 5 Q R X tjd| |d�}t ||¡ d S )NrC   rD   r.   )rG   r3   r2   rn   ro   )r7   r   r   rJ   rK   rL   r   r   r   Ú%test_excel_read_binary_via_read_excel  s    z7TestExcelFileRead.test_excel_read_binary_via_read_excelc              
   C   sF   t ddƒ�2}tjtdd�� tj|ddgd� W 5 Q R X W 5 Q R X d S )Nzdf_header_oob.xlsxrD   zexceeds maximumrN   r   rE   rq  )rG   r   rZ   r[   r3   r2   )r7   r   rJ   r   r   r   Ú)test_read_excel_header_index_out_of_range  s    z;TestExcelFileRead.test_read_excel_header_index_out_of_ranger  zdf_empty.xlsxzdf_equals.xlsxc                 C   s`   t dgdd�}tjddgddgd�}td	d
gg||dd�}tj|dddd	gd�}t ||¡ d S )NÚZZI2rl  rg  )rt   zB.1ZI11ZI12rc  rE   rQ   rì   )r~   re   rç   rP   r   rX  )r
   r   r…  r	   r3   r2   rn   ro   )r7   r  r‡  ÚcolsrL   rK   r   r   r   Útest_header_with_index_col  s       ÿz,TestExcelFileRead.test_header_with_index_colc           	   	   C   s¦   |dkr|j  tjjdd�¡ d| }t |¡�}tj|ddgd|d�}W 5 Q R X tj	t 
d¡t 
d	¡fgt 
d¡ ¡ t 
d	¡ ¡ gd
�}tg |d�}t ||¡ d S )Nr   r_   r`   Ztest_datetime_mir   rE   )rU  rT   r   z
02/29/2020z
03/01/2020rc  rd   )ri   rj   r   rk   rl   r3   rF   r2   r   r…  Úto_datetimeZto_pydatetimer	   rn   ro   )	r7   r(   r   r   rJ   r1   rÊ   Zexpected_column_indexrL   r   r   r   Útest_read_datetime_multiindex*  s"    ÿÿ þþz/TestExcelFileRead.test_read_datetime_multiindexc              
   C   s>   t jtdd��& t d|› d�d¡� W 5 Q R X W 5 Q R X d S )NzValue must be one of *rN   zio.excelz.readerÚabc)r   rZ   r[   r3   Zoption_contextrƒ  r   r   r   Útest_engine_invalid_optionA  s    z,TestExcelFileRead.test_engine_invalid_optionc              	   C   s^   |dkrt  d¡ |dkr0|j t jjdd�¡ t d| ¡�}|jdgksPt	‚W 5 Q R X d S )Nr   rŽ  r   r�  r`   r�  rP   )
r   rô   ri   rj   rk   rl   r3   rF   Zsheet_namesrH   )r7   r(   r   r   r1   r   r   r   Útest_ignore_chartsheetsG  s    
ÿÿz)TestExcelFileRead.test_ignore_chartsheetsc              
   C   s¨   t f}|d kr t d|› �¡ n|dkr<dd l}t |jjf}t d|› �¡�R}t|ƒ 	d¡ t 
d¡�. ztj||d� W n |k
rŽ   Y nX W 5 Q R X W 5 Q R X d S )NzInvalid test for engine=r   r   ZcorruptFr.   )r   r   rô   r   Zbiffhr  rn   Zensure_cleanr   Ú
write_textrÄ   r3   rF   )r7   r   r   Úerrorsr   Úfiler   r   r   Útest_corrupt_files_closedT  s    z+TestExcelFileRead.test_corrupt_files_closed)r™  rš  r›  r   rœ  r;   rM   r¨  rk   r�  rª  r«  r  r  r  r®  r¯  r°  r±  r²  rµ  r·  r¹  rº  r¾  r   r   r   r   r¢  W  s2   

&
þ




r¢  )+r   r   Ú	functoolsr   r(  r/  r   Úurllib.errorr   Úzipfiler   Únumpyr¢   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr   Zpandasr3   r	   r
   r   r   Zpandas._testingZ_testingrn   r#   r    r¡  rk   rž  Zengine_paramsrÈ   Úboolr   r"   rœ  r)   r   r   r,   r¢  r   r   r   r   Ú<module>   sn   ÿþ
þþÿþè
þù	


         o