a
    nÝEb7ß  ã                	   @   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lmZ d d	lmZ g d
¢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 ƒ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)Úxlrd_version)ÚVersion)ú.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–td
ur–tt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   NÚ2T)Úvaluesr   r   )Úenginer   © r   úb/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/io/excel/test_readers.pyÚ_is_valid_engine_ext_pair8   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_marksR   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>]   s   
ýr)   )Úparamsc                 C   s   | j S )zS
    Fixture for Excel reader engine and read_ext, only including valid pairs.
    )r#   )Úrequestr   r   r    Úengine_and_read_ext\   s    r,   c                 C   s   | \}}|S ©Nr   ©r,   r   r   r   r   r    r   k   s    r   c                 C   s   | \}}|S r-   r   r.   r   r   r    r   q   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g d¢g d¢g d¢g d¢g d¢g d¢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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zej
 d9d%eg d:¢g d;¢g d:¢d<d=ejd>gd?œƒfd@dAeed?œee g d:¢d@dB�e g d;¢dAdB�g dC¢dDdEejdFgd?œƒfg¡dGdH„ ƒZ!ej
 dIi dDfdJdKidLfg¡dMdN„ ƒZ"dOdP„ Z#ej
 dQdRedSdTgiƒfdUedVgdW�fg¡dXdY„ ƒZ$dZd[„ Z%d\d]„ Z&d^d_„ Z'd`da„ Z(dbdc„ Z)ddde„ Z*dfdg„ Z+dhdi„ Z,djdk„ Z-ej
 dldmdndmgdmdngdodpdogdodpgg¡dqdr„ ƒZ.dsdt„ Z/dudv„ Z0ej
j1e2j1dwdx„ ƒƒZ3e4j5dydz„ ƒZ6d{d|„ Z7ej
j8d}d~„ ƒZ9dd€„ Z:e4 ;d�¡e4j<d‚dƒ„ ƒƒZ=e4j<d„d…„ ƒZ>d†d‡„ Z?dˆd‰„ Z@ej
 dŠd‹ejdŒd�dŒgfdŽejgd� fg¡d�d‘„ ƒZAd’d“„ ZBd”d•„ ZCd–d—„ ZDd˜d™„ ZEdšd›„ ZFdœd�„ ZGdždŸ„ ZHd d¡„ ZId¢d£„ ZJd¤d¥„ ZKd¦d§„ ZLd¨d©„ ZMdªd«„ ZNd¬d­„ ZOd®d¯„ ZPd°d±„ ZQd%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   Úpdr5   ÚchdirÚsetattr©Úselfr   ÚdatapathÚmonkeypatchÚfuncr   r   r    Úcd_and_set_enginex   s    zTestReaders.cd_and_set_enginec           	      C   sŽ   dd„ }|  tjd|¡ ddddddœ}td	| d
ƒ�}t |¡}W d   ƒ n1 sV0    Y  |d urn|}n||dd …  }||ksŠJ ‚d S )Nc                 _   s   | j S r-   r1   )r:   ÚargsÚkwargsr   r   r    Úparserƒ   s    z,TestReaders.test_engine_used.<locals>.parserÚparser   r   r   r   ©ÚxlsxZxlsmZxlsbÚxlsZodsÚtest1Úrbé   )r8   r6   Ú	ExcelFileÚopenr5   )	r:   r   r   r<   rA   Úexpected_defaultsÚfÚresultÚexpectedr   r   r    Útest_engine_used�   s    û(zTestReaders.test_engine_usedc                 C   s”   d}t jt|d��& tjd| dddd� W d   ƒ n1 s>0    Y  t jt|d��* tjd| dd	gddd
� W d   ƒ n1 s†0    Y  d S )Nz Passing an integer for `usecols`©ÚmatchrF   ÚSheet1r   é   ©Ú
sheet_nameÚ	index_colÚusecolsÚSheet2rH   ©rU   ÚskiprowsrV   rW   ©r"   ÚraisesÚ
ValueErrorr6   r5   ©r:   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	g d
¢d�}tjd| ddgd	g d
¢d�}tj	||dd� tj	||dd� d S )Nr   ú3Sheets containing datetimes not supported by pyxlsb©ÚreasonÚBÚC©ÚcolumnsrF   rR   r   )r   é   rS   rT   rX   rH   rY   F©Zcheck_names©
ÚnodeÚ
add_markerr"   ÚmarkÚxfailÚreindexr6   r5   ÚtmÚassert_frame_equal)r:   r+   r   Údf_refÚdf1Údf2r   r   r    Útest_usecols_list«   s&    ÿÿÿû	zTestReaders.test_usecols_listc                 C   sB  |dkr|j  tjjdd�¡ |jg d¢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   ra   rb   ©ÚArd   re   rf   rF   rR   r   zA:DrT   rX   rH   rY   Fri   rd   re   zA,C,DzA,C:Drj   ©r:   r+   r   rr   rs   rt   Údf3r   r   r    Útest_usecols_strÃ   sZ    ÿÿÿû	ÿûÿûzTestReaders.test_usecols_strrW   )r   rH   rS   )r   rS   rH   )rH   r   rS   )rH   rS   r   )rS   r   rH   )rS   rH   r   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   ra   rb   rw   re   rF   rR   r   rT   Fri   ©	rk   rl   r"   rm   rn   r6   r5   rp   rq   )r:   r+   r   rW   rr   rN   rM   r   r   r    Ú.test_usecols_diff_positional_int_columns_orderø   s    ÿÿÿz:TestReaders.test_usecols_diff_positional_int_columns_orderrd   ÚDc                 C   sB   |ddg }t t|ƒƒ|_tjd| d|d�}tj||dd� d S )Nrd   r}   rF   rR   ©rU   rW   Fri   )ÚrangeÚlenÚindexr6   r5   rp   rq   )r:   r   rW   rr   rN   rM   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   ra   rb   rF   rR   r   ©rU   rV   Fri   r{   ©r:   r+   r   rr   rN   rM   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   ra   rb   re   r}   rF   rR   r   zA,D:ErT   Fri   r{   r„   r   r   r    Útest_usecols_excel_range_str  s    ÿÿÿz(TestReaders.test_usecols_excel_range_strc                 C   sJ   d}t jt|d��$ tjd| ddd� W d   ƒ n1 s<0    Y  d S )NzInvalid column name: E1rP   rF   rR   zD:E1r~   r[   r^   r   r   r    Ú$test_usecols_excel_range_str_invalid-  s    z0TestReaders.test_usecols_excel_range_str_invalidc                 C   sR   d}t jt|d��, tjd| ddgddgd� W d   ƒ n1 sD0    Y  d S )Nz(list indices must be integers.*, not strrP   rF   rR   rw   re   rT   ©r"   r\   Ú	TypeErrorr6   r5   r^   r   r   r    Útest_index_col_label_error3  s    üz&TestReaders.test_index_col_label_errorc                 C   sR   t jd| dg d¢d�}tg d¢tg gd g gd g d¢d�d�}t ||¡ d S )	NrF   ÚSheet3rv   rƒ   )r}   ÚEÚFrS   ©ZlevelsÚcodesÚnames©rg   r�   )r6   r5   r	   r   rp   rq   )r:   r   rM   rN   r   r   r    Útest_index_col_empty>  s    ÿþz TestReaders.test_index_col_emptyrV   Nrh   c                 C   sT   t jd| d|d�}tg d¢g d¢gg d¢d�}|rD| |j| ¡}t ||¡ d S )NrF   ÚSheet4rƒ   )Úi1ÚaÚx)Úi2ÚbÚy)z
Unnamed: 0Zcol1Zcol2rf   )r6   r5   r	   Ú	set_indexrg   rp   rq   )r:   r   rV   rM   rN   r   r   r    Útest_index_col_with_unnamedI  s    
ÿÿz'TestReaders.test_index_col_with_unnamedc                 C   sJ   d}t jt|d��$ tjd| dgd� W d   ƒ n1 s<0    Y  d S )NzEUsecols do not match columns, columns expected but not found: \['E'\]rP   rF   rŒ   ©rW   r[   r^   r   r   r    Ú%test_usecols_pass_non_existent_columnW  s    ÿz1TestReaders.test_usecols_pass_non_existent_columnc                 C   sL   d}t jt|d��& tjd| ddgd� W d   ƒ n1 s>0    Y  d S )Nz['usecols' must either be list-like of all strings, all unicode, all integers or a callable.rP   rF   ZE1r   rœ   r[   r^   r   r   r    Útest_usecols_wrong_type`  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test2rR   ©rU   ZaaaaZbbbbbÚTestZTest1rf   ©r6   r5   r	   rp   rq   )r:   r   ÚparsedrN   r   r   r    Útest_excel_stop_iteratori  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   ra   rb   Ztest3rR   rŸ   r    rf   )rk   rl   r"   rm   rn   r6   r5   r	   ÚnpÚnanrp   rq   )r:   r+   r   r¢   rN   r   r   r    Útest_excel_cell_error_nao  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   ra   rb   rF   rR   r   rƒ   rX   rH   ©rU   rZ   rV   Fri   ©rU   rV   Ú
skipfooteréÿÿÿÿ)
rk   rl   r"   rm   rn   r6   r5   rp   rq   Úilocrx   r   r   r    Útest_excel_table{  s     ÿÿÿÿzTestReaders.test_excel_tablec                 C   s
  |dkr|j  tjjdd�¡ t g d¢g d¢g d¢g d¢g d¢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 d   ƒ n1 �s0    Y  t
 ||¡ t|jƒD ]4\}}tj	|| d|d�}| |¡}	t
 ||	¡ �q(|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 d   ƒ n1 �sð0    Y  t
 ||
¡ d S )"Nr   ra   rb   )rH   rh   éýÿÿÿé   r   )g      ô?g      @gHáz®Gý?g¸…ëQ¸þ?g•Ö&è.>)TFTTF)rH   rh   rS   r®   é   )r•   rS   ÚcÚdÚeiÝ  é
   é   é   iq  rH   é   é   iß  rS   )ÚIntColÚFloatColÚBoolColÚStrColÚStr2ColZDateColZ
test_typesrR   rŸ   r¸   g      @r¼   zconvert_float is deprecatedF)rQ   Úraise_on_extra_warnings)rU   Úconvert_floatrƒ   r»   ©rU   Ú
converters)rU   r¾   rÀ   )rk   rl   r"   rm   rn   r	   Ú	from_dictr   r6   r5   rp   rq   ÚcopyÚastypeÚfloatÚlocr�   Úassert_produces_warningÚFutureWarningÚ	enumeraterg   rš   ÚapplyÚstr)r:   r+   r   rN   ÚbasenameÚactualZfloat_expectedZicolÚnameÚexpZno_convert_floatr   r   r    Útest_reader_special_dtypes�  sx    ÿÿ




ûùÿý
ÿ&
ÿ
ÿýü&z&TestReaders.test_reader_special_dtypesc              
   C   sz   d}t  g d¢dtjdddgg d¢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_converters)rH   rh   r­   éüÿÿr   g      )@gÍÌÌÌÌL2@g3333333@g:Œ0âŽy5>)ÚFoundrÑ   rÑ   ú	Not foundrÑ   Ú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¹   rh   rS   rR   r¿   )r	   rÁ   r¤   r¥   r6   r5   rp   rq   )r:   r   rË   rN   rÀ   rÌ   r   r   r    Útest_reader_convertersâ  s"    üÿ
ü	
ÿz"TestReaders.test_reader_convertersc                 C   sô   d}t  || ¡}tg d¢g d¢g d¢ddtjdgdœƒjg d¢d�}t ||¡ t j|| d	d
tdœd�}|d  	d	¡|d< |d  	d
¡|d< g d¢|d< t ||¡ d}t
jt|d��& t j|| ddid� W d   ƒ n1 sæ0    Y  d S )NÚ	testdtype©rH   rh   rS   r®   ©ç      @ç      @ç      @ç      @ç      ð?ç       @ç      @©r•   r˜   r°   r±   rf   Úfloat64Úfloat32)r•   r˜   r°   ©Údtyper•   r˜   ©Z001Z002Z003Z004r°   z(Unable to convert column d to type int64rP   r±   Úint64)r6   r5   r	   r¤   r¥   ro   rp   rq   rÊ   rÃ   r"   r\   r]   )r:   r   rË   rÌ   rN   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Õ   c                 C   s&   d}t j|| |d�}t ||¡ d S )NrÝ   rê   ©r6   r5   rp   rq   )r:   r   rë   rN   rË   rÌ   r   r   r    Útest_reader_dtype_str  s    z!TestReaders.test_reader_dtype_strzdtypes, exp_valueúa.1rí   rH   c           	      C   s\   d}dt i|¥}| ¡ }tj|| |d�}tdg|gdœƒ}||ksLJ dƒ‚t ||¡ d S )NZdf_mangle_dup_col_dtypesr•   rê   rÓ   )r•   rñ   zdtype dict changed)rÊ   rÂ   r6   r5   r	   rp   rq   )	r:   r   ZdtypesZ	exp_valuerË   Z
dtype_dictZdtype_dict_copyrM   rN   r   r   r    Útest_dtype_mangle_dup_cols<  s    z&TestReaders.test_dtype_mangle_dup_colsc                 C   s2   d}t  || ¡}tdg d¢iƒ}t ||¡ d S )NZtest_spacesZtestcol)zthis is greatz4    spacesz1 trailing z
 1 leadingz2  spaces  multiple  timesr¡   )r:   r   rË   rÌ   rN   r   r   r    Útest_reader_spacesH  s    ÿÿzTestReaders.test_reader_spaceszbasename,expectedzgh-35802ZCOLUMNzTest (1)zgh-36122z
got 2nd sarf   c                 C   s6   |dkrt  d|› �¡ t || ¡}t ||¡ d S )Nr   zSkipped for engine: )r"   Úskipr6   r5   rp   rq   )r:   r   r   rË   rN   rÌ   r   r   r    Útest_read_excel_ods_nested_xml[  s    	z*TestReaders.test_read_excel_ods_nested_xmlc                 C   sF   d}t j|| d d�}g d¢}t || ¡ ¡ |t| ¡ ƒksBJ ‚d S )NÚtest_multisheetrŸ   )ÚCharlieÚAlphaÚBeta)r6   r5   rp   Úassert_contains_allÚkeysÚlist©r:   r   rË   ÚdfsÚexpected_keysr   r   r    Útest_reading_all_sheetsj  s
    z#TestReaders.test_reading_all_sheetsc                 C   sV   d}g d¢}t j|| |d�}tt|ƒƒ}t || ¡ ¡ t|ƒt| ¡ ƒksRJ ‚d S )Nrö   )rh   r÷   r÷   rŸ   )r6   r5   rü   Úsetrp   rú   rû   r€   )r:   r   rË   rÿ   rþ   r   r   r    Ú%test_reading_multiple_specific_sheetsw  s    z1TestReaders.test_reading_multiple_specific_sheetsc                 C   s2   d}t j|| d d�}g d¢}t || ¡ ¡ d S )NÚblank_with_headerrŸ   )rR   rX   r‹   )r6   r5   rp   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ÚblankrR   rŸ   )r6   r5   rp   rq   r	   )r:   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_2rf   r  rR   rŸ   ©r	   r6   r5   rp   rq   )r:   r   rN   rÌ   r   r   r    Ú!test_read_excel_blank_with_header“  s    z-TestReaders.test_read_excel_blank_with_headerc                 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 u r�|dv r�|j  tjjdd�¡ t d| ¡}t	 
||¡ d S )Nr   ra   rb   z
2016-03-12zMarc Johnsonz
2016-03-16z
Jack Blackg@Œµx¯DzTimothy BrownZDateColWithBigIntZ	StringColrf   r   zMaybe not supported by openpyxl)r   r   z)Defaults to openpyxl, maybe not supportedZtestdateoverflow)rk   rl   r"   rm   rn   r	   r6   Ú	Timestampr5   rp   rq   )r:   r+   r   r   rN   rM   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   ra   rb   rF   rR   r   rƒ   )rV   rU   Fri   r{   )r:   r+   r   rr   ÚfilenamerU   rs   rt   r   r   r    Útest_sheet_name¸  s    ÿÿ
ÿzTestReaders.test_sheet_namec                 C   sb   d| }t j|ddd�}t|dƒ�,}t j|ddd�}t ||¡ W d   ƒ n1 sT0    Y  d S )NrF   rR   r   rƒ   rG   )r6   r5   rJ   rp   rq   )r:   r   ÚpthrN   rL   rÌ   r   r   r    Útest_excel_read_bufferÊ  s
    z"TestReaders.test_excel_read_bufferc                 C   sD   d}t jtdd�� tjd|d� W d   ƒ n1 s60    Y  d S )NÚfoozUnknown engine: foorP   r×   r1   r[   )r:   r   Z
bad_enginer   r   r    Útest_bad_engine_raisesÒ  s    z"TestReaders.test_bad_engine_raisesrU   rS   r   r“   rR   c                 C   sH   d}t jt|d��" tjd| |d� W d   ƒ n1 s:0    Y  d S ©Nz?Worksheet index 3 is invalid|Worksheet named 'Sheet4' not foundrP   r  rŸ   r[   )r:   r   rU   r_   r   r   r    Útest_bad_sheetname_raises×  s    z%TestReaders.test_bad_sheetname_raisesc                 C   sJ   d|› �}d}t jt|d�� t |¡ W d   ƒ n1 s<0    Y  d S )Nr  uV   (No such file or directory|æ²¡æœ‰é‚£ä¸ªæ–‡ä»¶æˆ–ç›®å½•|File o directory non esistente)rP   )r"   r\   ÚFileNotFoundErrorr6   r5   )r:   r   Zbad_filerQ   r   r   r    Útest_missing_file_raisesá  s    
z$TestReaders.test_missing_file_raisesc                 C   sx   d}|d u rt }d}n&|dkr4ddlm} |}d}nt}d}tj||d�� t |¡ W d   ƒ n1 sj0    Y  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 filerP   )r]   r   r  r   r"   r\   r6   r5   )r:   r   r   Z
bad_streamÚerrorr_   r  r   r   r    Útest_corrupt_bytes_raisesè  s    ÿÿz%TestReaders.test_corrupt_bytes_raisesc                 C   s0   d| }t  |¡}t  d| ¡}t ||¡ d S )NzYhttps://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/excel/test1rF   rï   )r:   r   ÚurlÚ	url_tableÚlocal_tabler   r   r    Útest_read_from_http_urlþ  s    ÿÿ
z#TestReaders.test_read_from_http_urlc                 C   sz   t d| dƒ�(}| d¡jd| |d� W d   ƒ n1 s<0    Y  d| }tj||d�}t d| ¡}t ||¡ d S )NrF   rG   úpandas-test©ÚKeyZBodyús3://pandas-test/test1)Zstorage_options)rJ   ÚBucketÚ
put_objectr6   r5   rp   rq   )r:   r   Ús3_resourceÚs3sorL   r  r  r  r   r   r    Útest_read_from_s3_url	  s    6z!TestReaders.test_read_from_s3_urlc           	      C   s´   t d| dƒ�(}| d¡jd| |d� W d   ƒ n1 s<0    Y  dd l}|jf i |¤Ž}|  d| ¡�}t |¡}W d   ƒ n1 sŒ0    Y  t d| ¡}t ||¡ d S )NrF   rG   r  r  r   r   )	rJ   r!  r"  Ús3fsZS3FileSystemr6   r5   rp   rq   )	r:   r   r#  r$  rL   r&  Zs3r  r  r   r   r    Útest_read_from_s3_object  s    6(z$TestReaders.test_read_from_s3_objectc                 C   s„   t j |dddƒd| ¡}t |¡}zt d| ¡}W n< tyr   dd l}d | ¡ ¡ ¡ }t	 
d|› �¡ Y n0 t ||¡ d S )	Nr2   r3   r4   rF   zfile://localhost/r   ú zfailing on )ÚosÚpathÚjoinr6   r5   r   ÚplatformÚunameÚstripr"   rô   rp   rq   )r:   r   r;   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   rF   rR   rƒ   )Úpathlibr   r6   r5   rp   rq   )r:   r   r   Ústr_pathrN   Úpath_objrÌ   r   r   r    Útest_read_from_pathlib_path7  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   )ÚlocalrF   rR   rƒ   )	Zpy.pathr4  r)  r*  r+  r6   r5   rp   rq   )r:   r   Z	LocalPathr1  rN   r2  rÌ   r   r   r    Útest_read_from_py_localpathD  s    z'TestReaders.test_read_from_py_localpathc                 C   sX   t j d| ¡}t|dƒ�*}tj|ddd�}~| ¡  W d   ƒ n1 sJ0    Y  d S )NrF   rG   rR   r   rƒ   )r)  r*  r+  rJ   r6   r5   Úread)r:   r   r1  rL   r–   r   r   r    Útest_close_from_py_localpathS  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   ra   rb   ZTimerH   rh   rS   é-   é8   i † r®   é   é1   i@ é   é   é*   ià“ é   é9   é#   i€ é	   é)   é   i ¡ é   é   é   iÀ'	 r·   i`®
 é5   i 5 é   é%   r   i » é   é   é6   Z
times_1900rR   rŸ   Z
times_1904)rk   rl   r"   rm   rn   r	   rÁ   r   r6   r5   rp   rq   )r:   r+   r   r   rN   rÌ   r   r   r    Útest_reader_seconds^  s4    ÿÿ

õÿÿzTestReaders.test_reader_secondsc              	   C   s:  |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 ||¡ ||_g d¢|_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� g d¢|_| 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   ra   rb   r  Úbarr•   r˜   ÚtestmultiindexrH   rà   ú
2015-01-01Trh   rá   ú
2015-01-02FrS   râ   ú
2015-01-03r®   rã   ú
2015-01-04rf   Z	mi_columnr   )rU   ÚheaderrV   rç   Zmi_indexrƒ   ri   Zboth©rU   rV   rU  Úilvl1Úilvl2Zmi_index_nameÚc1Úc2Zmi_column_name)ÚlevelZname_with_intZ	both_nameZboth_name_skiprows)rU   rV   rU  rZ   )rk   rl   r"   rm   rn   r   Úfrom_productr	   r6   r	  r5   rp   rq   r�   rg   Z	set_namesrü   r   Z
set_levels)r:   r+   r   ÚmiÚmi_filerN   rÌ   r   r   r    Útest_read_excel_multiindex  st    ÿÿüù
ÿ
ÿ
ÿÿÿûz&TestReaders.test_read_excel_multiindexzsheet_name,idx_lvl2Zboth_name_blank_after_mi_namer˜   r•   Zboth_name_multiple_blanksr®   c           	   	   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
g d¢|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 (GH4679rb   rP  r  rO  r•   r˜   rY  rZ  ©r�   rH   rà   rQ  Trh   rá   rR  FrS   râ   rS  r®   rã   rT  )r  r  rO  rO  rW  rX  r‘   r   rV  )rk   rl   r"   rm   rn   r   r\  r	   r6   r	  Zfrom_arraysr5   rp   rq   )	r:   r+   r   rU   Zidx_lvl2r^  r]  rN   rM   r   r   r    Ú+test_read_excel_multiindex_blank_after_nameÕ  s6    ÿÿü
þøüz7TestReaders.test_read_excel_multiindex_blank_after_namec                 C   sP   d| }t j|dddgd�}t ddg¡}tg d¢gd	 |d
�}t ||¡ d S )NrP  Úindex_col_noner   rH   ©rU   rU  ©rw   rd   ©ÚkeyÚvalrÞ   rh   rf   )r6   r5   r   r\  r	   rp   rq   )r:   r   r^  rM   Zexp_columnsrN   r   r   r    Ú&test_read_excel_multiindex_header_onlyþ  s
    z2TestReaders.test_read_excel_multiindex_header_onlyc           	   	   C   sŠ  d| }t  g d¢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d�}tg d	¢d d�}t|||d�}tj|ddd�}t ||¡ ||_	tj|dddgd�}t ||¡ t  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d�}tg d¢d d�}t|||d�}tj|ddd�}t ||¡ ||_	tj|dddgd�}tj||dd� d S )NZtest_index_name_pre17)NNNNN)ZR0C0ZR0C1ZR0C2ZR0C3ZR0C4)ZR1C0ZR1C1ZR1C2ZR1C3ZR1C4)ZR2C0ZR2C1ZR2C2ZR2C3ZR2C4)ZR3C0ZR3C1ZR3C2ZR3C3ZR3C4)ZR4C0ZR4C1ZR4C2ZR4C3ZR4C4)ZC_l0_g0ZC_l0_g1ZC_l0_g2ZC_l0_g3ZC_l0_g4)ZR0ÚR_l0_g0ÚR_l0_g1ÚR_l0_g2ÚR_l0_g3ÚR_l0_g4)ZR1ÚR_l1_g0ÚR_l1_g1ÚR_l1_g2ÚR_l1_g3ÚR_l1_g4)r   rH   rh   rS   r®   r¯   rŽ   ©rÍ   ©r�   rg   Zsingle_namesr   rƒ   Zmulti_namesrH   )ri  rj  rk  rl  rm  )rn  ro  rp  rq  rr  )r   rH   rh   rS   r®   Zsingle_no_namesZmulti_no_namesFri   )
r¤   Úarrayr   r
   r	   r6   r5   rp   rq   r�   )	r:   r   r  r3   rg   r]  ÚsirN   rÌ   r   r   r    Útest_excel_old_index_format	  sd    úÿ
þúÿûÿ	þúz'TestReaders.test_excel_old_index_formatc              	   C   sR   d}dD ]D}t jt|d��" tjd| |d� W d   ƒ q1 sB0    Y  qd S )Nz#Passing a bool to header is invalid)TFrP   rF   )rU  rˆ   )r:   r   r_   Úargr   r   r    Útest_read_excel_bool_header_argQ  s    z+TestReaders.test_read_excel_bool_header_argc              	   C   sJ  |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g d¢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g d¢d�}tddt d¡dgddt d¡dgddt d¡dggg d¢d�}t	 
||¡ d S )Nr   ra   rb   ZtestskiprowsZskiprows_listr   rh   )rU   rZ   rH   rà   rQ  Trá   rR  FrS   râ   rS  r®   rã   rT  rç   rf   c                 S   s   | dv S )N)r   rh   r   rÙ   r   r   r    rÚ   z  rÛ   z6TestReaders.test_read_excel_skiprows.<locals>.<lambda>)rU   rZ   r�   )rk   rl   r"   rm   rn   r6   r5   r	   r	  rp   rq   r¤   ru  )r:   r+   r   rÌ   rN   r   r   r    Útest_read_excel_skiprowsX  sX    ÿÿÿüù	ýýüüù	z$TestReaders.test_read_excel_skiprowsc                 C   s@   d}t jd| |d�}t  d| ¡}|d |… }t ||¡ d S )Nr¯   rF   ©Znrowsrï   )r:   r   Únum_rows_to_pullrÌ   rN   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 )NrF   r³   r{  )r6   r5   r€   rp   rq   )r:   r   rN   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   sH   d}t jt|d��" tjd| dd� W d   ƒ n1 s:0    Y  d S )Nz'nrows' must be an integer >=0rP   rF   rÖ   r{  r[   r^   r   r   r    Ú+test_read_excel_nrows_non_integer_parameterŸ  s    z7TestReaders.test_read_excel_nrows_non_integer_parameterc                 C   sÔ   d| }t jtdd��ª tj|dddd�}tg d¢g d	¢d
d�}d|j_t  ||¡ tj|ddd�}t	g d	¢g d¢dœƒ}t  
||¡ tj|ddd�}tg d¢dd�}t  ||¡ W d   ƒ n1 sÆ0    Y  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.

rP   Ztwo_columnsr   T)rU   rV   Úsqueeze)rh   rS   r®   )r®   r¯   r<  r˜   rs  r•   )rU   r€  )r•   r˜   Z
one_column)rH   rh   rS   )rp   rÆ   rÇ   r6   r5   r   r�   rÍ   Zassert_series_equalr	   rq   )r:   r   rL   rÌ   rN   r   r   r    Útest_read_excel_squeeze¥  s"    þÿz#TestReaders.test_read_excel_squeezec                 C   sR   t jtdd��" t d| dd¡ W d   ƒ n1 s60    Y  t d| ¡ d S )NF)r½   rF   rR   r   )rp   rÆ   rÇ   r6   r5   ©r:   r   r   r   r    Útest_deprecated_kwargs¾  s    0z"TestReaders.test_deprecated_kwargsc                 C   sV   d| }g d¢}t jg d¢dd�}t||dd�}tj|dd	d
gd d�}t ||¡ d S )NrP  ))rd   rd   re  ©rS   r®   r„  ))rw   rw   re  ©rH   rh   r…  )r   rH   r`  )rh   rS   rt  rb  r   rH   rV  )r   Úfrom_tuplesr	   r6   r5   rp   rq   )r:   r   Ú	file_namer3   ÚidxrN   rM   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      à?rH   rh   Únumbersrf   )r¤   r¥   r	   r6   r5   rp   rq   )r:   r   r‡  r3   rN   rM   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 )NrP  )r•   rw   )r˜   rd   rH   rS   rh   r®   rf   Zmi_column_empty_rowsr   rc  )	r   r†  r¤   r¥   r	   r6   r5   rp   rq   )r:   r   r‡  rg   r3   rN   rM   r   r   r    Ú test_multiheader_two_blank_linesÙ  s    $
ÿz,TestReaders.test_multiheader_two_blank_linesc                 C   s$   d| }t  |¡}|jdks J ‚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)rS   rS   N)r6   r5   Úshape)r:   r   r‡  rM   r   r   r    Útest_trailing_blanksä  s    
z TestReaders.test_trailing_blanksc                 C   st   |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 d   ƒ n1 sf0    Y  d S )Nr   ú*chartsheets do not exist in the ODF formatr   ú4pyxlsb can't distinguish chartsheets from worksheetsrb   z"Worksheet named 'Chart1' not foundrP   Ú
chartsheetZChart1rŸ   ©
r"   rô   rk   rl   rm   rn   r\   r]   r6   r5   ©r:   r+   r   r   r   r   r    Útest_ignore_chartsheets_by_strí  s    
ÿÿz*TestReaders.test_ignore_chartsheets_by_strc                 C   st   |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 d   ƒ n1 sf0    Y  d S )Nr   r�  r   r�  rb   z0Worksheet index 1 is invalid, 1 worksheets foundrP   r‘  rH   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g d¢g d¢g d¢gg d¢d	�}t ||¡ d S )
NZtest_decimalú,rH   )ÚdecimalrZ   )rH   gAñcÌ�Ä—@gÕ	h¢ïÖAÚABCZpoig2Ø[j‡ô@)rh   gHáz®G^@g{®GáÍ@ZDEFZuytg¥Uq&Ø?)rS   g%�•Cq‹@gçû©ñÖ^ú@ZGHIZrezgÈ)¬ç³â@)ZIdZNumber1ZNumber2ZText1ZText2ZNumber3rf   r¡   )r:   r+   r   rM   rN   r   r   r    Útest_euro_decimal_format	  s    ýúz$TestReaders.test_euro_decimal_format)RÚ__name__Ú
__module__Ú__qualname__r"   Úfixturer>   rO   r`   ru   rz   rm   Úparametrizer|   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  r
  r  r  r  r  r  r  Únetworkrp   r  ÚtdZskip_if_not_us_localer%  r'  Zslowr/  r3  Ú
skip_if_noZcheck_file_leaksr5  r7  rN  r_  ra  rh  rw  ry  rz  r}  r~  r  r�  rƒ  r‰  r‹  rŒ  rŽ  r”  r•  r™  r   r   r   r    r/   w   sæ   

5(ÿ


		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	g d
¢¡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ejjed"uoÈeed#ƒkd$d%�d&d'„ ƒZej 	d(d)d*g¡d+d,„ ƒZd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd"S )5ÚTestExcelFileReadTr0   c                 C   s2   t tj|d�}| |dddƒ¡ | td|¡ dS )zH
        Change directory and set engine for ExcelFile objects.
        r1   r2   r3   r4   rI   N)r   r6   rI   r7   r8   r9   r   r   r    r>     s    z#TestExcelFileRead.cd_and_set_enginec                 C   sr   ddddddœ}t  d| ¡�}|j}W d   ƒ n1 s:0    Y  |d urR|}n||dd …  }||ksnJ ‚d S )Nr   r   r   r   rC   rF   rH   )r6   rI   r   )r:   r   r   r<   rK   r4   rM   rN   r   r   r    rO   !  s    û$z"TestExcelFileRead.test_engine_usedc                 C   sØ  t  d| ¡�$}t j|dddgd�}W d   ƒ n1 s80    Y  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 d   ƒ n1 sª0    Y  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 d   ƒ n1 �s"0    Y  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 d   ƒ n1 �s–0    Y  ttjgdgtjgtjgdggd	gd
�}t ||¡ d S )NZtest4rR   FÚapple©rU   Zkeep_default_naZ	na_valuesZNArH   Úrabbitr    rf   TÚtest5ú1.#QNANr¥   )r6   rI   r5   r	   r¤   r¥   rp   rq   )r:   r   r4   r¢   rN   r   r   r    Útest_excel_passes_na3  s@    
ÿ$ÿ
ÿ$ ÿ
ÿ&ÿ
ÿ& ÿz&TestExcelFileRead.test_excel_passes_naÚ	na_filter)NTFc                 C   s¼   i }|d ur||d< t  d| ¡�,}t j|fdddgdœ|¤Ž}W d   ƒ n1 sT0    Y  |du r€d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¦  rR   Tr£  r¤  Fr§  rH   r¥   r¥  r    rf   )r6   rI   r5   r¤   r¥   r	   rp   rq   )r:   r   r©  r@   r4   r¢   rN   r   r   r    Útest_excel_passes_na_filterY  s$    ÿüû$z-TestExcelFileRead.test_excel_passes_na_filterc                 C   s°  |dkr|j  tjjdd�¡ t d| ¡�4}tj|ddd�}tj|ddgdd�}W d   ƒ n1 sf0    Y  tj	||d	d
� tj	||d	d
� t d| ¡�0}|j
ddd�}|j
ddgdd�}W d   ƒ n1 sÔ0    Y  tj	||d	d
� tj	||d	d
� t d| ¡�"}tj|dddd�}W d   ƒ n1 �s60    Y  t 	||jd d… ¡ t d| ¡� }|j
dddd�}W d   ƒ n1 �sŒ0    Y  t 	||jd d… ¡ d S )Nr   ra   rb   rF   r   rƒ   rH   r§   Fri   )rV   )rZ   rV   r¨   rª   )rV   r©   )rk   rl   r"   rm   rn   r6   rI   r5   rp   rq   rB   r«   )r:   r+   r   rr   r4   rs   rt   ry   r   r   r    Útest_excel_table_sheet_by_indexr  s,    ÿÿ2020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 d   ƒ n1 sX0    Y  t || ¡�}|jd|d�}W d   ƒ n1 s”0    Y  tj	||d	d
� tj	||d	d
� d S r  )
rk   rl   r"   rm   rn   r6   rI   rB   rp   rq   )	r:   r+   r   rr   r  rU   r4   Z	df1_parseZ	df2_parser   r   r    r  �  s    ÿÿ,,z!TestExcelFileRead.test_sheet_namerU   rS   r   r“   rR   c              	   C   sp   d}t jt|d��J t d| ¡�}|j|d� W d   ƒ n1 sD0    Y  W d   ƒ n1 sb0    Y  d S r  )r"   r\   r]   r6   rI   rB   )r:   r   rU   r_   r4   r   r   r    r  £  s    z+TestExcelFileRead.test_bad_sheetname_raisesc              	   C   sŽ   d| }t j|dd|d�}t|dƒ�J}t  |¡� }t j|ddd�}W d   ƒ n1 sV0    Y  W d   ƒ n1 st0    Y  t ||¡ d S )NrF   rR   r   ©rU   rV   r   rG   rƒ   )r6   r5   rJ   rI   rp   rq   )r:   r   r   r  rN   rL   rE   rÌ   r   r   r    r  ®  s    Lz(TestExcelFileRead.test_excel_read_bufferc              	   C   sx   t d| dƒ�L}t |¡�"}tj|dd|d� W d   ƒ n1 sB0    Y  W d   ƒ n1 s`0    Y  |jstJ ‚d S )NrF   rG   rR   r   r¬  )rJ   r6   rI   r5   Úclosed)r:   r   r   rL   rD   r   r   r    Útest_reader_closes_file¸  s    Nz)TestExcelFileRead.test_reader_closes_filec              	   C   sr   d}t  d| ¡�L}tjt|d�� t j|dd� W d   ƒ n1 sF0    Y  W d   ƒ n1 sd0    Y  d S )Nz8Engine should not be specified when passing an ExcelFilerF   rP   r  r1   )r6   rI   r"   r\   r]   r5   )r:   r   r_   Zxlr   r   r    Útest_conflicting_excel_enginesÀ  s    z0TestExcelFileRead.test_conflicting_excel_enginesc                 C   sf   t jd| |d�}td| dƒ�}| ¡ }W d   ƒ n1 s>0    Y  t j||d�}t ||¡ d S )NrF   r1   rG   )r6   r5   rJ   r6  rp   rq   )r:   r   r   rN   rL   r3   rÌ   r   r   r    Útest_excel_read_binaryÈ  s
    &z(TestExcelFileRead.test_excel_read_binaryc                 C   sZ   t d| dƒ�}t |¡}W d   ƒ n1 s.0    Y  tjd| |d�}t ||¡ d S )NrF   rG   r1   )rJ   r6   r5   rp   rq   )r:   r   r   rL   rM   rN   r   r   r    Ú%test_excel_read_binary_via_read_excelÒ  s    (z7TestExcelFileRead.test_excel_read_binary_via_read_excelNr   zxlrd no longer supports xlsxrb   c                 C   s.   t dgdgd�}tjddd�}t ||¡ d S )Nu   í²ˆZColumn1rf   zhigh_surrogate.xlsxr   r1   r  )r:   rN   rÌ   r   r   r    Útest_excel_high_surrogateÙ  s    z+TestExcelFileRead.test_excel_high_surrogater  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I2rs  rd  )rw   zB.1ZI11ZI12r`  rH   rS   rí   )r�   rg   rë   rR   r   rV  )r
   r   r†  r	   r6   r5   rp   rq   )r:   r  rˆ  ÚcolsrN   rM   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 d   ƒ n1 s\0    Y  tj	t 
d¡t 
d	¡fgt 
d¡ ¡ t 
d	¡ ¡ gd
�}tg |d�}t ||¡ d S )Nr   ra   rb   Ztest_datetime_mir   rH   )rU  rV   r   z
02/29/2020z
03/01/2020r`  rf   )rk   rl   r"   rm   rn   r6   rI   r5   r   r†  Úto_datetimeZto_pydatetimer	   rp   rq   )	r:   r+   r   r   rL   r4   rÌ   Zexpected_column_indexrN   r   r   r    Útest_read_datetime_multiindexð  s"    ÿÿ4þþz/TestExcelFileRead.test_read_datetime_multiindexc              	   C   sf   t jtdd��D t d|› d�d¡� W d   ƒ n1 s:0    Y  W d   ƒ n1 sX0    Y  d S )NzValue must be one of *rP   zio.excelz.readerÚabc)r"   r\   r]   r6   Zoption_contextr‚  r   r   r    Útest_engine_invalid_option  s    z,TestExcelFileRead.test_engine_invalid_optionc                 C   sr   |dkrt  d¡ |dkr0|j t jjdd�¡ t d| ¡� }|jdgksPJ ‚W d   ƒ n1 sd0    Y  d S )Nr   r�  r   r�  rb   r‘  rR   )	r"   rô   rk   rl   rm   rn   r6   rI   Zsheet_names)r:   r+   r   r   r4   r   r   r    Útest_ignore_chartsheets  s    
ÿÿz)TestExcelFileRead.test_ignore_chartsheetsc              
   C   sÆ   t f}|d u rt ¡  n|dkr4dd l}t |jjf}t d|› �¡�n}t|ƒ 	d¡ t 
d¡�6 ztj||d� W n |y„   Y n0 W d   ƒ n1 sš0    Y  W d   ƒ n1 s¸0    Y  d S )Nr   r   ZcorruptFr1   )r   r"   rô   r   Zbiffhr  rp   Zensure_cleanr   Ú
write_textrÆ   r6   rI   )r:   r   r   Úerrorsr   Úfiler   r   r    Útest_corrupt_files_closed  s    
z+TestExcelFileRead.test_corrupt_files_closed)rš  r›  rœ  r"   r�  r>   rO   r¨  rm   rž  rª  r«  r  r  r  r®  r¯  r°  r±  Zskipifr   r   r²  rµ  r·  r¹  rº  r¾  r   r   r   r    r¢    s:   

&
þ


þ


r¢  )/r   r   Ú	functoolsr   r)  r0  r   Úurllib.errorr   Úzipfiler   Únumpyr¤   r"   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr   Zpandasr6   r	   r
   r   r   Zpandas._testingZ_testingrp   Zpandas.tests.io.excelr   Zpandas.util.versionr   r&   r#   r¡  rm   ÚfilterwarningsZengine_paramsrÊ   Úboolr!   r%   r�  r,   r   r   r/   r¢  r   r   r   r    Ú<module>   sp   ÿþ
þþÿþè
þÿ


         )