
    .i.5                        d dl Z d dlZd dlZd dlZd dlmc mZ d dl	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZ  ej,                  d       ej.                  d        Zd Zd Zej6                  j9                  d	d
dg      d        Zdg ddddfdg ddddfdddgdfdddgdfdddgdfdddgdfd d!gd"fd#d$d%gd&fd'd$d(gdd)dfd*d$d(gd+fd,g d-d.fd/g d-d0fd1g d-d2fd3g d-d4fd5g d-d6fd7g d-d8fd9g d-d:fd;g d<dddfd=g d>d8fd?g d@dddfd=g dAd8fd?g dBdddfd=g dCd8fd?g dDdddfd=g d-d8fd?g d<dddfdEg d-dFfgZdG Zej6                  j9                  d	d
dg      ej6                  j9                  dHe      dI               Z ej6                  j9                  d	d
dg      ej6                  j9                  dHe      dJ               Z!g dKZ"ej6                  j9                  d	d
dg      ej6                  j9                  dLe"      dM               Z#dN Z$ej6                  jJ                  ejL                  dO               Z'ej6                  j9                  dPg dQ      dR        Z(y)S    N)	DataFrame
MultiIndex	Timestampperiod_range
read_excel)ExcelWriter)ExcelFormatterjinja2c                 l    | t        j                          dz  }|j                          t        |      S )N.xlsx)uuiduuid4touchstr)tmp_pathtmps     ^/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/excel/test_style.py	tmp_excelr      s+    


~U+
+CIIKs8O    c                    | j                   j                  |j                   j                  k(  sJ | j                  j                  |j                  j                  k(  sJ | j                  j                  |j                  j                  k(  sJ | j                  j                  |j                  j                  k(  sJ | j
                  |j
                  k(  sJ | j                  j                  |j                  j                  k(  sJ y N)	alignment__dict__borderfillfontnumber_format
protection)cell1cell2s     r   assert_equal_cell_stylesr!   "   s    ??##u'?'????<<  ELL$9$9999::%**"5"5555::%**"5"5555%"5"5555$$(8(8(A(AAAAr   c                    t        j                  d      }t        ddddddddg      }t        | d      5 }|j	                  |d       d d d        t        j                  |j                  |             5 }|d   j                  dd      j                  j                  d	u sJ |d   j                  dd      j                  j                  J |d   j                  dd      j                  j                  J |d   j                  dd      j                  j                  j                   J |d   j                  dd      j                  j"                  j                   J |d   j                  dd      j                  j$                  j                   J |d   j                  dd      j                  j&                  j                   J 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nopenpyxl         )ABCenginecustom
sheet_nameF)pytestimportorskipr   r   to_excel
contextlibclosingload_workbookcellr   boldr   
horizontalverticalr   bottomcolortopleftright)r   r#   dfwriterwbs        r   test_styler_default_valuesrA   ,   s   "":.H	!!!,AAA.FG	HB	Yz	2 1f
Fx01 
		H229=	> 
B"(|  A&++00E999(|  A&00;;CCC(|  A&0099AAA (|  A&--44::BBB(|  A&--1177???(|  A&--2288@@@(|  A&--3399AAA
B 
B1 1
B 
Bs   G8EG'G$'G0r+   
xlsxwriterr#   c                    t        j                  |        t        t        j                  j                  d      j                  d            }t        ||       5 }|j                  |d       |j                  j                  |d       d d d        t        j                  d      }t        j                  |j                  |            5 }t        |d   j                  |d   j                  d	      D ][  \  }}t        |      t        |      k(  sJ t        ||d	      D ],  \  }}	|j                   |	j                   k(  sJ t#        ||	       . ] 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nr%   )r%   r%   r*   	dataframer-   unstyledr#   T)strict)r/   r0   r   nprandomdefault_rngstandard_normalr   r1   styler2   r3   r4   zipcolumnslenvaluer!   )
r+   r   r>   r?   r#   r@   col1col2r   r    s
             r   test_styler_to_excel_unstyledrR   A   sN    	299((+;;FC	DB	Yv	. 9&
F{3
&Z89 "":.H			H229=	> 	7"{O##zN""
 	7JD$
 t9D	))) #D$t < 7u{{ekk111(67	7	7 	79 9
	7 	7s   1EBE)E&)E2background-color: #111222)r   fgColorrgbFF11122200111222)rB   r#   zcolor: #111222)r   r:   rO   zfont-family: Arial;r   namearialzfont-weight: bold;bTzfont-style: italic;iztext-decoration: underline;usingleznumber-format: $??,???.00;r   z
$??,???.00ztext-align: left;r   r7   r<   zvertical-align: bottom;r8   r9   zvertical-align: middle;centerzborder-left: 2pt solid redr   r<   rK   mediumzborder-left: 1pt dotted reddottedzborder-left: 2pt dotted redmediumDashDotDotzborder-left: 1pt dashed reddashedzborder-left: 2pt dashed redmediumDashedzborder-left: 1pt solid redthinzborder-left: 3pt solid redthickzborder-left: 2pt solid #111222)r   r<   r:   rU   zborder: 1pt solid red)r   r;   rK   zborder: 1pt solid #111222)r   r;   r:   rU   )r   r=   rK   )r   r=   r:   rU   )r   r9   rK   )r   r9   r:   rU   z1border-left-style: hair; border-left-color: blackhairc                    dt        j                  d      }t        ddddddg      }t        | d      5 }|j                  j                  fd      }|j                  |dd	
       d d d        t        j                  |j                  |             5 }|d   j                  dd      j                  j                  d	u sJ |d   j                  dd      j                  j                  J |d   j                  dd      j                  j                  J |d   j                  dd      j                   j"                  j$                  J |d   j                  dd      j                   j&                  j$                  J |d   j                  dd      j                   j(                  j$                  J |d   j                  dd      j                   j*                  j$                  J |d   j                  dd      j,                  j.                  j0                  dk(  sJ |d   j                  dd      j,                  j.                  j0                  dk(  sJ |d   j                  dd      j,                  j.                  j0                  dk(  sJ |d   j                  dd      j,                  j.                  j0                  dk(  sJ 	 d d d        y # 1 sw Y   pxY w# 1 sw Y   y xY w)NrS   r#   r$   r%   )r'   r(   r*   c                     S r    )x	css_styles    r   <lambda>z*test_styler_custom_style.<locals>.<lambda>   s    	 r   r,   F)r.   indexrW   r&   )r/   r0   r   r   rK   mapr1   r2   r3   r4   r5   r   r6   r   r7   r8   r   r9   r:   r;   r<   r=   r   rT   rn   )r   r#   r>   r?   stylerr@   rl   s         @r   test_styler_custom_stylerq      s   +I"":.H	!!$AA&67	8B	Yz	2 Bf1285AB 
		H229=	> H"(|  A&++00E999(|  A&00;;CCC(|  A&0099AAA (|  A&--44::BBB(|  A&--1177???(|  A&--2288@@@(|  A&--3399AAA (|  A&++3399ZGGG(|  A&++3399ZGGG(|  A&++3399ZGGG(|  A&++3399ZGGG!H H	B BH Hs   3KH8K'K$'K0zcss, attrs, expectedc                    t        j                  |        t        t        j                  j                  d      j                  d            }|j                  j                  fd      }t        ||       5 }|j                  |d       |j                  |d       d d d        t        j                  d      }t        j                  |j                  |            5 }	|	d   j                  dd      |	d   j                  dd      }}
d d d        |D ]  }t        
|d       t        |      }}
 t!        |t"              r

|
||    k7  sJ ||    k(  sJ y 
|
|k7  sJ |k(  sJ y # 1 sw Y   xY w# 1 sw Y   mxY w)	Nr%   r$   r$   c                     S r   rj   rk   csss    r   rm   z,test_styler_to_excel_basic.<locals>.<lambda>       C r   r*   rD   r-   styledr#   r/   r0   r   rG   rH   rI   rJ   rK   ro   r   r1   r2   r3   r4   r5   getattr
isinstancedict)r+   rv   attrsexpectedr   r>   rp   r?   r#   r@   u_cells_cellattrs    `           r   test_styler_to_excel_basicr      s    	299((+;;FC	DBXX\\-(F	Yv	. 5&
F{3845 "":.H			H229=	> M" K--a3R\5F5Fq!5LM  L t4gfd6KL (D!~8F+;!;;;&))))~8!333!!!#5 5
M Ms   9'E,!+E8,E58Fc                    t        j                  |        t        t        j                  j                  d      j                  d            }|j                  }|j                  fdd       |j                  fdd       |j                  }|j                  d        |j                  d	 d       |j                  d
 d       t        ||       5 }|j                  |d       |j                  |d       d d d        t        j                  d      }	t        j                  |	j                  |            5 }
|
d   j                  dd      |
d   j                  dd      }}|
d   j                  dd      |
d   j                  dd      }}d d d        |D ]4  }t!        |d       t!        |      }}t!        |d       t!        |      }}6 t#        |t$              r-
|||    k7  sJ ||    k(  sJ 
|||    k7  sJ ||    k(  sJ y ||k7  sJ |k(  sJ ||k7  sJ |k(  sJ y # 1 sw Y   7xY w# 1 sw Y   xY w)Nr%   rs   c                     S r   rj   ru   s    r   rm   z4test_styler_to_excel_basic_indexes.<locals>.<lambda>       s r   r   axisc                     S r   rj   ru   s    r   rm   z4test_styler_to_excel_basic_indexes.<locals>.<lambda>   r   r   r$   c                      yNz
null: css;rj   rk   s    r   rm   z4test_styler_to_excel_basic_indexes.<locals>.<lambda>       r   c                      yr   rj   r   s    r   rm   z4test_styler_to_excel_basic_indexes.<locals>.<lambda>   r   r   c                      yr   rj   r   s    r   rm   z4test_styler_to_excel_basic_indexes.<locals>.<lambda>   r   r   r*   null_styledr-   rx   r#   )r/   r0   r   rG   rH   rI   rJ   rK   	map_indexro   r   r1   r2   r3   r4   r5   rz   r{   r|   )r+   rv   r}   r~   r   r>   rp   null_stylerr?   r#   r@   ui_cellsi_celluc_cellsc_cellr   s    `              r   "test_styler_to_excel_basic_indexesr      sm    	299((+;;FC	DBXXF
]+
]+((KOO*+0q90q9	Yv	. 5&V>845 "":.H			H229=	> Q" m,11!Q7H9J9J1a9Pm,11!Q7H9J9J1a9P	Q
  P"7D$7$9O"7D$7$9OP (D!'Xf-="===(6****'Xf-="===(6****'X"555("""'X"555("""/5 5
Q Qs   'H5AI5H?I)
rc   mediumDashDot
dashDotDotrg   ra   rb   doubledashDotslantDashDotrd   border_stylec                     d| dg d}|}t        j                  |        t        t        j                  j                  d      j                  d            }|j                  j                  fd      }t        ||       5 }|j                  |d	       |j                  |d
	       d d d        t        j                  d      }t        j                  |j                  |            5 }	|	d   j                  dd      |	d
   j                  dd      }}
d d d        |D ]  }t        
|d       t        |      }}
 t!        |t"              r

|
||    k7  sJ ||    k(  sJ y 
|
|k7  sJ |k(  sJ y # 1 sw Y   xY w# 1 sw Y   mxY w)Nzborder-left: z black thinr_   r%   rs   c                     S r   rj   ru   s    r   rm   z3test_styler_to_excel_border_style.<locals>.<lambda>  rw   r   r*   rD   r-   rx   r#   ry   )r+   r   r   r}   r~   r>   rp   r?   r#   r@   r   r   r   rv   s                @r   !test_styler_to_excel_border_styler     s    ,{
3C'EH
	299((+;;FC	DBXX\\-(F	Yv	. 5&
F{3845 "":.H			H229=	> M" K--a3R\5F5Fq!5LM  L t4gfd6KL (D!~8F+;!;;;&))))~8!333!!!#5 5
M Ms   'E8-+F8FFc                 >   t        j                  d      }d }t        t        j                  j                  d      j                  d            }|j                  j                  d       }t        | d      5 }t        ||      j                  |d	       d d d        t        j                  |j                  |             5 }|d   j                  dd      j                   j"                  j$                  d
k(  sJ 	 d d d        y # 1 sw Y   pxY w# 1 sw Y   y xY w)Nr#   c                     ddddiiiS )Nr   r:   rU   111222rj   )rv   s    r   custom_converterz6test_styler_custom_converter.<locals>.custom_converter4  s    5("3455r   r%   rs   c                      y)Nzcolor: #888999rj   r   s    r   rm   z.test_styler_custom_converter.<locals>.<lambda>8  r   r   r*   )style_converterr,   r-   rW   )r/   r0   r   rG   rH   rI   rJ   rK   ro   r   r	   writer2   r3   r4   r5   r   r:   rO   )r   r#   r   r>   rp   r?   r@   s          r   test_styler_custom_converterr   1  s    "":.H6 
299((+;;FC	DBXX\\45F	Yz	2 
fv/?@FFx 	G 	


 
		H229=	> F"(|  A&++1177:EEEF F
 

F Fs   9D9DDDc                 $   | j                   }t        j                          d}t        g dg dd      }|j                  j                  d      }d| d| }|j                  ||	       t        |d
|      }t        j                  ||       y )Nr   )r$   r%   r&   )r%         )rk   yrn   r   zs3:///)storage_optionsr   )	index_colr   )
rX   r   r   r   rK   
set_stickyr1   r   tmassert_frame_equal)s3_bucket_publics3somock_bucket_nametarget_filer>   rp   uriresults           r   test_styler_to_s3r   B  s     (,,ZZ\N%(K	3	4BXX  g .F"#1[M
2C
OOCO.q$?F&"%r   merge_cells)TFrM   c           
      >   t        dddgit        j                  t        ddd      dd	ggd
dg            }t	        ||       }|j                         }|D ]C  }|j                  dk7  s|j                  dk(  s#t        |j                  t              r>J d        y )Nr'   r$   r%   z
2006-10-06z
2006-10-07D)startendfreqXYdatecategory)names)rn   )r   r   z'Period should be converted to Timestamp)r   r   from_arraysr   r	   _format_hierarchical_rowsrowcolr{   valr   )r   r>   	formatterformatted_cellsr5   s        r   )test_format_hierarchical_rows_periodindexr   P  s     
	q!f$$<\Lc
 :&
	
B r{;I99;O 88q=TXX]dhh	2 92r   ))r2   r   numpyrG   r/   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   pandas._testing_testingr   pandas.io.excelr   pandas.io.formats.excelr	   r0   fixturer   r!   rA   markparametrizerR   shared_style_paramsrq   r   r   excel_border_stylesr   r   
single_cpuskip_if_not_us_localer   r   rj   r   r   <module>r      sj       ) )   ' 2   H   BB* L*#=>7 ?7. 	$"!z: 	"!z:
 VV,g6FC=$/VSM40"VSM8<!O#4lC;5v>!	j!2
 j 98D!#>I"$?J"$?AST"$?J"$?P!#>G!#>H 	)*!z:
 8&A#)!z:
 :FC#+!z:
 ;VD#,!z:
 96B#*!z: 	<#}C LH: L*#=>/1DE" F ?"2 L*#=>/1DE$# F ?$#T " L*#=>)<=" > ?":F" 	&  	& (@A Br   