o
    5cg9                     @   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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/d0gfd d'd1d.gd-d0gfd'd d1d-gd/d0gfd'd'd1d.gd/d-gfgd2d3 Zejd4g d5d6d7 Zd8d9 Zejd:ddgd;d< Z ejd=d ej!d>d'd#d?gej!d@dAdBdCgej!dDdEdFdGgdHfd#g dIg dJg dKdLfgejdMg dNejd:g dOdPdQ Z"dRdS Z#ejd:g dOdTdU Z$ejd:g dOdVdW Z%dXdY Z&dZd[ Z'd\d] 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boldthin)toprightbottomleftcenterr   )
horizontalverticalsolid006666FFg333333?)rgbtint)patternTypefgColorformat_codez0.00F)lockedhidden)fontborders	alignmentfillnumber_format
protection)r   r   )styler   borderr    r!   r"   r#   )r   r   ColorFontSider   BORDER_THINBorder	AlignmentPatternFill
Protectionr   _convert_to_style_kwargs)r   r   hstyle
font_colorr   sider%   r    
fill_colorr!   r"   r#   kw r4   Y/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/io/excel/test_openpyxl.pytest_to_excel_styleconverter   s0   
	
r6   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   )	ExcelCellmerge_styledr   r   r	   0000FF00   *   )colrowvalr$   c   000000FFTr
   pandas)r<   r=   r>   
mergestartmergeendr$   
sheet_nameB1A2)	pandas.io.formats.excelr7   r   r.   tmensure_clean_write_cellssheetsr   )r   r7   rE   sty_b1sty_a2initial_cells
sty_merged
sty_kwargsopenpyxl_sty_mergedmerge_cellspathwriterwksxcell_b1xcell_a2r4   r4   r5   test_write_cells_merge_styled7   s2   

"rY   	iso_datesTFc              
   C   s   d|i}t | U}td}t jt|d0 t|fddi|}|jj|ks*J t	 
| 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 )NrZ   zUse of **kwargs is deprecatedmatchenginer   )rI   rJ   reescapeassert_produces_warningFutureWarningr   bookrZ   r   to_excel)r   rZ   kwargsfmsgrU   r4   r4   r5   test_kwargsY   s   
"rg   c              	   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 )NrZ   r   )r]   engine_kwargs)rI   rJ   r   rb   rZ   r   rc   )r   rZ   rh   re   rU   r4   r4   r5   test_engine_kwargs_writef   s   "ri   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'r[   r   aapple_bananafruitr]   moderh   goodSheet2rD   )
rI   rJ   r   rc   pytestraises	TypeErrorr^   r_   r   )r   re   rU   r4   r4   r5   !test_engine_kwargs_append_invalidq   s&   "rv   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 )
Nrw   r   rl   	data_onlyro   Sheet1B2rr   rD   )rI   rJ   r   rc   r   rL   value)r   rx   expectedre   rU   r4   r4   r5   #test_engine_kwargs_append_data_only   s   "r}   zmode,expectedwbazrl   )foobarr   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:   r   columnsr   r   A1r   r   )r]   rp   FrE   indexc                 S   s   g | ]}|j qS r4   )title).0sheetr4   r4   r5   
<listcomp>   s    z*test_write_append_mode.<locals>.<listcomp>)r   rI   rJ   r   Workbook
worksheetsr   r{   create_sheetsaver   rc   
contextlibclosingload_workbook	enumerate)r   rp   r|   dfre   wbrU   wb2resultr   
cell_valuer4   r4   r5   test_write_append_mode   s*   

"r   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 )Nrn   r   r   r   r   r   Fr]   rE   r   rl   r]   rp   if_sheet_existsr   r   r]   r   r:   )r   rI   rJ   rc   r   r   r   r   r   len
sheetnamespd
read_excellistassert_frame_equal)
r   r   
num_sheetsr|   df1df2re   rU   r   r   r4   r4   r5   !test_if_sheet_exists_append_modes   s.   
"r   z%startrow, startcol, greeting, goodbyepooprk   goodbyepeoplerj   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 )Nrj   rk   r   r   )greetingr   r   r   pooFr   rl   r   r   r:   )r   headerstartrowstartcolrE   )rE   r]   )r   rI   rJ   rc   r   r   r   r   )r   r   r   r   r   r   r   re   rU   r   r|   r4   r4   r5   %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 )
Nrn   r   r[   r   r   r   rl   r   rD   )
r   rI   rJ   rs   rt   
ValueErrorr^   r_   rc   r   )r   r   rf   r   re   rU   r4   r4   r5   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   )axisc                 S   s   d| dk rd S d S )Nz	color: %sr   redblackr4   )r>   r4   r4   r5   <lambda>  s    z4test_to_excel_with_openpyxl_engine.<locals>.<lambda>r   r   )rI   rJ   r   nplinspacer   concatr$   applymaphighlight_maxrc   )r   filenamer   r   r   styledr4   r4   r5   "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exceltest1r   r   r   )r   r   r   r   r   r   rI   r   )datapathr   r   r   r   r   r|   r4   r4   r5   test_read_workbook  s   
r   zheader, expected_datar      r            C      	   Titlez
Unnamed: 1z
Unnamed: 2)r:   r   r   )r   r   r   )r   r   r   )r   r   r   r   )dimension_missingdimension_small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   )r]   r   	r   r   r   r   r   r   r   rI   r   )
r   r   r   expected_datar   r   rT   r   r   r|   r4   r4   r5   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   r   rl   r   )rp   r]   r   s   docProps/app.xmlr:   )r   rI   rJ   rc   r   r   
read_bytesfind)r   r   re   rU   r   firstsecondthirdr4   r4   r5   test_append_mode_fileE  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   empty_trailing_rowsr   r   r   r   r:   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   nanrI   r   r   r   r   rT   r   r   r|   r4   r4   r5   "test_read_with_empty_trailing_rows[  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   empty_with_blank_rowr   r   r   r   r   r4   r4   r5   test_read_empty_with_blank_rowq  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   r   	test_namer   )rI   rJ   r   rL   rb   r   )r   re   rU   r   r4   r4   r5   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   ints_spelled_with_decimalsr      r:   r   )r   r   r   rangerI   r   r   r   rT   r   r|   r4   r4   r5   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   multiindex_no_index_names)r   r:   r   )	index_colr   x))XYr   )r   r   rG   )XXYYrF   )r   r   rz   )r   AAAAA)r   BBBBB)r   r   )	r   r   r   r   r   
MultiIndexfrom_tuplesrI   r   r   r4   r4   r5   *test_read_multiindex_header_no_index_names  s   r  ))r   pathlibr   r^   numpyr   rs   rA   r   r   pandas._testing_testingrI   pandas.io.excelr   r   importorskipr   markparametrize
pytestmarkr6   rY   rg   ri   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r4   r4   r4   r5   <module>   s    
!"







	



	