
    z%i<                    
   d dl Z d dlmZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
mZmZ d dlZd dlZd dlZd dlZ G d de      Zd Z G d d	      Z G d
 d      Z G d de      Z G d d      Z G d dee j2                        Z G d de      Z G d de      Z G d dee j2                        Z G d de      Z  G d de      Z! G d de      Z" G d de j2                        Z# G d  d!e      Z$ G d" d#e#      Z% e       Z& G d$ d%      Z' G d& d'e'e j2                        Z( G d( d)e'e j2                        Z) G d* d+e'e j2                        Z* G d, d-e'e j2                        Z+ G d. d/e'e j2                        Z, G d0 d1e'e j2                        Z- G d2 d3e'e j2                        Z.d4 Z/d5 Z0 G d6 d7e j2                        Z1 G d8 d9e j2                        Z2 G d: d;e j2                        Z3 G d< d=e j2                        Z4 G d> d?e j2                        Z5 G d@ dA      Z6 G dB dCe6e j2                        Z7 G dD dEe6e j2                        Z8 G dF dGe6e j2                        Z9 G dH dIe6e j2                        Z: G dJ dKe6e j2                        Z; G dL dM      Z< G dN dOe<e j2                        Z= G dP dQe<e j2                        Z> G dR dSe<e j2                        Z? G dT dUe<e j2                        Z@ G dV dWe<e j2                        ZA G dX dYe<e j2                        ZB G dZ d[      ZC G d\ d]eCe j2                        ZD G d^ d_eCe j2                        ZE G d` daeCe j2                        ZF G db dceCe j2                        ZG G dd deeCe j2                        ZH G df dge j2                        ZIdh ZJ G di dj      ZK G dk dl      ZL G dm dn      ZM G do dp      ZN G dq dr      ZO G ds dt      ZP G du dv      ZQd dwlmRZR dx ZS G dy dze j2                        ZT G d{ d|      ZU G d} d~      ZV G d de j2                        ZW G d d      ZX G d deX      ZY G d deYe j2                        ZZ G d deYe j2                        Z[ G d deYe j2                        Z\ G d deYe j2                        Z] G d deX      Z^ G d de^e j2                        Z_ G d de^e j2                        Z` G d de^e j2                        Za G d de^e j2                        Zb G d de^e j2                        Zc G d de^e j2                        Zdd Zed Zfd Zgd Zh G d de j2                        Ziejdk(  r e j                          yy)    N)support)warnings_helper)	randrangeshufflec                       e Zd Zy)PassThruN__name__
__module____qualname__     A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_set.pyr   r          r   r   c               #      K   t         wN)r   r   r   r   check_pass_thrur      s     
N   	c                       e Zd Zd Zd Zy)BadCmpc                      yN   r   selfs    r   __hash__zBadCmp.__hash__       r   c                     t         r   )RuntimeErrorr   others     r   __eq__zBadCmp.__eq__   s    r   Nr
   r   r   r   r"   r   r   r   r   r      s    r   r   c                       e Zd Z	 d Zy)ReprWrapperc                 ,    t        | j                        S r   )reprvaluer   s    r   __repr__zReprWrapper.__repr__   s    DJJr   N)r
   r   r   r)   r   r   r   r%   r%      s
    0 r   r%   c                       e Zd Z	 d Zd Zy)HashCountingIntc                     d| _         y Nr   
hash_count)r   argss     r   __init__zHashCountingInt.__init__#   s	    r   c                 V    | xj                   dz  c_         t        j                  |       S r   )r/   intr   r   s    r   r   zHashCountingInt.__hash__%   s    1||D!!r   N)r
   r   r   r1   r   r   r   r   r+   r+   !   s    H"r   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y)TestJointOpsc                     dx| _         }d| _        d| _        | j                  |      | _        t
        j                  |      | _        y )N
simsalabim
madagascar4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)word	otherwordlettersthetypesdictfromkeysd)r   r:   s     r   setUpzTestJointOps.setUp,   s<    ''	D%Md#t$r   c                     | j                  t        | j                  g d       | j                  t        t               j                  d       y )N   r   a)assertRaises	TypeErrorr=   setr1   r   s    r   test_new_or_initzTestJointOps.test_new_or_init3   s5    )T\\2q9)SU^^q9r   c                    t        | j                        }t        | j                        }| j                  ||       | j	                  t
        | j                  t                      | j	                  t        | j                  g g       y r   )	sortedr>   rA   assertEqualrG   r   r=   r   rH   )r   actualexpecteds      r   test_uniquificationz TestJointOps.test_uniquification7   s]    $&&>*(DLL/2CD)T\\B48r   c                 t    | j                  t        | j                        t        | j                               y r   )rM   lenr>   rA   r   s    r   test_lenzTestJointOps.test_len>   s"    TVVc$&&k2r   c                 r   | j                   D ],  }| j                  || j                  v || j                  v        . | j	                  t
        | j                  j                  g g       | j                  t        | j                         g      }| j                  | j                  | j                         |       y r   )
r<   rM   r>   rA   rG   rH   __contains__r=   	frozensetassertIn)r   cr>   s      r   test_containszTestJointOps.test_containsA   s     	7AQ$&&[!tvv+6	7)TVV%8%82$?LL)DLL123dll4<<0!4r   c           	         | j                   j                  | j                        }| j                  D ]2  }| j	                  ||v || j
                  v xs || j                  v        4 | j	                  | j                   | j                  | j                               | j	                  t        |      | j                         | j                  t        | j                   j                  t                      | j                  t        | j                   j                  g g       t        t        t         j"                  t$        t&        t(        fD ]E  }| j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d	             | j	                  | j                  d      j                   |d       |d
            t        d             H | j                         }| j	                  |j                  t        dg      |t        dg            | j                  ddg             y )Nabcbacdcabcdefgfeabcefgccbabcefabceffgr   rD   )r>   unionr;   r<   rM   rA   r=   r:   typebasetyperG   r   r   rH   rI   rV   r?   r@   strlisttuple)r   urX   Cxs        r   
test_unionzTestJointOps.test_unionH   s   FFLL( 	IAQ!VQ$&&[%GA4GH	Idii!89a$--0(DFFLL/2CD)TVV\\B48iT5@ 	[AT\\'2885BCKPT\\'2887Dc(mTT\\'2885BCJOT\\'2884A3w<PT\\'2884!D'JCPXMZ	[ LLNaS1c1#h7q!f9MNr   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z  |       | j                  | j                   t        | j                        z  |       	 | j                   | j                  z   | j                  d       y # t        $ r Y y w xY w)Nz(s|t did not screen-out general iterables)r>   re   r;   rM   rI   rV   failrH   r   is     r   test_orzTestJointOps.test_or[   s    FFLL(#dnn"55q9)DNN";;Q?	BFFT^^# II@A  		   B6 6	CCc           	         | j                   j                  | j                        }| j                  D ]2  }| j	                  ||v || j
                  v xr || j                  v        4 | j	                  | j                   | j                  | j                               | j	                  t        |      | j                         | j                  t        | j                   j                  t                      t        t        t        j                   t"        t$        t&        fD ]E  }| j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d	       |d
            t        d             H | j                  d      }|j                         }| j                  t               k(  r%| j	                  t)        |      t)        |             y | j+                  t)        |      t)        |             y )Nr[   r\   ccr^    r`   bcrb   cbcfbagb)r>   intersectionr;   r<   rM   rA   r=   r:   rf   rg   rG   r   r   rI   rV   r?   r@   rh   ri   rj   idassertNotEqual)r   rr   rX   rl   r>   zs         r   test_intersectionzTestJointOps.test_intersectionf   s   FF/ 	JAQ!VQ$&&[%HQ$..5HI	Jdii!89a$--0(DFF$7$79JKiT5@ 	`AT\\'2??%I3t9UT\\'2??'
KSQSWUT\\'2??%I3t9UT\\'2??$H#b'RT\\'2??&	1U8TVYZ]V^_	` LL!NN<<9;&RUBqE*1r!u-r   c                 @   d }dD ]  }| j                  |      }dD ]~  }t        t        t        j                  t
        t        t        fD ]O  } ||      }|j                  |      } |||      }| j                  ||       | j                  |du xs |du        Q   y )Nc                 :    	 t        |       j                  |       S r   )rI   r|   )s1s2s     r   fz'TestJointOps.test_isdisjoint.<locals>.f{   s    42w++B///r   )
rw   rF   abra   ababacr\   rv   r^   r`   rb   TF)r=   rI   rV   r?   r@   rh   ri   rj   
isdisjointrM   
assertTrue)	r   r   largr   rargrl   r   rN   rO   s	            r   test_isdisjointzTestJointOps.test_isdisjointz   s    	0 V 	GDd#BY GiT5H GA4B]]2.F RyH$$VX6OOFdN$EfoFGG	Gr   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z  |       | j                  | j                   t        | j                        z  |       	 | j                   | j                  z   | j                  d       y # t        $ r Y y w xY w)Nz(s&t did not screen-out general iterables)r>   r|   r;   rM   rI   rV   rp   rH   rq   s     r   test_andzTestJointOps.test_and   s    FF/#dnn"55q9)DNN";;Q?	BFFT^^# II@A  		rt   c           	         | j                   j                  | j                        }| j                  D ]2  }| j	                  ||v || j
                  v xr || j                  v       4 | j	                  | j                   | j                  | j                               | j	                  t        |      | j                         | j                  t        | j                   j                  t                      | j                  t        | j                   j                  g g       t        t        t         j"                  t$        t&        t(        fD ]}  }| j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                         t        d             | j	                  | j                  d      j                   |d       |d	            t        d
              y )Nr[   r\   r   r^   ra   r`   rF   rb   r{   rX   )r>   
differencer;   r<   rM   rA   r=   r:   rf   rg   rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r   rr   rX   rl   s       r   test_differencezTestJointOps.test_difference   s   FFdnn- 	NAQ!VQ$&&[%LQdnn5LM	Ndii!89a$--0(DFF$5$57HI)TVV%6%6=iT5@ 	YAT\\'2==ahGTST\\'2==ajI3u:VT\\'2==ahGSRT\\'2==agFE
ST\\'2==?ULT\\'2==afafMsSVxX	Yr   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z
  |       | j                  | j                   t        | j                        z
  |       	 | j                   | j                  z
   | j                  d       y # t        $ r Y y w xY w)Nz(s-t did not screen-out general iterables)r>   r   r;   rM   rI   rV   rp   rH   rq   s     r   test_subzTestJointOps.test_sub   s    FFdnn-#dnn"55q9)DNN";;Q?	BFFT^^# II@A  		rt   c                    | j                   j                  | j                        }| j                  D ]1  }| j	                  ||v || j
                  v || j                  v z         3 | j	                  | j                   | j                  | j                               | j	                  t        |      | j                         | j                  t        | j                   j                  t                      | j                  t        | j                   j                  g g       t        t        t         j"                  t$        t&        t(        fD ]  }| j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d             | j	                  | j                  d      j                   |d            t        d	              y )
Nr[   r\   abdr^   r_   r`   rF   rb   rc   )r>   symmetric_differencer;   r<   rM   rA   r=   r:   rf   rg   rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r   s       r   test_symmetric_differencez&TestJointOps.test_symmetric_difference   s   FF''7 	LAQ!Va466ka4>>6I%JK	Ldii!89a$--0(DFF$?$?ARS)TVV%@%@2$GiT5@ 	`AT\\'2GG%QSVW\S]^T\\'2GG'
SUXYaUbcT\\'2GG%QSVWZS[\T\\'2GG$PRUV]R^_		`r   c                    | j                   j                  | j                        }| j                  | j                   t	        | j                        z  |       | j                  | j                   t        | j                        z  |       	 | j                   | j                  z   | j                  d       y # t        $ r Y y w xY w)Nz(s^t did not screen-out general iterables)r>   r   r;   rM   rI   rV   rp   rH   rq   s     r   test_xorzTestJointOps.test_xor   s    FF''7#dnn"55q9)DNN";;Q?	BFFT^^# II@A  		rt   c                     | j                  | j                  t        | j                               | j                  | j                  t	        | j                               | j                  | j                  | j                  k(  d       | j                  | j                  t        | j                               | j                  | j                  t	        | j                               | j                  | j                  | j                  k7  d       y NFT)rM   r>   rI   r:   rV   r~   r;   r   s    r   test_equalityzTestJointOps.test_equality   s    TYY0499!56499,e4DFFC$78DFFIdnn$=>499,d3r   c                     t        t        g d      }| j                  |      }| j                  t	        |      d       y )N)abcdefbcdbdcbfedfedccba   )maprV   r=   rM   rR   )r   tr>   s      r   test_setOfFrozensetsz!TestJointOps.test_setOfFrozensets   s0    	FGLLOQ#r   c                    t        | j                  g d      \  }}}| j                  ||k         | j                  ||k         | j                  ||k         | j                  ||kD         | j                  ||k\         | j                  ||k         | j                  ||k         | j                  ||kD         | j                  ||k\         | j                  t	        d      j                  d             | j                  t	        d      j                  d             | j                  t	        d      j                  d             | j                  t	        d      j                  d             y )N)r   abcdedefrF   ra   cbs)r   r=   r   assertFalserI   issubset
issuperset)r   pqrs       r   test_sub_and_superzTestJointOps.test_sub_and_super   s!   dll$:;1aAQQAQQa Qa C))%01E
--c23S**512U..s34r   c                    t        t        j                  dz         D ]h  }t        | j                        t
        t        fvr$dg| j                  _        dg| j                  _        t        j                  | j                  |      }t        j                  |      }| j                  | j                  || j                  d|       t        | j                        t
        t        fvs| j                  | j                  j                  |j                         | j                  | j                  j                  |j                         | j                  t        | j                  d             | j                  `| j                  `k y )Nr   rm   r    != y)rangepickleHIGHEST_PROTOCOLrf   r>   rI   rV   rm   r   dumpsloadsrM   r   hasattr)r   rr   r   dups       r   test_picklingzTestJointOps.test_pickling   s   v..23 	'ADFF|C#3355TVVQ'A,,q/CTVVS*DEDFF|C#33  3551  3551  !56FFHdffh	'r   c                    t        t        j                  dz         D ])  }t        | j                        }| j                  | j                        }t        j                  ||      }t        j                  |      }| j                  |t        j                  j                         | j                  | j                  |      |       t        j                  |      }	 t        |      }t        j                  ||      }t        j                  |      }| j                  | j                  |      || j                  |f      z
         , y # t        $ r Y :w xY wr   )r   r   r   iterr>   r=   r   r   assertIsInstancecollectionsra   IteratorrM   nextStopIteration)r   protoitorgdatarA   itdrops          r   test_iterator_picklingz#TestJointOps.test_iterator_pickling   s   622Q67 	MELE<<'DUE*AaB !!"koo&>&>?T\\"-t4aBBx R'AaBT\\"-tdllD76K/KL%	M ! s   E	EEc                 p    G fdd       d      }| j                  |g      }t        j                  |      }| j                  t	        |      t	        |             |D ]  }|} | j                  t	        |      t	                     | j                  |j                  dz   |j                         y )Nc                   &    e Zd Zd Zd Zd fd	Zy)*TestJointOps.test_deepcopy.<locals>.Tracerc                     || _         y r   r(   )r   r(   s     r   r1   z3TestJointOps.test_deepcopy.<locals>.Tracer.__init__	  s	    "
r   c                     | j                   S r   r   r   s    r   r   z3TestJointOps.test_deepcopy.<locals>.Tracer.__hash__  s    zz!r   Nc                 .     | j                   dz         S r   r   )r   memoTracers     r   __deepcopy__z7TestJointOps.test_deepcopy.<locals>.Tracer.__deepcopy__  s    djj1n--r   r   )r
   r   r   r1   r   r   )r   s   r   r   r     s    #".r   r   
   r   )r=   copydeepcopyr~   r}   rM   r(   )r   r   r>   r   elemnewtr   s         @r   test_deepcopyzTestJointOps.test_deepcopy  s    	. 	. 2JLL!mmABqE2c7+ 	DD	BqE2d8,1djj1r   c                      G d d      t        fdt        d      D              }|D ]!  }||_        ||_        t        |g      |_         # y )Nc                       e Zd Zy)TestJointOps.test_gc.<locals>.ANr	   r   r   r   Ar         r   r   c              3   ,   K   | ]  }          y wr   r   ).0rr   r   s     r   	<genexpr>z'TestJointOps.test_gc.<locals>.<genexpr>  s     ))     )rI   r   cyclesub)r   r>   r   r   s      @r   test_gczTestJointOps.test_gc  sK    	 	)U4[)) 	#DDJDHD6{DH	#r   c                      G d d| j                         } |       }t               }|j                  |       | j                  ||       |j	                  |       |j                  |       |j                  |       y )Nc                       e Zd Zd Zy)6TestJointOps.test_subclass_with_custom_hash.<locals>.Hc                 0    t        t        |       dz        S )Ni)r3   r}   r   s    r   r   z?TestJointOps.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=   rI   addrW   removediscard)r   r   r>   r   s       r   test_subclass_with_custom_hashz+TestJointOps.test_subclass_with_custom_hash"  s\    	2 	2 #
%	aa		a			!r   c                     | j                  t               g      }| j                  t        | j                   t               t               g       | j                  t        |j                  t                      t        |d      r|| j                  t        |j                  t                      | j                  t        |j                  t                      | j                  t        |j                  t                      y y )Nr   )	r=   r   rG   r   rU   r   r   r   r   r   r>   s     r   test_badcmpzTestJointOps.test_badcmp/  s    LL&($,vx6JK,A1elAEE68<lAIIvx@lAHHfh? r   c                 $   t               }| j                  |g      }||_        | j                  t        k(  r| j	                  t        |      d       y t        |      j                  d      d   }| j	                  t        |      |d|d       y )Nz
{set(...)}(r   z({z(...)}))r%   r=   r(   rI   rM   r'   	partition)r   wr>   names       r   test_cyclical_reprzTestJointOps.test_cyclical_repr:  sr    MLL!<<3T!Wl37$$S)!,DT!Wt&DEr   c                    d}t         j                  t        t        t	        |                  }| j                  t        d |D              |       | j                  |      }| j                  t        d |D              |       |j                  |       | j                  t        d |D              |       t        |d      r|j                  |       | j                  t        d |D              |       t         j                  t        |            }| j                  t        d |D              |       t         j                  t        |            }| j                  t        d |D              |       t         j                  t        |      d	      }| j                  t        d
 |D              |       | j                  |t         j                  |d	             y )Nr   c              3   4   K   | ]  }|j                     y wr   r.   r   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>G       ;T__;   c              3   4   K   | ]  }|j                     y wr   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>I  r   r   c              3   4   K   | ]  }|j                     y wr   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>K  r   r   symmetric_difference_updatec              3   4   K   | ]  }|j                     y wr   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>N  r   r   c              3   4   K   | ]  }|j                     y wr   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>P  r   r   c              3   4   K   | ]  }|j                     y wr   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>R  r   r   {   c              3   4   K   | ]  }|j                     y wr   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>T  r   r   )r?   r@   r   r+   r   rM   sumr=   r   r   r  rI   rV   )r   nrA   r>   d2d3s         r   test_do_not_rehash_dict_keysz)TestJointOps.test_do_not_rehash_dict_keysD  sa   MM#ouQx89;;;Q?LLO;;;Q?	Q;;;Q?134))!,;;;Q?]]3q6";;;Q?]]9Q<(;;;Q?]]9Q<-;;;Q?T]]1c23r   c                      G d dt               } |       }t        j                  |      }t        |dg      }t	        |      |_        ~~t        j                          | j                   |       d u d       y )Nc                       e Zd Zy)/TestJointOps.test_container_iterator.<locals>.CNr	   r   r   r   rl   r  Y  r   r   rl   r   zCycle was not collected)	objectweakrefrefrI   r   rm   gccollectr   )r   rl   objr  	containers        r   test_container_iteratorz$TestJointOps.test_container_iteratorW  s^    	 	ckk#aM	Y


'@Ar   c                 N    t        j                  | t        | j                         y r   )r   check_free_after_iteratingr   r=   r   s    r   test_free_after_iteratingz&TestJointOps.test_free_after_iteratingc  s    **4t||Dr   N)r
   r   r   rB   rJ   rP   rS   rY   rn   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r5   r5   )   s    %:935O&	B.(G	BY 	B`	B4$
5 'M*2"#	@F4&
BEr   r5   c                       e Zd ZeZ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 ej@                   e!ed      d      d        Z"y)TestSetc                    | j                         }|j                  | j                         | j                  |t	        | j                               |j                  | j
                         | j                  |t	        | j
                               | j                  t        |j                  |d       | j                  t        |j                  d       y )NrD   r   )r=   r1   r:   rM   rI   r;   rG   rH   r   s     r   	test_initzTestSet.test_initj  s    LLN	

499C		N+	

4>>"C/0)QZZA6)QZZ3r   c                     | j                  t        d            }| j                  |      }| j                  t        |      t        |             y Nr   r=   r   r~   r}   r   r>   r   s      r   test_constructor_identityz!TestSet.test_constructor_identitys  9    LLq"LLOBqE2a5)r   c                 J    t        g d      }h d}| j                  ||       y )Nr   rD   r      r   rD   r   rI   rM   r!  s      r   test_set_literalzTestSet.test_set_literalx  s     LAr   c                     h d}| j                  t        |      d       |j                         }| j                  t        |      t               y )N>   r   r   )rM   rR   poprf   r3   )r   r>   stored_values      r    test_set_literal_insertion_orderz(TestSet.test_set_literal_insertion_order}  s;    Q#uuwl+S1r   c                 j    g fd} |d       |d       |d      h}| j                  g d       y )Nc                 (    j                  |        y r   )append)r  eventss    r   recordz9TestSet.test_set_literal_evaluation_order.<locals>.record  s    MM#r   r   rD   r   r%  )rM   )r   r1  r>   r0  s      @r   !test_set_literal_evaluation_orderz)TestSet.test_set_literal_evaluation_order  s5    	AYq	6!9-+r   c                 N    | j                  t        t        | j                         y r   )rG   rH   hashr>   r   s    r   	test_hashzTestSet.test_hash  s    )T4662r   c                     | j                   j                          | j                  | j                   t                      | j                  t	        | j                         d       y r-   )r>   clearrM   rI   rR   r   s    r   
test_clearzTestSet.test_clear  s=    'TVVa(r   c                    | j                   j                         }| j                  | j                   |       | j                  t	        | j                         t	        |             | j                  t        |      | j                         y r   )r>   r   rM   r~   r}   rf   rg   r   r   s     r   	test_copyzTestSet.test_copy  sY    ffkkm%BtvvJ30cDMM2r   c                 j   | j                   j                  d       | j                  d| j                          | j                   j                         }| j                   j                  d       | j	                  | j                   |       | j                  t        | j                   j                  g        y )NQ)r>   r   rW   r   rM   rG   rH   r:  s     r   test_addzTestSet.test_add  so    

3c466"ffkkm

3%)TVVZZ4r   c                    | j                   j                  d       | j                  d| j                          | j                  t        | j                   j                  d       | j                  t
        | j                   j                  g        | j                  t        | j                        g      }| j                  | j                  | j                        |       |j                  | j                  | j                               | j                  | j                  | j                        |       | j                  t        | j                   j                  | j                  | j                               y NrF   r=  )
r>   r   assertNotInrG   KeyErrorrH   r=   rV   r:   rW   r   s     r   test_removezTestSet.test_remove  s    cdff%(DFFMM37)TVV]]B7LL)DII./0dll499-q1	dii()dii0!4(DFFMM4<<		3JKr   c                     dD ].  }	 | j                   j                  |       | j                          0 y # t        $ r+}|j                  d   }| j                  ||       Y d }~ad }~ww xY w)N)r=  )r   r   )r>   r   rp   rB  r0   rM   )r   v1ev2s       r   test_remove_keyerror_unpackingz&TestSet.test_remove_keyerror_unpacking  sc     	Bb!
 			  )VVAY  R(()s   5	A)!A$$A)c           	      *   | j                  ddg      }	 | j                  j                  |       | j                          y # t        $ rH}| j                  |j                  d   |u dj                  ||j                  d                Y d }~y d }~ww xY w)Nr      r   zKeyError should be {0}, not {1})r=   r>   r   rp   rB  r   r0   format)r   keyrF  s      r   test_remove_keyerror_setz TestSet.test_remove_keyerror_set  s    llAq6"	FFMM# IIK  	NOOAFF1I,:AA#BC&&)MN N	Ns   A 	B
>BBc                    | j                   j                  d       | j                  d| j                          | j                   j                  d       | j                  t        | j                   j                  g        | j                  t        | j                        g      }| j                  | j                  | j                        |       |j                  | j                  | j                               | j                  | j                  | j                        |       |j                  | j                  | j                               y r@  )	r>   r   rA  rG   rH   r=   rV   r:   rW   r   s     r   test_discardzTestSet.test_discard  s    sdff%s)TVV^^R8LL)DII./0dll499-q1			$,,tyy)*dii0!4			$,,tyy)*r   c                 
   t        t        | j                              D ]8  }| j                  j                         }| j	                  || j                         : | j                  t        | j                  j                         y r   )r   rR   r>   r*  rA  rG   rB  )r   rr   r   s      r   test_popzTestSet.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                  t                      | j                  t        | j                   j                  g g       dD ]  \  }}t        t        t        j                  t        t        t         fD ]U  }| j#                  d      }| j                  |j                   ||            d        | j                  |t        |             W  dD ]  }d}t        t        t        j                  t        t        t         fD ]t  }| j#                  d      }| j                  |j                   ||       ||            d        | j                  |t        |      t        |      z  t        |      z         v  y )N))r\   r]   r^   r_   )r`   ra   rb   rc   r[   )r\   r^   r`   rb   abcdaahi)r>   updater;   rM   r:   rW   rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r=   r   retvalrX   r   r   rl   r>   s          r   test_updatezTestSet.test_update  s   t~~.&))dnn, 	%AMM!TVV$	%(DFFMM?3DE)TVV]]RD9[ 	,DAq)T]]CuD ,LL)  !A$6  CF+,	,
 8 	>AA)T]]CuD >LL)  !A$!!5t<  CFSVOc!f$<=>	>r   c                     | xj                   t        | j                        z  c_         | j                  | j                  z   D ]  }| j	                  || j                            y r   )r>   rI   r;   r:   rW   r   rX   s     r   test_iorzTestSet.test_ior  sG    #dnn%%))dnn, 	%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                  t                      | j                  t        | j                   j                  g g       dD ]  \  }}t        t        t        j                  t        t         t"        fD ]  }| j%                  d      }| j                  |j                   ||            d        | j                  |t        |             d}| j%                  |      }d}| j                  |j                   ||       ||            d        | j                  |t        d      t        |      z  t        |      z           y )N))r\   rX   )r^   rw   )r`   rx   )rb   rw   r[   cbc)r>   intersection_updater;   rM   r:   rW   rA  rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r=   )	r   rY  rX   r   r   rl   r>   ssr   s	            r   test_intersection_updatez TestSet.test_intersection_update  s   ++DNN;&))dnn, 	,ADNN"qDII~a(  DFF+		,
 	(DFF$>$>@QR)TVV%?%?"FL 		@DAq)T]]CuD @LL)  !6!6qt!<dC  CF+LL$  !6!6qtQqT!BDI  CLQ$7A$>?@		@r   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>   rI   r;   r:   rW   rA  r\  s     r   	test_iandzTestSet.test_iand  sq    #dnn%%))dnn, 	,ADNN"qDII~a(  DFF+		,r   c           	      D   | 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                  t                      | j                  t        | j                   j                  g g       | j                  t        | j                   j                  g g       dD ]e  \  }}t        t        t        j                  t         t"        t$        fD ]1  }| j'                  d      }| j                  |j                   ||            d        | j                  |t        |             | j'                  d      }|j                          | j                  || j'                  d             | j'                  d      }|j                   |d             | j                  || j'                  d             | j'                  d      }|j                   |d       |d             | j                  || j'                  d             4 h y )N))r\   r   )r^   ra   r`   rF   )rb   ra   r[   
abcdefghihabacdefghihr\   efghih)r>   difference_updater;   rM   r:   rW   rA  rG   r   r   rH   r  rI   rV   r?   r@   rh   ri   rj   r=   rX  s          r   test_difference_updatezTestSet.test_difference_update	  s   ))$..9&))dnn, 	,ADII~!4>>"9a(  DFF+		,
 	(DFF$<$<o>OP)TVV%=%=tD)TVV%G%G"NR 	<DAq)T]]CuD <LL)  !4!4QqT!:DA  CF+LL.##%  DLL$>?LL.##AeH-  DLL$<=LL.##AeHah7  DLL$:;<	<r   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   rd  r\  s     r   	test_isubzTestSet.test_isub&  sq    #dnn%%))dnn, 	,ADII~!4>>"9a(  DFF+		,r   c           	      0   | 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                  t                      | j                  t        | j                   j                  g g       dD ]  \  }}t        t        t        j                  t        t         t"        fD ]U  }| j%                  d      }| j                  |j                   ||            d        | j                  |t        |             W  y )N))r\   r   rS  rg  rT  r[   )r>   r  r;   rM   r:   rW   rA  rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r=   rX  s          r    test_symmetric_difference_updatez(TestSet.test_symmetric_difference_update.  s8   33DNNC&))dnn, 	,ATYY1#67a(  DFF+		,
 	(DFF$F$FHYZ)TVV%G%G"NX 	,DAq)T]]CuD ,LL)  !>!>qt!DdK  CF+,	,r   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   rd  r\  s     r   	test_ixorzTestSet.test_ixor>  st    #dnn%%))dnn, 	,ATYY1#67a(  DFF+		,r   c                    | j                   j                         }||z  }| j                  || j                          ||z  }| j                  || j                          ||z  }| j                  || j                                | j                   j                         }||z  }| j                  || j                                y r   )r>   r   rM   r=   )r   r   s     r   test_inplace_on_selfzTestSet.test_inplace_on_selfF  s    FFKKM	QDFF#	QDFF#	QDLLN+FFKKM	QDLLN+r   c                     | j                  d      }t        j                  |      }| j                  t	        |      t	        |             d }t        j                          | j                  t        t        |       y )Ngallahad)	r=   r  proxyrM   rh   r   
gc_collectrG   ReferenceError)r   r>   r   s      r   test_weakrefzTestSet.test_weakrefR  sY    LL$MM!QQ(.#q1r   c                 X    G d d      }h d} |       }||k   | j                  |j                          |       }||kD   | j                  |j                          |       }||k   | j                  |j                          |       }||k\   | j                  |j                         y )Nc                   $    e Zd Zd Zd Zd Zd Zy)5TestSet.test_rich_compare.<locals>.TestRichSetComparec                     d| _         yNTF)	gt_calledr   some_sets     r   __gt__z<TestSet.test_rich_compare.<locals>.TestRichSetCompare.__gt__\      !%r   c                     d| _         yr  )	lt_calledr  s     r   __lt__z<TestSet.test_rich_compare.<locals>.TestRichSetCompare.__lt___  r  r   c                     d| _         yr  )	ge_calledr  s     r   __ge__z<TestSet.test_rich_compare.<locals>.TestRichSetCompare.__ge__b  r  r   c                     d| _         yr  )	le_calledr  s     r   __le__z<TestSet.test_rich_compare.<locals>.TestRichSetCompare.__le__e  r  r   N)r
   r   r   r  r  r  r  r   r   r   TestRichSetComparer~  [  s    r   r  r&  )r   r  r  r  r  )r   r  mysetmyobjs       r   test_rich_comparezTestSet.test_rich_compareZ  s    	 	" "$("$("$("$(r   
test_c_apiz*C API test only available in a debug buildc                 T    | j                  t               j                         d       y NT)rM   rI   r  r   s    r   r  zTestSet.test_c_api~  s     	))+T2r   N)#r
   r   r   rI   r=   rg   r  r"  r(  r,  r2  r5  r8  r;  r>  rC  rH  rM  rO  rQ  rZ  r]  rb  re  rm  ro  rq  rs  ru  r{  r  unittest
skipUnlessr   r  r   r   r   r  r  f  s    GH4*

2,3)
35	L			+0>&%
@*,<:,, ,
,2")H Xl3EG3G3r   r  c                       e Zd Zy)SetSubclassNr	   r   r   r   r  r    r   r   r  c                       e Zd ZeZeZd Zy)TestSetSubclassc                 0    G d dt               } |ddg      }| j                  t        |      |       | j                  t        |      ddh       | j	                  t
              5   |d       d d d         G d dt               } |ddgd	
      }| j                  t        |      |       | j                  t        |      ddh       | j                  |j                  d	        G d dt               } |ddg      }| j                  t        |      |       | j                  t        |      ddh       | j                  |j                         | j	                  t
              5   |ddgd	
       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zy);TestSetSubclass.test_keywords_in_subclass.<locals>.subclassNr	   r   r   r   subclassr    r   r   r  r   rD   r   sequencec                         e Zd Zd fd	Z xZS )ETestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_initc                 2    t         |   |       || _        y r   )superr1   newarg)r   argr  	__class__s      r   r1   zNTestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s     %$r   r   )r
   r   r   r1   __classcell__r  s   @r   subclass_with_initr    s    % %r   r  r   r  c                         e Zd Zd fd	Z xZS )DTestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_newc                 6    t         |   | |      }||_        |S r   r  __new__r  clsr  r  r   r  s       r   r  zLTestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_new.__new__      wsC0$r   r   r
   r   r   r  r  r  s   @r   subclass_with_newr         r   r  )rI   assertIsrf   rM   rG   rH   r  assertIsNoner   r  rk   r  r  s        r   test_keywords_in_subclassz)TestSetSubclass.test_keywords_in_subclass  s]   	s 	aVd1gx(Q!Q(y) 	"b!	"	% 	% 1va0d1g12Q!Q(1%	 	
 q!f%d1g01Q!Q(!((#y) 	0q!fQ/	0 	0-	" 	",	0 	0s   '
E?)F?F	FN)r
   r   r   r  r=   rI   rg   r  r   r   r   r  r    s    GH0r   r  c                   >    e Zd ZeZeZd Zd Zd Zd Z	d Z
d Zd Zy)	TestFrozenSetc                     | j                  | j                        }|j                  | j                         | j	                  |t        | j                               y r   )r=   r:   r1   r;   rM   rI   r   s     r   r  zTestFrozenSet.test_init  s<    LL#	

4>>"C		N+r   c                     | j                  t        d            }| j                  |      }| j                  t        |      t        |             y r  )r=   r   rM   r}   r!  s      r   r"  z'TestFrozenSet.test_constructor_identity  s9    LLq"LLOA1&r   c                    | j                  t        | j                  d            t        | j                  d                   d}t        |      D cg c]  }t	        |       }}t               }t        d      D ]6  }t        |       |j                  t        | j                  |                   8 | j                  t        |      d       y c c}w )Nabcdebebecdad      r   )	rM   r4  r=   r   r   rI   r   r   rR   )r   r  rr   seqresultss        r   r5  zTestFrozenSet.test_hash  s    dll845dll845	7 %*1X.y|..%s 	1ACLKKT\\#./0	1 	Wq) /s   Cc                     | j                   j                         }| j                  t        | j                         t        |             y r   )r>   r   rM   r}   r:  s     r   r;  zTestFrozenSet.test_copy  s-    ffkkmDFFRW-r   c                 F   t        t        d            t        d      z   dgz   }| j                  |      }| j                  t        |            }| j	                  ||       | j                  t        |      t        |             i }d||<   | j	                  ||   d       y )Nr   abcdefgapple*   )ri   r   r=   reversedrM   r~   r}   )r   r  key1key2rA   s        r   test_frozen_as_dictkeyz$TestFrozenSet.test_frozen_as_dictkey  s    59oY/7);||C ||HSM*t$BtHbh/$4"%r   c                 n    | j                  d      }| j                  t        |      t        |             y )Nabcdcda)r=   rM   r4  r   r   s     r   test_hash_cachingzTestFrozenSet.test_hash_caching  s(    LL#a$q'*r   c                 L   d}t               }|j                  }t        |      D cg c]  }|dz   d|z  f }}t        d|z        D ]5  } |t        t	        |D cg c]  \  }}||z  s| c}}                   7 | j                  t        |      d|z         d }d }	t        d      D ]d  }d|z  }
|
dz
  }t        |fD ]M  }t        t        t         |	 ||                  D ch c]  }||z  	 c}      }| j                  d|z  |
       O f y c c}w c c}}w c c}w )N   r   rD   c                     t               g}t        | dz
        D ]  }t        |      }|j                  |         |d |  S r   )rV   r   r/  )r  numsrr   nums       r   zf_rangez7TestFrozenSet.test_hash_effectiveness.<locals>.zf_range  sD    K=D1Q3Z !oC ! 8Or   c              3      K   t        t        |       dz         D ].  }t        t        t	        j
                  | |            E d {    0 y 7 wr   )r   rR   r   rV   	itertoolscombinations)r>   rr   s     r   powersetz7TestFrozenSet.test_hash_effectiveness.<locals>.powerset  sC     3q6!8_ Hy)*@*@A*FGGGHGs   AAAA   rJ  )	rI   r   r   r4  rV   rM   rR   r   assertGreater)r   r  
hashvaluesaddhashvaluerr   	elemmasksrF  mr  r  r   maskr  hrk   s                  r   test_hash_effectivenessz%TestFrozenSet.test_hash_effectiveness  s#   U
!~~*/(3Qac1a4[3	3q!t 	LAiy(Htq!AaC(HIJK	LZ!Q$/		H r 	+AQAq5D) +3tXd1g5F+GHaTHI""1Q3*+	+# 4(H& Is   DD)D)D!N)r
   r   r   rV   r=   rg   r  r"  r5  r;  r  r  r  r   r   r   r  r    s/    GH,
'
*.&++r   r  c                       e Zd Zy)FrozenSetSubclassNr	   r   r   r   r  r    r   r   r  c                   2    e Zd ZeZeZd Zd Zd Z	d Z
d Zy)TestFrozenSetSubclassc                     G d dt               } |ddg      }| j                  t        |      |       | j                  t	        |      ddh       | j                  t              5   |d       d d d         G d dt               } |ddgd	
      }| j                  t        |      |       | j                  t	        |      ddh       | j                  |j                  d	        G d dt               } |ddgd	
      }| j                  t        |      |       | j                  t	        |      ddh       | j                  |j                  d	       y # 1 sw Y   xY w)Nc                       e Zd Zy)ATestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclassNr	   r   r   r   r  r    r   r   r  r   rD   r   r  c                       e Zd ZddZy)KTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_initNc                     || _         y r   r  )r   r  r  s      r   r1   zTTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s	    $r   r   )r
   r   r   r1   r   r   r   r  r    s    %r   r  r   r  c                         e Zd Zd fd	Z xZS )JTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_newc                 6    t         |   | |      }||_        |S r   r  r  s       r   r  zRTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_new.__new__  r  r   r   r  r  s   @r   r  r    r  r   r  )rV   r  rf   rM   rI   rG   rH   r  r  s        r   r  z/TestFrozenSetSubclass.test_keywords_in_subclass  s+   	y 	aVd1gx(Q!Q(y) 	"b!	"	% 	% 1va0d1g12Q!Q(1%		 	
 q!fQ/d1g01Q!Q(1%'	" 	"s   '
EE!c                     | j                  t        d            }| j                  |      }| j                  t        |      t        |             y r  r   r!  s      r   r"  z/TestFrozenSetSubclass.test_constructor_identity  r#  r   c                     | j                   j                         }| j                  t        | j                         t        |             y r   )r>   r   r~   r}   r:  s     r   r;  zTestFrozenSetSubclass.test_copy  s-    ffkkmBtvvJ30r   c                 j    | j                         }| j                  |      }| j                  ||       y r   )r=   rM   r!  s      r   test_nested_empty_constructorz3TestFrozenSetSubclass.test_nested_empty_constructor  s*    LLNLLOAr   c                    | j                   }t               } |       } |        |g        |d       |d       |        |g        |d       |d       |t        d             | |              |t                     || ||       ||      g}| j                  t	        t        t        t        |                  t	        |             y )Nr   rw   r   )r=   rV   r   rM   rR   rI   r   r}   )r   	Frozensetr   Fefss        r   test_singleton_empty_frozensetz4TestFrozenSetSubclass.test_singleton_empty_frozenset#  s    LL	KK{IbM9R=)B-{IbM9R=)B-q"Iik$:%q!Yq\9Q<I
 	SR./S:r   N)r
   r   r   r  r=   rV   rg   r  r"  r;  r  r  r   r   r   r  r    s%    GH&6*
1
	;r   r  c                       e Zd ZdZy)SetSubclassWithSlotsrm   r   __dict__Nr
   r   r   	__slots__r   r   r   r  r  /      &Ir   r  c                   @    e Zd ZeZej                  Zej                  Zy)TestSetSubclassWithSlotsN)r
   r   r   r  r=   r5   rB   r   r   r   r   r  r  2  s    "GE ..Mr   r  c                       e Zd ZdZy)FrozenSetSubclassWithSlotsr  Nr  r   r   r   r  r  7  r  r   r  c                       e Zd ZeZy)TestFrozenSetSubclassWithSlotsN)r
   r   r   r  r=   r   r   r   r	  r	  :  s    (Gr   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y)TestBasicOpsc                 |    | j                   0| j                  t        | j                        | j                          y y r   )r'   rM   rI   r   s    r   	test_reprzTestBasicOps.test_reprE  s-    99 T$((^TYY7 !r   c                    t        | j                        }| j                  |j                  d             | j                  |j	                  d             |dd j                  d      }|j                          | j                  D cg c]  }t        |       }}|j                          | j                  ||       y c c}w )N{}r   z, )	r'   rI   r   
startswithendswithsplitsortvaluesrM   )r   textresultr(   sorted_repr_valuess        r   check_repr_against_valuesz&TestBasicOps.check_repr_against_valuesI  s    DHH~,-c*+a!!$'7;{{Ced5kCC!!34 Ds   B?c                 b    | j                  t        | j                        | j                         y r   )rM   rR   rI   lengthr   s    r   test_lengthzTestBasicOps.test_lengthT  s    TXX4r   c                 P    | j                  | j                  | j                         y r   rM   rI   r   s    r   test_self_equalityzTestBasicOps.test_self_equalityW      488,r   c                 P    | j                  | j                  | j                         y r   )rM   rI   r   r   s    r   test_equivalent_equalityz%TestBasicOps.test_equivalent_equalityZ  r!  r   c                 l    | j                  | j                  j                         | j                         y r   )rM   rI   r   r   r   s    r   r;  zTestBasicOps.test_copy]  s     $((3r   c                 n    | j                   | j                   z  }| j                  || j                         y r   rI   rM   r   r   r  s     r   test_self_unionzTestBasicOps.test_self_union`  (    DHH$*r   c                 b    | j                   t        z  }| j                  || j                         y r   rI   	empty_setrM   r   r'  s     r   test_empty_unionzTestBasicOps.test_empty_uniond  $    I%*r   c                 b    t         | j                  z  }| j                  || j                         y r   )r,  rI   rM   r   r'  s     r   test_union_emptyzTestBasicOps.test_union_emptyh  s$    TXX%*r   c                 n    | j                   | j                   z  }| j                  || j                         y r   r&  r'  s     r   test_self_intersectionz#TestBasicOps.test_self_intersectionl  r)  r   c                 V    | j                   t        z  }| j                  |t               y r   rI   r,  rM   r'  s     r   test_empty_intersectionz$TestBasicOps.test_empty_intersectionp  s     I%+r   c                 V    t         | j                  z  }| j                  |t                y r   r,  rI   rM   r'  s     r   test_intersection_emptyz$TestBasicOps.test_intersection_emptyt       TXX%+r   c                     | j                   j                  | j                         }| j                  || j                           y r   rI   r   rM   r'  s     r   test_self_isdisjointz!TestBasicOps.test_self_isdisjointx  s0    $$TXX.TXX.r   c                 f    | j                   j                  t              }| j                  |d       y r  )rI   r   r,  rM   r'  s     r   test_empty_isdisjointz"TestBasicOps.test_empty_isdisjoint|  s&    $$Y/&r   c                 f    t         j                  | j                        }| j                  |d       y r  )r,  r   rI   rM   r'  s     r   test_isdisjoint_emptyz"TestBasicOps.test_isdisjoint_empty  s&    %%dhh/&r   c                 b    | j                   | j                   z  }| j                  |t               y r   rI   rM   r,  r'  s     r   test_self_symmetric_differencez+TestBasicOps.test_self_symmetric_difference  $    DHH$+r   c                 b    | j                   t        z  }| j                  || j                          y r   r4  r'  s     r   test_empty_symmetric_differencez,TestBasicOps.test_empty_symmetric_difference  r.  r   c                 b    | j                   | j                   z
  }| j                  |t               y r   rB  r'  s     r   test_self_differencez!TestBasicOps.test_self_difference  rD  r   c                 b    | j                   t        z
  }| j                  || j                         y r   r+  r'  s     r   test_empty_differencez"TestBasicOps.test_empty_difference  r.  r   c                 V    t         | j                  z
  }| j                  |t                y r   r7  r'  s     r   test_empty_difference_revz&TestBasicOps.test_empty_difference_rev  r9  r   c                     | j                   D ]  }| j                  || j                           t        | j                         }| j	                  |j                         t        | j                                y r   )rI   rW   r  r   rM   __length_hint__rR   )r   vsetiters      r   test_iterationzTestBasicOps.test_iteration  sU     	*AMM!T[[)	*txx.002CMBr   c                    t        t        j                  dz         D ]c  }t        j                  | j                  |      }t        j
                  |      }| j                  | j                  || j                  d|       e y )Nr   r   )r   r   r   r   rI   r   rM   )r   r   r   r   s       r   r   zTestBasicOps.test_pickling  sd    622Q67 	<ETXXu-A<<?DTXXt+/88T:<	<r   c                    | j                  t              5  t               j                  d       d d d        | j                  t              5  t               j	                  d       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nr  )rG   rH   rI   r   rl  r   s    r   test_issue_37219zTestBasicOps.test_issue_37219  sm    y) 	"ES!	"y) 	)E##C(	) 	)	" 	"	) 	)s   A0A<0A9<BN)r
   r   r   r  r  r  r   r#  r;  r(  r-  r0  r2  r5  r8  r<  r>  r@  rC  rF  rH  rJ  rL  rQ  r   rT  r   r   r   r  r  C  sv    8	55--4++++,,/'',+,+,C<)r   r  c                       e Zd Zd Zy)TestBasicOpsEmptyc                     d| _         g | _        t        | j                        | _        t        | j                        | _        d| _        d| _        y )Nz	empty setr   zset()caser  rI   r   r  r'   r   s    r   rB   zTestBasicOpsEmpty.setUp  s>    !	$++&$++&	r   Nr
   r   r   rB   r   r   r   rV  rV    s    r   rV  c                       e Zd Zd Zd Zd Zy)TestBasicOpsSingletonc                     d| _         dg| _        t        | j                        | _        t        | j                        | _        d| _        d| _        y )Nzunit set (number)r   r   z{3}rX  r   s    r   rB   zTestBasicOpsSingleton.setUp  s@    )	c$++&$++&	r   c                 <    | j                  d| j                         y r  rW   rI   r   s    r   test_inzTestBasicOpsSingleton.test_in  s    a"r   c                 <    | j                  d| j                         y NrD   rA  rI   r   s    r   test_not_inz!TestBasicOpsSingleton.test_not_in      DHH%r   Nr
   r   r   rB   r`  rd  r   r   r   r\  r\    s    #&r   r\  c                       e Zd Zd Zd Zd Zy)TestBasicOpsTuplec                     d| _         dg| _        t        | j                        | _        t        | j                        | _        d| _        d| _        y )Nzunit set (tuple)r   zeror   z{(0, 'zero')}rX  r   s    r   rB   zTestBasicOpsTuple.setUp  s@    (	"m$++&$++&%	r   c                 <    | j                  d| j                         y )Nrj  r_  r   s    r   r`  zTestBasicOpsTuple.test_in  s    k488,r   c                 <    | j                  d| j                         y )N	   rc  r   s    r   rd  zTestBasicOpsTuple.test_not_in  re  r   Nrf  r   r   r   rh  rh    s    &-&r   rh  c                       e Zd Zd Zy)TestBasicOpsTriplec                     d| _         ddt        j                  g| _        t	        | j                        | _        t	        | j                        | _        d| _        d | _        y )Nz
triple setr   rk  r   )rY  operatorr   r  rI   r   r  r'   r   s    r   rB   zTestBasicOpsTriple.setUp  sI    "	&(,,/$++&$++&	r   NrZ  r   r   r   rp  rp    s    r   rp  c                       e Zd Zd Zd Zy)TestBasicOpsStringc                     d| _         g d| _        t        | j                        | _        t        | j                        | _        d| _        y )Nz
string setrF   r{   rX   r   rY  r  rI   r   r  r   s    r   rB   zTestBasicOpsString.setUp  s7    "	%$++&$++&r   c                 $    | j                          y r   r  r   s    r   r  zTestBasicOpsString.test_repr      &&(r   Nr
   r   r   rB   r  r   r   r   rt  rt        )r   rt  c                       e Zd Zd Zd Zy)TestBasicOpsBytesc                     d| _         g d| _        t        | j                        | _        t        | j                        | _        d| _        y )Nz	bytes set)   a   b   cr   rw  r   s    r   rB   zTestBasicOpsBytes.setUp  s7    !	($++&$++&r   c                 $    | j                          y r   ry  r   s    r   r  zTestBasicOpsBytes.test_repr  rz  r   Nr{  r   r   r   r~  r~    r|  r   r~  c                       e Zd Zd Zd Zy)TestBasicOpsMixedStringBytesc                    | j                  t        j                                t        j                  dt
               d| _        g d| _        t        | j                        | _        t        | j                        | _	        d| _
        y )Nignorezstring and bytes set)rF   r{   r  r  rJ  )enterContextr   check_warningswarningssimplefilterBytesWarningrY  r  rI   r   r  r   s    r   rB   z"TestBasicOpsMixedStringBytes.setUp   s^    /88:;h5,	,$++&$++&r   c                 $    | j                          y r   ry  r   s    r   r  z&TestBasicOpsMixedStringBytes.test_repr	  rz  r   Nr{  r   r   r   r  r    s    )r   r  c               #      K   t         wr   )rH   r   r   r   baditerr    s     
Or   c               #      K   d y wr  r   r   r   r   gooditerr    s     
Js   c                        e Zd Z	 d Zd Zd Zy)TestExceptionPropagationc                 J    | j                  t        t        t                      y r   )rG   rH   rI   r  r   s    r   test_instanceWithExceptionz3TestExceptionPropagation.test_instanceWithException  s    )S')4r   c                     t        g d       t        d       t        dddd       t        t        d             t        d       t        t                      y )Nr%  r   rD   r   )onetwothreera   )rI   r   r  r   s    r   test_instancesWithoutExceptionz7TestExceptionPropagation.test_instancesWithoutException  s:    GG1Aq)*E!HE
HJr   c                     t        g d      }	 |D ]  }|j                  dg        	 | j                  d       y # t        $ r Y y w xY w)Nr%  rJ  z0no exception when changing size during iteration)rI   rW  rp   r   )r   r>   rr   s      r   test_changingSizeWhileIteratingz8TestExceptionPropagation.test_changingSizeWhileIterating$  sP    L	J !
 IIHI  		s   ; 	AAN)r
   r   r   r  r  r  r   r   r   r  r    s    I5Jr   r  c                       e Zd Zd Zy)TestSetOfSetsc                 ,   t        dg      }t        |g      }|j                         }| j                  t	        |      t                |j                  |       |j                  |       | j                  |t                      |j                  |       y r   )rV   rI   r*  rM   rf   r   r   r   )r   innerouterelements       r   test_constructorzTestSetOfSets.test_constructor1  sm    1#UG))+g	2		%U&er   N)r
   r   r   r  r   r   r   r  r  0  s    r   r  c                   x    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y)TestBinaryOpsc                 $    t        d      | _         y NrD   rJ     rI   r   s    r   rB   zTestBinaryOps.setUp>      y>r   c           	      V    | j                  | j                  t        dddd             y )Nr   r      r  r  r   s    r   test_eqzTestBinaryOps.test_eqA  s!    3!a!}#56r   c                 l    | j                   t        dg      z  }| j                  |t        d             y NrD   r  r'  r'  s     r   test_union_subsetzTestBinaryOps.test_union_subsetD  s*    CH$Y0r   c                 r    | j                   t        g d      z  }| j                  |t        g d             y NrD   rJ  r     r'  r'  s     r   test_union_supersetz!TestBinaryOps.test_union_supersetH  s*    C--\!23r   c                 r    | j                   t        g d      z  }| j                  |t        g d             y Nr   rJ  r  )rD   r   rJ  r  r  r'  r'  s     r   test_union_overlapz TestBinaryOps.test_union_overlapL  s)    C	N*_!56r   c                 p    | j                   t        dg      z  }| j                  |t        g d             y Nr  r  r'  r'  s     r   test_union_non_overlapz$TestBinaryOps.test_union_non_overlapP  +    CH$\!23r   c                 j    | j                   t        d      z  }| j                  |t        d             y NrD   rJ  r'  r'  s     r   test_intersection_subsetz&TestBinaryOps.test_intersection_subsetT  s(    CK'V-r   c                 r    | j                   t        g d      z  }| j                  |t        g d             y Nr  r  r'  r'  s     r   test_intersection_supersetz(TestBinaryOps.test_intersection_supersetX  s)    C--Y0r   c                 p    | j                   t        g d      z  }| j                  |t        dg             y Nr  rJ  r'  r'  s     r   test_intersection_overlapz'TestBinaryOps.test_intersection_overlap\  s*    C	N*aS*r   c                 b    | j                   t        dg      z  }| j                  |t               y Nr  rB  r'  s     r   test_intersection_non_overlapz+TestBinaryOps.test_intersection_non_overlap`  s&    CH$+r   c                 p    | j                   j                  t        d            }| j                  |d       y )Nr  Fr;  r'  s     r   test_isdisjoint_subsetz$TestBinaryOps.test_isdisjoint_subsetd  s*    $$S[1'r   c                 t    | j                   j                  t        g d            }| j                  |d       y )Nr  Fr;  r'  s     r   test_isdisjoint_supersetz&TestBinaryOps.test_isdisjoint_superseth  s+    $$S%67'r   c                 t    | j                   j                  t        g d            }| j                  |d       y )Nr  Fr;  r'  s     r   test_isdisjoint_overlapz%TestBinaryOps.test_isdisjoint_overlapl  s*    $$S^4'r   c                 r    | j                   j                  t        dg            }| j                  |d       y )Nr  Tr;  r'  s     r   test_isdisjoint_non_overlapz)TestBinaryOps.test_isdisjoint_non_overlapp  s,    $$S!X.&r   c                 l    | j                   t        d      z  }| j                  |t        dg             y Nr  r  r'  r'  s     r   test_sym_difference_subsetz(TestBinaryOps.test_sym_difference_subsett  s*    CK'aS*r   c                 l    | j                   t        d      z  }| j                  |t        dg             y Nr  r  r'  r'  s     r   test_sym_difference_supersetz*TestBinaryOps.test_sym_difference_supersetx  s+    C--aS*r   c                 n    | j                   t        d      z  }| j                  |t        g d             y Nr  )rD   r   r  r  r'  r'  s     r   test_sym_difference_overlapz)TestBinaryOps.test_sym_difference_overlap|  s)    C	N*\!23r   c                 p    | j                   t        dg      z  }| j                  |t        g d             y r  r'  r'  s     r   test_sym_difference_non_overlapz-TestBinaryOps.test_sym_difference_non_overlap  r  r   N)r
   r   r   rB   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  =  s\    "71474.1+,((('++44r   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y)TestUpdateOpsc                 $    t        d      | _         y r  r  r   s    r   rB   zTestUpdateOps.setUp  r  r   c                     | xj                   t        dg      z  c_         | j                  | j                   t        d             y r  r'  r   s    r   r  zTestUpdateOps.test_union_subset  s.    CH3y>2r   c                     | xj                   t        g d      z  c_         | j                  | j                   t        g d             y r  r'  r   s    r   r  z!TestUpdateOps.test_union_superset  s.    C%%3|#45r   c                     | xj                   t        g d      z  c_         | j                  | j                   t        g d             y r  r'  r   s    r   r  z TestUpdateOps.test_union_overlap  s-    C	N"3#78r   c                     | xj                   t        dg      z  c_         | j                  | j                   t        g d             y r  r'  r   s    r   r  z$TestUpdateOps.test_union_non_overlap  /    CH3|#45r   c                     | j                   j                  t        g d             | j                  | j                   t        g d             y r  )rI   rW  rM   r   s    r   test_union_method_callz$TestUpdateOps.test_union_method_call  s/    I'3#78r   c                     | xj                   t        d      z  c_         | j                  | j                   t        d             y r  r'  r   s    r   r  z&TestUpdateOps.test_intersection_subset  s,    CK3v;/r   c                     | xj                   t        g d      z  c_         | j                  | j                   t        g d             y r  r'  r   s    r   r  z(TestUpdateOps.test_intersection_superset  s-    C%%3y>2r   c                     | xj                   t        g d      z  c_         | j                  | j                   t        dg             y r  r'  r   s    r   r  z'TestUpdateOps.test_intersection_overlap  s.    C	N"3s8,r   c                     | xj                   t        dg      z  c_         | j                  | j                   t               y r  rB  r   s    r   r  z+TestUpdateOps.test_intersection_non_overlap  s*    CH9-r   c                     | j                   j                  t        g d             | j                  | j                   t        dg             y r  )rI   r`  rM   r   s    r   test_intersection_method_callz+TestUpdateOps.test_intersection_method_call  s2    $$S^43s8,r   c                     | xj                   t        d      z  c_         | j                  | j                   t        dg             y r  r'  r   s    r   r  z(TestUpdateOps.test_sym_difference_subset  .    CK3s8,r   c                     | xj                   t        d      z  c_         | j                  | j                   t        dg             y r  r'  r   s    r   r  z*TestUpdateOps.test_sym_difference_superset  s/    C%%3s8,r   c                     | xj                   t        d      z  c_         | j                  | j                   t        g d             y r  r'  r   s    r   r  z)TestUpdateOps.test_sym_difference_overlap  s-    C	N"3|#45r   c                     | xj                   t        dg      z  c_         | j                  | j                   t        g d             y r  r'  r   s    r   r  z-TestUpdateOps.test_sym_difference_non_overlap  r  r   c                     | j                   j                  t        g d             | j                  | j                   t        g d             y r  )rI   r  rM   r   s    r   test_sym_difference_method_callz-TestUpdateOps.test_sym_difference_method_call  s1    ,,S^<3|#45r   c                     | xj                   t        d      z  c_         | j                  | j                   t        dg             y r  r'  r   s    r   test_difference_subsetz$TestUpdateOps.test_difference_subset  r  r   c                     | xj                   t        d      z  c_         | j                  | j                   t        g              y r  r'  r   s    r   test_difference_supersetz&TestUpdateOps.test_difference_superset  s-    C%%3r7+r   c                     | xj                   t        d      z  c_         | j                  | j                   t        ddg             y Nr  rD   r  r'  r   s    r   test_difference_overlapz%TestUpdateOps.test_difference_overlap  s0    C	N"31v;/r   c                     | xj                   t        dg      z  c_         | j                  | j                   t        g d             y )Nr  r  r'  r   s    r   test_difference_non_overlapz)TestUpdateOps.test_difference_non_overlap  s.    CH3y>2r   c                     | j                   j                  t        g d             | j                  | j                   t        ddg             y r  )rI   rl  rM   r   s    r   test_difference_method_callz)TestUpdateOps.test_difference_method_call  s4    ""3y>231v;/r   N)r
   r   r   rB   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    sk    "3696903-.---666-,030r   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y)
TestMutatec                 J    g d| _         t        | j                         | _        y )Nrv  )r  rI   r   s    r   rB   zTestMutate.setUp  s    %t{{#r   c                     | j                   j                  d       | j                  | j                   t        d             y )NrX   ra   rI   r   rM   r   s    r   test_add_presentzTestMutate.test_add_present  s*    S3u:.r   c                     | j                   j                  d       | j                  | j                   t        d             y )NrA   r]   r  r   s    r   test_add_absentzTestMutate.test_add_absent  s*    S3v;/r   c                     t               }d}| j                  D ]3  }|j                  |       |dz  }| j                  t	        |      |       5 | j                  || j                          y )Nr   r   )rI   r  r   rM   rR   )r   tmpexpected_lenrO  s       r   test_add_until_fullzTestMutate.test_add_until_full  s`    e 	5AGGAJALSX|4	5 	dhh'r   c                     | j                   j                  d       | j                  | j                   t        d             y )Nr{   ac)rI   r   rM   r   s    r   test_remove_presentzTestMutate.test_remove_present  s*    3t9-r   c                 |    	 | j                   j                  d       | j                  d       y # t        $ r Y y w xY w)NrA   z7Removing missing element should have raised LookupError)rI   r   rp   LookupErrorr   s    r   test_remove_absentzTestMutate.test_remove_absent  s6    	HHOOC IIOP 		s   ,/ 	;;c                     t        | j                        }| j                  D ]G  }| j                  j                  |       |dz  }| j	                  t        | j                        |       I y r   )rR   rI   r  r   rM   )r   r  rO  s      r   test_remove_until_emptyz"TestMutate.test_remove_until_empty  sT    488} 	:AHHOOAALS]L9	:r   c                     | j                   j                  d       | j                  | j                   t        d             y )NrX   r   rI   r   rM   r   s    r   test_discard_presentzTestMutate.test_discard_present  s,    3t9-r   c                     | j                   j                  d       | j                  | j                   t        d             y )NrA   ra   r  r   s    r   test_discard_absentzTestMutate.test_discard_absent  s,    3u:.r   c                     | j                   j                          | j                  t        | j                         d       y r-   )rI   r7  rM   rR   r   s    r   r8  zTestMutate.test_clear  s(    TXX*r   c                    i }| j                   r*d || j                   j                         <   | j                   r*| j                  t        |      t        | j                               | j                  D ]  }| j                  ||        y r   )rI   r*  rM   rR   r  rW   )r   poppedrO  s      r   rQ  zTestMutate.test_pop  si    hh%)F488<<>" hhVc$++&67 	%AMM!V$	%r   c                     | j                   j                  d       | j                  | j                   t        | j                               y )Nr   rI   rW  rM   r  r   s    r   test_update_empty_tuplez"TestMutate.test_update_empty_tuple  s/    3t{{#34r   c                     | j                   j                  d       | j                  | j                   t        | j                               y )NrE   r  r   s    r   test_update_unit_tuple_overlapz)TestMutate.test_update_unit_tuple_overlap  s/    3t{{#34r   c                     | j                   j                  d       | j                  | j                   t        | j                  dgz                y )N)rF   r   r   r  r   s    r   "test_update_unit_tuple_non_overlapz-TestMutate.test_update_unit_tuple_non_overlap   s6    
#3t{{cU':#;<r   N)r
   r   r   rB   r  r  r  r  r  r  r  r  r8  rQ  r  r!  r#  r   r   r   r  r    sH    $/0(.:./+%55=r   r  c                   .    e Zd ZdddZdddddd	d
Zd Zy)TestSubsetsr   r   )<=>===!=><r'  r&  )r(  r)  r+  r*  r&  r'  c                 ^   | j                   }| j                  }dD ]  }|| j                  v }t        d|z   dz   t	                     }| j                  ||       |t        j                  v r7t        |t        j                  |         } ||      }| j                  ||       t        j                  |   }t        d|z   dz   t	                     }| j                  ||       |t        j                  v st        |t        j                  |         } ||      }| j                  ||        y )N)r)  r(  r+  r&  r*  r'  rm   r   )
leftrightcasesevallocalsrM   r%  case2methodgetattrreverse)r   rm   r   rY  rO   r  methodrcases           r   test_issubsetzTestSubsets.test_issubset4  s   IIJJ4 	3Dtzz)H#*s*FH5FVX.{... K$;$;D$AB  2  ''-E#++VX6FVX./// K$;$;E$BC  2%	3r   N)r
   r   r   r2  r4  r7  r   r   r   r%  r%  &  s/    #%K G3r   r%  c                   0    e Zd Z e       Z e       ZdZdZy)TestSubsetEqualEmptyz
both emptyr(  r&  r'  Nr
   r   r   rI   r-  r.  r   r/  r   r   r   r9  r9  L  s    EDEEDEr   r9  c                   <    e Zd Z eddg      Z eddg      ZdZdZy)TestSubsetEqualNonEmptyr   rD   z
equal pairr:  Nr;  r   r   r   r=  r=  T  s&    AKDAKEDEr   r=  c                   6    e Zd Z e       Z eddg      ZdZdZy)TestSubsetEmptyNonEmptyr   rD   zone empty, one non-emptyr)  r+  r&  Nr;  r   r   r   r?  r?  \  s     EDAKE&DEr   r?  c                   :    e Zd Z edg      Z eddg      ZdZdZy)TestSubsetPartialr   rD   z&one a non-empty proper subset of otherr@  Nr;  r   r   r   rB  rB  d  s$    HDAKE4DEr   rB  c                   8    e Zd Z edg      Z edg      ZdZdZy)TestSubsetNonOverlapr   rD   zneither empty, neither containsr)  Nr;  r   r   r   rD  rD  l  s"    HDHE-DEr   rD  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y)TestOnlySetsInBinaryOpsc                 L   | j                  | j                  | j                  k(  d       | j                  | j                  | j                  k(  d       | j                  | j                  | j                  k7  d       | j                  | j                  | j                  k7  d       y r   )rM   r!   rI   r   s    r   
test_eq_nez"TestOnlySetsInBinaryOps.test_eq_nev  sv    txx/7TZZ/7txx/6TZZ/6r   c                      j                  t         fd        j                  t         fd        j                  t         fd        j                  t         fd        j                  t         fd        j                  t         fd        j                  t         fd        j                  t         fd       y )	Nc                  6     j                    j                  k  S r   rI   r!   r   s   r   <lambda>z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>~      TXX

-B r   c                  6     j                    j                  k  S r   rK  r   s   r   rL  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TXX-C r   c                  6     j                    j                  kD  S r   rK  r   s   r   rL  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rM  r   c                  6     j                    j                  k\  S r   rK  r   s   r   rL  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rO  r   c                  6     j                    j                  k  S r   r!   rI   r   s   r   rL  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TZZ$((-B r   c                  6     j                    j                  k  S r   rS  r   s   r   rL  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TZZ488-C r   c                  6     j                    j                  kD  S r   rS  r   s   r   rL  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rT  r   c                  6     j                    j                  k\  S r   rS  r   s   r   rL  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rV  r   )rG   rH   r   s   `r   test_ge_gt_le_ltz(TestOnlySetsInBinaryOps.test_ge_gt_le_lt}  s    )%BC)%CD)%BC)%CD)%BC)%CD)%BC)%CDr   c                     	 | xj                   | j                  z  c_         | j                  d       y # t        $ r Y y w xY wNzexpected TypeErrorrI   r!   rp   rH   r   s    r   test_update_operatorz,TestOnlySetsInBinaryOps.test_update_operator  <    	,HH

"H II*+  		   3 	??c                     | j                   r&| j                  j                  | j                         y | j	                  t
        | j                  j                  | j                         y r   )otherIsIterablerI   rW  r!   rG   rH   r   s    r   rZ  z#TestOnlySetsInBinaryOps.test_update  s=    HHOODJJ'i$**Er   c                 8     j                  t         fd        j                  t         fd        j                  r& j                  j	                   j
                         y  j                  t         j                  j                   j
                         y )Nc                  6     j                    j                  z  S r   rK  r   s   r   rL  z4TestOnlySetsInBinaryOps.test_union.<locals>.<lambda>  rM  r   c                  6     j                    j                  z  S r   rS  r   s   r   rL  z4TestOnlySetsInBinaryOps.test_union.<locals>.<lambda>  rT  r   )rG   rH   ra  rI   re   r!   r   s   `r   rn   z"TestOnlySetsInBinaryOps.test_union  s`    )%BC)%BCHHNN4::&iDr   c                     	 | xj                   | j                  z  c_         | j                  d       y # t        $ r Y y w xY wr[  r\  r   s    r   !test_intersection_update_operatorz9TestOnlySetsInBinaryOps.test_intersection_update_operator  r^  r_  c                     | j                   r&| j                  j                  | j                         y | j	                  t
        | j                  j                  | j                         y r   )ra  rI   r`  r!   rG   rH   r   s    r   rb  z0TestOnlySetsInBinaryOps.test_intersection_update  sE    HH((4i"hh::"jj*r   c                 8     j                  t         fd        j                  t         fd        j                  r& j                  j	                   j
                         y  j                  t         j                  j                   j
                         y )Nc                  6     j                    j                  z  S r   rK  r   s   r   rL  z;TestOnlySetsInBinaryOps.test_intersection.<locals>.<lambda>  rM  r   c                  6     j                    j                  z  S r   rS  r   s   r   rL  z;TestOnlySetsInBinaryOps.test_intersection.<locals>.<lambda>  rT  r   )rG   rH   ra  rI   r|   r!   r   s   `r   r   z)TestOnlySetsInBinaryOps.test_intersection  sd    )%BC)%BCHH!!$**-i)>)>

Kr   c                     	 | xj                   | j                  z  c_         | j                  d       y # t        $ r Y y w xY wr[  r\  r   s    r   #test_sym_difference_update_operatorz;TestOnlySetsInBinaryOps.test_sym_difference_update_operator  r^  r_  c                     | j                   r&| j                  j                  | j                         y | j	                  t
        | j                  j                  | j                         y r   )ra  rI   r  r!   rG   rH   r   s    r   test_sym_difference_updatez2TestOnlySetsInBinaryOps.test_sym_difference_update  sE    HH00<i"hhBB"jj*r   c                 8     j                  t         fd        j                  t         fd        j                  r& j                  j	                   j
                         y  j                  t         j                  j                   j
                         y )Nc                  6     j                    j                  z  S r   rK  r   s   r   rL  z=TestOnlySetsInBinaryOps.test_sym_difference.<locals>.<lambda>  rM  r   c                  6     j                    j                  z  S r   rS  r   s   r   rL  z=TestOnlySetsInBinaryOps.test_sym_difference.<locals>.<lambda>  rT  r   )rG   rH   ra  rI   r   r!   r   s   `r   test_sym_differencez+TestOnlySetsInBinaryOps.test_sym_difference  sd    )%BC)%BCHH))$**5i)F)F

Sr   c                     	 | xj                   | j                  z  c_         | j                  d       y # t        $ r Y y w xY wr[  r\  r   s    r   test_difference_update_operatorz7TestOnlySetsInBinaryOps.test_difference_update_operator  r^  r_  c                     | j                   r&| j                  j                  | j                         y | j	                  t
        | j                  j                  | j                         y r   )ra  rI   rl  r!   rG   rH   r   s    r   rm  z.TestOnlySetsInBinaryOps.test_difference_update  sE    HH&&tzz2i"hh88"jj*r   c                 8     j                  t         fd        j                  t         fd        j                  r& j                  j	                   j
                         y  j                  t         j                  j                   j
                         y )Nc                  6     j                    j                  z
  S r   rK  r   s   r   rL  z9TestOnlySetsInBinaryOps.test_difference.<locals>.<lambda>  rM  r   c                  6     j                    j                  z
  S r   rS  r   s   r   rL  z9TestOnlySetsInBinaryOps.test_difference.<locals>.<lambda>  rT  r   )rG   rH   ra  rI   r   r!   r   s   `r   r   z'TestOnlySetsInBinaryOps.test_difference  sd    )%BC)%BCHH

+i)<)<djjIr   N)r
   r   r   rH  rY  r]  rZ  rn   rf  rb  r   rl  rn  rr  rt  rm  r   r   r   r   rF  rF  t  sN    7	E,FE,*L,*T,*Jr   rF  c                       e Zd Zd Zy)TestOnlySetsNumericc                 @    t        d      | _         d| _        d| _        y )Nr%     FrI   r!   ra  r   s    r   rB   zTestOnlySetsNumeric.setUp  s    ^
$r   NrZ  r   r   r   rz  rz        %r   rz  c                       e Zd Zd Zy)TestOnlySetsDictc                 F    t        d      | _         ddd| _        d| _        y )Nr%  rD   rJ  )r   r   Tr}  r   s    r   rB   zTestOnlySetsDict.setUp  s     ^QZ
#r   NrZ  r   r   r   r  r        $r   r  c                       e Zd Zd Zy)TestOnlySetsOperatorc                 \    t        d      | _         t        j                  | _        d| _        y )Nr%  F)rI   rr  r   r!   ra  r   s    r   rB   zTestOnlySetsOperator.setUp  s     ^\\
$r   NrZ  r   r   r   r  r    r~  r   r  c                       e Zd Zd Zy)TestOnlySetsTuplec                 @    t        d      | _         d| _        d| _        y )Nr%  r  Tr}  r   s    r   rB   zTestOnlySetsTuple.setUp  s    ^
#r   NrZ  r   r   r   r  r     r  r   r  c                       e Zd Zd Zy)TestOnlySetsStringc                 @    t        d      | _         d| _        d| _        y )Nr%  ra   Tr}  r   s    r   rB   zTestOnlySetsString.setUp	  s    ^
#r   NrZ  r   r   r   r  r    r  r   r  c                       e Zd Zd Zy)TestOnlySetsGeneratorc                 P    d }t        d      | _          |       | _        d| _        y )Nc               3   8   K   t        ddd      D ]  } |   y w)Nr   r   rD   )r   )rr   s    r   genz(TestOnlySetsGenerator.setUp.<locals>.gen  s"     1b!_ s   r%  Tr}  )r   r  s     r   rB   zTestOnlySetsGenerator.setUp  s%    	 ^U
#r   NrZ  r   r   r   r  r    s    $r   r  c                       e Zd Zd Zd Zy)TestCopyingc                 <   | j                   j                         }t        |t              }t        | j                   t              }| j	                  t        |      t        |             t        t        |            D ]  }| j                  ||   ||   u         y NrL  )rI   r   rL   r'   rM   rR   r   r   r   r   dup_listset_listrr   s        r   r;  zTestCopying.test_copy  sv    hhmmo#4($((-XH6s8}% 	8AOOHQK8A;67	8r   c                 D   t        j                  | j                        }t        |t              }t        | j                  t              }| j                  t        |      t        |             t        t        |            D ]  }| j                  ||   ||           y r  )r   r   rI   rL   r'   rM   rR   r   r  s        r   test_deep_copyzTestCopying.test_deep_copy%  sx    mmDHH%#4($((-XH6s8}% 	7AXa[(1+6	7r   N)r
   r   r   r;  r  r   r   r   r  r    s    87r   r  c                       e Zd Zd Zy)TestCopyingEmptyc                 "    t               | _         y r   r  r   s    r   rB   zTestCopyingEmpty.setUp1  s    5r   NrZ  r   r   r   r  r  0  s    r   r  c                       e Zd Zd Zy)TestCopyingSingletonc                 &    t        dg      | _         y )Nhellor  r   s    r   rB   zTestCopyingSingleton.setUp7  s    y>r   NrZ  r   r   r   r  r  6  s    "r   r  c                       e Zd Zd Zy)TestCopyingTriplec                 (    t        g d      | _         y )N)rk  r   Nr  r   s    r   rB   zTestCopyingTriple.setUp=  s    ()r   NrZ  r   r   r   r  r  <  s    *r   r  c                       e Zd Zd Zy)TestCopyingTuplec                 &    t        dg      | _         y )Nr   rD   r  r   s    r   rB   zTestCopyingTuple.setUpC  s    x=r   NrZ  r   r   r   r  r  B  s    !r   r  c                       e Zd Zd Zy)TestCopyingNestedc                 &    t        dg      | _         y )N)r  )r   rJ  r  r   s    r   rB   zTestCopyingNested.setUpI  s    ()*r   NrZ  r   r   r   r  r  H  s    +r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestIdentitiesc                 D    t        d      | _        t        d      | _        y )Nabracadabraalacazam)rI   rF   r{   r   s    r   rB   zTestIdentities.setUpO  s    ]#Zr   c                 |   | j                   | j                  }}| j                  ||z
  |k         | j                  ||z
  |k         | j                  ||z  |k         | j                  ||z  |k         | j                  ||z  |kD         | j                  ||z  |kD         | j                  ||z  ||z  k         y r   )rF   r{   r   r   rF   r{   s      r   test_binopsVsSubsetsz#TestIdentities.test_binopsVsSubsetsS  s    vvtvv1A	"A	"A	"A	"A	"A	"AA&r   c                     | j                   | j                  }}| j                  ||z  ||z         | j                  ||z  ||z         | j                  ||z  ||z         ||k7  r| j                  ||z
  ||z
         y y r   )rF   r{   rM   r~   r  s      r   test_commutativityz!TestIdentities.test_commutativity]  s    vvtvv11ac"1ac"1ac"6!QqS) r   c                    | j                   | j                  }}| j                  ||z
  ||z  z  ||z
  z  ||z         | j                  ||z  ||z  z  ||z         | j                  |||z
  z  ||z         | j                  ||z
  |z  ||z         | j                  ||z
  ||z  z  |       | j                  ||z
  ||z  z  |       | j                  ||z
  ||z
  z  ||z         y r   )rF   r{   rM   r  s      r   test_summationszTestIdentities.test_summationse  s    vvtvv1!A#!ac*AaC0!A#!ac*AaC!A#&!A#q!A#&!A#!a(!A#!a(!A#!ac*r   c                     | j                   | j                  t               }}}| j                  ||z
  |z  |       | j                  ||z
  |z  |       | j                  ||z  ||z  z  |       y r   )rF   r{   rI   rM   )r   rF   r{   rk  s       r   test_exclusionzTestIdentities.test_exclusionp  se    VVTVVSUd1!A#q$'!A#q$'!A#!d+r   N)r
   r   r   rB   r  r  r  r  r   r   r   r  r  N  s    !'*	+,r   r  c              #   $   K   	 | D ]  }|  y wr   r   seqnrr   s     r   Rr  y  s      s   c                       e Zd Z	 d Zd Zy)Gc                     || _         y r   r  r   r  s     r   r1   z
G.__init__  s	    	r   c                      | j                   |   S r   r  rq   s     r   __getitem__zG.__getitem__  s    yy|r   N)r
   r   r   r1   r  r   r   r   r  r  ~  s     r   r  c                        e Zd Z	 d Zd Zd Zy)Ic                      || _         d| _        y r-   r  r  s     r   r1   z
I.__init__      	r   c                     | S r   r   r   s    r   __iter__z
I.__iter__      r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S r   rr   rR   r  r   r   rO  s     r   __next__z
I.__next__  ?    66S^#=%8IIdff!r   Nr
   r   r   r1   r  r  r   r   r   r  r    s    &r   r  c                       e Zd Z	 d Zd Zy)Igc                      || _         d| _        y r-   r  r  s     r   r1   zIg.__init__  r  r   c              #   6   K   | j                   D ]  }|  y wr   r  )r   vals     r   r  zIg.__iter__  s     99 	CI	s   Nr
   r   r   r1   r  r   r   r   r  r    s    ?r   r  c                       e Zd Z	 d Zd Zy)Xc                      || _         d| _        y r-   r  r  s     r   r1   z
X.__init__  r  r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S r   r  r  s     r   r  z
X.__next__  r  r   N)r
   r   r   r1   r  r   r   r   r  r    s    &r   r  c                       e Zd Z	 d Zd Zy)Nc                      || _         d| _        y r-   r  r  s     r   r1   z
N.__init__  r  r   c                     | S r   r   r   s    r   r  z
N.__iter__  r  r   Nr  r   r   r   r  r    s    !r   r  c                        e Zd Z	 d Zd Zd Zy)Ec                      || _         d| _        y r-   r  r  s     r   r1   z
E.__init__  r  r   c                     | S r   r   r   s    r   r  z
E.__iter__  r  r   c                     ddz   y )Nr   r   r   r   s    r   r  z
E.__next__  s	    	Qr   Nr  r   r   r   r  r    s    $r   r  c                        e Zd Z	 d Zd Zd Zy)Sc                      y r   r   r  s     r   r1   z
S.__init__  s    r   c                     | S r   r   r   s    r   r  z
S.__iter__  r  r   c                     t         r   )r   r   s    r   r  z
S.__next__  s    r   Nr  r   r   r   r  r    s    r   r  )chainc                 f    	 t        t        d t        t        t	        |                               S )Nc                     | S r   r   )rm   s    r   rL  zL.<locals>.<lambda>  s    a r   )r  r   r  r  r  r  s    r   Lr    s#    &Z2ag;011r   c                       e Zd Zd Zd Zd Zy)TestVariousIteratorArgsc                    t         t        fD ]  }ddt        d      dt        ddd      fD ]  }t        t        t
        t        t        t        fD ]D  }| j                  t         | ||            t              t         ||      t                     F | j                  t        |t        |             | j                  t        |t        |             | j                  t         |t#        |               y )	N123rw   r   dog333333?    r  r  )rI   rV   r   r  r  r  r  r  r  rM   rL   r'   rG   rH   r  r  ZeroDivisionErrorr  )r   consr>   gs       r   r  z(TestVariousIteratorArgs.test_constructor  s    )$ 	BDRtk5d1;MN BQAq!, [A$$VD1JD%A6!A$TXCYZ[!!)TAaD9!!)TAaD9!!"3TAaDAB	Br   c           
         t        d      }ddt        d      dt        ddd      d	fD ]*  }|j                  |j                  |j                  |j
                  |j                  fD ]  }t        t        t        t        t        fD ]k  } ||      } | ||            }t        |t              r| j                  ||       <| j                  t        |t         
      t        |t         
             m | j#                  t$        |t'        |             | j#                  t$        |t)        |             | j#                  t*        |t-        |              - y )Nnovemberr  rw   r   r  r  r  r  decemberr  )rI   r   re   r|   r   r   r   r  r  r  r  r  
isinstanceboolrM   rL   r'   rG   rH   r  r  r  r  )r   r>   r   methr  rO   rN   s          r   test_inline_methodsz+TestVariousIteratorArgs.test_inline_methods  s   
OBd[%T!:LjY 	AD!..!,,@V@VXYXdXde 
AQAq) _A#DzH!!D']F!(D1((:((D)A6(X\C]^_ !!)T1Q48!!)T1Q48!!"3T1Q4@
A	Ar   c           
         ddt        d      dt        ddd      dfD ]N  }d	D ]E  }t        t        t        t        t
        t        fD ]  }t        d
      }|j                         } t        ||      t         ||                    t        ||       ||             | j                  t        |t              t        |t                      | j                  t        t        t        d
      |      t!        |             | j                  t        t        t        d
      |      t#        |             | j                  t$        t        t        d
      |      t'        |             H Q y )Nr  rw   r   r  r  r  r  r  )rW  r`  rl  r  januaryr  )r   r  r  r  r  r  r  rI   r   r3  ri   rM   rL   r'   rG   rH   r  r  r  r  )r   r   methnamer  r>   r   s         r   test_inplace_methodsz,TestVariousIteratorArgs.test_inplace_methods  s.   Bd[%T!:LjY 	aDQ aQAq!, OAIAA(GAx(ag7(GAx(41$$VA4%8&:MNO !!)WS^X-NPQRVPWX!!)WS^X-NPQRVPWX!!"3WS^X5VXYZ^X_`a	ar   N)r
   r   r   r  r  r  r   r   r   r  r    s    BAar   r  c                       e Zd Zd Zd Zy)bad_eqc                 J    t         rt        j                          t        | |u S r   )be_badset2r7  r  r    s     r   r"   zbad_eq.__eq__  s    JJL##u}r   c                      yr-   r   r   s    r   r   zbad_eq.__hash__  r   r   Nr
   r   r   r"   r   r   r   r   r  r    s    
r   r  c                       e Zd Zd Zd Zy)bad_dict_clearc                 >    t         rt        j                          | |u S r   )r  dict2r7  r    s     r   r"   zbad_dict_clear.__eq__  s    KKMu}r   c                      yr-   r   r   s    r   r   zbad_dict_clear.__hash__  r   r   Nr
  r   r   r   r  r    s    r   r  c                       e Zd Zd Zd Zd Zy)TestWeirdBugsc                    da t               h}t        d      D ch c]  }t                c}ada | j	                  t
        |j                  t               da t               h}t               d iada |j                  t               y c c}w )NFK   T)
r  r  r   r  rG   r  rW  r  r  r  )r   set1rr   s      r   test_8420_set_mergez!TestWeirdBugs.test_8420_set_merge  sy     z"'),Q,+T[[$? !!4(((/ -s   Bc                 (   t        t        d            }|j                          |j                  t        d             t	        |      }|j                          t        t        d            }|j                  t        d             t        |       y )Nr  )rI   r   r7  rW  r   ri   )r   r>   sirF   s       r   test_iter_and_mutatez"TestWeirdBugs.test_iter_and_mutate  s_    c
O			s!W		s	sRr   c                      G fdd      }t               t        d      D ch c]	  } |        c}dh}|j                         y c c}w )Nc                       e Zd Zd Z fdZy).TestWeirdBugs.test_merge_and_mutate.<locals>.Xc                     t        d      S r-   )r4  r   s    r   r   z7TestWeirdBugs.test_merge_and_mutate.<locals>.X.__hash__  s    Awr   c                 &    j                          y)NF)r7  )r   or!   s     r   r"   z5TestWeirdBugs.test_merge_and_mutate.<locals>.X.__eq__  s    r   Nr#   )r!   s   r   r  r    s    r   r  r   r   )rI   r   rW  )r   r  rr   r>   r!   s       @r   test_merge_and_mutatez#TestWeirdBugs.test_merge_and_mutate  sC    	 	 #Bi((C	 )s   AN)r
   r   r   r  r  r  r   r   r   r  r     s    0	r   r  c                   "    e Zd Z	 dZdZd Zd Zy)TestOperationsMutatingNc                      G fdd      d| j                  fdt        t        d            D              | j                  fdt        t        d            D              dfS )Nc                   "    e Zd Z fdZd Zy)<TestOperationsMutating.make_sets_of_bad_objects.<locals>.Badc                     syt        d      dk(  rj                          t        d      dk(  rj                          t        t        d            S )NF   r   rD   )r   r7  r  )r   r!   enabledr  r  s     r   r"   zCTestOperationsMutating.make_sets_of_bad_objects.<locals>.Bad.__eq__1  sB     R=A%JJLR=A%JJLIaL))r   c                     t        d      S rb  )r   r   s    r   r   zETestOperationsMutating.make_sets_of_bad_objects.<locals>.Bad.__hash__9  s     |#r   Nr
  )r'  r  r  s   r   Badr$  0  s    *$r   r)  Fc              3   ,   K   | ]  }          y wr   r   r   _r)  s     r   r   zBTestOperationsMutating.make_sets_of_bad_objects.<locals>.<genexpr>=        E1 Er   2   c              3   ,   K   | ]  }          y wr   r   r+  s     r   r   zBTestOperationsMutating.make_sets_of_bad_objects.<locals>.<genexpr>>  r-  r   T)constructor1r   r   constructor2)r   r)  r'  r  r  s    @@@@r   make_sets_of_bad_objectsz/TestOperationsMutating.make_sets_of_bad_objects/  sa    
	$ 
	$    Eim0D EE   Eim0D EETzr   c                     t        d      D ]  }| j                         \  }}	  |||       ! y # t        $ r%}| j                  dt	        |             Y d }~Ld }~ww xY w)Nr  zchanged size during iteration)r   r2  r   rW   rh   )r   functionr,  r  r  rF  s         r   check_set_op_does_not_crashz2TestOperationsMutating.check_set_op_does_not_crashC  sc    s 	GA668JD$Gt$	G   G=s1vFFGs   	/	AAA)r
   r   r   r0  r1  r2  r5  r   r   r   r!  r!  )  s    'LL(Gr   r!  c                   f    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y)TestBinaryOpsMutatingc                 (    | j                  d        y )Nc                     | |k(  S r   r   rF   r{   s     r   rL  z=TestBinaryOpsMutating.test_eq_with_mutation.<locals>.<lambda>P  
    a1f r   r5  r   s    r   test_eq_with_mutationz+TestBinaryOpsMutating.test_eq_with_mutationO      (()<=r   c                 (    | j                  d        y )Nc                     | |k7  S r   r   r:  s     r   rL  z=TestBinaryOpsMutating.test_ne_with_mutation.<locals>.<lambda>S  r;  r   r<  r   s    r   test_ne_with_mutationz+TestBinaryOpsMutating.test_ne_with_mutationR  r>  r   c                 (    | j                  d        y )Nc                     | |k  S r   r   r:  s     r   rL  z=TestBinaryOpsMutating.test_lt_with_mutation.<locals>.<lambda>V  
    a!e r   r<  r   s    r   test_lt_with_mutationz+TestBinaryOpsMutating.test_lt_with_mutationU      (();<r   c                 (    | j                  d        y )Nc                     | |k  S r   r   r:  s     r   rL  z=TestBinaryOpsMutating.test_le_with_mutation.<locals>.<lambda>Y  r;  r   r<  r   s    r   test_le_with_mutationz+TestBinaryOpsMutating.test_le_with_mutationX  r>  r   c                 (    | j                  d        y )Nc                     | |kD  S r   r   r:  s     r   rL  z=TestBinaryOpsMutating.test_gt_with_mutation.<locals>.<lambda>\  rD  r   r<  r   s    r   test_gt_with_mutationz+TestBinaryOpsMutating.test_gt_with_mutation[  rF  r   c                 (    | j                  d        y )Nc                     | |k\  S r   r   r:  s     r   rL  z=TestBinaryOpsMutating.test_ge_with_mutation.<locals>.<lambda>_  r;  r   r<  r   s    r   test_ge_with_mutationz+TestBinaryOpsMutating.test_ge_with_mutation^  r>  r   c                 (    | j                  d        y )Nc                     | |z  S r   r   r:  s     r   rL  z>TestBinaryOpsMutating.test_and_with_mutation.<locals>.<lambda>b  rD  r   r<  r   s    r   test_and_with_mutationz,TestBinaryOpsMutating.test_and_with_mutationa  rF  r   c                 (    | j                  d        y )Nc                     | |z  S r   r   r:  s     r   rL  z=TestBinaryOpsMutating.test_or_with_mutation.<locals>.<lambda>e  rD  r   r<  r   s    r   test_or_with_mutationz+TestBinaryOpsMutating.test_or_with_mutationd  rF  r   c                 (    | j                  d        y )Nc                     | |z
  S r   r   r:  s     r   rL  z>TestBinaryOpsMutating.test_sub_with_mutation.<locals>.<lambda>h  rD  r   r<  r   s    r   test_sub_with_mutationz,TestBinaryOpsMutating.test_sub_with_mutationg  rF  r   c                 (    | j                  d        y )Nc                     | |z  S r   r   r:  s     r   rL  z>TestBinaryOpsMutating.test_xor_with_mutation.<locals>.<lambda>k  rD  r   r<  r   s    r   test_xor_with_mutationz,TestBinaryOpsMutating.test_xor_with_mutationj  rF  r   c                 ,    d }| j                  |       y )Nc                     | |z  } y r   r   r:  s     r   r   z8TestBinaryOpsMutating.test_iadd_with_mutation.<locals>.fn      FAr   r<  r  s     r   test_iadd_with_mutationz-TestBinaryOpsMutating.test_iadd_with_mutationm      	((+r   c                 ,    d }| j                  |       y )Nc                     | |z  } y r   r   r:  s     r   r   z7TestBinaryOpsMutating.test_ior_with_mutation.<locals>.fs  r^  r   r<  r  s     r   test_ior_with_mutationz,TestBinaryOpsMutating.test_ior_with_mutationr  r`  r   c                 ,    d }| j                  |       y )Nc                     | |z  } y r   r   r:  s     r   r   z8TestBinaryOpsMutating.test_isub_with_mutation.<locals>.fx  r^  r   r<  r  s     r   test_isub_with_mutationz-TestBinaryOpsMutating.test_isub_with_mutationw  r`  r   c                 ,    d }| j                  |       y )Nc                     | |z  } y r   r   r:  s     r   r   z8TestBinaryOpsMutating.test_ixor_with_mutation.<locals>.f}  r^  r   r<  r  s     r   test_ixor_with_mutationz-TestBinaryOpsMutating.test_ixor_with_mutation|  r`  r   c                 |    d }d }d }| j                  |       | j                  |       | j                  |       y )Nc                      | D ]  } |D ]  } y r   r   rF   r{   rm   r   s       r   f1z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f1  &      r   c                      |D ]  } | D ]  } y r   r   )rF   r{   r   rm   s       r   f2z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f2  rn  r   c                 ,    t        | |      D ]  \  }} y r   )ziprl  s       r   f3z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f3  s    Aq	 1r   r<  )r   rm  rp  rs  s       r   test_iteration_with_mutationz2TestBinaryOpsMutating.test_iteration_with_mutation  s=    	
	
	 	((,((,((,r   N)r
   r   r   r=  rA  rE  rI  rL  rO  rR  rU  rX  r[  r_  rc  rf  ri  rt  r   r   r   r7  r7  M  sM    >>=>=>====,
,
,
,
-r   r7  c                       e Zd ZeZeZy)TestBinaryOpsMutating_Set_SetNr
   r   r   rI   r0  r1  r   r   r   rv  rv        LLr   rv  c                       e Zd ZeZeZy)'TestBinaryOpsMutating_Subclass_SubclassNr
   r   r   r  r0  r1  r   r   r   rz  rz        LLr   rz  c                       e Zd ZeZeZy)"TestBinaryOpsMutating_Set_SubclassNr
   r   r   rI   r0  r  r1  r   r   r   r~  r~        LLr   r~  c                       e Zd ZeZeZy)"TestBinaryOpsMutating_Subclass_SetNr
   r   r   r  r0  rI   r1  r   r   r   r  r        LLr   r  c                   N    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y)TestMethodsMutatingc                 B    | j                  t        j                         y r   )r5  rI   r   r   s    r   test_issubset_with_mutationz/TestMethodsMutating.test_issubset_with_mutation  s    ((6r   c                 B    | j                  t        j                         y r   )r5  rI   r   r   s    r   test_issuperset_with_mutationz1TestMethodsMutating.test_issuperset_with_mutation      ((8r   c                 B    | j                  t        j                         y r   )r5  rI   r|   r   s    r   test_intersection_with_mutationz3TestMethodsMutating.test_intersection_with_mutation  s    (()9)9:r   c                 B    | j                  t        j                         y r   )r5  rI   re   r   s    r   test_union_with_mutationz,TestMethodsMutating.test_union_with_mutation  s    ((3r   c                 B    | j                  t        j                         y r   )r5  rI   r   r   s    r   test_difference_with_mutationz1TestMethodsMutating.test_difference_with_mutation  r  r   c                 B    | j                  t        j                         y r   )r5  rI   r   r   s    r   'test_symmetric_difference_with_mutationz;TestMethodsMutating.test_symmetric_difference_with_mutation  s    (()A)ABr   c                 B    | j                  t        j                         y r   )r5  rI   r   r   s    r   test_isdisjoint_with_mutationz1TestMethodsMutating.test_isdisjoint_with_mutation  r  r   c                 B    | j                  t        j                         y r   )r5  rI   rl  r   s    r   $test_difference_update_with_mutationz8TestMethodsMutating.test_difference_update_with_mutation  s    (()>)>?r   c                 B    | j                  t        j                         y r   )r5  rI   r`  r   s    r   &test_intersection_update_with_mutationz:TestMethodsMutating.test_intersection_update_with_mutation  s    (()@)@Ar   c                 B    | j                  t        j                         y r   )r5  rI   r  r   s    r   .test_symmetric_difference_update_with_mutationzBTestMethodsMutating.test_symmetric_difference_update_with_mutation  s    (()H)HIr   c                 B    | j                  t        j                         y r   )r5  rI   rW  r   s    r   test_update_with_mutationz-TestMethodsMutating.test_update_with_mutation  s    ((4r   N)r
   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r    s=    79;49C9@BJ5r   r  c                       e Zd ZeZeZy)TestMethodsMutating_Set_SetNrw  r   r   r   r  r    rx  r   r  c                       e Zd ZeZeZy)%TestMethodsMutating_Subclass_SubclassNr{  r   r   r   r  r    r|  r   r  c                       e Zd ZeZeZy) TestMethodsMutating_Set_SubclassNr  r   r   r   r  r    r  r   r  c                       e Zd ZeZeZy) TestMethodsMutating_Subclass_SetNr  r   r   r   r  r    r  r   r  c                   (    e Zd ZeZej                  Zy)TestMethodsMutating_Set_DictN)r
   r   r   rI   r0  r?   r@   r1  r   r   r   r  r    s    L==Lr   r  c                       e Zd ZeZeZy)TestMethodsMutating_Set_ListN)r
   r   r   rI   r0  ri   r1  r   r   r   r  r    s    LLr   r  c              #      K   	 t        |       } 	 t        t        |       g      }t        |       D ]  }| ||z    y # t        $ r t                Y y w xY wwr   )r   rV   r   r  r   )Urm   r  s      r   r  r    s`     7QAtAwi ! 	AGa%K	  ks(   A0A  AAAAAc                     	 t        |       D cg c]  }t        |g       }}t        t        t        |             D cg c]   }|t        |D cg c]  }||z  	 c}      f" c}}      S c c}w c c}w c c}}w r   )r   rV   r?   r  )r  rm   
singletonsr>   s       r   cuber    st    +*/(3Q)QC.3J3"58,. YZ8!89: . / / 48 .s   A- A7
A2
A7
2A7
c           	         	 i }| D ]n  }| |   D ]d  }| |   D cg c]  }||k7  s	t        ||g       }}| |   D cg c]  }||k7  s	t        ||g       }}t        ||z         |t        ||g      <   f p |S c c}w c c}w r   )rV   )r  r  rm   r   r   nxnys          r   	linegraphr    s     	A 31 	3A,-aD;qAF)QqE";B;,-aD;qAF)QqE";B;"+BrE"2Ai1	33
 H <;s   
A9A9
A>A>c                    	 t               }| j                         D ]  \  }}|D ]  }| |   D ]  }||k(  r	|| |   v r|j                  t        |||g             .| |   D ]j  }||k(  r	|| |   v r|j                  t        ||||g             /| |   D ]4  }||k(  s||k(  r|| |   v s|j                  t        |||||g             6 l    |S r   )rI   itemsr   rV   )r  r   rE  edgesrG  v3v4v5s           r   facesr    s   QAWWY K	E 	KBe K82;EE)RRL12e 
K8$2;EE)RR,<"=>&'e K#%8rRx$,#%2;$%EE)RRR4H*I$J	K
KK	KK& Hr   c                       e Zd Zd Zd Zy)
TestGraphsc                    t        d      }t        |      }| j                  t        |      d       |j	                         D ]  }| j                  t        |      d        t        d |j	                         D              }| j                  ||       t        |      }| j                  t        |      d       |D ]  }| j                  t        |      d        y )Nr   r  c              3   .   K   | ]  }|D ]  }|   y wr   r   )r   r  rO  s      r   r   z'TestGraphs.test_cube.<locals>.<genexpr>$  s     Ae5AaAA   r  rJ  )r  rI   rM   rR   r  r  )r   r  	vertices1edge	vertices2	cubefacesfaces          r   	test_cubezTestGraphs.test_cube  s    GF	Y+HHJ 	+DSY*	+AqxxzAA	I.!H	Y+ 	+DSY*	+r   c                    t        d      }t        |      }| j                  t        |      d       t	        |      }|j                         D ]  }| j                  t        |      d        t	        d |j                         D              }| j                  ||       t        |      }t        j                  t              }|D ]  }|t        |      xx   dz  cc<    | j                  |d   d       | j                  |d   d       |D ]8  }	|	}
| j                  t        |
      d       |
D ]  }| j                  ||        : y )	Nr      rJ  c              3   .   K   | ]  }|D ]  }|   y wr   r   )r   r  r  s      r   r   z0TestGraphs.test_cuboctahedron.<locals>.<genexpr>9  s     WUQVWDWDWr  r   r  r  rD   )r  r  rM   rR   rI   r  r  r   defaultdictr3   rW   )r   r  cuboctahedronverticesr  othervertices	cubofaces	facesizesr  vertexr  cubeverts               r   test_cuboctahedronzTestGraphs.test_cuboctahedron,  s4    G!!]+R0}%"))+ 	,ESZ+	,Wm.B.B.DWW=1-(	++C0	 	&Dc$i A% 	&1q)1q)# 	+FDSY*  +h*+	+r   N)r
   r   r   r  r  r   r   r   r  r    s    ++r   r  __main__)lr  testr   test.supportr   r  r  rr  r   r   randomr   r   r  r   collections.abcr  	Exceptionr   r   r   r%   r3   r+   r5   TestCaser  rI   r  r  r  rV   r  r  r  r  r  r	  r,  r  rV  r\  rh  rp  rt  r~  r  r  r  r  r  r  r  r  r%  r9  r=  r?  rB  rD  rF  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!  r7  rv  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r
   mainr   r   r   <module>r     s`     ( 	     %    	y 	    
"c "{E {Ez	[3lH-- [3z	# 	!0g !0HG+L("3"3 G+R		 	6;M 6;r'3 '/x00 /
' ')%= )
 E	f) f)Th&7&7 &L(*;*; &"&h&7&7 &"x'8'8 	)x'8'8 	)	)h&7&7 	))<1B1B )Jx00 J6	H%% 	E4H%% E4RR0H%% R0lF="" F=T#3 #3L;(9(9 k8+<+< k8+<+< X%6%6 ;(9(9 pJ pJh%183D3D %$.0A0A $%2H4E4E %$/1B1B $$0(2C2C $$3X5F5F $7 7*{H$5$5 ";(9(9 "*X%6%6 *!{H$5$5 !+X%6%6 +',X&& ',V
   	 	    2'ah// 'aR  &H%% &R!G !GHD-2 D-N$98;L;L .CXEVEV )>@Q@Q )>@Q@Q 
!50 !5H"5x7H7H ,?ARAR ':H<M<M ':H<M<M !#68I8I !#68I8I 	/
4,+"" ,+b zHMMO r   