o
    Û­j`  ã                   @  sÚ   d dl mZ d dlZd dlZd dl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mZ d dlmZ d dlZd dlmZ erRd dlmZmZ d dlmZmZ 	dddd„Zdddd„Zdddd„Zdd dd„ZdS )!é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚCallable)Úget_bz2_fileÚget_lzma_file)Úimport_optional_dependency)Úensure_clean)ÚFilePathÚReadPickleBuffer)Ú	DataFrameÚSeriesÚobjr   Úpathú"FilePath | ReadPickleBuffer | NoneÚreturnúDataFrame | Seriesc                 C  s^   |}|du rdt  ¡ › d�}t|ƒ�}t | |¡ t |¡W  d  ƒ S 1 s(w   Y  dS )a�  
    Pickle an object and then read it again.

    Parameters
    ----------
    obj : any object
        The object to pickle and then re-read.
    path : str, path object or file-like object, default None
        The path where the pickled object is written and then read.

    Returns
    -------
    pandas object
        The original object that was pickled and then re-read.
    NÚ__z	__.pickle)ÚuuidÚuuid4r	   ÚpdÚ	to_pickleÚread_pickle)r   r   Ú_pathÚ	temp_path© r   úP/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/_testing/_io.pyÚround_trip_pickle'   s   
$þr   ú
str | Nonec                 C  sX   t j}|du r	d}t|ƒ�}| ||ƒƒ |||ƒƒ}W d  ƒ |S 1 s%w   Y  |S )aÛ  
    Write an object to file specified by a pathlib.Path and read it back

    Parameters
    ----------
    writer : callable bound to pandas object
        IO writing function (e.g. DataFrame.to_csv )
    reader : callable
        IO reading function (e.g. pd.read_csv )
    path : str, default None
        The path where the object is written and then read.

    Returns
    -------
    pandas object
        The original object that was serialized and then re-read.
    NÚ___pathlib___)ÚpathlibÚPathr	   )ÚwriterÚreaderr   r!   r   r   r   r   Úround_trip_pathlibA   s   

þýr$   c                 C  sf   ddl }| d¡j}|du rd}t|ƒ�}| ||ƒƒ |||ƒƒ}W d  ƒ |S 1 s,w   Y  |S )aá  
    Write an object to file specified by a py.path LocalPath and read it back.

    Parameters
    ----------
    writer : callable bound to pandas object
        IO writing function (e.g. DataFrame.to_csv )
    reader : callable
        IO reading function (e.g. pd.read_csv )
    path : str, default None
        The path where the object is written and then read.

    Returns
    -------
    pandas object
        The original object that was serialized and then re-read.
    r   Nzpy.pathÚ___localpath___)ÚpytestÚimportorskipÚlocalr	   )r"   r#   r   r&   Ú	LocalPathr   r   r   r   Úround_trip_localpath\   s   

þýr*   ÚtestÚdestÚstrÚNonec                 C  s   |f}d}d}| dkrt j}d}||f}d}nI| dkr7tj}d}tj|d�}t |¡}	t|ƒ|_||	f}d}n)| d	kr?t	j
}n!| d
krGtƒ }n| dkrQtdƒj}n| dkrYtƒ }ntd| › �ƒ‚|||d��}
t|
|ƒ|Ž  W d  ƒ dS 1 syw   Y  dS )a¦  
    Write data to a compressed file.

    Parameters
    ----------
    compression : {'gzip', 'bz2', 'zip', 'xz', 'zstd'}
        The compression type to use.
    path : str
        The file path to write the data.
    data : str
        The data to write.
    dest : str, default "test"
        The destination file (for ZIP only)

    Raises
    ------
    ValueError : An invalid compression value was passed in.
    ÚwbÚwriteÚzipÚwÚwritestrÚtar)ÚnameÚaddfileÚgzipÚbz2ÚzstdÚ	zstandardÚxzzUnrecognized compression type: )ÚmodeN)ÚzipfileÚZipFileÚtarfileÚTarFileÚTarInfoÚioÚBytesIOÚlenÚsizer7   ÚGzipFiler   r   Úopenr   Ú
ValueErrorÚgetattr)Úcompressionr   Údatar,   Úargsr<   ÚmethodÚcompress_methodÚfileÚbytesÚfr   r   r   Úwrite_to_compressedy   s8   

"ÿrR   )N)r   r   r   r   r   r   )r   r   )r+   )r,   r-   r   r.   )Ú
__future__r   r7   rB   r    r?   Útypingr   r   r   r   r=   Úpandas.compatr   r   Úpandas.compat._optionalr   Úpandasr   Úpandas._testing.contextsr	   Úpandas._typingr
   r   r   r   r   r$   r*   rR   r   r   r   r   Ú<module>   s(    
ÿ