
    
3jl                      S r SSKJr  / SQrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
JrJr  SSKJr  SSKJrJrJr  SSKrSSKr SSKJr  SS	KJrJr  SS
KJr  SSKJr  SSKJ r   SSK!J"r"  SSK(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>  \(       aH  SSK?r?SSK@JArAJBrBJCrCJDrDJErE  SSKJFrFJGrGJHrH  SSKIJJrJJKrK  SSKLJMrM  SSKNJOrOJPrPJr  SSKJQrQ  SSK!JRrR  SSK(J0r0JSrS  \" SS9 " S S\5      5       rT " S S\5      rU " S  S!\U5      rV " S" S#\U5      rWSSSS$.           S0S% jjrX                S1S& jrY                  S2S' jrZS3S( jr[S4S) jr\S5S* jr] S6       S7S+ jjr^        S8S, jr_      S9S- jr`S:S. jraS;S/ jrbg! \# a  r$S\RJ                   S3r&\'" \&5      \$eSr$C$ff = f)<z1Zarr 3 TIFF codec, TIFF and file sequence stores.    )annotations)TiffZarrFileSequenceStore	ZarrStoreZarrTiffStoreregister_codecN)	dataclassfield)BytesIO)TYPE_CHECKINGLiteraloverride)ArrayBytesCodec)ByteRequestStore)NDBuffer)	ChunkGridparse_named_configuration)BasicIndexerzzarr z < 3 is not supported   )	CHUNKMODECOMPRESSIONEXTRASAMPLEMETADATA_DEFAULTPHOTOMETRICPLANARCONFIG	PREDICTOR	ByteOrder	FileCacheFileSequenceTagTupleTiffFile	TiffFrameTiffPageTiffPageSeries
TiffWriterTiledSequencecreate_outputenumargimreadjpeg_decode_colorspaceproduct)AsyncIteratorCallableIterableIteratorSequence)AnySelfTextIO)	DTypeLikeNDArray)	ArraySpec)BufferBufferPrototyper   )JSON)BasicSelection)r   
OutputTypeT)frozenc                     \ rS rSr% SrSrSrS\S'   SrS\S'   Sr	S	\S
'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS \S!'   SrS"\S#'   \" \S$9rS\S%'   SrS&\S''   SrS\S('   SrS\S)'   SSSSSSSSSSSSSSSSSSS\ SSSS*.                                               S4S+ jjr!\"S5S, j5       r#S6S- jr$      S7S. jr%      S7S/ jr&      S8S0 jr'      S8S1 jr(      S9S2 jr)S3r*g):r   q   zTIFF codec for Zarr 3.FN"int | slice | Sequence[int] | Nonekey
int | Noneseries4Literal['generic', 'imagej', 'ome', 'shaped'] | Nonekindlevelbool | Nonesqueeze
buffersizeboolbigtiffByteOrder | None	byteorder
str | Nonephotometricplanarconfigz'tuple[str, ...] | Literal[False] | Noneextrasamples
volumetricztuple[int, ...] | Nonetilerowsperstripbitspersamplecompressiondict[str, Any] | Nonecompressionargszstr | bool | None	predictortuple[int, int] | Nonesubsampling)default_factorymetadataSequence[TagTuple] | None	extratagstruncate
maxworkers)rB   rD   rF   rG   rI   rJ   rL   rN   rP   rQ   rR   rS   rT   rU   rV   rW   rY   rZ   r\   r^   r`   ra   rb   c          
        Ub'  [        U[        5      (       d  [        S U 5       5      n[        U 40 SU_SUb  [	        U5      OS _SU_SUb  [	        U5      OS _SUb  [        U5      OS _SUb  [	        U5      OS _S[        U5      _S	U_S
[        U	[        5      _S[        U
[        5      _SU_S[        U5      _SUb  [        S U 5       5      OS _SUb  [	        U5      OS _SUb  [	        U5      OS _S[        U[        5      _SU_S[        U[        5      (       a  UO[        U[        5      _SUb  [	        US   5      [	        US   5      4OS _SU_SU_S[        U5      _SUb  [	        U5      OS _6  g )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fN)
_enum_namer   ).0es     G/home/wildlama/miniconda3/lib/python3.13/site-packages/tifffile/zarr.py	<genexpr> Tiff.__init__.<locals>.<genexpr>   s!      !%A 1k**%s   rB   rD   rF   rG   rI   rJ   rL   rN   rP   rQ   rR   rS   rT   c              3  8   #    U  H  n[        U5      v   M     g 7fre   int)rg   xs     ri   rj   rk      s     ,t!s1vvt   rU   rV   rW   rY   rZ   r\   r   r   r^   r`   ra   rb   )

isinstancerK   tuple	_setattrsrn   rf   r   r   r   r   )selfrB   rD   rF   rG   rI   rJ   rL   rN   rP   rQ   rR   rS   rT   rU   rV   rW   rY   rZ   r\   r^   r`   ra   rb   s                           ri   __init__Tiff.__init__   s   : #J|T,J,J  !%! L
 	%	
%	
 #)"43v;$%	
 	%	

 !& 1#e*t%	
 &-%8DMd%	
 +5*@s:d%	
 M%	
  %	
 #;<%	
 $L,?%	
 &%	
 J'%	
 150@,t,,d%	
  &2%=L!4!%	
& '4&?M"T'%	
* #;<+%	
, ,-%	
2 i.. 	955%	
< * [^$c+a.&9:?%	
B C%	
D  E%	
F (^G%	
H +5*@s:dI%	
    c                :    [        USSS9u  p#U " S0 Ub  UD6$ 0 D6$ )z)Create instance of model from dictionary.tifffileF)require_configuration r   )clsdata_cfgs       ri   	from_dictTiff.from_dict   s3     +*E
 6S_c66"66rw   c                   0 nU R                   b  U R                   US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R
                  b  U R
                  US'   U R                  (       a  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US	'   U R                  b  U R                  US
'   U R                  SL a  SUS'   O%U R                  b  [        U R                  5      US'   U R                  (       a  U R                  US'   U R                  b  [        U R                  5      US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R                   b  U R                   US'   U R"                  b  U R"                  US'   U R$                  b  U R$                  US'   U R&                  b  [        U R&                  5      US'   U R(                  [*        La  U R(                  US'   U R,                  b  [        U R,                  5      US'   U R.                  (       a  U R.                  US'   U R0                  b  U R0                  US'   U(       a  SUS.$ SS0$ )z(Convert instance of model to dictionary.rB   rD   rF   rG   rI   rJ   rL   rN   rP   rQ   FrR   rS   rT   rU   rV   rW   rY   rZ   r\   r^   r`   ra   rb   ry   nameconfigurationr   )rB   rD   rF   rG   rI   rJ   rL   rN   rP   rQ   rR   listrS   rT   rU   rV   rW   rY   rZ   r\   r^   r   r`   ra   rb   )rt   r   s     ri   to_dictTiff.to_dict   s   !88CJ;;" KKCM99 ))CK::!::CL<<#!\\C	N??& $C<<!\\C	N>>%#~~C'!%!1!1C("&"3"3C%"'C*"&t'8'8"9C?? $C99 tyy/CK("&"3"3C)#'#5#5C '!%!1!1C+%)%9%9C!">>%#~~C'!%d&6&6!7C== 00"mmC
O>>%#DNN3C=="mmC
O??& $C&==
##rw   c                   [        UR                  5       5       n[        U5       nUR                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  S9nS S S 5        S S S 5        UR                  R                  R                  WR                  UR                  5      5      $ ! , (       d  f       NT= f! , (       d  f       N]= f)N)rB   rD   rF   rG   rI   rb   rJ   )r   as_buffer_liker#   asarrayrB   rD   rF   rG   rI   rb   rJ   	prototype	nd_bufferfrom_numpy_arrayreshapeshape)rt   chunk_bytes
chunk_specfhtifdecodeds         ri   _decode_syncTiff._decode_sync  s     [//12b(2,#kkHH{{YYjj???? " G ;G2 ##-->>OOJ,,-
 	
 ;G,22s#   C!ACC!
C	C!!
C/c                `   #    [         R                  " U R                  X5      I S h  vN $  N7fre   )asyncio	to_threadr   )rt   r   r   s      ri   _decode_singleTiff._decode_single,  /      &&{
 
 	
 
   %.,.c                   [         R                  " [         R                  " UR                  5       5      5      n[	        5        n[        UU R                  U R                  U R                  S9 nUR                  UU R                  U R                  U R                  U R                  U R                  U R                  U R                   U R"                  U R$                  U R&                  U R(                  U R*                  U R,                  U R.                  U R0                  S9  S S S 5        UR3                  5       nS S S 5        UR4                  R6                  R9                  W5      $ ! , (       d  f       NK= f! , (       d  f       ND= f)N)rL   rN   rF   )rP   rQ   rR   rS   rT   rU   rV   rW   rY   rZ   r\   r^   r`   ra   rb   )numpy
atleast_2drI   as_numpy_arrayr   r'   rL   rN   rF   writerP   rQ   rR   rS   rT   rU   rV   rW   rY   rZ   r\   r^   r`   ra   rb   getvaluer   buffer
from_bytes)rt   chunk_arrayr   arrr   r   encodeds          ri   _encode_syncTiff._encode_sync3  s(    u}}[-G-G-IJKY"..YY	
 		 $ 0 0!%!2!2!%!2!2#!%!2!2"&"4"4 $ 0 0$($8$8"nn $ 0 0!]]"nn!]]#!  0 kkmG3 4 ##**55g>>3  Ys%   +E9.B5E(#E9(
E6	2E99
Fc                `   #    [         R                  " U R                  X5      I S h  vN $  N7fre   )r   r   r   )rt   r   r   s      ri   _encode_singleTiff._encode_singleS  r   r   c                    [         e)z'Compute size of encoded chunk in bytes.NotImplementedError)rt   input_byte_lengthr   s      ri   compute_encoded_sizeTiff.compute_encoded_sizeZ  s
     "!rw   r{   )0rB   rA   rD   rC   rF   rE   rG   rC   rI   rH   rJ   rC   rL   rK   rN   rM   rP   zPHOTOMETRIC | int | str | NonerQ   zPLANARCONFIG | int | str | NonerR   z9Sequence[EXTRASAMPLE | int | str] | Literal[False] | NonerS   rK   rT   Sequence[int] | NonerU   rC   rV   rC   rW   zCOMPRESSION | int | str | NonerY   rX   rZ   z#PREDICTOR | int | str | bool | Noner\   r[   r^   rX   r`   r_   ra   rK   rb   rC   returnNone)r}   dict[str, JSON]r   r4   )r   r   )r   r9   r   r8   r   r   )r   r   r   r8   r   Buffer | None)r   rn   r   r8   r   rn   )+__name__
__module____qualname____firstlineno____doc__is_fixed_sizerB   __annotations__rD   rF   rG   rI   rJ   rL   rN   rP   rQ   rR   rS   rT   rU   rV   rW   rY   rZ   r\   r
   dictr^   r`   ra   rb   r   ru   classmethodr   r   r   r   r   r   r   __static_attributes__r{   rw   ri   r   r   q   s    M /3C	+2FJAED
>EE:G[!J
!GT"&I&"K"#L*#<@L9@J#'D
 '#L*# $M:$"K"-1O*1#'I '*.K'.&+D&AH#A+/I(/Hd!J
!
 37!EI #!%&*6:8<  %)#'$(6:159=.2*:/3!%7H
 0H
 	H

 CH
 H
 H
 H
 H
 $H
 4H
 6H
 FH
  !H
" ##H
$ !%H
& "'H
( 4)H
* /+H
, 7-H
. ,/H
0 (1H
2 -3H
4 5H
6 7H
8 
9H
T 7 75$n
!
/8
	
"
!
/8
	
?#?1:?	?@
#
1:
	
"!$"2;"	"rw   r   c                    ^  \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   SSSS.       SU 4S jjjrSS jr\S S j5       r	\      S!S j5       r
\\S"S j5       5       rS#S jr\S#S j5       r\\S"S j5       5       r\S$S j5       r\\S"S j5       5       r\S%S j5       r\S&S j5       r\S&S j5       r\S"S j5       rS'S jrSrU =r$ )(r   ia  a  Zarr 3 store base class.

Parameters:
    fillvalue:
        Value to use for missing chunks of Zarr store.
        The default is 0.
    chunkmode:
        Specifies how to chunk data.
    read_only:
        Passed to :py:class:`zarr.abc.store.Store`.

References:
    1. https://zarr.readthedocs.io/en/stable/api/zarr/abc/store/
    2. https://zarr-specs.readthedocs.io/en/latest/v3/core/index.html
    3. https://zarr-specs.readthedocs.io/en/latest/v2/v2.0.html
    4. https://ngff.openmicroscopy.org/specifications/0.5/

rK   
_read_onlydict[str, Any]_storefloat
_fillvaluern   
_chunkmodeNT	fillvalue	chunkmode	read_onlyc                 > [         TU ]  US9  0 U l        Uc  SOUU l        Uc  [	        S5      U l        g [        [        U5      U l        g )N)r   r   )superru   r   r   r   r   r*   )rt   r   r   r   	__class__s       ri   ru   ZarrStore.__init__z  sI     	9-(0!i'lDO%i;DOrw   c                    [        [        U R                  R                  5       5      U R                  U R
                  45      $ re   )hashrr   r   itemsr   r   rt   s    ri   __hash__ZarrStore.__hash__  s3    4;;$$&'$//J
 	
rw   c                    [        U[        U 5      5      =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ )z!Return whether objects are equal.)rq   typer   r   r   )rt   others     ri   __eq__ZarrStore.__eq__  s\     ud4j) 4u||+45#3#334 5#3#33		
rw   c           	     x   #    U VVs/ s H  u  p4U R                  X1U5      I Sh  vN PM!     snn$  Ns  snnf 7f)z5Return possibly partial values from given key_ranges.N)get)rt   r   
key_rangesrB   
byte_ranges        ri   get_partial_valuesZarrStore.get_partial_values  sB      $.
#- ((3:666#-
 	
6
s   :424:4:c                $    U R                   (       + $ )zStore supports writes.)r   r   s    ri   supports_writesZarrStore.supports_writes  s     ??""rw   c                   [         e)Store (key, value) pair.r   rt   rB   values      ri   _setZarrStore._set  s    !!rw   c                .   #    U R                  X5        g7f)r   N)r   r   s      ri   setZarrStore.set  s      			#s   c                    g)zStore supports deletes.Fr{   r   s    ri   supports_deletesZarrStore.supports_deletes  s     rw   c                $   #    Sn[        U5      e7f)zRemove key from store.z"ZarrStore does not support deletes)PermissionError)rt   rB   msgs      ri   deleteZarrStore.delete  s      3c""s   c                    g)zStore supports listing.Tr{   r   s    ri   supports_listingZarrStore.supports_listing  s     rw   c               <   #    U R                    H  nU7v   M
     g7f)zReturn all keys in store.N)r   rt   rB   s     ri   r   ZarrStore.list  s      ;;CI s   c               ~   #    [        U R                  5       H   nUR                  U5      (       d  M  U7v   M"     g7f)zhReturn all keys in store that begin with prefix.

Keys are returned relative to the root of the store.

N)r   r   
startswith)rt   prefixrB   s      ri   list_prefixZarrStore.list_prefix  s.      $C~~f%%	 %s   -=
=c                 #    UR                  S5      nUS:X  a.  U R                   Vs1 s H  o"R                  S5      S   iM     nnObU R                   Vs1 s HK  nUR                  US-   5      (       d  M  XA:w  d  M%  UR	                  US-   5      R                  S5      S   iMM     nnU H  nU7v   M
     gs  snf s  snf 7f)zwReturn all keys and prefixes with prefix.

Keys and prefixes do not contain the character "/" after the given
prefix.

/ r   N)rstripr   splitr   removeprefix)rt   r   kkeys_uniquerB   s        ri   list_dirZarrStore.list_dir  s      s#R<48KK@Kq773<?KK@K  ;;&C>>&3,/ =47M =  #.44S9!<&  
 CI  As(   &CB9CB>7B>>*B>(Cc                Z    S H%  nSU R                   R                  US5      ;   d  M%    g   g)z.Return whether ZarrStore contains multiscales.)	zarr.json.zattrss   multiscalesrw   TF)r   r   r   s     ri   is_multiscalesZarrStore.is_multiscales  s-     ,Cc!:: , rw   c                0    U R                   R                   $ re   )r   r   r   s    ri   __repr__ZarrStore.__repr__  s    ..))*+rw   )r   r   r   )r   float | Noner   CHUNKMODE | int | str | Noner   rK   r   r   )r   rn   )r   objectr   rK   )r   r:   r   z(Iterable[tuple[str, ByteRequest | None]]r   zlist[Buffer | None])r   rK   rB   strr   r9   r   r   )rB   r  r   r   )r   AsyncIterator[str])r   r  r   r  )r   r  )r   r   r   r   r   r   ru   r   r   r   r   propertyr   r   r   r   r   r   r   r  r  r  r  r   __classcell__r   s   @ri   r   r   a  s   & O #'26<  	<
 0< < 
< <"

 
 
 

"

 =

 
	

 

 #  #"      # #
     
    &  , ,rw   r   c                    ^  \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   SSSSSSSSSSSS.                         SU 4S jjjr S         S S jjr\S!U 4S jj5       r	SSSSSSSSSSS.
                         S"S jjr
\ S       S#S jj5       r\S$S j5       r\S%S j5       rS&S jrS'S jrSrU =r$ )(r   i  a  Zarr 3 store interface to image array in TiffPage or TiffPageSeries.

The store uses Zarr v3 format. Pyramidal series use OME-Zarr v0.5
multiscales metadata.

ZarrTiffStore is using a TiffFile instance for reading and decoding chunks.
Therefore, ZarrTiffStore instances cannot be pickled.

For writing, image data must be stored in uncompressed, unpredicted,
and unpacked form. Sparse strips and tiles are not written.

Parameters:
    arg:
        TIFF page or series to wrap as Zarr store.
    level:
        Pyramidal level to wrap. The default is 0.
    chunkmode:
        Use strips or tiles (0) or whole page data (2) as chunks.
        The default is 0.
    fillvalue:
        Value to use for missing chunks. The default is 0.
    dimension_names:
        Names of dimensions in image array.
        Overrides dimension names derived from series axes.
    zattrs:
        Additional attributes to store in `.zattrs`.
    multiscales:
        Create a multiscales-compatible Zarr group store.
        By default, create a Zarr array store for pages and non-pyramidal
        series.
        If *True*, encode coordinate metadata (pixel sizes, units, offsets)
        using the NGFF 0.5 multiscales structure.
    lock:
        Reentrant lock to synchronize seeks and reads from file.
        By default, the lock of the parent's file handle is used.
    maxworkers:
        If `chunkmode=0`, asynchronously run chunk decode function
        in separate thread if greater than 1.
        If `chunkmode=2`, maximum number of threads to concurrently decode
        strips or tiles.
        If *None* or *0*, use up to :py:attr:`_TIFF.MAXWORKERS` or
        asyncio assigned threads.
    buffersize:
        Approximate number of bytes to read from file in one pass
        if `chunkmode=2`. The default is :py:attr:`_TIFF.BUFFERSIZE`.
    read_only:
        Passed to :py:class:`zarr.abc.store.Store`.
    _openfiles:
        Internal API.

list[TiffPageSeries]_datar    
_filecachez-Callable[[NDArray[Any]], NDArray[Any]] | None
_transformrn   _maxworkersrC   _buffersizerK   _multiscalesN)rG   r   r   dimension_nameszattrsmultiscaleslockrb   rJ   r   
_openfilesc              	  >^& Uc  [        S5      nO[        [         U5      nUS;  a  U< S3n[        U5      eXl        [	        U[
        5      (       aN  UR                  U l        UR                  U l	        USL a  SnUb  U R                  U   /U l        UR                  nO[        U/5      /U l        S U l	        SnU	(       d1  U R                  S   R                  R                  n	U	S:  a  US:X  a  Sn	Xl        U R                  S   R                  R                  R                  R                   nUc!  UR#                  5       (       + =(       d    US:g  n[$        T'U ]M  XCUS9  Uc  UR)                  S	5        UR*                  n[-        XS
9U l        Uc  0 O
[1        U5      nU(       d  UGc  [3        U R                  5      S:  Ga~  S	U l        [7        U=(       d    U R                  S   R8                  5      nU R                  S   nUR:                  nUR<                  nUR>                  nSSSSSSS.n/ nU H`  nSU0nURA                  URC                  5       5      nU(       a  UUS'   URA                  U5      nU(       a  UUS'   URE                  U5        Mb     / n[G        U R                  5       H  u  m&nURH                  n[K        UUUR:                  S	S9 VVVs/ s H.  u  nnn[M        UU;   a  US:  a  UU   OUS:  a  UU-  OS5      PM0     nnnnSUS./n T&S:X  ak  U Vs/ s H  nURA                  U5      PM     n!n[O        S U! 5       5      (       a3  U RE                  SU! V"s/ s H  n"U"b  [M        U"5      OSPM     sn"S.5        URE                  [Q        T&5      U S.5        M     [S        SSSSUUUS./S.0UES .5      U RT                  S!'   [G        U R                  5       HR  u  m&nT&S:X  a  Un#O)[7        U&4S" j[K        UUR:                  US	S9 5       5      n#U RW                  UT& S#3UU#5      u  nn$MT     g SU l        U R                  S   n[7        U=(       d    UR8                  5      nU RW                  US!XE5      u  nn$U(       aP  [X        RZ                  " U RT                  S!   5      n%U%S$   R]                  U5        [S        U%5      U RT                  S!'   g g s  snnnf s  snf s  sn"f )%Nr   >   r      z not implementedFUnnamed   r   r   T)sizer)  spacetimechannel)XYZTCSr   r   unitstrict      ?scale)r   r=  c              3  (   #    U  H  oS Lv   M
     g 7fre   r{   )rg   os     ri   rj   )ZarrTiffStore.__init__.<locals>.<genexpr>  s     :'QD='s   translation        )r   rA  )pathcoordinateTransformationsgroupomez0.5)r   axesdatasets)versionr(  zarr_format	node_type
attributesr  c              3  D   >#    U  H  u  pnX#:w  a  U T 3OUv   M     g 7fre   r{   )rg   axijilevels       ri   rj   r@    s1      ')HB1 -.FB4x:)s    z
/zarr.jsonrM  )/r   r*   r   r$  rq   r&   levelsr   	transformr"  r   keyframerb   r#  parentroot
filehandlewritabler   ru   set_lockr)  r    r!  r   lenr%  rr   rG  r   coord_unitscoord_offsetsr   upperappend	enumeratecoord_scaleszipr   anyr  _json_dumpsr   _init_zarrayjsonloadsupdate)(rt   argrG   r   r   r&  r'  r(  r)  rb   rJ   r   r*  r   r   r   series0shape0r\  r]  	axis_type	ngff_axesrO  	ngff_axisax_typer9  rH  rD   level_scaless0sr=  coord_transformsoffsetsr?  
level_dimsr~   	zarr_jsonrR  r   s(                                         @ri   ru   ZarrTiffStore.__init__@  s   " !!I	95IF"M!12C%c**%c>**DJ!mmDOe# "jj/0
88D(#/0DJ"DODA//::JA~)q.
%ZZ]##**//::KKM);Y!^I	 	 	
 <KK77D#?~4< ;.3tzz?Q3F $D#O$Itzz!}7I7IJOjjmG]]F!--K#11M I /1I%-3RL	#--
3(/If%"r*(,If%  + & .0H"+DJJ"7%22 &)'d&	&	B -!a% %R('(1uR!V#
&  	 %u5:  Q;?NO}004GO:':::(//(5 .50"-4 12E!H3$F-40"  #F5E7 #8D (3#$!(', -1,508!",	 # !#(DKK$& #,DJJ"7 Q;!0J!& '(++"LL"#'	)' "J  $00hj)	 	1! #8. !&DZZ]F#O$Bv{{CO,,YLIq  JJt{{;'?@	,'..v6+6y+AK( a	 P
0"s    5S'
)S.-S3c               h   UR                   nUR                    UR                  nUR                  nUc  UR                  nX0l        UR                  c(  Sn[        R                  " [        R                  5      nSnU R                  (       a  UR                  OUR                  n[        [        XUR                  5      5      n	UR                  S:X  a  SS0n
O#[        R                   S:X  a  SSS0S.n
OSSS	0S.n
[#        S
S[        U5      UR$                  SSU	0S.SSS0S.['        X75      U
/U0 S.
5      U R(                  U'   U R*                  (       d[  UR,                  S:H  =(       a;    UR.                  S:H  =(       a%    UR0                  S;   =(       a    UR2                  S;   (       + U l        X64$ )z?Store zarr.json for series; return updated fillvalue and shape.N)r   r   r   r   bytesbigendianr   littler.  arrayregularchunk_shapedefault	separatorr  
rK  rL  r   	data_type
chunk_gridchunk_key_encoding
fill_valuecodecsr&  rM     r   r,  r.                  @      )rU  decoder   dtypenodatar   _dtyper   bool_r   chunksr   _chunksshapeditemsizesysrN   rd  r   _json_valuer   r   rW   	fillordersampleformatrV   )rt   rD   rB   r   r&  rU  r   r  r  r  bytes_codecs              ri   re  ZarrTiffStore._init_zarray  s    ?? I'O??"EKK,E"O#'??76(//BC >>Q+17*;K]]e#"*E!2K  "*H!5K ' $e"ZZ%&3[%A
 &&13%7' *);&-#2 !
C( $$) C&&!+C))\9C **.BB		DO rw   c                V   > [         TU ]  5         U R                  R                  5         g)zClose store.N)r   closer!  clear)rt   r   s    ri   r  ZarrTiffStore.close=  s     	rw   FT)
	groupnametemplatenamecompressorsrK  rI  _shape_axes_index_append_closec      
           0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS
_SSSSSS.EUc  0 OUEnU R                    GH  nS nUR                  nUR                  S!;   a)  UR                  R                  (       a  S"X_R                  '   UR                  U;  a  [        UR                  < S#3U-   5      eUR                  S:w  a  [        UR                  < S#3U-   5      eUR                  S$;  a  [        UR                  < S#3U-   5      eUR                  S%;  a>  UR                  S&;  a.  X_R                     S":w  a  [        S'UR                   S#3U-   5      eU R                  (       d=  UR                  (       d,  UR                  UR                  -  (       a  [        S(U-   5      eU R                  (       a-  UR                  (       d  [        U R                  < S#3U-   5      eUR                  c  GM  [        U5      S:  d  GM  [        S)U-   5      e   Uc  S*nOU(       a  US+   S,:w  a  US,-  nUR!                  S-S,5      nUc  S*nOU(       a  US+   S,:w  a  US,-  n["        R$                  S.:X  a  S/OS0nU R                   S1   R                  R                  R$                  U:w  dU  U R                   S1   R                  R&                  b1  U R                   S1   R                  R&                  R(                  S:X  a  SnUc  / O
[+        U5      nU	c  / O
[+        U	5      n	[        U5      [        U	5      :w  a  S2n[        U5      eU
c  S*nOI[        U5      [        U
5      :w  a  S3n[        U5      eU
(       a  S4R-                  S5 U
 5       5      nUS4-  nUc  S6nOUS7;  a  S8U< S93n[        U5      e0 nUS:X  Ga  U(       a  S:n[        U5      eUc  S;nSUS<'   0 US='   / US>'   0 nU R                   S1   R.                  (       a|  S1nU R                   S1    Hf  nUb  UR                  c  M  UR                  R                  R0                  R2                  nUU;   a  MG  U U 3nS?U S@3UU'   UU-   US=   U'   US-  nMh     ONU R                   S1   R                  R                  R0                  R2                  nU nS?U S@3UU'   UU-   US=   U'   0 =USA'   nOUnU(       dR  USB:X  a&  [5        U R6                  U R                   UUUUU	5        O&[9        U R6                  U R                   UUUUUU	5        [:        R<                  " 5        n[?        USC5      (       a  UnOURA                  [C        USDSESF95      nUS:X  a=  URE                  [F        RH                  " USSG9RK                  SHS5      S1   SH-   5        SInO3U(       a  SJnO)URE                  [F        RH                  " USSG9SSK 5        SJnUSB:X  a  S,OS4nUSB:X  a  SLOS*nU R6                  RM                  5        GHg  u  nnURO                  SM5      (       d  M  [F        RP                  " U5      n U RS                  SN5      SO:w  a  ML  U SP   n!U SQ   SR   SS   n"S,U;   a  URU                  S,5      S1   S,-   OS*n#[W        U!U"5       H  n$U#U$-   n%USB:X  a  U#U-   U$R!                  S4U5      -   OU%n&U RY                  U%5      u  nnn'n(n)U(       a/  U R                  (       a  U(c  URZ                  S1   n(UR\                  n)U((       d  M~  U)(       d  M  UR                  R0                  R2                  nUS:X  a  WU   nOU U 3nURE                  STU SUU U& SVU SWU( SXU) SY35        M     GMj     US:X  a  URE                  SZ5        OU(       a  URE                  S[5        SSS5        g! , (       d  f       g= f)\a  Write fsspec ReferenceFileSystem as JSON to file.

Parameters:
    jsonfile:
        Name or open file handle of output JSON file.
    url:
        Remote location of TIFF file(s) without file name(s).
    groupname:
        Zarr group name.
    templatename:
        Version 1 URL template name. The default is 'u'.
    compressors:
        Mapping of :py:class:`COMPRESSION` codes to Numcodecs codec
        names (zarr format 2) or imagecodecs.zarr codec names
        (zarr format 3).
    zarr_format:
        Version of Zarr array format to write.
        The default is 2. If 3, write Zarr version 3 format using
        :py:mod:`imagecodecs.zarr` native codec specifications.
        Chunk keys use 'c/' prefix with '/' separator and
        :py:meth:`imagecodecs.zarr.register_codecs` must be called
        before reading the resulting store.
    version:
        Version of fsspec file to write. The default is 0.
    _shape:
        Shape of file sequence (experimental).
    _axes:
        Axes of file sequence (experimental).
    _index:
        Index of file in sequence (experimental).
    _append:
        If *True*, only write index keys and values (experimental).
    _close:
        If *True*, no more appends (experimental).

Raises:
    ValueError:
        ZarrTiffStore cannot be represented as ReferenceFileSystem
        due to features that are not supported by Zarr, Numcodecs,
        or Imagecodecs:

        - compressors, such as CCITT
        - filters, such as bitorder reversal, packed integers
        - dtypes, such as float24, complex integers
        - JPEGTables in multi-page series
        - incomplete chunks, such as `imagelength % rowsperstrip != 0`

        Files containing incomplete tiles may fail at runtime.

Notes:
    Parameters ``_shape``,  ``_axes``, ``_index``, ``_append``, and
    ``_close`` are an experimental API for joining the
    ReferenceFileSystems of multiple files of a TiffSequence.

    Multiscales metadata for pyramidal series uses OME-Zarr v0.5
    when ``zarr_format=3`` and OME-Zarr v0.4 when ``zarr_format=2``.

References:
    - `fsspec ReferenceFileSystem format
      <https://github.com/fsspec/kerchunk>`_

r   N   imagecodecs_lzw   imagecodecs_jpegr  imagecodecs_zlibiRX  imagecodecs_jpegxri  imagecodecs_packbitsi  i  imagecodecs_jpeg2ki  i    i  iG  imagecodecs_lercL  im  imagecodecs_lzmaiu  imagecodecs_pngiv  imagecodecs_zstdimagecodecs_webpimagecodecs_jpegxl)iP  iQ  iR  i]  iB  z0 not supported by the fsspec ReferenceFileSystem>         imagecodecs_eerz isr  r  >   r  r  r  zBitsPerSample zincomplete chunks arez"JPEGTables in multi-page files arer  r  \rz  <>r   zlen(_shape) != len(_axes)zlen(_shape) != len(_index).c              3  8   #    U  H  n[        U5      v   M     g 7fre   r  rg   rP  s     ri   rj   -ZarrTiffStore.write_fsspec.<locals>.<genexpr>   s     4VSVVVrp   r,     r,  r.  invalid zarr_format= not in {2, 3}zcannot append to version 1urI  	templatesgen{{}}refsr.  r   wutf-8encodingindent}"   c/r  rL  r}  r   r  r   r  ,
"": ["z", z, ]
 }
}
})/r   rU  rW   rV  is_eer
ValueErrorr  r  rV   r   is_tiledimagelengthrU   is_final
jpegtablesr[  replacer  rN   r  r  r   joinis_multifilerX  r   _write_fsspec_v3_metadatar   _write_fsspec_v2_metadata
contextlib	ExitStackhasattrenter_contextopenr   rf  dumpsrsplitr   endswithrg  r   r  _ndindex
_parse_keydataoffsetsnbytes)*rt   jsonfileurlr  r  r  rK  rI  r  r  r  r  r  rD   errormsgrU  rN   r   indexr  r  rP  pagefilenamerB   refzarrstackr   r  	chunk_sepchunk_prefixvalue_bytesr   r   r  levelstr
chunkindexinternal_key
fsspec_keyr~   offset	bytecounts*                                             ri   write_fsspecZarrTiffStore.write_fsspecC  sy   ^
t

  
 !
 !
 '
 )
 %
 '
 '
 '
 %
 '
  %!
" %#
$ %%
& $'
( ')
, &%'%'5
6 !(rk7
< jjFIHH$$(==OO**4E001##;6 H$8$8#;3!?(!JKK!!Q& H$6$6#9!=!HII$$L8 H$9$9#<C!@8!KLL&& ((   4 459JJ $X%;%;$<C@8K  OO ))((8+@+@@ !88!CDDx'8'8 DOO#6c!:X!EFF"".3v;? 88C [ !b ;CSW^3JCkk$$I9R=C/I-0]]e-Cc	JJqM""))33y@zz!}%%++3zz!}%%++449I ~4<mev;#e*$-CS/!>E[CK'.CS/!HH4V44ESLEK&)[,,<=CS/!!a<2 o%#"DO "DDKIzz!})) JJqMD|t}}'< #}}33>>CCH9, )N1#.C,0T*:Ih'-08^D%c*FA *  ::a=1188CCHH%(,SE&6	(#),x[!#&%''DL7Ga)KKJJ *KKJJ	 !!#ux))((hg)NO!|D3::4CAFMND3CR89  +a/SI#.!#34L$(KK$5$5$7 [||K00

;/99[)W4g|,_=mL8;s
CIIcN1-3"*5&"9J#+j#8L
 '!+ !&'$,,S)<= *  <@??$<8HdAvy FN!%!1!1!!4$,OO	v))#+??#=#=#B#B"a<'0':H*-xj'9H!&9+j\ B!!)
#fXR	{!E- #: %8J !|#u $##s   G_1_:B_
_c                  #    Ub  SU< S3n[        U5      eXR                  ;   a(  UR                  R                  U R                  U   5      $ UR	                  S5      (       a  gU R                  U5      u  pVpxn	Ub  US:X  d  U	S:X  a  gUR                  R                  n
U R                  (       a  Ub  U	c   e[        UR                  SUU4U	4S9nU R                  R                  U
5        UR                  U R                  R                  U R                  U R                  S9nU R                  R!                  U
5        U R"                  b  U R#                  U5      nUR                  R%                  UR'                  S5      R)                  S	5      5      $ Uc   eU	c   eU R                  R+                  XU	5      nS
S0nUR,                  b  UR,                  US'   UR.                  b  UR.                  US'   Uc   eUR0                    U R                  S:  a+  [2        R4                  " UR0                  X40 UD6I Sh  vN nOUR0                  " X40 UD6nUS   nUc   eU R"                  b  U R#                  U5      nUR6                  nUR8                  [;        U5      :w  a(  SUR8                  < S[;        U5      < 3n[=        U5      eUR                  R%                  UR'                  S5      R)                  S	5      5      $  N7f)!Return value associated with key.Nbyte_range= not supported
.zmetadata.zarray.zgroupr  r   )r  rU  r  databytecounts)r)  rb   rJ   r  B	_fullsizeTr  
jpegheaderr   zchunk.size=z != product(chunks)=)r   r   r   r   r  r  rV  rX  r   r$   r!  r  r   r)  r#  r$  r  r"  from_array_liker   viewreadr  r  r  r   r   r  r/  r-   RuntimeError)rt   rB   r   r   r   rU  r  r  r	  r
  r   chunkr   
decodeargsr   r  s                   ri   r   ZarrTiffStore.get  s     ! ZO>2C%c**++##..t{{3/?@@<<GHH8<8L5
I<6Q;)q.[[##??! !,,, KK%!'	$-< OO  $LL__))++++ ! E
 OO!!"%*.##33b!&&s+  !!!$$$oo**2yA&14%8
??&'+J|$*'/':':J|$%%%a#--<F G ookLLG
   ??&OOE*E::( UZZM!6gfo%78Cs##//b0A0F0Fs0KLLs   H?L
LCL
c                  #    XR                   ;   a  g U R                  U5      u  p#pEnU R                  (       a  Uc  gUSL=(       a'    USL=(       a    USL=(       a    US:  =(       a    US:  $ ! [        [        4 a     gf = f7f)#Return whether key exists in store.TFNr   )r   r  KeyError
IndexErrorr   )rt   rB   _kfr  _cir	  r
  s          ri   existsZarrTiffStore.exists  s      ++	040D-CsI ??v~ d"% 
 A	
	 *% 		s(   BA0 AB0B BBBc                  #    U R                   (       a  Sn[        U5      eXR                  ;   d  UR                  S5      (       a  gU R	                  U5      u  pEpgnUb  Ub  US:X  d	  Ub  US:X  a  gUR                  5       n	U[        U	5      :  a  U	SU n	U R                  R                  UR                  R                  Xy5        g7f)r   zZarrTiffStore is read-only)r  r  r  r  r  Nr   )r   r   r   r  r  to_bytesr[  r!  r   rV  rX  )
rt   rB   r   r   	_keyframer  _chunkindexr	  r
  r}   s
             ri   r   ZarrTiffStore.set  s      ??.C!#&&++H"
 "
 :>//#:N7	iL~{ A~~~s4y 
#Ddkk44fCs   CCc               j   U R                   (       a0   UR                  SS5      u  p#U R                  [        U5         nUnOU R                  S   nUR                  S5      nSU;   a  UR                  SS5      nUR                  nSnSnU R                  X5      u  pUR                  b  US   nUb  UR                  b  UR                  c  USU
SS4$ XR                  -  UR                  R                  -  n XR                  U
   -  nU R                   (       a2  UR                  UR                  R                  -  nUR                  XzX4$ OU R                   (       aK  U R"                  R$                     XI   nSSS5        Ub  UR                  c  USSSS4$ UR                  USSS4$ U R"                  R$                     XI   nSSS5        Ub  UR                  c  USU
SS4$  UR                  U
   n UR&                  U
   nUR                  XzX4$ ! [        [
        4 a  n[        U5      UeSnAff = f! [
         a  n[        U5      UeSnAff = f! , (       d  f       N= f! , (       d  f       N= f! [
         a    UR                  XzSS4s $ f = f! [
         a  n[        U5      UeSnAff = f)zdReturn keyframe, page, index, offset, and bytecount from key.

Raise KeyError if key is not valid.

r  r   Nr   r  r  )r%  r  r   rn   r  r#  r"  r  r  rU  _indices
dataoffsetr  r/  r  r  r   r!  r)  r  )rt   rB   rG   	chunk_keyrD   excrU  r  r	  	pageindexr  r
  s               ri   r  ZarrTiffStore._parse_key  s    -#&99S!#4 CJ/ CZZ]Ft$#:++c3'C??,0! $c :	(!9D|tzz1T]]5Jz1a77*TZZ-@-@@F-**:66  II

(;(;;	}}dII  __%%( &|t}}4tQ11==$dD88%%( &|t}}4z1a77=))*5
	)++J7I }}dAA_ 
+ -sm,-*  -sm,- &% &%  = }}d1<<=  	)3-S(	)sq   ,H 9H7 5I I&%I7 5J H4#H//H47
III
I#&
I47JJ
J2!J--J2c               h   UR                   nUR                  n UR                  S5       Vs/ s H  n[        U5      PM     nn[        U5      [        U5      :X  d   eU R                  (       a  S[        UR                  5      -  nOUR                  nSn	[        USSS2   5       HF  u  pX-  n	XR                  :X  d  M  [        U5      U
-
  S-
  nUSU nXeS nUSU n[        XES 5      n  O   Sn[        U5      e[        U5      [        UR                  5      :X  a  [        U5      nO[        U5      S-
  n[        UR                  5      S-
  n
 X   UR                  U
   :X  a  X   X'   US-  nU
S-  n
OX   S:X  a  US-  nOSn[        U5      eUS:  d  U
S:  a  OMP  [        U5      [        U5      :X  d   eSnSnU(       a  [        [        R                  " X5      5      nU(       a  [        [        R                  " X5      5      nUU4$ s  snf ! [         a  n[        U5      UeSnAff = f)	z5Return page and strile indices from Zarr chunk index.r  Nr   r   r  z"shape does not match keyframe sizezshape does not match page shaper   )rU  r   r  rn   r  r"  r[  r   chunkedr`  r/  r   r  r-   r   ravel_multi_index)rt   rB   rD   rU  r   rP  indicesr1  r6  prQ  rr  frames_indicesstrile_indicesframes_chunkedstrile_chunkedr   
frameindexstrileindexs                      ri   r.  ZarrTiffStore._indices?  s3   ??	)'*yy~6~!s1v~G6 7|s5z)))??S00G&&GeDbDk*DAFAMM!L1$q(!(!!(!&r!%eBi + 7Cs##~#hnn"55!']N N#a'AHNN#a'A!$q(99(/
N%FAFA#&!+FA;C&s++q5AE  >*gg.>>>>
''GJ ''GK ;&&e 7 	)3-S(	)s(   H HH H 
H1 H,,H1)r$  r   r!  r   r#  r%  r   r"  )ri  z%TiffPage | TiffFrame | TiffPageSeriesrG   rC   r   r  r   r  r&  Sequence[str] | Noner'  rX   r(  rH   r)  z-contextlib.AbstractContextManager[Any] | Nonerb   rC   rJ   rC   r   rH   r*  rC   r   r   re   )
r&  ztuple[str, ...] | NonerD   r&   rB   r  r   r  r   z$tuple[float | None, tuple[int, ...]]r   r   )r  rO   r  str | os.PathLike[Any] | TextIOr  rO   r  rO   r  z*dict[COMPRESSION | int, str | None] | NonerK  rC   rI  rC   r  r   r  rA  r  r   r  rK   r  rK   r   r   rB   r  r   r:   r   zByteRequest | Noner   r   rB   r  r   rK   r  )rB   r  r   zPtuple[TiffPage, TiffPage | TiffFrame | None, int | None, int | None, int | None])rB   r  rD   r&   r   ztuple[int, int])r   r   r   r   r   r   ru   re  r   r  r  r   r&  r   r  r.  r   r  r  s   @ri   r   r     s   2h  == !26"&04(,#'>B!%!%!%!%uB2uB
 uB 0uB  uB .uB &uB !uB <uB uB uB uB uB  
!uB uBz 37D  0D D  D   	D  
.D L     !%#'BF"&"'+&*'+z  	z 1z  z  !z  @z   z  z  %z  $z  %z  z  z   
!z x	 
 *.	NMNM #NM '	NM
 
NM NM` 
 
& D D2?BB7' 7'rw   r   c                  T  ^  \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   S\S'   S\S'   SSSSSSSSSSS.
                         SU 4S jjjr\SS j5       r\ S        S!S jj5       r	SSSSSSSSS.                     S"S jjr
SrU =r$ )#r   iy  a#  Zarr 3 store interface to image array in FileSequence.

The store uses Zarr v3 format.

Parameters:
    filesequence:
        FileSequence instance to wrap as Zarr store.
        Files in containers are not supported.
    fillvalue:
        Value to use for missing chunks. The default is 0.
    chunkmode:
        Currently only one chunk per file is supported.
    chunkshape:
        Shape of chunk in each file.
        Must match ``FileSequence.imread(file, **imreadargs).shape``.
    chunkdtype:
        Data type of chunk in each file.
        Must match ``FileSequence.imread(file, **imreadargs).dtype``.
    axestiled:
        Axes to be tiled. Map stacked sequence axis to chunk axis.
    dimension_names:
        Names of dimensions in image array.
        If *None* and all chunk axes are tiled, derive from
        ``filesequence.dims``. Otherwise not set in the store.
    zattrs:
        Additional attributes to store in `.zattrs`.
    ioworkers:
        If not 1, asynchronously run `imread` function in separate thread.
        If enabled, internal threading for the `imread` function
        should be disabled.
    read_only:
        Passed to :py:class:`zarr.abc.store.Store`.
    imreadargs:
        Arguments passed to :py:attr:`FileSequence.imread`.
    **kwargs:
        Arguments passed to :py:attr:`FileSequence.imread` in addition
        to `imreadargs`.

Notes:
    If `chunkshape` or `chunkdtype` are *None* (default), their values
    are determined by reading the first file with
    ``FileSequence.imread(arg.files[0], **imreadargs)``.

zCallable[..., NDArray[Any]]_imreadzdict[tuple[int, ...], str]_lookuptuple[int, ...]r  numpy.dtype[Any]r  r(   _tiledr  _commonpathrn   
_ioworkersr   _kwargsNr   T)
r   r   
chunkshape
chunkdtype	axestiledr&  r'  	ioworkers
imreadargsr   c      
        l  >^^ [        T[        5      (       d  Sn[        U5      eTR                  (       a  Sn[	        U5      e[        T5      S:X  a  Sn[        U5      e[        TU ]!  X#US9  U R                  S;  a  SU R                  < 3n[        U5      eU
b  X-  nU	c  SOU	U l
        Xl        TR                  U l        TR                  5       U l        Ub  Uc9  TR                  " TS   40 UD6nUR                   U l        UR$                  U l        O+[)        U5      U l        [*        R$                  " U5      U l        [-        TR                   U R"                  US	9U l        [1        [3        U R.                  R5                  TR4                  5      TS
S95      U l        Uc  TR8                  (       a  [        U R.                  R:                  5      U R.                  R<                  :X  aw  U R.                  R:                   VVs1 s H  u  nnUiM
     snnm/ U4S j[?        TR8                  5       5       QU4S j[A        U R.                  R:                  S S9 5       Q7nUc  0 O
[1        U5      nSS0nU R&                  RB                  S:X  a  S[D        RF                  0US'   [I        SSU R.                  R                   U R&                  RJ                  SSU R.                  RL                  0S.SSS0S.[O        U RP                  U R&                  5      U/UUS.
5      U RR                  S'   g s  snnf )Nznot a FileSequencez#cannot open container as Zarr storer   zfilesequence is emptyr   >   r   r.  zinvalid chunkmode r   )rQ  Tr:  c              3  <   >#    U  H  u  pUT;  d  M  Uv   M     g 7fre   r{   )rg   rP  r   tiled_stack_axess      ri   rj   1ZarrFileSequenceStore.__init__.<locals>.<genexpr>  s%      #? 00 D#?s   	c              3  F   >#    U  H  u  pTR                   U   v   M     g 7fre   )dims)rg   ax0r~   filesequences      ri   rj   rW    s)      # !%%c*#s   !c                    U S   $ )Nr   r{   )ts    ri   <lambda>0ZarrFileSequenceStore.__init__.<locals>.<lambda>  s    adrw   rB   r   ry  r{  r   r.  r}  r~  r  r   r  r  r  r  r  )*rq   r!   	TypeError
_containerr   r[  r  r   ru   r   rM  rN  r+   rG  
commonpathrL  r   r  r  r  rr   r   r(   rK  r   rb  r8  rH  rY  
_axestiled
_chunkdimsr`  sortedr  r  rN   rd  r   r  r  r   r   )rt   r[  r   r   rO  rP  rQ  r&  r'  rR  rS  r   kwargsr   r  rZ  r~   r  rV  r   s    `                @ri   ru   ZarrFileSequenceStore.__init__  s   " ,55&CC. ""7C%c**|!)CS/!	 	 	
 ??&(&t&9:CS/! ! F(0!i#**'224!3 ''QB6BE ;;DL++DK ,DL++j1DK#	
 ##L$8$89
 #!!DKK**+t{{/E/EE 37++2H2HI2HQ2HI#,\->->#?"(..N#O ~4<'-w&7;;1$,4cmm+DK(#. $**![[--%&3T[[5G5G%H
 &&13%7' *$//4;;G&-#2$!$
K +  Js   L0c                   #    XR                   ;   a  g[        U[        5      (       d   e [        S UR	                  S5      R                  S5       5       5      nX R                  ;   $ ! [         a     gf = f7f)r!  Tc              3  8   #    U  H  n[        U5      v   M     g 7fre   rm   r  s     ri   rj   /ZarrFileSequenceStore.exists.<locals>.<genexpr>-       N,MqCFF,Mrp   r  r  F)r   rq   r  rr   r  r  r  rH  )rt   rB   r8  s      ri   r&  ZarrFileSequenceStore.exists%  st      ++#s####	NC,<,<T,B,H,H,MNNG ,,&&  		s(   (A90A) A9)
A63A95A66A9c                  #    Ub  SU< S3n[        U5      eXR                  ;   a(  UR                  R                  U R                  U   5      $ UR	                  S5      (       a  g [        S UR                  S5      R                  S5       5       5      nU R                  R                  U5      nUc  gU R                  S:w  a5  [        R                  " U R                  U40 U R                  D6I Sh  vN nOU R                  " U40 U R                  D6nUR                  R!                  UR#                  S	5      R%                  S
5      5      $ ! [         a     gf = f Nk7f)r  Nr  r  r  c              3  8   #    U  H  n[        U5      v   M     g 7fre   rm   r  s     ri   rj   ,ZarrFileSequenceStore.get.<locals>.<genexpr>F  rl  rp   r  r  r   r  r  )r   r   r   r   r  rr   r  r  r  rH  r   rM  r   r   rG  rN  r  r   r  )rt   rB   r   r   r   r8  r  r  s           ri   r   ZarrFileSequenceStore.get2  s@     ! ZO>2C%c**++##..t{{3/?@@<<GHH	NC,<,<T,B,H,H,MNNG <<##G,??a!++h*.,, E LL:T\\:E//b0A0F0Fs0KLL  		s8   A$E#'0E AE#5E!6AE#
EE#EE#F)quoter  r  codec_idrK  rI  r  r  c                 SSK Jn  U R                  R                  5       nUc  SnOUS;  a  SU< S3n[	        U5      eUb  GOU R
                  [        L a  SnGOS	U R
                  R                  ;   a  U R
                  R                  S
:w  d  SU R                  ;  a  Sn[	        U5      eUR                  S5      n[        U[        [        45      (       a  US   n[        U5      (       a  UR                  R                  S5      S   n 0 SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S_S"S#_S$S%_S&S'_S(S)_S*S+_S,S-_S.S/S0S1S2S3S4S5S6S7S8.
EU   nOSn[	        U5      eUc  S:nOU(       a  US;   S<:w  a  US<-  nUc  S:nOU(       a  US;   S<:w  a  US<-  n0 nUS=:X  a7  U	(       a  S>n[	        U5      eUc  S?nS=US@'   XR0USA'   / USB'   0 =USC'   nSDU SE3nOUnU(       aL  U	(       dE  USF:X  a!  [!        SFSG0 SH.5      R#                  5       USI'   O[!        SJS05      R#                  5       USK'   USF:X  a  U R$                  R'                  5        H  u  nnUR)                  SI5      (       d  M  [*        R,                  " U5      nUR/                  SL5      SM:w  a  UR#                  5       UUU-   '   Ma  SNU0UE/n[!        0 UEU/ SO.E5      R#                  5       UUU-   '   M     GOdU R$                  R'                  5        GHE  u  nnUR)                  SI5      (       d  M  [*        R,                  " U5      nUR/                  SL5      SM:w  a  ML  [0        R2                  " USP   5      nSUSQ   USR   SS   ST   [5        U5      SUSU   SVSSW.nUb	  SXU0UEUSY'   UR7                  SISZ5      n[!        U5      R#                  5       UUU-   '   0 nUR/                  S[5      nUb  UUS\'   UR/                  S]0 5      nU(       a  UR9                  U5        U(       d  GM  UR7                  SIS^5      n[!        U5      R#                  5       UUU-   '   GMH     [:        R<                  " 5        n[?        US_5      (       a  UnOURA                  [C        US`SaSb95      nUS=:X  a=  URE                  [*        RF                  " US=Sc9RI                  SdS=5      S   Sd-   5        SenOkU	(       a;  URE                  Sf5        URE                  [*        RF                  " US=Sc9SSg 5        ShnO)URE                  [*        RF                  " US=Sc9SSg 5        ShnU R$                  R'                  5        GH&  u  nnUR)                  SI5      (       d  M  [*        R,                  " U5      nUR/                  SL5      SM:w  a  ML  [K        U RL                  R'                  5       Si Sj9 H  u  nn U RO                  U RP                  5      n!U!R7                  SkS<5      n!Ub  U(       a  U" U!5      n!U!(       a  U!S   S<:X  a  U!S=S n!USF:X  a  SlS<RS                  Sm U 5       5      -   n"OSnRS                  So U 5       5      n"URE                  SfU SpU U" SqU U! Sr3	5        M     GM)     US=:X  a  URE                  Ss5        OU
(       a  URE                  St5        SSS5        g! [         a    S9U< 3n[	        U5      Sef = f! , (       d  f       g= f)uak  Write fsspec ReferenceFileSystem as JSON to file.

Parameters:
    jsonfile:
        Name or open file handle of output JSON file.
    url:
        Remote location of TIFF file(s) without file name(s).
    quote:
        Quote file names, that is, replace ' ' with '%20'.
        The default is True.
    groupname:
        Zarr group name.
    templatename:
        Version 1 URL template name. The default is 'u'.
    codec_id:
        Name of Numcodecs (zarr format 2) or imagecodecs.zarr
        (zarr format 3) codec to decode files or chunks.
    zarr_format:
        Version of Zarr array format to write.
        The default is 2. If 3, write Zarr version 3 format using
        :py:mod:`imagecodecs.zarr` native codec specifications.
        Chunk keys use 'c/' prefix with '/' separator and
        :py:meth:`imagecodecs.zarr.register_codecs` must be called
        before reading the resulting store.
    version:
        Version of fsspec file to write. The default is 0.
    _append, _close:
        Experimental API.

References:
    - `fsspec ReferenceFileSystem format
      <https://github.com/fsspec/kerchunk>`_

r   )rr  Nr,  r  r  r  ry   imagecodecsr+   codeczcannot determine codec_idr~   apngimagecodecs_apngavifimagecodecs_avifbmpimagecodecs_bmpddsimagecodecs_ddsexrimagecodecs_exrgifimagecodecs_gifheifimagecodecs_heifhtj2kimagecodecs_htj2kjpegr  jpeg8jpeg12jpeg2kr  jpeglsimagecodecs_jpeglsjpegxlr  jpegxrr  ljpegimagecodecs_ljpeglercr  imagecodecs_pcxr  imagecodecs_qoiimagecodecs_rgbeimagecodecs_tgaimagecodecs_tiffimagecodecs_ultrahdrr  imagecodecs_wicimagecodecs_zfp)
pcxpngqoirgbetgatiffultrahdrwebpwiczfpzunknown codec=r  r  r  r   z cannot append to version 1 filesr  rI  r  r  r  r  r  r.  rE  rJ  r  rK  r  rL  r}  r   )r  storage_transformersr  r   r  r   r  r  r7  rK  r   r  r  
compressorr  orderfiltersidr  r  r&  _ARRAY_DIMENSIONSrM  r  r   r  r  r  r  r  r  r  r  r  c                    U S   $ )Nr   r{   )ro   s    ri   r^  4ZarrFileSequenceStore.write_fsspec.<locals>.<lambda>>  s    !rw   r`  r  r  c              3  8   #    U  H  n[        U5      v   M     g 7fre   r  r  s     ri   rj   5ZarrFileSequenceStore.write_fsspec.<locals>.<genexpr>G  s     2I5a3q665rp   r  c              3  8   #    U  H  n[        U5      v   M     g 7fre   r  r  s     ri   rj   r  I  s     +BEqCFFErp   r  r  z"]r  r  )*urllib.parserr  rN  copyr  rG  r+   r   r   poprq   r   rr   callabler  r"  rd  r  r   r   r  rf  rg  r   r   r  
_dtype_strr  rh  r  r  r  r  r  r   r  r  rf  rH  r  rL  r  )#rt   r  r  rr  r  r  rs  rK  rI  r  r  quote_rg  r   rv  r  r   rB   r  r   
seq_codecsr  zarray_dict
zarray_key
seq_zattrs	dim_names	seq_attrs
zattrs_keyr  r   r  r  fnamer  indexstrs#                                      ri   r  "ZarrFileSequenceStore.write_fsspecT  s   b 	1""$K&)[,,<=CS/!\\V#!Hdll555%%1$,,.1 o%JJw'E%$//a,,S1!4!0.. , ,	
 , , . 0 . / 0 2 2 2 2  0!" .#& -,,.,. 6.,,9: ;F .CS/!;CSW^3JCI9R=C/I!a<8 o%#"DO!- 3DDK%''DL7d+CGWa'2$%G2N(&( $ &1-1C%D%K%K%M	"!$(KK$5$5$7 [||K00

;/99[)W4/:/A/A/CGIO, X004
 ,7",02, &( 	C( %8* %)KK$5$5$7 [||K00

;/99[)W4E+$67#$"7^#L1/B% (."&"'"5 #/ '15x0J60JK- [[i@
2=3&( 	J./ .0
!II&78	(6?J23!IIlB7	%%i0:!$[)!DJ6A"7fh I
23I %8R !!#ux))((hg)NO!|D3::4CAFMND3Ab9:D3CR89$(KK$5$5$7 [||K00

;/99[)W4$*LL&&(n%LE5  %11$2B2BCH'//c:H}#)(#3HQK3$6#+AB<"a'#'#((2I52I*I#I#&88+BE+B#BHHfXQyk( < E(2/% %80 !|#Y $#Q  0'
+ o4/0P $#s   AZ1 I[1[
[)r  rL  r  rG  rM  rN  rH  rK  )r[  r!   r   r  r   r  rO  r   rP  zDTypeLike | NonerQ  z1dict[int, int] | Sequence[tuple[int, int]] | Noner&  rA  r'  rX   rR  rC   rS  rX   r   rK   rg  r3   r   r   rE  re   rD  )r  rO   r  rC  rr  rH   r  rO   r  rO   rs  rO   rK  rC   rI  rC   r  rK   r  rK   r   r   )r   r   r   r   r   r   ru   r   r&  r   r  r   r  r  s   @ri   r   r   y  s   +Z )(''O #'26+/'+GK04(, !,0s
"s

  s
 0s
 )s
 %s
 Es
 .s
 &s
 s
 *s
 s
 s
  
!s
 s
j 
' 
' 
 *.	MM #M '	M
 
M MN " $#'#"&"~  	~ 1~  ~  ~  !~  ~   ~  ~  ~  ~  
~  ~ rw   r   )
groupindexr  outc                  [         R                  " U SSS9n[        U[         R                  5      (       a
  Uc  SnXR   nOUnUbs  [	        UUR
                  [        R                  " UR
                  UR                  5      S9R
                  n[        R                  " [        XGUR                  5      5      nOSnUR                  XS9n	AU(       a  U R                  5         U	$ ! U(       a  U R                  5         f f = f)a  Return selection from Zarr store.

Parameters:
    store:
        ZarrStore instance to read selection from.
    selection:
        Subset of image to be extracted and returned.
        Refer to the Zarr documentation for valid selections.
    groupindex:
        Index of array if store is Zarr group.
    close:
        Close store before returning.
    out:
        Specifies how image array is returned.
        By default, create a new array.
        If a *numpy.ndarray*, a writable array to which the images
        are copied.
        If *'memmap'*, create a memory-mapped array in a temporary
        file.
        If a *string* or *open file*, the file used to create a
        memory-mapped array.

rN)moderK  0)r   r  )r  )zarrr  rq   Groupr   r   r   
from_sizesr  NDBufferCPUr   r)   r  get_basic_selectionr  )
store	selectionr  r  r  zzarrayr   ndbufferresults
             ri   zarr_selectionr  U  s    DIIe#48a$$! 
]FF? ll$//fmmL e	 
 #33c&,,7H H++I+DKKMM KKM s   C	C$ $C>c                  U(       a   [        SS0 S.5      R                  5       US'   1 SknU R                  5        GH  u  p[        R                  " U	5      n
U
R                  S5      nUS:X  Ga  U
R                  S0 5      nU(       a  UR                  S0 5      nUR                  S	/ 5       H  nU Vs/ s H  nS
U0PM	     snUR                  S/ 5      -   US'   UR                  S/ 5       Hb  nUR                  S/ 5       HI  nUS   S:X  a  S/[        U5      -  US   -   US'   M&  US   S:X  d  M1  S/[        U5      -  US   -   US'   MK     Md     M     [        SSUS.5      R                  5       X#U-   '   GM@  US:X  d  GMI  SU;   a  [        UR                  S5      S   5      OSnSU;   a  U S3OSnUU   R                  n[        U
S   5      n[        U
S   S   S   5      nU
R                  S5      nU(       a   [        U5      U-   nS/[        U5      -  U-   nU(       a  Ub  [        U5      U-   nUUR                     n[        R                  " U
S   5      nUR                  R                  nUR                   S:X  d  Uc  S
S0nOUS :X  a  SS!S"0S#.nOSS!S$0S#.n/ nUR"                  S:  ay  UR"                  S%;   a  S&nOS'nUR"                  S::  a  SnOUR"                  S(;   a  S)nOS*nUR$                  S:X  a  UR&                  S:  a  S+nOS,nUR)                  UUUS-.S#.5        Uc  UR)                  U5        GONUU;   Ga#  US.:X  a  UR*                  n U c  SO#[,        R.                  " U 5      R                  5       n!UR0                  n"U"c  SO#[,        R.                  " U"5      R                  5       n#[3        UR4                  UR$                  UR6                  UR8                  5      u  n$n%UR:                  U$U%S/.n&U!b  U!U&S0'   U#b  U#U&S1'   UR)                  UU&S#.5        GOhUS2:X  a(  UR&                  S*:X  a  UR)                  US3S40S#.5        GO:US5:X  a  S)=n'n(UR                  S6:X  ap  [        UR<                  R?                  S7S85      5      n)[        UR<                  R?                  S9S)5      5      n'[        UR<                  R?                  S:S)5      5      n(OUR                  S;:X  a  S8n)OS<n)[        UR@                  5      U)U'U(S=.n*UR                  RB                  (       a  UR                  RB                  U*S>'   UR)                  UU*S#.5        O8UR)                  S
U05        O$UR)                  U5        UR)                  S
U05        [        SSUURD                  S?SU0S#.S@SAS0S#.U
SB   UUU
R                  S0 5      / SC.5      R                  5       X#U-   S-   '   GM     gs  snf )Dz@Write Zarr v3 metadata to refzarr dict based on store and pages.r.  rE  rJ  r  >   r  r  r  r  r  r  r  r  imagecodecs_float24imagecodecs_ccittrleimagecodecs_pixarlogimagecodecs_ccittfax3imagecodecs_ccittfax4rL  rM  rF  r(  r   rG  rH  rD  r   r=  r<  rA  rB  r}  r  r   r  r   r  r   r  r&  r   Nr  ry  r  r{  rz  r   r|     r,  r  M  imagecodecs_deltaimagecodecs_floatpred   r  N  r,     r  r  )axisdistr  )rV   colorspace_jpegcolorspace_datatablesheaderr  hasalphaTr  r    r      r  r  )r   skipbitshorzbitsvertbitssuperresr~  r  r  r  )rK  rL  r   r  r  r  r  r  r&  rM  r  )#rd  r  r   rf  rg  r   r[  rn   r  rU  r   rW   r   r  rV  rN   r  rZ   rQ   samplesperpixelr_  r  base64	b64encoder  r,   rP   rR   is_jfifrV   tagsvalueofr  	_superresr   )+r  pagesr   r  r  r  r  array_byte_codecsrB   r  r   rL  attrsrF  msrO  dsctrG   r  rU  r   r  r  rs  r  tiff_byteorderr  r  	filter_idr  r  r  r  r  r  r  r  r   r  r  r  eer_cfgs+                                              ri   r  r    sO    * $  
 &( 	  "KKM

;'IIk*	IIlB/Eiir*''-4B9>!?262,!?"&&C "BvJ !ffZ4"$&&)Db"IB!&zW4/2ec%j.@2g;.N7!#F}!<58ECJ4F$1J" 5"= 1	 #J 5	 5 (3#$!("'( fh O$ '! /2SjC		#q)*aE&)Sj%{bHU|,,Hw(El#O4]CK 		"34IVu, cCK/+=. K)3	"8#7#78HKKk 23E%__66N~~"n&</5w.?3&#&.%6 $&.%9 ,.F!!A%%%):: 3I 7I%%*D''>9DD((A-(2J2JQ2NDD )$($(* k*..11!)!4!4J &- #--j9@@B 
 "*!4!4J &- #--j9@@B  / ,, -- -- ((	'' *2)?)?+:+:+C
 )(.H)(.HMM$,-0  22 00A5MM$,.8$-? !22*++Hx++u4#&x}}'<'<UA'F#G#&x}}'<'<UA'F#G#&x}}'<'<UA'F#G!--6#$#$!%hoo!6$,$,$,	/G  00.6oo.G.G
+MM$,-4 MM68"45 k*vx01:E#$!("!& )*7)E#
 !**5s);+ #("5$'0"'))L""=,.#;( fh) (;67S * "@s   4W,c          
     j   U(       a  [        SS05      R                  5       US'   U R                  5        GHt  u  p[        R                  " U	5      n
U
R                  S5      nUS:X  Ga  [        U
R                  S0 5      5      nUR                  S0 5      n0 nSU;   a  US   nU(       a  U H  nU Vs/ s H  nS	U0PM	     snUR                  S
/ 5      -   US
'   UR                  S/ 5       Hb  nUR                  S/ 5       HI  nUS   S:X  a  S/[        U5      -  US   -   US'   M&  US   S:X  d  M1  S/[        U5      -  US   -   US'   MK     Md     M     U H  nUR                  SS5        M     XS'   UR                  U5        UR                  SS5      nUR                  SS5      n[        SS05      R                  5       X#U-   '   U(       a!  [        U5      R                  5       X#U-   '   GM  GM  US:X  d  GM  SU;   a  [        UR                  S5      S   5      OSnUU   R                  nU
R                  S5      n[        U
S   5      n[        U
S   S   S   5      nU(       a   [        U5      U-   nS/[        U5      -  U-   nU(       a  Ub  [        U5      U-   n[         R"                  " U
S    5      nUb  UUR$                  SS -   O
['        U5      nSUUUSU
S!   S"SS#.nUUR(                     nUS$:X  a  UR*                  nUc  SO#[,        R.                  " U5      R                  5       n UR0                  n!U!c  SO#[,        R.                  " U!5      R                  5       n"[3        UR4                  UR6                  UR8                  UR:                  5      u  n#n$UU U"UR<                  U#U$S%.US&'   GOUS':X  a  UR>                  S(:X  a	  US)S*.US&'   OUS+:X  a  S=n%n&UR(                  S,:X  ap  [        UR@                  RC                  S-S.5      5      n'[        UR@                  RC                  S/S5      5      n%[        UR@                  RC                  S0S5      5      n&OUR(                  S1:X  a  S.n'OS2n'UURD                  U'U%U&URF                  RH                  S3.US&'   OUb  S4S5S6.R                  UU5      nS7U0US&'   URJ                  S:  an  URJ                  S8;   a  S9n(OS:n(URJ                  S;::  a  Sn)OURJ                  S<;   a  Sn)OS(n)UR6                  S:X  a  UR>                  S:  a  S=n*OS>n*U(U*U)UUS?./US@'   UR                  SSA5      n+[        U5      R                  5       X#U+-   '   Uc  GMB  UR                  SS5      n[        SBU05      R                  5       X#U-   '   GMw     gs  snf )Cz@Write Zarr v2 metadata to refzarr dict based on store and pages.rK  r,  r  rL  rE  rM  rF  r(  r   rG  rH  rD  r   r=  r<  rA  rB  rI  z0.4r  r  r}  r  r   r&  r   r  r   r  r   Nr  r  r7  r  r  )r  r  r  rV   r  r  r  r  r  T)r  r  r  r  r  r  r  r  r  r  )r  r   r  r  r  r  zliblzma)r  r  r  r  r  r  r.  r  r  r  )r  r  r  r   r  r  r  r  )&rd  r  r   rf  rg  r   r   r  r[  
setdefaultrh  r  rn   r  rU  r   r   r  r  r  rW   r  r  r  r  r,   rP   rQ   rR   r  rV   r  r  r  r  rV  r  rZ   ),r  r  r   r  rN   r  r  r  rB   r  r   rL  r  	ome_attrsv2_attrsr(  r  rO  r  r  
zgroup_keyr  rG   rU  r  r   r  r  	dtype_strr  rs  r  jpegtables_b64r  jpegheader_b64r  r  r  r  r  r  r  r  r  s,                                               ri   r  r  y  s$    (-);<CCE	!KKM

;'IIk*	 <45E		%,I')H	)'6)=B%CUrvrlU%Cbff"BG &6
 #%&&R"8B&(ff-H"&M#%f:#836%#e*2Dr(/H& 3&BwK &(Z=%@9<(-A& 9&(*=(99:B}$5 'N #9	 * &BMM)U3 &*5'OOE"[)<J[)<J.9"/fh 
*+ 2=3&( J./  '!.1SjC		#q)*aEU|,,H		"34Iw(El#O4]CK Vu, cCK/+=. K)3	KKk 23E ( EIIabM)&   !%""#L1	&F #8#7#78H--%00
 ") ))*5<<> 
 &00
 ") ))*5<<>  +(())))$$	## #,,%-%;%;'6'6(|$ ..,,1 # $(|$ ..&''8''50"8==#8#8#BCH"8==#8#8#BCH"8==#8#8#BCH))U2 H H"%__ ( ( ( ( 9 9(|$ % )/(.
 #h)  )-h'7|$!!A% %%):: 3I 7I%%*D''>9DD((A-(2J2JQ2NDD ( $ $!,!*%y! [)<J.9&.A.H.H.JG
*+$ [[i@
2=()43&( J./K * &Ds   4V0c               P    [         R                  " U SSSSS9R                  S5      $ )z)Serialize object to JSON formatted bytes.r   T),z: )r  	sort_keysensure_ascii
separatorsascii)rf  r  encode)objs    ri   rd  rd  4	  s-    :: fWorw   c               N   U c  U $ UR                   S:X  a  [        U 5      $ UR                   S;   a  [        U 5      $ UR                   S:X  a_  [        R                  " U 5      (       a  g[        R
                  " U 5      (       a  g[        R                  " U 5      (       a  g[        U 5      $ UR                   S:X  aj  [        R                  " X5      n [        U R                  U R                  R                  5      [        U R                  U R                  R                  5      4$ U $ )z+Return value which is serializable to JSON.buifNaNInfinityz	-Infinityc)rF   rK   rn   r   isnanisposinfisneginfr   r}  r  realr  imag)r   r  s     ri   r  r  ?	  s    }zzSE{zzT5zzzS;;u>>%  >>%  U|zzSE)

EJJ$4$45

EJJ$4$45
 	
 Lrw   c               v    U R                   S:X  a  SnOSSS.[        R                     nXR                  SS -   $ )z.Return dtype as string with native byte order.r   |r  r  )rz  r|  N)r  r  rN   r  )r  rN   s     ri   r  r  X	  s9    ~~	3/>	yy}$$rw   c          	   #     #    [        S [        XSS9 5       5      n[        R                  " U5       H  nUR	                  S U 5       5      v   M     g7f)z-Return iterator over all chunk index strings.c              3  :   #    U  H  u  pX-   S -
  U-  v   M     g7f)r   Nr{   )rg   rP  rQ  s      ri   rj   _ndindex.<locals>.<genexpr>h	  s!      %DTQq%Ds   Tr:  c              3  8   #    U  H  n[        U5      v   M     g 7fre   r  )rg   r  s     ri   rj   r  l	  s     =WESZZWrp   N)rr   rb  r   ndindexr  )r   r  r  r6  r8  s        ri   r  r  a	  sO       %(t%D G ==)nn=W=== *s   AAc                  [        U5      nUS:X  a  gSU;   a  SU-  $ US   S:X  a  SOSn[        USU-   5      n[        U 5      SU-   :X  a%  USU-   :w  a  US   S:X  a  X* S X%* S :X  a  / U QSP7n U[        U 5      :  a@  SnU  H  nUS:  a    O	US-  nM     XS n U[        U 5      :  a  S	U< S
U < 3n[        U5      eSU[        U 5      -
  -  U -   $ )z(Return chunks with same length as shape.r   r{   r5  r   r.  r,  r  Nzshape=z is shorter than chunks=)r[  minr  )r  r   r  ndimdrP  r/  r   s           ri   r  r  o	  s    u:DqyEzd{AY!^AD!a%AFq1uQJ"IN"#J&+% 61c&kDaxFA  #f+UJ7{;CS/!4#f+%&//rw   c               
   U c  g[        U [        5      (       a  U $ [        X5      (       a  U R                  $ [        U [        R                  5      (       a  U" U R
                  5      R                  $ U" U 5      R                  $ )zANormalize int, str, or enum member to canonical enum name string.N)rq   r  r   enumEnumr   )r   enum_clss     ri   rf   rf   	  si     }%%""zz%##$)))E?rw   c               b    UR                  5        H  u  p#[        R                  XU5        M     g)z.Set attributes on a frozen dataclass instance.N)r   r  __setattr__)r  rg  r	  vs       ri   rs   rs   	  s$    31% rw   c                 *    SSK Jn   U " S[        5        g)zRegister zarr 3 tifffile codec.r   r   ry   N)zarr.registryr   r   r.  s    ri   r   r   	  s    ,:t$rw   )r  r   r  r<   r  rO   r  rK   r  r=   r   zNDArray[Any])r  r   r  r  r   r   r  r  r  #dict[COMPRESSION | int, str | None]r  	list[int]r  	list[str]r   r   )r  r   r  r  r   r   r  r  rN   rM   r  r0  r  r1  r  r2  r   r   )r  r3   r   ry  )r   r3   r  rJ  r   r3   )r  rJ  r   r  )r  )r  r  r   rI  r  rI  r   zIterator[str])r  rI  r   rI  r  ztuple[int, int, int, int, int]r   rI  )r   zint | str | enum.Enum | Noner)  ztype[enum.Enum]r   rO   )r  r  rg  r3   r   r   rB  )cr   
__future__r   __all__r   r  r  r'  rf  r  dataclassesr	   r
   ior   typingr   r   r   r   r  zarr.abc.codecr   zarr.abc.storer   r   zarr.core.buffer.cpur   r  zarr.core.chunk_gridsr   zarr.core.commonr   zarr.core.indexingr   ImportErrorr1  __version__r   r  ry   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   oscollections.abcr.   r/   r0   r1   r2   r3   r4   r5   numpy.typingr6   r7   zarr.core.array_specr8   zarr.core.bufferr9   r:   r;   r<   r=   r   r   r   r   r  r  r  rd  r  r  r  r  rf   rs   r   r{   rw   ri   <module>rE     s  @ 8 "      
 (  3 3  	#.1</:/
     2   )(/.BB%1/ $l"? l" l"^U, U,Fr'I r'jY I Y B ":::
 : : 
: :zddd d 	d
 5d d d 
dNxxx x 	x
  x 5x x x 
xv2% 	> 	>>>
 >"0"0"0 +"0
 "0J ' 3B  &%SK  #$""##8
9C
S/s"#s   &F# #G)GG