
    sh$                         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  S SKJ	r	  S SK
r
S SKJr  S SKr
S SKJs  Jr  S SKJr  S r\" SS9S 5       rS	S
.S\
R.                  S\S\4S jjr " S S5      r " S S5      rg)    N)defaultdict)Optional)StorageWeakRefc                     ^  U 4S jnU$ )zcLazily wrap a function with torch.compile on the first call

This avoids eagerly importing dynamo.
c                 J   >^  [         R                  " T 5      UU 4S j5       nU$ )Nc                     > [         R                  " T40 TD6n[        R                  " T5      " U5      [	        5       TR
                  '   U" U 0 UD6$ N)torchcompile	functoolswrapsglobals__name__)argskwargscompiled_fncompile_kwargsfns      n/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/utils/_content_store.pycompile_hook7lazy_compile.<locals>.decorate_fn.<locals>.compile_hook5   sD    --=n=K%.__R%8%EGIbkk"///    )r   r   )r   r   r   s   ` r   decorate_fn!lazy_compile.<locals>.decorate_fn4   s&    			0 
	0
 r    )r   r   s   ` r   lazy_compiler   .   s     r   T)dynamicc                    [         R                  " SSU R                  U R                  [         R                  S9R                  5       nUS-  S-   R                  5       n[         R                  " SSU R                  U R                  [         R                  S9R                  5       R                  5       n[        R                  " X-  U-   R                  5       S/5      $ )Ni   l        )devicedtypei   r   )
r
   randintshaper   int32abslongprimsxor_sumint)xabs      r   hash_storage_kernelr-   D   s    
 	%		ce  y/Q	$$&Ahqwwqxxu{{S		  ==!%!)*QC00r   Fstable_hashstorager/   returnc                <   SS K nSSKJn  U R                  R                  nU(       d  U" U5      (       d  U R                  5       n[        R                  UR                  5       -  R                  UR                  5       5      n[        R                  " SS9nUR                  U5        UR                  5       $ US:X  a  UR                  R                   nOUS:X  a.  UR"                  R$                  U R                  R&                     nOcUS:X  a  UR(                  R+                  5       nOBUS:X  a.  UR,                  R$                  U R                  R&                     nO[/        S	U 35      eUR1                  5       n	 UR3                  S5        UR4                  " SUR6                  U R                  S
9R9                  U 5      n
U
R;                  5       * S-  nUS:  a  [<        R>                  " U
SU4SS5      n
U
RA                  URB                  5      n
Sn[E        U5       Vs/ s H  n[G        U
5      RI                  5       PM     nn[J        RL                  " SSU-  -   /UQ76 RO                  5       URQ                  U	5        $ s  snf ! URQ                  U	5        f = f)Nr   )is_compile_supportedF)usedforsecuritycpucudampsxpuzunhandled device type r    r      constant   >i))torch._dynamotorch._dynamo.utilsr3   r   typer5   ctypesc_bytenbytesfrom_addressdata_ptrhashlibsha1update	hexdigest_Cdefault_generatorr6   default_generatorsindexr7   _get_default_mps_generatorr8   AssertionError	get_statemanual_seedemptyuint8set_numelFpadviewr$   ranger-   itemstructpackhex	set_state)r0   r/   r
   r3   device_typecpu_storagebufrH   	generatorstater*   rX   ITER_css                  r   hash_storagerh   _   s   8..%%K.{;;kkm }}{1133AA  "
 ||E2C~~ eHH..			JJ11'..2F2FG			II88:			II001E1EF	5k]CDD!E#a KKW^^DII'R wwyj1n7a!S:q1AFF5;; 5:4[A[!!$))+[A{{3t+1b1557E" B 	E"s   =B%J "#J,J J Jc                       \ rS rSrSS\S\SS4S jjrS\R                  S\4S jr	SS	\R                  4S
 jjrS\S	\R                  SS4S jrSrg)ContentStoreWriter   locr/   r1   Nc                 :    Xl         [        5       U l        X l        g r	   )rl   setseen_storage_hashesr/   )selfrl   r/   s      r   __init__ContentStoreWriter.__init__   s    -0U &r   r0   c                    [        XR                  S9nX R                  ;   a  U$ [        R                  R                  U R                  S5      n[        R                  " USS9  [        R                  R                  X25      n[        R                  R                  U5      (       a  U$ [        R                  " X5        U R                  R                  U5        U$ )Nr.   storagesTexist_ok)rh   r/   ro   ospathjoinrl   makedirsexistsr
   saveadd)rp   r0   h	subfoldertargets        r   write_storage ContentStoreWriter.write_storage   s    .>.>?(((H GGLL:6	
I-i+77>>&!!H

7#  $$Q'r   tc                    Uc"  [        UR                  5       U R                  S9nUR                  UUR	                  5       [        UR                  5      UR                  5       [        R                  R                  U5      4$ )Nr.   )rh   untyped_storager/   r    storage_offsettupler#   strider
   _utilsget_tensor_metadata)rp   r   r~   s      r   compute_tensor_metadata*ContentStoreWriter.compute_tensor_metadata   sh    9Q..0d>N>NOAGG!''NHHJLL,,Q/
 	
r   namec                    UR                  5       nU R                  U5      n[        R                  R	                  U5      u  pVU R                  X$S9n[        R                  R                  U R                  SU5      n[        R                  " USS9  [        R                  " U[        R                  R                  X5      5        g )N)r~   tensorsTru   )r   r   rw   rx   splitr   ry   rl   rz   r
   r|   )	rp   r   r   r0   r~   dfpayloadr   s	            r   write_tensorContentStoreWriter.write_tensor   s    ##%w'ww}}T"..q.6GGLL9a8	
I-

7BGGLL67r   )rl   ro   r/   )Fr	   )r   
__module____qualname____firstlineno__strboolrq   r
   UntypedStorager   Tensorr   r   __static_attributes__r   r   r   rj   rj      sc    'C 'd 't 'U%9%9 c 

 

8 8 8$ 8r   rj   c                       \ rS rSrSS.S\SS4S jjrSS.S	\S\R                  4S
 jjrS\4S jr	SS.S\S\R                  4S jjrSrg)ContentStoreReader   T)cacherl   r1   Nc                V    Xl         S U l        U(       a  [        [        5      U l        g g r	   )rl   storage_cacher   dict)rp   rl   r   s      r   rq   ContentStoreReader.__init__   s+      	 !,T!2D r   r   r~   c                   Ub  [         R                  " U5      nU R                  b  U R                  U   R                  U5      OS nUb.  [         R                  R                  UR                  5      nUb  U$ [         R                  " [        R                  R                  U R                  SU5      SUS9R                  nUc   eU R                  b  [        U5      U R                  U   U'   U$ )Nrt   T)weights_onlymap_location)r
   r   r   getr   _new_with_weak_ptrcdataloadrw   rx   ry   rl   _untyped_storager   )rp   r~   r   wsss        r   read_storageContentStoreReader.read_storage   s    \\&)F !!- v&**1- 	 >$$77AA}JJGGLL:q1
 
	 	

 }}),:1,=Dv&q)r   r   c                     [         R                  R                  U R                  SU5      n[         R                  R	                  U5      (       d  [        U5      e[        R                  " USS9$ )Nr   T)r   )rw   rx   ry   rl   r{   FileNotFoundErrorr
   r   )rp   r   r   s      r   read_tensor_metadata'ContentStoreReader.read_tensor_metadata   sK    WW\\$((It4ww~~b!!#B''zz"400r   c                    U R                  U5      u  p4pVpxU R                  XBS9n	[        R                  " / X9R                  S9n
U
R                  XXg5        [        R                  R                  X5        U
$ )Nr   r9   )r   r   r
   tensorr   rU   r   set_tensor_metadata)rp   r   r   r    r~   r   sizer   metadatar0   r   s              r   read_tensorContentStoreReader.read_tensor   sj    ;?;T;T<
8. ##A#5LL5@	w5((5r   )rl   r   )r   r   r   r   r   rq   r
   r   r   r   r   r   r   r   r   r   r   r      sc    *. 3C 34 3 .2 c e6J6J .1 1 04    r   r   )rB   r   rG   os.pathrw   r\   collectionsr   typingr   r
   torch._prims_primsr'   torch._utilstorch.nn.functionalnn
functionalrW    torch.multiprocessing.reductionsr   r   r-   r   r   r   rh   rj   r   r   r   r   <module>r      s   >      #       ;, d1 14 HM ,#%.. ,# ,#QT ,#^08 08f. .r   