
    ;e5                    2   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dl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 d dlmZ d dlmZ 	 d dlZn# e$ r dZY nw xY w G d de
j                  Z G d de
j                  Z G d	 d
e
j                  Z G d de
j                  Z G d de
j                  Z G d de
j                  Z G d de
j                  Z G d de          Z G d de
j                  Ze dk    r e
j!                     dS dS )    N)deepcopy)redirect_stdout)supportc                       e Zd Zd ZddZd dZd!d
Zd"dZd#dZd$dZ	d Z
d Zg fdZd Zd Zd Zd Z ej        d          d             Z ej        d          d             Zd ZdS )%OperatorsTestc                 *   t          j        j        | g|R i | i ddddddddd	d
dddddddddddddddddddddddd d!d"d#d$| _        t	          | j                                                  D ].\  }}|                                r|d%z   }nd&|z  }|| j        |<   /ddd'd(d)d*d+| _        t	          | j                                                  D ].\  }}|                                r|d,z   }nd-|z  }|| j        |<   /d S ).Nadd+sub-mul*matmul@truediv/floordivz//divmodpowz**lshiftz<<rshiftz>>and&xor^or|cmplt<le<=eq==!=>>=)negtgez(a, b)za %s babs~intfloat)posnegr+   invertr-   r.   z(a)z%s a)unittestTestCase__init__binopslistitemsislowerunops)selfargskwargsnameexprs        &/usr/lib/python3.11/test/test_descr.pyr4   zOperatorsTest.__init__   s   "49$999&999
3
3
 3
 c	

 s
 
 h
 4
 d
 d
 3
 3
 #
 5
 #
  $!
" $#
$ )
 
 
. t{002233 	% 	%JD$||~~ 'h$ $DK 
 

 tz//1122 	$ 	$JD$||~~ %e|}#DJt	$ 	$    len(a)__len__c                    d|i}|                      t          ||          |           t          |          }t          ||          }||j        vr|j        d         }||j        v|                      t          |d|          |j        |                    |                       ||          |           t          ||          }|                       |            |           d S )Nar   im_funcassertEqualevaltypegetattr__dict__	__bases__)	r:   rD   resr>   methdtmbms	            r?   	unop_testzOperatorsTest.unop_testK   s    !HdA,,,GGAt !*$$AA !*$$ 	Iq111:d3CDDD1s###Qs#####r@   a+b__add__c                    ||d}|                      t          ||          |           t          |          }t          ||          }||j        vr|j        d         }||j        v|                      t          |d|          |j        |                    |                       |||          |           t          ||          }	|                       |	|          |           d S )NrD   br   rE   rF   )
r:   rD   rX   rM   r>   rN   rO   rP   rQ   rR   s
             r?   
binop_testzOperatorsTest.binop_test[   s    !dA,,,GGAt!*$$AA !*$$ 	Iq111:d3CDDD1a#&&&QA$$$$$r@   a[b:c]__getitem__c           	         |||d}|                      t          ||          |           t          |          }t          ||          }	||j        vr|j        d         }||j        v|                      t          |	d|	          |j        |                    |                       |	|t          ||                    |           t          ||          }
|                       |
t          ||                    |           d S )NrD   rX   cr   rE   )rG   rH   rI   rJ   rK   rL   slice)r:   rD   rX   r^   rM   r>   rN   rO   rP   rQ   rR   s              r?   sliceop_testzOperatorsTest.sliceop_testj   s    !!$$dA,,,GGAt!*$$AA !*$$ 	Iq111:d3CDDD1eAqkk**C000QE!QKK#.....r@   a+=b__iadd__c                 |   t          |          |d}t          ||           |                     |d         |           t          |          }t	          ||          }||j        vr|j        d         }||j        v|                     t	          |d|          |j        |                    t          |          |d<    ||d         |           |                     |d         |           t          |          |d<   t	          |d         |          }	 |	|           |                     |d         |           d S )NrW   rD   r   rE   r   execrG   rI   rJ   rK   rL   )
r:   rD   rX   rM   stmtrN   rO   rP   rQ   rR   s
             r?   
setop_testzOperatorsTest.setop_testx   s3   1++A&&T13%%%GGAt!*$$AA !*$$ 	Iq111:d3CDDD!#	!C&!3%%%!#QsVT""
13%%%%%r@   a[b]=c__setitem__c                    t          |          ||d}t          ||           |                     |d         |           t          |          }t	          ||          }	||j        vr|j        d         }||j        v|                     t	          |	d|	          |j        |                    t          |          |d<    |	|d         ||           |                     |d         |           t          |          |d<   t	          |d         |          }
 |
||           |                     |d         |           d S )Nr]   rD   r   rE   rd   )r:   rD   rX   r^   rM   rf   rN   rO   rP   rQ   rR   s              r?   set2op_testzOperatorsTest.set2op_test   s9   1++AA..T13%%%GGAt!*$$AA !*$$ 	Iq111:d3CDDD!#	!C&!Q3%%%!#QsVT""
1a3%%%%%r@   a[b:c]=dc                    t          |          |||d}t          ||           |                     |d         |           t          |          }	||	j        vr|	j        d         }	||	j        vt          |	|          }
|                     t          |
d|
          |	j        |                    t          |          |d<    |
|d         t          ||          |           |                     |d         |           t          |          |d<   t          |d         |          } |t          ||          |           |                     |d         |           d S )N)rD   rX   r^   rO   rD   r   rE   )r   re   rG   rI   rK   rL   rJ   r_   )r:   rD   rX   r^   rO   rM   rf   rN   
dictionaryrP   rQ   rR   s               r?   setsliceop_testzOperatorsTest.setsliceop_test   sT   #A;;QQQ??
T:C#...GG!*$$AA !*$$At 	Iq111:d3CDDD"1++
3	*S/5A;;***C#..."1++
3Z_d++
5A;;C#.....r@   c           	         |                      dgdgddgdd           |                      g ddddd           |                      g ddd	dd           |                      g dddd
d           |                     g dd	dddgdd           |                     dgdgddgdd           |                     ddgdg ddd           |                     g dddd           |                      ddgdg ddd           |                      ddgdg ddd           |                     ddgddddgdd           |                     g dddddgg ddd           d S ) N      rT   rU   rq   rr      b in a__contains__   r   a[b]r[   rZ   ra   rb   rt   rq   rr   rq   rr   rq   rr   a*=b__imul__rA   rB   a*b__mul__b*a__rmul__rh   ri   rq   rr   rt   rw         rq   r   r   rw   rl   )rY   r`   rg   rS   rk   ro   r:   s    r?   
test_listszOperatorsTest.test_lists   s    	aS1Q%	:::Ax@@@Ax@@@Av}==='''1a!A-HHHaS1Q%<<<1q---DDDwww8Y7771q---	BBB1q---
CCC!A1qeX}EEEYYY1qeYYY
%	' 	' 	' 	' 	'r@   c           	         |                      ddddddd           |                      ddddddd           |                      ddddddd	           ddd}g }t          |                                          D ]}|                    |           g }t	          |          D ]}|                    |           |                     ||           g }|                                D ]}|                    |           |                     ||           g }t                              |          D ]}|                    |           |                     ||           ddd}|                     |dd
d           |                     t          t          |          i           |           |                     t          |                                i           |           |                     ddddddddddd           d S )Nrr   rw   rq   rt   rq   ru   rv   r   rx   r[   rA   rB   rt   rs   rh   ri   )rY   r6   keysappenditerrG   __iter__dictrS   rH   repr__repr__rk   )r:   rO   l1ils        r?   
test_dictszOperatorsTest.test_dicts   s   1q		1a>BBB1q		1a>BBB1q		1a???AJJaffhh 	 	AIIaLLLLa 	 	AHHQKKKKB 	 	AHHQKKKKBq!! 	 	AHHQKKKKBAJJq!Xy111d1ggr**A...ajjllB//333AAqQQ--%	' 	' 	' 	' 	'r@   c                    ||d}| j                                         D ]G\  }}||vr>d|z  }t          ||          r)t          ||          }|                     |||||           Ht          | j                                                  D ]F\  }}||vr=d|z  }t          ||          r(t          ||          }|                     ||||           Gd S )NrW   z__%s__)r5   r7   hasattrrH   rY   r6   r9   rS   )r:   rD   rX   skipr   r=   r>   rM   s           r?   number_operatorszOperatorsTest.number_operators   s   Q+++-- 	; 	;JD$4$1d## ;tT**COOAq#tT:::tz//1122 	7 	7JD$4$1d## 7tT**CNN1c4666	7 	7r@   c                    |                      dd           |                     d                                d           |                     d                                d            G d dt                    }|                      |d          d           	  |            dz    |                     d	           d S # t
          $ r Y d S w xY w)
Nd   rt   rq   r   c                       e Zd Zd ZdS )"OperatorsTest.test_ints.<locals>.Cc                     t           S NNotImplementedr:   others     r?   rU   z*OperatorsTest.test_ints.<locals>.C.__add__       %%r@   N)__name__
__module____qualname__rU    r@   r?   Cr      #        & & & & &r@   r   r    z+NotImplemented should have caused TypeError)r   rG   __bool__r-   fail	TypeErrorr:   r   s     r?   	test_intszOperatorsTest.test_ints   s    c1%%%!+++!+++	& 	& 	& 	& 	& 	& 	& 	& 	1q!!!	EACC"HH IICDDDDD  	 	 	DD	s   B> >
CCc                 2    |                      dd           d S )Ng      Y@      @)r   r   s    r?   test_floatszOperatorsTest.test_floats  s    eS)))))r@   c                    |                      ddg d            G d dt                    } |dd	          }|                     t          |          d
           |                     |j        d            ||d	          }|                     t          |          d           |                     |j        d            |d          }|                     t          |          d           |                     |j        d           d S )Ny              Y@              @)	r   r!   r)   r*   r-   r.   r   r   mod)r   c                   $    e Zd ZdgZd Zd ZeZdS ),OperatorsTest.test_complexes.<locals>.Numberprecc                 `    t          j        | g|R  }|                    dd          |_        |S )Nr      )complex__new__getr   )clsr;   kwdsresults       r?   r   z4OperatorsTest.test_complexes.<locals>.Number.__new__  s3     4t444"hhvr22r@   c                     | j         }| j        dk    rd|| j        fz  S | j        dk    rd|| j        fz  S d|| j        || j        fz  S )N        %.*gz%.*gjz(%.*g+%.*gj))r   imagreal)r:   r   s     r?   r   z5OperatorsTest.test_complexes.<locals>.Number.__repr__  s_    y9##!T49$5559##"dDI%666%ty$	(JJJr@   N)r   r   r   	__slots__r   r   __str__r   r@   r?   Numberr     s=        I  K K K GGGr@   r   gQ	@r   r   z3.14rr   z3.1g     Pm@z234.5r   )r   r   rG   r   r   )r:   r   rD   s      r?   test_complexeszOperatorsTest.test_complexes  s9   fd 2O 2O 2O 	P 	P 	P	 	 	 	 	W 	 	 	 F4a   a&)))###F11a%(((###F5MMa'***$$$$$r@   c                     |                      t                              dd          t          dd                     |                      t                              dd          d           d S )Nr   g      @r   rq   g       )rG   r   __radd__r.   __rsub__r   s    r?   test_explicit_reverse_methodsz+OperatorsTest.test_explicit_reverse_methods(  s\    ))"c22GC4E4EFFFQ//66666r@   "the module 'xxsubtype' is internalc           
      d   dd l }dd l}d%d}||j        |j        <   |                      |dg           |dg           |ddg          dd           |                      |g d          dddd	           |                      |g d          d
ddd	           |                      |g d          dddd           |                      |g d          dd |ddg          dd           |                      |dg           |dg           |ddg          dd           |                      |ddg          d |g d          dd           |                      |g d          ddd           |                      |ddg          d |g d          dd           |                      |ddg          d |g d          dd           |                      |ddg          dd |ddg          dd           | 	                     |g d          dd |ddg           |g d          d d            G d! d"|j                  } |            }| 
                    |g            | 
                    |                                d           |                    d#           | 
                    |d#g           | 
                    |                                d           |                    d$           | 
                    |                                d$           d S )&Nr   c                 4    dd l }|                    |           S Nr   )	xxsubtypespamlist)r   memospams      r?   r   z/OperatorsTest.test_spam_lists.<locals>.spamlist2  s     $$$$==###r@   rq   rr   rT   rU   rs   ru   rv   rw   rx   r[   rZ   ra   rb   rt   ry   rz   r{   rA   rB   r|   r}   r~   r   rh   ri   r   r   r   r   rl   c                       e Zd Zd ZdS )(OperatorsTest.test_spam_lists.<locals>.Cc                     dS Nrq   r   r   s    r?   fooz,OperatorsTest.test_spam_lists.<locals>.C.fooO      !!r@   Nr   r   r   r   r   r@   r?   r   r   N          #####r@   r   r   *   r   )copyr   _deepcopy_dispatchr   rY   r`   rg   rS   rk   ro   rG   r   r   getstatesetstate)r:   r   r   r   r   rD   s         r?   test_spam_listszOperatorsTest.test_spam_lists-  s    	'&&&&&&&	$ 	$ 	$ 	$
 2:.!xx}}hh!uoou 	" 	" 	"))1a>JJJ))1a>JJJ))1aGGG((777++Q88QqE??H'	) 	) 	)!xx}}hh!uoov"	$ 	$ 	$!AHH]]],C,CV"	$ 	$ 	$xx((!XyAAA!AHH]]],C,CU!	# 	# 	#!AHH]]],C,CU"	$ 	$ 	$1Q%!Q!A&	( 	( 	(XXiii00!Q!A%Xiii00*m	M 	M 	M	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ACCB!$$$	SE"""q)))	

2r*****r@   c                    dd l }dd l}dd}||j        |j        <   |                      |ddd          dddd           |                      |ddd          dddd           |                      |ddd          ddd	d
            |ddd          }g }t          |                                          D ]}|                    |           g }t          |          D ]}|                    |           | 	                    ||           g }|
                                D ]}|                    |           | 	                    ||           g }t           |i                     
                    |          D ]}|                    |           | 	                    ||           ddd} ||          }	|                     |	ddd           |                     |	t          |          dd           |                      |ddd          dd |dddd          dd            G d d|j                  }
 |
            }| 	                    t          |                                          g            | 	                    |                                d           d|d<   | 	                    t          |                                          dg           | 	                    |                                d           |                    d           | 	                    |                                d           d S )Nr   c                     dd l }|                                }t          |                                           D ]
\  }}|||<   |S r   )r   spamdictr6   r7   )rO   r   r   sdkvs         r?   r   z/OperatorsTest.test_spam_dicts.<locals>.spamdict]  sL    $$$$BQWWYY  11Ir@   rr   rw   r   rq   ru   rv   rx   r[   rA   rB   zrepr(a)r   rt   rs   rh   ri   c                       e Zd Zd ZdS )(OperatorsTest.test_spam_dicts.<locals>.Cc                     dS r   r   r   s    r?   r   z,OperatorsTest.test_spam_dicts.<locals>.C.foo  r   r@   Nr   r   r@   r?   r   r     r   r@   r   barr   r   r   r   r   )r   r   r   r   rY   r6   r   r   r   rG   r   rI   rS   r   rk   r7   r   r   r   )r:   r   r   r   rO   r   r   r   	straightdspamdr   rD   s               r?   test_spam_dictszOperatorsTest.test_spam_dictsY  su    	'&&&&&&&	 	 	 	 2:.A++Q8^LLLA++Q8^LLLA++Q6=IIIHAYYaffhh 	 	AIIaLLLLa 	 	AHHQKKKKB 	 	AHHQKKKKBhhrll##,,Q// 	 	AHHQKKKKBAJJ	##ua9555ud9ooy*EEEQ)),,aHHA]]4K4K]	, 	, 	,	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ACCaggii"---!$$$%aggii>*:;;;q)))	

3s+++++r@   c                     |                      t          t          j                                                  t          j                   d S r   )rG   rangesysmaxsizerB   r   s    r?   test_wrap_lenfunc_bad_castz(OperatorsTest.test_wrap_lenfunc_bad_cast  s6    s{++3355s{CCCCCr@   N)rA   rB   )rT   rU   )rZ   r[   )ra   rb   )rh   ri   )rl   ri   )r   r   r   r4   rS   rY   r`   rg   rk   ro   r   r   r   r   r   r   r   r   impl_detailr   r   r   r   r@   r?   r   r      s}       .$ .$ .$`$ $ $ $ % % % %/ / / /& & & &&& & & &&/ / / /&' ' '"' ' '< +- 7 7 7 7"E E E$* * *% % %B7 7 7
 W=>>)+ )+ ?>)+V W=>>/, /, ?>/,bD D D D D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 fdZej        d             Z ej        d          d             Zd Zej        d             Z ej        d          d             Zd Z d Z!d Z"e#j$        d             Z%d  Z&e#j$        d!             Z'd" Z(d# Z)d$ Z*d% Z+ ej        d&          d'             Z,d( Z-d) Z.d* Z/d+ Z0 e#j1        e2j3        j4        d,k    d-          d.             Z5ej6        d/             Z7d0 Z8d1 Z9d2 Z: fd3Z;d4 Z<d5 Z=d6 Z>d7 Z?d8 Z@d9 ZAd: ZBd; ZCd< ZDd= ZEd> ZFd? ZGd@ ZHdA ZIdB ZJdC ZKdD ZLdE ZMdF ZNdG ZOdH ZPdI ZQdJ ZRdK ZSdL ZTdM ZUdN ZVdO ZWdP ZXdQ ZYdR ZZdS Z[dT Z\dU Z]dV Z^dW Z_dX Z`dY ZadZ Zbd[ Zcd\ Zd ej        d]          d^             Zed_ Zfd` Zgda Zhdb Zidc Zjdd Zkde Zldf Zmdg Zndh Zodi Zpdj Zqdk Zrdl Zsdm Ztdn Zudo Zvdp Zwdq Zxdr Zyds Zzdt Z{du Z|dv Z}dw Z~dx Zdy Zdz Zd{ Zd| Zd} Zd~ Z fdZ e#j1        edu d          d             Zd Zd Z xZS )ClassPropertiesAndMethodsc                 X    |                      t          ||          |d|           d S )Nz has no attribute )
assertTruer   r:   objr=   s      r?   assertHasAttrz'ClassPropertiesAndMethods.assertHasAttr  sA    T**47CC>	@ 	@ 	@ 	@ 	@r@   c                 X    |                      t          ||          |d|           d S )Nz has unexpected attribute )assertFalser   r   s      r?   assertNotHasAttrz*ClassPropertiesAndMethods.assertNotHasAttr  sC    d++=@SS$$G	I 	I 	I 	I 	Ir@   c                                           t          t          t                                                    i t                     t                      }                     |i                                 |j        t                                          |t                      G  fddt                    }                      t          |t                                |d          }                     |j        d            |dd          }                     |d         dk    o|d         d            |            }                     |j        d	                                |                                d	           |	                    d
                                |j        d
                                |                                d
           |	                    d                                |j        d                                |                                d                                |d         d
           d|d<                        |d         d           d}t          |          D ]/} |            ||<   t          |          D ]}||z  ||         |<   0t          |          D ]9}t          |          D ]'}                     ||         |         ||z             (:d S )Nc                   :    e Zd ZdZ fdZd Z fdZd Zd ZdS )6ClassPropertiesAndMethods.test_python_dicts.<locals>.Cc                     |r0                     t          |          d           |d         | _        |r,t          |                                          D ]\  }}|| |<   d S d S Nrq   r   )rG   lenstater6   r7   )
self_localrD   kwr   r   r:   s        r?   r4   z?ClassPropertiesAndMethods.test_python_dicts.<locals>.C.__init__  s}     ,$$SVVQ///'(tJ$ * $RXXZZ 0 0 * *1()
1* ** *r@   c                 .    |                      |d          S r   )r   r:   keys     r?   r[   zBClassPropertiesAndMethods.test_python_dicts.<locals>.C.__getitem__  s    xxQ'''r@   c                                          |t          d                     t                              | ||           d S r   )assertIsInstancerI   r   ri   )r	  r  valuer:   s      r?   ri   zBClassPropertiesAndMethods.test_python_dicts.<locals>.C.__setitem__  s=    %%c477333  S%88888r@   c                     || _         d S r   r  r:   r  s     r?   r   z?ClassPropertiesAndMethods.test_python_dicts.<locals>.C.setstate      "


r@   c                     | j         S r   r  r   s    r?   r   z?ClassPropertiesAndMethods.test_python_dicts.<locals>.C.getstate  
    z!r@   N)	r   r   r   r  r4   r[   ri   r   r   r   s   r?   r   r    sy        E* * * * *( ( (9 9 9 9 9# # #" " " " "r@   r   r   rq   rr   r   r   r   r  r   
   r      2   )r   
issubclassr   r  rG   assertIs	__class__r  r   r   r   )	r:   rO   r   a1a2rD   Nr   js	   `        r?   test_python_dictsz+ClassPropertiesAndMethods.test_python_dicts  s   
4..///b$'''FFBak4(((a&&&	" 	" 	" 	" 	" 	" 	" 	" 	" 	"$ 	
1d++,,,QrUU2&&&Q1!___A%1BqE5999ACC"%%%r***	

1!$$$q)))	

2"%%%r***2""""2###q 	 	A133AaD1XX  A#!Qq 	/ 	/A1XX / /  1a!A#..../	/ 	/r@   c                 R    G d dt                     } |            }|                    g d           |                     |d         d           |                     |d         d           |                     |d         d	           |                     |dd
         d           d S )Nc                       e Zd Zd ZdS )6ClassPropertiesAndMethods.test_python_lists.<locals>.Cc                     t          |t                    r|j        |j        fS t                              | |          dz   S Nr   )
isinstancer_   startstopr6   r[   r:   r   s     r?   r[   zBClassPropertiesAndMethods.test_python_lists.<locals>.C.__getitem__  s=    a'' +7AF?*''a00366r@   Nr   r   r   r[   r   r@   r?   r   r$    s#        7 7 7 7 7r@   r   r   rq   rr   r   r   rq   e   rr   f      )r   r/  )r6   extendrG   r:   r   rD   s      r?   test_python_listsz+ClassPropertiesAndMethods.test_python_lists  s    	7 	7 	7 	7 	7 	7 	7 	7
 ACC	1s###1s###1s###3s7Y/////r@   c                     G d dt                     } |            }|                     |                                d           |                    d           |                     |                                d            G d dt                     } G d d	|          }|                     |                                |            |            }|                     |j        |            G d
 dt                     } G d d|          }|                     |j        d            |            }|                     |j        d            G d dt                     G fddt                    } G d d|          }|                     |j        d           |                     |j	        d           | 
                    d|j                    |            }|                     |                                d            G fddt                      G d d          }	 G d d|	          }
 G d d|	          } G d d	||
          }|                      |                                            d            G d d |
|          }|                      |                                            d!            G fd"d#t                      G d$ d          }	 |	            }|                     |d%           d&|_        |                     |j        d&           |                     |j        d'            G d( d)          } G d* d|          }	 G d+ d|	          }
 G d, d|	          } G d- d	||
          }|                      |            j        d            G fd.d/t                      G d0 d          }|                     j        d            |            }|                     t          |          |           |                     j        d            G d1 dt                    } |            } |             |                     d2           n# t&          $ r Y nw xY w G d3 dt                     }	 G d4 dt                    }
 G d5 dt          |	          } G d6 d	|
|          }|                     |	t          |                     g  G fd7d8t                     } G fd9d:|          } G d; d|          }	|                     d8g                                             G d< d|          }
|                     d:d8g                                             G d= d|	|
          }|                     d:d8g                                            | 
                    d>|j                    G d? d@|
|	          }|                     d:d8g                                            | 
                    d>|j                    G dA d	|t                     }|                     d:d8g                                            | 
                    d>|j                    G dB d ||          }|                     d:d8g                                            | 
                    d>|j                   t                      fdC} G dD dE|          } G dF dGt          |          } G dH dI||          }|                     |           |                     |           |                     |           g  G fdJdK          } G fdLdM|          } G dN d|          }	|                     |t          |	                     |                     dKg                                            |                     dKg                                             G dO d|          }
|                     |t          |
                     |                     dMdKg                                            |                     dMdKg                                             G dP d|	|
          }|                     |t          |                     |                     dMdKg                                            |                     dMdKg                                             G dQ d@|
|	          }|                     |t          |                     |                     dMdKg                                            |                     dMdKg                                            |                     t&                    5   G dR d	|t                     }d d d            n# 1 swxY w Y    G dS d ||          }|                     |t          |                     |                     dMdKg                                            |                     dMdKg                                             G dT dUt                      |          }|                     |t          |                     |                     dMdKg                                            |                     dMdKg                                             G dV dW|t                                }|                     |t          |                     |                     dMdKg                                            |                     dMdKg                                            |                     t&                    5   G dX dE|t1                                }d d d            n# 1 swxY w Y   |                     t&                    5   G dY dEt1                      |          }d d d            d S # 1 swxY w Y   d S )ZNc                        e Zd Zd Zd Zd ZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.Cc                     d| _         d S r   	_C__stater   s    r?   r4   z<ClassPropertiesAndMethods.test_metaclass.<locals>.C.__init__       r@   c                     | j         S r   r7  r   s    r?   r   z<ClassPropertiesAndMethods.test_metaclass.<locals>.C.getstate  
    |#r@   c                     || _         d S r   r7  r  s     r?   r   z<ClassPropertiesAndMethods.test_metaclass.<locals>.C.setstate      $r@   Nr   r   r   r4   r   r   r   r@   r?   r   r5    A        ! ! !$ $ $% % % % %r@   r   	metaclassr   r  c                       e Zd Zd ZdS )<ClassPropertiesAndMethods.test_metaclass.<locals>._metaclassc                     | S r   r   r   s    r?   myselfzCClassPropertiesAndMethods.test_metaclass.<locals>._metaclass.myself  s    CZr@   N)r   r   r   rF  r   r@   r?   
_metaclassrC    s        '''''r@   rG  c                       e Zd ZdS 3ClassPropertiesAndMethods.test_metaclass.<locals>.DNr   r   r   r   r@   r?   DrJ            Dr@   rL  c                       e Zd Zd ZdS )4ClassPropertiesAndMethods.test_metaclass.<locals>.M1c                 F    d|d<   t                               | |||          S )Nrq   __spam__rI   r   )r   r=   basesr   s       r?   r   z<ClassPropertiesAndMethods.test_metaclass.<locals>.M1.__new__  s$    #$Z ||Cud;;;r@   Nr   r   r   r   r   r@   r?   M1rO    s#        < < < < <r@   rU  c                       e Zd ZdS r5  NrK  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.C  rM  r@   rq   c                       e Zd ZdS );ClassPropertiesAndMethods.test_metaclass.<locals>._instanceNrK  r   r@   r?   	_instancerY    rM  r@   rZ  c                   0    e Zd Zed             Z fdZdS )4ClassPropertiesAndMethods.test_metaclass.<locals>.M2c                 d    t                               |           }||_        ||_        ||_        |S r   )objectr   r=   rS  r   )r   r=   rS  r   r:   s        r?   r   z<ClassPropertiesAndMethods.test_metaclass.<locals>.M2.__new__  s-    ~~c** 	"
 	r@   c           	                       }| j         D ]H}|                    d          rt          ||| j         |                             ||                      I|S )N__)r   
startswithsetattr__get__)r:   itr  rZ  s      r?   __call__z=ClassPropertiesAndMethods.test_metaclass.<locals>.M2.__call__  sh    Y[[9 G GC~~d++ ! BTYs^%;%;B%E%EFFFF	r@   N)r   r   r   staticmethodr   re  )rZ  s   r?   M2r\    sG          \      r@   rg  c                       e Zd Zd ZdS )r5  c                     dS Nr   r   r   s    r?   r   z8ClassPropertiesAndMethods.test_metaclass.<locals>.C.spam      rr@   Nr   r   r   r   r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.C  #            r@   r   r   r   c                   "     e Zd Z fdZ xZS );ClassPropertiesAndMethods.test_metaclass.<locals>.autosuperc                     t          |                               | |||          }|d d         dk    r|dd          }|d d         dk    |rd|z  }nd}t          ||t          |                     |S )Nrq   _z
_%s__super__super)superr   rb  )rA  r=   rS  r   r   r  	autosupers        r?   r   zCClassPropertiesAndMethods.test_metaclass.<locals>.autosuper.__new__  s    Iy1199):>tM M 2A2h#oo8D 2A2h#oo %'$.DD$DT5::...
r@   r   r   r   r   __classcell__)r  rt  s   @r?   rt  ro    s>                 r@   rt  c                       e Zd Zd ZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.Ac                     dS NAr   r   s    r?   rN   z8ClassPropertiesAndMethods.test_metaclass.<locals>.A.meth&      sr@   Nr   r   r   rN   r   r@   r?   r{  rx  %  #            r@   r{  c                       e Zd Zd ZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.Bc                 :    d| j                                         z   S NB	_B__superrN   r   s    r?   rN   z8ClassPropertiesAndMethods.test_metaclass.<locals>.B.meth)      T\..0000r@   Nr}  r   r@   r?   r  r  (  #        1 1 1 1 1r@   r  c                       e Zd Zd ZdS )r5  c                 :    d| j                                         z   S Nr   	_C__superrN   r   s    r?   rN   z8ClassPropertiesAndMethods.test_metaclass.<locals>.C.meth,  r  r@   Nr}  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.C+  r  r@   c                       e Zd Zd ZdS )rJ  c                 :    d| j                                         z   S NrL  )	_D__superrN   r   s    r?   rN   z8ClassPropertiesAndMethods.test_metaclass.<locals>.D.meth/  r  r@   Nr}  r   r@   r?   rL  z3ClassPropertiesAndMethods.test_metaclass.<locals>.D.  r  r@   DCBAc                       e Zd Zd ZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.Ec                 :    d| j                                         z   S )NE)	_E__superrN   r   s    r?   rN   z8ClassPropertiesAndMethods.test_metaclass.<locals>.E.meth3  r  r@   Nr}  r   r@   r?   r  r  2  r  r@   r  EBCAc                   "     e Zd Z fdZ xZS )>ClassPropertiesAndMethods.test_metaclass.<locals>.autopropertyc                    i }|                                 D ]\  }}|                    d          r-|dd          }|                    |d          \  }}|}||f||<   G|                    d          r,|dd          }|                    |d          \  }}|}||f||<   |                                 D ]\  }\  }}t          ||          ||<   t	          
|                               | |||          S )N_get_r   NN_set_)r7   ra  r   propertyrs  r   )rA  r=   rS  r   hitsr  valr   setr  autopropertys            r?   r   zFClassPropertiesAndMethods.test_metaclass.<locals>.autoproperty.__new__:  s    $

 
- 
-HC~~g.. 	-!!""g#'88C#>#>S!$'HS		00 -!!""g#'88C#>#>S!$'HS	'+zz|| 3 3OC#s (c 2 2DII\955==i<@%O O Or@   ru  )r  r  s   @r?   r  r  7  sH        O O O O O O O O O Or@   r  c                       e Zd Zd Zd ZdS )rx  c                     | j          S r   _A__xr   s    r?   _get_xz:ClassPropertiesAndMethods.test_metaclass.<locals>.A._get_xL  s    y r@   c                     | | _         d S r   r  r:   xs     r?   _set_xz:ClassPropertiesAndMethods.test_metaclass.<locals>.A._set_xN  s    2r@   N)r   r   r   r  r  r   r@   r?   r{  z3ClassPropertiesAndMethods.test_metaclass.<locals>.AK  s2        ! ! !    r@   r  r   ic                       e Zd ZdS )@ClassPropertiesAndMethods.test_metaclass.<locals>.multimetaclassNrK  r   r@   r?   multimetaclassr  V          Dr@   r  c                       e Zd Zd ZdS )rx  c                     dS rz  r   r   s    r?   r  z:ClassPropertiesAndMethods.test_metaclass.<locals>.A._get_xZ  r|  r@   Nr   r   r   r  r   r@   r?   r{  z3ClassPropertiesAndMethods.test_metaclass.<locals>.AY  r~  r@   c                       e Zd Zd ZdS )r  c                 :    d| j                                         z   S r  )r  r  r   s    r?   r  z:ClassPropertiesAndMethods.test_metaclass.<locals>.B._get_x]      T\002222r@   Nr  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.B\  #        3 3 3 3 3r@   c                       e Zd Zd ZdS )r5  c                 :    d| j                                         z   S r  )r  r  r   s    r?   r  z:ClassPropertiesAndMethods.test_metaclass.<locals>.C._get_x`  r  r@   Nr  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.C_  r  r@   c                       e Zd Zd ZdS )rJ  c                 :    d| j                                         z   S r  )r  r  r   s    r?   r  z:ClassPropertiesAndMethods.test_metaclass.<locals>.D._get_xc  r  r@   Nr  r   r@   r?   rL  z3ClassPropertiesAndMethods.test_metaclass.<locals>.Db  r  r@   c                       e Zd ZdZ fdZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.Tr   c                 (    xj         dz  c_         d S r   counter)r:   r;   Ts     r?   r4   z<ClassPropertiesAndMethods.test_metaclass.<locals>.T.__init__j  s    		Q				r@   N)r   r   r   r  r4   )r  s   r?   r  r  h  s3        G      r@   r  c                       e Zd ZdS rW  rK  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.Cl  rM  r@   c                       e Zd ZdS rW  rK  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.Cs            r@   z5calling object w/o call method should raise TypeErrorc                       e Zd Zd ZdS )rx  c                  $    t          j        | i |S r   rR  r;   r<   s     r?   r   z;ClassPropertiesAndMethods.test_metaclass.<locals>.A.__new__|  s    |T4V444r@   NrT  r   r@   r?   r{  z3ClassPropertiesAndMethods.test_metaclass.<locals>.A{  #        5 5 5 5 5r@   c                       e Zd ZdS r  NrK  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.B  rM  r@   c                       e Zd ZdS rW  rK  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.C  rM  r@   c                       e Zd ZdS rI  rK  r   r@   r?   rL  z3ClassPropertiesAndMethods.test_metaclass.<locals>.D  rM  r@   c                   H     e Zd Ze fd            Zed             Z xZS )7ClassPropertiesAndMethods.test_metaclass.<locals>.AMetac                 v                         d           t                                          | |||          S )NAMetar   rs  r   mclsr=   rS  nsr  	new_callss       r?   r   z?ClassPropertiesAndMethods.test_metaclass.<locals>.AMeta.__new__  3      )))wwtT5"===r@   c                     i S r   r   )r  r=   rS  s      r?   __prepare__zCClassPropertiesAndMethods.test_metaclass.<locals>.AMeta.__prepare__  s    	r@   r   r   r   rf  r   classmethodr  rv  r  r  s   @r?   r  r    sc        > > > > > \>   [    r@   r  c                   L     e Zd Ze fd            Ze fd            Z xZS )7ClassPropertiesAndMethods.test_metaclass.<locals>.BMetac                 v                         d           t                                          | |||          S )NBMetar  r  s       r?   r   z?ClassPropertiesAndMethods.test_metaclass.<locals>.BMeta.__new__  r  r@   c                 V    t                                          ||          }d|d<   |S )NTBMeta_was_here)rs  r  )r  r=   rS  r  r  s       r?   r  zCClassPropertiesAndMethods.test_metaclass.<locals>.BMeta.__prepare__  s,    WW((u55'+#$	r@   r  r  s   @r?   r  r    sm        > > > > > \>     [    r@   r  c                       e Zd ZdS rx  NrK  r   r@   r?   r{  z3ClassPropertiesAndMethods.test_metaclass.<locals>.A  rM  r@   c                       e Zd ZdS r  rK  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.B  rM  r@   c                       e Zd ZdS rW  rK  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.C  rM  r@   r  c                       e Zd ZdS 4ClassPropertiesAndMethods.test_metaclass.<locals>.C2NrK  r   r@   r?   C2r    rM  r@   r  c                       e Zd ZdS rI  rK  r   r@   r?   rL  z3ClassPropertiesAndMethods.test_metaclass.<locals>.D  rM  r@   c                       e Zd ZdS r  NrK  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.E  rM  r@   c                      S r   r   )r;   r<   markers     r?   funcz6ClassPropertiesAndMethods.test_metaclass.<locals>.func  s    Mr@   c                       e Zd ZdS 3ClassPropertiesAndMethods.test_metaclass.<locals>.XNrK  r   r@   r?   Xr    rM  r@   r  c                       e Zd ZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.YNrK  r   r@   r?   Yr    rM  r@   r  c                       e Zd ZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.ZNrK  r   r@   r?   Zr    rM  r@   r  c                   <     e Zd Z fdZefd            Z xZS ):ClassPropertiesAndMethods.test_metaclass.<locals>.ANotMetac                 p                         d           t                                          |           S NANotMetar  r  r;   r<   r  r  s      r?   r   zBClassPropertiesAndMethods.test_metaclass.<locals>.ANotMeta.__new__  -      ,,,wwt,,,r@   c                 2                         d           i S r  r   )r  r=   rS  prepare_callss      r?   r  zFClassPropertiesAndMethods.test_metaclass.<locals>.ANotMeta.__prepare__  s    $$Z000	r@   r   r   r   r   r  r  rv  r  r  r  s   @r?   r  r    sc        - - - - - -     [    r@   r  c                   >     e Zd Z fdZe fd            Z xZS ):ClassPropertiesAndMethods.test_metaclass.<locals>.BNotMetac                 p                         d           t                                          |           S NBNotMetar  r  s      r?   r   zBClassPropertiesAndMethods.test_metaclass.<locals>.BNotMeta.__new__  r  r@   c                 r                         d           t                                          ||          S r  )r   rs  r  )r  r=   rS  r  r  s      r?   r  zFClassPropertiesAndMethods.test_metaclass.<locals>.BNotMeta.__prepare__  s1    $$Z000ww**4777r@   r  r  s   @r?   r	  r    sh        - - - - - - 8 8 8 8 8 [8 8 8 8 8r@   r	  c                       e Zd ZdS r  rK  r   r@   r?   r{  z3ClassPropertiesAndMethods.test_metaclass.<locals>.A  rM  r@   c                       e Zd ZdS r  rK  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.B  rM  r@   c                       e Zd ZdS rW  rK  r   r@   r?   r   z3ClassPropertiesAndMethods.test_metaclass.<locals>.C  rM  r@   c                       e Zd ZdS r  rK  r   r@   r?   r  z4ClassPropertiesAndMethods.test_metaclass.<locals>.C2  rM  r@   c                       e Zd ZdS rI  rK  r   r@   r?   rL  z3ClassPropertiesAndMethods.test_metaclass.<locals>.D          r@   c                       e Zd ZdS r  rK  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.E  rM  r@   c                       e Zd ZdS )3ClassPropertiesAndMethods.test_metaclass.<locals>.FNrK  r   r@   r?   Fr    rM  r@   r  c                       e Zd ZdS )4ClassPropertiesAndMethods.test_metaclass.<locals>.F2NrK  r   r@   r?   F2r     rM  r@   r  c                       e Zd ZdS r  rK  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.X+  r  r@   c                       e Zd ZdS r  rK  r   r@   r?   r  z3ClassPropertiesAndMethods.test_metaclass.<locals>.X.  r  r@   )rI   rG   r   r   rF  r  rQ  r^  r=   rS  assertInr   r   rN   r   r  r  r  r   r   r  clearrK   assertRaisesr-   )r:   r   rD   rG  rL  rO   rU  r^   rg  r{  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  rZ  r  rt  r  r  r  s                           @@@@@@@r?   test_metaclassz(ClassPropertiesAndMethods.test_metaclass  sU   	% 	% 	% 	% 	%$ 	% 	% 	% 	% ACCq)))	

2r***	( 	( 	( 	( 	( 	( 	( 	(	 	 	 	 	* 	 	 	 	Q'''ACCa(((	< 	< 	< 	< 	< 	< 	< 	<	 	 	 	 	" 	 	 	 	Q'''ACCQ'''	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	" 	 	 	 	 	%%%"%%%faf%%%ACC2&&&	 	 	 	 	 	 	 	 	 		 	 	 	 	) 	 	 	 		1 	1 	1 	1 	1 	1 	1 	1	1 	1 	1 	1 	1 	1 	1 	1	1 	1 	1 	1 	11 	1 	1 	1 	V,,,	1 	1 	1 	1 	11 	1 	1 	1 	V,,,	O 	O 	O 	O 	O 	O 	O4 	O 	O 	O(	 	 	 	 	, 	 	 	 	
 ACCa%%%b!!!#&&&	 	 	 	 	\9 	 	 		 	 	 	 	. 	 	 	 		3 	3 	3 	3 	3 	3 	3 	3	3 	3 	3 	3 	3 	3 	3 	3	3 	3 	3 	3 	31 	3 	3 	3 	'''	 	 	 	 	 	 	 	 	 		 	 	 	 	! 	 	 	 	A&&&ACCa!$$$A&&&ACCQSSSii $ % % % % $$
	5 	5 	5 	5 	5 	5 	5 	5	 	 	 	 	 	 	 		 	 	 	 	! 	 	 	 		 	 	 	 	1 	 	 	aa!!! 		 	 	 	 	 	 	D 	 	 			 		 		 		 		 		 		E 		 		 			 	 	 	 	% 	 	 	 	'I...	 	 	 	 	% 	 	 	 	 	'7+Y777	 	 	 	 	1 	 	 	 	'7+Y777&
333	 	 	 	 	A 	 	 	'7+Y777&444	 	 	 	 	T 	 	 	 	'7+Y777&
333	 	 	 	 	U 	 	 	 	'7+Y777&
333 	 	 	 	 		 	 	 	 	$ 	 	 	 		 	 	 	 	$ 	 	 	 		 	 	 	 	T 	 	 	 	fa   fa   fa    	 	 	 	 	 	 	 	 	 	 		8 	8 	8 	8 	8 	8 	8 	8x 	8 	8 	8	 	 	 	 	( 	 	 	 	hQ(((*}555*y111	 	 	 	 	( 	 	 	 	hQ(((*j1=AAA*j19===	 	 	 	 	1 	 	 	hQ(((*j19===*j1=AAA	 	 	 	 	A 	 	 	hR)))*j19===*j1=AAA y)) 	 	    A    	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	X 	 	 	 	hQ(((*j19===*j1=AAA	 	 	 	 	! 	 	 	hQ(((*j19===*j1=AAA	 	 	 	 	FHH 	 	 	hR)))*j19===*j1=AAA y)) 	 	    Asuu   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    CEE1   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   %
R 
RR)hhh'ppp4qq!$q!c                   	 g t          t                     G fdd          } |d          }d|_        |j        }|`|                     g d           	  G d dt          j        t                    }|                     d           n# t          $ r Y nw xY wd	 	 G d
 d          	fdt          d          D             }|                     
                                |           d S )Nc                   >    e Zd Z fdZ fdZ fdZ fdZdS )<ClassPropertiesAndMethods.test_module_subclasses.<locals>.MMc                 4                         | |           d S r   )r4   )r:   r=   MTs     r?   r4   zEClassPropertiesAndMethods.test_module_subclasses.<locals>.MM.__init__6  s    D$'''''r@   c                 ^                         d|f                               | |          S )NrJ   )r   __getattribute__r:   r=   r"  logs     r?   r$  zMClassPropertiesAndMethods.test_module_subclasses.<locals>.MM.__getattribute__8  s0    

It,---**4666r@   c                 f                         d||f                               | ||           d S )Nrb  )r   __setattr__)r:   r=   r  r"  r&  s      r?   r(  zHClassPropertiesAndMethods.test_module_subclasses.<locals>.MM.__setattr__;  s8    

ItU3444tT511111r@   c                 b                         d|f                               | |           d S )Ndelattr)r   __delattr__r%  s     r?   r+  zHClassPropertiesAndMethods.test_module_subclasses.<locals>.MM.__delattr__>  s4    

It,---tT*****r@   N)r   r   r   r4   r$  r(  r+  )r"  r&  s   r?   MMr   5  s        ( ( ( ( (7 7 7 7 7 72 2 2 2 2 2+ + + + + + + +r@   r,  rD   r   ))rb  r   r   rJ   r   )r*  r   c                       e Zd ZdS )@ClassPropertiesAndMethods.test_module_subclasses.<locals>.ModuleNrK  r   r@   r?   Moduler/  K  r  r@   r0  z?inheriting from ModuleType and str at the same time should failc                  h    d                     t          j        t          j        d                    S )Nr   r  )r   )joinrandomchoicesstringascii_lettersr   r@   r?   random_namezEClassPropertiesAndMethods.test_module_subclasses.<locals>.random_nameT  s&    776>&*>"EEEFFFr@   c                       e Zd ZdS );ClassPropertiesAndMethods.test_module_subclasses.<locals>.ANrK  r   r@   r?   r{  r9  V  rM  r@   r{  c                 D    g | ]}t                       fi           S r   rI   ).0r   r{  r7  s     r?   
<listcomp>zDClassPropertiesAndMethods.test_module_subclasses.<locals>.<listcomp>X  s-    HHHd;;==1$33HHHr@   r   )rI   r   r   rG   types
ModuleTypestrr   r   r   __subclasses__)
r:   r,  rD   r  r0  
subclassesr{  r"  r&  r7  s
         @@@@r?   test_module_subclassesz0ClassPropertiesAndMethods.test_module_subclasses1  s   #YY	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ BsGGEE 3 3 3 	4 	4 	4
	%    )3   
 II $ % % % %  	 	 	D		G 	G 	G	 	 	 	 	 	 	 	HHHHHU3ZZHHH
))++Z88888s    B 
B! B!c                 :    G d dt                                  }|                     |                                d           |                    d           |                     |                                d            G fddt                    } |            }|                     t          |                                          g            d|d<   |                     t          |                                          d	g           |                     |d         d           |                     |                                d           |                    d           |                     |                                d           |                     |j        |t          t           f            G d
 dt                     } G d d|t
                    }|                      |            	                                d           |                     t           |                      d           |                      |            	                                d           |                     t           |                      d           d S )Nc                        e Zd Zd Zd Zd ZdS )>ClassPropertiesAndMethods.test_multiple_inheritance.<locals>.Cc                     d| _         d S r   r7  r   s    r?   r4   zGClassPropertiesAndMethods.test_multiple_inheritance.<locals>.C.__init__^  r9  r@   c                     | j         S r   r7  r   s    r?   r   zGClassPropertiesAndMethods.test_multiple_inheritance.<locals>.C.getstate`  r;  r@   c                     || _         d S r   r7  r  s     r?   r   zGClassPropertiesAndMethods.test_multiple_inheritance.<locals>.C.setstateb  r=  r@   Nr>  r   r@   r?   r   rF  ]  r?  r@   r   r   r  c                       e Zd Z fdZdS )>ClassPropertiesAndMethods.test_multiple_inheritance.<locals>.Dc                 v    t          i                               |                                |            d S r   )rI   r4   r   s    r?   r4   zGClassPropertiesAndMethods.test_multiple_inheritance.<locals>.D.__init__i  s5    R!!$'''

4     r@   Nr   r   r   r4   r   s   r?   rL  rK  h  s.        ! ! ! ! ! ! !r@   rL  worldhello)rP  rO  c                       e Zd Zd Zd ZdS )AClassPropertiesAndMethods.test_multiple_inheritance.<locals>.Nodec                 D    t          |                                           S r   )r-   r   r   s    r?   __int__zIClassPropertiesAndMethods.test_multiple_inheritance.<locals>.Node.__int__x  s    488::&r@   c                     dS )N23r   r   s    r?   r   zEClassPropertiesAndMethods.test_multiple_inheritance.<locals>.Node.fooz      tr@   N)r   r   r   rT  r   r   r@   r?   NoderR  w  s2        ' ' '    r@   rX  c                       e Zd Zd ZdS )AClassPropertiesAndMethods.test_multiple_inheritance.<locals>.Fragc                     dS )N42r   r   s    r?   r   zEClassPropertiesAndMethods.test_multiple_inheritance.<locals>.Frag.foo}  rW  r@   Nr   r   r@   r?   FragrZ  |  #            r@   r]     r   )r^  rG   r   r   r   r6   r   r7   __mro__rT  r-   )r:   rD   rL  rO   rX  r]  r   s         @r?   test_multiple_inheritancez3ClassPropertiesAndMethods.test_multiple_inheritance[  s   	% 	% 	% 	% 	% 	% 	% 	% ACCq)))	

2r***	! 	! 	! 	! 	! 	! 	!a 	! 	! 	! ACCaffhh,,,'
aggii+=*>???7W---q)))	

2r***Qa$8999	 	 	 	 	6 	 	 	
	 	 	 	 	4 	 	 	 	))2...TTVVb)))))2...TTVVb)))))r@   c                 l    G d dt                     }|                      |                                            d            G d d|          }|                      |                                            d           |                      |                                            d            G d d|          }|                      |                                            d           |                      |                                            d            G d d||          }|                      |                                            d           |                      |                                            d           |                     |j        ||||t           f            G d	 d
||          }|                      |                                            d           |                      |                                            d           |                     |j        ||||t           f           	  G d d||          }|                     d           n# t          $ r Y nw xY w	  G d d||          }|                     d           d S # t          $ r Y d S w xY w)Nc                       e Zd Zd ZdS )=ClassPropertiesAndMethods.test_diamond_inheritance.<locals>.Ac                     dS rz  r   r   s    r?   r   zBClassPropertiesAndMethods.test_diamond_inheritance.<locals>.A.spam      33r@   Nrl  r   r@   r?   r{  rd    s        &&&&&r@   r{  c                       e Zd Zd Zd ZdS )=ClassPropertiesAndMethods.test_diamond_inheritance.<locals>.Bc                     dS r  r   r   s    r?   boozAClassPropertiesAndMethods.test_diamond_inheritance.<locals>.B.boo      ##r@   c                     dS r  r   r   s    r?   r   zBClassPropertiesAndMethods.test_diamond_inheritance.<locals>.B.spam  rf  r@   N)r   r   r   rj  r   r   r@   r?   r  rh    s"        %%%&&&&&r@   r  c                       e Zd Zd ZdS )=ClassPropertiesAndMethods.test_diamond_inheritance.<locals>.Cc                     dS r  r   r   s    r?   rj  zAClassPropertiesAndMethods.test_diamond_inheritance.<locals>.C.boo  rk  r@   N)r   r   r   rj  r   r@   r?   r   rn    s        %%%%%r@   r   c                       e Zd ZdS )=ClassPropertiesAndMethods.test_diamond_inheritance.<locals>.DNrK  r   r@   r?   rL  rq    r  r@   rL  c                       e Zd ZdS )=ClassPropertiesAndMethods.test_diamond_inheritance.<locals>.ENrK  r   r@   r?   r  rs    r  r@   r  c                       e Zd ZdS )=ClassPropertiesAndMethods.test_diamond_inheritance.<locals>.FNrK  r   r@   r?   r  ru    r  r@   r  z#expected MRO order disagreement (F)c                       e Zd ZdS )=ClassPropertiesAndMethods.test_diamond_inheritance.<locals>.GNrK  r   r@   r?   Grw    r  r@   rx  z#expected MRO order disagreement (G))r^  rG   r   rj  r`  r   r   )r:   r{  r  r   rL  r  r  rx  s           r?   test_diamond_inheritancez2ClassPropertiesAndMethods.test_diamond_inheritance  s   	' 	' 	' 	' 	' 	' 	' 	'S)))	' 	' 	' 	' 	' 	' 	' 	' 	S)))C(((	& 	& 	& 	& 	& 	& 	& 	&S)))C(((1S)))C(((Q1a$89991S)))C(((Q1a$8999	=Aq II;<<<<  	 	 	D		=Aq II;<<<<<  	 	 	DD	s$   	I. .
I;:I;?J% %
J32J3c           
           G d dt                     } G d dt                     } G d dt                     } G d d|          } G d	 d
|          } G d d||||          }|                     |j        ||||||t           f           d S )Nc                       e Zd ZdS )<ClassPropertiesAndMethods.test_ex5_from_c3_switch.<locals>.ANrK  r   r@   r?   r{  r|    r  r@   r{  c                       e Zd ZdS )<ClassPropertiesAndMethods.test_ex5_from_c3_switch.<locals>.BNrK  r   r@   r?   r  r~    r  r@   r  c                       e Zd ZdS )<ClassPropertiesAndMethods.test_ex5_from_c3_switch.<locals>.CNrK  r   r@   r?   r   r    r  r@   r   c                       e Zd ZdS )<ClassPropertiesAndMethods.test_ex5_from_c3_switch.<locals>.XNrK  r   r@   r?   r  r    r  r@   r  c                       e Zd ZdS )<ClassPropertiesAndMethods.test_ex5_from_c3_switch.<locals>.YNrK  r   r@   r?   r  r    r  r@   r  c                       e Zd ZdS )<ClassPropertiesAndMethods.test_ex5_from_c3_switch.<locals>.ZNrK  r   r@   r?   r  r    r  r@   r  r^  rG   r`  )r:   r{  r  r   r  r  r  s          r?   test_ex5_from_c3_switchz1ClassPropertiesAndMethods.test_ex5_from_c3_switch  s    !AaQ1aAv$>?????r@   c                     G d dt                     } G d d|          } G d d|          } G d d|          } G d	 d
|          } G d d||          } G d d|          } G d d||          }|                     |j        |||||t           f           |                     |j        ||||t           f           |                     |j        ||||||||t           f	           d S )Nc                       e Zd ZdS )9ClassPropertiesAndMethods.test_monotonicity.<locals>.BoatNrK  r   r@   r?   Boatr    r  r@   r  c                       e Zd ZdS )<ClassPropertiesAndMethods.test_monotonicity.<locals>.DayBoatNrK  r   r@   r?   DayBoatr    r  r@   r  c                       e Zd ZdS )>ClassPropertiesAndMethods.test_monotonicity.<locals>.WheelBoatNrK  r   r@   r?   	WheelBoatr    r  r@   r  c                       e Zd ZdS )?ClassPropertiesAndMethods.test_monotonicity.<locals>.EngineLessNrK  r   r@   r?   
EngineLessr    r  r@   r  c                       e Zd ZdS )CClassPropertiesAndMethods.test_monotonicity.<locals>.SmallMultihullNrK  r   r@   r?   SmallMultihullr    r  r@   r  c                       e Zd ZdS )CClassPropertiesAndMethods.test_monotonicity.<locals>.PedalWheelBoatNrK  r   r@   r?   PedalWheelBoatr    r  r@   r  c                       e Zd ZdS )CClassPropertiesAndMethods.test_monotonicity.<locals>.SmallCatamaranNrK  r   r@   r?   SmallCatamaranr    r  r@   r  c                       e Zd ZdS );ClassPropertiesAndMethods.test_monotonicity.<locals>.PedaloNrK  r   r@   r?   Pedalor    r  r@   r  r  )	r:   r  r  r  r  r  r  r  r  s	            r?   test_monotonicityz+ClassPropertiesAndMethods.test_monotonicity  sy        6   !!!!!d!!!########''''''''+++++W+++88888Z	88822222^22299999^N999/z7ItVL	N 	N 	N/~wfE	G 	G 	G~z>w	4A	B 	B 	B 	B 	Br@   c           
           G d dt                     } G d dt                     } G d dt                     } G d d||          } G d	 d
||          } G d d||          }|                     |j        ||||||t           f           d S )Nc                       e Zd ZdS )AClassPropertiesAndMethods.test_consistency_with_epg.<locals>.PaneNrK  r   r@   r?   Paner    r  r@   r  c                       e Zd ZdS )KClassPropertiesAndMethods.test_consistency_with_epg.<locals>.ScrollingMixinNrK  r   r@   r?   ScrollingMixinr    r  r@   r  c                       e Zd ZdS )IClassPropertiesAndMethods.test_consistency_with_epg.<locals>.EditingMixinNrK  r   r@   r?   EditingMixinr    r  r@   r  c                       e Zd ZdS )KClassPropertiesAndMethods.test_consistency_with_epg.<locals>.ScrollablePaneNrK  r   r@   r?   ScrollablePaner    r  r@   r  c                       e Zd ZdS )IClassPropertiesAndMethods.test_consistency_with_epg.<locals>.EditablePaneNrK  r   r@   r?   EditablePaner    r  r@   r  c                       e Zd ZdS )SClassPropertiesAndMethods.test_consistency_with_epg.<locals>.EditableScrollablePaneNrK  r   r@   r?   EditableScrollablePaner    r  r@   r  r  )r:   r  r  r  r  r  r  s          r?   test_consistency_with_epgz3ClassPropertiesAndMethods.test_consistency_with_epg  s         6   *****V***(((((6(((77777T.777333334333GGGGG^LGGG/7%~|Tf6	7 	7 	7 	7 	7r@   c           	          d} fd} G d dt                     } G d d|          } G d dt                     } |t          d	t          d
||fi             |t          |t          d
||fi             |t          |t          d
|||fi             G d dt                     } G d d|          } G d d|          } G d d||          }	 G d d||          }
 |t          |t          d|	|
fi            d S )NzCCannot create a consistent method resolution
order (MRO) for bases c                 <   	  ||                       d| z             d S # | $ rt}t          j                    rPt          |                              |          s4                     dt          |          d|           Y d }~d S Y d }~d S Y d }~d S d }~ww xY w)NzExpected %szMessage z, expected )r   r   check_impl_detailr@  ra  )excexpectedcallabler;   msgr:   s        r?   raisesz?ClassPropertiesAndMethods.test_mro_disagreement.<locals>.raises  s   	/$ 		-#-.....  8 8 8,.. 8s88..x88 8			#&s8888XX#7 8 8 8 8 8 8 8 8 88 8 8 8 8 88 8 8 8 8 88s   " BABBc                       e Zd ZdS ):ClassPropertiesAndMethods.test_mro_disagreement.<locals>.ANrK  r   r@   r?   r{  r    r  r@   r{  c                       e Zd ZdS ):ClassPropertiesAndMethods.test_mro_disagreement.<locals>.BNrK  r   r@   r?   r  r    r  r@   r  c                       e Zd ZdS ):ClassPropertiesAndMethods.test_mro_disagreement.<locals>.CNrK  r   r@   r?   r   r    r  r@   r   zduplicate base class Ar  c                       e Zd ZdS )CClassPropertiesAndMethods.test_mro_disagreement.<locals>.GridLayoutNrK  r   r@   r?   
GridLayoutr    r  r@   r  c                       e Zd ZdS )GClassPropertiesAndMethods.test_mro_disagreement.<locals>.HorizontalGridNrK  r   r@   r?   HorizontalGridr    r  r@   r  c                       e Zd ZdS )EClassPropertiesAndMethods.test_mro_disagreement.<locals>.VerticalGridNrK  r   r@   r?   VerticalGridr    r  r@   r  c                       e Zd ZdS )?ClassPropertiesAndMethods.test_mro_disagreement.<locals>.HVGridNrK  r   r@   r?   HVGridr    r  r@   r  c                       e Zd ZdS )?ClassPropertiesAndMethods.test_mro_disagreement.<locals>.VHGridNrK  r   r@   r?   VHGridr    r  r@   r  ConfusedGrid)r^  r   rI   )r:   mro_err_msgr  r{  r  r   r  r  r  r  r  s   `          r?   test_mro_disagreementz/ClassPropertiesAndMethods.test_mro_disagreement  s   
	/ 
	/ 
	/ 
	/ 
	/ 	 	y2S1a&"	& 	& 	&y+S1a&"	& 	& 	&y+S1a)R	) 	) 	) 	'&&&&&&&.....Z...,,,,,:,,,88888^\88888888\>888y+^ff%5r	; 	; 	; 	; 	;r@   c                    t                      }|                     |j        t                      |                     t          |          t                      t                      }|                     ||           |                     |d           	 d|_        |                     d           n# t          t          f$ r Y nw xY w|                     t                      d            G d dt                     } |            }|                     |j
        i            d|_        |                     |j        d           |                     |j
        ddi           d S )Nr   r   z1object() should not allow setting a foo attributerK   c                       e Zd ZdS ):ClassPropertiesAndMethods.test_object_class.<locals>.CdictNrK  r   r@   r?   Cdictr    rM  r@   r  rq   )r^  rG   r  rI   assertNotEqualr   r   r   AttributeErrorr   rK   )r:   rD   rX   r  r  s        r?   test_object_classz+ClassPropertiesAndMethods.test_object_class  sj   HHf---a&)))HHAq!!!a'''	KAE IIIJJJJ 	* 	 	 	D	 	fhh
333	 	 	 	 	F 	 	 	EGGR((("""eQZ00000s   B/ /CCc                 r    G d dt           j                  }t          j        d          }|                     |j        t           j        u            |                     t          |d                     ||_        |                     |j        |u            |                     t          |d                     t           j        |_        |                     |j        t           j        u            |                     t          |d                      G d dt                    }|                     t                    5  |d_        d d d            n# 1 swxY w Y    G d d	t                    }|                     t                    5  |d
_        d d d            n# 1 swxY w Y    G d dt                    }|                     t                    5  |d_        d d d            n# 1 swxY w Y    G d dt                    }|                     t                    5  |d_        d d d            n# 1 swxY w Y    G d dt                    }|                     t                    5  |d_        d d d            n# 1 swxY w Y    G d dt                    }|                     t                    5  |d_        d d d            n# 1 swxY w Y    G d dt                    }	|                     t                    5  |	t                      _        d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdZdS )jClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.SubTyperq   Nr   r   r   rD   r   r@   r?   SubTyper    s        AAAr@   r  rQ   rD   c                       e Zd ZdZdS )hClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.MyIntr   Nr   r   r   r   r   r@   r?   MyIntr  .          IIIr@   r  rq   c                       e Zd ZdZdS )jClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.MyFloatr   Nr  r   r@   r?   MyFloatr  3  r  r@   r        ?c                       e Zd ZdZdS )lClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.MyComplexr   Nr  r   r@   r?   	MyComplexr  8  r  r@   r  y      ?       @c                       e Zd ZdZdS )hClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.MyStrr   Nr  r   r@   r?   MyStrr  =  r  r@   r  c                       e Zd ZdZdS )jClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.MyBytesr   Nr  r   r@   r?   MyBytesr  B  r  r@   r     ac                       e Zd ZdZdS )jClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.MyTupler   Nr  r   r@   r?   MyTupler  G  r  r@   r  r   c                       e Zd ZdZdS )nClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes.<locals>.MyFrozenSetr   Nr  r   r@   r?   MyFrozenSetr  L  r  r@   r  )r>  r?  r   r  r   r   r-   r  r   r.   r   r@  bytestuple	frozenset)
r:   r  rQ   r  r  r  r  r  r  r  s
             r?   ?test_object_class_assignment_between_heaptypes_and_nonheaptypeszYClassPropertiesAndMethods.test_object_class_assignment_between_heaptypes_and_nonheaptypes  s@   	 	 	 	 	e& 	 	 	 S!!u'77888C)))w.///3(((&u'77888C)))	 	 	 	 	C 	 	 	y)) 	" 	"!QM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	 	 	 	 	e 	 	 	y)) 	& 	&%SO	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&	 	 	 	 	 	 	 	y)) 	+ 	+!*V	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+	 	 	 	 	C 	 	 	y)) 	" 	"!CM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	 	 	 	 	e 	 	 	y)) 	% 	%$DN	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	e 	 	 	y)) 	# 	#"BL	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#	 	 	 	 	) 	 	 	y)) 	0 	0$/IKK!	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s~   EEEF##F'*F'G//G36G3'H;;H?H?3JJJ?KKKL,,L03L0c                 p     G d dt                     } |            }                     |d                                |d            G d dt                     } |            }                     |d                                |d           d|_                             |j        d           d |_                             |j        d            |`                     |d            G d	 d
t                     } |            }                     |d                                |d                                |d                                |d           d|_        d|_        d|_                             |j        d                                |j        d                                |j        d            G d dt                     } |d          }                     |d                                |d                                |                                d           	 d|_                             d           n# t          $ r Y nw xY w	  G d dt                     }                     d           n# t          $ r Y nw xY w	  G d dt                     }                     d           n# t          $ r Y nw xY w	  G d dt                     }                     d           n# t          $ r Y nw xY w	  G d dt                     }                     d           n# t          $ r Y nw xY w	  G d dt                     }                     d           n# t          $ r Y nw xY w G d  dt                     } G d! dt                     } |            }d|_                             |j        d            G d" dt                     } |            }d|_                             |j        d           d# G fd$dt                     } |            }d|_                             |j        d                                t          d%                   t                     	  G d& dt                     }                     d'           n# t          t           f$ r Y nw xY w G fd(d)t                      G d* dt                     } |            }             |_                     |_                     |_                             j        d           ~t%          j                                          j        d%            G d+ d,|          } |            }             |_                     |_                             j        d           ~t%          j                                          j        d%            G d- d.|          }	 |	            }             |_                     |_                     |_                             j        d           ~t%          j                                          j        d%            G d/ d0t                     }
 |
            }             |g|_                             j        d           d }t%          j                                          j        d%           t-          t.          d1          r G d2 d3t                     } |            }t1          t/          j                              }t5          d4          D ]}||k     	t1          t/          j                              }                     ||            G  fd5d6t                     }t%          j        d7          5 } |            }~d d d            n# 1 swxY w Y                        |                                d8            G d9 d:t                     }                     t                    5   |            `d d d            n# 1 swxY w Y    G d; d:t                     }                     t          d<          5   |            j         d d d            n# 1 swxY w Y    G d= d>t                     G fd?d:t                     }d |            _                             t          d<          5   |            j         d d d            d S # 1 swxY w Y   d S )@Nc                       e Zd Zg ZdS )0ClassPropertiesAndMethods.test_slots.<locals>.C0Nr  r   r@   r?   C0r  S  r  r@   r  rK   r   c                       e Zd ZdgZdS )0ClassPropertiesAndMethods.test_slots.<locals>.C1rD   Nr  r   r@   r?   C1r  Y          IIIr@   r  rD   rq   c                       e Zd Zg dZdS )0ClassPropertiesAndMethods.test_slots.<locals>.C3r]   Nr  r   r@   r?   C3r	  e          'IIIr@   r
  rX   r^   rr   rt   c                   $    e Zd ZdZdgZd Zd ZdS )0ClassPropertiesAndMethods.test_slots.<locals>.C4zValidate name mangling__ac                     || _         d S r   _C4__ar:   r  s     r?   r4   z9ClassPropertiesAndMethods.test_slots.<locals>.C4.__init__v       r@   c                     | j         S r   r  r   s    r?   r   z4ClassPropertiesAndMethods.test_slots.<locals>.C4.getx  	    xr@   N)r   r   r   __doc__r   r4   r   r   r@   r?   C4r  s  s?        ((I! ! !         r@   r  r   r  r   z$Double underscored names not mangledc                       e Zd ZdgZdS /ClassPropertiesAndMethods.test_slots.<locals>.CNr  r   r@   r?   r   r    s        !F			r@   r   z[None] slots not caughtc                       e Zd ZdgZdS )r  zfoo barNr  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  s        &K			r@   z['foo bar'] slots not caughtc                       e Zd ZdgZdS )r  zfoo barNr  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  s        'L			r@   z['foo\0bar'] slots not caughtc                       e Zd ZdgZdS )r  1Nr  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  s         E			r@   z['1'] slots not caughtc                       e Zd ZdgZdS )r  r   Nr  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  s        D			r@   z[''] slots not caughtc                       e Zd Zg dZdS )r  )rD   a_b_aA0123456789ZNr  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  s        :::IIIr@   c                       e Zd ZdZdS r  abcNr  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C          IIIr@   c                       e Zd ZdZdS r%  r  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  r'  r@   r   c                       e Zd Z ZdS r  r  )slotss   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  s        IIIr@   r   c                   &    e Zd Z ed          gZdS )r     N)r   r   r   chrr   r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  s         SXXJ			r@   z[chr(128)] slots not caughtc                   (    e Zd ZdZ fdZ fdZdS )5ClassPropertiesAndMethods.test_slots.<locals>.Countedr   c                 (    xj         dz  c_         d S r   r  r:   Counteds    r?   r4   z>ClassPropertiesAndMethods.test_slots.<locals>.Counted.__init__      1$r@   c                 (    xj         dz  c_         d S r   r  r1  s    r?   __del__z=ClassPropertiesAndMethods.test_slots.<locals>.Counted.__del__  r3  r@   N)r   r   r   r  r4   r5  )r2  s   r?   r2  r/    sL        G% % % % %% % % % % % %r@   r2  c                       e Zd Zg dZdS )r  r]   Nr  r   r@   r?   r   z/ClassPropertiesAndMethods.test_slots.<locals>.C  r  r@   c                       e Zd ZdS )/ClassPropertiesAndMethods.test_slots.<locals>.DNrK  r   r@   r?   rL  r8    rM  r@   rL  c                       e Zd ZdgZdS )/ClassPropertiesAndMethods.test_slots.<locals>.EeNr  r   r@   r?   r  r:    r  r@   r  c                       e Zd ZddgZdS )/ClassPropertiesAndMethods.test_slots.<locals>.FrD   rX   Nr  r   r@   r?   r  r=            c
IIIr@   r  get_objectsc                       e Zd Zd ZdS )/ClassPropertiesAndMethods.test_slots.<locals>.Gc                     dS )NFr   r   s     r?   __eq__z6ClassPropertiesAndMethods.test_slots.<locals>.G.__eq__   s     5r@   Nr   r   r   rC  r   r@   r?   rx  rA    s#        ! ! ! ! !r@   rx  r  c                   (    e Zd ZddgZd Z fdZdS )/ClassPropertiesAndMethods.test_slots.<locals>.HrD   rX   c                 "    d| _         d| _        d S Nrq   rr   rW   r   s    r?   r4   z8ClassPropertiesAndMethods.test_slots.<locals>.H.__init__  s    r@   c                 t                         | j        d                                | j        d           d S rH  )rG   rD   rX   )self_r:   s    r?   r5  z7ClassPropertiesAndMethods.test_slots.<locals>.H.__del__  s9      !,,,  !,,,,,r@   N)r   r   r   r   r4   r5  r   s   r?   HrF  	  sF        c
I  - - - - - - -r@   rK  stderrr   c                       e Zd ZdZdS /ClassPropertiesAndMethods.test_slots.<locals>.XrD   Nr  r   r@   r?   r  rO            IIIr@   r  c                       e Zd ZdZdS rN  r  r   r@   r?   r  z/ClassPropertiesAndMethods.test_slots.<locals>.X  rP  r@   z'X' object has no attribute 'a'c                       e Zd ZdS )4ClassPropertiesAndMethods.test_slots.<locals>.SubStrNrK  r   r@   r?   SubStrrS  "  rM  r@   rT  c                   (    e Zd Z  d          fZdS )rO  r  Nr  )rT  s   r?   r  z/ClassPropertiesAndMethods.test_slots.<locals>.X$  s        IIIr@   ) r^  r   rD   rG   rX   r^   r   _ClassPropertiesAndMethods__ar   r  r   r&  r   r  rI   r@  UnicodeEncodeErrorr  r   
gc_collectzr;  r   gcr  r?  r   captured_outputgetvaluer  assertRaisesRegexr  )r:   r  r  r  r
  r  r   r^   rL  r  r  srx  gorig_objectsr   new_objectsrK  hr  r2  rT  r*  s   `                   @@@r?   
test_slotsz$ClassPropertiesAndMethods.test_slotsQ  s   	 	 	 	 	 	 	 	BDDa,,,a'''	 	 	 	 	 	 	 	BDDa,,,a%%%a   d###Ca%%%	( 	( 	( 	( 	( 	( 	( 	(BDDa,,,a%%%a%%%a%%%a   a   a   	  	  	  	  	  	  	  	  BqEEa,,,a'''!$$$	>AE II<====  	 	 	D		1# # # # #F # # #
 II/0000  	 	 	D		6( ( ( ( (F ( ( (
 II45555  	 	 	D		8) ) ) ) )F ) ) )
 II67777  	 	 	D		0" " " " "F " " "
 II.////  	 	 	D		/! ! ! ! !F ! ! !
 II-....  	 	 	D		; 	; 	; 	; 	; 	; 	; 	;	 	 	 	 	 	 	 	ACC"""	 	 	 	 	 	 	 	ACC""" 	 	 	 	 	 	 	 	 	 	ACC"""d58nnc***	5' ' ' ' 'F ' ' '
 II34444 -. 	 	 	D		% 	% 	% 	% 	% 	% 	%f 	% 	% 	%	( 	( 	( 	( 	( 	( 	( 	(ACCgiigiigii!,,,!,,,	 	 	 	 	 	 	 	ACCgiigii!,,,!,,,	 	 	 	 	 	 	 	ACCgiigiigii!,,,!,,,	# 	# 	# 	# 	# 	# 	# 	#ACCwyy!n!,,,!,,, 2}%% 		8! ! ! ! !F ! ! ! Ar~//00L2YY  1bn..//K\;777	- 	- 	- 	- 	- 	- 	- 	- 	- 	- $X.. 	!A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r***	 	 	 	 	 	 	 	~.. 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	##N4UVV 	 	ACCEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	S 	 	 		' 	' 	' 	' 	' 	' 	' 	' 	' 	'##N4UVV 	 	ACCEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   I 
I+*I+/J 
J%$J%)K 
KK#L 
LLM 
MMN   
NNR< <SS_%%_),_)aa #a b11b58b5d++d/2d/c                 r    G d dt                     } |            }|                     |d           |                     |d           d|_        |                     |j        ddi            G d dt                     } |            }|                     |d           |                     |d           	 d|_        |                     d	           n# t          $ r Y nw xY w G d
 d||          } |            }|                     |d           |                     |d           d|_        |                     |j        ddi            G d d||          } |            }|                     |d           |                     |d           d|_        |                     |j        ddi           d S )Nc                       e Zd ZdgZdS )7ClassPropertiesAndMethods.test_slots_special.<locals>.DrK   Nr  r   r@   r?   rL  rf  ,          #IIIr@   rL  rK   __weakref__r   r   c                       e Zd ZdgZdS )7ClassPropertiesAndMethods.test_slots_special.<locals>.Wrh  Nr  r   r@   r?   Wrj  4          &IIIr@   rk  z!shouldn't be allowed to set a.fooc                       e Zd Zg ZdS )8ClassPropertiesAndMethods.test_slots_special.<locals>.C1Nr  r   r@   r?   r  rn  @  r  r@   r  c                       e Zd Zg ZdS )8ClassPropertiesAndMethods.test_slots_special.<locals>.C2Nr  r   r@   r?   r  rp  H  r  r@   r  )r^  r   r   r   rG   rK   r   r  )r:   rL  rD   rk  r  r  s         r?   test_slots_specialz,ClassPropertiesAndMethods.test_slots_special*  s?   	% 	% 	% 	% 	% 	% 	% 	%ACC1j)))a///eR[111	( 	( 	( 	( 	( 	( 	( 	(ACC1m,,,a,,,	;AE II9::::  	 	 	D	
	 	 	 	 	A 	 	 	BDD1j)))1m,,,eR[111	 	 	 	 	A 	 	 	BDD1j)))1m,,,eR[11111s   8C 
C"!C"c                      G  fddt                     } G d d          } G d d||d          }                     |j        d         t          j                    |            }                     |j        d	                                |d           d	|_                             |j        d	            	                    t                    5   G d
 d          }d d d            n# 1 swxY w Y    G d d|d          }                     |j        |j        d d         dz                                   |j        d         t          j                    |            }                     |d           d|_                             |j        d            	                    t                    5   G d d          }d d d            d S # 1 swxY w Y   d S )Nc                   "     e Zd Z fdZ xZS );ClassPropertiesAndMethods.test_slots_special2.<locals>.Metac                 x                         ||           t                                          | |||          S r   )r  rs  r   )r   r=   rS  	namespaceattrr  r:   s        r?   r   zCClassPropertiesAndMethods.test_slots_special2.<locals>.Meta.__new__S  s3    dI...wwsD%CCCr@   ru  r  r:   s   @r?   Metart  R  sH        D D D D D D D D D Dr@   ry  c                       e Zd Zd ZdS )9ClassPropertiesAndMethods.test_slots_special2.<locals>.C1c                     d| _         d S rj  )rX   r   s    r?   r4   zBClassPropertiesAndMethods.test_slots_special2.<locals>.C1.__init__X  s    r@   NrM  r   r@   r?   r  r{  W  r^  r@   r  c                   $     e Zd ZdgZ fdZ xZS )9ClassPropertiesAndMethods.test_slots_special2.<locals>.C2rv  c                 H    t                                                       d S r   rs  r4   )r:   r  s    r?   r4   zBClassPropertiesAndMethods.test_slots_special2.<locals>.C2.__init__\  s      """""r@   )r   r   r   r   r4   rv  r  s   @r?   r  r~  Z  s@        ()I# # # # # # # # #r@   r  rv  )rA  rw  r   c                       e Zd ZdZdgZdS )9ClassPropertiesAndMethods.test_slots_special2.<locals>.C3r   rv  N)r   r   r   rv  r   r   r@   r?   r
  r  f  s         ",-			r@   r
  c                       e Zd ZdgZdS )9ClassPropertiesAndMethods.test_slots_special2.<locals>.Q1r   Nr  r   r@   r?   Q1r  j  s        '(IIIr@   r  r   qc                   (    e Zd Z e            ZdgZdS )9ClassPropertiesAndMethods.test_slots_special2.<locals>.Q2r   N)r   r   r   r^  r   r   r@   r?   Q2r  t  s!        %vxx+,			r@   r  )rI   r  rK   r>  MemberDescriptorTyperG   rX   r   rv  r  r   r   )	r:   ry  r  r  r^   r
  r  r  r  s	   `        r?   test_slots_special2z-ClassPropertiesAndMethods.test_slots_special2P  s   	D 	D 	D 	D 	D 	D 	D4 	D 	D 	D
	 	 	 	 	 	 	 		# 	# 	# 	# 	#t/ 	# 	# 	# 	# 	bk/:#8	: 	: 	:BDDb!!!a111"---y)) 	. 	.. . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
	) 	) 	) 	) 	)4n 	) 	) 	) 	)"/#2#*>*EFFFbk.9#8	: 	: 	:BDDa000---y)) 	- 	-- - - - - - - -	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   C11C58C5>GG Gc                    dd l } G d d|j                  } G d dt                    }|                    |            |            }|                     ||           |                     t          |j        j        |d           d S )Nr   c                       e Zd ZdZdS )>ClassPropertiesAndMethods.test_slots_descriptor.<locals>.MyABCrD   Nr  r   r@   r?   MyABCr  |  rP  r@   r  r@  c                       e Zd ZdS )BClassPropertiesAndMethods.test_slots_descriptor.<locals>.UnrelatedNrK  r   r@   r?   	Unrelatedr    rM  r@   r  rt   )	r&  ABCMetar^  registerr  r  r   rD   __set__)r:   r&  r  r  us        r?   test_slots_descriptorz/ClassPropertiesAndMethods.test_slots_descriptorx  s     	


	 	 	 	 	ck 	 	 	 		 	 	 	 	 	 	 	y!!!IKKa''' 	)UW_a;;;;;r@   c                     G d dt                     } G d d|          } G d d|          }d|_        |                     |j        d           |                     |j        d           |                     |j        d            G d d	t                     } |            }|                     |d
           d|_        |                     |j        d           d |_        |                     |                                d           d |_        |                     t          |          d           d |_        |                     t          |          d           |                     |j        d           |                     |d           d }||_
        |                     |j        d           d|_        |                     |j        d           d }||_        |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     |j        d            G d d|          } |            }d|_        |                     |j        d            G d dt                    }	|                     d |	d          z  d           |                      |	d          dz  d           |                     d |	d          z  d           |                      |	d          dz  d           |                      |	d           |	d          z  d            G d dt                     }
 G d  d!|
"          }|                     |t                      d S )#Nc                       e Zd ZdS 2ClassPropertiesAndMethods.test_dynamics.<locals>.DNrK  r   r@   r?   rL  r    rM  r@   rL  c                       e Zd ZdS )2ClassPropertiesAndMethods.test_dynamics.<locals>.ENrK  r   r@   r?   r  r    rM  r@   r  c                       e Zd ZdS )2ClassPropertiesAndMethods.test_dynamics.<locals>.FNrK  r   r@   r?   r  r    rM  r@   r  rq   c                       e Zd ZdS )2ClassPropertiesAndMethods.test_dynamics.<locals>.CNrK  r   r@   r?   r   r    rM  r@   r   foobarrr   c                     dS rj  r   r   s    r?   <lambda>z9ClassPropertiesAndMethods.test_dynamics.<locals>.<lambda>  s     r@   r   c                     dS )NC()r   r   s    r?   r  z9ClassPropertiesAndMethods.test_dynamics.<locals>.<lambda>  s    % r@   r  c                     dS r&  r   r   s    r?   r  z9ClassPropertiesAndMethods.test_dynamics.<locals>.<lambda>  s     r@   r   r   c                      |dk    rdS t           Nr   r  r:   r=   s     r?   	mygetattrz:ClassPropertiesAndMethods.test_dynamics.<locals>.mygetattr  s    v~~v  r@   r   c                 T    |dk    rt           t                              | ||          S r  )r  r^  r(  )r:   r=   r  s      r?   	mysetattrz:ClassPropertiesAndMethods.test_dynamics.<locals>.mysetattr  s)    v~~$$%%dD%888r@   znot spamc                       e Zd ZdS r  rK  r   r@   r?   rL  z2ClassPropertiesAndMethods.test_dynamics.<locals>.D  rM  r@   c                       e Zd ZdS )2ClassPropertiesAndMethods.test_dynamics.<locals>.INrK  r   r@   r?   Ir    rM  r@   r  rD   aart   r   c                       e Zd ZdS )AClassPropertiesAndMethods.test_dynamics.<locals>.dynamicmetaclassNrK  r   r@   r?   dynamicmetaclassr    rM  r@   r  c                       e Zd ZdS ):ClassPropertiesAndMethods.test_dynamics.<locals>.someclassNrK  r   r@   r?   	someclassr    rM  r@   r  r@  )r^  r   rG   r   r  methodr   r   rT  r-   __getattr__r   newr(  r  r  rI   r  )r:   rL  r  r  r   rD   r  r  rO   r  r  r  s               r?   test_dynamicsz'ClassPropertiesAndMethods.test_dynamics  sq   	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	"""""""""	 	 	 	 	 	 	 	ACCa***1%%%"?R(((''
a%((($$	Q%%%1%%%a(((	! 	! 	! "(((###	9 	9 	9 "~.. 	  	 AF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	(((	 	 	 	 	 	 	 	ACC"""	 	 	 	 	 	 	 	QQqTT4(((1c4(((11Q44###1a###1aaddA&&&	 	 	 	 	t 	 	 		 	 	 	 	"2 	 	 	 	Iv.....s   ?HHHc                    	  G d dt           t                    }|                     d           n# t          $ r Y nw xY w	  G d dt          d           }|                     d           n# t          $ r Y nw xY w G d d          }	  G d dt          t                              }|                     d	           n# t          $ r Y nw xY w	  G d
 dt                    }|                     d           n# t          $ r Y nw xY w	  G d dt                    }|                     d           n# t          $ r Y nw xY w G d dt
                    } G d dt
                    } G d dt          |          } G d dt          |          }	  G d d||          }|                     d           d S # t          $ r Y d S w xY w)Nc                       e Zd ZdS 0ClassPropertiesAndMethods.test_errors.<locals>.CNrK  r   r@   r?   r   r    r  r@   r   z5inheritance from both list and dict should be illegalc                       e Zd ZdS r  rK  r   r@   r?   r   z0ClassPropertiesAndMethods.test_errors.<locals>.C  r  r@   z+inheritance from non-type should be illegalc                       e Zd ZdS )6ClassPropertiesAndMethods.test_errors.<locals>.ClassicNrK  r   r@   r?   Classicr    rM  r@   r  c                       e Zd ZdS r  rK  r   r@   r?   r   z0ClassPropertiesAndMethods.test_errors.<locals>.C  r  r@   z,inheritance from CFunction should be illegalc                       e Zd ZdZdS r  rq   Nr  r   r@   r?   r   z0ClassPropertiesAndMethods.test_errors.<locals>.C  s        			r@   z__slots__ = 1 should be illegalc                       e Zd ZdgZdS r  r  r   r@   r?   r   z0ClassPropertiesAndMethods.test_errors.<locals>.C  s        C			r@   z!__slots__ = [1] should be illegalc                       e Zd ZdS )1ClassPropertiesAndMethods.test_errors.<locals>.M1NrK  r   r@   r?   rU  r    rM  r@   rU  c                       e Zd ZdS )1ClassPropertiesAndMethods.test_errors.<locals>.M2NrK  r   r@   r?   rg  r    rM  r@   rg  c                       e Zd ZdS )1ClassPropertiesAndMethods.test_errors.<locals>.A1NrK  r   r@   r?   A1r    rM  r@   r  r@  c                       e Zd ZdS )1ClassPropertiesAndMethods.test_errors.<locals>.A2NrK  r   r@   r?   A2r    rM  r@   r  c                       e Zd ZdS )0ClassPropertiesAndMethods.test_errors.<locals>.BNrK  r   r@   r?   r  r    r  r@   r  z5finding the most derived metaclass should have failed)r6   r   r   r   r^  rI   r  )r:   r   r  rU  rg  r  r  r  s           r?   test_errorsz%ClassPropertiesAndMethods.test_errors  sk   	O    D$   
 IIMNNNN  	 	 	D	
	E    FD   
 IICDDDD  	 	 	D		 	 	 	 	 	 	 		F    DII   
 IIDEEEE  	 	 	D	
	9    F   
 II78888  	 	 	D	
	;         F      
 II9::::  	 	 	D	
	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	2 	 	 	 		 	 	 	 	2 	 	 	 		O    B   
 IIMNNNNN  	 	 	DD	sf   1 
>>A, ,
A98A9
 C   
CCC: :
DDD4 4
E EF; ;
G	G	c                 
    G d dt                     } |            }|                     |                    d          |df           |                     |                    d          |df           |                     |                    d          |df            G d d|          } |            }|                     |                    d          |df           |                     |                    d          |df           |                     |                    d          |df           |                     |                    |d          |df           d }t	          |          }|                      |                    dt                    d          t          df           |                      |                    d          d          t          df           |                     |j        j        |           |                     |j        j        |           |                     t          ||          j        j        |           |                     t          ||          j        j        |           |                     t          ||                                          |f           |                     t          ||                                          |f           t	          d                              d          }| 	                    t          |           	 t	          |d	           |                     d
           n# t          $ r Y nw xY wt	          |          }i dt          d|j        d}	|                     |j        |	           d|_        |                     |j        d           |                     |j        ddi|	           |`|                     |d           d S )Nc                   *    e Zd Zd Z ee          ZdS )6ClassPropertiesAndMethods.test_classmethods.<locals>.Cc                      | S r   r   rD   s    r?   r   z:ClassPropertiesAndMethods.test_classmethods.<locals>.C.foo      r@   Nr   r   r   r   r  goor   r@   r?   r   r  
  &        !!!+c""CCCr@   r   rq   c                       e Zd ZdS )6ClassPropertiesAndMethods.test_classmethods.<locals>.DNrK  r   r@   r?   rL  r    rM  r@   rL  c                 
    | |fS )f docstringr   )r   args     r?   fz6ClassPropertiesAndMethods.test_classmethods.<locals>.f  s    :r@   r   r   r
  z)classmethod shouldn't accept keyword argsr  r  )__annotations__r  r   r   r   r  )r^  rG   r  r   r  rc  r-   __self__rs  r  r   r   r   r   rK   r  r   )r:   r   r^   rL  rO   r  ffrN   cmcm_dictr  s             r?   test_classmethodsz+ClassPropertiesAndMethods.test_classmethods  s   	# 	# 	# 	# 	# 	# 	# 	# ACCqAq6***qAq6***qAq6***	 	 	 	 	 	 	 	ACCqAq6***qAq6***qAq6***q!q!f---	 	 	 ^^+As++B//#r;;;Ar**S"I666 	++++++q0!444q0!444q))A4000q))A4000 1~~%%a(()T***	Ca     IIABBBB  	 	 	D	
 ^^&(+!)"#$>	3 3
 	g...r"""sR&;7&;<<<Db#&&&&&s   7M 
M+*M+c                     t          j        t          d          }t          d           } |            }t	          d          D ]}|                    d            |                      |            |z
  dd           d S Ngettotalrefcountr   r   r  )delta)r   get_attributer   r  r   r4   assertAlmostEqual)r:   r  r  refs_beforer   s        r?   %test_refleaks_in_classmethod___init__z?ClassPropertiesAndMethods.test_refleaks_in_classmethod___init__B  s    "06HII&&((s 	 	AKK//11K?"MMMMMr@   r   c                    dd l }d}ddi} |j        j        |i |\  }}}|                     ||j                   |                     ||           |                     ||            |                                j        |i |\  }}}|                     ||j                   |                     ||           |                     ||           |j        j        d         } ||j        g|R i |\  }}	}
|                     ||j                   |                     |	|           |                     |
|            G d d|j                  } ||g|R i |\  }}	}
|                     ||           |                     |	|           |                     |
|           |                     t                    5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t                    5 } ||                                           d d d            n# 1 swxY w Y   |                     t          |j                  d	           |                     t                    5 } |t                     d d d            n# 1 swxY w Y   d
}|                     t          |j                  |           |                     t                    5 }|
                    d t                     d d d            n# 1 swxY w Y   |                     t          |j                  |           d S )Nr   rs   r&  {   	classmethc                       e Zd ZdS )AClassPropertiesAndMethods.test_classmethods_in_c.<locals>.SubSpamNrK  r   r@   r?   SubSpamr  ^  r  r@   r  zGdescriptor 'classmeth' of 'xxsubtype.spamlist' object needs an argumentzfdescriptor 'classmeth' for type 'xxsubtype.spamlist' needs a type, not a 'xxsubtype.spamlist' as arg 2zUdescriptor 'classmeth' requires a subtype of 'xxsubtype.spamlist' but received 'list')r   r   r  rG   rK   r  r   r@  	exceptionr6   rc  )r:   r   rD   rO   r  r  d1spam_cmx2r  d2r  r  expected_errmsgs                 r?   test_classmethods_in_cz0ClassPropertiesAndMethods.test_classmethods_in_cK  sq    	!   CL+DM+Q4!44	2rDM***BB-DMMOO-q6A66	2rDM***BB-(5WT]4Q444!44
BT]+++R   R   *****dm***WW.q...A..
BW%%%R   R   y)) 	RGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'	( 	( 	(
 y)) 	%RGDMMOO$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%@	A 	A 	A
 y)) 	RGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	" 	 	R\**O<<<y)) 	(ROOD$'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(R\**O<<<<<sH   ?GGG#IIIJ77J;>J;L..L25L2c                     G d dt                     } |            }|                     |                    d          d           |                     |                    d          d           |                     |                    d          |df            G d d|          } |            }|                     |                    d          d           |                     |                    d          d           |                     |                    d          |df           |                     |                    |d          |df           t	          d           }|                     |j        dd i           d|_        |                     |j        d           |                     |j        dd d	           |`|                     |d
           d S )Nc                   *    e Zd Zd Z ee          ZdS )7ClassPropertiesAndMethods.test_staticmethods.<locals>.Cc                      | S r   r   r  s    r?   r   z;ClassPropertiesAndMethods.test_staticmethods.<locals>.C.foo  r  r@   N)r   r   r   r   rf  r  r   r@   r?   r   r    s&        !!!,s##CCCr@   r   rq   rq   c                       e Zd ZdS )7ClassPropertiesAndMethods.test_staticmethods.<locals>.DNrK  r   r@   r?   rL  r
    rM  r@   rL  r  r   )r  r  r  )r^  rG   r  r   rf  rK   r  r   )r:   r   r^   rL  rO   sms         r?   test_staticmethodsz,ClassPropertiesAndMethods.test_staticmethods}  s   	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ACCq4(((q4(((qAq7+++	 	 	 	 	 	 	 	ACCq4(((q4(((qAq6***q!q!f---$y$&7888r"""RD&A&ABBBDb#&&&&&r@   c                     t          j        t          d          }t          d           } |            }t	          d          D ]}|                    d            |                      |            |z
  dd           d S r  )r   r  r   rf  r   r4   r  )r:   r  r  r  r   s        r?   &test_refleaks_in_staticmethod___init__z@ClassPropertiesAndMethods.test_refleaks_in_staticmethod___init__  s    "06HII$&&((s 	 	AKK//11K?"MMMMMr@   c                    dd l }d}ddi} |j        j        |i |\  }}}|                     |d            |                     ||           |                     ||            |                                j        |i |\  }}}|                     |d            |                     ||           |                     ||           d S )Nr   rs   r&  r  )r   r   
staticmethrG   )r:   r   rD   rO   r  r  r  r  s           r?   test_staticmethods_in_cz1ClassPropertiesAndMethods.test_staticmethods_in_c  s     	!   CL,DM,a5155	2rD!!!BB.DMMOO.7Q77	2rD!!!BBr@   c                     G d d                       }|                                          d          df           |                      |                    d          df           |                      |                    d          |df            G d d          } |            }|                      |                    d          |df           |                      |                    d          |df           |                      |                    d          |df           |                      |                    |d          |df            G fdd          }|                       |            j        j        j                   |                     t          j                                                                                 d                     d S )	Nc                   *    e Zd Zd Z ee          ZdS )1ClassPropertiesAndMethods.test_classic.<locals>.Cc                      | S r   r   r  s    r?   r   z5ClassPropertiesAndMethods.test_classic.<locals>.C.foo  r  r@   Nr  r   r@   r?   r   r    r  r@   r   rq   c                       e Zd ZdS )1ClassPropertiesAndMethods.test_classic.<locals>.DNrK  r   r@   r?   rL  r    rM  r@   rL  c                       e Zd Z j        ZdS )1ClassPropertiesAndMethods.test_classic.<locals>.ENr   rN  s   r?   r  r            %CCCr@   r  <bound method )rG   r  r   __func__r   r   rc  ra  )r:   r^   rL  rO   r  r   s        @r?   test_classicz&ClassPropertiesAndMethods.test_classic  s   	# 	# 	# 	# 	# 	# 	# 	# ACCqAq6***qAq6***qAq6***	 	 	 	 	 	 	 	ACCqAq6***qAq6***qAq6***q!q!f---	 	 	 	 	 	 	 	 	 	)15111QU]]1133//00;;<LMMNNNNNr@   c                 V    G d dt                     } |            }|                     |j        d           |                     |j        d           d|_        |                     |j        d           |                     |j        d           |`|                     |d           d S )Nc                   \    e Zd Z G d de          Zd Zd Zd Zd Z eeee          Z	dS )2ClassPropertiesAndMethods.test_compattr.<locals>.Cc                   *    e Zd ZddZddZd Zd ZdS )EClassPropertiesAndMethods.test_compattr.<locals>.C.computed_attributeNc                 0    || _         || _        || _        d S r   )_computed_attribute__get_computed_attribute__set_computed_attribute__delete)r:   r   r  deletes       r?   r4   zNClassPropertiesAndMethods.test_compattr.<locals>.C.computed_attribute.__init__  s    !$DJ!$DJ$*DMMMr@   c                 ,    |                      |          S r   )r$  )r:   r   rI   s      r?   rc  zMClassPropertiesAndMethods.test_compattr.<locals>.C.computed_attribute.__get__  s    ::c??*r@   c                 .    |                      ||          S r   )r%  r:   r   r  s      r?   r  zMClassPropertiesAndMethods.test_compattr.<locals>.C.computed_attribute.__set__  s    ::c5111r@   c                 ,    |                      |          S r   )r&  r:   r   s     r?   
__delete__zPClassPropertiesAndMethods.test_compattr.<locals>.C.computed_attribute.__delete__  s    ==---r@   r  r   )r   r   r   r4   rc  r  r-  r   r@   r?   computed_attributer"    sZ        + + + ++ + + +2 2 2. . . . .r@   r.  c                     d| _         d S r   _C__xr   s    r?   r4   z;ClassPropertiesAndMethods.test_compattr.<locals>.C.__init__      r@   c                 (    | j         }|dz   | _         |S r   r0  r  s     r?   __get_xz:ClassPropertiesAndMethods.test_compattr.<locals>.C.__get_x  s    HQ3r@   c                     || _         d S r   r0  r  s     r?   __set_xz:ClassPropertiesAndMethods.test_compattr.<locals>.C.__set_x  r2  r@   c                 
    | ` d S r   r0  r   s    r?   
__delete_xz=ClassPropertiesAndMethods.test_compattr.<locals>.C.__delete_x      HHHr@   N)
r   r   r   r^  r.  r4   	_C__get_x	_C__set_x_C__delete_xr  r   r@   r?   r   r     s        
. 
. 
. 
. 
.V 
. 
. 
.        ""7GZ@@AAAr@   r   r   rq   r     r  )r^  rG   r  r   r1  s      r?   test_compattrz'ClassPropertiesAndMethods.test_compattr  s    	A 	A 	A 	A 	A 	A 	A 	A. ACCa   a   b!!!b!!!Ca%%%%%r@   c                 H    G d dt                     } |            }|                     |j        d           |                     |j        |            G d d|          } |            }|                     |j        d           |                     |j        |           d S )Nc                       e Zd Zd Zd ZdS )2ClassPropertiesAndMethods.test_newslots.<locals>.Cc                 H    t                               |           }d|_        |S r   )r6   r   r   r   r:   s     r?   r   z:ClassPropertiesAndMethods.test_newslots.<locals>.C.__new__  s    ||C((r@   c                 $    | j         dz   | _         d S Nrr   r   r   s    r?   r4   z;ClassPropertiesAndMethods.test_newslots.<locals>.C.__init__  s    8a<r@   Nr   r   r   r   r4   r   r@   r?   r   rA    s2          ( ( ( ( (r@   r   rt   c                       e Zd ZdS )2ClassPropertiesAndMethods.test_newslots.<locals>.DNrK  r   r@   r?   rL  rI    rM  r@   rL  )r6   rG   r   r  )r:   r   rD   rL  rX   s        r?   test_newslotsz'ClassPropertiesAndMethods.test_newslots  s    	( 	( 	( 	( 	( 	( 	( 	( ACC"""a(((	 	 	 	 	 	 	 	ACC"""a(((((r@   c                     |                      t          t          j                   |                      t          t          j        d           |                      t          t          j        t                     |                      t          t          j        t                      G d dt                    }|                      t          |            G d dt                    }|                      t          |           d S )Nr   c                       e Zd Zej        ZdS 1ClassPropertiesAndMethods.test_bad_new.<locals>.CN)r   r   r   r6   r   r   r@   r?   r   rN    s        lGGGr@   r   c                       e Zd Zej        ZdS rM  )r   r   r   r^  r   r   r@   r?   r   z1ClassPropertiesAndMethods.test_bad_new.<locals>.C  s        nGGGr@   )r  r   r^  r   r6   r   s     r?   test_bad_newz&ClassPropertiesAndMethods.test_bad_new  s    )V^444)V^R888)T\6:::)V^T:::	# 	# 	# 	# 	# 	# 	# 	#)Q'''	% 	% 	% 	% 	% 	% 	% 	%)Q'''''r@   c                 
    G d dt                     }t                               |           |                     t          t           j        |d           t                                |                       |                     t          t           j         |            d            G d dt                     }t                               |           t                               |d           t                                |d                     |                     t          t           j         |d          d            G d dt                     }t                               |           |                     t          t           j        |d           t                                |d                     t                                |d          d            G d dt                     }t                               |           |                     t          t           j        |d           t                                |d                     |                     t          t           j         |d          d           d S )Nc                       e Zd ZdS )4ClassPropertiesAndMethods.test_object_new.<locals>.ANrK  r   r@   r?   r{  rS    rM  r@   r{  r   c                       e Zd Zd ZdS )rS  c                     || _         d S r   rF  r:   r   s     r?   r4   z=ClassPropertiesAndMethods.test_object_new.<locals>.A.__init__      r@   NrM  r   r@   r?   r{  z4ClassPropertiesAndMethods.test_object_new.<locals>.A  #            r@   rt   c                       e Zd Zd ZdS )rS  c                 6    t                               |           S r   r^  r   r   r   s     r?   r   z<ClassPropertiesAndMethods.test_object_new.<locals>.A.__new__      ~~c***r@   NrT  r   r@   r?   r{  z4ClassPropertiesAndMethods.test_object_new.<locals>.A  s#        + + + + +r@   c                       e Zd Zd Zd ZdS )rS  c                 6    t                               |           S r   r[  r\  s     r?   r   z<ClassPropertiesAndMethods.test_object_new.<locals>.A.__new__  r]  r@   c                     || _         d S r   rF  rV  s     r?   r4   z=ClassPropertiesAndMethods.test_object_new.<locals>.A.__init__  rW  r@   NrG  r   r@   r?   r{  z4ClassPropertiesAndMethods.test_object_new.<locals>.A  s2        + + +    r@   )r^  r   r  r   r4   r:   r{  s     r?   test_object_newz)ClassPropertiesAndMethods.test_object_new  sR   	 	 	 	 	 	 	 	q)V^Q:::)V_aacc1===	 	 	 	 	 	 	 	 	qq!!)V_aaddA>>>	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	q)V^Q:::!!a   	 	 	 	 	 	 	 	
 	q)V^Q:::!)V_aaddA>>>>>r@   c                     G d dt                     }|                     t          |            G d d|          }t          j                    5  t          j        dt                      |d          }d d d            n# 1 swxY w Y   |                     |j        d           |                     |j	        |           |`
|                     t          |           |`
t          j                    5  t          j        dt                      |d          }d d d            n# 1 swxY w Y   |                     |j        d           |                     |j	        |           d S )Nc                       e Zd Zd ZdS )=ClassPropertiesAndMethods.test_restored_object_new.<locals>.Ac                     t           r   AssertionError)r   r;   r<   s      r?   r   zEClassPropertiesAndMethods.test_restored_object_new.<locals>.A.__new__(  s    $$r@   NrT  r   r@   r?   r{  re  '  #        % % % % %r@   r{  c                   "    e Zd Zej        Zd ZdS )=ClassPropertiesAndMethods.test_restored_object_new.<locals>.Bc                     || _         d S r   rF  rV  s     r?   r4   zFClassPropertiesAndMethods.test_restored_object_new.<locals>.B.__init__-  rW  r@   N)r   r   r   r^  r   r4   r   r@   r?   r  rk  +  s*        nG    r@   r  errorrt   )r^  r  rh  warningscatch_warningssimplefilterDeprecationWarningrG   r   r  r   )r:   r{  r  rX   s       r?   test_restored_object_newz2ClassPropertiesAndMethods.test_restored_object_new%  s   	% 	% 	% 	% 	% 	% 	% 	% 	.!,,,	 	 	 	 	 	 	 	 $&& 	 	!'+=>>>!A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	"""a(((I.!,,,I$&& 	 	!'+=>>>!A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	"""a(((((s$   &BB	B5&D''D+.D+c           	          G d dt                     } G d d|          } G d d|          } G d d||          }|                     |                                |t           g           |                     |j        |t           f           |                     |                                ||t           g           |                     |j        ||t           f           |                     |                                ||t           g           |                     |j        ||t           f           |                     |                                ||||t           g           |                     |j        ||||t           f           |                      |                                            d            G d	 d
t
                    } G d d|||||          }|                     |j        t           |||||f           |                      |                                            d           	  G d dt
                    } G d dt           |          }t                               |          }d|d<   |                     d           n# t          $ r Y nw xY w	  G d dt
                    } G d dt           |          }|                     d           n# t          $ r Y nw xY w	  G d dt
                    } G d dt           |          }|                     d           d S # t          $ r Y d S w xY w)Nc                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_altmro.<locals>.Ac                     dS rz  r   r   s    r?   r  z2ClassPropertiesAndMethods.test_altmro.<locals>.A.f@      r@   Nr   r   r   r  r   r@   r?   r{  ru  ?  r   r@   r{  c                       e Zd ZdS )0ClassPropertiesAndMethods.test_altmro.<locals>.BNrK  r   r@   r?   r  rz  A  rM  r@   r  c                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_altmro.<locals>.Cc                     dS r  r   r   s    r?   r  z2ClassPropertiesAndMethods.test_altmro.<locals>.C.fD  rw  r@   Nrx  r   r@   r?   r   r|  C  r   r@   r   c                       e Zd ZdS )0ClassPropertiesAndMethods.test_altmro.<locals>.DNrK  r   r@   r?   rL  r  E  rM  r@   rL  c                       e Zd Zd ZdS )?ClassPropertiesAndMethods.test_altmro.<locals>.PerverseMetaTypec                 b    t                               |           }|                                 |S r   )rI   mroreverse)r   Ls     r?   r  zCClassPropertiesAndMethods.test_altmro.<locals>.PerverseMetaType.mroR  s#    HHSMM		r@   Nr   r   r   r  r   r@   r?   PerverseMetaTyper  Q  s#            r@   r  c                       e Zd ZdS 0ClassPropertiesAndMethods.test_altmro.<locals>.XNrK  r   r@   r?   r  r  V  rM  r@   r  r@  c                       e Zd Zd ZdS )9ClassPropertiesAndMethods.test_altmro.<locals>._metaclassc                      | t           t          gS r   )r   r^  r   s    r?   r  z=ClassPropertiesAndMethods.test_altmro.<locals>._metaclass.mro]  s     $//r@   Nr  r   r@   r?   rG  r  \  s#        0 0 0 0 0r@   rG  c                       e Zd ZdS r  rK  r   r@   r?   r  z0ClassPropertiesAndMethods.test_altmro.<locals>.X_  r  r@   r   r   zdevious mro() return not caughtc                       e Zd Zd ZdS )r  c                     dgS r   r   r   s    r?   r  z=ClassPropertiesAndMethods.test_altmro.<locals>._metaclass.mrop  s	    3Jr@   Nr  r   r@   r?   rG  z9ClassPropertiesAndMethods.test_altmro.<locals>._metaclasso  s#            r@   c                       e Zd ZdS r  rK  r   r@   r?   r  z0ClassPropertiesAndMethods.test_altmro.<locals>.Xr  r  r@   z!non-class mro() return not caughtc                       e Zd Zd ZdS )r  c                     dS r   r   r   s    r?   r  z=ClassPropertiesAndMethods.test_altmro.<locals>._metaclass.mro{  s    1r@   Nr  r   r@   r?   rG  z9ClassPropertiesAndMethods.test_altmro.<locals>._metaclassz  s#            r@   c                       e Zd ZdS r  rK  r   r@   r?   r  z0ClassPropertiesAndMethods.test_altmro.<locals>.X}  r  r@   z$non-sequence mro() return not caught)	r^  rG   r  r`  r  rI   r   r   r   )	r:   r{  r  r   rL  r  r  rG  r  s	            r?   test_altmroz%ClassPropertiesAndMethods.test_altmro=  sx   	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$	 	 	 	 	 	 	 		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$	 	 	 	 	1 	 	 	1f+...QK0001a.111Q6N3331a.111Q6N3331aAv"6777Q1a$8999#&&&	 	 	 	 	t 	 	 	
	 	 	 	 	!Aa#3 	 	 	 	VQ1a$;<<<#&&&	90 0 0 0 0T 0 0 0    Fj     q!!AAaD II78888  	 	 	D	
		;    T       Fj    
 II9::::  	 	 	D	
		>    T       Fj    
 II<=====  	 	 	DD	s7   :AJ 
J$#J$((K& &
K32K37(L6 6
MMc                     G d dt                      G fdd          } |            }|                     |j        d           d|_        |                     |j        d           |`|                     |j        d           |                     |d         d	           d
|d<   |                     |j        d           |d= |                     |j        d           |                     |dd         dt          dd          f           d|dd<   |                     |j        t          dd          df           |dd= |                     |j        t          dd                     d S )Nc                       e Zd ZdZdS )5ClassPropertiesAndMethods.test_overloading.<locals>.Bz<Intermediate class because object doesn't have a __setattr__Nr   r   r   r  r   r@   r?   r  r    s        JJJJr@   r  c                   <    e Zd Zd Z fdZ fdZd Zd Zd ZdS )5ClassPropertiesAndMethods.test_overloading.<locals>.Cc                 $    |dk    rd|fS t           )Nr   rJ   r  r  s     r?   r  zAClassPropertiesAndMethods.test_overloading.<locals>.C.__getattr__  s    5==%t,,((r@   c                 T    |dk    r||f| _         d S                     | ||          S Nr   )rb  r(  )r:   r=   r  r  s      r?   r(  zAClassPropertiesAndMethods.test_overloading.<locals>.C.__setattr__  s1    5==$(%=DLLL==tU;;;r@   c                 N    |dk    r	|| _         d S                     | |          S r  )r*  r+  )r:   r=   r  s     r?   r+  zAClassPropertiesAndMethods.test_overloading.<locals>.C.__delattr__  s+    5==#'DLLL==t444r@   c                 
    d|fS )Ngetitemr   r  s     r?   r[   zAClassPropertiesAndMethods.test_overloading.<locals>.C.__getitem__  s    !3''r@   c                     ||f| _         d S r   )setitem)r:   r  r  s      r?   ri   zAClassPropertiesAndMethods.test_overloading.<locals>.C.__setitem__  s     #U|r@   c                     || _         d S r   )delitemr  s     r?   __delitem__zAClassPropertiesAndMethods.test_overloading.<locals>.C.__delitem__  s    "r@   N)	r   r   r   r  r(  r+  r[   ri   r  )r  s   r?   r   r    s        ) ) )
< < < < <
5 5 5 5 5( ( (, , ,# # # # #r@   r   r-  r   )r   r   r   )r  r      )r   r  r   r  r  )r^  rG   r   rb  r*  r  r  r_   )r:   r   rD   r  s      @r?   test_overloadingz*ClassPropertiesAndMethods.test_overloading  s   	K 	K 	K 	K 	K 	K 	K 	K	# 	# 	# 	# 	# 	# 	# 	# 	# 	#0 ACC 2333K000EE***2000"H---bEB'''1R49eArll";<<<!B$U1b\\5$9:::adGU1b\\33333r@   c           	      ^    G d d          }d                     d t          d          D                       }d| d}i }t          ||           |d         }t          d	          D ]C}|                      | |                      t	          t          d                               Dd S )
Nc                       e Zd Zd ZdS )FClassPropertiesAndMethods.test_load_attr_extended_arg.<locals>.Numbersc                 F    t          |                    d                    S )Nrq  )r-   lstripr:   rw  s     r?   r  zRClassPropertiesAndMethods.test_load_attr_extended_arg.<locals>.Numbers.__getattr__  s    4;;s++,,,r@   Nr   r   r   r  r   r@   r?   Numbersr    s#        - - - - -r@   r  , c              3   "   K   | ]
}d |dV  dS )zZ._03dNr   )r<  ns     r?   	<genexpr>zHClassPropertiesAndMethods.test_load_attr_extended_arg.<locals>.<genexpr>  s*      <<A----<<<<<<r@   i  z"def number_attrs(Z):
    return [ z ]number_attrs   )r2  r   re   rG   r6   )r:   r  attrscoder  r  rq  s          r?   test_load_attr_extended_argz5ClassPropertiesAndMethods.test_load_attr_extended_arg  s    	- 	- 	- 	- 	- 	- 	- 	- 		<<s<<<<<>U>>>T2.)r 	H 	HA\\''))44d5::6F6FGGGG	H 	Hr@   c           	          G d dt                      d          |                                                     d            G fdd          } |d          }|                     |                                d           |                     |                                d           |                     |                                d            G fddt                     }|                      |            j        j        j                   |                     t          j                             d                              	                    d	                     d S )
Nc                       e Zd Zd Zd ZdS )1ClassPropertiesAndMethods.test_methods.<locals>.Cc                     || _         d S r   r  r  s     r?   r4   z:ClassPropertiesAndMethods.test_methods.<locals>.C.__init__      r@   c                     | j         S r   r  r   s    r?   r   z5ClassPropertiesAndMethods.test_methods.<locals>.C.foo  s	    vr@   N)r   r   r   r4   r   r   r@   r?   r   r    s2              r@   r   rq   c                   ,    e Zd Z j        Zj        ZdS )1ClassPropertiesAndMethods.test_methods.<locals>.DN)r   r   r   r   rj  r  )r   c1s   r?   rL  r    s        %C&CCCr@   rL  rr   c                       e Zd Z j        ZdS )1ClassPropertiesAndMethods.test_methods.<locals>.ENr   rN  s   r?   r  r    r  r@   r  r  )
r^  rG   r   rj  r  r  r   r   rc  ra  )r:   rL  r  r  r   r  s       @@r?   test_methodsz&ClassPropertiesAndMethods.test_methods  s   	 	 	 	 	 	 	 	
 QqTT1%%%	 	 	 	 	 	 	 	 	 	 	 QqTT1%%%1%%%1%%%	 	 	 	 	 	 	 	 	 	)15111QU]]11Q440011<<=MNNOOOOOr@   z)testing error message from implementationc                    t           j        }d}|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     |j        j        d         |           d}|                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     |j        j        d         |           |                     t                    5 }|                    d           d d d            n# 1 swxY w Y   |                     |j        j        d         |           d S )Nz*unbound method set.add() needs an argumentr   zBdescriptor 'add' for 'set' objects doesn't apply to a 'int' object)r  r	   r  r   rG   r  r;   rc  )r:   set_addr  r  s       r?   test_methods_in_cz+ClassPropertiesAndMethods.test_methods_in_c  s   
 'Fy)) 	RGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*1-???^y)) 	RGAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*1-???y)) 	ROOA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*1-?????s5   A  AAB%%B),B)0DDDc                     d }d }d }d }d }d }d }d/d}d	 }	d
 }
 fd} fd}d }d }dt           |t                      i fdt          |t                      i fdt          |t                      ||dfdt          j        |t                      i fd|	|t                      i fd||t          d          i fd|
|t          d          i fd||t                      d|ifd||t                      d|ifdt          |t                      i fdt          |t                      i fdt          j	        |t                      i fdt          j
        |t                      i fdt          j        |t                      i fd t          |t                      i fd!t          |t                      i fg} G  fd"d#t                    } G fd$d%t                    } G d& d't                     G fd(d)t                    }|D ]W\  }}}} G d* d+|          }|                                D ]\  }}t#          |||           t#          |||            | |                       g  G d, d+|          }|                                D ]\  }}t#          |||           t#          || ||                      | |                                            d-g|            G d. d+|          }|                                D ]\  }}t#          |||           t#          || |                                            | |                       Yd S )0Nc                 >    | 5  	 d d d            d S # 1 swxY w Y   d S r   r   )managers    r?   run_contextzIClassPropertiesAndMethods.test_special_method_lookup.<locals>.run_context  so                       s   c                     | S r   r   r   s    r?   idenzBClassPropertiesAndMethods.test_special_method_lookup.<locals>.iden  s    Kr@   c                     dS )Ns   hellor   r   s    r?   rP  zCClassPropertiesAndMethods.test_special_method_lookup.<locals>.hello  s    8r@   c                     g S r   r   r   s    r?   	empty_seqzGClassPropertiesAndMethods.test_special_method_lookup.<locals>.empty_seq  s    Ir@   c                     dS r   r   r   s    r?   zerozBClassPropertiesAndMethods.test_special_method_lookup.<locals>.zero  s    1r@   c                     dS )N              ?r   r   s    r?   complex_numzIClassPropertiesAndMethods.test_special_method_lookup.<locals>.complex_num  s    2r@   c                     t           r   )StopIterationr   s    r?   r)  zBClassPropertiesAndMethods.test_special_method_lookup.<locals>.stop   s    r@   c                     dS )NTr   )r:   things     r?   return_truezIClassPropertiesAndMethods.test_special_method_lookup.<locals>.return_true  s    4r@   c                 ,    t          t          |           S r   )r'  r-   r   s    r?   do_isinstancezKClassPropertiesAndMethods.test_special_method_lookup.<locals>.do_isinstance      c3'''r@   c                 ,    t          t          |           S r   )r  r-   r  s    r?   do_issubclasszKClassPropertiesAndMethods.test_special_method_lookup.<locals>.do_issubclass  r  r@   c                      G d d| j         t                    }                     |            d         d           d S )Nc                       e Zd ZdS )^ClassPropertiesAndMethods.test_special_method_lookup.<locals>.do_dict_missing.<locals>.DictSubNrK  r   r@   r?   DictSubr  	  r  r@   r  hirw   )r  r   rG   )checkerr  r:   s     r?   do_dict_missingzMClassPropertiesAndMethods.test_special_method_lookup.<locals>.do_dict_missing  sX        '+T   WWYYt_a00000r@   c                 4                         |d           dS )Nr  rw   rG   )rJ  r  r:   s     r?   some_numberzIClassPropertiesAndMethods.test_special_method_lookup.<locals>.some_number  s    S$'''1r@   c                      d S r   r   r;   s    r?   swallowzEClassPropertiesAndMethods.test_special_method_lookup.<locals>.swallow        r@   c                     dS NrP  r   )r:   specs     r?   format_implzIClassPropertiesAndMethods.test_special_method_lookup.<locals>.format_impl  s    7r@   	__bytes____reversed____length_hint__)r   __next__
__sizeof____instancecheck____missing__r  __subclasscheck__rL   	__enter____exit____complex__
__format__	__floor__	__trunc____ceil____dir__	__round__c                   (    e Zd ZfdZf fd	ZdS )EClassPropertiesAndMethods.test_special_method_lookup.<locals>.Checkerc                 V    |                     d                    |                     d S )Nz__getattr__ called with {0})r   format)r:   rw  tests      r?   r  zQClassPropertiesAndMethods.test_special_method_lookup.<locals>.Checker.__getattr__-  s)    		7>>tDDEEEEEr@   c                     |vr(|                     d                    |                     t                              | |          S )Nz __getattribute__ called with {0})r   r  r^  r$  )r:   rw  r  oks      r?   r$  zVClassPropertiesAndMethods.test_special_method_lookup.<locals>.Checker.__getattribute__/  sC    r>>II@GGMMNNN..tT:::r@   Nr   r   r   r  r$  )r  r:   s   r?   Checkerr	  ,  sQ        -1 F F F F26 ; ; ; ; ; ; ; ;r@   r  c                        e Zd Zd Z fdZdS )JClassPropertiesAndMethods.test_special_method_lookup.<locals>.SpecialDescrc                     || _         d S r   )impl)r:   r  s     r?   r4   zSClassPropertiesAndMethods.test_special_method_lookup.<locals>.SpecialDescr.__init__4       			r@   c                 d                         d           | j                            ||          S r   )r   r  rc  )r:   r   ownerrecords      r?   rc  zRClassPropertiesAndMethods.test_special_method_lookup.<locals>.SpecialDescr.__get__6  s-    a   y((e444r@   N)r   r   r   r4   rc  )r  s   r?   SpecialDescrr  3  s=        ! ! !5 5 5 5 5 5 5r@   r  c                       e Zd ZdS )IClassPropertiesAndMethods.test_special_method_lookup.<locals>.MyExceptionNrK  r   r@   r?   MyExceptionr  9  rM  r@   r  c                       e Zd Z fdZdS )FClassPropertiesAndMethods.test_special_method_lookup.<locals>.ErrDescrc                     r   r   )r:   r   r  r  s      r?   rc  zNClassPropertiesAndMethods.test_special_method_lookup.<locals>.ErrDescr.__get__<  s	    !!r@   Nr   r   r   rc  )r  s   r?   ErrDescrr  ;  .        " " " " " " "r@   r!  c                       e Zd ZdS ?ClassPropertiesAndMethods.test_special_method_lookup.<locals>.XNrK  r   r@   r?   r  r%  @  r  r@   r  c                       e Zd ZdS r$  rK  r   r@   r?   r  z?ClassPropertiesAndMethods.test_special_method_lookup.<locals>.XH  r  r@   rq   c                       e Zd ZdS r$  rK  r   r@   r?   r  z?ClassPropertiesAndMethods.test_special_method_lookup.<locals>.XP  r  r@   r   )r  r  reversedr6   r   	getsizeofr   r  mathfloortruncceildirroundr^  	Exceptionr7   rb  rG   r  )r:   r  r  rP  r  r  r  r)  r  r  r  r  r  r  r  specialsr  r  r!  r=   runner	meth_implenvr  rw  r   r  r  r  s   `                         @@@r?   test_special_method_lookupz4ClassPropertiesAndMethods.test_special_method_lookup  s   	 	 		 	 		 	 		 	 		 	 		 	 		  	  	 	 	 	 		( 	( 	(	( 	( 	(	1 	1 	1 	1 	1	 	 	 	 	 	!  	 	 	 %r2Xy#%%<dCEEd3353=$r: -ceeRHO[  "& -  "&+tSUUZ'4JKgsuu{T6JKG[#%%<6;r:$*dCEE26$*dCEE26D#%%4Yr2%suub1',	; 	; 	; 	; 	; 	; 	; 	;f 	; 	; 	;	5 	5 	5 	5 	5 	5 	56 	5 	5 	5	 	 	 	 	) 	 	 		" 	" 	" 	" 	" 	" 	"v 	" 	" 	" 19 	8 	8,D&)R    G    YY[[ & &	c4%%%%AtY'''F1133KKKF    G    YY[[ & &	c4%%%%At\\)44555F1133KKKVaS$///    G    YY[[ & &	c4%%%%AtXXZZ(((k611337777-	8 	8r@   c                 
    G d dt                     } |            } |            }|                     |            |                     t          |          t          |                     t	          |           t	          |           |                     ||           |                     ||k               |                     ||k               |                     ||k               |                     t          |          	                    d          d           |                     t          |          t          |                     |                     d|           t          d          D ]}|                     ||           |                     d|            G d dt                     } |            } |            }|                     |            |                     t          |          t          |                     t	          |           t	          |           |                     ||           |                     ||           |                     ||k               |                     ||k               |                     t          |          	                    d	          d           |                     t          |          t          |                     |                     d|           t          d          D ]}|                     ||           |                     d|            G d
 dt                     } |d          }	 |d          }
 |d          }|                     |	           |                     |
            |                     t	          |	          t	          d                     |                     |	|	           |                     |	|
           |                     |	|	k               |                     |	 |
           |                     |	|
k                |                     |	|
k               |                     |
|	k               |                     |
|	k               |                     t          |	          d           |                     t          |	          d            |t          d                    }|                     d|           t          d          D ]}|                     ||           |                     d|           d S )Nc                       e Zd Zd ZdS )2ClassPropertiesAndMethods.test_specials.<locals>.Cc                 4    d|cxk    rdk     rn n|S t           Nr   r  
IndexErrorr*  s     r?   r[   z>ClassPropertiesAndMethods.test_specials.<locals>.C.__getitem__]  %    ;;;;B;;;;;q  r@   Nr+  r   r@   r?   r   r8  \  #        ! ! ! ! !r@   r   zC object at r   r  r  c                       e Zd Zd ZdS )2ClassPropertiesAndMethods.test_specials.<locals>.Dc                 4    d|cxk    rdk     rn n|S t           r:  r;  r*  s     r?   r[   z>ClassPropertiesAndMethods.test_specials.<locals>.D.__getitem__t  r=  r@   Nr+  r   r@   r?   rL  r@  s  r>  r@   rL  zD object at c                   V    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S )6ClassPropertiesAndMethods.test_specials.<locals>.Proxyc                     || _         d S r   r  r  s     r?   r4   z?ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__init__  r  r@   c                     | j           S r   r  r   s    r?   r   z?ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__bool__  s    #v:~%r@   c                 *    t          | j                  S r   )hashr  r   s    r?   __hash__z?ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__hash__  s    DF||#r@   c                     | j         |k    S r   r  r   s     r?   rC  z=ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__eq__      v&r@   c                     | j         |k    S r   r  r   s     r?   __ne__z=ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__ne__  rJ  r@   c                     | j         |k    S r   r  r   s     r?   __ge__z=ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__ge__  rJ  r@   c                     | j         |k    S r   r  r   s     r?   __gt__z=ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__gt__      v~%r@   c                     | j         |k    S r   r  r   s     r?   __le__z=ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__le__  rJ  r@   c                     | j         |k     S r   r  r   s     r?   __lt__z=ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__lt__  rQ  r@   c                     d| j         z  S )NzProxy:%sr  r   s    r?   r   z>ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__str__  s    !DF**r@   c                     d| j         z  S )Nz	Proxy(%r)r  r   s    r?   r   z?ClassPropertiesAndMethods.test_specials.<locals>.Proxy.__repr__  s    "TV++r@   c                     || j         v S r   r  r  s     r?   rv   zCClassPropertiesAndMethods.test_specials.<locals>.Proxy.__contains__  s    &r@   N)r   r   r   r4   r   rH  rC  rL  rN  rP  rS  rU  r   r   rv   r   r@   r?   ProxyrC    s          & & &$ $ $' ' '' ' '' ' '& & &' ' '& & &+ + +, , ,' ' ' ' 'r@   rY  rq   zProxy:0zProxy(0))r^  r   r  idrG  rG   r   assertGreaterEqualr@  findr   assertNotInr   r  )r:   r   r  c2r   rL  r  r  rY  p0p1p_1p10s                r?   test_specialsz'ClassPropertiesAndMethods.test_specialsW  s    
	! 	! 	! 	! 	! 	! 	! 	! QSSQSSR   BrFFBrFF+++RRR   b!!!r"""r""" 	B^ < <a@@@R$r((+++R   r 	! 	!AMM!R    R   	! 	! 	! 	! 	! 	! 	! 	! QSSQSSR   BrFFBrFF+++RRR   B###r"""r""" 	B^ < <a@@@R$r((+++R   r 	! 	!AMM!R    R   	' 	' 	' 	' 	'F 	' 	' 	'2 U1XXU1XXeBiiR   b477+++R   B###r"""R$$$R   b!!!R   b!!!R),,,b:...eE"IIS!!!r 	" 	"AMM!S!!!!S!!!!!r@   c                    dd l } G d dt                    } |            } |j        |          }|                      |            |           ~t	          j                     |                      |            d            ~ G d dt                    } |            }	  |j        |           |                     d           n:# t          $ r-}|                     dt          |                     Y d }~nd }~ww xY w G d d	t                    } |            }	 |j        |	          }|                      |            |	           ~	t	          j                     |                      |            d            ~d S )
Nr   c                       e Zd ZdS )2ClassPropertiesAndMethods.test_weakrefs.<locals>.CNrK  r   r@   r?   r   rf    rM  r@   r   c                       e Zd ZdgZdS )7ClassPropertiesAndMethods.test_weakrefs.<locals>.NoWeakr   Nr  r   r@   r?   NoWeakrh    s        IIIr@   ri  z!weakref.ref(no) should be illegalzweak referencec                       e Zd ZddgZdS )5ClassPropertiesAndMethods.test_weakrefs.<locals>.Weakr   rh  Nr  r   r@   r?   Weakrk    s        .IIIr@   rl  )
weakrefr^  refrG   r   rX  r   r   r  r@  )
r:   rm  r   r^   rri  nor  rl  yess
             r?   test_weakrefsz'ClassPropertiesAndMethods.test_weakrefs  s   	 	 	 	 	 	 	 	ACCGKNNa   d###	  	  	  	  	 V 	  	  	 VXX	;GKOOO II9::::  	6 	6 	6MM*CHH55555555	6	/ 	/ 	/ 	/ 	/6 	/ 	/ 	/dffGKc"""d###AAs   !C 
C>#C99C>c           
          G d dt                     } |            }|                     |d           d|_        |                     |j        d           |                     |j        d           |`|                     |d           |                     |d           |j                            |d           |                     |j                            |          d           |j                            |           |                     |d           |j        d         }| 	                    |t                     t          |          }|                     d|           |                     d|           |                     d	|           |                     d
|           |                     |j        d           |                     |j        |j        d                    |                     |j        |j        d                    |                     |j        |j        d                    dD ]}	 t%          ||d           |                     d|z             -# t(          $ rX}t+          |                              d          dk     r(|                     d|dt+          |                     Y d }~d }~ww xY wd|_        |                     |j        d            G d dt                     } |            }	 |D ]}	t+          |	           	 |                     d           d S # t.          $ r Y d S w xY w)Nc                   >    e Zd Zd Zd Zd Z eeeed          ZdS )4ClassPropertiesAndMethods.test_properties.<locals>.Cc                     | j         S r   r0  r   s    r?   getxz9ClassPropertiesAndMethods.test_properties.<locals>.C.getx  r  r@   c                     || _         d S r   r0  r  s     r?   setxz9ClassPropertiesAndMethods.test_properties.<locals>.C.setx  r  r@   c                 
    | ` d S r   r0  r   s    r?   delxz9ClassPropertiesAndMethods.test_properties.<locals>.C.delx  r9  r@   I'm the x property.docN)r   r   r   rw  ry  r{  r  r  r   r@   r?   r   ru    sT             ! ! !  tT/DEEEAAAr@   r   r  r   r1  r   r  fgetfsetfdelr|  rw  ry  r{  )r  r  r  zIexpected AttributeError from trying to set readonly %r attr on a propertyreadonlyr   zwhen setting readonly attr z2 on a property, got unexpected AttributeError msg c                   &    e Zd Z ed           ZdS )4ClassPropertiesAndMethods.test_properties.<locals>.Dc                     ddz  S r  r   )r^  s    r?   r  z=ClassPropertiesAndMethods.test_properties.<locals>.D.<lambda>	  s
    QqS r@   N)r   r   r   r  r[   r   r@   r?   rL  r  	  s        "(==11KKKr@   rL  z,expected ZeroDivisionError from bad property)r^  r   r  rG   r1  r  rc  r-  rK   r  r  r.  r  r  r  r  r  r  rb  r   r  r@  r\  ZeroDivisionError)
r:   r   rD   rawr  rw  r  rL  rO   r   s
             r?   test_propertiesz)ClassPropertiesAndMethods.test_properties  s   	F 	F 	F 	F 	F 	F 	F 	F ACCa%%%"%%%b!!!Ca%%%a)))	AsQ---	qa%%%joc8,,,Ci'''fe$$$fe$$$fe$$$&;<<<ch
6 2333ch
6 2333ch
6 2333* 		7 		7D7T2&&& 		 /156 7 7 7 7 " Y Y Ys88==,,q00IIIHLcRUhhhX Y Y YY b)))	2 	2 	2 	2 	2 	2 	2 	2 ACC	F  A
 IIDEEEEE ! 	 	 	DD	s+   9I##
K-AK  KL4 4
MMrr   z)Docstrings are omitted with -O2 and abovec                 2      G  fddt                     }d S )Nc                       e Zd Zd Zd Z ee          Z                     ej        d            ee          Z	                     e	j        d           dS )?ClassPropertiesAndMethods.test_properties_doc_attrib.<locals>.Ec                     dS )getter methodr   r   r   s    r?   getterzFClassPropertiesAndMethods.test_properties_doc_attrib.<locals>.E.getter	  s    qr@   c                     dS )zsetter methodNr   )rJ  r  s     r?   setterzFClassPropertiesAndMethods.test_properties_doc_attrib.<locals>.E.setter	      r@   r  )r  N)
r   r   r   r  r  r  proprG   r  prop2r   s   r?   r  r  	  s             8F##DT\?;;;H&)))EU]D11111r@   r  r^  )r:   r  s   ` r?   test_properties_doc_attribz4ClassPropertiesAndMethods.test_properties_doc_attrib	  sA    
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2r@   c                 ^    	 dd l  G fddt                    }d S # t          $ r Y d S w xY w)Nr   c                   0    e Zd Z e j                  ZdS )>ClassPropertiesAndMethods.test_testcapi_no_segfault.<locals>.XN)r   r   r   r  test_with_docstringp)	_testcapis   r?   r  r  .	  s!        HY:;;r@   r  )r  r^  ImportError)r:   r  r  s     @r?   test_testcapi_no_segfaultz3ClassPropertiesAndMethods.test_testcapi_no_segfault&	  sv    	<< < < < < < <F < < < < <  	 	 	DD	s    
,,c                 0    G d dt                                  }|                     j        j        d           |                     |d           d|_        |                     |d           |                     |j        d           |                     |j        d           |`|                     |d           |                     |d            G fdd	          } |            }d
|_        |                     |j        d
           |`|` G d dt                                  }d|_        |                     |j        d           |` G fdd          } |            }d|_        |                     |j        d           |`d S )Nc                       e Zd Z ed          Zej        d             Zej        d             Zej        d             ZdS )9ClassPropertiesAndMethods.test_properties_plus.<locals>.CrP  r}  c                     | j         S r   _foor   s    r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.C.foo4	  
    y r@   c                 .    t          |          | _        d S r   r+   r  r  s     r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.C.foo7	      JJ			r@   c                 
    | ` d S r   r  r   s    r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.C.foo:	      IIIr@   N)r   r   r   r  r   r  r  deleterr   r@   r?   r   r  2	  sw        (w'''CZ! ! Z!Z' ' Z'[  [  r@   r   rP  r   ir  r   c                   :    e Zd Z j        j        d             ZdS )9ClassPropertiesAndMethods.test_properties_plus.<locals>.Dc                 .    	 | ` d S # t          $ r Y d S w xY wr   )r  r  r   s    r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.D.fooI	  s2    			%   DDs    
N)r   r   r   r   r  rN  s   r?   rL  r  H	  s2        U]  ]  r@   rL  r  c                       e Zd Zed             Zej        d             Zej        d             Zej        dd            ZdS )9ClassPropertiesAndMethods.test_properties_plus.<locals>.Ec                     | j         S r   r  r   s    r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.E.fooV	  r  r@   c                     t           r   )RuntimeErrorr  s     r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.E.fooY	  s    ""r@   c                 .    t          |          | _        d S r   r  r  s     r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.E.foo\	  r  r@   Nc                 
    | ` d S r   r  r  s     r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.E.foo_	  r  r@   r   )r   r   r   r  r   r  r  r   r@   r?   r  r  U	  s        ! ! X!Z# # Z#Z' ' Z'[   [  r@   r  c                   Z    e Zd Z j        j        d             Zej        d             ZdS )9ClassPropertiesAndMethods.test_properties_plus.<locals>.Fc                 
    | ` d S r   r  r   s    r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.F.fooi	  r  r@   c                 0    t          d|          | _        d S r   )maxr  r  s     r?   r   z=ClassPropertiesAndMethods.test_properties_plus.<locals>.F.fool	  s    5MM			r@   N)r   r   r   r   r  r  )r  s   r?   r  r  h	  sM        U]  ]Z* * Z* * *r@   r  r   )r^  rG   r   r  r   r   r  )	r:   r^   rL  rO   r;  r  r  r   r  s	          @@r?   test_properties_plusz.ClassPropertiesAndMethods.test_properties_plus1	  s   
	 
	 
	 
	 
	 
	 
	 
	 ACC000a'''1f%%%$$$###Ea(((a'''	 	 	 	 	 	 	 	 	 	 ACC###EE	 	 	 	 	 	 	 	 ACC###E	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ACC"""EEEr@   c           	      f   t                      }|                     |i            t          i           }|                     |i            t          ddd          }|                     |ddd           |                     |t          t          |                                                               |                     |t          t	          |                                                               t          ddd          }|                     |t          dd                     |                     |t          d#i |           |                     |t          ddid                     |                     |t          dgd	                     |                     |t          d
dgfi |           |                     |t          d#i |           dddddgdfD ]d}	 t          |           |                     d|z             +# t          $ r Y 7t          $ r" |dk    rn|                     d|z             Y aw xY w|                     t                    5  t          i i            d d d            n# 1 swxY w Y    G d d          }	 t           |                       |                     d           n# t          $ r Y nw xY wd |_	        d |_
        t           |                      }|                     ||j                     G d d          }t           |dd           |dd           |dd           |dd          g          }|                     |ddd           t          t          t          d          t          dd                              }|                     |t          d t          d          D                                  d gd!gfD ]:}	 t          |           |                     d"|z             +# t          $ r Y 7w xY wd S )$Nrr   rX   )rq   rD   rq   )onetwor  )r  )r  rr   )r  )r  r   )r  r/  r   y                0r   zno TypeError from dict(%r)c                       e Zd ZddddZdS )AClassPropertiesAndMethods.test_dict_constructors.<locals>.Mappingrr   rw   r  )rq   rt   rD   N)r   r   r   r   r   r@   r?   Mappingr  	  s        1"%%DDDr@   r  z*no TypeError from dict(incomplete mapping)c                 N    t          | j                                                  S r   )r6   r   r   r   s    r?   r  zBClassPropertiesAndMethods.test_dict_constructors.<locals>.<lambda>	  s    D)9)9$:$: r@   c                     | j         |         S r   )r   r*  s     r?   r  zBClassPropertiesAndMethods.test_dict_constructors.<locals>.<lambda>	  s    dil r@   c                       e Zd Zd Zd ZdS )JClassPropertiesAndMethods.test_dict_constructors.<locals>.AddressBookEntryc                 "    || _         || _        d S r   )firstlast)r:   r  r  s      r?   r4   zSClassPropertiesAndMethods.test_dict_constructors.<locals>.AddressBookEntry.__init__	  s    "
 			r@   c                 8    t          | j        | j        g          S r   )r   r  r  r   s    r?   r   zSClassPropertiesAndMethods.test_dict_constructors.<locals>.AddressBookEntry.__iter__	  s    TZ3444r@   N)r   r   r   r4   r   r   r@   r?   AddressBookEntryr  	  s2        ! ! !5 5 5 5 5r@   r  TimWarsawBarryPeters)r  r  rw   r   c                     g | ]	}||d z   f
S r  r   r<  r   s     r?   r=  zDClassPropertiesAndMethods.test_dict_constructors.<locals>.<listcomp>	  s     !=!=!=q1ac(!=!=!=r@   )tooshort)toolongzby 1zno ValueError from dict(%r)r   )r   rG   r6   r7   r   r   r   
ValueErrorr  r   r[   zipr   )r:   rO   badargr  r  bads         r?   test_dict_constructorsz0ClassPropertiesAndMethods.test_dict_constructorst	  s   FFBHHBQS!!"",,---Daggii11222Daggii11222##$$DQA...///DII1II&&&D%333444D*1555666D,!=CCCCDDDDII1II&&&BaS$. 	A 	AFAV 		6?@@@@     E E ES== II:VCDDDE y)) 	 	RLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 		& 	& 	& 	& 	& 	& 	& 	&	DOOO IIBCCCC  	 	 	D	
 ;:::OOGL)))	5 	5 	5 	5 	5 	5 	5 	5 ""5(33""7H55""5(33""7H557 8 8 	hx@@AAAU1XXuQ{{++,,D!=!=E!HH!=!=!=>>??? "?%<$== 	? 	?C?S			 		7#=>>>>    	? 	?sN   ,H
I (I
I(JJ	J	K 
KK9P!!
P.-P.c                    d}|                      t                      ddg           ~dddddgddd	ddit          | j        fD ]}t          |           d
 } G d dt                    }ddg}|                       |t          |                    |            |            }|                       |t          |                    |           d|_        d |_        |                       |t          |                    |ddgz               G d d|          }ddg|z   }|                       |t          |                    |            |            }	|                       |t          |	                    |           d|	_        d |	_        |                       |t          |	                    |ddgz               G d dt          t                              }
 |
d          }d|_
        d|_        g dfdt          |          D             }|                      |d d!g            G d" d#|
          } |d$          }d|_
        d|_        |                      |j        d%           |                     t                    5  t          |           d d d            n# 1 swxY w Y   |                      t          t	                                t          t                                G fd&d't                     G fd(dt                    }t           |                       d S ))Nr   junkr:   rr   y               @g       @2   2rr   c                     d | D             S )Nc                 <    g | ]}|                     d           |S )rq  )ra  )r<  r^  s     r?   r=  zKClassPropertiesAndMethods.test_dir.<locals>.interesting.<locals>.<listcomp>	  s)    @@@!all3.?.?@A@@@r@   r   )stringss    r?   interestingz7ClassPropertiesAndMethods.test_dir.<locals>.interesting	  s    @@w@@@@r@   c                       e Zd ZdZd ZdS )-ClassPropertiesAndMethods.test_dir.<locals>.Crq   c                     d S r   r   r   s    r?   Cmethodz5ClassPropertiesAndMethods.test_dir.<locals>.C.Cmethod	  r  r@   N)r   r   r   Cdatar  r   r@   r?   r   r  	          E#####r@   r   r  r  c                     dS r   r   r   s    r?   r  z4ClassPropertiesAndMethods.test_dir.<locals>.<lambda>	       r@   cdatacmethodc                       e Zd ZdZd ZdS )-ClassPropertiesAndMethods.test_dir.<locals>.Arq   c                     d S r   r   r   s    r?   Amethodz5ClassPropertiesAndMethods.test_dir.<locals>.A.Amethod	  r  r@   N)r   r   r   Adatar  r   r@   r?   r{  r  	  r  r@   r{  r  r  r   c                     dS )Nrt   r   r   s    r?   r  z4ClassPropertiesAndMethods.test_dir.<locals>.<lambda>	  r  r@   adataamethodc                       e Zd ZdS )-ClassPropertiesAndMethods.test_dir.<locals>.MNrK  r   r@   r?   Mr  	  rM  r@   r  rQ   rq   )r   r  __package__
__loader____spec__c                     g | ]}|v|	S r   r   )r<  r  default_attributess     r?   r=  z6ClassPropertiesAndMethods.test_dir.<locals>.<listcomp>	  s$    JJJqa7I.I.I.I.I.Ir@   rD   rX   c                   *    e Zd Zd Z ee          ZdS ).ClassPropertiesAndMethods.test_dir.<locals>.M2c                     dS )NNot a dict!r   r   s    r?   getdictz6ClassPropertiesAndMethods.test_dir.<locals>.M2.getdict	  s    $}r@   N)r   r   r   r  r  rK   r   r@   r?   rg  r  	  s,        % % %x((HHHr@   rg  m2r  c                   6    e Zd Zd Zd Z fdZd Z fdZdS )3ClassPropertiesAndMethods.test_dir.<locals>.Wrapperc                     || _         d S r   _Wrapper__objr,  s     r?   r4   z<ClassPropertiesAndMethods.test_dir.<locals>.Wrapper.__init__
       


r@   c                 0    dt          | j                  z  S )NzWrapper(%s))r   r  r   s    r?   r   z<ClassPropertiesAndMethods.test_dir.<locals>.Wrapper.__repr__
  s    $tDJ'7'777r@   c                 0     | j         |                   S r   r  )r:   r  Wrappers     r?   r[   z?ClassPropertiesAndMethods.test_dir.<locals>.Wrapper.__getitem__
  s    wtz#///r@   c                 *    t          | j                  S r   )r  r  r   s    r?   rB   z;ClassPropertiesAndMethods.test_dir.<locals>.Wrapper.__len__
  s    4:&r@   c                 @     t          | j        |                    S r   )rJ   r  )r:   r=   r  s     r?   r  z?ClassPropertiesAndMethods.test_dir.<locals>.Wrapper.__getattr__
  s    wwtz488999r@   N)r   r   r   r4   r   r[   rB   r  r  s   r?   r  r  
  st        ! ! !8 8 80 0 0 0 0' ' ': : : : : : :r@   r  c                   0    e Zd Z fdZ ee          ZdS )r  c                 4     t          |                     S r   r;  )r:   r  s    r?   
__getclassz8ClassPropertiesAndMethods.test_dir.<locals>.C.__getclass
  s    wtDzz***r@   N)r   r   r   _C__getclassr  r  r  s   r?   r   z-ClassPropertiesAndMethods.test_dir.<locals>.C
  s7        + + + + + ,,IIIr@   )rG   r.  rI   test_dirr^  r  r  r  r  r   rX   rD   rK   r  r   Ellipsis)r:   r  r  r  r   cstuffr^   r{  astuffrD   r  	minstancenamesrg  
m2instancer  r  s                  @@r?   r  z"ClassPropertiesAndMethods.test_dir	  s,    0111 aS1#sD$1tT]R 	 	CHHHH	A 	A 	A	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 9%SVV,,f555ACCSVV,,f555 "N	SVV,,f7K.KLLL	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 9%.SVV,,f555ACCSVV,,f555"N	SVV,,f7K.KLLL	 	 	 	 	S		 	 	 	AcFF			8 8 8JJJJC	NNJJJc
+++	) 	) 	) 	) 	) 	) 	) 	)
 RXX


,m<<<y)) 	 	
OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	VXXH666
	: 
	: 
	: 
	: 
	: 
	: 
	:f 
	: 
	: 
	:	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 	AACCs   J11J58J5c                   	
  G d dt                     }|                      |                                d          d            G fdd|          |                                                      d          d            G d	 d
|          }t          |          |_        |                      |                                d          d            G 	fdd|          	|                      	                                d          d            G fddt                     G 
fdd	          
|                      
                                d          d            G d d
          } |          |_        |                      |                                d          d           	 t          	d           |                     d           n# t          $ r Y nw xY w	 t          	 |                       |                     d           n# t          $ r Y nw xY w	 t          	                              d           |                     d           n# t          $ r Y nw xY w	 t          	                               |                       |                     d            n# t          $ r Y nw xY w G d! d"t                     } G d# d$|          } |            }|                     |j	        d%           |                     t          ||          j	        d            G d& d't                     } G fd(d)|          |                     
                                |j                   |                     t                    5  t          |d*           d d d            d S # 1 swxY w Y   d S )+Nc                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_supers.<locals>.Ac                     d|z  S )NzA(%r)r   r:   rD   s     r?   rN   z5ClassPropertiesAndMethods.test_supers.<locals>.A.meth#
  s    {"r@   Nr}  r   r@   r?   r{  r  "
  #        # # # # #r@   r{  rq   zA(1)c                   (     e Zd Z fdZd Z xZS )0ClassPropertiesAndMethods.test_supers.<locals>.Bc                 2    t          |           | _        d S r   )rs  r  )r:   r  r  s    r?   r4   z9ClassPropertiesAndMethods.test_supers.<locals>.B.__init__)
  s    $Q~~r@   c                 B    d|z  | j                             |          z   S )NzB(%r)r  r  s     r?   rN   z5ClassPropertiesAndMethods.test_supers.<locals>.B.meth+
  !    {T\%6%6q%9%999r@   )r   r   r   r4   rN   rv  )r  r  s   @r?   r  r"  (
  sM        . . . . . .: : : : : : :r@   r  rr   zB(2)A(2)c                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_supers.<locals>.Cc                 B    d|z  | j                             |          z   S )NzC(%r)r  r  s     r?   rN   z5ClassPropertiesAndMethods.test_supers.<locals>.C.meth1
  r%  r@   Nr}  r   r@   r?   r   r'  0
  s#        : : : : :r@   r   rt   zC(3)A(3)c                   "     e Zd Z fdZ xZS )0ClassPropertiesAndMethods.test_supers.<locals>.Dc                 V    d|z  t          |                               |          z   S )NzD(%r))rs  rN   )r:   rD   rL  r  s     r?   rN   z5ClassPropertiesAndMethods.test_supers.<locals>.D.meth8
  s(    {U1d^^%8%8%;%;;;r@   )r   r   r   rN   rv  )r  rL  s   @r?   rL  r*  7
  >        < < < < < < < < < <r@   rL  rw   zD(4)C(4)B(4)A(4)c                   "     e Zd Z fdZ xZS )6ClassPropertiesAndMethods.test_supers.<locals>.mysuperc                 4     t          |           j        | S r   r  )r:   r;   r  mysupers     r?   r4   z?ClassPropertiesAndMethods.test_supers.<locals>.mysuper.__init__@
  s    4uWd++4d;;r@   )r   r   r   r4   rv  )r  r0  s   @r?   r0  r.  ?
  r,  r@   r0  c                       e Zd Z fdZdS )0ClassPropertiesAndMethods.test_supers.<locals>.Ec                 N    d|z   |                                |          z   S )NzE(%r))rN   )r:   rD   r  r0  s     r?   rN   z5ClassPropertiesAndMethods.test_supers.<locals>.E.methD
  s,    {WWQ%5%5%:%:1%=%===r@   Nr}  )r  r0  s   r?   r  r2  C
  s3        > > > > > > > >r@   r  r   zE(5)D(5)C(5)B(5)A(5)c                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_supers.<locals>.Fc                 b    | j         }d|d|j        j        d|                    |          z   S )NzF(z)[])	_F__superr  r   rN   )r:   rD   r^  s      r?   rN   z5ClassPropertiesAndMethods.test_supers.<locals>.F.methJ
  s4    L&'aa)=)=)=>JJr@   Nr}  r   r@   r?   r  r5  I
  s(        K K K K Kr@   r  r   z!F(6)[mysuper]E(6)D(6)C(6)B(6)A(6)r   zshouldn't allow super(D, 42)zshouldn't allow super(D, C())r   z$shouldn't allow super(D).__get__(12)z%shouldn't allow super(D).__get__(C())c                   *    e Zd Zd Z ee          ZdS )5ClassPropertiesAndMethods.test_supers.<locals>.DDbasec                     dS rj  r   r   s    r?   rw  z:ClassPropertiesAndMethods.test_supers.<locals>.DDbase.getxs
  s    22r@   Nr   r   r   rw  r  r  r   r@   r?   DDbaser:  r
  s$        %%%AAAr@   r=  c                   *    e Zd Zd Z ee          ZdS )4ClassPropertiesAndMethods.test_supers.<locals>.DDsubc                     dS r  r   r   s    r?   rw  z9ClassPropertiesAndMethods.test_supers.<locals>.DDsub.getxw
  s    77r@   Nr<  r   r@   r?   DDsubr?  v
  s$        ***AAAr@   rA  rP  c                   &    e Zd Z ed           ZdS )3ClassPropertiesAndMethods.test_supers.<locals>.Basec                     dS r  r   r   s    r?   r  z<ClassPropertiesAndMethods.test_supers.<locals>.Base.<lambda>
  s    % r@   N)r   r   r   r  aPropr   r@   r?   BaserC  
  s!        H//00EEEr@   rF  c                   2     e Zd Ze fd            Z xZS )2ClassPropertiesAndMethods.test_supers.<locals>.Subc                 .    t          |           j        S r   )rs  rE  )klassSubr  s    r?   r  z7ClassPropertiesAndMethods.test_supers.<locals>.Sub.test
  s    S''--r@   )r   r   r   r  r  rv  )r  rK  s   @r?   rK  rH  
  sH        . . . . . [. . . . .r@   rK  r  )r^  rG   rN   rs  r  r8  r   r   rc  r  r  rE  r  )r:   r{  r   r  r=  rA  ddrF  r  rL  r  rK  r0  r  s           @@@@@r?   test_supersz%ClassPropertiesAndMethods.test_supers
  ss   	# 	# 	# 	# 	# 	# 	# 	# 	!f---	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	!j111	: 	: 	: 	: 	: 	: 	: 	: Ahh!j111	< 	< 	< 	< 	< 	< 	<1 	< 	< 	< 	!&8999	< 	< 	< 	< 	< 	< 	<e 	< 	< 	<	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	!&<===	K 	K 	K 	K 	K 	K 	K 	K gajj!&IJJJ	6!RLLL II45555  	 	 	D	
	7!QQSSMMM II56666  	 	 	D	
	>!HHR    II<====  	 	 	D	
	?!HHQQSS!!! II=>>>>  	 	 	D		 	 	 	 	V 	 	 		 	 	 	 	F 	 	 	 UWWw'''ub))+R000
	1 	1 	1 	1 	16 	1 	1 	1	. 	. 	. 	. 	. 	. 	.$ 	. 	. 	.
 	TZ000 y)) 	 	$1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   G. .
G;:G;?H- -
H:9H:>"I6 6
JJ*K 
KK0OOOc                 =    G fddt                     |                     t           d          dz             d           |                     t           d          dz             d            d          }|                     |d           |                     t          |          d           |                     t          |          j        t                      |                     t          |          t          d                     |                     |
 j        t                      |                     |d	z	  j        t                      |                     |d	z  j        t                      |                      d	          d
z  j        t                      |                      d	          d
z	  j        t                       G fddt                     |                     t           d          dz             d           |                     t          d d          z             d            d          }|                     |d           |                     t          |          d           |                     t          |          t          d                     |                     t          |          j        t                      |                     |
 j        t                      |                     | j        t                      |                      d	           j        t                      |                     |d	z	  j        t                      |                     |d	z  j        t                      |                     |d	z
  j        t                      |                     |dz  j        t                      |                     |dz  j        t                      |                     |dz  j        t                      |                     d|z  j        t                      |                     |d	z  j        t                      |                     |d	z  j        t                      |                     |dz  j        t                      |                      d	          d
z  j        t                      |                      d	          d
z	  j        t                      |                     t           d	                    j        t                       G d dt                     } |d          }|                     |d	z   j        t                      |                     d	|z   j        t                       |d          }|                     |j        i            |                     t          |          d            G d dt                    }|                     t           |d                    d            |d          }|                     |d           |                     t          |          d           |                     t          |          j        t                     |                     t          |          t          d                     |                     |
 j        t                      G d dt                    } |dd          }|                     t          |          d           t          dd          }|                     |j        t                     |                     ||           |                     t          |          |           |                     t          |          j        t                      ||          }|                     t          |          d           |                     ||           |                     t          |          |           |                     t          |          j        t                     |                     t          |          t          |                     |                     |
 j        t                     |                     |d	z   j        t                     |                     |d	z   |           |                     |d	z
  j        t                     |                     |d	z
  |           |                     |dz  j        t                     |                     |dz  |           |                     |dz  j        t                     |                     |dz  |            G d  d!t                    } |d"          }|                     |d"           |                     |                                 |d#                     |                     |                                                                 |d"                     t          d$          D ]X} |t          |                    }|                                }	|	                                }
|                     |
|           Y |d%          }|                     t          |          d%           |                     t          |          j        t                     |                     t          |          t          d%                     |                     |d d          j        t                     |                     |dz  j        t                     |                     |d	z  j        t                     |                     |d&z   j        t                      |d&          }|                     t          |          d&           |                     t          |          j        t                     |                     ||z   j        t                     |                     |d	z  j        t                     |                     |dz  j        t                     |                     |d'z  j        t                     |                     |d d          j        t                      G d( d)t                    } |d*          }|                     |d*           |                     |                                 |d+                     |                     |                                                                 |d*                     t          d,          D ]~} |d-                    t          t           t          |                                        }|                                }|                                }	|                     |	|            |d.          }|                     t          |          d.           |                     t          |          j        t                     d/} ||          }|                     ||           |                     t          |          |           |                     t          |          j        t                     |                     t          |          t          |                     |                     |di|         d           |                     |di|         d           |                     |d-z   j        t                     |                     |d-z   |           |                     d-|z   j        t                     |                     d-|z   |           |                     |d	z  j        t                     |                     |d	z  d-           |                     |dz  j        t                     |                     |dz  |           |                     |d'z  j        t                     |                     |d'z  ||z              |                     |d d          j        t                     |                     |d d          |           |                     |d	d	         j        t                     |                     |d	d	         d-           |                     |                                j        t                     |                     |                                |           |                     |                                j        t                     |                     |                                |           |                     |                                j        t                     |                     |                                |           i }|                     |                    |          j        t                     |                     |                    |          |           |                     |                    d0d0          j        t                     |                     |                    d0d0          |           |                     |                    t/          |                    j        t                     |                     |                    t/          |                    |           |                     |                    t/          |                    j        t                     |                     |                    t/          |                    |           |                     |                    t/          |                    j        t                     |                     |                    t/          |                    |           |                     |                                j        t                     |                     |                                |            G d1 d2t                    } |d3          }	|                     |	d3           |                     |	                                 |d4                     |                     |	                                                                 |d3                     d.} ||          }	|                     t          |	          |           |                     t          |	          j        t                     |                     t          |	          t          |                     |                     |	di|         d           |                     |di|	         d           |                     |	                                j        t                     |                     |	                                |           |                     |	                                j        t                     |                     |	                                |           |                     |	                                j        t                     |                     |	                                |           |                     |	                    d0d0          j        t                     |                     |	                    d0d0          |           |                     |	                    d5d5          j        t                     |                     |	                    d5d5          |           |                     |	                    t/          |	                    j        t                     |                     |	                    t/          |	                    |           |                     |	                    t/          |	                    j        t                     |                     |	                    t/          |	                    |           |                     |	                    t/          |	                    j        t                     |                     |	                    t/          |	                    |           |                     |	                                j        t                     |                     |	                                |           |                     |	                                j        t                     |                     |	                                |           |                     |	                                j        t                     |                     |	                                |           |                     |	                                j        t                     |                     |	                                |           |                     |	d-z   j        t                     |                     |	d-z   |           |                     d-|	z   j        t                     |                     d-|	z   |           |                     |	d	z  j        t                     |                     |	d	z  d-           |                     |	dz  j        t                     |                     |	dz  |           |                     |	d'z  j        t                     |                     |	d'z  ||z              |                     |	d d          j        t                     |                     |	d d          |           |                     |	d	d	         j        t                     |                     |	d	d	         d-            G d6 d7t<                    } |t          d                    }|                     |t=          t          d                               |                    d8           |                     |t=          t          d                    d8gz              d|d<   |                     |t=          t          d9                               |                     t          d9d:                     |                     |t=          t          d:                               g |d;d <   |                     |t=          t          d<                               |d=d<= |                     t/          |          d=           |                     |t=          t          d=                               |                     t=          |          t=          t          d=                               |                     |d	         d	           |                     |d         d           |                     |d>         d	           |                     |d         d           |                     |d d         t=          t          d                               d S )?Nc                        e Zd Zd Z fdZdS )@ClassPropertiesAndMethods.test_basic_inheritance.<locals>.hexintc                      t          |           S r   )hexr   s    r?   r   zIClassPropertiesAndMethods.test_basic_inheritance.<locals>.hexint.__repr__
      4yy r@   c                 L     t                               | |                    S r   )r-   rU   )r:   r   hexints     r?   rU   zHClassPropertiesAndMethods.test_basic_inheritance.<locals>.hexint.__add__
  s!    vckk$66777r@   N)r   r   r   r   rU   )rU  s   r?   rU  rP  
  s=        ! ! !8 8 8 8 8 8 8r@   rU     	   0x10i  0x3efi90  r   r   c                   0     e Zd Zg Zd Z fdZeZ xZS )AClassPropertiesAndMethods.test_basic_inheritance.<locals>.octlongc                      t          |           S r   )octr   s    r?   r   zIClassPropertiesAndMethods.test_basic_inheritance.<locals>.octlong.__str__
  rS  r@   c                 p    |                      t          |                               |                    S r   )r  rs  rU   )r:   r   r  octlongs     r?   rU   zIClassPropertiesAndMethods.test_basic_inheritance.<locals>.octlong.__add__
  s-    ~~eGT&:&:&B&B5&I&IJJJr@   )r   r   r   r   r   rU   r   rv  )r  r_  s   @r?   r_  r[  
  sQ        I! ! !K K K K K KHHHHHr@   r_  rt   r   0o10i  0o5675rq   r  c                       e Zd ZdS )CClassPropertiesAndMethods.test_basic_inheritance.<locals>.longcloneNrK  r   r@   r?   	longclonerc  
  rM  r@   rd  c                   "    e Zd ZdgZddZd ZdS )CClassPropertiesAndMethods.test_basic_inheritance.<locals>.precfloatr   r   r   c                 .    t          |          | _        d S r   )r-   r   )r:   r  r   s      r?   r4   zLClassPropertiesAndMethods.test_basic_inheritance.<locals>.precfloat.__init__
  s    II			r@   c                     d| j         | fz  S )Nr   r   r   s    r?   r   zLClassPropertiesAndMethods.test_basic_inheritance.<locals>.precfloat.__repr__
  s    D 111r@   N)r   r   )r   r   r   r   r4   r   r   r@   r?   	precfloatrf  
  s>        I& & & &2 2 2 2 2r@   ri  g?z1.1g    @c                       e Zd Zd ZdS )DClassPropertiesAndMethods.test_basic_inheritance.<locals>.madcomplexc                 $    d| j         | j        fz  S )Nz%.17gj%+.17gr   r   r   s    r?   r   zMClassPropertiesAndMethods.test_basic_inheritance.<locals>.madcomplex.__repr__
  s    %DI(>>>r@   N)r   r   r   r   r   r@   r?   
madcomplexrk  
  s#        ? ? ? ? ?r@   rn  rw   z4j-3c                       e Zd ZdZd ZdS )BClassPropertiesAndMethods.test_basic_inheritance.<locals>.madtupleNc                     | j         | j         S t          |           }|                                 |                     |          | _         | j         S r   )_revr6   r  r  r:   r  s     r?   revzFClassPropertiesAndMethods.test_basic_inheritance.<locals>.madtuple.rev
  sE    9(9$JJ		 NN1--	y r@   r   r   r   rs  ru  r   r@   r?   madtuplerq  
  (        D! ! ! ! !r@   rw  )
rq   rr   rt   rw   r   r   rV     rW  r   )
r   rW  ry  rV  r   r   rw   rt   rr   rq   i   )rq   rr   rt   rw   r   r   rr   c                       e Zd ZdZd ZdS )CClassPropertiesAndMethods.test_basic_inheritance.<locals>.madstringNc                     | j         | j         S t          |           }|                                 |                     d                    |                    | _         | j         S Nr   rs  r6   r  r  r2  rt  s     r?   ru  zGClassPropertiesAndMethods.test_basic_inheritance.<locals>.madstring.rev!  O    9(9$JJ		 NN2771::66	y r@   rv  r   r@   r?   	madstringr{    rx  r@   r  abcdefghijklmnopqrstuvwxyzzyxwvutsrqponmlkjihgfedcba   r   12345z     r  c                       e Zd ZdZd ZdS )DClassPropertiesAndMethods.test_basic_inheritance.<locals>.madunicodeNc                     | j         | j         S t          |           }|                                 |                     d                    |                    | _         | j         S r}  r~  rt  s     r?   ru  zHClassPropertiesAndMethods.test_basic_inheritance.<locals>.madunicode.reva  r  r@   rv  r   r@   r?   
madunicoder  _  rx  r@   r  ABCDEFFEDCBAxyc                       e Zd ZdS )AClassPropertiesAndMethods.test_basic_inheritance.<locals>.sublistNrK  r   r@   r?   sublistr    rM  r@   r  rP  r         r  r  )!r-   rG   r   r  r  rG  r@  r+   rK   r.   r   r  ru  r   r2  mapr-  stripr  rstrip	translatereplaceljustr  rjustcenterlowerupper
capitalizetitler6   r   r0  )r:   rD   rd  ri  rn  baserw  r   rP   r  r   r  r^  identitytabr  r  rU  r_  s                   @@r?   test_basic_inheritancez0ClassPropertiesAndMethods.test_basic_inheritance
  s   	8 	8 	8 	8 	8 	8 	8S 	8 	8 	8 	ffQii!m,,f555ffTllQ.//999F5MME"""Q'''c!ff&,,,a$u++...rnc***qAv(#...qAv(#...vvayyB13777vvayyB13777	 	 	 	 	 	 	c 	 	 	 	WWQZZ!^,,f555 	Q.//:::GENNE"""Q'''a$u++...c!ff&,,,rnc***rnc***

{-s333qAv(#...qAv(#...q1u'---q1u'---qAv(#...qAv(#...q1u'---q1u'---q1u'---q2v(#...wwqzzR'2C888wwqzzR'2C888c''!**oo/555	 	 	 	 	 	 	 	IaLLq1u'---q1u'--- IbMMR(((Q$$$	2 	2 	2 	2 	2 	2 	2 	2 	iinn--u555IeG$$$q7+++eAhh(%000a$w--000rne,,,	? 	? 	? 	? 	? 	? 	? 	? Jr1a&)))r1~~111D!!!T***-w777JqMMa&)))D!!!T***-w777a$t**---1"111!a%*G444Q%%%!a%*G444Q%%%!a%*G444Q%%%!a%*G444Q%%%	! 	! 	! 	! 	!u 	! 	! 	! H*++1222((+@"A"ABBB1F(G(GHHHs 	# 	#Aq""AAAQ""""H[!!q;///eAhh(%000a${"3"3444adne,,,q1u'///q1u'///q2v(%000HRLLq2&&&eAhh(%000q1u'///q1u'///q1u'///q1u'///adne,,,	! 	! 	! 	! 	! 	! 	! 	! I2338999)),H"I"IJJJ		2N(O(OPPPs 	# 	#A	"''#c588"4"45566AAAQ""""IgQ)))c!ff&,,,IdOOD!!!Q&&&c!ff&,,,a$t**---!Qq)))$1q)))q2v(#...R&&&rAv(#...a&&&q1u'---Q###q1u'---Q%%%q1u'---Qt,,,adnc***111t$$$a!f&,,,1Q3$$$aggii)3///D)))ahhjj*C000T***ahhjj*C000T***akk+..8#>>>[114888aiiS))3S9993,,d333aggc!ffoo/555Q$///aggc!ffoo/555Q$///ahhs1vv&&0#666#a&&))4000aggii)3///D)))	! 	! 	! 	! 	! 	! 	! 	! Jx  H%%%**X"6"6777

8(<(<===JtQ&&&c!ff&,,,a$t**---!Qq)))$1q)))aggii)3///D)))ahhjj*C000T***ahhjj*C000T***aiiS))3S9993,,d333aiid++5s;;;4..555ahhs1vv&&0#666#a&&))4000aggc!ffoo/555Q$///aggc!ffoo/555Q$///aggii)3///D)))aggii)3///D)))allnn.444...aggii)3///D)))q2v(#...R&&&rAv(#...a&&&q1u'---Q###q1u'---Q%%%q1u'---Qt,,,adnc***111t$$$a!f&,,,1Q3$$$	 	 	 	 	d 	 	 	GE!HHDqNN+++	DqNNgY6777!DqNN+++	q"DrOO,,,"##DrOO,,,beHQ$$$DrOO,,,a$uRyy//2221q!!!1q!!!3###2"""2A2U1XX/////r@   c                    |                      t          d          5  t          d           d d d            n# 1 swxY w Y   |                      t          d          5  t          d           d d d            n# 1 swxY w Y   |                      t          d          5  t	          d           d d d            n# 1 swxY w Y   |                     t          dd          t          dd                     |                     t          d	          d
           |                     t          dd          d           |                      t          d          5  t          t          d                     d d d            n# 1 swxY w Y   |                      t          d          5  t          d           d d d            n# 1 swxY w Y   t          t          t          t          t          t          t          t          fD ]7}	  |d           |                     d|z             (# t          $ r Y 4w xY wd S )Nzkeyword argumentrq   r  rr   r   i  rm  i  r  500   abcstrict)r^  errorsr&  rt   )sequencer,  )bogus_keyword_argz4expected TypeError from bogus keyword argument to %r)r]  r   r-   r.   boolrG   r   r@  r  r   r6   r   )r:   constructors     r?   test_keywordsz'ClassPropertiesAndMethods.test_keywords  sl   ##I/ABB 	 	!HHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/ABB 	 	AJJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/ABB 	 	1IIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	bs333WS"5E5EFFFC%000F8<<<eDDD##I/ABB 	% 	%588$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%##I/ABB 	% 	%)$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%  Wc3!4) 	+ 	+K+a0000 		P)* + + + +    		+ 	+sg   9= =A<<B B "B??CC!FFF1GGGH33
I ?I c                     G fddt                     |                      d          d           |                     d d                     |                     t           d                    d            d          d d          d	 d
          di}|                     | d                   d           |                     | d                   d	           |                     | d                   d           |                      d          |           |                     |                     d                    d           d S )Nc                   *    e Zd ZdZd Z fdZd ZdS )FClassPropertiesAndMethods.test_str_subclass_as_dict_key.<locals>.cistrzSubclass of str that computes __eq__ case-insensitively.

            Also computes a hash code of the string in canonical form.
            c                 j    |                                 | _        t          | j                  | _        d S r   )r  	canonicalrG  hashcoder  s     r?   r4   zOClassPropertiesAndMethods.test_str_subclass_as_dict_key.<locals>.cistr.__init__  s&    !& $T^ 4 4r@   c                 Z    t          |          s |          }| j        |j        k    S r   )r'  r  )r:   r   cistrs     r?   rC  zMClassPropertiesAndMethods.test_str_subclass_as_dict_key.<locals>.cistr.__eq__  s1    !%// )!E%LLE~88r@   c                     | j         S r   )r  r   s    r?   rH  zOClassPropertiesAndMethods.test_str_subclass_as_dict_key.<locals>.cistr.__hash__  s
    }$r@   N)r   r   r   r  r4   rC  rH  )r  s   r?   r  r    sV         
5 5 59 9 9 9 9
% % % % %r@   r  ABCr&  aBcr  rq   r  rr   tHreert   tWoTHrEEONethrEE)r@  rG   r  r   )r:   rO   r  s     @r?   test_str_subclass_as_dict_keyz7ClassPropertiesAndMethods.test_str_subclass_as_dict_key  sx   	% 	% 	% 	% 	% 	% 	%C 	% 	% 	%$ 	uu---e---UU5\\**E222U5\\1eeEllAuuW~~qA55<<!,,,55<<!,,,55>>*A...eeEllA&&&uuW~~..22222r@   c                 j  
  G d d          }|t           t          fD ]} G 
fdd|          
 
d          } 
d          } 
d          }|                     |d           |||d}dD ]}dD ]}d	D ]}	|                     t          d
|	z            t          d|	z            d||fz             |                     t          d|	z            t          d|	z            d||fz             |                     t          d|	z            t          d|	z            d||fz             d S )Nc                       e Zd ZdS )CClassPropertiesAndMethods.test_classic_comparisons.<locals>.classicNrK  r   r@   r?   classicr    rM  r@   r  c                   R    e Zd Zd Z fdZ fdZ fdZ fdZ fdZ fdZ	dS )	=ClassPropertiesAndMethods.test_classic_comparisons.<locals>.Cc                 .    t          |          | _        d S r   r-   r  r  s     r?   r4   zFClassPropertiesAndMethods.test_classic_comparisons.<locals>.C.__init__      !$UDJJJr@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r'  r  r-   r   r:   r   r   s     r?   rC  zDClassPropertiesAndMethods.test_classic_comparisons.<locals>.C.__eq__  Z    !%++ 9#zU[88!%-- 3E31G1G 3#zU22))r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rL  zDClassPropertiesAndMethods.test_classic_comparisons.<locals>.C.__ne__%  r  r@   c                     t          |          r| j        |j        k     S t          |t                    st          |t                    r| j        |k     S t          S r   r  r  s     r?   rU  zDClassPropertiesAndMethods.test_classic_comparisons.<locals>.C.__lt__+  Z    !%++ 8#zEK77!%-- 2E31G1G 2#zE11))r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rS  zDClassPropertiesAndMethods.test_classic_comparisons.<locals>.C.__le__1  r  r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rP  zDClassPropertiesAndMethods.test_classic_comparisons.<locals>.C.__gt__7  r  r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rN  zDClassPropertiesAndMethods.test_classic_comparisons.<locals>.C.__ge__=  r  r@   N)
r   r   r   r4   rC  rL  rU  rS  rP  rN  rN  s   r?   r   r    s        , , ,* * * * ** * * * ** * * * ** * * * ** * * * ** * * * * * *r@   r   rq   rr   rt   rs   r    r"   r$   r%   r&   r'   c[x] %s c[y]x %s y
x=%d, y=%d	c[x] %s y	x %s c[y])r-   r^  rG   rH   )r:   r  r  r  r^  c3r^   r  yopr   s             @r?   test_classic_comparisonsz2ClassPropertiesAndMethods.test_classic_comparisons  s   	 	 	 	 	 	 	 	 c6* 9	< 9	<D&* &* &* &* &* &* &*D &* &* &*P 1B1B1BR###2"%%A < <  
< 
<A> 	< 	<((nr.A)B)B%)(R-%8%8%1QF%:< < < ((kB.>)?)?%)(R-%8%8%1QF%:< < < ((kB.>)?)?%)(R-%8%8%1QF%:< < < <	<
<<]9	< 9	<r@   c                      G d dt                     } |d          }                     |d                                d|            G d dt                     } |d          }                     |d                                d|            G d d	          }|t          t          t          fD ]} G  fd
d|           d          } d          } d          }	                     |d           |||	d}
dD ]}dD ]}dD ]}                     t          d|z            t          d|z            d||fz                                  t          d|z            t          d|z            d||fz                                  t          d|z            t          d|z            d||fz             d S )Nc                       e Zd ZdS ):ClassPropertiesAndMethods.test_rich_comparisons.<locals>.ZNrK  r   r@   r?   r  r  X  rM  r@   r  rq   y      ?        c                       e Zd Zd ZdS );ClassPropertiesAndMethods.test_rich_comparisons.<locals>.ZZc                 L    	 t          | |z
            dk    S #  t          cY S xY w)Ngư>)r+   r   r   s     r?   rC  zBClassPropertiesAndMethods.test_rich_comparisons.<locals>.ZZ.__eq__^  s3    *te|,,44*))))s    	#NrD  r   r@   r?   ZZr  ]  s#        * * * * *r@   r  gׇP  ?c                       e Zd ZdS )@ClassPropertiesAndMethods.test_rich_comparisons.<locals>.classicNrK  r   r@   r?   r  r  g  rM  r@   r  c                   \    e Zd Zd ZfdZ fdZ fdZ fdZ fdZ fdZ	 fdZ
d	S )
:ClassPropertiesAndMethods.test_rich_comparisons.<locals>.Cc                 .    t          |          | _        d S r   r  r  s     r?   r4   zCClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__init__k  r  r@   c                 2                         d           d S )Nzshouldn't call __cmp__)r   )rJ  r   r:   s     r?   __cmp__zBClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__cmp__m  s    II677777r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rC  zAClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__eq__o  r  r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rL  zAClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__ne__u  r  r@   c                     t          |          r| j        |j        k     S t          |t                    st          |t                    r| j        |k     S t          S r   r  r  s     r?   rU  zAClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__lt__{  r  r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rS  zAClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__le__  r  r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rP  zAClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__gt__  r  r@   c                     t          |          r| j        |j        k    S t          |t                    st          |t                    r| j        |k    S t          S r   r  r  s     r?   rN  zAClassPropertiesAndMethods.test_rich_comparisons.<locals>.C.__ge__  r  r@   N)r   r   r   r4   r  rC  rL  rU  rS  rP  rN  )r   r:   s   r?   r   r  j  s        , , ,8 8 8 8 8* * * * ** * * * ** * * * ** * * * ** * * * ** * * * * * *r@   r   rr   rt   rs   r  r  r  r  r  r  )r   rG   r-   r^  r6   rH   )r:   r  rY  r  zzr  r  r  r^  r  r^   r  r  r  r   s   `             @r?   test_rich_comparisonsz/ClassPropertiesAndMethods.test_rich_comparisonsV  s   	 	 	 	 	 	 	 	AaDDD!!!q!!!	* 	* 	* 	* 	* 	* 	* 	* R	]]T"""r"""	 	 	 	 	 	 	 	c640 :	@ :	@D(* (* (* (* (* (* (* (*D (* (* (*R 1B1B1BR###2"%%A @ @  
@ 
@A> 	@ 	@((nr.A)B)B)-hm)<)<)5A)>@ @ @ ((kB.>)?)?)-hm)<)<)5A)>@ @ @ ((kB.>)?)?)-hm)<)<)5A)>@ @ @ @	@
@@_:	@ :	@r@   c                 l     ddl m}  fd} ||j        d            |t          j        d           d S )Nr   )FileIOc                 >                         | j        |           d S r   )rG   r  )descrwhatr:   s     r?   checkz6ClassPropertiesAndMethods.test_descrdoc.<locals>.check  s!    U]D11111r@   zTrue if the file is closedz!the real part of a complex number)_ior  closedr   r   )r:   r  r  s   `  r?   test_descrdocz'ClassPropertiesAndMethods.test_descrdoc  s^    	2 	2 	2 	2 	2fm9:::gl?@@@@@r@   c                 n    G d dt                      G fdd          } G fddt                     }|                     |j        d           |                      |            j        d           |                     |j        d	           |                      |            j        d
           d S )Nc                       e Zd Zd ZdS )?ClassPropertiesAndMethods.test_doc_descriptor.<locals>.DocDescrc                 F    |r|j         j        dz   }|r|j        }d|d|S )Nz	 instancezobject=z; type=)r  r   )r:   r^  otypes      r?   rc  zGClassPropertiesAndMethods.test_doc_descriptor.<locals>.DocDescr.__get__  s<     E#-6DF +!NE/5vvuu==r@   Nr   r   r@   r?   DocDescrr    s#        > > > > >r@   r  c                   $    e Zd Z              ZdS )?ClassPropertiesAndMethods.test_doc_descriptor.<locals>.OldClassNr  r  s   r?   OldClassr            hjjGGGr@   r  c                   $    e Zd Z              ZdS )?ClassPropertiesAndMethods.test_doc_descriptor.<locals>.NewClassNr  r   s   r?   NewClassr    r  r@   r  zobject=None; type=OldClassz'object=OldClass instance; type=OldClasszobject=None; type=NewClassz'object=NewClass instance; type=NewClass)r^  rG   r  )r:   r  r  r  s      @r?   test_doc_descriptorz-ClassPropertiesAndMethods.test_doc_descriptor  s   	> 	> 	> 	> 	>v 	> 	> 	>	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	!v 	! 	! 	!)+GHHH+-VWWW)+GHHH+-VWWWWWr@   c                 V     G d dt                     } G d dt                     } G d dt                     } G d d||          }||||fD ]Y}||||fD ]P} |            }||_                             |j        |           ||_                             |j        |           QZ fd	} | |            t                      |t                      |            | |            d
            | |            t                       |t                      t                      |t                      t                       G d dt                    }	 |dt                      |dt
                     t                      }
 ||
t          d
                      ||
t          d                      ~
 G d dt                     } G d dt                     } G d dt                     } G d dt                     } G d dt                     } G d d|          } G d d|          } G d d|          } G d d |          } G d! d"|          } G d# d$|          }||f||f||f||f||ffD ]\  }} |            }d
|_        ||_                             |j        |d%|d&|d'                                |j        d
           ||_                             |j        |d%|d&|d'                                |j        d
           ||||||||t          |	f
D ]/}||||||||t          |	f
D ]}||u r | |            |           0 G d( d)t                      G fd*d+t                     fd,t          d-          D             }~d S ).Nc                       e Zd ZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.CNrK  r   r@   r?   r   r	    r  r@   r   c                       e Zd ZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.DNrK  r   r@   r?   rL  r    r  r@   rL  c                       e Zd ZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.ENrK  r   r@   r?   r  r    r  r@   r  c                       e Zd ZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.FNrK  r   r@   r?   r  r    r  r@   r  c                     	 || _                             d| d|           n# t          $ r Y nw xY w	 t          | d                               d| z             d S # t          t          f$ r Y d S w xY w)Nshouldn't allow z.__class__ = r  z shouldn't allow del %r.__class__)r  r   r   r*  r  )r  r   r:   s     r?   cantz6ClassPropertiesAndMethods.test_set_class.<locals>.cant  s    H 			AAFGGGG    B;''' 		<q@AAAAA ~.   s   & 
33A! !A65A6rq   c                       e Zd Zg ZdS )5ClassPropertiesAndMethods.test_set_class.<locals>.IntNr  r   r@   r?   Intr    s        B			r@   r  Trr   c                       e Zd ZddgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.GrD   rX   Nr  r   r@   r?   rx  r    r>  r@   rx  c                       e Zd ZddgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.HrX   rD   Nr  r   r@   r?   rK  r    r>  r@   rK  c                       e Zd ZddgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.IrD   rX   Nr  r   r@   r?   r  r    r>  r@   r  c                       e Zd ZddgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.Jr^   rX   Nr  r   r@   r?   Jr    r>  r@   r  c                       e Zd Zg dZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.K)rD   rX   rO   Nr  r   r@   r?   Kr     r  r@   r!  c                       e Zd ZdgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.Lr;  Nr  r   r@   r?   r  r#    r  r@   r  c                       e Zd ZdgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.Mr;  Nr  r   r@   r?   r  r%    r  r@   r  c                       e Zd ZdgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.Nrh  Nr  r   r@   r?   r  r'    rl  r@   r  c                       e Zd ZdgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.PrK   Nr  r   r@   r?   Pr)    rg  r@   r*  c                       e Zd ZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.QNrK  r   r@   r?   Qr,    rM  r@   r-  c                       e Zd ZddgZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.RrK   rh  Nr  r   r@   r?   Rr/    s        #]3IIIr@   r0  z
assigning z as __class__ for z silently failedc                       e Zd ZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.ONrK  r   r@   r?   Or2    rM  r@   r3  c                       e Zd Z fdZdS )3ClassPropertiesAndMethods.test_set_class.<locals>.Ac                     | _         d S r   r  )r:   r3  s    r?   r5  z;ClassPropertiesAndMethods.test_set_class.<locals>.A.__del__  s    !"r@   Nr   r   r   r5  )r3  s   r?   r{  r5    s.        # # # # # # #r@   r{  c                 $    g | ]}             S r   r   )r<  r  r{  s     r?   r=  z<ClassPropertiesAndMethods.test_set_class.<locals>.<listcomp>  s    %%%QQQSS%%%r@   r   )
r^  r  r  r6   r-   r  rI   rD   rG   r   )r:   r   rL  r  r  r   cls2r  r  r  orx  rK  r  r  r!  r  r  r  r*  r-  r0  r   r{  r3  s   `                      @@r?   test_set_classz(ClassPropertiesAndMethods.test_set_class  s   1aA: 	0 	0C1a
 0 0CEE"ak4000!ak3////0	B 	B 	B 	B 	B 	QQSS$TVVQQQSS!QQSS&VXXtTVVV&&&&&#&&&T3QHHQQQT

	# 	# 	# 	# 	# 	# 	# 	#	# 	# 	# 	# 	# 	# 	# 	#	# 	# 	# 	# 	# 	# 	# 	#	# 	# 	# 	# 	# 	# 	# 	#	( 	( 	( 	( 	( 	( 	( 	(	 	 	 	 	 	 	 		 	 	 	 	 	 	 		( 	( 	( 	( 	( 	( 	( 	(	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	 	 	 		4 	4 	4 	4 	4 	4 	4 	4 a&1a&1a&1a&1a&A 
	% 
	%ICAACAKMM!+ttIMqqqQS S SQS!$$$AKMM!+ssILaaaPR R RQS!$$$$aAq!Q44 	" 	"C1aAq!Qc9 " "$;;SSUUD!!!!"	 	 	 	 	 	 	 		# 	# 	# 	# 	# 	# 	# 	# 	# 	# &%%%%**%%%AAr@   c                 2     G d dt                     } |            }ddi|_                             |j        d            fd |d             |g             |d           |` G d dt                      fd} G d	 d
t                    } G d dt                    } G d dt           |          } G d dt           |          }|||fD ]B} ||           |j        }		 d|	d<                        d|z             3# t          $ r Y ?w xY w G d dt          j                  }
 G d dt          j                  }|
|fD ]"} |d          } ||           d|j        d<   #d } G d dt                    } G d dt                    }t          ||fD ]d} |            }ddi|_                             |j
        d                                 ||           |t                                           ed S )Nc                       e Zd ZdS )2ClassPropertiesAndMethods.test_set_dict.<locals>.CNrK  r   r@   r?   r   r>    r  r@   r   rX   rq   c                 ~    	 || _                             d| d|           d S # t          t          f$ r Y d S w xY w)Nr  z.__dict__ = )rK   r   r  r   )r  r   r:   s     r?   r  z5ClassPropertiesAndMethods.test_set_dict.<locals>.cant  s`    J!
 			44HIIIII #I.   s   ' <<c                       e Zd ZdS )5ClassPropertiesAndMethods.test_set_dict.<locals>.BaseNrK  r   r@   r?   rF  rA  +  rM  r@   rF  c                 .    | i            	 | `                     d| z             n# t          t          f$ r Y nw xY wj         d         }	 |                    | i                                d| z             dS # t          t          f$ r Y dS w xY w)zR
            x has to be an instance of a class inheriting from Base.
            zshouldn't allow del %r.__dict__rK   z&dict_descr allowed access to %r's dictN)rK   r   r  r   r  )r  
dict_descrrF  r  r:   s     r?   verify_dict_readonlyzEClassPropertiesAndMethods.test_set_dict.<locals>.verify_dict_readonly-  s     DBKKKAJ 		;a?@@@@ #I.    z2JH""1b))) 		BQFGGGGG #I.   s   * >>A? ?BBc                       e Zd ZdS )6ClassPropertiesAndMethods.test_set_dict.<locals>.Meta1NrK  r   r@   r?   Meta1rF  A  rM  r@   rG  c                       e Zd ZdS )6ClassPropertiesAndMethods.test_set_dict.<locals>.Meta2NrK  r   r@   r?   Meta2rI  C  rM  r@   rJ  c                       e Zd ZdS )2ClassPropertiesAndMethods.test_set_dict.<locals>.DNrK  r   r@   r?   rL  rL  E  rM  r@   rL  r@  c                       e Zd ZdS )2ClassPropertiesAndMethods.test_set_dict.<locals>.ENrK  r   r@   r?   r  rN  G  rM  r@   r  eggsr   z%r's __dict__ can be modifiedc                       e Zd ZdS )8ClassPropertiesAndMethods.test_set_dict.<locals>.Module1NrK  r   r@   r?   Module1rQ  T  rM  r@   rR  c                       e Zd ZdS )8ClassPropertiesAndMethods.test_set_dict.<locals>.Module2NrK  r   r@   r?   Module2rT  V  rM  r@   rU  c                 <    	 | ` dS # t          t          f$ r Y dS w xY w)NTF)rK   r   r  )r;  s    r?   can_delete_dictz@ClassPropertiesAndMethods.test_set_dict.<locals>.can_delete_dicta  s<    J t ~.   uus    c                       e Zd ZdS );ClassPropertiesAndMethods.test_set_dict.<locals>.Exception1NrK  r   r@   r?   
Exception1rY  h  rM  r@   rZ  c                       e Zd ZdS );ClassPropertiesAndMethods.test_set_dict.<locals>.Exception2NrK  r   r@   r?   
Exception2r\  j  rM  r@   r]  rD   )r^  rK   rG   rX   rI   r   r   r>  r?  r0  rD   r  )r:   r   rD   rD  rG  rJ  rL  r  r   
class_dictrR  rU  r?  r   rW  rZ  r]  ExceptionTyper;  rF  r  s   `                  @@r?   test_set_dictz'ClassPropertiesAndMethods.test_set_dict  s   ACC1X
a   	J 	J 	J 	J 	J 	QQQ


J	 	 	 	 	6 	 	 		H 	H 	H 	H 	H 	H 	H(	 	 	 	 	D$ 	 	 		 	 	 	 	D$ 	 	 		 	 	 	 	% 	 	 	 		 	 	 	 	% 	 	 	 	a7 	A 	AC  %%%JA%+
6" 		9C?@@@@    	 	 	 	 	e& 	 	 		 	 	 	 	dE, 	 	 	!7* 	* 	*J*V$$C  %%%#)CL  	 	 		 	 	 	 	D 	 	 		 	 	 	 	y 	 	 	&
J> 	P 	PMAqAJQS!$$$__Q//1N1NOOOO		P 	Ps   6D
D! D!c                 J    G fddt                     |                     t           d           d          z             d           |                     t           d          dz             d           |                     t          d d          z             d           |                     t           d           d          z            d           |                     t          d d          z            d           |                     t           d          dz            d           |                     t          t           d           d           d                              d            G d	 d
t                    }d S )Nc                   <    e Zd Zd Z fdZeZd fd	Zd fd	ZdS )BClassPropertiesAndMethods.test_binary_operator_override.<locals>.Ic                 &    dt          |           z  S )NzI(%r)r-   r   s    r?   r   zKClassPropertiesAndMethods.test_binary_operator_override.<locals>.I.__repr__u  s    T**r@   c                 T     t          |           t          |          z             S r   re  )r:   r   r  s     r?   rU   zJClassPropertiesAndMethods.test_binary_operator_override.<locals>.I.__add__w  s$    qTSZZ/000r@   Nc           	          |3 t          t          |           t          |                              S  t          t          |           t          |          t          |                              S r   r   r-   r:   r   r   r  s      r?   __pow__zJClassPropertiesAndMethods.test_binary_operator_override.<locals>.I.__pow__z  s\    ;1STCJJ778881STCJJCAABBBr@   c           	          |4 t          t          |          t          |           |                    S  t          t          |          t          |           t          |                              S r   rh  ri  s      r?   __rpow__zKClassPropertiesAndMethods.test_binary_operator_override.<locals>.I.__rpow__  s^    ;1SUSYY<<===1SUSYYCAABBBr@   r   )r   r   r   r   rU   r   rj  rl  )r  s   r?   r  rc  t  s        + + +1 1 1 1 1HC C C C C C
C C C C C C C Cr@   r  rq   rr   zI(3)rt   zI(8)r   c                       e Zd Zd ZdS )BClassPropertiesAndMethods.test_binary_operator_override.<locals>.Sc                 V    |                                  |                                 k    S r   )r  r   s     r?   rC  zIClassPropertiesAndMethods.test_binary_operator_override.<locals>.S.__eq__  s    zz||u{{}}44r@   NrD  r   r@   r?   Srn    r  r@   rp  )r-   rG   r   r   r@  )r:   rp  r  s     @r?   test_binary_operator_overridez7ClassPropertiesAndMethods.test_binary_operator_overrider  s   	C 	C 	C 	C 	C 	C 	C 	C 	C 	C" 	aaddQQqTTk**F333aaddQh000a!!A$$h000aaddaaddl++V444a11Q44i&111aaddai&111c!!A$$!aadd3344f===	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r@   c                     G d dt                     } G d d|          } G d d|          } G d d||          } |            }t          |          }d	 |_        |                     t          |          d
           d |_        |                     t          |          d           d |_        |                     t          |          d           d |_        |                     t          |          d           d |_        |                     t
          t          |           |`|                     t          |          d           d |_        |                     t
          t          |           |`|                     t          |          d           d |_        |                     t
          t          |           |`|                     t          |          d
           d |_        |                     t
          t          |           |`|                     t          |          |           d
|_        d
|_        |                     |j        d
           |                     |j        d
           d }||_        |                     |j        d           |                     |j        d
           d }||_	        |                     |j
        d           |                     |j        d           |                     |j        d
           |`|                     |j        d
           |`|                     |j        d           |                     |j        d
           |`		 |j         |                     d           n# t          $ r Y nw xY w G d dt                     } G d d|          }~t          j                     d |_        d S )Nc                       e Zd ZdS >ClassPropertiesAndMethods.test_subclass_propagation.<locals>.ANrK  r   r@   r?   r{  ru    rM  r@   r{  c                       e Zd ZdS >ClassPropertiesAndMethods.test_subclass_propagation.<locals>.BNrK  r   r@   r?   r  rx    rM  r@   r  c                       e Zd ZdS )>ClassPropertiesAndMethods.test_subclass_propagation.<locals>.CNrK  r   r@   r?   r   rz    rM  r@   r   c                       e Zd ZdS )>ClassPropertiesAndMethods.test_subclass_propagation.<locals>.DNrK  r   r@   r?   rL  r|    rM  r@   rL  c                     dS rj  r   r   s    r?   r  zEClassPropertiesAndMethods.test_subclass_propagation.<locals>.<lambda>  s    " r@   r   c                     dS )N:  r   r   s    r?   r  zEClassPropertiesAndMethods.test_subclass_propagation.<locals>.<lambda>      # r@   r  c                     dS )N   r   r   s    r?   r  zEClassPropertiesAndMethods.test_subclass_propagation.<locals>.<lambda>  r  r@   r  c                     dS r&  r   r   s    r?   r  zEClassPropertiesAndMethods.test_subclass_propagation.<locals>.<lambda>  r  r@   r   c                 H    |dk    rdS t                               | |          S )Nr   r  )r^  r$  r  s     r?   r$  zMClassPropertiesAndMethods.test_subclass_propagation.<locals>.__getattribute__  s&    u}}r**4666r@   r  c                 ,    |dv rdS t          |          )N)r   r   r   rP  r  r  s     r?   r  zHClassPropertiesAndMethods.test_subclass_propagation.<locals>.__getattr__  s!    ---w &&&r@   rP  zd.foo should be undefined nowc                       e Zd ZdS rt  rK  r   r@   r?   r{  z>ClassPropertiesAndMethods.test_subclass_propagation.<locals>.A  rM  r@   c                       e Zd ZdS rw  rK  r   r@   r?   r  z>ClassPropertiesAndMethods.test_subclass_propagation.<locals>.B  rM  r@   c                      d S r   r   r  s    r?   r  zEClassPropertiesAndMethods.test_subclass_propagation.<locals>.<lambda>  s    4 r@   )r^  rG  rH  rG   r  r   r   r   r$  r  r   r   r  r   rX  ri   )	r:   r{  r  r   rL  rO   	orig_hashr$  r  s	            r?   test_subclass_propagationz3ClassPropertiesAndMethods.test_subclass_propagation  sQ   	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	1 	 	 	ACCGG	$_
a"%%%%%
a#&&&%%
a#&&&%%
a#&&&
)T1---Ja#&&&
)T1---Ja#&&&
)T1---Ja"%%%
)T1---Ja),,,######	7 	7 	7 .######	' 	' 	' $)))#########E(((###M	7EE II56666  	 	 	D		 	 	 	 	 	 	 		 	 	 	 	 	 	 	's   /N 
NNc                 z   dd l } G d dt                    }d} ||          }|                     |                    |          |                    |                      G d dt                    } |d          }	 |                    |           |                     d           d S # t          $ r Y d S w xY w)	Nr   c                       e Zd ZdS )BClassPropertiesAndMethods.test_buffer_inheritance.<locals>.MyBytesNrK  r   r@   r?   r  r    rM  r@   r  r  c                       e Zd ZdS )@ClassPropertiesAndMethods.test_buffer_inheritance.<locals>.MyIntNrK  r   r@   r?   r  r    rM  r@   r  r   z2subclass of int should not have a buffer interface)binasciir  rG   b2a_hexr-   r   r   )r:   r  r  r  rQ   r  s         r?   test_buffer_inheritancez1ClassPropertiesAndMethods.test_buffer_inheritance  s    		 	 	 	 	e 	 	 	GDMM 	))!,,h.>.>t.D.DEEE	 	 	 	 	C 	 	 	E"II	QIIJKKKKK 	 	 	DD	s    *B, ,
B:9B:c                    dd l dd l} G fddt                    } |d          }|                     t	          |          |           |                     t	          t          |                    t                     |                     t	          t          |                    t                     |                     t          |          d           |                     t          |          d           |                     t          |          d           |                     |                                d           |                     |                                d           d S )Nr   c                        e Zd Z fdZd ZdS )GClassPropertiesAndMethods.test_str_of_str_subclass.<locals>.octetstringc                 z                         |                     d                                        d          S )Nascii)r  encodedecode)r:   r  s    r?   r   zOClassPropertiesAndMethods.test_str_of_str_subclass.<locals>.octetstring.__str__  s1    ''G(<(<==DDWMMMr@   c                     | dz   S )Nz reprr   r   s    r?   r   zPClassPropertiesAndMethods.test_str_of_str_subclass.<locals>.octetstring.__repr__  s    g~%r@   N)r   r   r   r   r   )r  s   r?   octetstringr    sB        N N N N N& & & & &r@   r  r{  A   41zA repr)	r  ior@  rG   rI   r   ordr   r   )r:   r  r  r:  r  s       @r?   test_str_of_str_subclassz2ClassPropertiesAndMethods.test_str_of_str_subclass  sP   				& 	& 	& 	& 	& 	& 	&# 	& 	& 	& Ka+...c!ffs+++d1gg,,,Q&&&Q&&&a(+++d+++x00000r@   c                     G d dt                     } G d d          } |d          |_        |                     t          |          t                      |                     t           |                      t                      d S )Nc                       e Zd ZdS )LClassPropertiesAndMethods.test_repr_with_module_str_subclass.<locals>.StrSubNrK  r   r@   r?   StrSubr    rM  r@   r  c                       e Zd ZdS )JClassPropertiesAndMethods.test_repr_with_module_str_subclass.<locals>.SomeNrK  r   r@   r?   Somer    rM  r@   r  example)r@  r   r  r   )r:   r  r  s      r?   "test_repr_with_module_str_subclassz<ClassPropertiesAndMethods.test_repr_with_module_str_subclass	  s    	 	 	 	 	S 	 	 		 	 	 	 	 	 	 	 &++d4jj#...d4466llC00000r@   c                     d }|                      |                    d          d           t                      }t                              |ddd           |                      |d           d S )	Nc                     | S r   r   r  s    r?   r  z;ClassPropertiesAndMethods.test_keyword_arguments.<locals>.f  s    (r@   r   r  u   abc½€latin1r  )encodingr  s   abc?)rG   re  	bytearrayr4   )r:   r  bas      r?   test_keyword_argumentsz0ClassPropertiesAndMethods.test_keyword_arguments  s}    b))2...[[2$,Y 	 	@ 	@ 	@[)))))r@   c                      G d dt                     } |            |_        |                     t                    5    |                         d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )8ClassPropertiesAndMethods.test_recursive_call.<locals>.ANrK  r   r@   r?   r{  r    rM  r@   r{  )r^  re  r  RecursionErrorra  s     r?   test_recursive_callz-ClassPropertiesAndMethods.test_recursive_call  s    	 	 	 	 	 	 	 	 QSS
~.. 	 	AACCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA!$A!c                 X   g  G fddt                     } |            }|                     g            ~t          j                     |                     dg            G d dt                     } |            }|d= |                     d           d S # t
          $ r Y d S w xY w)Nc                       e Zd Z fdZdS )5ClassPropertiesAndMethods.test_delete_hook.<locals>.Cc                 2                         d           d S r   r  )r:   r&  s    r?   r5  z=ClassPropertiesAndMethods.test_delete_hook.<locals>.C.__del__)  s    

1r@   Nr7  )r&  s   r?   r   r  (  s.              r@   r   rq   c                       e Zd ZdS )5ClassPropertiesAndMethods.test_delete_hook.<locals>.DNrK  r   r@   r?   rL  r  1  r  r@   rL  r   z$invalid del() didn't raise TypeError)r^  rG   r   rX  r   r   )r:   r   r^   rL  rO   r&  s        @r?   test_delete_hookz*ClassPropertiesAndMethods.test_delete_hook%  s    	 	 	 	 	 	 	 	 	 	 ACCb!!!qc"""ACC1ii>????? $$$s   B 
B)(B)c                 R    G d dt                     } |            }	 t          |           |                     d           n# t          $ r Y nw xY w G d dt                    } |            }	 t          |           |                     d           d S # t          $ r Y d S w xY w)Nc                       e Zd ZdS )?ClassPropertiesAndMethods.test_hash_inheritance.<locals>.mydictNrK  r   r@   r?   mydictr  :  rM  r@   r  z#hash() of dict subclass should failc                       e Zd ZdS )?ClassPropertiesAndMethods.test_hash_inheritance.<locals>.mylistNrK  r   r@   r?   mylistr  D  rM  r@   r  z#hash() of list subclass should fail)r   rG  r   r   r6   )r:   r  rO   r  s       r?   test_hash_inheritancez/ClassPropertiesAndMethods.test_hash_inheritance7  s   	 	 	 	 	T 	 	 	FHH	=GGG II;<<<<  	 	 	D	
	 	 	 	 	T 	 	 	FHH	=GGG II;<<<<<  	 	 	DD	s#   A 
AA2B 
B&%B&c                    ddz    |                      d           n# t          $ r Y nw xY wd                    d           |                      d           n# t          $ r Y nw xY wd                    dg           |                      d           n# t          $ r Y nw xY wd                    d           |                      d	           n# t          $ r Y nw xY wd
d z   |                      d           n# t          $ r Y nw xY wdi z   |                      d           n# t          $ r Y nw xY wddz   |                      d           n# t          $ r Y nw xY wddz   |                      d           n# t          $ r Y nw xY wddz   |                      d           n# t          $ r Y nw xY wdd z   |                      d           n# t          $ r Y nw xY w|                     d                                d           |                     d                                d           |                     ddz  d           |                     ddz  d           d S )NrD   r   z'' + 5 doesn't raise TypeErrorr   z%''.split('') doesn't raise ValueErrorr   z$''.join([0]) doesn't raise TypeError5z'''.rindex('5') doesn't raise ValueErrorz%(n)sz&'%(n)s' % None doesn't raise TypeErrorz%(nz&'%(n' % {} '' doesn't raise ValueErrorz%*sr&  z''%*s' % ('abc') doesn't raise TypeErrorz%*.*s)r&  r   z,'%*.*s' % ('abc', 5) doesn't raise TypeErrorz%srq   rr   z%'%s' % (1, 2) doesn't raise TypeError%z#'%' % None doesn't raise ValueError534253rq   534253xz%c)r   r   splitr  r2  rindexrG   isdigitr   s    r?   test_str_operationsz-ClassPropertiesAndMethods.test_str_operationsN  s   1WWii89999 $$ XXb\\\ii?@@@@ 44 WWaS\\\ii>???? $$ YYs^^^iiABBBB 44 t^^ii@AAAA $$ RZZii@AAAA 44 e__iiABBBB $$ z!!iiFGGGG $$ F]]ii?@@@@ $$ 4ZZii=>>>> 44 	))++Q///**,,a0006***S)))))s    
))A 
A$#A$'B 
B B #C 
CCC9 9
DD	D$ $
D10D14E 
EEE: :
FF
F% %
F21F25G 
GGc                      G d d          } |            } |            }||_         ||_        t          |          }d S )Nc                       e Zd ZdS )?ClassPropertiesAndMethods.test_deepcopy_recursive.<locals>.NodeNrK  r   r@   r?   rX  r  ~  rM  r@   rX  )rX   rD   r   )r:   rX  rD   rX   rY  s        r?   test_deepcopy_recursivez1ClassPropertiesAndMethods.test_deepcopy_recursive|  s]    	 	 	 	 	 	 	 	DFFDFFQKKr@   c                 Z   ddl m} |                    |          }t          |           |                     |d           |                     |d           |                     |d           |                     |j                   d|_        |                     |j        ddi           d S )Nr   )r?  r   __file__r   rq   )	r>  r?  r   r@  r   r   rK   r   rG   )r:   r  rQ   s      r?   test_uninitialized_modulesz4ClassPropertiesAndMethods.test_uninitialized_modules  s    ))))))IIaLLAa,,,a,,,a'''$$$eQZ00000r@   c                     G fddt                     } G d d|          |                      |d          g d           |                      d          g d            d           }|                     |j        d             |d          }|                     |           |                     |j        d            d          }|                     |           |                     |j        d            G d dt                     }|                      |dd	          |dd	f            G d
 d|          |                      dd	          dd	f            G d dt                     }|                      |dd	          ||dd	f            G d d|          |                      dd	          dd	f           d S )Nc                       e Zd Z fdZdS )3ClassPropertiesAndMethods.test_funny_new.<locals>.Cc                     t          |t                    rg dS t          |t                    rt                                        S t                              |           S )Nrs   )r'  r@  r-   r^  r   )r   r  rL  s     r?   r   z;ClassPropertiesAndMethods.test_funny_new.<locals>.C.__new__  sS    c3'' 1			)9S)) 1&..2C2C+C#^^C000r@   NrT  )rL  s   r?   r   r    s.        1 1 1 1 1 1 1r@   r   c                       e Zd Zd ZdS )3ClassPropertiesAndMethods.test_funny_new.<locals>.Dc                     || _         d S r   rF  r:   r  s     r?   r4   z<ClassPropertiesAndMethods.test_funny_new.<locals>.D.__init__  rW  r@   NrM  r   r@   r?   rL  r    rX  r@   rL  r  rs   rq   c                   $    e Zd Zed             ZdS )r  c                      | S r   r   r  s    r?   r   z;ClassPropertiesAndMethods.test_funny_new.<locals>.C.__new__      r@   N)r   r   r   rf  r   r   r@   r?   r   z3ClassPropertiesAndMethods.test_funny_new.<locals>.C  s-          \  r@   rr   c                       e Zd ZdS r  NrK  r   r@   r?   rL  z3ClassPropertiesAndMethods.test_funny_new.<locals>.D  rM  r@   c                   $    e Zd Zed             ZdS )r  c                      | S r   r   r  s    r?   r   z;ClassPropertiesAndMethods.test_funny_new.<locals>.C.__new__  r  r@   N)r   r   r   r  r   r   r@   r?   r   z3ClassPropertiesAndMethods.test_funny_new.<locals>.C  s-          [  r@   c                       e Zd ZdS r  rK  r   r@   r?   rL  z3ClassPropertiesAndMethods.test_funny_new.<locals>.D  rM  r@   )r^  rG   r   r  )r:   r   rO   rL  s      @r?   test_funny_newz(ClassPropertiesAndMethods.test_funny_new  s   	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
	 	 	 	 	 	 	 	 	3+++3+++AdGG%%%AaDDa###"""AaDDa###"""	 	 	 	 	 	 	 	 	1a1a),,,	 	 	 	 	 	 	 	1a1a),,,	 	 	 	 	 	 	 	 	1a1aA,///	 	 	 	 	 	 	 	1a1aA,/////r@   c                     G d dt                     } |            }|}|dz  }|                     ||df           |}|dz  }|                     ||df           |}|dz  }|                     ||df           |}|dz  }|                     ||df           |}|d z  }|                     ||d f           |}|dz  }|                     ||df           d S )Nc                       e Zd Zd ZdS )2ClassPropertiesAndMethods.test_imul_bug.<locals>.Cc                 
    | |fS r   r   r   s     r?   r{   z;ClassPropertiesAndMethods.test_imul_bug.<locals>.C.__imul__  s    e}$r@   N)r   r   r   r{   r   r@   r?   r   r    ri  r@   r   r  rr   rt   l                r   r^  rG   )r:   r   r  r  s       r?   test_imul_bugz'ClassPropertiesAndMethods.test_imul_bug  s/   	% 	% 	% 	% 	% 	% 	% 	% ACC	SQH%%%	QQF###	QQF###	VQK(((	T	QI&&&	U
QJ'''''r@   c                 `    dd l } G  fddt                    } |d          }|                    d                                |j        d                                |                                d           |                     |          }                     |j        d                                |                                d           |                    |          }                     |j        d                                |                                d           d S )Nr   c                   6    e Zd ZddZddZd Zd Z fdZdS )7ClassPropertiesAndMethods.test_copy_setstate.<locals>.CNc                 "    || _         || _        d S r   )r   _C__foorV  s     r?   r4   z@ClassPropertiesAndMethods.test_copy_setstate.<locals>.C.__init__  s     


r@   c                     || _         d S r   rF  rV  s     r?   setfooz>ClassPropertiesAndMethods.test_copy_setstate.<locals>.C.setfoo  rW  r@   c                     | j         S r   )r  r   s    r?   getfooz>ClassPropertiesAndMethods.test_copy_setstate.<locals>.C.getfoo  r  r@   c                     | j         gS r   rF  r   s    r?   __getstate__zDClassPropertiesAndMethods.test_copy_setstate.<locals>.C.__getstate__  s    z!r@   c                 v                         t          |          d           |d         x| _        | _        d S r  )rG   r  r  r   )rJ  lstr:   s     r?   __setstate__zDClassPropertiesAndMethods.test_copy_setstate.<locals>.C.__setstate__  s5      S1---*-a&0eiiir@   r   )r   r   r   r4   r  r  r  r  r   s   r?   r   r    st        ! ! ! !   " " "" " "1 1 1 1 1 1 1r@   r   r   r  )r   r^  r  rG   r   r  r   )r:   r   r   rD   rX   s   `    r?   test_copy_setstatez,ClassPropertiesAndMethods.test_copy_setstate  s&   	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 AbEE	###R(((IIaLL###R(((MM!###R(((((r@   c                 	   |                      dd d         d           |                      dt          d                   d           |                      t                              dt          d                    d            G d dt                    }|                       |d          d d         d           |                       |d          t          d                   d           |                       |d                              t          d                    d           |                      dd d         d           |                      dt          d                   d           |                      t                              dt          d                    d            G d	 d
t                    }|                       |d          d d         d           |                       |d          t          d                   d           |                       |d                              t          d                    d           |                      g dd d         ddg           |                      g dt          d                   ddg           |                      t
                              g dt          d                    ddg            G d dt
                    }|                       |g d          d d         ddg           |                       |g d          t          d                   ddg           |                       |g d                              t          d                    ddg            |g d          }ddg|t          dd          <   |                      |g d           ddg|t          ddd          <   |                      |g d           |                    t          dd          ddg           |                      |g d           |                    t          ddd          ddg           |                      |g d           d S )NrP  rw   hellc                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_slices.<locals>.Sc                 8    t                               | |          S r   )r@  r[   r  s     r?   r[   z<ClassPropertiesAndMethods.test_slices.<locals>.S.__getitem__  s    tQ///r@   Nr+  r   r@   r?   rp  r     s#        0 0 0 0 0r@   rp  rs   rr   r  c                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_slices.<locals>.Tc                 8    t                               | |          S r   )r  r[   r  s     r?   r[   z<ClassPropertiesAndMethods.test_slices.<locals>.T.__getitem__   s    ((q111r@   Nr+  r   r@   r?   r  r    #        2 2 2 2 2r@   r  rq   c                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_slices.<locals>.Lc                 8    t                               | |          S r   )r6   r[   r  s     r?   r[   z<ClassPropertiesAndMethods.test_slices.<locals>.L.__getitem__
  s    ''a000r@   Nr+  r   r@   r?   r  r  	  r  r@   r  rt   )rq   rt   rr   r   )rt   rq   rr   )rt   rr   rq   )rr   rt   rq   )rG   r_   r@  r[   r  r6   ri   )r:   rp  r  r  rD   s        r?   test_slicesz%ClassPropertiesAndMethods.test_slices  sh    	!f---q*F333%((;;VDDD	0 	0 	0 	0 	0 	0 	0 	0 	7BQB0007E!HH-v6667//a996BBB!e,,,q*E222**7E!HH==uEEE	2 	2 	2 	2 	2 	2 	2 	2 	7BQB///7E!HH-u5557//a995AAA!qe,,,q*QqE222))'''588<<qeDDD	1 	1 	1 	1 	1 	1 	1 	1 	777BQB!A///777E!HH-!u555777//a99Aa5AAAAgggJJA%1++GGG$$$qE%1a..GGG$$$	eAqkkAa5)))GGG$$$	eAq!nnqe,,,GGG$$$$$r@   c                      G fddt                                  }d|_        ~t          j                     |                     t          j                  d           `d S )Nc                       e Zd Zg Z fdZdS )>ClassPropertiesAndMethods.test_subtype_resurrection.<locals>.Cc                 <    j                             |            d S r   )	containerr   r   s    r?   r5  zFClassPropertiesAndMethods.test_subtype_resurrection.<locals>.C.__del__   s    ""4(((((r@   N)r   r   r   r  r5  rN  s   r?   r   r    s3        I) ) ) ) ) ) )r@   r   r   rq   )r^  rw  r   rX  rG   r  r  r5  )r:   r^   r   s     @r?   test_subtype_resurrectionz3ClassPropertiesAndMethods.test_subtype_resurrection  s    	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ACC
 Q[))1--- IIIr@   c                 l     G d dt                     }d }t          d          D ]} ||          }~d S )Nc                       e Zd ZdgZd ZdS )9ClassPropertiesAndMethods.test_slots_trash.<locals>.trashr  c                     || _         d S r   r  r  s     r?   r4   zBClassPropertiesAndMethods.test_slots_trash.<locals>.trash.__init__8  r  r@   N)r   r   r   r   r4   r   r@   r?   trashr  6  s*        I    r@   r  iP  )r^  r   )r:   r  r:  r   s       r?   test_slots_trashz*ClassPropertiesAndMethods.test_slots_trash3  s^    	 	 	 	 	F 	 	 	 u 	 	AaAAAAr@   c                 L    G d dt                     } G d dt                     } G d d||          }t          j                    r |                     |j        |j                   |                     |d           |                     |d           d	 |            _        d S )
Nc                       e Zd ZdZdS )DClassPropertiesAndMethods.test_slots_multiple_inheritance.<locals>.Ar   Nr  r   r@   r?   r{  r  A          IIIr@   r{  c                       e Zd ZdS )DClassPropertiesAndMethods.test_slots_multiple_inheritance.<locals>.BNrK  r   r@   r?   r  r  C  rM  r@   r  c                       e Zd ZdZdS )DClassPropertiesAndMethods.test_slots_multiple_inheritance.<locals>.Cr   Nr  r   r@   r?   r   r  E  r  r@   r   rK   rh  rr   )r^  r   r  rG   __basicsize__r   r  )r:   r{  r  r   s       r?   test_slots_multiple_inheritancez9ClassPropertiesAndMethods.test_slots_multiple_inheritance?  s    	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	! 	 	 	$&& 	?Q_ao>>>1j)))1m,,,r@   c                     G d dt                     } |            }|                     |dz  d           |                     |dz  d           |                     d|z  d           |                     d|z  d           d S )Nc                       e Zd Zd Zd ZdS ).ClassPropertiesAndMethods.test_rmul.<locals>.Cc                     dS )Nr   r   r   s     r?   r}   z6ClassPropertiesAndMethods.test_rmul.<locals>.C.__mul__Q      ur@   c                     dS )Nrmulr   r   s     r?   r   z7ClassPropertiesAndMethods.test_rmul.<locals>.C.__rmul__S  s    vr@   N)r   r   r   r}   r   r   r@   r?   r   r"  P  s2              r@   r   rr   r   g@r&  r  r1  s      r?   	test_rmulz#ClassPropertiesAndMethods.test_rmulM  s    	 	 	 	 	 	 	 	
 ACC1e$$$3&&&1f%%%Q'''''r@   c                 J     G d dt                     } |            }|dz  }d S )Nc                       e Zd Zd ZdS ).ClassPropertiesAndMethods.test_ipow.<locals>.Cc                     d S r   r   r   s     r?   __ipow__z7ClassPropertiesAndMethods.test_ipow.<locals>.C.__ipow___      r@   Nr   r   r   r,  r   r@   r?   r   r*  ^  #            r@   r   rr   r  r1  s      r?   	test_ipowz#ClassPropertiesAndMethods.test_ipow[  sF    	 	 	 	 	 	 	 	 ACC	ar@   c                      G d d          } G d d|          } G d d|          } |            } |            } |            }||z  }|                      |d           ||z  }|                      |d           d S )	Nc                       e Zd Zd ZdS )FClassPropertiesAndMethods.test_ipow_returns_not_implemented.<locals>.Ac                     t           S r   r   r   s     r?   r,  zOClassPropertiesAndMethods.test_ipow_returns_not_implemented.<locals>.A.__ipow__f  r   r@   Nr.  r   r@   r?   r{  r3  e  r   r@   r{  c                       e Zd Zd ZdS )FClassPropertiesAndMethods.test_ipow_returns_not_implemented.<locals>.Bc                     dS r   r   r   s     r?   rl  zOClassPropertiesAndMethods.test_ipow_returns_not_implemented.<locals>.B.__rpow__j      qr@   Nr   r   r   rl  r   r@   r?   r  r6  i  #            r@   r  c                       e Zd Zd ZdS )FClassPropertiesAndMethods.test_ipow_returns_not_implemented.<locals>.Cc                     dS rE  r   r   s     r?   rj  zNClassPropertiesAndMethods.test_ipow_returns_not_implemented.<locals>.C.__pow__n  r8  r@   Nr   r   r   rj  r   r@   r?   r   r<  m  r:  r@   r   rq   rr   r  )r:   r{  r  r   rD   rX   r^   s          r?   !test_ipow_returns_not_implementedz;ClassPropertiesAndMethods.test_ipow_returns_not_implementedd  s    	& 	& 	& 	& 	& 	& 	& 	&	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 ACCACCACC	aA	aAr@   c                      G d d          }t                      } |            }||z  }|                     |d           d S )Nc                       e Zd Zd ZdS )1ClassPropertiesAndMethods.test_no_ipow.<locals>.Bc                     dS r   r   r   s     r?   rl  z:ClassPropertiesAndMethods.test_no_ipow.<locals>.B.__rpow__|  r8  r@   Nr9  r   r@   r?   r  rB  {  r:  r@   r  rq   r  )r:   r  rD   rX   s       r?   test_no_ipowz&ClassPropertiesAndMethods.test_no_ipowz  se    	 	 	 	 	 	 	 	 HHACC	aAr@   c                    d }|                      t                    5 }|dz  }d d d            n# 1 swxY w Y   |                     dt          |j                             |                      t                    5 }|dz  }d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nrr   z#unsupported operand type(s) for **=z"unsupported operand type(s) for **)r  r   r  r@  r  )r:   r  r  r  s       r?   test_ipow_exception_textz2ClassPropertiesAndMethods.test_ipow_exception_text  s)   y)) 	R!GA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	;S=N=NOOOy)) 	RQA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	:C<M<MNNNNNs   /33<BBBc                 l    G d dt                     } G fddt                      G d d|          } G d d|          } |            } |            }|f|_        f|_        |                     |                                d	           |                     |                                d	           |                     |j        d
           |                     |j        d
           |                                                     |g           	 |`|                     d           n# t          t          f$ r Y nw xY w	 d|_        |                     d           n?# t          $ r2}t          |          dk    r|                     d           Y d }~nd }~ww xY w	 |f|_        |                     d           n# t          $ r Y nw xY w	 ||f|_        |                     d           n# t          $ r Y nw xY w	 |f|_        |                     d           d S # t          $ r Y d S w xY w)Nc                       e Zd ZdS )7ClassPropertiesAndMethods.test_mutable_bases.<locals>.CNrK  r   r@   r?   r   rI    rM  r@   r   c                   (     e Zd Z fdZd Z xZS )8ClassPropertiesAndMethods.test_mutable_bases.<locals>.C2c                 Z    |dk    rdS t          |                               |          S )NrD   rr   )rs  r$  )r:   rw  r  r  s     r?   r$  zIClassPropertiesAndMethods.test_mutable_bases.<locals>.C2.__getattribute__  s-    3;;1 T??;;DAAAr@   c                     dS r   r   r   s    r?   rN   z=ClassPropertiesAndMethods.test_mutable_bases.<locals>.C2.meth  r8  r@   )r   r   r   r$  rN   rv  )r  r  s   @r?   r  rK    sS        B B B B B B
      r@   r  c                       e Zd ZdS )7ClassPropertiesAndMethods.test_mutable_bases.<locals>.DNrK  r   r@   r?   rL  rO    rM  r@   rL  c                       e Zd ZdS )7ClassPropertiesAndMethods.test_mutable_bases.<locals>.ENrK  r   r@   r?   r  rQ    rM  r@   r  rq   rr   z&shouldn't be able to delete .__bases__r   z)shouldn't be able to set .__bases__ to ()z/a new-style class can't have only classic basesz'wrong error message for .__bases__ = ()z.shouldn't be able to create inheritance cyclesz#didn't detect repeated base classes)
r^  rL   rG   rN   rD   rA  r   r   r  r@  )r:   r   rL  r  rO   r;  r  r  s          @r?   test_mutable_basesz,ClassPropertiesAndMethods.test_mutable_bases  s   	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	ACCACCde1%%%1%%%a   a   **,,qc222	@ II>???? >* 	 	 	D	
	CAK
 IIABBBB	  	E 	E 	E3xxLLL		CDDD	E	H$AK
 IIFGGGG	  	 	 	D		=a&AK II;<<<<  	 	 	D	
	H$AK IIFGGGGG  	 	 	DD	s`   D2 2EE
E' '
F#1(FF#'G 
GG	G5 5
HHH% %
H32H3c                    d t           j                                        D             }|D ]]}t                              |d           |t          ur7|t
          u rd}nd}|                     t          |j                  ||           ^ G d dt                    } G d dt                    } G d	 d
|          }	 t          f|_        |                     d           n# t          $ r Y nw xY w	 t          ft          _        |                     d           n# t          $ r Y nw xY w	 |t          f|_        |                     d           d S # t          $ r Y d S w xY w)Nc                 <    g | ]}t          |t                    |S r   )r'  rI   )r<  tps     r?   r=  z@ClassPropertiesAndMethods.test_builtin_bases.<locals>.<listcomp>  s6     2 2 2&r4002 2 2 2r@   rL   rr   rq   c                       e Zd ZdS )7ClassPropertiesAndMethods.test_builtin_bases.<locals>.LNrK  r   r@   r?   r  rW    rM  r@   r  c                       e Zd ZdS )7ClassPropertiesAndMethods.test_builtin_bases.<locals>.CNrK  r   r@   r?   r   rY    rM  r@   r   c                       e Zd ZdS )7ClassPropertiesAndMethods.test_builtin_bases.<locals>.DNrK  r   r@   r?   rL  r[    rM  r@   rL  z/shouldn't turn list subclass into dict subclassz-shouldn't be able to assign to list.__bases__z#best_base calculation found wanting)builtinsrK   valuesr^  r$  ExceptionGrouprG   r  rL   r6   r   r   r   )r:   builtin_typesrU  	num_basesr  r   rL  s          r?   test_builtin_basesz,ClassPropertiesAndMethods.test_builtin_bases  s   2 2h&7&>&>&@&@ 2 2 2 	C 	CB##B444'' !II !I  R\!2!2IrBBB	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		I'AK IIGHHHH  	 	 	D	
	G"WDN IIEFFFF  	 	 	D	
	=d)AK II;<<<<<  	 	 	DD	s6   >C! !
C.-C.2D 
D'&D'+E 
EEc           	      T   |                      t                    5   G d dt          d                     }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t          d                     }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          d           t                    }d d d            n# 1 swxY w Y    G d dt                    }|                      t                    5   G d d|t          d                     }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          d           |          }d d d            n# 1 swxY w Y    G d	 dt                    }|                      t                    5  t          d           f|_        d d d            n# 1 swxY w Y   |                      t                    5  t          t          d           f|_        d d d            n# 1 swxY w Y   |                      t                    5  t          d           t          f|_        d d d            n# 1 swxY w Y   |                      t                    5  |t          d           f|_        d d d            n# 1 swxY w Y   |                      t                    5  t          d           |f|_        d d d            d S # 1 swxY w Y   d S )
Nc                       e Zd ZdS >ClassPropertiesAndMethods.test_unsubclassable_types.<locals>.XNrK  r   r@   r?   r  re    r  r@   r  c                       e Zd ZdS rd  rK  r   r@   r?   r  z>ClassPropertiesAndMethods.test_unsubclassable_types.<locals>.X   r  r@   c                       e Zd ZdS rd  rK  r   r@   r?   r  z>ClassPropertiesAndMethods.test_unsubclassable_types.<locals>.X  r  r@   c                       e Zd ZdS )>ClassPropertiesAndMethods.test_unsubclassable_types.<locals>.ONrK  r   r@   r?   r3  ri    rM  r@   r3  c                       e Zd ZdS rd  rK  r   r@   r?   r  z>ClassPropertiesAndMethods.test_unsubclassable_types.<locals>.X  r  r@   c                       e Zd ZdS rd  rK  r   r@   r?   r  z>ClassPropertiesAndMethods.test_unsubclassable_types.<locals>.X  r  r@   c                       e Zd ZdS rd  rK  r   r@   r?   r  z>ClassPropertiesAndMethods.test_unsubclassable_types.<locals>.X  rM  r@   )r  r   rI   r^  rL   )r:   r  r3  s      r?   test_unsubclassable_typesz3ClassPropertiesAndMethods.test_unsubclassable_types  s   y)) 	 	    DJJ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    FDJJ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    DJJ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	y)) 	 	    AtDzz   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    DJJ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	y)) 	& 	&t**+AK	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&y)) 	- 	- $t**,AK	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-y)) 	- 	-t**f,AK	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-y)) 	( 	(T$ZZ-AK	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(y)) 	( 	(t**a-AK	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AA
A("BBB;"C))C-0C-!E

EE/FFFG22G69G6H??II$JJJ1KKK9LL!$L!c                   
  G 
fddt                     
 G d dt                     } G d dt                    } G d dt                    } G d	 d
|          } G d d|          } G d d|
          } G d d||          }|j        }|j        }		 |f|_        |                     d           d S # t
          $ r: |                     |j        |           |                     |j        |	           Y d S w xY w)Nc                   (     e Zd Z fdZd Z xZS )OClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.WorkOncec                 ^    d| _         t          |                               |||          S r   )flagrs  r   )r:   r=   rS  r  WorkOncer  s       r?   r   zWClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.WorkOnce.__new__  s.    	Xt,,44XtUBOOOr@   c                     | j         dk    rt          d          | xj         dz  c_         t                              |           S )Nr   bozorq   )rr  r  rI   r  r   s    r?   r  zSClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.WorkOnce.mro!  s:    9q==&v...IINII88D>>)r@   )r   r   r   r   r  rv  )r  rs  s   @r?   rs  rp    sS        P P P P P P* * * * * * *r@   rs  c                       e Zd Zd ZdS )QClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.WorkAlwaysc                 6    t                               |           S r   )rI   r  r   s    r?   r  zUClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.WorkAlways.mro)  s    
 xx~~%r@   Nr  r   r@   r?   
WorkAlwaysrw  (  s#        & & & & &r@   ry  c                       e Zd ZdS )HClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.CNrK  r   r@   r?   r   r{  0  rM  r@   r   c                       e Zd ZdS )IClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.C2NrK  r   r@   r?   r  r}  3  rM  r@   r  c                       e Zd ZdS )HClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.DNrK  r   r@   r?   rL  r  6  rM  r@   rL  c                       e Zd ZdS )HClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.ENrK  r   r@   r?   r  r  9  rM  r@   r  c                       e Zd ZdS )HClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.FNrK  r   r@   r?   r  r  <  rM  r@   r  r@  c                       e Zd ZdS )HClassPropertiesAndMethods.test_mutable_bases_with_failing_mro.<locals>.GNrK  r   r@   r?   rx  r  ?  rM  r@   rx  zexception not propagated)rI   r^  r`  rL   r   r  rG   )r:   ry  r   r  rL  r  r  rx  E_mro_beforeD_mro_beforers  s             @r?   #test_mutable_bases_with_failing_mroz=ClassPropertiesAndMethods.test_mutable_bases_with_failing_mro  s   		* 		* 		* 		* 		* 		* 		*t 		* 		* 		*	& 	& 	& 	& 	& 	& 	& 	&	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	X 	 	 	 		 	 	 	 	Z 	 	 	 	 yy	2%AK
 II011111	  	6 	6 	6QY555QY555555	6s   B: :A C>=C>c                     G d dt                     } G d dt                     } G d d||          } G d d||          } G d	 d
||          }	 ||f|_        |                     d           d S # t          $ r Y d S w xY w)Nc                       e Zd ZdS )JClassPropertiesAndMethods.test_mutable_bases_catch_mro_conflict.<locals>.ANrK  r   r@   r?   r{  r  S  rM  r@   r{  c                       e Zd ZdS )JClassPropertiesAndMethods.test_mutable_bases_catch_mro_conflict.<locals>.BNrK  r   r@   r?   r  r  V  rM  r@   r  c                       e Zd ZdS )JClassPropertiesAndMethods.test_mutable_bases_catch_mro_conflict.<locals>.CNrK  r   r@   r?   r   r  Y  rM  r@   r   c                       e Zd ZdS )JClassPropertiesAndMethods.test_mutable_bases_catch_mro_conflict.<locals>.DNrK  r   r@   r?   rL  r  \  rM  r@   rL  c                       e Zd ZdS )JClassPropertiesAndMethods.test_mutable_bases_catch_mro_conflict.<locals>.ENrK  r   r@   r?   r  r  _  rM  r@   r  zdidn't catch MRO conflict)r^  rL   r   r   )r:   r{  r  r   rL  r  s         r?   %test_mutable_bases_catch_mro_conflictz?ClassPropertiesAndMethods.test_mutable_bases_catch_mro_conflictQ  s)   	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	1 	 	 		 	 	 	 	1 	 	 		 	 	 	 	1 	 	 		3a&AK II122222  	 	 	DD	s   	A5 5
BBc                      G d dt                     }|j        }d|_        |                     |j        |j        f|df           d|_        |                     |j        |j        f|df           d S )Nc                       e Zd ZdS )7ClassPropertiesAndMethods.test_mutable_names.<locals>.CNrK  r   r@   r?   r   r  k  rM  r@   r   rL  zD.E)r^  r   r   rG   )r:   r   r   s      r?   test_mutable_namesz,ClassPropertiesAndMethods.test_mutable_namesi  s    	 	 	 	 	 	 	 	 l
!,
3c3Z@@@
!,
3c5\BBBBBr@   c                 z     G fddt                     } G d d           |d          _        d_        d S )Nc                       e Zd Z fdZdS )<ClassPropertiesAndMethods.test_evil_type_name.<locals>.Nastyc                     d_         d S )Nr   )r   r   s    r?   r5  zDClassPropertiesAndMethods.test_evil_type_name.<locals>.Nasty.__del__|  s    $


r@   Nr7  rN  s   r?   Nastyr  {  s.        % % % % % % %r@   r  c                       e Zd ZdS )8ClassPropertiesAndMethods.test_evil_type_name.<locals>.CNrK  r   r@   r?   r   r    rM  r@   r   r&  normal)r@  r   )r:   r  r   s     @r?   test_evil_type_namez-ClassPropertiesAndMethods.test_evil_type_namew  s{    	% 	% 	% 	% 	% 	% 	%C 	% 	% 	%	 	 	 	 	 	 	 	 U5\\



r@   c                     G d dt                     }|                      |d          dz  d           |                     d |d          z  d            G d dt                    }|                      |            dz  d           |                     d |            z  d	            G d
 d|          }|                      |             |            z  d           |                      |             |            z  d            G d d|          }|                     |j        |j                   |                      |            dz  d           |                     d |            z  d	           |                      |             |            z  d           |                      |             |            z  d           d S )Nc                       e Zd Zd Zd ZdS );ClassPropertiesAndMethods.test_subclass_right_op.<locals>.Bc                     dS )NB.__floordiv__r   r   s     r?   __floordiv__zHClassPropertiesAndMethods.test_subclass_right_op.<locals>.B.__floordiv__      ''r@   c                     dS )NB.__rfloordiv__r   r   s     r?   __rfloordiv__zIClassPropertiesAndMethods.test_subclass_right_op.<locals>.B.__rfloordiv__      ((r@   Nr   r   r   r  r  r   r@   r?   r  r    2        ( ( () ) ) ) )r@   r  rq   r  r  c                       e Zd Zd Zd ZdS );ClassPropertiesAndMethods.test_subclass_right_op.<locals>.Cc                     dS )NC.__floordiv__r   r   s     r?   r  zHClassPropertiesAndMethods.test_subclass_right_op.<locals>.C.__floordiv__  r  r@   c                     dS )NC.__rfloordiv__r   r   s     r?   r  zIClassPropertiesAndMethods.test_subclass_right_op.<locals>.C.__rfloordiv__  r  r@   Nr  r   r@   r?   r   r    r  r@   r   r  r  c                       e Zd Zd Zd ZdS );ClassPropertiesAndMethods.test_subclass_right_op.<locals>.Dc                     dS )ND.__floordiv__r   r   s     r?   r  zHClassPropertiesAndMethods.test_subclass_right_op.<locals>.D.__floordiv__  r  r@   c                     dS )ND.__rfloordiv__r   r   s     r?   r  zIClassPropertiesAndMethods.test_subclass_right_op.<locals>.D.__rfloordiv__  r  r@   Nr  r   r@   r?   rL  r    r  r@   rL  r  r  c                       e Zd ZdS );ClassPropertiesAndMethods.test_subclass_right_op.<locals>.ENrK  r   r@   r?   r  r    rM  r@   r  )r-   rG   r^  r  )r:   r  r   rL  r  s        r?   test_subclass_right_opz0ClassPropertiesAndMethods.test_subclass_right_op  s8   	) 	) 	) 	) 	) 	) 	) 	) 	1$4555aadd$5666	) 	) 	) 	) 	) 	) 	) 	) 	#3444aacc#4555	) 	) 	) 	) 	) 	) 	) 	) 	%5666%6777	 	 	 	 	 	 	 	 	!/:::#3444aacc#4555%5666%566666r@   z)testing an internal kind of method objectc                    g d}d d d d}|                      t                              |          |           |                      i                     |          |           t          j        d         }|                       |                    d t                    |          |           |                       |                    i           |          |           	 |                    d d            |                     d           n# t          $ r Y nw xY w	 |                    d           |                     d           n# t          $ r Y nw xY w	 |                    d d           |                     d           n# t          $ r Y nw xY w	 |                    d t                     |                     d           d S # t          $ r Y d S w xY w)Nrs   fromkeysz0shouldn't have allowed descr.__get__(None, None)r   z(shouldn't have allowed descr.__get__(42)z.shouldn't have allowed descr.__get__(None, 42)z/shouldn't have allowed descr.__get__(None, int))rG   r   r  rK   rc  r   r   r-   )r:   r  rM   r  s       r?   test_meth_class_getz-ClassPropertiesAndMethods.test_meth_class_get  s    ii4D))s++S111S))3/// j) 	2tT22377===*r**3//555	JMM$%%% IIHIIII  	 	 	D		BMM" II@AAAA  	 	 	D		HMM$### IIFGGGG  	 	 	D		IMM$$$$ IIGHHHHH  	 	 	DD	sH   D 
DDE 
EEF 
FFG 
GGc                     G d dt                     } G d d          } |            } ||          }|                     ||           |                     ||            G d d|          } |            } ||          }|                     ||           |                     ||            G d dt                     } |            } ||          }|                     ||           |                     ||            G d d|          } |            } ||          }|                     ||           |                     ||           d S )	Nc                       e Zd Zd Zd ZdS )<ClassPropertiesAndMethods.test_isinst_isclass.<locals>.Proxyc                     || _         d S r   _Proxy__objr,  s     r?   r4   zEClassPropertiesAndMethods.test_isinst_isclass.<locals>.Proxy.__init__  r	  r@   c                     |                     d          rt                              | |          S t          | j        |          S N_Proxy__ra  r^  r$  rJ   r  r  s     r?   r$  zMClassPropertiesAndMethods.test_isinst_isclass.<locals>.Proxy.__getattribute__  >    ??:.. 5!224>>>"4:t444r@   Nr   r   r   r4   r$  r   r@   r?   rY  r    2        ! ! !5 5 5 5 5r@   rY  c                       e Zd ZdS 8ClassPropertiesAndMethods.test_isinst_isclass.<locals>.CNrK  r   r@   r?   r   r    rM  r@   r   c                       e Zd ZdS 8ClassPropertiesAndMethods.test_isinst_isclass.<locals>.DNrK  r   r@   r?   rL  r    rM  r@   rL  c                       e Zd ZdS r  rK  r   r@   r?   r   z8ClassPropertiesAndMethods.test_isinst_isclass.<locals>.C  rM  r@   c                       e Zd ZdS r  rK  r   r@   r?   rL  z8ClassPropertiesAndMethods.test_isinst_isclass.<locals>.D  rM  r@   )r^  r  )r:   rY  r   rD   parL  s         r?   test_isinst_isclassz-ClassPropertiesAndMethods.test_isinst_isclass  s   	5 	5 	5 	5 	5F 	5 	5 	5	 	 	 	 	 	 	 	ACCU1XXa###b!$$$	 	 	 	 	 	 	 	ACCU1XXa###b!$$$	 	 	 	 	 	 	 	ACCU1XXa###b!$$$	 	 	 	 	 	 	 	ACCU1XXa###b!$$$$$r@   c                      G d dt                     } G d dt                     } G fdd|                       } ||          }|                      j        d         |          d           d S )	Nc                       e Zd Zd Zd ZdS )9ClassPropertiesAndMethods.test_proxy_super.<locals>.Proxyc                     || _         d S r   r  r,  s     r?   r4   zBClassPropertiesAndMethods.test_proxy_super.<locals>.Proxy.__init__  r	  r@   c                     |                     d          rt                              | |          S t          | j        |          S r  r  r  s     r?   r$  zJClassPropertiesAndMethods.test_proxy_super.<locals>.Proxy.__getattribute__  r  r@   Nr  r   r@   r?   rY  r    r  r@   rY  c                       e Zd Zd ZdS )5ClassPropertiesAndMethods.test_proxy_super.<locals>.Bc                     dS )NzB.fr   r   s    r?   r  z7ClassPropertiesAndMethods.test_proxy_super.<locals>.B.f  r$  r@   Nrx  r   r@   r?   r  r    s#            r@   r  c                   "     e Zd Z fdZ xZS )5ClassPropertiesAndMethods.test_proxy_super.<locals>.Cc                 N    t          |                                           dz   S )Nz->C.f)rs  r  )r:   r   r  s    r?   r  z7ClassPropertiesAndMethods.test_proxy_super.<locals>.C.f  s"    Q~~''))G33r@   )r   r   r   r  rv  )r  r   s   @r?   r   r    s>        4 4 4 4 4 4 4 4 4 4r@   r   r  zB.f->C.f)r^  rG   rK   )r:   rY  r  r   r  r   s        @r?   test_proxy_superz*ClassPropertiesAndMethods.test_proxy_super  s    	5 	5 	5 	5 	5F 	5 	5 	5	 	 	 	 	 	 	 		4 	4 	4 	4 	4 	4 	4 	4 	4 	4 accE#JJC++Z88888r@   c                 $   	 t                               t          dd           |                     d           n# t          $ r Y nw xY w	 t                               t          d           |                     d           d S # t          $ r Y d S w xY w)Nr   r   z"Carlo Verre __setattr__ succeeded!r  z"Carlo Verre __delattr__ succeeded!)r^  r(  r@  r   r   r+  r   s    r?   test_carloverrez)ClassPropertiesAndMethods.test_carloverre"  s    	<sE2... II:;;;;  	 	 	D		<sG,,, II:;;;;;  	 	 	DD	s!   !9 
AA
 B 
BBc                      G d dt                     } G d d          } G d d||          } |dt          fi           }	 d|_        d S # t          $ r |                     d	           Y d S w xY w)
Nc                       e Zd Zd ZdS )HClassPropertiesAndMethods.test_carloverre_multi_inherit_valid.<locals>.Ac                 >    t                               | ||           d S r   )rI   r(  r   r  r  s      r?   r(  zTClassPropertiesAndMethods.test_carloverre_multi_inherit_valid.<locals>.A.__setattr__3  s       c511111r@   Nr   r   r   r(  r   r@   r?   r{  r  2  r  r@   r{  c                       e Zd ZdS )HClassPropertiesAndMethods.test_carloverre_multi_inherit_valid.<locals>.BNrK  r   r@   r?   r  r  6  rM  r@   r  c                       e Zd ZdS )HClassPropertiesAndMethods.test_carloverre_multi_inherit_valid.<locals>.CNrK  r   r@   r?   r   r  9  rM  r@   r   rL  Tz1setattr through direct base types should be legal)rI   r^  r  r   r   r:   r{  r  r   r   s        r?   #test_carloverre_multi_inherit_validz=ClassPropertiesAndMethods.test_carloverre_multi_inherit_valid1  s    	2 	2 	2 	2 	2 	2 	2 	2	 	 	 	 	 	 	 		 	 	 	 	1 	 	 	 afY##	KCHHH 	K 	K 	KIIIJJJJJJ	Ks   A A0/A0c                      G d dt                     } G d d          } G d d||          } |dt          fi           }	 d|_        |                     d	           d S # t          $ r Y d S w xY w)
Nc                       e Zd Zd ZdS )JClassPropertiesAndMethods.test_carloverre_multi_inherit_invalid.<locals>.Ac                 >    t                               | ||           d S r   )r^  r(  r  s      r?   r(  zVClassPropertiesAndMethods.test_carloverre_multi_inherit_invalid.<locals>.A.__setattr__D  s     ""3U33333r@   Nr  r   r@   r?   r{  r  C  s#        4 4 4 4 4r@   r{  c                       e Zd ZdS )JClassPropertiesAndMethods.test_carloverre_multi_inherit_invalid.<locals>.BNrK  r   r@   r?   r  r  G  rM  r@   r  c                       e Zd ZdS )JClassPropertiesAndMethods.test_carloverre_multi_inherit_invalid.<locals>.CNrK  r   r@   r?   r   r  J  rM  r@   r   rL  Tz6setattr through indirect base types should be rejected)rI   r^  r  r   r   r  s        r?   %test_carloverre_multi_inherit_invalidz?ClassPropertiesAndMethods.test_carloverre_multi_inherit_invalidB  s    	4 	4 	4 	4 	4 	4 	4 	4	 	 	 	 	 	 	 		 	 	 	 	1 	 	 	 afY##	PCH IINOOOOO  	 	 	DD	s   A" "
A0/A0c                     dd l  G fdd          } G d dt                    } |            } ||          |_        ~d S )Nr   c                        e Zd Z fdZd ZdS )AClassPropertiesAndMethods.test_weakref_segfault.<locals>.Provokerc                 2     j         |          | _         d S r   rn  )r:   	referrentrm  s     r?   r4   zJClassPropertiesAndMethods.test_weakref_segfault.<locals>.Provoker.__init__[  s    &7;y11r@   c                 .    |                                  }d S r   r  r  s     r?   r5  zIClassPropertiesAndMethods.test_weakref_segfault.<locals>.Provoker.__del__^  s    HHJJr@   N)r   r   r   r4   r5  )rm  s   r?   Provokerr  Z  s=        2 2 2 2 2    r@   r	  c                       e Zd ZdS )=ClassPropertiesAndMethods.test_weakref_segfault.<locals>.OopsNrK  r   r@   r?   Oopsr	  a  rM  r@   r	  )rm  r^  whatever)r:   r	  r	  r:  rm  s       @r?   test_weakref_segfaultz/ClassPropertiesAndMethods.test_weakref_segfaultU  s     		 	 	 	 	 	 	 	 	 		 	 	 	 	6 	 	 	 DFFXa[[
AAr@   c                 B    d }t          d          D ]	}|j        }
d }d S )Nc                      d S r   r   r   r@   r?   r  zAClassPropertiesAndMethods.test_wrapper_segfault.<locals>.<lambda>j  s    4 r@   i@B )r   re  )r:   r  r   s      r?   test_wrapper_segfaultz/ClassPropertiesAndMethods.test_wrapper_segfaulth  s0    Kw 	 	A
AAr@   c                     G d d          }t           |                      5  |                     t                    5  t          d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )>ClassPropertiesAndMethods.test_file_fault.<locals>.StdoutGuardc                 R    t           j        t           _        t          d|           )NzPremature access to sys.stdout.)r   
__stdout__stdoutr  r  s     r?   r  zJClassPropertiesAndMethods.test_file_fault.<locals>.StdoutGuard.__getattr__r  s"     ^
"#KT#K#KLLLr@   Nr  r   r@   r?   StdoutGuardr	  q  s(        M M M M Mr@   r	  zOops!)r   r  r  print)r:   r	  s     r?   test_file_faultz)ClassPropertiesAndMethods.test_file_faulto  s    	M 	M 	M 	M 	M 	M 	M 	M
 [[]]++ 	 	""<00  g              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   A4 AA4A 	 A4#A 	$A44A8;A8c                 D    G fddt                     } G d dt                      G fddt                                  }d|j         |            <   |                     |j        d           t	          j                     |                     |d	           d S )
Nc                        e Zd Zd Z fdZdS )HClassPropertiesAndMethods.test_vicious_descriptor_nonsense.<locals>.Evilc                      t          d          S )Nrw  rG  r   s    r?   rH  zQClassPropertiesAndMethods.test_vicious_descriptor_nonsense.<locals>.Evil.__hash__  s    F||#r@   c                 0    	 ` n# t          $ r Y nw xY wdS r   )rw  r  r  s     r?   rC  zOClassPropertiesAndMethods.test_vicious_descriptor_nonsense.<locals>.Evil.__eq__  s6    %   D qs    
Nr   r   r   rH  rC  rN  s   r?   Evilr	    s=        $ $ $      r@   r	  c                       e Zd ZddZdS )IClassPropertiesAndMethods.test_vicious_descriptor_nonsense.<locals>.DescrNc                     dS r   r   )r:   obrI   s      r?   rc  zQClassPropertiesAndMethods.test_vicious_descriptor_nonsense.<locals>.Descr.__get__  r8  r@   r   r   r   r@   r?   Descrr	    s(             r@   r 	  c                   $    e Zd Z              ZdS )EClassPropertiesAndMethods.test_vicious_descriptor_nonsense.<locals>.CN)r   r   r   rw  r 	  s   r?   r   r"	    s        577DDDr@   r   r   rq   rw  )r^  rK   rG   rw  r   rX  r   )r:   r	  r^   r   r 	  s      @@r?    test_vicious_descriptor_nonsensez:ClassPropertiesAndMethods.test_vicious_descriptor_nonsensez  s    		 		 		 		 		 		 		6 		 		 			 	 	 	 	F 	 	 		 	 	 	 	 	 	 	 	 	 ACC
4466###a(((((r@   c                      G d dt                     }	  |             |                     d           d S # t          $ r Y d S w xY w)Nc                       e Zd Zd ZdS )0ClassPropertiesAndMethods.test_init.<locals>.Fooc                     dS )Nr  r   r   s    r?   r4   z9ClassPropertiesAndMethods.test_init.<locals>.Foo.__init__  rk  r@   NrM  r   r@   r?   Foor'	    rm  r@   r)	  z'did not test __init__() for None return)r^  r   r   )r:   r)	  s     r?   	test_initz#ClassPropertiesAndMethods.test_init  s|    	 	 	 	 	& 	 	 		ACEEE II?@@@@@  	 	 	DD	s   
6 
AAc                    |                      t                    5  ||k      d d d            n# 1 swxY w Y   |                      t                    5  ||k     d d d            n# 1 swxY w Y   |                      t                    5  ||k     d d d            n# 1 swxY w Y   |                      t                    5  ||k     d d d            d S # 1 swxY w Y   d S r   r  r   r:   rD   rX   s      r?   assertNotOrderablez,ClassPropertiesAndMethods.assertNotOrderable  s   y)) 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sB   .22A&&A*-A*BB"%B"CCCc                 >   g }|                      |j        |j        k               |                     |j        |j        k               |                     |j        g j        k               |                      |j        g j        k               |                     |j        |j        k               |                      |j        |j        k               |                     |j        |j                   |                     |j        j        d           |                     |j        j        |           |                     |j        j	        t                     |                     |j        j        t          j        j                   t          |j                   d S )NrU   )r   rU   r   r}   r.	  rG   r   r  r  __objclass__r6   r  rG  r:   r   s     r?   test_method_wrapperz-ClassPropertiesAndMethods.test_method_wrapper  sI    	QY.///ai/000bj0111	RZ/000ai/000	QY.///	19555+Y777ai(!,,,ai,d333*DL,@AAAQYr@   c                    g }|                      |j        |j        k               |                     |j        |j        k               |                     |j        g j        k               |                      |j        g j        k               |                     |j        |j        k               |                      |j        |j        k               |                     |j        |j                   |                     |j        j        d           |                     |j        j        |           |                     |j        j	        t          j        j	                   t          |j                   d S )Nr   )r   r   r   popr.	  rG   r   r  r  r  r6   rG  r1	  s     r?   test_builtin_function_or_methodz9ClassPropertiesAndMethods.test_builtin_function_or_method  s0    AH,---QX-...RY.///BI-...QU*+++AE)***!(333*H555ah'+++)4;+>???QXr@   c                    |                      t          j        t          j        k               |                     t          j        t          j        k               |                     t          j        t          j        k               |                      t          j        t          j        k               |                     t          j        t          j                   |                     t          j        j        d           |                     t          j        j	        t                     |                      t          j
        t          j
        k               |                     t          j
        t          j
        k               |                     t          j
        t          j        k               |                      t          j
        t          j        k               |                     t          j
        t          j
                   |                     t          j
        j        d           |                     t          j
        j	        t                     d S )NrU   r   )r   r6   rU   r   r}   r.	  rG   r   r  r0	  r   r4	  r   s    r?   !test_special_unbound_method_typesz;ClassPropertiesAndMethods.test_special_unbound_method_types  s   4555566656664555dl;;;.	:::dl/666 	t{233334440111tx/000T[999-x888dk.55555r@   c                     dd l d } fd}t          j        dz   }t          j        }dD ]\  }}}d|dd          z   }t          dd	||i          }	 |	            }
 |||
|
            |||
|            |||
|           |rx |||
|
            |||
|            |||
|           d
|dd          z   }t          dd	||i          } |            } ||||
            ||||            ||||           d S )Nr   c                     t           S r   r   r   s     r?   specialmethodzEClassPropertiesAndMethods.test_not_implemented.<locals>.specialmethod  s    !!r@   c                     	 t          | ||d                               d|            d S # t          $ r Y d S w xY w)N)r  r  operatorzno TypeError from )re   r   r   )r>   r  r  r<	  r:   s      r?   r  z=ClassPropertiesAndMethods.test_not_implemented.<locals>.check  sg    <TAABBB 			DD:;;;;;    s   1 
??rq   ))rU   zx + yzx += y)__sub__zx - yzx -= y)r}   zx * yzx *= y)
__matmul__zx @ yzx @= y)__truediv__zx / yzx /= y)r  zx // yzx //= y)__mod__zx % yzx %= y)
__divmod__zdivmod(x, y)N)rj  zx ** yzx **= y)
__lshift__zx << yzx <<= y)
__rshift__zx >> yzx >>= y)__and__zx & yzx &= y)__or__zx | yzx |= y)__xor__zx ^ yzx ^= y__rrr   r{  r   __ir   )r<	  r   r   rI   )r:   r:	  r  N1N2r=   r>   iexprrnamer{  rD   inamer   r^   r<	  s   `             @r?   test_not_implementedz.ClassPropertiesAndMethods.test_not_implemented  s    		" 	" 	"	< 	< 	< 	< 	< 	< [1_["G 	$ 	$D$ DH$ES"t]344AAE$1E$2E$2 	$eQ"""eQ###eQ###QRR(b5-"899ACCeQ"""eQ###eQ###=	$ 	$r@   c                      G d dt                     } |            }d|dd<   |                     |j        d           d S )Nc                       e Zd Zd ZdS )6ClassPropertiesAndMethods.test_assign_slice.<locals>.Cc                     || _         d S r   r  )r:   idxr  s      r?   ri   zBClassPropertiesAndMethods.test_assign_slice.<locals>.C.__setitem__#  r  r@   N)r   r   r   ri   r   r@   r?   r   rQ	  "  r   r@   r   rt   rq   rr   )r^  rG   r  )r:   r   r^   s      r?   test_assign_slicez+ClassPropertiesAndMethods.test_assign_slice  sd    
	# 	# 	# 	# 	# 	# 	# 	# ACC!A#!$$$$$r@   c                     G d dt                     } |d           G fddt                     } |            }|                     |j                   d|_        |                     |j        d            G d dt                    } G d	 d|
          }d|_         |d          |_        |                     |j        d           d S )Nc                       e Zd Zd Zd ZdS )<ClassPropertiesAndMethods.test_set_and_no_get.<locals>.Descrc                     || _         d S r   )r=   r  s     r?   r4   zEClassPropertiesAndMethods.test_set_and_no_get.<locals>.Descr.__init__/  r  r@   c                 $    ||j         | j        <   d S r   )rK   r=   r*  s      r?   r  zDClassPropertiesAndMethods.test_set_and_no_get.<locals>.Descr.__set__2  s    */TY'''r@   N)r   r   r   r4   r  r   r@   r?   r 	  rX	  -  s2        ! ! !0 0 0 0 0r@   r 	  rD   c                       e Zd Z ZdS 8ClassPropertiesAndMethods.test_set_and_no_get.<locals>.XNr  r  s   r?   r  r]	  6  s        AAAr@   r  r   c                       e Zd ZdS );ClassPropertiesAndMethods.test_set_and_no_get.<locals>.MetaNrK  r   r@   r?   ry  r`	  ?  rM  r@   ry  c                       e Zd ZdS r\	  rK  r   r@   r?   r  z8ClassPropertiesAndMethods.test_set_and_no_get.<locals>.XA  rM  r@   r@  )r^  r  rD   rG   rI   )r:   r 	  r  r  ry  r  s        @r?   test_set_and_no_getz-ClassPropertiesAndMethods.test_set_and_no_get*  s?   	0 	0 	0 	0 	0F 	0 	0 	0 c

	 	 	 	 	 	 	 	 	 	 ACCac5!!!b!!!	 	 	 	 	4 	 	 		 	 	 	 	$ 	 	 	 	sb!!!!!r@   c                     G d dt                     } |             G fddt                     } G fddt                     } G fddt                     }|                     t          t           |            d	           |                     j        d
           |                     t          t           |            d	           |                     j        d           |                     t          t           |            d	           |                     j        d            G fddt                     |                     t          t                       d	           d S )Nc                       e Zd ZdZddZdS )@ClassPropertiesAndMethods.test_getattr_hooks.<locals>.Descriptorr   Nc                       fd}|S )Nc                 B    xj         dz  c_         t          |           r   )r  r  )r=   r:   s    r?   r  zXClassPropertiesAndMethods.test_getattr_hooks.<locals>.Descriptor.__get__.<locals>.getterM  s!    LLA%LL(...r@   r   )r:   r   objtyper  s   `   r?   rc  zHClassPropertiesAndMethods.test_getattr_hooks.<locals>.Descriptor.__get__L  s#    / / / / / r@   r   )r   r   r   r  rc  r   r@   r?   
Descriptorre	  J  s-        G     r@   ri	  c                       e Zd Z ZdS )7ClassPropertiesAndMethods.test_getattr_hooks.<locals>.AN)r   r   r   r$  r^	  s   r?   r{  rk	  S  s        $r@   r{  c                       e Zd Z ZdS )7ClassPropertiesAndMethods.test_getattr_hooks.<locals>.BNr  r^	  s   r?   r  rm	  U  s        KKKr@   r  c                       e Zd Z Z ZdS )7ClassPropertiesAndMethods.test_getattr_hooks.<locals>.CN)r   r   r   r$  r  r^	  s   r?   r   ro	  W  s        $KKKr@   r   rw  rq   rr   rw   c                        e Zd Zd Z fdZdS )FClassPropertiesAndMethods.test_getattr_hooks.<locals>.EvilGetattributec                      t          |          r   r  r  s     r?   r  zRClassPropertiesAndMethods.test_getattr_hooks.<locals>.EvilGetattribute.__getattr__d  s    $T***r@   c                 p    ` t          d          D ]}t          j                     t	          |          Nr   )r  r   rZ  collectr  )r:   r=   r   EvilGetattributes      r?   r$  zWClassPropertiesAndMethods.test_getattr_hooks.<locals>.EvilGetattribute.__getattribute__f  s9    $0q ! !AJLLLL$T***r@   Nr  )rv	  s   r?   rv	  rq	  b  s=        + + ++ + + + + + +r@   rv	  )r^  r  r  rJ   rG   r  )r:   ri	  r{  r  r   rv	  r  s        @@r?   test_getattr_hooksz,ClassPropertiesAndMethods.test_getattr_hooksG  s   	 	 	 	 	 	 	 	 
	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	  	  	  	  	  	  	  	  	  	 	  	  	  	  	  	  	  	  	  	  	.'1133???***.'1133???***.'1133???***	+ 	+ 	+ 	+ 	+ 	+ 	+v 	+ 	+ 	+ 	.'3C3C3E3EvNNNNNr@   c                 h    |                      t          t          j        t          t                     d S r   )r  r   rI   r$  r6   r   s    r?   test_type___getattribute__z4ClassPropertiesAndMethods.test_type___getattribute__n  s%    )T%:D$GGGGGr@   c                 N   |                      t          t          t          d            G d dt                    }|                      t          t          |d            G d dt                    }|                      t                    5  |`d d d            d S # 1 swxY w Y   d S )N__abstractmethods__c                       e Zd ZdS )<ClassPropertiesAndMethods.test_abstractmethods.<locals>.metaNrK  r   r@   r?   metar}	  t  rM  r@   r~	  c                       e Zd ZdS )9ClassPropertiesAndMethods.test_abstractmethods.<locals>.XNrK  r   r@   r?   r  r	  w  rM  r@   r  )r  r  rJ   rI   r^  r{	  )r:   r~	  r  s      r?   test_abstractmethodsz.ClassPropertiesAndMethods.test_abstractmethodsq  s
   .'49NOOO	 	 	 	 	4 	 	 	.'49NOOO	 	 	 	 	 	 	 	~.. 	& 	&%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   
BB!Bc                     G d d          } |            }|                      |t                     |                     t                    5  t                              |           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 )Nc                       e Zd ZeZdS ):ClassPropertiesAndMethods.test_proxy_call.<locals>.FakeStrN)r   r   r   r@  r  r   r@   r?   FakeStrr	  }  rP  r@   r	  r&  )r  r@  r  r   r  rU   )r:   r	  fake_strs      r?   test_proxy_callz)ClassPropertiesAndMethods.test_proxy_call|  sX   	 	 	 	 	 	 	 	 799h,,, y)) 	  	 IIh	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  y)) 	) 	)KK%(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s$   A44A8;A8CC	Cc                     G d d          } |            }t          d          D ]N}|                     t                    5  t                              |           d d d            n# 1 swxY w Y   Ot          d          D ]N}|                     t                    5  t
                              |           d d d            n# 1 swxY w Y   Ot          d          D ]N}|                     t                    5  t
                              |           d d d            n# 1 swxY w Y   Ot          d          D ]N}|                     t                    5  t
                              |           d d d            n# 1 swxY w Y   Oddl	m
} t          d          D ]J}|                     t                    5  |                    ||           d d d            n# 1 swxY w Y   Kd S )Nc                       e Zd ZdS )RClassPropertiesAndMethods.test_specialized_method_calls_check_types.<locals>.ThingNrK  r   r@   r?   Thingr	    rM  r@   r	  r  r   )deque)r   r  r   r6   sortr@  r  r  r  collectionsr	  r   )r:   r	  r  r   r	  s        r?   )test_specialized_method_calls_check_typeszCClassPropertiesAndMethods.test_specialized_method_calls_check_types  s0   	 	 	 	 	 	 	 	r 	! 	!A""9-- ! !		%   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! r 	! 	!A""9-- ! !		%   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! r 	! 	!A""9-- ! !		%   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! r 	! 	!A""9-- ! !		%   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 	&%%%%%r 	+ 	+A""9-- + +UE***+ + + + + + + + + + + + + + +	+ 	+sZ   A**A.	1A.	!CC	C	?D&&D*	-D*	FF	F	G$$G(	+G(	c                      G d d          }|j         |_         |            }|                     t          t          |           |                     t          t
          |           d S )Nc                       e Zd ZdS )7ClassPropertiesAndMethods.test_repr_as_str.<locals>.FooNrK  r   r@   r?   r)	  r	    rM  r@   r)	  )r   r   r  r  r@  r   )r:   r)	  r   s      r?   test_repr_as_strz*ClassPropertiesAndMethods.test_repr_as_str  st    	 	 	 	 	 	 	 	{cee.#s333.$44444r@   c                      G d dt                     } |            }d|_        |                     |d         d           |                     ||            d S )Nc                   *    e Zd Zej        Zej        ZdS )>ClassPropertiesAndMethods.test_mixing_slot_wrappers.<locals>.XN)r   r   r   r   ri   r(  r   __neg__r   r@   r?   r  r	    s        *KiGGGr@   r  r   r  )r   r  rG   )r:   r  r  s      r?   test_mixing_slot_wrappersz3ClassPropertiesAndMethods.test_mixing_slot_wrappers  sx    	  	  	  	  	  	  	  	  ACC3$$$QBr@   c                      G d dt                     } |            }|                     t                    5  ||k     d d d            n# 1 swxY w Y   |                     t                    5  ||z    d d d            d S # 1 swxY w Y   d S )Nc                   *    e Zd Zej        Zej        ZdS )BClassPropertiesAndMethods.test_wrong_class_slot_wrapper.<locals>.AN)r   r   r   r@  rC  rU   r   r@   r?   r{  r	    s        ZFkGGGr@   r{  )r-   r  r   )r:   r{  rD   s      r?   test_wrong_class_slot_wrapperz7ClassPropertiesAndMethods.test_wrong_class_slot_wrapper  s,   	" 	" 	" 	" 	" 	" 	" 	" ACCy)) 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA0BB
Bc                     |                      t                    5 } G d d          }d d d            n# 1 swxY w Y   t          |j                  }|                     d|           d S )Nc                       e Zd ZdgZdZdS )EClassPropertiesAndMethods.test_slot_shadows_class_variable.<locals>.Xr   N)r   r   r   r   r   r   r@   r?   r  r	    s        "G	r@   r  z0'foo' in __slots__ conflicts with class variable)r  r  r@  r  rG   )r:   r  r  rQ   s       r?    test_slot_shadows_class_variablez:ClassPropertiesAndMethods.test_slot_shadows_class_variable  s    z** 	b       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 KQOOOOOs   599c                     G d d          }d|_         |                     |j         d           |                     t                    5 }t	          t
                    j        d                             t
          d           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     t                    5 }t	          |          j        d                             |           d d d            n# 1 swxY w Y   |                     dt          |j
                             |                     |j         d           d S )Nc                       e Zd ZdZdS )1ClassPropertiesAndMethods.test_set_doc.<locals>.XelephantNr  r   r@   r?   r  r	    s        JJJr@   r  bananar  blahz7cannot set '__doc__' attribute of immutable type 'list'z7cannot delete '__doc__' attribute of immutable type 'X')r  rG   r  r   rI   r6   rK   r  r  r@  r  r-  )r:   r  r  s      r?   test_set_docz&ClassPropertiesAndMethods.test_set_doc  s   	 	 	 	 	 	 	 		H---y)) 	ARJJ	*224@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AOQTUWUaQbQbcccy)) 	6RGGY'221555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6OQTUWUaQbQbcccH-----s$   
9BBB.DDDc                    t           j        t          j        t          j        t
          j        g}g d}t          ||          D ]0\  }}|                     t          |          j
        |dz              1|D ]4}|j        j        dz   |j
        z   }|                     |j        |           5|                     t           j        j        d           |                     t          j        j        d           |                     t          j        j        d           |                     t
          j        j        d            G d d	          }|                     t                    5  |`d d d            n# 1 swxY w Y   |                     t          t          j        d
         j        t           d            G d d          a|                     t"          j        d           |                     t"          j        j        d           d S )N)r  membergetsetwrapper_descriptor.z	str.lowerzcomplex.realz
float.realzint.__add__c                       e Zd ZdS )2ClassPropertiesAndMethods.test_qualname.<locals>.XNrK  r   r@   r?   r  r	    rM  r@   r  r   Oinkc                   (    e Zd Z G d d          ZdS )r  c                       e Zd ZdS )Y.InsideNrK  r   r@   r?   Insider	    r  r@   r	  N)r   r   r   r	  r   r@   r?   r  r    s<                 r@   r  r	  )r@  r  r   r   r.   r-   rU   r  rG   rI   r   r0	  r   r  r   rK   r  r  r	  )r:   descriptorsr>  rO   r  qualnamer  s          r?   test_qualnamez'ClassPropertiesAndMethods.test_qualname  s=   y',
CKH999 U++ 	B 	BDAqT!WW-q=/@AAAA 	7 	7A~2S81:EHQ^X6666/===2NCCC0,???1=AAA	 	 	 	 	 	 	 	y)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	)T]>%B%Jv	' 	' 	'	 	 	 	 	 	 	 	 	---.
;;;;;s   &E55E9<E9c                    ddi}t          dd|          }|                     |j        d           |                     d|j                   |                     |ddi           ddi}|                     t          t           dd|           d S )Nr   z	some.namer)	  r   rq   )rI   rG   r   r]  rK   r  r   )r:   r  rU  s      r?   test_qualname_dictz,ClassPropertiesAndMethods.test_qualname_dict  s    k*%R  +666555nk:;;;a )T5"b99999r@   c                 J    G d dt                     } |            }d|_        t          j        |          }~t	          j                     |                      |                       t          j                    D ]%}| 	                    t          |          |           &d S )Nc                       e Zd Zd ZdS )<ClassPropertiesAndMethods.test_cycle_through_dict.<locals>.Xc                 H    t                               |            | | _        d S r   )r   r4   rK   r   s    r?   r4   zEClassPropertiesAndMethods.test_cycle_through_dict.<locals>.X.__init__
  s    d### $r@   NrM  r   r@   r?   r  r	  	  s#        % % % % %r@   r  r   )r   rw  rm  rn  r   rX  assertIsNonerZ  r?  assertIsNotrI   )r:   r  r  wrr:  s        r?   test_cycle_through_dictz1ClassPropertiesAndMethods.test_cycle_through_dict  s    	% 	% 	% 	% 	% 	% 	% 	% ACC[^^""$$!! 	) 	)AT!WWa((((	) 	)r@   c                     G d d          }|                      t          |d           |                      t          |d            G d d          } G d d          } G d	 d
||          }|||fD ]W} |d            |dd           |                      t          |ddd           |                      t          |ddd           Xd S )Nc                       e Zd ZdS )[ClassPropertiesAndMethods.test_object_new_and_init_with_parameters.<locals>.OverrideNeitherNrK  r   r@   r?   OverrideNeitherr	    rM  r@   r	  rq   r  c                       e Zd ZddZdS )WClassPropertiesAndMethods.test_object_new_and_init_with_parameters.<locals>.OverrideNewr   c                 ,    t          j        | g|R i |S r   r[  )r   r   r
  r;   r   s        r?   r   z_ClassPropertiesAndMethods.test_object_new_and_init_with_parameters.<locals>.OverrideNew.__new__  s"    ~c9D999D999r@   Nr  rT  r   r@   r?   OverrideNewr	    s(        : : : : : :r@   r	  c                       e Zd ZddZdS )XClassPropertiesAndMethods.test_object_new_and_init_with_parameters.<locals>.OverrideInitr   c                 ,    t          j        | g|R i |S r   )r^  r4   )r:   r   r
  r;   r<   s        r?   r4   zaClassPropertiesAndMethods.test_object_new_and_init_with_parameters.<locals>.OverrideInit.__init__   s"    t=d===f===r@   Nr  rM  r   r@   r?   OverrideInitr	    s(        > > > > > >r@   r	  c                       e Zd ZdS )XClassPropertiesAndMethods.test_object_new_and_init_with_parameters.<locals>.OverrideBothNrK  r   r@   r?   OverrideBothr	  "  rM  r@   r	  rr   rt   rF  r,	  )r:   r	  r	  r	  r	  cases         r?   (test_object_new_and_init_with_parameterszBClassPropertiesAndMethods.test_object_new_and_init_with_parameters  sU   	 	 	 	 	 	 	 	)_a888)_;;;	: 	: 	: 	: 	: 	: 	: 	:	> 	> 	> 	> 	> 	> 	> 	>	 	 	 	 	; 	 	 	|; 	< 	<DDGGGDqMMMMiq!Q777iq!;;;;		< 	<r@   c                      G d d          } G d d|          }|                      d|j                   |                     d|j                   d S )Nc                       e Zd ZdS )\ClassPropertiesAndMethods.test_subclassing_does_not_duplicate_dict_descriptors.<locals>.BaseNrK  r   r@   r?   rF  r	  +  rM  r@   rF  c                       e Zd ZdS )[ClassPropertiesAndMethods.test_subclassing_does_not_duplicate_dict_descriptors.<locals>.SubNrK  r   r@   r?   rK  r	  -  rM  r@   rK  rK   )r  rK   r]  )r:   rF  rK  s      r?   4test_subclassing_does_not_duplicate_dict_descriptorszNClassPropertiesAndMethods.test_subclassing_does_not_duplicate_dict_descriptors*  s    	 	 	 	 	 	 	 		 	 	 	 	$ 	 	 	j$-000S\22222r@   c                     G d d          }|                      t           |            j                  d            G d d          } G d d|          } G d d	|          } |            } |            } |            }t          ||          }|                      t          |j                  d
           |                      t          |j                  d           |                      t          |j                  d           |                      t          |j                  d            G d d          } |            }	|                      t          |	j                  d           |                      t          |j                  d            G d d          }
 |
            }t	                      }t          j        ||          }|                      t          |          d           d|_        |                      t          |          d           d|_        |                      t          |          d           d S )Nc                       e Zd Zd ZdS )=ClassPropertiesAndMethods.test_bound_method_repr.<locals>.Fooc                     d S r   r   r   s    r?   r  zDClassPropertiesAndMethods.test_bound_method_repr.<locals>.Foo.method4  r-  r@   Nr   r   r   r  r   r@   r?   r)	  r	  3  r/  r@   r)	  z4<bound method .*Foo\.method of <.*Foo object at .*>>c                       e Zd Zd ZdS )>ClassPropertiesAndMethods.test_bound_method_repr.<locals>.Basec                     d S r   r   r   s    r?   r  zEClassPropertiesAndMethods.test_bound_method_repr.<locals>.Base.method;  r-  r@   Nr	  r   r@   r?   rF  r	  :  r/  r@   rF  c                       e Zd ZdS )BClassPropertiesAndMethods.test_bound_method_repr.<locals>.Derived1NrK  r   r@   r?   Derived1r	  =  rM  r@   r	  c                       e Zd Zd ZdS )BClassPropertiesAndMethods.test_bound_method_repr.<locals>.Derived2c                     d S r   r   r   s    r?   r  zIClassPropertiesAndMethods.test_bound_method_repr.<locals>.Derived2.method@  r-  r@   Nr	  r   r@   r?   Derived2r	  ?  r/  r@   r	  z6<bound method .*Base\.method of <.*Base object at .*>>z:<bound method .*Base\.method of <.*Derived1 object at .*>>z><bound method .*Derived2\.method of <.*Derived2 object at .*>>z:<bound method .*Base\.method of <.*Derived2 object at .*>>c                   $    e Zd Zed             ZdS )r	  c                     d S r   r   rE  s    r?   r  zDClassPropertiesAndMethods.test_bound_method_repr.<locals>.Foo.methodP  r  r@   N)r   r   r   r  r  r   r@   r?   r)	  z=ClassPropertiesAndMethods.test_bound_method_repr.<locals>.FooO  s-          [  r@   z/<bound method .*Foo\.method of <class '.*Foo'>>c                       e Zd Zd ZdS )DClassPropertiesAndMethods.test_bound_method_repr.<locals>.MyCallablec                     d S r   r   r  s     r?   re  zMClassPropertiesAndMethods.test_bound_method_repr.<locals>.MyCallable.__call__[  r-  r@   N)r   r   r   re  r   r@   r?   
MyCallabler	  Z  r/  r@   r	  z*<bound method \? of <object object at .*>>r=   z,<bound method name of <object object at .*>>r	  z0<bound method qualname of <object object at .*>>)	assertRegexr   r  rs  r^  r>  
MethodTyper   r   )r:   r)	  rF  r	  r	  r  derived1derived2super_d2r   r	  r  instancer  r  s                 r?   test_bound_method_reprz0ClassPropertiesAndMethods.test_bound_method_repr2  s   	 	 	 	 	 	 	 	 	cceel++C	E 	E 	E	 	 	 	 	 	 	 		 	 	 	 	t 	 	 		 	 	 	 	t 	 	 	 tvv8::8::8,,dk**E	G 	G 	Gho..I	K 	K 	Kho..M	O 	O 	Oho..I	K 	K 	K	 	 	 	 	 	 	 	 ceecj))>	@ 	@ 	@cj))>	@ 	@ 	@	 	 	 	 	 	 	 	 z||88!$11f9	; 	; 	;f;	= 	= 	=&f?	A 	A 	A 	A 	Ar@   Nzneed the _testcapi modulec                 N     G d d           G fdd          }|j          d S )Nc                       e Zd Zej        ZdS )6ClassPropertiesAndMethods.test_bpo25750.<locals>.DescrN)r   r   r   r  bad_getrc  r   r@   r?   r 	  r	  n  s        'GGGr@   r 	  c                   *    e Zd Z              Zd ZdS )2ClassPropertiesAndMethods.test_bpo25750.<locals>.Xc                 P    d | _         d t          d          D             | _        d S )Nc                     g | ]}d |z  S r  r   r  s     r?   r=  zNClassPropertiesAndMethods.test_bpo25750.<locals>.X.__new__.<locals>.<listcomp>v  s    666A1a4666r@   i'  )r  r   r  rE  s    r?   r   z:ClassPropertiesAndMethods.test_bpo25750.<locals>.X.__new__s  s(     	66u666r@   N)r   r   r   r  r   r#	  s   r?   r  r	  q  s/        EGGE7 7 7 7 7r@   r  r^	  )r:   r  r 	  s     @r?   test_bpo25750z'ClassPropertiesAndMethods.test_bpo25750i  sj    
	( 	( 	( 	( 	( 	( 	( 	(	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	
r@   c                 V    G d d          }|                      |                                g             G d d|          }|                      |                                |g           ~t          j                     |                      |                                g            d S )Nc                       e Zd ZdS )>ClassPropertiesAndMethods.test_remove_subclass.<locals>.ParentNrK  r   r@   r?   Parentr 
  ~  rM  r@   r
  c                       e Zd ZdS )=ClassPropertiesAndMethods.test_remove_subclass.<locals>.ChildNrK  r   r@   r?   Childr
    rM  r@   r
  )rG   rA  rZ  ru	  )r:   r
  r
  s      r?   test_remove_subclassz.ClassPropertiesAndMethods.test_remove_subclassy  s    
	 	 	 	 	 	 	 	..00"555	 	 	 	 	F 	 	 	..005':::

..00"55555r@   c                      G d d          }|                      t          d          5   |            j         d d d            d S # 1 swxY w Y   d S )Nc                   *    e Zd Zd Zed             ZdS )EClassPropertiesAndMethods.test_attr_raise_through_property.<locals>.Ac                      t          d          )NFOO)r  r  s     r?   r  zQClassPropertiesAndMethods.test_attr_raise_through_property.<locals>.A.__getattr__  s     '''r@   c                 ,    |                      d          S )Nasdf)r  r   s    r?   r   zIClassPropertiesAndMethods.test_attr_raise_through_property.<locals>.A.foo  s    ''///r@   N)r   r   r   r  r  r   r   r@   r?   r{  r
    s>        ( ( ( 0 0 X0 0 0r@   r{  r

  )r]  r  r   ra  s     r?    test_attr_raise_through_propertyz:ClassPropertiesAndMethods.test_attr_raise_through_property  s    	0 	0 	0 	0 	0 	0 	0 	0 ##J66 	 	ACCGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
A
)r   r   r   r   r   r!  r2  r  rC  ra  ry  r  r  r  r  r  r  rc  rq  r  r  r  r  r  r   refcount_testr  r   r  r  r  r  r  r>  rJ  r2   expectedFailurerP  rb  rr  r  r  r  r  r  r5  rc  rr  r  skipIfr   flagsoptimizer  cpython_onlyr  r  r  r  rM  r  r  r  r  r  r  r  r;  r`  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r'  r0  r?  rD  rF  rR  ra  rm  r  r  r  r  r  r  r  r  r  r  r  r	  r
	  r	  r$	  r*	  r.	  r2	  r5	  r7	  rN	  rU	  rb	  rw	  ry	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r  r	  r
  r
  rv  r  s   @r?   r   r     sT	       @ @ @I I I2/ 2/ 2/h0 0 0T T Tl
(9 (9 (9T'* '* '*R"= "= "=J@ @ @B B B*7 7 7#; #; #;J1 1 10;0 ;0 ;0zW W Wr$2 $2 $2L&- &- &-P< < <"A/ A/ A/F:O :O :Ox8' 8' 8' 8' 8't N N N W=>>/= /= ?>/=b' ' '0 N N N W=>>    ?> O O O* &  &  &D) ) )$ 
( 
( 
( ?  ?  ?D ) ) ).E> E> E>N/4 /4 /4bH H HP P P* WDEE@ @ FE@,f8 f8 f8P`" `" `"D  >=F =F =F~ X_SY'1,@B B2 2B B2 < < <A A AFM? M? M?^Z Z Zxn n n n n`_0 _0 _0X
+ + +63 3 3@>< >< ><@M@ M@ M@^A A AX X X&W W WrWP WP WPr5 5 5<K( K( K(Z  .1 1 1*1 1 1* * *  @ @ @$= = =.,* ,* ,*\  
1 
1 
1%0 %0 %0N( ( (4) ) )6*% *% *%X  2
 
 
  ( ( (    ,  O O O?H ?H ?HB*= *= *=X( ( (@42 42 42l3 3 30C C C  17 17 17f WDEE)I )I FE)IV%% %% %%N9 9 9.< < <K K K"P P P&  &  	 	 	) ) )B
A 
A 
A    $  &6 6 6&2$ 2$ 2$h% % %" " ":%O %O %ONH H H	& 	& 	&) ) ) + + +65 5 5     
 
 
P P P. . .< < <@: : :) ) )< < <(3 3 35A 5A 5A 5A 5An X_Y$&(CDD  ED6 6 6"      r@   r   c                   R   e Zd Zd Z ej         eed          o ej                    d          d             Z	 ej         eed          o ej                    d          d             Z
 ej         eed          o ej                    d          d             Zd Zd Zd	S )
DictProxyTestsc                 :     G d dt                     }|| _        d S )Nc                       e Zd Zd ZdS )DictProxyTests.setUp.<locals>.Cc                     d S r   r   r   s    r?   rN   z$DictProxyTests.setUp.<locals>.C.meth  r-  r@   Nr}  r   r@   r?   r   r
    r/  r@   r   )r^  r   r   s     r?   setUpzDictProxyTests.setUp  s9    	 	 	 	 	 	 	 	 r@   gettracez#trace function introduces __local__c                     | j         j                                        }|                     |t                     t	          |          }|                                 |                     |g d           d S )NrK   r  r   rh  rN   )r   rK   r   assertNotIsInstancer6   r	  rG   r:   rd  r   s      r?   test_iter_keyszDictProxyTests.test_iter_keys  sz     V_!!##  T***Bxx		  7  7  7 	8 	8 	8 	8 	8r@   c                     | j         j                                        }|                     |t                     t	          |          }|                     t          |          d           d S rt	  )r   rK   r]  r
  r6   rG   r  )r:   rd  r]  s      r?   test_iter_valueszDictProxyTests.test_iter_values  s\     V_##%%  T***bVa(((((r@   c                     | j         j                                        }|                     |t                     d |D             }|                                 |                     |g d           d S )Nc                     g | ]
}|d          S r  r   )r<  items     r?   r=  z2DictProxyTests.test_iter_items.<locals>.<listcomp>  s    '''DQ'''r@   r
  )r   rK   r7   r
  r6   r	  rG   r
  s      r?   test_iter_itemszDictProxyTests.test_iter_items  s     V_""$$  T***''B'''		  7  7  7 	8 	8 	8 	8 	8r@   c                      G d dt                     } G d dt                    } G d d|          }|                     t          |j                  t          |j                             d S )Nc                       e Zd ZdS )7DictProxyTests.test_dict_type_with_metaclass.<locals>.BNrK  r   r@   r?   r  r)
    rM  r@   r  c                       e Zd ZdS )7DictProxyTests.test_dict_type_with_metaclass.<locals>.MNrK  r   r@   r?   r  r+
    rM  r@   r  c                       e Zd ZdS )7DictProxyTests.test_dict_type_with_metaclass.<locals>.CNrK  r   r@   r?   r   r-
    r  r@   r   r@  )r^  rI   rG   rK   )r:   r  r  r   s       r?   test_dict_type_with_metaclassz,DictProxyTests.test_dict_type_with_metaclass  s    	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	! 	 	 	 	 	aj))4
+;+;<<<<<r@   c                 x   t          | j        j                  }|                     |                    d          |           |                     |                    d          |           | j        j                                        D ]/\  }}|                     d                    ||          |           0d S )Nzmappingproxy()z
{!r}: {!r})	r   r   rK   r   ra  endswithr7   r  r  )r:   ro  r   r   s       r?   	test_reprzDictProxyTests.test_repr  s     !!_55q999

3+++FO))++ 	8 	8DAqMM,--a33Q7777	8 	8r@   N)r   r   r   r
  r2   r
  r   r   r
  r 
  r"
  r&
  r.
  r2
  r   r@   r?   r
  r
    s          X_WWS*--@,#,..=? ?8 8? ?8 X_WWS*--@,#,..=? ?) )? ?) X_WWS*--@,#,..=? ?8 8? ?8	= 	= 	=8 8 8 8 8r@   r
  c                       e Zd Zd ZdS )AAAPTypesLongInitTestc                      G d dt                     }	 t          d |            d           n#  Y nxY wt                              t                     d S )Nc                       e Zd Zd ZdS )>AAAPTypesLongInitTest.test_pytype_long_ready.<locals>.UserLongc                     d S r   r   r:   r;   s     r?   rj  zFAAAPTypesLongInitTest.test_pytype_long_ready.<locals>.UserLong.__pow__  r-  r@   Nr>  r   r@   r?   UserLongr7
    r/  r@   r:
  r   )r^  r   rI   r  r  )r:   r:
  s     r?   test_pytype_long_readyz,AAAPTypesLongInitTest.test_pytype_long_ready  so    	 	 	 	 	v 	 	 		88::q!!!!	D 	s   / 3N)r   r   r   r;
  r   r@   r?   r4
  r4
    s#        
    r@   r4
  c                       e Zd Zd ZdS )	MiscTestsc                 &    G fddt                     } G d dt                     } G d dt                     t          d|f |            di          |                     j        d	           |                     j        d
           d S )Nc                   "    e Zd Zd Z fdZdS )7MiscTests.test_type_lookup_mro_reference.<locals>.MyKeyc                      t          d          S )Nmykeyr	  r   s    r?   rH  z@MiscTests.test_type_lookup_mro_reference.<locals>.MyKey.__hash__  s    G}}$r@   c                     f_         d S r   r  )r:   r   Base2r  s     r?   rC  z>MiscTests.test_type_lookup_mro_reference.<locals>.MyKey.__eq__  s    $hr@   Nr	  )rD
  r  s   r?   MyKeyr@
    sB        % % %' ' ' ' ' ' ' 'r@   rE
  c                       e Zd ZdZdZdS )6MiscTests.test_type_lookup_mro_reference.<locals>.Base	from BaseNr   r   r   rB
  mykey2r   r@   r?   rF  rG
    s        E FFFr@   rF  c                       e Zd ZdZdZdS )7MiscTests.test_type_lookup_mro_reference.<locals>.Base2
from Base2NrI
  r   r@   r?   rD
  rL
    s         E!FFFr@   rD
  r  r   rH
  rM
  )r^  rI   rG   rB
  rJ
  )r:   rE
  rF  rD
  r  s      @@r?   test_type_lookup_mro_referencez(MiscTests.test_type_lookup_mro_reference  s    	' 	' 	' 	' 	' 	' 	' 	'F 	' 	' 	'	! 	! 	! 	! 	!6 	! 	! 	!	" 	" 	" 	" 	"F 	" 	" 	" tg|,,+...<00000r@   N)r   r   r   rN
  r   r@   r?   r=
  r=
    s#        1 1 1 1 1r@   r=
  c                   b    e Zd Zdi dddfdZd Zd ZddZed             Zd Z	d	 Z
d
 Zd ZdS )PicklingTestsr   Nc                 &   |dk    rj|                     |          }|rS|                     |d         t          j                   |                     |d         t	          |          ||f           nS|                     |d         t          j                   |                     |d         t	          |          f|z              |                     |d         |           |*|                     t          |d                   |           n|                     |d                    |+| 	                    t          |d                   |           d S |                     |d                    d S t	          |          j        }	t          j        t	          |          |	|	t          u rd n
 |	|          ff}|||fz  }|                     |                     |          |           |                     |                                |           d S )Nrr   r   rq   rt   rw   )__reduce_ex__rG   copyreg__newobj_ex__rI   
__newobj__assertListEqualr6   r	  assertDictEqualr   __base___reconstructorr^  
__reduce__)
r:   protor   r;   r<   r  	listitems	dictitemsreduce_value	base_types
             r?   _check_reducezPicklingTests._check_reduce
  s    A::,,U33L G  a'2GHHH  a499dF2KLLLL  a'2DEEE  a499,2EFFF\!_e444$$$T,q/%:%:IFFFF!!,q/222$$$T,q/%:%:IFFFFF!!,q/22222S		*I#2!#YY&%.&%8%8TTiinnNOL  (S..u55|DDDS^^--|<<<<<r@   c                 
   t          t          j        dz             }ddddddi G fdd	          } |            }|D ]}|                     ||                                           D ]\  }}t          |||           |D ]}|                     ||
            G d d          } |            }|D ]O}|dk    rG|                     t                    5  |                    |           d d d            n# 1 swxY w Y   P G fdd          } |            }|D ] }|dk    r|                     ||           ! G fdd          }	 G fdd          }
 G d d          } G d d          }|D ]i}|	|
||fD ]`} |            }|dk    rN|                     t          t          f          5  |                    |           d d d            n# 1 swxY w Y   aj G fdd          } |            }|D ]}|                     ||            G d d          } |            }|D ]O}|dk    rG|                     t                    5  |                    |           d d d            n# 1 swxY w Y   P G fdd          } |            }|D ]}|                     ||
            G d d          } |            }|D ]}|                     ||d 
            G d! d"          } |            }|D ]}|                     t                    5  |                    |           d d d            n# 1 swxY w Y   |dk     rF|                     t                    5  |                                 d d d            n# 1 swxY w Y    G fd#d$          } |            }|D ]}|dk    r|                     ||d f
           #|                     t                    5  |                    |           d d d            n# 1 swxY w Y   |                     t                    5  |                                 d d d            n# 1 swxY w Y    G d% d&t                    } |d'd(i          }|D ]'}|                     ||t          |          )           ( G d* d+t                    } |d,g          }|D ]'}|                     ||t          |          -           (d S ).Nrq   )ir   i7i)baconfishcheeseioc                       e Zd Z fdZdS )%PicklingTests.test_reduce.<locals>.C1c                     S r   r   r9
  s    r?   __getnewargs__z4PicklingTests.test_reduce.<locals>.C1.__getnewargs__/  s    r@   Nr   r   r   rh
  r  s   r?   r  rf
  .  s.              r@   r  r  c                       e Zd Zd ZdS )%PicklingTests.test_reduce.<locals>.C2c                     dS Nzbad argsr   r   s    r?   rh
  z4PicklingTests.test_reduce.<locals>.C2.__getnewargs__;      !zr@   Nri
  r   r@   r?   r  rk
  :  #        " " " " "r@   r  rr   c                       e Zd Z fdZdS )%PicklingTests.test_reduce.<locals>.C3c                     fS r   r   )r:   r;   r<   s    r?   __getnewargs_ex__z7PicklingTests.test_reduce.<locals>.C3.__getnewargs_ex__D  s    f~%r@   Nr   r   r   rs
  r  s   r?   r
  rq
  C  s3        & & & & & & & &r@   r
  c                       e Zd Z fdZdS )%PicklingTests.test_reduce.<locals>.C4c                     dfS )Nzbad dictr   r9
  s    r?   rs
  z7PicklingTests.test_reduce.<locals>.C4.__getnewargs_ex__L  s    j))r@   Nrt
  r  s   r?   r  rv
  K  s.        * * * * * * *r@   r  c                       e Zd Z fdZdS )%PicklingTests.test_reduce.<locals>.C5c                     dfS )Nz	bad tupler   )r:   r<   s    r?   rs
  z7PicklingTests.test_reduce.<locals>.C5.__getnewargs_ex__O  s    #V,,r@   Nrt
  )r<   s   r?   C5ry
  N  s.        - - - - - - -r@   r{
  c                       e Zd Zd ZdS )%PicklingTests.test_reduce.<locals>.C6c                     dS )Nr   r   r   s    r?   rs
  z7PicklingTests.test_reduce.<locals>.C6.__getnewargs_ex__R  rk  r@   Nrt
  r   r@   r?   C6r}
  Q  rm  r@   r
  c                       e Zd Zd ZdS )%PicklingTests.test_reduce.<locals>.C7c                     dS rm
  r   r   s    r?   rs
  z7PicklingTests.test_reduce.<locals>.C7.__getnewargs_ex__U  rn
  r@   Nrt
  r   r@   r?   C7r
  T  ro
  r@   r
  c                       e Zd Z fdZdS )%PicklingTests.test_reduce.<locals>.C9c                     i fS r   r   r9
  s    r?   rs
  z7PicklingTests.test_reduce.<locals>.C9.__getnewargs_ex___  s    bz!r@   Nrt
  r  s   r?   C9r
  ^  r"  r@   r
  c                       e Zd Zd ZdS )&PicklingTests.test_reduce.<locals>.C10c                     t           r   r;  r   s    r?   rs
  z8PicklingTests.test_reduce.<locals>.C10.__getnewargs_ex__f        r@   Nrt
  r   r@   r?   C10r
  e  #        ! ! ! ! !r@   r
  c                       e Zd Z fdZdS )&PicklingTests.test_reduce.<locals>.C11c                     S r   r   r  s    r?   r  z3PicklingTests.test_reduce.<locals>.C11.__getstate__o  s    r@   Nr   r   r   r  r  s   r?   C11r
  n  s.              r@   r
  c                       e Zd Zd ZdS )&PicklingTests.test_reduce.<locals>.C12c                     dS )Nnot dictr   r   s    r?   r  z3PicklingTests.test_reduce.<locals>.C12.__getstate__v  rn
  r@   Nr
  r   r@   r?   C12r
  u  ro
  r@   r
  r
  c                       e Zd Zd ZdS )&PicklingTests.test_reduce.<locals>.C13c                     t           r   r;  r   s    r?   r  z3PicklingTests.test_reduce.<locals>.C13.__getstate__}  r
  r@   Nr
  r   r@   r?   C13r
  |  r
  r@   r
  c                   0    e Zd Z e           Z fdZdS )&PicklingTests.test_reduce.<locals>.C14c                 ^                                     D ]\  }}t          | ||           d S r   r7   rb  )r:   r=   r  r  s      r?   r4   z/PicklingTests.test_reduce.<locals>.C14.__init__  s=    #(;;== / /KD%D$..../ /r@   N)r   r   r   r  r   r4   r  s   r?   C14r
    s;        eI/ / / / / / /r@   r
  c                       e Zd ZdS )&PicklingTests.test_reduce.<locals>.C15NrK  r   r@   r?   C15r
    rM  r@   r
  quebeci)r]
  c                       e Zd ZdS )&PicklingTests.test_reduce.<locals>.C16NrK  r   r@   r?   C16r
    rM  r@   r
  yukon)r\
  )r   pickleHIGHEST_PROTOCOLr`
  r7   rb  r  r   rR
  r  r<  rZ
  r   r6   )r:   	protocolsr  r   r[
  r=   r  r  r
  r  r{
  r
  r
  r   r
  r
  r
  r
  r
  r
  r
  r
  r;   r<   r  s                         @@@r?   test_reducezPicklingTests.test_reduce(  s[	   &1A566	..4 	 	 	 	 	 	 	 	 	 	 bdd 	1 	1Euc40000 ;;== 	& 	&KD%Cu%%%% 	> 	>Euc4u====	" 	" 	" 	" 	" 	" 	" 	" bdd 	- 	-Ezz&&y11 - -%%e,,,- - - - - - - - - - - - - - -	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& bdd 	= 	=Ezz""5#tV<<<	* 	* 	* 	* 	* 	* 	* 	* 	* 	*	- 	- 	- 	- 	- 	- 	- 	- 	- 	-	 	 	 	 	 	 	 		" 	" 	" 	" 	" 	" 	" 	"  	1 	1E2r2~ 1 1ceeA::**Iz+BCC 1 1))%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 11	" 	" 	" 	" 	" 	" 	" 	" 	" 	" bdd 	1 	1Euc40000	! 	! 	! 	! 	! 	! 	! 	! cee 	- 	-Ezz&&z22 - -%%e,,,- - - - - - - - - - - - - - -	 	 	 	 	 	 	 	 	 	 cee 	8 	8Euc7777	" 	" 	" 	" 	" 	" 	" 	" cee 	= 	=Euc<<<<	! 	! 	! 	! 	! 	! 	! 	! cee 	% 	%E"":.. ) )!!%((() ) ) ) ) ) ) ) ) ) ) ) ) ) )qyy&&z22 % %NN$$$% % % % % % % % % % % % % % %	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ cee 	% 	%Ezz""5#dE]"CCCC&&y11 - -%%e,,,- - - - - - - - - - - - - - -&&y11 % %NN$$$% % % % % % % % % % % % % % %	 	 	 	 	$ 	 	 	c8T"## 	@ 	@EucT#YY????	 	 	 	 	$ 	 	 	c7)nn 	@ 	@EucT#YY????	@ 	@s~   $DD
	D
	G&&G*-G*#JJ		J		0MM	M	=NN"	%N"	P$$P(	+P(		Q**Q.	1Q.	c                     t          t          j        dz             } G d d          }|D ],}|dk    ri nd }|                     | |            |           -d S )Nrq   c                       e Zd Zd Zd ZdS )7PicklingTests.test_special_method_lookup.<locals>.Pickyc                     i S r   r   r   s    r?   r  zDPicklingTests.test_special_method_lookup.<locals>.Picky.__getstate__  s    	r@   c                 ,    |dv rt          |          d S )N)rh
  rs
  rg  r  s     r?   r  zCPicklingTests.test_special_method_lookup.<locals>.Picky.__getattr__  s!    BBB(...tr@   N)r   r   r   r  r  r   r@   r?   Pickyr
    s2              r@   r
  rr   r  )r   r
  r
  r`
  )r:   r
  r
  protocolr  s        r?   r5  z(PicklingTests.test_special_method_lookup  s    &1A566		 	 	 	 	 	 	 	 " 	? 	?H"a--BBTEx>>>>	? 	?r@   c           	         |d                     ||          }t          |          j        t          j        u rt	          d          |                     |||           |                     t          |          t          |          |           t          |d          rD|                     |j	        |j	        |           |                     |j	        |j	        |           t          |d          r| 
                    |j        |j        |           |j        D ]l}|                     t          ||          t          ||          |           |                     t          ||d          t          ||d          |           m|                     t          |          t          |          |           dS )zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r}zCobject passed to _assert_is_copy must override the __repr__ method.)r  rK   r   )r  rI   r   r^  r  r	  r  r   rW
  rK   rV
  r   rG   rJ   r   )r:   r   objcopyr  slots        r?   _assert_is_copyzPicklingTests._assert_is_copy  s    ;.55c7CCC9900
  = > > >g3///d3iigC8883
## 	F  w/?S IIIS\7+;EEE3$$ 	H  0As KKK H H  C&&(>(>C ! I I I  dD!9!9!($!=!=3 ! H H H HcDMMs;;;;;r@   c                        G d d            fdt          j        t          t          j        dz             t          j        t          j        ht          j        t          j        h          D             S )zLUtility method to generate the many possible pickle configurations.
        c                   $    e Zd ZdZd Zd Zd ZdS )<PicklingTests._generate_pickle_copiers.<locals>.PickleCopierz&This class copies object using pickle.c                 0    || _         || _        || _        d S r   )r[
  dumpsloads)r:   r[
  r
  r
  s       r?   r4   zEPicklingTests._generate_pickle_copiers.<locals>.PickleCopier.__init__  s    "
"
"


r@   c                 ^    |                      |                     || j                            S r   )r
  r
  r[
  r,  s     r?   r   zAPicklingTests._generate_pickle_copiers.<locals>.PickleCopier.copy  s$    zz$**S$*"="=>>>r@   c                     d                     | j        | j        j        | j        j        | j        j        | j        j                  S )Nz0PickleCopier(proto={}, dumps={}.{}, loads={}.{}))r  r[
  r
  r   r   r
  r   s    r?   r   zEPicklingTests._generate_pickle_copiers.<locals>.PickleCopier.__repr__  sA     K
 $
 5tz7N $
 5tz7NP PQr@   N)r   r   r   r  r4   r   r   r   r@   r?   PickleCopierr
    sL        44# # #? ? ?Q Q Q Q Qr@   r
  c              3   "   K   | ]	} | V  
d S r   r   )r<  r;   r
  s     r?   r  z9PicklingTests._generate_pickle_copiers.<locals>.<genexpr>  sB       E Ed# E E E E E Er@   rq   )		itertoolsproductr   r
  r
  r
  _dumpsr
  _loads)r
  s   @r?   _generate_pickle_copiersz&PicklingTests._generate_pickle_copiers  s    	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q E E E E$U6+BQ+F%G%G&,lFM%B&,lFM%BD DE E E 	Er@   c                 x    G d d          a |                     t                    5  t          j        t                      d           d d d            n# 1 swxY w Y    G d dt                     a|                     t                    5  t          j        t                      d           d d d            n# 1 swxY w Y    G d d          a  G d dt                     a G d d	t                     a|                                 D ]*}|                     |
          5  t                      }|	                    |          }| 
                    ||           d|_        |	                    |          }| 
                    ||           t                      }d|_        d|_        |	                    |          }| 
                    ||           t                      }d|_        d|_        |	                    |          }| 
                    ||           d d d            n# 1 swxY w Y   ,d S )Nc                       e Zd ZdgZdS )r   rD   Nr  r   r@   r?   r   r     r  r@   r   r   c                       e Zd ZdS )rL  NrK  r   r@   r?   rL  rL    rM  r@   rL  c                   *    e Zd ZdZdgZd Zd Zd ZdS )r   z7A class with __getstate__ and __setstate__ implemented.rD   c                     t          | di                                           }t          |           j        D ]D}|j                            dd          D ]&}	 t          | |          ||<   # t          $ r Y #w xY wE|S )NrK   r   r   )rJ   r   rI   r`  rK   r   r  )r:   r  r   r
  s       r?   r  zC.__getstate__  s    j"55::<<::- ! !C # 0 0b A A ! !!*1$*=*=E$KK- ! ! ! D!!
 s   A,,
A98A9c                 \    |                                 D ]\  }}t          | ||           d S r   r
  )r:   r  r   r   s       r?   r  zC.__setstate__  s<    !KKMM ( (DAqD!Q''''( (r@   c                 Z    t          |           j        d|                                 dS )Nz()<r&   )rI   r   r  r   s    r?   r   z
C.__repr__  s.    %)$ZZ%8%8%8$:K:K:M:M:M:MNNr@   N)r   r   r   r  r   r  r  r   r   r@   r?   r   r     sS        EEI  ( ( (O O O O Or@   c                       e Zd ZdZdS )rL  z!A subclass of a class with slots.Nr  r   r@   r?   rL  rL    s        //Dr@   c                       e Zd ZdZdgZdS )r  zA subclass with an extra slot.rX   N)r   r   r   r  r   r   r@   r?   r  r    s        ,,IIIr@   r  )pickle_copierr   r   r   )r   r  r   r
  r
  rL  r  r
  subTestr   r
  rD   rX   )r:   r
  r  r  s       r?   test_pickle_slotszPicklingTests.test_pickle_slots  sI   	 	 	 	 	 	 	 	y)) 	! 	!La   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	 	 	 	 	 	 	 	y)) 	! 	!La   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	O 	O 	O 	O 	O 	O 	O 	O$	 	 	 	 	 	 	 	
	 	 	 	 	 	 	 	
 "::<< 	+ 	+MM:: + +CC!&&q))$$Q***!&&q))$$Q***CC!&&q))$$Q***CC!&&q))$$Q***'+ + + + + + + + + + + + + + +	+ 	+s6   "AAA"B<<C C 'C:H--H1	4H1	c                 l    G d d          a  G d dt                    a G d dt                    a G d dt                    a G d	 d
t                    at           t          t          t
          t          f}|                                 }t          j	        ||          D ]\  }}| 
                    ||          5  t          |di           } ||j        i |}|j        }|                    |          }|                     ||           |dk    rK|j        sD|j                                         |                    |          }	|                     ||	           d d d            n# 1 swxY w Y   |D ]}| 
                    |          5  t          |di           } ||j        i |}t'          |          }|                     ||           |j        s>|j                                         t'          |          }	|                     ||	           d d d            n# 1 swxY w Y   d S )Nc                   0     e Zd ZdZdZdZ fdZd Z xZS )r  z:The state of this class is copyable via its instance dict.r  Tc                 d    t                                                       || _        || _        d S r   )rs  r4   rD   rX   )r:   rD   rX   r  s      r?   r4   zC1.__init__.  s+      """r@   c                 (    d| j         d| j        dS )NzC1(r  r0
  rW   r   s    r?   r   zC1.__repr__2  s     '+vvvtvvv66r@   )	r   r   r   r  ARGSNEED_DICT_COPYINGr4   r   rv  r  s   @r?   r  r  *  sX        HHD $    7 7 7 7 7 7 7r@   r  c                   P     e Zd ZdZdZdZ fdZ fdZed             Z	d Z
 xZS )r  z,A list subclass copyable via __getnewargs__.r  Fc                 f    t                                          |           }||_        ||_        |S r   rs  r   rD   rX   )r   rD   rX   r:   r  s       r?   r   z
C2.__new__:  s+    wws++r@   c                 r    t                                                       |                     d           d S Nrd
  )rs  r4   r   )r:   r;   r  s     r?   r4   zC2.__init__?  s3      """ H%%%%%r@   c                     | j         S r   r
  rE  s    r?   rh
  zC2.__getnewargs__D  	    xr@   c                 H    d| j         d| j        dt          |           dS )NzC2(r  )<r&   rD   rX   r6   r   s    r?   r   zC2.__repr__G  '     +/66646664::::FFr@   )r   r   r   r  r
  r
  r   r4   r  rh
  r   rv  r  s   @r?   r  r  6  s        ::D %    
& & & & &
     [ G G G G G G Gr@   r  c                   B    e Zd ZdZdZdZd Zed             Zd Z	d Z
dS )	r
  z*A list subclass copyable via __getstate__.r  Fc                 L    || _         || _        |                     d           d S r
  )rD   rX   r   r-	  s      r?   r4   zC3.__init__O  s*     H%%%%%r@   c                     | j         S r   r
  rE  s    r?   r  zC3.__getstate__U  r
  r@   c                 ,    |\  }}|| _         || _        d S r   rW   )r:   r  rD   rX   s       r?   r  zC3.__setstate__X  s    1r@   c                 H    d| j         d| j        dt          |           dS )NzC3(r  r
  r&   r
  r   s    r?   r   zC3.__repr__\  r
  r@   N)r   r   r   r  r
  r
  r4   r  r  r  r   r   r@   r?   r
  r
  K  sr        88D %& & &     [   G G G G Gr@   r
  c                   F     e Zd ZdZdZdZ fdZed             Zd Z	 xZ
S )r  z,An int subclass copyable via __getnewargs__.)rP  rO  rq   Fc                 h    t                                          | |          }||_        ||_        |S r   r
  r   rD   rX   r  r:   r  s        r?   r   z
C4.__new__d  -    wwsE22r@   c                     | j         S r   r
  rE  s    r?   rh
  zC4.__getnewargs__i  r
  r@   c                 H    d| j         d| j        dt          |           dS )NzC4(r  r
  r&   rD   rX   r-   r   s    r?   r   zC4.__repr__l  '     +/66646663t9999EEr@   )r   r   r   r  r
  r
  r   r  rh
  r   rv  r  s   @r?   r  r  `  sz        ::(D %    
     [ F F F F F F Fr@   r  c                   T     e Zd ZdZdZddiZdZdd fd
Zed	             Z	d
 Z
 xZS )r{
  z/An int subclass copyable via __getnewargs_ex__.r  r  rt   Fr   rS	  c                h    t                                          | |          }||_        ||_        |S r   r
  r
  s        r?   r   z
C5.__new__u  r
  r@   c                     | j         | j        fS r   )r
  KWARGSrE  s    r?   rs
  zC5.__getnewargs_ex__z  s    #*--r@   c                 H    d| j         d| j        dt          |           dS )NzC5(r  r
  r&   r
  r   s    r?   r   zC5.__repr__}  r
  r@   )r   r   r   r  r
  r
  r
  r   r  rs
  r   rv  r  s   @r?   r{
  r{
  p  s        ==Dq\F %,-       
 . . [.F F F F F F Fr@   r{
  )r   r
  r
  rr   rE  )r  r6   r  r
  r-   r  r{
  r
  r
  r
  r
  rJ   r
  r[
  r   r
  r
  rK   r  r   )
r:   test_classespickle_copiersr   r
  r<   r   r[
  r
  objcopy2s
             r?   test_reduce_copyingz!PicklingTests.test_reduce_copying'  s\   		7 		7 		7 		7 		7 		7 		7 		7	G 	G 	G 	G 	G 	G 	G 	G*	G 	G 	G 	G 	G 	G 	G 	G*	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F  BB+6688"+"3L."Q"Q 	8 	8C#]CC 8 8 h33c38.v..%+',,S11$$S'222
 A::c&;:$**,,,,11'::H((h7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8    	8 	8C#&& 8 8 h33c38.v.."3--$$S'222
 , 8$**,,,'00H((h7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s&   ?B"E--E1	4E1	B	H((H,	/H,	c                      G d dt                      G fdd          dd l}|j        fd ddifd d f}|                                                      d          |           d S )	Nc                       e Zd ZdS )(PicklingTests.test_issue24097.<locals>.SNrK  r   r@   r?   rp  r
    rM  r@   rp  c                   4    e Zd Z d          gZ fdZdS )(PicklingTests.test_issue24097.<locals>.Ar   c                 N    |dk    r d          gj         d d <   dS t          )Nr   r   )__slotnames__r  )r:   rw  r{  rp  s     r?   r  z4PicklingTests.test_issue24097.<locals>.A.__getattr__  s1    6>>*+!F))AOAAA&2((r@   N)r   r   r   r  r  )r{  rp  s   r?   r{  r
    sB        QvYYKM) ) ) ) ) ) ) )r@   r{  r   r   r   rr   )r@  rS
  rU
  rG   rR
  )r:   rS
  r  r{  rp  s      @@r?   test_issue24097zPicklingTests.test_issue24097  s    	 	 	 	 	 	 	 		) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	&tfb\.BD$O**1--x88888r@   c                 z   t                                                       |                     t                    5  t                                          d           d d d            n# 1 swxY w Y   t                                          d           |                     t                    5  t                                                       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 r   )r^  rZ
  r  r   rR
  r   s    r?   test_object_reducez PicklingTests.test_object_reduce  s    	y)) 	# 	#HH"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	q!!!y)) 	% 	%HH""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%y)) 	) 	)HH""4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s5   "A))A-0A-/!CC #C "D00D47D4r   )r   r   r   r`
  r
  r5  r
  rf  r
  r
  r
  r  r  r   r@   r?   rP
  rP
    s        -/$ $= = = =<y@ y@ y@v? ? ?< < < <4 E E \E0A+ A+ A+Fz8 z8 z8x9 9 9") ) ) ) )r@   rP
  c                   .    e Zd Zej        d             ZdS )SharedKeyTestsc                     G d d           G d d          fdt          d          D                                        }}|                     t          j        t	          |                    t          j        t	          |                               |                     t          j        t	          |                    t          j        ddi                     t          d	          \  |_        |_        |_        |_	        |_
        |_        |                     t          j        t	          |                    t          j        t	          |                                            }|                     t          j        t	          |                    t          j        t	          |                               |                     t          j        t	          |                    t          j        ddi                     |                     t          j        t	          |                    t          j        ddi                     d S )
Nc                       e Zd ZdS ))SharedKeyTests.test_subclasses.<locals>.ANrK  r   r@   r?   r{  r	    rM  r@   r{  c                       e Zd ZdS ))SharedKeyTests.test_subclasses.<locals>.BNrK  r   r@   r?   r  r    rM  r@   r  c                 8    g | ]}                          fS r   r   )r<  rq  r{  r  s     r?   r=  z2SharedKeyTests.test_subclasses.<locals>.<listcomp>  s)    '''!!##qqss'''r@   r  rD   rq   r   )r   rG   r   r)  vars
assertLessr  r  rY  wr   r  r  assertGreater)r:   rD   rX   r  r{  r  s       @@r?   test_subclasseszSharedKeyTests.test_subclasses  s   	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	(''''U2YY''''qssAACC1tAww//tAww1G1GHHHd1gg..s1g0F0FGGG (-Qxx$QS!#qsACCM$q''22CM$q''4J4JKKKQSS3=a113=b3J3JKKKd2hh//Aw1G1GHHHd1gg..s1g0F0FGGGGGr@   N)r   r   r   r   r
  r  r   r@   r?   r  r    s6        H H H H Hr@   r  c                       e Zd ZdZd Zd ZdS )DebugHelperMetaz<
    Sets default __doc__ and simplifies repr() output.
    c                 p    |                     d          ||d<   t                              | |||          S )Nr  )r   rI   r   )r  r=   rS  r  s       r?   r   zDebugHelperMeta.__new__  s6    99Y'#E)||D$u555r@   c                 *    t          | j                  S r   )r   r   rE  s    r?   r   zDebugHelperMeta.__repr__  s    CL!!!r@   N)r   r   r   r  r   r   r   r@   r?   r  r    s<         6 6 6" " " " "r@   r  c                   T    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S )MroTestz
    Regressions for some bugs revealed through
    mcsl.mro() customization (typeobject.c: mro_internal()) and
    cls.__bases__ assignment (typeobject.c: type_set_bases()).
    c                 "    d| _         d| _        d S )Nr   F)stepreadyr   s    r?   r
  zMroTest.setUp  s    	


r@   c                 @    | j         |k     }|r| xj         dz  c_         |S r   )r  )r:   limitrets      r?   
step_untilzMroTest.step_until  s*    y5  	IINII
r@   c                 P      G  fddt                     } G d d|          }dS )zM
        type_set_bases must be aware that type->tp_mro can be NULL.
        c                       e Zd Z fdZdS )4MroTest.test_incomplete_set_bases_on_self.<locals>.Mc                                          d          r| j        J | xj        dz  c_        t                              |           S )Nrq   r   )r  r`  rL   rI   r  rC  s    r?   r  z8MroTest.test_incomplete_set_bases_on_self.<locals>.M.mro  sE    ??1%% (;...MMR'MMxx}}$r@   Nr  r   s   r?   r  r!    s.        % % % % % % %r@   r  c                       e Zd ZdS )4MroTest.test_incomplete_set_bases_on_self.<locals>.ANrK  r   r@   r?   r{  r$    rM  r@   r{  r@  Nr  r:   r  r{  s   `  r?   !test_incomplete_set_bases_on_selfz)MroTest.test_incomplete_set_bases_on_self  sp    	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 	 	 	r@   c                       G  fddt                     } G d d|           G d d          }|xj        dz  c_        d	S )
z?
        Deep reentrancy must not over-decref old_mro.
        c                       e Zd Z fdZdS )/MroTest.test_reent_set_bases_on_base.<locals>.Mc                     | j         0| j        dk    r%                    d          rxj        dz  c_        t                              |           S )Nr  r  r   )r`  r   r  rL   rI   r  )r   r{  r:   s    r?   r  z3MroTest.test_reent_set_bases_on_base.<locals>.M.mro  sK    ;*s|s/B/Br** *r)xx}}$r@   Nr  )r{  r:   s   r?   r  r*    s3        % % % % % % % %r@   r  c                       e Zd ZdS )/MroTest.test_reent_set_bases_on_base.<locals>.ANrK  r   r@   r?   r{  r-    rM  r@   r{  r@  c                       e Zd ZdS )/MroTest.test_reent_set_bases_on_base.<locals>.BNrK  r   r@   r?   r  r/    rM  r@   r  r   N)r  rL   )r:   r  r  r{  s   `  @r?   test_reent_set_bases_on_basez$MroTest.test_reent_set_bases_on_base  s    	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 		 	 	 	 	 	 	 		rr@   c                       G  fddt                     } G d d|          } G d d|          } G d d	|          }d
S )zU
        Similar to test_reent_set_bases_on_base, but may crash differently.
        c                       e Zd Z fdZdS )6MroTest.test_reent_set_bases_on_direct_base.<locals>.Mc                     | j         d         }|t          ur%                    d          r|xj         dz  c_         t                              |           S )Nr   r   r   )rL   r^  r  rI   r  )r   r  r:   s     r?   r  z:MroTest.test_reent_set_bases_on_direct_base.<locals>.M.mro   sN    }Q'v%%q)) -",xx}}$r@   Nr  r   s   r?   r  r3    .        % % % % % % %r@   r  c                       e Zd ZdS )6MroTest.test_reent_set_bases_on_direct_base.<locals>.ANrK  r   r@   r?   r{  r7  (  rM  r@   r{  r@  c                       e Zd ZdS )6MroTest.test_reent_set_bases_on_direct_base.<locals>.BNrK  r   r@   r?   r  r9  *  rM  r@   r  c                       e Zd ZdS )6MroTest.test_reent_set_bases_on_direct_base.<locals>.CNrK  r   r@   r?   r   r;  ,  rM  r@   r   Nr%  )r:   r  r{  r  r   s   `    r?   #test_reent_set_bases_on_direct_basez+MroTest.test_reent_set_bases_on_direct_base  s    	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	r@   c                 $     G  fddt                     } G d d|          } G d d|           G d d	|          d
 _                             t                    5  xj        dz  c_        ddd           dS # 1 swxY w Y   dS )aM  
        type_set_bases must check for an inheritance cycle not only through
        MRO of the type, which may be not yet updated in case of reentrance,
        but also through tp_base chain, which is assigned before diving into
        inner calls to mro().

        Otherwise, the following snippet can loop forever:
            do {
                // ...
                type = type->tp_base;
            } while (type != NULL);

        Functions that rely on tp_base (like solid_base and PyType_IsSubtype)
        would not be happy in that case, causing a stack overflow.
        c                       e Zd Z fdZdS )5MroTest.test_reent_set_bases_tp_base_cycle.<locals>.Mc                     j         r&| j        dk    rf_        | j        dk    rf_        t                              |           S )NB1B2r  r   rL   rI   r  )r   rA  rB  r:   s    r?   r  z9MroTest.test_reent_set_bases_tp_base_cycle.<locals>.M.mro@  sI    : -|t++(*u|t++(*uxx}}$r@   Nr  )rA  rB  r:   s   r?   r  r?  ?  s8        % % % % % % % % %r@   r  c                       e Zd ZdS )5MroTest.test_reent_set_bases_tp_base_cycle.<locals>.ANrK  r   r@   r?   r{  rE  H  rM  r@   r{  r@  c                       e Zd ZdS )6MroTest.test_reent_set_bases_tp_base_cycle.<locals>.B1NrK  r   r@   r?   rA  rG  J  rM  r@   rA  c                       e Zd ZdS )6MroTest.test_reent_set_bases_tp_base_cycle.<locals>.B2NrK  r   r@   r?   rB  rI  L  rM  r@   rB  Tr   N)r  r  r  r   rL   )r:   r  r{  rA  rB  s   `  @@r?   "test_reent_set_bases_tp_base_cyclez*MroTest.test_reent_set_bases_tp_base_cycle/  sW    	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 
y)) 	 	LLBLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   'BB	B	c                 >     G  fddt                     } G d d|          } G d d|          } G d d	|           G d
 d|          d _        |f_        f|_                             j        f                                                                g                                |                                g                                 |j        f                                                                |g           dS )a  
        type_set_bases must check for reentrancy upon finishing its job
        by updating tp_subclasses of old/new bases of the type.
        Otherwise, an implicit inheritance cycle through tp_subclasses
        can break functions that recurse on elements of that field
        (like recurse_down_subclasses and mro_hierarchy) eventually
        leading to a stack overflow.
        c                       e Zd Z fdZdS );MroTest.test_tp_subclasses_cycle_in_update_slots.<locals>.Mc                 z    j         r| j        dk    rd_         f_        t                              |           S Nr   FrC  )r   rB  r   r:   s    r?   r  z?MroTest.test_tp_subclasses_cycle_in_update_slots.<locals>.M.mro]  s9    : (#,#"5"5!&DJ#%%AKxx}}$r@   Nr  )rB  r   r:   s   r?   r  rM  \  s8        % % % % % % % % %r@   r  c                       e Zd ZdS );MroTest.test_tp_subclasses_cycle_in_update_slots.<locals>.ANrK  r   r@   r?   r{  rQ  c  rM  r@   r{  r@  c                       e Zd ZdS )<MroTest.test_tp_subclasses_cycle_in_update_slots.<locals>.B1NrK  r   r@   r?   rA  rS  e  rM  r@   rA  c                       e Zd ZdS )<MroTest.test_tp_subclasses_cycle_in_update_slots.<locals>.B2NrK  r   r@   r?   rB  rU  g  rM  r@   rB  c                       e Zd ZdS );MroTest.test_tp_subclasses_cycle_in_update_slots.<locals>.CNrK  r   r@   r?   r   rW  i  rM  r@   r   TN)r  r  rL   rG   rA  )r:   r  r{  rA  rB  r   s   `   @@r?   (test_tp_subclasses_cycle_in_update_slotsz0MroTest.test_tp_subclasses_cycle_in_update_slotsS  s   	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 
etre,,,**,,qc222**,,b111t,,,))++bT22222r@   c                      G d dt                      G  fddt                    } G d d|          } G d d	|          } G d
 d|           G d d|          d _                                       5  |f_        ddd           n# 1 swxY w Y   f|_                             j        f                                j        t          t          	                                                   dS )z
        The same as test_tp_subclasses_cycle_in_update_slots, but tests
        a code path executed on error (goto bail).
        c                       e Zd ZdS )=MroTest.test_tp_subclasses_cycle_error_return_path.<locals>.ENrK  r   r@   r?   r  r[  |  rM  r@   r  c                        e Zd Z fdZdS )=MroTest.test_tp_subclasses_cycle_error_return_path.<locals>.Mc                     j         r)| j        dk    rj        fk    rd_         n
f_        t                              |           S rO  rC  )r   rB  r   r  r:   s    r?   r  zAMroTest.test_tp_subclasses_cycle_error_return_path.<locals>.M.mro  sO    :  #,#"5"5{re++%*

')exx}}$r@   Nr  )rB  r   r  r:   s   r?   r  r]  ~  s=        % % % % % % % % % %r@   r  c                       e Zd ZdS )=MroTest.test_tp_subclasses_cycle_error_return_path.<locals>.ANrK  r   r@   r?   r{  r`    rM  r@   r{  r@  c                       e Zd ZdS )>MroTest.test_tp_subclasses_cycle_error_return_path.<locals>.B1NrK  r   r@   r?   rA  rb    rM  r@   rA  c                       e Zd ZdS )>MroTest.test_tp_subclasses_cycle_error_return_path.<locals>.B2NrK  r   r@   r?   rB  rd    rM  r@   rB  c                       e Zd ZdS )=MroTest.test_tp_subclasses_cycle_error_return_path.<locals>.CNrK  r   r@   r?   r   rf    rM  r@   r   TN)
r0  r  r  r  rL   rG   r`  r  rI   r  )r:   r  r{  rA  rB  r   r  s   `   @@@r?   *test_tp_subclasses_cycle_error_return_pathz2MroTest.test_tp_subclasses_cycle_error_return_pathw  s   
	 	 	 	 		 	 	 		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 
q!! 	  	 %AK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 tre,,,E$((1++$6$677777s   	BB!Bc                 P      G  fddt                     } G d d|          }dS )z
        Extending an uninitialized type with type->tp_mro == NULL must
        throw a reasonable TypeError exception, instead of failing
        with PyErr_BadInternalCall.
        c                       e Zd Z fdZdS ))MroTest.test_incomplete_extend.<locals>.Mc                     | j         K| j        dk    r@                    t                    5   G d d|           }d d d            n# 1 swxY w Y   t                              |           S )Nr  c                       e Zd ZdS )8MroTest.test_incomplete_extend.<locals>.M.mro.<locals>.XNrK  r   r@   r?   r  rm    s         Dr@   )r`  r   r  r   rI   r  )r   r  r:   s     r?   r  z-MroTest.test_incomplete_extend.<locals>.M.mro  s    ;&3<3+>+>**955 ! !! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! xx}}$s   A		AANr  r   s   r?   r  rj    r5  r@   r  c                       e Zd ZdS ))MroTest.test_incomplete_extend.<locals>.ANrK  r   r@   r?   r{  ro    rM  r@   r{  r@  Nr%  r&  s   `  r?   test_incomplete_extendzMroTest.test_incomplete_extend  sp    	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 	 	 	r@   c                 P      G  fddt                     } G d d|          }dS )z
        Attribute lookup on a super object must be aware that
        its target type can be uninitialized (type->tp_mro == NULL).
        c                   "     e Zd Z fdZ xZS )(MroTest.test_incomplete_super.<locals>.Mc                     | j         G                    t                    5  t          | |           j         d d d            n# 1 swxY w Y   t
                              |           S r   )r`  r  r  rs  xxxrI   r  )r   r  r:   s    r?   r  z,MroTest.test_incomplete_super.<locals>.M.mro  s    ;&**>:: , ,c3++, , , , , , , , , , , , , , , xx}}$s   AA	A	)r   r   r   r  rv  rx  s   @r?   r  rs    s>        % % % % % % % % % %r@   r  c                       e Zd ZdS )(MroTest.test_incomplete_super.<locals>.ANrK  r   r@   r?   r{  rw    rM  r@   r{  r@  Nr%  r&  s   `  r?   test_incomplete_superzMroTest.test_incomplete_super  sp    
	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	! 	 	 	 	 	 	r@   c                      G d d           G fddt                     |                     t                    5   G d d          }ddd           dS # 1 swxY w Y   dS )	z
        gh-92112: A custom mro() returning a result conflicting with
        __bases__ and deleting itself caused a double free.
        c                       e Zd ZdS )/MroTest.test_disappearing_custom_mro.<locals>.BNrK  r   r@   r?   r  r{    rM  r@   r  c                       e Zd Z fdZdS )/MroTest.test_disappearing_custom_mro.<locals>.Mc                     ` fS r   )r  )r   r  r  s    r?   r  z3MroTest.test_disappearing_custom_mro.<locals>.M.mro  s    Etr@   Nr  )r  r  s   r?   r  r}    s3               r@   r  c                       e Zd ZdS )/MroTest.test_disappearing_custom_mro.<locals>.ANrK  r   r@   r?   r{  r    r  r@   r{  r@  N)r  r  r   )r:   r{  r  r  s     @@r?   test_disappearing_custom_mroz$MroTest.test_disappearing_custom_mro  s   
	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	
 y)) 	 	    a    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    AA!$A!N)r   r   r   r  r
  r  r'  r0  r<  rJ  rX  rg  rp  rx  r  r   r@   r?   r  r    s                 &  (" " "H"3 "3 "3H 8  8  8D  $       r@   r  __main__)"r\  rS
  rZ  r
  r*  r
  r3  r5  r   r>  r2   rn  rm  r   r   
contextlibr   r  r   r  r  r3   r   r   r
  r4
  r=
  rP
  r  rI   r  r  r   mainr   r@   r?   <module>r     s     				         



           & & & & & &         IIIsD sD sD sD sDH% sD sD sDlFH FH FH FH FH 1 FH FH FHRP98 98 98 98 98X& 98 98 98x    H-   21 1 1 1 1! 1 1 16w) w) w) w) w)H% w) w) w)tH H H H HX& H H H4	" 	" 	" 	" 	"d 	" 	" 	"b b b b bh b b bJ zHMOOOOO s   A AA