a
    d(7                     @   s  d dl 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mZ edZejddgZdd	 Zd
d Zejdddgdd Zdd Zejdddgdd Zejdddgfdg dfgdd Zejdd d!d"d#gfd$d%d&gfd'd%d&d#gfgd(d) Zejd*d d d+d,gd-d.gfd d%d/d,gd+d.gfd%d d/d+gd-d.gfd%d%d/d,gd-d+gfgd0d1 Zejd2g d3d4d5 Zd6d7 Zejd8ddgd9d: Zejd;d ej d<d%d!d=gej d>d?d@dAgej dBdCdDdEgdFfd!g dGg dHg dIdJfgejdKg dLejd8g dMdNdO Z!dPdQ Z"ejd8g dMdRdS Z#ejd8g dMdTdU Z$dVdW Z%dXdY Z&dZd[ Z'dS )\    N)Path)	DataFrame)ExcelWriter_OpenpyxlWriteropenpyxlextz.xlsxc                 C   s4  ddl m} dddddddddd	d
dddddddidddd}|d}|jd|d}|j|jjd}|j||||d}|jdd	d
}|jddd}|j	d|d}	d}
|j
ddd}t|}|d |ksJ |d |ksJ |d |ksJ |d |	ksJ |d |
ksJ |d |ks0J d S )Nr   )styles00FF0000TcolorboldZthin)toprightZbottomleftcenterr   )Z
horizontalZverticalZsolidZ006666FFg333333?)ZrgbZtint)ZpatternTypeZfgColorZformat_codez0.00F)lockedhidden)fontborders	alignmentfillnumber_format
protection)r   r   )styler   borderr   r   r   r   )r   r   ZColorZFontZSider   ZBORDER_THINZBorderZ	AlignmentZPatternFillZ
Protectionr   _convert_to_style_kwargs)r   r   ZhstyleZ
font_colorr   Zsider   r   Z
fill_colorr   r   r   kw r   l/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/io/excel/test_openpyxl.pytest_to_excel_styleconverter   s0    	

r   c              	   C   s*  ddl m} d}dddii}dddii}|ddd	|d
|ddd|d
g}ddddi}t|}|d }|ddddd|dg}	t| }
t|
6}|j||d |j|	|d |j| }W d    n1 s0    Y  |d }|d }|j|ksJ |j|ksJ W d    n1 s0    Y  d S )Nr   )	ExcelCellZmerge_styledr   r   r	   Z0000FF00   *   )colrowvalr   c   Z000000FFTr
   pandas)r#   r$   r%   Z
mergestartZmergeendr   
sheet_nameB1A2)	Zpandas.io.formats.excelr    r   r   tmensure_cleanZ_write_cellssheetsr   )r   r    r)   Zsty_b1Zsty_a2Zinitial_cellsZ
sty_mergedZ
sty_kwargsZopenpyxl_sty_mergedZmerge_cellspathwriterZwksZxcell_b1Zxcell_a2r   r   r   test_write_cells_merge_styled7   s.    

(r1   	iso_datesTFc              	   C   s   d|i}t | Z}t|d|d,}|jj|ks4J t | W d    n1 sT0    Y  W d    n1 sr0    Y  d S )Nr2   r   )engineengine_kwargs)r,   r-   r   bookr2   r   to_excel)r   r2   r4   fr0   r   r   r   test_engine_kwargs_writeY   s
    r8   c              
   C   s   t | }tddg| tjttddX t	|ddddid	$}td
gj|dd W d    n1 sr0    Y  W d    n1 s0    Y  W d    n1 s0    Y  d S )NhelloworldzAload_workbook() got an unexpected keyword argument 'apple_banana'matchr   aZapple_bananafruitr3   moder4   ZgoodSheet2r(   )
r,   r-   r   r6   pytestraises	TypeErrorreescaper   )r   r7   r0   r   r   r   !test_engine_kwargs_append_invalidd   s    rG   zdata_only, expected)Tr   )F=1+1c              	   C   s   t | |}tdg| t|ddd|id8}|jd d j|ksJJ t j|dd	 W d    n1 sn0    Y  W d    n1 s0    Y  d S )
NrH   r   r=   	data_onlyr?   ZSheet1B2rA   r(   )r,   r-   r   r6   r   r.   value)r   rI   expectedr7   r0   r   r   r   #test_engine_kwargs_append_data_onlyv   s    rM   zmode,expectedwbazr=   )foobarrO   c              	   C   s@  t dgdgd}t| }t }d|jd _d|jd d _|d d|jd d _|	| t
|d|d	 }|j|dd
d W d    n1 s0    Y  tt|V}dd |jD }||ksJ t|D ] \}	}
|j|	 d j|
ksJ qW d    n1 s0    Y  W d    n1 s20    Y  d S )Nr!   rO   columnsrP   r   A1rQ   r   )r3   r@   Fr)   indexc                 S   s   g | ]
}|j qS r   )title).0sheetr   r   r   
<listcomp>       z*test_write_append_mode.<locals>.<listcomp>)r   r,   r-   r   ZWorkbookZ
worksheetsrW   rK   create_sheetsaver   r6   
contextlibclosingload_workbook	enumerate)r   r@   rL   dfr7   wbr0   Zwb2resultrV   Z
cell_valuer   r   r   test_write_append_mode   s    

.re   z#if_sheet_exists,num_sheets,expectednew   applebananareplacer!   pearoverlayc           
   	   C   sN  t dddgi}t ddgi}t| }|j|dddd t|dd	|d
 }|j|ddd W d    n1 st0    Y  tt|}t	|j
|ksJ |j
d dksJ tj|ddd}	t|	d |ksJ t	|j
dkr
tj||j
d dd}	t|	| W d    n1 s 0    Y  W d    n1 s@0    Y  d S )Nr>   rh   ri   rk   r   rP   Fr3   r)   rV   r=   r3   r@   if_sheet_existsrU   r   r3   rg   r!   )r   r,   r-   r6   r   r^   r_   r   r`   lenZ
sheetnamespd
read_excellistassert_frame_equal)
r   ro   Z
num_sheetsrL   df1df2r7   r0   rc   rd   r   r   r   !test_if_sheet_exists_append_modes   s"    
.rx   z%startrow, startcol, greeting, goodbyepoopr:   goodbyepeopler9   c              
   C   s   t ddgddgd}t dg}t| }|j|ddd	d
 t|dddd*}|j|d	d	|d |dd W d    n1 s~0    Y  tj|ddd}	t ||d}
t|	|
 W d    n1 s0    Y  d S )Nr9   r:   rz   r{   )greetingrz   ry   r   ZpooFrm   r=   rl   rn   r!   )rV   headerstartrowstartcolr)   )r)   r3   )r   r,   r-   r6   r   rr   rs   ru   )r   r~   r   r|   rz   rv   rw   r7   r0   rd   rL   r   r   r   %test_append_overlay_startrow_startcol   s&    

$	r   zif_sheet_exists,msg))invalidzf'invalid' is not valid for if_sheet_exists. Valid options are 'error', 'new', 'replace' and 'overlay'.)errorASheet 'foo' already exists and if_sheet_exists is set to 'error'.)Nr   c              
   C   s   t ddgi}t| }tjtt|d^ |j|ddd t	|dd|d}|j|dd	 W d    n1 st0    Y  W d    n1 s0    Y  W d    n1 s0    Y  d S )
Nr>   rk   r;   rP   r   rp   r=   rn   r(   )
r   r,   r-   rB   rC   
ValueErrorrE   rF   r6   r   )r   ro   msgrb   r7   r0   r   r   r   test_if_sheet_exists_raises   s    r   c                 C   s   t | p}tdtdddi}tdtdddi}tj||gdd}|jdd 	 }|j
|d	d
 W d    n1 s0    Y  d S )NAr!   
   B   )Zaxisc                 S   s   d| dk rdnd S )Nzcolor: r   ZredZblackr   )r%   r   r   r   <lambda>  r[   z4test_to_excel_with_openpyxl_engine.<locals>.<lambda>r   rp   )r,   r-   r   npZlinspacerr   concatr   mapZhighlight_maxr6   )r   filenamerv   rw   rb   Zstyledr   r   r   "test_to_excel_with_openpyxl_engine   s    r   	read_onlyc                 C   sn   | dddd| }t tj||d}tj|dd}W d    n1 sJ0    Y  t|}t|| d S )NiodataexcelZtest1r   r   rp   )r^   r_   r   r`   rr   rs   r,   ru   )datapathr   r   r   rc   rd   rL   r   r   r   test_read_workbook  s    ,
r   zheader, expected_datar      r            C      	   ZTitlez
Unnamed: 1z
Unnamed: 2)r!   rg   r   )r   r   r   )r   r   r   )r   r   r   r   )Zdimension_missingZdimension_smallZdimension_large)TFNc           
      C   s   | ddd| | }|d u r.t j||d}nDttj||d }t j|d|d}W d    n1 sh0    Y  t|}	t||	 d S )Nr   r   r   )r}   r   r   )r3   r}   	rr   rs   r^   r_   r   r`   r   r,   ru   )
r   r   r}   Zexpected_datar   r   r/   rd   rc   rL   r   r   r   test_read_with_bad_dimension  s    .r   c              	   C   s   t  }t| }|j|dd t|dddd}|| W d    n1 sP0    Y  t| }|d}|d|d }|d|d }|dkr|dksJ W d    n1 s0    Y  d S )	Nr   rp   r=   rf   )r@   r3   ro   s   docProps/app.xmlr!   )r   r,   r-   r6   r   r   
read_bytesfind)r   rb   r7   r0   r   firstsecondthirdr   r   r   test_append_mode_file7  s    (
r   c                 C   s   | dddd| }|d u r(t |}nBttj||d}t j|dd}W d    n1 s`0    Y  ttjdd	d
dgtjddddgtjddddgd}t	
|| d S )Nr   r   r   Zempty_trailing_rowsr   r   rp   r   r!   rg   r   r   r   r   r   r   r   r   r   r   )rr   rs   r^   r_   r   r`   r   r   nanr,   ru   r   r   r   r/   rd   rc   rL   r   r   r   "test_read_with_empty_trailing_rowsM  s    ,r   c                 C   s   | dddd| }|d u r(t |}nBttj||d}t j|dd}W d    n1 s`0    Y  t }t|| d S )Nr   r   r   Zempty_with_blank_rowr   r   rp   r   r   r   r   r   test_read_empty_with_blank_rowc  s    ,r   c              	   C   s   t | j}t|dd>}|ji ks(J |jdd}|jd|iksHJ W d    n1 s\0    Y  W d    n1 sz0    Y  d S )Nr   rp   Z	test_namer   )r,   r-   r   r.   r5   r\   )r   r7   r0   rY   r   r   r   test_book_and_sheets_consistentr  s
    r   c                 C   sB   | dddd| }t |}ttdddgd}t|| d S )	Nr   r   r   Zints_spelled_with_decimalsrg      r!   rR   )rr   rs   r   ranger,   ru   r   r   r/   rd   rL   r   r   r   test_ints_spelled_with_decimals{  s    
r   c                 C   s~   | dddd| }t j|g dg dd}ttjdddgdtjtjtjggt jg dt jd	d
gd}t|| d S )Nr   r   r   Zmultiindex_no_index_names)r   r!   rg   )Z	index_colr}   x))XYrT   )r   r   r+   )XXYYr*   )r   r   rJ   )r   ZAAZAAA)r   BBZBBB)rS   rV   )	rr   rs   r   r   r   Z
MultiIndexfrom_tuplesr,   ru   r   r   r   r   *test_read_multiindex_header_no_index_names  s    r   )(r^   pathlibr   rE   numpyr   rB   r'   rr   r   Zpandas._testingZ_testingr,   Zpandas.io.excelr   r   Zimportorskipr   markZparametrizeZ
pytestmarkr   r1   r8   rG   rM   re   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   
!"





	




	