U
    `»{jg9  ã                   @   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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%dYdZ„ Z&d[d\„ Z'd]d^„ 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sÚt‚|d |ksêt‚|d |ksút‚|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"   úb/var/www/html/bwave/python/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sât	‚|j|ksðt	‚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_nameÚ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_styled7   s8    þ
     ÿÿ
r6   Ú	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 )Nr7   zUse of **kwargs is deprecated©ÚmatchÚenginer   )r1   r2   ÚreÚescapeZassert_produces_warningÚFutureWarningr   Úbookr7   r    r   Úto_excel)r   r7   ÚkwargsÚfÚmsgr5   r"   r"   r#   Útest_kwargsY   s    
rC   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 )Nr7   r   )r:   Úengine_kwargs)r1   r2   r   r>   r7   r    r   r?   )r   r7   rD   rA   r5   r"   r"   r#   Útest_engine_kwargs_writef   s
    rE   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'r8   r   ÚaZapple_bananaÚfruit©r:   ÚmoderD   ZgoodÚSheet2r-   )
r1   r2   r   r?   ÚpytestÚraisesÚ	TypeErrorr;   r<   r   )r   rA   r5   r"   r"   r#   Ú!test_engine_kwargs_append_invalidq   s     ÿþ   ÿrP   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 )
NrQ   r   rH   Ú	data_onlyrJ   ZSheet1ÚB2rL   r-   )r1   r2   r   r?   r   r3   Úvaluer    )r   rR   ÚexpectedrA   r5   r"   r"   r#   Ú#test_engine_kwargs_append_data_onlyƒ   s       ÿrV   zmode,expectedÚwÚbazrH   Ú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 t |¡¡�L}dd„ |jD ƒ}||ks¼t‚t|ƒD ] \}	}
|j|	 d j|
ksÄt‚qÄW 5 Q R X W 5 Q R X d S )Nr&   rX   ©ÚcolumnsrY   r   ÚA1rZ   r   )r:   rK   F©r.   Úindexc                 S   s   g | ]
}|j ‘qS r"   )Útitle)Ú.0Úsheetr"   r"   r#   Ú
<listcomp>¤   s     z*test_write_append_mode.<locals>.<listcomp>)r   r1   r2   r   ZWorkbookZ
worksheetsr`   rT   Úcreate_sheetÚsaver   r?   Ú
contextlibÚclosingÚload_workbookr    Ú	enumerate)r   rK   rU   ÚdfrA   Úwbr5   Zwb2Úresultr_   Z
cell_valuer"   r"   r#   Útest_write_append_mode’   s    

rm   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 |¡¡�~}t	|j
ƒ|ksŒt‚|j
d dksžt‚tj|ddd�}	t|	d ƒ|ksÂt‚t	|j
ƒdkròtj||j
d dd�}	t |	|¡ W 5 Q R X W 5 Q R X d S )NrI   rp   rq   rs   r   rY   F©r:   r.   r_   rH   ©r:   rK   Úif_sheet_existsr^   r   ©r:   ro   r&   )r   r1   r2   r?   r   rf   rg   r   rh   ÚlenZ
sheetnamesr    ÚpdÚ
read_excelÚlistÚassert_frame_equal)
r   rw   Z
num_sheetsrU   Údf1Údf2rA   r5   rk   rl   r"   r"   r#   Ú!test_if_sheet_exists_append_modes«   s(    
   ÿr€   z%startrow, startcol, greeting, goodbyeÚpooprG   ÚgoodbyeÚpeoplerF   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 )NrF   rG   r‚   rƒ   )Úgreetingr‚   r�   r   ZpooFru   rH   rt   rv   r&   )r_   ÚheaderÚstartrowÚstartcolr.   )r.   r:   )r   r1   r2   r?   r   rz   r{   r}   )r   r†   r‡   r„   r‚   r~   r   rA   r5   rl   rU   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'.)ÚerrorúASheet '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 )
NrI   rs   r8   rY   r   rx   rH   rv   r-   )
r   r1   r2   rM   rN   Ú
ValueErrorr;   r<   r?   r   )r   rw   rB   rj   rA   r5   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   rx   )r1   r2   r   ÚnpZlinspacerz   Úconcatr   ZapplymapZhighlight_maxr?   )r   Úfilenamer~   r   rj   Ústyledr"   r"   r#   Ú"test_to_excel_with_openpyxl_engine  s    ÿrš   Ú	read_onlyc              	   C   sZ   | dddd| ƒ}t  tj||d�¡�}tj|dd�}W 5 Q R X t |¡}t ||¡ d S )NÚioÚdataÚexcelZtest1©r›   r   rx   )rf   rg   r   rh   rz   r{   r1   r}   )Údatapathr   r›   r˜   rk   rl   rU   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   sv   | ddd|› |› �ƒ}|d kr.t j||d�}n0t tj||d�¡�}t j|d|d�}W 5 Q R X t|ƒ}	t ||	¡ d S )Nrœ   r�   rž   )r…   rŸ   r   )r:   r…   ©	rz   r{   rf   rg   r   rh   r   r1   r}   )
r    r   r…   Zexpected_datar˜   r›   r4   rl   rk   rU   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s�t‚W 5 Q R X d S )	Nr   rx   rH   rn   )rK   r:   rw   s   docProps/app.xmlr&   éÿÿÿÿ)	r   r1   r2   r?   r   r   Ú
read_bytesÚfindr    )r   rj   rA   r5   r�   ÚfirstÚsecondÚthirdr"   r"   r#   Útest_append_mode_fileE  s        ÿ
r³   c              	   C   sš   | dddd|› �ƒ}|d kr(t  |¡}n.t tj||d�¡�}t j|dd�}W 5 Q R X 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   rx   rŽ   r&   ro   r¢   r�   r£   r¤   r¥   r¦   r§   r¨   r©   rª   )rz   r{   rf   rg   r   rh   r   r–   Únanr1   r}   ©r    r   r›   r4   rl   rk   rU   r"   r"   r#   Ú"test_read_with_empty_trailing_rows[  s    ÿýÿr¶   c              	   C   sl   | dddd|› �ƒ}|d kr(t  |¡}n.t tj||d�¡�}t j|dd�}W 5 Q R X tƒ }t ||¡ d S )Nrœ   r�   rž   Zempty_with_blank_rowrŸ   r   rx   r«   rµ   r"   r"   r#   Útest_read_empty_with_blank_rowq  s    ÿr·   c              
   C   s`   t  | ¡�L}t|dd��4}|ji ks(t‚|j dd¡}|jd|iksHt‚W 5 Q R X W 5 Q R X d S )Nr   rx   Z	test_namer   )r1   r2   r   r3   r    r>   rd   )r   rA   r5   rb   r"   r"   r#   Útest_book_and_sheets_consistent€  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_decimalsro   é   r&   r[   )rz   r{   r   Úranger1   r}   ©r    r   r4   rl   rU   r"   r"   r#   Útest_ints_spelled_with_decimals‰  s    
r¼   c                 C   s†   | dddd|› �ƒ}t j|dddgdddgd�}ttjd	d	d	gd	tjtjtjggt j d
dddg¡t j ddg¡d�}t ||¡ d S )Nrœ   r�   rž   Zmultiindex_no_index_namesr   r&   ro   )Z	index_colr…   Úx)ÚXÚYr]   )r¾   r¿   r0   )ÚXXÚYYr/   )rÀ   rÁ   rS   )rŽ   ZAAZAAA)rŽ   ÚBBZBBB)r\   r_   )	rz   r{   r   r–   r´   Z
MultiIndexÚfrom_tuplesr1   r}   r»   r"   r"   r#   Ú*test_read_multiindex_header_no_index_names‘  s    
ÿûrÄ   ))rf   Úpathlibr   r;   Únumpyr–   rM   r,   rz   r   Zpandas._testingZ_testingr1   Zpandas.io.excelr   r   Zimportorskipr   ÚmarkZparametrizeZ
pytestmarkr$   r6   rC   rE   rP   rV   rm   r€   rˆ   r�   rš   r¡   r´   r¬   r³   r¶   r·   r¸   r¼   rÄ   r"   r"   r"   r#   Ú<module>   sš   
!"



 ÿ

ýþ
üþ	
öþ

ýþ ÷þ ÿ

	