
    `Vg                       d dl mZ d dlmZ d dlZd dlm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Zd dlmZ d dlmZ edd	       Zedd
       Zeddd       Zedd       Zedd       Zedd       Zeddd       Z G d d      Zy)    )annotations)contextmanagerN)Path)rmtree)IOAnyIterator)
set_option)
get_handlec              #  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      Y/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/_testing/contexts.pydecompress_filer      s6     " 
D$K	G 6mm  s   6*	636c              #     K   ddl ddlfd}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                    | 	 j                   d= y | j                   d<   j                          y # t        $ r Y y w xY w)NTZ)environKeyErrortzset)tzostimes    r   setTZzset_timezone.<locals>.setTZD   sF    :JJt$  "BJJtJJL	  s   3 	??r   )r   r   r   get)r   r   orig_tzr   r   s      @@r   set_timezoner    +   sE     ,  jjnnT"G	"Iggs   2AA 	A
AAc              +  &  K   t        t        j                               }| d} t        t	        j
                               | z   } || z  }|j                          t        |      }|r|j                  dd       t        |f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 modezw+b)r   tempfile
gettempdirstruuiduuid4touch
setdefaultopen
isinstancecloseis_fileunlink)filenamereturn_filelikekwargsfolderr   handle_or_strs         r   ensure_cleanr5   V   s     ( (%%'(F4::< 8+HHDJJL!$iM&%(T,V,--!<<>KKM  --!<<>KKM s    BDC 	ADADDc               #     K   t        j                  d      } 	 |  	 t        |        y# t        $ r Y yw xY w# 	 t        |        w # t        $ r Y w w xY wxY ww)z{
    Get a temporary directory path and agrees to remove on close.

    Yields
    ------
    Temporary directory path
    r"   )suffixN)r$   mkdtempr   OSError)directory_names    r   ensure_clean_dirr;      s`      %%R0N	>" 			>" 		sR   A: + A	7A7AAAA	AAAAAc               #  F  K   t        t        j                        } 	 d t        j                  j                          t        j                  j	                  |        y# t        j                  j                          t        j                  j	                  |        w xY ww)z
    Get a context manager to safely set environment variables

    All changes will be undone on close, hence environment variables set
    within this contextmanager will neither persist nor change global state.
    N)dictr   r   clearupdate)saved_environs    r   !ensure_safe_environment_variablesrA      se      $M)





-( 	




-(s   B!A >B!?BB!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)namer2   rF   _BUILTIN_DIALECTSs       r   with_csv_dialectrL      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.computationrN   _MIN_ELEMENTSUSE_NUMEXPRr
   )usemin_elementsexprolduseoldmins        r   use_numexprrW      st     ;))FF$c*%D2#(&1 $(&1s   A A3A A3A00A3c                  (    e Zd ZdZddZddZddZy)
RNGContexta,  
    Context manager to set the numpy random number generator speed. Returns
    to the original value upon exiting the context manager.

    Parameters
    ----------
    seed : int
        Seed for numpy.random.seed

    Examples
    --------
    with RNGContext(42):
        np.random.randn()
    c                    || _         y N)seed)selfr\   s     r   __init__zRNGContext.__init__   s	    	    c                    t         j                  j                         | _        t         j                  j	                  | j                         y r[   )nprandom	get_statestart_stater\   )r]   s    r   	__enter__zRNGContext.__enter__   s+    99..0
		tyy!r_   c                V    t         j                  j                  | j                         y r[   )ra   rb   	set_staterd   )r]   exc_type	exc_value	tracebacks       r   __exit__zRNGContext.__exit__   s    
		D,,-r_   N)returnNone)__name__
__module____qualname____doc__r^   re   rk    r_   r   rY   rY      s    "
.r_   rY   )rl   zIterator[IO[bytes]])r   r&   rl   Iterator[None])NF)r1   boolr2   r   )rl   zIterator[str])rl   rs   r[   )
__future__r   
contextlibr   r   pathlibr   shutilr   r$   typingr   r   r	   r'   numpyra   pandasr
   pandas.io.commonr   r   r    r5   r;   rA   rL   rW   rY   rr   r_   r   <module>r}      s    " % 	    
    '  ( ' 'T ' 'T  $ ) ) % %B 2 2". .r_   