
    A>i.5                        S SK r S SKrS SKrS SKrS SKJs  Jr  S SK	J
r
JrJrJrJr  S SKJr  S SKJr  S SKJr  \R,                  " S5        \R.                  S 5       rS rS r\R6                  R9                  S	S
S/5      S 5       rS/ SQSSS.4S/ SQSSS.4SSS/S4SSS/S4SSS/S4SSS/S4S S!/S"4S#S$S%/S&4S'S$S(/SS)S.4S*S$S(/S+4S,/ S-QS.4S// S-QS04S1/ S-QS24S3/ S-QS44S5/ S-QS64S7/ S-QS84S9/ S-QS:4S;/ S<QSSS.4S=/ S>QS84S?/ S@QSSS.4S=/ SAQS84S?/ SBQSSS.4S=/ SCQS84S?/ SDQSSS.4S=/ S-QS84S?/ S<QSSS.4SE/ S-QSF4/rSG r\R6                  R9                  S	S
S/5      \R6                  R9                  SH\5      SI 5       5       r \R6                  R9                  S	S
S/5      \R6                  R9                  SH\5      SJ 5       5       r!/ SKQr"\R6                  R9                  S	S
S/5      \R6                  R9                  SL\"5      SM 5       5       r#SN r$\R6                  RJ                  \RL                  SO 5       5       r'\R6                  R9                  SP/ SQQ5      SR 5       r(g)S    N)	DataFrame
MultiIndex	Timestampperiod_range
read_excel)ExcelWriter)ExcelFormatterjinja2c                 n    U [         R                  " 5        S3-  nUR                  5         [        U5      $ )N.xlsx)uuiduuid4touchstr)tmp_pathtmps     _/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/io/excel/test_style.py	tmp_excelr      s+    


~U+
+CIIKs8O    c                    U R                   R                  UR                   R                  :X  d   eU R                  R                  UR                  R                  :X  d   eU R                  R                  UR                  R                  :X  d   eU R                  R                  UR                  R                  :X  d   eU R
                  UR
                  :X  d   eU R                  R                  UR                  R                  :X  d   eg 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                     [         R                  " S5      n[        SSSS.SSSS./5      n[        U SS9 nUR	                  USS9  S S S 5        [
        R                  " UR                  U 5      5       nUS   R                  SS5      R                  R                  S	L d   eUS   R                  SS5      R                  R                  b   eUS   R                  SS5      R                  R                  b   eUS   R                  SS5      R                  R                  R                   b   eUS   R                  SS5      R                  R"                  R                   b   eUS   R                  SS5      R                  R$                  R                   b   eUS   R                  SS5      R                  R&                  R                   b   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)
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	2f
Fx0 
3 
		H229=	>"(|  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 
?	> 
3	2 
?	>s   G4EG/
G,/
G=r+   
xlsxwriterr#   c                    [         R                  " U 5        [        [        R                  R                  S5      R                  S5      5      n[        XS9 nUR                  USS9  UR                  R                  USS9  S S S 5        [         R                  " S5      n[        R                  " UR                  U5      5       n[        US   R                  US   R                  SS	9 HY  u  pg[        U5      [        U5      :X  d   e[        XgSS	9 H,  u  pUR                   U	R                   :X  d   e[#        X5        M.     M[     S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
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   s*    	299((+;;FC	DB	Y	.&
F{3
&Z8 
/ "":.H			H229=	>"{O##zN""
JD
 t9D	))) #Dt <{{ekk111(6 !=
 
?	> 
/	.
 
?	>s   +EBE"
E"
E0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                 
  ^ Sm[         R                  " S5      n[        SSS.SSS./5      n[        U SS9 nUR                  R                  U4S j5      nUR                  USS	S
9  S S S 5        [        R                  " UR                  U 5      5       nUS   R                  SS5      R                  R                  S	L d   eUS   R                  SS5      R                  R                  b   eUS   R                  SS5      R                  R                  b   eUS   R                  SS5      R                   R"                  R$                  b   eUS   R                  SS5      R                   R&                  R$                  b   eUS   R                  SS5      R                   R(                  R$                  b   eUS   R                  SS5      R                   R*                  R$                  b   eUS   R                  SS5      R,                  R.                  R0                  S:X  d   eUS   R                  SS5      R,                  R.                  R0                  S:X  d   eUS   R                  SS5      R,                  R.                  R0                  S:X  d   eUS   R                  SS5      R,                  R.                  R0                  S:X  d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)NrS   r#   r$   r%   )r'   r(   r*   c                    > T$ r    )x	css_styles    r   <lambda>*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   ro   )r   r#   r>   r?   stylerr@   rl   s         @r   test_styler_custom_stylerr      s   +I"":.H	!!$AA&67	8B	Yz	2f1285A 
3 
		H229=	>"(|  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! 
?	>	 
3	2 
?	>s   1K"IK4"
K14
Lzcss, attrs, expectedc                    ^ [         R                  " U 5        [        [        R                  R                  S5      R                  S5      5      nUR                  R                  U4S j5      n[        X@S9 nUR                  USS9  UR                  USS9  S S S 5        [         R                  " S5      n[        R                  " UR                  U5      5       n	U	S   R                  SS5      U	S   R                  SS5      pS S S 5        U H  n[        W
US 5      [        WU5      pM     [!        U["        5      (       a  W
b
  XU    :w  d   eWX0   :X  d   eg W
b  X:w  d   eWU:X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)	Nr%   r$   r$   c                    > T$ r   rj   rk   csss    r   rm   ,test_styler_to_excel_basic.<locals>.<lambda>       Cr   r*   rD   r-   styledr#   r/   r0   r   rG   rH   rI   rJ   rK   rp   r   r1   r2   r3   r4   r5   getattr
isinstancedict)r+   rw   attrsexpectedr   r>   rq   r?   r#   r@   u_cells_cellattrs    `           r   test_styler_to_excel_basicr      s]    	299((+;;FC	DBXX\\-(F	Y	.&
F{384 
/ "":.H			H229=	>" K--a3R\5F5Fq!5L 
?  t4gfd6K  (D!!~F+;!;;;))))~!333!!!# 
/	.
 
?	>s   7!E.*E?.
E<?
Fc                   ^ [         R                  " U 5        [        [        R                  R                  S5      R                  S5      5      nUR                  nUR                  U4S jSS9  UR                  U4S jSS9  UR                  nUR                  S 5        UR                  S	 SS9  UR                  S
 SS9  [        X@S9 nUR                  USS9  UR                  USS9  S S S 5        [         R                  " S5      n	[        R                  " U	R                  U5      5       n
U
S   R                  SS5      U
S   R                  SS5      pU
S   R                  SS5      U
S   R                  SS5      pS S S 5        U H3  n[!        WUS 5      [!        WU5      p[!        WUS 5      [!        WU5      pM5     [#        U[$        5      (       a/  Wb
  XU    :w  d   eWX0   :X  d   eWb
  XU    :w  d   eWX0   :X  d   eg Wb  X:w  d   eWU:X  d   eWb  X:w  d   eWU:X  d   eg ! , (       d  f       GNG= f! , (       d  f       N= f)Nr%   rt   c                    > T$ r   rj   rv   s    r   rm   4test_styler_to_excel_basic_indexes.<locals>.<lambda>       sr   r   axisc                    > T$ r   rj   rv   s    r   rm   r      r   r   r$   c                     gNz
null: css;rj   rk   s    r   rm   r      s    lr   c                     gr   rj   r   s    r   rm   r          Lr   c                     gr   rj   r   s    r   rm   r      r   r   r*   null_styledr-   rz   r#   )r/   r0   r   rG   rH   rI   rJ   rK   	map_indexrp   r   r1   r2   r3   r4   r5   r|   r}   r~   )r+   rw   r   r   r   r>   rq   null_stylerr?   r#   r@   ui_cellsi_celluc_cellsc_cellr   s    `              r   "test_styler_to_excel_basic_indexesr      sA    	299((+;;FC	DBXXF
]+
]+((KOO*+0q90q9	Y	.&V>84 
/ "":.H			H229=	>" m,11!Q7H9J9J1a9Pm,11!Q7H9J9J1a9P	 
?
 "7D$7$9O"7D$7$9O  (D!!'f-="===(****'f-="===(****'"555("""'"555("""/ 
/	.
 
?	>s   !H-0AH?-
H<?
I)
rc   mediumDashDot
dashDotDotrg   ra   rb   doubledashDotslantDashDotrd   border_stylec                 8  ^ SU S3m/ SQnUn[         R                  " U 5        [        [        R                  R                  S5      R                  S5      5      nUR                  R                  U4S j5      n[        X S9 nUR                  USS	9  UR                  US
S	9  S S S 5        [         R                  " S5      n[        R                  " UR                  U5      5       n	U	S   R                  SS5      U	S
   R                  SS5      pS S S 5        U H  n[        W
US 5      [        WU5      pM     [!        U["        5      (       a  W
b
  XU    :w  d   eWX@   :X  d   eg W
b  X:w  d   eWU:X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nzborder-left: z black thinr_   r%   rt   c                    > T$ r   rj   rv   s    r   rm   3test_styler_to_excel_border_style.<locals>.<lambda>  ry   r   r*   rD   r-   rz   r#   r{   )r+   r   r   r   r   r>   rq   r?   r#   r@   r   r   r   rw   s                @r   !test_styler_to_excel_border_styler     su    ,{
3C'EH
	299((+;;FC	DBXX\\-(F	Y	.&
F{384 
/ "":.H			H229=	>" K--a3R\5F5Fq!5L 
?  t4gfd6K  (D!!~F+;!;;;))))~!333!!!# 
/	.
 
?	>s   !E:'*F:
F
Fc                 D   [         R                  " S5      nS n[        [        R                  R                  S5      R                  S5      5      nUR                  R                  S 5      n[        U SS9 n[        XBS9R                  USS	9  S S S 5        [        R                  " UR                  U 5      5       nUS   R                  SS5      R                   R"                  R$                  S
:X  d   e S S S 5        g ! , (       d  f       Nw= f! , (       d  f       g = f)Nr#   c                     SSSS000$ )Nr   r:   rU   111222rj   )rw   s    r   custom_converter6test_styler_custom_converter.<locals>.custom_converter4  s    5("3455r   r%   rt   c                     g)Nzcolor: #888999rj   r   s    r   rm   .test_styler_custom_converter.<locals>.<lambda>8  s    $4r   r*   )style_converterr,   r-   rW   )r/   r0   r   rG   rH   rI   rJ   rK   rp   r   r	   writer2   r3   r4   r5   r   r:   rO   )r   r#   r   r>   rq   r?   r@   s          r   test_styler_custom_converterr   1  s    "":.H6 
299((+;;FC	DBXX\\45F	Yz	2fv@FFx 	G 	
 
3
 
		H229=	>"(|  A&++1177:EEE 
?	> 
3	2
 
?	>s   7D <:D 
D
Dc                    U R                   n[        R                  " 5        S3n[        / SQ/ SQS.5      nUR                  R                  SS9nSU SU 3nUR                  XaS	9  [        US
US9n[        R                  " Xt5        g )Nr   )r$   r%   r&   )r%         )rk   yro   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>   rq   uriresults           r   test_styler_to_s3r   B  s     (,,ZZ\N%(K	3	4BXX  g .F"#1[M
2C
OOCO.q$?F&%r   merge_cells)TFrM   c                 <   [        SSS/0[        R                  " [        SSSS9SS	//S
S/S9S9n[	        XS9nUR                  5       nU HM  nUR                  S:w  d  M  UR                  S:X  d  M'  [        UR                  [        5      (       a  MH   S5       e   g )Nr'   r$   r%   z
2006-10-06z
2006-10-07D)startendfreqXYdatecategory)names)ro   )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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_paramsrr   r   r   excel_border_stylesr   r   
single_cpuskip_if_not_us_localer   r   rj   r   r   <module>r      sh       ) )   ' 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   