B
    T\V                 @   s  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	m
Z
mZmZ ddlmZ dd Ze	ejejed	Ze
ejejed	Zd
d edZdeiZee" d dlZejed< ejed< W dQ R X y$d dlZejjed< ejjed< W nN ek
r8   y d dlZejed< ejed< W n ek
r2   Y nX Y nX ee2 ddlmZmZmZ eed< eed< eed< W dQ R X esd dlZejed< dd Zdd Z dS )    )print_functiondivisionabsolute_importN)identity   )gzip_compressgzip_decompressGzipFilePY2)ignoringc             K   s   | S )N )filekwargsr   r   5lib/python3.7/site-packages/dask/bytes/compression.py	noop_file   s    r   )gzipzlibbz2Nc             K   s   t f d| i|S )NZfileobj)r	   )fr   r   r   r   <lambda>   s    r   )r   Nsnappylz4)LZMAFilelzma_compresslzma_decompressZxzr   c       	      C   s   ddl m}m}m}m} | dd dd }|  d| k rD|d| dd d}x&|| d	d
krz| dd |d	7 }qVW | | d	 d ||| |}| |j d ||| |j|}dd |D dd |D |jdS )Nr   )STREAM_HEADER_SIZEdecode_stream_footerdecode_index	LZMAErrorr   c             S   s   |  |}| | d |S )N   )readseek)r   sizedatar   r   r   _peekI   s    
zget_xz_blocks.<locals>._peekzfile too smallr      s       c             S   s   g | ]\}}|j qS r   )Zcompressed_file_offset).0ibr   r   r   
<listcomp>^   s    z!get_xz_blocks.<locals>.<listcomp>c             S   s   g | ]\}}|j qS r   )unpadded_size)r'   r(   r)   r   r   r   r*   _   s    )ZoffsetsZlengthscheck)	lzmaffir   r   r   r   r!   tellZbackward_sizer,   )	fpr   r   r   r   r$   ZpaddingZstream_flagsindexr   r   r   get_xz_blocksD   s"    r1   c             C   sZ   ddl m}m}m} || d d }| d | }|||t| |d}|| t|d  S )Nr   )decode_block_header_sizeLZMADecompressorFORMAT_BLOCKr   )formatheaderr+   r,   )r-   r2   r3   r4   len
decompress)r#   r,   r2   r3   r4   Zhsizer6   Zdcr   r   r   xz_decompressc   s    r9   )!Z
__future__r   r   r   r   r   Ztoolzr   Zcompatibilityr   r   r	   r
   Zutilsr   r   compressr8   filesZseekable_filesImportErrorr   Z	lz4.blockr   blockZLZ4_compressZLZ4_uncompressr   r   r   ZBZ2Filer1   r9   r   r   r   r   <module>   sT   




