§
    tŠtj‘  ã                  ó¤  — U d dl mZ d dlmZmZmZmZmZ d dl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
<   dAd„ZdBdCd„ZdDd„ZdEd„ZdFd„ZedGd „¦   «         Z edHd"„¦   «         Z edId#„¦   «         Z edJd$„¦   «         Z dKd'„Z edLd+„¦   «         Z!edMd-„¦   «         Z!dNd0„Z!dOd6„Z"dPd:„Z#dQd?„Z$d@S )Ré    )Úannotations)ÚCallableÚHashableÚIterableÚMutableMappingÚSequence)ÚTYPE_CHECKINGÚAnyÚLiteralÚTypeVarÚoverload©Úimport_optional_dependency)Ú
is_integerÚis_list_like)ÚExcelWriterÚusecols_func)Úboundz"MutableMapping[str, ExcelWriter_t]Ú_writersÚklassÚExcelWriter_tÚreturnÚNonec                ód   — t          | ¦  «        st          d¦  «        ‚| j        }| t          |<   dS )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   )r   Úengine_names     úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pandas/io/excel/_util.pyÚregister_writerr    "   s9   € õ �E‰?Œ?ð CÝÐAÑBÔBÐBØ”-€KØ!…Hˆ[ÑÐÐó    ÚreaderÚextÚstrÚmodeúLiteral['reader', 'writer']c                óˆ   — 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.   r0   )r"   Úwriterr1   Ú
xlsxwriterÚwarn)Úerrorsr,   r   )r#   r%   Ú_default_readersÚ_default_writersr2   s        r   Úget_default_enginer7   2   s•   € ð$ ØØØØðð Ðð ØØØð	ð Ðð Ð'Ð'Ð'Ð'Ð'ØˆxÒÐå/°ÀVÐLÑLÔLˆ
Øð 	4Ø'3Ð˜VÑ$Ø Ô$Ð$à Ô$Ð$r!   r   c                ój   — 	 t           |          S # t          $ r}t          d| › d�¦  «        |‚d }~ww xY w)NzNo Excel writer 'ú')r   ÚKeyErrorr   )r   Úerrs     r   Ú
get_writerr<   [   sR   € ðFÝ˜Ô$Ð$øÝð Fð Fð FÝÐ;¨[Ð;Ð;Ð;Ñ<Ô<À#ÐEøøøøðFøøøs   ‚ �
2™-­2ÚxÚintc                ó&  — d}|                       ¦   «                              ¦   «         D ]d}t          |¦  «        }|t          d¦  «        k     s|t          d¦  «        k    rt          d| › �¦  «        ‚|dz  |z   t          d¦  «        z
  dz   }Œe|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   )r=   ÚindexÚcÚcps       r   Ú
_excel2numrJ   b   s’   € ð& €Eà�WŠW‰YŒY�_Š_ÑÔð /ð /ˆÝ�‰VŒVˆà•�C‘”Š=ˆ=˜B¥ S¡¤šM˜MÝÐ8°QÐ8Ð8Ñ9Ô9Ð9à˜‘
˜R‘¥# c¡(¤(Ñ*¨QÑ.ˆˆà�1‰9Ðr!   Úareasú	list[int]c           
     óJ  — g }|                       d¦  «        D ]Š}d|v rb|                      d¦  «        }|                     t          t          |d         ¦  «        t          |d         ¦  «        dz   ¦  «        ¦  «         Œh|                     t          |¦  «        ¦  «         Œ‹|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   rC   )ÚsplitÚextendÚrangerJ   Úappend)rK   ÚcolsÚrngÚrngss       r   Ú_range2colsrW   ‚   s˜   € ð* €Dà�{Š{˜3ÑÔð )ð )ˆØ�#ˆ:ˆ:Ø—9’9˜S‘>”>ˆDØ�KŠK��j¨¨a¬Ñ1Ô1µ:¸dÀ1¼gÑ3FÔ3FÈÑ3JÑKÔKÑLÔLÐLÐLà�KŠK�
 3™œÑ(Ô(Ð(Ð(à€Kr!   Úusecolsústr | list[int]c                ó   — d S ©N© ©rX   s    r   Úmaybe_convert_usecolsr^   £   ó   € ØBEÀ#r!   ú	list[str]c                ó   — d S r[   r\   r]   s    r   r^   r^   §   s   € Ø<?¸Cr!   c                ó   — d S r[   r\   r]   s    r   r^   r^   «   r_   r!   c                ó   — d S r[   r\   r]   s    r   r^   r^   ¯   s   € Ø25°#r!   ú1str | list[int] | list[str] | usecols_func | Noneú+None | list[int] | list[str] | usecols_funcc                ó’   — | €| 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`.
    Nz}Passing an integer for `usecols` is no longer supported.  Please pass in a list of int from 0 to `usecols` inclusive instead.)r   r   Ú
isinstancer$   rW   r]   s    r   r^   r^   ³   s]   € ð  €Øˆå�'ÑÔð 
ÝðRñ
ô 
ð 	
õ
 �'�3ÑÔð $Ý˜7Ñ#Ô#Ð#à€Nr!   Úfreeze_panesútuple[int, int]úLiteral[True]c                ó   — d S r[   r\   ©rh   s    r   Úvalidate_freeze_panesrm   Ò   s   € ØKNÈ3r!   úLiteral[False]c                ó   — d S r[   r\   rl   s    r   rm   rm   Ö   s   € ØADÀr!   útuple[int, int] | NoneÚboolc                ó„   — | �=t          | ¦  «        dk    rt          d„ | D ¦   «         ¦  «        rdS t          d¦  «        ‚dS )Né   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r[   )rg   r>   )Ú.0Úitems     r   ú	<genexpr>z(validate_freeze_panes.<locals>.<genexpr>Ü   s=   è è € ð *
ð *
Ø&*�J�t�SÑ!Ô!ð*
ð *
ð *
ð *
ð *
ð *
r!   TzLfreeze_panes must be of form (row, column) where row and column are integersF)ÚlenÚallr   rl   s    r   rm   rm   Ú   sk   € ØÐÝˆ|ÑÔ Ò!Ð!¥cð *
ð *
Ø.:ð*
ñ *
ô *
ñ '
ô '
Ð!ð �4åð0ñ
ô 
ð 	
ð ˆ5r!   Úrowúlist[Hashable]Úcontrol_rowú
list[bool]ú!tuple[list[Hashable], list[bool]]c                óÈ   — | d         }t          dt          | ¦  «        ¦  «        D ]9}||         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   rC   Ú NF)rR   rx   )rz   r|   ÚlastÚis       r   Úfill_mi_headerrƒ   ë   s€   € ð* ˆqŒ6€DÝ�1•c˜#‘h”hÑÔð ð ˆØ˜1Œ~ð 	Ø�q”6ˆDàˆqŒ6�RŠ<ˆ<˜3˜qœ6˜>ØˆC�‰FˆFà"ˆK˜‰NØ�q”6ˆDˆDà�ÐÐr!   Ú	index_colúint | Sequence[int]ú&tuple[Hashable | None, list[Hashable]]c                óþ   — t          |¦  «        r't          |t          ¦  «        sJ ‚t          |¦  «        }nt          |t          ¦  «        rJ ‚|}| |         }|dk    rdn|}|g | d|…         ¢d‘| |dz   d…         ¢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.
    r€   NrC   )r   rg   r   Úmax)rz   r„   r‚   Úheader_names       r   Úpop_header_namerŠ     s�   € õ* �IÑÔð Ý˜)¥XÑ.Ô.Ð.Ð.Ð.Ý�	‰NŒNˆˆå˜i­Ñ2Ô2Ð2Ð2Ð2Øˆà�a”&€KØ%¨Ò+Ð+�$�$°€KàÐ5˜#˜b˜q˜bœ'Ð5 2Ð5¨¨A°©E¨G¨G¬Ð5Ð5Ð5r!   Úengine_kwargsúdict[str, Any] | NoneÚkwargsÚdictc                ób   — | €i }n|                       ¦   «         }|                     |¦  «         |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)r‹   r�   Úresults      r   Úcombine_kwargsr“   0  s9   € ð& ÐØˆˆà×#Ò#Ñ%Ô%ˆØ
‡M‚M�&ÑÔÐØ€Mr!   N)r   r   r   r   )r"   )r#   r$   r%   r&   r   r$   )r   r$   r   r   )r=   r$   r   r>   )rK   r$   r   rL   )rX   rY   r   rL   )rX   r`   r   r`   )rX   r   r   r   )rX   r   r   r   )rX   rd   r   re   )rh   ri   r   rj   )rh   r   r   rn   )rh   rp   r   rq   )rz   r{   r|   r}   r   r~   )rz   r{   r„   r…   r   r†   )r‹   rŒ   r�   rŽ   r   rŽ   )%Ú
__future__r   Úcollections.abcr   r   r   r   r   Útypingr	   r
   r   r   r   Úpandas.compat._optionalr   Úpandas.core.dtypes.commonr   r   Úpandas.io.excel._baser   Útyper   Úobjectr   r   Ú__annotations__r    r7   r<   rJ   rW   r^   rm   rƒ   rŠ   r“   r\   r!   r   ú<module>r�      sª  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð
 ð OØ1Ð1Ð1Ð1Ð1Ð1à˜Ô%€MØ�7˜>°¸8¸*ÀfÐ:LÔ1MÐNÑNÔN€Là/1€Ð 1Ð 1Ð 1Ñ 1ð"ð "ð "ð "ð &%ð &%ð &%ð &%ð &%ðRFð Fð Fð Fðð ð ð ð@ð ð ð ðB 
Ø EÐ EÐ Eñ 
„Ø Eð 
Ø ?Ð ?Ð ?ñ 
„Ø ?ð 
Ø EÐ EÐ Eñ 
„Ø Eð 
Ø 5Ð 5Ð 5ñ 
„Ø 5ðð ð ð ð> 
Ø NÐ NÐ Nñ 
„Ø Nð 
Ø DÐ DÐ Dñ 
„Ø Dðð ð ð ð" ð  ð  ð  ðF6ð 6ð 6ð 6ðDð ð ð ð ð r!   