
    <e7                    
   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 j                  Z G d de          Z G d de          Z G d dee j                  Z G d de          Z  G d de          Z! G d de          Z" G d de j                  Z# G d  d!e          Z$ G d" d#e#          Z% e            Z& G d$ d%          Z' G d& d'e'e j                  Z( G d( d)e'e j                  Z) G d* d+e'e j                  Z* G d, d-e'e j                  Z+ G d. d/e'e j                  Z, G d0 d1e'e j                  Z- G d2 d3e'e j                  Z.d4 Z/d5 Z0 G d6 d7e j                  Z1 G d8 d9e j                  Z2 G d: d;e j                  Z3 G d< d=e j                  Z4 G d> d?e j                  Z5 G d@ dA          Z6 G dB dCe6e j                  Z7 G dD dEe6e j                  Z8 G dF dGe6e j                  Z9 G dH dIe6e j                  Z: G dJ dKe6e j                  Z; G dL dM          Z< G dN dOe<e j                  Z= G dP dQe<e j                  Z> G dR dSe<e j                  Z? G dT dUe<e j                  Z@ G dV dWe<e j                  ZA G dX dYe<e j                  ZB G dZ d[          ZC G d\ d]eCe j                  ZD G d^ d_eCe j                  ZE G d` daeCe j                  ZF G db dceCe j                  ZG G dd deeCe j                  ZH G df dge j                  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 j                  ZT G d{ d|          ZU G d} d~          ZV G d de j                  ZW G d d          ZX G d deX          ZY G d deYe j                  ZZ G d deYe j                  Z[ G d deYe j                  Z\ G d deYe j                  Z] G d deX          Z^ G d de^e j                  Z_ G d de^e j                  Z` G d de^e j                  Za G d de^e j                  Zb G d de^e j                  Zc G d de^e j                  Zdd Zed Zfd Zgd Zh G d de j                  Ziejdk    r e jk                     dS dS )    N)support)warnings_helper)	randrangeshufflec                       e Zd ZdS )PassThruN__name__
__module____qualname__     $/usr/lib/python3.11/test/test_set.pyr   r              Dr   r   c               #      K   t           N)r   r   r   r   check_pass_thrur      s      
Nr   c                       e Zd Zd Zd ZdS )BadCmpc                     dS N   r   selfs    r   __hash__zBadCmp.__hash__       qr   c                     t           r   )RuntimeErrorr   others     r   __eq__zBadCmp.__eq__   s    r   Nr
   r   r   r   r!   r   r   r   r   r      s2              r   r   c                       e Zd ZdZd ZdS )ReprWrapperz*Used to test self-referential repr() callsc                 *    t          | j                  S r   )reprvaluer   s    r   __repr__zReprWrapper.__repr__   s    DJr   N)r
   r   r   __doc__r(   r   r   r   r$   r$      s)        00         r   r$   c                       e Zd ZdZd Zd ZdS )HashCountingIntzBint-like object that counts the number of times __hash__ is calledc                     d| _         d S Nr   
hash_count)r   argss     r   __init__zHashCountingInt.__init__#   s    r   c                 V    | xj         dz  c_         t                              |           S r   )r/   intr   r   s    r   r   zHashCountingInt.__hash__%   s$    1||D!!!r   N)r
   r   r   r)   r1   r   r   r   r   r+   r+   !   s8        H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dS )TestJointOpsc                     dx| _         }d| _        d| _        |                     |          | _        t
                              |          | _        d S )N
simsalabim
madagascar4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)word	otherwordlettersthetypesdictfromkeysd)r   r:   s     r   setUpzTestJointOps.setUp,   sF    ''	D%Md##t$$r   c                     |                      t          | j        g d           |                      t          t                      j        d           d S )N   r   a)assertRaises	TypeErrorr=   setr1   r   s    r   test_new_or_initzTestJointOps.test_new_or_init3   sE    )T\2q999)SUU^q99999r   c                     t          | j                  }t          | j                  }|                     ||           |                     t
          | j        t                                 |                     t          | j        g g           d S r   )	sortedr>   rA   assertEqualrG   r   r=   r   rH   )r   actualexpecteds      r   test_uniquificationz TestJointOps.test_uniquification7   st    $&>>***(DL/2C2CDDD)T\B488888r   c                 z    |                      t          | j                  t          | j                             d S r   )rM   lenr>   rA   r   s    r   test_lenzTestJointOps.test_len>   s.    TVc$&kk22222r   c                 \   | j         D ]&}|                     || j        v || j        v            '|                     t
          | j        j        g g           |                     t          | j                   g          }| 	                    |                     | j                   |           d S r   )
r<   rM   r>   rA   rG   rH   __contains__r=   	frozensetassertIn)r   cr>   s      r   test_containszTestJointOps.test_containsA   s     	7 	7AQ$&[!tv+6666)TV%82$???LL)DL11233dll4<00!44444r   c           	         | j                             | j                  }| j        D ]*}|                     ||v || j        v p|| j        v            +|                     | j         |                     | j                             |                     t          |          | j	                   | 
                    t          | j         j        t                                 | 
                    t          | j         j        g g           t          t          t           j        t$          t&          t(          fD ]}|                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d	                     |                     |                     d                               |d           |d
                    t          d                     |                                 }|                     |                    t          dg          |t          dg                    |                     ddg                     d S )Nabcbacdcabcdefgfeabcefgccbabcefabceffgr   rD   )r>   unionr;   r<   rM   rA   r=   r:   typebasetyperG   r   r   rH   rI   rV   r?   r@   strlisttuple)r   urX   Cxs        r   
test_unionzTestJointOps.test_unionH   s   FLL(( 	I 	IAQ!VQ$&[%GA4GHHHHdi!8!8999a$-000(DFL/2C2CDDD)TV\B4888iT5@ 	[ 	[AT\\'22885BBCKKPPPT\\'22887DDc(mmTTTT\\'22885BBCJJOOOT\\'22884AA3w<<PPPT\\'22884!!D''JJCPXMMZZZZ LLNNaS1c1#hh77q!f9M9MNNNNNr   c                 p   | j                             | j                  }|                     | j         t	          | j                  z  |           |                     | j         t          | j                  z  |           	 | j         | j        z   |                     d           d S # t          $ r Y d S w xY w)Nz(s|t did not screen-out general iterables)r>   re   r;   rM   rI   rV   failrH   r   is     r   test_orzTestJointOps.test_or[   s    FLL((#dn"5"55q999)DN";";;Q???	BFT^## II@AAAAA  	 	 	DD	   B' '
B54B5c           	         | j                             | j                  }| j        D ]*}|                     ||v || j        v o|| j        v            +|                     | j         |                     | j                             |                     t          |          | j	                   | 
                    t          | j         j        t                                 t          t          t          j        t"          t$          t&          fD ]}|                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d	           |d
                    t          d                     |                     d          }|                                }| j        t                      k    r2|                     t)          |          t)          |                     d S |                     t)          |          t)          |                     d S )Nr[   r\   ccr^    r`   bcrb   cbcfbagb)r>   intersectionr;   r<   rM   rA   r=   r:   rf   rg   rG   r   r   rI   rV   r?   r@   rh   ri   rj   idassertNotEqual)r   rr   rX   rl   r>   zs         r   test_intersectionzTestJointOps.test_intersectionf   s   F// 	J 	JAQ!VQ$&[%HQ$.5HIIIIdi!8!8999a$-000(DF$79J9JKKKiT5@ 	` 	`AT\\'22??%II3t99UUUT\\'22??'

KKSQSWWUUUT\\'22??%II3t99UUUT\\'22??$HH#b''RRRT\\'22??&		11U88TTVYZ]V^V^____LL!!NN<9;;&&RUUBqEE*****1r!uu-----r   c                 `   d }dD ]}|                      |          }dD ]}t          t          t          j        t
          t          t          fD ]_} ||          }|                    |          } |||          }| 	                    ||           | 
                    |du p|du            `d S )Nc                 H    t          |                               |           S )z&Pure python equivalent of isdisjoint())rI   r|   )s1s2s     r   fz'TestJointOps.test_isdisjoint.<locals>.f{   s    2ww++B////r   )
rw   rF   abra   ababacr\   rv   r^   r`   rb   TF)r=   rI   rV   r?   r@   rh   ri   rj   
isdisjointrM   
assertTrue)	r   r   largr   rargrl   r   rN   rO   s	            r   test_isdisjointzTestJointOps.test_isdisjointz   s    	0 	0 	0 V 	G 	GDd##BY G GiT5H G GA4B]]2..F qRyyH$$VX666OOFdN$EfoFFFFGG	G 	Gr   c                 p   | j                             | j                  }|                     | j         t	          | j                  z  |           |                     | j         t          | j                  z  |           	 | j         | j        z   |                     d           d S # t          $ r Y d S w xY w)Nz(s&t did not screen-out general iterables)r>   r|   r;   rM   rI   rV   rp   rH   rq   s     r   test_andzTestJointOps.test_and   s    F//#dn"5"55q999)DN";";;Q???	BFT^## II@AAAAA  	 	 	DD	rt   c           	      H   | j                             | j                  }| j        D ]*}|                     ||v || j        v o|| j        v           +|                     | j         |                     | j                             |                     t          |          | j	                   | 
                    t          | j         j        t                                 | 
                    t          | j         j        g g           t          t          t           j        t$          t&          t(          fD ]}|                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                                          t          d                     |                     |                     d                               |d           |d	                    t          d
                     d S )Nr[   r\   r   r^   ra   r`   rF   rb   r{   rX   )r>   
differencer;   r<   rM   rA   r=   r:   rf   rg   rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r   rr   rX   rl   s       r   test_differencezTestJointOps.test_difference   s   Fdn-- 	N 	NAQ!VQ$&[%LQdn5LMMMMdi!8!8999a$-000(DF$57H7HIII)TV%6===iT5@ 	Y 	YAT\\'22==aahhGGTSSST\\'22==aajjII3u::VVVT\\'22==aahhGGSRRRT\\'22==aaggFFE

SSST\\'22==??ULLLT\\'22==aaffaaffMMsSVxxXXXX	Y 	Yr   c                 p   | j                             | j                  }|                     | j         t	          | j                  z
  |           |                     | j         t          | j                  z
  |           	 | j         | j        z
   |                     d           d S # t          $ r Y d S w xY w)Nz(s-t did not screen-out general iterables)r>   r   r;   rM   rI   rV   rp   rH   rq   s     r   test_subzTestJointOps.test_sub   s    Fdn--#dn"5"55q999)DN";";;Q???	BFT^## II@AAAAA  	 	 	DD	rt   c                    | j                             | j                  }| j        D ]+}|                     ||v || j        v || j        v z             ,|                     | j         |                     | j                             |                     t          |          | j	                   | 
                    t          | j         j        t                                 | 
                    t          | j         j        g g           t          t          t           j        t$          t&          t(          fD ]K}|                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d                     |                     |                     d                               |d                    t          d	                     Md S )
Nr[   r\   abdr^   r_   r`   rF   rb   rc   )r>   symmetric_differencer;   r<   rM   rA   r=   r:   rf   rg   rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r   s       r   test_symmetric_differencez&TestJointOps.test_symmetric_difference   s   F''77 	L 	LAQ!Va46ka4>6I%JKKKKdi!8!8999a$-000(DF$?ARARSSS)TV%@2$GGGiT5@ 	` 	`AT\\'22GG%QQSVW\S]S]^^^T\\'22GG'

SSUXYaUbUbcccT\\'22GG%QQSVWZS[S[\\\T\\'22GG$PPRUV]R^R^____		` 	`r   c                 p   | j                             | j                  }|                     | j         t	          | j                  z  |           |                     | j         t          | j                  z  |           	 | j         | j        z   |                     d           d S # t          $ r Y d S w xY w)Nz(s^t did not screen-out general iterables)r>   r   r;   rM   rI   rV   rp   rH   rq   s     r   test_xorzTestJointOps.test_xor   s    F''77#dn"5"55q999)DN";";;Q???	BFT^## II@AAAAA  	 	 	DD	rt   c                    |                      | j        t          | j                             |                      | j        t	          | j                             |                      | j        | j        k    d           |                     | j        t          | j                             |                     | j        t	          | j                             |                      | j        | j        k    d           d S NFT)rM   r>   rI   r:   rV   r~   r;   r   s    r   test_equalityzTestJointOps.test_equality   s    TY00049!5!566649,e444DFC$7$7888DFIdn$=$=>>>49,d33333r   c                     t          t          g d          }|                     |          }|                     t	          |          d           d S )N)abcdefbcdbdcbfedfedccba   )maprV   r=   rM   rR   )r   tr>   s      r   test_setOfFrozensetsz!TestJointOps.test_setOfFrozensets   sI    	FFFGGLLOOQ#####r   c                    t          | j        g d          \  }}}|                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     t	          d                              d                     |                     t	          d                              d                     |                     t	          d                              d                     |                     t	          d                              d                     d S )N)r   abcdedefrF   ra   cbs)r   r=   r   assertFalserI   issubset
issuperset)r   pqrs       r   test_sub_and_superzTestJointOps.test_sub_and_super   s   dl$:$:$:;;1aAQQAQQa   Qa   C))%00111E

--c22333S**511222U..s3344444r   c                    t          t          j        dz             D ]5}t          | j                  t
          t          fvrdg| j        _        dg| j        _        t          j	        | j        |          }t          j
        |          }|                     | j        || j        d|           t          | j                  t
          t          fvr|                     | j        j        |j                   |                     | j        j        |j                   |                     t          | j        d                     | j        `| j        `7d S )Nr   rm   r    != y)rangepickleHIGHEST_PROTOCOLrf   r>   rI   rV   rm   r   dumpsloadsrM   r   hasattr)r   rr   r   dups       r   test_picklingzTestJointOps.test_pickling   s   v.233 	' 	'ADF||C#33355TVQ''A,q//CTVS*DEEEDF||C#333  35111  35111  !5!5666FHdfh	' 	'r   c                    t          t          j        dz             D ]F}t          | j                  }|                     | j                  }t          j        ||          }t          j        |          }|                     |t          j
        j                   |                     |                     |          |           t          j        |          }	 t          |          }n# t          $ r Y w xY wt          j        ||          }t          j        |          }|                     |                     |          ||                     |f          z
             Hd S r   )r   r   r   iterr>   r=   r   r   assertIsInstancecollectionsra   IteratorrM   nextStopIteration)r   protoitorgdatarA   itdrops          r   test_iterator_picklingz#TestJointOps.test_iterator_pickling   sA   62Q677 	M 	MELLE<<''DUE**AaB !!"ko&>???T\\"--t444aBBxx    R''AaBT\\"--tdllD76K6K/KLLLL%	M 	Ms   C**
C76C7c                     G fdd           d          }|                      |g          }t          j        |          }|                     t	          |          t	          |                     |D ]}|}|                     t	          |          t	          |                     |                     |j        dz   |j                   d S )Nc                   (    e Zd Zd Zd Zd fd	ZdS )*TestJointOps.test_deepcopy.<locals>.Tracerc                     || _         d S r   r'   )r   r'   s     r   r1   z3TestJointOps.test_deepcopy.<locals>.Tracer.__init__	  s    "


r   c                     | j         S r   r   r   s    r   r   z3TestJointOps.test_deepcopy.<locals>.Tracer.__hash__  s
    z!r   Nc                 *     | j         dz             S r   r   )r   memoTracers     r   __deepcopy__z7TestJointOps.test_deepcopy.<locals>.Tracer.__deepcopy__  s    vdj1n---r   r   )r
   r   r   r1   r   r   )r   s   r   r   r     sQ        # # #" " ". . . . . . . .r   r   
   r   )r=   copydeepcopyr~   r}   rM   r'   )r   r   r>   r   elemnewtr   s         @r   test_deepcopyzTestJointOps.test_deepcopy  s    	. 	. 	. 	. 	. 	. 	. 	. 	. 	. F2JJLL!mABqEE2c77+++ 	 	DDDBqEE2d88,,,1dj11111r   c                      G d d          t          fdt          d          D                       }|D ]%}||_        ||_        t          |g          |_         &d S )Nc                       e Zd ZdS )TestJointOps.test_gc.<locals>.ANr	   r   r   r   Ar             Dr   r   c              3   ,   K   | ]}             V  d S r   r   ).0rr   r   s     r   	<genexpr>z'TestJointOps.test_gc.<locals>.<genexpr>  s)      ))))))))r     )rI   r   cyclesub)r   r>   r   r   s      @r   test_gczTestJointOps.test_gc  s    	 	 	 	 	 	 	 	))))U4[[))))) 	# 	#DDJDHD6{{DHH	# 	#r   c                 0    G d d| j                   } |            }t                      }|                    |           |                     ||           |                    |           |                    |           |                    |           d S )Nc                       e Zd Zd ZdS )6TestJointOps.test_subclass_with_custom_hash.<locals>.Hc                 @    t          t          |           dz            S )Ni)r3   r}   r   s    r   r   z?TestJointOps.test_subclass_with_custom_hash.<locals>.H.__hash__%  s    2d88j0111r   N)r
   r   r   r   r   r   r   Hr   $  s#        2 2 2 2 2r   r   )r=   rI   addrW   removediscard)r   r   r>   r   s       r   test_subclass_with_custom_hashz+TestJointOps.test_subclass_with_custom_hash"  s    	2 	2 	2 	2 	2 	2 	2 	2 !##
%%	aa		a			!r   c                 L   |                      t                      g          }|                     t          | j         t                      t                      g           |                     t          |j        t                                 t          |d          r|                     t          |j        t                                 |                     t          |j        t                                 |                     t          |j        t                                 d S d S )Nr   )	r=   r   rG   r   rU   r   r   r   r   r   r>   s     r   test_badcmpzTestJointOps.test_badcmp/  s    LL&(($$,vxx6JKKK,AAA1e 	@lAE688<<<lAIvxx@@@lAHfhh?????	@ 	@r   c                 h   t                      }|                     |g          }||_        | j        t          k    r%|                     t          |          d           d S t          |                              d          d         }|                     t          |          |d|d           d S )Nz
{set(...)}(r   z({z(...)}))r$   r=   r'   rI   rM   r&   	partition)r   wr>   names       r   test_cyclical_reprzTestJointOps.test_cyclical_repr:  s    MMLL!<3T!WWl3333377$$S))!,DT!WWttt&DEEEEEr   c                    d}t                               t          t          t	          |                              }|                     t          d |D                       |           |                     |          }|                     t          d |D                       |           |                    |           |                     t          d |D                       |           t          |d          r|
                    |           |                     t          d |D                       |           t                               t          |                    }|                     t          d |D                       |           t                               t          |                    }|                     t          d |D                       |           t                               t          |          d	          }|                     t          d
 |D                       |           |                     |t                               |d	                     d S )Nr   c              3   $   K   | ]}|j         V  d S r   r.   r   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>G  $      ;;T_;;;;;;r   c              3   $   K   | ]}|j         V  d S r   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>I  r   r   c              3   $   K   | ]}|j         V  d S r   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>K  r   r   symmetric_difference_updatec              3   $   K   | ]}|j         V  d S r   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>N  r   r   c              3   $   K   | ]}|j         V  d S r   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>P  r   r   c              3   $   K   | ]}|j         V  d S r   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>R  r   r   {   c              3   $   K   | ]}|j         V  d S r   r.   r   s     r   r   z<TestJointOps.test_do_not_rehash_dict_keys.<locals>.<genexpr>T  r   r   )r?   r@   r   r+   r   rM   sumr=   r   r   r   rI   rV   )r   nrA   r>   d2d3s         r   test_do_not_rehash_dict_keysz)TestJointOps.test_do_not_rehash_dict_keysD  s   MM#ouQxx8899;;;;;;;Q???LLOO;;;;;;;Q???	Q;;;;;;;Q???1344 	-))!,,,;;;;;;;Q???]]3q66"";;;;;;;Q???]]9Q<<((;;;;;;;Q???]]9Q<<--;;;;;;;Q???T]]1c2233333r   c                     G d dt                     } |            }t          j        |          }t          |dg          }t	          |          |_        ~~t          j                     |                      |            d u d           d S )Nc                       e Zd ZdS )/TestJointOps.test_container_iterator.<locals>.CNr	   r   r   r   rl   r  Y  r   r   rl   r   zCycle was not collected)	objectweakrefrefrI   r   rm   gccollectr   )r   rl   objr  	containers        r   test_container_iteratorz$TestJointOps.test_container_iteratorW  s    	 	 	 	 	 	 	 	acck#aMM	Y

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

49C	NN+++	

4>"""C//000)QZA666)QZ33333r   c                     |                      t          d                    }|                      |          }|                     t          |          t          |                     d S Nr   r=   r   r~   r}   r   r>   r   s      r   test_constructor_identityz!TestSet.test_constructor_identitys  P    LLq""LLOOBqEE2a55)))))r   c                 \    t          g d          }h d}|                     ||           d S )Nr   rD   r      r   rD   r   rI   rM   r  s      r   test_set_literalzTestSet.test_set_literalx  s6    LLGGAr   c                     h d}|                      t          |          d           |                                }|                      t          |          t                     d S )N>   r   r   )rM   rR   poprf   r3   )r   r>   stored_values      r    test_set_literal_insertion_orderz(TestSet.test_set_literal_insertion_order}  sX    NNQ###uuwwl++S11111r   c                     g fd} |d           |d           |d          h}|                      g d           d S )Nc                 2                         |            d S r   )append)r  eventss    r   recordz9TestSet.test_set_literal_evaluation_order.<locals>.record  s    MM#r   r   rD   r   r#  )rM   )r   r/  r>   r.  s      @r   !test_set_literal_evaluation_orderz)TestSet.test_set_literal_evaluation_order  se    	 	 	 	 	VAYYq		66!99-+++++r   c                 R    |                      t          t          | j                   d S r   )rG   rH   hashr>   r   s    r   	test_hashzTestSet.test_hash  s"    )T4622222r   c                     | j                                          |                     | j         t                                 |                     t	          | j                   d           d S r-   )r>   clearrM   rI   rR   r   s    r   
test_clearzTestSet.test_clear  sQ    '''TVa(((((r   c                 (   | j                                         }|                     | j         |           |                     t	          | j                   t	          |                     |                     t          |          | j                   d S r   )r>   r   rM   r~   r}   rf   rg   r   r   s     r   	test_copyzTestSet.test_copy  sq    fkkmm%%%BtvJJ3000cDM22222r   c                 X   | j                             d           |                     d| j                    | j                                         }| j                             d           |                     | j         |           |                     t          | j         j        g            d S )NQ)r>   r   rW   r   rM   rG   rH   r8  s     r   test_addzTestSet.test_add  s    

3c46"""fkkmm

3%%%)TVZ44444r   c                    | j                             d           |                     d| j                    |                     t          | j         j        d           |                     t
          | j         j        g            |                     t          | j                  g          }| 	                    |                     | j                  |           |                    |                     | j                             |                     |                     | j                  |           |                     t          | j         j        |                     | j                             d S NrF   r;  )
r>   r   assertNotInrG   KeyErrorrH   r=   rV   r:   rW   r   s     r   test_removezTestSet.test_remove  s   cdf%%%(DFM3777)TV]B777LL)DI../00dll49--q111	di(()))di00!444(DFM4<<	3J3JKKKKKr   c                     dD ]k}	 | j                             |           |                                  2# t          $ r-}|j        d         }|                     ||           Y d }~dd }~ww xY wd S )N)r;  r   r   )r>   r   rp   r@  r0   rM   )r   v1ev2s       r   test_remove_keyerror_unpackingz&TestSet.test_remove_keyerror_unpacking  s     	 	Bb!!!
 			  ) ) )VAY  R(((((((()	 	s   5
A,#A''A,c           	      F   |                      ddg          }	 | j                            |           |                                  d S # t          $ rM}|                     |j        d         |u d                    ||j        d                              Y d }~d S d }~ww xY w)Nr      r   zKeyError should be {0}, not {1})r=   r>   r   rp   r@  r   r0   format)r   keyrE  s      r   test_remove_keyerror_setz TestSet.test_remove_keyerror_set  s    llAq6""	FMM# IIKKKKK  	N 	N 	NOOAF1I,:AA#BC&)M MN N N N N N N N N	Ns   A	 	
B ABB c                    | j                             d           |                     d| j                    | j                             d           |                     t          | j         j        g            |                     t          | j                  g          }|                     |                     | j                  |           |                    |                     | j                             |                     |                     | j                  |           |                    |                     | j                             d S r>  )	r>   r   r?  rG   rH   r=   rV   r:   rW   r   s     r   test_discardzTestSet.test_discard  s   sdf%%%s)TV^R888LL)DI../00dll49--q111			$,,ty))***di00!444			$,,ty))*****r   c                     t          t          | j                            D ]6}| j                                        }|                     || j                   7|                     t          | j        j                   d S r   )r   rR   r>   r(  r?  rG   r@  )r   rr   r   s      r   test_popzTestSet.test_pop  sk    s46{{## 	+ 	+A6::<<DT46****(DFJ/////r   c           
      N   | j                             | j                  }|                     |d            | j        | j        z   D ]}|                     || j                    |                     t          | j         j        t                                 |                     t          | j         j        g g           dD ]\  }}t          t          t          j        t          t          t           fD ]l}|                     d          }|                     |                     ||                    d            |                     |t          |                     mdD ]}d}t          t          t          j        t          t          t           fD ]}|                     d          }|                     |                     ||           ||                    d            |                     |t          |          t          |          z  t          |          z             d S )N))r\   r]   r^   r_   )r`   ra   rb   rc   r[   )r\   r^   r`   rb   abcdaahi)r>   updater;   rM   r:   rW   rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r=   r   retvalrX   r   r   rl   r>   s          r   test_updatezTestSet.test_update  s   t~..&&&)dn, 	% 	%AMM!TV$$$$(DFM?3D3DEEE)TV]RD999[ 	, 	,DAq)T]CuD , ,LL))  !!A$$666  CFF++++, 8 	> 	>AA)T]CuD > >LL))  !!A$$!!5!5t<<<  CFFSVVOc!ff$<====>	> 	>r   c                     | xj         t          | j                  z  c_         | j        | j        z   D ]}|                     || j                    d S r   )r>   rI   r;   r:   rW   r   rX   s     r   test_iorzTestSet.test_ior  sW    #dn%%%)dn, 	% 	%AMM!TV$$$$	% 	%r   c           
      P   | j                             | j                  }|                     |d            | j        | j        z   D ]K}|| j        v r%|| j        v r|                     || j                    0|                     || j                    L|                     t          | j         j        t                                 |                     t          | j         j        g g           dD ]8\  }}t          t          t          j        t          t           t"          fD ]}|                     d          }|                     |                     ||                    d            |                     |t          |                     d}|                     |          }d}|                     |                     ||           ||                    d            |                     |t          d          t          |          z  t          |          z             :d S )N))r\   rX   )r^   rw   )r`   rx   )rb   rw   r[   cbc)r>   intersection_updater;   rM   r:   rW   r?  rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r=   )	r   rX  rX   r   r   rl   r>   ssr   s	            r   test_intersection_updatez TestSet.test_intersection_update  s   ++DN;;&&&)dn, 	, 	,ADN""qDI~~a((((  DF++++(DF$>@Q@QRRR)TV%?"FFFL 		@ 		@DAq)T]CuD @ @LL))  !6!6qqtt!<!<dCCC  CFF+++LL$$  !6!6qqttQQqTT!B!BDIII  CLLQ$7A$>????@		@ 		@r   c                     | xj         t          | j                  z  c_         | j        | j        z   D ]K}|| j        v r%|| j        v r|                     || j                    0|                     || j                    Ld S r   r>   rI   r;   r:   rW   r?  r[  s     r   	test_iandzTestSet.test_iand  s    #dn%%%)dn, 	, 	,ADN""qDI~~a((((  DF++++		, 	,r   c           	         | j                             | j                  }|                     |d            | j        | j        z   D ]K}|| j        v r%|| j        vr|                     || j                    0|                     || j                    L|                     t          | j         j        t                                 |                     t          | j         j        g g           |                     t          | j         j        g g           dD ]\  }}t          t          t          j        t           t"          t$          fD ]}|                     d          }|                     |                     ||                    d            |                     |t          |                     |                     d          }|                                 |                     ||                     d                     |                     d          }|                     |d                     |                     ||                     d                     |                     d          }|                     |d           |d                     |                     ||                     d                     d S )N))r\   r   )r^   ra   r`   rF   )rb   ra   r[   
abcdefghihabacdefghihr\   efghih)r>   difference_updater;   rM   r:   rW   r?  rG   r   r   rH   r   rI   rV   r?   r@   rh   ri   rj   r=   rW  s          r   test_difference_updatezTestSet.test_difference_update	  s|   ))$.99&&&)dn, 	, 	,ADI~~!4>"9"9a((((  DF++++(DF$<o>O>OPPP)TV%=tDDD)TV%G"NNNR 	< 	<DAq)T]CuD < <LL))  !4!4QQqTT!:!:DAAA  CFF+++LL..##%%%  DLL$>$>???LL..##AAeHH---  DLL$<$<===LL..##AAeHHaahh777  DLL$:$:;;;;<	< 	<r   c                     | xj         t          | j                  z  c_         | j        | j        z   D ]K}|| j        v r%|| j        vr|                     || j                    0|                     || j                    Ld S r   rc  r[  s     r   	test_isubzTestSet.test_isub&  s    #dn%%%)dn, 	, 	,ADI~~!4>"9"9a((((  DF++++		, 	,r   c           	         | j                             | j                  }|                     |d            | j        | j        z   D ]L}|| j        v || j        v z  r|                     || j                    1|                     || j                    M|                     t          | j         j        t                                 |                     t          | j         j        g g           dD ]\  }}t          t          t          j        t          t           t"          fD ]l}|                     d          }|                     |                     ||                    d            |                     |t          |                     md S )N))r\   r   rR  rf  rS  r[   )r>   r   r;   rM   r:   rW   r?  rG   r   r   rH   rI   rV   r?   r@   rh   ri   rj   r=   rW  s          r    test_symmetric_difference_updatez(TestSet.test_symmetric_difference_update.  ss   33DNCC&&&)dn, 	, 	,ATY1#67 ,a((((  DF++++(DF$FHYHYZZZ)TV%G"NNNX 	, 	,DAq)T]CuD , ,LL))  !>!>qqtt!D!DdKKK  CFF++++,	, 	,r   c                    | xj         t          | j                  z  c_         | j        | j        z   D ]L}|| j        v || j        v z  r|                     || j                    1|                     || j                    Md S r   rc  r[  s     r   	test_ixorzTestSet.test_ixor>  s    #dn%%%)dn, 	, 	,ATY1#67 ,a((((  DF++++		, 	,r   c                    | j                                         }||z  }|                     || j                    ||z  }|                     || j                    ||z  }|                     ||                                            | j                                         }||z  }|                     ||                                            d S r   )r>   r   rM   r=   )r   r   s     r   test_inplace_on_selfzTestSet.test_inplace_on_selfF  s    FKKMM	QDF###	QDF###	QDLLNN+++FKKMM	QDLLNN+++++r   c                 $   |                      d          }t          j        |          }|                     t	          |          t	          |                     d }t          j                     |                     t          t          |           d S )Ngallahad)	r=   r  proxyrM   rh   r   
gc_collectrG   ReferenceError)r   r>   r   s      r   test_weakrefzTestSet.test_weakrefR  sv    LL$$M!QQ(((.#q11111r   c                 x    G d d          }h d} |            }||k      |                      |j                    |            }||k     |                      |j                    |            }||k     |                      |j                    |            }||k     |                      |j                   d S )Nc                   &    e Zd Zd Zd Zd Zd ZdS )5TestSet.test_rich_compare.<locals>.TestRichSetComparec                     d| _         dS NTF)	gt_calledr   some_sets     r   __gt__z<TestSet.test_rich_compare.<locals>.TestRichSetCompare.__gt__\      !%ur   c                     d| _         dS r  )	lt_calledr  s     r   __lt__z<TestSet.test_rich_compare.<locals>.TestRichSetCompare.__lt___  r  r   c                     d| _         dS r  )	ge_calledr  s     r   __ge__z<TestSet.test_rich_compare.<locals>.TestRichSetCompare.__ge__b  r  r   c                     d| _         dS 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}  [  sP                  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                 n    |                      t                                                      d           d S NT)rM   rI   r  r   s    r   r  zTestSet.test_c_api~  s0     	))++T22222r   N)#r
   r   r   rI   r=   rg   r  r   r&  r*  r0  r3  r6  r9  r<  rA  rG  rL  rN  rP  rY  r\  ra  rd  rl  rn  rp  rr  rt  rz  r  unittest
skipUnlessr   r  r   r   r   r  r  f  s       GH4 4 4* * *
  
2 2 2, , ,3 3 3) ) )
3 3 35 5 5	L 	L 	L	 	 		 	 		+ 	+ 	+0 0 0> > >&% % %
@ @ @*, , ,< < <:, , ,, , , , , ,
, 
, 
,2 2 2") ") ")H Xl33EG G3 3G G3 3 3r   r  c                       e Zd ZdS )SetSubclassNr	   r   r   r   r  r    r   r   r  c                       e Zd ZeZeZd ZdS )TestSetSubclassc                     G d dt                     } |ddg          }|                     t          |          |           |                     t          |          ddh           |                     t
                    5   |d           d d d            n# 1 swxY w Y    G d dt                     } |ddgd	
          }|                     t          |          |           |                     t          |          ddh           |                     |j        d	            G d dt                     } |ddg          }|                     t          |          |           |                     t          |          ddh           |                     |j                   |                     t
                    5   |ddgd	
           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS );TestSetSubclass.test_keywords_in_subclass.<locals>.subclassNr	   r   r   r   subclassr    r   r   r  r   rD   r   sequencec                         e Zd Zd fd	Z xZS )ETestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_initNc                 X    t                                          |           || _        d S r   )superr1   newarg)r   argr  	__class__s      r   r1   zNTestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s&      %%%$r   r   )r
   r   r   r1   __classcell__r  s   @r   subclass_with_initr    s=        % % % % % % % % % %r   r  r   r  c                         e Zd Zd fd	Z xZS )DTestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_newNc                 Z    t                                          | |          }||_        |S r   r  __new__r  clsr  r  r   r  s       r   r  zLTestSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_new.__new__  &    wwsC00$r   r   r
   r   r   r  r  r  s   @r   subclass_with_newr    =                 r   r  )rI   assertIsrf   rM   rG   rH   r  assertIsNoner   r  rk   r  r  s        r   test_keywords_in_subclassz)TestSetSubclass.test_keywords_in_subclass  s   	 	 	 	 	s 	 	 	HaVd1ggx(((Q!Q(((y)) 	" 	"Hb!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	% 	% 	% 	% 	% 	% 	% 	% 1va000d1gg1222Q!Q(((1%%%	 	 	 	 	 	 	 	
 q!f%%d1gg0111Q!Q(((!(###y)) 	0 	0q!fQ////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s$   BB #B G%%G),G)N)r
   r   r   r  r=   rI   rg   r  r   r   r   r  r    s-        GH0 0 0 0 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dS )	TestFrozenSetc                     |                      | j                  }|                    | j                   |                     |t          | j                             d S r   )r=   r:   r1   r;   rM   rI   r   s     r   r  zTestFrozenSet.test_init  sM    LL##	

4>"""C	NN+++++r   c                     |                      t          d                    }|                      |          }|                     t          |          t          |                     d S r  )r=   r   rM   r}   r  s      r   r   z'TestFrozenSet.test_constructor_identity  sP    LLq""LLOOA1&&&&&r   c                    |                      t          |                     d                    t          |                     d                               dfdt                    D             }t	                      }t          d          D ]F}t          |           |                    t          |                     |                               G|                      t          |          d           d S )Nabcdebebecdad   c                 .    g | ]}t                    S r   r   )r   rr   r  s     r   
<listcomp>z+TestFrozenSet.test_hash.<locals>.<listcomp>  s    ...y||...r      r   )rM   r2  r=   r   rI   r   r   rR   )r   seqresultsrr   r  s       @r   r3  zTestFrozenSet.test_hash  s    dll84455dll84455	7 	7 	7 ....U1XX...%%s 	1 	1ACLLLKKT\\#..//0000Wq)))))r   c                     | j                                         }|                     t          | j                   t          |                     d S r   )r>   r   rM   r}   r8  s     r   r9  zTestFrozenSet.test_copy  s;    fkkmmDFRWW-----r   c                    t          t          d                    t          d          z   dgz   }|                     |          }|                     t          |                    }|                     ||           |                     t          |          t          |                     i }d||<   |                     ||         d           d S )Nr   abcdefgapple*   )ri   r   r=   reversedrM   r~   r}   )r   r  key1key2rA   s        r   test_frozen_as_dictkeyz$TestFrozenSet.test_frozen_as_dictkey  s    599ooY/7);||C  ||HSMM**t$$$BtHHbhh///$4"%%%%%r   c                     |                      d          }|                     t          |          t          |                     d S )Nabcdcda)r=   rM   r2  r   r   s     r   test_hash_cachingzTestFrozenSet.test_hash_caching  s;    LL##a$q''*****r   c                 P  
 d}t                      }|j        }d t          |          D             }t          d|z            D ]3
 |t          t	          
fd|D                                            4|                     t          |          d|z             d }d }t          d          D ]q}d|z  }|dz
  t          |fD ][}t          fd	t          t           | ||                              D                       }	|                     d
|	z  |           \rd S )N   c                 "    g | ]}|d z   d |z  fS rC  r   r   rr   s     r   r  z9TestFrozenSet.test_hash_effectiveness.<locals>.<listcomp>  s$    333Qac1a4[333r   rD   c                 $    g | ]\  }}|z  
|S r   r   )r   rE  mrr   s      r   r  z9TestFrozenSet.test_hash_effectiveness.<locals>.<listcomp>  s&    (H(H(Htq!AaC(H(H(H(Hr   c                     t                      g}t          | dz
            D ]&}t          |          }|                    |           '|d |          S r   )rV   r   r-  )r  numsrr   nums       r   zf_rangez7TestFrozenSet.test_hash_effectiveness.<locals>.zf_range  sS    KK=D1Q3ZZ ! !ooC    8Or   c              3      K   t          t          |           dz             D ]0}t          t          t	          j        | |                    E d {V  1d S r   )r   rR   r   rV   	itertoolscombinations)r>   rr   s     r   powersetz7TestFrozenSet.test_hash_effectiveness.<locals>.powerset  se      3q66!8__ H Hy)*@A*F*FGGGGGGGGGGH Hr      r   c                     h | ]}|z  S r   r   )r   hmasks     r   	<setcomp>z8TestFrozenSet.test_hash_effectiveness.<locals>.<setcomp>  s    HHHaTHHHr   rI  )	rI   r   r   r2  rV   rM   rR   r   assertGreater)r   r  
hashvaluesaddhashvalue	elemmasksr  r  r   r  rk   rr   r  s             @@r   test_hash_effectivenessz%TestFrozenSet.test_hash_effectiveness  sm   UU
!~33%((333	q!t 	L 	LALi(H(H(H(Hy(H(H(HIIJJKKKKZ!Q$///	 	 		H 	H 	H r 	+ 	+AQAq5D) + +HHHH3tXXdd1gg5F5F+G+GHHHII""1Q3****+	+ 	+r   N)r
   r   r   rV   r=   rg   r  r   r3  r9  r  r  r  r   r   r   r  r    s        GH, , ,
' ' '
* * *. . .& & &+ + ++ + + + +r   r  c                       e Zd ZdS )FrozenSetSubclassNr	   r   r   r   r  r    r   r   r  c                   4    e Zd ZeZeZd Zd Zd Z	d Z
d ZdS )TestFrozenSetSubclassc                 f    G d dt                     } |ddg          }|                     t          |          |           |                     t	          |          ddh           |                     t                    5   |d           d d d            n# 1 swxY w Y    G d dt                     } |ddgd	
          }|                     t          |          |           |                     t	          |          ddh           |                     |j        d	            G d dt                     } |ddgd	
          }|                     t          |          |           |                     t	          |          ddh           |                     |j        d	           d S )Nc                       e Zd ZdS )ATestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclassNr	   r   r   r   r  r    r   r   r  r   rD   r   r  c                       e Zd ZddZdS )KTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_initNc                     || _         d S r   r  )r   r  r  s      r   r1   zTTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s    $r   r   )r
   r   r   r1   r   r   r   r  r    s(        % % % % % %r   r  r   r  c                         e Zd Zd fd	Z xZS )JTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_newNc                 Z    t                                          | |          }||_        |S r   r  r  s       r   r  zRTestFrozenSetSubclass.test_keywords_in_subclass.<locals>.subclass_with_new.__new__  r  r   r   r  r  s   @r   r  r    r  r   r  )rV   r  rf   rM   rI   rG   rH   r  r  s        r   r  z/TestFrozenSetSubclass.test_keywords_in_subclass  s+   	 	 	 	 	y 	 	 	HaVd1ggx(((Q!Q(((y)) 	" 	"Hb!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	% 	% 	% 	% 	% 	% 	% 	% 1va000d1gg1222Q!Q(((1%%%	 	 	 	 		 	 	 	
 q!fQ///d1gg0111Q!Q(((1%%%%%s   BB #B c                     |                      t          d                    }|                      |          }|                     t          |          t          |                     d S r  r  r  s      r   r   z/TestFrozenSetSubclass.test_constructor_identity  r!  r   c                     | j                                         }|                     t          | j                   t          |                     d S r   )r>   r   r~   r}   r8  s     r   r9  zTestFrozenSetSubclass.test_copy  s;    fkkmmBtvJJ300000r   c                     |                                  }|                      |          }|                     ||           d S r   )r=   rM   r  s      r   test_nested_empty_constructorz3TestFrozenSetSubclass.test_nested_empty_constructor  s:    LLNNLLOOAr   c                 .   | j         }t                      } |            } |             |g            |d           |d           |             |g            |d           |d           |t          d                     | |                       |t                                || ||           ||          g}|                     t	          t          t          t          |                              t	          |                     d S )Nr   rw   r   )r=   rV   r   rM   rR   rI   r   r}   )r   	Frozensetr   Fefss        r   test_singleton_empty_frozensetz4TestFrozenSetSubclass.test_singleton_empty_frozenset#  s    L	KKIKKy{{IIbMM99R==))B--y{{IIbMM99R==))B--yq""IIiikk$:$:y%%q!YYq\\99Q<<I
 	SR..//S:::::r   N)r
   r   r   r  r=   rV   rg   r  r   r9  r  r  r   r   r   r  r    si        GH& & &6* * *
1 1 1  
	; 	; 	; 	; 	;r   r  c                       e Zd ZdZdS )SetSubclassWithSlotsrm   r   __dict__Nr
   r   r   	__slots__r   r   r   r  r  /          &IIIr   r  c                   .    e Zd ZeZej        Zej        ZdS )TestSetSubclassWithSlotsN)r
   r   r   r  r=   r5   rB   r   r   r   r   r  r  2  s#        "GE .MMMr   r  c                       e Zd ZdZdS )FrozenSetSubclassWithSlotsr  Nr  r   r   r   r  r  7  r
  r   r  c                       e Zd ZeZdS )TestFrozenSetSubclassWithSlotsN)r
   r   r   r  r=   r   r   r   r  r  :  s        (GGGr   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S )TestBasicOpsc                 r    | j         /|                     t          | j                  | j                    d S d S r   )r&   rM   rI   r   s    r   	test_reprzTestBasicOps.test_reprE  s8    9 T$(^^TY77777 ! r   c                    t          | j                  }|                     |                    d                     |                     |                    d                     |dd                             d          }|                                 d | j        D             }|                                 |                     ||           d S )N{}r   z, c                 ,    g | ]}t          |          S r   )r&   )r   r'   s     r   r  z:TestBasicOps.check_repr_against_values.<locals>.<listcomp>P  s    CCCed5kkCCCr   )	r&   rI   r   
startswithendswithsplitsortvaluesrM   )r   textresultsorted_repr_valuess       r   check_repr_against_valuesz&TestBasicOps.check_repr_against_valuesI  s    DH~~,,---c**+++ad!!$''CCt{CCC!!!!344444r   c                 `    |                      t          | j                  | j                   d S r   )rM   rR   rI   lengthr   s    r   test_lengthzTestBasicOps.test_lengthT  s(    TX44444r   c                 F    |                      | j        | j                   d S r   rM   rI   r   s    r   test_self_equalityzTestBasicOps.test_self_equalityW  "    48,,,,,r   c                 F    |                      | j        | j                   d S r   )rM   rI   r   r   s    r   test_equivalent_equalityz%TestBasicOps.test_equivalent_equalityZ  r)  r   c                 j    |                      | j                                        | j                   d S r   )rM   rI   r   r   r   s    r   r9  zTestBasicOps.test_copy]  s*    $(33333r   c                 Z    | j         | j         z  }|                     || j                   d S r   rI   rM   r   r   r   s     r   test_self_unionzTestBasicOps.test_self_union`  .    DH$*****r   c                 Z    | j         t          z  }|                     || j                   d S r   rI   	empty_setrM   r   r/  s     r   test_empty_unionzTestBasicOps.test_empty_uniond  ,    I%*****r   c                 Z    t           | j        z  }|                     || j                   d S r   )r4  rI   rM   r   r/  s     r   test_union_emptyzTestBasicOps.test_union_emptyh  s,    TX%*****r   c                 Z    | j         | j         z  }|                     || j                   d S r   r.  r/  s     r   test_self_intersectionz#TestBasicOps.test_self_intersectionl  r1  r   c                 Z    | j         t          z  }|                     |t                     d S r   rI   r4  rM   r/  s     r   test_empty_intersectionz$TestBasicOps.test_empty_intersectionp  s*    I%+++++r   c                 Z    t           | j        z  }|                     |t                      d S r   r4  rI   rM   r/  s     r   test_intersection_emptyz$TestBasicOps.test_intersection_emptyt  *    TX%+++++r   c                 |    | j                             | j                   }|                     || j                     d S r   rI   r   rM   r/  s     r   test_self_isdisjointz!TestBasicOps.test_self_isdisjointx  s9    $$TX..TX.....r   c                 p    | j                             t                    }|                     |d           d S r  )rI   r   r4  rM   r/  s     r   test_empty_isdisjointz"TestBasicOps.test_empty_isdisjoint|  s3    $$Y//&&&&&r   c                 p    t                               | j                  }|                     |d           d S r  )r4  r   rI   rM   r/  s     r   test_isdisjoint_emptyz"TestBasicOps.test_isdisjoint_empty  s3    %%dh//&&&&&r   c                 Z    | j         | j         z  }|                     |t                     d S r   rI   rM   r4  r/  s     r   test_self_symmetric_differencez+TestBasicOps.test_self_symmetric_difference  ,    DH$+++++r   c                 Z    | j         t          z  }|                     || j                    d S r   r<  r/  s     r   test_empty_symmetric_differencez,TestBasicOps.test_empty_symmetric_difference  r6  r   c                 Z    | j         | j         z
  }|                     |t                     d S r   rJ  r/  s     r   test_self_differencez!TestBasicOps.test_self_difference  rL  r   c                 Z    | j         t          z
  }|                     || j                   d S r   r3  r/  s     r   test_empty_differencez"TestBasicOps.test_empty_difference  r6  r   c                 Z    t           | j        z
  }|                     |t                      d S r   r?  r/  s     r   test_empty_difference_revz&TestBasicOps.test_empty_difference_rev  rA  r   c                     | j         D ]}|                     || j                   t          | j                   }|                     |                                t          | j                              d S r   )rI   rW   r  r   rM   __length_hint__rR   )r   vsetiters      r   test_iterationzTestBasicOps.test_iteration  si     	* 	*AMM!T[))))tx..0022CMMBBBBBr   c                     t          t          j        dz             D ]V}t          j        | j        |          }t          j        |          }|                     | j        || j        d|           Wd S )Nr   r   )r   r   r   r   rI   r   rM   )r   r   r   r   s       r   r   zTestBasicOps.test_pickling  s~    62Q677 	< 	<ETXu--A<??DTXt+/888TT:< < < <	< 	<r   c                 T   |                      t                    5  t                                          d           d d d            n# 1 swxY w Y   |                      t                    5  t                                          d           d d d            d S # 1 swxY w Y   d S )Nr  )rG   rH   rI   r   rk  r   s    r   test_issue_37219zTestBasicOps.test_issue_37219  s   y)) 	" 	"EES!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	) 	)EE##C(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s#   "A		AA."BB!$B!N)r
   r   r   r  r"  r%  r(  r+  r9  r0  r5  r8  r:  r=  r@  rD  rF  rH  rK  rN  rP  rR  rT  rY  r   r\  r   r   r   r  r  C  sp       8 8 8	5 	5 	55 5 5- - -- - -4 4 4+ + ++ + ++ + ++ + +, , ,, , ,/ / /' ' '' ' ', , ,+ + +, , ,+ + +, , ,C C C< < <) ) ) ) )r   r  c                       e Zd Zd ZdS )TestBasicOpsEmptyc                     d| _         g | _        t          | j                  | _        t          | j                  | _        d| _        d| _        d S )Nz	empty setr   zset()caser  rI   r   r$  r&   r   s    r   rB   zTestBasicOpsEmpty.setUp  sD    !	$+&&$+&&			r   Nr
   r   r   rB   r   r   r   r^  r^    s#            r   r^  c                        e Zd Zd Zd Zd ZdS )TestBasicOpsSingletonc                     d| _         dg| _        t          | j                  | _        t          | j                  | _        d| _        d| _        d S )Nzunit set (number)r   r   z{3}r`  r   s    r   rB   zTestBasicOpsSingleton.setUp  sF    )	c$+&&$+&&			r   c                 <    |                      d| j                   d S r  rW   rI   r   s    r   test_inzTestBasicOpsSingleton.test_in  s    a"""""r   c                 <    |                      d| j                   d S NrD   r?  rI   r   s    r   test_not_inz!TestBasicOpsSingleton.test_not_in       DH%%%%%r   Nr
   r   r   rB   rh  rl  r   r   r   rd  rd    sA          # # #& & & & &r   rd  c                        e Zd Zd Zd Zd ZdS )TestBasicOpsTuplec                     d| _         dg| _        t          | j                  | _        t          | j                  | _        d| _        d| _        d S )Nzunit set (tuple)r   zeror   z{(0, 'zero')}r`  r   s    r   rB   zTestBasicOpsTuple.setUp  sF    (	"m$+&&$+&&%			r   c                 <    |                      d| j                   d S )Nrr  rg  r   s    r   rh  zTestBasicOpsTuple.test_in  s    k48,,,,,r   c                 <    |                      d| j                   d S )N	   rk  r   s    r   rl  zTestBasicOpsTuple.test_not_in  rm  r   Nrn  r   r   r   rp  rp    sA        & & &- - -& & & & &r   rp  c                       e Zd Zd ZdS )TestBasicOpsTriplec                     d| _         ddt          j        g| _        t	          | j                  | _        t	          | j                  | _        d| _        d | _        d S )Nz
triple setr   rs  r   )ra  operatorr   r  rI   r   r$  r&   r   s    r   rB   zTestBasicOpsTriple.setUp  sM    "	&(,/$+&&$+&&			r   Nrb  r   r   r   rx  rx    s#            r   rx  c                       e Zd Zd Zd ZdS )TestBasicOpsStringc                     d| _         g d| _        t          | j                  | _        t          | j                  | _        d| _        d S )Nz
string setrF   r{   rX   r   ra  r  rI   r   r$  r   s    r   rB   zTestBasicOpsString.setUp  sA    "	%oo$+&&$+&&r   c                 .    |                                   d S r   r"  r   s    r   r  zTestBasicOpsString.test_repr      &&(((((r   Nr
   r   r   rB   r  r   r   r   r|  r|    2          ) ) ) ) )r   r|  c                       e Zd Zd Zd ZdS )TestBasicOpsBytesc                     d| _         g d| _        t          | j                  | _        t          | j                  | _        d| _        d S )Nz	bytes set)   a   b   cr   r  r   s    r   rB   zTestBasicOpsBytes.setUp  sC    !	((($+&&$+&&r   c                 .    |                                   d S r   r  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dS )TestBasicOpsMixedStringBytesc                    |                      t          j                               t          j        dt
                     d| _        g d| _        t          | j                  | _        t          | j                  | _	        d| _
        d S )Nignorezstring and bytes set)rF   r{   r  r  rI  )enterContextr   check_warningswarningssimplefilterBytesWarningra  r  rI   r   r$  r   s    r   rB   z"TestBasicOpsMixedStringBytes.setUp   ss    /8::;;;h555,	,,,$+&&$+&&r   c                 .    |                                   d S r   r  r   s    r   r  z&TestBasicOpsMixedStringBytes.test_repr	  r  r   Nr  r   r   r   r  r    s2          ) ) ) ) )r   r  c               #      K   t           r   )rH   r   r   r   baditerr    s      
Or   c               #      K   dV  d S r  r   r   r   r   gooditerr    s      
JJJJJr   c                   $    e Zd ZdZd Zd Zd ZdS )TestExceptionPropagationz?SF 628246:  Set constructor should not trap iterator TypeErrorsc                 `    |                      t          t          t                                 d S r   )rG   rH   rI   r  r   s    r   test_instanceWithExceptionz3TestExceptionPropagation.test_instanceWithException  s$    )S'))44444r   c                     t          g d           t          d           t          dddd           t          t          d                     t          d           t          t                                 d S )Nr#  r   rD   r   )onetwothreera   )rI   r   r  r   s    r   test_instancesWithoutExceptionz7TestExceptionPropagation.test_instancesWithoutException  sc    GGGG1Aq))***E!HHE


HJJr   c                     t          g d          }	 |D ]}|                    dg           	 |                     d           d S # t          $ r Y d S w xY w)Nr#  rI  z0no exception when changing size during iteration)rI   rV  rp   r   )r   r>   rr   s      r   test_changingSizeWhileIteratingz8TestExceptionPropagation.test_changingSizeWhileIterating$  s}    LL	J  !
 IIHIIIII  	 	 	DD	s   A 
AAN)r
   r   r   r)   r  r  r  r   r   r   r  r    sL        II5 5 5  J J J J Jr   r  c                       e Zd Zd ZdS )TestSetOfSetsc                    t          dg          }t          |g          }|                                }|                     t	          |          t                      |                    |           |                    |           |                     |t                                 |                    |           d S r   )rV   rI   r(  rM   rf   r   r   r   )r   innerouterelements       r   test_constructorzTestSetOfSets.test_constructor1  s    1#UG))++g	222		%U&&&er   N)r
   r   r   r  r   r   r   r  r  0  s#            r   r  c                   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S )TestBinaryOpsc                 .    t          d          | _         d S NrD   rI     rI   r   s    r   rB   zTestBinaryOps.setUp>      y>>r   c           	      ^    |                      | j        t          dddd                     d S )Nr   r      r  r'  r   s    r   test_eqzTestBinaryOps.test_eqA  s0    3!a!}}#5#566666r   c                 |    | j         t          dg          z  }|                     |t          d                     d S NrD   r  r%  r/  s     r   test_union_subsetzTestBinaryOps.test_union_subsetD  s8    CHH$Y00000r   c                     | j         t          g d          z  }|                     |t          g d                     d S NrD   rI  r     r%  r/  s     r   test_union_supersetz!TestBinaryOps.test_union_supersetH  sB    C---\\\!2!233333r   c                     | j         t          g d          z  }|                     |t          g d                     d S Nr   rI  r  )rD   r   rI  r  r  r%  r/  s     r   test_union_overlapz TestBinaryOps.test_union_overlapL  s@    C			NN*___!5!566666r   c                     | j         t          dg          z  }|                     |t          g d                     d S Nr  r  r%  r/  s     r   test_union_non_overlapz$TestBinaryOps.test_union_non_overlapP  >    CHH$\\\!2!233333r   c                 z    | j         t          d          z  }|                     |t          d                     d S NrD   rI  r%  r/  s     r   test_intersection_subsetz&TestBinaryOps.test_intersection_subsetT  s6    CKK'V-----r   c                     | j         t          g d          z  }|                     |t          g d                     d S Nr  r  r%  r/  s     r   test_intersection_supersetz(TestBinaryOps.test_intersection_supersetX  s@    C---YYY00000r   c                     | j         t          g d          z  }|                     |t          dg                     d S Nr  rI  r%  r/  s     r   test_intersection_overlapz'TestBinaryOps.test_intersection_overlap\  s<    C			NN*aS*****r   c                 l    | j         t          dg          z  }|                     |t                     d S Nr  rJ  r/  s     r   test_intersection_non_overlapz+TestBinaryOps.test_intersection_non_overlap`  s2    CHH$+++++r   c                     | j                             t          d                    }|                     |d           d S )Nr  FrC  r/  s     r   test_isdisjoint_subsetz$TestBinaryOps.test_isdisjoint_subsetd  s9    $$S[[11'''''r   c                     | j                             t          g d                    }|                     |d           d S )Nr  FrC  r/  s     r   test_isdisjoint_supersetz&TestBinaryOps.test_isdisjoint_superseth  s?    $$S%6%677'''''r   c                     | j                             t          g d                    }|                     |d           d S )Nr  FrC  r/  s     r   test_isdisjoint_overlapz%TestBinaryOps.test_isdisjoint_overlapl  s=    $$S^^44'''''r   c                     | j                             t          dg                    }|                     |d           d S )Nr  TrC  r/  s     r   test_isdisjoint_non_overlapz)TestBinaryOps.test_isdisjoint_non_overlapp  s;    $$S!XX..&&&&&r   c                 |    | j         t          d          z  }|                     |t          dg                     d S Nr  r  r%  r/  s     r   test_sym_difference_subsetz(TestBinaryOps.test_sym_difference_subsett  s8    CKK'aS*****r   c                 |    | j         t          d          z  }|                     |t          dg                     d S Nr  r  r%  r/  s     r   test_sym_difference_supersetz*TestBinaryOps.test_sym_difference_supersetx  s:    C---aS*****r   c                 ~    | j         t          d          z  }|                     |t          g d                     d S Nr  )rD   r   r  r  r%  r/  s     r   test_sym_difference_overlapz)TestBinaryOps.test_sym_difference_overlap|  s<    C	NN*\\\!2!233333r   c                     | j         t          dg          z  }|                     |t          g d                     d S r  r%  r/  s     r   test_sym_difference_non_overlapz-TestBinaryOps.test_sym_difference_non_overlap  r  r   N)r
   r   r   rB   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  =  s"       " " "7 7 71 1 14 4 47 7 74 4 4. . .1 1 1+ + +, , ,( ( (( ( (( ( (' ' '+ + ++ + +4 4 44 4 4 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dS )TestUpdateOpsc                 .    t          d          | _         d S r  r  r   s    r   rB   zTestUpdateOps.setUp  r  r   c                     | xj         t          dg          z  c_         |                     | j         t          d                     d S r  r%  r   s    r   r  zTestUpdateOps.test_union_subset  s>    CHH3y>>22222r   c                     | xj         t          g d          z  c_         |                     | j         t          g d                     d S r  r%  r   s    r   r  z!TestUpdateOps.test_union_superset  sH    C%%%3|||#4#455555r   c                     | xj         t          g d          z  c_         |                     | j         t          g d                     d S r  r%  r   s    r   r  z TestUpdateOps.test_union_overlap  sF    C			NN"3#7#788888r   c                     | xj         t          dg          z  c_         |                     | j         t          g d                     d S r  r%  r   s    r   r  z$TestUpdateOps.test_union_non_overlap  D    CHH3|||#4#455555r   c                     | j                             t          g d                     |                     | j         t          g d                     d S r  )rI   rV  rM   r   s    r   test_union_method_callz$TestUpdateOps.test_union_method_call  sJ    III'''3#7#788888r   c                     | xj         t          d          z  c_         |                     | j         t          d                     d S r  r%  r   s    r   r  z&TestUpdateOps.test_intersection_subset  s<    CKK3v;;/////r   c                     | xj         t          g d          z  c_         |                     | j         t          g d                     d S r  r%  r   s    r   r  z(TestUpdateOps.test_intersection_superset  sF    C%%%3yyy>>22222r   c                     | xj         t          g d          z  c_         |                     | j         t          dg                     d S r  r%  r   s    r   r  z'TestUpdateOps.test_intersection_overlap  sB    C			NN"3s88,,,,,r   c                     | xj         t          dg          z  c_         |                     | j         t                     d S r  rJ  r   s    r   r  z+TestUpdateOps.test_intersection_non_overlap  s8    CHH9-----r   c                     | j                             t          g d                     |                     | j         t          dg                     d S r  )rI   r_  rM   r   s    r   test_intersection_method_callz+TestUpdateOps.test_intersection_method_call  sH    $$S^^4443s88,,,,,r   c                     | xj         t          d          z  c_         |                     | j         t          dg                     d S r  r%  r   s    r   r  z(TestUpdateOps.test_sym_difference_subset  >    CKK3s88,,,,,r   c                     | xj         t          d          z  c_         |                     | j         t          dg                     d S r  r%  r   s    r   r  z*TestUpdateOps.test_sym_difference_superset  s@    C%%%3s88,,,,,r   c                     | xj         t          d          z  c_         |                     | j         t          g d                     d S r  r%  r   s    r   r  z)TestUpdateOps.test_sym_difference_overlap  sB    C	NN"3|||#4#455555r   c                     | xj         t          dg          z  c_         |                     | j         t          g d                     d S r  r%  r   s    r   r  z-TestUpdateOps.test_sym_difference_non_overlap  r  r   c                     | j                             t          g d                     |                     | j         t          g d                     d S r  )rI   r   rM   r   s    r   test_sym_difference_method_callz-TestUpdateOps.test_sym_difference_method_call  sL    ,,S^^<<<3|||#4#455555r   c                     | xj         t          d          z  c_         |                     | j         t          dg                     d S r  r%  r   s    r   test_difference_subsetz$TestUpdateOps.test_difference_subset  r  r   c                     | xj         t          d          z  c_         |                     | j         t          g                      d S r  r%  r   s    r   test_difference_supersetz&TestUpdateOps.test_difference_superset  s>    C%%%3r77+++++r   c                     | xj         t          d          z  c_         |                     | j         t          ddg                     d S Nr  rD   r  r%  r   s    r   test_difference_overlapz%TestUpdateOps.test_difference_overlap  s@    C	NN"31v;;/////r   c                     | xj         t          dg          z  c_         |                     | j         t          g d                     d S )Nr  r  r%  r   s    r   test_difference_non_overlapz)TestUpdateOps.test_difference_non_overlap  sB    CHH3yyy>>22222r   c                     | j                             t          g d                     |                     | j         t          ddg                     d S r  )rI   rk  rM   r   s    r   test_difference_method_callz)TestUpdateOps.test_difference_method_call  sJ    ""3yyy>>22231v;;/////r   N)r
   r   r   rB   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r    sO       " " "3 3 36 6 69 9 96 6 69 9 90 0 03 3 3- - -. . .- - -- - -- - -6 6 66 6 66 6 6- - -, , ,0 0 03 3 30 0 0 0 0r   r  c                   b    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S )
TestMutatec                 J    g d| _         t          | j                   | _        d S )Nr~  )r  rI   r   s    r   rB   zTestMutate.setUp  s"    %oot{##r   c                     | j                             d           |                     | j         t          d                     d S )NrX   ra   rI   r   rM   r   s    r   test_add_presentzTestMutate.test_add_present  s:    S3u::.....r   c                     | j                             d           |                     | j         t          d                     d S )NrA   r]   r  r   s    r   test_add_absentzTestMutate.test_add_absent  s:    S3v;;/////r   c                     t                      }d}| j        D ]?}|                    |           |dz  }|                     t	          |          |           @|                     || j                    d S )Nr   r   )rI   r  r   rM   rR   )r   tmpexpected_lenrW  s       r   test_add_until_fullzTestMutate.test_add_until_full  sw    ee 	5 	5AGGAJJJALSXX|4444dh'''''r   c                     | j                             d           |                     | j         t          d                     d S )Nr{   ac)rI   r   rM   r   s    r   test_remove_presentzTestMutate.test_remove_present  s:    3t99-----r   c                     	 | j                             d           |                     d           d S # t          $ r Y d S w xY w)NrA   z7Removing missing element should have raised LookupError)rI   r   rp   LookupErrorr   s    r   test_remove_absentzTestMutate.test_remove_absent  sV    	HOOC   IIOPPPPP 	 	 	DD	s   /3 
A Ac                     t          | j                  }| j        D ]I}| j                            |           |dz  }|                     t          | j                  |           Jd S r   )rR   rI   r  r   rM   )r   r  rW  s      r   test_remove_until_emptyz"TestMutate.test_remove_until_empty  si    48}} 	: 	:AHOOAALS]]L9999	: 	:r   c                     | j                             d           |                     | j         t          d                     d S )NrX   r   rI   r   rM   r   s    r   test_discard_presentzTestMutate.test_discard_present  s<    3t99-----r   c                     | j                             d           |                     | j         t          d                     d S )NrA   ra   r  r   s    r   test_discard_absentzTestMutate.test_discard_absent  s<    3u::.....r   c                     | j                                          |                     t          | j                   d           d S r-   )rI   r5  rM   rR   r   s    r   r6  zTestMutate.test_clear  s8    TX*****r   c                    i }| j         r#d || j                                         <   | j         #|                     t          |          t          | j                             | j        D ]}|                     ||           d S r   )rI   r(  rM   rR   r  rW   )r   poppedrW  s      r   rP  zTestMutate.test_pop  s    h 	*%)F48<<>>" h 	*Vc$+&6&6777 	% 	%AMM!V$$$$	% 	%r   c                     | j                             d           |                     | j         t          | j                             d S )Nr   rI   rV  rM   r  r   s    r   test_update_empty_tuplez"TestMutate.test_update_empty_tuple  s>    3t{#3#344444r   c                     | j                             d           |                     | j         t          | j                             d S )NrE   r&  r   s    r   test_update_unit_tuple_overlapz)TestMutate.test_update_unit_tuple_overlap  s>    3t{#3#344444r   c                     | j                             d           |                     | j         t          | j        dgz                        d S )N)rF   r   r   r&  r   s    r   "test_update_unit_tuple_non_overlapz-TestMutate.test_update_unit_tuple_non_overlap   sE    
###3t{cU':#;#;<<<<<r   N)r
   r   r   rB   r  r  r  r  r  r  r  r!  r6  rP  r'  r)  r+  r   r   r   r
  r
    s        $ $ $/ / /0 0 0( ( (. . .  : : :. . ./ / /+ + +% % %5 5 55 5 5= = = = =r   r
  c                   0    e Zd ZdddZdddddd	d
Zd ZdS )TestSubsetsr   r   )<=>===!=><r/  r.  )r0  r1  r3  r2  r.  r/  c                    | j         }| j        }dD ],}|| j        v }t          d|z   dz   t	                                }|                     ||           |t          j        v rAt          |t          j        |                   } ||          }|                     ||           t          j	        |         }t          d|z   dz   t	                                }|                     ||           |t          j        v rAt          |t          j        |                   } ||          }|                     ||           .d S )N)r1  r0  r3  r.  r2  r/  rm   r   )
leftrightcasesevallocalsrM   r-  case2methodgetattrreverse)r   rm   r   ra  rO   r   methodrcases           r   test_issubsetzTestSubsets.test_issubset4  s9   IJ4 	3 	3Dtz)H#*s*FHH55FVX...{... K$;D$ABB  222  '-E#++VXX66FVX.../// K$;E$BCC  222%	3 	3r   N)r
   r   r   r:  r<  r?  r   r   r   r-  r-  &  sU        #% K  G3 3 3 3 3r   r-  c                   >    e Zd Z e            Z e            ZdZdZdS )TestSubsetEqualEmptyz
both emptyr0  r.  r/  Nr
   r   r   rI   r5  r6  r   r7  r   r   r   rA  rA  L  s.        CEEDCEEEDEEEr   rA  c                   J    e Zd Z eddg          Z eddg          ZdZdZdS )TestSubsetEqualNonEmptyr   rD   z
equal pairrB  NrC  r   r   r   rE  rE  T  s:        CAKKDCAKKEDEEEr   rE  c                   D    e Zd Z e            Z eddg          ZdZdZdS )TestSubsetEmptyNonEmptyr   rD   zone empty, one non-emptyr1  r3  r.  NrC  r   r   r   rG  rG  \  s4        CEEDCAKKE&DEEEr   rG  c                   H    e Zd Z edg          Z eddg          ZdZdZdS )TestSubsetPartialr   rD   z&one a non-empty proper subset of otherrH  NrC  r   r   r   rJ  rJ  d  s8        CHHDCAKKE4DEEEr   rJ  c                   F    e Zd Z edg          Z edg          ZdZdZdS )TestSubsetNonOverlapr   rD   zneither empty, neither containsr1  NrC  r   r   r   rL  rL  l  s6        CHHDCHHE-DEEEr   rL  c                   b    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S )TestOnlySetsInBinaryOpsc                 &   |                      | j        | j        k    d           |                      | j        | j        k    d           |                      | j        | j        k    d           |                      | j        | j        k    d           d S r   )rM   r    rI   r   s    r   
test_eq_nez"TestOnlySetsInBinaryOps.test_eq_nev  s    tx/777TZ/777tx/666TZ/66666r   c                                           t           fd                                 t           fd                                 t           fd                                 t           fd                                 t           fd                                 t           fd                                 t           fd                                 t           fd           d S )	Nc                  $     j          j        k     S r   rI   r    r   s   r   <lambda>z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>~      TX
-B r   c                  $     j          j        k    S r   rS  r   s   r   rT  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TX-C r   c                  $     j          j        k    S r   rS  r   s   r   rT  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rU  r   c                  $     j          j        k    S r   rS  r   s   r   rT  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  rW  r   c                  $     j          j        k     S r   r    rI   r   s   r   rT  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TZ$(-B r   c                  $     j          j        k    S r   r[  r   s   r   rT  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>      TZ48-C r   c                  $     j          j        k    S r   r[  r   s   r   rT  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  r\  r   c                  $     j          j        k    S r   r[  r   s   r   rT  z:TestOnlySetsInBinaryOps.test_ge_gt_le_lt.<locals>.<lambda>  r^  r   )rG   rH   r   s   `r   test_ge_gt_le_ltz(TestOnlySetsInBinaryOps.test_ge_gt_le_lt}  s	   )%B%B%B%BCCC)%C%C%C%CDDD)%B%B%B%BCCC)%C%C%C%CDDD)%B%B%B%BCCC)%C%C%C%CDDD)%B%B%B%BCCC)%C%C%C%CDDDDDr   c                 ~    	 | xj         | j        z  c_         |                     d           d S # t          $ r Y d S w xY wNzexpected TypeErrorrI   r    rp   rH   r   s    r   test_update_operatorz,TestOnlySetsInBinaryOps.test_update_operator  X    	,HH
"HH II*+++++  	 	 	DD	   . 
<<c                     | j         r!| j                            | j                   d S |                     t
          | j        j        | j                   d S r   )otherIsIterablerI   rV  r    rG   rH   r   s    r   rY  z#TestOnlySetsInBinaryOps.test_update  sN     	FHOODJ'''''i$*EEEEEr   c                 &                          t           fd                                 t           fd            j        r! j                             j                   d S                       t           j        j         j                   d S )Nc                  "     j          j        z  S r   rS  r   s   r   rT  z4TestOnlySetsInBinaryOps.test_union.<locals>.<lambda>      TX
-B r   c                  "     j          j        z  S r   r[  r   s   r   rT  z4TestOnlySetsInBinaryOps.test_union.<locals>.<lambda>      TZ$(-B r   )rG   rH   ri  rI   re   r    r   s   `r   rn   z"TestOnlySetsInBinaryOps.test_union  s    )%B%B%B%BCCC)%B%B%B%BCCC 	EHNN4:&&&&&iDDDDDr   c                 ~    	 | xj         | j        z  c_         |                     d           d S # t          $ r Y d S w xY wrc  rd  r   s    r   !test_intersection_update_operatorz9TestOnlySetsInBinaryOps.test_intersection_update_operator  rf  rg  c                     | j         r!| j                            | j                   d S |                     t
          | j        j        | j                   d S r   )ri  rI   r_  r    rG   rH   r   s    r   ra  z0TestOnlySetsInBinaryOps.test_intersection_update  s\     	*H((44444i"h:"j* * * * *r   c                 &                          t           fd                                 t           fd            j        r! j                             j                   d S                       t           j        j         j                   d S )Nc                  "     j          j        z  S r   rS  r   s   r   rT  z;TestOnlySetsInBinaryOps.test_intersection.<locals>.<lambda>  rl  r   c                  "     j          j        z  S r   r[  r   s   r   rT  z;TestOnlySetsInBinaryOps.test_intersection.<locals>.<lambda>  rn  r   )rG   rH   ri  rI   r|   r    r   s   `r   r   z)TestOnlySetsInBinaryOps.test_intersection  s    )%B%B%B%BCCC)%B%B%B%BCCC 	LH!!$*-----i)>
KKKKKr   c                 ~    	 | xj         | j        z  c_         |                     d           d S # t          $ r Y d S w xY wrc  rd  r   s    r   #test_sym_difference_update_operatorz;TestOnlySetsInBinaryOps.test_sym_difference_update_operator  rf  rg  c                     | j         r!| j                            | j                   d S |                     t
          | j        j        | j                   d S r   )ri  rI   r   r    rG   rH   r   s    r   test_sym_difference_updatez2TestOnlySetsInBinaryOps.test_sym_difference_update  s\     	*H00<<<<<i"hB"j* * * * *r   c                 &                          t           fd                                 t           fd            j        r! j                             j                   d S                       t           j        j         j                   d S )Nc                  "     j          j        z  S r   rS  r   s   r   rT  z=TestOnlySetsInBinaryOps.test_sym_difference.<locals>.<lambda>  rl  r   c                  "     j          j        z  S r   r[  r   s   r   rT  z=TestOnlySetsInBinaryOps.test_sym_difference.<locals>.<lambda>  rn  r   )rG   rH   ri  rI   r   r    r   s   `r   test_sym_differencez+TestOnlySetsInBinaryOps.test_sym_difference  s    )%B%B%B%BCCC)%B%B%B%BCCC 	TH))$*55555i)F
SSSSSr   c                 ~    	 | xj         | j        z  c_         |                     d           d S # t          $ r Y d S w xY wrc  rd  r   s    r   test_difference_update_operatorz7TestOnlySetsInBinaryOps.test_difference_update_operator  rf  rg  c                     | j         r!| j                            | j                   d S |                     t
          | j        j        | j                   d S r   )ri  rI   rk  r    rG   rH   r   s    r   rl  z.TestOnlySetsInBinaryOps.test_difference_update  s\     	*H&&tz22222i"h8"j* * * * *r   c                 &                          t           fd                                 t           fd            j        r! j                             j                   d S                       t           j        j         j                   d S )Nc                  "     j          j        z
  S r   rS  r   s   r   rT  z9TestOnlySetsInBinaryOps.test_difference.<locals>.<lambda>  rl  r   c                  "     j          j        z
  S r   r[  r   s   r   rT  z9TestOnlySetsInBinaryOps.test_difference.<locals>.<lambda>  rn  r   )rG   rH   ri  rI   r   r    r   s   `r   r   z'TestOnlySetsInBinaryOps.test_difference  s    )%B%B%B%BCCC)%B%B%B%BCCC 	JH
+++++i)<djIIIIIr   N)r
   r   r   rP  ra  re  rY  rn   rp  ra  r   rv  rx  r|  r~  rl  r   r   r   r   rN  rN  t  s        7 7 7	E 	E 	E, , ,F F FE E E, , ,* * *L L L, , ,* * *T T T, , ,* * *J J J J Jr   rN  c                       e Zd Zd ZdS )TestOnlySetsNumericc                 J    t          d          | _         d| _        d| _        d S )Nr#     FrI   r    ri  r   s    r   rB   zTestOnlySetsNumeric.setUp  s$    ^^
$r   Nrb  r   r   r   r  r    #        % % % % %r   r  c                       e Zd Zd ZdS )TestOnlySetsDictc                 P    t          d          | _         ddd| _        d| _        d S )Nr#  rD   rI  )r   r   Tr  r   s    r   rB   zTestOnlySetsDict.setUp  s*    ^^QZZ
#r   Nrb  r   r   r   r  r    #        $ $ $ $ $r   r  c                       e Zd Zd ZdS )TestOnlySetsOperatorc                 ^    t          d          | _         t          j        | _        d| _        d S )Nr#  F)rI   rz  r   r    ri  r   s    r   rB   zTestOnlySetsOperator.setUp  s&    ^^\
$r   Nrb  r   r   r   r  r    r  r   r  c                       e Zd Zd ZdS )TestOnlySetsTuplec                 J    t          d          | _         d| _        d| _        d S )Nr#  r  Tr  r   s    r   rB   zTestOnlySetsTuple.setUp  s$    ^^
#r   Nrb  r   r   r   r  r     r  r   r  c                       e Zd Zd ZdS )TestOnlySetsStringc                 J    t          d          | _         d| _        d| _        d S )Nr#  ra   Tr  r   s    r   rB   zTestOnlySetsString.setUp	  s$    ^^
#r   Nrb  r   r   r   r  r    r  r   r  c                       e Zd Zd ZdS )TestOnlySetsGeneratorc                 `    d }t          d          | _          |            | _        d| _        d S )Nc               3   :   K   t          ddd          D ]} | V  d S )Nr   r   rD   )r   )rr   s    r   genz(TestOnlySetsGenerator.setUp.<locals>.gen  s4      1b!__   r   r#  Tr  )r   r  s     r   rB   zTestOnlySetsGenerator.setUp  s;    	 	 	 ^^SUU
#r   Nrb  r   r   r   r  r    s#        $ $ $ $ $r   r  c                       e Zd Zd Zd ZdS )TestCopyingc                 ~   | j                                         }t          |t                    }t          | j         t                    }|                     t          |          t          |                     t          t          |                    D ]%}|                     ||         ||         u            &d S NrK  )rI   r   rL   r&   rM   rR   r   r   r   r   dup_listset_listrr   s        r   r9  zTestCopying.test_copy  s    hmmoo#4((($(---XH666s8}}%% 	8 	8AOOHQK8A;67777	8 	8r   c                 |   t          j        | j                  }t          |t                    }t          | j        t                    }|                     t          |          t          |                     t          t          |                    D ]$}|                     ||         ||                    %d S r  )r   r   rI   rL   r&   rM   rR   r   r  s        r   test_deep_copyzTestCopying.test_deep_copy%  s    mDH%%#4((($(---XH666s8}}%% 	7 	7AXa[(1+6666	7 	7r   N)r
   r   r   r9  r  r   r   r   r  r    s2        8 8 87 7 7 7 7r   r  c                       e Zd Zd ZdS )TestCopyingEmptyc                 ,    t                      | _         d S r   r  r   s    r   rB   zTestCopyingEmpty.setUp1  s    55r   Nrb  r   r   r   r  r  0  s#            r   r  c                       e Zd Zd ZdS )TestCopyingSingletonc                 0    t          dg          | _         d S )Nhellor  r   s    r   rB   zTestCopyingSingleton.setUp7  s    y>>r   Nrb  r   r   r   r  r  6  s#        " " " " "r   r  c                       e Zd Zd ZdS )TestCopyingTriplec                 2    t          g d          | _         d S )N)rs  r   Nr  r   s    r   rB   zTestCopyingTriple.setUp=  s    ((())r   Nrb  r   r   r   r  r  <  s#        * * * * *r   r  c                       e Zd Zd ZdS )TestCopyingTuplec                 0    t          dg          | _         d S )Nr   rD   r  r   s    r   rB   zTestCopyingTuple.setUpC  s    x==r   Nrb  r   r   r   r  r  B  s#        ! ! ! ! !r   r  c                       e Zd Zd ZdS )TestCopyingNestedc                 0    t          dg          | _         d S )N)r  )r   rI  r  r   s    r   rB   zTestCopyingNested.setUpI  s    ()**r   Nrb  r   r   r   r  r  H  s#        + + + + +r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestIdentitiesc                 V    t          d          | _        t          d          | _        d S )Nabracadabraalacazam)rI   rF   r{   r   s    r   rB   zTestIdentities.setUpO  s"    ]##Zr   c                    | j         | j        }}|                     ||z
  |k                |                     ||z
  |k                |                     ||z  |k                |                     ||z  |k                |                     ||z  |k               |                     ||z  |k               |                     ||z  ||z  k                d S r   )rF   r{   r   r   rF   r{   s      r   test_binopsVsSubsetsz#TestIdentities.test_binopsVsSubsetsS  s    vtv1A	"""A	"""A	"""A	"""A	"""A	"""AA&&&&&r   c                    | j         | j        }}|                     ||z  ||z             |                     ||z  ||z             |                     ||z  ||z             ||k    r|                     ||z
  ||z
             d S d S r   )rF   r{   rM   r~   r  s      r   test_commutativityz!TestIdentities.test_commutativity]  s    vtv11ac"""1ac"""1ac"""66!QqS))))) 6r   c                    | j         | j        }}|                     ||z
  ||z  z  ||z
  z  ||z             |                     ||z  ||z  z  ||z             |                     |||z
  z  ||z             |                     ||z
  |z  ||z             |                     ||z
  ||z  z  |           |                     ||z
  ||z  z  |           |                     ||z
  ||z
  z  ||z             d S r   )rF   r{   rM   r  s      r   test_summationszTestIdentities.test_summationse  s   vtv1!A#!ac*AaC000!A#!ac***AaC!A#&&&!A#q!A#&&&!A#!a(((!A#!a(((!A#!ac*****r   c                     | j         | j        t                      }}}|                     ||z
  |z  |           |                     ||z
  |z  |           |                     ||z  ||z  z  |           d S r   )rF   r{   rI   rM   )r   rF   r{   rs  s       r   test_exclusionzTestIdentities.test_exclusionp  s{    VTVSUUd1!A#q$'''!A#q$'''!A#!d+++++r   N)r
   r   r   rB   r  r  r  r  r   r   r   r  r  N  s_        ! ! !' ' '* * *	+ 	+ 	+, , , , ,r   r  c              #      K   | D ]}|V  dS )zRegular generatorNr   seqnrr   s     r   Rr  y  s*         r   c                       e Zd ZdZd Zd ZdS )GzSequence using __getitem__c                     || _         d S r   r  r   r  s     r   r1   z
G.__init__  s    			r   c                     | j         |         S r   r  rq   s     r   __getitem__zG.__getitem__  s    y|r   N)r
   r   r   r)   r1   r  r   r   r   r  r  ~  s8                r   r  c                   $    e Zd ZdZd Zd Zd ZdS )Iz Sequence using iterator protocolc                 "    || _         d| _        d S r-   r  r  s     r   r1   z
I.__init__      	r   c                     | S r   r   r   s    r   __iter__z
I.__iter__      r   c                     | j         t          | j                  k    rt          | j        | j                  }| xj         dz  c_         |S r   rr   rR   r  r   r   rW  s     r   __next__z
I.__next__  >    6S^^##=%8Idf!r   Nr
   r   r   r)   r1   r  r  r   r   r   r  r    sG        &&        r   r  c                       e Zd ZdZd Zd ZdS )Igz9Sequence using iterator protocol defined with a generatorc                 "    || _         d| _        d S r-   r  r  s     r   r1   zIg.__init__  r  r   c              #   &   K   | j         D ]}|V  d S r   r  )r   vals     r   r  zIg.__iter__  s,      9 	 	CIIII	 	r   Nr
   r   r   r)   r1   r  r   r   r   r  r    s8        ??      r   r  c                       e Zd ZdZd Zd ZdS )Xz Missing __getitem__ and __iter__c                 "    || _         d| _        d S r-   r  r  s     r   r1   z
X.__init__  r  r   c                     | j         t          | j                  k    rt          | j        | j                  }| xj         dz  c_         |S r   r  r  s     r   r  z
X.__next__  r  r   N)r
   r   r   r)   r1   r  r   r   r   r  r    s8        &&      r   r  c                       e Zd ZdZd Zd ZdS )NzIterator missing __next__()c                 "    || _         d| _        d S r-   r  r  s     r   r1   z
N.__init__  r  r   c                     | S r   r   r   s    r   r  z
N.__iter__  r  r   Nr  r   r   r   r  r    s8        !!      r   r  c                   $    e Zd ZdZd Zd Zd ZdS )EzTest propagation of exceptionsc                 "    || _         d| _        d S r-   r  r  s     r   r1   z
E.__init__  r  r   c                     | S r   r   r   s    r   r  z
E.__iter__  r  r   c                     ddz   d S )Nr   r   r   r   s    r   r  z
E.__next__  s    	Qr   Nr  r   r   r   r  r    sG        $$        r   r  c                   $    e Zd ZdZd Zd Zd ZdS )SzTest immediate stopc                     d S r   r   r  s     r   r1   z
S.__init__  s    r   c                     | S r   r   r   s    r   r  z
S.__iter__  r  r   c                     t           r   )r   r   s    r   r  z
S.__next__  s    r   Nr  r   r   r   r  r    sG                r   r  )chainc                     t          t          d t          t          t	          |                                                   S )z Test multiple tiers of iteratorsc                     | S r   r   )rm   s    r   rT  zL.<locals>.<lambda>  s    a r   )r  r   r  r  r  r  s    r   Lr    s.    ZZ2agg;;00111r   c                        e Zd Zd Zd Zd ZdS )TestVariousIteratorArgsc                 v   t           t          fD ](}ddt          d          dt          ddd          fD ] }t          t          t
          t          t          t          fD ][}| 	                    t           | ||                    t                    t           ||          t                               \|                     t          |t          |                     |                     t          |t          |                     |                     t           |t#          |                     *d S )	N123rw   r   dog333333?    r  r  )rI   rV   r   r  r  r  r  r  r  rM   rL   r&   rG   rH   r  r  ZeroDivisionErrorr  )r   consr>   gs       r   r  z(TestVariousIteratorArgs.test_constructor  s    )$ 	B 	BDRtk5d1;M;MN B BQAq!, [ [A$$VDD1JJD%A%A%A6!!A$$TXCYCYCYZZZZ!!)TAaDD999!!)TAaDD999!!"3TAaDDAAAAB	B 	Br   c           
         t          d          }ddt          d          dt          ddd          d	fD ]O}|j        |j        |j        |j        |j        fD ]*}t          t          t          t          t          fD ]} ||          } | ||                    }t          |t                    r|                     ||           M|                     t          |t           
          t          |t           
                     |                     t$          |t'          |                     |                     t$          |t)          |                     |                     t*          |t-          |                     ,Qd S )Nnovemberr  rw   r   r  r  r  r  decemberr  )rI   r   re   r|   r   r   r   r  r  r  r  r  
isinstanceboolrM   rL   r&   rG   rH   r  r  r   r  )r   r>   r   methr  rO   rN   s          r   test_inline_methodsz+TestVariousIteratorArgs.test_inline_methods  st   
OOBd[%T!:L:LjY 	A 	AD!.!,@VXYXde 
A 
AQAq) _ _A#tDzzH!T!!D'']]F!(D11 _((::::((D)A)A)A6(X\C]C]C]^^^^!!)T1Q44888!!)T1Q44888!!"3T1Q44@@@@
A	A 	Ar   c           
         ddt          d          dt          ddd          dfD ]}d	D ]}t          t          t          t          t
          t          fD ]}t          d
          }|                                } t          ||          t           ||                                t          ||           ||                     |                     t          |t                    t          |t                               |                     t          t          t          d
          |          t!          |                     |                     t          t          t          d
          |          t#          |                     |                     t$          t          t          d
          |          t'          |                     d S )Nr  rw   r   r  r  r  r  r  )rV  r_  rk  r   januaryr  )r   r  r  r  r  r  r  rI   r   r;  ri   rM   rL   r&   rG   rH   r  r  r   r  )r   r   methnamer  r>   r   s         r   test_inplace_methodsz,TestVariousIteratorArgs.test_inplace_methods  s   Bd[%T!:L:LjY 	a 	aDQ a aQAq!, O OAIAA(GAx((aagg777(GAx((4111$$VA4%8%8%8&:M:M:MNNNN!!)WS^^X-N-NPQRVPWPWXXX!!)WS^^X-N-NPQRVPWPWXXX!!"3WS^^X5V5VXYZ^X_X_````a	a 	ar   N)r
   r   r   r  r	  r  r   r   r   r  r    sL        B B BA A Aa a a a ar   r  c                       e Zd Zd Zd ZdS )bad_eqc                 X    t           r t                                           t          | |u S r   )be_badset2r5  r   r   s     r   r!   zbad_eq.__eq__  s'     	$JJLLL##u}r   c                     dS r-   r   r   s    r   r   zbad_eq.__hash__  r   r   Nr
   r   r   r!   r   r   r   r   r  r    s2          
    r   r  c                       e Zd Zd Zd ZdS )bad_dict_clearc                 J    t           rt                                           | |u S r   )r  dict2r5  r   s     r   r!   zbad_dict_clear.__eq__  s!     	KKMMMu}r   c                     dS r-   r   r   s    r   r   zbad_dict_clear.__hash__  r   r   Nr  r   r   r   r  r    s2              r   r  c                        e Zd Zd Zd Zd ZdS )TestWeirdBugsc                 $   da t                      h}d t          d          D             ada |                     t
          |j        t                     da t                      h}t                      d iada |	                    t                     d S )NFc                 *    h | ]}t                      S r   )r  r  s     r   r  z4TestWeirdBugs.test_8420_set_merge.<locals>.<setcomp>  s    ,,,Q,,,r   K   T)
r  r  r   r  rG   r   rV  r  r  r   )r   set1s     r   test_8420_set_mergez!TestWeirdBugs.test_8420_set_merge  s     z,,%)),,,+T[$???  !!!4(((/////r   c                    t          t          d                    }|                                 |                    t          d                     t	          |          }|                                 t          t          d                    }|                    t          d                     t          |           d S )Nr  )rI   r   r5  rV  r   ri   )r   r>   sirF   s       r   test_iter_and_mutatez"TestWeirdBugs.test_iter_and_mutate  s    c

OO					s!WW				s	sRr   c                      G fdd          t                      fdt          d          D             dh}|                               d S )Nc                        e Zd Zd Z fdZdS ).TestWeirdBugs.test_merge_and_mutate.<locals>.Xc                      t          d          S r-   )r2  r   s    r   r   z7TestWeirdBugs.test_merge_and_mutate.<locals>.X.__hash__  s    Awwr   c                 0                                      dS )NF)r5  )r   or    s     r   r!   z5TestWeirdBugs.test_merge_and_mutate.<locals>.X.__eq__  s    ur   Nr"   )r    s   r   r  r&    s=                r   r  c                 $    h | ]}             S r   r   )r   rr   r  s     r   r  z6TestWeirdBugs.test_merge_and_mutate.<locals>.<setcomp>$  s    ((((((r   r   r   )rI   r   rV  )r   r>   r  r    s     @@r   test_merge_and_mutatez#TestWeirdBugs.test_merge_and_mutate  sz    	 	 	 	 	 	 	 	 	 	 ((((eBii(((C	r   N)r
   r   r   r   r#  r+  r   r   r   r  r     sA        0 0 0	 	 	    r   r  c                   &    e Zd ZdZdZdZd Zd ZdS )TestOperationsMutatingzRegression test for bpo-46615Nc                 (    G fdd          d|                      fdt          t          d                    D                       |                     fdt          t          d                    D                       dfS )Nc                   $    e Zd Z fdZd ZdS )<TestOperationsMutating.make_sets_of_bad_objects.<locals>.Badc                     sdS t          d          dk    r                                 t          d          dk    r                                 t          t          d                    S )NF   r   rD   )r   r5  r  )r   r    enabledr  r  s     r   r!   zCTestOperationsMutating.make_sets_of_bad_objects.<locals>.Bad.__eq__1  s`     ! 5R==A%%JJLLLR==A%%JJLLLIaLL)))r   c                      t          d          S rj  r  r   s    r   r   zETestOperationsMutating.make_sets_of_bad_objects.<locals>.Bad.__hash__9  s     ||#r   Nr  )r3  r  r  s   r   Badr0  0  sG        * * * * * * *$ $ $ $ $r   r5  Fc              3   ,   K   | ]}             V  d S r   r   r   _r5  s     r   r   zBTestOperationsMutating.make_sets_of_bad_objects.<locals>.<genexpr>=  )       E E1 E E E E E Er   2   c              3   ,   K   | ]}             V  d S r   r   r7  s     r   r   zBTestOperationsMutating.make_sets_of_bad_objects.<locals>.<genexpr>>  r9  r   T)constructor1r   r   constructor2)r   r5  r3  r  r  s    @@@@r   make_sets_of_bad_objectsz/TestOperationsMutating.make_sets_of_bad_objects/  s    
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$    E E E Eimm0D0D E E EEE   E E E Eimm0D0D E E EEETzr   c                     t          d          D ]`}|                                 \  }}	  |||           '# t          $ r-}|                     dt	          |                     Y d }~Yd }~ww xY wd S )Nr  zchanged size during iteration)r   r>  r   rW   rh   )r   functionr8  r  r  rE  s         r   check_set_op_does_not_crashz2TestOperationsMutating.check_set_op_does_not_crashC  s    s 	G 	GA6688JD$Gt$$$$ G G G=s1vvFFFFFFFFG		G 	Gs   7
A.#A))A.)r
   r   r   r)   r<  r=  r>  rA  r   r   r   r-  r-  )  sG        ''LL  (G G G G Gr   r-  c                   h    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S )TestBinaryOpsMutatingc                 2    |                      d            d S )Nc                     | |k    S r   r   rF   r{   s     r   rT  z=TestBinaryOpsMutating.test_eq_with_mutation.<locals>.<lambda>P  
    a1f r   rA  r   s    r   test_eq_with_mutationz+TestBinaryOpsMutating.test_eq_with_mutationO       (()<)<=====r   c                 2    |                      d            d S )Nc                     | |k    S r   r   rF  s     r   rT  z=TestBinaryOpsMutating.test_ne_with_mutation.<locals>.<lambda>S  rG  r   rH  r   s    r   test_ne_with_mutationz+TestBinaryOpsMutating.test_ne_with_mutationR  rJ  r   c                 2    |                      d            d S )Nc                     | |k     S r   r   rF  s     r   rT  z=TestBinaryOpsMutating.test_lt_with_mutation.<locals>.<lambda>V  
    a!e r   rH  r   s    r   test_lt_with_mutationz+TestBinaryOpsMutating.test_lt_with_mutationU       ((););<<<<<r   c                 2    |                      d            d S )Nc                     | |k    S r   r   rF  s     r   rT  z=TestBinaryOpsMutating.test_le_with_mutation.<locals>.<lambda>Y  rG  r   rH  r   s    r   test_le_with_mutationz+TestBinaryOpsMutating.test_le_with_mutationX  rJ  r   c                 2    |                      d            d S )Nc                     | |k    S r   r   rF  s     r   rT  z=TestBinaryOpsMutating.test_gt_with_mutation.<locals>.<lambda>\  rP  r   rH  r   s    r   test_gt_with_mutationz+TestBinaryOpsMutating.test_gt_with_mutation[  rR  r   c                 2    |                      d            d S )Nc                     | |k    S r   r   rF  s     r   rT  z=TestBinaryOpsMutating.test_ge_with_mutation.<locals>.<lambda>_  rG  r   rH  r   s    r   test_ge_with_mutationz+TestBinaryOpsMutating.test_ge_with_mutation^  rJ  r   c                 2    |                      d            d S )Nc                     | |z  S r   r   rF  s     r   rT  z>TestBinaryOpsMutating.test_and_with_mutation.<locals>.<lambda>b  
    a!e r   rH  r   s    r   test_and_with_mutationz,TestBinaryOpsMutating.test_and_with_mutationa  rR  r   c                 2    |                      d            d S )Nc                     | |z  S r   r   rF  s     r   rT  z=TestBinaryOpsMutating.test_or_with_mutation.<locals>.<lambda>e  r^  r   rH  r   s    r   test_or_with_mutationz+TestBinaryOpsMutating.test_or_with_mutationd  rR  r   c                 2    |                      d            d S )Nc                     | |z
  S r   r   rF  s     r   rT  z>TestBinaryOpsMutating.test_sub_with_mutation.<locals>.<lambda>h  r^  r   rH  r   s    r   test_sub_with_mutationz,TestBinaryOpsMutating.test_sub_with_mutationg  rR  r   c                 2    |                      d            d S )Nc                     | |z  S r   r   rF  s     r   rT  z>TestBinaryOpsMutating.test_xor_with_mutation.<locals>.<lambda>k  r^  r   rH  r   s    r   test_xor_with_mutationz,TestBinaryOpsMutating.test_xor_with_mutationj  rR  r   c                 6    d }|                      |           d S )Nc                     | |z  } d S r   r   rF  s     r   r   z8TestBinaryOpsMutating.test_iadd_with_mutation.<locals>.fn      FAAAr   rH  r  s     r   test_iadd_with_mutationz-TestBinaryOpsMutating.test_iadd_with_mutationm  +    	 	 	((+++++r   c                 6    d }|                      |           d S )Nc                     | |z  } d S r   r   rF  s     r   r   z7TestBinaryOpsMutating.test_ior_with_mutation.<locals>.fs  rk  r   rH  r  s     r   test_ior_with_mutationz,TestBinaryOpsMutating.test_ior_with_mutationr  rm  r   c                 6    d }|                      |           d S )Nc                     | |z  } d S r   r   rF  s     r   r   z8TestBinaryOpsMutating.test_isub_with_mutation.<locals>.fx  rk  r   rH  r  s     r   test_isub_with_mutationz-TestBinaryOpsMutating.test_isub_with_mutationw  rm  r   c                 6    d }|                      |           d S )Nc                     | |z  } d S r   r   rF  s     r   r   z8TestBinaryOpsMutating.test_ixor_with_mutation.<locals>.f}  rk  r   rH  r  s     r   test_ixor_with_mutationz-TestBinaryOpsMutating.test_ixor_with_mutation|  rm  r   c                     d }d }d }|                      |           |                      |           |                      |           d S )Nc                     | D ]}|D ]}d S r   r   rF   r{   rm   r   s       r   f1z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f1  0         r   c                     |D ]}| D ]}d S r   r   )rF   r{   r   rm   s       r   f2z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f2  r{  r   c                 2    t          | |          D ]\  }}d S r   )zipry  s       r   f3z>TestBinaryOpsMutating.test_iteration_with_mutation.<locals>.f3  s*    Aq		  1 r   rH  )r   rz  r}  r  s       r   test_iteration_with_mutationz2TestBinaryOpsMutating.test_iteration_with_mutation  ss    	 	 	
	 	 	
	 	 	 	((,,,((,,,((,,,,,r   N)r
   r   r   rI  rM  rQ  rU  rX  r[  r_  rb  re  rh  rl  rp  rs  rv  r  r   r   r   rC  rC  M  s        > > >> > >= = => > >= = => > >= = == = == = == = =, , ,
, , ,
, , ,
, , ,
- - - - -r   rC  c                       e Zd ZeZeZdS )TestBinaryOpsMutating_Set_SetNr
   r   r   rI   r<  r=  r   r   r   r  r            LLLLr   r  c                       e Zd ZeZeZdS )'TestBinaryOpsMutating_Subclass_SubclassNr
   r   r   r  r<  r=  r   r   r   r  r            LLLLr   r  c                       e Zd ZeZeZdS )"TestBinaryOpsMutating_Set_SubclassNr
   r   r   rI   r<  r  r=  r   r   r   r  r            LLLLr   r  c                       e Zd ZeZeZdS )"TestBinaryOpsMutating_Subclass_SetNr
   r   r   r  r<  rI   r=  r   r   r   r  r            LLLLr   r  c                   P    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S )TestMethodsMutatingc                 D    |                      t          j                   d S r   )rA  rI   r   r   s    r   test_issubset_with_mutationz/TestMethodsMutating.test_issubset_with_mutation  s    ((66666r   c                 D    |                      t          j                   d S r   )rA  rI   r   r   s    r   test_issuperset_with_mutationz1TestMethodsMutating.test_issuperset_with_mutation      ((88888r   c                 D    |                      t          j                   d S r   )rA  rI   r|   r   s    r   test_intersection_with_mutationz3TestMethodsMutating.test_intersection_with_mutation  s    (()9:::::r   c                 D    |                      t          j                   d S r   )rA  rI   re   r   s    r   test_union_with_mutationz,TestMethodsMutating.test_union_with_mutation  s    ((33333r   c                 D    |                      t          j                   d S r   )rA  rI   r   r   s    r   test_difference_with_mutationz1TestMethodsMutating.test_difference_with_mutation  r  r   c                 D    |                      t          j                   d S r   )rA  rI   r   r   s    r   'test_symmetric_difference_with_mutationz;TestMethodsMutating.test_symmetric_difference_with_mutation  s    (()ABBBBBr   c                 D    |                      t          j                   d S r   )rA  rI   r   r   s    r   test_isdisjoint_with_mutationz1TestMethodsMutating.test_isdisjoint_with_mutation  r  r   c                 D    |                      t          j                   d S r   )rA  rI   rk  r   s    r   $test_difference_update_with_mutationz8TestMethodsMutating.test_difference_update_with_mutation  s    (()>?????r   c                 D    |                      t          j                   d S r   )rA  rI   r_  r   s    r   &test_intersection_update_with_mutationz:TestMethodsMutating.test_intersection_update_with_mutation  s    (()@AAAAAr   c                 D    |                      t          j                   d S r   )rA  rI   r   r   s    r   .test_symmetric_difference_update_with_mutationzBTestMethodsMutating.test_symmetric_difference_update_with_mutation  s    (()HIIIIIr   c                 D    |                      t          j                   d S r   )rA  rI   rV  r   s    r   test_update_with_mutationz-TestMethodsMutating.test_update_with_mutation  s    ((44444r   N)r
   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r    s        7 7 79 9 9; ; ;4 4 49 9 9C C C9 9 9@ @ @B B BJ J J5 5 5 5 5r   r  c                       e Zd ZeZeZdS )TestMethodsMutating_Set_SetNr  r   r   r   r  r    r  r   r  c                       e Zd ZeZeZdS )%TestMethodsMutating_Subclass_SubclassNr  r   r   r   r  r    r  r   r  c                       e Zd ZeZeZdS ) TestMethodsMutating_Set_SubclassNr  r   r   r   r  r    r  r   r  c                       e Zd ZeZeZdS ) TestMethodsMutating_Subclass_SetNr  r   r   r   r  r    r  r   r  c                        e Zd ZeZej        ZdS )TestMethodsMutating_Set_DictN)r
   r   r   rI   r<  r?   r@   r=  r   r   r   r  r    s        L=LLLr   r  c                       e Zd ZeZeZdS )TestMethodsMutating_Set_ListN)r
   r   r   rI   r<  ri   r=  r   r   r   r  r    s        LLLLr   r  c              #      K   t          |           } 	 t          t          |           g          }t          |           D ]}|V  ||z  V  dS # t          $ r t                      V  Y dS w xY w)z-Generates all subsets of a set or sequence U.N)r   rV   r   r  r   )Urm   r  s      r   r  r    s      QAtAwwi  ! 	 	AGGGa%KKKK	 	    kks   :A A-,A-c                     d t          |           D             t          fdt          t          |                     D                       S )z!Graph of n-dimensional hypercube.c                 .    g | ]}t          |g          S r   rV   )r   rm   s     r   r  zcube.<locals>.<listcomp>  s     333Q)QC..333r   c                 L    g | ]t          fd D                       f S )c                     g | ]}|z  S r   r   )r   r>   rm   s     r   r  z#cube.<locals>.<listcomp>.<listcomp>  s    888!888r   r  )r   rm   
singletonss    @r   r  zcube.<locals>.<listcomp>  sL     . . . Y8888Z88899: . . .r   )r   r?   r  )r  r  s    @r   cuber    sb    33%((333J . . . ."588,,. . . / / /r   c                     i }| D ][|          D ]Pfd|          D             }fd|          D             }t          ||z             |t          g          <   Q\|S )zGraph, the vertices of which are edges of G,
    with two vertices being adjacent iff the corresponding
    edges share a vertex.c                 >    g | ]}|k    t          |g          S r   r  r   r   rm   r   s     r   r  zlinegraph.<locals>.<listcomp>  *    ;;;qAFF)QqE""FFFr   c                 >    g | ]}|k    t          |g          S r   r  r  s     r   r  zlinegraph.<locals>.<listcomp>  r  r   r  )r  r  nxnyrm   r   s       @@r   	linegraphr    s     	A 3 31 	3 	3A;;;;;AaD;;;B;;;;;AaD;;;B"+BrE"2"2Ai1	3 Hr   c                    t                      }|                                 D ]\  }}|D ]}| |         D ]}||k    r	|| |         v r&|                    t          |||g                     9| |         D ]}||k    r	|| |         v r'|                    t          ||||g                     :| |         D ]@}||k    s||k    r|| |         v r'|                    t          |||||g                     Aƌь|S )zKReturn a set of faces in G.  Where a face is a set of vertices on that face)rI   itemsr   rV   )r  r   rD  edgesrF  v3v4v5s           r   facesr    s[    	AWWYY K K	E 	K 	KBe K K882;;EE)RRL112222e 
K 
K88$2;;EE)RR,<"="=>>>>&'e K K#%88rRxx$,#%2;;$%EE)RRR4H*I*I$J$J$J	K
KK	K$ Hr   c                       e Zd Zd Zd ZdS )
TestGraphsc                 2   t          d          }t          |          }|                     t          |          d           |                                D ]%}|                     t          |          d           &t          d |                                D                       }|                     ||           t          |          }|                     t          |          d           |D ]%}|                     t          |          d           &d S )Nr   r  c              3   $   K   | ]}|D ]}|V  d S r   r   )r   r  rW  s      r   r   z'TestGraphs.test_cube.<locals>.<genexpr>$  s/      AAe5AAaAAAAAAAr   r  rI  )r  rI   rM   rR   r  r  )r   r  	vertices1edge	vertices2	cubefacesfaces          r   	test_cubezTestGraphs.test_cube  s   GGFF	Y+++HHJJ 	+ 	+DSYY****AAqxxzzAAAAA	I...!HH	Y+++ 	+ 	+DSYY****	+ 	+r   c                 *   t          d          }t          |          }|                     t          |          d           t	          |          }|                                D ]%}|                     t          |          d           &t	          d |                                D                       }|                     ||           t          |          }t          j        t                    }|D ]}|t          |          xx         dz  cc<    |                     |d         d           |                     |d         d           |D ]B}	|	}
|                     t          |
          d           |
D ]}| 
                    ||           Cd S )	Nr      rI  c              3   $   K   | ]}|D ]}|V  d S r   r   )r   r  r  s      r   r   z0TestGraphs.test_cuboctahedron.<locals>.<genexpr>9  s0      WWUQVWWDWWWWWWWr   r   r  r  rD   )r  r  rM   rR   rI   r  r  r   defaultdictr3   rW   )r   r  cuboctahedronverticesr  othervertices	cubofaces	facesizesr  vertexr  cubeverts               r   test_cuboctahedronzTestGraphs.test_cuboctahedron,  s    GG!!]++R000}%%"))++ 	, 	,ESZZ++++WWm.B.B.D.DWWWWW=111-((	+C00	 	& 	&Dc$ii   A%    1q)))1q)))# 	+ 	+FDSYY***  + +h****+	+ 	+r   N)r
   r   r   r  r  r   r   r   r  r    s2        + + ++ + + + +r   r  __main__)lr  testr   test.supportr   r  r  rz  r   r   randomr   r   r  r   collections.abcr  	Exceptionr   r   r   r$   r3   r+   r5   TestCaser  rI   r  r  r  rV   r  r  r  r  r  r  r4  r  r^  rd  rp  rx  r|  r  r  r  r  r  r  r  r  r
  r-  rA  rE  rG  rJ  rL  rN  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-  rC  r  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 {E {E {E {E {E {Ez	[3 [3 [3 [3 [3lH- [3 [3 [3z	 	 	 	 	# 	 	 	!0 !0 !0 !0 !0g !0 !0 !0HG+ G+ G+ G+ G+L("3 G+ G+ G+R	 	 	 	 		 	 	 	6; 6; 6; 6; 6;M 6; 6; 6;r' ' ' ' '3 ' ' '/ / / / /x0 / / /
' ' ' ' ' ' ' ') ) ) ) )%= ) ) )
 CEE	f) f) f) f) f) f) f) f)T    h&7   & & & & &L(*; & & &"& & & & &h&7 & & &"    x'8   	) 	) 	) 	) 	)x'8 	) 	) 	)	) 	) 	) 	) 	)h&7 	) 	) 	)) ) ) ) )<1B ) ) )    J J J J Jx0 J J J6	 	 	 	 	H% 	 	 	E4 E4 E4 E4 E4H% E4 E4 E4RR0 R0 R0 R0 R0H% R0 R0 R0lF= F= F= F= F=" F= F= F=T#3 #3 #3 #3 #3 #3 #3 #3L    ;(9       k8+<       k8+<       X%6       ;(9   pJ pJ pJ pJ pJ pJ pJ pJh% % % % %183D % % %$ $ $ $ $.0A $ $ $% % % % %2H4E % % %$ $ $ $ $/1B $ $ $$ $ $ $ $0(2C $ $ $$ $ $ $ $3X5F $ $ $7 7 7 7 7 7 7 7*    {H$5   " " " " ";(9 " " "* * * * *X%6 * * *! ! ! ! !{H$5 ! ! !+ + + + +X%6 + + +', ', ', ', ',X& ', ', ',V  
                     	 	 	 	 	 	 	 	                           2 2 2'a 'a 'a 'a 'ah/ 'a 'a 'aR              & & & & &H% & & &R!G !G !G !G !G !G !G !GHD- D- D- D- D-2 D- D- D-N    $98;L       .CXEV       )>@Q       )>@Q   
!5 !5 !5 !5 !50 !5 !5 !5H    "5x7H       ,?AR       ':H<M       ':H<M   ! ! ! ! !#68I ! ! !    #68I   	 	 	/ / /
 
 
  4,+ ,+ ,+ ,+ ,+" ,+ ,+ ,+b zHMOOOOO r   