
    I	e?.                    $   d Z ddlmZ g dZddlmZmZmZ ddlZ	 ddl	Z		 d6ddd7dZ
ddd8dZn# e$ r 	 d6ddd7dZ
ddd8dZY nw xY w	 ddlZ	 d6ddd7dZddd8dZn# e$ r 	 d6ddd7dZddd8dZY nw xY wddd9dZe	 d:ddd;d            Ze	 d:ddd<d            Z	 	 d:ddd=d!Zed>d$            Zed?d%            Z	 	 d:ddd=d&Zedg d'd@d*            Zedg d'dAd+            Zdg d'dBd,Z	 dCdddDd1Z	 dEdddFd2ZdGd5ZdS )HzFallback imagecodecs codecs.

This module provides alternative, pure Python and NumPy implementations of
some functions of the `imagecodecs`_ package. The functions may raise
NotImplementedError.

.. _imagecodecs: https://github.com/cgohlke/imagecodecs

    )annotations)bitorder_decodedelta_decodedelta_encodefloat24_decodelzma_decodelzma_encodepackbits_decodepackints_decodepackints_encodezlib_decodezlib_encode)AnyLiteraloverloadNoutlevel
int | Nonedatabytes | numpy.ndarrayreturnbytesc                  t          | t          j                  r|                                 } t	          j        |           S )zCompress LZMA.)
isinstancenumpyndarraytobyteslzmacompressr   r   r   s      5lib/python3.11/site-packages/tifffile/_imagecodecs.pyr	   r	   A   s5     dEM** 	"<<>>D}T"""    c              *    t          j        |           S )zDecompress LZMA.)r   
decompressr   r   s     r"   r   r   I       t$$$r#   c                  ddl }dS zRaise ImportError.r   Nr#   r   )r   r   r   r   s       r"   r	   r	   O        	sr#   c                  ddl }dS r)   r*   )r   r   r   s      r"   r   r   W       sr#   c                  t          | t          j                  r|                                 } t	          j        | |dn|          S )zCompress Zlib DEFLATE.N   )r   r   r   r   zlibr    r!   s      r"   r   r   a   s?     dEM** 	"<<>>D}T115AAAr#   c              *    t          j        |           S )zDecompress Zlib DEFLATE.)r0   r%   r&   s     r"   r   r   i   r'   r#   c                  ddl }dS r)   r0   )r   r   r   r0   s       r"   r   r   p   r+   r#   c                  ddl }dS r)   r3   )r   r   r0   s      r"   r   r   x   r-   r#   encodedc              2   g }|j         }d}	 	 t          | ||dz                      dz   }|dz  }|dk    r" || ||dz            d|z
  z             |dz  }n!|dk     r || |||z                       ||z  }l# t          $ r Y nw xY wt          |          S )aS  Decompress PackBits encoded byte string.

    >>> packbits_decode(b'\x80\x80')  # NOP
    b''
    >>> packbits_decode(b'\x02123')
    b'123'
    >>> packbits_decode(
    ...   b'\xfe\xaa\x02\x80\x00\x2a\xfd\xaa\x03\x80\x00\x2a\x22\xf7\xaa'
    ...     )[:-5]
    b'\xaa\xaa\xaa\x80\x00*\xaa\xaa\xaa\xaa\x80\x00*"\xaa\xaa\xaa\xaa\xaa'

    r   T      i  )extendord	TypeErrorr   )r5   r   
out_extendins        r"   r
   r
      s     CJ	A
	GAAI&''!+AFA3ww
71q1u9-q9:::QS
71q1u9-...Q
	    ::s   A-A: :
BBr7   axisintdistbytes | bytearrayc                  d S N r   r@   rB   r   s       r"   r   r      	     Cr#   numpy.ndarrayc                  d S rE   rF   rG   s       r"   r   r      rH   r#   !bytes | bytearray | numpy.ndarrayc                 |dk    rt          d|d          t          | t          t          f          rdt	          j        | t          j                  } t	          j        | d          }t	          j        |d| d                   	                                S | j
        }|j        dk    r$|                     |j         d|j                   } t	          j        | |          }t          d	          g| j        z  }d||<   t	          j        |d| t#          |                   |          }| j
        j        s'|                    d
                                          }|j        dk    r|                    |          S |S )zEncode Delta.r7   zdelta_encode with dist=# requires the 'imagecodecs' packagedtyper   )r@   fuNT)NotImplementedErrorr   r   	bytearrayr   
frombufferuint8diffinsertr   rO   kindview	byteorderitemsizeslicendimtupleisnativebyteswapnewbyteorder)r   r@   rB   r   rV   rO   keys          r"   r   r      sn    qyy!KKKK
 
 	
 $	*++ 8EK888z$Q'''|D!T!W--55777JEzSyyEO>>en>>??:d&&&D#Dkk]TY6CCI<aeCjj!1===D: 2}}T""//11zSyyKr#   r   r   c                  d S rE   rF   rG   s       r"   r   r      rH   r#   c                  d S rE   rF   rG   s       r"   r   r      rH   r#   c                 |dk    rt          d|d          ||j        j        sd}t          | t          t
          f          rTt          j        | t          j                  } t          j	        | dt          j        |          
                                S | j        j        dk    r| j        j        st          d	| j        d          |                     | j        j         d
| j        j                   }t          j	        |||j                  }|                    | j                  S t          j	        | || j        |          S )zDecode Delta.r7   zdelta_decode with dist=rM   NrN   r   )r@   rO   r   rP   zdelta_decode with rQ   )r@   rO   )rR   flags	writeabler   r   rS   r   rT   rU   cumsumr   rO   rX   r_   rY   rZ   r[   )r   r@   rB   r   rY   s        r"   r   r      sP    qyy!KKKK
 
 	
 sy2$	*++ PEK888|DqEEEMMOOOz#z" 	%5TZ 5 5 5   yyDJ0HH4:3FHHII|Dt4:>>>yy$$$<4tzsCCCCr#   )r   	_bitorderri   	list[Any]c                  d S rE   rF   r   r   ri   s      r"   r   r      rH   r#   c                  d S rE   rF   rl   s      r"   r   r     rH   r#   c                 |sN|                     d           |                     t          j        |d         t          j                             t	          | t
          t          f          r|                     |d                   S 	 |                     d          }t          j	        |d         ||           | S # t          $ r t          d          w xY w)aK  Reverse bits in each byte of bytes or numpy array.

    Decode data where pixels with lower column values are stored in the
    lower-order bits of the bytes (TIFF FillOrder is LSB2MSB).

    Parameters:
        data:
            Data to bit-reversed. If bytes type, a new bit-reversed
            bytes is returned. NumPy arrays are bit-reversed in-place.

    Examples:
        >>> bitorder_decode(b'\x01\x64')
        b'\x80&'
        >>> data = numpy.array([1, 666], dtype='uint16')
        >>> bitorder_decode(data)
        >>> data
        array([  128, 16473], dtype=uint16)

    s    @ `P0pH(hX8xD$dT4tL,l\<|B"bR2r
J*jZ:zF&fV6vN.n^>~A!aQ1q	I)iY9yE%eU5uM-m]=}C#cS3sK+k[;{G'gW7wO/o_?r   rN   rU   r7   r   z<bitorder_decode of slices requires the 'imagecodecs' package)appendr   rT   rU   r   r   rS   	translaterY   take
ValueErrorrR   )r   r   ri   rY   s       r"   r   r     s    4  L!	
 	
 	
  	))A,ekJJJKKK$	*++ ,~~il+++
yy!!
9Q<40000 
 
 
!J
 
 	

s   	3B= =CrO   numpy.dtype | strbitspersamplerunlenc              l   |dk    rt          j        | d          }t          j        |          }|dz  r@|                    d|d|dz  z
  z             }|ddd|f                             d          }|                    |          S |dv rt          j        | |          S t          d| d          )	aA  Decompress bytes to array of integers.

    This implementation only handles itemsizes 1, 8, 16, 32, and 64 bits.
    Install the Imagecodecs package for decoding other integer sizes.

    Parameters:
        data:
            Data to decompress.
        dtype:
            Numpy boolean or integer type.
        bitspersample:
            Number of bits per integer.
        runlen:
            Number of consecutive integers after which to start at next byte.

    Examples:
        >>> packints_decode(b'a', 'B', 1)
        array([0, 1, 1, 0, 0, 0, 0, 1], dtype=uint8)

    r7   z|B   r?   N)rw          @   zpackints_decode of z0-bit integers requires the 'imagecodecs' package)r   rT   
unpackbitsreshapeastyperR   )r   rO   rt   ru   r   
data_arrays         r"   r   r   A  s    : %dD11
%j11
A: 	<#++B!fqj.0IJJJ#AAAwwJ/77;;J  '''''e,,,
	-m 	- 	- 	-  r#   c                   t          d          )zTightly pack integers.z2packints_encode requires the 'imagecodecs' packagerR   )r   rt   r@   r   s       r"   r   r   m  s     <  r#   rZ   Literal['>', '<']c                    t          d          )z"Return float32 array from float24.z1float24_decode requires the 'imagecodecs' packager   )r   rZ   s     r"   r   r   v  s     ;  r#   rE   )r   r   r   r   r   r   )r   r   r   r   )r5   r   r   r   )r?   r7   )r@   rA   rB   rA   r   rC   r   r   )r@   rA   rB   rA   r   rI   r   rI   )r@   rA   rB   rA   r   rK   r   r   )
r@   rA   rB   rA   r   rC   r   r   r   r   )
r@   rA   rB   rA   r   rI   r   r   r   rI   )r   rC   ri   rj   r   r   )r   rI   ri   rj   r   rI   )r   rK   ri   rj   r   r   )r   )
rO   rs   rt   rA   ru   rA   r   r   r   rI   )r?   )rt   rA   r@   rA   r   rI   r   r   )rZ   r   r   r   r   rI   )__doc__
__future__r   __all__typingr   r   r   r   r   r	   r   ImportErrorr0   r   r   r
   r   r   r   r   r   r   rF   r#   r"   <module>r      sG  @  # " " " " "   * ) ) ) ) ) ) ) ) ) KKK =A#IM# # # # # # ,0 % % % % % % %     =AIM      ,0        "KKK =ABIMB B B B B B ,0 % % % % % % %     =AIM      ,0        $ /3      B 
<=FJ     
 
89BF     
 	 	     @ 
   
 
   
 	D 	D D D D D D< 
'+B     
 
#'     
 	6 6 6 6 6 6| ) 	) ) ) ) ) )Z =?GK          s!   1 A	A	A" "A:9A: