
    Mh                       S r SSKJr  SSKJrJrJrJr  SSKrSSK	r	SSK
r
SSKJrJrJrJr  SSKrSSKrSSKJr  SSKJr  SSKJr  SS	KJr  SS
KJrJr  SSKJrJ r J!r!J"r"  SSK#J$s  J%r&  SSK'J(r(  SSK)J*r*  SSK+J,r,J-r-  SSK.J/r/  SSK0J1r1  \(       a  SSK2J3r3J4r4J5r5J6r6  SSKJ7r7   " S S5      r8 " S S\85      r9 " S S5      r: " S S5      r;g)zC
Utilities for conversion to writer-agnostic Excel representation.
    )annotations)HashableIterableMappingSequenceN)TYPE_CHECKINGAnyCallablecast)is_list_like)doc)find_stack_level)missing)is_float	is_scalar)	DataFrameIndex
MultiIndexPeriodIndex)_shared_docs)CSS4_COLORS)CSSResolver
CSSWarning)get_level_lengths)pprint_thing)FilePath
IndexLabelStorageOptionsWriteExcelBufferExcelWriterc                  B    \ rS rSrSr\r   S         SS jjrSrg)	ExcelCell?   rowcolvalstyle
mergestartmergeendNc                L    Xl         X l        X0l        X@l        XPl        X`l        g Nr%   )selfr&   r'   r(   r)   r*   r+   s          I/var/www/html/env/lib/python3.13/site-packages/pandas/io/formats/excel.py__init__ExcelCell.__init__C   s"     
$     )r'   r+   r*   r&   r)   r(   )NNN)
r&   intr'   r3   r*   
int | Noner+   r4   returnNone)__name__
__module____qualname____firstlineno__
__fields__	__slots__r0   __static_attributes__ r2   r/   r#   r#   ?   sQ    IJI !%#!! ! ! ! 
! !r2   r#   c                  L   ^  \ rS rSr                SU 4S jjrSrU =r$ )CssExcelCellT   c	                   > U(       aQ  U(       aJ  XVU4    V
Vs0 s H  u  pU
R                  5       U_M     nn
n[        UR                  5       5      nU" U5      n[        TU ]  " SXWUS.U	D6  g s  snn
f )Nr&   r'   r(   r)   r>   )lower	frozensetitemssuperr0   )r.   r&   r'   r(   r)   
css_stylescss_rowcss_colcss_converterkwargspropdeclaration_dictunique_declarations	__class__s                r/   r0   CssExcelCell.__init__U   s~     - 4>w>N3O 3Oid

c!3O    #,,<,B,B,D"E!"56EJSs%J6J s   A/r>   )r&   r3   r'   r3   r)   dict | NonerH   z3dict[tuple[int, int], list[tuple[str, Any]]] | NonerI   r3   rJ   r3   rK   Callable | Noner5   r6   )r7   r8   r9   r:   r0   r=   __classcell__)rP   s   @r/   r@   r@   T   sf    KK K
 K HK K K 'K 
K Kr2   r@   c                     \ rS rSr% Sr\rSSSSSSS.rSSSSSSSSSSSSSS	.rSSSS
.r	SSSSS.r
S V Vs0 s H  nUR                  5       U_M     snn rS\S'   S0S1S jjr\" 5       r    S2S jr    S2S jrS3S jrS4S jrS5S jrS6S jr    S7S jrS8S jrS9S jrS:S jrS;S jrS<S  jrS=S! jr    S>S" jrS6S# jrS6S$ jr S?S% jr!S@S& jr"S6S' jr#S?S( jr$SAS) jr%SBS* jr&SCS+ jr'SDS, jr(SES- jr)SDS. jr*S/r+gs  snn f )FCSSToExcelConverterm   a  
A callable for converting CSS declarations to ExcelWriter styles

Supports parts of CSS 2.2, with minimal CSS 3.0 support (e.g. text-shadow),
focusing on font styling, backgrounds, borders and alignment.

Operates by first computing CSS styles in a fairly generic
way (see :meth:`compute_css`) then determining Excel style
properties from CSS properties (see :meth:`build_xlstyle`).

Parameters
----------
inherited : str, optional
    CSS declarations understood to be the containing scope for the
    CSS processed by :meth:`__call__`.
topcenterbottom)rX   ztext-topmiddlebaselinerZ   ztext-bottomTF)boldbolder600700800900normallighter100200300400500)rc   italicoblique            )serifz
sans-serifcursivefantasy)
dashedmediumDashDot
dashDotDothairdottedmediumDashDotDotdoubledashDotslantDashDotmediumDashedzdict[str, str] | None	inheritedNc                    Ub  U R                  U5      U l        OS U l        [        R                  " U R                  5      U l        g r-   )compute_cssr}   	functoolscache_call_uncached_call_cached)r.   r}   s     r/   r0   CSSToExcelConverter.__init__   s:     !--i8DN!DN &OOD,?,?@r2   c                $    U R                  U5      $ )a}  
Convert CSS declarations to ExcelWriter style.

Parameters
----------
declarations : str | frozenset[tuple[str, str]]
    CSS string or set of CSS declaration tuples.
    e.g. "font-weight: bold; background: blue" or
    {("font-weight", "bold"), ("background", "blue")}

Returns
-------
xlstyle : dict
    A style as interpreted by ExcelWriter when found in
    ExcelCell.style.
)r   )r.   declarationss     r/   __call__CSSToExcelConverter.__call__   s    &   ..r2   c                Z    U R                  XR                  5      nU R                  U5      $ r-   )r   r}   build_xlstyle)r.   r   
propertiess      r/   r   "CSSToExcelConverter._call_uncached   s)     %%lNNC
!!*--r2   c                   ^ U R                  U5      U R                  U5      U R                  U5      U R                  U5      U R	                  U5      S.nSU4S jjmT" U5        U$ )N)	alignmentborderfillfontnumber_formatc                   > [        U R                  5       5       H6  u  pUc  X	 M  [        U[        5      (       d  M#  T" U5        U(       a  M4  X	 M8     g)z4Remove key where value is None, through nested dictsN)listrF   
isinstancedict)dkvremove_nones      r/   r   6CSSToExcelConverter.build_xlstyle.<locals>.remove_none   sA    QWWY94((N1D (r2   )r   dict[str, str | None]r5   r6   )build_alignmentbuild_border
build_fill
build_fontbuild_number_format)r.   propsoutr   s      @r/   r   !CSSToExcelConverter.build_xlstyle   s`    --e4''.OOE*OOE*!55e<
	! 	C
r2   c                h    UR                  S5      U R                  U5      U R                  U5      S.$ )Nz
text-align)
horizontalvertical	wrap_text)get_get_vertical_alignment_get_is_wrap_textr.   r   s     r/   r   #CSSToExcelConverter.build_alignment   s6      ))L144U;//6
 	
r2   c                j    UR                  S5      nU(       a  U R                  R                  U5      $ g )Nzvertical-align)r   VERTICAL_MAP)r.   r   vertical_aligns      r/   r   +CSSToExcelConverter._get_vertical_alignment  s.    #34$$((88r2   c                J    UR                  S5      c  g [        US   S;  5      $ )Nzwhite-space)nowrapprezpre-line)r   boolr   s     r/   r   %CSSToExcelConverter._get_is_wrap_text  s*    99]#+E-(0MMNNr2   c                0   S Vs0 s H  nUU R                  UR                  SU S35      UR                  SU S35      U R                  UR                  SU S35      5      5      U R                  UR                  SU S35      5      S._M     sn$ s  snf )NrX   rightrZ   leftzborder-z-stylez-widthz-color)r)   color)_border_styler   color_to_excel)r.   r   sides      r/   r    CSSToExcelConverter.build_border  s     ;

 ; ++IIvV45IIvV45''		GD62H(IJ
 ,,UYYf7M-NO  ;

 
	
 

s   BBc                L   Uc  Uc  Uc  g Uc  Uc  gUS;   a  gU R                  U5      nUc  gUS;   a  U$ US:X  a  gUS:X  a  US;   a  ggUS:X  a  US;   a  gg	XR                  ;   a  U R                  U   $ [        R                  " S
[	        U5       3[
        [        5       S9  g)Nnone)r   hidden)Ngrooveridgeinsetoutsetsolidry   rw   )rv   thinrx   rs   r|   zUnhandled border style format: 
stacklevel)_get_width_nameBORDER_STYLE_MAPwarningswarnreprr   r   )r.   r)   widthr   
width_names        r/   r   !CSSToExcelConverter._border_style  s     =U]u}=U]&&))%0
IIHH--%H--!+++((//MM1$u+?+-
 r2   c                P    U R                  U5      nUS:  a  g US:  a  gUS:  a  gg)Ngh㈵>g?r   gffffff@mediumthick)_width_to_float)r.   width_inputr   s      r/   r   #CSSToExcelConverter._get_width_nameV  s3    $$[14<S[S[r2   c                .    Uc  SnU R                  U5      $ )N2pt)_pt_to_float)r.   r   s     r/   r   #CSSToExcelConverter._width_to_float`  s    =E  ''r2   c                f    UR                  S5      (       d   e[        UR                  S5      5      $ )Npt)endswithfloatrstrip)r.   	pt_strings     r/   r    CSSToExcelConverter._pt_to_floate  s/    !!$''''Y%%d+,,r2   c                Z    UR                  S5      nUS;  a  U R                  U5      SS.$ g )Nzbackground-color)Ntransparentr   r   )fgColorpatternType)r   r   )r.   r   
fill_colors      r/   r   CSSToExcelConverter.build_filli  s7     YY12
::#22:>wWW ;r2   c                ~    UR                  S5      n[        U[        5      (       a  UR                  SS5      OUnSU0$ )Nznumber-format   §;format_code)r   r   strreplace)r.   r   fcs      r/   r   'CSSToExcelConverter.build_number_formatp  s9    YY'&0S&9&9RZZc"rr""r2   c                p   U R                  U5      nU R                  U5      nU(       a  US   OS U R                  U5      U R                  U5      U R	                  U5      U R                  U5      SU;   a  SOS SU;   =(       d    S U R                  UR                  S5      5      U R                  U5      S.	$ )Nr   	underlinesinglezline-throughr   )	namefamilysizer]   rj   r   striker   shadow)	_get_font_names_get_decoration_select_font_family_get_font_size_get_is_bold_get_is_italicr   r   _get_shadow)r.   r   
font_names
decorations       r/   r   CSSToExcelConverter.build_fontu  s     ))%0
))%0
%/JqMT..z:''.%%e,))%0&1Z&?(T%3<((7);<&&u-
 	
r2   c                j    UR                  S5      nU(       a  U R                  R                  U5      $ g )Nzfont-weight)r   BOLD_MAP)r.   r   weights      r/   r    CSSToExcelConverter._get_is_bold  s+    =)==$$V,,r2   c                j    UR                  S5      nU(       a  U R                  R                  U5      $ g )Nz
font-style)r   
ITALIC_MAP)r.   r   
font_styles      r/   r   "CSSToExcelConverter._get_is_italic  s+    YY|,
??&&z22r2   c                L    UR                  S5      nUb  UR                  5       $ g)Nztext-decorationr>   )r   split)r.   r   r  s      r/   r   #CSSToExcelConverter._get_decoration  s)    YY01
!##%%r2   c                    SU;   a  gg )Nr   r   r>   )r.   r  s     r/   _get_underline"CSSToExcelConverter._get_underline  s    *$r2   c                V    SU;   a#  [        [        R                  " SUS   5      5      $ g )Nztext-shadowz^[^#(]*[1-9])r   researchr   s     r/   r   CSSToExcelConverter._get_shadow  s(    E!		.%2FGHHr2   c                :   [         R                  " SUR                  SS5      5      n/ nU Hk  nUS S S:X  a  USS R                  SS5      nO/US S S:X  a  USS R                  S	S5      nOUR	                  5       nU(       d  MZ  UR                  U5        Mm     U$ )
Nz(?x)
            (
            "(?:[^"]|\\")+"
            |
            '(?:[^']|\\')+'
            |
            [^'",]+
            )(?=,|\s*$)
        zfont-family rl   "z\"'z\')r  findallr   r   stripappend)r.   r   font_names_tmpr  r   s        r/   r   #CSSToExcelConverter._get_font_names  s     IImR(
 
"DBQx3Abz))%5bqSAbz))%5zz|t!!$' # r2   c                P    UR                  S5      nUc  U$ U R                  U5      $ )Nz	font-size)r   r   )r.   r   r   s      r/   r   "CSSToExcelConverter._get_font_size  s+    yy%<K  &&r2   c                f    S nU H(  nU R                   R                  U5      nU(       d  M'    U$    U$ r-   )
FAMILY_MAPr   )r.   r  r   r   s       r/   r   'CSSToExcelConverter._select_font_family  s9    D__((.Fv 
 r2   c                    Uc  g U R                  U5      (       a  U R                  U5      $  U R                  U   $ ! [         a1    [        R
                  " S[        U5       3[        [        5       S9   g f = f)NzUnhandled color format: r   )	_is_hex_color_convert_hex_to_excelNAMED_COLORSKeyErrorr   r   r   r   r   r.   r(   s     r/   r   "CSSToExcelConverter.color_to_excel  sy    ;c""--c22	$$S)) 	MM*49+6+-
 	s   < 8A76A7c                6    [        UR                  S5      5      $ )N#)r   
startswith)r.   color_strings     r/   r&  !CSSToExcelConverter._is_hex_color  s    L++C011r2   c                    UR                  S5      nU R                  U5      (       a(  US   S-  US   S-  -   US   S-  -   R                  5       $ UR                  5       $ )Nr-  r   rm   rl   )lstrip_is_shorthand_colorupperr.   r/  codes      r/   r'  )CSSToExcelConverter._convert_hex_to_excel  s`    ""3'##L11GaK$q'A+-Q!;BBDD::<r2   c                    UR                  S5      n[        U5      S:X  a  g[        U5      S:X  a  g[        SU 35      e)zSCheck if color code is shorthand.

#FFF is a shorthand as opposed to full #FFFFFF.
r-     T   FzUnexpected color )r2  len
ValueErrorr5  s      r/   r3  'CSSToExcelConverter._is_shorthand_color  sC    
 ""3't9>Y!^0?@@r2   )r   r}   r-   )r}   
str | Noner5   r6   )r   z str | frozenset[tuple[str, str]]r5   dict[str, dict[str, str]])r   Mapping[str, str]r5   r?  )r   r@  r5   zdict[str, bool | str | None])r   r@  r5   r>  )r   r@  r5   zbool | None)r   r@  r5   z dict[str, dict[str, str | None]])r)   r>  r   r>  r   r>  )r   r>  r5   r>  )r   r>  r5   r   )r   r   r5   r   )r   r@  )r   r@  r5   r   )r   r@  r5   z$dict[str, bool | float | str | None])r   r@  r5   Sequence[str])r  rA  r5   r>  )r   r@  r5   zfloat | None)r  rA  r5   r4   )r(   r>  r5   r>  )r/  r   r5   r   )r/  r   r5   r   ),r7   r8   r9   r:   __doc__r   r(  r   r  r	  r#  rD   r   __annotations__r0   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r&  r'  r3  r=   ).0r)   s   00r/   rV   rV   m   s   " L L H" J 	J

E 	u
( %$A -K/</	"/*.<.	".0
O

&
	)
5n(
-X#

&
	-
$

4'"2 AA
s   C>rV   c                  :   \ rS rSrSrSrSr         S                   SS jjr\SS j5       r	S r
SS	 jrSS
 jrSS jrSS jrSS jrSS jr\SS j5       rSS jrSS jr\" \S   S9       S                 SS jj5       rSrg)ExcelFormatteri  a  
Class for formatting a DataFrame to a list of ExcelCells,

Parameters
----------
df : DataFrame or Styler
na_rep: na representation
float_format : str, default None
    Format string for floating point numbers
cols : sequence, optional
    Columns to write
header : bool or sequence of str, default True
    Write out column names. If a list of string is given it is
    assumed to be aliases for the column names
index : bool, default True
    output row names (index)
index_label : str or sequence, default None
    Column label for index column(s) if desired. If None is given, and
    `header` and `index` are True, then the index names are used. A
    sequence should be given if the DataFrame uses MultiIndex.
merge_cells : bool, default False
    Format MultiIndex and Hierarchical Rows as merged cells.
inf_rep : str, default `'inf'`
    representation for np.inf values (which aren't representable in Excel)
    A `'-'` sign will be added in front of -inf.
style_converter : callable, optional
    This translates Styler styles (CSS) into ExcelWriter styles.
    Defaults to ``CSSToExcelConverter()``.
    It should have signature css_declarations string -> excel style.
    This is only called for body cells.
i   i @  Nc                   SU l         X l        [        U[        5      (       d@  Xl        U R                  R                  5         UR                  nU
c
  [        5       n
Xl        OS U l        S U l        Xl	        Ub  [        [        U5      R                  UR                  5      5      (       d  [        S5      e[        [        U5      R                  UR                  5      5      [        [        U5      5      :w  a  [        S5      eUR!                  US9U l	        U R                  R                  U l        X0l        X`l        Xpl        XPl        Xl        Xl        g )Nr   z,passes columns are not ALL present dataframez.Not all names specified in 'columns' are found)columns)
rowcounterna_repr   r   styler_computedatarV   style_converterdfr;  r   intersectionrH  r)  setreindexfloat_formatindexindex_labelheadermerge_cellsinf_rep)r.   rO  rJ  rS  colsrV  rT  rU  rW  rX  rN  s              r/   r0   ExcelFormatter.__init__  s	    "i((KKK  "B&"5"74C DK#'D uT{//

;<<MNN5;++BJJ78CD	NJOPPjjj.DGww(
&&r2   c                "    SS0SSSSS.SSS.S.$ )	Nr]   Tr   r   rY   rX   )r   r   )r   bordersr   r>   r.   s    r/   header_styleExcelFormatter.header_styleG  s0     TN 	 )1eD	
 		
r2   c                   [        U5      (       a(  [        R                  " U5      (       a  U R                  nO[	        U5      (       ax  [        R
                  " U5      (       a  U R                  nOP[        R                  " U5      (       a  SU R                   3nO%U R                  b  [        U R                  U-  5      n[        USS 5      b  [        S5      eU$ )N-tzinfoz{Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.)r   r   isnarJ  r   isposinf_scalarrX  isneginf_scalarrS  r   getattrr<  r*  s     r/   _format_valueExcelFormatter._format_valueT  s    S>>gll3//++Cc]]&&s++ll((--$,,("".D--343$'3@ 
 
r2   c              #    #    U R                   R                  S:  a  U R                  (       d  [        S5      eU R                  (       d  U R
                  (       d  g U R                   nUR                  U R                  SS9n[        U5      nSnSnU R                  (       aN  [        U R                  R                  [        5      (       a%  [        U R                  R                  S   5      S-
  nU R                  (       a  [        UR                  5       H  u  pV[        UUUU R                   S9v   M     [        [#        X1R$                  UR&                  5      5       H  u  nu  pxn	UR)                  U	5      n
UR+                  5        H[  u  pSu  pUS:  a  XTU-   U-   p[-        UXK-   S-   X   U R                   [/        U R0                  SS 5      UUU R2                  UUS	9
v   M]     M     Oy[        [#        U6 5       Hd  u  pS
R5                  [7        [8        U
5      5      n[-        UXK-   S-   UU R                   [/        U R0                  SS 5      UUU R2                  S9v   Mf     XPl        g 7f)Nrl   z]Writing to Excel with MultiIndex columns and no index ('index'=False) is not yet implemented.Fsparsifyinclude_namesr   rC   NNctx_columns
r&   r'   r(   r)   rH   rI   rJ   rK   r*   r+   .r&   r'   r(   r)   rH   rI   rJ   rK   )rH  nlevelsrT  NotImplementedError_has_aliasesrV  _format_multirW  r   r   rO  r   r;  	enumeratenamesr#   r^  ziplevelscodestakerF   r@   rf  rK  rN  joinmapr   rI  )r.   rH  
level_strslevel_lengths	coloffsetlnumr   spansry  level_codesvaluesispan_valr*   r+   r   s                   r/   _format_header_mi ExcelFormatter._format_header_mif  s+    <<!#::)D 
 !!T[[,,**%%U + 

 **5	::*TWW]]J??DGGMM!,-1I'6
!++	  7 7@M>>7==A722uk  [1#(;;=KA+5(J!|/3]X5MH& %MA-"I"//#*4;;t#L $ !&*&:&:#-!) 	 $1	7, 'sJ'78	HHSv67"!)++&t{{M4H "&"6"6	 	 9 s   I,I.c              #  0  #    U R                   (       d  U R                  (       Gao  SnU R                  (       aT  Sn[        U R                  R                  [
        5      (       a)  [        U R                  R                  R                  5      nU R                  nU R                   (       a  [        [        U R                  5      U l        [        U R                  5      [        U R                  5      :w  a8  [        S[        U R                  5       S[        U R                  5       S35      eU R                  n[        U5       HL  u  p4[        U R                  X1-   UU R                  [!        U R"                  SS 5      SUU R$                  S9v   MN     g g 7f)Nr   rl   zWriting z cols but got z aliasesrn  rq  )rt  rV  rT  r   rO  r   r;  rw  rH  r   r   r<  rv  r@   rI  r^  rf  rK  rN  )r.   r  colnamescolindexcolnames        r/   _format_header_regular%ExcelFormatter._format_header_regular  s2    Izz	dggmmZ88 #DGGMM$7$7 8I||H  "8T[[9t{{#s4<<'88$"3t||#4"5 6##&t{{#3"4H>   ;;%.x%8!" ,++&t{{M4H$"&"6"6	 	 &9% !,s   FFc                B  ^  [        T R                  [        5      (       a  T R                  5       nOT R	                  5       nSnT R
                  R                  R                  (       a  T R
                  R                  R                   Vs/ s H	  o3b  UOSPM     snS/[        T R                  5      -  -   n[        R                  " S S U 5       5      (       a*  U 4S j[        U5       5       nT =R                  S-  sl        [        R                  " X5      $ s  snf )Nr>   r  c                    U =(       a    U$ r-   r>   )xys     r/   <lambda>/ExcelFormatter._format_header.<locals>.<lambda>  s
    QW1Wr2   c              3  *   #    U  H	  oS :g  v   M     g7f)r  Nr>   )rD  r  s     r/   	<genexpr>0ExcelFormatter._format_header.<locals>.<genexpr>  s     6L1Bws   c              3  j   >#    U  H(  u  p[        TR                  XTR                  5      v   M*     g 7fr-   )r#   rI  r^  )rD  r  r(   r.   s      r/   r  r    s0      )7 dooxd>O>OPP)7s   03rl   )r   rH  r   r  r  rO  rT  rw  r;  r   reducerv  rI  	itertoolschain)r.   gengen2r  r&   s   `    r/   _format_headerExcelFormatter._format_header  s     dllJ//((*C--/C$&77==7;ww}}7J7JK7J!12-7JKODLL!O" "C  46L6LMM)23 1$s)) Ls   Dc                    [        U R                  R                  [        5      (       a  U R	                  5       $ U R                  5       $ r-   )r   rO  rT  r   _format_hierarchical_rows_format_regular_rowsr]  s    r/   _format_bodyExcelFormatter._format_body  s5    dggmmZ001133,,..r2   c              #    #    U R                   (       d  U R                  (       a  U =R                  S-  sl        U R                  (       Ga  U R                  (       aI  [        U R                  [        [        [        R                  [        45      (       a  U R                  S   nO`U R                  (       a,  [        U R                  [        5      (       a  U R                  nO#U R                  R                  R                  S   n[        U R                  [        5      (       a  U =R                  S-  sl        U(       a5  U R                  SLa&  [!        U R                  S-
  SXR"                  5      v   U R                  R                  n[        U R                  R                  [$        5      (       a$  U R                  R                  R'                  5       n[)        U5       HM  u  p4[+        U R                  U-   SUU R"                  [-        U R.                  SS 5      USU R0                  S9v   MO     SnOSnU R3                  U5       S h  vN   g  N7f)Nrl   r   F	ctx_indexrq  )rt  rV  rI  rT  rU  r   r   tuplenpndarrayr   r   rO  rw  rH  r   r#   r^  r   to_timestamprv  r@   rf  rK  rN  _generate_body)r.   rU  index_valuesidxidxvalr  s         r/   r  #ExcelFormatter._format_regular_rows  s    OOq O ::: J  4

E"B% % #..q1!!j1A1A3&G&G".."ggmm11!4$,,
331$t{{%7! 3QEVEVWW  77==L$''--55#ww}}99;(6"#-++&t{{KF"&"6"6	 	  7 II&&y111s   IIIIc              #    #    U R                   (       d  U R                  (       a  U =R                  S-  sl        SnU R                  (       Ga  U R                  R                  R
                  nU R                  (       aE  [        U R                  [        [        [        R                  [        45      (       a  U R                  n[        U R                  [        5      (       a&  U R                  (       a  U =R                  S-  sl        [         R"                  " U6 (       aI  U R                  SLa:  [%        U5       H+  u  p4['        U R                  S-
  X4U R(                  5      v   M-     U R                  (       Ga2  U R                  R                  R+                  SSS9n[-        U5      n[/        X`R                  R                  R0                  U R                  R                  R2                  5       H  u  pxn	UR5                  U	UR6                  UR8                  S9n
UR;                  5        Hr  u  pSu  pUS:  a  U R                  U-   U-   S-
  nUn[=        U R                  U-   UX   U R(                  [?        U R@                  SS 5      UUU RB                  UUS	9
v   Mt     US-  nM     O[/        U R                  R                  6  He  n[%        U5       HN  u  nn[=        U R                  U-   UUU R(                  [?        U R@                  SS 5      UUU RB                  S
9v   MP     US-  nMg     U RE                  U5       S h  vN   g  N7f)Nrl   r   FTrj  )
allow_fill
fill_valuerm  r  ro  rq  )#rt  rV  rI  rT  rO  rw  rU  r   r   r  r  r  r   rH  r   rW  comany_not_nonerv  r#   r^  ru  r   rx  ry  rz  r{  _can_hold_na	_na_valuerF   r@   rf  rK  rN  r  )r.   gcolidxindex_labelscidxr   r~  r  r  ry  r  r  r  r  r*   r+   indexcolvalsr  indexcolvals                     r/   r  (ExcelFormatter._format_hierarchical_rows  s    OOq O:::77==..LJ  4

E"B% %  $// $,,
338H8H1$ .4;;e3K"+L"9JD#DOOa$7TEVEVWW #: !WW]]88! 9 
 !2* =25!77==#7#79L9L3.E; $[[##)#6#6#)#3#3 ) F (-{{}/9,
#a<)-1)<x)G!)KJ'.H* $! 3 ' &	"&"3"3'.t{{K'N$%$+*.*>*>'1%-  (5" qLG53< %($7L,5l,C([* $# 5 ' +"&"3"3'.t{{K'N$'$+*.*>*>	 	 -D qLG %8 &&w///s   MMMMc                ,    [        U R                  5      $ )z1Whether the aliases for column names are present.)r   rV  r]  s    r/   rt  ExcelFormatter._has_aliasesc  s     DKK((r2   c              #  8  #    [        [        U R                  5      5       Ht  nU R                  R                  S S 2U4   n[        U5       HE  u  pE[        U R                  U-   X!-   US [        U R                  SS 5      UUU R                  S9v   MG     Mv     g 7f)Nctxrq  )ranger;  rH  rO  ilocrv  r@   rI  rf  rK  rN  )r.   r  colidxseriesr  r(   s         r/   r  ExcelFormatter._generate_bodyh  s     C-.FWW\\!V),F#F+"!+*&t{{E4@""&"6"6	 	 , /s   BBc              #     #    [         R                  " U R                  5       U R                  5       5       H'  nU R	                  UR
                  5      Ul        Uv   M)     g 7fr-   )r  r  r  r  rg  r(   )r.   cells     r/   get_formatted_cells"ExcelFormatter.get_formatted_cellsx  sH     OOD$7$7$94;L;L;NOD))$((3DHJ Ps   A A"storage_options)r  c	           
        SSK Jn	  U R                  R                  u  pXR                  :  d  XR
                  :  a+  [        SU
 SU SU R                   SU R
                   35      eUc  0 nU R                  5       n[        X5      (       a  SnOU	" UUUUS9nS	n UR                  UUUUUS
9  U(       a  UR                  5         gg! U(       a  UR                  5         f f = f)a  
writer : path-like, file-like, or ExcelWriter object
    File path or existing ExcelWriter
sheet_name : str, default 'Sheet1'
    Name of sheet which will contain DataFrame
startrow :
    upper left cell row to dump data frame
startcol :
    upper left cell column to dump data frame
freeze_panes : tuple of integer (length 2), default None
    Specifies the one-based bottommost row and rightmost column that
    is to be frozen
engine : string, default None
    write engine to use if writer is a path - you can also set this
    via the options ``io.excel.xlsx.writer``,
    or ``io.excel.xlsm.writer``.

{storage_options}

engine_kwargs: dict, optional
    Arbitrary keyword arguments passed to excel engine.
r   r    z-This sheet is too large! Your sheet size is: z, z Max sheet size is: NF)enginer  engine_kwargsT)startrowstartcolfreeze_panes)pandas.io.excelr!   rO  shapemax_rowsmax_colsr<  r  r   _write_cellsclose)r.   writer
sheet_namer  r  r  r  r  r  r!   num_rowsnum_colsformatted_cells	need_saves                 r/   writeExcelFormatter.write}  s    D 	0!WW]]mm#x--'??zH: V&&*mm_Bt}}oG 
  M224f**I  /+	F I	!!)     y s   C C")rH  rO  rS  rV  rT  rU  rX  rW  rJ  rI  rN  rK  )	r  NNTTNFinfN)rJ  r   rS  r>  rY  zSequence[Hashable] | NonerV  zSequence[Hashable] | boolrT  r   rU  zIndexLabel | NonerW  r   rX  r   rN  rS   r5   r6   )r5   z dict[str, dict[str, str | bool]])r5   Iterable[ExcelCell])r5   r   )r  r3   r5   r  )Sheet1r   r   NNNN)r  z)FilePath | WriteExcelBuffer | ExcelWriterr  r   r  r3   r  r3   r  ztuple[int, int] | Noner  r>  r  zStorageOptions | Noner  rR   r5   r6   )r7   r8   r9   r:   rB  r  r  r0   propertyr^  rg  r  r  r  r  r  r  rt  r  r  r   r   r  r=   r>   r2   r/   rF  rF    s   @ HH
 #'*.,0)-!+/+ + !	+
 (+ *+ + '+ + + )+ 
+Z 

 

$CJ>*,/,2\M0^ ) ) 
 	&789 #/3!15%)D9D D 	D
 D -D D /D #D 
D :Dr2   rF  )<rB  
__future__r   collections.abcr   r   r   r   r   r  r  typingr   r	   r
   r   r   numpyr  pandas._libs.libr   pandas.util._decoratorsr   pandas.util._exceptionsr   pandas.core.dtypesr   pandas.core.dtypes.commonr   r   pandasr   r   r   r   pandas.core.commoncorecommonr  pandas.core.shared_docsr   pandas.io.formats._color_datar   pandas.io.formats.cssr   r   pandas.io.formats.formatr   pandas.io.formats.printingr   pandas._typingr   r   r   r   r!   r#   r@   rV   rF  r>   r2   r/   <module>r     s    #    	    ) ' 4 &
  !   0 5 7 3  #! !*K9 K2FA FARL Lr2   