o
    Ti(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   s.  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smJ |d |ksuJ |d |ks}J |d |	ksJ |d |
ksJ |d |ksJ 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)r   r   ZhstyleZ
font_colorr   Zsider   r   Z
fill_colorr   r   r   kw r!   c/var/www/html/evchargy.com/venv/lib/python3.10/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| F}
t|
}|j||d |j|	|d |j| }W d    n1 sgw   Y  |d }|d }|j|ks{J |j|ksJ W d    d S 1 sw   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   s2   

"r5   	iso_datesTFc              	   C   s   d|i}t | 6}t|d|d}|jj|ksJ t | W d    n1 s*w   Y  W d    d S W d    d S 1 sBw   Y  d S )Nr6   r   )engineengine_kwargs)r0   r1   r   bookr6   r   to_excel)r   r6   r8   fr4   r!   r!   r"   test_engine_kwargs_writeY   s   "r<   c              
   C   s   t | X}tddg| tjttdd, t	|ddddid	}td
gj|dd W d    n1 s9w   Y  W d    n1 sHw   Y  W d    d S W d    d S 1 s`w   Y  d S )NhelloworldzAload_workbook() got an unexpected keyword argument 'apple_banana'matchr   aZapple_bananafruitr7   moder8   ZgoodSheet2r,   )
r0   r1   r   r:   pytestraises	TypeErrorreescaper   )r   r;   r4   r!   r!   r"   !test_engine_kwargs_append_invalidd   s&   "rK   zdata_only, expected)Tr   )F=1+1c              	   C   s   t | G}tdg| t|ddd|id}|jd d j|ks%J t j|dd	 W d    n1 s7w   Y  W d    d S W d    d S 1 sOw   Y  d S )
NrL   r   rA   	data_onlyrC   ZSheet1B2rE   r,   )r0   r1   r   r:   r   r2   value)r   rM   expectedr;   r4   r!   r!   r"   #test_engine_kwargs_append_data_onlyv   s   "rQ   zmode,expectedwbazrA   )foobarrS   c              	   C   sL  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 sLw   Y  tt|+}dd |jD }||kshJ t|D ]\}	}
|j|	 d j|
ks|J qlW d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr%   rS   columnsrT   r   A1rU   r   )r7   rD   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   r0   r1   r   ZWorkbookZ
worksheetsr[   rO   create_sheetsaver   r:   
contextlibclosingload_workbook	enumerate)r   rD   rP   dfr;   wbr4   Zwb2resultrZ   Z
cell_valuer!   r!   r"   test_write_append_mode   s*   

"rh   z#if_sheet_exists,num_sheets,expectednew   applebananareplacer%   pearoverlayc           
   	   C   sX  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 s9w   Y  tt|D}t	|j
|ksPJ |j
d dksYJ tj|ddd}	t|	d |kskJ t	|j
dkrtj||j
d dd}	t|	| W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )NrB   rk   rl   rn   r   rT   Fr7   r-   rZ   rA   r7   rD   if_sheet_existsrY   r   r7   rj   r%   )r   r0   r1   r:   r   ra   rb   r   rc   lenZ
sheetnamespd
read_excellistassert_frame_equal)
r   rr   Z
num_sheetsrP   df1df2r;   r4   rf   rg   r!   r!   r"   !test_if_sheet_exists_append_modes   s.   
"r{   z%startrow, startcol, greeting, goodbyepoopr>   goodbyepeopler=   c              
   C   s   t ddgddgd}t dg}t| L}|j|ddd	d
 t|dddd}|j|d	d	|d |dd W d    n1 s?w   Y  tj|ddd}	t ||d}
t|	|
 W d    d S 1 sdw   Y  d S )Nr=   r>   r}   r~   )greetingr}   r|   r   ZpooFrp   rA   ro   rq   r%   )rZ   headerstartrowstartcolr-   )r-   r7   )r   r0   r1   r:   r   ru   rv   rx   )r   r   r   r   r}   ry   rz   r;   r4   rg   rP   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| R}tjtt|d/ |j|ddd t	|dd|d}|j|dd	 W d    n1 s:w   Y  W d    n1 sIw   Y  W d    d S W d    d S 1 saw   Y  d S )
NrB   rn   r?   rT   r   rs   rA   rq   r,   )
r   r0   r1   rF   rG   
ValueErrorrI   rJ   r:   r   )r   rr   msgre   r;   r4   r!   r!   r"   test_if_sheet_exists_raises   s   "r   c                 C   s   t | 9}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    d S 1 sAw   Y  d S )NAr%   
   B   )Zaxisc                 S   s   d| dk r	d S d S )Nzcolor: r   redblackr!   )r)   r!   r!   r"   <lambda>  s    z4test_to_excel_with_openpyxl_engine.<locals>.<lambda>r   rs   )r0   r1   r   npZlinspaceru   concatr   mapZhighlight_maxr:   )r   filenamery   rz   re   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 s%w   Y  t|}t|| d S )NiodataexcelZtest1r   r   rs   )ra   rb   r   rc   ru   rv   r0   rx   )datapathr   r   r   rf   rg   rP   r!   r!   r"   test_read_workbook  s   
r   zheader, expected_datar      r            C      	   ZTitlez
Unnamed: 1z
Unnamed: 2)r%   rj   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}n"ttj||d}t j|d|d}W d    n1 s4w   Y  t|}	t||	 d S )Nr   r   r   )r   r   r   )r7   r   	ru   rv   ra   rb   r   rc   r   r0   rx   )
r   r   r   Zexpected_datar   r   r3   rg   rf   rP   r!   r!   r"   test_read_with_bad_dimension  s   r   c              	   C   s   t  }t| R}|j|dd t|dddd}|| W d    n1 s(w   Y  t| }|d}|d|d }|d|d }|dkrP|dksRJ W d    d S 1 s]w   Y  d S )	Nr   rs   rA   ri   )rD   r7   rr   s   docProps/app.xmlr%   )r   r0   r1   r:   r   r   
read_bytesfind)r   re   r;   r4   r   firstsecondthirdr!   r!   r"   test_append_mode_file7  s   
"r   c                 C   s   | dddd| }|d u rt |}n!ttj||d}t j|dd}W d    n1 s0w   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   rs   r   r%   rj   r   r   r   r   r   r   r   r   r   r   )ru   rv   ra   rb   r   rc   r   r   nanr0   rx   r   r   r   r3   rg   rf   rP   r!   r!   r"   "test_read_with_empty_trailing_rowsM  s    r   c                 C   s   | dddd| }|d u rt |}n!ttj||d}t j|dd}W d    n1 s0w   Y  t }t|| d S )Nr   r   r   Zempty_with_blank_rowr   r   rs   r   r   r!   r!   r"   test_read_empty_with_blank_rowc  s   r   c              	   C   s   t | >}t|dd}|ji ksJ |jdd}|jd|iks$J W d    n1 s.w   Y  W d    d S W d    d S 1 sFw   Y  d S )Nr   rs   Z	test_namer   )r0   r1   r   r2   r9   r_   )r   r;   r4   r]   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_decimalsrj      r%   rV   )ru   rv   r   ranger0   rx   r   r   r3   rg   rP   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%   rj   )Z	index_colr   x))XYrX   )r   r   r/   )XXYYr.   )r   r   rN   )r   ZAAZAAA)r   BBZBBB)rW   rZ   )	ru   rv   r   r   r   Z
MultiIndexfrom_tuplesr0   rx   r   r!   r!   r"   *test_read_multiindex_header_no_index_names  s   r   )(ra   pathlibr   rI   numpyr   rF   r+   ru   r   Zpandas._testingZ_testingr0   Zpandas.io.excelr   r   Zimportorskipr   markZparametrizeZ
pytestmarkr#   r5   r<   rK   rQ   rh   r{   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s    
!"






	



	