+
    üÐj¸8  ã                   óÔ  € R t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
HtHtHtHtHtHtHt ^ RIHtHtHt ^ RIt^ RIHt ^ RIHtHtHtHtHtH t H!t! ^ R	I"H#t# ^R
I$H%t% ^RI&H't' ^RI(H)t)H*t* ^RI%H+t+  ! R R]PX                  PZ                  P\                  4      t/]! RR7       ! R R]+4      4       t0 ! R R])4      t1 ! R R4      t2 ! R R4      t3 ! R R4      t4 ! R R4      t5R# )z2
Tests for L{twisted.application.runner._runner}.
N)ÚStringIO)ÚSIGTERM)ÚTracebackType)	ÚAnyÚIterableÚListÚOptionalÚTextIOÚTupleÚTypeÚUnionÚcast)ÚFactoryÚattribÚattrs)ÚMemoryReactor)ÚFileLogObserverÚFilteringLogObserverÚILogObserverÚLogBeginnerÚLogLevelÚLogLevelFilterPredicateÚLogPublisher)ÚFilePath)Ú_runner)Ú
ExitStatus)ÚNonePIDFileÚPIDFile)ÚRunnerc                   ó^  a € ] tR t^"t o RtR&V 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR  ltV 3R! lR" ltR&V 3R# lR$ lltR%tV tR# )'ÚRunnerTestsz
Tests for L{Runner}.
Nc                óF   <€ V ^8„  d   QhRS[ S[,          RS[S[,          /# )é   ÚcontentÚreturn)r   Úbytesr   Ústr)ÚformatÚ__classdict__s   "€ÚM/usr/lib/python3/dist-packages/twisted/application/runner/test/test_runner.pyÚ__annotate__ÚRunnerTests.__annotate__'   s#   ø€ ÷ ñ ¡©¥ð ¹8ÁC½=ñ ó    c                ób   € \        V P                  4       4      pVe   VP                  V4       V# ©N)r   ÚmktempÚ
setContent)Úselfr#   ÚfilePaths   && r)   r2   ÚRunnerTests.filePath'   s+   € Ü˜DŸK™K›MÓ*ˆØÒØ×Ñ Ô(Øˆr,   c                ó   <€ V ^8„  d   QhRR/# ©r"   r$   N© )r'   r(   s   "€r)   r*   r+   -   s   ø€ ÷  Iñ  I�tñ  Ir,   c                óè  € \        4       V n        \        4       V n        V P	                  \
        R V P                  4       V P	                  \
        RV P                  4       RV n        V P                   R2P                  4       V n        \        4       V n
        \        4       V n        \        V P                  V P                  4      V n        \        4       V n        \!        4       V n        \%        V P"                  V P                  P                  V P                  V P                  4      V n        V P	                  \
        RV P                  4       V P	                  \
        RV P&                  4       R# )ÚexitÚkilli9  Ú
ÚstderrÚglobalLogBeginnerN)Ú	DummyExitr8   Ú	DummyKillr9   Úpatchr   ÚpidÚencodeÚpidFileContentr   Ústdoutr;   ÚDummyStandardIOÚstdioÚDummyWarningsModuleÚwarningsr   ÚglobalLogPublisherr   r<   ©r1   s   &r)   ÚsetUpÚRunnerTests.setUp-   sþ   € ô “KˆŒ	Ü“KˆŒ	à�
‰
”7˜F D§I¡IÔ.Ø�
‰
”7˜F D§I¡IÔ.ð ˆŒØ!%§¡ 
¨"˜o×4Ñ4Ó6ˆÔô
 “jˆŒÜ“jˆŒÜ$ T§[¡[°$·+±+Ó>ˆŒ
Ü+Ó-ˆŒä".£.ˆÔÜ!,Ø×#Ñ#Ø�J‰J×ÑØ�J‰JØ�M‰Mó	"
ˆÔð 	�
‰
”7˜H d§k¡kÔ2Ø�
‰
”7Ð/°×1GÑ1GÖHr,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   O   s   ø€ ÷ 
ñ 
 ñ 
r,   c                óŠ   € \        \        4       R7      pVP                  4        V P                  VP                  . RO4       R# )z4
L{Runner.run} calls the expected methods in order.
©ÚreactorN)ÚkillIfRequestedÚstartLoggingÚstartReactorÚreactorExited)ÚDummyRunnerr   ÚrunÚassertEqualÚcalledMethods©r1   Úrunners   & r)   Útest_runInOrderÚRunnerTests.test_runInOrderO   s5   € ô ¤]£_Ô5ˆØ�
‰
Œà×ÑØ× Ñ òö	
r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   `   s   ø€ ÷ (ñ ( Tñ (r,   c                ó<  € \        4       p\        \        4       VR7      pV P                  VP                  4       V P                  VP
                  4       VP                  4        V P                  VP                  4       V P                  VP
                  4       R# )z+
L{Runner.run} uses the provided PID file.
©rO   ÚpidFileN)ÚDummyPIDFiler   r   ÚassertFalseÚenteredÚexitedrU   Ú
assertTrue©r1   r_   rY   s   &  r)   Útest_runUsesPIDFileÚRunnerTests.test_runUsesPIDFile`   sf   € ô “.ˆä¤£¸ÔAˆà×Ñ˜Ÿ™Ô)Ø×Ñ˜Ÿ™Ô(à�
‰
Œà�‰˜Ÿ™Ô(Ø�‰˜Ÿ™Ö'r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   p   s   ø€ ÷ @ñ @¨ñ @r,   c                ó\  € \        V P                  V P                  4      4      pR Vn        \	        \        4       VR7      pVP                  4        V P                  V P                  P                  \        P                  4       V P                  V P                  P                  R4       R# )z’
L{Runner.run} exits with L{ExitStatus.EX_USAGE} and the expected
message if a process is already running that corresponds to the given
PID file.
c                  ó   € R # ©Tr6   r6   r,   r)   Ú<lambda>Ú4RunnerTests.test_runAlreadyRunning.<locals>.<lambda>w   s   € ¡Dr,   r^   zAlready running.N)r   r2   rB   Ú	isRunningr   r   rU   rV   r8   Ústatusr   Ú	EX_CONFIGÚmessagere   s   &  r)   Útest_runAlreadyRunningÚ"RunnerTests.test_runAlreadyRunningp   sw   € ô ˜$Ÿ-™-¨×(;Ñ(;Ó<Ó=ˆÙ(ˆÔä¤£¸ÔAˆØ�
‰
Œà×Ñ˜Ÿ™×)Ñ)¬:×+?Ñ+?Ô@Ø×Ñ˜Ÿ™×*Ñ*Ð,>Ö?r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+      s   ø€ ÷ 	+ñ 	+ tñ 	+r,   c                óä   € \        \        4       R7      pVP                  4        V P                  V P                  P
                  . 4       V P                  V P                  P                  4       R# )zj
L{Runner.killIfRequested} when C{kill} is false doesn't exit and
doesn't indiscriminately murder anyone.
rN   N)	r   r   rP   rV   r9   Úcallsra   r8   rc   rX   s   & r)   Útest_killNotRequestedÚ!RunnerTests.test_killNotRequested   sL   € ô
 ¤£Ô0ˆØ×ÑÔ à×Ñ˜Ÿ™Ÿ™¨"Ô-Ø×Ñ˜Ÿ™×)Ñ)Ö*r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   Š   s   ø€ ÷ Fñ F°$ñ Fr,   c                óP  € \        \        4       RR7      pVP                  4        V P                  V P                  P
                  . 4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                  R4       R# )z¾
L{Runner.killIfRequested} when C{kill} is true but C{pidFile} is
L{nonePIDFile} exits with L{ExitStatus.EX_USAGE} and the expected
message; and also doesn't indiscriminately murder anyone.
T)rO   r9   zNo PID file specified.N)r   r   rP   rV   r9   rv   r8   ro   r   ÚEX_USAGErq   rX   s   & r)   Ú test_killRequestedWithoutPIDFileÚ,RunnerTests.test_killRequestedWithoutPIDFileŠ   sq   € ô ¤£°dÔ;ˆØ×ÑÔ à×Ñ˜Ÿ™Ÿ™¨"Ô-Ø×Ñ˜Ÿ™×)Ñ)¬:×+>Ñ+>Ô?Ø×Ñ˜Ÿ™×*Ñ*Ð,DÖEr,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   —   s   ø€ ÷ 6ñ 6¨tñ 6r,   c                ó¼  € \        V P                  V P                  4      4      p\        \	        4       RVR7      pVP                  4        V P                  V P                  P                  V P                  \        3.4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                   R4       R# )z
L{Runner.killIfRequested} when C{kill} is true and given a C{pidFile}
performs a targeted killing of the appropriate process.
T©rO   r9   r_   N)r   r2   rB   r   r   rP   rV   r9   rv   r@   r   r8   ro   r   ÚEX_OKÚassertIdenticalrq   re   s   &  r)   Útest_killRequestedWithPIDFileÚ)RunnerTests.test_killRequestedWithPIDFile—   s—   € ô
 ˜$Ÿ-™-¨×(;Ñ(;Ó<Ó=ˆÜ¤£°dÀGÔLˆØ×ÑÔ à×Ñ˜Ÿ™Ÿ™¨D¯H©H´gÐ+>Ð*?Ô@Ø×Ñ˜Ÿ™×)Ñ)¬:×+;Ñ+;Ô<Ø×Ñ˜TŸY™Y×.Ñ.°Ö5r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   ¤   s   ø€ ÷ Hñ H°tñ Hr,   c                óR  € \        V P                  R4      4      pR R lpW!n        \        \	        4       RVR7      pVP                  4        V P                  V P                  P                  \        P                  4       V P                  V P                  P                  R4       R# )z}
L{Runner.killIfRequested} when C{kill} is true and given a C{pidFile}
that it can't read exits with L{ExitStatus.EX_IOERR}.
Nc                ó$   € V ^8„  d   QhR\         /# )r"   r$   ©Úint)r'   s   "r)   r*   ÚGRunnerTests.test_killRequestedWithPIDFileCantRead.<locals>.__annotate__«   s   € ÷ 	=ñ 	=”cñ 	=r,   c                  ó6   € \        \        P                  R 4      h)zPermission denied)ÚOSErrorÚerrnoÚEACCESr6   r,   r)   ÚreadÚ?RunnerTests.test_killRequestedWithPIDFileCantRead.<locals>.read«   s   € Üœ%Ÿ,™,Ð(;Ó<Ð<r,   Tr€   zUnable to read PID file.)r   r2   r�   r   r   rP   rV   r8   ro   r   ÚEX_IOERRrq   )r1   r_   r�   rY   s   &   r)   Ú%test_killRequestedWithPIDFileCantReadÚ1RunnerTests.test_killRequestedWithPIDFileCantRead¤   sz   € ô
 ˜$Ÿ-™-¨Ó-Ó.ˆõ	=ð Œä¤£°dÀGÔLˆØ×ÑÔ à×Ñ˜Ÿ™×)Ñ)¬:×+>Ñ+>Ô?Ø×Ñ˜Ÿ™×*Ñ*Ð,FÖGr,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   ¶   s   ø€ ÷ 
Añ 
A°Dñ 
Ar,   c                ó:  € \        V P                  R4      4      p\        \        4       RVR7      pVP	                  4        V P                  V P                  P                  \        P                  4       V P                  V P                  P                  R4       R# )z€
L{Runner.killIfRequested} when C{kill} is true and given a C{pidFile}
containing no value exits with L{ExitStatus.EX_DATAERR}.
r,   Tr€   úInvalid PID file.N©r   r2   r   r   rP   rV   r8   ro   r   Ú
EX_DATAERRrq   re   s   &  r)   Ú"test_killRequestedWithPIDFileEmptyÚ.RunnerTests.test_killRequestedWithPIDFileEmpty¶   sn   € ô
 ˜$Ÿ-™-¨Ó,Ó-ˆÜ¤£°dÀGÔLˆØ×ÑÔ à×Ñ˜Ÿ™×)Ñ)¬:×+@Ñ+@ÔAØ×Ñ˜Ÿ™×*Ñ*Ð,?Ö@r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   Â   s   ø€ ÷ 
Añ 
A°tñ 
Ar,   c                ó:  € \        V P                  R4      4      p\        \        4       RVR7      pVP	                  4        V P                  V P                  P                  \        P                  4       V P                  V P                  P                  R4       R# )z‹
L{Runner.killIfRequested} when C{kill} is true and given a C{pidFile}
containing a non-integer value exits with L{ExitStatus.EX_DATAERR}.
s    ** totally not a number, dude **Tr€   r–   Nr—   re   s   &  r)   Ú%test_killRequestedWithPIDFileNotAnIntÚ1RunnerTests.test_killRequestedWithPIDFileNotAnIntÂ   so   € ô
 ˜$Ÿ-™-Ð(KÓLÓMˆÜ¤£°dÀGÔLˆØ×ÑÔ à×Ñ˜Ÿ™×)Ñ)¬:×+@Ñ+@ÔAØ×Ñ˜Ÿ™×*Ñ*Ð,?Ö@r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   Î   s   ø€ ÷ K8ñ K8 4ñ K8r,   c                ó€  aaa€ \        4       p ! V3R lR4      oV P                  \        RS! 4       4        ! V3R lR\        4      oV P                  \        RS4        ! V3R lR\        4      o\        \        4       \        P                  VSR	7      pVP                  4        V P                  \        SP                  4      ^4       V P                  SP                  ^ ,          \        4       V P                  \        SP                  4      ^4       V P                  SP                  ^ ,          \        4       V P!                  SP                  ^ ,          P"                  \        P                  4       \%        SSP&                  4      pV P                  VS4       V P!                  VP(                  V4       R
# )z»
L{Runner.startLogging} sets up a filtering observer with a log level
predicate set to the given log level that contains a file observer of
the given type which writes to the given file.
c                   óJ   <a € ] tR t^Ùt o . tV 3R lV3R lltV 3R ltRtV tR# )Ú2RunnerTests.test_startLogging.<locals>.LogBeginnerc                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r"   Ú	observersr$   N)r   r   )r'   r(   s   "€r)   r*   Ú?RunnerTests.test_startLogging.<locals>.LogBeginner.__annotate__Ü   s    ø€ ÷ 8ñ 8±¹Õ0Fð 8È4ñ 8r,   c                ó(   <€ \        V4      Sn        R # r.   )Úlistr¤   )r1   r¤   r   s   &&€r)   ÚbeginLoggingToÚARunnerTests.test_startLogging.<locals>.LogBeginner.beginLoggingToÜ   s   ø€ Ü(,¨Y«�Ö%r,   c                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # )r"   r¤   )r   r   )r'   r(   s   "€r)   r*   r¥   Ù   s   ø‡ ‚ Ù™LÕ)Ñ.ò r,   r6   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r¤   r¨   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r(   r   s   @€r)   r   r¢   Ù   s   ù‡ € Ø,.ˆI÷8ó 8÷ ƒ r,   r   r<   c                   ód   <a € ] tR t^ãt o Rt. t]! ]R 4      3V 3R lV3R llltV 3R lt	Rt
V tR# )Ú?RunnerTests.test_startLogging.<locals>.MockFilteringLogObserverNc                ó   € R # r.   r6   )Úevents   &r)   rl   ÚHRunnerTests.test_startLogging.<locals>.MockFilteringLogObserver.<lambda>ë   s   € ÑRVr,   c                ó@   <€ V ^8„  d   QhRS[ RS[S[,          RS[ RR/# )r"   ÚobserverÚ
predicatesÚnegativeObserverr$   N)r   r   r   )r'   r(   s   "€r)   r*   ÚLRunnerTests.test_startLogging.<locals>.MockFilteringLogObserver.__annotate__ç   s9   ø€ ÷ 
ñ 
á&ð
ñ %Ñ%<Õ=ð
ñ #/ð	
ð
 ñ
r,   c                ód   <€ VSn         \        V4      Sn        \        P                  ! WW#4       R # r.   )r¸   r§   r¹   r   Ú__init__)r1   r¸   r¹   rº   ÚMockFilteringLogObservers   &&&&€r)   r½   ÚHRunnerTests.test_startLogging.<locals>.MockFilteringLogObserver.__init__ç   s/   ø€ ð 5=Ð(Ô1Ü6:¸:Ó6FÐ(Ô3Ü$×-Ò-Ø Jör,   c                óR   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[S[,          ;R&   # )r"   r¸   r¹   )r   r   r   r   )r'   r(   s   "€r)   r*   r»   ã   s&   ø‡ ‚ Ù™|Õ,Ñ3ñ áÑ4Õ5Ñ:ò r,   r6   )r«   r¬   r­   r®   r¸   r¹   r   r   r½   r¯   r°   r±   )r(   r¾   s   @€r)   r¾   r³   ã   s-   ù‡ € Ø/3ˆHØ8:ˆJñ 26°lÑDVÓ1W÷	
õ 
÷	 ƒ r,   r¾   r   c                   óJ   <a € ] tR t^÷t o RtV 3R lV3R lltV 3R ltRtV tR# )Ú:RunnerTests.test_startLogging.<locals>.MockFileLogObserverNc                ó$   <€ V ^8„  d   QhRS[ RR/# )r"   ÚoutFiler$   N©r	   )r'   r(   s   "€r)   r*   ÚGRunnerTests.test_startLogging.<locals>.MockFileLogObserver.__annotate__ú   s   ø€ ÷ =ñ =©ð =°4ñ =r,   c                óL   <€ VSn         \        P                  ! W\        4       R # r.   )rÄ   r   r½   r&   )r1   rÄ   ÚMockFileLogObservers   &&€r)   r½   ÚCRunnerTests.test_startLogging.<locals>.MockFileLogObserver.__init__ú   s   ø€ Ø.5Ð#Ô+Ü×(Ò(¨¼Ö<r,   c                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # )r"   rÄ   )r   r	   )r'   r(   s   "€r)   r*   rÆ   ÷   s   ø‡ ‚ Ù™fÕ%Ñ,ò r,   r6   )	r«   r¬   r­   r®   rÄ   r½   r¯   r°   r±   )r(   rÈ   s   @€r)   rÈ   rÂ   ÷   s   ù‡ € Ø(,ˆG÷=ó =÷ ƒ r,   rÈ   )rO   ÚdefaultLogLevelÚlogFileÚfileLogObserverFactoryN)r   r?   r   r   r   r   r   r   ÚcriticalrQ   rV   Úlenr¤   ÚassertIsInstancer¹   r   r‚   rË   r   r¸   rÄ   )r1   rÌ   rY   r¸   r   rÈ   r¾   s   &   @@@r)   Útest_startLoggingÚRunnerTests.test_startLoggingÎ   sg  ú€ ô “*ˆ÷
	8ô 	8ð 	�
‰
”7Ð/±³Ô?÷	Ô';ô 	ð  	�
‰
”7Ð2Ð4LÔM÷	=¤/ô 	=ô Ü!“OÜ$×-Ñ-ØØ#6ô	
ˆð 	×ÑÔð 	×Ñœ˜[×2Ñ2Ó3°QÔ7Ø×Ñ˜k×3Ñ3°AÕ6Ô8LÔMð 	×ÑœÐ5×@Ñ@ÓAÀ1ÔEØ×ÑØ$×/Ñ/°Õ2Ô4Kô	
ð 	×ÑØ$×/Ñ/°Õ2×BÑBÄH×DUÑDUô	
ô
 Ð+Ð-E×-NÑ-NÓOˆØ×Ñ˜hÐ(;Ô<ð 	×Ñ˜X×-Ñ-¨wÖ7r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+     s   ø€ ÷ 	(ñ 	(¨dñ 	(r,   c                óˆ   € \        4       p\        VR7      pVP                  4        V P                  VP                  4       R# )zM
L{Runner.startReactor} with the C{reactor} argument runs the given
reactor.
rN   N)r   r   rR   rd   ÚhasRun)r1   rO   rY   s   &  r)   Útest_startReactorWithReactorÚ(RunnerTests.test_startReactorWithReactor  s1   € ô
  “/ˆÜ Ô(ˆØ×ÑÔà�‰˜Ÿ™Ö'r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   &  s   ø€ ÷ 6ñ 6¨dñ 6r,   c                ó*   € V P                  RR4       R# )zx
L{Runner.startReactor} ensures that C{whenRunning} is called with
C{whenRunningArguments} when the reactor is running.
ÚwhenRunningrR   N©Ú	_testHookrI   s   &r)   Útest_startReactorWhenRunningÚ(RunnerTests.test_startReactorWhenRunning&  s   € ð
 	�‰�} nÖ5r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   -  s   ø€ ÷ &ñ &¨tñ &r,   c                ó(   € V P                  R4       R# )zJ
L{Runner.whenRunning} calls C{whenRunning} with
C{whenRunningArguments}.
rÚ   NrÛ   rI   s   &r)   Útest_whenRunningWithArgumentsÚ)RunnerTests.test_whenRunningWithArguments-  s   € ð
 	�‰�}Ö%r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r+   4  s   ø€ ÷ (ñ (°ñ (r,   c                ó(   € V P                  R4       R# )zN
L{Runner.whenRunning} calls C{reactorExited} with
C{reactorExitedArguments}.
rS   NrÛ   rI   s   &r)   Útest_reactorExitedWithArgumentsÚ+RunnerTests.test_reactorExitedWithArguments4  s   € ð
 	�‰�Ö'r,   c                ó:   <€ V ^8„  d   QhRS[ RS[S[ ,          RR/# )r"   Ú
methodNameÚ
callerNamer$   N)r&   r   )r'   r(   s   "€r)   r*   r+   ;  s&   ø€ ÷ "6ñ "6¡Cð "6±X¹cµ]ð "6Èdñ "6r,   c                óX  a€ Vf   Tp\        \        4       \        4       \        4       R7      p. oR V3R llpWV R2VP                  4       /p\        RR\	        4       /VB p\        Wb4      pV! 4        V P                  \        S4      ^4       V P                  S^ ,          V4       R# )a‚  
Verify that the named hook is run with the expected arguments as
specified by the arguments used to create the L{Runner}, when the
specified caller is invoked.

@param methodName: The name of the hook to verify.

@param callerName: The name of the method that is expected to cause the
    hook to be called.
    If C{None}, use the L{Runner} method with the same name as the
    hook.
N)ÚaÚbÚcc                ó(   € V ^8„  d   QhR\         RR/# )r"   Ú	argumentsr$   N)Úobject)r'   s   "r)   r*   Ú+RunnerTests._testHook.<locals>.__annotate__N  s   € ÷ 	,ñ 	,œfð 	,¨ñ 	,r,   c                  ó*   <€ SP                  V 4       R # r.   )Úappend)rï   ÚargumentsSeens   ,€r)   ÚhookÚ#RunnerTests._testHook.<locals>.hookN  s   ø€ Ø× Ñ  Ö+r,   Ú	ArgumentsrO   r6   )Údictrð   Úcopyr   r   ÚgetattrrV   rÏ   )	r1   rè   ré   rï   rõ   ÚrunnerArgumentsrY   Ú
hookCallerrô   s	   &&&     @r)   rÜ   ÚRunnerTests._testHook;  s«   ø€ ð ÒØ#ˆJäœ6›8¤v£x´6³8Ô<ˆ	Øˆ÷	,ð 	,ð Øˆl˜)Ð$ i§n¡nÓ&6ð
ˆô ñ 
Ü!“Oð
Ø'6ñ
ˆô ˜VÓ0ˆ
ÙŒà×Ñœ˜]Ó+¨QÔ/Ø×Ñ˜ qÕ)¨9Ö5r,   )
r8   r<   rH   r9   r@   rB   r;   rE   rC   rG   r.   )r«   r¬   r­   r®   Ú__doc__r2   rJ   rZ   rf   rr   rw   r|   rƒ   r’   r™   r�   rÑ   rÖ   rÝ   rá   rå   rÜ   r°   r±   ©r(   s   @r)   r    r    "   sÉ   ø‡ € ñ÷ò ÷ Ið  I÷D
ð 
÷"(ð (÷ @ð @÷	+ð 	+÷Fð F÷6ð 6÷Hð H÷$
Að 
A÷
Að 
A÷K8ð K8÷Z	(ð 	(÷6ð 6÷&ð &÷(ð (÷"6÷ "6ð "6r,   r    T)Úfrozenc                   óš   a € ] tR tRt o Rt]! ]],          ]! ]	4      R7      t
V 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR ltRtV tR# )rT   i`  z[
Stub for L{Runner}.

Keep track of calls to some methods without actually doing anything.
)ÚtypeÚdefaultc                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   ÚDummyRunner.__annotate__j  s   ø€ ÷ 5ñ 5 ñ 5r,   c                ó<   € V P                   P                  R 4       R# )rP   N©rW   ró   rI   s   &r)   rP   ÚDummyRunner.killIfRequestedj  s   € Ø×Ñ×!Ñ!Ð"3Ö4r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r  m  ó   ø€ ÷ 2ñ 2˜dñ 2r,   c                ó<   € V P                   P                  R 4       R# )rQ   Nr  rI   s   &r)   rQ   ÚDummyRunner.startLoggingm  ó   € Ø×Ñ×!Ñ! .Ö1r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r  p  r
  r,   c                ó<   € V P                   P                  R 4       R# )rR   Nr  rI   s   &r)   rR   ÚDummyRunner.startReactorp  r  r,   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   r  s  s   ø€ ÷ 3ñ 3˜tñ 3r,   c                ó<   € V P                   P                  R 4       R# )rS   Nr  rI   s   &r)   rS   ÚDummyRunner.reactorExiteds  s   € Ø×Ñ×!Ñ! /Ö2r,   r6   N)r«   r¬   r­   r®   rþ   r   r   r&   r   r§   rW   rP   rQ   rR   rS   r°   r±   rÿ   s   @r)   rT   rT   `  sH   ø‡ € ññ   S¥	±7¸4³=ÔA€M÷5ð 5÷2ð 2÷2ð 2÷3ö 3r,   rT   c                   óZ   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )r`   iw  zQ
Stub for L{PIDFile}.

Tracks context manager entry/exit without doing anything.
c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   ÚDummyPIDFile.__annotate__~  s   ø€ ÷ ñ ˜$ñ r,   c                óN   € \         P                  ! V 4       R V n        R V n        R# ©FN)r   r½   rb   rc   rI   s   &r)   r½   ÚDummyPIDFile.__init__~  s   € Ü×Ò˜TÔ"àˆŒØˆŽr,   c                ó   <€ V ^8„  d   QhRR/# )r"   r$   r`   r6   )r'   r(   s   "€r)   r*   r  „  s   ø€ ÷ ñ ˜>ñ r,   c                ó   € R V n         V # rk   )rb   rI   s   &r)   Ú	__enter__ÚDummyPIDFile.__enter__„  s   € ØˆŒØˆr,   c                óp   <€ V ^8„  d   QhRS[ S[S[,          ,          RS[ S[,          RS[ S[,          RR/# )r"   ÚexcTypeÚexcValueÚ	tracebackr$   N)r   r   ÚBaseExceptionr   )r'   r(   s   "€r)   r*   r  ˆ  sG   ø€ ÷ ñ á™$™}Õ-Õ.ðñ ™=Õ)ðñ ™MÕ*ð	ð
 
ñr,   c                ó   € R V n         R# ©TN©rc   )r1   r  r   r!  s   &&&&r)   Ú__exit__ÚDummyPIDFile.__exit__ˆ  s   € ð ˆŽr,   )rb   rc   N)
r«   r¬   r­   r®   rþ   r½   r  r&  r°   r±   rÿ   s   @r)   r`   r`   w  s(   ø‡ € ñ÷ð ÷ð ÷ö r,   r`   c                   óL   a € ] tR tRt o RtV 3R lR ltR	V 3R lR lltRtV tR# )
r=   i‘  zm
Stub for L{_exit.exit} that remembers whether it's been called and, if it has,
what arguments it was given.
c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   ÚDummyExit.__annotate__—  s   ø€ ÷ ñ ˜$ñ r,   c                ó   € R V n         R# r  r%  rI   s   &r)   r½   ÚDummyExit.__init__—  s	   € ØˆŽr,   Nc                óP   <€ V ^8„  d   QhRS[ S[S[3,          RS[S[,          RR/# )r"   ro   rq   r$   N)r   r‰   r   r   r&   )r'   r(   s   "€r)   r*   r*  š  s2   ø€ ÷ ñ Ù™C¡˜OÕ,ðÙ7?Áµ}ðà	ñr,   c                óT   € V P                   '       d   Q hWn        W n        R V n         R# r$  )rc   ro   rq   )r1   ro   rq   s   &&&r)   Ú__call__ÚDummyExit.__call__š  s#   € ð —;—;�;ÐˆàŒØŒØˆŽr,   )rc   rq   ro   r.   ©	r«   r¬   r­   r®   rþ   r½   r/  r°   r±   rÿ   s   @r)   r=   r=   ‘  s#   ø‡ € ñ÷
ð ÷÷ ð r,   r=   c                   óH   a € ] tR tRt o RtV 3R lR ltV 3R lR ltRtV tR# )	r>   i¤  zj
Stub for L{os.kill} that remembers whether it's been called and, if it has,
what arguments it was given.
c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r'   r(   s   "€r)   r*   ÚDummyKill.__annotate__ª  s   ø€ ÷ /ñ /˜$ñ /r,   c                ó   € . V n         R # r.   ©rv   rI   s   &r)   r½   ÚDummyKill.__init__ª  s	   € Ø,.ˆŽ
r,   c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r"   r@   Úsigr$   Nrˆ   )r'   r(   s   "€r)   r*   r4  ­  s"   ø€ ÷ &ñ &™Cð &¡cð &¨dñ &r,   c                ó>   € V P                   P                  W34       R # r.   )rv   ró   )r1   r@   r9  s   &&&r)   r/  ÚDummyKill.__call__­  s   € Ø�
‰
×Ñ˜3˜*Ö%r,   r6  Nr1  rÿ   s   @r)   r>   r>   ¤  s   ø‡ € ñ÷
/ð /÷&ö &r,   r>   c                   ó6   a € ] tR tRt o RtV 3R lR ltRtV tR# )rD   i±  zJ
Stub for L{sys} which provides L{StringIO} streams as stdout and stderr.
c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r"   rC   r;   r$   NrÅ   )r'   r(   s   "€r)   r*   ÚDummyStandardIO.__annotate__¶  s"   ø€ ÷ ñ ™vð ©vð ¸$ñ r,   c                ó   € Wn         W n        R # r.   )rC   r;   )r1   rC   r;   s   &&&r)   r½   ÚDummyStandardIO.__init__¶  s   € ØŒØŽr,   )r;   rC   N)r«   r¬   r­   r®   rþ   r½   r°   r±   rÿ   s   @r)   rD   rD   ±  s   ø‡ € ñ÷ö r,   rD   c                   ó6   a € ] tR tRt o RtV 3R lR ltRtV tR# )rF   i»  zN
Stub for L{warnings} which provides a C{showwarning} method that is a no-op.
c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r"   ÚargsÚkwargsr$   N)r   )r'   r(   s   "€r)   r*   Ú DummyWarningsModule.__annotate__À  s"   ø€ ÷ ñ ™3ð ©#ð °$ñ r,   c                 ó   € R# )z<
Do nothing.

@param args: ignored.
@param kwargs: ignored.
Nr6   )rC  rD  s   *,r)   ÚshowwarningÚDummyWarningsModule.showwarningÀ  s   ‚ r,   r6   N)r«   r¬   r­   r®   rþ   rG  r°   r±   rÿ   s   @r)   rF   rF   »  s   ø‡ € ñ÷ö r,   rF   )6rþ   r�   Úior   Úsignalr   Útypesr   Útypingr   r   r   r   r	   r
   r   r   r   Úattrr   r   r   Útwisted.trial.unittestÚtwistedÚtwisted.internet.testingr   Útwisted.loggerr   r   r   r   r   r   r   Útwisted.python.filepathr   rY   r   Ú_exitr   Ú_pidfiler   r   r   ÚtrialÚunittestÚTestCaser    rT   r`   r=   r>   rD   rF   r6   r,   r)   Ú<module>rX     sÀ   ðñó Ý Ý Ý ß R× RÕ Rç 'Ñ 'ã Ý 2÷÷ ñ õ -Ý Ý ß +Ý ô{6�'—-‘-×(Ñ(×1Ñ1ô {6ñ|	 ˆdÔô3�&ó 3ó ð3ô,�;ô ÷4ñ ÷&
&ñ 
&÷ñ ÷ó r,   