
    Mh{;                         S SK r S SKJr  S SKrS SKrS SKrS SKJr  S SK	r
S SK	Jr  S SKJr  S SKJrJr  S SKJr  \R(                  " S5      r\" 5       (       a  \R,                  R.                  r\R2                  S 5       rS	 rS
 r\R,                  R;                  SSS/5      S 5       rS r\R,                  R;                  SSS/5      S 5       r \R,                  R;                  SSS/5      \R,                  R;                  SSS/5      S 5       5       r!\R,                  R;                  SSS/4S/ SQ4/5      S 5       r"\R,                  R;                  SS S!S"S#/4S$S%S&/4S'S%S&S#/4/5      S( 5       r#\R,                  R;                  S)S S S*S+/S,S-/4S S%S.S+/S*S-/4S%S S.S*/S,S-/4S%S%S.S+/S,S*/4/5      S/ 5       r$\R,                  R;                  S0/ S1Q5      S2 5       r%S3 r&\R,                  R;                  SSS/5      S4 5       r'\R,                  R;                  S5S \RP                  S6S%S!S7/\RP                  S8S9S:S;/\RP                  S<S=S>S?/S@.4S!/ SAQ/ SBQ/ SCQSD.4/5      \R,                  R;                  SE/ SFQ5      \R,                  R;                  S/ SGQ5      SH 5       5       5       r)SI r*\R,                  R;                  S/ SGQ5      SJ 5       r+\R,                  R;                  S/ SGQ5      SK 5       r,SL r-SM r.SN r/g)O    N)Path)is_platform_windows)	DataFrame)ExcelWriter_OpenpyxlWriter)OpenpyxlReaderopenpyxlc                      g)Nz.xlsx r       U/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/excel/test_openpyxl.pyextr      s    r   c                  *   SSK Jn   SSS.SSSSS.SS	S
.SSSS.S.SS0SSS.S.nU R                  S5      nU R                  SUS9nU R	                  U R
                  R                  S9nU R                  XDXDS9nU R                  SS	S
9nU R                  SSS9nU R                  SUS9nSn	U R                  SSS9n
[        R                  " U5      nUS   U:X  d   eUS   U:X  d   eUS   U:X  d   eUS   U:X  d   eUS   U	:X  d   eUS   U
:X  d   eg )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<      sj    %d3!FffU$,%@ 'JPS4TU'0!%7F j)J;;D
;3D;;V^^77;8D]]t]HF  Hu EI*37J':FDM""$u"=J		1	1&	9Bf:h<6!!!k?i'''f:o-///lz)))r   c           	         SSK Jn  SnSSS00nSSS00nU" SSS	US
9U" SSSUS
9/nSSSS.0n[        R                  " U5      nUS   nU" SSSSSUS9/n	[        R
                  " U 5       n
[        U
5       nUR                  XRS9  UR                  XS9  UR                  U   nS S S 5        WS   nUS   nUR                  U:X  d   eUR                  U:X  d   e S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)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`   @   s6   1Jw
+,Fw
+,F 	aQBf5aQBf5M
 J=>J 99*EJ$V,qh1q
	
K 
	T"fEC--
+C	 #
 t9t9}} 3333}} 3333 
	"" 
	s$   +C67.C%%6C6%
C3	/C66
D	iso_datesTFc                     SU0n[         R                  " U 5       n[        USUS9 nUR                  R                  U:X  d   e[        5       R                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nra   r	   )engineengine_kwargs)rP   rQ   r   bookra   r   to_excel)r   ra   rd   fr\   s        r   test_engine_kwargs_writerh   b   sp     !),M		:]Kv;;((I555K  ( L 
	KK 
	s"   A?6A.A?.
A<	8A??
Bc           	         [         R                  " U 5       n[        SS/5      R                  U5        [        R
                  " [        [        R                  " S5      S9   [        USSSS0S	9 n[        S
/5      R                  USS9  S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)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     
	7G$%..q1]]))S
 *3~w>W6(#,,V,I	
 
	 
 
 
	s<   A
C!B50B$B5C$
B2.B55
C	?C
Czdata_only, expected)Tr   )F=1+1c                    [         R                  " U 5       n[        S/5      R                  U5        [	        USSSU0S9 nUR
                  S   S   R                  U:X  d   e[        5       R                  USS	9  S S S 5        [        R                  " USSSU0S
9R                  S   U:X  d   e S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)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6(BBBK  H =
 MM#!*I6	
 d4 	
 
	
 
 
	s#   *C;B:<4C:
C	C
C
kwarg_name	read_onlyr}   kwarg_valuec                     U " SSSSU-   5      n[         R                  " [        XBU0S95       n[        UR                  U5      U:X  d   e S S S 5        g ! , (       d  f       g = f)Niodataexceltest1)rd   )
contextlibclosingr   getattrre   )datapathr   r   r   filenamereaders         r    test_engine_kwargs_append_readerr      s_     fgw}=H			xK/HI
	v{{J/;>>>
 
 
s   A
A#zmode,expectedwbazrn   )foobarr   c                 ,   [        S/S/S9n[        R                  " U 5       n[        R	                  5       nSUR
                  S   l        SUR
                  S   S   l        UR                  S5        SUR
                  S   S   l        UR                  U5        [        USUS	9 nUR                  USS
S9  S S S 5        [        R                  " [        R                  U5      5       nUR
                   Vs/ s H  oR                  PM     n	nX:X  d   e[        U5       H'  u  pUR
                  U
   S   R                  U:X  a  M'   e   S S S 5        S S S 5        g ! , (       d  f       N= fs  snf ! , (       d  f       N-= f! , (       d  f       g = f)NrA   r   columnsr   r   A1r   r	   )rc   rr   FrL   index)r   rP   rQ   r	   Workbook
worksheetstitler   create_sheetsaver   rf   r   r   load_workbook	enumerate)r   rr   r   dfrg   wbr\   wb2sheetresultr   
cell_values               r   test_write_append_moder      sL    
A3	(B		 !&a',a$
',a$

:D9VKK5K> :  6 6q 9:c/2~~>~ekk~F>%%%%.x%8!~~e,T288JFFF &9	 ; 
	 :9 ? ;: 
	sT   BF'E91F*E49E/7E4	E4F
E,	(F/E44
F	>F
Fz#if_sheet_exists,num_sheets,expectednew   applebananareplacerA   pearoverlayc                    [        SSS/05      n[        SS/05      n[        R                  " U 5       nUR                  USSSS9  [	        USS	US
9 nUR                  USSS9  S S S 5        [
        R                  " [        R                  U5      5       n[        UR                  5      U:X  d   eUR                  S   S:X  d   e[        R                  " USSS9n	[        U	S   5      U:X  d   e[        UR                  5      S:X  a8  [        R                  " XR                  S   SS9n	[        R                  " X5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)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      sL    Ww12
3C
Wvh'
(C		Qze5IjsO
LLEL?

  6 6q 9:br}}%333==#u,,,]]2uZ@Fw(H4442==!Q&r==+;JO%%f2 ; 
	
 

 ;: 
	s<   E5E%1E5B,E$E5
E!	E5$
E2	.E55
Fz%startrow, startcol, greeting, goodbyepooprk   goodbyepeoplerj   c                    [        SS/SS/S.5      n[        S/5      n[        R                  " U 5       nUR                  USSS	S
9  [	        USSSS9 nUR                  US	S	US-   USS9  S S S 5        [
        R                  " USSS9n	[        X4S.5      n
[        R                  " X5        S S S 5        g ! , (       d  f       NP= f! , (       d  f       g = f)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
WC
VH
C		Qze5IjsI
LL!A!   	
 qU:F(GH
f/# 
	
 
 
	s$   CB6,AC6
C	 C
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           	         [        SS/05      n[        R                  " U 5       n[        R                  " [
        [        R                  " U5      S9   UR                  USSS9  [        USSUS9 nUR                  USS	9  S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)
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		]]:RYYs^<KKeJK?*3Fu5 = 
	  =< 
	s;   .B=B,1BB,
B=
B)%B,,
B:	6B==
Cc           	         [         R                  " U 5       n[        S[        R                  " SSS5      05      n[        S[        R                  " SSS5      05      n[
        R                  " X#/SS9nUR                  R                  S 5      R                  5       nUR                  USS	9  S S S 5        g ! , (       d  f       g = f)
NArA   
   B   )axisc                      SU S:  a  S 3$ S 3$ )Nzcolor: r   redblackr   )rE   s    r   <lambda>4test_to_excel_with_openpyxl_engine.<locals>.<lambda>$  s    '37%!@A!@Ar   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    		bkk!R456bkk!R456YYz*A

-/ 	 	4 
		s   BB77
Cc                 &   U " SSSSU-   5      n[         R                  " [        R                  X2S95       n[        R
                  " USS9nS S S 5        [        R
                  " U5      n[        R                  " WU5        g ! , (       d  f       N<= f)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   *  sz     fgw}=H			x=
	r*5
 }}X&H&(+
 
s   B
B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   U " SSSU U 35      nUc  [         R                  " XbS9nOF[        R                  " [        R                  XeS95       n[         R                  " USUS9nS S S 5        [        U5      n	[        R                  " WU	5        g ! , (       d  f       N1= f)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    . D&'hZu+=>Dt3""4"=
]]2jHF
 'H&(+
 
s   B
Bc                    [        5       n[        R                  " U 5       nUR                  USS9  [	        USSSS9 nUR                  U5        S S S 5        [        U5      R                  5       nUR                  S5      nUR                  SUS-   5      nUR                  SUS-   5      nUS:w  a  US:X  d   e S S S 5        g ! , (       d  f       Nz= f! , (       d  f       g = f)	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
 Aw!!#		-..	:		-vz:|++ 
	
 
 
	s#   CCA*C
C	C
C#c           	         U " SSSSU 35      nUc  [         R                  " U5      nOE[        R                  " [        R                  X2S95       n[         R                  " USS9nS S S 5        [        [        R                  SS	S
S/[        R                  SSSS/[        R                  SSSS/S.5      n[        R                  " WU5        g ! , (       d  f       Nn= f)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     D&'-@+FGDt$""4"=
]]2j9F
 ffc1a+6631a06631a0	
H &(+
 
s   C
Cc                 B   U " SSSSU 35      nUc  [         R                  " U5      nOE[        R                  " [        R                  X2S95       n[         R                  " USS9nS S S 5        [        5       n[        R                  " WU5        g ! , (       d  f       N0= f)Nr   r   r   empty_with_blank_rowr   r	   r   r   r  s          r   test_read_empty_with_blank_rowr    s     D&'-A#+GHDt$""4"=
]]2j9F
 {H&(+
 
s   B
Bc                 2   [         R                  " U 5       n[        USS9 nUR                  0 :X  d   eUR                  R                  SS5      nUR                  SU0:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr	   r   	test_namer   )rP   rQ   r   rS   re   r   )r   rg   r\   r   s       r   test_book_and_sheets_consistentr    sx    		:.&==B&&&KK,,[!<E==[%$8888 / 
	.. 
	s#   BAA7&B7
B	B
Bc                     U " SSSSU 35      n[         R                  " U5      n[        [        SS5      S/S9n[        R
                  " X45        g )	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    sJ    D&'-Gu+MND]]4 Fq"s3H&+r   c                    U " SSSSU 35      n[         R                  " U/ SQ/ SQS9n[        [        R                  SSS/S[        R                  [        R                  [        R                  //[         R
                  R                  / SQ5      [         R
                  R                  S	S
/5      S9n[        R                  " X45        g )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    D&'-Fse+LMD]]49YGF
&&#sC	 3"?@))X
 mm'');=O(P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>r.     s     	   -    5z*''J  *B4D tUm4) 5)J$ .O0LM
 N
4 ['ABu6? 7 C? sUGns,A&BCGG, )	GX&'	Ax 	A)*33, +	
A 9h"78	
A!FH#56	
A 9h"78	
A!Iv#67	000 $	6%$	6
5 tUm4, 5,  &&#q!Q/!vvsAq!4!vvsAq!4	
 
)))<=
 K &9:, ;	&, ,, &9:, ;,* &9:, ;,9,,r   