Ë
    ¤eh©  ã                  óŒ  — U d dl mZ d dlmZmZmZmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZmZ erd dlmZ ee   Z ede
egef   ¬«      Zi Zd	ed
<   dd„Zddd„Zdd„Zd d„Zd!d„Zed"d„«       Z ed#d„«       Z ed$d„«       Z ed%d„«       Z 	 	 	 	 d&d„Z ed'd„«       Z!ed(d„«       Z!d)d„Z!	 	 	 	 	 	 d*d„Z"	 	 	 	 	 	 d+d„Z#d,d„Z$y)-é    )Úannotations)ÚHashableÚIterableÚMutableMappingÚSequence)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚTypeVarÚoverload©Úimport_optional_dependency)Ú
is_integerÚis_list_like)ÚExcelWriterÚusecols_func)Úboundz"MutableMapping[str, ExcelWriter_t]Ú_writersc                óZ   — t        | «      st        d«      ‚| j                  }| t        |<   y)z°
    Add engine to the excel writer registry.io.excel.

    You must use this method to integrate with ``to_excel``.

    Parameters
    ----------
    klass : ExcelWriter
    z&Can only register callables as enginesN)ÚcallableÚ
ValueErrorÚ_enginer   )ÚklassÚengine_names     úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/io/excel/_util.pyÚregister_writerr   "   s*   € ô �EŒ?ÜÐAÓBÐBØ—-‘-€KØ!„Hˆ[Òó    c                ór   — ddddddœ}dddddœ}|dv sJ ‚|dk(  rt        d	d
¬«      }|rd	|d<   ||    S ||    S )a�  
    Return the default reader/writer for the given extension.

    Parameters
    ----------
    ext : str
        The excel file extension for which to get the default engine.
    mode : str {'reader', 'writer'}
        Whether to get the default engine for reading or writing.
        Either 'reader' or 'writer'

    Returns
    -------
    str
        The default engine for the extension.
    ÚopenpyxlÚpyxlsbÚxlrdÚodf)ÚxlsxÚxlsmÚxlsbÚxlsÚods)r$   r%   r&   r(   )ÚreaderÚwriterr*   Ú
xlsxwriterÚwarn)Úerrorsr$   r   )ÚextÚmodeÚ_default_readersÚ_default_writersr+   s        r   Úget_default_enginer2   2   sz   € ð$ ØØØØñÐð ØØØñ	Ðð Ð'Ñ'Ð'Ð'ØˆxÒä/°ÀVÔLˆ
ÙØ'3Ð˜VÑ$Ø Ñ$Ð$à Ñ$Ð$r   c                óX   — 	 t         |    S # t        $ r}t        d| › d�«      |‚d }~ww xY w)NzNo Excel writer 'ú')r   ÚKeyErrorr   )r   Úerrs     r   Ú
get_writerr7   [   s<   € ðFÜ˜Ñ$Ð$øÜò FÜÐ,¨[¨M¸Ð;Ó<À#ÐEûðFús   ‚ ‹	)”$¤)c                óî   — d}| j                  «       j                  «       D ]N  }t        |«      }|t        d«      k  s|t        d«      kD  rt        d| › �«      ‚|dz  |z   t        d«      z
  dz   }ŒP |dz
  S )ai  
    Convert Excel column name like 'AB' to 0-based column index.

    Parameters
    ----------
    x : str
        The Excel column name to convert to a 0-based column index.

    Returns
    -------
    num : int
        The column index corresponding to the name.

    Raises
    ------
    ValueError
        Part of the Excel column name was invalid.
    r   ÚAÚZzInvalid column name: é   é   )ÚupperÚstripÚordr   )ÚxÚindexÚcÚcps       r   Ú
_excel2numrD   b   s}   € ð& €Eà�W‰W‹Y�_‰_Óò /ˆÜ�‹Vˆà”�C“Š=˜B¤ S£šMÜÐ4°Q°CÐ8Ó9Ð9à˜‘
˜R‘¤# c£(Ñ*¨QÑ.‰ð/ð �1‰9Ðr   c           
     ó  — g }| j                  d«      D ]h  }d|v rH|j                  d«      }|j                  t        t        |d   «      t        |d   «      dz   «      «       ŒO|j	                  t        |«      «       Œj |S )a”  
    Convert comma separated list of column names and ranges to indices.

    Parameters
    ----------
    areas : str
        A string containing a sequence of column ranges (or areas).

    Returns
    -------
    cols : list
        A list of 0-based column indices.

    Examples
    --------
    >>> _range2cols('A:E')
    [0, 1, 2, 3, 4]
    >>> _range2cols('A,C,Z:AB')
    [0, 2, 25, 26, 27]
    ú,ú:r   r<   )ÚsplitÚextendÚrangerD   Úappend)ÚareasÚcolsÚrngÚrngss       r   Ú_range2colsrP   ‚   sv   € ð* €Dà�{‰{˜3Óò )ˆØ�#‰:Ø—9‘9˜S“>ˆDØ�K‰Kœœj¨¨a©Ó1´:¸dÀ1¹gÓ3FÈÑ3JÓKÕLà�K‰Kœ
 3›Õ(ð)ð €Kr   c                 ó   — y ©N© ©Úusecolss    r   Úmaybe_convert_usecolsrV   £   ó   € àr   c                 ó   — y rR   rS   rT   s    r   rV   rV   ¨   rW   r   c                 ó   — y rR   rS   rT   s    r   rV   rV   ­   rW   r   c                 ó   — y rR   rS   rT   s    r   rV   rV   ²   rW   r   c                óp   — | €| S t        | «      rt        d«      ‚t        | t        «      rt	        | «      S | S )a  
    Convert `usecols` into a compatible format for parsing in `parsers.py`.

    Parameters
    ----------
    usecols : object
        The use-columns object to potentially convert.

    Returns
    -------
    converted : object
        The compatible format of `usecols`.
    z}Passing an integer for `usecols` is no longer supported.  Please pass in a list of int from 0 to `usecols` inclusive instead.)r   r   Ú
isinstanceÚstrrP   rT   s    r   rV   rV   ·   sE   € ð  €Øˆä�'ÔÜðRó
ð 	
ô
 �'œ3ÔÜ˜7Ó#Ð#à€Nr   c                 ó   — y rR   rS   ©Úfreeze_paness    r   Úvalidate_freeze_panesra   Ö   rW   r   c                 ó   — y rR   rS   r_   s    r   ra   ra   Û   rW   r   c                ó`   — | �,t        | «      dk(  rt        d„ | D «       «      ryt        d«      ‚y)Né   c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrR   )r\   Úint)Ú.0Úitems     r   ú	<genexpr>z(validate_freeze_panes.<locals>.<genexpr>â   s   è ø€ ò *
Ø&*ŒJ�tœS×!ñ*
ùs   ‚TzLfreeze_panes must be of form (row, column) where row and column are integersF)ÚlenÚallr   r_   s    r   ra   ra   à   sE   € ØÐÜˆ|Ó Ò!¤cñ *
Ø.:ô*
ô '
ð äð0ó
ð 	
ð r   c                ó–   — | d   }t        dt        | «      «      D ])  }||   s| |   }| |   dk(  s| |   €|| |<   Œ d||<   | |   }Œ+ | |fS )aç  
    Forward fill blank entries in row but only inside the same parent index.

    Used for creating headers in Multiindex.

    Parameters
    ----------
    row : list
        List of items in a single row.
    control_row : list of bool
        Helps to determine if particular column is in same parent index as the
        previous value. Used to stop propagation of empty cells between
        different indexes.

    Returns
    -------
    Returns changed row and control_row
    r   r<   Ú F)rJ   rj   )ÚrowÚcontrol_rowÚlastÚis       r   Úfill_mi_headerrr   ñ   sr   € ð* ˆq‰6€DÜ�1”c˜#“hÓò ˆØ˜1Š~Ø�q‘6ˆDàˆq‰6�RŠ<˜3˜q™6˜>ØˆC�ŠFà"ˆK˜‰NØ�q‘6‰Dðð �ÐÐr   c                óÀ   — t        |«      rt        |t        «      sJ ‚t        |«      }nt        |t        «      rJ ‚|}| |   }|dk(  rdn|}|| d| dgz   | |dz   d z   fS )a•  
    Pop the header name for MultiIndex parsing.

    Parameters
    ----------
    row : list
        The data row to parse for the header name.
    index_col : int, list
        The index columns for our data. Assumed to be non-null.

    Returns
    -------
    header_name : str
        The extracted header name.
    trimmed_row : list
        The original data row with the header name removed.
    rm   Nr<   )r   r\   r   Úmax)rn   Ú	index_colrq   Úheader_names       r   Úpop_header_namerw     sw   € ô* �IÔÜ˜)¤XÔ.Ð.Ð.Ü�	‹N‰ä˜i¬Ô2Ð2Ð2Øˆà�a‘&€KØ%¨Ò+‘$°€Kà˜˜B˜Q˜ 2 $™¨¨Q°©U¨W¨Ñ5Ð5Ð5r   c                óR   — | €i }n| j                  «       }|j                  |«       |S )a  
    Used to combine two sources of kwargs for the backend engine.

    Use of kwargs is deprecated, this function is solely for use in 1.3 and should
    be removed in 1.4/2.0. Also _base.ExcelWriter.__new__ ensures either engine_kwargs
    or kwargs must be None or empty respectively.

    Parameters
    ----------
    engine_kwargs: dict
        kwargs to be passed through to the engine.
    kwargs: dict
        kwargs to be psased through to the engine (deprecated)

    Returns
    -------
    engine_kwargs combined with kwargs
    )ÚcopyÚupdate)Úengine_kwargsÚkwargsÚresults      r   Úcombine_kwargsr~   6  s.   € ð& ÐØ‰à×#Ñ#Ó%ˆØ
‡M�M�&ÔØ€Mr   N)r   ÚExcelWriter_tÚreturnÚNone)r)   )r.   r]   r/   zLiteral['reader', 'writer']r€   r]   )r   r]   r€   r   )r@   r]   r€   rf   )rL   r]   r€   ú	list[int])rU   zstr | list[int]r€   r‚   )rU   ú	list[str]r€   rƒ   )rU   r   r€   r   )rU   r�   r€   r�   )rU   z1str | list[int] | list[str] | usecols_func | Noner€   z+None | list[int] | list[str] | usecols_func)r`   ztuple[int, int]r€   zLiteral[True])r`   r�   r€   zLiteral[False])r`   ztuple[int, int] | Noner€   Úbool)rn   úlist[Hashable]ro   z
list[bool]r€   z!tuple[list[Hashable], list[bool]])rn   r…   ru   zint | Sequence[int]r€   z&tuple[Hashable | None, list[Hashable]])r{   zdict[str, Any] | Noner|   Údictr€   r†   )%Ú
__future__r   Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   r   r   Úpandas.compat._optionalr   Úpandas.core.dtypes.commonr   r   Úpandas.io.excel._baser   Útyper   Úobjectr   r   Ú__annotations__r   r2   r7   rD   rP   rV   ra   rr   rw   r~   rS   r   r   ú<module>r�      sK  ðÞ "÷ó ÷÷ õ ?÷ñ
 Ý1à˜Ñ%€MÙ˜>°¸8¸*ÀfÐ:LÑ1MÔN€Là/1€Ð
,Ó 1ó"ô &%óRFóó@ðB 
òó 
ðð 
òó 
ðð 
òó 
ðð 
òó 
ððØ>ðà0óð> 
òó 
ðð 
òó 
ðóð" Ø	ð Ø&0ð à&ó ðF6Ø	ð6Ø$7ð6à+ó6ôDr   