Ë
    ómxiQ  ã                  ó>  — d dl mZ d dlmZ d dlZd dlmZ d dlZd dlm	Z	m
Z
mZ d dlZd dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ e
rd dlmZ d dlmZmZmZ e	 	 	 	 	 	 dd„«       Zedd„«       Ze	 d	 	 	 	 	 dd„«       Z edd„«       Z!eddd„«       Z"dd„Z#dd„Z$y)é    )Úannotations)ÚcontextmanagerN)ÚPath)ÚIOÚTYPE_CHECKINGÚAny)Úusing_copy_on_write)ÚPYPYÚWARNING_CHECK_DISABLED)ÚChainedAssignmentError)Ú
set_option)Ú
get_handle)Ú	Generator)Ú
BaseBufferÚCompressionOptionsÚFilePathc              #  óp   K  — t        | d|d¬«      5 }|j                  –— ddd«       y# 1 sw Y   yxY w­w)a&  
    Open a compressed file and return a file object.

    Parameters
    ----------
    path : str
        The path where the file is read from.

    compression : {'gzip', 'bz2', 'zip', 'xz', 'zstd', None}
        Name of the decompression to use

    Returns
    -------
    file object
    ÚrbF)ÚcompressionÚis_textN)r   Úhandle)Úpathr   r   s      úO/home/htdocs/ttos/venv/lib/python3.12/site-packages/pandas/_testing/contexts.pyÚdecompress_filer   $   s6   è ø€ ô& 
�D˜$¨KÀÔ	Gð È6Ø�m‰mÒ÷÷ ñ üs   ‚6’*¡	6ª3¯6c              #  ó¤   ‡K  — ddl Šdˆfd„}t        j                  j                  d«      } || «       	 d–—  ||«       y#  ||«       w xY w­w)a¼  
    Context manager for temporarily setting a timezone.

    Parameters
    ----------
    tz : str
        A string representing a valid timezone.

    Examples
    --------
    >>> from datetime import datetime
    >>> from dateutil.tz import tzlocal
    >>> tzlocal().tzname(datetime(2021, 1, 1))  # doctest: +SKIP
    'IST'

    >>> with set_timezone('US/Eastern'):
    ...     tzlocal().tzname(datetime(2021, 1, 1))
    ...
    'EST'
    r   Nc                ó®   •— t        ‰d«      r9| €	 t        j                  d= y | t        j                  d<   ‰j	                  «        y y # t        $ r Y y w xY w)NÚtzsetÚTZ)ÚhasattrÚosÚenvironÚKeyErrorr   )ÚtzÚtimes    €r   ÚsetTZzset_timezone.<locals>.setTZS   sU   ø€ Ü�4˜Ô!ØˆzðÜŸ
™
 4Ñ(ð $&”—
‘
˜4Ñ Ø—
‘
•ð "øô  ò Ùðús   ‘A Á	AÁAr   )ÚreturnÚNone)r$   r    r!   Úget)r#   r%   Úorig_tzr$   s      @r   Úset_timezoner*   ;   sB   øè ø€ ó, õ	ô �j‰j�n‰n˜TÓ"€GÙ	ˆ"„IðÛáˆg�ø‰ˆg�üs   ƒ2A¶A º	AÁ
AÁAc              +  ód  K  — t        t        j                  «       «      }| €d} t        t	        j
                  «       «      | z   } || z  }|j                  «        t        |«      }|j                  dd«      }|r+|j                  dd«       |€	d|d   vrd}t        |fd|i|¤Ž}	 |–— t        |t        «      s|j                  «        |j                  «       r|j                  «        yy# t        |t        «      s|j                  «        |j                  «       r|j                  «        w w xY w­w)az  
    Gets a temporary path and agrees to remove on close.

    This implementation does not use tempfile.mkstemp to avoid having a file handle.
    If the code using the returned path wants to delete the file itself, windows
    requires that no program has a file handle to it.

    Parameters
    ----------
    filename : str (optional)
        suffix of the created file.
    return_filelike : bool (default False)
        if True, returns a file-like which is *always* cleaned. Necessary for
        savefig and other functions which want to append extensions.
    **kwargs
        Additional keywords are passed to open().

    NÚ ÚencodingÚmodezw+bÚbzutf-8)r   ÚtempfileÚ
gettempdirÚstrÚuuidÚuuid4ÚtouchÚpopÚ
setdefaultÚopenÚ
isinstanceÚcloseÚis_fileÚunlink)ÚfilenameÚreturn_filelikeÚkwargsÚfolderr   Úhandle_or_strr-   s          r   Úensure_cleanrB   f   s  è ø€ ô, ”(×%Ñ%Ó'Ó(€FàÐØˆÜ”4—:‘:“<Ó  8Ñ+€HØ�HÑ€Dà‡J�J„Lä! $›i€MØ�z‰z˜* dÓ+€HÙØ×Ñ˜& %Ô(ØÐ ¨6°&©>Ñ 9ØˆHÜ˜TÑ?¨HÐ?¸Ñ?ˆðØÒä˜-¬Ô-Ø×ÑÔ!Ø�<‰<Œ>Ø�K‰K�Mð øô ˜-¬Ô-Ø×ÑÔ!Ø�<‰<Œ>Ø�K‰K�Mð üs    ‚B!D0Â$C* Â(AD0Ã*AD-Ä-D0c              +  ó¸   K  — ddl }h d£}| |v rt        d«      ‚ |j                  | fi |¤Ž 	 d–— |j                  | «       y# |j                  | «       w xY w­w)au  
    Context manager to temporarily register a CSV dialect for parsing CSV.

    Parameters
    ----------
    name : str
        The name of the dialect.
    kwargs : mapping
        The parameters for the dialect.

    Raises
    ------
    ValueError : the name of the dialect conflicts with a builtin one.

    See Also
    --------
    csv : Python's CSV library.
    r   N>   ú	excel-tabÚunixÚexcelz Cannot override builtin dialect.)ÚcsvÚ
ValueErrorÚregister_dialectÚunregister_dialect)Únamer?   rG   Ú_BUILTIN_DIALECTSs       r   Úwith_csv_dialectrM   –   s_   è ø€ ó( â6ÐàÐ Ñ ÜÐ;Ó<Ð<à€C×Ñ˜Ñ( Ò(ð%Ûà×Ñ˜tÕ$øˆ×Ñ˜tÕ$üs   ‚+A®A ²AÁAÁAc              #  óê   K  — ddl m} |€|j                  }|j                  }|j                  }t	        d| «       ||_        	 d –— ||_        t	        d|«       y # ||_        t	        d|«       w xY w­w)Nr   )Úexpressionszcompute.use_numexpr)Úpandas.core.computationrO   Ú_MIN_ELEMENTSÚUSE_NUMEXPRr   )ÚuseÚmin_elementsÚexprÚolduseÚoldmins        r   Úuse_numexprrX   ¸   st   è ø€ å;àÐØ×)Ñ)ˆà×Ñ€FØ×Ñ€FÜÐ$ cÔ*Ø%€DÔð2Ûà#ˆÔÜÐ(¨&Õ1øð $ˆÔÜÐ(¨&Õ1üs   ‚A A3ÁA ÁA3ÁA0Á0A3c                ó0  — ddl m} | sddlm}  |«       S t        st
        r|sddlm}  |«       S t        st
        r|r ||dj                  |«      ¬«      S t        «       r	t        }d}nt        }d}|r|g|¢­} ||dj                  |g|¢­«      ¬«      S )Nr   ©Úassert_produces_warning©Únullcontextú|)ÚmatchzYA value is trying to be set on a copy of a DataFrame or Series through chained assignmentr   )
Úpandas._testingr[   Ú
contextlibr]   r
   r   Újoinr	   r   ÚFutureWarning)ÚwarnÚextra_warningsÚextra_matchr[   r]   Úwarningr_   s          r   Úraises_chained_assignment_errorrh   Ê   s¡   € Ý7áÝ*á‹}ÐåÕ&±Ý*á‹}ÐÝ
Õ(©nÙ&ØØ—(‘(˜;Ó'ô
ð 	
ô
 Ô Ü,ˆGð-ñ ô
 $ˆGà,ˆEÙØÐ0 Ñ0ˆGÙ&ØØ—(‘(˜EÐ0 KÑ0Ó1ô
ð 	
ó    c                ó^   — ddl m} | rt        rddlm}  |«       S |sd} |t
        fd|i|¤ŽS )aq  
    Assert that a warning is raised in the CoW warning mode.

    Parameters
    ----------
    warn : bool, default True
        By default, check that a warning is raised. Can be turned off by passing False.
    match : str
        The warning message to match against, if different from the default.
    kwargs
        Passed through to assert_produces_warning
    r   rZ   r\   zSetting a value on a viewr_   )r`   r[   r   ra   r]   rc   )rd   r_   r?   r[   r]   s        r   Úassert_cow_warningrk   î   s5   € õ 8áÕ)Ý*á‹}ÐáØ+ˆá"¤=ÑH¸ÐHÀÑHÐHri   )r   zFilePath | BaseBufferr   r   r&   z Generator[IO[bytes], None, None])r#   r2   r&   úGenerator[None, None, None])NF)r>   Úboolr?   r   r&   zGenerator[Any, None, None])rK   r2   r&   rl   )N)r&   rl   )T© rn   )TN)%Ú
__future__r   ra   r   r    Úpathlibr   r0   Útypingr   r   r   r3   Úpandas._configr	   Úpandas.compatr
   r   Úpandas.errorsr   Úpandasr   Úpandas.io.commonr   Úcollections.abcr   Úpandas._typingr   r   r   r   r*   rB   rM   rX   rh   rk   rn   ri   r   ú<module>ry      sì   ðÝ "å %Û 	Ý Û ÷ñ ó
 å .÷õ 1å å 'áÝ)÷ñ ð ðØ
ðØ.@ðà%òó ðð, ò'ó ð'ðT à+0ð,Ø$(ð,Ø<?ð,àò,ó ð,ð^ ò%ó ð%ðB ó2ó ð2ó"!
ôHIri   