o
    RD©i™
  ã                   @  sv   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	 dZ
dZeeƒZdddd„Zdddd„Zddd„ZdS )é    )ÚannotationsN)Ú	getLogger)ÚIOÚ	Generatori @  é   TÚraw_data_fdr   Úadd_bracketÚboolÚreturnÚbytesc                 C  s°   t  tt j ¡}t ¡ }|r| d¡ |  t¡}|rM| | 	|¡¡ |j
dkr?|j
}t  tt j ¡}| | 	|¡¡ |j
dks'|  t¡}| | ¡ ¡ |s|rT| d¡ | ¡ S )a  Decompresses raw data from file like object with zlib.

    Args:
        raw_data_fd: File descriptor object.
        add_bracket: Whether, or not to add brackets around the output. (Default value = True)

    Returns:
        A byte array of the decompressed file.
    ó   [ó    ó   ])ÚzlibÚdecompressobjÚMAGIC_NUMBERÚ	MAX_WBITSÚioÚBytesIOÚwriteÚreadÚ
CHUNK_SIZEÚ
decompressÚunused_dataÚflushÚgetvalue)r   r   ÚobjÚwriterÚdr   © r   úY/var/www/Datamplify/venv/lib/python3.10/site-packages/snowflake/connector/gzip_decoder.pyÚdecompress_raw_data   s$   




ý
ù
r!   c                 C  s\   t  ¡ }|r| d¡ tjdgtjtjd}| |j|  ¡ dd ¡ |r*| d¡ | ¡ S )aD  Experimental: Decompresses raw data from file like object with zcat. Otherwise same as decompress_raw_data.

    Args:
        raw_data_fd: File descriptor object.
        add_bracket: Whether, or not to add brackets around the output. (Default value = True)

    Returns:
        A byte array of the decompressed file.
    r   Úzcat)ÚstdinÚstdout)Úinputr   r   )	r   r   r   Ú
subprocessÚPopenÚPIPEÚcommunicater   r   )r   r   r   Úpr   r   r    Údecompress_raw_data_by_zcat,   s   


r+   úGenerator[str]c                 c  sš    t  tt j ¡}dV  |  t¡}|rA| |¡ d¡V  |jdkr:|j}t  tt j ¡}| |¡ d¡V  |jdks!|  t¡}|s| 	¡  d¡d V  dS )zÇDecompresses a raw data in file like object and yields a Unicode string.

    Args:
        raw_data_fd: File descriptor object.

    Yields:
        A string of the decompressed file in chunks.
    ú[zutf-8r   ú]N)
r   r   r   r   r   r   r   Údecoder   r   )r   r   r   r   r   r   r    Ú%decompress_raw_data_to_unicode_stream@   s   €


ý
úr0   )T)r   r   r   r	   r
   r   )r   r   r
   r,   )Ú
__future__r   r   r&   r   Úloggingr   Útypingr   r   r   r   Ú__name__Úloggerr!   r+   r0   r   r   r   r    Ú<module>   s   