U
    +if3                     @   s  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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dddg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d0d1gfd d(d2d/gd.d1gfd(d d2d.gd0d1gfd(d(d2d/gd0d.gfgd3d4 Zejd5d6d7d8gd9d: Zd;d< Zejd=ddgd>d? Zejd@d ej dAd(d$dBgej dCdDdEdFgej dGdHdIdJgdKfd$d(d$dBgdDdEdFgdHdIdJgdLfgejdMdNdOdPgejd=dddgdQdR Z!dSdT Z"ejd=dddgdUdV Z#ejd=dddgdWdX Z$dS )Y    )PathN)	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st|d |kst|d |kst|d |	kst|d |
kst|d |ks0td S )Nr   )styles00FF0000TcolorboldZthin)toprightbottomleftcenterr   )
horizontalverticalZsolidZ006666FFg333333?)rgbZtint)ZpatternTypeZfgColorZformat_codez0.00F)lockedZhidden)fontborders	alignmentfillnumber_format
protection)r   r   )styler   borderr   r   r   r   )r   r   ColorZFontZSider   ZBORDER_THINZBorderZ	AlignmentZPatternFillZ
Protectionr   _convert_to_style_kwargsAssertionError)r   r   ZhstyleZ
font_colorr   Zsider   r   Z
fill_colorr   r   r   kw r"   V/home/mars/bis/venv/lib/python3.8/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| l}
t|
,}|j||d |j|	|d |j| }W 5 Q R X |d }|d }|j|kst	|j|kst	W 5 Q R X d S )Nr   )	ExcelCellZmerge_styledr   r   r	   Z0000FF00   *   )colrowvalr   c   Z000000FFTr
   pandas)r(   r)   r*   Z
mergestartZmergeendr   
sheet_nameZB1A2)
Zpandas.io.formats.excelr%   r   r   tmensure_cleanZwrite_cellssheetsr   r    )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_styled6   s8    
     
r5   	iso_datesTFc                 C   s   d|i}t | f}td}t jt|dB t|fddi|"}|jj|ksTt	t
 | W 5 Q R X W 5 Q R X W 5 Q R X d S )Nr6   zUse of **kwargs is deprecatedmatchenginer   )r0   r1   reescapeZassert_produces_warningFutureWarningr   bookr6   r    r   to_excel)r   r6   kwargsfmsgr4   r"   r"   r#   test_kwargsX   s    
rB   c              
   C   sX   d|i}t | <}t|d|d"}|jj|ks4tt | W 5 Q R X W 5 Q R X d S )Nr6   r   )r9   engine_kwargs)r0   r1   r   r=   r6   r    r   r>   )r   r6   rC   r@   r4   r"   r"   r#   test_engine_kwargs_writee   s
    rD   c                 C   s   t | l}tddg| tjttdd: t	|ddddid	}td
gj|dd W 5 Q R X W 5 Q R X W 5 Q R X d S )NhelloworldzAload_workbook() got an unexpected keyword argument 'apple_banana'r7   r   aZapple_bananafruitr9   moderC   ZgoodSheet2r-   )
r0   r1   r   r>   pytestraises	TypeErrorr:   r;   r   )r   r@   r4   r"   r"   r#   !test_engine_kwargs_append_invalidp   s        rO   zdata_only, expected)Tr   )F=1+1c              
   C   sr   t | ^}tdg| t|ddd|id.}|jd d j|ksJtt j|dd	 W 5 Q R X W 5 Q R X d S )
NrP   r   rG   	data_onlyrI   ZSheet1ZB2rK   r-   )r0   r1   r   r>   r   r2   valuer    )r   rQ   expectedr@   r4   r"   r"   r#   #test_engine_kwargs_append_data_only   s       rT   zmode,expectedwbazrG   foobarc              
   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 5 Q R X t|}dd |jD }||kstt|D ] \}	}
|j|	 d j|
kstqW 5 Q R X d S )Nr&   rV   )columnsrW   r   A1rX   r   )r9   rJ   Fr.   indexc                 S   s   g | ]
}|j qS r"   )title).0Zsheetr"   r"   r#   
<listcomp>   s     z*test_write_append_mode.<locals>.<listcomp>)r   r0   r1   r   ZWorkbookZ
worksheetsr]   rR   Zcreate_sheetsaver   r>   load_workbookr    	enumerate)r   rJ   rS   dfr@   wbr4   Zwb2resultr\   Z
cell_valuer"   r"   r#   test_write_append_mode   s    


rf   z#if_sheet_exists,num_sheets,expectednew   applebananareplacer&   pearoverlayc           
   
   C   s   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 5 Q R X t|}t|j|kst	|jd dkst	t
j|ddd}	t|	d |kst	t|jdkrt
j||jd dd}	t|	| |  W 5 Q R X d S )NrH   ri   rj   rl   r   rW   Fr9   r.   r\   rG   r9   rJ   if_sheet_existsr[   r   r9   rh   r&   )r   r0   r1   r>   r   r   ra   lenZ
sheetnamesr    pd
read_excellistassert_frame_equalclose)
r   rp   Z
num_sheetsrS   df1df2r@   r4   rd   re   r"   r"   r#   !test_if_sheet_exists_append_modes   s*    
   
rz   z%startrow, startcol, greeting, goodbyepooprF   goodbyepeoplerE   c              
   C   s   t ddgddgd}t dg}t| x}|j|ddd	d
 t|dddd }|j|d	d	|d |dd W 5 Q R X tj|ddd}	t ||d}
t|	|
 W 5 Q R X d S )NrE   rF   r|   r}   )greetingr|   r{   r   ZpooFrn   rG   rm   ro   r&   )r\   headerstartrowstartcolr.   )r.   r9   )r   r0   r1   r>   r   rs   rt   rv   )r   r   r   r~   r|   rx   ry   r@   r4   re   rS   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 5 Q R X W 5 Q R X W 5 Q R X d S )
NrH   rl   r7   rW   r   rq   rG   ro   r-   )
r   r0   r1   rL   rM   
ValueErrorr:   r;   r>   r   )r   rp   rA   rc   r@   r4   r"   r"   r#   test_if_sheet_exists_raises   s       r   c              	   C   sz   t | f}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 5 Q R X d S )NAr&   
   B   )Zaxisc                 S   s   d| dk rdnd S )Nz	color: %sr   redblackr"   )r*   r"   r"   r#   <lambda>      z4test_to_excel_with_openpyxl_engine.<locals>.<lambda>r   rq   )r0   r1   r   npZlinspacers   concatr   ZapplymapZhighlight_maxr>   )r   filenamerx   ry   rc   styledr"   r"   r#   "test_to_excel_with_openpyxl_engine  s    r   	read_onlyc                 C   sP   | dddd| }t j||d}tj|dd}|  t|}t|| d S )NiodataexcelZtest1r   r   rq   )r   ra   rs   rt   rw   r0   rv   )datapathr   r   r   rd   re   rS   r"   r"   r#   test_read_workbook  s    
r   zheader, expected_datar      r            C      	   ZTitlez
Unnamed: 1z
Unnamed: 2)r   r   r   r   Zdimension_missingZdimension_smallZdimension_largec                 C   sl   | ddd| | }|d kr.t j||d}n&tj||d}	t j|	d|d}|	  t|}
t||
 d S )Nr   r   r   )r   r   r   )r9   r   rs   rt   r   ra   rw   r   r0   rv   )r   r   r   Zexpected_datar   r   requestr3   re   rd   rS   r"   r"   r#   test_read_with_bad_dimension!  s    r   c              
   C   s   t  }t| }|j|dd t|dddd}|| W 5 Q R X t| }|d}|d|d }|d|d }|dkr|dkstW 5 Q R X d S )	Nr   rq   rG   rg   )rJ   r9   rp   s   docProps/app.xmlr&   )	r   r0   r1   r>   r   r   
read_bytesfindr    )r   rc   r@   r4   r   firstsecondthirdr"   r"   r#   test_append_mode_fileC  s        
r   c                 C   s   | dddd| }|d kr(t |}n$tj||d}t j|dd}|  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   rq   r   r&   rh   r   r   r   r   r   r   r   r   r   r   )
rs   rt   r   ra   rw   r   r   nanr0   rv   )r   r   r   r   r3   re   rd   rS   r"   r"   r#   "test_read_with_empty_trailing_rowsY  s    r   c                 C   sb   | dddd| }|d kr(t |}n$tj||d}t j|dd}|  t }t|| d S )Nr   r   r   Zempty_with_blank_rowr   r   rq   r   )r   r   r   r3   re   rd   rS   r"   r"   r#   test_read_empty_with_blank_rown  s    r   )%pathlibr   r:   numpyr   rL   r,   rs   r   Zpandas._testingZ_testingr0   Zpandas.io.excelr   r   Zimportorskipr   markZparametrizeZ
pytestmarkr$   r5   rB   rD   rO   rT   rf   rz   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   <module>   s   
!"



 


	



  
