
    dafO                         d Z ddlZg dZg Zd ZdZdZi Z ee e	       e       eD ]  Z
 eee
z   e	       e         edefe      Z[[[
[ G d d	ej                        Zed
k(  r ej"                          yy)z@Test the functionality of Python classes implementing operators.    N)$addraddsubrsubmulrmulmatmulrmatmultruedivrtruedivfloordiv	rfloordivmodrmoddivmodrdivmodpowrpowrshiftrrshiftlshiftrlshiftandrandorrorxorrxorcontainsgetitemsetitemdelitemnegposabsinitc                       fd}|S )Nc                  V    t         j                  j                  | f        | i |S N)callLstappend__name__)argskwargsfs     */root/Python-3.12.4/Lib/test/test_class.pytrackztrackCall.<locals>.trackC   s(    

D)*$!&!!     )r/   r1   s   ` r0   	trackCallr4   B   s    " Lr2   a  
@trackCall
def __hash__(self, *args):
    return hash(id(self))

@trackCall
def __str__(self, *args):
    return "AllTests"

@trackCall
def __repr__(self, *args):
    return "AllTests"

@trackCall
def __int__(self, *args):
    return 1

@trackCall
def __index__(self, *args):
    return 1

@trackCall
def __float__(self, *args):
    return 1.0

@trackCall
def __eq__(self, *args):
    return True

@trackCall
def __ne__(self, *args):
    return False

@trackCall
def __lt__(self, *args):
    return False

@trackCall
def __le__(self, *args):
    return True

@trackCall
def __gt__(self, *args):
    return False

@trackCall
def __ge__(self, *args):
    return True
z-@trackCall
def __%s__(self, *args):
    pass
AllTestsc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)
ClassTestsc                     g t         d d  y r)   )r*   selfs    r0   setUpzClassTests.setUp   s    
r2   c                 P    t         d d  }||k7  r| j                  d|d|       y y )NzExpected call list:
  z#
does not match actual call list
  )r*   fail)r:   expected_callsactualCallLists      r0   assertCallStackzClassTests.assertCallStack   s.     ^+II%~7 8 ,r2   c                 B    t               }| j                  d|ffg       y )N__init__)r5   r@   )r:   foos     r0   testInitzClassTests.testInit   s!    jzC6234r2   c                    t               }g t        d d  |dz    | j                  d|dffg       g t        d d  d|z    | j                  d|dffg       g t        d d  |dz
   | j                  d|dffg       g t        d d  d|z
   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d	|dffg       g t        d d  |dz   | j                  d
|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  t        |d       | j                  d|dffg       g t        d d  t        d|       | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  |dz	   | j                  d|dffg       g t        d d  d|z	   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       g t        d d  |dz   | j                  d|dffg       g t        d d  d|z   | j                  d|dffg       y )N   __add____radd____sub____rsub____mul____rmul__
__matmul____rmatmul____truediv____rtruediv____floordiv____rfloordiv____mod____rmod__
__divmod____rdivmod____pow____rpow__
__rshift____rrshift__
__lshift____rlshift____and____rand____or____ror____xor____rxor__)r5   r*   r@   r   r:   testmes     r0   testBinaryOpszClassTests.testBinaryOps   s    

y61+678
	F
zFA;789

y61+678
	F
zFA;789

y61+678
	F
zFA;789

|fa[9:;
	F
}vqk:;<

}vqk:;< 
	F
~{;<=
!~{;<= 
	V<=>

y61+678
	F
zFA;789 
va|fa[9:;
q&}vqk:;<
!y61+678
	VzFA;789
!|fa[9:;
	V}vqk:;<
!|fa[9:;
	V}vqk:;<

y61+678
	F
zFA;789

x&!567
	F
y61+678

y61+678
	F
zFA;789r2   c                    t               } G d d      }	 d |       v  | j                  d       g t        d d  d|v  | j	                  d|dffg       g t        d d  |d    | j	                  d|dffg       g t        d d  d|d<   | j	                  d|ddffg       g t        d d  |d= | j	                  d|dffg       g t        d d  |d d	  | j	                  d|t        d d	      ffg       g t        d d  d
|d d	 | j	                  d|t        d d	      d
ffg       g t        d d  |d d	= | j	                  d|t        d d	      ffg       g t        d d  |ddd    | j	                  d|t        ddd      ffg       g t        d d  d|ddd<   | j	                  d|t        ddd      dffg       g t        d d  |ddd= | j	                  d|t        ddd      ffg       g t        d d  |d d	dd dddf    | j	                  d|t        d d	d       t        t        d dd       ddfffg       g t        d d  d|d d	dd dddf<   | j	                  d|t        d d	d       t        t        d dd       ddfdffg       g t        d d  |d d	dd dddf= | j	                  d|t        d d	d       t        t        d dd       ddfffg       y # t        $ r Y w xY w)Nc                       e Zd Zy),ClassTests.testListAndDictOps.<locals>.EmptyNr,   
__module____qualname__r3   r2   r0   Emptyrh         r2   rl   rF   z$failed, should have raised TypeError__contains____getitem____setitem____delitem__*   z
The Answer   i   
   zA lot.   d   Strange)r5   r=   	TypeErrorr*   r@   sliceEllipsis)r:   rd   rl   s      r0   testListAndDictOpszClassTests.testListAndDictOps  s    		LII<= 
	V~{;<=
q	}vqk:;<
q	}vq!n=>?
1I}vqk:;<
s}vuT2.GHIJ
"s}vuT2/;/= > ? 	@ 
3B3K}vuT2.GHIJ
qby}vuQb7I.JKLM
#qby}vuQb7IDK/M N O 	P
1T"9}vuQb7I.JKLM
ssC"r3&'}vdB8M8@8=dB8M8:C8A /B C D 	E 
*3ssC"r3&'}vdB8M8@8=dB8M8:C8A CL/M N O 	P 
3B3TbT2s*+}vdB8M8@8=dB8M8:C8A /B C D 	Eu  		s   K 	KKc                 6   t               }g t        d d  |  | j                  d|ffg       g t        d d  | | j                  d|ffg       g t        d d  t        |       | j                  d|ffg       g t        d d  t	        |       | j                  d|ffg       g t        d d  t        |       | j                  d|ffg       g t        d d  t        |       | j                  d|ffg       g t        d d  t        |       | j                  d|ffg       y )N__neg____pos____abs____int__	__float__	__index__)r5   r*   r@   r%   intfloatocthexrc   s     r0   testUnaryOpszClassTests.testUnaryOpsX  s   
	y6)456
	y6)456
Fy6)456
Fy6)456
f{VI678
F{VI678
F{VI678r2   c                 N   t               }g t        d d  t        |       | j                  d|ffg       g t        d d  t	        |       | j                  d|ffg       g t        d d  t        |       | j                  d|ffg       g t        d d  |dk(   | j                  d|dffg       g t        d d  |dk   | j                  d|dffg       g t        d d  |dkD   | j                  d|dffg       g t        d d  |dk7   | j                  d|dffg       g t        d d  d|k(   | j                  dd|ffg       g t        d d  d|k   | j                  dd|ffg       g t        d d  d|kD   | j                  dd|ffg       g t        d d  d|k7   | j                  dd|ffg       y )	N__hash____repr____str__rF   __eq____lt____gt____ne__)r5   r*   hashr@   reprstrrc   s     r0   testMisczClassTests.testMiscr  s   
VzF9567
VzF9567
Fy6)456
!x&!567

x&!567

x&!567
!x&!567
	Vx!V567
	F
x!V567
	F
x!V567
	Vx!V567r2   c                     G d dt               } |       }g t        d d  |j                   | j                  d|dffg       g t        d d  d|_        | j                  d|ddffg       g t        d d  |`| j                  d|d	ffg       y )
Nc                   <    e Zd Zed        Zed        Zed        Zy)/ClassTests.testGetSetAndDel.<locals>.ExtraTestsc                      y)NSomeValr3   r:   r-   s     r0   __getattr__z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__getattr__  s     r2   c                      y r)   r3   r   s     r0   __setattr__z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__setattr__      r2   c                      y r)   r3   r   s     r0   __delattr__z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__delattr__  r   r2   N)r,   rj   rk   r4   r   r   r   r3   r2   r0   
ExtraTestsr     s<    ! !    r2   r   r   spamzspam, spam, spam and hamr   eggsr   cardinal)r5   r*   r   r@   r   r   )r:   r   rd   s      r0   testGetSetAndDelzClassTests.testGetSetAndDel  s    	 	 
}vv.>?@A
0}vv/I/K L M 	N 
O}vz.BCDEr2   c                 "   dd l }ddlm} |j                  d      } G d d      } |       }| j	                  |j                  |d      d       | j	                  |j                  |d      d       | j                  |j                                y )	Nr   )import_helper	_testcapic                       e Zd Zd Zy)'ClassTests.testHasAttrString.<locals>.Ac                     d| _         y NrF   )attrr9   s    r0   rB   z0ClassTests.testHasAttrString.<locals>.A.__init__  s	    	r2   N)r,   rj   rk   rB   r3   r2   r0   Ar     s    r2   r   s   attrrF   s   noattr)systest.supportr   import_moduleassertEqualobject_hasattrstringassertIsNone	exception)r:   r   r   r   r   as         r0   testHasAttrStringzClassTests.testHasAttrString  sy    .!//<		 	 C777CQG779EqI#--/*r2   c                     g  G fdd      } |       }~dd l }|j                          | j                  dg       y )Nc                       e Zd Z fdZy)#ClassTests.testDel.<locals>.DelTestc                 (    j                  d       y )Ncrab people, crab people)r+   r:   xs    r0   __del__z+ClassTests.testDel.<locals>.DelTest.__del__  s    34r2   N)r,   rj   rk   r   r   s   r0   DelTestr     s    5r2   r   r   r   )gccollectr   )r:   r   rd   r   r   s       @r0   testDelzClassTests.testDel  s>    	5 	5 


45q9r2   c           
           G d d      }d }t         t        t        t        t        t
        t        t        t        |f
D ]  }| j                  t        | |                y )Nc                   .    e Zd Zd ZeZeZeZeZeZeZ	eZ
y)4ClassTests.testBadTypeReturned.<locals>.BadTypeClassc                      y r)   r3   r9   s    r0   r   z<ClassTests.testBadTypeReturned.<locals>.BadTypeClass.__int__      r2   N)r,   rj   rk   r   r   __complex__r   r   	__bytes____bool__r   r3   r2   r0   BadTypeClassr     s*    I!KGHIHIr2   r   c                     g |    S r)   r3   r   s    r0   indexz-ClassTests.testBadTypeReturned.<locals>.index  s    a5Lr2   )r   complexr   r   bytesbinr   r   boolassertRaisesrx   )r:   r   r   r/   s       r0   testBadTypeReturnedzClassTests.testBadTypeReturned  sK    		  		 	 #tUCc4O 	<AiLN;	<r2   c                      G d d      }t         |               G d d      }| j                  t        t          |              y )Nc                       e Zd Zy)$ClassTests.testHashStuff.<locals>.C0Nri   r3   r2   r0   C0r         r2   r   c                       e Zd Zd Zy)$ClassTests.testHashStuff.<locals>.C2c                      yr   r3   r:   others     r0   r   z+ClassTests.testHashStuff.<locals>.C2.__eq__  s    Ar2   N)r,   rj   rk   r   r3   r2   r0   C2r     s    -r2   r   )r   r   rx   )r:   r   r   s      r0   testHashStuffzClassTests.testHashStuff  s7    	 	 	RT
	. 	. 	)T240r2   c                      G d d      } |       |_          |       }	  |        | j                  d       y # t        $ r Y y w xY w)Nc                       e Zd Zy)%ClassTests.testSFBug532646.<locals>.ANri   r3   r2   r0   r   r     r   r2   r   zFailed to raise RecursionError)__call__r=   RecursionError)r:   r   r   s      r0   testSFBug532646zClassTests.testSFBug532646  sI    	 	S
C	8C II67  		s   8 	AAc                 V   d  G fdd      }	  |       j                     G fdd      } |        |       k(    G fdd	      }	  |        | j                  d
       y # t        $ r,}t        |      dk7  r| j                  d|z         Y d }~qd }~ww xY w# t        $ r Y y w xY w)Nc                     t        d      )Nbooh)AttributeErrorr9   s    r0   r   zBClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.booh  s     ((r2   c                        e Zd Z eW        Zy)?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.AN)r,   rj   rk   propertyr   r   s   r0   r   r     s    Ar2   r   r   z(attribute error for A().a got masked: %sc                        e Zd Z eW        Zy)?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.EN)r,   rj   rk   r   r   r   s   r0   Er     s    d^Fr2   r   c                        e Zd Z eW        Zy)?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.IN)r,   rj   rk   r   rB   r   s   r0   Ir     s    ~Hr2   r   z)attribute error for I.__init__ got masked)r   r   r   r=   )r:   r   r   r   r   r   s        @r0   )testForExceptionsRaisedInInstanceGetattr2z4ClassTests.testForExceptionsRaisedInInstanceGetattr2
  s    	)	 		JCEE
	$ 	$	qs
	& 	&	C C IIAB#  	J1v		DqHI	J  		s)   A$ B $	B-"BB	B('B(c                 |   | j                  t              5  ||k   d d d        | j                  t              5  ||kD   d d d        | j                  t              5  ||k   d d d        | j                  t              5  ||k\   d d d        y # 1 sw Y   sxY w# 1 sw Y   \xY w# 1 sw Y   ExY w# 1 sw Y   y xY wr)   )r   rx   )r:   r   bs      r0   assertNotOrderablezClassTests.assertNotOrderable'  s    y) 	E	y) 	E	y) 	F	y) 	F	 		 		 		 		 	s.   BBB&?B2BB#&B/2B;c                     G d d      } G d d|      } |d      } |d      }| j                  |j                  |j                  k(         | j                  |j                  |j                  k7         | j                  |j                  |j                  k(         | j                  |j                  |j                  k7         | j                  |j                  |j                  k(         | j                  |j                  |j                  k7         | j	                  |j                  |j                         | j                  t        |j                        t        |j                               | j                  |j                  |j                  k(         | j                  |j                  |j                  k7         | j                  |j                  |j                  k(         | j                  |j                  |j                  k7         | j                  |j                  |j                  k(         | j                  |j                  |j                  k7         | j	                  |j                  |j                         | j                  t        |j                        t        |j                                |t        |j                        dz        }t        |j                         y )Nc                   *    e Zd Zd Zd Zd Zd Zd Zy)1ClassTests.testHashComparisonOfMethods.<locals>.Ac                     || _         y r)   r   r   s     r0   rB   z:ClassTests.testHashComparisonOfMethods.<locals>.A.__init__4  s	    r2   c                      y r)   r3   r9   s    r0   r/   z3ClassTests.testHashComparisonOfMethods.<locals>.A.f6      r2   c                      y r)   r3   r9   s    r0   gz3ClassTests.testHashComparisonOfMethods.<locals>.A.g8  r   r2   c                      y)NTr3   r   s     r0   r   z8ClassTests.testHashComparisonOfMethods.<locals>.A.__eq__:  r   r2   c                     t         r)   )rx   r9   s    r0   r   z:ClassTests.testHashComparisonOfMethods.<locals>.A.__hash__<  s    r2   N)r,   rj   rk   rB   r/   r   r   r   r3   r2   r0   r   r   3  s     r2   r   c                       e Zd Zy)1ClassTests.testHashComparisonOfMethods.<locals>.BNri   r3   r2   r0   Br  >  r   r2   r  rF   )
assertTruer/   assertFalser   r   r   r   )r:   r   r  a1a2r   s         r0   testHashComparisonOfMethodsz&ClassTests.testHashComparisonOfMethods1  s   
	  
	 	 	 qTqT%&&%&%bdd+bddT"$$Z0%rtt$$qss
#qss
#$QSS)accDI. d133inQSS	r2   c                     G d d      }d }t        dd      }| j                  |d       t        j                  |||       | j	                   |       dz   d       t        dd      }| j                  |d       | j                  ||       t        j                  ||       | j                  t              5   |       dz    d d d        y # 1 sw Y   y xY w)	Nc                       e Zd Zy)2ClassTests.testSetattrWrapperNameIntern.<locals>.ANri   r3   r2   r0   r   r  [  r   r2   r   c                      y)Nsummar3   r   s     r0   r   z4ClassTests.testSetattrWrapperNameIntern.<locals>.add^  s    r2   s   __add__asciirG   rF   r  )r   assertIsNottyper   r   r   r   rx   )r:   r   r   namename2s        r0   testSetattrWrapperNameInternz'ClassTests.testSetattrWrapperNameInternY  s    	 		 :w'y)D#&q'*J(	*%E"y) 	C!G	 	 	s   8CCc                      G d d      }| j                  t              5  t        j                  |dd        d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy).ClassTests.testSetattrNonStringName.<locals>.ANri   r3   r2   r0   r   r  n  r   r2   r      x)r   rx   r  r   )r:   r   s     r0   testSetattrNonStringNamez#ClassTests.testSetattrNonStringNamem  sC    	 	 y) 	,Qd+	, 	, 	,s   AA
c                      G d d      }d}| j                  t        |      5  |j                   d d d        | j                  t        |      5  |`d d d        y # 1 sw Y   +xY w# 1 sw Y   y xY w)Nc                       e Zd Zy):ClassTests.testTypeAttributeAccessErrorMessages.<locals>.ANri   r3   r2   r0   r   r  u  r   r2   r   z$type object 'A' has no attribute 'x')assertRaisesRegexr   r   )r:   r   	error_msgs      r0   $testTypeAttributeAccessErrorMessagesz/ClassTests.testTypeAttributeAccessErrorMessagest  sn    	 	 ;	##NI> 	CC	##NI> 		 		 		 	s   AA&A#&A/c                     G d d      } G d d      }d}| j                  t        |      5   |       j                   d d d        | j                  t        |      5   |       `d d d        d}| j                  t        |      5   |       j                   d d d        | j                  t        |      5   |       `d d d        | j                  t        |      5  d |       _        d d d        d}| j                  t        |      5   |       `d d d        | j                  t        |      5  d |       _        d d d        d	}| j                  t        |      5   |       j                   d d d        | j                  t        |      5   |       `d d d        y # 1 sw Y   _xY w# 1 sw Y   FxY w# 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nc                       e Zd Zy)<ClassTests.testObjectAttributeAccessErrorMessages.<locals>.ANri   r3   r2   r0   r   r$    r   r2   r   c                       e Zd ZdZdZy)<ClassTests.testObjectAttributeAccessErrorMessages.<locals>.Br   )zN)r,   rj   rk   y	__slots__r3   r2   r0   r  r&    s    AIr2   r  z'A' object has no attribute 'x'z'B' object has no attribute 'x'r   z%'B' object attribute 'y' is read-onlyr'  )r  r   r   r(  r'  )r:   r   r  r   s       r0   &testObjectAttributeAccessErrorMessagesz1ClassTests.testObjectAttributeAccessErrorMessages~  s   	 		 	 6	##NI> 	CEE	##NI> 		 6	##NI> 	CEE	##NI> 		##NI> 	ACE	 <	##NI> 		##NI> 	ACE	 	##NI> 	CEE	##NI> 		 	-	 		 		 		 		 		 		 		 		 	sk   FF)F65GGG.G(G4H F&)F36G GGG%(G14G= H	c                 :    G d d      }d}| j                  t        d      5   |d       d d d        | j                  t        d      5  |j                  |d       d d d        | j                  t        |      5   |       j                  d       d d d        | j                  t        d      5  t        j                  |d       d d d        | j                  t        |      5  t        j                   |       d       d d d         G d d      }d}| j                  t        |      5   |d       d d d        | j                  t        |      5  |j                  |d       d d d        | j                  t        |      5  t        j                  |d       d d d         G d	 d
      }d}| j                  t        |      5   |       j                  d       d d d        | j                  t        |      5  t        j                   |       d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   -xY w# 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zy)2ClassTests.testConstructorErrorMessages.<locals>.CNri   r3   r2   r0   Cr-    r   r2   r.  zHC.__init__\(\) takes exactly one argument \(the instance to initialize\)zC\(\) takes no argumentsrr   c                   (     e Zd Z fdZ fdZ xZS )2ClassTests.testConstructorErrorMessages.<locals>.Dc                 ,    t        |   | g|i | y r)   )super__new__)clsr-   r.   	__class__s      r0   r3  z:ClassTests.testConstructorErrorMessages.<locals>.D.__new__  s    5d5f5r2   c                 $    t        |   |i | y r)   r2  rB   r:   r-   r.   r5  s      r0   rB   z;ClassTests.testConstructorErrorMessages.<locals>.D.__init__       $1&1r2   )r,   rj   rk   r3  rB   __classcell__r5  s   @r0   Dr0    s    62 2r2   r<  zIobject.__new__\(\) takes exactly one argument \(the type to instantiate\)c                        e Zd Z fdZ xZS )2ClassTests.testConstructorErrorMessages.<locals>.Ec                 $    t        |   |i | y r)   r7  r8  s      r0   rB   z;ClassTests.testConstructorErrorMessages.<locals>.E.__init__  r9  r2   )r,   rj   rk   rB   r:  r;  s   @r0   r   r>    s    2 2r2   r   zMobject.__init__\(\) takes exactly one argument \(the instance to initialize\))r  rx   r3  rB   object)r:   r.  r   r<  r   s        r0   testConstructorErrorMessagesz'ClassTests.testConstructorErrorMessages  sC   	 	 `	##I/JK 	bE	 ##I/JK 	IIa	 ##Iy9 	CLL	 ##I/JK 	"NN1b!	" ##Iy9 	%OOAC$	%	2 	2 b	##Iy9 	bE	 ##Iy9 	IIa	 ##Iy9 	"NN1b!	"	2 	2 e	##Iy9 	CLL	 ##Iy9 	%OOAC$	% 	%W	 		 		 		" 	"	% 	%	 		 		" 	"	 		% 	%sw   	H
H+;H80I%I+	II,I9J9JH(+H58IIII),I69JJJc                 Z    G d dt               }d|i} G d dfi |}| j                  |di f        G d dgdi |}| j                  |t        t        d	            i f        G d
 ddgt        dd	      i |ddi}| j                  |t        t        d	            ddif       y )Nc                       e Zd Zd Zd Zy)-ClassTests.testClassWithExtCall.<locals>.Metac                       y r)   r3   )r-   r.   s     r0   rB   z6ClassTests.testClassWithExtCall.<locals>.Meta.__init__  r   r2   c                 
    ||fS r)   r3   )r4  r  basesattrsr.   s        r0   r3  z5ClassTests.testClassWithExtCall.<locals>.Meta.__new__  s    f}$r2   N)r,   rj   rk   rB   r3  r3   r2   r0   MetarD    s    %r2   rI  	metaclassc                       e Zd Zy*ClassTests.testClassWithExtCall.<locals>.ANri   r3   r2   r0   r   rM    rm   r2   r   r3   c                       e Zd ZyrL  ri   r3   r2   r0   r   z*ClassTests.testClassWithExtCall.<locals>.A  rm   r2   )r   rF   rs                     c                       e Zd ZyrL  ri   r3   r2   r0   r   z*ClassTests.testClassWithExtCall.<locals>.A  rm   r2   r   rF   rC   bar)r   r   tuplerange)r:   rI  dr   s       r0   testClassWithExtCallzClassTests.testClassWithExtCall  s    	%3 	% $!RH%22!2U58_b1266E!QK616%6U58_uen=>r2   N)r,   rj   rk   r;   r@   rD   re   r{   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r*  rA  rZ  r3   r2   r0   r7   r7      s{    85u:nGER94-8`F<+
:<$18C:&P(,B5%n?r2   r7   __main__)__doc__unittest	testmethsr*   r4   statictestsmethod_templaterY  execglobalsmethodr  r@  r5   TestCaser7   r,   mainr3   r2   r0   <module>rf     s    B -	v 0h  [')Q  1F6	!79a01
VIq){FO\	?"" \	?~ zHMMO r2   