ó
    ¬œ‘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          Ú[C:\Users\psant\Downloads\Noiseback\school\venv\Lib\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   † ØI€JØ€Ið Ø!%Ø#ð!àð!ð ð!ð ð!ð ð!ð 
÷!ð !r2   r#   c                  óL   ^ • \ rS rSr                SU 4S jjrSrU =r$ )ÚCssExcelCelléT   c	                óê   >• U(       aQ  U(       aJ  XVU4    V
Vs0 s H  u  p£U
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Ð>NÒ3Oô Ú3O¡i d�—
‘
“˜cÒ!Ñ3Oð ñ  ô #,Ð,<×,BÑ,BÓ,DÓ"EÐÙ!Ð"5Ó6ˆEä‰ÒÐJ˜S¨s¸%ÑJÀ6Ó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ÚCSSToExcelConverterém   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Ó8ˆD�Nà!ˆDŒNô &ŸOšO¨D×,?Ñ,?Ó@ˆÕ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)   € ð ×%Ñ% l·N±NÓ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   ø€ ä˜QŸW™W›Yž‘�Ø‘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Ø×'Ñ'¨Ó.Ø—O‘O EÓ*Ø—O‘O EÓ*Ø!×5Ñ5°eÓ<ñ
ˆ÷	!ñ 	�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Ñ4°UÓ;Ø×/Ñ/°Ó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*   € Ø�9‰9�]Ó#Ñ+ØÜ�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±   € ñ ;ó

ò ;�ð Ø×+Ñ+Ø—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                ó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ÓØÐ-Ó-ØØ!Ø×+Ñ+Ó+à×(Ñ(¨Ñ/Ð/ä�MŠMØ1´$°u³+°Ð?ÜÜ+Ó-òð
 r2   c                óP   • U R                  U5      nUS:  a  g US:  a  gUS:  a  gg)Ngñhãˆµøä>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   € ð —Y‘YÐ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   € Ø�Y‰Y�Ó'ˆÜ&0°´S×&9Ñ&9ˆR�Z‰Z˜˜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ˆ
æ%/�J˜q’M°TØ×.Ñ.¨zÓ:Ø×'Ñ'¨Ó.Ø×%Ñ% eÓ,Ø×)Ñ)¨%Ó0Ø&1°ZÓ&?™(À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+   € Ø—Y‘Y˜|Ó,ˆ
ÞØ—?‘?×&Ñ& 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)   € Ø—Y‘YÐ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¦   € ÜŸšðð �I‰I�m RÓ(ó
ˆð ˆ
Û"ˆDØ�B�Qˆx˜3‹Ø˜A˜b�z×)Ñ)¨%°Ó5‘Ø�b�q�˜S“Ø˜A˜b�z×)Ñ)¨%°Ó5‘à—z‘z“|�ßˆ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+   € Ø�y‰y˜Ó%ˆØ‰<Øˆ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Ñ)Ð)øÜó 	Ü�MŠMØ*¬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Ø˜‘G˜a‘K $ 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Ó'ˆÜˆt‹9˜‹>ØÜ�‹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
X l        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        X€l        X�l        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Ø�K‰K× Ñ Ô"Ø—‘ˆBØÑ&Ü"5Ó"7�Ø4CÕ àˆ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—‘ˆŒØ(ÔØŒ
Ø&ÔØŒØ&ÔØ�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   € ð ˜T�NàØØ Øñ	ð )1¸eÑ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�>‰>œgŸlšl¨3×/Ñ/Ø—+‘+‰CÜ�c�]‰]Ü×&Ò& s×+Ñ+Ø—l‘l‘Ü×(Ò(¨×-Ñ-Ø˜$Ÿ,™,˜Ð(‘Ø×"Ñ"Ñ.Ü˜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  p¼Su  pÞU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  pºS
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ˆØˆ	Øˆà�:�:œ* T§W¡W§]¡]´J×?Ñ?Ü˜DŸG™GŸM™M¨!Ñ,Ó-°Ñ1ˆIà××ä'¨¯©Ö6‘
�ÜØØ!ØØ×+Ñ+ñ	ô ñ 7ô 7@Ü�M§>¡>°7·=±=ÓAö7Ñ2�Ñ2�u kð  Ÿ™ [Ó1�Ø#(§;¡;¦=‘K�AØ+5Ñ(�JØ !“|Ø/3À±]ÀXÑ5M HÜ&Ø Ø%™M¨AÑ-Ø"™IØ"×/Ñ/Ü#*¨4¯;©;¸ÀtÓ#LØ $Ø !Ø&*×&:Ñ&:Ø#-Ø!)ñô ó	 $1ò	7ô, '¤s¨JÐ'7Ö8‘	�Ø—H‘HœS¤¨vÓ6Ó7�Ü"ØØ!™¨Ñ)ØØ×+Ñ+Ü& t§{¡{°MÀ4Ó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à�z�zØ�	Ü˜dŸg™gŸm™m¬Z×8Ñ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Ñ!�Ü"ØŸ™Ø Ñ,ØØ×+Ñ+Ü& t§{¡{°MÀ4Ó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
   € ¨Q¯W°1¨Wr2   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ÊÀ1¸B¶wÊù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™˜ô ˜dŸo™o¨x¸d×>OÑ>O×PÐPÚ)7ùs   ƒ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ç   ø€ ô �d—l‘l¤J×/Ñ/Ø×(Ñ(Ó*‰Cà×-Ñ-Ó/ˆCà$&ˆà�7‰7�=‰=××Ø7;·w±w·}±}×7JÒ7JÓKÒ7J°!™‘1¨2Ò-Ñ7JÑKØðOä�D—L‘LÓ!ñO"ñ "ˆCô ×ÒÑ 4Ñ6LÉÓ6L×MÑMôä)2°3¬ó�ð —’ 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   € Ü�d—g‘g—m‘m¤Z×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©  é € Ø×× §§Ø�OŠO˜qÑ �Oð �:�:ˆ:ð ××¤JØ× Ñ ¤4¬´·
±
¼EÐ"B÷%ñ %ð #×.Ñ.¨qÑ1‘à×!×!¤j°×1AÑ1AÄ3×&GÑ&GØ"×.Ñ.‘à"Ÿg™gŸm™m×1Ñ1°!Ñ4�ä˜$Ÿ,™,¬
×3Ñ3Ø—’ 1Ñ$•æ˜tŸ{™{°%Ò7Ü §¡°!Ñ 3°Q¸×EVÑEVÓWÒWð  Ÿ7™7Ÿ=™=ˆLÜ˜$Ÿ'™'Ÿ-™-¬×5Ñ5Ø#Ÿw™wŸ}™}×9Ñ9Ó;�ä(¨Ö6‘�Ü"ØŸ™¨#Ñ-ØØØ×+Ñ+Ü& t§{¡{°KÀÓFØØØ"&×"6Ñ"6ñ	ô 	ñ  7ð ‰IàˆIà×&Ñ& yÓ1×1Ó1ùs   ‚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  p¼Su  pÞU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»  é € Ø×× §§Ø�OŠO˜qÑ �Oàˆà�:�:ˆ:ØŸ7™7Ÿ=™=×.Ñ.ˆLà××¤JØ× Ñ ¤4¬´·
±
¼EÐ"B÷%ñ %ð  $×/Ñ/�ô ˜$Ÿ,™,¬
×3Ñ3¸×8H×8HØ—’ 1Ñ$•ô ×Ò Ö.°4·;±;ÀeÒ3KÜ"+¨LÖ"9‘J�DÜ# D§O¡O°aÑ$7¸ÀT×EVÑEVÓWÔWñ #:ð ××Ðà!ŸW™WŸ]™]×8Ñ8Ø!°ð 9ð �
ô !2°*Ó =�ä25Ø!§7¡7§=¡=×#7Ñ#7¸¿¹¿¹×9LÑ9Lö3Ñ.�E ;ð $Ÿ[™[Ø#Ø#)×#6Ñ#6Ø#)×#3Ñ#3ð )ð �Fð (-§{¡{¦}™˜Ø/9Ñ,˜
Ø# a›<Ø)-¯©¸1Ñ)<¸xÑ)GÈ!Ñ)K˜JØ'.˜HÜ*Ø $§¡°!Ñ 3Ø 'Ø &¡	Ø"&×"3Ñ"3Ü'.¨t¯{©{¸KÈÓ'NØ$%Ø$+Ø*.×*>Ñ*>Ø'1Ø%-ñô ñ (5ð" ˜q‘L’Gò53ô< %(¨¯©¯©Ó$7�LÜ,5°lÖ,CÑ(˜˜[Ü*Ø $§¡°#Ñ 5Ø 'Ø +Ø"&×"3Ñ"3Ü'.¨t¯{©{¸KÈÓ'NØ$'Ø$+Ø*.×*>Ñ*>ñ	ô 	ñ -Dð ˜q‘L’Gñ %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   € ô ˜DŸK™KÓ(Ð(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Ø—W‘W—\‘\¢! V )Ñ,ˆFÜ# FÖ+‘�Ü"ØŸ™¨!Ñ+ØÑ*ØØÜ& t§{¡{°E¸4Ó@ØØ"Ø"&×"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   é € Ü—O’O D×$7Ñ$7Ó$9¸4×;LÑ;LÓ;NÖOˆDØ×)Ñ)¨$¯(©(Ó3ˆDŒHØŒJò Pùs   ‚A A"Ústorage_options)rÊ  c	           
     óÊ  • SSK Jn	  U R                  R                  u  p«X R                  :”  d  X°R
                  :”  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à!ŸW™WŸ]™]ÑˆØ—m‘mÓ# x·-±-Ó'?ÜØ?À¸zÈÈHÈ:ð V&Ø&*§m¡m _°B°t·}±}°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   