
    [Th                         S SK r S SKrS SKJr  S SKJrJrJr  S SKJ	r	  S SK
Jr  Sr\" \5      rSr\" \5      r/ SQr " S	 S
\ R"                  5      r " S S\5      r " S S\5      r " S S5      rg)    N)Sequence)castIOOptional)Buffer)
try_importpyzstd	zstandard)	ExtensionStreamTransformExtension	ZStandardExtensionRegistryc                       \ rS rSrSr\\R                  S\4S j5       5       r	\\R                  S\SS 4S j5       5       r
\R                  S\4S j5       rSrg	)
r      a  
Extensions provide modular additions to functionality within distributed checkpointing,
which affect the layout or format of the written artifacts.  Extensions may be
built into pytorch, or provided externally.

When writing, the caller provides a list of extension instances of the appropriate
type.  Each extension can output a descriptor which is used to reconstitute the
extension at read-time.
returnc                      gz,
See ExtensionRegistry.from_descriptor_list
N r       _/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributed/checkpoint/_extension.pyregistry_nameExtension.registry_name*       r   versionc                     gr   r   r   s    r   from_descriptorExtension.from_descriptor1   r   r   c                     g)zs
Return descriptor name to be included in metadata.  The form should be
"extension_name[@local-domain][/version]".
Nr   selfs    r   get_descriptorExtension.get_descriptor8   r   r   r   N)__name__
__module____qualname____firstlineno____doc__staticmethodabcabstractmethodstrr   r   r"   __static_attributes__r   r   r   r   r      s     3   
     
 	  r   r   c                       \ rS rSrSr\R                  S\\   S\\   4S j5       r	\R                  S\\   S\\   4S j5       r
Srg	)
r   @   aV  
An extension which performs transformation on a byte stream, such as compression
or encryption.

Implementations should try to be memory friendly and performant.  For example, don't
read the whole input, then transform it, and write it back.  If at all possible, do it in
chunks.  But, don't read/transform/write one byte at a time, either.
outputr   c                     g)z
Takes a writeable output stream, and generates a new stream which implements the
output transform.  Input data written to the returned stream will be transformed
and written to the `output` argument stream.
Nr   r!   r0   s     r   transform_to%StreamTransformExtension.transform_toJ   r   r   inputc                     g)z
Takes a readable input stream, and generates a new stream which implements the
input transform.  When the returned stream is read, data will be read from the
'input' stream, transformed, and returned.
Nr   r!   r5   s     r   transform_from'StreamTransformExtension.transform_fromR   r   r   r   N)r$   r%   r&   r'   r(   r*   r+   r   bytesr3   r8   r-   r   r   r   r   r   @   sg     	2e9 E   	BuI "U)  r   r   c                      ^  \ rS rSr\S\4S j5       r\S\SS 4S j5       r\S\4S j5       r	SU 4S jjr
S\4S jrS	\\   S\\   4S
 jrS\\   S\\   4S jrSrU =r$ )r   [   r   c                  0    [         S L=(       d    [        S L$ N)r
   r	   r   r   r   is_availableZStandard.is_available\   s    $:d(::r   r   c                     U R                  S5      S   S:w  a  [        SU < 35      e[        R                  5       (       d  [        S[         S[
         S35      e[        5       $ )N.r   1zUnknown extension version=zOStream with ZStandard compression cannot be processed because no module named '' or '')	partition
ValueErrorr   r?   zstandard_module_namepyzstd_module_namer   s    r   r   ZStandard.from_descriptor`   so    S!!$+:'<==%%''$$9#:&AS@TTUW  {r   c                      g)Nzstream.zstdr   r   r   r   r   ZStandard.registry_namek   s    r   c                    > [         TU ]  5         [        R                  5       (       d  [	        S[
         S[         S35      eg )Nz<ZStandard extension is unavailable because no module named 'rD   rE   )super__init__r   r?   rG   rH   rI   )r!   	__class__s    r   rO   ZStandard.__init__o   sN    %%''NOdNeekl~k  @A  B  (r   c                 (    U R                  5        S3$ )Nz/1)r   r    s    r   r"   ZStandard.get_descriptorv   s    $$&'r**r   r0   c                     [         b%  [         R                  5       nUR                  U5      $  " S S[        R                  5      n[        [        [           U" U5      5      $ )Nc                   \    \ rS rSrS\\   SS4S jrS\4S jrS\	S\
\   4S jrSS	 jrS
rg)&ZStandard.transform_to.<locals>.Writer~   r0   r   Nc                 B    Xl         [        R                  5       U l        g r>   )r0   r	   ZstdCompressor
compressorr2   s     r   rO   /ZStandard.transform_to.<locals>.Writer.__init__   s    $"("7"7"9r   c                     gNTr   r    s    r   	writeable0ZStandard.transform_to.<locals>.Writer.writeable       r   bc                     U R                   R                  U5      nU(       a  U R                  R                  U5        [	        [        U5      5      $ r>   )rZ   compressr0   writelen
memoryview)r!   ra   outdatas      r   rd   ,ZStandard.transform_to.<locals>.Writer.write   s:    //2215KK%%g.:a=))r   c                     U R                   R                  5       nU(       a  U R                  R                  U5        U R                  R                  5         g r>   )rZ   flushr0   rd   )r!   rg   s     r   rj   ,ZStandard.transform_to.<locals>.Writer.flush   s9    ////1KK%%g.!!#r   )rZ   r0   r   N)r$   r%   r&   r'   r   r:   rO   boolr^   r   r   intrd   rj   r-   r   r   r   WriterrV   ~   sA    :r%y :T :4 *v *(3- *$r   ro   )r
   rY   stream_writerio	RawIOBaser   r   r:   )r!   r0   rZ   ro   s       r   r3   ZStandard.transform_toy   sN     "113J++F33	$R\\ 	$( BuIvf~..r   r5   c                     [         b%  [         R                  5       nUR                  U5      $  " S S[        R                  5      n[        [        [           U" U5      5      $ )Nc                   `    \ rS rSrS\\   SS4S jrS\4S jrS\	S\
\   4S jrS\4S	 jrS
rg)(ZStandard.transform_from.<locals>.Reader   r5   r   Nc                 B    Xl         [        R                  5       U l        g r>   )r5   r	   EndlessZstdDecompressordecompressorr7   s     r   rO   1ZStandard.transform_from.<locals>.Reader.__init__   s    "
$*$B$B$D!r   c                     gr]   r   r    s    r   readable1ZStandard.transform_from.<locals>.Reader.readable   r`   r   ra   c                     U R                   R                  (       a  U R                  R                  S5      nOSn[	        U5      n[        U5      nU R                   R                  X$5      nUc  g [        U5      nXSS U& U$ )Ni  r   )rz   needs_inputr5   readrf   re   
decompress)r!   ra   indatabviewblenrg   counts          r   readinto1ZStandard.transform_from.<locals>.Reader.readinto   sr     $$00!ZZ__-=>F F"15z++66vD?G 'fur   c                     g)NFr   r    s    r   seekable1ZStandard.transform_from.<locals>.Reader.seekable   s    r   )rz   r5   )r$   r%   r&   r'   r   r:   rO   rm   r}   r   r   rn   r   r   r-   r   r   r   Readerrv      sK    Ebi ED E$ & Xc] ,$ r   r   )r
   ZstdDecompressorstream_readerrq   rr   r   r   r:   )r!   r5   rz   r   s       r   r8   ZStandard.transform_from   sO     $557L--e44	R\\ 	B BuIve}--r   r   rl   )r$   r%   r&   r'   r)   rm   r?   r,   r   r   rO   r"   r   r:   r3   r8   r-   __classcell__)rP   s   @r   r   r   [   s    ;$ ; ;     3  + +/2e9 /E /6&.BuI &."U) &. &.r   r   c                   T    \ rS rSrS
S jrS\\   SS4S jrS\\	   S\\   4S jr
S	rg)r      r   Nc                 d    [         4 Vs0 s H  oR                  5       U_M     snU l        g s  snf r>   )r   r   
extensionsr!   clss     r   rO   ExtensionRegistry.__init__   s2     2;7
0<$7
 7
s   -r   c                 <    XR                   UR                  5       '   g r>   )r   r   r   s     r   registerExtensionRegistry.register   s    /2))+,r   descriptorsc                 f   ^  S[         S[        4U 4S jjnU Vs/ s H
  o2" U5      PM     sn$ s  snf )a  
Given a seuquence of descriptor strings as returned by
Extension.get_descriptor at save time, creates a sequence of
Extension instances.  The name[@local-domain] preceding the
version number is used to look up an implementation class in
the registry, and the version is passed to the class's
from_descriptor static method.  If the registry contains no
match, this will throw ValueError.  If the from_descriptor
method raises an exception, that will pass through to the
caller.
descr   c                    > U R                  S5      u  pnUc  SnTR                  R                  U5      nU(       d  [        SU< 35      eUR	                  U5      $ )N/r   zUnknown extension name=)rF   r   getrG   r   )r   name_r   extr!   s        r   r   ?ExtensionRegistry.from_descriptor_list.<locals>.from_descriptor   s[    #~~c2DW//%%d+C #;dW!=>>&&w//r   )r,   r   )r!   r   r   r   s   `   r   from_descriptor_list&ExtensionRegistry.from_descriptor_list   s5    	0# 	0) 	0 3>>+$%+>>>s   .)r   rl   )r$   r%   r&   r'   rO   typer   r   r   r,   r   r-   r   r   r   r   r      s:    
3DO 3 3? ?(9BU ?r   r   )r*   rq   collections.abcr   typingr   r   r   typing_extensionsr   torch._utilsr   rI   r	   rH   r
   __all__ABCr   r   r   r   r   r   r   <module>r      s     	 $ % % % #  	&	'# ,-	 By 6_.( _.D ?  ?r   