
    daf<                    
   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__     (/root/Python-3.12.4/Lib/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d Zy)ReprWrapperz*Used to test self-referential repr() callsc                 ,    t        | j                        S r   )reprvaluer   s    r   __repr__zReprWrapper.__repr__   s    DJJr   N)r
   r   r   __doc__r)   r   r   r   r%   r%      s
    0 r   r%   c                       e Zd ZdZd Zd Zy)HashCountingIntzBint-like object that counts the number of times __hash__ is calledc                     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   )r0   intr   r   s    r   r   zHashCountingInt.__hash__%   s    1||D!!r   N)r
   r   r   r*   r2   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>   setr2   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?   rB   assertEqualrH   r   r>   r   rI   )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   )rN   lenr?   rB   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=   rN   r?   rB   rH   rI   __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   rE   )r?   unionr<   r=   rN   rB   r>   r;   typebasetyperH   r   r   rI   rJ   rW   r@   rA   strlisttuple)r   urY   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?   rf   r<   rN   rJ   rW   failrI   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_    ra   bcrc   cbcfbagb)r?   intersectionr<   r=   rN   rB   r>   r;   rg   rh   rH   r   r   rJ   rW   r@   rA   ri   rj   rk   idassertNotEqual)r   rs   rY   rm   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                 8    t        |       j                  |       S )z&Pure python equivalent of isdisjoint())rJ   r}   )s1s2s     r   fz'TestJointOps.test_isdisjoint.<locals>.f{   s    2w++B///r   )
rx   rG   abrb   ababacr]   rw   r_   ra   rc   TF)r>   rJ   rW   r@   rA   ri   rj   rk   
isdisjointrN   
assertTrue)	r   r   largr   rargrm   r   rO   rP   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<   rN   rJ   rW   rq   rI   rr   s     r   test_andzTestJointOps.test_and   s    FF/#dnn"55q9)DNN";;Q?	BFFT^^# II@A  		ru   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_   rb   ra   rG   rc   r|   rY   )r?   
differencer<   r=   rN   rB   r>   r;   rg   rh   rH   r   r   rI   rJ   rW   r@   rA   ri   rj   rk   r   rs   rY   rm   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<   rN   rJ   rW   rq   rI   rr   s     r   test_subzTestJointOps.test_sub   s    FFdnn-#dnn"55q9)DNN";;Q?	BFFT^^# II@A  		ru   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`   ra   rG   rc   rd   )r?   symmetric_differencer<   r=   rN   rB   r>   r;   rg   rh   rH   r   r   rI   rJ   rW   r@   rA   ri   rj   rk   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<   rN   rJ   rW   rq   rI   rr   s     r   test_xorzTestJointOps.test_xor   s    FF''7#dnn"55q9)DNN";;Q?	BFFT^^# II@A  		ru   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)rN   r?   rJ   r;   rW   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   )maprW   r>   rN   rS   )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defrG   rb   cbs)r   r>   r   assertFalserJ   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   rn   r    != y)rangepickleHIGHEST_PROTOCOLrg   r?   rJ   rW   rn   r   dumpsloadsrN   r   hasattr)r   rs   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collectionsrb   IteratorrN   nextStopIteration)r   protoitorgdatarB   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   r2   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   r2   r   r   )r   s   r   r   r     s    #".r   r   
   r   )r>   copydeepcopyr   r~   rN   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   ).0rs   r   s     r   	<genexpr>z'TestJointOps.test_gc.<locals>.<genexpr>  s     ))     )rJ   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)r4   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>   rJ   addrX   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   rH   r   rV   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(   rJ   rN   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@   rA   r   r,   r   rN   sumr>   r   r   r  rJ   rW   )r   nrB   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   rm   r  Y  r   r   rm   r   zCycle was not collected)	objectweakrefrefrJ   r   rn   gccollectr   )r   rm   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   rC   rK   rQ   rT   rZ   ro   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r6   r6   )   s    %:935O&	B.(G	BY 	B`	B4$
5 'M*2"#	@F4&
BEr   r6   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 )NrE   r   )r>   r2   r;   rN   rJ   r<   rH   rI   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   rE   r      r   rE   r   rJ   rN   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   )rN   rS   poprg   r4   )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   rE   r   r&  )rN   )r   r2  r?   r1  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   )rH   rI   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?   clearrN   rJ   rS   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   rN   r   r~   rg   rh   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   rX   r   rN   rH   rI   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 NrG   r>  )
r?   r   assertNotInrH   KeyErrorrI   r>   rW   r;   rX   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   rq   rC  r1   rN   )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   rq   rC  r   r1   format)r   keyrG  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 rA  )	r?   r   rB  rH   rI   r>   rW   r;   rX   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   rS   r?   r+  rB  rH   rC  )r   rs   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`   )ra   rb   rc   rd   r\   )r]   r_   ra   rc   abcdaahi)r?   updater<   rN   r;   rX   rH   r   r   rI   rJ   rW   r@   rA   ri   rj   rk   r>   r   retvalrY   r   r   rm   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?   rJ   r<   r;   rX   r   rY   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]   rY   )r_   rx   )ra   ry   )rc   rx   r\   cbc)r?   intersection_updater<   rN   r;   rX   rB  rH   r   r   rI   rJ   rW   r@   rA   ri   rj   rk   r>   )	r   rZ  rY   r   r   rm   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?   rJ   r<   r;   rX   rB  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_   rb   ra   rG   )rc   rb   r\   
abcdefghihabacdefghihr]   efghih)r?   difference_updater<   rN   r;   rX   rB  rH   r   r   rI   r  rJ   rW   r@   rA   ri   rj   rk   r>   rY  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   re  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   rT  rh  rU  r\   )r?   r  r<   rN   r;   rX   rB  rH   r   r   rI   rJ   rW   r@   rA   ri   rj   rk   r>   rY  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   re  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   rN   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  proxyrN   ri   r   
gc_collectrH   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)rN   rJ   r  r   s    r   r  zTestSet.test_c_api~  s     	))+T2r   N)#r
   r   r   rJ   r>   rh   r  r#  r)  r-  r3  r6  r9  r<  r?  rD  rI  rN  rP  rR  r[  r^  rc  rf  rn  rp  rr  rt  rv  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   rE   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   )superr2   newarg)r   argr  	__class__s      r   r2   zNTestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s     %$r   r   )r
   r   r   r2   __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  )rJ   assertIsrg   rN   rH   rI   r  assertIsNoner   r  rl   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>   rJ   rh   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;   r2   r<   rN   rJ   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   rN   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   )	rN   r5  r>   r   r   rJ   r   r   rS   )r   r	  rs   seqresultss        r   r6  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   rN   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*   )rj   r   r>   reversedrN   r   r~   )r   r  key1key2rB   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>   rN   r5  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   rE   c                     t               g}t        | dz
        D ]  }t        |      }|j                  |         |d |  S r   )rW   r   r0  )r	  numsrs   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   rS   r   rW   	itertoolscombinations)r?   rs   s     r   powersetz7TestFrozenSet.test_hash_effectiveness.<locals>.powerset  sC     3q6!8_ Hy)*@*@A*FGGGHGs   AAAA   rK  )	rJ   r   r   r5  rW   rN   rS   r   assertGreater)r   r	  
hashvaluesaddhashvaluers   	elemmasksrG  mr  r  r   maskr  hrl   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   rW   r>   rh   r  r#  r6  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   rE   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   r2   zTTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s	    $r   r   )r
   r   r   r2   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  )rW   r  rg   rN   rJ   rH   rI   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>   rN   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   rx   r   )r>   rW   r   rN   rS   rJ   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>   rW   rh   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rn   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>   r6   rC   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'   rN   rJ   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'   rJ   r   
startswithendswithsplitsortvaluesrN   )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   )rN   rS   rJ   lengthr   s    r   test_lengthzTestBasicOps.test_lengthT  s    TXX4r   c                 P    | j                  | j                  | j                         y r   rN   rJ   r   s    r   test_self_equalityzTestBasicOps.test_self_equalityW      488,r   c                 P    | j                  | j                  | j                         y r   )rN   rJ   r   r   s    r   test_equivalent_equalityz%TestBasicOps.test_equivalent_equalityZ  r"  r   c                 l    | j                  | j                  j                         | j                         y r   )rN   rJ   r   r   r   s    r   r<  zTestBasicOps.test_copy]  s     $((3r   c                 n    | j                   | j                   z  }| j                  || j                         y r   rJ   rN   r   r   r  s     r   test_self_unionzTestBasicOps.test_self_union`  (    DHH$*r   c                 b    | j                   t        z  }| j                  || j                         y r   rJ   	empty_setrN   r   r(  s     r   test_empty_unionzTestBasicOps.test_empty_uniond  $    I%*r   c                 b    t         | j                  z  }| j                  || j                         y r   )r-  rJ   rN   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   rJ   r-  rN   r(  s     r   test_empty_intersectionz$TestBasicOps.test_empty_intersectionp  s     I%+r   c                 V    t         | j                  z  }| j                  |t                y r   r-  rJ   rN   r(  s     r   test_intersection_emptyz$TestBasicOps.test_intersection_emptyt       TXX%+r   c                     | j                   j                  | j                         }| j                  || j                           y r   rJ   r   rN   r(  s     r   test_self_isdisjointz!TestBasicOps.test_self_isdisjointx  s0    $$TXX.TXX.r   c                 f    | j                   j                  t              }| j                  |d       y r  )rJ   r   r-  rN   r(  s     r   test_empty_isdisjointz"TestBasicOps.test_empty_isdisjoint|  s&    $$Y/&r   c                 f    t         j                  | j                        }| j                  |d       y r  )r-  r   rJ   rN   r(  s     r   test_isdisjoint_emptyz"TestBasicOps.test_isdisjoint_empty  s&    %%dhh/&r   c                 b    | j                   | j                   z  }| j                  |t               y r   rJ   rN   r-  r(  s     r   test_self_symmetric_differencez+TestBasicOps.test_self_symmetric_difference  $    DHH$+r   c                 b    | j                   t        z  }| j                  || j                          y r   r5  r(  s     r   test_empty_symmetric_differencez,TestBasicOps.test_empty_symmetric_difference  r/  r   c                 b    | j                   | j                   z
  }| j                  |t               y r   rC  r(  s     r   test_self_differencez!TestBasicOps.test_self_difference  rE  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   r8  r(  s     r   test_empty_difference_revz&TestBasicOps.test_empty_difference_rev  r:  r   c                     | j                   D ]  }| j                  || j                           t        | j                         }| j	                  |j                         t        | j                                y r   )rJ   rX   r  r   rN   __length_hint__rS   )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   rJ   r   rN   )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  )rH   rI   rJ   r   rm  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.  r1  r3  r6  r9  r=  r?  rA  rD  rG  rI  rK  rM  rR  r   rU  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  rJ   r   r  r'   r   s    r   rC   zTestBasicOpsEmpty.setUp  s>    !	$++&$++&	r   Nr
   r   r   rC   r   r   r   rW  rW    s    r   rW  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}rY  r   s    r   rC   zTestBasicOpsSingleton.setUp  s@    )	c$++&$++&	r   c                 <    | j                  d| j                         y r   rX   rJ   r   s    r   test_inzTestBasicOpsSingleton.test_in  s    a"r   c                 <    | j                  d| j                         y NrE   rB  rJ   r   s    r   test_not_inz!TestBasicOpsSingleton.test_not_in      DHH%r   Nr
   r   r   rC   ra  re  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')}rY  r   s    r   rC   zTestBasicOpsTuple.setUp  s@    (	"m$++&$++&%	r   c                 <    | j                  d| j                         y )Nrk  r`  r   s    r   ra  zTestBasicOpsTuple.test_in  s    k488,r   c                 <    | j                  d| j                         y )N	   rd  r   s    r   re  zTestBasicOpsTuple.test_not_in  rf  r   Nrg  r   r   r   ri  ri    s    &-&r   ri  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   rl  r   )rZ  operatorr   r  rJ   r   r  r'   r   s    r   rC   zTestBasicOpsTriple.setUp  sI    "	&(,,/$++&$++&	r   Nr[  r   r   r   rq  rq    s    r   rq  c                       e Zd Zd Zd Zy)TestBasicOpsStringc                     d| _         g d| _        t        | j                        | _        t        | j                        | _        d| _        y )Nz
string setrG   r|   rY   r   rZ  r  rJ   r   r  r   s    r   rC   zTestBasicOpsString.setUp  s7    "	%$++&$++&r   c                 $    | j                          y r   r  r   s    r   r  zTestBasicOpsString.test_repr      &&(r   Nr
   r   r   rC   r  r   r   r   ru  ru        )r   ru  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   rx  r   s    r   rC   zTestBasicOpsBytes.setUp  s7    !	($++&$++&r   c                 $    | j                          y r   rz  r   s    r   r  zTestBasicOpsBytes.test_repr  r{  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)rG   r|   r  r  rK  )enterContextr   check_warningswarningssimplefilterBytesWarningrZ  r  rJ   r   r  r   s    r   rC   z"TestBasicOpsMixedStringBytes.setUp   s^    /88:;h5,	,$++&$++&r   c                 $    | j                          y r   rz  r   s    r   r  z&TestBasicOpsMixedStringBytes.test_repr	  r{  r   Nr|  r   r   r   r  r    s    )r   r  c               #      K   t         wr   )rI   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d Zy)TestExceptionPropagationz?SF 628246:  Set constructor should not trap iterator TypeErrorsc                 J    | j                  t        t        t                      y r   )rH   rI   rJ   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   rE   r   )onetwothreerb   )rJ   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&  rK  z0no exception when changing size during iteration)rJ   rX  rq   r   )r   r?   rs   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  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   )rW   rJ   r+  rN   rg   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rE   rK     rJ   r   s    r   rC   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 NrE   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rE   rK  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   rK  r  )rE   r   rK  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rE   rK  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  rK  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  rC  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  )rE   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   rC   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   rC   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  )rJ   rX  rN   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  rC  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  )rJ   ra  rN   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  )rJ   r  rN   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  rE   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  )rJ   rm  rN   r   s    r   test_difference_method_callz)TestUpdateOps.test_difference_method_call  s4    ""3y>231v;/r   N)r
   r   r   rC   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 )Nrw  )r  rJ   r   s    r   rC   zTestMutate.setUp  s    %t{{#r   c                     | j                   j                  d       | j                  | j                   t        d             y )NrY   rb   rJ   r   rN   r   s    r   test_add_presentzTestMutate.test_add_present  s*    S3u:.r   c                     | j                   j                  d       | j                  | j                   t        d             y )NrB   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   )rJ   r  r   rN   rS   )r   tmpexpected_lenrP  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)rJ   r   rN   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)NrB   z7Removing missing element should have raised LookupError)rJ   r   rq   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   )rS   rJ   r  r   rN   )r   r  rP  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 )NrY   r   rJ   r   rN   r   s    r   test_discard_presentzTestMutate.test_discard_present  s,    3t9-r   c                     | j                   j                  d       | j                  | j                   t        d             y )NrB   rb   r  r   s    r   test_discard_absentzTestMutate.test_discard_absent  s,    3u:.r   c                     | j                   j                          | j                  t        | j                         d       y r.   )rJ   r8  rN   rS   r   s    r   r9  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   )rJ   r+  rN   rS   r  rX   )r   poppedrP  s      r   rR  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   rJ   rX  rN   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 )NrF   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)rG   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   rC   r  r	  r  r  r  r  r  r  r9  rR  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(  rn   r   )
leftrightcasesevallocalsrN   r&  case2methodgetattrreverse)r   rn   r   rZ  rP   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   r3  r5  r8  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   rJ   r.  r/  r   r0  r   r   r   r:  r:  L  s    EDEEDEr   r:  c                   <    e Zd Z eddg      Z eddg      ZdZdZy)TestSubsetEqualNonEmptyr   rE   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   rE   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   rE   z&one a non-empty proper subset of otherrA  Nr<  r   r   r   rC  rC  d  s$    HDAKE4DEr   rC  c                   8    e Zd Z edg      Z edg      ZdZdZy)TestSubsetNonOverlapr   rE   zneither empty, neither containsr*  Nr<  r   r   r   rE  rE  l  s"    HDHE-DEr   rE  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   )rN   r!   rJ   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   rJ   r!   r   s   r   <lambda>z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>~      TXX

-B r   c                  6     j                    j                  k  S r   rL  r   s   r   rM  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TXX-C r   c                  6     j                    j                  kD  S r   rL  r   s   r   rM  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rN  r   c                  6     j                    j                  k\  S r   rL  r   s   r   rM  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rP  r   c                  6     j                    j                  k  S r   r!   rJ   r   s   r   rM  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TZZ$((-B r   c                  6     j                    j                  k  S r   rT  r   s   r   rM  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TZZ488-C r   c                  6     j                    j                  kD  S r   rT  r   s   r   rM  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rU  r   c                  6     j                    j                  k\  S r   rT  r   s   r   rM  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rW  r   )rH   rI   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rJ   r!   rq   rI   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   )otherIsIterablerJ   rX  r!   rH   rI   r   s    r   r[  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   rL  r   s   r   rM  z4TestOnlySetsInBinaryOps.test_union.<locals>.<lambda>  rN  r   c                  6     j                    j                  z  S r   rT  r   s   r   rM  z4TestOnlySetsInBinaryOps.test_union.<locals>.<lambda>  rU  r   )rH   rI   rb  rJ   rf   r!   r   s   `r   ro   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   )rb  rJ   ra  r!   rH   rI   r   s    r   rc  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   rL  r   s   r   rM  z;TestOnlySetsInBinaryOps.test_intersection.<locals>.<lambda>  rN  r   c                  6     j                    j                  z  S r   rT  r   s   r   rM  z;TestOnlySetsInBinaryOps.test_intersection.<locals>.<lambda>  rU  r   )rH   rI   rb  rJ   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   )rb  rJ   r  r!   rH   rI   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   rL  r   s   r   rM  z=TestOnlySetsInBinaryOps.test_sym_difference.<locals>.<lambda>  rN  r   c                  6     j                    j                  z  S r   rT  r   s   r   rM  z=TestOnlySetsInBinaryOps.test_sym_difference.<locals>.<lambda>  rU  r   )rH   rI   rb  rJ   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   )rb  rJ   rm  r!   rH   rI   r   s    r   rn  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   rL  r   s   r   rM  z9TestOnlySetsInBinaryOps.test_difference.<locals>.<lambda>  rN  r   c                  6     j                    j                  z
  S r   rT  r   s   r   rM  z9TestOnlySetsInBinaryOps.test_difference.<locals>.<lambda>  rU  r   )rH   rI   rb  rJ   r   r!   r   s   `r   r   z'TestOnlySetsInBinaryOps.test_difference  sd    )%BC)%BCHH

+i)<)<djjIr   N)r
   r   r   rI  rZ  r^  r[  ro   rg  rc  r   rm  ro  rs  ru  rn  r   r   r   r   rG  rG  t  sN    7	E,FE,*L,*T,*Jr   rG  c                       e Zd Zd Zy)TestOnlySetsNumericc                 @    t        d      | _         d| _        d| _        y )Nr&     FrJ   r!   rb  r   s    r   rC   zTestOnlySetsNumeric.setUp  s    ^
$r   Nr[  r   r   r   r{  r{        %r   r{  c                       e Zd Zd Zy)TestOnlySetsDictc                 F    t        d      | _         ddd| _        d| _        y )Nr&  rE   rK  )r   r   Tr~  r   s    r   rC   zTestOnlySetsDict.setUp  s     ^QZ
#r   Nr[  r   r   r   r  r        $r   r  c                       e Zd Zd Zy)TestOnlySetsOperatorc                 \    t        d      | _         t        j                  | _        d| _        y )Nr&  F)rJ   rs  r   r!   rb  r   s    r   rC   zTestOnlySetsOperator.setUp  s     ^\\
$r   Nr[  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   rC   zTestOnlySetsTuple.setUp  s    ^
#r   Nr[  r   r   r   r  r     r  r   r  c                       e Zd Zd Zy)TestOnlySetsStringc                 @    t        d      | _         d| _        d| _        y )Nr&  rb   Tr~  r   s    r   rC   zTestOnlySetsString.setUp	  s    ^
#r   Nr[  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   rE   )r   )rs   s    r   genz(TestOnlySetsGenerator.setUp.<locals>.gen  s"     1b!_ s   r&  Tr~  )r   r  s     r   rC   zTestOnlySetsGenerator.setUp  s%    	 ^U
#r   Nr[  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rM  )rJ   r   rM   r'   rN   rS   r   r   r   r   dup_listset_listrs   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   rJ   rM   r'   rN   rS   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   rC   zTestCopyingEmpty.setUp1  s    5r   Nr[  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   rC   zTestCopyingSingleton.setUp7  s    y>r   Nr[  r   r   r   r  r  6  s    "r   r  c                       e Zd Zd Zy)TestCopyingTriplec                 (    t        g d      | _         y )N)rl  r   Nr  r   s    r   rC   zTestCopyingTriple.setUp=  s    ()r   Nr[  r   r   r   r  r  <  s    *r   r  c                       e Zd Zd Zy)TestCopyingTuplec                 &    t        dg      | _         y )Nr   rE   r  r   s    r   rC   zTestCopyingTuple.setUpC  s    x=r   Nr[  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   rK  r  r   s    r   rC   zTestCopyingNested.setUpI  s    ()*r   Nr[  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)rJ   rG   r|   r   s    r   rC   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   )rG   r|   r   r   rG   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   )rG   r|   rN   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   )rG   r|   rN   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   )rG   r|   rJ   rN   )r   rG   r|   rl  s       r   test_exclusionzTestIdentities.test_exclusionp  se    VVTVVSUd1!A#q$'!A#q$'!A#!d+r   N)r
   r   r   rC   r  r  r  r  r   r   r   r  r  N  s    !'*	+,r   r  c              #   "   K   | D ]  }|  yw)zRegular generatorNr   seqnrs   s     r   Rr  y  s      s   c                       e Zd ZdZd Zd Zy)GzSequence using __getitem__c                     || _         y r   r  r   r  s     r   r2   z
G.__init__  s	    	r   c                      | j                   |   S r   r  rr   s     r   __getitem__zG.__getitem__  s    yy|r   N)r
   r   r   r*   r2   r  r   r   r   r  r  ~  s     r   r  c                   "    e Zd ZdZd Zd Zd Zy)Iz Sequence using iterator protocolc                      || _         d| _        y r.   r  r  s     r   r2   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   rs   rS   r  r   r   rP  s     r   __next__z
I.__next__  ?    66S^#=%8IIdff!r   Nr
   r   r   r*   r2   r  r  r   r   r   r  r    s    &r   r  c                       e Zd ZdZd Zd Zy)Igz9Sequence using iterator protocol defined with a generatorc                      || _         d| _        y r.   r  r  s     r   r2   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   r*   r2   r  r   r   r   r  r    s    ?r   r  c                       e Zd ZdZd Zd Zy)Xz Missing __getitem__ and __iter__c                      || _         d| _        y r.   r  r  s     r   r2   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   r*   r2   r  r   r   r   r  r    s    &r   r  c                       e Zd ZdZd Zd Zy)NzIterator missing __next__()c                      || _         d| _        y r.   r  r  s     r   r2   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d Zy)EzTest propagation of exceptionsc                      || _         d| _        y r.   r  r  s     r   r2   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d Zy)SzTest immediate stopc                      y r   r   r  s     r   r2   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                 d    t        t        d t        t        t	        |                               S )z Test multiple tiers of iteratorsc                     | S r   r   )rn   s    r   rM  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123rx   r   dog333333?    r  r  )rJ   rW   r   r  r  r  r  r  r  rN   rM   r'   rH   rI   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  rx   r   r  r  r  r  decemberr  )rJ   r   rf   r}   r   r   r   r  r  r  r  r  
isinstanceboolrN   rM   r'   rH   rI   r  r  r  r  )r   r?   r   methr  rP   rO   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  rx   r   r  r  r  r  r  )rX  ra  rm  r  januaryr  )r   r  r  r  r  r  r  rJ   r   r4  rj   rN   rM   r'   rH   rI   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set2r8  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  dict2r8  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	  rH   r  rX  r  r  r  )r   set1rs   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  )rJ   r   r8  rX  r   rj   )r   r?   sirG   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.   )r5  r   s    r   r   z7TestWeirdBugs.test_merge_and_mutate.<locals>.X.__hash__  s    Awr   c                 &    j                          y)NF)r8  )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   )rJ   r   rX  )r   r  rs   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d Zy)TestOperationsMutatingzRegression test for bpo-46615Nc                      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   rE   )r   r8  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 rc  )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   r3  r   rX   ri   )r   functionr-  r  r	  rG  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   r*   r1  r2  r3  r6  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   rG   r|   s     r   rM  z=TestBinaryOpsMutating.test_eq_with_mutation.<locals>.<lambda>P  
    a1f r   r6  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   rM  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   rM  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   rM  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   rM  z=TestBinaryOpsMutating.test_gt_with_mutation.<locals>.<lambda>\  rE  r   r=  r   s    r   test_gt_with_mutationz+TestBinaryOpsMutating.test_gt_with_mutation[  rG  r   c                 (    | j                  d        y )Nc                     | |k\  S r   r   r;  s     r   rM  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   rM  z>TestBinaryOpsMutating.test_and_with_mutation.<locals>.<lambda>b  rE  r   r=  r   s    r   test_and_with_mutationz,TestBinaryOpsMutating.test_and_with_mutationa  rG  r   c                 (    | j                  d        y )Nc                     | |z  S r   r   r;  s     r   rM  z=TestBinaryOpsMutating.test_or_with_mutation.<locals>.<lambda>e  rE  r   r=  r   s    r   test_or_with_mutationz+TestBinaryOpsMutating.test_or_with_mutationd  rG  r   c                 (    | j                  d        y )Nc                     | |z
  S r   r   r;  s     r   rM  z>TestBinaryOpsMutating.test_sub_with_mutation.<locals>.<lambda>h  rE  r   r=  r   s    r   test_sub_with_mutationz,TestBinaryOpsMutating.test_sub_with_mutationg  rG  r   c                 (    | j                  d        y )Nc                     | |z  S r   r   r;  s     r   rM  z>TestBinaryOpsMutating.test_xor_with_mutation.<locals>.<lambda>k  rE  r   r=  r   s    r   test_xor_with_mutationz,TestBinaryOpsMutating.test_xor_with_mutationj  rG  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  ra  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  ra  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|  ra  r   c                 |    d }d }d }| j                  |       | j                  |       | j                  |       y )Nc                      | D ]  } |D ]  } y r   r   rG   r|   rn   r   s       r   f1z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f1  &      r   c                      |D ]  } | D ]  } y r   r   )rG   r|   r   rn   s       r   f2z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f2  ro  r   c                 ,    t        | |      D ]  \  }} y r   )ziprm  s       r   f3z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f3  s    Aq	 1r   r=  )r   rn  rq  rt  s       r   test_iteration_with_mutationz2TestBinaryOpsMutating.test_iteration_with_mutation  s=    	
	
	 	((,((,((,r   N)r
   r   r   r>  rB  rF  rJ  rM  rP  rS  rV  rY  r\  r`  rd  rg  rj  ru  r   r   r   r8  r8  M  sM    >>=>=>====,
,
,
,
-r   r8  c                       e Zd ZeZeZy)TestBinaryOpsMutating_Set_SetNr
   r   r   rJ   r1  r2  r   r   r   rw  rw        LLr   rw  c                       e Zd ZeZeZy)'TestBinaryOpsMutating_Subclass_SubclassNr
   r   r   r  r1  r2  r   r   r   r{  r{        LLr   r{  c                       e Zd ZeZeZy)"TestBinaryOpsMutating_Set_SubclassNr
   r   r   rJ   r1  r  r2  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  r1  rJ   r2  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   )r6  rJ   r   r   s    r   test_issubset_with_mutationz/TestMethodsMutating.test_issubset_with_mutation  s    ((6r   c                 B    | j                  t        j                         y r   )r6  rJ   r   r   s    r   test_issuperset_with_mutationz1TestMethodsMutating.test_issuperset_with_mutation      ((8r   c                 B    | j                  t        j                         y r   )r6  rJ   r}   r   s    r   test_intersection_with_mutationz3TestMethodsMutating.test_intersection_with_mutation  s    (()9)9:r   c                 B    | j                  t        j                         y r   )r6  rJ   rf   r   s    r   test_union_with_mutationz,TestMethodsMutating.test_union_with_mutation  s    ((3r   c                 B    | j                  t        j                         y r   )r6  rJ   r   r   s    r   test_difference_with_mutationz1TestMethodsMutating.test_difference_with_mutation  r  r   c                 B    | j                  t        j                         y r   )r6  rJ   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   )r6  rJ   r   r   s    r   test_isdisjoint_with_mutationz1TestMethodsMutating.test_isdisjoint_with_mutation  r  r   c                 B    | j                  t        j                         y r   )r6  rJ   rm  r   s    r   $test_difference_update_with_mutationz8TestMethodsMutating.test_difference_update_with_mutation  s    (()>)>?r   c                 B    | j                  t        j                         y r   )r6  rJ   ra  r   s    r   &test_intersection_update_with_mutationz:TestMethodsMutating.test_intersection_update_with_mutation  s    (()@)@Ar   c                 B    | j                  t        j                         y r   )r6  rJ   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   )r6  rJ   rX  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_SetNrx  r   r   r   r  r    ry  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   rJ   r1  r@   rA   r2  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   rJ   r1  rj   r2  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)z-Generates all subsets of a set or sequence U.N)r   rW   r   r  r   )Urn   r  s      r   r  r    s]     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 )z!Graph of n-dimensional hypercube.)r   rW   r@   r  )r	  rn   
singletonsr?   s       r   cuber    sq    */(3Q)QC.3J3"58,. YZ8!89: . / / 48 .s   A,A6
A1
A6
1A6
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 )zGraph, the vertices of which are edges of G,
    with two vertices being adjacent iff the corresponding
    edges share a vertex.)rW   )r  r  rn   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   
A8A8
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 )zKReturn a set of faces in G.  Where a face is a set of vertices on that face)rJ   itemsr   rW   )r  r   rF  edgesrH  v3v4v5s           r   facesr    s    	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  rP  s      r   r   z'TestGraphs.test_cube.<locals>.<genexpr>$  s     Ae5AaAA   r  rK  )r  rJ   rN   rS   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      rK  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  rE   )r  r  rN   rS   rJ   r  r  r   defaultdictr4   rX   )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  rs  r   r   randomr   r   r  r   collections.abcr  	Exceptionr   r   r   r%   r4   r,   r6   TestCaser  rJ   r  r  r  rW   r  r  r  r  r  r
  r-  r  rW  r]  ri  rq  ru  r  r  r  r  r  r  r  r  r  r&  r:  r>  r@  rC  rE  rG  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r8  rw  r{  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   