
    ߧef                        d Z dgZddlZddlmZ ddlmZmZ ddlZ G d de          Z	 G d d	e          Z
 G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d  d!e          Z G d" d#e          Z G d$ d%e          Z G d& d'e          Z G d( d)e          Z G d* d+e          Z G d, d-e          Z G d. d/e          Z G d0 d1e          Z G d2 d3e          Z G d4 d5e          Z  G d6 d7e          Z! G d8 d9e          Z" G d: d;e          Z# G d< d=e          Z$ G d> d?e          Z% G d@ dAe          Z& G dB dCe          Z' G dD dEe          Z( G dF dGe          Z) G dH dIe          Z* G dJ dKe          Z+ G dL dMe          Z, G dN dOe          Z- G dP dQe          Z. G dR dSe          Z/ G dT dUe          Z0 G dV dWe          Z1 G dX dYe          Z2 G dZ d[e          Z3 G d\ d]e          Z4 G d^ d_e          Z5 G d` dae          Z6 G db dce          Z7 G dd dee          Z8df Z9dldgZ:dmdjZ;dk Z<dS )nz3Additional numcodecs implemented using imagecodecs.register_codecs    N)Codec)register_codec	get_codecc                   .    e Zd ZdZdZ	 ddZd ZddZdS )	AeczAEC codec for numcodecs.imagecodecs_aecNc                 >    || _         || _        || _        || _        d S Nbitspersampleflags	blocksizersi)selfr   r   r   r   s        5lib/python3.11/site-packages/imagecodecs/numcodecs.py__init__zAec.__init__0   s%     +
"    c                 \    t          j        || j        | j        | j        | j                  S )Nr   )imagecodecs
aec_encoder   r   r   r   r   bufs     r   encodez
Aec.encode8   s4    %,*n
 
 
 	
r   c           
      x    t          j        || j        | j        | j        | j        t          |                    S )N)r   r   r   r   out)r   
aec_decoder   r   r   r   _flatr   r   r   s      r   decodez
Aec.decodeA   s=    %,*nc


 
 
 	
r   NNNNr   __name__
__module____qualname____doc__codec_idr   r   r     r   r   r   r   +   s]        "" H CG   
 
 

 
 
 
 
 
r   r   c                   8    e Zd ZdZdZ	 	 	 	 	 	 ddZd ZddZdS )	ApngzAPNG codec for numcodecs.imagecodecs_apngNc                 Z    || _         || _        || _        || _        || _        || _        d S r   )levelstrategyfilterphotometricdelaysqueeze)r   r-   r.   r/   r0   r1   r2   s          r   r   zApng.__init__Q   s3     
 &
r   c                     t          || j                  }t          j        || j        | j        | j        | j        | j                  S )N)r-   r.   r/   r0   r1   )	_imager2   r   apng_encoder-   r.   r/   r0   r1   r   s     r   r   zApng.encodea   sJ    S$,''&*];(*
 
 
 	
r   c                 .    t          j        ||          S Nr   )r   apng_decoder   s      r   r    zApng.decodel       &s4444r   NNNNNNr   r"   r(   r   r   r*   r*   L   sj        ##!H     	
 	
 	
5 5 5 5 5 5r   r*   c                   >    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 ddZd ZddZdS )	AvifzAVIF codec for numcodecs.imagecodecs_avifNc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        d S r   )	r-   speedtilelog2r   pixelformatcodec
numthreadsindexr2   )
r   r-   r@   rA   r   rB   rC   rD   rE   r2   s
             r   r   zAvif.__init__u   sI     

 *&
$
r   c           
          t          || j                  }t          j        || j        | j        | j        | j        | j        | j	        | j
                  S )N)r-   r@   rA   r   rB   rC   rD   )r4   r2   r   avif_encoder-   r@   rA   r   rB   rC   rD   r   s     r   r   zAvif.encode   sU    S$,''&**],(*	
 	
 	
 		
r   c                 F    t          j        || j        | j        |          S )N)rE   rD   r   )r   avif_decoderE   rD   r   s      r   r    zAvif.decode   s)    &tzdo3
 
 
 	
r   )	NNNNNNNNNr   r"   r(   r   r   r=   r=   p   ss        ##!H    ,
 
 

 
 
 
 
 
r   r=   c                   $    e Zd ZdZdZd ZddZdS )BitorderzBitorder codec for numcodecs.imagecodecs_bitorderc                 *    t          j        |          S r   )r   bitorder_encoder   s     r   r   zBitorder.encode   s    *3///r   Nc                 H    t          j        |t          |                    S r7   )r   bitorder_decoder   r   s      r   r    zBitorder.decode       *3E#JJ????r   r   r#   r$   r%   r&   r'   r   r    r(   r   r   rK   rK      sH        ''%H0 0 0@ @ @ @ @ @r   rK   c                   ,    e Zd ZdZdZd	dZd Zd
dZdS )
BitshufflezBitshuffle codec for numcodecs.imagecodecs_bitshuffle   r   c                 "    || _         || _        d S r   itemsizer   )r   rY   r   s      r   r   zBitshuffle.__init__   s     "r   c                 h    t          j        || j        | j                                                  S )NrX   )r   bitshuffle_encoderY   r   tobytesr   s     r   r   zBitshuffle.encode   s0    ,$-4>
 
 

'))	r   Nc                 `    t          j        || j        | j        t	          |                    S )N)rY   r   r   )r   bitshuffle_decoderY   r   r   r   s      r   r    zBitshuffle.decode   s2    ,]nc

	
 
 
 	
r   )rV   r   r   r"   r(   r   r   rT   rT      sV        ))'H# # # #  

 
 
 
 
 
r   rT   c                   8    e Zd ZdZdZ	 	 	 	 	 	 ddZd ZddZdS )	BlosczBlosc codec for numcodecs.imagecodecs_bloscNc                 Z    || _         || _        || _        || _        || _        || _        d S r   r-   
compressortypesizer   shufflerD   r   r-   rd   re   r   rf   rD   s          r   r   zBlosc.__init__   2     
$ "$r   c           	          t          j        |          }t          j        || j        | j        | j        | j        | j        | j	                  S Nrc   )
numpyasarrayr   blosc_encoder-   rd   re   r   rf   rD   r   s     r   r   zBlosc.encode   sL    mC  '*]nL
 
 
 	
r   c                 T    t          j        || j        t          |                    S N)rD   r   )r   blosc_decoderD   r   r   s      r   r    zBlosc.decode   s+    'DOs
 
 
 	
r   r;   r   r"   r(   r   r   r`   r`      sj        $$"H % % % % 

 

 


 
 
 
 
 
r   r`   c                   8    e Zd ZdZdZ	 	 	 	 	 	 ddZd ZddZdS )	Blosc2zBlosc2 codec for numcodecs.imagecodecs_blosc2Nc                 Z    || _         || _        || _        || _        || _        || _        d S r   rc   rg   s          r   r   zBlosc2.__init__   rh   r   c           	          t          j        |          }t          j        || j        | j        | j        | j        | j        | j	                  S rj   )
rk   rl   r   blosc2_encoder-   rd   re   r   rf   rD   r   s     r   r   zBlosc2.encode   sL    mC  (*]nL
 
 
 	
r   c                 T    t          j        || j        t          |                    S ro   )r   blosc2_decoderD   r   r   s      r   r    zBlosc2.decode	  s+    (DOs
 
 
 	
r   r;   r   r"   r(   r   r   rr   rr      sj        %%#H % % % % 

 

 


 
 
 
 
 
r   rr   c                   ,    e Zd ZdZdZddZd ZddZdS )	BrotlizBrotli codec for numcodecs.imagecodecs_brotliNc                 0    || _         || _        || _        d S r   r-   modelgwin)r   r-   r~   r   s       r   r   zBrotli.__init__  s    
	


r   c                 P    t          j        || j        | j        | j                  S )Nr}   )r   brotli_encoder-   r~   r   r   s     r   r   zBrotli.encode  s+    (tz	
 
 
 	
r   c                 H    t          j        |t          |                    S r7   )r   brotli_decoder   r   s      r   r    zBrotli.decode      (%**====r   )NNNr   r"   r(   r   r   rz   rz     sV        %%#H   

 
 

> > > > > >r   rz   c                   .    e Zd ZdZdZ	 d
dZd Zdd	ZdS )ByteShufflez ByteShuffle codec for numcodecs.imagecodecs_byteshufflerV   Fc                     t          |          | _        t          j        |          j        | _        || _        || _        t          |          | _        t          |          | _	        d S r   )
tupleshaperk   dtypestraxisdistbooldeltareorder)r   r   r   r   r   r   r   s          r   r   zByteShuffle.__init__'  sQ     5\\
[''+
		%[[
G}}r   c                     t          j        |          }|j        | j        k    sJ |j        | j        k    sJ t	          j        || j        | j        | j        | j	                  
                                S )N)r   r   r   r   )rk   rl   r   r   r   byteshuffle_encoder   r   r   r   r\   r   s     r   r   zByteShuffle.encode1  sw    mC  yDJ&&&&yDJ&&&&-*L
 
 
 '))	r   Nc                     t          |t          j                  s( t          j        || j                  j        | j         }t          j        || j	        | j
        | j        | j        |          S )Nr   )r   r   r   r   r   )
isinstancerk   ndarray
frombufferr   reshaper   r   byteshuffle_decoder   r   r   r   r   s      r   r    zByteShuffle.decode=  sn    #u}-- 	OA%"3dj999A4:NC-*L
 
 
 	
r   )r   rV   FFr   r"   r(   r   r   r   r   "  s]        **(H CH% % % %
 
 


 

 

 

 

 

r   r   c                   ,    e Zd ZdZdZddZd ZddZdS )Bz2zBz2 codec for numcodecs.imagecodecs_bz2Nc                     || _         d S r   r-   r   r-   s     r   r   zBz2.__init__O      


r   c                 8    t          j        || j                  S Nr   )r   
bz2_encoder-   r   s     r   r   z
Bz2.encodeR  s    %c<<<<r   c                 H    t          j        |t          |                    S r7   )r   
bz2_decoder   r   s      r   r    z
Bz2.decodeU      %cuSzz::::r   r   r"   r(   r   r   r   r   J  sV        "" H   = = =; ; ; ; ; ;r   r   c                   ,    e Zd ZdZdZd ZddZddZdS )CmszCMS codec for numcodecs.imagecodecs_cmsc                     d S r   r(   )r   argskwargss      r   r   zCms.__init__^      r   Nc                     t           r   NotImplementedErrorr   s      r   r   z
Cms.encodea      !!r   c                     t           r   r   r   s      r   r    z
Cms.decodee  r   r   r   r"   r(   r   r   r   r   Y  sV        "" H  " " " "" " " " " "r   r   c                   ,    e Zd ZdZdZddZd Zd	dZdS )
DeflatezDeflate codec for numcodecs.imagecodecs_deflateNFc                 <    || _         t          |          | _        d S r   )r-   r   raw)r   r-   r   s      r   r   zDeflate.__init__o  s    
99r   c                 D    t          j        || j        | j                  S )N)r-   r   )r   deflate_encoder-   r   r   s     r   r   zDeflate.encodes  s    )#TZTXNNNNr   c                 T    t          j        |t          |          | j                  S )N)r   r   )r   deflate_decoder   r   r   s      r   r    zDeflate.decodev  s"    )#5::48LLLLr   )NFr   r"   r(   r   r   r   r   j  s_        &&$H   O O OM M M M M Mr   r   c                   ,    e Zd ZdZdZd	dZd Zd
dZdS )DeltazDelta codec for numcodecs.imagecodecs_deltaNr   rV   c                     |d nt          |          | _        |d nt          j        |          j        | _        || _        || _        d S r   r   r   rk   r   r   r   r   r   r   r   r   r   s        r   r   zDelta.__init__  sE    "]TTe
"]TTE0B0B0F
				r   c                     | j         | j        8t          j        |          }|j         | j         k    sJ |j        | j        k    sJ t	          j        || j        | j                                                  S N)r   r   )	r   r   rk   rl   r   delta_encoder   r   r\   r   s     r   r   zDelta.encode  sx    :!TZ%;-$$C9
****9
****'didi
 
 

'))	r   c                     | j         | j        ( t          j        || j                  j        | j          }t          j        || j        | j        |          S Nr   )r   r   r   )	r   r   rk   r   r   r   delta_decoder   r   r   s      r   r    zDelta.decode  s[    :!TZ%;A%"3dj999A4:NC'didiS
 
 
 	
r   )NNr   rV   r   r"   r(   r   r   r   r   z  sV        $$"H     
 
 
 
 
 
r   r   c                   ,    e Zd ZdZdZddZd ZddZdS )	Float24zFloat24 codec for numcodecs.imagecodecs_float24Nc                 "    || _         || _        d S r   	byteorderrounding)r   r   r   s      r   r   zFloat24.__init__  s    " r   c                 l    t          j        |          }t          j        || j        | j                  S )Nr   )rk   rl   r   float24_encoder   r   r   s     r   r   zFloat24.encode  s6    mC  )4>DM
 
 
 	
r   c                 :    t          j        || j        |          S )N)r   r   )r   float24_decoder   r   s      r   r    zFloat24.decode  s%    )4>s
 
 
 	
r   NNr   r"   r(   r   r   r   r     sV        &&$H! ! ! !
 
 

 
 
 
 
 
r   r   c                   ,    e Zd ZdZdZd	dZd Zd
dZdS )	FloatPredz-Floating Point Predictor codec for numcodecs.imagecodecs_floatpredr   rV   c                     t          |          | _        t          j        |          j        | _        || _        || _        d S r   r   r   s        r   r   zFloatPred.__init__  s5    5\\
[''+
				r   c                     t          j        |          }|j        | j        k    sJ |j        | j        k    sJ t	          j        || j        | j                                                  S r   )	rk   rl   r   r   r   floatpred_encoder   r   r\   r   s     r   r   zFloatPred.encode  si    mC  yDJ&&&&yDJ&&&&+didi
 
 

'))	r   Nc                     t          |t          j                  s( t          j        || j                  j        | j         }t          j        || j	        | j
        |          S r   )r   rk   r   r   r   r   r   r   floatpred_decoder   r   r   s      r   r    zFloatPred.decode  sa    #u}-- 	OA%"3dj999A4:NC+didiS
 
 
 	
r   )r   rV   r   r"   r(   r   r   r   r     sV        77&H     
 
 
 
 
 
r   r   c                   ,    e Zd ZdZdZddZd ZddZdS )GifzGIF codec for numcodecs.imagecodecs_gifNc                     || _         d S r   r2   r   r2   s     r   r   zGif.__init__      r   c                 T    t          || j                  }t          j        |          S r   )r4   r2   r   
gif_encoder   s     r   r   z
Gif.encode  $    S$,''%c***r   c                 0    t          j        |d|          S )NF)asrgbr   )r   
gif_decoder   s      r   r    z
Gif.decode  s    %cC@@@@r   r   r"   r(   r   r   r   r     s\        "" H   + + +A A A A A Ar   r   c                   :    e Zd ZdZdZ	 	 	 	 	 	 	 ddZd ZddZdS )	HeifzHEIF codec for numcodecs.imagecodecs_heifNc                 h    || _         || _        || _        || _        || _        || _        || _        d S r   )r-   r   r0   compressionrD   rE   r2   )r   r-   r   r0   r   rD   rE   r2   s           r   r   zHeif.__init__  s<     
*&&$
r   c                     t          || j                  }t          j        || j        | j        | j        | j        | j                  S )N)r-   r   r0   r   rD   )	r4   r2   r   heif_encoder-   r   r0   r   rD   r   s     r   r   zHeif.encode  sL    S$,''&*,((
 
 
 	
r   c                 R    t          j        || j        | j        | j        |          S )N)rE   r0   rD   r   )r   heif_decoderE   r0   rD   r   s      r   r    zHeif.decode  s2    &*(
 
 
 	
r   )NNNNNNNr   r"   r(   r   r   r   r     sm        ##!H    $	
 	
 	

 
 
 
 
 
r   r   c                   4    e Zd ZdZdZ	 	 	 	 ddZd ZddZdS )	JetrawzJetraw codec for numcodecs.imagecodecs_jetrawNc                 h    || _         || _        || _        || _        t	          j        ||           d S r   )r   
identifier
errorboundr2   r   jetraw_init)r   r   r   
parameters	verbosityr   r2   s          r   r   zJetraw.__init__  s9     
$$
I66666r   c                 n    t          || j                  }t          j        || j        | j                  S )N)r   r   )r4   r2   r   jetraw_encoder   r   r   s     r   r   zJetraw.encode  s8    S$,''(DO
 
 
 	
r   c                 z    |$t          j        | j        t           j                  }t	          j        ||          S r7   )rk   emptyr   uint16r   jetraw_decoder   s      r   r    zJetraw.decode  s2    ;+dj%,77C(#6666r   r!   r   r"   r(   r   r   r   r     sd        %%#H 7 7 7 7
 
 
7 7 7 7 7 7r   r   c                   \    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 d	dZd Zd
dZd Ze	d             Z
dS )JpegzJPEG codec for numcodecs.imagecodecs_jpegNc                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        d S r   )
tablesheaderr   colorspace_datacolorspace_jpegr-   subsamplingoptimize	smoothingr2   )r   r   r  r  r	  r
  r-   r  r  r  r2   s              r   r   zJpeg.__init__'  sR     *..
& "r   c           	          t          || j                  }t          j        || j        | j        | j        | j        | j        | j	                  S )N)r-   
colorspaceoutcolorspacer  r  r  )
r4   r2   r   jpeg_encoder-   r	  r
  r  r  r  r   s     r   r   zJpeg.encode?  sQ    S$,''&*+.(]n
 
 
 	
r   c           	      j    t          j        || j        | j        | j        | j        | j        |          S )N)r   r  r  r  r  r   )r   jpeg_decoder   r  r  r
  r	  r   s      r   r    zJpeg.decodeK  s>    &,;;+.
 
 
 	
r   c                     t          | j                  }| j        D ]]}|                    d          sFt	          | |          }|/|dv r+ddl}|                    |                                          }|||<   ^|S )z3Return dictionary holding configuration parameters.)id_Nr  r  r   )dictr'   __dict__
startswithgetattrbase64	b64encoder    )r   configkeyvaluer  s        r   
get_configzJpeg.get_configV  s    '''= 	$ 	$C>>#&& $c**$0D)D)D!MMM",,U33::<<E#sr   c                     dD ]]}|                     |d          }|Ct          |t                    r.ddl}|                    |                                          ||<   ^ | di |S )z,Instantiate codec from configuration object.r  Nr   r(   )getr   r   r  	b64decoder   )clsr  r  r   r  s        r   from_configzJpeg.from_configc  sv     ( 	? 	?CJJsD))E Zs%;%; $..u||~~>>ss}}V}}r   )
NNNNNNNNNNr   )r#   r$   r%   r&   r'   r   r   r    r!  classmethodr&  r(   r   r   r  r  "  s        ##!H    0

 

 

	
 	
 	
 	
     [  r   r  c                   @    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 ddZd Zd	dZdS )
Jpeg2kzJPEG 2000 codec for numcodecs.imagecodecs_jpeg2kNr   c                     || _         || _        || _        |d nt          |          | _        || _        || _        || _        || _        |
| _	        |	| _
        d S r   )r-   codecformatr  r   tile
reversibler   resolutionsrD   verboser2   )r   r-   r,  r  r-  r.  r   r/  rD   r2   r0  s              r   r   zJpeg2k.__init__t  s_     
&$ LDDeDkk	$*&$r   c                     t          || j                  }t          j        || j        | j        | j        | j        | j        | j	        | j
        | j        | j        
  
        S )N)	r-   r,  r  r-  r.  r   r/  rD   r0  )r4   r2   r   jpeg2k_encoder-   r,  r  r-  r.  r   r/  rD   r0  r   s     r   r   zJpeg2k.encode  s`    S$,''(*(,(L
 
 
 	
r   c                 F    t          j        || j        | j        |          S )N)r0  rD   r   )r   jpeg2k_decoder0  rD   r   s      r   r    zJpeg2k.decode  s)    ($/s
 
 
 	
r   )
NNNNNNNNNr   r   r"   r(   r   r   r)  r)  o  sv        ((#H    0
 
 

 
 
 
 
 
r   r)  c                   ,    e Zd ZdZdZddZd ZddZdS )	JpegLszJPEG LS codec for numcodecs.imagecodecs_jpeglsNc                 "    || _         || _        d S r   r-   r2   r   r-   r2   s      r   r   zJpegLs.__init__      
r   c                 b    t          || j                  }t          j        || j                  S r   )r4   r2   r   jpegls_encoder-   r   s     r   r   zJpegLs.encode  s+    S$,''(DJ????r   c                 .    t          j        ||          S r7   )r   jpegls_decoder   s      r   r    zJpegLs.decode  s    (#6666r   r   r   r"   r(   r   r   r6  r6    sY        &&#H   @ @ @7 7 7 7 7 7r   r6  c                   F    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 ddZd ZddZdS )	JpegXlzJPEG XL codec for numcodecs.imagecodecs_jpegxlNc                     || _         || _        || _        |d u pt          |          | _        || _        || _        || _        || _        |	| _	        || _
        || _        || _        |
| _        d S r   )r-   effortdistancer   losslessdecodingspeedr   r0   planarusecontainerrE   keeporientationrD   r2   )r   r-   rD  rE  rF  rG  r   r0   rH  rI  r2   rE   rJ  rD   s                 r   r   zJpegXl.__init__  sx    & 
  D(:DNN**&(
.$r   c                     t          || j                  }t          j        || j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j                  S )N)
r-   rD  rE  rF  rG  r   r0   rH  rI  rD   )r4   r2   r   jpegxl_encoder-   rD  rE  rF  rG  r   r0   rH  rI  rD   r   s     r   r   zJpegXl.encode  sf    S$,''(*;]],,(;*
 
 
 	
r   c                 R    t          j        || j        | j        | j        |          S )N)rE   rJ  rD   r   )r   jpegxl_decoderE   rJ  rD   r   s      r   r    zJpegXl.decode  s2    (* 0
 
 
 	
r   )NNNNNNNNNNNNNr   r"   r(   r   r   rA  rA    s        &&#H
 #   B
 
 
 
 
 
 
 
 
r   rA  c                   8    e Zd ZdZdZ	 	 	 	 	 	 ddZd ZddZdS )	JpegXrzJPEG XR codec for numcodecs.imagecodecs_jpegxrNc                 Z    || _         || _        || _        || _        || _        || _        d S r   )r-   r0   hasalpha
resolutionfp2intr2   )r   r-   r0   rS  rT  rU  r2   s          r   r   zJpegXr.__init__  s3     
& $r   c                     t          || j                  }t          j        || j        | j        | j        | j                  S )N)r-   r0   rS  rT  )r4   r2   r   jpegxr_encoder-   r0   rS  rT  r   s     r   r   zJpegXr.encode  sE    S$,''(*(]
 
 
 	
r   c                 :    t          j        || j        |          S )N)rU  r   )r   jpegxr_decoderU  r   s      r   r    zJpegXr.decode  s    (T[cJJJJr   r;   r   r"   r(   r   r   rP  rP    sp        &&#H     
 
 
K K K K K Kr   rP  c                   8    e Zd ZdZdZ	 	 	 	 	 	 ddZd ZddZdS )	LerczLERC codec for numcodecs.imagecodecs_lercNc                 t    || _         || _        t          |          | _        || _        || _        || _        d S r   )r-   versionr   rH  r2   r   compressionargs)r   r-   r^  rH  r   r_  r2   s          r   r   zLerc.__init__  s<     
6ll&.r   c                     t          || j                  }t          j        || j        | j        | j        | j        | j                  S )N)r-   r^  rH  r   r_  )	r4   r2   r   lerc_encoder-   r^  rH  r   r_  r   s     r   r   zLerc.encode,  sK    S$,''&*L;( 0
 
 
 	
r   c                 .    t          j        ||          S r7   )r   lerc_decoder   s      r   r    zLerc.decode7  r:   r   r;   r   r"   r(   r   r   r[  r[    sj        ##!H / / / /$	
 	
 	
5 5 5 5 5 5r   r[  c                   ,    e Zd ZdZdZddZd ZddZdS )	LjpegzLJPEG codec for numcodecs.imagecodecs_ljpegNc                 "    || _         || _        d S r   )r   r2   )r   r   r2   s      r   r   zLjpeg.__init__@  s    *r   c                 b    t          || j                  }t          j        || j                  S )N)r   )r4   r2   r   ljpeg_encoder   r   s     r   r   zLjpeg.encodeD  s,    S$,'''4;MNNNNr   c                 .    t          j        ||          S r7   )r   ljpeg_decoder   s      r   r    zLjpeg.decodeH  s    '5555r   r   r   r"   r(   r   r   re  re  ;  sY        $$"H   O O O6 6 6 6 6 6r   re  c                   ,    e Zd ZdZdZd	dZd Zd
dZdS )Lz4zLZ4 codec for numcodecs.imagecodecs_lz4NFTc                 J    || _         || _        t          |          | _        d S r   )r-   hcr   r  )r   r-   rp  r  s       r   r   zLz4.__init__Q  s!    
6llr   c                 P    t          j        || j        | j        | j                  S )N)r-   rp  r  )r   
lz4_encoder-   rp  r  r   s     r   r   z
Lz4.encodeV  s+    %tzdgdk
 
 
 	
r   c                 T    t          j        || j        t          |                    S N)r  r   )r   
lz4_decoder  r   r   s      r   r    z
Lz4.decode[  "    %c$+5::NNNNr   NFTr   r"   r(   r   r   rm  rm  L  s\        "" H# # # #

 
 

O O O O O Or   rm  c                   4    e Zd ZdZdZ	 	 	 	 ddZd Zd	dZdS )
Lz4fzLZ4F codec for numcodecs.imagecodecs_lz4fNFc                 >    || _         || _        || _        || _        d S r   r-   blocksizeidcontentchecksumblockchecksum)r   r-   r}  r~  r  s        r   r   zLz4f.__init__d  s)     
&.*r   c                 \    t          j        || j        | j        | j        | j                  S )Nr|  )r   lz4f_encoder-   r}  r~  r  r   s     r   r   zLz4f.encodep  s6    &*( 0,
 
 
 	
r   c                 H    t          j        |t          |                    S r7   )r   lz4f_decoder   r   s      r   r    zLz4f.decodey      &sc

;;;;r   )NFNNr   r"   r(   r   r   ry  ry  _  sd        ##!H 
+ 
+ 
+ 
+
 
 
< < < < < <r   ry  c                   ,    e Zd ZdZdZddZd Zd	dZdS )
LzfzLZF codec for numcodecs.imagecodecs_lzfTc                 .    t          |          | _        d S r   )r   r  )r   r  s     r   r   zLzf.__init__  s    6llr   c                 8    t          j        || j                  S )N)r  )r   
lzf_encoder  r   s     r   r   z
Lzf.encode  s    %c$+>>>>r   Nc                 T    t          j        || j        t          |                    S rt  )r   
lzf_decoder  r   r   s      r   r    z
Lzf.decode  rv  r   )Tr   r"   r(   r   r   r  r  }  s\        "" H# # # #? ? ?O O O O O Or   r  c                   *    e Zd ZdZdZd Zd ZddZdS )LzfsezLZFSE codec for numcodecs.imagecodecs_lzfsec                     d S r   r(   )r   s    r   r   zLzfse.__init__  r   r   c                 *    t          j        |          S r   )r   lzfse_encoder   s     r   r   zLzfse.encode  s    ',,,r   Nc                 H    t          j        |t          |                    S r7   )r   lzfse_decoder   r   s      r   r    zLzfse.decode      's<<<<r   r   r"   r(   r   r   r  r    sQ        $$"H  - - -= = = = = =r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )LzhamzLZHAM codec for numcodecs.imagecodecs_lzhamNc                     || _         d S r   r   r   s     r   r   zLzham.__init__  r   r   c                 8    t          j        || j                  S r   )r   lzham_encoder-   r   s     r   r   zLzham.encode  s    '4:>>>>r   c                 H    t          j        |t          |                    S r7   )r   lzham_decoder   r   s      r   r    zLzham.decode  r  r   r   r"   r(   r   r   r  r    sV        $$"H   ? ? ?= = = = = =r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )	LzmazLZMA codec for numcodecs.imagecodecs_lzmaNc                 "    || _         || _        d S r   r-   check)r   r-   r  s      r   r   zLzma.__init__  s    



r   c                 D    t          j        || j        | j                  S )Nr  )r   lzma_encoder-   r  r   s     r   r   zLzma.encode  s    &s$*DJOOOOr   c                 H    t          j        |t          |                    S r7   )r   lzma_decoder   r   s      r   r    zLzma.decode  r  r   r   r   r"   r(   r   r   r  r    sY        ##!H   P P P< < < < < <r   r  c                   $    e Zd ZdZdZd ZddZdS )LzwzLZW codec for numcodecs.imagecodecs_lzwc                 *    t          j        |          S r   )r   
lzw_encoder   s     r   r   z
Lzw.encode  s    %c***r   Nc                 H    t          j        |t          |                    S r7   )r   
lzw_decoder   r   s      r   r    z
Lzw.decode  r   r   r   rR   r(   r   r   r  r    sB        "" H+ + +; ; ; ; ; ;r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )PackBitszPackBits codec for numcodecs.imagecodecs_packbitsNc                     || _         d S r   r   )r   r   s     r   r   zPackBits.__init__  s    			r   c                     t          |t          t          f          st          j        |          }t          j        || j                  S Nr  )r   bytes	bytearrayrk   rl   r   packbits_encoder   r   s     r   r   zPackBits.encode  s@    #y122 	%-$$C*3TY????r   c                 H    t          j        |t          |                    S r7   )r   packbits_decoder   r   s      r   r    zPackBits.decode  rQ   r   r   r"   r(   r   r   r  r    s_        ''%H   @ @ @
@ @ @ @ @ @r   r  c                   ,    e Zd ZdZdZddZd Zd	dZdS )
PglzzPGLZ codec for numcodecs.imagecodecs_pglzTNc                 <    t          |          | _        || _        d S r   )r   r  r.   )r   r  r.   s      r   r   zPglz.__init__  s    6ll r   c                 D    t          j        || j        | j                  S )N)r.   r  )r   pglz_encoder.   r  r   s     r   r   zPglz.encode  s'    &$-
 
 
 	
r   c                 T    t          j        || j        t          |                    S rt  )r   pglz_decoder  r   r   s      r   r    zPglz.decode  s"    &s4;E#JJOOOOr   )TNr   r"   r(   r   r   r  r    s\        ##!H! ! ! !
 
 

P P P P P Pr   r  c                   ,    e Zd ZdZdZddZd ZddZdS )	PngzPNG codec for numcodecs.imagecodecs_pngNc                 >    || _         || _        || _        || _        d S r   )r-   r.   r/   r2   )r   r-   r.   r/   r2   s        r   r   zPng.__init__  s"    
 r   c                 z    t          || j                  }t          j        || j        | j        | j                  S )N)r-   r.   r/   )r4   r2   r   
png_encoder-   r.   r/   r   s     r   r   z
Png.encode  s?    S$,''%*];	
 
 
 	
r   c                 .    t          j        ||          S r7   )r   
png_decoder   s      r   r    z
Png.decode      %cs3333r   r!   r   r"   r(   r   r   r  r    sV        "" H   
 
 
4 4 4 4 4 4r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )QoizQOI codec for numcodecs.imagecodecs_qoiNc                     || _         d S r   r   r   s     r   r   zQoi.__init__  r   r   c                 T    t          || j                  }t          j        |          S r   )r4   r2   r   
qoi_encoder   s     r   r   z
Qoi.encode	  r   r   c                 .    t          j        ||          S r7   )r   
qoi_decoder   s      r   r    z
Qoi.decode  r  r   r   r"   r(   r   r   r  r    sV        "" H   + + +4 4 4 4 4 4r   r  c                   ,    e Zd ZdZdZddZd Zd	dZdS )
RgbezRGBE codec for numcodecs.imagecodecs_rgbeFNc                     |s|t          d          |r|d         dk    rt          d          || _        t          |          | _        |d nt          |          | _        || _        d S )Nz$must specify data shape if no headerr      zinvalid shape)
ValueErrorr   r   r  rler2   )r   r  r   r  r2   s        r   r   zRgbe.__init__  st     	E%-CDDD 	.U2Y!^^_---
6ll;44DIIr   c                 n    t          || j                  }t          j        || j        | j                  S )N)r  r  )r4   r2   r   rgbe_encoder  r  r   s     r   r   zRgbe.encode   s/    S$,''&s4;DHMMMMr   c                     |+| j         s$t          j        | j        t          j                  }t          j        || j         | j        |          S )N)r  r  r   )r  rk   r   r   float32r   rgbe_decoder  r   s      r   r    zRgbe.decode$  sI    ;t{;+dj%-88C&s
 
 
 	
r   )FNNNr   r"   r(   r   r   r  r    sY        ##!H   N N N
 
 
 
 
 
r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )RcompzRcomp codec for numcodecs.imagecodecs_rcompNc                 x    t          |          | _        t          j        |          j        | _        || _        d S r   )r   r   rk   r   r   nblock)r   r   r   r  s       r   r   zRcomp.__init__1  s.    5\\
[''+
r   c                 8    t          j        || j                  S )N)r  )r   rcomp_encoder  r   s     r   r   zRcomp.encode6  s    'DK@@@@r   c                 R    t          j        || j        | j        | j        |          S )N)r   r   r  r   )r   rcomp_decoder   r   r  r   s      r   r    zRcomp.decode9  s1    '**;
 
 
 	
r   r   r"   r(   r   r   r  r  ,  sY        $$"H   
A A A
 
 
 
 
 
r   r  c                   $    e Zd ZdZdZd ZddZdS )SnappyzSnappy codec for numcodecs.imagecodecs_snappyc                 *    t          j        |          S r   )r   snappy_encoder   s     r   r   zSnappy.encodeH      (---r   Nc                 H    t          j        |t          |                    S r7   )r   snappy_decoder   r   s      r   r    zSnappy.decodeK  r   r   r   rR   r(   r   r   r  r  C  B        %%#H. . .> > > > > >r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )	SpngzSPNG codec for numcodecs.imagecodecs_spngNc                 "    || _         || _        d S r   r9  r:  s      r   r   zSpng.__init__T  r;  r   c                 b    t          || j                  }t          j        || j                  S r   )r4   r2   r   spng_encoder-   r   s     r   r   zSpng.encodeX  s+    S$,''&s$*====r   c                 .    t          j        ||          S r7   )r   spng_decoder   s      r   r    zSpng.decode\  r:   r   r   r   r"   r(   r   r   r  r  O  sV        ##!H   > > >5 5 5 5 5 5r   r  c                   ,    e Zd ZdZdZddZd Zd	dZdS )
TiffzTIFF codec for numcodecs.imagecodecs_tiffNr   c                 J    || _         t          |          | _        || _        d S r   )rE   r   r   r0  )r   rE   r   r0  s       r   r   zTiff.__init__e  s!    
%[[
r   c                 T    t          || j                  }t          j        |          S r   )r4   r2   r   tiff_encoder   s     r   r   zTiff.encodej  s$    S$,''&s+++r   c                 R    t          j        || j        | j        | j        |          S )N)rE   r   r0  r   )r   tiff_decoderE   r   r0  r   s      r   r    zTiff.decodeo  s1    &**L
 
 
 	
r   )NNr   r   r"   r(   r   r   r  r  `  sV        ##!H   
, , ,

 
 
 
 
 
r   r  c                   6    e Zd ZdZdZ	 	 	 	 	 ddZd ZddZdS )	WebpzWebP codec for numcodecs.imagecodecs_webpNc                 f    || _         t          |          | _        || _        || _        || _        d S r   )r-   r   rS  methodrF  r2   )r   r-   rF  r  rS  r2   s         r   r   zWebp.__init__~  s1     
X r   c                 z    t          || j                  }t          j        || j        | j        | j                  S )N)r-   rF  r  )r4   r2   r   webp_encoder-   rF  r  r   s     r   r   zWebp.encode  s<    S$,''&tzDM$+
 
 
 	
r   c                 :    t          j        || j        |          S )N)rS  r   )r   webp_decoderS  r   s      r   r    zWebp.decode  s    &sT]LLLLr   )NNNNNr   r"   r(   r   r   r  r  y  sm        ##!H    
 
 
M M M M M Mr   r  c                   ,    e Zd ZdZdZddZd Zd	dZdS )
XorzXOR codec for numcodecs.imagecodecs_xorNr   c                     |d nt          |          | _        |d nt          j        |          j        | _        || _        d S r   )r   r   rk   r   r   r   )r   r   r   r   s       r   r   zXor.__init__  s>    "]TTe
"]TTE0B0B0F
			r   c                     | j         | j        8t          j        |          }|j         | j         k    sJ |j        | j        k    sJ t	          j        || j                                                  S r  )r   r   rk   rl   r   
xor_encoder   r\   r   s     r   r   z
Xor.encode  sn    :!TZ%;-$$C9
****9
****%c	:::BBDDDr   c                     | j         | j        ( t          j        || j                  j        | j          }t          j        || j        t          |                    S )Nr   )r   r   )	r   r   rk   r   r   r   
xor_decoder   r   r   s      r   r    z
Xor.decode  sT    :!TZ%;A%"3dj999A4:NC%c	uSzzJJJJr   )NNr   r   r"   r(   r   r   r  r    s_        "" H   
E E EK K K K K Kr   r  c                   >    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 ddZd Zd	dZdS )
ZfpzZFP codec for numcodecs.imagecodecs_zfpNTc
                 ^   |	rd | _         d | _        d | _        n]||t          d          t	          |          | _         t          j        |          j        | _        |d nt	          |          | _        || _        || _        || _	        || _
        || _        t          |	          | _        d S )Nzinvalid shape or dtype)r   r   stridesr  r   rk   r   r-   r~   	executionrD   	chunksizer   r  )
r   r   r   r  r-   r~   r  rD   r  r  s
             r   r   zZfp.__init__  s      		GDJDJDLL]em5666uDJU++/DJ#*?44gDL
	"$"6llr   c           	          t          j        |          }| j        s$|j        | j        k    sJ |j        | j        k    sJ t          j        || j        | j        | j	        | j        | j
        | j                  S )N)r-   r~   r  r  rD   r  )rk   rl   r  r   r   r   
zfp_encoder-   r~   r  rD   r  r   s     r   r   z
Zfp.encode  s    mC  { 	+9
****9
****%*n;n
 
 
 	
r   c                     | j         rt          j        ||          S t          j        || j        t	          j        | j                  | j        | j        |          S )Nr8   )r   r   r  rD   r   )r  r   
zfp_decoder   rk   r   r  rD   r   s      r   r    z
Zfp.decode  s`    ; 	8)#37777%*+dj))L
 
 
 	
r   )	NNNNNNNNTr   r"   r(   r   r   r  r    ss        "" H # # # #:
 
 


 

 

 

 

 

r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )ZlibzZlib codec for numcodecs.imagecodecs_zlibNc                     || _         d S r   r   r   s     r   r   zZlib.__init__  r   r   c                 8    t          j        || j                  S r   )r   zlib_encoder-   r   s     r   r   zZlib.encode      &s$*====r   c                 H    t          j        |t          |                    S r7   )r   zlib_decoder   r   s      r   r    zZlib.decode  r  r   r   r"   r(   r   r   r  r    sV        ##!H   > > >< < < < < <r   r  c                   ,    e Zd ZdZdZddZd ZddZdS )ZlibngzZlibng codec for numcodecs.imagecodecs_zlibngNc                     || _         d S r   r   r   s     r   r   zZlibng.__init__  r   r   c                 8    t          j        || j                  S r   )r   zlibng_encoder-   r   s     r   r   zZlibng.encode  s    (DJ????r   c                 H    t          j        |t          |                    S r7   )r   zlibng_decoder   r   s      r   r    zZlibng.decode  r   r   r   r"   r(   r   r   r(  r(    sY        %%#H   @ @ @> > > > > >r   r(  c                   $    e Zd ZdZdZd ZddZdS )ZopflizZopfli codec for numcodecs.imagecodecs_zopflic                 *    t          j        |          S r   )r   zopfli_encoder   s     r   r   zZopfli.encode  r  r   Nc                 H    t          j        |t          |                    S r7   )r   zopfli_decoder   r   s      r   r    zZopfli.decode  r   r   r   rR   r(   r   r   r0  r0  	  r  r   r0  c                   ,    e Zd ZdZdZddZd ZddZdS )ZstdzZStandard codec for numcodecs.imagecodecs_zstdNc                     || _         d S r   r   r   s     r   r   zZstd.__init__  r   r   c                 8    t          j        || j                  S r   )r   zstd_encoder-   r   s     r   r   zZstd.encode  r$  r   c                 H    t          j        |t          |                    S r7   )r   zstd_decoder   r   s      r   r    zZstd.decode   r  r   r   r"   r(   r   r   r7  r7    sV        ((!H   > > >< < < < < <r   r7  c                 r    | dS t          |           }|j        s|j        sdS |                    d          S )z;Return numpy array as contiguous view of bytes if possible.NB)
memoryviewreadonly
contiguouscast)r   views     r   r   r   $  s?    
{tc??D} DO t99S>>r   c                    |&t          j        t          j        |                     S t          j        |           }|s|S t	          d t          | j        |          D                       }|                    |          S )zAReturn buffer as squeezed numpy array with at least 2 dimensions.Nc              3   $   K   | ]\  }}||V  d S r   r(   ).0ijs      r   	<genexpr>z_image.<locals>.<genexpr>5  s+      AA1qA!AAAAAAr   )rk   
atleast_2dr2   rl   r   zipr   r   )r   r2   arrr   s       r   r4   r4   .  sx    c 2 2333
-

C 
AACIw 7 7AAAAAE;;ur   FTc                    t                                                      D ]\  }}t          |d          r|dk    r| 
|j        | vr(	 	 t	          d|j        i           n# t
          $ r Y nw xY w|s|rt          d|j        d           n|rt          d|j                   n# t          $ r Y nw xY wt          |           dS )z.Register codecs in this module with numcodecs.r'   r   Nr  z	numcodec z already registeredzreplacing registered numcodec )	globalsitemshasattrr'   r   	TypeErrorlog_warningr  r   )codecsforcer0  namer%  s        r   r   r   9  s3   YY__&&  	csJ'' 	47??#,f"<"<	O4.////      GCLGGG    OMS\MMNNN  	 	 	D	 	s/ s0   A"!B)"
A/,B).A//B))
B65B6c                 `    ddl } |                    t                    j        | g|R i | dS )zLog message with level WARNING.r   N)logging	getLoggerr#   warning)msgr   r   rX  s       r   rS  rS  U  sB    NNN'Gh'=d===f=====r   r   rw  )=r&   __all__rk   numcodecs.abcr   numcodecs.registryr   r   r   r   r*   r=   rK   rT   r`   rr   rz   r   r   r   r   r   r   r   r   r   r   r  r)  r6  rA  rP  r[  re  rm  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r0  r7  r   r4   r   rS  r(   r   r   <module>r_     s  @ : 9
        8 8 8 8 8 8 8 8    
 
 
 
 
% 
 
 
B!5 !5 !5 !5 !55 !5 !5 !5H+
 +
 +
 +
 +
5 +
 +
 +
\	@ 	@ 	@ 	@ 	@u 	@ 	@ 	@
 
 
 
 
 
 
 
.$
 $
 $
 $
 $
E $
 $
 $
N$
 $
 $
 $
 $
U $
 $
 $
N> > > > >U > > >&%
 %
 %
 %
 %
% %
 %
 %
P; ; ; ; ;% ; ; ;" " " " "% " " ""M M M M Me M M M 
 
 
 
 
E 
 
 
8
 
 
 
 
e 
 
 
*
 
 
 
 
 
 
 
6A A A A A% A A A )
 )
 )
 )
 )
5 )
 )
 )
X7 7 7 7 7U 7 7 7@J J J J J5 J J JZ/
 /
 /
 /
 /
U /
 /
 /
d7 7 7 7 7U 7 7 7"=
 =
 =
 =
 =
U =
 =
 =
@ K  K  K  K  KU  K  K  KF#5 #5 #5 #5 #55 #5 #5 #5L6 6 6 6 6E 6 6 6"O O O O O% O O O&< < < < <5 < < <<O O O O O% O O O= = = = =E = = == = = = =E = = =< < < < <5 < < < 	; 	; 	; 	; 	;% 	; 	; 	;@ @ @ @ @u @ @ @"P P P P P5 P P P$4 4 4 4 4% 4 4 404 4 4 4 4% 4 4 4 
 
 
 
 
5 
 
 
6
 
 
 
 
E 
 
 
.	> 	> 	> 	> 	>U 	> 	> 	>5 5 5 5 55 5 5 5"
 
 
 
 
5 
 
 
2M M M M M5 M M M:K K K K K% K K K.;
 ;
 ;
 ;
 ;
% ;
 ;
 ;
|< < < < <5 < < <> > > > >U > > >	> 	> 	> 	> 	>U 	> 	> 	>< < < < <5 < < <        8> > > > >r   