
    =Og	T                     :   	 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                            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dS )    )getweakrefcountgetweakrefsrefproxyCallableProxyType	ProxyTypeReferenceType_remove_dead_weakref)WeakSet_IterationGuardN)r   r   r   r   WeakKeyDictionaryr	   r   r   
ProxyTypesWeakValueDictionaryr   
WeakMethodfinalizec                   F     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__Nc                 \   	 |j         }|j        }n># t          $ r1 t          d                    t          |                              d w xY wfd}t          j        | ||          }t          ||          |_        t          |          |_	        d|_
        t          |          |S )Nz)argument should be a bound method, not {}c                 Z                 }|j         rd|_          |           d S d S d S NF)r   )argselfcallbackself_wrs      /usr/lib64/python3.11/weakref.py_cbzWeakMethod.__new__.<locals>._cb5   sH     799D{ ##'HTNNNNN# #''    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=DD 	; 	; 	;G#VDJJ//1 16:;	;	# 	# 	# 	# 	# 	# {3S))T3t**d))s	    ;Ac                     t                                                      }|                                 }||d S |                     ||          S N)super__call__r   r   )r   r*   r+   	__class__s      r   r/   zWeakMethod.__call__D   sI    gg  ~~;$,4tS)))r    c                     t          |t                    r7| j        r|j        s| |u S t          j        | |          o| j        |j        k    S t          S r-   )
isinstancer   r   r   __eq__r   NotImplementedr   others     r   r3   zWeakMethod.__eq__K   sX    eZ(( 	Q; %el %u}$:dE**Pt~/PPr    c                     t          |t                    r7| j        r|j        s| |uS t          j        | |          p| j        |j        k    S t          S r-   )r2   r   r   r   __ne__r   r4   r5   s     r   r8   zWeakMethod.__ne__R   sY    eZ(( 	P; )el )5((:dE**Odn.OOr    r-   )__name__
__module____qualname__	__slots__r'   r/   r3   r8   r   __hash____classcell__r0   s   @r   r   r   &   st        
 CI   ,* * * * *     |HHHHHr    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dS )r    c                    t          |           t          fd}|| _        g | _        t	                      | _        i | _         | j        |fi | d S )Nc                      |            }|@|j         r!|j                            | j                   d S  ||j        | j                   d S d S r-   )
_iterating_pending_removalsappendkeydata)wrselfref_atomic_removalr   s       r   removez,WeakValueDictionary.__init__.<locals>.removei   sb    799D? 7*11"&99999 $ODIrv66666  r    )r   r
   _removerE   setrD   rH   update)r   r6   kwrL   s       r   __init__zWeakValueDictionary.__init__h   se    "4yy:N 	7 	7 	7 	7 !#%%	E  R     r    c                 ~    | j         j        }| j        }	 	  |            }n# t          $ r Y d S w xY w |||           *r-   )rE   poprH   
IndexError)r   rK   rS   drG   s        r   _commit_removalsz$WeakValueDictionary._commit_removalsy   sd    $(I	$cee   OAs###	$s   
! 
//c                     | j         r|                                   | j        |                     }|t          |          |S r-   rE   rV   rH   KeyErrorr   rG   os      r   __getitem__zWeakValueDictionary.__getitem__   sH    ! 	$!!###DIcN93--Hr    c                 L    | j         r|                                  | j        |= d S r-   )rE   rV   rH   r   rG   s     r   __delitem__zWeakValueDictionary.__delitem__   s,    ! 	$!!###IcNNNr    c                 `    | j         r|                                  t          | j                  S r-   )rE   rV   lenrH   r   s    r   __len__zWeakValueDictionary.__len__   s-    ! 	$!!###49~~r    c                     | j         r|                                  	  | j        |                     }n# t          $ r Y dS w xY w|d uS r   rX   rZ   s      r   __contains__z WeakValueDictionary.__contains__   se    ! 	$!!###		#  AA 	 	 	55	}s   3 
A Ac                 >    d| j         j        t          |           fz  S Nz<%s at %#x>r0   r9   idrb   s    r   __repr__zWeakValueDictionary.__repr__        7DBBBr    c                 x    | j         r|                                  t          || j        |          | j        |<   d S r-   )rE   rV   KeyedRefrM   rH   r   rG   values      r   __setitem__zWeakValueDictionary.__setitem__   s<    ! 	$!!###!%s;;	#r    c                    | j         r|                                  t                      }t          |           5  | j                                        D ]\  }} |            }||||<   	 d d d            n# 1 swxY w Y   |S r-   )rE   rV   r   r   rH   items)r   newrG   rI   r[   s        r   copyzWeakValueDictionary.copy   s    ! 	$!!###!##T"" 	! 	!9??,, ! !RBDD= CH!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
 
s   1A77A;>A;c                 4   ddl m} | j        r|                                  |                                 }t          |           5  | j                                        D ] \  }} |            }||| |||          <   !	 d d d            n# 1 swxY w Y   |S Nr   )deepcopy)rt   rw   rE   rV   r0   r   rH   rr   )r   memorw   rs   rG   rI   r[   s          r   __deepcopy__z WeakValueDictionary.__deepcopy__   s    !!!!!!! 	$!!###nnT"" 	1 	19??,, 1 1RBDD=/0Cd++,1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
 
s   ;BBBNc                     | j         r|                                  	 | j        |         } |            }||S |S # t          $ r |cY S w xY wr-   rX   )r   rG   defaultrI   r[   s        r   getzWeakValueDictionary.get   sq    ! 	$!!###
	3B Ay  	 	 	NNN	s   : A	A	c              #      K   | j         r|                                  t          |           5  | j                                        D ]\  }} |            }|||fV  	 d d d            d S # 1 swxY w Y   d S r-   rE   rV   r   rH   rr   )r   krI   vs       r   rr   zWeakValueDictionary.items   s      ! 	$!!###T"" 	 	**  2BDD=Q$JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   2A--A14A1c              #      K   | j         r|                                  t          |           5  | j                                        D ]\  }} |            |V  	 d d d            d S # 1 swxY w Y   d S r-   r~   )r   r   rI   s      r   keyszWeakValueDictionary.keys   s      ! 	$!!###T"" 	 	**  2244#GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   .A))A-0A-c              #      K   	 | j         r|                                  t          |           5  | j                                        E d {V  d d d            d S # 1 swxY w Y   d S r-   rE   rV   r   rH   valuesrb   s    r   itervaluerefsz!WeakValueDictionary.itervaluerefs   s      	 ! 	$!!###T"" 	* 	*y'')))))))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s    AA"Ac              #      K   | j         r|                                  t          |           5  | j                                        D ]} |            }||V  	 d d d            d S # 1 swxY w Y   d S r-   r   r   rI   r*   s      r   r   zWeakValueDictionary.values   s      ! 	$!!###T"" 	 	i&&((  bdd?III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   -A((A,/A,c                     | j         r|                                  	 | j                                        \  }} |            }|||fS -r-   )rE   rV   rH   popitem)r   rG   rI   r[   s       r   r   zWeakValueDictionary.popitem   sY    ! 	$!!###	i''))GCA}Av		r    c                     | j         r|                                  	  | j                            |                      }n# t          $ r d }Y nw xY w||r|d         S t	          |          |S )Nr   )rE   rV   rH   rS   rY   )r   rG   argsr[   s       r   rS   zWeakValueDictionary.pop  s    ! 	$!!###	"	c""$$AA 	 	 	AAA	9 $Awsmm#Hs   "A   AAc                     	  | j         |                     }n# t          $ r d }Y nw xY w|;| j        r|                                  t	          || j        |          | j         |<   |S |S r-   )rH   rY   rE   rV   rm   rM   )r   rG   r{   r[   s       r   
setdefaultzWeakValueDictionary.setdefault  s    		#  AA 	 	 	AAA	9% (%%'''%gt|SAADIcNNHs    ''c                X   | j         r|                                  | j        }|Rt          |d          st	          |          }|                                D ]\  }}t          || j        |          ||<   |                                D ]\  }}t          || j        |          ||<   d S Nrr   )rE   rV   rH   hasattrdictrr   rm   rM   )r   r6   kwargsrU   rG   r[   s         r   rO   zWeakValueDictionary.update!  s    ! 	$!!###I5'** $U++-- 8 8Q!!T\377#llnn 	4 	4FCas33AcFF	4 	4r    c                     	 | j         r|                                  t          | j                                                  S r-   )rE   rV   listrH   r   rb   s    r   	valuerefszWeakValueDictionary.valuerefs-  sB    	 ! 	$!!###DI$$&&'''r    c                 0    |                      |           | S r-   rO   r5   s     r   __ior__zWeakValueDictionary.__ior__;      Er    c                     t          |t          j                  r+|                                 }|                    |           |S t
          S r-   r2   _collections_abcMappingrt   rO   r4   r   r6   cs      r   __or__zWeakValueDictionary.__or__?  ?    e-566 			AHHUOOOHr    c                     t          |t          j                  r@|                                 }|                    |           |                    |            |S t
          S r-   r2   r   r   r0   rO   r4   r   s      r   __ror__zWeakValueDictionary.__ror__F  P    e-566 	  AHHUOOOHHTNNNHr    )rA   r-   )r9   r:   r;   rQ   r
   rV   r\   r_   rc   re   rj   rp   rt   __copy__ry   r|   rr   r   __iter__r   r   r   rS   r   rO   r   r   r   r   rA   r    r   r   r   \   s       ! ! ! !" 0D 
$ 
$ 
$ 
$    
  
  C C C< < <
	 	 	 H
 
 
        H* * *         
4 
4 
4 
4( ( (        r    r   c                   *     e Zd Z	 dZd Z fdZ xZS )rm   rG   c                 @    t          j        | ||          }||_        |S r-   )r   r'   rG   )r&   obr   rG   r   s        r   r'   zKeyedRef.__new__[  s!    {4X..r    c                 L    t                                          ||           d S r-   )r.   rQ   )r   r   r   rG   r0   s       r   rQ   zKeyedRef.__init__`  s#    X&&&&&r    )r9   r:   r;   r<   r'   rQ   r>   r?   s   @r   rm   rm   O  sS         I  
' ' ' ' ' ' ' ' 'r    rm   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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-   )rD   rE   rF   rH   rY   )r   rJ   r   s      r   rL   z*WeakKeyDictionary.__init__.<locals>.removeq  sv    799D? *11!44444 IaLLL#     s   ; 
A	A	F)rH   r   rM   rE   rN   rD   
_dirty_lenrO   )r   r   rL   s      r   rQ   zWeakKeyDictionary.__init__o  so    	!$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-   )rE   rS   rH   rT   rY   )r   rS   rU   rG   s       r   rV   z"WeakKeyDictionary._commit_removals  s    
 $(I		cee   cFF   		s   
! 
//7 
AAc                 T    | j         fd| j        D             | _        d| _        d S )Nc                     g | ]}|v |	S rA   rA   ).0r   rU   s     r   
<listcomp>z5WeakKeyDictionary._scrub_removals.<locals>.<listcomp>  s    !N!N!NqAvv!vvvr    F)rH   rE   r   )r   rU   s    @r   _scrub_removalsz!WeakKeyDictionary._scrub_removals  s4    I!N!N!N!NT-C!N!N!Nr    c                 >    d| _         | j        t          |          = d S NT)r   rH   r   r^   s     r   r_   zWeakKeyDictionary.__delitem__  s    Ic#hhr    c                 6    | j         t          |                   S r-   )rH   r   r^   s     r   r\   zWeakKeyDictionary.__getitem__  s    yS""r    c                     | j         r| j        r|                                  t          | j                  t          | j                  z
  S r-   )r   rE   r   ra   rH   rb   s    r   rc   zWeakKeyDictionary.__len__  sH    ? 	#t5 	#   """49~~D$: ; ;;;r    c                 >    d| j         j        t          |           fz  S rg   rh   rb   s    r   rj   zWeakKeyDictionary.__repr__  rk   r    c                 @    || j         t          || j                  <   d S r-   )rH   r   rM   rn   s      r   rp   zWeakKeyDictionary.__setitem__  s     ,1	#c4<(()))r    c                     t                      }t          |           5  | j                                        D ]\  }} |            }||||<   	 d d d            n# 1 swxY w Y   |S r-   )r   r   rH   rr   )r   rs   rG   ro   r[   s        r   rt   zWeakKeyDictionary.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 rv   )rt   rw   r0   r   rH   rr   )r   rx   rw   rs   rG   ro   r[   s          r   ry   zWeakKeyDictionary.__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                 R    | j                             t          |          |          S r-   )rH   r|   r   r   rG   r{   s      r   r|   zWeakKeyDictionary.get  s    y}}SXXg...r    c                 X    	 t          |          }n# t          $ r Y dS w xY w|| j        v S r   )r   r$   rH   )r   rG   rI   s      r   re   zWeakKeyDictionary.__contains__  sB    	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   rH   rr   )r   rI   ro   rG   s       r   rr   zWeakKeyDictionary.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   rH   r   s      r   r   zWeakKeyDictionary.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   rI   ro   s      r   r   zWeakKeyDictionary.values  s      T"" 	  	 !Y__..    	E244#KKK 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   .AAAc                 ,    	 t          | j                  S r-   )r   rH   rb   s    r   keyrefszWeakKeyDictionary.keyrefs  s    	 DIr    c                 l    d| _         	 | j                                        \  }} |            }|||fS -r   )r   rH   r   )r   rG   ro   r[   s       r   r   zWeakKeyDictionary.popitem  sC    	 **,,JCA}%x		 r    c                 P    d| _          | j        j        t          |          g|R  S r   )r   rH   rS   r   )r   rG   r   s      r   rS   zWeakKeyDictionary.pop  s+    ty}SXX-----r    c                 ^    | j                             t          || j                  |          S r-   )rH   r   r   rM   r   s      r   r   zWeakKeyDictionary.setdefault  s&    y##CT\$:$:7CCCr    c                   | j         }|Zt          |d          s t          i           |          }|                                D ]\  }}||t	          || j                  <   t          |          r|                     |           d S d S r   )rH   r   r&   rr   r   rM   ra   rO   )r   r   r   rU   rG   ro   s         r   rO   zWeakKeyDictionary.update  s    I4)) &tBxx~~"jjll 2 2
U,1#c4<(())v;; 	 KK	  	 r    c                 0    |                      |           | S r-   r   r5   s     r   r   zWeakKeyDictionary.__ior__  r   r    c                     t          |t          j                  r+|                                 }|                    |           |S t
          S r-   r   r   s      r   r   zWeakKeyDictionary.__or__  r   r    c                     t          |t          j                  r@|                                 }|                    |           |                    |            |S t
          S r-   r   r   s      r   r   zWeakKeyDictionary.__ror__  r   r    r-   )r9   r:   r;   rQ   rV   r   r_   r\   rc   rj   rp   rt   r   ry   r|   re   rr   r   r   r   r   r   rS   r   rO   r   r   r   rA   r    r   r   r   d  s          (  $     
     # # #< < <C C C2 2 2   H  / / / /  % % %   H     
 
 
     . . .D D D 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dS )r   rA   Fc                       e Zd ZdZdS )finalize._Info)weakrefr+   r   r   atexitindexN)r9   r:   r;   r<   rA   r    r   _Infor   5  s        L			r    r   c                T   | j         s*dd l}|                    | j                   dt          _         |                                 }t          ||           |_        ||_        ||_	        |pd |_
        d|_        t          | j                  |_        || j        | <   dt          _        d S )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   rQ   zfinalize.__init__8  s    + 	4 MMMOODN+++/3H,zz||3~~		n$*++
#tr    Nc                     	 | j                             | d           }|r | j        s |j        |j        i |j        pi S d S d S r-   )r   rS   	_shutdownr+   r   r   )r   _r   s      r   r/   zfinalize.__call__I  si    	!~!!$-- 	@ 	@49di?DK,=2???	@ 	@ 	@ 	@r    c                     	 | j                             |           }|o|                                }|2| j                             | d           r||j        |j        |j        pi fS d S d S r-   )r   r|   r   rS   r+   r   r   r   r   r*   s      r   detachzfinalize.detachP  sn    	!~!!$''%t||~~?t~11$==?DIt{/@bAA ???r    c                     	 | j                             |           }|o|                                }|||j        |j        |j        pi fS d S r-   )r   r|   r   r+   r   r   r   s      r   peekzfinalize.peekX  sT    	!~!!$''%t||~~?DIt{/@bAA ?r    c                     	 | | j         v S r-   )r   rb   s    r   alivezfinalize.alive`  s    (t~%%r    c                 d    	 | j                             |           }t          |          o|j        S r-   r   r|   boolr   )r   r   s     r   r   zfinalize.atexite  s-    8~!!$''Dzz)dk)r    c                 j    | j                             |           }|rt          |          |_        d S d S r-   r   )r   ro   r   s      r   r   zfinalize.atexitk  s:    ~!!$'' 	&u++DKKK	& 	&r    c                 @   | j                             |           }|o|                                }|&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   ri   r   s      r   rj   zfinalize.__repr__q  s    ~!!$''%t||~~;-d1Dbhh0OOO6d$bhhS		0BBsGGLM Mr    c                     d | j                                         D             }|                    d            d |D             S )Nc                 *    g | ]\  }}|j         ||fS rA   )r   r   fis      r   r   z-finalize._select_for_exit.<locals>.<listcomp>}  s'    BBBu!BaUBBBr    c                     | d         j         S )N   )r   )items    r   <lambda>z+finalize._select_for_exit.<locals>.<lambda>~  s    tAw} r    r   c                     g | ]\  }}|S rA   rA   r   s      r   r   z-finalize._select_for_exit.<locals>.<listcomp>  s    !!!eq!!!r    )r   rr   sort)r(   Ls     r   _select_for_exitzfinalize._select_for_exitz  sR     CB 3 3 5 5BBB	,,---!!q!!!!r    c                    d}	 | j         rdd l}|                                rd}|                                 d }	 |t          j        r |                                 }dt          _        |snP|                                }	  |             n/# t          $ r" t          j
        t          j                      Y nw xY wdt          _        |r|                                 d S d S # dt          _        |r|                                 w w xY w)NFr   T)r   gc	isenableddisabler   r   r   rS   	Exceptionsys
excepthookexc_infor   enable)r(   reenable_gcr   pendingr   s        r   r   zfinalize._exitfunc  s,   
 	} 2			<<>> !"&KJJLLL2(/"%"6"6"8"8*/" A8
 $ 8 8 8777782$ "&H 		  "&H 		s0   A=C# 
B C# )B96C# 8B99C# #%Dr-   )r9   r:   r;   r<   r   r   	itertoolscountr   r   r   r   rQ   r/   r   r   propertyr   r   setterrj   classmethodr   r   rA   r    r   r   r     sZ       " III!)/##KF#M M M M M M M M  "@ @ @ @B B BB B B & & X& * * X*
 ]& & ]&
M M M " " ["     [     r    r   )_weakrefr   r   r   r   r   r   r	   r
   _weakrefsetr   r   r   r  r  r   __all__
MutableSetr   r   MutableMappingr   rm   r   r   rA   r    r   <module>r     s                      1 0 0 0 0 0 0 0     



    *+
0 0 0   $ $W - - -3 3 3 3 3 3 3 3lp p p p p*9 p p pf' ' ' ' 's ' ' '*u u u u u(7 u u upF F F F F F F F F Fr    