
    A[g{;                        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j2                  d        Zd	 Zd
 Zej,                  j;                  dddg      d        Zd Zej,                  j;                  dddg      d        Z ej,                  j;                  dddg      ej,                  j;                  dddg      d               Z!ej,                  j;                  dddgfdg dfg      d        Z"ej,                  j;                  dd d!d"d#gfd$d%d&gfd'd%d&d#gfg      d(        Z#ej,                  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,                  j;                  d0g d1      d2        Z%d3 Z&ej,                  j;                  dddg      d4        Z'ej,                  j;                  d5d ejP                  d6d%d!d7gejP                  d8d9d:d;gejP                  d<d=d>d?gd@fd!g dAg dBg dCdDfg      ej,                  j;                  dEg dF      ej,                  j;                  dg dG      dH                      Z)dI Z*ej,                  j;                  dg dG      dJ        Z+ej,                  j;                  dg dG      dK        Z,dL Z-dM Z.dN Z/y)O    N)Path)is_platform_windows)	DataFrame)ExcelWriter_OpenpyxlWriter)OpenpyxlReaderopenpyxlc                       y)Nz.xlsx r       ^/var/www/html/bid-api/venv/lib/python3.12/site-packages/pandas/tests/io/excel/test_openpyxl.pyextr      s    r   c                  J   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}| j                  d      }| j                  d|      }| j	                  | j
                  j                        }| j                  ||||      }| j                  dd	
      }| j                  dd      }| j                  d|      }d}	| j                  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 y )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<      sn    %d3!FffU$,%@ 'JPS4TU'0!%7F j)J;;D
;3D;;V^^77;8D]]t44]HF  Hu EI*37J':FDM""$u"=J		1	1&	9Bf:h<6!!!k?i'''f:o-///lz)))r   c                    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                  ||       |j                  |	|       |j                  |   }d d d        d   }|d   }|j                  |k(  sJ |j                  |k(  sJ 	 d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)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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$   2C>>6C244C>2C;	7C>>D	iso_datesTFc                    d|i}t        j                  |       5 }t        |d|      5 }|j                  j                  |k(  sJ t               j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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;5A/A;/A8	4A;;Bc           	         t        j                  |       5 }t        ddg      j                  |       t	        j
                  t        t        j                  d            5  t        |ddddi	      5 }t        d
g      j                  |d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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!B63B*B6C*B3/B66B?	;CCzdata_only, expected)Tr   )F=1+1c                    t        j                  |       5 }t        dg      j                  |       t	        |ddd|i      5 }|j
                  d   d   j                  |k(  sJ t               j                  |d	       d d d        t        j                  |ddd|i
      j                  d   |k(  sJ 	 d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)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? 5C?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        y # 1 sw Y   y xY w)Niodataexceltest1)rd   )
contextlibclosingr   getattrre   )datapathr   r   r   filenamereaders         r    test_engine_kwargs_append_readerr      sa     fgw}=H			x
K/HI
	v{{J/;>>>
 
 
s   AA zmode,expectedwbazrn   )foobarr   c                    t        dgdg      }t        j                  |       5 }t        j	                         }d|j
                  d   _        d|j
                  d   d   _        |j                  d       d|j
                  d   d   _        |j                  |       t        |d|	      5 }|j                  |dd
       d d d        t        j                  t        j                  |            5 }|j
                  D cg c]  }|j                   }	}|	|k(  sJ t        |      D ]&  \  }
}|j
                  |
   d   j                  |k(  r&J  	 d d d        d d d        y # 1 sw Y   xY wc c}w # 1 sw Y   #xY w# 1 sw Y   y xY w)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      sR    
A3	(B		 !&a',a$
',a$

:D9VKK5K> :  6 6q 9:c/2~~>~eekk~F>X%%%%.x%8!z~~e,T288JFFF &9	 ; 
	 :9 ? ;: 
	sT   BE?,E"0E?1E3 E.9E3E3E?"E+	'E?.E33E<	8E??Fz#if_sheet_exists,num_sheets,expectednew   applebananareplacerA   pearoverlayc                    t        dddgi      }t        ddgi      }t        j                  |       5 }|j                  |ddd       t	        |dd	|
      5 }|j                  |dd       d d d        t        j                  t        j                  |            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(  r;t        j                  ||j                  d   d      }	t        j                  |	|       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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      sP    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&r2==+;JO%%fc2 ; 
	
 

 ;: 
	s<   %E3E-0E3B-E'
E3E$	 E3'E0	,E33E<z%startrow, startcol, greeting, goodbyepooprk   goodbyepeoplerj   c           
         t        ddgddgd      }t        dg      }t        j                  |       5 }|j                  |ddd	
       t	        |ddd      5 }|j                  |d	d	|dz   |d       d d d        t        j                  |dd      }	t        ||d      }
t        j                  |	|
       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)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(wGH
fh/# 
	
 
 
	s$   %CC4AC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                    t        ddgi      }t        j                  |       5 }t        j                  t
        t        j                  |            5  |j                  |dd       t        |dd|      5 }|j                  |d	       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
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<$B07B$B0B<$B-)B00B9	5B<<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                  j                  d       j                         }|j                  |d	       d d d        y # 1 sw Y   y xY w)
NArA   
   B   )axisc                     d| dk  rd S d S )Nzcolor: r   redblackr   )rE   s    r   <lambda>z4test_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Sz*A

-/ 	 	4 
		s   BB::Cc                 "    | dddd|z         }t        j                  t        j                  ||            5 }t	        j
                  |d      }d d d        t	        j
                  |      }t        j                  |       y # 1 sw Y   5xY w)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|     fgw}=H			x9=
	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                 F    | ddd| |       }|t        j                  ||      }nKt        j                  t        j                  ||            5 }t        j                  |d|      }d d d        t        |      }	t        j                  |	       y # 1 sw Y   +xY w)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tF3""49"=
]]2jHF
 'H&(+
 
s   BB c                    t               }t        j                  |       5 }|j                  |d       t	        |ddd      5 }|j                  |       d d d        t        |      j                         }|j                  d      }|j                  d|dz         }|j                  d|dz         }|dk7  r|dk(  sJ 	 d d d        y # 1 sw Y   sxY w# 1 sw Y   y xY w)	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           	          | dddd|       }|t        j                  |      }nJt        j                  t        j                  ||            5 }t        j                  |d      }d d d        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                  |       y # 1 sw Y   hxY w)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$""49"=
]]2j9F
 ffc1a+6631a06631a0	
H &(+
 
s   CCc                 <    | dddd|       }|t        j                  |      }nJt        j                  t        j                  ||            5 }t        j                  |d      }d d d        t               }t        j                  |       y # 1 sw Y   *xY w)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$""49"=
]]2j9F
 {H&(+
 
s   BBc                    t        j                  |       5 }t        |d      5 }|j                  i k(  sJ |j                  j                  dd      }|j                  d|ik(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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                      | dddd|       }t        j                  |      }t        t        dd      dg      }t	        j
                  ||       y )	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    sL    D&'-Gu+MND]]4 Fq"s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
                  j                  g d      t         j
                  j                  d	d
g            }t        j                  ||       y )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6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   