
    9jB                       d Z ddlmZ g dZddlmZmZ ddlZerddlmZm	Z	 ddl
mZmZmZ 	 ddlZ	 d'dd	 	 	 	 	 	 	 d(d	Zddd)d
Z	 ddlZ	 d'dd	 	 	 	 	 	 	 d(dZddd)dZ	 ddlmZ 	 d'dd	 	 	 	 	 	 	 d(dZddd)dZddd*d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	 	 	 	 	 	 	 d0d        Zedg d	 	 	 	 	 	 	 d1d!       Zdg d	 	 	 	 	 	 	 d2d"Z	 d3dd	 	 	 	 	 	 	 	 	 	 	 d4d#Zddd$	 	 	 	 	 	 	 	 	 d5d%Z	 	 	 	 	 	 d6d&Zy# e$ r 	 d'dd	 	 	 	 	 	 	 d(dZddd)dZY Vw xY w# e$ r 	 d'dd	 	 	 	 	 	 	 d(dZddd)dZY ]w xY w# e$ r 	 d'dd	 	 	 	 	 	 	 d(dZddd)dZY bw xY w)7a   Fallback 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zstd_decodezstd_encode)TYPE_CHECKINGoverloadN)AnyLiteral)	ArrayLike	DTypeLikeNDArrayoutc                  ~~t        | t        j                        r| j                         } t	        j
                  |       S )zCompress LZMA.

        Parameters:
            data: Data to compress.
            level: Compression level (currently unused).
            out: Output buffer (currently unused).

        )
isinstancenumpyndarraytobyteslzmacompressdatalevelr   s      U/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/tifffile/_imagecodecs.pyr	   r	   H   s1     3dEMM*<<>D}}T""    c              .    ~t        j                  |       S )zDecompress LZMA.

        Parameters:
            data: Compressed data.
            out: Output buffer (currently unused).

        )r   
decompressr"   r   s     r$   r   r   \        t$$r%   c                  ~ ~~ddl }yRaise ImportError.r   Nr%   r   )r"   r#   r   r   s       r$   r	   r	   i        %r%   c                  ~ ~ddl }yr+   r-   )r"   r   r   s      r$   r   r   v       #r%   c                  ~t        | t        j                        r| j                         } t	        j
                  | |d      S |      S )zCompress Zlib DEFLATE.

        Parameters:
            data: Data to compress.
            level: Compression level (0-9, default 6).
            out: Output buffer (currently unused).

           )r   r   r   r   zlibr    r!   s      r$   r   r      s=     dEMM*<<>D}}T1AA5AAr%   c              .    ~t        j                  |       S )zDecompress Zlib DEFLATE.

        Parameters:
            data: Compressed data.
            out: Output buffer (currently unused).

        )r3   r'   r(   s     r$   r   r      r)   r%   c                  ~ ~~ddl }yr+   r3   )r"   r#   r   r3   s       r$   r   r      r.   r%   c                  ~ ~ddl }yr+   r6   )r"   r   r3   s      r$   r   r      r0   r%   zstdc                  ~t        | t        j                        r| j                         } t	        j
                  | |      S )zCompress ZSTD.

        Parameters:
            data: Data to compress.
            level: Compression level.
            out: Output buffer (currently unused).

        )r#   )r   r   r   r   r9   r    r!   s      r$   r   r      s1     dEMM*<<>D}}T//r%   c              .    ~t        j                  |       S )zDecompress ZSTD.

        Parameters:
            data: Compressed data.
            out: Output buffer (currently unused).

        )r9   r'   r(   s     r$   r   r      r)   r%   c                  ~ ~~ddl m} yr,   r   r8   r%   compressionr9   )r"   r#   r   r9   s       r$   r   r      s     %$r%   c                  ~ ~ddl m} yr=   r>   )r"   r   r9   s      r$   r   r      s    #$r%   c                  ~g }|j                   }d}	 	 t        | ||dz          dz   }|dz  }|dkD  r || ||dz    d|z
  z         |dz  }n|dk  r || |||z           ||z  }Q# t        $ r Y t        |      S w xY w)a  Decompress PackBits encoded byte string.

    Parameters:
        encoded: PackBits encoded byte string.
        out: Output buffer (currently unused).

    Returns:
        Decompressed byte string.

    Examples:
        >>> 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         i  )extendord	TypeErrorbytes)encodedr   
out_extendins        r$   r
   r
      s    * 	
CJ	AGAA&'!+AFA3w71q1u-q9:QS71q1u-.Q   :s   AA% %	A;:A;c                   y N r"   axisdistr   s       r$   r   r     s     r%   c                   y rN   rO   rP   s       r$   r   r   &       r%   c              H   ~|dk7  rd|d}t        |      t        | t        t        f      rdt	        j
                  | t        j                        } t	        j                  | d      }t	        j                  |d| d         j                         S | j                  }|j                  dk(  r*| j                  |j                   d|j                         } t	        j                  | |      }t        d	      g| j                   z  }d||<   t	        j                  |d| t#        |         |      }| j                  j$                  s;|j'                  d
      }|j                  |j                  j)                               }|j                  dk(  r|j                  |      S |S )a  Encode Delta.

    Encode differences between consecutive samples along axis.

    Parameters:
        data: Data to encode.
        axis: Axis along which to compute differences (default -1).
        dist: Distance between samples (only dist=1 is supported).
        out: Output buffer (currently unused).

    Returns:
        Encoded data.
        Returns bytes for bytes/bytearray input, numpy array otherwise.

    rB   zdelta_encode with dist=# requires the 'imagecodecs' packagedtyper   )rQ   fuNT)inplace)NotImplementedErrorr   rG   	bytearrayr   
frombufferuint8diffinsertr   rX   kindview	byteorderitemsizeslicendimtupleisnativebyteswapnewbyteorder)r"   rQ   rR   r   msgr`   rX   keys           r$   r   r   ,  sW   . 	qy(4')LM!#&&$	*+EKK8zz$Q'||D!T!W-5577JJEzzSyyEOO,Aenn-=>?::d&D#Dk]TYY6CCI<<aeCj!1=D::}}T}*yy0023zzSyyKr%   c                   y rN   rO   rP   s       r$   r   r   [  s     r%   c                   y rN   rO   rP   s       r$   r   r   a  rT   r%   c                 |dk7  rd|d}t        |      ||j                  j                  sd}t        | t        t
        f      rZt        j                  | t        j                        } t        j                  | dt        j                  |      j                         S | j                  j                  dk(  r| j                  j                  sd	| j                  d}t        |      | j                  | j                  j                   d
| j                  j                          }t        j                  |||j                        }|j                  | j                        S t        j                  | || j                  |      S )a  Decode Delta.

    Decode delta-encoded data by computing cumulative sum along axis.

    Parameters:
        data: Encoded data.
        axis: Axis along which to compute cumulative sum (default -1).
        dist: Distance between samples (only dist=1 is supported).
        out: Output buffer for results.

    Returns:
        Decoded data.
        Returns bytes for bytes/bytearray input, numpy array otherwise.

    rB   zdelta_decode with dist=rV   NrW   r   )rQ   rX   r   rY   zdelta_decode with rZ   )rQ   rX   )r\   flags	writeabler   rG   r]   r   r^   r_   cumsumr   rX   rb   ri   rc   rd   re   )r"   rQ   rR   r   rl   rc   s         r$   r   r   g  sA   . qy(4')LM!#&&
syy22$	*+EKK8||q

')	 zz#zz""$TZZN 35 5  &c**yyDJJ0014::3F3F2GHI||Dt4::>yy$$<<4tzzs r%   )r   	_bitorderc                   y rN   rO   r"   r   rt   s      r$   r   r     s     r%   c                   y rN   rO   rv   s      r$   r   r     s     r%   c                   y rN   rO   rv   s      r$   r   r     s     r%   c                 ~|sH|j                  d       |j                  t        j                  |d   t        j                               t	        | t
        t        f      r| j                  |d         S 	 | j                  d      }t        j                  |d   ||       | S # t        $ r}d}t        |      |d}~ww xY w)	a  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 be bit-reversed.
            If bytes type, a new bit-reversed bytes is returned.
            NumPy arrays are bit-reversed in-place.
        out:
            Output buffer (currently unused).
        _bitorder:
            Internal caching parameter (not for public use).

    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   rW   r_   rB   r   z<bitorder_decode of slices requires the 'imagecodecs' packageN)appendr   r^   r_   r   rG   r]   	translaterc   take
ValueErrorr\   )r"   r   rt   rc   excrl   s         r$   r   r     s    > 	!	
  	)))A,ekkJK$	*+~~il++0yy!

9Q<40 K  0L!#&C/0s   7,B% %	C.B<<Cc              \   ~|dk(  r|t        j                  | d      }t        j                  |      }|dkD  r;|dz  r6|j                  d|d|dz  z
  z   f      }|ddd|f   j                  d      }|j	                  |      S |dv rt        j                  | |      S d| d	}t        |      )
a  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.
        out:
            Output buffer (currently unused).

    Returns:
        Array of unpacked integers.

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

    rB   z|Br      rL   N)r          @   zpackints_decode of z0-bit integers requires the 'imagecodecs' package)r   r^   
unpackbitsreshapeastyper\   )r"   rX   bitspersamplerunlenr   
data_arrayrl   s          r$   r   r     s    D 	%%dD1
%%j1
A:&1*#++R1vz>1J,KLJ#AwwJ/77;J  '''e,,
m_ -- 	-  c
""r%   )rQ   r   c                  d}t        |      )zTightly pack integers.

    Parameters:
        data: Array of integers to pack.
        bitspersample: Number of bits per integer.
        axis: Axis along which to pack.
        out: Output buffer.

    Returns:
        Packed byte string.

    z2packints_encode requires the 'imagecodecs' packager\   )r"   r   rQ   r   rl   s        r$   r   r   %  s    ( ?C
c
""r%   c                   d}t        |      )zReturn float32 array from float24.

    Parameters:
        data: Bytes containing float24 values.
        byteorder: Byte order, either '>' (big-endian) or '<' (little-endian).

    Returns:
        Array of float32 values.

    z1float24_decode requires the 'imagecodecs' packager   )r"   rd   rl   s      r$   r   r   =  s     >C
c
""r%   rN   )r#   z
int | Noner"   bytes | NDArray[Any]r   r   returnrG   )r"   rG   r   r   r   rG   )rH   rG   r   r   r   rG   )rL   rB   )
rQ   intrR   r   r"   bytes | bytearrayr   r   r   rG   )
rQ   r   rR   r   r"   NDArray[Any]r   r   r   r   )
rQ   r   rR   r   r"    bytes | bytearray | NDArray[Any]r   r   r   r   )r"   r]   r   r   rt   	list[Any]r   r]   )r"   rG   r   r   rt   r   r   rG   )r"   r   r   r   rt   r   r   r   )r"   r   r   r   rt   r   r   r   )r   )rX   zDTypeLike | Noner   r   r   r   r"   rG   r   r   r   r   )
r"   r   r   r   rQ   r   r   r   r   r   )rd   zLiteral['>', '<']r"   rG   r   r   ) __doc__
__future__r   __all__typingr   r   r   r   r   numpy.typingr   r   r   r   r	   r   ImportErrorr3   r   r   r?   r9   r   r   r
   r   r   r   r   r   r   rO   r%   r$   <module>r      sx  @ #  + #::6
 !#
 # #"#
 # 
#( 37 	%D7
 !B
 B B"B
 B 
B( 37 	%F6 
 !0
 0 0"0
 0 
0( 37 	%D 6: 'T 
 	   	
 
  
 
78HL!$14
BE 
 	, , , 	,
*, 
, ,^ 
&)14
>A
 

 
!$,/
9< 
 	- - - 	-
*- 
- -` 

 
 
	
   
 

 
 
	
   
 

 
 
	
   
 :
*: 
	:
 : &:D 0# 0# 0# 	0#
 0#
0# 
0# 0#p #
##
 # 
# #0#0#
##m  
 !
  "
  
 37  r   !
  "
  
 37  !t  
 !
  "
  
 37  s5   F  
F# &G  F F #GGG&%G&