
    wg                        d Z ddlmZ ddlZddlmZ d ZdeiZddZ	d dZ
 e	de
d       	 dd	lmZ  e	d
ed
       	 ddlmZ d!dZ e	ded       	 ddlmZ  e	ded        e	ded       	 ddlZ e	dej&                  dd        e	dej&                  dd        G d de      Z	 ddlZ ej.                  d        e	deg        	 ddlZ e	dej8                  j:                  d       	 ddlZd!dZ  e	de d       d Z!y# e$ r Y w xY w# e$ r ddlmZ  e	dd d       Y w xY w# e$ r Y w xY w# e$ r Y w xY w# eeef$ r Y w xY w# e$ r Y iw xY w# e$ r Y d Z!yw xY w)"z9Helper functions for a standard streaming compression API    )ZipFileN)AbstractBufferedFilec                     | S N )filemodekwargss      W/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/fsspec/compression.py	noop_filer   	   s    K    c                 $   t        |t              r|g}| t        v r|st        d|        |D ]3  }|t        j
                  j                  v s |r#t        d| d|  d       |t        | <   |D ]  }| t        j
                  j                  |<   ! y)aA  Register an "inferable" file compression type.

    Registers transparent file compression type for use with fsspec.open.
    Compression can be specified by name in open, or "infer"-ed for any files
    ending with the given extensions.

    Args:
        name: (str) The compression type name. Eg. "gzip".
        callback: A callable of form (infile, mode, **kwargs) -> file-like.
            Accepts an input file-like object, the target mode and kwargs.
            Returns a wrapped file-like object.
        extensions: (str, Iterable[str]) A file extension, or list of file
            extensions for which to infer this compression scheme. Eg. "gz".
        force: (bool) Force re-registration of compression type or extensions.

    Raises:
        ValueError: If name or extensions already registered, and not force.

    z$Duplicate compression registration: z&Duplicate compression file extension: z ()N)
isinstancestrcompr
ValueErrorfsspecutilscompressions)namecallback
extensionsforceexts        r   register_compressionr      s    ( *c" \
 u}U?vFGG V&,,+++EEcU"TFRSTUUV E$K .)-!!#&.r   c                     d|vr?|xs d}t        | fddi|j                  |d      }|j                  ffd	|_        |S t        |       |j                         d   } j                  |fddi|S )Nrr   r	   w)r	   c                 6     |        xs j                         S r   )close)closerzs    r   <lambda>zunzip.<locals>.<lambda><   s    68+@qwwy r   r   )r   openr!   namelist)infiler	   filenamer
   for#   s        @r   unzipr*   7   s    
$%vF///VVH3V'!#@	A::<?166(////r   zip)BZ2Filebz2)igzipc                 2    t        j                  d| |d|S )N)fileobjr	   r   )r.   	IGzipFile)r'   r	   r
   s      r   isalr2   P   s    CvDCFCCr   gzipgzGzipFilec                     t        dd| i|S )Nr0   r   r5   )fr
   s     r   r$   r$   X   s    H$AQ$A&$A r   )LZMAFilelzmaxzT)r   c                   :     e Zd Z fdZddZddZd Zd Z xZS )
SnappyFilec                     dd l }t        |   dd d|j                  d      dz   dd| || _        d|v r |j
                         | _        y  |j                         | _        y )Nr   snappybiɚ;)fspathr	   sizer   r   )r?   super__init__stripr'   StreamDecompressorcodecStreamCompressor)selfr'   r	   r
   r?   	__class__s        r   rE   zSnappyFile.__init__m   sj     	
(C3)>Y	
RX	
 $;2224DJ0002DJr   c                     | j                   j                  d       | j                  j                  | j                   j	                               }| j
                  j                  |       y)Nr   T)bufferseekrH   	add_chunkreadr'   write)rJ   finalouts      r   _upload_chunkzSnappyFile._upload_chunky   sJ    jj""4;;#3#3#56#r   c                     t        d      )NzSnappyFile is not seekable)NotImplementedError)rJ   locwhences      r   rN   zSnappyFile.seek   s    !">??r   c                      y)NFr   )rJ   s    r   seekablezSnappyFile.seekable   s    r   c                 t    | j                   j                  ||z
        }| j                  j                  |      S )z*Get the specified set of bytes from remote)r'   rP   rH   
decompress)rJ   startenddatas       r   _fetch_rangezSnappyFile._fetch_range   s/    {{e,zz$$T**r   F)r   )	__name__
__module____qualname__rE   rT   rN   rZ   r`   __classcell__)rK   s   @r   r=   r=   l   s    
3@+r   r=   r   r?   lz4c                     d|v r%t        j                         }|j                  |       S t        j                  d      }|j	                  |       S )Nr   
   )level)zstdZstdDecompressorstream_readerZstdCompressorstream_writer)r'   r	   cctxs      r   zstandard_filerp      sI    $;((*D%%f--&&R0D%%f--r   rj   zstc                       t        t              S )z.Return a list of the implemented compressions.)listr   r   r   r   available_compressionsrt      s    ;r   ra   )rbN)ru   )"__doc__zipfiler   fsspec.utilsr   fsspec.specr   r   r   r   r*   r-   r,   ImportErrorr2   r.   r3   r6   r:   r9   lzmaffir=   r?   compress	NameErrorAttributeError	lz4.framerf   framer%   	zstandardrj   rp   rt   r   r   r   <module>r      s   ?   , 
y".J
0 UE5 )0 /D t,	62x.	!1!16Fw//TB
+% +>		FOOC :r2
			6	. 7
K  		  A4  		  		V 	Y/ 		  		  			s|   D D D+ .0D6 * E "E .E DDD('D(+D32D36D>=D>EEEEE%$E%