
    daf7A                        d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlZd dlZd dlmZ  G d d      Z G d d	      Z G d
 de      Z G d de      Z G d de j&                        Zedk(  r e j,                          yy)    N)WeakSet)
UserString)Set
MutableSet)supportc                       e Zd Zy)FooN__name__
__module____qualname__     ,/root/Python-3.12.4/Lib/test/test_weakset.pyr	   r	          r   r	   c                       e Zd Zd Zy)RefCyclec                     | | _         y N)cycleselfs    r   __init__zRefCycle.__init__   s	    
r   N)r   r   r   r   r   r   r   r   r      s    r   r   c                       e Zd Zy)WeakSetSubclassNr
   r   r   r   r   r      r   r   r   c                       e Zd ZdZy)WeakSetWithSlots)xyN)r   r   r   	__slots__r   r   r   r   r      s    Ir   r   c                   &   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1y0)1TestWeakSetc                 2   dD cg c]  }t        |       c}| _        dD cg c]  }t        |       c}| _        dD cg c]  }t        |       c}| _        dD cg c]  }t        |       c}| _        dD cg c]  }t        |       c}| _        t        | j                        | _        t        | j                        | _        t        | j
                        | _	        t        j                  D cg c]  }t        |       c}| _        t        | j                        | _        t        j                  | j                        | _        t        d      | _        t        | j"                  g      | _        y c c}w c c}w c c}w c c}w c c}w c c}w )Nabc)r   r   zababcdedefF)ustritemsitems2ab_itemsabcde_items	def_itemsr   
ab_weaksetabcde_weaksetdef_weaksetstringascii_lettersletterssdictfromkeysdobjfsr   r'   s     r   setUpzTestWeakSet.setUp   s   '67!d1g7
(781tAw8*./Qa/-45DG5+01a$q'1!$--0$T%5%56"4>>2)/)=)=>AQ>$tzz*9488*% 88/51 ?s"   E;F FF
=F7Fc                     t        t              }t        t              D ]/  }|dk(  s|j                  d      r| j	                  ||d|z          1 y )N
test_c_api_zWeakSet missing method )dirr   set
startswithassertIn)r   weaksetmethodsmethods      r   test_methodszTestWeakSet.test_methods,   sN    W#h 	=F%):):3)?MM&.2V;=	=r   c                 <    | j                  t        t        g d       y )N   )assertRaises	TypeErrorr   r   s    r   test_new_or_initzTestWeakSet.test_new_or_init4   s    )Wb!4r   c                 4   | j                  t        | j                        t        | j                               | j                  t        | j                        d       | `t        j                          | j                  t        | j                        d       y )N   r   )assertEquallenr9   r<   r>   r=   r   
gc_collectr   s    r   test_lenzTestWeakSet.test_len7   sc    TVVc$&&k2TWWq)HTWWq)r   c                 t   | j                   D ],  }| j                  || j                  v || j                  v        . | j	                  d| j                         | j                  | j                  | j                         | `t        j                          | j	                  t        d      | j                         y )NrQ   r,   )r8   rR   r9   r<   assertNotInrG   r=   r>   r   rT   r-   r?   s     r   test_containszTestWeakSet.test_contains>   s     	7AQ$&&[!tvv+6	7 	DFF#dhh(HcDGG,r   c                 D   | j                   j                  | j                        }| j                  D ]2  }| j	                  ||v || j
                  v xs || j                  v        4 | j	                  | j                   t        | j                               | j	                  t        |      t               | j                  t        | j                   j                  g g       t        t        t        j                  t        t         fD ]b  }t        | j                  | j                  z         } || j                        }| j	                  | j                   j                  |      |       ~d | j	                  t#        |      t#        | j                        t#        | j                        z          | j                  j%                          t'        j(                          | j	                  t#        |      t#        | j                        t#        | j                        z          y r   )r9   unionr/   r8   rR   r<   r   r.   typerM   rN   rE   	frozensetr:   r;   listtuplerS   popgccollect)r   ur'   Cr   s        r   
test_unionzTestWeakSet.test_unionH   sr   FFLL% 	FAQ!VQ$&&[%DA4DE	F!45a'*)TVV\\B48ie; 	A

T[[01A$++ATVV\\!_a0		
 	QTZZ3t{{3C!CD


QTZZ3t{{3C!CDr   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z  |       | j                  | j                   t        | j                        z  |       y r   )r9   rZ   r/   rR   rE   r\   r   is     r   test_orzTestWeakSet.test_orY   s\    FFLL%#dkk"22A6)DKK"88!<r   c                 N   t        | j                        }|j                  | j                        }| j                  D ]2  }| j	                  ||v || j                  v xr || j                  v        4 | j	                  |t        | j                               | j	                  t        |      t                t        t        t        j                  t        t        fD ]>  }t        g       }| j	                  |j                   || j                              |       @ | j	                  t        |      t        | j                               | j                  j                          t        j                           | j	                  t        |      t        | j                               y r   )r   r8   intersectionr/   rR   r[   rE   r\   r:   r;   r]   r^   r.   rS   r_   r`   ra   )r   r9   rg   r'   rc   r   s         r   test_intersectionzTestWeakSet.test_intersection^   s*   DLL!NN4;;' 	MAQ!VQ$++%5%K!t||:KL	MGDLL12a'*ie; 	?AAQ^^AdjjM:A>	? 	QT[[!12


QT[[!12r   c                     | j                  | j                  j                  t        | j                                     | j                  | j                  j                  t        | j
                                      y r   )
assertTruer9   
isdisjointr   r/   r8   r   s    r   test_isdisjointzTestWeakSet.test_isdisjointm   sM    ))'$++*>?@DFF--gdll.CDDEr   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z  |       | j                  | j                   t        | j                        z  |       y r   )r9   rj   r/   rR   rE   r\   rf   s     r   test_andzTestWeakSet.test_andq   s^    FF,#dkk"22A6)DKK"88!<r   c                    | j                   j                  | j                        }| j                  D ]2  }| j	                  ||v || j
                  v xr || j                  v       4 | j	                  | j                   t        | j                               | j	                  t        |      t               | j                  t        | j                   j                  g g       y r   )r9   
differencer/   r8   rR   r<   r   r.   r[   rM   rN   r   rg   r'   s      r   test_differencezTestWeakSet.test_differencev   s    FFdkk* 	KAQ!VQ$&&[%IQdkk5IJ	K!45a'*)TVV%6%6=r   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z
  |       | j                  | j                   t        | j                        z
  |       y r   )r9   rs   r/   rR   rE   r\   rf   s     r   test_subzTestWeakSet.test_sub~   s^    FFdkk*#dkk"22A6)DKK"88!<r   c                 .   | j                   j                  | j                        }| j                  D ]1  }| j	                  ||v || j
                  v || j                  v z         3 | j	                  | j                   t        | j                               | j	                  t        |      t               | j                  t        | j                   j                  g g       | j	                  t        |      t        | j                        t        | j                        z          | j                  j                          t        j                          | j	                  t        |      t        | j                        t        | j                        z          y r   )r9   symmetric_differencer/   r8   rR   r<   r   r.   r[   rM   rN   rS   r_   r`   ra   rt   s      r   test_symmetric_differencez%TestWeakSet.test_symmetric_difference   s   FF''4 	IAQ!Va466ka4;;6F%GH	I!45a'*)TVV%@%@2$GQTZZ3t{{3C!CD


QTZZ3t{{3C!CDr   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z  |       | j                  | j                   t        | j                        z  |       y r   )r9   ry   r/   rR   rE   r\   rf   s     r   test_xorzTestWeakSet.test_xor   s^    FF''4#dkk"22A6)DKK"88!<r   c                    | j                  | j                  | j                  k         | j                  | j                  | j                  k         | j                  | j                  | j                  k\         | j                  | j                  | j                  k         | j                  | j                  | j                  k\         | j                  t        d      j                  d             | j                  t        d      j                  d             | j                  t        d      j                  d             | j                  t        d      j                  d             y )Nr%   abccbs)rm   r3   r4   assertFalser5   rE   issubset
issupersetr   s    r   test_sub_and_superzTestWeakSet.test_sub_and_super   s   4+=+==>**d.@.@@A**doo=>++t/?/??@++t/?/??@C))%01E
--c23S**512U..s34r   c                 <   | j                  | j                  | j                  k         | j                  | j                  | j                  k         | j                  | j                  | j                  k         | j                  t               t               k         y r   )rm   r3   r4   r   r5   r   r   s    r   test_ltzTestWeakSet.test_lt   sn    $*<*<<=++d.>.>>?4??:;WY./r   c                 <   | j                  | j                  | j                  kD         | j                  | j                  | j                  kD         | j                  | j                  | j                  kD         | j                  t               t               kD         y r   )rm   r4   r3   r   r5   r   r   s    r   test_gtzTestWeakSet.test_gt   sn    **T__<=++d.>.>>?4??:;WY./r   c                     t        d t        d      D              }|D ]!  }||_        ||_        t        |g      |_        # y )Nc              3   0   K   | ]  }t                 y wr   )r	   ).0rg   s     r   	<genexpr>z&TestWeakSet.test_gc.<locals>.<genexpr>   s     /aCE/s   i  )r   ranger   subrE   )r   r9   elems      r   test_gczTestWeakSet.test_gc   s@    /5;// 	'DDJDHvDH	'r   c                      G d dt               } |       }t               }|j                  |       | j                  ||       |j	                  |       |j                  |       |j                  |       y )Nc                       e Zd Zd Zy)5TestWeakSet.test_subclass_with_custom_hash.<locals>.Hc                 0    t        t        |       dz        S )Ni)intidr   s    r   __hash__z>TestWeakSet.test_subclass_with_custom_hash.<locals>.H.__hash__   s    2d8j011r   N)r   r   r   r   r   r   r   Hr      s    2r   r   )r   rE   addrG   removediscard)r   r   r9   fs       r   test_subclass_with_custom_hashz*TestWeakSet.test_subclass_with_custom_hash   sX    	2 	2 #
%	aa		a			!r   c                    t               }|j                  | j                         | j                  || j                         |j                  | j
                         | j                  |t        | j
                               | j                  t        |j                  |d       | j                  t        |j                  d       y )NrL   rQ   )r   r   r.   rR   r9   r/   rM   rN   )r   r9   s     r   	test_initzTestWeakSet.test_init   s    I	

4::DFF#	

4;;GDKK01)QZZA6)QZZ3r   c                     t        | j                        }t        |      }| j                  t        |      t        |             y r   )r   r.   assertNotEqualr   )r   r9   ts      r   test_constructor_identityz%TestWeakSet.test_constructor_identity   s1    DJJAJBqE2a5)r   c                 N    | j                  t        t        | j                         y r   )rM   rN   hashr9   r   s    r   	test_hashzTestWeakSet.test_hash   s    )T4662r   c                     | j                   j                          | j                  | j                   t        g              | j                  t	        | j                         d       y )Nr   )r9   clearrR   r   rS   r   s    r   
test_clearzTestWeakSet.test_clear   s?    -TVVa(r   c                     | j                   j                         }| j                  | j                   |       | j                  t	        | j                         t	        |             y r   )r9   copyrR   r   r   )r   dups     r   	test_copyzTestWeakSet.test_copy   sA    ffkkm%BtvvJ30r   c                    t        d      }| j                  j                  |       | j                  || j                         | j                  j	                         }| j                  j                  |       | j                  | j                  |       | j                  t        | j                  j                  g        | j                  j                  t                      t        j                          | j                  t        | j                        dk(         | j                  j                  | j                         | j                  t        | j                        dk(         y )NQrQ   )r-   r9   r   rG   r   rR   rM   rN   r>   r	   r   rT   rm   rS   r=   )r   r   r   s      r   test_addzTestWeakSet.test_add   s    I

1a ffkkm

1%)TVVZZ4CEDGG)*DHHDGG)*r   c                 4   t        d      }| j                  j                  |       | j                  || j                         | j	                  t
        | j                  j                  |       | j	                  t        | j                  j                  g        y )Nr%   )r-   r9   r   rW   rM   KeyErrorrN   )r   r   s     r   test_removezTestWeakSet.test_remove   sc    IaDFF#(DFFMM15)TVV]]B7r   c                 *   t        d      t        d      }}| j                  j                  |       | j                  || j                         | j                  j                  |       | j	                  t
        | j                  j                  g        y )Nr%   r   )r-   r9   r   rW   rM   rN   )r   r%   qs      r   test_discardzTestWeakSet.test_discard   sa    Cy$s)1qDFF#q)TVV^^R8r   c                 
   t        t        | j                              D ]8  }| j                  j                         }| j	                  || j                         : | j                  t        | j                  j                         y r   )r   rS   r9   r_   rW   rM   r   )r   rg   r   s      r   test_popzTestWeakSet.test_pop   s[    s466{# 	+A66::<DT466*	+ 	(DFFJJ/r   c                 >   | j                   j                  | j                        }| j                  |d        | j                  | j                  z   D ]  }| j                  || j                            | j                  t        | j                   j                  g g       y r   )r9   updater/   rR   r.   rG   rM   rN   r   retvalr'   s      r   test_updatezTestWeakSet.test_update   sr    t{{+&**t{{* 	%AMM!TVV$	%)TVV]]RD9r   c                     | j                   j                  t        | j                               | j                  | j                  z   D ]  }| j                  || j                            y r   )r9   r   rE   r/   r.   rG   r?   s     r   test_update_setzTestWeakSet.test_update_set  sI    c$++&'**t{{* 	%AMM!TVV$	%r   c                     | xj                   t        | j                        z  c_         | j                  | j                  z   D ]  }| j	                  || j                            y r   )r9   rE   r/   r.   rG   r?   s     r   test_iorzTestWeakSet.test_ior	  sG    #dkk""**t{{* 	%AMM!TVV$	%r   c                    | j                   j                  | j                        }| j                  |d        | j                  | j                  z   D ]W  }|| j                  v r+|| j                  v r| j                  || j                          <| j                  || j                          Y | j                  t        | j                   j                  g g       y r   )	r9   intersection_updater/   rR   r.   rG   rW   rM   rN   r   s      r   test_intersection_updatez$TestWeakSet.test_intersection_update  s    ++DKK8&**t{{* 	,ADKKAOa(  DFF+		,
 	)TVV%?%?"Fr   c                 :   | xj                   t        | j                        z  c_         | j                  | j                  z   D ]W  }|| j                  v r+|| j                  v r| j	                  || j                          <| j                  || j                          Y y r   r9   rE   r/   r.   rG   rW   r?   s     r   	test_iandzTestWeakSet.test_iand  sq    #dkk""**t{{* 	,ADKKAOa(  DFF+		,r   c                    | j                   j                  | j                        }| j                  |d        | j                  | j                  z   D ]W  }|| j                  v r+|| j                  vr| j                  || j                          <| j                  || j                          Y | j                  t        | j                   j                  g g       | j                  t        | j                   j                  g g       y r   )
r9   difference_updater/   rR   r.   rG   rW   rM   rN   symmetric_difference_updater   s      r   test_difference_updatez"TestWeakSet.test_difference_update   s    ))$++6&**t{{* 	,ADJJ1DKK#7a(  DFF+		,
 	)TVV%=%=tD)TVV%G%G"Nr   c                 :   | xj                   t        | j                        z  c_         | j                  | j                  z   D ]W  }|| j                  v r+|| j                  vr| j	                  || j                          <| j                  || j                          Y y r   r   r?   s     r   	test_isubzTestWeakSet.test_isub+  sq    #dkk""**t{{* 	,ADJJ1DKK#7a(  DFF+		,r   c                    | j                   j                  | j                        }| j                  |d        | j                  | j                  z   D ]X  }|| j                  v || j                  v z  r| j                  || j                          =| j                  || j                          Z | j                  t        | j                   j                  g g       y r   )	r9   r   r/   rR   r.   rG   rW   rM   rN   r   s      r    test_symmetric_difference_updatez,TestWeakSet.test_symmetric_difference_update3  s    33DKK@&**t{{* 	,ATZZA$45a(  DFF+		,
 	)TVV%G%G"Nr   c                 <   | xj                   t        | j                        z  c_         | j                  | j                  z   D ]X  }|| j                  v || j                  v z  r| j	                  || j                          =| j                  || j                          Z y r   r   r?   s     r   	test_ixorzTestWeakSet.test_ixor=  st    #dkk""**t{{* 	,ATZZA$45a(  DFF+		,r   c                 l   | j                   j                         }||z  }| j                  || j                          ||z  }| j                  || j                          ||z  }| j                  |t                      | j                   j                         }||z  }| j                  |t                      y r   )r9   r   rR   r   )r   r   s     r   test_inplace_on_selfz TestWeakSet.test_inplace_on_selfE  s    FFKKM	QDFF#	QDFF#	QGI&FFKKM	QGI&r   c                 p   | j                  | j                  | j                  k(         | j                  | j                  t        | j                        k(         | j	                  | j                  t        | j                        k(         | j	                  | j                  t        | j                        k(         | j	                  | j                  t        | j                        k(         | j	                  | j                  t        t        g      k(         | j	                  | j                  dk(         y )NrQ   )	rm   r9   r   r.   r   rE   r]   r^   r	   r   s    r   test_eqzTestWeakSet.test_eqQ  s    $&&()'$**"5563tzz?234

#3345#4457C5>121%r   c                     | j                  | j                  t        | j                        k7         t	               }t	               }| j                  ||k7         y r   )rm   r9   rE   r.   r   r   )r   s1s2s      r   test_nezTestWeakSet.test_ne[  s?    #djj/12YYr"r   c                 n   dD cg c]  }t        |       }}t        |      }t        |      }t        |       |d= t	        j
                          | j                  t        t        |            t        |      t        |      dz
  g       ~| j                  t        |      t        |             y c c}w )Nr$   rQ   )
r-   r   iternextr`   ra   rG   rS   r]   rR   )r   r'   r.   r9   its        r   !test_weak_destroy_while_iteratingz-TestWeakSet.test_weak_destroy_while_iteratinga  s     #22Qa22EN!WR"I


c$r(mc%j#e*q.%ABQU, 3s   B2c                 r   t         j                  D cg c]  }t        |       c}t              t        j
                  fd       } |       5 }| j                  |       d d d         |       5 }| j                  t        j                  |       d d d        | j                          |       5 }j                  |       d d d        | j                  |       j                         } |       5 }j                  |       d d d        | j                  t              t        |              |       5 }j!                          d d d        | j                  t              d       y c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w)Nc               3     K   	 t              } t        t        t        |                   }t        t        j	                                     }||k(  rt        |        t        j                          | d } y # d } w xY wwr   )r   r-   strr   r_   r`   ra   )r   yieldedrb   r.   r9   s      r   testcontextzMTestWeakSet.test_weak_destroy_and_mutate_while_iterating.<locals>.testcontextu  sd     !Ws48}-UYY[)*a< H

Ts   BA2A: 7B:A>>Br   )r6   r7   r-   r   
contextlibcontextmanagerrW   rM   r   r   r   rG   r   r   rR   rS   r   )r   r'   r   rb   r   r.   r9   s        @@r   ,test_weak_destroy_and_mutate_while_iteratingz8TestWeakSet.test_weak_destroy_and_mutate_while_iteratingq  sl   "("6"67Qa7EN		"	"	 
#	  ] 	#aQ"	#] 	5ah!4	5A] 	aEE!H	aFFH] 	aHHQK	QQ(] 	aGGI	Q#C 8&	# 	#	5 	5	 		 		 	sA   E7E<7"F	:F=F!F-<F	FF!F*-F6c                    d}t        |      D cg c]  }t                }}t        |      }~t        |      }	 t	        |       t        j                          t        |      }~t        j                          t        j                          t        |      }| j                  |d       | j                  |d       y c c}w # t
        $ r Y w xY w)N   )r   rQ   r   )r   r   r   r   r   StopIterationr`   ra   rS   rG   rR   )r   Nrg   r.   r9   r   n1n2s           r   test_len_cycleszTestWeakSet.test_len_cycles  s    %*1X...EN!W	H 	

V





Vb&!Q! /  		s   B>C 	CCc                 T    | j                   t        j                  gt        j                           t	        dd      D ]  }d}t        j
                  d       t        j                  |||       t	        |      D cg c]  }t                }}t        |      }~t        |      }	 t        |       t        |      }~t        |      }| j                  |d       | j                  ||       | j                  |d       | j                  ||        y c c}w # t        $ r Y rw xY w)NrQ   d   r   r   )
addCleanupr`   set_thresholdget_thresholdr   ra   r   r   r   r   r   rS   assertGreaterEqualassertLessEqual)	r   thr   rg   r.   r9   r   r   r   s	            r   test_len_racezTestWeakSet.test_len_race  s   ((>2+;+;+=>3- 	)BAJJqMRR().q2AXZ2E2AaBR QBQB##B*  Q'##B*  R('	) 3 ! s   >D)D	D'&D'c                 r    t        | j                        t        | j                  j                        k(  sJ y r   )reprr9   datar   s    r   	test_reprzTestWeakSet.test_repr  s%    DFF|tDFFKK0000r   c                     | j                  | j                  t               | j                  | j                  t               y r   )assertIsInstancer9   r   r   r   s    r   test_abczTestWeakSet.test_abc  s*    dffc*dffj1r   c                    t         t        fD ]  } || j                        }dg|_        dg|_        t        j
                  |      }| j                  ||       | j                  ||       | j                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  t        |d             t        j                  |      }| j                  ||       | j                  ||       | j                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  t        |d              y )Nr   r(   r   )r   r   r.   r   r(   r   r   rR   assertIsNotassertIsr   hasattrdeepcopy)r   clsr9   r   s       r   test_copyingzTestWeakSet.test_copying  sg   ,, 	0CDJJA%AC%AC))A,C!!#s+S!$S!$MM#%%%MM#%%%WS#./--"C!!#s+S!$S!$SUUACC(SUUACC(SUUACC(SUUACC(WS#./+	0r   N)2r   r   r   r@   rJ   rO   rU   rX   rd   rh   rk   ro   rq   ru   rw   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r"   r"      s    & =5*-E"=
3F=
>=

E=
	500'5*
3)
1
+890:%
%
G,	O,O,
'&#- #$J ()0120r   r"   __main__)unittestweakrefr   r   r6   collectionsr   r-   collections.abcr   r   r`   r   testr   r	   r   r   r   TestCaser"   r   mainr   r   r   <module>r     s{        * + 	  	 	 	g 	w E0(## E0P zHMMO r   