
    daf	T                     0   	 d dl mZmZmZmZmZmZmZmZ d dl	m
Z
mZ d dlZd dlZd dlZeefZg dZej"                  j%                  e
        G d de      Z G d dej(                        Z G d	 d
e      Z G d dej(                        Z G d d      Zy)    )getweakrefcountgetweakrefsrefproxyCallableProxyType	ProxyTypeReferenceType_remove_dead_weakref)WeakSet_IterationGuardN)r   r   r   r   WeakKeyDictionaryr	   r   r   
ProxyTypesWeakValueDictionaryr   
WeakMethodfinalizec                   P     e Zd Z	 dZddZ fdZd Zd Zej                  Z	 xZ
S )r   )	_func_ref
_meth_type_alive__weakref__c                 >   	 |j                   }|j                  }fd}t        j                  | ||      }t        ||      |_        t        |      |_	        d|_
        t        |      |S # t        $ r% t        dj	                  t        |                  d w xY w)Nz)argument should be a bound method, not {}c                 R            }|j                   rd|_         	 |       y y y NF)r   )argselfcallbackself_wrs     "/root/Python-3.12.4/Lib/weakref.py_cbzWeakMethod.__new__.<locals>._cb5   s1     9D{{#'TN (     T)__self____func__AttributeError	TypeErrorformattyper   __new__r   r   r   )clsmethr   objfuncr   r   r   s     `    @r   r'   zWeakMethod.__new__.   s    	;--C==D	# {{3S)T3t*d)!  	;G#VDJ/16:;	;s   A. ..Bc                 n    t         |          }| j                         }||y | j                  ||      S N)super__call__r   r   )r   r*   r+   	__class__s      r   r/   zWeakMethod.__call__D   s9    g ~~;$,tS))r    c                     t        |t              rM| j                  r|j                  s| |u S t        j                  | |      xr | j
                  |j
                  k(  S t        S r-   )
isinstancer   r   r   __eq__r   NotImplementedr   others     r   r3   zWeakMethod.__eq__K   sL    eZ(;;ellu}$::dE*Pt~~/PPr    c                     t        |t              rM| j                  r|j                  s| |uS t        j                  | |      xs | j
                  |j
                  k7  S t        S r-   )r2   r   r   r   __ne__r   r4   r5   s     r   r8   zWeakMethod.__ne__R   sM    eZ(;;ell5((::dE*Odnn.OOr    r-   )__name__
__module____qualname__	__slots__r'   r/   r3   r8   r   __hash____classcell__r0   s   @r   r   r   &   s/    
 CI,* ||Hr    r   c                       e Zd Z	 ddZef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eZd Zd Zd Zd ZddZddZd Zd Zd Zd Zy)r   c                    t        |       t        fd}|| _        g | _        t	               | _        i | _         | j                  |fi | y )Nc                      |       }|P|j                   r&|j                  j                  | j                         y  ||j                  | j                         y y r-   )
_iterating_pending_removalsappendkeydata)wrselfref_atomic_removalr   s       r   removez,WeakValueDictionary.__init__.<locals>.removei   sG    9D??**11"&&9 $DIIrvv6  r    )r   r
   _removerD   setrC   rG   update)r   r6   kwrK   s       r   __init__zWeakValueDictionary.__init__h   sE    "4y:N 	7 !#%	E R r    c                     | j                   j                  }| j                  }	 	  |       } |||       # t        $ r Y y w xY wr-   )rD   poprG   
IndexError)r   rJ   rR   drF   s        r   _commit_removalsz$WeakValueDictionary._commit_removalsy   sR    $$((II e As#   s   6 	AAc                     | j                   r| j                           | j                  |          }|t        |      |S r-   rD   rU   rG   KeyErrorr   rF   os      r   __getitem__zWeakValueDictionary.__getitem__   s=    !!!!#DIIcN93-Hr    c                 V    | j                   r| j                          | j                  |= y r-   )rD   rU   rG   r   rF   s     r   __delitem__zWeakValueDictionary.__delitem__   s"    !!!!#IIcNr    c                 d    | j                   r| j                          t        | j                        S r-   )rD   rU   lenrG   r   s    r   __len__zWeakValueDictionary.__len__   s%    !!!!#499~r    c                     | j                   r| j                          	  | j                  |          }|d uS # t        $ r Y yw xY wr   rW   rY   s      r   __contains__z WeakValueDictionary.__contains__   sN    !!!!#			# A }  		s   6 	AAc                 J    d| j                   j                  t        |       fz  S Nz<%s at %#x>r0   r9   idra   s    r   __repr__zWeakValueDictionary.__repr__         7 7DBBBr    c                     | j                   r| j                          t        || j                  |      | j                  |<   y r-   )rD   rU   KeyedRefrL   rG   r   rF   values      r   __setitem__zWeakValueDictionary.__setitem__   s1    !!!!#!%s;		#r    c                     | j                   r| j                          t               }t        |       5  | j                  j                         D ]  \  }} |       }||||<    	 d d d        |S # 1 sw Y   |S xY wr-   )rD   rU   r   r   rG   items)r   newrF   rH   rZ   s        r   copyzWeakValueDictionary.copy   sx    !!!!#!#T" 	!99??, !RD= CH!	!
 
	!
 
s   *A/A//A9c                    ddl m} | j                  r| j                          | j	                         }t        |       5  | j                  j                         D ]  \  }} |       }||| |||      <    	 d d d        |S # 1 sw Y   |S xY wNr   )deepcopy)rs   rv   rD   rU   r0   r   rG   rq   )r   memorv   rr   rF   rH   rZ   s          r   __deepcopy__z WeakValueDictionary.__deepcopy__   s    !!!!!#nnT" 	199??, 1RD=/0Cd+,1	1
 
	1
 
s   *B)BBNc                     | j                   r| j                          	 | j                  |   } |       }||S |S # t        $ r |cY S w xY wr-   rW   )r   rF   defaultrH   rZ   s        r   getzWeakValueDictionary.get   sW    !!!!#
	3B Ay  	N	s   : AAc              #      K   | j                   r| j                          t        |       5  | j                  j	                         D ]  \  }} |       }|||f  	 d d d        y # 1 sw Y   y xY wwr-   rD   rU   r   rG   rq   )r   krH   vs       r   rq   zWeakValueDictionary.items   sj     !!!!#T" 	* 2D=Q$J	 	 	s"   (A3*A'A'	A3'A0,A3c              #      K   | j                   r| j                          t        |       5  | j                  j	                         D ]  \  }} |       |  	 d d d        y # 1 sw Y   y xY wwr-   r}   )r   r~   rH   s      r   keyszWeakValueDictionary.keys   sb     !!!!#T" 	* 24#G	 	 	s"   (A/(A#A#	A/#A,(A/c              #      K   	 | j                   r| j                          t        |       5  | j                  j	                         E d {    d d d        y 7 # 1 sw Y   y xY wwr-   rD   rU   r   rG   valuesra   s    r   itervaluerefsz!WeakValueDictionary.itervaluerefs   s]     	 !!!!#T" 	*yy'')))	* 	*)	* 	*s.   )A%A	A
A	A%AA"A%c              #      K   | j                   r| j                          t        |       5  | j                  j	                         D ]  } |       }||  	 d d d        y # 1 sw Y   y xY wwr-   r   r   rH   r*   s      r   r   zWeakValueDictionary.values   sd     !!!!#T" 	ii&&( d?I	 	 	s"   (A.'A"A"	A."A+'A.c                     | j                   r| j                          	 | j                  j                         \  }} |       }|||fS +r-   )rD   rU   rG   popitem)r   rF   rH   rZ   s       r   r   zWeakValueDictionary.popitem   sJ    !!!!#ii'')GCA}Av	 r    c                     | j                   r| j                          	  | j                  j                  |             }||r|d   S t	        |      |S # t        $ r d }Y #w xY w)Nr   )rD   rU   rG   rR   rX   )r   rF   argsrZ   s       r   rR   zWeakValueDictionary.pop  sk    !!!!#	"		c"$A 9Awsm#H  	A	s    A A"!A"c                     	  | j                   |          }|B| j                  r| j                          t	        || j
                  |      | j                   |<   |S |S # t        $ r d }Y Sw xY wr-   )rG   rX   rD   rU   rl   rL   )r   rF   rz   rZ   s       r   
setdefaultzWeakValueDictionary.setdefault  so    			# A 9%%%%'%gt||SADIIcNNH  	A	s   A A*)A*c                N   | j                   r| j                          | j                  }|It        |d      st	        |      }|j                         D ]  \  }}t        || j                  |      ||<   ! |j                         D ]  \  }}t        || j                  |      ||<   ! y Nrq   )rD   rU   rG   hasattrdictrq   rl   rL   )r   r6   kwargsrT   rF   rZ   s         r   rN   zWeakValueDictionary.update!  s    !!!!#II5'*U++- 8Q!!T\\37#8lln 	4FCas3AcF	4r    c                     	 | j                   r| j                          t        | j                  j	                               S r-   )rD   rU   listrG   r   ra   s    r   	valuerefszWeakValueDictionary.valuerefs-  s6    	 !!!!#DII$$&''r    c                 (    | j                  |       | S r-   rN   r5   s     r   __ior__zWeakValueDictionary.__ior__;      Er    c                     t        |t        j                        r#| j                         }|j	                  |       |S t
        S r-   r2   _collections_abcMappingrs   rN   r4   r   r6   cs      r   __or__zWeakValueDictionary.__or__?  4    e-556		AHHUOHr    c                     t        |t        j                        r4| j                         }|j	                  |       |j	                  |        |S t
        S r-   r2   r   r   r0   rN   r4   r   s      r   __ror__zWeakValueDictionary.__ror__F  @    e-556 AHHUOHHTNHr    ) r-   )r9   r:   r;   rP   r
   rU   r[   r^   rb   rd   ri   ro   rs   __copy__rx   r{   rq   r   __iter__r   r   r   rR   r   rN   r   r   r   r   r   r    r   r   r   \   s    !" 0D 
$

C<
	 H
 H*
4(r    r   c                   *     e Zd Z	 dZd Z fdZ xZS )rl   rF   c                 B    t        j                  | ||      }||_        |S r-   )r   r'   rF   )r&   obr   rF   r   s        r   r'   zKeyedRef.__new__[  s     {{4X.r    c                 &    t         |   ||       y r-   )r.   rP   )r   r   r   rF   r0   s       r   rP   zKeyedRef.__init__`  s    X&r    )r9   r:   r;   r<   r'   rP   r>   r?   s   @r   rl   rl   O  s     I
' 'r    rl   c                       e Zd Z	 d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y)r   Nc                     i | _         t        |       fd}|| _        g | _        t	               | _        d| _        || j                  |       y y )Nc                      |       }|7|j                   r|j                  j                  |        y 	 |j                  | = y y # t        $ r Y y w xY wr-   )rC   rD   rE   rG   rX   )r~   rI   r   s      r   rK   z*WeakKeyDictionary.__init__.<locals>.removeq  sS    9D??**11!4 IIaL   $ s   A 	AAF)rG   r   rL   rD   rM   rC   
_dirty_lenrN   )r   r   rK   s      r   rP   zWeakKeyDictionary.__init__o  sM    	!$i 		 !#%KK r    c                     | j                   j                  }| j                  }	 	  |       }	 ||= # t        $ r Y y w xY w# t        $ r Y w xY wr-   )rD   rR   rG   rS   rX   )r   rR   rT   rF   s       r   rU   z"WeakKeyDictionary._commit_removals  se    
 $$((IIecF   
  s   1 A  	== 	AAc                 |    | j                   }| j                  D cg c]	  }||v s| c}| _        d| _        y c c}w r   )rG   rD   r   )r   rT   r~   s      r   _scrub_removalsz!WeakKeyDictionary._scrub_removals  s7    II-1-C-C!NqAv!!N "Os   	99c                 >    d| _         | j                  t        |      = y NT)r   rG   r   r]   s     r   r^   zWeakKeyDictionary.__delitem__  s    IIc#hr    c                 2    | j                   t        |         S r-   )rG   r   r]   s     r   r[   zWeakKeyDictionary.__getitem__  s    yyS""r    c                     | j                   r| j                  r| j                          t        | j                        t        | j                        z
  S r-   )r   rD   r   r`   rG   ra   s    r   rb   zWeakKeyDictionary.__len__  s=    ??t55   "499~D$:$: ;;;r    c                 J    d| j                   j                  t        |       fz  S rf   rg   ra   s    r   ri   zWeakKeyDictionary.__repr__  rj   r    c                 J    || j                   t        || j                        <   y r-   )rG   r   rL   rm   s      r   ro   zWeakKeyDictionary.__setitem__  s    ,1		#c4<<()r    c                     t               }t        |       5  | j                  j                         D ]  \  }} |       }||||<    	 d d d        |S # 1 sw Y   |S xY wr-   )r   r   rG   rq   )r   rr   rF   rn   rZ   s        r   rs   zWeakKeyDictionary.copy  sc    !T" 	#"iioo/ #
UE="CF#	#
 
	#
 
s   *AAAc                     ddl m} | j                         }t        |       5  | j                  j                         D ]  \  }} |       }| |||      ||<    	 d d d        |S # 1 sw Y   |S xY wru   )rs   rv   r0   r   rG   rq   )r   rw   rv   rr   rF   rn   rZ   s          r   rx   zWeakKeyDictionary.__deepcopy__  sq    !nnT" 	3"iioo/ 3
UE=%eT2CF3	3
 
	3
 
s   *A&A&&A0c                 L    | j                   j                  t        |      |      S r-   )rG   r{   r   r   rF   rz   s      r   r{   zWeakKeyDictionary.get  s    yy}}SXg..r    c                 T    	 t        |      }|| j                  v S # t        $ r Y yw xY wr   )r   r$   rG   )r   rF   rH   s      r   rd   zWeakKeyDictionary.__contains__  s4    	SB TYY  		s    	''c              #      K   t        |       5  | j                  j                         D ]  \  }} |       }|||f  	 d d d        y # 1 sw Y   y xY wwr-   r   rG   rq   )r   rH   rn   rF   s       r   rq   zWeakKeyDictionary.items  sV     T" 	%!YY__. %	Ed?u*$%	% 	% 	%s!   A*AA	AAAc              #      K   t        |       5  | j                  D ]  } |       }||  	 d d d        y # 1 sw Y   y xY wwr-   )r   rG   r   s      r   r   zWeakKeyDictionary.keys  sF     T" 	ii d?I	 	 	s   A88	AAAc              #      K   t        |       5  | j                  j                         D ]  \  }} |       |  	 d d d        y # 1 sw Y   y xY wwr-   r   )r   rH   rn   s      r   r   zWeakKeyDictionary.values  sM     T" 	 !YY__.  	E4#K 	  	  	 s    A(AA	AAAc                 .    	 t        | j                        S r-   )r   rG   ra   s    r   keyrefszWeakKeyDictionary.keyrefs  s    	 DIIr    c                 h    d| _         	 | j                  j                         \  }} |       }|||fS +r   )r   rG   r   )r   rF   rn   rZ   s       r   r   zWeakKeyDictionary.popitem  s<    **,JCA}%x	 r    c                 \    d| _          | j                  j                  t        |      g| S r   )r   rG   rR   r   )r   rF   r   s      r   rR   zWeakKeyDictionary.pop  s'    tyy}}SX---r    c                 b    | j                   j                  t        || j                        |      S r-   )rG   r   r   rL   r   s      r   r   zWeakKeyDictionary.setdefault  s$    yy##CT\\$:7CCr    c                    | j                   }|Nt        |d      s t        i       |      }|j                         D ]  \  }}||t	        || j
                        <     t        |      r| j                  |       y y r   )rG   r   r&   rq   r   rL   r`   rN   )r   r   r   rT   rF   rn   s         r   rN   zWeakKeyDictionary.update  sp    II4)tBx~"jjl 2
U,1#c4<<()2v;KK r    c                 (    | j                  |       | S r-   r   r5   s     r   r   zWeakKeyDictionary.__ior__  r   r    c                     t        |t        j                        r#| j                         }|j	                  |       |S t
        S r-   r   r   s      r   r   zWeakKeyDictionary.__or__  r   r    c                     t        |t        j                        r4| j                         }|j	                  |       |j	                  |        |S t
        S r-   r   r   s      r   r   zWeakKeyDictionary.__ror__  r   r    r-   )r9   r:   r;   rP   rU   r   r^   r[   rb   ri   ro   rs   r   rx   r{   rd   rq   r   r   r   r   r   rR   r   rN   r   r   r   r   r    r   r   r   d  s    ($ 
 #<C2 H/% H 
 .D r    r   c                       e Zd Z	 dZi ZdZ ej                         ZdZ	dZ
 G d d      Zd ZddZd Zd	 Zed
        Zed        Zej&                  d        Zd Zed        Zed        Zy)r   r   Fc                       e Zd ZdZy)finalize._Info)weakrefr+   r   r   atexitindexN)r9   r:   r;   r<   r   r    r   _Infor   5  s    L	r    r   c                Z   | j                   s*dd l}|j                  | j                         dt        _         | j                         }t        ||       |_        ||_        ||_	        |xs d |_
        d|_        t        | j                        |_        || j                  | <   dt        _        y )Nr   T)_registered_with_atexitr   register	_exitfuncr   r   r   r   r+   r   r   next_index_iterr   	_registry_dirty)r   r*   r+   r   r   r   infos          r   rP   zfinalize.__init__8  s    ++ OODNN+/3H,zz|3~		n$**+
#tr    Nc                     	 | j                   j                  | d       }|r7| j                  s* |j                  |j                  i |j
                  xs i S y y r-   )r   rR   	_shutdownr+   r   r   )r   _r   s      r   r/   zfinalize.__call__I  sP    	!~~!!$-499dii?DKK,=2?? '4r    c                     	 | j                   j                  |       }|xr |j                         }|E| j                   j                  | d       r(||j                  |j
                  |j                  xs i fS y y r-   )r   r{   r   rR   r+   r   r   r   r   r*   s      r   detachzfinalize.detachP  sj    	!~~!!$'%t||~?t~~11$=DIIt{{/@bAA  >?r    c                     	 | j                   j                  |       }|xr |j                         }|(||j                  |j                  |j
                  xs i fS y r-   )r   r{   r   r+   r   r   r   s      r   peekzfinalize.peekX  sU    	!~~!!$'%t||~?DIIt{{/@bAA r    c                      	 | | j                   v S r-   )r   ra   s    r   alivezfinalize.alive`  s    (t~~%%r    c                 l    	 | j                   j                  |       }t        |      xr |j                  S r-   r   r{   boolr   )r   r   s     r   r   zfinalize.atexite  s,    8~~!!$'Dz)dkk)r    c                 `    | j                   j                  |       }|rt        |      |_        y y r-   r   )r   rn   r   s      r   r   zfinalize.atexitk  s)    ~~!!$'u+DK r    c                 ,   | j                   j                  |       }|xr |j                         }|#dt        |       j                  t        |       fz  S dt        |       j                  t        |       t        |      j                  t        |      fz  S )Nz<%s object at %#x; dead>z!<%s object at %#x; for %r at %#x>)r   r{   r   r&   r9   rh   r   s      r   ri   zfinalize.__repr__q  s    ~~!!$'%t||~;-d1D1Dbh0OOO6d$$bhS	0B0BBsGLM Mr    c                     | j                   j                         D cg c]  \  }}|j                  s||f }}}|j                  d        |D cg c]  \  }}|	 c}}S c c}}w c c}}w )Nc                      | d   j                   S )N   )r   )items    r   <lambda>z+finalize._select_for_exit.<locals>.<lambda>~  s    tAw}} r    r   )r   rq   r   sort)r(   fiLs       r   _select_for_exitzfinalize._select_for_exitz  s_     !$ 3 3 5Bu!aUBB	,- !eq!! C!s   A$A$A*c                    d}	 | j                   rrdd l}|j                         rd}|j                          d }	 |t        j
                  r| j                         }dt        _        |sn|j                         }	  |        Idt        _        |rj                          y y # t        $ r' t        j                  t        j                           Y Ow xY w# dt        _        |rj                          w w xY w)NFr   T)r   gc	isenableddisabler   r   r   rR   	Exceptionsys
excepthookexc_infor   enable)r(   reenable_gcr   pendingr   s        r   r   zfinalize._exitfunc  s    
 	}}<<>"&KJJL(//"%"6"6"8*/"A8
  $ "&H		  % 878
 "&H		 s0   A5C :B! C !-CC CC  C4r-   )r9   r:   r;   r<   r   r   	itertoolscountr   r   r   r   rP   r/   r   r   propertyr   r   setterri   classmethodr   r   r   r    r   r   r     s    " III!)//#KF#M M"@BB & & * *
 ]]& &
M " "    r    r   )_weakrefr   r   r   r   r   r   r	   r
   _weakrefsetr   r   r   r   r  r   __all__
MutableSetr   r   MutableMappingr   rl   r   r   r   r    r   <module>r     s      1  
 *+
0    $ $W -3 3lp*99 pf's '*u(77 upF Fr    