
    Χg>+                        d dl mZ d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ eZg dZ G d d	ej                  Z G d
 dej                  Z G d de          ZeZ G d d          ZdS )    )annotationsN)ref)_IterationGuard)MutableMappingMapping)Tensor)TensorWeakRef	WeakIdRefWeakIdKeyDictionaryWeakTensorKeyDictionaryc                  <     e Zd ZdgZd fd	Z fdZd Zd Z xZS )r
   _idNc                t    t          |          | _        t                                          ||           d S N)idr   super__init__selfkeycallback	__class__s      L/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/utils/weak.pyr   zWeakIdRef.__init__.   s2     c77h'''''    c                    t                                                      }t          |d          r|                                 |S N_fix_weakrefr   __call__hasattrr   r   rr   s     r   r   zWeakIdRef.__call__7   ?    GG1n%% 	NNr   c                    | j         S r   r   r   s    r   __hash__zWeakIdRef.__hash__>   	    xr   c                B     |             } |            }||||u S | |u S r    r   otherabs       r   __eq__zWeakIdRef.__eq__A   s6     DFFEGG=Q]6Mu}r   r   	__name__
__module____qualname__	__slots__r   r   r'   r/   __classcell__r   s   @r   r
   r
   +   s{        I( ( ( ( ( (            r   r
   c                  <     e Zd ZdgZd fd	Z fdZd Zd Z xZS )_WeakHashRefr   Nc                t    t          |          | _        t                                          ||           d S r   )hashr   r   r   r   s      r   r   z_WeakHashRef.__init__Y   s2     99h'''''r   c                    t                                                      }t          |d          r|                                 |S r   r   r!   s     r   r   z_WeakHashRef.__call__b   r#   r   c                    | j         S r   r%   r&   s    r   r'   z_WeakHashRef.__hash__i   r(   r   c                z     |             } |            }|"| t          |          t          |          k    S | |u S r   )r:   r+   s       r   r/   z_WeakHashRef.__eq__l   sD     DFFEGG=Q]77d1gg%%u}r   r   r0   r6   s   @r   r8   r8   V   s{        I( ( ( ( ( (            r   r8   c                      e Zd ZdefdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZeZd ZddZd Zd Zd ZeZd Zd Zd Zd ZddZddZd Zd Zd Zd ZdS )r   Nc                    i | _         || _        t          |           fd}|| _        g | _        t                      | _        d| _        ||                     |           d S d S )Nc                     |            }|?|j         r|j                            |            d S 	 |j        | = d S # t          $ r Y d S w xY wd S r   )
_iterating_pending_removalsappenddataKeyError)kselfrefr   s      r   removez,WeakIdKeyDictionary.__init__.<locals>.remove}   sv    799D? *11!44444 IaLLL#     s   ; 
A	A	F)	rD   ref_typer   _removerB   setrA   
_dirty_lenupdate)r   dictrI   rH   s       r   r   zWeakIdKeyDictionary.__init__x   sv    	 !$ii 		 		 		 		 !#%%KK r   c                    | j         j        }| j        }	 	  |            }n# t          $ r Y d S w xY w	 ||= n# t          $ r Y nw xY w3r   )rB   poprD   
IndexErrorrE   )r   rP   dr   s       r   _commit_removalsz$WeakIdKeyDictionary._commit_removals   s    
 $(I		cee   cFF   		s   
! 
//7 
AAc                T    | j         fd| j        D             | _        d| _        d S )Nc                    g | ]}|v |	S r*   r*   ).0rF   rR   s     r   
<listcomp>z7WeakIdKeyDictionary._scrub_removals.<locals>.<listcomp>   s    !N!N!NqAvv!vvvr   F)rD   rB   rL   )r   rR   s    @r   _scrub_removalsz#WeakIdKeyDictionary._scrub_removals   s4    I!N!N!N!NT-C!N!N!Nr   c                J    d| _         | j        |                     |          = d S NT)rL   rD   rI   r   r   s     r   __delitem__zWeakIdKeyDictionary.__delitem__   s%    IdmmC(()))r   c                B    | j         |                     |                   S r   )rD   rI   r[   s     r   __getitem__zWeakIdKeyDictionary.__getitem__   s    ys++,,r   c                    | j         r| j        r|                                  t          | j                  t          | j                  z
  S r   )rL   rB   rX   lenrD   r&   s    r   __len__zWeakIdKeyDictionary.__len__   sH    ? 	#t5 	#   """49~~D$: ; ;;;r   c                D    d| j         j         dt          |           ddS )N<z at z#x>)r   r1   r   r&   s    r   __repr__zWeakIdKeyDictionary.__repr__   s)    >4>*>>4>>>>>r   c                L    || j         |                     || j                  <   d S r   )rD   rI   rJ   )r   r   values      r   __setitem__zWeakIdKeyDictionary.__setitem__   s$    6;	$--T\22333r   c                    t                      }t          |           5  | j                                        D ]\  }} |            }||||<   	 d d d            n# 1 swxY w Y   |S r   )r   r   rD   items)r   newr   rg   os        r   copyzWeakIdKeyDictionary.copy   s    !##T"" 	# 	#"ioo// # #
UCEE="CF#	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 
s   1AA #A c                    ddl m} |                                 }t          |           5  | j                                        D ] \  }} |            }| |||          ||<   !	 d d d            n# 1 swxY w Y   |S )Nr   )deepcopy)rm   ro   r   r   rD   rj   )r   memoro   rk   r   rg   rl   s          r   __deepcopy__z WeakIdKeyDictionary.__deepcopy__   s    !!!!!!nnT"" 	3 	3"ioo// 3 3
UCEE=%XeT22CF3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
 
s   ;A22A69A6c                ^    | j                             |                     |          |          S r   )rD   getrI   r   r   defaults      r   rs   zWeakIdKeyDictionary.get   s$    y}}T]]3//999r   c                d    	 |                      |          }n# t          $ r Y dS w xY w|| j        v S )NF)rI   	TypeErrorrD   )r   r   wrs      r   __contains__z WeakIdKeyDictionary.__contains__   sH    	s##BB 	 	 	55	TYs    
&&c              #     K   t          |           5  | j                                        D ]\  }} |            }|||fV  	 d d d            d S # 1 swxY w Y   d S r   r   rD   rj   )r   rx   rg   r   s       r   rj   zWeakIdKeyDictionary.items   s      T"" 	% 	%!Y__.. % %	Ebdd?u*$$$%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   2AAAc              #     K   t          |           5  | j        D ]} |            }||V  	 d d d            d S # 1 swxY w Y   d S r   )r   rD   )r   rx   objs      r   keyszWeakIdKeyDictionary.keys   s      T"" 	 	i  bdd?III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;??c              #     K   t          |           5  | j                                        D ]\  }} |            |V  	 d d d            d S # 1 swxY w Y   d S r   r{   )r   rx   rg   s      r   valueszWeakIdKeyDictionary.values   s      T"" 	  	 !Y__..    	E244#KKK 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   .AAAc                *    t          | j                  S )az  Return a list of weak references to the keys.

        The references are not guaranteed to be 'live' at the time
        they are used, so the result of calling the references needs
        to be checked before being used.  This can be used to avoid
        creating references that will cause the garbage collector to
        keep the keys around longer than needed.

        )listrD   r&   s    r   keyrefszWeakIdKeyDictionary.keyrefs   s     DIr   c                l    d| _         	 | j                                        \  }} |            }|||fS -rZ   )rL   rD   popitem)r   r   rg   rl   s       r   r   zWeakIdKeyDictionary.popitem   sC    	 **,,JCA}%x		 r   c                \    d| _          | j        j        |                     |          g|R  S rZ   )rL   rD   rP   rI   )r   r   argss      r   rP   zWeakIdKeyDictionary.pop  s1    ty}T]]3//7$7777r   c                j    | j                             |                     || j                  |          S r   )rD   
setdefaultrI   rJ   rt   s      r   r   zWeakIdKeyDictionary.setdefault  s*    y##DMM#t|$D$DgNNNr   c                $   | j         }|`t          |d          s t          i           |          }|                                D ]#\  }}|||                     || j                  <   $t          |          r|                     |           d S d S )Nrj   )rD   r    typerj   rI   rJ   r`   rM   )r   rN   kwargsrR   r   rg   s         r   rM   zWeakIdKeyDictionary.update
  s    I4)) &tBxx~~"jjll < <
U6;$--T\2233v;; 	 KK	  	 r   c                0    |                      |           | S r   )rM   r   r,   s     r   __ior__zWeakIdKeyDictionary.__ior__  s    Er   c                    t          |t          j                  r+|                                 }|                    |           |S t
          S r   )
isinstance_collections_abcr   rm   rM   NotImplementedr   r,   cs      r   __or__zWeakIdKeyDictionary.__or__  s?    e-566 			AHHUOOOHr   c                    t          |t          j                  r@|                                 }|                    |           |                    |            |S t
          S r   )r   r   r   r   rM   r   r   s      r   __ror__zWeakIdKeyDictionary.__ror__  sP    e-566 	  AHHUOOOHHTNNNHr   c                    t          |t                    st          S d |                                 D             d |                                D             k    S )Nc                4    i | ]\  }}t          |          |S r*   r   rV   rF   vs      r   
<dictcomp>z.WeakIdKeyDictionary.__eq__.<locals>.<dictcomp>,  s$    222TQ1q222r   c                4    i | ]\  }}t          |          |S r*   r   r   s      r   r   z.WeakIdKeyDictionary.__eq__.<locals>.<dictcomp>,  s$    6Z6Z6ZDAqr!uua6Z6Z6Zr   )r   r   r   rj   r   s     r   r/   zWeakIdKeyDictionary.__eq__)  sR    %)) 	"!!22TZZ\\2226Z6ZEKKMM6Z6Z6ZZZr   r   )r1   r2   r3   r
   r   rS   rX   r\   r^   ra   re   rh   rm   __copy__rq   rs   ry   rj   r~   __iter__r   r   r   rP   r   rM   r   r   r   r/   r*   r   r   r   r   w   s        9    .  $     
* * *- - -< < <? ? ?< < <   H  : : : :  % % %   H     
 
 
     8 8 8O O O O             [ [ [ [ [r   r   c                  ,    e Zd ZU dZded<   d	dZd ZdS )
r	   zuWrapper around a weak ref of a Tensor that handles the _fix_weakref() call required when unwrapping a Tensor weakref.zWeakRef[Tensor]r   tensorr   c                f    t          |t                    sJ t          j        |          | _        d S r   )r   r   weakrefr   )r   r   s     r   r   zTensorWeakRef.__init__7  s-    &&)))));v&&r   c                    |                                  }||S t          |t                    sJ |                                 |S r   )r   r   r   r   )r   outs     r   r   zTensorWeakRef.__call__;  sF    hhjj;J#v&&&&&
r   N)r   r   )r1   r2   r3   __doc____annotations__r   r   r*   r   r   r	   r	   2  sK         ' ' ' '    r   r	   )
__future__r   r   r   _weakrefsetr   collections.abcr   r   torchr   abcr   WeakRef__all__r
   r8   r   r   r	   r*   r   r   <module>r      sd   " " " " " "        ' ' ' ' ' ' 3 3 3 3 3 3 3 3       * * * * * *  [
Z
Z8' ' ' ' ' ' ' 'V    7;   Bu[ u[ u[ u[ u[. u[ u[ u[p .          r   