o
    թZh{;                     @   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mZ d dl	Z
d dl	mZ d dlmZ d dlmZmZ d dlmZ edZe rFejjZejdd	 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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d0d1 Z#ejd2d d d3d4gd5d6gfd d-d7d4gd3d6gfd-d d7d3gd5d6gfd-d-d7d4gd5d3gfgd8d9 Z$ejd:g d;d<d= Z%d>d? Z&ejdddgd@dA Z'ejdBd ej(dCd-d)dDgej(dEdFdGdHgej(dIdJdKdLgdMfd)g dNg dOg dPdQfgejdRg dSejdg dTdUdV Z)dWdX Z*ejdg dTdYdZ Z+ejdg dTd[d\ Z,d]d^ Z-d_d` Z.dadb Z/dS )c    N)Path)is_platform_windows)	DataFrame)ExcelWriter_OpenpyxlWriter)OpenpyxlReaderopenpyxlc                   C   s   dS )Nz.xlsx r	   r	   r	   Z/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/io/excel/test_openpyxl.pyext   s   r   c                  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   ZhstyleZ
font_colorr   Zsider!   r   Z
fill_colorr   r   r   kwr	   r	   r
   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_styled@   s2   

"r7   	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 )Nr8   r   )engineengine_kwargs)r2   r3   r   bookr8   r   to_excel)r   r8   r:   fr6   r	   r	   r
   test_engine_kwargs_writeb   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r9   moder:   ZgoodSheet2r.   )
r2   r3   r   r<   pytestraises	TypeErrorreescaper   )r   r=   r6   r	   r	   r
   !test_engine_kwargs_append_invalidm   s&   "rM   zdata_only, expected)Tr   )F=1+1c              	   C   s   t | Q}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  tj|ddd|id
j	d |ksNJ W d    d S 1 sYw   Y  d S )NrN   r   rC   	data_onlyrE   ZSheet1B2rG   r.   )r/   r9   r:   )r   r'   )
r2   r3   r   r<   r   r4   valuepd
read_excelZiloc)r   rO   expectedr=   r6   r	   r	   r
   #test_engine_kwargs_append_data_only   s(   

"rU   
kwarg_name	read_onlyrO   kwarg_valuec                 C   sb   | dddd| }t t|||id}t|j||ksJ W d    d S 1 s*w   Y  d S )Niodataexceltest1)r:   )
contextlibclosingr   getattrr;   )datapathr   rV   rX   filenamereaderr	   r	   r
    test_engine_kwargs_append_reader   s   "rc   zmode,expectedwbazrC   )foobarre   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'   re   columnsrf   r   A1rg   r   )r9   rF   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   r2   r3   r   ZWorkbookZ
worksheetsrm   rQ   create_sheetsaver   r<   r]   r^   load_workbook	enumerate)r   rF   rT   dfr=   wbr6   Zwb2resultrl   Z
cell_valuer	   r	   r
   test_write_append_mode   s*   

"rx   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 )NrD   r{   r|   r~   r   rf   Fr9   r/   rl   rC   r9   rF   if_sheet_existsrk   r   r9   rz   r'   )r   r2   r3   r<   r   r]   r^   r   rs   lenZ
sheetnamesrR   rS   listassert_frame_equal)
r   r   Z
num_sheetsrT   df1df2r=   r6   rv   rw   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pooFr   rC   r   r   r'   )rl   headerstartrowstartcolr/   r/   r9   )r   r2   r3   r<   r   rR   rS   r   )r   r   r   r   r   r   r   r=   r6   rw   rT   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 )
NrD   r~   rA   rf   r   r   rC   r   r.   )
r   r2   r3   rH   rI   
ValueErrorrK   rL   r<   r   )r   r   msgru   r=   r6   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   r   )r2   r3   r   npZlinspacerR   concatr    mapZhighlight_maxr<   )r   ra   r   r   ru   styledr	   r	   r
   "test_to_excel_with_openpyxl_engine  s   "r   c                 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 )NrY   rZ   r[   r\   rW   r   r   )r]   r^   r   rs   rR   rS   r2   r   )r`   r   rW   ra   rv   rw   rT   r	   r	   r
   test_read_workbook*  s   
r   zheader, expected_datar      r            C      	   ZTitlez
Unnamed: 1z
Unnamed: 2)r'   rz   r   )r   r   r   )r   r   r   )r   r   r   ra   )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 )NrY   rZ   r[   )r   r   r   )r9   r   	rR   rS   r]   r^   r   rs   r   r2   r   )
r`   r   r   Zexpected_datara   rW   r5   rw   rv   rT   r	   r	   r
   test_read_with_bad_dimension6  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   rC   ry   )rF   r9   r   s   docProps/app.xmlr'   )r   r2   r3   r<   r   r   
read_bytesfind)r   ru   r=   r6   rZ   firstsecondthirdr	   r	   r
   test_append_mode_fileY  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 )NrY   rZ   r[   Zempty_trailing_rowsr   r   r   r   r'   rz   r   r   r   r   r   r   r   r   r   r   )rR   rS   r]   r^   r   rs   r   r   nanr2   r   r`   r   rW   r5   rw   rv   rT   r	   r	   r
   "test_read_with_empty_trailing_rowso  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 )NrY   rZ   r[   Zempty_with_blank_rowr   r   r   r   r   r	   r	   r
   test_read_empty_with_blank_row  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   Z	test_namer   )r2   r3   r   r4   r;   rq   )r   r=   r6   ro   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 )	NrY   rZ   r[   Zints_spelled_with_decimalsrz      r'   rh   )rR   rS   r   ranger2   r   r`   r   r5   rw   rT   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 )NrY   rZ   r[   Zmultiindex_no_index_names)r   r'   rz   )Z	index_colr   x))XYrj   )r   r   r1   )XXYYr0   )r   r   rP   )r   ZAAZAAA)r   BBZBBB)ri   rl   )	rR   rS   r   r   r   Z
MultiIndexfrom_tuplesr2   r   r   r	   r	   r
   *test_read_multiindex_header_no_index_names  s   r   )0r]   pathlibr   rK   numpyr   rH   Zpandas.compatr   r-   rR   r   Zpandas._testingZ_testingr2   Zpandas.io.excelr   r   Zpandas.io.excel._openpyxlr   Zimportorskipr   markZ
single_cpuZ
pytestmarkZfixturer   r%   r7   Zparametrizer>   rM   rU   rc   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r	   r
   <module>   s    

!"






	



	