
    bMh{;                        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j        d          Z e            rej        j        Zej        d             Zd	 Zd
 Zej                            dddg          d             Zd Zej                            dddg          d             Z ej                            dddg          ej                            dddg          d                         Z!ej                            dddgfdg dfg          d             Z"ej                            dd d!d"d#gfd$d%d&gfd'd%d&d#gfg          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          d/             Z$ej                            d0g d1          d2             Z%d3 Z&ej                            dddg          d4             Z'ej                            d5d ej(        d6d%d!d7gej(        d8d9d:d;gej(        d<d=d>d?gd@fd!g dAg dBg dCdDfg          ej                            dEg dF          ej                            dg dG          dH                                     Z)dI Z*ej                            dg dG          dJ             Z+ej                            dg dG          dK             Z,dL Z-dM Z.dN Z/dS )O    N)Path)is_platform_windows)	DataFrame)ExcelWriter_OpenpyxlWriter)OpenpyxlReaderopenpyxlc                      dS )Nz.xlsx r       c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/io/excel/test_openpyxl.pyextr      s    7r   c                     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          }|                     d|          }|                     | j        j                  }|                     ||||          }|                     dd	
          }|                     dd          }| 	                    d|          }d}	| 
                    dd          }
t          j        |          }|d         |k    sJ |d         |k    sJ |d         |k    sJ |d         |k    sJ |d         |	k    sJ |d         |
k    sJ 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   hstyle
font_colorr&   sider-   r(   
fill_colorr)   r*   r+   kws               r   test_to_excel_styleconverterr<      s    %d33!FffUU$,%@@ 'JPS4T4TUU'0!%77 F j))J;;D
;33D;;V^7;88D]]t44]HHF  Hu EEI*377J':FFDM""$u"==J		1&	9	9Bf:h<6!!!!k?i''''f:o-////lz))))))r   c                 H   ddl m} d}dddii}dddii} |ddd	|
           |ddd|
          g}ddddi}t          j        |          }|d         } |ddddd|          g}	t	          j        |           5 }
t          |
          5 }|                    ||           |                    |	|           |j        |         }d d d            n# 1 swxY w Y   |d         }|d         }|j        |k    sJ |j        |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   )	ExcelCellmerge_styledr&   r   r   0000FF00   *   )colrowvalr,   c   000000FFTr   pandas)rC   rD   rE   
mergestartmergeendr,   
sheet_nameB1A2)	pandas.io.formats.excelr>   r   r6   tmensure_clean_write_cellssheetsr&   )r   r>   rL   sty_b1sty_a2initial_cells
sty_merged
sty_kwargsopenpyxl_sty_mergedmerge_cellspathwriterwksxcell_b1xcell_a2s                  r   test_write_cells_merge_styledr`   @   s   111111Jw
+,Fw
+,F 		aQBf555	aQBf555M
 J==>J 9*EEJ$V,	qh1q
	
 	
 	
K 
		 	4T"" 	,f*EEE
CCC-
+C		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 t9t9} 33333} 333333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s6   <D<CDC	DC	-DDD	iso_datesTFc                 "   d|i}t          j        |           5 }t          |d|          5 }|j        j        |k    sJ t                                          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nra   r	   )engineengine_kwargs)rP   rQ   r   bookra   r   to_excel)r   ra   rd   fr\   s        r   test_engine_kwargs_writerh   b   s    !),M			 ):]KKK 	)v;(I5555KK  (((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s4   B4A, B,A0	0B3A0	4BBBc           	         t          j        |           5 }t          ddg                              |           t	          j        t          t          j        d                    5  t          |ddddi	          5 }t          d
g                              |d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NhelloworldzAload_workbook() got an unexpected keyword argument 'apple_banana'matchr	   aapple_bananafruitrc   moderd   goodSheet2rK   )
rP   rQ   r   rf   pytestraises	TypeErrorreescaper   )r   rg   r\   s      r   !test_engine_kwargs_append_invalidrz   m   s    
		 J7G$%%..q111])S 
 
 
 
	J 
	J *3~w>W   J6(##,,V,III	J J J J J J J J J J J J J J J
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	JJ J J J J J J J J J J J J J J J J JsZ   AC'C=&B/#C/B33C6B37C:CC
	
CC
	CC"%C"zdata_only, expected)Tr   )F=1+1c                    t          j        |           5 }t          dg                              |           t	          |ddd|i          5 }|j        d         d         j        |k    sJ t                                          |d	           d d d            n# 1 swxY w Y   t          j        |ddd|i
          j	        d         |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr{   r	   rn   	data_onlyrq   Sheet1B2rt   rK   )rL   rc   rd   )r   rA   )
rP   rQ   r   rf   r   rS   valuepd
read_exceliloc)r   r}   expectedrg   r\   s        r   #test_engine_kwargs_append_data_onlyr      s   
 
		 
6($$Q'''js;	:R
 
 
 	>=*406(BBBBKK  H ===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> M#!*I6	  
 4     
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s6   9C ABC B 	 C #B 	$.C  C$'C$
kwarg_name	read_onlyr}   kwarg_valuec                      | dddd|z             }t          j        t          |||i                    5 }t          |j        |          |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Niodataexceltest1)rd   )
contextlibclosingr   getattrre   )datapathr   r   r   filenamereaders         r    test_engine_kwargs_append_readerr      s     xfgw}==H		x
K/HIII
 
 ?	v{J//;>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   A!!A%(A%zmode,expectedwbazrn   )foobarr   c                 6   t          dgdg          }t          j        |           5 }t                                          }d|j        d         _        d|j        d         d         _        |                    d           d|j        d         d         _        |	                    |           t          |d|	          5 }|                    |dd
           d d d            n# 1 swxY w Y   t          j        t                              |                    5 }d |j        D             }||k    sJ t          |          D ]#\  }	}
|j        |	         d         j        |
k    sJ $	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrA   r   columnsr   r   A1r   r	   )rc   rr   FrL   indexc                     g | ]	}|j         
S r   )title).0sheets     r   
<listcomp>z*test_write_append_mode.<locals>.<listcomp>   s    >>>eek>>>r   )r   rP   rQ   r	   Workbook
worksheetsr   r   create_sheetsaver   rf   r   r   load_workbook	enumerate)r   rr   r   dfrg   wbr\   wb2resultr   
cell_values              r   test_write_append_moder      sv    
A3	(	(	(B			 G  !&a',a$
',a$



:D999 	?VKK5K>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?  6 6q 9 9:: 	Gc>>s~>>>FX%%%%%.x%8%8 G G!z~e,T28JFFFFFG		G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GG G G G G G G G G G G G G G G G G Gs[   BF C%F%C)	)F,C)	-/FAE6*F6E:	:F=E:	>FFFz#if_sheet_exists,num_sheets,expectednew   applebananareplacerA   pearoverlayc                 F   t          dddgi          }t          ddgi          }t          j        |           5 }|                    |ddd           t	          |dd	|
          5 }|                    |dd           d d d            n# 1 swxY w Y   t          j        t                              |                    5 }t          |j
                  |k    sJ |j
        d         dk    sJ t          j        |dd          }	t          |	d                   |k    sJ t          |j
                  dk    r7t          j        ||j
        d         d          }	t          j        |	|           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrp   r   r   r   r	   r   Frc   rL   r   rn   rc   rr   if_sheet_existsr   r   rc   r   rA   )r   rP   rQ   rf   r   r   r   r	   r   len
sheetnamesr   r   listassert_frame_equal)
r   r   
num_sheetsr   df1df2rg   r\   r   r   s
             r   !test_if_sheet_exists_append_modesr      sq    Ww12
3
3C
Wvh'
(
(C			 3Qze5IIIjsO
 
 
 	@LLEL???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
  6 6q 9 9:: 	3br}%%3333=#u,,,,]2uZ@@@Fw((H44442=!!Q&&r2=+;JOOO%fc222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3sZ   -F'B FB	FB	/FB/E>2F>F	FF	FFFz%startrow, startcol, greeting, goodbyepooprk   goodbyepeoplerj   c           
         t          ddgddgd          }t          dg          }t          j        |           5 }|                    |ddd	
           t	          |ddd          5 }|                    |d	d	|dz   |d           d d d            n# 1 swxY w Y   t          j        |dd          }	t          ||d          }
t          j        |	|
           d d d            d S # 1 swxY w Y   d S )Nrj   rk   r   r   )greetingr   r   r	   pooFr   rn   r   r   rA   )r   headerstartrowstartcolrL   rL   rc   )r   rP   rQ   rf   r   r   r   r   )r   r   r   r   r   r   r   rg   r\   r   r   s              r   %test_append_overlay_startrow_startcolr      s    '7!3H@UVV
W
WC
VH

C			 0Qze5IIIjsI
 
 
 	LL!A!     		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 qU:FFF(wGGHH
fh///#0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s6   -C)(BC)B	C)B	AC))C-0C-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                    t          ddgi          }t          j        |           5 }t          j        t
          t          j        |                    5  |                    |dd           t          |dd|          5 }|                    |d	           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nrp   r   rl   r   r	   r   rn   r   rK   )
r   rP   rQ   ru   rv   
ValueErrorrx   ry   rf   r   )r   r   msgr   rg   r\   s         r   test_if_sheet_exists_raisesr      s   ( 
GfX&	'	'B			 6]:RYs^^<<< 	6 	6KKeJK???*3   6Fu5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6sY   .C,B<B%B<%B))B<,B)-B<0C<C 	 CC 	CCCc           	         t          j        |           5 }t          dt          j        ddd          i          }t          dt          j        ddd          i          }t          j        ||gd          }|j                            d           	                                }|
                    |d	           d d d            d S # 1 swxY w Y   d S )
NArA   
   B   )axisc                     d| dk     rdnd S )Nzcolor: r   redblackr   )rE   s    r   <lambda>z4test_to_excel_with_openpyxl_engine.<locals>.<lambda>$  s    A377%%AA r   r	   r   )rP   rQ   r   nplinspacer   concatr,   maphighlight_maxrf   )r   r   r   r   r   styleds         r   "test_to_excel_with_openpyxl_enginer     s
   			 5bk!R44566bk!R44566YSz***AA
 

-// 	 	4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   B'C		CCc                 2    | dddd|z             }t          j        t                              ||                    5 }t	          j        |d          }d d d            n# 1 swxY w Y   t	          j        |          }t          j        ||           d S )Nr   r   r   r   r   r	   r   )r   r   r	   r   r   r   rP   r   )r   r   r   r   r   r   r   s          r   test_read_workbookr   *  s     xfgw}==H		x9==
 
 6	r*5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 }X&&H&(+++++s    A##A'*A'zheader, expected_datar      r            C      	   Titlez
Unnamed: 1z
Unnamed: 2)rA   r   r   )r   r   r   )r   r   r   )r   r   r   r   )dimension_missingdimension_smalldimension_large)TFNc                 ^    | ddd| |           }|t          j        ||          }n]t          j        t                              ||                    5 }t          j        |d|          }d d d            n# 1 swxY w Y   t          |          }	t          j        ||	           d S )Nr   r   r   )r   r   r	   )rc   r   	r   r   r   r   r	   r   r   rP   r   )
r   r   r   expected_datar   r   r[   r   r   r   s
             r   test_read_with_bad_dimensionr   6  s
   . 8D&'h+=+=+=>>DtF333""49"==
 
 	I]2jHHHF	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I ''H&(+++++s   A>>BBc                    t                      }t          j        |           5 }|                    |d           t	          |ddd          5 }|                    |           d d d            n# 1 swxY w Y   t          |                                          }|                    d          }|                    d|dz             }|                    d|dz             }|dk    r|dk    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr	   r   rn   r   )rr   rc   r   s   docProps/app.xmlrA   )r   rP   rQ   rf   r   r   
read_bytesfind)r   r   rg   r\   r   firstsecondthirds           r   test_append_mode_filer  Y  s   	B			 ,
Aj)))C
E
 
 
 	 KK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  Aww!!##		-...	::		-vz::||, , , , , , , , , , , , , , , , , ,s6   +C?A0$C?0A4	4C?7A4	8A9C??DDc           	          | dddd|           }|t          j        |          }n\t          j        t                              ||                    5 }t          j        |d          }d d d            n# 1 swxY w 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          j
        ||           d S )Nr   r   r   empty_trailing_rowsr   r	   r   r   rA   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r	   r   r   r   nanrP   r   r   r   r   r[   r   r   r   s          r   "test_read_with_empty_trailing_rowsr  o  s/    8D&'+F+F+FGGDt$$""49"==
 
 	:]2j999F	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: fc1a+631a0631a0	
 	
 H &(+++++   A::A>A>c                 T    | dddd|           }|t          j        |          }n\t          j        t                              ||                    5 }t          j        |d          }d d d            n# 1 swxY w Y   t                      }t          j        ||           d S )Nr   r   r   empty_with_blank_rowr   r	   r   r   r  s          r   test_read_empty_with_blank_rowr    s     8D&'+G#+G+GHHDt$$""49"==
 
 	:]2j999F	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: {{H&(+++++r  c                 "   t          j        |           5 }t          |d          5 }|j        i k    sJ |j                            dd          }|j        d|ik    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr	   r   	test_namer   )rP   rQ   r   rS   re   r   )r   rg   r\   r   s       r   test_book_and_sheets_consistentr    s   			 9:... 	9&=B&&&&K,,[!<<E=[%$888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	99 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s4   B8A, B,A0	0B3A0	4BBBc                      | dddd|           }t          j        |          }t          t          dd          dg          }t	          j        ||           d S )	Nr   r   r   ints_spelled_with_decimalsr      rA   r   )r   r   r   rangerP   r   r   r   r[   r   r   s        r   test_ints_spelled_with_decimalsr    sd    8D&'+M+M+MNND]4  Fq"s333H&(+++++r   c                     | dddd|           }t          j        |g dg 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                    }t          j        ||           d S )Nr   r   r   multiindex_no_index_names)r   rA   r   )	index_colr   x))XYr   )r  r  rN   )XXYYrM   )r  r  r   )r   AAAAA)r   BBBBB)r   r   )	r   r   r   r   r  
MultiIndexfrom_tuplesrP   r   r  s        r   *test_read_multiindex_header_no_index_namesr#    s    8D&'+Ls+L+LMMD]4999YYYGGGF
&#sC	 3"?@))XXX
 
 m'');=O(PQQ  H &(+++++r   )0r   pathlibr   rx   numpyr   ru   pandas.compatr   rH   r   r   pandas._testing_testingrP   pandas.io.excelr   r   pandas.io.excel._openpyxlr   importorskipr	   mark
single_cpu
pytestmarkfixturer   r<   r`   parametrizerh   rz   r   r   r   r   r   r   r   r   r  r   r  r  r  r  r  r#  r   r   r   <module>r1     sZ             				      - - - - - -                        5 4 4 4 4 46z** ('J   * * *B4 4 4D tUm44) ) 54)J J J$ .O0LMM
 
 NM
4 ['ABBu66? ? 76 CB? sUGns,A,A,A&BC G G G, )	GX&'	Ax 	A)* 3 3 3, +	
A 9h"78	
A!FH#56	
A 9h"78	
A!Iv#67	 0 0 00    $	6 	6% $	6
5 
5 
5 tUm44, , 54,  &#q!Q/!vsAq!4!vsAq!4 	
 
)))))))))<<=
  KKK  &9&9&9::, , ;:	  &, , , ,, &9&9&9::, , ;:,* &9&9&9::, , ;:,9 9 9, , ,, , , , ,r   