o
    Û­j¼Ö  ã                   @   s¢  d dl mZm Z mZ d dlmZ d dlmZ d dlZd dlZd dl	Z
d dlZd dlmZ d dlm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 d d	l m!Z!m"Z"m#Z#m$Z$m%Z% d d
l&m'Z' eƒ rtej(j)Z*de+de+fdd„Z,ej-dd„ ƒZ.ej-ddgd�dd„ ƒZ/ej-dd„ ƒZ0ej-dd„ ƒZ1ej( 2dej3de 4d¡e 4d¡gd�ej3de 4d¡e 4d¡gd�ej3de 4d¡e 4d¡gd�ej3d e 4d!¡d�g¡G d"d#„ d#ƒƒZ5ej( 2d$ej3dde 4d¡e 4d¡gd�ej3dde 4d¡e 4d¡gd�ej3dde 4d¡e 4d¡gd�ej3d!d e 4d!¡d�g¡ej( 6d¡G d%d&„ d&ƒƒƒZ7G d'd(„ d(ƒZ8e 4d¡e 4d¡G d)d*„ d*ƒƒƒZ9ej( 2d+e' :¡ ¡d,d-„ ƒZ;dS ).é    )ÚdateÚdatetimeÚ	timedelta)Úpartial)ÚBytesION)Úis_platform_windows)ÚPY310)Úimport_optional_dependency)Ú	DataFrameÚIndexÚ
MultiIndexÚ
date_rangeÚoption_context)Ú	ExcelFileÚExcelWriterÚ_OpenpyxlWriterÚ_XlsxWriterÚregister_writer)Ú_writersÚpathÚreturnc                 C   s   dS )NÚns© ©r   r   r   ú_/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/io/excel/test_writers.pyÚget_exp_unit*   ó   r   c                 C   s   | dd… S )z?
    Returns the first ten items in fixture "float_frame".
    Né
   r   )Úfloat_framer   r   r   Úframe.   s   r   TF)Úparamsc                 C   s   | j S ©N)Úparam)Úrequestr   r   r   Úmerge_cells6   s   r$   c                 c   s8   � t  | ¡�}|V  W d  ƒ dS 1 sw   Y  dS )z9
    Fixture to open file for use in each test case.
    N)ÚtmÚensure_clean)ÚextÚ	file_pathr   r   r   r   ;   s   €"ÿc                 c   sJ   � d|  d¡› d�}t|| ƒ� dV  W d  ƒ dS 1 sw   Y  dS )aM  
    Fixture to set engine for use in each test case.

    Rather than requiring `engine=...` to be provided explicitly as an
    argument in each test, this fixture sets a global option to dictate
    which engine should be used to write Excel files. After executing
    the test it rolls back said change to the global option.
    z	io.excel.Ú.z.writerN)Ústripr   )Úenginer'   Úoption_namer   r   r   Ú
set_engineD   s
   €
"ÿr-   r'   ú.xlsxÚopenpyxlÚxlrd©Úmarksz.xlsmÚ
xlsxwriterz.odsÚodfc                	   @   s  e Zd Zej ddeejgd ƒfdedejgd iƒfg¡dd„ ƒZ	ej ddedgejgd  ƒfdeejgd ƒfg¡d	d
„ ƒZ
dd„ Zdd„ Zdd„ Zej dddg¡ej dddg¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZdd„ Zdd„ ZdS )ÚTestRoundTripzheader,expectedNé   r   z
Unnamed: 0é   c                 C   s„   d}t g d¢g d¢g d¢g d¢gƒ}t |¡�}|j||ddd� tj||dg|d	�}W d   ƒ n1 s5w   Y  t ||¡ d S )
NÚ	no_header©Ú é   éd   ©r:   é   éÈ   ©r:   r7   i,  ©r:   r6   i�  F©Ú
sheet_nameÚindexÚheaderr   ©rC   ÚusecolsrE   ©r
   r%   r&   Úto_excelÚpdÚ
read_excelÚassert_frame_equal©Úselfr'   rE   ÚexpectedÚfilenameÚdfr   Úresultr   r   r   Ú!test_read_one_empty_col_no_header_   s    
ÿþz/TestRoundTrip.test_read_one_empty_col_no_headerc                 C   s„   d}t g d¢g d¢g d¢g d¢gƒ}t |¡�}|j|dddd� tj||d	g|d
�}W d   ƒ n1 s5w   Y  t ||¡ d S )NÚwith_headerr9   r=   r@   rA   FTrB   r   rF   rH   rM   r   r   r   Ú#test_read_one_empty_col_with_headerp   s    
ÿþz1TestRoundTrip.test_read_one_empty_col_with_headerc              	   C   s  t ddgddgddggddgd	�}t |¡�i}t|ƒ�}|j|d
ddd� |j|ddd� W d   ƒ n1 s7w   Y  ddg|_t|ƒ�}tj|d
d ddgd�}tj|dd ddgd�}W d   ƒ n1 sfw   Y  t 	||¡ t 	||¡ W d   ƒ d S 1 s‚w   Y  d S )Nr;   Úfoor>   Úbarr7   ÚbazÚaÚb©ÚcolumnsÚData_no_headF)rC   rE   rD   ÚData_with_head©rC   rD   ÚAÚB)rC   rE   Únames)rC   Ú	index_colrb   )
r
   r%   r&   r   rI   r\   r   rJ   rK   rL   )rN   r'   ÚrefdfÚpthÚwriterÚreaderÚxlsdf_no_headÚxlsdf_with_headr   r   r   Ú"test_set_column_names_in_parameter€   s.   "
ÿü

ÿüü"ëz0TestRoundTrip.test_set_column_names_in_parameterc           
   	      sÖ   dd„ ‰ g d¢}‡ fdd„|D ƒ}t t||ƒƒ}t |¡�D}t|ƒ�}| ¡ D ]\}}|j||d� q'W d   ƒ n1 s=w   Y  tj||dd�}|D ]}	t 	||	 ||	 ¡ qLW d   ƒ d S 1 sdw   Y  d S )	Nc                 S   s"   g d¢g d¢}}t ||| gd�S )N)é   é   é!   ©r;   r>   r7   r[   )r
   )Úcol_sheet_nameÚdÚir   r   r   Útdf¡   s   zDTestRoundTrip.test_creating_and_reading_multiple_sheets.<locals>.tdf)ÚAAAÚBBBÚCCCc                    s   g | ]}ˆ |ƒ‘qS r   r   )Ú.0Ús©rr   r   r   Ú
<listcomp>§   ó    zKTestRoundTrip.test_creating_and_reading_multiple_sheets.<locals>.<listcomp>©rC   r   ©rC   rc   )
ÚdictÚzipr%   r&   r   ÚitemsrI   rJ   rK   rL   )
rN   r'   ÚsheetsÚdfsre   ÚewÚ	sheetnamerQ   Údfs_returnedrw   r   rx   r   Ú)test_creating_and_reading_multiple_sheetsœ   s   
ÿÿÿ"ùz7TestRoundTrip.test_creating_and_reading_multiple_sheetsc                 C   s  t  |¡�w}tddiddiddiddidœƒ}tddiddiddiddidœƒ}| |¡ tj|ddgdd�}t  ||¡ tddiddiddiddidœƒ}tddiddiddiddid	œƒ}| |¡ tj|ddgdd�}t  ||¡ W d   ƒ d S 1 sw   Y  d S )
Nr   r;   r7   é   )©ÚOneÚx©ÚTwoÚX©r‹   ÚY)ÚZeror:   )r‡   rŠ   r�   )r�   zUnnamed: 4_level_1©rE   rc   ))ÚBegr:   ©ÚMiddler‰   ©ÚTailrŒ   ©r•   rŽ   ))r‘   zUnnamed: 1_level_1r’   r”   r–   ©r%   r&   r
   rI   rJ   rK   rL   )rN   r'   r   rQ   rO   Úactualr   r   r   Ú&test_read_excel_multiindex_empty_level´   sH   üÿ	üÿ
	üÿ	üÿ
	"Õz4TestRoundTrip.test_read_excel_multiindex_empty_levelÚc_idx_namesrY   Úr_idx_namesrZ   Úc_idx_levelsr;   Úr_idx_levelsc                    s¶  t  |¡�Ì}tˆƒp|dk}|dkrttdƒƒ}	ntjdd„ t|ƒD ƒ‡ fdd„t|ƒD ƒd�}	|dkr;ttdƒƒ}
ntjdd„ t|ƒD ƒ‡fd	d„t|ƒD ƒd�}
td
t	 
d¡ |	|
d�}| |¡ tj|tt|ƒƒtt|ƒƒd�}t j|||d� t	j|jdd d …f< | |¡ tj|tt|ƒƒtt|ƒƒd�}t j|||d� t	j|jdd d …f< | |¡ tj|tt|ƒƒtt|ƒƒd�}t j|||d� W d   ƒ d S 1 sÔw   Y  d S )Nr;   Úabcdec                 S   ó   g | ]}t d ƒ‘qS ©é   ©Úrange©rv   Ú_r   r   r   ry   ô   rz   z@TestRoundTrip.test_excel_multindex_roundtrip.<locals>.<listcomp>c                    ó   g | ]	}ˆ › d |› �‘qS ©ú-r   ©rv   rq   )rš   r   r   ry   õ   ó    ©rb   Úghijkc                 S   rŸ   r    r¢   r¤   r   r   r   ry   û   rz   c                    r¦   r§   r   r©   )r›   r   r   ry   ü   rª   çš™™™™™ñ?)r¡   r¡   ©r\   rD   )rc   rE   )Úcheck_namesr   éÿÿÿÿ)r%   r&   Úboolr   Úlistr   Úfrom_arraysr£   r
   ÚnpÚonesrI   rJ   rK   rL   ÚnanÚiloc)rN   r'   rš   r›   rœ   r�   r#   re   r¯   r\   rD   rQ   Úactr   )rš   r›   r   Útest_excel_multindex_roundtripã   sV   þþý


ý


ý


ý"Îz,TestRoundTrip.test_excel_multindex_roundtripc              	   C   s   t g d¢tddd�dœƒ}| ¡ }|d j d¡|d< t |¡�f}| |¡ tj	|dd	�}t 
||¡ tj	|dgdd
�}t 
||¡ dd„ }tjtddd�� tj	|dg|dd�}W d   ƒ n1 scw   Y  t 
||¡ tj	|dgddd�}t 
||¡ W d   ƒ d S 1 s‰w   Y  d S )Nrn   z
2012-01-01r7   )Úperiods)ÚcolÚdate_stringsr¼   ú%m/%d/%Yr   ©rc   )Úparse_datesrc   c                 S   s   t  | d¡S )Nr½   )r   Ústrptime©r‰   r   r   r   Ú<lambda>0  s    z;TestRoundTrip.test_read_excel_parse_dates.<locals>.<lambda>zuse 'date_format' insteadF)ÚmatchÚraise_on_extra_warnings)r¿   Údate_parserrc   )r¿   Údate_formatrc   )r
   r   ÚcopyÚdtÚstrftimer%   r&   rI   rJ   rK   rL   Úassert_produces_warningÚFutureWarning)rN   r'   rQ   Údf2re   ÚresrÅ   r   r   r   Útest_read_excel_parse_dates  s<   ÿ
ýüû
ÿ"çz)TestRoundTrip.test_read_excel_parse_datesc                 C   sª   t  tdƒtjt d¡ddd�g¡}ttdƒ|d�}t |¡�}| 	|¡ tj
|ddgd�}W d   ƒ n1 s8w   Y  ttdƒt  tdƒg d	¢g¡ƒ}t ||¡ d S )
Nr6   z
2020-01-01Ú6ME)Ústartrº   Úfreq©rD   r   r;   r¾   )z*(2020-01-31 00:00:00, 2020-07-31 00:00:00]z*(2020-07-31 00:00:00, 2021-01-31 00:00:00]z*(2021-01-31 00:00:00, 2021-07-31 00:00:00]z*(2021-07-31 00:00:00, 2022-01-31 00:00:00])r   r³   r£   rJ   Úinterval_rangeÚ	Timestampr
   r%   r&   rI   rK   rL   )rN   r'   ÚmidxrQ   re   rR   rO   r   r   r   Ú"test_multiindex_interval_datetimesB  s*   ÿþÿ
þþÿþz0TestRoundTrip.test_multiindex_interval_datetimes)Ú__name__Ú
__module__Ú__qualname__ÚpytestÚmarkÚparametrizer
   r´   r¶   rS   rU   rj   r…   r™   r¹   rÎ   rÖ   r   r   r   r   r5   S   s*    *þ
,þ
/8#r5   z
engine,extc                   @   sZ  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
j dejejejejg¡dd„ ƒZe
j dejejejg¡dd„ ƒZdd„ Z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&„ ƒZ d'd(„ Z!d)d*„ Z"d+d,„ Z#d-d.„ Z$d/d0„ Z%d1d2„ Z&d3d4„ Z'd5d6„ Z(d7d8„ Z)d9d:„ Z*d;d<„ Z+d=d>„ Z,e
j d?d@dAg¡e
j dBg dC¢¡e
j dDg dC¢¡dEdF„ ƒƒƒZ-dGdH„ Z.dIdJ„ Z/dKdL„ Z0e
j dMdNdOg¡dPdQ„ ƒZ1dRdS„ Z2dTdU„ Z3dVdW„ Z4dXdY„ Z5dZd[„ Z6d\d]„ Z7d^d_„ Z8d`da„ Z9dbdc„ Z:ddde„ Z;dfdg„ Z<dhdi„ Z=djdk„ Z>dldm„ Z?e
j dndoe@g¡dpdq„ ƒZAdrds„ ZBdtdu„ ZCdvdw„ ZDdxdy„ ZEdoS )zÚTestExcelWriterc           	      C   s²   d}d}t j|dfd�}t jd|fd�}t|ƒ}t|ƒ}d}tjt|d�� | |¡ W d   ƒ n1 s5w   Y  tjt|d�� | |¡ W d   ƒ d S 1 sRw   Y  d S )Ni  i@  r;   )Úshapezsheet is too large©rÃ   )r´   Úzerosr
   rÚ   ÚraisesÚ
ValueErrorrI   )	rN   r   Úbreaking_row_countÚbreaking_col_countÚrow_arrÚcol_arrÚrow_dfÚcol_dfÚmsgr   r   r   Útest_excel_sheet_sizex  s   ÿ"ÿz%TestExcelWriter.test_excel_sheet_sizec                 C   s¨   t tj d¡ d¡ƒ}| |¡ t|ƒ�}tj|ddd�}W d   ƒ n1 s'w   Y  t	 
||¡ d}tjt|d�� t |d¡ W d   ƒ d S 1 sMw   Y  d S )Nr>   ©r   r>   r   r|   zWorksheet named '0' not foundrß   Ú0)r
   r´   ÚrandomÚdefault_rngÚstandard_normalrI   r   rJ   rK   r%   rL   rÚ   rá   râ   )rN   r   ÚgtÚxlrQ   ré   r   r   r   Útest_excel_sheet_by_name_raise‰  s   

ÿ"ÿz.TestExcelWriter.test_excel_sheet_by_name_raisec                 C   sÄ   t |ƒ�#}|j|dd� | ¡ }|jd d d… |_|j|dd� W d   ƒ n1 s*w   Y  t|ƒ�%}tj|ddd�}tj|ddd�}t ||¡ t ||¡ W d   ƒ d S 1 s[w   Y  d S )NÚData1r{   r°   ÚData2r   r|   )	r   rI   rÇ   r\   r   rJ   rK   r%   rL   )rN   r   r   rf   Úframe2rg   Úfound_dfÚ	found_df2r   r   r   Ú!test_excel_writer_context_manager–  s   
ü
"ûz1TestExcelWriter.test_excel_writer_context_managerc                 C   sÚ  |  ¡ }tj|jd d…|j d¡f< |j|dd� |j|dddgd� |j|ddd� |j|ddd	� |j|dd� tj|dd
d�}t	 
||¡ |j|ddd	� tj|dd d�}|j|_t	 
||¡ |j|ddd� tj|dd
dgd�}t	 
||¡ |j|ddd� tj|dd
dgd�}t	 
||¡ |j|ddd� tj|dd
ddgd�}t	 
||¡ |j|dd� tj|d
d�}t	 
||¡ |j|dd� tj|d
d�}t	 
||¡ |d }| |¡ tj|d
d�}t	 
| ¡ |¡ d S )Nr¡   r`   Útest1r{   ra   ©rC   r\   F©rC   rE   r_   r   r|   ÚNA)rC   Úna_rep)rC   rc   Ú	na_valuesÚ88éX   g      V@ÚSheet1r¾   rì   )rÇ   r´   r¶   r·   r\   Úget_locrI   rJ   rK   r%   rL   rD   Úto_frame)rN   r   r   Úreconsrw   r   r   r   Útest_roundtrip¤  sD   ÿ
zTestExcelWriter.test_roundtripc                 C   sf   |  ¡ }d|d< |j|dd� t|ƒ�}tj|ddd�}W d   ƒ n1 s&w   Y  t ||¡ d S )NrW   rV   rù   r{   r   r|   )rÇ   rI   r   rJ   rK   r%   rL   )rN   r   r   Úmixed_framerg   r  r   r   r   Ú
test_mixedÕ  s   
ÿzTestExcelWriter.test_mixedc                 C   sÂ   t |ƒ}ttj d¡ d¡ttdƒƒtdddd�d�}t	j
t |j¡d d	�}||_|d d … }|j |¡|_|j|d
d� t|ƒ�}t	j|d
dd�}W d   ƒ n1 sTw   Y  t ||¡ d S )Nr>   ©r¡   r6   ÚABCDú
2000-01-01r¡   ra   ©rº   rÑ   r®   ©rÑ   rù   r{   r   r|   )r   r
   r´   rí   rî   rï   r   r²   r   rJ   ÚDatetimeIndexÚasarrayrD   Úas_unitrI   r   rK   r%   rL   )rN   r   ÚunitrQ   rD   rO   rg   r  r   r   r   Útest_ts_frameÞ  s   
ý
ÿzTestExcelWriter.test_ts_framec                 C   sj   |  ¡ }tj|jd d…|j d¡f< |j|dd� |j|dddgd� |j|ddd� |j|ddd	� d S )
Nr¡   r`   rù   r{   ra   rú   Frû   r_   )rÇ   r´   r¶   r·   r\   r  rI   )rN   r   r   r   r   r   Útest_basics_with_nanò  s   z$TestExcelWriter.test_basics_with_nanÚnp_typec                 C   sž   t tj d¡jdddd�|d�}|j|dd� t|ƒ�}tj|dd	d
�}W d   ƒ n1 s.w   Y  | 	tj
¡}t ||¡ tj|dd	d
�}t ||¡ d S )Nr>   éöÿÿÿr   rë   ©Úsize©Údtyperù   r{   r   r|   )r
   r´   rí   rî   ÚintegersrI   r   rJ   rK   ÚastypeÚint64r%   rL   )rN   r  r   rQ   rg   r  Ú	int_frameÚrecons2r   r   r   Útest_int_typesú  s   ÿ
ÿzTestExcelWriter.test_int_typesc                 C   sv   t tj d¡ d¡|d�}|j|dd� t|ƒ�}tj|ddd� |¡}W d   ƒ n1 s.w   Y  t	 
||¡ d S )Nr>   r   r  rù   r{   r   r|   )r
   r´   rí   rî   rI   r   rJ   rK   r  r%   rL   )rN   r  r   rQ   rg   r  r   r   r   Útest_float_types  s   
ÿÿz TestExcelWriter.test_float_typesc                 C   sp   t g d¢tjd�}|j|dd� t|ƒ�}tj|ddd� tj¡}W d   ƒ n1 s+w   Y  t 	||¡ d S )N)r;   r   TFr  rù   r{   r   r|   )
r
   r´   Úbool_rI   r   rJ   rK   r  r%   rL   ©rN   r   rQ   rg   r  r   r   r   Útest_bool_types  s   
ÿÿzTestExcelWriter.test_bool_typesc                 C   sr   t dtjfddtj fgƒ}|j|dd� t|ƒ�}tj|ddd�}W d   ƒ n1 s,w   Y  t ||¡ d S )Nr;   )r>   r7   r¡   rù   r{   r   r|   )	r
   r´   ÚinfrI   r   rJ   rK   r%   rL   r!  r   r   r   Útest_inf_roundtrip%  s   
ÿz"TestExcelWriter.test_inf_roundtripc           
      C   s°  t |ƒ}ttj d¡ d¡ttdƒƒtdddd�d�}t	j
t |j¡d d	�}||_|d d … }|j |¡|_| ¡ }tj|jd d…|j d
¡f< |j|dd� |j|dd
dgd� |j|ddd� |j|ddd� t|ƒ�}|j|dd� |j|dd� W d   ƒ n1 s†w   Y  t|ƒ�}t	j|ddd�}	t ||	¡ t	j|ddd�}	W d   ƒ n1 s°w   Y  t ||	¡ dt|jƒksÄJ ‚d|jd ksÍJ ‚d|jd ksÖJ ‚d S )Nr>   r  r	  r
  r¡   ra   r  r®   r  r`   rù   r{   rú   Frû   r_   Útest2r   r|   r;   )r   r
   r´   rí   rî   rï   r   r²   r   rJ   r  r  rD   r  rÇ   r¶   r·   r\   r  rI   r   r   rK   r%   rL   ÚlenÚsheet_names)
rN   r   r   r  ÚtsframerD   rO   rf   rg   r  r   r   r   Útest_sheets.  s:   
ý
þ
ýzTestExcelWriter.test_sheetsc                 C   sØ   |  ¡ }tj|jd d…|j d¡f< |j|dd� |j|dddgd� |j|ddd� |j|ddd	� tg d
¢ƒ}|j|d|d� t|ƒ�}t	j
|ddd�}W d   ƒ n1 sXw   Y  |  ¡ }||_t ||¡ d S )Nr¡   r`   rù   r{   ra   rú   Frû   r_   )ÚAArŒ   rŽ   ÚZr   r|   )rÇ   r´   r¶   r·   r\   r  rI   r   r   rJ   rK   r%   rL   )rN   r   r   Úcol_aliasesrg   ÚrsÚxpr   r   r   Útest_colaliasesQ  s   
ÿzTestExcelWriter.test_colaliasesc                 C   s„  |  ¡ }tj|jd d…|j d¡f< |j|dd� |j|dddgd� |j|ddd� |j|ddd	� ttj 	d
¡ 
d¡ƒdk}|j|ddg|d� t|ƒ�}tj|ddd� tj¡}W d   ƒ n1 sew   Y  dg|j_|jj|jjksyJ ‚ttj 	d
¡ 
d¡ƒdk}|j|dg d¢|d� t|ƒ�}tj|ddd� tj¡}W d   ƒ n1 s¬w   Y  dg|j_|jj|jjksÀJ ‚ttj 	d
¡ 
d¡ƒdk}|j|dd|d� t|ƒ�}tj|ddd� tj¡}W d   ƒ n1 sñw   Y  dg|j_t || t¡¡ |j|dg d¢d|d� |  ¡ }| ddg¡}t|ƒ�}tj|dddgd�}W d   ƒ n	1 �s5w   Y  t ||¡ d S )Nr¡   r`   rù   r{   ra   rú   Frû   r_   r>   rë   r   Útest)rC   Úindex_labelr$   r|   )r0  ÚdummyÚdummy2)r`   ra   ÚCÚD)rC   r\   rD   r$   r;   )rÇ   r´   r¶   r·   r\   r  rI   r
   rí   rî   rï   r   rJ   rK   r  r  rD   rb   r%   rL   r±   Ú	set_index)rN   r$   r   r   rQ   rg   r  r   r   r   Útest_roundtrip_indexlabelsc  sn   
ÿ
ÿÿ
ü
ÿÿ
ÿ
ÿÿ
û
ÿz*TestExcelWriter.test_roundtrip_indexlabelsc                 C   sŠ   t tj d¡ d¡ƒ}d|j_|j||d� t|ƒ�}t	j
||jd dd�}W d   ƒ n1 s0w   Y  t ||¡ |jjdksCJ ‚d S )Nr>   )r   r6   rV   ©r$   r   r|   )r
   r´   rí   rî   rï   rD   ÚnamerI   r   rJ   rK   r'  r%   rL   )rN   r$   r   rQ   ÚxfrR   r   r   r   Útest_excel_roundtrip_indexname   s   
ÿz.TestExcelWriter.test_excel_roundtrip_indexnamec           
      C   sÞ   t |ƒ}ttj d¡ d¡ttdƒƒtdddd�d�}t	j
t |j¡d d	�}||_| ¡ }d
d„ |jD ƒ|_|j|d|d� t|ƒ�}t	j|ddd�}W d   ƒ n1 sUw   Y  |d d … }	|	j |¡|	_t |	|¡ d S )Nr>   r  r	  r
  r¡   ra   r  r®   r  c                 S   s   g | ]}|  ¡ ‘qS r   )r   )rv   r‰   r   r   r   ry   »  rz   zATestExcelWriter.test_excel_roundtrip_datetime.<locals>.<listcomp>rù   ©rC   r$   r   r|   )r   r
   r´   rí   rî   rï   r   r²   r   rJ   r  r  rD   rÇ   rI   r   rK   r  r%   rL   )
rN   r$   r   r  r(  rD   Útsfrg   r  rO   r   r   r   Útest_excel_roundtrip_datetime¬  s"   
ý
ÿz-TestExcelWriter.test_excel_roundtrip_datetimec              
   C   sÞ  t |ƒ}ttdddƒtdddƒgtddd	d
ddƒtddddddƒggddgddgd�}ttdddƒtdddƒgtddd	d
ddƒtddddddƒggddgddgd�}| d|› d�¡}t |¡�y}t|ƒ�}|j|dd� W d   ƒ n1 sww   Y  t|ddd��}|j|dd� W d   ƒ n1 s•w   Y  t	|ƒ�}	t
j|	ddd�}
W d   ƒ n1 s±w   Y  t	|ƒ�}t
j|ddd�}W d   ƒ n1 sÍw   Y  W d   ƒ n1 sÜw   Y  t |
|¡ t ||¡ d S )NiÞ  r;   é   iÏ  é	   é   iÎ  r¡   é   é   rm   r6   r>   é   é   ÚDATEÚDATETIMErŒ   rŽ   ©rD   r\   úM8[ú]rù   r{   z
DD.MM.YYYYzDD.MM.YYYY HH-MM-SS)rÆ   Údatetime_formatr   r|   )r   r
   r   r   r  r%   r&   r   rI   r   rJ   rK   rL   )rN   r'   r   r  rQ   Údf_expectedÚ	filename2Úwriter1Úwriter2Úreader1Úrs1Úreader2Úrs2r   r   r   Útest_excel_date_datetime_formatÅ  sL   "þú"þú
ÿýû
ÿ
ÿ€òz/TestExcelWriter.test_excel_date_datetime_formatz7ignore:invalid value encountered in cast:RuntimeWarningc                 C   s¶   t tj d¡jdddd�tjd�}| ¡ }t |d d¡|d< t |d d¡ 	|s+t
nd	¡|d< |j|d
d� t|ƒ�}tj|d
dd�}W d   ƒ n1 sNw   Y  t ||¡ d S )Nr>   r  r   ©é   r;   r  r  r   ÚnewÚstrrù   r{   r|   )r
   r´   rí   rî   r  r  rÇ   rJ   Úcutr  rX  rI   r   rK   r%   rL   )rN   r   Úusing_infer_stringrQ   rO   rg   r  r   r   r   Ú test_to_excel_interval_no_labelsô  s   ÿ
ÿ
ÿz0TestExcelWriter.test_to_excel_interval_no_labelsc                 C   s²   t tj d¡jdddd�tjd�}| ¡ }tj|d dg d¢d	�}||d
< t 	t
|ƒ¡|d
< |j|dd� t|ƒ�}tj|ddd�}W d   ƒ n1 sLw   Y  t ||¡ d S )Nr>   r  r   rU  r  r  r   )
r`   ra   r4  r5  ÚEÚFÚGÚHÚIÚJ)ÚlabelsrW  rù   r{   r|   )r
   r´   rí   rî   r  r  rÇ   rJ   rY  ÚSeriesr²   rI   r   rK   r%   rL   )rN   r   rQ   rO   Ú	intervalsrg   r  r   r   r   Útest_to_excel_interval_labels
  s   ÿÿ
ÿz-TestExcelWriter.test_to_excel_interval_labelsc                 C   s°   t tj d¡jdddd�dgtjd�}| ¡ }|d  dd	„ ¡|d
< |d  dd	„ ¡|d
< |j|dd� t	|ƒ�}t
j|ddd�}W d   ƒ n1 sKw   Y  t ||¡ d S )Nr>   r  r   rU  r  r`   ©r\   r  c                 S   s
   t | d�S )N©Úseconds)r   rÁ   r   r   r   rÂ   (  s   
 z9TestExcelWriter.test_to_excel_timedelta.<locals>.<lambda>rW  c                 S   s   t | d� ¡ d S )Nrg  i€Q )r   Útotal_secondsrÁ   r   r   r   rÂ   *  s    rù   r{   r   r|   )r
   r´   rí   rî   r  r  rÇ   ÚapplyrI   r   rJ   rK   r%   rL   )rN   r   rQ   rO   rg   r  r   r   r   Útest_to_excel_timedelta  s   ýÿ
ÿz'TestExcelWriter.test_to_excel_timedeltac                 C   sž   t tj d¡ d¡ttdƒƒtdddd�d�}| d	¡ 	¡  
d
¡}|j|dd� t|ƒ�}tj|ddd�}W d   ƒ n1 s?w   Y  t || 
d
¡¡ d S )Nr>   r  r	  r
  r¡   ra   r  r®   ÚMEÚMÚsht1r{   r   r|   )r
   r´   rí   rî   rï   r   r²   r   ÚresampleÚmeanÚ	to_periodrI   r   rJ   rK   r%   rL   )rN   r   rQ   r.  rg   r-  r   r   r   Útest_to_excel_periodindex2  s   
ý
ÿz)TestExcelWriter.test_to_excel_periodindexc                 C   sº   t jt|jƒd t jd� dd¡}tj|ddgd�}||_|j|ddd	� |j|dd
dgd� |j|d|d� t	|ƒ�}t
j|dddgd�}W d   ƒ n1 sPw   Y  t ||¡ d S )Nr>   r  r°   ÚfirstÚsecondr«   rù   Frû   r`   ra   rú   r<  r   r;   r|   )r´   Úaranger&  rD   r  Úreshaper   r³   rI   r   rJ   rK   r%   rL   )rN   r$   r   r   ÚarraysÚ	new_indexrg   rQ   r   r   r   Útest_to_excel_multiindexA  s   "
ÿz(TestExcelWriter.test_to_excel_multiindexc                 C   sd   t g d¢g d¢tj d¡ d¡dœƒ}| ddg¡}|j||d� tj|d	d
gd�}t 	||¡ d S )N)Nr>   r7   )r   rV  é   r>   r7   ©r`   ra   r4  r`   ra   r8  r   r;   r¾   )
r
   r´   rí   rî   r6  rI   rJ   rK   r%   rL   )rN   r$   r   rQ   Údf1r   r   r   Ú"test_to_excel_multiindex_nan_labelP  s   ýÿz2TestExcelWriter.test_to_excel_multiindex_nan_labelc                 C   sä   t jt|jƒd t jd� dd¡}tj|ddgd�}||_t g d¢¡}||_	dd	g}|s/d}|j
|d
|d� t|ƒ�}tj|d
|dd	gd�}	W d   ƒ n1 sQw   Y  |sj|j	jddd�}
dd„ t|
Ž D ƒ|_	t ||	¡ d S )Nr>   r  r°   rs  rt  r«   ))é(   r;   )r~  r>   )é2   r;   )r  r>   r   r;   rù   r<  ©rC   rE   rc   F)ÚsparsifyÚinclude_namesc                 S   s   g | ]
}d   tt|ƒ¡‘qS )r)   )ÚjoinÚmaprX  )rv   Úqr   r   r   ry   t  s    zATestExcelWriter.test_to_excel_multiindex_cols.<locals>.<listcomp>)r´   ru  r&  rD   r  rv  r   r³   Úfrom_tuplesr\   rI   r   rJ   rK   Ú_format_multir~   r%   rL   )rN   r$   r   r   rw  rx  Únew_cols_indexrE   rg   rQ   Úfmr   r   r   Útest_to_excel_multiindex_colsa  s$   "
ÿÿz-TestExcelWriter.test_to_excel_multiindex_colsc                 C   sÔ   t |ƒ}ttj d¡ d¡ttdƒƒtdddd�d�}t	j
|j |¡tjt|jƒtjd	�gd
dgd�|_|j|d|d� t|ƒ�}tj|dddgd�}W d   ƒ n1 sUw   Y  t ||¡ |jjdkshJ ‚d S )Nr>   r  r	  r
  r¡   ra   r  r®   r  ÚtimerV   r«   rù   r<  r   r;   r|   )r‹  rV   )r   r
   r´   rí   rî   rï   r   r²   r   r   r³   rD   r  ru  r&  r  rI   r   rJ   rK   r%   rL   rb   )rN   r$   r   r  r(  rg   r  r   r   r   Útest_to_excel_multiindex_datesw  s$   
ý
þû
ÿz.TestExcelWriter.test_to_excel_multiindex_datesc                 C   sŽ   t ddgddgddgdœƒ}| ¡ }t dd	g¡}||_|j|d
dd� t|ƒ�}tj|d
d�}W d   ƒ n1 s:w   Y  t	 
||¡ d S )Nr   rV  rz  r~  r  é<   )rY   rZ   Úc)éF   éP   )éZ   r<   rù   Fr_   r{   )r
   rÇ   r   r†  rD   rI   r   rJ   rK   r%   rL   )rN   r   Úframe1rõ   Úmulti_indexrg   Úframe3r   r   r   Ú'test_to_excel_multiindex_no_write_indexŽ  s   
ÿz7TestExcelWriter.test_to_excel_multiindex_no_write_indexc                 C   sˆ   t g g d¢d�}t g tjg ddgd�dgd�}|j|dd	� t|ƒ�}tj|dd	�}W d   ƒ n1 s4w   Y  tj||d
d
d� d S )N)r   r;   r>   r[   r   r;   r«   r>   rH  rù   r{   F)Úcheck_index_typeÚcheck_dtype)	r
   r   r†  rI   r   rJ   rK   r%   rL   )rN   r   rO   rQ   rg   rR   r   r   r   Útest_to_excel_empty_multiindex£  s   
ÿ
ÿz.TestExcelWriter.test_to_excel_empty_multiindexc                 C   sœ   t g d¢g d¢gddgg d¢d�}|j|ddd	� t|ƒ�}tj|dd
d�}W d   ƒ n1 s0w   Y  t g d¢g d¢gddgg d¢d�}t ||¡ d S )N©g¿¶~úÏš¿?g9DÜœJÎ?g>éD‚)â?©gÜ.4×i¤(@ç33333þ@çÍÌÌÌ¤œAr`   ra   ©rŒ   rŽ   r+  rH  rù   ú%.2f©rC   Úfloat_formatr   r|   ©g¸…ëQ¸¾?gq=
×£pÍ?g=
×£p=â?©g¤p=
×£(@r›  rœ  )r
   rI   r   rJ   rK   r%   rL   )rN   r   rQ   rg   rR   rO   r   r   r   Útest_to_excel_float_format°  s   ý
ÿýz*TestExcelWriter.test_to_excel_float_formatc                 C   s€   t g d¢g d¢gddgg d¢d�}t d| ¡�}|j|dd	� tj|dd
d�}t ||¡ W d   ƒ d S 1 s9w   Y  d S )N)u   Æ’u   Æ“u   Æ”)u   Æ•u   Æ–u   Æ—u   AÆ’ra   )u   XÆ“rŽ   r+  rH  z__tmp_to_excel_float_format__.Ú	TestSheetr{   r   r|   rH   )rN   r'   rQ   rP   rR   r   r   r   Útest_to_excel_output_encodingÂ  s   ý"ýz-TestExcelWriter.test_to_excel_output_encodingc              	   C   s  t  d| ¡�c}zt|dƒ� W d   ƒ n1 sw   Y  W n ty-   t d¡ Y nw tg d¢g d¢gddgg d¢d	�}|j|d
dd� t|ƒ�}t	j
|d
dd�}W d   ƒ n1 s^w   Y  W d   ƒ n1 smw   Y  tg d¢g d¢gddgg d¢d	�}t  ||¡ d S )Nu   Æ’u.Úwbz$No unicode file names on this systemr™  rš  r`   ra   r�  rH  rù   rž  rŸ  r   r|   r¡  r¢  )r%   r&   ÚopenÚUnicodeEncodeErrorrÚ   Úskipr
   rI   r   rJ   rK   rL   )rN   r'   rP   rQ   rg   rR   rO   r   r   r   Útest_to_excel_unicode_filenameÏ  s4   ÿ€ÿý
ÿ€òýz.TestExcelWriter.test_to_excel_unicode_filenameÚuse_headersTFÚr_idx_nlevelsrn   Úc_idx_nlevelsc                    sæ  d‡ ‡fdd„	}|rdnd }|t dgƒ||ƒ}|jdksJ ‚|jd tjus(J ‚d‰d‰|d	kr>td
d„ tˆƒD ƒtd�}	ntj	‡fdd„t|ƒD ƒdd„ t|ƒD ƒd�}	|d	krgtdd„ tˆƒD ƒtd�}
ntj	‡fdd„t|ƒD ƒdd„ t|ƒD ƒd�}
t t 
ˆˆf¡|	|
d�}|d	kr±d}tjt|d�� |||dd� W d   ƒ d S 1 sªw   Y  d S |||ƒ}|rÄ|jˆˆ| fksÃJ ‚n|jˆd	 ˆ| fksÑJ ‚tt|jƒƒD ]}tt|jƒƒD ]}|j||f tjusïJ ‚qáqØd S )NTr   c                    sT   | j ˆ|ˆ |d� tˆƒ�}tj||jd |d�W  d   ƒ S 1 s#w   Y  d S )N)rE   r$   rD   r   rû   )rI   r   rJ   rK   r'  )ÚdatarE   Ú
parser_hdrrD   r:  )r$   r   r   r   Ú	roundtripî  s   
ÿ$ÿz;TestExcelWriter.test_excel_010_hemstring.<locals>.roundtrip)r;   r>   )r   r   r¡   r7   r;   c                 S   ó   g | ]}d |› �‘qS )za-r   r©   r   r   r   ry     ó    z<TestExcelWriter.test_excel_010_hemstring.<locals>.<listcomp>r  c                    ó   g | ]}t ˆ ƒ‘qS r   r¢   r¤   )Úncolsr   r   ry     rz   c                 S   r±  ©zi-r   r©   r   r   r   ry   	  r²  r«   c                 S   r±  )zb-r   r©   r   r   r   ry     r²  c                    r³  r   r¢   r¤   )Únrowsr   r   ry     rz   c                 S   r±  )zj-r   r©   r   r   r   ry     r²  r®   z_Writing to Excel with MultiIndex columns and no index \('index'=False\) is not yet implemented.rß   FrÒ   )Tr   T)r
   rÞ   r·   r´   r¶   r   r£   Úobjectr   r³   rµ   rÚ   rá   ÚNotImplementedErrorr&  rD   r\   )rN   r$   r­  r¬  r«  r   r°  Úparser_headerrÍ   r\   rD   rQ   ré   ÚrrŽ  r   )r$   r´  r¶  r   r   Útest_excel_010_hemstringè  sN   	þþýÿ"ÿ
ÿÿz(TestExcelWriter.test_excel_010_hemstringc                 C   s  t g d¢g d¢g d¢gg d¢d�}|j|dd� t g d¢g d¢g d¢gg d¢d�}tj|ddd�}t ||¡ t g d	¢g d
¢gg d¢d�}|j|dd� tj|ddd�}t g d	¢g d
¢gg d¢d�}t ||¡ |j|dddd� tj|dd d�}t g d	¢g d
¢gƒ}t ||¡ d S )Nrn   )r`   ra   ra   r[   rù   r{   )r`   ra   úB.1r   r|   )r;   r>   r7   r6   )r¡   é   r†   é   )r`   ra   r`   ra   )r`   ra   úA.1r¼  FrB   rû   ©r
   rI   rJ   rK   r%   rL   ©rN   r   rQ   rO   rR   r   r   r   Útest_duplicated_columns0  s$   "ÿÿz'TestExcelWriter.test_duplicated_columnsc                 C   sf   t g d¢g d¢dœƒ}|j|dddgd� tj|ddd	�}t |d |d ¡ t |d |d ¡ d S )
N©r;   r;   r;   ©r>   r>   r>   ©r`   ra   rù   ra   r`   rú   r   rû   )r
   rI   rJ   rK   r%   Úassert_series_equal)rN   r   Úwrite_frameÚ
read_framer   r   r   Útest_swapped_columnsM  s
   z$TestExcelWriter.test_swapped_columnsc                 C   s    t g d¢g d¢dœƒ}tjtdd�� |j|dddgd	� W d   ƒ n1 s'w   Y  tjtd
d�� |j|dddgd	� W d   ƒ d S 1 sIw   Y  d S )NrÃ  rÄ  rÅ  zNot all names specifiedrß   rù   ra   r4  rú   z.'passes columns are not ALL present dataframe'r5  )r
   rÚ   rá   ÚKeyErrorrI   )rN   r   rÇ  r   r   r   Útest_invalid_columnsW  s   ÿÿ"ýz$TestExcelWriter.test_invalid_columnsz#to_excel_index,read_excel_index_col)Tr   )FNc                 C   s^   t g d¢g d¢g d¢dœƒ}|j|dddg|d� |ddg }tj|d|d	�}t ||¡ d S )
NrÃ  rÄ  )r7   r7   r7   r{  Úcol_subset_bugr`   ra   )rC   r\   rD   r|   rÀ  )rN   r   Úto_excel_indexÚread_excel_index_colrÇ  rO   rÈ  r   r   r   Útest_write_subset_columnsc  s   	ÿÿz)TestExcelWriter.test_write_subset_columnsc                 C   st   t g d¢g d¢dœƒ}|j|dd� tj|ddd�}d |jd< d |jd	< d |jd
< tj|dddd�}t ||¡ d S )N©Úonez#onerÑ  ©ÚtworÓ  z#tworÅ  Útest_cr{   r   r|   )r;   r   ©r;   r;   )r>   r;   ú#©rC   Úcommentrc   )r
   rI   rJ   rK   r·   r%   rL   ©rN   r   rQ   Úresult1Úresult2r   r   r   Útest_comment_argx  s   


z TestExcelWriter.test_comment_argc                 C   sR   t g d¢g d¢dœƒ}|j|dd� tj|dd�}tj|dd d�}t ||¡ d S )NrÐ  rÒ  rÅ  rÔ  r{   )rC   rØ  rÀ  rÙ  r   r   r   Útest_comment_default‹  s
   z$TestExcelWriter.test_comment_defaultc                 C   s\   t g d¢g d¢dœƒ}|j|dd� t g d¢g d¢dœƒ}tj|ddd	d
�}t ||¡ d S )NrÐ  rÒ  rÅ  rÔ  r{   )rÑ  NrÑ  )rÓ  NNrÖ  r   r×  rÀ  rÁ  r   r   r   Útest_comment_used˜  s
   z!TestExcelWriter.test_comment_usedc                 C   sT   t ddgddgdœƒ}|j|dd� t dgd	gdœƒ}tj|d
d�}t ||¡ d S )NÚ1z#2Ú2Ú3)rY   rZ   FrÒ   r;   r>   rÖ  )rØ  rÀ  rÁ  r   r   r   Útest_comment_empty_line¦  s
   z'TestExcelWriter.test_comment_empty_linec                 C   s  t |ƒ}tddddddƒtddddddƒtddddd	d
ƒtddddddƒtddddddƒtddddddƒtddddddƒtddddddƒtddddddƒtddddddƒtddddddƒg}td|iƒ}|j|dd � tj|ddd!�}| d"|› d#�¡}t |d |d ¡ d S )$NiÝ  r;   rE  r>   r7   é-   é8   r6   é   é1   r½  é*   r†   é9   é#   r@  é)   rD  rk   é   é   é   é5   é   é%   r   é   rV  é4   r`   r  r{   rû   rI  rJ  )	r   r   r
   rI   rJ   rK   r  r%   rÆ  )rN   r   r  Ú	datetimesrÇ  rÈ  rO   r   r   r   Útest_datetimes²  s$   õzTestExcelWriter.test_datetimesc              	   C   sœ   t ƒ �A}ttj d¡ d¡ƒ}t||d��}| |¡ W d   ƒ n1 s%w   Y  | d¡ t	j
|dd�}t ||¡ W d   ƒ d S 1 sGw   Y  d S )Nr>   rë   ©r+   r   r¾   )r   r
   r´   rí   rî   rï   r   rI   ÚseekrJ   rK   r%   rL   )rN   r+   ÚbiorQ   rf   Ú	reread_dfr   r   r   Útest_bytes_ioÊ  s   ÿ
"÷zTestExcelWriter.test_bytes_ioc                 C   s¦   t dddœdddœgƒ}ddddœ}trd	|d
< d	|d< |d
kr*tj |¡s*d|d
< tjtt 	|| ¡d�� |j
||ddid� W d   ƒ d S 1 sLw   Y  d S )Nr;   r>   rÅ  r7   r6   zBOpenDocumentSpreadsheet() got an unexpected keyword argument 'foo'z3__init__() got an unexpected keyword argument 'foo')r4   r/   r3   z<Workbook.__init__() got an unexpected keyword argument 'foo'r/   r3   z8load_workbook() got an unexpected keyword argument 'foo'rß   rV   rW   )r+   Úengine_kwargs)r
   r   Úosr   ÚexistsrÚ   rá   Ú	TypeErrorÚreÚescaperI   )rN   r+   r   rQ   Úmsgsr   r   r   Útest_engine_kwargs×  s4   üþÿþÿþÿý"ÿz"TestExcelWriter.test_engine_kwargsc                 C   s|   t dddgdddœgg d¢g d¢d	œƒ}|j|d
d� tj|d
ddd�}| ¡ }|j t¡|_|j 	d¡|_t
 ||¡ d S )NrY   rZ   rŽ  Úer>   )rp   Úf)r;   r>   g      @)ÚappleÚbananaÚcherry)ÚmixedÚnumericrX  r  r{   r   r€  r  )r
   rI   rJ   rK   rÇ   r  rj  rX  r  r  r%   rL   ©rN   r   rQ   ÚreadrO   r   r   r   Útest_write_lists_dict÷  s   ýÿz%TestExcelWriter.test_write_lists_dictc                 C   sH   t ddgddgdœƒ}|j|dd� tj|ddd	�}|}t ||¡ d S )
Nr;   r>   r7   r6   )Úrenderr®  r  r{   r   r¾   rÀ  r	  r   r   r   Útest_render_as_column_name	  s
   z*TestExcelWriter.test_render_as_column_namec                 C   sˆ   t ddggddgtd�}tddƒ� | ddd	œ¡ d
¡}W d   ƒ n1 s'w   Y  | |¡ tj|dgdgdd�}t 	||¡ d S )NrV   rW   Úcol1Úcol2rf  zfuture.no_silent_downcastingTF)rV   rW   r±   r   )Útrue_valuesÚfalse_valuesrc   )
r
   r·  r   Úreplacer  rI   rJ   rK   r%   rL   )rN   r   rQ   rO   rÈ  r   r   r   Ú!test_true_and_false_value_options  s   ÿ
ÿz1TestExcelWriter.test_true_and_false_value_optionsc                 C   sJ   t ddgddggddgd�}|j|dd	d
� tj|dd�}t ||¡ d S )Nr;   r>   r7   r6   r  r  r[   r  rÕ  )rC   Úfreeze_panesr   r¾   rÀ  )rN   r   rO   rR   r   r   r   Útest_freeze_panes  s   z!TestExcelWriter.test_freeze_panesc                 C   óz   t dt d¡ d¡ ttdƒƒtdd„ tdƒD ƒƒd�}t|j|d	�}tt	j
d
d�}tj||d|› �d�}t ||¡ d S )Nr­   éx   ©rz  r6   r	  c                 S   r±  rµ  r   r©   r   r   r   ry   )  r²  z6TestExcelWriter.test_path_path_lib.<locals>.<listcomp>rz  r®   rõ  r   r¾   rV   r   )r
   r´   ru  rv  r   r²   r£   r   rI   rJ   rK   r%   Úround_trip_pathlibrL   ©rN   r+   r'   rQ   rf   rg   rR   r   r   r   Útest_path_path_lib%  ó   
ýz"TestExcelWriter.test_path_path_libc                 C   r  )Nr­   r  r  r	  c                 S   r±  rµ  r   r©   r   r   r   ry   5  r²  z8TestExcelWriter.test_path_local_path.<locals>.<listcomp>rz  r®   rõ  r   r¾   rV   r   )r
   r´   ru  rv  r   r²   r£   r   rI   rJ   rK   r%   Úround_trip_localpathrL   r  r   r   r   Útest_path_local_path1  r  z$TestExcelWriter.test_path_local_pathc                 C   s¬   t  t d¡t d¡ft d¡t d¡fg¡}ttjddd�|d�}| |¡ tj|dd	gdd
�}|j	j
dd„ |jd D ƒdd„ |jd	 D ƒgdd	gd�|_	t ||¡ d S )NÚ2018Ú2018Q1Ú2018Q2)r>   r>   r  r  r[   r   r;   r�   c                 S   s   g | ]}t |ƒ‘qS r   )rX  r©   r   r   r   ry   J  rz   zCTestExcelWriter.test_merged_cell_custom_objects.<locals>.<listcomp>)Úlevel)r   r†  rJ   ÚPeriodr
   r´   rµ   rI   rK   r\   Ú
set_levelsÚlevelsr%   rL   )rN   r   ÚmirO   rR   r   r   r   Útest_merged_cell_custom_objects=  s   þÿ
&þz/TestExcelWriter.test_merged_cell_custom_objectsr  Nc                 C   s¬   |}t jd|d�}t|g|d�}tjtdd�� | |¡ W d   ƒ n1 s'w   Y  | ¡ }t|g|d�}tjtdd�� | |¡ W d   ƒ d S 1 sOw   Y  d S )NÚ2019)Útzr  zExcel does not supportrß   )rJ   rÔ   r
   rÚ   rá   râ   rI   Úto_pydatetime)rN   r  Útz_aware_fixturer   r)  r®  rQ   r   r   r   Ú test_raise_when_saving_timezonesO  s   ÿ"ÿz0TestExcelWriter.test_raise_when_saving_timezonesc                 C   s`   t ddgddgdœƒ}|j|g d¢dd� t |¡}t g d	¢g d
¢gg d¢d�}t ||¡ d S )Nr   r;   r   rk   rÅ  )r`   ra   r`   Fr®   )r   r   r   )r;   rk   r;   )r`   ra   r¿  r[   rÀ  )rN   r   rQ   rR   rO   r   r   r   Ú'test_excel_duplicate_columns_with_names]  s
   
z7TestExcelWriter.test_excel_duplicate_columns_with_namesc              	   C   s„   d}t  |¡�1}tjtt |¡d�� t|dd� W d   ƒ n1 s#w   Y  W d   ƒ d S W d   ƒ d S 1 s;w   Y  d S )Nz7if_sheet_exists is only valid in append mode (mode='a')rß   r  )Úif_sheet_exists)r%   r&   rÚ   rá   râ   rþ  rÿ  r   )rN   r'   ré   r  r   r   r   Útest_if_sheet_exists_raisesf  s   ÿÿ"ÿz+TestExcelWriter.test_if_sheet_exists_raisesc              	   C   s„   t  |¡�3}t||d��}tƒ  |¡ W d   ƒ n1 sw   Y  t |¡}tƒ }t  ||¡ W d   ƒ d S 1 s;w   Y  d S ©Nrõ  )r%   r&   r   r
   rI   rJ   rK   rL   )rN   r+   r'   r   rf   rR   rO   r   r   r   Útest_excel_writer_empty_framen  s   ÿ
"ûz-TestExcelWriter.test_excel_writer_empty_framec                 C   s\   t  |¡�}tƒ j||d� t |¡}tƒ }t  ||¡ W d   ƒ d S 1 s'w   Y  d S r0  r—   )rN   r+   r'   r   rR   rO   r   r   r   Útest_to_excel_empty_framew  s   
"üz)TestExcelWriter.test_to_excel_empty_frame)Fr×   rØ   rÙ   rê   rò   rø   r  r  r  r  rÚ   rÛ   rÜ   r´   Úint8Úint16Úint32r  r  Úfloat16Úfloat32Úfloat64r  r"  r$  r)  r/  r7  r;  r>  rT  Úfilterwarningsr[  re  rk  rr  ry  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/  r1  r2  r   r   r   r   rÝ   a  sŒ    1	

	#=/ÿ
E
þþ
 
		rÝ   c                
   @   sZ   e Zd Zej dejede 	d¡d�eje
de 	d¡d�g¡dd„ ƒZdd	„ Zd
d„ ZdS )ÚTestExcelWriterEngineTestsz	klass,extr.   r3   r1   r/   c              	   C   sž   t  |¡�@}t|ƒ�#}|dkrttddd�ƒrt|tƒsJ ‚nt||ƒs&J ‚W d   ƒ n1 s0w   Y  W d   ƒ d S W d   ƒ d S 1 sHw   Y  d S )Nr.   r3   Úignore)Úerrors)r%   r&   r   r±   r	   Ú
isinstancer   )rN   Úklassr'   r   rf   r   r   r   Útest_ExcelWriter_dispatch�  s   


ÿ€ùÿ"ÿz4TestExcelWriterEngineTests.test_ExcelWriter_dispatchc                 C   s<   t jtdd�� tdƒ W d   ƒ d S 1 sw   Y  d S )Nz	No enginerß   Únothing)rÚ   rá   râ   r   ©rN   r   r   r   Ú test_ExcelWriter_dispatch_raises“  s   
"ÿz;TestExcelWriterEngineTests.test_ExcelWriter_dispatch_raisesc              
   C   s   G dd„ dt ƒ}t|ƒ tddƒ�U d}t |¡�:}t |ƒ�}t||ƒs&J ‚W d   ƒ n1 s0w   Y  tdgtdgdd	�td
gdd	�d�}| |¡ W d   ƒ n1 sVw   Y  | 	¡  W d   ƒ n1 siw   Y  t d¡�}|j|dd� W d   ƒ n1 s…w   Y  | 	¡  d S )Nc                   @   sP   e Zd ZdZdZdZdZdZdd„ Zdd„ Z	dd	„ Z
ed
d„ ƒZedd„ ƒZdS )zCTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClassF)ÚxlsxÚxlsr2  c                 S   s   d S r!   r   rA  r   r   r   ÚbookŸ  r   zHTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.bookc                 S   ó   dt | ƒ_d S ©NT)ÚtypeÚcalled_saverA  r   r   r   Ú_save¢  ó   zITestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._savec                 _   rF  rG  )rH  Úcalled_write_cells)rN   ÚargsÚkwargsr   r   r   Ú_write_cells¥  rK  zPTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._write_cellsc                 S   rF  rG  )rH  Úcalled_sheetsrA  r   r   r   r€   ¨  s   zJTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.sheetsc                 S   s.   | j sJ ‚| js
J ‚| jrJ ‚d| _ d| _d S )NF)rI  rL  rP  )Úclsr   r   r   Úassert_called_and_reset¬  s
   



z[TestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.assert_called_and_resetN)r×   rØ   rÙ   rI  rL  rP  Ú_supported_extensionsÚ_enginerE  rJ  rO  Úpropertyr€   ÚclassmethodrR  r   r   r   r   Ú
DummyClass˜  s    
rW  zio.excel.xlsx.writerr2  zsomething.xlsxrY   rZ   rV   )r9  rŽ  rW   r®   zsomething.xlsrõ  )
r   r   r   r%   r&   r=  r
   r   rI   rR  )rN   rW  r   Úfilepathrf   rQ   r   r   r   Útest_register_writer—  s*   
ÿýø
	õÿz/TestExcelWriterEngineTests.test_register_writerN)r×   rØ   rÙ   rÚ   rÛ   rÜ   r"   r   ÚtdÚ
skip_if_nor   r?  rB  rY  r   r   r   r   r:  €  s    þþ
r:  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
TestFSPathc              	   C   sˆ   t  d¡�5}tdddgiƒ}| |¡ t|ƒ�}t |¡}W d   ƒ n1 s'w   Y  ||ks2J ‚W d   ƒ d S 1 s=w   Y  d S )Núfoo.xlsxr`   r;   r>   )r%   r&   r
   rI   r   rû  Úfspath)rN   r   rQ   rñ   rR   r   r   r   Útest_excelfile_fspathË  s   

ÿ"ûz TestFSPath.test_excelfile_fspathc              	   C   s~   t  d¡�0}t|ƒ�}t |¡t|ƒksJ ‚W d   ƒ n1 s w   Y  W d   ƒ d S W d   ƒ d S 1 s8w   Y  d S )Nr]  )r%   r&   r   rû  r^  rX  )rN   r   rf   r   r   r   Útest_excelwriter_fspathÓ  s   
ÿÿ"ÿz"TestFSPath.test_excelwriter_fspathc                 C   sb   t dg d¢iƒ}d}tjt|d�� tƒ }t|ƒ}| |d¡ W d   ƒ d S 1 s*w   Y  d S )NrY   rn   zwStarting with pandas version 3.0 all arguments of to_excel except for the argument 'excel_writer' will be keyword-only.rß   ÚSheet_name_1)r
   r%   rÊ   rË   r   r   rI   )rN   rQ   ré   Úbufrf   r   r   r   Ú"test_to_excel_pos_args_deprecationØ  s   ÿ"ýz-TestFSPath.test_to_excel_pos_args_deprecationN)r×   rØ   rÙ   r_  r`  rc  r   r   r   r   r\  È  s    r\  r>  c                 C   s6   dd„ t tƒD ƒ}dd„ t | ƒD ƒ}| |¡rJ ‚d S )Nc                 S   ó   h | ]	}|  d ¡s|’qS ©r¥   ©Ú
startswith©rv   r9  r   r   r   Ú	<setcomp>è  rª   z%test_subclass_attr.<locals>.<setcomp>c                 S   rd  re  rf  rh  r   r   r   ri  é  rª   )Údirr   Úsymmetric_difference)r>  Ú
attrs_baseÚattrs_klassr   r   r   Útest_subclass_attrå  s   rn  )<r   r   r   Ú	functoolsr   Úior   rû  rþ  Únumpyr´   rÚ   Úpandas.compatr   Úpandas.compat._constantsr   Úpandas.compat._optionalr	   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrZ  ÚpandasrJ   r
   r   r   r   r   Úpandas._testingÚ_testingr%   Úpandas.io.excelr   r   r   r   r   Úpandas.io.excel._utilr   rÛ   Ú
single_cpuÚ
pytestmarkrX  r   Úfixturer   r$   r   r-   rÜ   r"   r[  r5   ÚusefixturesrÝ   r:  r\  Úvaluesrn  r   r   r   r   Ú<module>   s˜    



ÿúþ  ýýýðþ
        H