Ë
    ¤ehâ€  ã                  ó�  — d Z ddlmZ ddlmZmZmZmZ ddlZddl	Z	ddl
Z
ddlmZmZmZmZ ddlZddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZm Z m!Z!m"Z" ddl#m$c m%Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 erddl2m3Z3m4Z4m5Z5m6Z6 ddlm7Z7  G d„ d«      Z8 G d„ de8«      Z9 G d„ d«      Z: G d„ d«      Z;y)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                  ó6   — e Zd ZdZeZ	 	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)Ú	ExcelCell©ÚrowÚcolÚvalÚstyleÚ
mergestartÚmergeendNc                óX   — || _         || _        || _        || _        || _        || _        y ©Nr$   )Úselfr%   r&   r'   r(   r)   r*   s          úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/io/formats/excel.pyÚ__init__zExcelCell.__init__C   s.   € ð ˆŒØˆŒØˆŒØˆŒ
Ø$ˆŒØ ˆ�ó    )NNN)
r%   Úintr&   r1   r)   ú
int | Noner*   r2   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú
__fields__Ú	__slots__r/   © r0   r.   r#   r#   ?   sL   „ ØI€JØ€Ið Ø!%Ø#ð!àð!ð ð!ð ð!ð ð!ð 
ô!r0   r#   c                  ó@   ‡ — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚCssExcelCellc	                óÔ   •— |rK|rI|||f   D �
�ci c]  \  }
}|
j                  «       |“Œ }}
}t        |j                  «       «      } ||«      }t        ‰| �  d|||dœ|	¤Ž y c c}}
w )N©r%   r&   r'   r(   r:   )ÚlowerÚ	frozensetÚitemsÚsuperr/   )r-   r%   r&   r'   r(   Ú
css_stylesÚcss_rowÚcss_colÚcss_converterÚkwargsÚpropÚdeclaration_dictÚunique_declarationsÚ	__class__s                €r.   r/   zCssExcelCell.__init__U   s‚   ø€ ñ ™-ð 4>¸gÀwÐ>NÑ3O÷ Ù&/ d¨C�—
‘
“˜cÑ!ð Ðñ  ô #,Ð,<×,BÑ,BÓ,DÓ"EÐÙ!Ð"5Ó6ˆEä‰ÑÐJ˜S c¨s¸%ÑJÀ6ÓJùó s   �A$)r%   r1   r&   r1   r(   údict | NonerC   z3dict[tuple[int, int], list[tuple[str, Any]]] | NonerD   r1   rE   r1   rF   úCallable | Noner3   r4   )r5   r6   r7   r/   Ú__classcell__)rK   s   @r.   r<   r<   T   sf   ø„ ðKàðKð ðKð
 ðKð HðKð ðKð ðKð 'ðKð 
÷Kñ Kr0   r<   c                  óÂ  — e Zd ZU dZeZdddddddœZddddddddddddddœZdddd	œZd
ddddœZ	dD � �ci c]  }|j                  «       |“Œ c}} Zded<   d.d/d„Z e«       Z	 	 	 	 d0d„Z	 	 	 	 d0d„Zd1d„Zd2d„Zd3d„Zd4d„Z	 	 	 	 d5d„Zd6d„Zd7d„Zd8d„Zd9d„Zd:d„Zd;d „Z	 	 	 	 d<d!„Zd4d"„Zd4d#„Zd=d$„Z d>d%„Z!d4d&„Z"d=d'„Z#d?d(„Z$d@d)„Z%dAd*„Z&dBd+„Z'dCd,„Z(dBd-„Z)yc c}} w )DÚCSSToExcelConverteraK  
    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)rQ   ztext-topÚmiddleÚbaselinerS   ztext-bottomTF)ÚboldÚbolderÚ600Ú700Ú800Ú900ÚnormalÚlighterÚ100Ú200Ú300Ú400Ú500)r\   ÚitalicÚobliqueé   é   é   é   )Úserifz
sans-serifÚcursiveÚfantasy)
ÚdashedÚmediumDashDotÚ
dashDotDotÚhairÚdottedÚmediumDashDotDotÚdoubleÚdashDotÚslantDashDotÚmediumDashedzdict[str, str] | NoneÚ	inheritedNc                óŒ   — |�| j                  |«      | _        nd | _        t        j                  | j                  «      | _        y r,   )Úcompute_cssrv   Ú	functoolsÚcacheÚ_call_uncachedÚ_call_cached)r-   rv   s     r.   r/   zCSSToExcelConverter.__init__¾   s:   € ØÐ Ø!×-Ñ-¨iÓ8ˆD�Nà!ˆDŒNô &ŸO™O¨D×,?Ñ,?Ó@ˆÕr0   c                ó$   — | j                  |«      S )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__zCSSToExcelConverter.__call__Ê   s   € ð& × Ñ  Ó.Ð.r0   c                ó\   — | j                  || j                  «      }| j                  |«      S r,   )rx   rv   Úbuild_xlstyle)r-   r~   Ú
propertiess      r.   r{   z"CSSToExcelConverter._call_uncachedß   s+   € ð ×%Ñ% l°D·N±NÓCˆ
Ø×!Ñ! *Ó-Ð-r0   c                óÊ   ‡— | j                  |«      | j                  |«      | j                  |«      | j                  |«      | j	                  |«      dœ}dˆfd„Š ‰|«       |S )N)Ú	alignmentÚborderÚfillÚfontÚnumber_formatc                ó’   •— t        | j                  «       «      D ]*  \  }}|€| |= Œt        |t        «      sŒ ‰|«       |rŒ(| |= Œ, y)z4Remove key where value is None, through nested dictsN)ÚlistrA   Ú
isinstanceÚdict)ÚdÚkÚvÚremove_nones      €r.   r�   z6CSSToExcelConverter.build_xlstyle.<locals>.remove_noneð   sG   ø€ ä˜QŸW™W›Y›ò !‘��1Ø�9Ø˜!™Ü ¤4Õ(Ù ”NÚØ˜a™Dñ!r0   )r�   údict[str, str | None]r3   r4   )Úbuild_alignmentÚbuild_borderÚ
build_fillÚ
build_fontÚbuild_number_format)r-   ÚpropsÚoutr�   s      @r.   r�   z!CSSToExcelConverter.build_xlstyleå   s`   ø€ à×-Ñ-¨eÓ4Ø×'Ñ'¨Ó.Ø—O‘O EÓ*Ø—O‘O EÓ*Ø!×5Ñ5°eÓ<ñ
ˆõ	!ñ 	�CÔØˆ
r0   c                óh   — |j                  d«      | j                  |«      | j                  |«      dœS )Nz
text-align)Ú
horizontalÚverticalÚ	wrap_text)ÚgetÚ_get_vertical_alignmentÚ_get_is_wrap_text©r-   r—   s     r.   r’   z#CSSToExcelConverter.build_alignmentý   s6   € ð  Ÿ)™) LÓ1Ø×4Ñ4°UÓ;Ø×/Ñ/°Ó6ñ
ð 	
r0   c                ó`   — |j                  d«      }|r| j                  j                  |«      S y )Nzvertical-align)r�   ÚVERTICAL_MAP)r-   r—   Úvertical_aligns      r.   rž   z+CSSToExcelConverter._get_vertical_alignment  s.   € ØŸ™Ð#3Ó4ˆÙØ×$Ñ$×(Ñ(¨Ó8Ð8Ør0   c                óF   — |j                  d«      €y t        |d   dv«      S )Nzwhite-space)ÚnowrapÚprezpre-line)r�   Úboolr    s     r.   rŸ   z%CSSToExcelConverter._get_is_wrap_text  s*   € Ø�9‰9�]Ó#Ð+ØÜ�E˜-Ñ(Ð0MÐMÓNÐNr0   c                ó*  — dD �ci c]ƒ  }|| j                  |j                  d|› d�«      |j                  d|› d�«      | j                  |j                  d|› d�«      «      «      | j                  |j                  d|› d�«      «      dœ“Œ… c}S c c}w )N©rQ   ÚrightrS   Úleftzborder-z-stylez-widthz-color)r(   Úcolor)Ú_border_styler�   Úcolor_to_excel)r-   r—   Úsides      r.   r“   z CSSToExcelConverter.build_border  sª   € ð ;ö

ð ð Ø×+Ñ+Ø—I‘I ¨ v¨VÐ4Ó5Ø—I‘I ¨ v¨VÐ4Ó5Ø×'Ñ'¨¯	©	°G¸D¸6ÀÐ2HÓ(IÓJóð
 ×,Ñ,¨U¯Y©Y¸ÀÀÀfÐ7MÓ-NÓOññ ò

ð 
	
ùò 

s   …BBc                ó,  — |€|€|€y |€|€y|dv ry| j                  |«      }|€y|dv r|S |dk(  ry|dk(  r|dv ryy|dk(  r|dv ryy	|| j                  v r| j                  |   S t        j                  d
t	        |«      › �t
        t        «       ¬«       y)NÚnone)r±   Úhidden)NÚgrooveÚridgeÚinsetÚoutsetÚsolidrr   rp   )ro   Úthinrq   rl   ru   zUnhandled border style format: ©Ú
stacklevel)Ú_get_width_nameÚBORDER_STYLE_MAPÚwarningsÚwarnÚreprr   r   )r-   r(   Úwidthr¬   Ú
width_names        r.   r­   z!CSSToExcelConverter._border_style  sÔ   € ð ˆ=˜U˜]¨u¨}ààˆ=˜U˜]ààÐ&Ñ&Øà×)Ñ)¨%Ó0ˆ
ØÐØàÐIÑIàÐà�HÒØØ�HÒØÐ-Ñ-ØØ%Ø�HÒØÐ-Ñ-ØØ!Ø�d×+Ñ+Ñ+à×(Ñ(¨Ñ/Ð/ä�M‰MØ1´$°u³+°Ð?ÜÜ+Ó-õð
 r0   c                óJ   — | j                  |«      }|dk  ry |dk  ry|dk  ryy)Ngñhãˆµøä>gÍÌÌÌÌÌô?r¸   gffffff@ÚmediumÚthick)Ú_width_to_float)r-   Úwidth_inputrÀ   s      r.   r»   z#CSSToExcelConverter._get_width_nameV  s3   € Ø×$Ñ$ [Ó1ˆØ�4Š<ØØ�SŠ[ØØ�SŠ[ØØr0   c                ó,   — |€d}| j                  |«      S )NÚ2pt)Ú_pt_to_float)r-   rÀ   s     r.   rÅ   z#CSSToExcelConverter._width_to_float`  s   € Øˆ=ØˆEØ× Ñ  Ó'Ð'r0   c                ó\   — |j                  d«      sJ ‚t        |j                  d«      «      S )NÚpt)ÚendswithÚfloatÚrstrip)r-   Ú	pt_strings     r.   rÉ   z CSSToExcelConverter._pt_to_floate  s,   € Ø×!Ñ! $Ô'Ð'Ð'Ü�Y×%Ñ% dÓ+Ó,Ð,r0   c                óV   — |j                  d«      }|dvr| j                  |«      ddœS y )Nzbackground-color)NÚtransparentr±   r·   )ÚfgColorÚpatternType)r�   r®   )r-   r—   Ú
fill_colors      r.   r”   zCSSToExcelConverter.build_filli  s7   € ð —Y‘YÐ1Ó2ˆ
ØÐ:Ñ:Ø#×2Ñ2°:Ó>ÈwÑWÐWð ;r0   c                ót   — |j                  d«      }t        |t        «      r|j                  dd«      n|}d|iS )Nznumber-formatõ   Â§ú;Úformat_code)r�   r‹   ÚstrÚreplace)r-   r—   Úfcs      r.   r–   z'CSSToExcelConverter.build_number_formatp  s6   € Ø�Y‰Y�Ó'ˆÜ&0°´SÔ&9ˆR�Z‰Z˜˜cÔ"¸rˆØ˜rÐ"Ð"r0   c                óV  — | j                  |«      }| j                  |«      }|r|d   nd | j                  |«      | j                  |«      | j	                  |«      | j                  |«      d|v rdnd d|v xs d | j                  |j                  d«      «      | j                  |«      dœ	S )Nr   Ú	underlineÚsinglezline-throughr¬   )	ÚnameÚfamilyÚsizerV   rc   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•   zCSSToExcelConverter.build_fontu  s¯   € ð ×)Ñ)¨%Ó0ˆ
Ø×)Ñ)¨%Ó0ˆ
á%/�J˜q’M°TØ×.Ñ.¨zÓ:Ø×'Ñ'¨Ó.Ø×%Ñ% eÓ,Ø×)Ñ)¨%Ó0Ø&1°ZÑ&?™(ÀTØ%¨Ð3Ò<¸Ø×(Ñ(¨¯©°7Ó);Ó<à×&Ñ& uÓ-ñ
ð 	
r0   c                ó`   — |j                  d«      }|r| j                  j                  |«      S y )Nzfont-weight)r�   ÚBOLD_MAP)r-   r—   Úweights      r.   rè   z CSSToExcelConverter._get_is_bold‡  s+   € Ø—‘˜=Ó)ˆÙØ—=‘=×$Ñ$ VÓ,Ð,Ør0   c                ó`   — |j                  d«      }|r| j                  j                  |«      S y )Nz
font-style)r�   Ú
ITALIC_MAP)r-   r—   Ú
font_styles      r.   ré   z"CSSToExcelConverter._get_is_italic�  s+   € Ø—Y‘Y˜|Ó,ˆ
ÙØ—?‘?×&Ñ& zÓ2Ð2Ør0   c                óJ   — |j                  d«      }|�|j                  «       S y)Nztext-decorationr:   )r�   Úsplit)r-   r—   rì   s      r.   rå   z#CSSToExcelConverter._get_decoration“  s)   € Ø—Y‘YÐ0Ó1ˆ
ØÐ!Ø×#Ñ#Ó%Ð%àr0   c                ó   — d|v ryy )NrÝ   rÞ   r:   )r-   rì   s     r.   Ú_get_underlinez"CSSToExcelConverter._get_underlineš  s   € Ø˜*Ñ$ØØr0   c                óP   — d|v r"t        t        j                  d|d   «      «      S y )Nztext-shadowz^[^#(]*[1-9])r§   ÚreÚsearchr    s     r.   rê   zCSSToExcelConverter._get_shadowŸ  s(   € Ø˜EÑ!ÜœŸ	™	 .°%¸Ñ2FÓGÓHÐHØr0   c                ó$  — t        j                  d|j                  dd«      «      }g }|D ]b  }|d d dk(  r|dd j                  dd«      }n.|d d dk(  r|dd j                  d	d«      }n|j	                  «       }|sŒR|j                  |«       Œd |S )
Nz›(?x)
            (
            "(?:[^"]|\\")+"
            |
            '(?:[^']|\\')+'
            |
            [^'",]+
            )(?=,|\s*$)
        zfont-familyÚ re   ú"éÿÿÿÿz\"ú'z\')rø   Úfindallr�   rÚ   ÚstripÚappend)r-   r—   Úfont_names_tmprë   rß   s        r.   rä   z#CSSToExcelConverter._get_font_names¤  s©   € ÜŸ™ðð �I‰I�m RÓ(ó
ˆð ˆ
Ø"ò 	(ˆDØ�B�Qˆx˜3ŠØ˜A˜b�z×)Ñ)¨%°Ó5‘Ø�b�q�˜S’Ø˜A˜b�z×)Ñ)¨%°Ó5‘à—z‘z“|�ÚØ×!Ñ! $Õ'ð	(ð Ðr0   c                óN   — |j                  d«      }|€|S | j                  |«      S )Nz	font-size)r�   rÉ   )r-   r—   rá   s      r.   rç   z"CSSToExcelConverter._get_font_size¾  s+   € Ø�y‰y˜Ó%ˆØˆ<ØˆKØ× Ñ  Ó&Ð&r0   c                óX   — d }|D ]"  }| j                   j                  |«      }|sŒ! |S  |S r,   )Ú
FAMILY_MAPr�   )r-   rë   rà   rß   s       r.   ræ   z'CSSToExcelConverter._select_font_familyÄ  s<   € ØˆØò 	ˆDØ—_‘_×(Ñ(¨Ó.ˆFÚØàˆð	ð
 ˆr0   c                óê   — |€y | j                  |«      r| j                  |«      S 	 | j                  |   S # t        $ r3 t	        j
                  dt        |«      › �t        t        «       ¬«       Y y w xY w)NzUnhandled color format: r¹   )	Ú_is_hex_colorÚ_convert_hex_to_excelÚNAMED_COLORSÚKeyErrorr½   r¾   r¿   r   r   ©r-   r'   s     r.   r®   z"CSSToExcelConverter.color_to_excelÍ  sv   € Øˆ;Øà×Ñ˜cÔ"Ø×-Ñ-¨cÓ2Ð2ð	Ø×$Ñ$ SÑ)Ð)øÜò 	Ü�M‰MØ*¬4°«9¨+Ð6ÜÜ+Ó-öð
 ð	ús   §6 ¶9A2Á1A2c                ó6   — t        |j                  d«      «      S )Nú#)r§   Ú
startswith)r-   Úcolor_strings     r.   r  z!CSSToExcelConverter._is_hex_colorÞ  s   € Ü�L×+Ñ+¨CÓ0Ó1Ð1r0   c                ó¶   — |j                  d«      }| j                  |«      r(|d   dz  |d   dz  z   |d   dz  z   j                  «       S |j                  «       S )Nr  r   rf   re   )ÚlstripÚ_is_shorthand_colorÚupper©r-   r  Úcodes      r.   r  z)CSSToExcelConverter._convert_hex_to_excelá  s]   € Ø×"Ñ" 3Ó'ˆØ×#Ñ# LÔ1Ø˜‘G˜a‘K $ q¡'¨A¡+Ñ-°°Q±¸!±Ñ;×BÑBÓDÐDà—:‘:“<Ðr0   c                ó|   — |j                  d«      }t        |«      dk(  ryt        |«      dk(  ryt        d|› �«      ‚)zcCheck if color code is shorthand.

        #FFF is a shorthand as opposed to full #FFFFFF.
        r  é   Té   FzUnexpected color )r  ÚlenÚ
ValueErrorr  s      r.   r  z'CSSToExcelConverter._is_shorthand_colorè  sC   € ð
 ×"Ñ" 3Ó'ˆÜˆt‹9˜Š>ØÜ�‹Y˜!Š^ØäÐ0°°Ð?Ó@Ð@r0   r,   )rv   ú
str | Noner3   r4   )r~   z str | frozenset[tuple[str, str]]r3   údict[str, dict[str, str]])r—   úMapping[str, str]r3   r  )r—   r  r3   zdict[str, bool | str | None])r—   r  r3   r  )r—   r  r3   zbool | None)r—   r  r3   z dict[str, dict[str, str | None]])r(   r  rÀ   r  r¬   r  )rÆ   r  r3   r  )rÀ   r  r3   rÍ   )rÏ   rÙ   r3   rÍ   )r—   r  )r—   r  r3   r‘   )r—   r  r3   z$dict[str, bool | float | str | None])r—   r  r3   úSequence[str])rì   r  r3   r  )r—   r  r3   zfloat | None)rë   r  r3   r2   )r'   r  r3   r  )r  rÙ   r3   r§   )r  rÙ   r3   rÙ   )*r5   r6   r7   Ú__doc__r   r	  r¢   rî   rñ   r  r?   r¼   Ú__annotations__r/   r   rx   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  )Ú.0r(   s   00r.   rP   rP   m   s‰  … ñð" €Lð ØØØØØñ€Lð ØØØØØØØØØØØØñ€Hð" ØØñ€Jð ØØØñ	€Jð
÷àð 	�‰‹�uÑóÐð( %Ó$ôAñ “-€Kð/Ø<ð/à	"ó/ð*.Ø<ð.à	"ó.óó0
óóOð

Ø&ð
à	)ó
ó5ónó(ó
-óXó#ð

Ø&ð
à	-ó
ó$óóóó
ó
ó4'óóó"2ó ôAùóA
s   µCrP   c                  ó  — e Zd ZdZdZdZ	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zedd„«       Zd„ Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zedd„«       Zdd„Zdd„Z eed   ¬«      	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zy)ÚExcelFormattera9  
    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                ó²  — d| _         || _        t        |t        «      sA|| _        | j                  j                  «        |j                  }|
€
t        «       }
|
| _        nd | _        d | _        || _	        |�œt        t        |«      j                  |j                  «      «      st        d«      ‚t        t        |«      j                  |j                  «      «      t        t        |«      «      k7  rt        d«      ‚|j!                  |¬«      | _	        | j                  j                  | _        || _        || _        || _        || _        || _        |	| _        y )Nr   z,passes columns are not ALL present dataframez.Not all names specified in 'columns' are found)Úcolumns)Ú
rowcounterÚna_repr‹   r   ÚstylerÚ_computeÚdatarP   Ústyle_converterÚdfr  r   Úintersectionr%  r
  ÚsetÚreindexÚfloat_formatÚindexÚindex_labelÚheaderÚmerge_cellsÚinf_rep)r-   r,  r'  r0  Úcolsr3  r1  r2  r4  r5  r+  s              r.   r/   zExcelFormatter.__init__  s  € ð ˆŒØˆŒÜ˜"œiÔ(ØˆDŒKØ�K‰K× Ñ Ô"Ø—‘ˆBØÐ&Ü"5Ó"7�Ø4CˆDÕ àˆDŒKØ#'ˆDÔ ØˆŒØÐä”u˜T“{×/Ñ/°·
±
Ó;Ô<ÜÐMÓNÐNä”5˜“;×+Ñ+¨B¯J©JÓ7Ó8¼CÄÀDÃ	»NÒJäÐOÓPÐPà—j‘j¨�jÓ.ˆDŒGà—w‘w—‘ˆŒØ(ˆÔØˆŒ
Ø&ˆÔØˆŒØ&ˆÔØˆ�r0   c                ó"   — ddidddddœdddœdœS )	NrV   Tr¸   r©   rR   rQ   )rš   r›   )r‡   Úbordersr„   r:   ©r-   s    r.   Úheader_stylezExcelFormatter.header_styleG  s0   € ð ˜T�NàØØ Øñ	ð )1¸eÑDñ	
ð 		
r0   c                ó|  — t        |«      r"t        j                  |«      r| j                  }nvt	        |«      rkt        j
                  |«      r| j                  }nIt        j                  |«      rd| j                  › �}n$| j                  �t        | j                  |z  «      }t        |dd «      �t        d«      ‚|S )Nú-Útzinfoz{Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.)r   r   Úisnar'  r   Úisposinf_scalarr5  Úisneginf_scalarr0  rÍ   Úgetattrr  r  s     r.   Ú_format_valuezExcelFormatter._format_valueT  s£   € Ü�SŒ>œgŸl™l¨3Ô/Ø—+‘+‰CÜ�cŒ]Ü×&Ñ& sÔ+Ø—l‘l‘Ü×(Ñ(¨Ô-Ø˜$Ÿ,™,˜Ð(‘Ø×"Ñ"Ð.Ü˜D×-Ñ-°Ñ3Ó4�Ü�3˜ $Ó'Ð3Üð@óð ð
 ˆ
r0   c              #  óÎ  K  — | j                   j                  dkD  r| j                  st        d«      ‚| j                  s| j
                  sy | j                   }|j                  | j                  d¬«      }t        |«      }d}d}| j                  rIt        | j                  j                  t        «      r%t        | j                  j                  d   «      dz
  }| j                  rüt        |j                  «      D ]   \  }}t        |||| j                   ¬«      –— Œ" t        t#        ||j$                  |j&                  «      «      D ]�  \  }\  }}}	|j)                  |	«      }
|j+                  «       D ]b  \  }}d\  }}|dkD  r
|||z   |z   }}t-        |||z   dz   |
|   | j                   t/        | j0                  dd «      ||| j2                  ||¬	«
      –— Œd Œ‘ || _        y t        t#        |Ž «      D ]h  \  }}
d
j5                  t7        t8        |
«      «      }t-        |||z   dz   || j                   t/        | j0                  dd «      ||| j2                  ¬«      –— Œj || _        y ­w)Nre   z]Writing to Excel with MultiIndex columns and no index ('index'=False) is not yet implemented.F©ÚsparsifyÚinclude_namesr   r>   ©NNÚctx_columns©
r%   r&   r'   r(   rC   rD   rE   rF   r)   r*   ú.©r%   r&   r'   r(   rC   rD   rE   rF   )r%  Únlevelsr1  ÚNotImplementedErrorÚ_has_aliasesr3  Ú_format_multir4  r   r‹   r,  r   r  Ú	enumerateÚnamesr#   r:  ÚzipÚlevelsÚcodesÚtakerA   r<   rA  r(  r+  ÚjoinÚmapr   r&  )r-   r%  Ú
level_strsÚlevel_lengthsÚ	coloffsetÚlnumrß   ÚspansrS  Úlevel_codesÚvaluesÚiÚspan_valr)   r*   r�   s                   r.   Ú_format_header_miz ExcelFormatter._format_header_mif  s_  è ø€ Ø�<‰<×Ñ !Ò#Ø—:’:Ü)ðDóð ð
 ×!Ò! T§[¢[Øà—,‘,ˆØ×*Ñ*Ø×%Ñ%°Uð +ó 
ˆ
ô *¨*Ó5ˆØˆ	Øˆà�:Š:œ* T§W¡W§]¡]´JÔ?Ü˜DŸG™GŸM™M¨!Ñ,Ó-°Ñ1ˆIà×Òä'¨¯©Ó6ò ‘
��dÜØØ!ØØ×+Ñ+ô	ó ðô 7@Ü�M 7§>¡>°7·=±=ÓAó7ò Ñ2�Ñ2�u˜f kð  Ÿ™ [Ó1�Ø#(§;¡;£=ò ‘K�A�xØ+5Ñ(�J Ø !’|Ø/3°YÀ±]ÀXÑ5M H˜
Ü&Ø Ø%¨™M¨AÑ-Ø" 1™IØ"×/Ñ/Ü#*¨4¯;©;¸ÀtÓ#LØ $Ø !Ø&*×&:Ñ&:Ø#-Ø!)ôó ñ	ð	ðF ˆ�ô '¤s¨JÐ'7Ó8ò ‘	��6Ø—H‘HœS¤¨vÓ6Ó7�Ü"ØØ! A™¨Ñ)ØØ×+Ñ+Ü& t§{¡{°MÀ4ÓHØ ØØ"&×"6Ñ"6ô	ó 	ðð ˆ�ùs   ‚I#I%c              #  ó  K  — | j                   s| j                  �rbd}| j                  rOd}t        | j                  j                  t
        «      r)t        | j                  j                  j                  «      }| j                  }| j                   rŽt        t        | j                  «      | _        t        | j                  «      t        | j                  «      k7  r8t        dt        | j                  «      › dt        | j                  «      › d�«      ‚| j                  }t        |«      D ]P  \  }}t        | j                  ||z   || j                  t!        | j"                  dd «      d|| j$                  ¬«      –— ŒR y y ­w)Nr   re   zWriting z cols but got z aliasesrH  rK  )rN  r3  r1  r‹   r,  r   r  rQ  r%  r   r   r  rP  r<   r&  r:  rA  r(  r+  )r-   rZ  ÚcolnamesÚcolindexÚcolnames        r.   Ú_format_header_regularz%ExcelFormatter._format_header_regular«  s7  è ø€ Ø×Ò §£ØˆIà�zŠzØ�	Ü˜dŸg™gŸm™m¬ZÔ8Ü # D§G¡G§M¡M×$7Ñ$7Ó 8�Ià—|‘|ˆHØ× Ò Ü"¤8¨T¯[©[Ó9�”Ü�t—{‘{Ó#¤s¨4¯<©<Ó'8Ò8Ü$Ø"¤3 t§|¡|Ó#4Ð"5ð 6#Ü#& t§{¡{Ó#3Ð"4°Hð>óð ð  Ÿ;™;�ä%.¨xÓ%8ò 
Ñ!�˜'Ü"ØŸ™Ø  9Ñ,ØØ×+Ñ+Ü& t§{¡{°MÀ4ÓHØØ$Ø"&×"6Ñ"6ô	ó 	ñ
ð% !,ùs   ‚E=E?c                ó  ‡ — t        ‰ j                  t        «      r‰ j                  «       }n‰ j	                  «       }d}‰ j
                  j                  j                  r“‰ j
                  j                  j                  D �cg c]  }|�|nd‘Œ
 c}dgt        ‰ j                  «      z  z   }t        j                  d„ d„ |D «       «      r)ˆ fd„t        |«      D «       }‰ xj                  dz  c_        t        j                  ||«      S c c}w )Nr:   rû   c                ó   — | xr |S r,   r:   )ÚxÚys     r.   ú<lambda>z/ExcelFormatter._format_header.<locals>.<lambda>Ø  s
   € ¨QªW°1€ r0   c              3  ó&   K  — | ]	  }|d k7  –— Œ y­w)rû   Nr:   )r!  ri  s     r.   ú	<genexpr>z0ExcelFormatter._format_header.<locals>.<genexpr>Ø  s   è ø€ Ò6LÀ1°q¸BµwÑ6Lùs   ‚c              3  óh   •K  — | ])  \  }}t        ‰j                  ||‰j                  «      –— Œ+ y ­wr,   )r#   r&  r:  )r!  rd  r'   r-   s      €r.   rm  z0ExcelFormatter._format_header.<locals>.<genexpr>Ù  s2   øè ø€ ò á%˜ #ô ˜dŸo™o¨x¸¸d×>OÑ>O×Pñùs   ƒ/2re   )r‹   r%  r   ra  rf  r,  r1  rQ  r  ry   ÚreducerP  r&  Ú	itertoolsÚchain)r-   ÚgenÚgen2ri  r%   s   `    r.   Ú_format_headerzExcelFormatter._format_headerÊ  sß   ø€ ô �d—l‘l¤JÔ/Ø×(Ñ(Ó*‰Cà×-Ñ-Ó/ˆCà$&ˆà�7‰7�=‰=×ÒØ7;·w±w·}±}×7JÑ7JÖK°!˜˜‘1¨2Ñ-ÒKØðOä�D—L‘LÓ!ñO"ñ "ˆCô ×ÑÑ 4Ñ6LÈÔ6LÔMóä)2°3«ô�ð —’ 1Ñ$•Ü�‰˜s DÓ)Ð)ùò Ls   ÂDc                óŠ   — t        | j                  j                  t        «      r| j	                  «       S | j                  «       S r,   )r‹   r,  r1  r   Ú_format_hierarchical_rowsÚ_format_regular_rowsr9  s    r.   Ú_format_bodyzExcelFormatter._format_bodyà  s2   € Ü�d—g‘g—m‘m¤ZÔ0Ø×1Ñ1Ó3Ð3à×,Ñ,Ó.Ð.r0   c              #  óP  K  — | j                   s| j                  r| xj                  dz  c_        | j                  �rË| j                  rDt        | j                  t        t        t        j                  t        f«      r| j                  d   }nV| j                  r't        | j                  t        «      r| j                  }n#| j                  j                  j                  d   }t        | j                  t        «      r| xj                  dz  c_        |r5| j                  dur't!        | j                  dz
  d|| j"                  «      –— | j                  j                  }t        | j                  j                  t$        «      r$| j                  j                  j'                  «       }t)        |«      D ]P  \  }}t+        | j                  |z   d|| j"                  t-        | j.                  dd «      |d| j0                  ¬«      –— ŒR d}nd}| j3                  |«      E d {  –—†  y 7 Œ­w)Nre   r   FÚ	ctx_indexrK  )rN  r3  r&  r1  r2  r‹   rŠ   ÚtupleÚnpÚndarrayr   rÙ   r,  rQ  r%  r   r#   r:  r   Úto_timestamprP  r<   rA  r(  r+  Ú_generate_body)r-   r2  Úindex_valuesÚidxÚidxvalrZ  s         r.   rw  z#ExcelFormatter._format_regular_rowsæ  s£  è ø€ Ø×Ò §¢Ø�OŠO˜qÑ �Oð �:‹:ð ×Ò¤JØ× Ñ ¤4¬´·
±
¼EÐ"Bô%ð #×.Ñ.¨qÑ1‘à×!Ò!¤j°×1AÑ1AÄ3Ô&GØ"×.Ñ.‘à"Ÿg™gŸm™m×1Ñ1°!Ñ4�ä˜$Ÿ,™,¬
Ô3Ø—’ 1Ñ$•á˜tŸ{™{°%Ñ7Ü §¡°!Ñ 3°Q¸ÀT×EVÑEVÓWÒWð  Ÿ7™7Ÿ=™=ˆLÜ˜$Ÿ'™'Ÿ-™-¬Ô5Ø#Ÿw™wŸ}™}×9Ñ9Ó;�ä(¨Ó6ò 
‘��VÜ"ØŸ™¨#Ñ-ØØØ×+Ñ+Ü& t§{¡{°KÀÓFØØØ"&×"6Ñ"6ô	ó 	ð
ð ‰IàˆIà×&Ñ& yÓ1×1Ò1ús   ‚HH&ÈH$ÈH&c              #  óT  K  — | j                   s| j                  r| xj                  dz  c_        d}| j                  �rÍ| j                  j                  j
                  }| j                  r@t        | j                  t        t        t        j                  t        f«      r| j                  }t        | j                  t        «      r!| j                  r| xj                  dz  c_        t!        j"                  |Ž rH| j                  dur:t%        |«      D ],  \  }}t'        | j                  dz
  ||| j(                  «      –— Œ. | j                  �r;| j                  j                  j+                  dd¬«      }t-        |«      }t/        || j                  j                  j0                  | j                  j                  j2                  «      D ]¼  \  }}}	|j5                  |	|j6                  |j8                  ¬«      }
|j;                  «       D ]v  \  }}d\  }}|dkD  r| j                  |z   |z   dz
  }|}t=        | j                  |z   ||
|   | j(                  t?        | j@                  dd «      ||| jB                  ||¬	«
      –— Œx |dz  }Œ¾ n„t/        | j                  j                  Ž D ]e  }t%        |«      D ]P  \  }}t=        | j                  |z   ||| j(                  t?        | j@                  dd «      ||| jB                  ¬
«      –— ŒR |dz  }Œg | jE                  |«      E d {  –—†  y 7 Œ­w)Nre   r   FTrD  )Ú
allow_fillÚ
fill_valuerG  rz  rI  rK  )#rN  r3  r&  r1  r,  rQ  r2  r‹   rŠ   r{  r|  r}  r   r%  r   r4  ÚcomÚany_not_nonerP  r#   r:  rO  r   rR  rS  rT  rU  Ú_can_hold_naÚ	_na_valuerA   r<   rA  r(  r+  r  )r-   ÚgcolidxÚindex_labelsÚcidxrß   rX  rY  r\  rS  r]  r^  r_  r`  r)   r*   Úindexcolvalsr�  Úindexcolvals                     r.   rv  z(ExcelFormatter._format_hierarchical_rows  s×  è ø€ Ø×Ò §¢Ø�OŠO˜qÑ �Oàˆà�:‹:ØŸ7™7Ÿ=™=×.Ñ.ˆLà×Ò¤JØ× Ñ ¤4¬´·
±
¼EÐ"Bô%ð  $×/Ñ/�ô ˜$Ÿ,™,¬
Ô3¸×8HÒ8HØ—’ 1Ñ$•ô ×Ñ Ñ.°4·;±;ÀeÑ3KÜ"+¨LÓ"9ò X‘J�D˜$Ü# D§O¡O°aÑ$7¸¸tÀT×EVÑEVÓWÓWðXð ×Óà!ŸW™WŸ]™]×8Ñ8Ø!°ð 9ó �
ô !2°*Ó =�ä25Ø! 4§7¡7§=¡=×#7Ñ#7¸¿¹¿¹×9LÑ9Ló3ò !Ñ.�E˜6 ;ð $Ÿ[™[Ø#Ø#)×#6Ñ#6Ø#)×#3Ñ#3ð )ó �Fð (-§{¡{£}ò ™˜˜8Ø/9Ñ,˜
 HØ# aš<Ø)-¯©¸1Ñ)<¸xÑ)GÈ!Ñ)K˜JØ'.˜HÜ*Ø $§¡°!Ñ 3Ø 'Ø & q¡	Ø"&×"3Ñ"3Ü'.¨t¯{©{¸KÈÓ'NØ$%Ø$+Ø*.×*>Ñ*>Ø'1Ø%-ôó ðð" ˜q‘L‘Gñ5!ô< %(¨¯©¯©Ð$7ò !�LÜ,5°lÓ,Cò 
Ñ(˜˜[Ü*Ø $§¡°#Ñ 5Ø 'Ø +Ø"&×"3Ñ"3Ü'.¨t¯{©{¸KÈÓ'NØ$'Ø$+Ø*.×*>Ñ*>ô	ó 	ð
ð ˜q‘L‘Gð!ð ×&Ñ& wÓ/×/Ò/ús   ‚LL(Ì L&Ì!L(c                ó,   — t        | j                  «      S )z1Whether the aliases for column names are present.)r   r3  r9  s    r.   rN  zExcelFormatter._has_aliasesc  s   € ô ˜DŸK™KÓ(Ð(r0   c              #  ó:  K  — t        t        | j                  «      «      D ]v  }| j                  j                  d d …|f   }t        |«      D ]I  \  }}t        | j                  |z   ||z   |d t        | j                  dd «      ||| j                  ¬«      –— ŒK Œx y ­w)NÚctxrK  )Úranger  r%  r,  ÚilocrP  r<   r&  rA  r(  r+  )r-   rZ  ÚcolidxÚseriesr_  r'   s         r.   r  zExcelFormatter._generate_bodyh  s—   è ø€ äœC §¡Ó-Ó.ò 	ˆFØ—W‘W—\‘\¢! V )Ñ,ˆFÜ# FÓ+ò 
‘��3Ü"ØŸ™¨!Ñ+Ø Ñ*ØØÜ& t§{¡{°E¸4Ó@ØØ"Ø"&×"6Ñ"6ô	ó 	ñ
ñ	ùs   ‚BBc              #  óÂ   K  — t        j                  | j                  «       | j                  «       «      D ]&  }| j	                  |j
                  «      |_        |–— Œ( y ­wr,   )rp  rq  rt  rx  rB  r'   )r-   Úcells     r.   Úget_formatted_cellsz"ExcelFormatter.get_formatted_cellsx  sM   è ø€ Ü—O‘O D×$7Ñ$7Ó$9¸4×;LÑ;LÓ;NÓOò 	ˆDØ×)Ñ)¨$¯(©(Ó3ˆDŒHØ‹Jñ	ùs   ‚AAÚstorage_options)r™  c	           
     óº  — ddl m}	 | j                  j                  \  }
}|
| j                  kD  s|| j
                  kD  r+t        d|
› d|› d| j                  › d| j
                  › �«      ‚|€i }| j                  «       }t        ||	«      rd}n |	||||¬«      }d	}	 |j                  |||||¬
«       |r|j                  «        yy# |r|j                  «        w w xY w)ab  
        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!   r,  Ú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.   ÚwritezExcelFormatter.write}  sý   € õD 	0à!ŸW™WŸ]™]Ñˆ�(Ø�d—m‘mÒ# x°$·-±-Ò'?ÜØ?À¸zÈÈHÈ:ð V&Ø&*§m¡m _°B°t·}±}°oðGóð ð
 Ð ØˆMà×2Ñ2Ó4ˆÜ�f˜kÔ*Ø‰Iá ØØØ /Ø+ô	ˆFð ˆIð	Ø×ÑØØØ!Ø!Ø)ð  ô ñ Ø—‘•ð ø‰yØ—‘•ð ús   ÂC ÃC)	rû   NNTTNFÚinfN)r'  rÙ   r0  r  r6  zSequence[Hashable] | Noner3  zSequence[Hashable] | boolr1  r§   r2  zIndexLabel | Noner4  r§   r5  rÙ   r+  rM   r3   r4   )r3   z dict[str, dict[str, str | bool]])r3   úIterable[ExcelCell])r3   r§   )rZ  r1   r3   r®  )ÚSheet1r   r   NNNN)r¦  z)FilePath | WriteExcelBuffer | ExcelWriterr§  rÙ   r�  r1   rž  r1   rŸ  ztuple[int, int] | Noner›  r  r™  zStorageOptions | Nonerœ  rL   r3   r4   )r5   r6   r7   r  r¢  r£  r/   Úpropertyr:  rB  ra  rf  rt  rx  rw  rv  rN  r  r˜  r   r   r¬  r:   r0   r.   r#  r#  ö  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r0   r#  )<r  Ú
__future__r   Úcollections.abcr   r   r   r   ry   rp  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<   rP   r#  r:   r0   r.   ú<module>rÄ     s±   ðñõ #÷ó ó Û Û 	÷ó ó ã å )Ý 'Ý 4å &÷÷
ó ÷ !Ð  Ý 0å 5÷õ 7Ý 3á÷ó õ #÷!ñ !ô*K�9ô K÷2FAñ FA÷RLò Lr0   