a
    é´«j:õ  ã                
   @  s
  d dl mZ d dlmZmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlZd dlZd d	lmZ d dlm  mZ d dlZd d
lmZmZmZmZm Z  d dl!m"Z# eƒ rÜej$j%Z&g d¢Z'ej(de )d¡gd�ej(de )d¡gd�ej(de )d¡gd�ej(de )d¡d�ej(de )d¡d�ej(de )d¡d�gZ*dddœdd„Z+dd„ Z,ej-dd„ e*D ƒe.d�dd„ ƒZ/ej-dd „ ƒZ0ej-d!d"„ ƒZ1ej-d#d$„ ƒZ2dd%dd&œd'd(„Z3d)ddd*d+œd,d-„Z4d.d/„ Z5G d0d1„ d1ƒZ6G d2d3„ d3ƒZ7dS )4é    )Úannotations)ÚdatetimeÚtime)Úpartial)ÚBytesION)ÚPath)ÚURLError)Ú
BadZipFile)Úis_platform_windows)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚread_csv)ú.xlsú.xlsxú.xlsmú.xlsbú.odsÚxlrd©ÚmarksÚopenpyxlÚpyxlsbÚodfÚcalamineÚpython_calamineÚstrÚbool)Ú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vrFdS | dkrZ|d	krZdS |d	krn| d
v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   r   >   r   r   r   T)Úvalues)Úenginer   © r#   úa/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/excel/test_readers.pyÚ_is_valid_engine_ext_pair@   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_marksU   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-   )ÚparamsÚ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_ext_   s    r1   c                 C  s   | \}}|S ©Nr#   ©r1   r"   r   r#   r#   r$   r"   o   s    r"   c                 C  s   | \}}|S r2   r#   r3   r#   r#   r$   r   u   s    r   c                 C  s"   | ddddƒ}t |dddd�}|S )	zI
    Obtain the reference data from read_csv with the Python engine.
    ÚioÚdataÚcsvz	test1.csvr   TÚpython)Ú	index_colZparse_datesr"   )r   )ÚdatapathÚfilepathÚdf_refr#   r#   r$   r;   {   s    r;   z
str | None)r   r"   r    c                 C  s   dS )NÚnsr#   )r   r"   r#   r#   r$   Úget_exp_unit…   s    r=   r   ÚNone)Úexpectedr   r"   r    c                 C  s$   d | j _t||ƒ}| j  |¡| _ d S r2   )ÚindexÚnamer=   Zas_unit)r?   r   r"   Úunitr#   r#   r$   Úadjust_expected‰   s    
rC   c                 C  s    | dkr|  tjjdd�¡ d S )Nr   z3Sheets containing datetimes not supported by pyxlsb©Úreason)Úapplymarkerr&   ÚmarkÚxfail)r"   r0   r#   r#   r$   Úxfail_datetimes_with_pyxlsb�   s    ÿÿrI   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	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d&d'„ Zej d(d)d*g¡d+d,„ ƒZd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zej d=d)eg d>¢g d?¢g d>¢d@dAej dBgdCœƒfdDdEe!e!dCœee"g d>¢dDdF�e"g d?¢dEdF�e"g dG¢dHdF�e"dIdJej dKgdHdF�dCœƒfg¡dLdM„ ƒZ#dNdO„ Z$dPdQ„ Z%dRdS„ Z&ej dTi dUfdVdWidUfg¡dXdY„ ƒZ'dZd[„ Z(ej d\d]ed^d_giƒfd`edagdb�fg¡dcdd„ ƒZ)dedf„ Z*dgdh„ Z+didj„ Z,dkdl„ Z-dmdn„ Z.dodp„ Z/ej 0dq¡drds„ ƒZ1dtdu„ Z2dvdw„ Z3dxdy„ Z4ej dzd{d|d{gd{d|gd}d~d}gd}d~gg¡dd€„ ƒZ5d�d‚„ Z6dƒd„„ Z7ejj8ejj9d…d†„ ƒƒZ:e;j<ejj9d‡dˆ„ ƒƒZ=ejj9d‰dŠ„ ƒZ>ejj?d‹dŒ„ ƒZ@d�dŽ„ ZAe; Bd�¡d�d‘„ ƒZCd’d“„ ZDd”d•„ ZEd–d—„ ZFej d˜d™ej dšd›dšgfdœej gd� fg¡dždŸ„ ƒZGd d¡„ ZHd¢d£„ ZId¤d¥„ ZJd¦d§„ ZKd¨d©„ ZLdªd«„ ZMd¬d­„ ZNd®d¯„ ZOej d°d±d²d|dUgd|d)fd±d³d)d|dUgd)fd±d´d|dUgd|dUgd)fd±dµd|dUgd|d)fd¶d·d)d)d|d*gfd¶d·d)d)d¸d¹„ fg¡dºd»„ ƒZPd¼d½„ ZQd¾d¿„ ZRdÀdÁ„ ZSdÂdÃ„ ZTdÄdÅ„ ZUdÆdÇ„ ZVdÈdÉ„ ZWdÊdË„ ZXd)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"   r4   r5   ÚexcelÚ
read_excelN)r   ÚpdrN   ÚchdirÚsetattr©Úselfr"   r9   ÚmonkeypatchÚfuncr#   r#   r$   Úcd_and_set_engineš   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 r2   rL   )rS   ÚargsÚkwargsr#   r#   r$   Úparser¥   s    z,TestReaders.test_engine_used.<locals>.parserÚparser   r   r   r   ©ÚxlsxZxlsmZxlsbÚxlsZodsÚtest1Úrbé   )rQ   rO   Ú	ExcelFileÚopenrN   )	rS   r   r"   rT   rY   Úexpected_defaultsÚfÚresultr?   r#   r#   r$   Útest_engine_used£   s    û(zTestReaders.test_engine_usedc              	   C  s²   ddiddiddiddiddidœ}|dv r8t  d¡}n|d	krLt  d
¡}n
t  d¡}|d ur®tjt|d��2 tjd| dd||dd …  d� W d   ƒ n1 s¤0    Y  d S )NÚfooÚabcdé{   Ú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^   ÚSheet1r   r`   )Ú
sheet_namer8   Zengine_kwargs)ÚreÚescaper&   ÚraisesÚ	TypeErrorrO   rN   )rS   r   r"   rc   Úmsgr#   r#   r$   Útest_engine_kwargs»   s&    û
üzTestReaders.test_engine_kwargsc                 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`rk   r^   rm   r   é   ©rn   r8   ÚusecolsÚSheet2r`   ©rn   Úskiprowsr8   rw   ©r&   rq   Ú
ValueErrorrO   rN   ©rS   r   rs   r#   r#   r$   Útest_usecols_intÕ   s    ÿ$ûzTestReaders.test_usecols_intc                 C  sv   t ||ƒ |ddg }t|||ƒ tjd| ddg d¢d�}tjd| dd	gdg d¢d
�}t ||¡ t ||¡ d S )NÚBÚCr^   rm   r   )r   é   ru   rv   rx   r`   ry   ©rI   rC   rO   rN   ÚtmÚassert_frame_equal)rS   r0   r"   r   r;   r?   Údf1Údf2r#   r#   r$   Útest_usecols_listç   s    
ÿû	zTestReaders.test_usecols_listc                 C  s  t ||ƒ |g d¢ }t|||ƒ tjd| dddd�}tjd| ddgddd	�}t ||¡ t ||¡ |d
dg }t|||ƒ tjd| dddd�}tjd| ddgddd	�}t ||¡ t ||¡ tjd| dddd�}tjd| ddgddd	�}t ||¡ t ||¡ d S )N©ÚAr   r€   r^   rm   r   zA:Drv   rx   r`   ry   r   r€   zA,C,DzA,C:Dr‚   )rS   r0   r"   r   r;   r?   r†   Údf3r#   r#   r$   Útest_usecols_strü   sR    
ÿû	ÿûÿûzTestReaders.test_usecols_strrw   )r   r`   ru   )r   ru   r`   )r`   r   ru   )r`   ru   r   )ru   r   r`   )ru   r`   r   c                 C  sH   t ||ƒ |ddg }t|||ƒ tjd| dd|d�}t ||¡ d S )Nr‰   r€   r^   rm   r   rv   r‚   )rS   r0   r"   r   rw   r;   r?   re   r#   r#   r$   Ú.test_usecols_diff_positional_int_columns_order/  s    
ÿz:TestReaders.test_usecols_diff_positional_int_columns_orderr   ÚDc                 C  s>   |ddg }t t|ƒƒ|_tjd| d|d�}t ||¡ d S )Nr   r�   r^   rm   ©rn   rw   )ÚrangeÚlenr@   rO   rN   rƒ   r„   )rS   r   rw   r;   r?   re   r#   r#   r$   Ú.test_usecols_diff_positional_str_columns_order?  s    z:TestReaders.test_usecols_diff_positional_str_columns_orderc                 C  s>   t ||ƒ |}t|||ƒ tjd| ddd�}t ||¡ d S ©Nr^   rm   r   ©rn   r8   r‚   ©rS   r0   r"   r   r;   r?   re   r#   r#   r$   Útest_read_excel_without_slicingG  s
    
z+TestReaders.test_read_excel_without_slicingc                 C  sH   t ||ƒ |ddg }t|||ƒ tjd| dddd�}t ||¡ d S )Nr€   r�   r^   rm   r   zA,D:Erv   r‚   r”   r#   r#   r$   Útest_usecols_excel_range_strP  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: E1rk   r^   rm   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 strrk   r^   rm   r‰   r€   rv   ©r&   rq   rr   rO   rN   r}   r#   r#   r$   Útest_index_col_label_errora  s    üz&TestReaders.test_index_col_label_errorc                 C  s<   t jd| ddd�}tg d¢tg dd�d�}t ||¡ d S )Nr^   ÚSheet3r‰   r“   )r   r€   r�   ÚEÚF©rA   ©Úcolumnsr@   )rO   rN   r   r   rƒ   r„   ©rS   r   re   r?   r#   r#   r$   Útest_index_col_strl  s
    ÿzTestReaders.test_index_col_strc                 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 )	Nr^   rš   rˆ   r“   )r�   r›   rœ   ru   ©ZlevelsÚcodesÚnamesrž   )rO   rN   r   r   rƒ   r„   r    r#   r#   r$   Útest_index_col_emptyt  s    ÿþz TestReaders.test_index_col_emptyr8   Nr�   c                 C  sT   t jd| d|d�}tg d¢g d¢gg d¢d�}|rD| |j| ¡}t ||¡ d S )Nr^   ÚSheet4r“   )Úi1ÚaÚx)Úi2ÚbÚy)z
Unnamed: 0Zcol1Zcol2©rŸ   )rO   rN   r   Ú	set_indexrŸ   rƒ   r„   )rS   r   r8   re   r?   r#   r#   r$   Útest_index_col_with_unnamed  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'\]rk   r^   r›   ©rw   r{   r}   r#   r#   r$   Ú%test_usecols_pass_non_existent_column�  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.rk   r^   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test2rm   ©rn   ZaaaaZbbbbbÚTestZTest1r­   ©rO   rN   r   rƒ   r„   )rS   r   Úparsedr?   r#   r#   r$   Útest_excel_stop_iterator   s    z$TestReaders.test_excel_stop_iteratorc                 C  sd   t ||ƒ |dkr.|dkr.| tjjdd�¡ tjd| dd�}ttj	ggdgd	�}t
 ||¡ d S )
Nr   r   z+Calamine can't extract error from ods filesrD   Ztest3rm   r³   r´   r­   )rI   rF   r&   rG   rH   rO   rN   r   ÚnpÚnanrƒ   r„   )rS   r0   r"   r   r¶   r?   r#   r#   r$   Útest_excel_cell_error_na¥  s    
ÿz$TestReaders.test_excel_cell_error_nac           	      C  sŽ   t ||ƒ |}t|||ƒ tjd| ddd�}tjd| ddgdd�}t ||¡ t ||¡ tjd| dddd�}t ||jd d	… ¡ d S )
Nr^   rm   r   r“   rx   r`   ©rn   rz   r8   ©rn   r8   Ú
skipfooteréÿÿÿÿ)rI   rC   rO   rN   rƒ   r„   Úiloc)	rS   r0   r"   r   r;   r?   r…   r†   rŠ   r#   r#   r$   Útest_excel_table²  s    
ÿÿzTestReaders.test_excel_tablec                 C  sV  t ||ƒ t||ƒ}t 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œ¡}d}tj|| dd�}t 	||¡ | 
¡ }d|j|jd df< tj|| dd�}t 	||¡ t|jƒD ]2\}	}
tj|| d|	d�}| |
¡}t 	||¡ qè|d  t¡|d< tj|| ddtid�}t 	||¡ d S )N)r`   r�   éýÿÿÿé   r   )g      ô?g      @gHáz®Gý?g¸…ëQ¸þ?g•Ö&è.>)TFTTF)r`   r�   ru   rÂ   é   )r¨   ru   ÚcÚdÚeiÝ  é
   é   é   iq  r`   é   é   iß  ru   úM8[ú]©Údtype)ÚIntColÚFloatColÚBoolColÚStrColÚStr2ColZDateColZ
test_typesrm   r³   g      @rÔ   r“   rÓ   ©rn   Ú
converters)rI   r=   r   Ú	from_dictr   r   rO   rN   rƒ   r„   ÚcopyÚlocr@   Ú	enumeraterŸ   r®   Úapplyr   )rS   r0   r"   r   rB   r?   ÚbasenameÚactualZfloat_expectedZicolrA   Úexpr#   r#   r$   Útest_reader_special_dtypesÅ  sJ    






û
øúÿ
ÿ
ÿ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)r`   r�   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Ñ   r�   ru   rm   rÕ   )r   r×   r¸   r¹   rO   rN   rƒ   r„   )rS   r   rÜ   r?   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œƒ}t ||¡ t j|| dd	td
œd�}|d  d¡|d< |d  d	¡|d< t	g d¢d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©r`   r�   ru   rÂ   ©ç      @ç      @ç      @ç      @ç      ð?ç       @ç      @©r¨   r«   rÄ   rÅ   Úfloat64Úfloat32)r¨   r«   rÄ   rÎ   r¨   r«   ©Z001Z002Z003Z004r   rÄ   z(Unable to convert column d to type int64rk   rÅ   Úint64)rO   rN   r   r¸   r¹   rƒ   r„   r   Úastyper   r&   rq   r|   )rS   r   rÜ   rÝ   r?   rs   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ã   Ú2rå   c                 C  s&   d}t j|| |d�}t ||¡ d S )Nrí   rÎ   ©rO   rN   rƒ   r„   )rS   r   rÏ   r?   rÜ   rÝ   r#   r#   r$   Útest_reader_dtype_str.  s    z!TestReaders.test_reader_dtype_strc                   s¸  |dv rt  d|› d�¡ ttddgdd�tdd	gd
d�tddgdd�tddgdd�ttjdgdd�ttjdgd
d�ttjdgdd�ttjdgdd�tt d¡gd ƒttjtjgdd�dœ
ƒ‰t |¡�0}ˆj	|ddd� tj
|d|d�}W d   ƒ n1 �s0    Y  |dk�r€dd l‰ddlm‰  t‡ ‡‡fdd„ˆjD ƒƒ}ˆ |d jj ˆjdd �¡ƒ|d< ˆ ˆ d d g¡ƒ|d!< n(ˆ}t||ƒ}|d  d"|› d#�¡|d< t ||¡ d S )$N©r   r   úNo engine for filetype: 'ú'r`   ru   ZInt64rÎ   rð   rò   ZFloat64TFÚbooleanr¨   r«   Ústringé   g      @z
2019-12-31r�   )
r¨   r«   rÄ   rÅ   rÆ   rd   ÚgÚhÚiÚjÚtest©rn   r@   ©rn   Údtype_backendÚpyarrowr   )ÚArrowExtensionArrayc                   s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T)Zfrom_pandas)Úarray)r+   Úcol©r  ÚdfÚpar#   r$   Ú
<dictcomp>n  s   ÿz2TestReaders.test_dtype_backend.<locals>.<dictcomp>r	  Úus)rB   r
  rÌ   rÍ   )r&   Úskipr   r   rO   ÚNAÚ	Timestamprƒ   Úensure_cleanÚto_excelrN   r  Zpandas.arraysr  rŸ   r  Z	_pa_arrayÚcastÚ	timestampr=   rü   r„   )rS   r   r  r"   Ú	file_pathre   r?   rB   r#   r  r$   Útest_dtype_backendP  sH    öÿÿ&
þÿÿ
zTestReaders.test_dtype_backendc                 C  s�   |dv rt  d|› d�¡ ttjdgdtjgdœƒ}t |¡�2}|j|ddd	� tj	|dd
dd�}W d   ƒ n1 sv0    Y  t 
||¡ d S )Nr  r  r  rô   rð   ©r¨   r«   r  Fr  Únumpy_nullablerø   )rn   r  rÏ   )r&   r  r   r¸   r¹   rƒ   r  r  rO   rN   r„   )rS   r   r  r  re   r#   r#   r$   Útest_dtype_backend_and_dtype€  s    ü$z(TestReaders.test_dtype_backend_and_dtypec              	   C  s  |dv rt  d|› d�¡ t d|¡�Ì ttjddgtjd�tjdtjgtjd�d	œƒ}t	 
|¡�0}|j|d
dd� tj|d
dd�}W d   ƒ n1 s˜0    Y  ttddgt |¡d�tdd gt |¡d�d	œƒ}t	j||dd� W d   ƒ n1 sø0    Y  d S )Nr  r  r  zmode.string_storager¨   r«   rÎ   r©   r!  r  Fr  r"  r  )Zcheck_column_type)r&   r  rO   Úoption_contextr   r¸   r  Zobject_r  rƒ   r  r  rN   r   ZStringDtyper„   )rS   r   Zstring_storager  r  re   r?   r#   r#   r$   Útest_dtype_backend_string�  s&    þÿÿ$þÿz%TestReaders.test_dtype_backend_stringzdtypes, exp_valuer`   úa.1rû   c           	      C  st   d}dt i|¥}| ¡ }tj|| |d�}ttdgt d�t|g|sFt nd d�dœƒ}||ksdJ dƒ‚t ||¡ d S )NZdf_mangle_dup_col_dtypesr¨   rÎ   r`   )r¨   r&  zdtype dict changed)ÚobjectrØ   rO   rN   r   r   rƒ   r„   )	rS   r   ZdtypesZ	exp_valuerÜ   Z
dtype_dictZdtype_dict_copyre   r?   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µ   )rS   r   rÜ   rÝ   r?   r#   r#   r$   Útest_reader_spaces¾  s    ÿÿzTestReaders.test_reader_spaceszbasename,expectedzgh-35802ZCOLUMNzTest (1)zgh-36122z
got 2nd sar­   c                 C  s6   |dkrt  d|› �¡ t || ¡}t ||¡ d S )Nr   zSkipped for engine: )r&   r  rO   rN   rƒ   r„   )rS   r"   r   rÜ   r?   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)rO   rN   rƒ   Úassert_contains_allÚkeysÚlist©rS   r   rÜ   ÚdfsÚexpected_keysr#   r#   r$   Útest_reading_all_sheetsà  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+  )r�   r,  r,  r³   )rO   rN   r1  Úsetrƒ   r/  r0  r�   )rS   r   rÜ   r4  r3  r#   r#   r$   Ú%test_reading_multiple_specific_sheetsí  s    z1TestReaders.test_reading_multiple_specific_sheetsc                 C  s2   d}t j|| d d�}g d¢}t || ¡ ¡ d S )NÚblank_with_headerr³   )rm   rx   rš   )rO   rN   rƒ   r/  r0  r2  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Úblankrm   r³   )rO   rN   rƒ   r„   r   )rS   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_2r­   r8  rm   r³   )r   rO   rN   rƒ   r„   )rS   r   r?   rÝ   r#   r#   r$   Ú!test_read_excel_blank_with_header	  s    z-TestReaders.test_read_excel_blank_with_headerc                 C  sŽ   t jtdd��& tjd| dgd d� W d   ƒ n1 s:0    Y  t jtdd��( tjd| dd„ d d	� W d   ƒ n1 s€0    Y  d S )
Nz \(sheet: Sheet1\)$rk   r8  r`   )Úheaderrn   r^   c                 S  s   dd S )Nr`   r   r#   ré   r#   r#   r$   rê     rë   zHTestReaders.test_exception_message_includes_sheet_name.<locals>.<lambda>)rw   rn   )r&   rq   r|   rO   rN   ÚZeroDivisionError©rS   r   r#   r#   r$   Ú*test_exception_message_includes_sheet_name  s    4z6TestReaders.test_exception_message_includes_sheet_namez-ignore:Cell A4 is marked:UserWarning:openpyxlc                 C  s–   t ||ƒ tt d¡dgt d¡dgddggddgd	�}|d
krT| tjjdd�¡ |d u rx|dv rx| tjjdd�¡ t d| ¡}t	 
||¡ d S )Nz
2016-03-12zMarc Johnsonz
2016-03-16z
Jack Blackg@Œµx¯DzTimothy BrownZDateColWithBigIntZ	StringColr­   r   zMaybe not supported by openpyxlrD   )r   r   z)Defaults to openpyxl, maybe not supportedZtestdateoverflow)rI   r   rO   r  rF   r&   rG   rH   rN   rƒ   r„   )rS   r0   r"   r   r?   re   r#   r#   r$   Útest_date_conversion_overflow  s$    
ýú	ÿÿz)TestReaders.test_date_conversion_overflowc           
      C  sf   t ||ƒ d}d}|}t|||ƒ tj|| |dd�}tj|| d|d�}	t ||¡ t |	|¡ d S ©Nr^   rm   r   r“   )r8   rn   r‚   )
rS   r0   r   r"   r;   Úfilenamern   r?   r…   r†   r#   r#   r$   Útest_sheet_name1  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 )Nr^   rm   r   r“   r_   )rO   rN   rb   rƒ   r„   )rS   r   Úpthr?   rd   rÝ   r#   r#   r$   Útest_excel_read_bufferB  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 )Nrg   zUnknown engine: foork   rç   rL   r{   )rS   Z
bad_enginer#   r#   r$   Útest_bad_engine_raisesI  s    z"TestReaders.test_bad_engine_raisesrn   ru   r   r¦   rm   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 foundrk   r:  r³   r{   )rS   r   rn   rs   r#   r#   r$   Útest_bad_sheetname_raisesN  s    z%TestReaders.test_bad_sheetname_raisesc                 C  sT   d|› �}d  g d¢¡}tjt|d�� t |¡ W d   ƒ n1 sF0    Y  d S )Nrg   ú|)z(No such file or directoryu   æ²¡æœ‰é‚£ä¸ªæ–‡ä»¶æˆ–ç›®å½•zFile o directory non esistente)rk   )Újoinr&   rq   ÚFileNotFoundErrorrO   rN   )rS   r   Zbad_filerl   r#   r#   r$   Útest_missing_file_raisesX  s    
ÿz$TestReaders.test_missing_file_raisesc                 C  sš   d}|d u rt }d}nD|dkr4ddlm} |}d}n&|dkrRddlm} |}d	}nt}d
}tj||d�� t 	t
|ƒ¡ W d   ƒ n1 sŒ0    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'r   ©ÚCalamineErrorzCannot detect file formatzFile is not a zip filerk   )r|   r   rN  r   rP  r	   r&   rq   rO   rN   r   )rS   r"   Z
bad_streamÚerrorrs   rN  rP  r#   r#   r$   Útest_corrupt_bytes_raisese  s$    ÿÿz%TestReaders.test_corrupt_bytes_raisesc                 C  sh   t d| dƒ� }|j| ¡ d� W d   ƒ n1 s40    Y  t |j¡}t d| ¡}t ||¡ d S )Nr^   r_   )Úcontent)rb   Zserve_contentÚreadrO   rN   Úurlrƒ   r„   )rS   Z
httpserverr   rd   Ú	url_tableÚlocal_tabler#   r#   r$   Útest_read_from_http_url€  s
    .z#TestReaders.test_read_from_http_urlc                 C  s~   t d| dƒ�"}|jd| |d� W d   ƒ n1 s60    Y  d|j› d�| }tj||d�}t d| ¡}t ||¡ d S )Nr^   r_   ©ÚKeyZBodyús3://ú/test1)Zstorage_options)rb   Ú
put_objectrA   rO   rN   rƒ   r„   )rS   r   Ús3_public_bucketÚs3sord   rU  rV  rW  r#   r#   r$   Útest_read_from_s3_url‰  s    0z!TestReaders.test_read_from_s3_urlc           	      C  s¸   t d| dƒ�"}|jd| |d� W d   ƒ n1 s60    Y  dd l}|jf i |¤Ž}|  d|j› d�| ¡�}t |¡}W d   ƒ n1 s�0    Y  t d| ¡}t ||¡ d S )Nr^   r_   rY  r   r[  r\  )	rb   r]  Ús3fsZS3FileSystemrA   rO   rN   rƒ   r„   )	rS   r   r^  r_  rd   ra  Zs3rV  rW  r#   r#   r$   Útest_read_from_s3_object–  s    0(z$TestReaders.test_read_from_s3_objectc                 C  s|   t j |dddƒd| ¡}t |¡}zt d| ¡}W n4 tyj   d t ¡ ¡ ¡ }t	 
d|› �¡ Y n0 t ||¡ d S )Nr4   r5   rM   r^   zfile://localhost/ú zfailing on )ÚosÚpathrK  rO   rN   r   ÚplatformÚunameÚstripr&   r  rƒ   r„   )rS   r   r9   Z
localtablerW  rV  Zplatform_infor#   r#   r$   Útest_read_from_file_url§  s    
z#TestReaders.test_read_from_file_urlc                 C  sD   d| }t j|ddd�}td| ƒ}t j|ddd�}t ||¡ d S r’   )rO   rN   r   rƒ   r„   )rS   r   Ústr_pathr?   Ú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   )Úlocalr^   rm   r“   )	Zpy.pathrm  rd  re  rK  rO   rN   rƒ   r„   )rS   r   Z	LocalPathrj  r?   rk  rÝ   r#   r#   r$   Útest_read_from_py_localpathÀ  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 )Nr^   r_   rm   r   r“   )rd  re  rK  rb   rO   rN   rT  )rS   r   rj  rd   r©   r#   r#   r$   Útest_close_from_py_localpathÍ  s
    z(TestReaders.test_close_from_py_localpathc                 C  sü   t ||ƒ |dkr.|dkr.| 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   z0ODS file contains bad datetime (seconds as text)rD   ZTimer`   r�   ru   é-   é8   i † rÂ   é   é1   i@ r  é   é*   ià“ é   é9   é#   i€ é	   é)   é   i ¡ é   é   é   iÀ'	 rË   i`®
 é5   i 5 é   é%   r   i » é   é   é6   Z
times_1900rm   r³   Z
times_1904)rI   rF   r&   rG   rH   r   r×   r   rO   rN   rƒ   r„   )rS   r0   r"   r   r?   rÝ   r#   r#   r$   Útest_reader_secondsÖ  s6    
ÿÿ

õÿÿzTestReaders.test_reader_secondsc           	   	   C  sJ  t ||ƒ t||ƒ}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�}||d
   d|› d�¡||d
 < tj|dddgdd�}t	 
||¡ ||_g d¢|_tj|dddgd�}t	 
||¡ ||_tj|dddgddgd�}t	 
||¡ 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 )*Nrg   Úbarr¨   r«   Útestmultiindexr`   rð   ú
2015-01-01Tr�   rñ   ú
2015-01-02Fru   rò   ú
2015-01-03rÂ   ró   ú
2015-01-04r­   rÌ   rÍ   Ú	mi_columnr   )rn   r=  r8   r÷   Úmi_indexr“   Úboth©rn   r8   r=  Úilvl1Úilvl2Zmi_index_nameÚc1Úc2Úmi_column_name)ÚlevelZname_with_intZ	both_nameZboth_name_skiprows)rn   r8   r=  rz   )rI   r=   r   Úfrom_productr   rO   r  rü   rN   rƒ   r„   r@   rŸ   Z	set_namesr1  r�   Z
set_levels)	rS   r0   r"   r   rB   ÚmiÚmi_filer?   rÝ   r#   r#   r$   Útest_read_excel_multiindexú  sn    

üù	"ÿ
ÿ
ÿÿÿû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ê   t ||ƒ d| }tjddgddggddgd�}t||ƒ}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�}	|	|d   d|› d�¡|	|d < tj	||dd	gdd	gd�}
t
 |
|	¡ d S )Nr‡  rg   r†  r¨   r«   r’  r“  ©r¤   r`   rð   rˆ  Tr�   rñ   r‰  Fru   rò   rŠ  rÂ   ró   r‹  )rg   rg   r†  r†  r�  r‘  rž   rÌ   rÍ   r   r�  )rI   r   r–  r=   r   rO   r  Úfrom_arraysrü   rN   rƒ   r„   )rS   r0   r"   r   rn   Zidx_lvl2r˜  r—  rB   r?   re   r#   r#   r$   Ú+test_read_excel_multiindex_blank_after_nameN  s0    

ü
þø"ü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 )Nr‡  Úindex_col_noner   r`   ©rn   r=  ©r‰   r   ©ÚkeyÚvalrî   r�   r­   )rO   rN   r   r–  r   rƒ   r„   )rS   r   r˜  re   Zexp_columnsr?   r#   r#   r$   Ú&test_read_excel_multiindex_header_onlyv  s
    z2TestReaders.test_read_excel_multiindex_header_onlyc           	      C  sš  d| }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d�}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	 
||¡ d S )NZtest_index_name_pre17)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R4C4rÎ   )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   r`   r�   ru   rÂ   rÃ   r¢   r�   ©r@   rŸ   Zsingle_namesr   r“   Zmulti_namesr`   )r¤  r¥  r¦  r§  r¨  )r©  rª  r«  r¬  r­  )r   r`   r�   ru   rÂ   Zsingle_no_namesZmulti_no_names)r¸   r  r¹   r'  r   r   r   rO   rN   rƒ   r„   r@   )	rS   r   rC  r5   rŸ   r—  Úsir?   rÝ   r#   r#   r$   Útest_excel_old_index_format�  sf    ú÷þúÿûÿ	þú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)TFrk   r^   ©r=  r˜   )rS   r   rs   Úargr#   r#   r$   Útest_read_excel_bool_header_argÊ  s    z+TestReaders.test_read_excel_bool_header_argc              	   C  st  t ||ƒ t||ƒ}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�}|d  d|› 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�}|d  d|› d�¡|d< t ||¡ d S )NÚtestskiprowsÚskiprows_listr   r�   ©rn   rz   r`   rð   rˆ  Trñ   r‰  Fru   rò   rŠ  rÂ   ró   r‹  r÷   r­   rÄ   rÌ   rÍ   c                 S  s   | dv S ©N)r   r�   r#   ré   r#   r#   r$   rê   ñ  rë   z6TestReaders.test_read_excel_skiprows.<locals>.<lambda>)rn   rz   r¤   )rI   r=   rO   rN   r   r  rü   rƒ   r„   r¸   r  ©rS   r0   r"   r   rB   rÝ   r?   r#   r#   r$   Útest_read_excel_skiprowsÑ  sT    

ÿüù	ýýüüù	z$TestReaders.test_read_excel_skiprowsc                 C  s†   t ||ƒ t||ƒ}tjd| ddd„ d�}tddt d¡d	gd
dt d¡dggg d¢d�}|d  d|› d�¡|d< t ||¡ d S )Nr´  rµ  c                 S  s   | dvS )N)r`   ru   rÃ   r#   ré   r#   r#   r$   rê     rë   zFTestReaders.test_read_excel_skiprows_callable_not_in.<locals>.<lambda>r¶  r`   rð   rˆ  Tru   rò   rŠ  Fr÷   r­   rÄ   rÌ   rÍ   )	rI   r=   rO   rN   r   r  rü   rƒ   r„   r¸  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Ã   r^   ©Únrowsrÿ   )rS   r   Únum_rows_to_pullrÝ   r?   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 )Nr^   rÇ   r»  )rO   rN   r�   rƒ   r„   )rS   r   r?   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 >=0rk   r^   ræ   r»  r{   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,skiprowsr‡  rŒ  r�  rŽ  r”  r´  rµ  c                 C  s   | dv S r·  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]).
        )rn   r=  r8   rz   Nru   )rn   r=  r8   rz   r¼  )rO   rN   r¿   rƒ   r„   )	rS   r   rC  rn   r=  r8   rz   r?   rÝ   r#   r#   r$   Útest_read_excel_nrows_params3  s$    ûúúz(TestReaders.test_read_excel_nrows_paramsc                 C  sD   t jtdd��" t d| dd¡ W d   ƒ n1 s60    Y  d S )Nzbut 3 positional argumentsrk   r^   rm   r   r˜   r?  r#   r#   r$   Útest_deprecated_kwargsW  s    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 )Nr‡  ))r   r   r   ©ru   rÂ   rÃ  ))r‰   r‰   r   ©r`   r�   rÄ  )r   r`   rš  )r�   ru   r®  r�  r   r`   r�  )r   Úfrom_tuplesr   rO   rN   rƒ   r„   )rS   r   Ú	file_namer5   Úidxr?   re   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      à?r`   r�   Únumbersr­   )r¸   r¹   r   rO   rN   rƒ   r„   )rS   r   rÆ  r5   r?   re   r#   r#   r$   Útest_one_col_noskip_blank_lineh  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 )Nr‡  )r¨   r‰   )r«   r   r`   ru   r�   rÂ   r­   Zmi_column_empty_rowsr   rž  )	r   rÅ  r¸   r¹   r   rO   rN   rƒ   r„   )rS   r   rÆ  rŸ   r5   r?   re   r#   r#   r$   Ú test_multiheader_two_blank_linesp  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)ru   ru   N)rO   rN   Úshape)rS   r   rÆ  re   r#   r#   r$   Útest_trailing_blanks{  s    
z TestReaders.test_trailing_blanksc                 C  sr   |dkrt  d¡ |dkr.| t jjdd�¡ t jtdd��" tjd| d	d
� W d   ƒ n1 sd0    Y  d S )Nr   ú*chartsheets do not exist in the ODF formatr   ú4pyxlsb can't distinguish chartsheets from worksheetsrD   z"Worksheet named 'Chart1' not foundrk   Ú
chartsheetZChart1r³   ©	r&   r  rF   rG   rH   rq   r|   rO   rN   ©rS   r0   r"   r   r#   r#   r$   Útest_ignore_chartsheets_by_str„  s    
ÿÿz*TestReaders.test_ignore_chartsheets_by_strc                 C  sr   |dkrt  d¡ |dkr.| t jjdd�¡ t jtdd��" tjd| d	d
� W d   ƒ n1 sd0    Y  d S )Nr   rÎ  r   rÏ  rD   z0Worksheet index 1 is invalid, 1 worksheets foundrk   rÐ  r`   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ú,r`   )Údecimalrz   )r`   gAñcÌ�Ä—@gÕ	h¢ïÖAÚABCZpoig2Ø[j‡ô@)r�   gHáz®G^@g{®GáÍ@ZDEFZuytg¥Uq&Ø?)ru   g%�•Cq‹@gçû©ñÖ^ú@ZGHIZrezgÈ)¬ç³â@)ZIdZNumber1ZNumber2ZText1ZText2ZNumber3r­   rµ   r    r#   r#   r$   Útest_euro_decimal_format   s    ýúz$TestReaders.test_euro_decimal_format)YÚ__name__Ú
__module__Ú__qualname__r&   ÚfixturerV   rf   rt   r~   r‡   r‹   rG   Ú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*  r5  r7  r9  r;  r<  r@  ÚfilterwarningsrA  rD  rF  rG  rI  rM  rR  ÚnetworkÚ
single_cpurX  ÚtdZskip_if_not_us_localer`  rb  Zslowri  rl  Ú
skip_if_norn  ro  r…  r™  rœ  r£  r°  r³  r¹  rº  r¾  r¿  rÀ  rÁ  rÂ  rÈ  rÊ  rË  rÍ  rÓ  rÔ  rØ  r#   r#   r#   r$   rJ   ™   s
  

3(ÿ

	

	2üÿþüÿþôþ
0
þþ



þ




	$Tþþ
!I6úþ
	rJ   c                
   @  sþ   e Zd Zd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d$d%„ Zej	 
d&d'd(g¡d)d*„ ƒZd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3S )4ÚTestExcelFileReadc              	   C  sx   d}t jt|dd��P td| dƒ�"}tj| ¡ |d� W d   ƒ n1 sL0    Y  W d   ƒ n1 sj0    Y  d S )Nz�Passing bytes to 'read_excel' is deprecated and will be removed in a future version. To read from a byte string, wrap it in a `BytesIO` object.F)rl   Zraise_on_extra_warningsr^   r_   rL   )rƒ   Úassert_produces_warningÚFutureWarningrb   rO   rN   rT  )rS   r"   r   rs   rd   r#   r#   r$   Útest_deprecate_bytes_input¯  s    ÿÿz,TestExcelFileRead.test_deprecate_bytes_inputTrK   c                 C  s2   t tj|d�}| |dddƒ¡ | td|¡ dS )zH
        Change directory and set engine for ExcelFile objects.
        rL   r4   r5   rM   ra   N)r   rO   ra   rP   rQ   rR   r#   r#   r$   rV   ½  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   r[   r^   r`   )rO   ra   r"   )rS   r   r"   rc   rM   re   r?   r#   r#   r$   rf   Æ  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test4rm   FÚapple©rn   Zkeep_default_naZ	na_valuesr  r`   Úrabbitr´   r­   TÚtest5ú1.#QNANr¹   )rO   ra   rN   r   r¸   r¹   rƒ   r„   )rS   r   rM   r¶   r?   r#   r#   r$   Útest_excel_passes_naØ  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ê  rm   Trç  rè  Frë  r`   r¹   ré  r´   r­   )rO   ra   rN   r¸   r¹   r   rƒ   r„   )rS   r   rí  rX   rM   r¶   r?   r#   r#   r$   Útest_excel_passes_na_filterþ  s$    ÿüû$z-TestExcelFileRead.test_excel_passes_na_filterc           
      C  sœ  t ||ƒ |}t|||ƒ t d| ¡�4}tj|ddd�}tj|ddgdd�}W d   ƒ n1 sb0    Y  t ||¡ t ||¡ t d| ¡�0}|jddd�}|jddgdd�}W d   ƒ n1 sÈ0    Y  t ||¡ t ||¡ t d| ¡�"}tj|dddd�}	W d   ƒ n1 �s"0    Y  t |	|jd d	… ¡ t d| ¡� }|jdddd
�}	W d   ƒ n1 �sx0    Y  t |	|jd d	… ¡ d S )Nr^   r   r“   r`   r»   )r8   )rz   r8   r¼   r¾   )r8   r½   )	rI   rC   rO   ra   rN   rƒ   r„   rZ   r¿   )
rS   r0   r"   r   r;   r?   rM   r…   r†   rŠ   r#   r#   r$   Útest_excel_table_sheet_by_index  s&    
2020z1TestExcelFileRead.test_excel_table_sheet_by_indexc                 C  s¶   t ||ƒ |}t|||ƒ d}d}t || ¡�}|j|dd�}	W d   ƒ n1 sT0    Y  t || ¡�}|jd|d�}
W d   ƒ n1 s�0    Y  t |	|¡ t |
|¡ d S rB  )rI   rC   rO   ra   rZ   rƒ   r„   )rS   r0   r"   r   r;   r?   rC  rn   rM   Z	df1_parseZ	df2_parser#   r#   r$   rD  2  s    
,,z!TestExcelFileRead.test_sheet_namern   ru   r   r¦   rm   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 rH  )r&   rq   r|   rO   ra   rZ   )rS   r   rn   rs   rM   r#   r#   r$   rI  D  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 )Nr^   rm   r   ©rn   r8   r"   r_   r“   )rO   rN   rb   ra   rƒ   r„   )rS   r"   r   rE  r?   rd   r]   rÝ   r#   r#   r$   rF  O  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 )Nr^   r_   rm   r   rð  )rb   rO   ra   rN   Úclosed)rS   r"   r   rd   r\   r#   r#   r$   Útest_reader_closes_fileY  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 ExcelFiler^   rk   rg   rL   )rO   ra   r&   rq   r|   rN   )rS   r   rs   Zxlr#   r#   r$   Útest_conflicting_excel_enginesa  s    z0TestExcelFileRead.test_conflicting_excel_enginesc                 C  sj   t jd| |d�}td| dƒ�}| ¡ }W d   ƒ n1 s>0    Y  t jt|ƒ|d�}t ||¡ d S )Nr^   rL   r_   )rO   rN   rb   rT  r   rƒ   r„   )rS   r"   r   r?   rd   r5   rÝ   r#   r#   r$   Útest_excel_read_binaryi  s
    &z(TestExcelFileRead.test_excel_read_binaryc                 C  s^   t d| dƒ�}tj||d�}W d   ƒ n1 s20    Y  tjd| |d�}t ||¡ d S )Nr^   r_   rL   )rb   rO   rN   rƒ   r„   )rS   r   r"   rd   re   r?   r#   r#   r$   Ú%test_excel_read_binary_via_read_excels  s    ,z7TestExcelFileRead.test_excel_read_binary_via_read_excelc              	   C  sn   t ddƒ�P}tjtdd��" tj|ddgd� W d   ƒ n1 sB0    Y  W d   ƒ n1 s`0    Y  d S )Nzdf_header_oob.xlsxr_   zexceeds maximumrk   r   r`   r±  )rb   r&   rq   r|   rO   rN   )rS   r"   rd   r#   r#   r$   Ú)test_read_excel_header_index_out_of_rangez  s    z;TestExcelFileRead.test_read_excel_header_index_out_of_rangerC  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I2r�   rŸ  )r‰   zB.1ZI11ZI12rš  r`   ru   rû   )r@   rŸ   rÏ   rm   r   r�  )r   r   rÅ  r   rO   rN   rƒ   r„   )rS   rC  rÇ  Úcolsr?   re   r#   r#   r$   Útest_header_with_index_col€  s    ÿz,TestExcelFileRead.test_header_with_index_colc                 C  sÊ   t ||ƒ d| }t |¡�&}tj|ddgd|d�}W d   ƒ n1 sH0    Y  t||ƒ}tjddgd|› d�d	�}tj|d d… |dd … g|d  ¡ |d  ¡ gd
�}	t	g g |	d�}
t
 |
|¡ d S )NZtest_datetime_mir   r`   )r=  r8   r"   z
2020-02-29z
2020-03-01rÌ   rÍ   rÎ   rš  r®  )rI   rO   ra   rN   r=   ZDatetimeIndexr   r›  Zto_pydatetimer   rƒ   r„   )rS   r0   r"   r   rd   rM   rÝ   rB   ZdtiZexpected_column_indexr?   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 *rk   zio.excelz.readerÚabc)r&   rq   r|   rO   r$  r?  r#   r#   r$   Útest_engine_invalid_option   s    z,TestExcelFileRead.test_engine_invalid_optionc                 C  sp   |dkrt  d¡ |dkr.| t jjdd�¡ t d| ¡� }|jdgksNJ ‚W d   ƒ n1 sb0    Y  d S )Nr   rÎ  r   rÏ  rD   rÐ  rm   )r&   r  rF   rG   rH   rO   ra   Zsheet_names)rS   r0   r"   r   rM   r#   r#   r$   Útest_ignore_chartsheets¦  s    
ÿÿz)TestExcelFileRead.test_ignore_chartsheetsc              
   C  sî   t f}|d u r t d|› �¡ n8|dkr>dd l}t |jjf}n|dkrXddlm} |f}t 	d|› �¡�r}t
|ƒjdd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 )NzInvalid test for engine=r   r   r   rO  Zcorruptzutf-8)ÚencodingFrL   )r	   r&   r  r   ZbiffhrN  r   rP  rƒ   r  r   Ú
write_texträ  rO   ra   )rS   r"   r   Úerrorsr   rP  Úfiler#   r#   r$   Útest_corrupt_files_closed³  s     z+TestExcelFileRead.test_corrupt_files_closedN)rÙ  rÚ  rÛ  ræ  r&   rÜ  rV   rf   rì  rG   rÝ  rî  rï  rD  rI  rF  rò  ró  rô  rõ  rö  rù  rú  rü  rý  r  r#   r#   r#   r$   rã  ®  s4   

&
þ




rã  )8Ú
__future__r   r   r   Ú	functoolsr   r4   r   rd  Úpathlibr   rf  ro   Úurllib.errorr   Úzipfiler	   Únumpyr¸   r&   Zpandas.compatr
   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrá  ZpandasrO   r   r   r   r   r   Zpandas._testingZ_testingrƒ   rG   rà  Z
pytestmarkr*   r'   râ  Zengine_paramsr%   r)   rÜ  r   r1   r"   r   r;   r=   rC   rI   rJ   rã  r#   r#   r#   r$   Ú<module>   sˆ   ÿþÿþÿþè
þù	



		          