o
    Ti!                     @   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  mZ d dlZd dlmZmZmZmZ d dlmZ d dlmZmZmZmZm Z  d dl!m"Z" ej#d	d
 Z$ej#dd Z%ej&'dej(de)de)dgdej(de)de)dgdej(de)de)dgdej(de)ddgG dd dZ*ej&'dej(dde)de)dgdej(dde)de)dgdej(dde)de)dgdej(dde)ddgej&+dG dd dZ,G dd dZ-e)de)dG dd dZ.ej&'de"/ d d! Z0dS )"    )datedatetime	timedelta)partial)BytesION)PY310)	DataFrameIndex
MultiIndexoption_context)	ExcelFileExcelWriter_OpenpyxlWriter_XlsxWriterregister_writer)_writersc                 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_path r   b/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/io/excel/test_writers.pypath$   s   "r   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   Zoption_namer   r   r   
set_engine-   s
   
"r   r   .xlsxopenpyxlZxlrdZ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 )
NZ	no_header    d   r&         r&   r$   i,  r&   r#   i  Findexheaderr   
sheet_nameZusecolsr0   r   r   r   to_excelpd
read_excelassert_frame_equalselfr   r0   expectedfilenamedfr   resultr   r   r   !test_read_one_empty_col_no_headerH   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 )NZwith_headerr%   r)   r,   r-   FTr.   r   r1   r3   r8   r   r   r   #test_read_one_empty_col_with_headerY   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 sw   Y  d S )Nr'   foor*   barr$   ZbazabcolumnsZData_no_headF)r0   r/   ZData_with_headr/   AB)r2   r0   names)r2   	index_colrI   )
r   r   r   r   r4   rE   r   r5   r6   r7   )r9   r   ZrefdfpthwriterreaderZxlsdf_no_headZxlsdf_with_headr   r   r   "test_set_column_names_in_parameteri   s*   "


"z0TestRoundTrip.test_set_column_names_in_parameterc           
   	      s   dd  g d} fdd|D }t t||}t|C}t|}| D ]
\}}||| q'W d    n1 s<w   Y  tj||dd}|D ]}	t	||	 ||	  qKW d    d S 1 scw   Y  d S )Nc                 S   s"   g dg d}}t ||| gdS )N)      !   r'   r*   r$   rD   )r   )Zcol_sheet_namedir   r   r   tdf   s   zDTestRoundTrip.test_creating_and_reading_multiple_sheets.<locals>.tdf)ZAAAZBBBZCCCc                    s   g | ]} |qS r   r   ).0srU   r   r   
<listcomp>       zKTestRoundTrip.test_creating_and_reading_multiple_sheets.<locals>.<listcomp>r   r2   rJ   )
dictzipr   r   r   itemsr4   r5   r6   r7   )
r9   r   sheetsdfsrK   ewZ	sheetnamer<   Z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'   r$      )ZOnexTwoXrg   Y)Zeror&   )rd   rf   ri   )rk   zUnnamed: 4_level_1r0   rJ   ))Begr&   ZMiddlere   Tailrh   rp   rj   ))rm   zUnnamed: 1_level_1rn   ro   rq   r   r   r   r4   r5   r6   r7   )r9   r   r   r<   r:   actualr   r   r   &test_read_excel_multiindex_empty_level   sH   	
		
	"z4TestRoundTrip.test_read_excel_multiindex_empty_levelc_idx_namesTFr_idx_namesc_idx_levelsr'   r_idx_levelsc              	   C   sX  t |}|dkr|r|dkr|rtjjdd}|j| |p$|dk}	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 sw   Y  d S )
Nr'   r$   z?Column index name cannot be serialized unless it's a MultiIndex)reason   )rJ   r0   )check_namesr   )r   r   pytestmarkZxfailnodeZ
add_markermakeCustomDataframer4   r5   r6   listranger7   npnaniloc)r9   r   ru   rv   rw   rx   requestrK   r~   r{   r<   Zactr   r   r   test_excel_multindex_roundtrip   sF   








"z,TestRoundTrip.test_excel_multindex_roundtripc              	   C   s   t g dtjdddd}| }|d jd|d< t|e}|| tj	|dd	}t
|| tj	|dgdd
}t
|| dd }tjt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 sw   Y  d S )NrR   z
2012-01-01r$   )periods)coldate_stringsr   %m/%d/%Yr   rJ   )parse_datesrJ   c                 S   s   t | dS )Nr   )r   strptimere   r   r   r   <lambda>  s    z;TestRoundTrip.test_read_excel_parse_dates.<locals>.<lambda>zuse 'date_format' insteadmatch)r   date_parserrJ   )r   date_formatrJ   )r   r5   Z
date_rangecopydtstrftimer   r   r4   r6   r7   Zassert_produces_warningFutureWarning)r9   r   r<   Zdf2rK   resr   r   r   r   test_read_excel_parse_dates   s8   
	
"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 )
Nr#   z
2020-01-01Z6M)startr   freqrF   r   r'   r   )z(2020-01-31, 2020-07-31]z(2020-07-31, 2021-01-31]z(2021-01-31, 2021-07-31]z(2021-07-31, 2022-01-31])r
   from_arraysr   r5   Zinterval_range	Timestampr   r   r   r4   r6   r7   )r9   r   Zmidxr<   rK   r=   r:   r   r   r   "test_multiindex_interval_datetimes   s*   
z0TestRoundTrip.test_multiindex_interval_datetimes)__name__
__module____qualname__r}   r~   parametrizer   r   r   r>   r?   rN   rb   rt   r   r   r   r   r   r   r   r"   <   s*    *
,
/1!r"   z
engine,extc                   @   sN  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d$d% Zd&d' Z d(d) Z!d*d+ Z"d,d- Z#d.d/ Z$d0d1 Z%d2d3 Z&d4d5 Z'd6d7 Z(d8d9 Z)d:d; Z*d<d= Z+e
jd>d?d@ge
jdAg dBe
jdCg dBdDdE Z,dFdG Z-dHdI Z.dJdK Z/e
jdLdMdNgdOdP Z0dQdR Z1dSdT Z2dUdV Z3dWdX Z4dYdZ Z5d[d\ Z6d]d^ Z7d_d` Z8dadb Z9dcdd Z:dedf Z;dgdh Z<didj Z=dkdl Z>e
jdmdne?gdodp Z@dqdr ZAdsdt ZBdudv ZCdwdx ZDdnS )y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 larger   )r   Zzerosr   r}   raises
ValueErrorr4   )	r9   r   Zbreaking_row_countZbreaking_col_countZrow_arrZcol_arrZrow_dfZcol_dfmsgr   r   r   test_excel_sheet_sizeV  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[   zWorksheet named '0' not foundr   0)r   r   randomdefault_rngstandard_normalr4   r   r5   r6   r   r7   r}   r   r   )r9   r   gtxlr<   r   r   r   r   test_excel_sheet_by_name_raiseg  s   

"z.TestExcelWriter.test_excel_sheet_by_name_raisec                 C   s   t |!}||d | }|jd d 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 sYw   Y  d S )NZData1r|   ZData2r   r[   )	r   r4   r   rE   r   r5   r6   r   r7   )r9   framer   rL   frame2rM   Zfound_dfZ	found_df2r   r   r   !test_excel_writer_context_managert  s   

"z1TestExcelWriter.test_excel_writer_context_managerc                 C   s  |  }tj|jd d|jdf< ||d |j|dddgd |j|ddd |j|dd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	
|| ||d tj|d	d}t	
|| ||d tj|d	d}t	
|| |d }|| tj|d	d}t	
| | d S )Nrz   rG   test1rH   rD   Fr0   rF   r   r[   ZNA)Zna_rep)r2   rJ   Z	na_valuesZ88X   g      V@Sheet1r   r   )r   r   r   r   rE   get_locr4   r5   r6   r   r7   r/   Zto_frame)r9   r   r   reconsrW   r   r   r   test_roundtrip  sD   
zTestExcelWriter.test_roundtripc                 C   sd   |  }d|d< ||d t|}tj|ddd}W d    n1 s%w   Y  t|| d S )NrA   r@   r   r   r[   )r   r4   r   r5   r6   r   r7   )r9   r   r   Zmixed_framerM   r   r   r   r   
test_mixed  s   
zTestExcelWriter.test_mixedc                 C   st   |}t jt|jd d}||_||d t|}t j|ddd}W d    n1 s-w   Y  t	|| d S )Nr   r   r   r[   )
r5   DatetimeIndexr   asarrayr/   r4   r   r6   r   r7   )r9   tsframer   r<   r/   rM   r   r   r   r   test_ts_frame  s   
zTestExcelWriter.test_ts_framec                 C   sh   |  }tj|jd d|jdf< ||d |j|dddgd |j|ddd |j|ddd d S )	Nrz   rG   r   rH   rD   Fr   rF   )r   r   r   r   rE   r   r4   )r9   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}||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   integersr4   r   r5   r6   astypeint64r   r7   )r9   r   r   r<   rM   r   Z	int_frameZrecons2r   r   r   test_int_types  s   
zTestExcelWriter.test_int_typesc                 C   st   t tjdd|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   r4   r   r5   r6   r   r   r7   )r9   r   r   r<   rM   r   r   r   r   test_float_types  s   
z TestExcelWriter.test_float_typesc                 C   sn   t g dt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   Zbool_r4   r   r5   r6   r   r   r7   r9   r   r<   rM   r   r   r   r   test_bool_types  s   
zTestExcelWriter.test_bool_typesc                 C   sp   t dtjfddtj fg}||d t|}tj|ddd}W d    n1 s+w   Y  t|| d S )Nr'   )r*   r$   rz   r   r   r[   )	r   r   infr4   r   r5   r6   r   r7   r   r   r   r   test_inf_roundtrip  s   
z"TestExcelWriter.test_inf_roundtripc                 C   sZ  t jt|jd d}||_| }tj|jd d|j	df< |
|d |j
|dddgd |j
|ddd |j
|ddd	 t|}|
|d |
|d
 W d    n1 s[w   Y  t|$}t j|ddd}t|| t j|d
dd}t|| W d    n1 sw   Y  dt|jksJ d|jd ksJ d
|jd ksJ d S )Nr   rz   rG   r   rH   rD   Fr   rF   Ztest2r   r[   r*   r'   )r5   r   r   r   r/   r   r   r   rE   r   r4   r   r   r6   r   r7   lensheet_names)r9   r   r   r   r/   rL   rM   r   r   r   r   test_sheets  s*   

zTestExcelWriter.test_sheetsc                 C   s   |  }tj|jd d|jdf< ||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 sWw   Y  |  }||_t|| d S )Nrz   rG   r   rH   rD   Fr   rF   )ZAArh   rj   Zr   r[   )r   r   r   r   rE   r   r4   r	   r   r5   r6   r   r7   )r9   r   r   Zcol_aliasesrM   rsxpr   r   r   test_colaliases  s   
zTestExcelWriter.test_colaliasesc                 C   s  |  }tj|jd d|jdf< ||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 sdw   Y  dg|j_|jj|jjksxJ ttj	d	
d
dk}|j|dg d|d t|}tj|dddtj}W d    n1 sw   Y  dg|j_|jj|jjksJ ttj	d	
d
dk}|j|dd|d t|}tj|dddtj}W d    n1 sw   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 s4w   Y  t|| d S )Nrz   rG   r   rH   rD   Fr   rF   r*   r   r   test)Zindex_labelmerge_cellsr[   )r   dummyZdummy2)rG   rH   CD)rE   r/   r   r'   )r   r   r   r   rE   r   r4   r   r   r   r   r   r5   r6   r   r   r/   rI   r   r7   bool	set_index)r9   r   r   r   r<   rM   r   r   r   r   test_roundtrip_indexlabels0  sf   






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   r#   r@   r   r   r[   )r   r   r   r   r   r/   namer4   r   r5   r6   r   r   r7   )r9   r   r   r<   xfr=   r   r   r   test_excel_roundtrip_indexnamei  s   
z.TestExcelWriter.test_excel_roundtrip_indexnamec                 C   s   t jt|jd d}||_| }dd |jD |_|j|d|d t|}t j|ddd}W d    n1 s:w   Y  t	
|| d S )Nr   c                 S   s   g | ]}|  qS r   )r   )rV   re   r   r   r   rY   ~  rZ   zATestExcelWriter.test_excel_roundtrip_datetime.<locals>.<listcomp>r   r   r   r[   )r5   r   r   r   r/   r   r4   r   r6   r   r7   )r9   r   r   r   r/   ZtsfrM   r   r   r   r   test_excel_roundtrip_datetimeu  s   
z-TestExcelWriter.test_excel_roundtrip_datetimec              
   C   s  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}t|w}t|}||d W d    n1 siw   Y  t|ddd}||d W d    n1 sw   Y  t|}tj	|ddd}	W d    n1 sw   Y  t|}
tj	|
ddd}W d    n1 sw   Y  W d    n1 sw   Y  t
|	| t
|| d S )Ni  r'      i  	      i  rz         rQ   r#   r*         ZDATEZDATETIMErh   rj   r/   rE   r   z
DD.MM.YYYYzDD.MM.YYYY HH-MM-SS)r   Zdatetime_formatr   r[   )r   r   r   r   r   r   r4   r   r5   r6   r7   )r9   r   r   r<   Zdf_expected	filename2Zwriter1Zwriter2Zreader1Zrs1Zreader2Zrs2r   r   r   test_excel_date_datetime_format  sH   ""	


z/TestExcelWriter.test_excel_date_datetime_formatc                 C   s   t tjdjddddtjd}| }t|d d|d< t|d d	t
|d< ||d	 t|}tj|d	dd
}W d    n1 sIw   Y  t|| d S )Nr*   r   r      r'   r   r   r   newr   r[   )r   r   r   r   r   r   r   r5   cutr   strr4   r   r6   r   r7   r9   r   r<   r:   rM   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
< ||d t|}tj|ddd}W d    n1 sKw   Y  t|| d S )Nr*   r   r   r   r   r   r   )
rG   rH   r   r   EFGHIJ)labelsr   r   r[   )r   r   r   r   r   r   r   r5   r   ZSeriesr   r4   r   r6   r   r7   )r9   r   r<   r:   Z	intervalsrM   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
< ||d t	|}t
j|ddd}W d    n1 sJw   Y  t|| d S )Nr*   r   r   r   r   rG   )rE   r   c                 S   s
   t | dS )Nseconds)r   r   r   r   r   r     s   
 z9TestExcelWriter.test_to_excel_timedelta.<locals>.<lambda>r   c                 S   s   t | d d S )Nr   iQ )r   total_secondsr   r   r   r   r     s    r   r   r[   )r   r   r   r   r   r   r   applyr4   r   r5   r6   r   r7   r   r   r   r   test_to_excel_timedelta  s   
z'TestExcelWriter.test_to_excel_timedeltac                 C   sl   |j ddd }||d t|}tj|ddd}W d    n1 s&w   Y  t||d d S )NMZperiod)kindZsht1r   r[   )	Zresamplemeanr4   r   r5   r6   r   r7   Z	to_period)r9   r   r   r   rM   r   r   r   r   test_to_excel_periodindex  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secondrI   r   Fr   rG   rH   rD   r   r   r'   r[   )r   aranger   r/   r   reshaper
   r   r4   r   r5   r6   r   r7   )r9   r   r   r   arrays	new_indexrM   r<   r   r   r   test_to_excel_multiindex  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*   r$   )r   r      r*   r$   rG   rH   r   rG   rH   r   r   r'   r   )
r   r   r   r   r   r4   r5   r6   r   r7   )r9   r   r   r<   Zdf1r   r   r   "test_to_excel_multiindex_nan_label  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  |sk|j	jdddd}
dd t|
 D |_	t||	 d S )Nr*   r   r|   r	  r
  r  ))(   r'   )r  r*   )2   r'   )r  r*   r   r'   r   r   r2   r0   rJ   F)ZsparsifyZadjoinrI   c                 S   s   g | ]
}d  tt|qS )r   )joinmapr   )rV   qr   r   r   rY   '  s    zATestExcelWriter.test_to_excel_multiindex_cols.<locals>.<listcomp>)r   r  r   r/   r   r  r
   r   from_tuplesrE   r4   r   r5   r6   formatr]   r   r7   )r9   r   r   r   r  r  Znew_cols_indexr0   rM   r<   fmr   r   r   test_to_excel_multiindex_cols  s$   "
z-TestExcelWriter.test_to_excel_multiindex_colsc                 C   s   |j tjt|j tjdg}t||_ ddg|j _|j|d|d t	|}t
j|dddgd}W d    n1 s;w   Y  t|| |j jd	ksNJ d S )
Nr   timer@   r   r   r   r'   r[   )r  r@   )r/   r   r  r   r   r
   r   rI   r4   r   r5   r6   r   r7   )r9   r   r   r   r  rM   r   r   r   r   test_to_excel_multiindex_dates*  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   r   r  r  r  <   )rB   rC   c)F   P   )Z   r(   r   FrF   r2   )r   r   r
   r  r/   r4   r   r5   r6   r   r7   )r9   r   Zframe1r   Zmulti_indexrM   Zframe3r   r   r   'test_to_excel_multiindex_no_write_index7  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}||d t|}tj|dd	}W d    n1 s3w   Y  tj||d
d
d d S )N)r   r'   r*   rD   r   r'   r  r*   r   r   r%  F)Zcheck_index_typeZcheck_dtype)	r   r
   r  r4   r   r5   r6   r   r7   )r9   r   r:   r<   rM   r=   r   r   r   test_to_excel_empty_multiindexL  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.4i(@33333@̤ArG   rH   rh   rj   r   r   r   %.2fZfloat_formatr   r[   gQ?gq=
ףp?g=
ףp=?gp=
ף(@r*  r+  )r   r4   r   r5   r6   r   r7   )r9   r   r<   rM   r=   r:   r   r   r   test_to_excel_float_formatY  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ƒrH   )u   XƓrj   r   r   z__tmp_to_excel_float_format__.Z	TestSheetr%  r   r[   r3   )r9   r   r<   r;   r=   r   r   r   test_to_excel_output_encodingk  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)  rG   rH   r,  r   r   r-  r.  r   r[   r/  r0  )r   r   openUnicodeEncodeErrorr}   skipr   r4   r   r5   r6   r7   )r9   r   r;   r<   rM   r=   r:   r   r   r   test_to_excel_unicode_filenamex  s4   
z.TestExcelWriter.test_to_excel_unicode_filenameuse_headersTFr_idx_nlevelsrR   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}
tj|	|
||d	}|d
kr\d}tjt	|d |||dd W d    d S 1 sUw   Y  d S |||}|ro|j|	|
| fksnJ n|j|	d
 |
| fks|J t
t|jD ]}t
t|jD ]}|j||f tjusJ qqd S )NTr   c                    sT   | j | |d t}tj||jd |dW  d    S 1 s#w   Y  d S )N)r0   r   r/   r   r2   r0   )r4   r   r5   r6   r   )datar0   Z
parser_hdrr/   r   r   r   r   r   	roundtrip  s   
$z;TestExcelWriter.test_excel_010_hemstring.<locals>.roundtrip)r'   r*   )r   r   rz   r$   )r9  r:  r'   z_Writing to Excel with MultiIndex columns and no index \('index'=False\) is not yet implemented.r   FrF   )Tr   T)r   r   r   r   r   r   r   r}   r   NotImplementedErrorr   r   r/   rE   )r9   r   r:  r9  r8  r   r>  Zparser_headerr   ZnrowsZncolsr<   r   rr!  r   r=  r   test_excel_010_hemstring  s2   	"
z(TestExcelWriter.test_excel_010_hemstringc                 C   s  t g dg dg dgg d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}||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 )NrR   )rG   rH   rH   rD   r   )rG   rH   B.1r   r[   )r'   r*   r$   r#   )rz      rc      )rG   rH   rG   rH   )rG   rH   A.1rB  Fr.   r;  r   r4   r5   r6   r   r7   r9   r   r<   r:   r=   r   r   r   test_duplicated_columns  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*   rG   rH   r   rH   rG   rD   r   r;  )r   r4   r5   r6   r   assert_series_equal)r9   r   write_frame
read_framer   r   r   test_swapped_columns  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 )NrI  rJ  rK  zNot all names specifiedr   r   rH   r   rD   z.'passes columns are not ALL present dataframe'r   )r   r}   r   KeyErrorr4   )r9   r   rM  r   r   r   test_invalid_columns  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 )
NrI  rJ  )r$   r$   r$   r  Zcol_subset_bugrG   rH   rE   r/   r[   rF  )r9   r   Zto_excel_indexZread_excel_index_colrM  r:   rN  r   r   r   test_write_subset_columns  s   	z)TestExcelWriter.test_write_subset_columnsc                 C   sr   t g dg d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#onerU  tworW  z#tworK  test_cr   r[   )r'   r   r'   r'   )r*   r'   #r2   commentrJ   )r   r4   r5   r6   r   r   r7   r9   r   r<   Zresult1Zresult2r   r   r   test_comment_arg  s   


z TestExcelWriter.test_comment_argc                 C   sP   t g dg dd}||d tj|dd}tj|dd d}t|| d S )NrT  rV  rK  rX  r%  )r2   r\  rF  r]  r   r   r   test_comment_default#  s
   z$TestExcelWriter.test_comment_defaultc                 C   sZ   t g dg dd}||d t g dg dd}tj|dddd	}t|| d S )
NrT  rV  rK  rX  )rU  NrU  )rW  NNrZ  r   r[  rF  rG  r   r   r   test_comment_used0  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)rB   rC   FrF   r'   r*   rZ  )r\  rF  rG  r   r   r   test_comment_empty_line>  s
   z'TestExcelWriter.test_comment_empty_linec                 C   s   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}||d tj|ddd }t|d |d  d S )!Ni  r'   r   r*   r$   -   8   r#      1   rC  *   rc   9   #   r   )   r   rO            5      %   r      r   4   rG   r   r;  )r   r   r4   r5   r6   r   rL  )r9   r   Z	datetimesrM  rN  r   r   r   test_datetimesJ  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   r4   seekr5   r6   r   r7   )r9   r   Zbior<   rL   Z	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*   rK  r$   r#   zBOpenDocumentSpreadsheet() got an unexpected keyword argument 'foo'z3__init__() got an unexpected keyword argument 'foo')r!   r   r    z<Workbook.__init__() got an unexpected keyword argument 'foo'r   r    z8load_workbook() got an unexpected keyword argument 'foo'r   r@   rA   )r   Zengine_kwargs)r   r   osr   existsr}   r   	TypeErrorreescaper4   )r9   r   r   r<   Zmsgsr   r   r   test_engine_kwargsm  s4   "z"TestExcelWriter.test_engine_kwargsc                 C   sz   t dddgdddgg dg dd	}||d
 tj|d
ddd}| }|jt|_|j	d|_t
|| d S )NrB   rC   r!  er*   )rS   f)r'   r*   g      @)applebananaZcherry)mixednumericr   r   r   r  r   )r   r4   r5   r6   r   r  r  r   r  r   r   r7   r9   r   r<   readr:   r   r   r   test_write_lists_dict  s   z%TestExcelWriter.test_write_lists_dictc                 C   sF   t ddgddgd}||d tj|ddd}|}t|| d S )	Nr'   r*   r$   r#   )renderr<  r   r   r   rF  r  r   r   r   test_render_as_column_name  s
   z*TestExcelWriter.test_render_as_column_namec                 C   sV   t ddggddgd}|ddd}|| tj|dgdgd	d
}t|| d S )Nr@   rA   col1col2rD   TF)r@   rA   r   )Ztrue_valuesZfalse_valuesrJ   )r   replacer4   r5   r6   r   r7   )r9   r   r<   r:   rN  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*   r$   r#   r  r  rD   r   rY  )Zfreeze_panesr   r   rF  )r9   r   r:   r=   r   r   r   test_freeze_panes  s   z!TestExcelWriter.test_freeze_panesc                 C   J   t  }t|j|d}ttjdd}t j||d| d}t || d S Nrv  r   r   r@   )r   )r   makeDataFramer   r4   r5   r6   Zround_trip_pathlibr7   r9   r   r   r<   rL   rM   r=   r   r   r   test_path_path_lib  
   z"TestExcelWriter.test_path_path_libc                 C   r  r  )r   r  r   r4   r5   r6   Zround_trip_localpathr7   r  r   r   r   test_path_local_path  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 )NZ2018Z2018Q1Z2018Q2)r*   r*   r   r   rD   r   r'   rl   c                 S   s   g | ]}t |qS r   )r   )rV   rT   r   r   r   rY     rZ   zCTestExcelWriter.test_merged_cell_custom_objects.<locals>.<listcomp>)level)r
   r  r5   ZPeriodr   r   Zonesr4   r6   rE   Z
set_levelsZlevelsr   r7   )r9   r   mir:   r=   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 )NZ2019)tzr   zExcel does not supportr   )r5   r   r   r}   r   r   r4   Zto_pydatetime)r9   r   Ztz_aware_fixturer   r  r<  r<   r   r   r    test_raise_when_saving_timezones  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   rO   rK  )rG   rH   rG   FrR  )r   r   r   )r'   rO   r'   )rG   rH   rE  rD   rF  )r9   r   r<   r=   r:   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  )Zif_sheet_exists)r   r   r}   r   r   r|  r}  r   )r9   r   r   r  r   r   r   test_if_sheet_exists_raises  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 Nrv  )r   r   r   r   r4   r5   r6   r7   )r9   r   r   r   rL   r=   r:   r   r   r   test_excel_writer_empty_frame  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 r  rr   )r9   r   r   r   r=   r:   r   r   r   test_to_excel_empty_frame  s   
"z)TestExcelWriter.test_to_excel_empty_frame)Er   r   r   r   r   r   r   r   r   r   r}   r~   r   r   Zint8Zint16Zint32r   r   Zfloat16Zfloat32Zfloat64r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r&  r'  r1  r2  r7  rA  rH  rO  rQ  rS  r^  r_  r`  rd  ru  rx  r~  r  r  r  r  r  r  r  objectr  r  r  r  r  r   r   r   r   r   ?  s    1	

	9,	4

 
		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   r    r   r   c              	   C   s   t |=}t| }|dkrtdrt|tsJ nt||s#J W d    n1 s-w   Y  W d    d S W d    d S 1 sEw   Y  d S )Nr   r    )r   r   r   tdZsafe_import
isinstancer   )r9   klassr   r   rL   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   Znothing)r}   r   r   r   r9   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I d}t|.}t |}t||s&J W d    n1 s0w   Y  tdd}|| W d    n1 sJw   Y  |  W d    n1 s]w   Y  td}|j|dd W d    n1 syw   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)ZxlsxZxlsr   c                 S   s   d S )Nr   r  r   r   r   book*  s   zHTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.bookc                 S      dt | _d S NT)typecalled_saver  r   r   r   _save-     zITestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._savec                 _   r  r  )r  called_write_cells)r9   argskwargsr   r   r   _write_cells0  r  zPTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass._write_cellsc                 S   r  r  )r  called_sheetsr  r   r   r   r_   3  s   zJTestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.sheetsc                 S   s.   | j sJ | js
J | jrJ d| _ d| _d S )NF)r  r  r  )clsr   r   r   assert_called_and_reset7  s
   



z[TestExcelWriterEngineTests.test_register_writer.<locals>.DummyClass.assert_called_and_resetN)r   r   r   r  r  r  Z_supported_extensionsZ_enginer  r  r  propertyr_   classmethodr  r   r   r   r   
DummyClass#  s    
r  zio.excel.xlsx.writerr   zsomething.xlsxr'   zsomething.xlsrv  )	r   r   r   r   r   r  r   r4   r  )r9   r  r   filepathrL   r<   r   r   r   test_register_writer"  s"   

	z/TestExcelWriterEngineTests.test_register_writerN)r   r   r   r}   r~   r   paramr   r  
skip_if_nor   r  r  r  r   r   r   r   r    s    
	r  c                   @   s   e Z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.xlsxrG   r'   r*   )r   r   r   r4   r   ry  fspath)r9   r   r<   r   r=   r   r   r   test_excelfile_fspathR  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   ry  r  r   )r9   r   rL   r   r   r   test_excelwriter_fspathZ  s   
"z"TestFSPath.test_excelwriter_fspathN)r   r   r   r  r  r   r   r   r   r  O  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 _
startswithrV   r   r   r   r   	<setcomp>c      z%test_subclass_attr.<locals>.<setcomp>c                 S   r  r  r  r  r   r   r   r  d  r  )dirr   symmetric_difference)r  Z
attrs_baseZattrs_klassr   r   r   test_subclass_attr`  s   r  )1r   r   r   	functoolsr   ior   ry  r|  numpyr   r}   Zpandas.compat._constantsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr5   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.io.excelr   r   r   r   r   Zpandas.io.excel._utilr   Zfixturer   r   r~   r   r  r  r"   Zusefixturesr   r  r  valuesr  r   r   r   r   <module>   s    

 y
       ?B