
    .i`9                        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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j*                  d        Zej*                  d        Zd	 Zd
 Zej4                  j7                  dddg      d        Zd Zej4                  j7                  dddg      d        Zej4                  j7                  dddg      ej4                  j7                  dddg      d               Zej4                  j7                  dddgfdg dfg      d        Z ej4                  j7                  dd d!d"d#gfd$d%d&gfd'd%d&d#gfg      d(        Z!ej4                  j7                  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j4                  j7                  d0g d1      d2        Z#d3 Z$ej4                  j7                  dddg      d4        Z%ej4                  j7                  d5d ejL                  d6d%d!d7gejL                  d8d9d:d;gejL                  d<d=d>d?gd@fd!g dAg dBg dCdDfg      ej4                  j7                  dEg dF      ej4                  j7                  dg dG      dH                      Z'dI Z(ej4                  j7                  dg dG      dJ        Z)ej4                  j7                  dg dG      dK        Z*dL Z+dM Z,dN Z-y)O    N)Path)	DataFrame)ExcelWriter_OpenpyxlWriter)OpenpyxlReaderopenpyxlc                       y)Nz.xlsx r
       a/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/excel/test_openpyxl.pyextr      s    r   c                 n    |t        j                          |  z  }|j                          t        |      S )N)uuiduuid4touchstr)r   tmp_pathtmps      r   	tmp_excelr      s-    


~cU+
+CIIKs8Or   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/   r0   r1   r2   )r   r   ColorFontSider.   BORDER_THINBorder	AlignmentPatternFill
Protectionr   _convert_to_style_kwargs)r   hstyle
font_colorr-   sider4   r/   
fill_colorr0   r1   r2   kws               r   test_to_excel_styleconverterrC   "   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        |       5 }
|
j	                  ||       |
j	                  |	|       |
j
                  |   }d d d        d   }|d   }|j                  |k(  sJ |j                  |k(  sJ y # 1 sw Y   6xY w)Nr   )	ExcelCellmerge_styledr-   r   r   0000FF00   *   )colrowvalr3   c   000000FFTr   pandas)rJ   rK   rL   
mergestartmergeendr3   
sheet_nameB1A2)pandas.io.formats.excelrE   r   r=   _write_cellssheetsr-   )r   rE   rS   sty_b1sty_a2initial_cells
sty_merged
sty_kwargsopenpyxl_sty_mergedmerge_cellswriterwksxcell_b1xcell_a2s                 r   test_write_cells_merge_styledrd   C   s$   1Jw
+,Fw
+,F 	aQBf5aQBf5M
 J=>J 99*EJ$V,qh1q
	
K 
	# (vMjAKJ?mmJ'	(
 4yH4yH==////==////( (s   (6CC	iso_datesTFc                     d|i}t        | d|      5 }|j                  j                  |k(  sJ t               j	                  |       d d d        y # 1 sw Y   y xY w)Nre   r   )engineengine_kwargs)r   bookre   r   to_excel)r   re   rh   r`   s       r   test_engine_kwargs_writerk   d   s]     !),M	*M
 %	{{$$	111V$% % %s   5AAc                 H   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        y # 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rg   moderh   goodSheet2rR   )r   rj   pytestraises	TypeErrorreescaper   )r   r`   s     r   !test_engine_kwargs_append_invalidr}   p   s     w !**95	iiO

 F )73	
 	F
 vh((H(E	FF F	F 	FF Fs$   BB;BB	BB!zdata_only, expected)Tr   )F=1+1c                 X   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 y # 1 sw Y   7xY w)Nr~   r   rq   	data_onlyrt   Sheet1B2rw   rR   )rS   rg   rh   )r   rH   )r   rj   r   rX   valuepd
read_exceliloc)r   r   expectedr`   s       r   #test_engine_kwargs_append_data_onlyr      s    
 vh  +	*3{I>V
 :	}}X&t,22h>>>V9: 	&	2		

 $t	 		: :s   =B  B)
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)rh   )
contextlibclosingr   getattrri   )datapathr   r   r   filenamereaders         r    test_engine_kwargs_append_readerr      sf     fgw}=H			x
K/HI
 ?	v{{J/;>>>? ? ?s   AA zmode,expectedwbazrq   )foobarr   c                    t        dgdg      }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        y # 1 sw Y   xY wc c}w # 1 sw Y   y xY w)NrH   r   columnsr   r   A1r   r   )rg   ru   FrS   index)r   r   Workbook
worksheetstitler   create_sheetsaver   rj   r   r   load_workbook	enumerate)r   ru   r   dfwbr`   wb2sheetresultr   
cell_values              r   test_write_append_moder      sR    
A3	(B				B"BMM!#(BMM!T OOE#(BMM!T GGI	Yz	= ;
FuE:; 
		H229=	> C#+.>>:%%++::!!!!*8!4 	CE:>>%(.44
BBB	C	C C; ; ;C Cs0   EE*E=9E7EEEEz#if_sheet_exists,num_sheets,expectednew   applebananareplacerH   pearoverlayc                    t        dddgi      }t        ddgi      }|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        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrs   r   r   r   r   r   Frg   rS   r   rq   rg   ru   if_sheet_existsr   r   rg   r   rH   )r   rj   r   r   r   r   r   len
sheetnamesr   r   listtmassert_frame_equal)	r   r   
num_sheetsr   df1df2r`   r   r   s	            r   !test_if_sheet_exists_append_modesr      sB    Ww12
3C
Wvh'
(CLL:%uLM	*3
 <	VU;<
 
		H229=	> /"2==!Z///}}Q5(((r5<F7O$000r}}"]]2r}}Q'7
KF!!&#./ /< <
/ /s   D=B-E	=E	Ez%startrow, startcol, greeting, goodbyepooprn   goodbyepeoplerm   c           	      ^   t        ddgddgd      }t        dg      }|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                  ||	       y # 1 sw Y   FxY w)Nrm   rn   r   r   )greetingr   r   r   pooFr   rq   r   r   rH   )r   headerstartrowstartcolrS   rS   rg   )r   rj   r   r   r   r   r   )
r   r   r   r   r   r   r   r`   r   r   s
             r   %test_append_overlay_startrow_startcolr      s     '7!3H@UV
WC
VH
CLL:%uLM	*3	
 
	\ 	 	
	
 ]]9zJFh7CDH&(+
 
s   B##B,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      }|j                  | dd       t        j                  t        t        j                  |            5  t        | dd|      5 }|j                  |d	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nrs   r   r   r   r   ro   rq   r   rR   )r   rj   rx   ry   
ValueErrorr{   r|   r   )r   r   msgr   r`   s        r   test_if_sheet_exists_raisesr     s    ( 
GfX&	'BKK	eJK?	z3	8 2jsO
 	2KK5K1	22 2	2 	22 2s$   B!B5BB	BBc                 8   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	       y )
NArH   
   B   )axisc                     d| dk  rd S d S )Nzcolor: r   redblackr
   )rL   s    r   <lambda>z4test_to_excel_with_openpyxl_engine.<locals>.<lambda>%  s    gsQwe<= G<= r   r   r   )	r   nplinspacer   concatr3   maphighlight_maxrj   )r   r   r   r   styleds        r   "test_to_excel_with_openpyxl_enginer     s    
S"++aR01
2C
S"++aR01
2C	C:A	&BXX\\=mo  OOIjO1r   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   r   r   )r   r   r   r   r   r   r   s          r   test_read_workbookr   +  s     fgw}=H			x9=
 6	r*56 }}X&H&(+6 6s   BBzheader, expected_datar      r            C      	   Titlez
Unnamed: 1z
Unnamed: 2)rH   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   )rg   r   	r   r   r   r   r   r   r   r   r   )
r   r   r   expected_datar   r   pathr   r   r   s
             r   test_read_with_bad_dimensionr   7  s    . D&'hZu+=>DtF3""49"=
 	I]]2jHF	I 'H&(+	I 	Is   BB c                 h   t               }|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 y # 1 sw Y   jxY w)	Nr   r   rq   r   )ru   rg   r   s   docProps/app.xmlrH   )r   rj   r   r   
read_bytesfind)r   r   r`   r   firstsecondthirds          r   test_append_mode_filer  Z  s    	BKK	*K-	J
 	
F 	?%%'DII)*EYY*EAI6FII)6A:6ER<ERK''K s   B((B1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   rH   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   nanr   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        | d      5 }|j                  i k(  sJ |j                  j                  dd      }|j                  d|ik(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r   	test_namer   )r   rX   ri   r   )r   r`   r   s      r   test_book_and_sheets_consistentr    sb    	Yz	2 5f}}"""((a8}}e 44445 5 5s   AAA"c                      | dddd|       }t        j                  |      }t        t        dd      dg      }t	        j
                  ||       y )	Nr   r   r   ints_spelled_with_decimalsr      rH   r   )r   r   r   ranger   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   rH   r   )	index_colr   x))XYr   )r  r  rU   )XXYYrT   )r  r  r   )r   AAAAA)r   BBBBB)r   r   )	r   r   r   r   r  
MultiIndexfrom_tuplesr   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   ).r   pathlibr   r{   r   numpyr   rx   rO   r   r   pandas._testing_testingr   pandas.io.excelr   r   pandas.io.excel._openpyxlr   importorskipr   fixturer   r   rC   rd   markparametrizerk   r}   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*    *B0B tUm4% 5%F( .O0LM N2 ['ABu6? 7 C? sUGns,A&BCCC* )	GX&'	Ax 	A)*//* +	
A 9h"78	
A!FH#56	
A 9h"78	
A!Iv#67	,,2 $2%$2	2 tUm4, 5,  &&#q!Q/!vvsAq!4!vvsAq!4	
 
)))<=
 K &9:, ;	&, (* &9:, ;,* &9:, ;,5,,r   