+
    Dfj                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^RIHt ]P                  t ! R R4      s ! R	 R
\        4      t ! R R4      t ! R R]]4      s ! R R4      tRs ! R R]
4      t ! R R]
4      tR# )    )annotationsN)NoReturnrebuild)TestCase)crash_test_dummyc                      ] tR t^tRtR# )Foo N__name__
__module____qualname____firstlineno____static_attributes__r       ;/usr/lib/python3/dist-packages/twisted/test/test_rebuild.pyr
   r
          r   r
   c                      ] tR t^tRtR# )Barr   Nr   r   r   r   r   r      r   r   r   c                      ] tR t^tRtR# )Bazr   Nr   r   r   r   r   r      r   r   r   c                      ] tR t^tRtR# Buzr   Nr   r   r   r   r   r      r   r   r   c                  2    ] tR t^#tRtR R ltR R ltRtR# )HashRaisesRuntimeErrorz
Things that don't hash (raise an Exception) should be ignored by the
rebuilder.

@ivar hashCalled: C{bool} set to True when __hash__ is called.
c                   V ^8  d   QhRR/#    returnNoner   )formats   "r   __annotate__#HashRaisesRuntimeError.__annotate__+   s        $  r   c                	    R V n         R# )FN
hashCalledselfs   &r   __init__HashRaisesRuntimeError.__init__+   s	    r   c                   V ^8  d   QhRR/# )r    r!   r   r   )r#   s   "r   r$   r%   .   s     / /( /r   c                	&    R V n         \        R4      h)Tznot a TypeError!)r(   RuntimeErrorr)   s   &r   __hash__HashRaisesRuntimeError.__hash__.   s    -..r   r'   N)r   r   r   r   __doc__r+   r0   r   r   r   r   r   r   #   s     / /r   r   c                      ] tR t^7tRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltRtR# )RebuildTestsz@
Simple testcase for rebuilding, to at least exercise the code.
c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   RebuildTests.__annotate__<   s     ) )t )r   c                	   V P                  4       V n        \        P                  ! V P                  4       \        P                  P                  V P                  R 4      V n        \        P                  ! V P                  4       \        \        P                  P                  V P                  R4      R4      P                  4        \        P                  P                  ^ V P                  4       R# )twisted_rebuild_fakelibz__init__.pywN)mktemplibPathosmkdirpathjoinfakelibPathopenclosesysinsertr)   s   &r   setUpRebuildTests.setUp<   s    {{}
77<<6OP
!!"RWW\\$**M:C@FFH4<<(r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6   D   s     & &$ &r   c                	X    \         P                  P                  V P                  4       R # N)rC   r>   remover;   r)   s   &r   tearDownRebuildTests.tearDownD   s    %r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6   G   s     % %$ %r   c                	P   ^ RI p^ RIp^ RIHp VP	                  V! \
        R4      \        P                  P                  V P                  R4      4       ^ RI
Hp VP                  4       pVP                  4       pVP                  4       pV P                  VP!                  4       R4       VP#                  R4       VP	                  V! \
        R4      \        P                  P                  V P                  R4      4       \$        P$                  ! V4       VP                  4       pV P                  VP'                  4       R	4       V P                  VP'                  4       R	4       V P                  VP!                  4       R
4       V P                  VP!                  4       R4       R# )r   N)sibpathzmyrebuilder1.pyzmyrebuilder.py)myrebuilderag?zmyrebuilder2.pycdb)shutiltimetwisted.python.utilrO   copyfile__file__r<   r>   r?   r@   r8   rP   ABInheritassertEqualrQ   sleepr   rT   )	r*   rU   rV   rO   rP   rQ   rT   ib2s	   &        r   test_FileRebuildRebuildTests.test_FileRebuildG   s*   /H/0GGLL))+;<	
	
 MMOMMO!$ 	

3H/0GGLL))+;<	
 	$]]_%$$$r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6   h   s     2 2d 2r   c                &   \         P                  ! R4      p\        P                  ! \         RR7       VP                  4        V P	                  VP
                  \         P                  4       V P	                  \        \         P                  4       R# )z!
Rebuilding an unchanged module.
rQ   F)doLogN)r   Xr   dor]   	__class__ffoo)r*   xs   & r   test_RebuildRebuildTests.test_Rebuildh   s^     s#(6	&6&8&89,001r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6   y   s     
 
4 
r   c                	X   \         P                  ! 4       pVP                  \         P                  \         P                  4       VP                  \         P                  4       \        P                  ! \         ^ 4       VP                  \         P                  4      pVP                  4        V P                  VP                  \         P                  4       ^ RI
Hp V P                  \        VP                  \         P                  \         P                  \         P                  4       R# )r   )
componentsN)r   
XComponent
setAdapterIXXAgetComponentr   methodr]   rh   twisted.pythonrp   assertRaises
ValueErrorregisterAdapterrf   )r*   rk   newComponentrp   s   &   r   test_ComponentInteraction&RebuildTests.test_ComponentInteractiony   s    '')	%((*:*=*=>	'**+(!,~~&6&9&9://1A1D1DE 	.&&	
r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6      s     N NT Nr   c                	    \        4       p ! R  R4      s ! R R\        \        4      s \        P
                  ! V4       \        VR4      '       g   Q R4       h\        VR4      '       g   Q R4       hR# )	c                  "    ] tR t^tR R ltRtR# )r
   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   Foo.__annotate__   s      T r   c                    R# z
Dummy method
Nr   r)   s   &r   rj   Foo.foo       r   r   N)r   r   r   r   rj   r   r   r   r   r
   r
           r   r
   c                      ] tR t^t^
tRtR# r   )r   r   r   r   rk   r   r   r   r   r   r      s    Ar   r   rj   z"Missing method on rebuilt instancerk   z+Missing class attribute on rebuilt instanceN)r   r
   r   r   r   updateInstancehasattr)r*   rT   s   & r   test_UpdateInstance RebuildTests.test_UpdateInstance   sb     E	 		#s 	 	q!q%  F"FF q#M MMr   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6      s     + + +r   c                	V    ^ RI Hp ^ RIHp VP                  ! VP
                  4       R# )r   r   )bananaN)rw   r   twisted.spreadr   latestClassBanana)r*   r   r   s   &  r   test_BananaInteraction#RebuildTests.test_BananaInteraction   s    *)FMM*r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6      s     5 5D 5r   c                    \        4       sR R lpV P                  V4       \        P                  ! \        4       V P	                  \        P
                  4       R# )zf
Rebuilding something that has a __hash__ that raises a non-TypeError
shouldn't cause rebuild to die.
c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   5RebuildTests.test_hashException.<locals>.__annotate__   s     	$ 	$$ 	$r   c                 
    R s R # rI   )unhashableObjectr   r   r   _cleanup1RebuildTests.test_hashException.<locals>._cleanup   s    #r   N)r   r   
addCleanupr   
assertTruer(   )r*   r   s   & r   test_hashExceptionRebuildTests.test_hashException   s?     23	$ 	! (334r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r6      s     )P )P )Pr   c                   ^ RI Hp ^ RIHp  ! R RV4      pV! 4       pVP	                  4        V P                  VP                  4       4       VP                  ! \        4      pV P                  \        \        4      \        V4      4       V P                  WTP                  V4      4       V P                  VP                  VP                  VP                  4      4       V P                  VP                  VP                  VP                  4      4       V P                  W4P                  V4      4       R R lpV P                  WdP                  V4      4       R# )z%
L{twisted.python.rebuild.Sensitive}
r   )	Sensitivec                  "    ] tR t^tR R ltRtR# )2RebuildTests.test_Sensitive.<locals>.TestSensitivec                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   ?RebuildTests.test_Sensitive.<locals>.TestSensitive.__annotate__   s      T r   c                    R# r   r   r)   s   &r   test_method>RebuildTests.test_Sensitive.<locals>.TestSensitive.test_method   r   r   r   N)r   r   r   r   r   r   r   r   r   TestSensitiver      r   r   r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   1RebuildTests.test_Sensitive.<locals>.__annotate__   s     	 	D 	r   c                     R# r   r   r   r   r   
myFunction/RebuildTests.test_Sensitive.<locals>.myFunction   r   r   N)rw   r   twisted.python.rebuildr   rebuildUpToDateassertFalseneedRebuildUpdater   	Exceptionr]   reprlatestVersionOfr   )r*   r   r   r   testSensitivenewExceptionr   s   &      r   test_SensitiveRebuildTests.test_Sensitive   s    	+4	I 	 &%%'88:; **95i$|*<='D'D\'RS 	%%))-*C*CD	

 	%%))-*C*CD	

 	(E(Em(TU	 	%B%B:%NOr   )r@   r;   N)r   r   r   r   r2   rE   rK   ra   rl   r|   r   r   r   r   r   r   r   r   r4   r4   7   s=    )&%B2"
,N$+5 )P )Pr   r4   c                  J    ] tR t^tRtR R ltR R ltR R ltR R	 ltR
t	R# )NewStyleTestsz:
Tests for rebuilding new-style classes of various sorts.
c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   NewStyleTests.__annotate__   s     ) )t )r   c                	v    \         P                  ! R 4      V n        V P                  \        P                  R &   R# whippingN)types
ModuleTypemrC   modulesr)   s   &r   rE   NewStyleTests.setUp   s&    !!*-"&&&Jr   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r      s      $ r   c                	,    \         P                  R  V =R# r   )rC   r   r   r)   s   &r   rK   NewStyleTests.tearDown   s    KK
#Fr   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r      s     7 7D 7r   c                   Rp\        WP                  P                  4       V P                  P                  4       p^Vn        \        WP                  P                  4       \
        P                  ! V4       V P                  VP                  ^4       V P                  \        V4      V P                  P                  4       R# )z6
Try to rebuild a new style class with slots defined.
z*class SlottedClass:
    __slots__ = ['a']
N)
execr   __dict__SlottedClassrQ   r   r   r]   assertIstyper*   classDefinitioninsts   &  r   
test_slotsNewStyleTests.test_slots   s     L_ffoo.vv""$_ffoo.t$#d4j$&&"5"56r   c                   V ^8  d   QhRR/# r   r   )r#   s   "r   r$   r      s     7 74 7r   c                   Rp\        WP                  P                  4       V P                  P                  4       pVP	                  ^4       \        WP                  P                  4       \
        P                  ! V4       V P                  V^ ,          ^4       V P                  \        V4      V P                  P                  4       R# )z&
Try to rebuild a base type subclass.
z#class ListSubclass(list):
    pass
N)
r   r   r   ListSubclassappendr   r   r]   r   r   r   s   &  r   test_typeSubclassNewStyleTests.test_typeSubclass   s     E_ffoo.vv""$A_ffoo.t$a!$d4j$&&"5"56r   )r   N)
r   r   r   r   r2   rE   rK   r   r   r   r   r   r   r   r      s     )77 7r   r   )
__future__r   r<   rC   r   typingr   rw   r   twisted.trial.unittestr    r   rj   ri   r
   r   r   r   r   r   r4   r   r   r   r   <module>r      s    # 	 
   " + 	 		# 		 		#s 	/ /"  iP8 iPX'7H '7r   