o
    h`                     @  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   g/var/www/html/construction_image-detection-poc/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(    
