
    OOId                        d Z ddlm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            eded           	 ddlmZ d"dZ eded           n# e$ r ddlmZ  edd d           Y nw xY w	 ddlmZ  eded            ededd           n# e$ r Y nw xY w	 ddlZ edej        dd            edej        dd           n# e$ r Y nw xY w G d de          Z	 ddlZej          edeg            n# eeef$ r Y nw xY w	 ddlZ edej        j        d           n# e$ r Y nw xY w	 ddlZd"dZ  ede d           n# e$ r Y nw xY wd Z!dS )#z9Helper functions for a standard streaming compression API    )BZ2File)ZipFileN)AbstractBufferedFilec                     | S N )filemodekwargss      2lib/python3.11/site-packages/fsspec/compression.py	noop_filer   	   s    K    Fc                    t          |t                    r|g}| t          v r|st          d| z            |D ]-}|t          j        j        v r|st          d|d| d          .|t          | <   |D ]}| t          j        j        |<   dS )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: %sz&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}ADHIII  &,+++E+*CF33M   E$K . .)-!#&&. .r   rbc                     d|vr=|pd}t          | fddi|                    |d          }|j        ffd	|_        |S t          |           |                                d         } j        |fddi|S )Nrr	   r
   w)r
   c                 @     |             p                                 S r   )close)closerzs    r   <lambda>zunzip.<locals>.<lambda>>   s    6688+@qwwyy r   r   )r   openr#   namelist)infiler
   filenamer   for%   s        @r   unzipr,   9   s    
$%vF/////VVH3V''!#@@@@@	A::<<?16(//////r   zipbz2)igzipc                 *    t          j        d| |d|S )N)fileobjr
   r   )r/   	IGzipFile)r)   r
   r   s      r   isalr3   L   s    CvDCCFCCCr   gzipgzGzipFilec                     t          dd| i|S )Nr1   r   r6   )fr   s     r   r&   r&   T   s    H$A$AQ$A&$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                      j        dd d|                    d          dz   dd| || _        d|v r |j                    | _        d S  |j                    | _        d S )Nr   snappybiɚ;)fspathr
   sizer    r   )r@   super__init__stripr)   StreamDecompressorcodecStreamCompressor)selfr)   r
   r   r@   	__class__s        r   rF   zSnappyFile.__init__i   s     	
(C3)>Y	
 	
RX	
 	
 	
 $;;2244DJJJ0022DJJJr   Fc                     | j                             d           | j                            | j                                                   }| j                            |           dS )Nr   T)bufferseekrI   	add_chunkreadr)   write)rK   finalouts      r   _upload_chunkzSnappyFile._upload_chunku   sV    j""4;#3#3#5#566#tr   r   c                      t          d          )NzSnappyFile is not seekable)NotImplementedError)rK   locwhences      r   rO   zSnappyFile.seek{   s    !">???r   c                     dS )NFr   )rK   s    r   seekablezSnappyFile.seekable~   s    ur   c                 p    | j                             ||z
            }| j                            |          S )z*Get the specified set of bytes from remote)r)   rQ   rI   
decompress)rK   startenddatas       r   _fetch_rangezSnappyFile._fetch_range   s1    {e,,z$$T***r   F)r   )	__name__
__module____qualname__rF   rU   rO   r[   ra   __classcell__)rL   s   @r   r>   r>   h   s        
3 
3 
3 
3 
3   @ @ @ @  + + + + + + +r   r>   r@   lz4c                     d|v r(t          j                    }|                    |           S t          j        d          }|                    |           S )Nr    
   )level)zstdZstdDecompressorstream_readerZstdCompressorstream_writer)r)   r
   cctxs      r   zstandard_filerq      sT    $;;(**D%%f---&R000D%%f---r   rk   zstc                  *    t          t                    S )z.Return a list of the implemented compressions.)listr   r   r   r   available_compressionsru      s    ;;r   rb   )r   N)r   )"__doc__r.   r   zipfiler   fsspec.utilsr   fsspec.specr   r   r   r   r,   r3   r/   ImportErrorr4   r7   r;   r:   lzmaffir>   r@   compress	NameErrorAttributeError	lz4.framerg   framer'   	zstandardrk   rq   ru   r   r   r   <module>r      sw   ? ?                 , , , , , ,   
y$. $. $. $.N
0 
0 
0 
0  UE5 ) ) )  UGU + + +D D D D t,,,,   AA4    	4000xT::::: 	 	 	D		NNN!14tDDDDw/TBBBBB 	 	 	D	+ + + + +% + + +>		MMM
OO :r2222Y/ 	 	 	D			6666 	 	 	D		. . . . 7777 	 	 	D	    sl   A A76A7;"B B&%B&*,C CC1D
 
DDD5 5D=<D=E EE