
    ;bhd2                       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Zd dlmZmZmZmZmZ d dlmZmZ  ej2                  d      Z ej2                  d      Z ej2                  d      Z G d	 d
e      Z G d dej>                  ee      Z e!dk(  r ejD                          yy)    N)deepcopy)support)TestEqualityTestHashingLoggingResultLegacyLoggingResult#ResultWithNoStartTestRunStopTestRun)captured_stderr
gc_collectfoofoo.barquuxc                   z    e Zd ZdZ G d dej
                        Z G d de      Z G d dej
                        Zy)	Testz5Keep these TestCase classes out of the main namespacec                       e Zd Zd Zd Zy)Test.Fooc                      y N selfs    F/opt/python-3.12.12/usr/lib/python3.12/test/test_unittest/test_case.pyrunTestzTest.Foo.runTest"   s    4    c                      y r   r   r   s    r   test1zTest.Foo.test1#       r   N)__name__
__module____qualname__r   r   r   r   r   Foor   !   s    r   r!   c                       e Zd Zd Zy)Test.Barc                      y r   r   r   s    r   test2zTest.Bar.test2&   r   r   N)r   r   r    r%   r   r   r   Barr#   %   s    r   r&   c                   4     e Zd ZdZ fdZd Zd Zd Z xZS )Test.LoggingTestCasez!A test case which logs its calls.c                 N    t         t        j                  |   d       || _        y Ntest)superr   LoggingTestCase__init__events)r   r/   	__class__s     r   r.   zTest.LoggingTestCase.__init__+   s    $&&6v> DKr   c                 :    | j                   j                  d       y )NsetUpr/   appendr   s    r   r2   zTest.LoggingTestCase.setUp/   s    KKw'r   c                 :    | j                   j                  d       y r*   r3   r   s    r   r+   zTest.LoggingTestCase.test2   s    KKv&r   c                 :    | j                   j                  d       y )NtearDownr3   r   s    r   r7   zTest.LoggingTestCase.tearDown5   s    KKz*r   )	r   r   r    __doc__r.   r2   r+   r7   __classcell__)r0   s   @r   r-   r(   (   s    /	!	(	'	+r   r-   N)	r   r   r    r8   unittestTestCaser!   r&   r-   r   r   r   r   r      s5    ;h c +(++ +r   r   c                      e Zd Zej	                  d      ej	                  d      fgZej	                  d      ej	                  d      fej	                  d      ej                  d      fej	                  d      ej                  d      fgZd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z) e*jV                  e,jZ                  j\                  d&k\  d'      d(        Z/ e*jV                  e,jZ                  j\                  d&k\  d'      d)        Z0 e*jV                  e,jZ                  j\                  d&k\  d'      d*        Z1d+ Z2d, Z3d- Z4d. Z5d/ Z6d0 Z7d1 Z8d2 Z9d3 Z:d4 Z;d5 Z<d6 Z=d7 Z>d8 Z?d9 Z@d: ZAd; ZBd< ZCd= ZDd> 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\e]j                  dV        Z_dW Z`dX ZadY ZbdZ Zcd[ Zdd\ Zed] Zfd^ Zgd_ Zhd` Zida Zjdb Zkdc Zldd Zmde Zndf Zodg Zpdh Zqdi Zrdj Zsdk Ztdl Zudm Zvdn Zwdo Zxdp Zyezj                  dq        Z|dr Z}ys)tTest_TestCaser   r   r%   c                     G d dt         j                        }| j                   |       j                         dd  d       t        j                         }|j                  dd       |j	                  |j
                        5  |j                  dd       d d d        | j	                  t              5  |j                          d d d        y # 1 sw Y   8xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)3Test_TestCase.test_init__no_test_name.<locals>.Testc                     t               r   MyExceptionr   s    r   r   z;Test_TestCase.test_init__no_test_name.<locals>.Test.runTestU   	    []2r   c                      y r   r   r   s    r   r+   z8Test_TestCase.test_init__no_test_name.<locals>.Test.testV       Dr   Nr   r   r    r   r+   r   r   r   r   r@   T       2 r   r   iz.Test.runTest      )r:   r;   assertEqualidassertRaisesfailureExceptionAttributeErrorrun)r   r   r+   s      r   test_init__no_test_namez%Test_TestCase.test_init__no_test_nameS   s    	!8$$ 	! 	ST*O<   "At445Q" 6 ~.HHJ /. 65 /.s   C3CCC"c                      G d dt         j                        }| j                   |d      j                         dd  d       y )Nc                       e Zd Zd Zd Zy)7Test_TestCase.test_init__test_name__valid.<locals>.Testc                     t               r   rB   r   s    r   r   z?Test_TestCase.test_init__test_name__valid.<locals>.Test.runTestj   rD   r   c                      y r   r   r   s    r   r+   z<Test_TestCase.test_init__test_name__valid.<locals>.Test.testk   rF   r   NrG   r   r   r   r   rT   i   rH   r   r   r+   iz
.Test.test)r:   r;   rK   rL   r   r   s     r   test_init__test_name__validz)Test_TestCase.test_init__test_name__validh   s8    	!8$$ 	! 	f*340,?r   c                      G d dt         j                        }	  |d       | j                  d       y # t        $ r Y y w xY w)Nc                       e Zd Zd Zd Zy)9Test_TestCase.test_init__test_name__invalid.<locals>.Testc                     t               r   rB   r   s    r   r   zATest_TestCase.test_init__test_name__invalid.<locals>.Test.runTestu   rD   r   c                      y r   r   r   s    r   r+   z>Test_TestCase.test_init__test_name__invalid.<locals>.Test.testv   rF   r   NrG   r   r   r   r   r[   t   rH   r   r   testfoozFailed to raise ValueError)r:   r;   fail
ValueErrorrW   s     r   test_init__test_name__invalidz+Test_TestCase.test_init__test_name__invalids   sC    	!8$$ 	!	4O II23  		s   5 	A Ac                      G d dt         j                        }| j                   |d      j                         d       y )Nc                       e Zd Zd Zy).Test_TestCase.test_countTestCases.<locals>.Fooc                      y r   r   r   s    r   r+   z3Test_TestCase.test_countTestCases.<locals>.Foo.test   rF   r   Nr   r   r    r+   r   r   r   r!   rd      s     r   r!   r+      )r:   r;   rK   countTestCasesr   r!   s     r   test_countTestCasesz!Test_TestCase.test_countTestCases   s3    	!(## 	! 	V335q9r   c                      G d dt         j                        } |       j                         }| j                  t	        |      t         j
                         y )Nc                       e Zd Zd Zy)1Test_TestCase.test_defaultTestResult.<locals>.Fooc                      y r   r   r   s    r   r   z9Test_TestCase.test_defaultTestResult.<locals>.Foo.runTest       r   Nr   r   r    r   r   r   r   r!   rm          r   r!   )r:   r;   defaultTestResultrK   type
TestResult)r   r!   results      r   test_defaultTestResultz$Test_TestCase.test_defaultTestResult   s@    	(## 	 ((*fx':':;r   c                     g }t        |      } G fddt        j                         |      j                  |       g d}| j	                  ||       y )Nc                   "     e Zd Z fdZ xZS )>Test_TestCase.test_run_call_order__error_in_setUp.<locals>.Fooc                 6    t         |           t        d      Nzraised by Foo.setUpr,   r2   RuntimeErrorr   r!   r0   s    r   r2   zDTest_TestCase.test_run_call_order__error_in_setUp.<locals>.Foo.setUp       c4&("#899r   )r   r   r    r2   r9   r0   r!   s   @r   r!   ry      s    : :r   r!   )	startTestr2   addErrorstopTestr   r   r-   rP   rK   r   r/   ru   expectedr!   s       @r   #test_run_call_order__error_in_setUpz1Test_TestCase.test_run_call_order__error_in_setUp   sK    v&	:$&& 	:
 	FA*r   c                     g } G fddt         j                         |      j                          g d}| j                  ||       y )Nc                   (     e Zd Zd Z fdZ xZS )MTest_TestCase.test_run_call_order__error_in_setUp_default_result.<locals>.Fooc                 ,    t        | j                        S r   r   r/   r   s    r   rr   z_Test_TestCase.test_run_call_order__error_in_setUp_default_result.<locals>.Foo.defaultTestResult       $T[[11r   c                 6    t         |           t        d      r{   r|   r~   s    r   r2   zSTest_TestCase.test_run_call_order__error_in_setUp_default_result.<locals>.Foo.setUp   r   r   )r   r   r    rr   r2   r9   r   s   @r   r!   r      s    2: :r   r!   )startTestRunr   r2   r   r   stopTestRunr   r-   rP   rK   r   r/   r   r!   s      @r   2test_run_call_order__error_in_setUp_default_resultz@Test_TestCase.test_run_call_order__error_in_setUp_default_result   sA    	:$&& 	: 	F/*r   c                     g }t        |      } G fddt        j                        g d} |      j                  |       | j	                  ||       y )Nc                   "     e Zd Z fdZ xZS )=Test_TestCase.test_run_call_order__error_in_test.<locals>.Fooc                 6    t         |           t        d      Nraised by Foo.testr,   r+   r}   r~   s    r   r+   zBTest_TestCase.test_run_call_order__error_in_test.<locals>.Foo.test       c4%'"#788r   r   r   r    r+   r9   r   s   @r   r!   r      s    9 9r   r!   )r   r2   r+   r   r7   r   r   r   s       @r   "test_run_call_order__error_in_testz0Test_TestCase.test_run_call_order__error_in_test   sK    v&	9$&& 	9
8F*r   c                     g } G fddt         j                        g d} |      j                          | j                  ||       y )Nc                   (     e Zd Zd Z fdZ xZS )LTest_TestCase.test_run_call_order__error_in_test_default_result.<locals>.Fooc                 ,    t        | j                        S r   r   r   s    r   rr   z^Test_TestCase.test_run_call_order__error_in_test_default_result.<locals>.Foo.defaultTestResult   r   r   c                 6    t         |           t        d      r   r   r~   s    r   r+   zQTest_TestCase.test_run_call_order__error_in_test_default_result.<locals>.Foo.test   r   r   r   r   r    rr   r+   r9   r   s   @r   r!   r      s    29 9r   r!   )r   r   r2   r+   r   r7   r   r   r   r   s      @r   1test_run_call_order__error_in_test_default_resultz?Test_TestCase.test_run_call_order__error_in_test_default_result   s@    	9$&& 	9GF*r   c                     g }t        |      } G fddt        j                        g d} |      j                  |       | j	                  ||       y )Nc                   "     e Zd Z fdZ xZS )?Test_TestCase.test_run_call_order__failure_in_test.<locals>.Fooc                 D    t         |           | j                  d       y r   r,   r+   r_   r~   s    r   r+   zDTest_TestCase.test_run_call_order__failure_in_test.<locals>.Foo.test       c4%'		./r   r   r   s   @r   r!   r      s    0 0r   r!   r   r2   r+   
addFailurer7   r   r   r   s       @r   $test_run_call_order__failure_in_testz2Test_TestCase.test_run_call_order__failure_in_test   sK    v&	0$&& 	0
:F*r   c                      G fddt         j                        g d}g } |      j                          | j                  ||       y )Nc                   (     e Zd Zd Z fdZ xZS )NTest_TestCase.test_run_call_order__failure_in_test_default_result.<locals>.Fooc                 ,    t        | j                        S r   r   r   s    r   rr   z`Test_TestCase.test_run_call_order__failure_in_test_default_result.<locals>.Foo.defaultTestResult   r   r   c                 D    t         |           | j                  d       y r   r   r~   s    r   r+   zSTest_TestCase.test_run_call_order__failure_in_test_default_result.<locals>.Foo.test   r   r   r   r   s   @r   r!   r      s    20 0r   r!   )r   r   r2   r+   r   r7   r   r   r   )r   r   r/   r!   s      @r   3test_run_call_order__failure_in_test_default_resultzATest_TestCase.test_run_call_order__failure_in_test_default_result   s@    	0$&& 	0IF*r   c                     g }t        |      } G fddt        j                         |      j                  |       g d}| j	                  ||       y )Nc                   "     e Zd Z fdZ xZS )ATest_TestCase.test_run_call_order__error_in_tearDown.<locals>.Fooc                 6    t         |           t        d      Nzraised by Foo.tearDownr,   r7   r}   r~   s    r   r7   zJTest_TestCase.test_run_call_order__error_in_tearDown.<locals>.Foo.tearDown      c4)+"#;<<r   )r   r   r    r7   r9   r   s   @r   r!   r     s    = =r   r!   )r   r2   r+   r7   r   r   r   r   s       @r   &test_run_call_order__error_in_tearDownz4Test_TestCase.test_run_call_order__error_in_tearDown  sM    v&	=$&& 	=
 	F *r   c                      G fddt         j                        g } |      j                          g d}| j                  ||       y )Nc                   (     e Zd Zd Z fdZ xZS )PTest_TestCase.test_run_call_order__error_in_tearDown_default_result.<locals>.Fooc                 ,    t        | j                        S r   r   r   s    r   rr   zbTest_TestCase.test_run_call_order__error_in_tearDown_default_result.<locals>.Foo.defaultTestResult  r   r   c                 6    t         |           t        d      r   r   r~   s    r   r7   zYTest_TestCase.test_run_call_order__error_in_tearDown_default_result.<locals>.Foo.tearDown  r   r   )r   r   r    rr   r7   r9   r   s   @r   r!   r     s    2= =r   r!   )r   r   r2   r+   r7   r   r   r   r   r   s      @r   5test_run_call_order__error_in_tearDown_default_resultzCTest_TestCase.test_run_call_order__error_in_tearDown_default_result  sA    	=$&& 	= F;*r   c                      G d dt         j                        }| j                  t              5   |d      j	                          d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)=Test_TestCase.test_run_call_order_default_result.<locals>.Fooc                     t               S r   )r	   r   s    r   rr   zOTest_TestCase.test_run_call_order_default_result.<locals>.Foo.defaultTestResult.  s    :<<r   c                      y r   r   r   s    r   r+   zBTest_TestCase.test_run_call_order_default_result.<locals>.Foo.test0  ro   r   N)r   r   r    rr   r+   r   r   r   r!   r   -  s    =r   r!   r+   )r:   r;   assertWarnsRuntimeWarningrP   ri   s     r   "test_run_call_order_default_resultz0Test_TestCase.test_run_call_order_default_result+  s>    	(## 	 n-KOO .--s   AAc                 P    G d d       G fddt         j                        }| j                  t              5 } |d      j	                          d d d        | j                  dt        j                               | j                  dt        |j                               | j                  |j                  t               | j                  t              5 } |d      j	                          d d d        | j                  dt        |j                               | j                  dt        |j                               | j                  |j                  t               | j                  t              5 } |d      j	                          d d d        | j                  dt        |j                               | j                  dt        |j                               | j                  |j                  t               y # 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   xY w)	Nc                       e Zd Zd Zy)GTest_TestCase.test_deprecation_of_return_val_from_test.<locals>.Nothingc                 
    |d u S r   r   )r   os     r   __eq__zNTest_TestCase.test_deprecation_of_return_val_from_test.<locals>.Nothing.__eq__9  s    Dy r   N)r   r   r    r   r   r   r   Nothingr   8  s    !r   r   c                   $    e Zd Zd Zd Z fdZy)CTest_TestCase.test_deprecation_of_return_val_from_test.<locals>.Fooc                      yNrg   r   r   s    r   r   zITest_TestCase.test_deprecation_of_return_val_from_test.<locals>.Foo.test1<  s    r   c              3      K   d y wr   r   r   s    r   r%   zITest_TestCase.test_deprecation_of_return_val_from_test.<locals>.Foo.test2>  s     s   c                             S r   r   )r   r   s    r   test3zITest_TestCase.test_deprecation_of_return_val_from_test.<locals>.Foo.test3@  s    y r   N)r   r   r    r   r%   r   )r   s   r   r!   r   ;  s    !r   r!   r   z3It is deprecated to return a value that is not Noner%   r   )r:   r;   r   DeprecationWarningrP   assertInstrwarningrK   filename__file__)r   r!   wr   s      @r   (test_deprecation_of_return_val_from_testz6Test_TestCase.test_deprecation_of_return_val_from_test6  sz   	! 	!	!(## 	! 01QL 2KSQRQZQZ^\gs199~.X.01QL 2KSQRQZQZ^\gs199~.X.01QL 2KSQRQZQZ^\gs199~.X.! 21 21 21s#   HH8HHHH%c                      G fddt         j                         |      j                  |       | j                  ||       y )Nc                   "     e Zd Z fdZ xZS )6Test_TestCase._check_call_order__subtests.<locals>.Fooc           	      :   t         |           dD ]j  }| j                  |      5  |dk(  r| j                  d       dD ]1  }| j                  |      5  ||z  dk(  rt	        d      	 d d d        3 	 d d d        l dd	z   y # 1 sw Y   NxY w# 1 sw Y   xY w)
Nrg   rJ   rI   irg   failurerJ   rI   j   r   r   )r,   r+   subTestr_   r}   r   r   r   r!   r0   s      r   r+   z;Test_TestCase._check_call_order__subtests.<locals>.Foo.testW  s    c4%'"A*6 IIi0!'A!%!2#$q5A:*67K*L$L $. "3!2 "( +* # A "3!2	 +*s#   .BB	*
BB
BB	r   r   s   @r   r!   r   V  s    
 
r   r!   r   r   ru   r/   expected_eventsr!   s       @r   _check_call_order__subtestsz)Test_TestCase._check_call_order__subtestsU  s7    	$&& 	( 	F1r   c                 L    g }t        |      }g d}| j                  |||       y )N)r   r2   r+   addSubTestFailureaddSubTestSuccessr   r   r   r   r7   r   )r   r   r   r/   ru   r   s       r   test_run_call_order__subtestsz+Test_TestCase.test_run_call_order__subtestsm  s-    v&M 	((Br   c                 L    g }t        |      }g d}| j                  |||       y )Nr   )r   r   r   s       r   $test_run_call_order__subtests_legacyz2Test_TestCase.test_run_call_order__subtests_legacyv  s,     $V,:((Br   c                      G fddt         j                         |      j                  |       | j                  ||       y )Nc                   "     e Zd Z fdZ xZS )>Test_TestCase._check_call_order__subtests_success.<locals>.Fooc           	          t         |           dD ]A  }| j                  |      5  dD ]  }| j                  |      5  	 d d d          	 d d d        C y # 1 sw Y   6xY w# 1 sw Y   ZxY w)N)rg   rJ   r   r   r   )r,   r+   r   r   s      r   r+   zCTest_TestCase._check_call_order__subtests_success.<locals>.Foo.test  se    c4%'A*!'A!%!2 $ "3!2 "( +*   "3!2 +*s"   A#A	
A#A A##A,	r   r   s   @r   r!   r         % %r   r!   r   r   s       @r   #_check_call_order__subtests_successz1Test_TestCase._check_call_order__subtests_success  s7    	%$&& 	% 	F1r   c                 d    g }t        |      }g dddgz  z   g dz   }| j                  |||       y )N)r   r2   r+   r   r   )r7   
addSuccessr   )r   r   r   s       r   %test_run_call_order__subtests_successz3Test_TestCase.test_run_call_order__subtests_success  sE    v& 3.//0<= 	00Jr   c                 L    g }t        |      }g d}| j                  |||       y )N)r   r2   r+   r7   r   r   )r   r   r   s       r   ,test_run_call_order__subtests_success_legacyz:Test_TestCase.test_run_call_order__subtests_success_legacy  s*    $V,.00Jr   c                     g }t        |      }d|_         G fddt        j                        g d} |      j	                  |       | j                  ||       y )NTc                   "     e Zd Z fdZ xZS )ATest_TestCase.test_run_call_order__subtests_failfast.<locals>.Fooc                 $   t         |           | j                  d      5  | j                  d       d d d        | j                  d      5  | j                  d       d d d        | j                  d       y # 1 sw Y   GxY w# 1 sw Y   'xY w)Nrg   r   r   rJ   )r,   r+   r   r_   r~   s    r   r+   zFTest_TestCase.test_run_call_order__subtests_failfast.<locals>.Foo.test  sj    c4%'\\A\&IIi( '\\A\&IIi( '		)$	 '&&&s   A:B:BBr   r   s   @r   r!   r    r   r   r!   )r   r2   r+   r   r7   r   )r   failfastr   r-   rP   rK   r   s       @r   &test_run_call_order__subtests_failfastz4Test_TestCase.test_run_call_order__subtests_failfast  sS    v&	%$&& 	%AF*r   c                 
   g  G fddt         j                        }t        j                         }d|_        t        j                         j                  |      }|j                  |       g d}| j                  |       y )Nc                   ,    e Zd Z fdZ fdZ fdZy)1Test_TestCase.test_subtests_failfast.<locals>.Fooc                     | j                         5  j                  d       d d d        j                  d       y # 1 sw Y   xY w)Na1a2)r   r4   r   r/   s    r   test_az8Test_TestCase.test_subtests_failfast.<locals>.Foo.test_a  s1    \\^MM$' $d# $^s	   >Ac                     | j                         5  j                  d       d d d        | j                         5  | j                  d       d d d        j                  d       y # 1 sw Y   ExY w# 1 sw Y   'xY w)Nb1r   b2)r   r4   r_   r  s    r   test_bz8Test_TestCase.test_subtests_failfast.<locals>.Foo.test_b  sQ    \\^MM$' $\\^IIi( $d#	 $^#^s   A(A4(A14A=c                 (    j                  d       y )Ncr4   r  s    r   test_cz8Test_TestCase.test_subtests_failfast.<locals>.Foo.test_c  s    c"r   N)r   r   r    r  r  r  r/   s   r   r!   r    s    $
$#r   r!   T)r  r  r  )r:   r;   rt   r  
TestLoaderloadTestsFromTestCaserP   rK   )r   r!   ru   suiter   r/   s        @r   test_subtests_failfastz$Test_TestCase.test_subtests_failfast  sk    	#(## 	#  $$&##%;;C@		&%*r   c                     g  G fddt         j                        } |d      j                          | j                  ddg       y )Nc                       e Zd Z fdZy).Test_TestCase.test_subtests_debug.<locals>.Fooc                     j                  d       | j                         5  j                  d       d d d        y # 1 sw Y   y xY w)N	test case	subtest 1)r4   r   r  s    r   r  z5Test_TestCase.test_subtests_debug.<locals>.Foo.test_a  s.    k*\\^MM+. $^^s	   >AN)r   r   r    r  r  s   r   r!   r     s    /r   r!   r  r"  r#  )r:   r;   debugrK   )r   r!   r/   s     @r   test_subtests_debugz!Test_TestCase.test_subtests_debug  sA    	/(## 	/ 	H+{!;<r   c                      G d dt         j                        }| j                   |d      j                  t               y )Nc                       e Zd Zd Zy)9Test_TestCase.test_failureException__default.<locals>.Fooc                      y r   r   r   s    r   r+   z>Test_TestCase.test_failureException__default.<locals>.Foo.test  ro   r   Nrf   r   r   r   r!   r(    rq   r   r!   r+   )r:   r;   assertIsrN   AssertionErrorri   s     r   test_failureException__defaultz,Test_TestCase.test_failureException__default  s.    	(## 	 	c&k22NCr   c                     g }t        |      } G d dt        j                        }| j                   |d      j                  t
                |d      j                  |       g d}| j                  ||       y )Nc                       e Zd Zd ZeZy)MTest_TestCase.test_failureException__subclassing__explicit_raise.<locals>.Fooc                     t               r   )r}   r   s    r   r+   zRTest_TestCase.test_failureException__subclassing__explicit_raise.<locals>.Foo.test  s
    "n$r   Nr   r   r    r+   r}   rN   r   r   r   r!   r/    s    %  ,r   r!   r+   r   r   r   r   r:   r;   r*  rN   r}   rP   rK   r   r/   ru   r!   r   s        r   2test_failureException__subclassing__explicit_raisez@Test_TestCase.test_failureException__subclassing__explicit_raise  d    v&	,(## 	, 	c&k22LA 	F:*r   c                     g }t        |      } G d dt        j                        }| j                   |d      j                  t
                |d      j                  |       g d}| j                  ||       y )Nc                       e Zd Zd ZeZy)MTest_TestCase.test_failureException__subclassing__implicit_raise.<locals>.Fooc                 &    | j                  d       y Nr   )r_   r   s    r   r+   zRTest_TestCase.test_failureException__subclassing__implicit_raise.<locals>.Foo.test	  s    		% r   Nr1  r   r   r   r!   r9    s    !  ,r   r!   r+   r2  r3  r4  s        r   2test_failureException__subclassing__implicit_raisez@Test_TestCase.test_failureException__subclassing__implicit_raise  r6  r   c                 `     G d dt         j                        } |       j                          y )Nc                       e Zd Zd Zy)%Test_TestCase.test_setUp.<locals>.Fooc                      y r   r   r   s    r   r   z-Test_TestCase.test_setUp.<locals>.Foo.runTest  ro   r   Nrp   r   r   r   r!   r?    rq   r   r!   )r:   r;   r2   ri   s     r   
test_setUpzTest_TestCase.test_setUp  s!    	(## 	
 	r   c                 `     G d dt         j                        } |       j                          y )Nc                       e Zd Zd Zy)(Test_TestCase.test_tearDown.<locals>.Fooc                      y r   r   r   s    r   r   z0Test_TestCase.test_tearDown.<locals>.Foo.runTest!  ro   r   Nrp   r   r   r   r!   rD     rq   r   r!   )r:   r;   r7   ri   s     r   test_tearDownzTest_TestCase.test_tearDown  s"    	(## 	
 	r   c                      G d dt         j                        }| j                   |       j                         t               y )Nc                       e Zd Zd Zy)"Test_TestCase.test_id.<locals>.Fooc                      y r   r   r   s    r   r   z*Test_TestCase.test_id.<locals>.Foo.runTest/  ro   r   Nrp   r   r   r   r!   rI  .  rq   r   r!   )r:   r;   assertIsInstancerL   r   ri   s     r   test_idzTest_TestCase.test_id-  s.    	(## 	 	cehhj#.r   c                     g t               G fddt        j                        } |d      j                         }| j	                  |       g d}| j                  |       y )Nc                   "    e Zd ZfdZ fdZy);Test_TestCase.test_run__uses_defaultTestResult.<locals>.Fooc                 (    j                  d       y r*   r  r  s    r   r+   z@Test_TestCase.test_run__uses_defaultTestResult.<locals>.Foo.test>  s    f%r   c                     S r   r   )r   defaultResults    r   rr   zMTest_TestCase.test_run__uses_defaultTestResult.<locals>.Foo.defaultTestResultA  s	    $$r   N)r   r   r    r+   rr   )rR  r/   s   r   r!   rO  =  s    &%r   r!   r+   )r   r   r+   r   r   r   )r   r:   r;   rP   r*  rK   )r   r!   ru   r   rR  r/   s       @@r    test_run__uses_defaultTestResultz.Test_TestCase.test_run__uses_defaultTestResult9  s[    %f-	%(## 	% V"fm,'*r   c                      G d dt         j                        }t        j                         } |d      j                  |      }| j	                  ||       y )Nc                       e Zd Zd Zy)9Test_TestCase.test_run__returns_given_result.<locals>.Fooc                      y r   r   r   s    r   r+   z>Test_TestCase.test_run__returns_given_result.<locals>.Foo.testQ  ro   r   Nrf   r   r   r   r!   rV  P  rq   r   r!   r+   )r:   r;   rt   rP   r*  )r   r!   ru   retvals       r   test_run__returns_given_resultz,Test_TestCase.test_run__returns_given_resultN  sD    	(## 	 $$&V(ff%r   c                     t        j                         t        j                          G fddt         j                        }  |d            }| j                  |       y )Nc                        e Zd Zd Z fdZy)KTest_TestCase.test_call__invoking_an_instance_delegates_to_run.<locals>.Fooc                      y r   r   r   s    r   r+   zPTest_TestCase.test_call__invoking_an_instance_delegates_to_run.<locals>.Foo.testa  ro   r   c                 ,    | j                  |       S r   )r*  )r   ru   resultIn	resultOuts     r   rP   zOTest_TestCase.test_call__invoking_an_instance_delegates_to_run.<locals>.Foo.rund  s    fh/  r   N)r   r   r    r+   rP   )r_  r`  s   r   r!   r\  `  s    !r   r!   r+   )r:   rt   r;   r*  )r   r!   rX  r_  r`  s      @@r   0test_call__invoking_an_instance_delegates_to_runz>Test_TestCase.test_call__invoking_an_instance_delegates_to_run\  sQ    &&('')		!(## 	! VX&fi(r   c                 B    | j                  | j                                y r   )assertIsNoneshortDescriptionr   s    r   $testShortDescriptionWithoutDocstringz2Test_TestCase.testShortDescriptionWithoutDocstringm  s    $//12r   rJ   z)Docstrings are omitted with -O2 and abovec                 D    | j                  | j                         d        y)z7Tests shortDescription() for a method with a docstring.NrK   rd  r   s    r   (testShortDescriptionWithOneLineDocstringz6Test_TestCase.testShortDescriptionWithOneLineDocstringp  s"     	%%'I	Kr   c                 D    | j                  | j                         d       y)zTests shortDescription() for a method with a longer docstring.

        This method ensures that only the first line of a docstring is
        returned used in the short description, no matter how long the
        whole thing is.
        z>Tests shortDescription() for a method with a longer docstring.Nrg  r   s    r   *testShortDescriptionWithMultiLineDocstringz8Test_TestCase.testShortDescriptionWithMultiLineDocstringx  s#     	%%'	r   c                 D    | j                  | j                         d       y)z
            Tests shortDescription() whitespace is trimmed, so that the first
            line of nonwhite-space text becomes the docstring.
        zATests shortDescription() whitespace is trimmed, so that the firstNrg  r   s    r   &testShortDescriptionWhitespaceTrimmingz4Test_TestCase.testShortDescriptionWhitespaceTrimming  s"     	!!#O	Qr   c                      G d dt                               }}| j                  ||k(         dfd	}| j                  |       | j                  ||       y )Nc                       e Zd ZdZy)7Test_TestCase.testAddTypeEqualityFunc.<locals>.SadSnakez)Dummy class for test_addTypeEqualityFunc.N)r   r   r    r8   r   r   r   SadSnakero    s    ;r   rp  c                 H    t        |       t        |      cxk(  xr k(  S c S r   )rs   )abmsgrp  s      r   AllSnakesCreatedEqualzDTest_TestCase.testAddTypeEqualityFunc.<locals>.AllSnakesCreatedEqual  s!    7d1g11111r   r   )objectassertFalseaddTypeEqualityFuncrK   )r   s1s2ru  rp  s       @r   testAddTypeEqualityFuncz%Test_TestCase.testAddTypeEqualityFunc  sT    	<v 	<XZBr"	2  +@AR r   c                     t               }| j                  ||       | j                  | j                  | j                  |t                      y r   )rv  r*  rM   rN   r   things     r   testAssertIszTest_TestCase.testAssertIs  s7    eU#$//vxPr   c                     t               }| j                  |t                      | j                  | j                  | j                  ||       y r   )rv  assertIsNotrM   rN   r}  s     r   testAssertIsNotzTest_TestCase.testAssertIsNot  s;    )$//1A1A5%Pr   c                     g }| j                  |t               | j                  | j                  | j                   |t               y r   )rK  listrM   rN   dictr}  s     r   testAssertIsInstancez"Test_TestCase.testAssertIsInstance  s:    eT*$//1F1F	'r   c                     g }| j                  |t               | j                  | j                  | j                   |t               y r   )assertNotIsInstancer  rM   rN   r  r}  s     r   testAssertNotIsInstancez%Test_TestCase.testAssertNotIsInstance  s:      -$//1I1I	'r   c                    dddd}| j                  dd       | j                  dg d       | j                  d	|       | j                  d
d       | j                  dg d       | j                  d|       | j                  | j                  | j                   dd       | j                  | j                  | j                   dg d       | j                  | j                  | j                   d|       | j                  | j                  | j                  dd       | j                  | j                  | j                  dg d       | j                  | j                  | j                  d|       y )Nbananagrassfish)monkeycowsealrr  abcrJ   r   r  dr   otterx   elephantr  rg   r  )r   assertNotInrM   rN   )r   animalss     r   testAssertInzTest_TestCase.testAssertIn  s*   %gvFc5!a#h(e$I&'*$//UK$//9M$//
!	# 	$//1A1A3N$//1A1A1iP$//1A1A5!	#r   c           	         di i fg g ft               t               ft               t               fg}|D ]A  \  }}	 | j                  ||       	 | j                  ||d       	 | j                  ||d       C d	g fi t               ft        d
dg      t        d
dg      ft        d
dg      t        ddg      ft        dd
g      t        dd
g      fg}|D ]  \  }}| j                  | j                  | j                  ||       | j                  | j                  | j                  ||d       | j                  | j                  | j                  ||d        y # | j                  $ r | j	                  d|d|d       Y 6w xY w# | j                  $ r | j	                  d|d|d       Y Ow xY w# | j                  $ r | j	                  d|d|d       Y w xY w)N)r   r   zassertEqual(z, z) failedr   rt  z) with msg= failedz) with third parameter failedr   r  rg   rJ      rI   )set	frozensetrK   rN   r_   rM   )r   equal_pairsrr  rs  unequal_pairss        r   testAssertEqualzTest_TestCase.testAssertEqual  s   RRik*,  DAqA  A&K  A5 1"  Au-  $ BxCE{QqE
Iqe,-1Q% #qe*-QqE
C1J') "DAqd33T5E5Eq!Ld33T5E5Eq!#%d33T5E5Eq!"'  )	 "% (( A		!Q?@A (( K		AqIJK (( "		a! ""s5   EF!F3'FF'F0/F03'GGc                    | j                  g g        | j                  dd       | j                  g d       ddg g}g }| j                  t        j
                  j                  | j                   ||       | j                  t        j
                  j                  | j                   t        |      t        |             | j                  t        j
                  j                  | j                  |t        |             |j                  |       | j                  ||       | j                  t        |      t        |             | j                  |t        |             | j                  t        |      |       | j                  | j                  | j                   |t        |             | j                  | j                  | j                  t        |      |       | j                  | j                  | j                   d |       | j                  | j                  | j                  d t        |             | j                  | j                  | j                  d t        |             | j                  | j                  | j                   dd       | j                  | j                  | j                  dd       | j                  | j                  | j                  dd       | j                  i i        ddi}i }| j                  t        j
                  j                  | j                  ||       |j                  |       | j                  ||       d|d<   | j                  t        j
                  j                  | j                  ||d       | j                  | j                  | j                  d |       | j                  | j                  | j                  g |       | j                  | j                  | j                  dd       y )Nr   r   rr  rg   r  zThese are unequal)assertListEqualassertTupleEqualassertSequenceEqualrM   r:   r;   rN   tupleextendassertDictEqualupdate)r   rr  rs  r  r  s        r   testEqualityzTest_TestCase.testEquality  sE   R$b"%  R(RL(++<<..1	6(++<<..a%(	D(++<<22AuQx	A 	
Q"eAha1  E!H-  q1-$//1E1EU1X	'$//1F1F(A	'$//1E1EtQO$//1F1F(	$$//1I1Ia	*$//1E1Eq!L$//1F1F1M$//1I1IQ	  	R$1J(++<<..1	6 	
Q"#(++<<..16I	K 	$//1E1EtQO$//1E1Er1M$//1E1Eq!Lr   c                    | j                  | j                  d       dddz  z   }dddz  z   }dj                  t        j                  t        j                  |      j                         t        j                  |      j                                     }t        j                  j                  t        |      dz   fz  }t        |      dz  | _        	 | j                  ||       | j                  d	       | j!                  t              t        |             | j#                  ||       t        |      dz  | _        	 | j                  ||       | j                  d	       | j%                  t        |      t        |             | j'                  ||       d | _        	 | j                  ||       | j                  d	       | j%                  t        |      t        |             | j'                  ||       y # | j                  $ r}|j                  d
   }Y d }~)d }~ww xY w# | j                  $ r}|j                  d
   }Y d }~d }~ww xY w# | j                  $ r}|j                  d
   }Y d }~d }~ww xY w)Ni  rr  r  i   rs  
rg   rJ   z!assertSequenceEqual did not fail.r   )rK   maxDiffjoindifflibndiffpprintpformat
splitlinesr:   caseDIFF_OMITTEDlenr  r_   rN   args
assertLessr   assertGreaterr  )r   seq1seq2diffomittedert  s          r   testAssertSequenceEqualMaxDiffz,Test_TestCase.testAssertSequenceEqualMaxDiff"  s	   t,S5[ S5[ yyv~~d';'F'F'H'-~~d';'F'F'HJ K --,,D	A/??4y!|	;$$T40 II9:C#d),gs#4y1}	;$$T40 II9:3s8SY/#&	;$$T40 II9:3s8SY/#&3 $$ 	&&)C	 $$ 	&&)C	 $$ 	&&)C	sH   G: ?H&  I :H#	HH#&I5I		II9 I44I9c                 X   d| _         | j                  dd      }t        j                  j                  t        d      z  }| j                  |d|z          d | _         | j                  dd      }| j                  |d       d| _         | j                  dd      }| j                  |d       y )Nrg   r   barfoobarr  )r  _truncateMessager:   r  r  r  rK   )r   messager  s      r   testTruncateMessagez!Test_TestCase.testTruncateMessageJ  s    ''u5--,,s5z9%'/2''u5(+''u5(+r   c                     t        j                  d      }d }||_        	 |j                  i ddi       | j	                  d       y # | j
                  $ r%}| j                  t        |      d       Y d }~y d }~ww xY w)NrK   c                      yr;  r   rt  r  s     r   truncatez<Test_TestCase.testAssertDictEqualTruncates.<locals>.truncateZ      r   rg   r   zassertDictEqual did not failr   )r:   r;   r  r  r_   rN   rK   r   r   r+   r  r  s       r   testAssertDictEqualTruncatesz*Test_TestCase.testAssertDictEqualTruncatesX  sv      /	 (	6  aV, II45 $$ 	,SVU++	,s   A A;A66A;c                     t        j                  d      }d }||_        	 |j                  dd       | j	                  d       y # | j
                  $ r%}| j                  t        |      d       Y d }~y d }~ww xY w)NrK   c                      yr;  r   r  s     r   r  zATest_TestCase.testAssertMultiLineEqualTruncates.<locals>.truncatef  r  r   r   r  z!assertMultiLineEqual did not fail)r:   r;   r  assertMultiLineEqualr_   rN   rK   r   r  s       r   !testAssertMultiLineEqualTruncatesz/Test_TestCase.testAssertMultiLineEqualTruncatesd  sr      /	 (	;%%eU3 II9: $$ 	,SVU++	,s   A A9A44A9c                 p     j                   j                  d       d  _         j                  d _         j                   fd       d} j	                   j
                        5 } j                  |dz   |dz          d d d         j                  dt        j                                j                  |dz   |dz          d}d	 } j                  | _	         j                   fd
       |dz   |dz   }} j	                   j
                        5 } j                  ||       d d d         j                  dt        |j                                j                  t        |j                        |d|        j                  |dz   |dz          y # 1 sw Y   xY w# 1 sw Y   ~xY w)Ni       c                      t        d       S N_diffThresholdsetattrold_thresholdr   s   r   <lambda>z=Test_TestCase.testAssertEqual_diffThreshold.<locals>.<lambda>y      .> Nr   xxxxxxxxxxxxxxxxrr  rs  ^@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc                     t        d      )Nzthis should not be raised)SystemError)r  r  s     r   explodingTruncationzHTest_TestCase.testAssertEqual_diffThreshold.<locals>.explodingTruncation  s    9::r   c                      t        d       S )Nr  r  )old_truncater   s   r   r  z=Test_TestCase.testAssertEqual_diffThreshold.<locals>.<lambda>  s    .@, Or   z != )rK   r  r  
addCleanuprM   rN   r   r   	exceptionr  r  )r   scmr  ry  rz  r  r  s   `     @@r   testAssertEqual_diffThresholdz+Test_TestCase.testAssertEqual_diffThresholdp  st   ,,e4 ++"NO t445QWa#g. 6c3r||,-S!c'* 	;,, 3OPS!c'Bt445R$ 6c",,/0R\\*"b,ABS!c'*+ 65" 65s   ,FF,F),F5c                      j                   d _          j                   fd       d}|dz   |dz   }} j                   j                        5 } j	                  ||       d d d        d} j	                  t        j                        d|d|d	        j	                  |dz   |dz          d
}|dz   |z   |dz   |z   }} j                   j                        5 } j	                  ||       d d d        d} j	                  t        |j                        d|d|d|d|d	       d}|dz   |z   |dz   |z   }} j                   j                        5 } j	                  ||       d d d        d}d} j	                  t        |j                        d|d|d|d|d	       y # 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   YxY w)Nr   c                      t        d       S r  r  r  s   r   r  z7Test_TestCase.testAssertEqual_shorten.<locals>.<lambda>  r  r   dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr  rs  zKxxxx[35 chars]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'za' != 'zb'2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzxxxx[85 chars]xxxxxxxxxxxz' != 'dyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzxxxx[91 chars]xxxxxz6yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy[56 chars]yyyy)r  r  rM   rN   rK   r   r  )	r   r  ry  rz  r  r  pr  r  s	   `       @r   testAssertEqual_shortenz%Test_TestCase.testAssertEqual_shorten  s   ++NOS!c'Bt445R$ 6'R\\*1,EFS!c'*S1a#gkBt445R$ 6'R\\*Aq!Q,OPS1a#gkBt445R$ 6!'R\\*Aq!Q,OP' 65 65 65s$   F. F;G.F8;GGc                    t               }| j                  g dg d       | j                  g dg d       | j                  ||dddg|dd|df       | j                  g dg d       | j                  | j                  | j                  d	dgdgd
z  z   d	gd
z  ddgz          | j                  | j                  | j                  g dg d       | j                  | j                  | j                  dgddg       | j                  | j                  | j                  ddgdg       | j                  | j                  | j                  g dddg       | j                  d	dgddgdgdddgd	dgg       | j                  t	        d	dg ddg      t	        d	dg ddg             | j                  | j                  | j                  g t
        dd	ddt               g       | j                  dd	iddigddidd	ig       | j                  d	dt
        g gt
        g dd	g       | j                  | j                  | j                  g t
        g dd	ddt               g       | j                  | j                  | j                  d	ggdgg       | j                  | j                  | j                  g ddd	g       | j                  | j                  | j                  g dg d       | j                  | j                  | j                  d	ddid dgddidd g       ddhd	dhg}|d d d   }| j                  ||       t        t        j                  j                  dd            }h d}| j                  ||       t        j                  j                  g gg       }| j                  |d	dg fg       t        t        j                  j                  dd            }h d}| j                  ||       y )Nr   )rI   rJ   rg   )r   r  baz)r  r  r   rJ   rI   )rg   2rr  rr  )rr  r  Trr  rg   d   )rr  r  Trg   
      )r  r  r  r  r   Fr  y              @y               @rr  rs  )rg   rg   rJ   )rg   rg   r  rr  rr  )r  r  Trr  Taaabccdabbbcce>   r   rg   r  rg   r   r  rg   rI   rs  rI   rg   rr  )rv  assertCountEqualrM   rN   iterdivmodr  r  r:   util_count_diff_all_purposerK   _count_diff_hashable)r   rr  rs  diffsr   s        r   testAssertCountEqualz"Test_TestCase.testAssertCountEqual  s   Hi335JKq!Q1o1aA?02GH$//1F1Fa&A39,qcCi1a&.@	B$//1F1F,.A	C$//1F1F$R	*$//1F1Fr(RD	*$//1F1F&R	2 	1v1vq1EAq6Aq63JKdAq"a#34"Aq"a#34	6 	$//1F1FvsAr2y{C	E 	Qx#q2c1XQx4HIq#vr2VRa4HI$//1F1Fvr32r35A	C$//1F1F3%1#	( 	$//1F1F#aV	-$//1F1F/1F	H$//1F1FsAhd3sAhd5K	M
 UQqENddGa# HMM99)YOP?)55rdB?!Q-HMM66y)LM?)r   c                    t               }t               }| j                  ||       | j                  | j                  | j                  d |       | j                  | j                  | j                  g |       | j                  | j                  | j                  |d        | j                  | j                  | j                  |g        t        dg      }t               }| j                  | j                  | j                  ||       t        dg      }t        dg      }| j                  ||       t        dg      }t        ddg      }| j                  | j                  | j                  ||       t        dg      }t	        ddg      }| j                  | j                  | j                  ||       t        ddg      }t	        ddg      }| j                  ||       t               }d}| j                  | j                  | j                  ||       | j                  | j                  | j                  ||       t        ddg      }t        dg      }| j                  | j                  | j                  ||       y )Nrr  rs  r   )r   rg   r   )r  r  )r  assertSetEqualrM   rN   r  )r   set1set2s      r   testAssertSetEqualz Test_TestCase.testAssertSetEqual  s   uuD$'$//1D1DdDQ$//1D1Db$O$//1D1DdDQ$//1D1DdBOC5zu$//1D1DdDQC5zC5zD$'C5zC:$//1D1DdDQC5z#s$$//1D1DdDQC:#s$D$'u$//1D1DdDQ$//1D1DdDQ FF#$F8}$//1D1DdDQr   c                 
   | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                   dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       | j	                  | j
                  | j                  dd       y )	NrJ   rg   g?g      ?bugants   bugs   ant)r  assertGreaterEqualr  assertLessEqualrM   rN   r   s    r   testInequalityzTest_TestCase.testInequality  st   1a 1%1%1Q"Q"$//1C1CQJ$//1C1CQJ$//1H1H!QO$//!QG$//!QG$//1E1Eq!L 	3$S)S)S!S#&S#&$//1C1CS#N$//1C1CS#N$//1H1H#sS$//#sK$//#sK$//1E1EsCP 	5%(u-u-u%UE*UE*$//1C1CUER$//1C1CUER$//1H1H%QVW$//%O$//%O$//1E1EueT 	66*//'VV,VV,$//1C1CVVT$//1C1CVVT$//1H1H& 	"$//&&Q$//&&Q$//1E1EvvVr   c                    d}d}d}d | _         	 | j                  ||       | j                  | j                   d       y # | j                  $ r:}t	        |      j                  dd      d   }| j                  ||       Y d }~y d }~ww xY w)Nzxhttp://www.python.org/doc/2.3/lib/module-unittest.html
test case
    A test case is the smallest unit of testing. [...]
zhttp://www.python.org/doc/2.4.1/lib/module-unittest.html
test case
    A test case is the smallest unit of testing. [...] You may provide your
    own implementation that does not subclass from TestCase, of course.
a  - http://www.python.org/doc/2.3/lib/module-unittest.html
?                             ^
+ http://www.python.org/doc/2.4.1/lib/module-unittest.html
?                             ^^^
  test case
-     A test case is the smallest unit of testing. [...]
+     A test case is the smallest unit of testing. [...] You may provide your
?                                                       +++++++++++++++++++++
+     own implementation that does not subclass from TestCase, of course.
 not raisedr  rg   )r  r  r_   rN   r   splitrK   r   sample_textrevised_sample_textsample_text_errorr  errors         r   testAssertMultiLineEqualz&Test_TestCase.testAssertMultiLineEqualQ  s    

 	=%%k3FG II../{;< $$ 	7FLLq)!,E.66	7s   A   B	0BB	c                 
   d}d}d}	 | j                  ||       | j                  | j                   d       y # | j                  $ r:}t        |      j	                  dd      d   }| j                  ||       Y d }~y d }~ww xY w)Nzladen swallows fly slowlyunladen swallows fly quicklyzr- laden swallows fly slowly
?                    ^^^^
+ unladen swallows fly quickly
? ++                   ^^^^^
r  r  rg   rK   r_   rN   r   r  r  s         r   testAssertEqualSingleLinez'Test_TestCase.testAssertEqualSingleLiner  s    1<	=[*=> II../{;< $$ 	7FLLq)!,E.66	7   9 B0A==Bc                 
   d}d}d}	 | j                  ||       | j                  | j                   d       y# | j                  $ r:}t        |      j	                  dd      d   }| j                  ||       Y d}~yd}~ww xY w)zVerify when there is an empty string involved, the diff output
         does not treat the empty string as a single empty line. It should
         instead be handled as a non-line.
         r  z+ unladen swallows fly quickly
r  r  rg   Nr  r  s         r   testAssertEqualwithEmptyStringz,Test_TestCase.testAssertEqualwithEmptyString  s    
 <	=[*=> II../{;< $$ 	7FLLq)!,E.66	7r  c                 
   d}d}d}	 | j                  ||       | j                  | j                   d       y# | j                  $ r:}t        |      j	                  dd      d   }| j                  ||       Y d}~yd}~ww xY w)zVerifying format of diff output from assertEqual involving strings
         with multiple lines, but missing the terminating newline on both.
        zladen swallows
fly sloelyladen swallows
fly slowlyzA  laden swallows
- fly sloely
?        ^
+ fly slowly
?        ^
r  r  rg   Nr  r  s         r   4testAssertEqualMultipleLinesMissingNewlineTerminatorzBTest_TestCase.testAssertEqualMultipleLinesMissingNewlineTerminator  s     3:	=[*=> II../{;< $$ 	7FLLq)!,E.66	7r  c                 
   d}d}d}	 | j                  ||       | j                  | j                   d       y# | j                  $ r:}t        |      j	                  dd      d   }| j                  ||       Y d}~yd}~ww xY w)zVerifying format of diff output from assertEqual involving strings
         with multiple lines and mismatched newlines. The output should
         include a - on it's own line to indicate the newline difference
         between the two strings
        zladen swallows
fly sloely
r#  zD  laden swallows
- fly sloely
?        ^
+ fly slowly
?        ^
- 
r  r  rg   Nr  r  s         r   9testAssertEqualMultipleLinesMismatchedNewlinesTerminatorszGTest_TestCase.testAssertEqualMultipleLinesMismatchedNewlinesTerminators  s     5:	=[*=> II../{;< $$ 	7FLLq)!,E.66	7r  c                 (    t         j                  j                  r fd}nd } |       5   j                   j                        5   j                  dd       d d d        d d d         |       5   j                  dd       d d d        ddg}ddg} |       5   j                   j                        5   j                  ||       d d d        d d d         |       5   j                   j                        5   j                  t        |      t        |             d d d        d d d         |       5   j                   j                        5   j                  |t        |             d d d        d d d         |       5   j                   j                        5   j                  t        |      |       d d d        d d d         |       5   j                   j                        5   j                  dd       d d d        d d d         |       5   j                   j                        5   j                  t        |      t        |             d d d        d d d         j                   j                        5   j                  |t        |             d d d         j                   j                        5   j                  t        |      |       d d d        ddg}dg} j                   j                        5   j                  ||       d d d         j                   j                        5   j                  t        |      t        |             d d d         j                   j                        5   j                  |t        |             d d d         j                   j                        5   j                  t        |      |       d d d         j                   j                        5   j                  t        |      t        |             d d d        dg}ddg} j                   j                        5   j                  ||       d d d         j                   j                        5   j                  t        |      t        |             d d d         j                   j                        5   j                  |t        |             d d d         j                   j                        5   j                  t        |      |       d d d         j                   j                        5   j                  t        |      t        |             d d d         |       5   j                   j                        5   j                  ddiddi       d d d        d d d         j                   j                        5   j                  i ddi       d d d         j                   j                        5   j                  ddii        d d d         j                   j                        5   j                  ddgg d       d d d         |       5   j                  ddgddg       d d d         |       5   j                   j                        5   j                  ddgddg       d d d        d d d         |       5   j                   j                        5   j                  ddg gddg g       d d 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   xY w# 1 sw Y   TxY w# 1 sw Y   Yx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   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   Rx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   zxY w# 1 sw Y   Hx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   ZxY w# 1 sw Y   Ax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                  0     j                  t        d      S )Nz#Comparison between bytes and string)assertWarnsRegexBytesWarningr   s   r   bytes_warningz=Test_TestCase.testEqualityBytesWarning.<locals>.bytes_warning  s    ,,\AC Cr   c                  *    t        j                         S r   )
contextlib	ExitStackr   r   r   r+  z=Test_TestCase.testEqualityBytesWarning.<locals>.bytes_warning  s    !++--r   rr     ar   )r/  r/  r/  )sysflagsr+  rM   rN   rK   assertNotEqualr  r  r  r  r  r  r  r  )r   r+  rr  rs  s   `   r   testEqualityBytesWarningz&Test_TestCase.testEqualityBytesWarning  sY   99""C. _d//0E0EFS$' G__T*  HI_d//0E0EF  A& G__d//0E0EF!!%(E!H5 G__d//0E0EF$$Qa1 G__d//0E0EF$$U1Xq1 G__d//0E0EF$$S$/ G__d//0E0EFAA/ G_ t445  E!H- 6t445!!%(A. 6 ICt445  A& 6t445!!%(E!H5 6t445$$Qa1 6t445$$U1Xq1 6t445AA/ 6 CIt445  A& 6t445!!%(E!H5 6t445$$Qa1 6t445$$U1Xq1 6t445AA/ 6 _d//0E0EF  #qD!95 G_t445  dAY/ 6t445  $B/ 6 t445!!4,0BC 6_!!3+T{; _d//0E0EF!!3*tTl; G__d//0E0EF!!3R.4r2BC G__A GF___
 GF__FF__FF__FF__FF__FF__ 6555
 6555555555
 6555555555 GF__5555 65_FF__FF__s3  ]\4]2]](8]]("^>%]5#^:^^2^	^6%^)^6_4___*:%__*
_7	``%``+`8%aa%aa,a9%b
b &b=b (b- b:c>c$c. c!c..d
c;#d4\>	9]]]]%	 ]((]25]?	:^^^	^^&)^3	.^66_ _	___'	"_**_47````(+`58aaaa),a69bbb	b  b*-b7:ccc!c+	&c..c8;d	 ddc                     | j                  d        | j                  | j                  | j                   d       | j                  d       | j                  | j                  | j                  d        y )NFzDjZoPloGears on Rails)rc  rM   rN   assertIsNotNoner   s    r   testAssertIsNonezTest_TestCase.testAssertIsNone  s[    $$//1B1BEJ45$//1E1EtLr   c                 x    | j                  dd       | j                  | j                  | j                   dd       y )N
asdfabasdfzab+saaasaaaa)assertRegexrM   rN   r   s    r   testAssertRegexzTest_TestCase.testAssertRegex  s5    v.$//1A1A!7	,r   c                 2    G d dt               fd}| j                  |       | j                  t        f|       | j                  t        t        dd       | j                  | j                        5  | j                  d        d d d        | j                  t
              5  | j                  d        d d d        | j                        5  | j                  t        |       d d d        y # 1 sw Y   jxY w# 1 sw Y   FxY w# 1 sw Y   y xY w)Nc                       e Zd Zy)=Test_TestCase.testAssertRaisesCallable.<locals>.ExceptionMockNr   r   r    r   r   r   ExceptionMockr?        r   rA  c                        d      N	We expectr   rA  s   r   Stubz4Test_TestCase.testAssertRaisesCallable.<locals>.Stub       ,,r   19   basec                       yNr   r   r   r   r   r  z8Test_TestCase.testAssertRaisesCallable.<locals>.<lambda>)      Qr   )	ExceptionrM   r`   intrN   	TypeErrorr   rG  rA  s     @r   testAssertRaisesCallablez&Test_TestCase.testAssertRaisesCallable  s    	I 		--.:}5t<*c4a8t445mY7 6 y)mT2 * }-j$/ .- 65 *) .-s$   8C5)DD5C>D
Dc                 n    G d dt               fd}| j                        5   |        d d d        | j                  t        f      5 } |        d d d        | j                  j                         | j                  |j                  j                  d   d       | j                  t              5  t        dd       d d d        | j                  | j                        5  | j                        5  	 d d d        d d d        | j                  | j                  d	      5  | j                  d	
      5  	 d d d        d d d        | j                  t        d	      5  | j                  d      5  	 d d d        d d d        | j                        5  | j                  t        |       d d d        y # 1 sw Y   xY w# 1 sw Y   ux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   xY w# 1 sw Y   y xY w)Nc                       e Zd Zy)<Test_TestCase.testAssertRaisesContext.<locals>.ExceptionMockNr@  r   r   r   rA  rW  2  rB  r   rA  c                        d      rD  r   rF  s   r   rG  z3Test_TestCase.testAssertRaisesContext.<locals>.Stub4  rH  r   r   rE  rI  rJ  rK  r  r  *   r  )rP  rM   r`   rK  r  rK   r  rQ  rN   assertRaisesRegexrR  )r   rG  r  rA  s      @r   testAssertRaisesContextz%Test_TestCase.testAssertRaisesContext1  s   	I 		-}-F . 
M:;rF < 	bllM:**1-{;z*1 + t445""=1 2 6 ##D$9$98D""=h"? @ E ##Ix8""="< = 9 }-j$/ .-1 .- <; +* 21 65
 @? ED
 =< 98 .-s   F<G	8G)G/;G#=G/)H=G;?H%H9H;HH+<G	GG #G,	(G//G8;H	 HHH	HH(+H4c                 x   | j                  t              5  | j                          d d d        | j                  t              5  | j                  d       d d d        | j                  t              5  | j                  t               d d d        | j                  t              5  | j                  t        df       d d d        | j                  t              5  | j                  t        t        f       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   gxY w# 1 sw Y   y xY wr   )rM   rR  rv  r`   r   s    r   testAssertRaisesNoExceptionTypez-Test_TestCase.testAssertRaisesNoExceptionTypeQ  s    y) *y)a  *y)f% *y)z1o. *y)z623 *) *)))))))))s;   D D3D&D$D0 D	DD!$D-0D9c                     d }t        j                  |      }| j                  t        |       | j	                  |t        j                  |             y )Nc                  6    	 t         # t         $ r t         w xY wr   )r`   r   r   r   funcz4Test_TestCase.testAssertRaisesRefcount.<locals>.func`  s"    !   !  !s    )r0  getrefcountrM   r`   rK   )r   ra  refcounts      r   testAssertRaisesRefcountz&Test_TestCase.testAssertRaisesRefcount]  s@    	! ??4(*d+3??4#89r   c                     G d dt               fd}| j                  t        j                  d      |       | j                  d|       | j	                  t
              5  | j                  dd        d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy):Test_TestCase.testAssertRaisesRegex.<locals>.ExceptionMockNr@  r   r   r   rA  rg  k  rB  r   rA  c                        d      rD  r   rF  s   r   rG  z1Test_TestCase.testAssertRaisesRegex.<locals>.Stubn  rH  r   zexpect$)rP  r[  recompilerM   rR  rS  s     @r   testAssertRaisesRegexz#Test_TestCase.testAssertRaisesRegexj  so    	I 		- 	}bjj.CTJ}i>y)""=)TB *))s   $BB
c           	      V   | j                  | j                  d| j                   t        t        j                  d      d        | j                  | j                  d| j                   t        dd        | j                  | j                  d      5  | j                  t        dd      5  	 d d d        d d d        | j                  t
        d      5  | j                  t        dd	      5  	 d d d        d d d        y # 1 sw Y   SxY w# 1 sw Y   WxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)
Nz"^Exception not raised by <lambda>$r  c                       y r   r   r   r   r   r  z8Test_TestCase.testAssertNotRaisesRegex.<locals>.<lambda>z      r   c                       y r   r   r   r   r   r  z8Test_TestCase.testAssertNotRaisesRegex.<locals>.<lambda>~  rn  r   r  expectr  rY  rZ  )r[  rN   rP  ri  rj  rR  r   s    r   testAssertNotRaisesRegexz&Test_TestCase.testAssertNotRaisesRegexv  s    %%'K&&	2::c?	 	%%'K&&	3	
 ##D$9$98D''	8'J K E ##Ix8''	8B'G H 98 KJ ED
 HG 98sH   D'C;)DD(D*D;D	 DDD	DD(c                 h     G d dt               }| j                  t        | j                  |d        y )Nc                       e Zd Zy)>Test_TestCase.testAssertRaisesRegexInvalidRegex.<locals>.MyExcNr@  r   r   r   MyExcrt    rB  r   ru  c                       yNTr   r   r   r   r  zATest_TestCase.testAssertRaisesRegexInvalidRegex.<locals>.<lambda>      Dr   )rP  rM   rR  r[  )r   ru  s     r   !testAssertRaisesRegexInvalidRegexz/Test_TestCase.testAssertRaisesRegexInvalidRegex  s(    	I 	)T%;%;ULQr   c                 h     G d dt               }| j                  t        | j                  |d        y )Nc                       e Zd Zy)>Test_TestCase.testAssertWarnsRegexInvalidRegex.<locals>.MyWarnNr@  r   r   r   MyWarnr|    rB  r   r}  c                       yrw  r   r   r   r   r  z@Test_TestCase.testAssertWarnsRegexInvalidRegex.<locals>.<lambda>  rx  r   )WarningrM   rR  r)  )r   r}  s     r    testAssertWarnsRegexInvalidRegexz.Test_TestCase.testAssertWarnsRegexInvalidRegex  s(    	W 	)T%:%:FLQr   c                 F    G d dt         j                        } |d      t        j                  d<   	 | j	                  t
        t        j                  d       t        j                  d= t        j                  d= y # t        j                  d= t        j                  d= w xY w)Nc                       e Zd Zed        Zy):Test_TestCase.testAssertWarnsModifySysModules.<locals>.Fooc                 *    dt         j                  d<   y )Nr  @bar@)r0  modulesr   s    r   __warningregistry__zNTest_TestCase.testAssertWarnsModifySysModules.<locals>.Foo.__warningregistry__  s    ',G$r   N)r   r   r    propertyr  r   r   r   r!   r    s    - -r   r!   r   z@foo@r   r  )types
ModuleTyper0  r  r   UserWarningwarningswarnri   s     r   testAssertWarnsModifySysModulesz-Test_TestCase.testAssertWarnsModifySysModules  sw    	-%"" 	-
  #5zG	%[(--DG$G$ G$G$s   %A< <$B c           	          d }| j                  | j                  d| j                   t        d|       | j                  | j                  d| j                   t        t        j                  d      |       y )Nc                      t        d      N
Unexpected)rP  r   r   r   rG  z9Test_TestCase.testAssertRaisesRegexMismatch.<locals>.Stub  s    L))r   z*"\^Expected\$" does not match "Unexpected"z
^Expected$)r[  rN   rP  ri  rj  )r   rG  s     r   testAssertRaisesRegexMismatchz+Test_TestCase.testAssertRaisesRegexMismatch  sh    	* 	%%=&&	<		
 	%%=&&	

<($		0r   c                     G d dt               fd}d}| j                        }|5   ||       d d d        |j                  }| j                  |       | j	                  |j
                  d   |       y # 1 sw Y   GxY w)Nc                       e Zd Zy)=Test_TestCase.testAssertRaisesExcValue.<locals>.ExceptionMockNr@  r   r   r   rA  r    rB  r   rA  c                      |       r   r   )r   rA  s    r   rG  z4Test_TestCase.testAssertRaisesExcValue.<locals>.Stub  s    $$r   zparticular valuer   )rP  rM   r  rK  rK   r  )r   rG  vctxr  rA  s        @r   testAssertRaisesExcValuez&Test_TestCase.testAssertRaisesExcValue  sq    	I 		%.G MMa/A&	 Ss   	A::Bc                     | j                  t              5  | j                          d d d        | j                  t              5  | j                  t               d d d        | j                  t              5  | j                  dd       d d d        | j                  t              5  | j                  t        d       d d d        | j                  t              5  | j                  t        dfd       d d d        | j                  t              5  | j                  t        t        f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   uxY w# 1 sw Y   y xY wNrg   rp  )rM   rR  r[  r`   rv  r   s    r   $testAssertRaisesRegexNoExceptionTypez2Test_TestCase.testAssertRaisesRegexNoExceptionType  s   y)""$ *y)"":. *y)""1h/ *y)""684 *y)""J?H= *y)""J#7B *) *)))))))))))sG   D7E7E'EE(E47EEEE%(E14E=c                    d }| j                  t        |       | j                  t        |       | j                  t        t        f|       | j                  t        t        j                  dt               | j                  | j                        5  | j                  t        d        d d d        | j                  t              5  | j                  t        d        d d d        t        j                         5  t        j                  dt               | j                  | j                        5  | j                  t        |       d d d        d d d        t        j                         5  t        j                  dt               | j                  t              5  | j                  t        |       d d 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   CxY w# 1 sw Y   y xY w)Nc                  8    t        j                  dt               y r;  r  r  r   r   r   r   _runtime_warnz<Test_TestCase.testAssertWarnsCallable.<locals>._runtime_warn      MM%0r   r   categoryc                       yrN  r   r   r   r   r  z7Test_TestCase.testAssertWarnsCallable.<locals>.<lambda>  rO  r   defaultr  )
r   r   r   r  r  rM   rN   rR  catch_warningssimplefilterr   r  s     r   testAssertWarnsCallablez%Test_TestCase.testAssertWarnsCallable  s}   	1 	77,n=}M! 	 	H t445^Y7 6 y)^T2 * $$&!!)^<""4#8#89  !3]C : ' $$&!!'>:"">2  !3]C 3 '& 65 *) :9 '& 32 '&s`   GG:6G(0GG(+0H G42H GGG%	!G((G14G=	9H  H	c                    d }t        j                  |      d   }| j                  t              5 } |        d d d        | j                  t        t        f      5 } |        d d d        | j                  j                  t               | j                  |j                  j                  d   d       | j                  d|j                         | j                  |j                  |dz          | j                  t              5   |         |        d d d        | j                  t              5  t        j                  dt               d d d        | j                  | j                        5  | j                  t              5  	 d d d        d d d        | j!                  | j                  d      5  | j                  t        d      5  	 d d d        d d d        | j!                  t"        d      5  | j                  t        d	
      5  	 d d d        d d d        t        j$                         5  t        j&                  dt               | j                  | j                        5  | j                  t              5   |        d d d        d d d        d d d        t        j$                         5  t        j&                  dt               | j                  t              5  | j                  t              5   |        d d d        d d 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   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   uxY w# 1 sw Y   zx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                  8    t        j                  dt               y r;  r  r   r   r   r  z;Test_TestCase.testAssertWarnsContext.<locals>._runtime_warn  r  r   rg   r   r   test_case.pyr  r  r  rY  rZ  r  r  )inspectgetsourcelinesr   r   r   rK  r   rK   r  r   r   linenor  r  rM   rN   r[  rR  r  r  r   r  _runtime_warn_linenor  s       r   testAssertWarnsContextz$Test_TestCase.testAssertWarnsContext  s   	1&55mDQGn-O . 1>BCrO D 	bjj.9+U3nbkk2$81$<=n-OO . n-MM%.9 . t445!!.1 2 6 ##D$9$98D!!.h!? @ E ##Ix8!!.!< = 9 $$&!!)^<""4#8#89%%&89!O : : ' $$&!!'>:"">2%%&89!O : 3 '&I .- DC .- .- 21 65
 @? ED
 =< 98 :9 :9 '& :9 32 '&s  LL&L31M 0MMM4M4M'M44NNN26N5(N(>NN(N520O"O8O OOL#&L03L= M
M	MM$'M1	,M44M>N	NNN% N((N2	-N55N?OOO	OO#c                    | j                  t              5  | j                          d d d        | j                  t              5  | j                  d       d d d        | j                  t              5  | j                  t               d d d        | j                  t              5  | j                  t        df       d d d        | j                  t              5  | j                  t        t        f       d d d        | j                  t              5  | j                  t        t
        f       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   txY w# 1 sw Y   y xY wr   )rM   rR  r   rv  r  rP  r   s    r   testAssertWarnsNoExceptionTypez,Test_TestCase.testAssertWarnsNoExceptionType  s   y) *y)Q *y)V$ *y)k1-. *y)k623 *y)k956 *) *)))))))))))sG   D9E3E&EE*E69EEEE'*E36E?c                    d }| j                  t        d|d       | j                  | j                        5  | j                  t        dd        d d d        | j                  t              5  | j                  t        dd        d d d        t        j                         5  t        j                  dt               | j                  | j                        5  | j                  t        d|d       d d d        d d d        | j                  | j                        5  | j                  t        d|d       d d d        t        j                         5  t        j                  dt               | j                  t        | j                  f      5  | j                  t        d|d       d d d        d d d        y # 1 sw Y   hx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   PxY w# 1 sw Y   y xY w)Nc                 8    t        j                  | t               y r   r  r  s    r   r  zATest_TestCase.testAssertWarnsRegexCallable.<locals>._runtime_warn*      MM#~.r   o+fooxc                       yrN  r   r   r   r   r  z<Test_TestCase.testAssertWarnsRegexCallable.<locals>.<lambda>1  s    !r   r  barzr  )	r)  r   rM   rN   rR  r  r  r  r   r  s     r   testAssertWarnsRegexCallablez*Test_TestCase.testAssertWarnsRegexCallable)  s   	/nd+V	5 t445!!.$"+- 6 y)!!.$= * $$&!!)^<""4#8#89%%&8$&3V= : ' t445!!.$"/9 6 $$&!!'>:""ND4I4I#JK%%nd&3V= L '&+ 65 *) :9 '& 65 LK '&sk   F6-G!6GG0GG(<H G4%H 6G GG	GG%(G14G=	9H  H	c                 R   d }t        j                  |      d   }| j                  t        d      5 } |d       d d d        | j	                  j
                  t               | j                  |j
                  j                  d   d       | j                  d|j                         | j                  |j                  |dz          | j                  | j                        5  | j                  t        d      5  	 d d d        d d d        | j                  | j                  d      5  | j                  t        dd      5  	 d d d        d d d        | j                  t        d      5  | j                  t        dd	
      5  	 d d d        d d d        t        j                          5  t        j"                  dt               | j                  | j                        5  | j                  t$        d      5   |d       d d d        d d d        d d d        | j                  | j                        5  | j                  t        d      5   |d       d d d        d d d        t        j                          5  t        j"                  dt               | j                  t        | j                  f      5  | j                  t        d      5   |d       d d d        d d 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   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   Nx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                 8    t        j                  | t               y r   r  r  s    r   r  z@Test_TestCase.testAssertWarnsRegexContext.<locals>._runtime_warnL  r  r   rg   r  r  r   r  r  r  rY  rZ  r  r  r  )r  r  r)  r   rK  r   rK   r  r   r   r  rM   rN   r[  rR  r  r  r  r   r  s       r   testAssertWarnsRegexContextz)Test_TestCase.testAssertWarnsRegexContextJ  s   	/&55mDQG"">48B&! 9bjj.9+V4nbkk2$81$<=t445&&~t< = 6 ##D$9$98D&&~t&J K E ##Ix8&&~tB&G H 9 $$&!!)^<""4#8#89**+=tD!&) E : ' t445&&~t<f% = 6 $$&!!'>:""ND4I4I#JK**>4@!&) A L '&C 98 =< 65
 KJ ED
 HG 98 ED :9 '& =< 65 A@ LK '&s  	K)"L9K6;L'L LL(L7L*L7'6MM4	M=MM0M8	M+M84<N0N	NNN)K36L 	;LLL	LL'*L4	/L77MM	MM	MM(+M5	0M88NN
NN	NN&c                    | j                  t              5  | j                          d d d        | j                  t              5  | j                  t               d d d        | j                  t              5  | j                  dd       d d d        | j                  t              5  | j                  t        d       d d d        | j                  t              5  | j                  t        dfd       d d d        | j                  t              5  | j                  t        t        fd       d d d        | j                  t              5  | j                  t        t
        fd       d d d        y # 1 sw Y   Lx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r  )rM   rR  r)  r  rv  rP  r   s    r   #testAssertWarnsRegexNoExceptionTypez1Test_TestCase.testAssertWarnsRegexNoExceptionTypev  s6   y)!!# *y)!!+. *y)!!!X. *y)!!&(3 *y)!!;"2H= *y)!!;"7B *y)!!;	":HE *) *)))))))))))))sS   E1E>7F'FF$F0F<1E;>FFF!$F-0F9<Gc              #      K   t               5 }d  d d d        | j                  j                         d       y # 1 sw Y   *xY ww)Nr   )r
   rK   getvalue)r   bufs     r   assertNoStderrzTest_TestCase.assertNoStderr  s4     # , s   A;)AA Ac                    | j                  t        |      t        |             t        ||      D ]Y  \  }}| j                  |t        j
                         |j                         D ]!  \  }}| j                  t        ||      |       # [ y r   )rK   r  ziprK  logging	LogRecorditemsgetattr)r   recordsmatchesrecmatchkr  s          r   assertLogRecordszTest_TestCase.assertLogRecords  so    Ws7|4gw/JC!!#w'8'891  a!4 & 0r   c                 d   | j                         5  | j                         5 }t        j                  d       t        j                  d       d d d        | j                  j                  dg       | j                  |j                  ddig       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)N1r  
INFO:foo:1namer   )
r  
assertLogslog_fooinfo
log_foobarr$  rK   outputr  r  r   r  s     r   testAssertLogsDefaultsz$Test_TestCase.testAssertLogsDefaults  s      ""bS!  % # RYY7!!"**.?@ #""" #"s#   B&+BAB&B#	B&&B/c                    | j                         5  | j                         5 }t        j                  d       t        j                  d       t        j                  d       d d d        | j                  j                  ddg       | j                  |j                  ddiddig       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)	Nr  r  3r  WARNING:quux:3r  r   r   r  r  r  r  r  r$  log_quuxr   rK   r  r  r  r  s     r   !testAssertLogsTwoMatchingMessagesz/Test_TestCase.testAssertLogsTwoMatchingMessages  s      ""bS!  %  % # RYY7G(HI!!"**%+UOff5E#FH #""" #"s$   B?A B3"AB?3B<	8B??Cc                    | j                         5  | j                  |      5 }t        j                  d       t        j                  d       t        j                  d       d d d        | j                  j                  ddg       | j                  |j                  ddidd	ig       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)
Nlevelr  r  r  zERROR:foo.bar:2zCRITICAL:quux:3r  r   r   )r  r  r  r   r  r  r  criticalrK   r  r  r  )r   r  r  s      r   checkAssertLogsPerLevelz%Test_TestCase.checkAssertLogsPerLevel  s      "u-$  %!!#& . RYY):<M(NO!!"**%+Y$7&&9I#JL #"-- #"s$   CA B5$AC5B>	:CC
c                 d    | j                  t        j                         | j                  d       y )NERROR)r  r  r  r   s    r   testAssertLogsPerLevelz$Test_TestCase.testAssertLogsPerLevel  s"    $$W]]3$$W-r   c                 $   | j                         5  | j                  d      5 }| j                  |d      5 }t        j                  d       t        j                  d       t        j                  d       d d d        | j                  j                  ddg       | j                  |j                  dd	idd
ig       d d d        | j                  j                  dg       d d d        y # 1 sw Y   wxY w# 1 sw Y   ;xY w# 1 sw Y   y xY w)NDEBUGr  r  r  r  r  zDEBUG:foo.bar:2r  r   r   r  r  )r   loggerouter_cmr  s       r   checkAssertLogsPerLoggerz&Test_TestCase.checkAssertLogsPerLogger  s      "w/8__V7_;rLL%$$S)$$S) <   \;L,MN%%bjj)/&)9L'MO 0 X__/?.@A #";; 0/ #"s;   DC:A C.8AC: %D.C73C::D	?DDc                 n    | j                  t        j                  d             | j                  d       y r;  )r  r  	getLoggerr   s    r   testAssertLogsPerLoggerz%Test_TestCase.testAssertLogsPerLogger  s)    %%g&7&7&>?%%e,r   c                     | j                         5  | j                  | j                        5  | j                         5  	 d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY wr   )r  rM   rN   r  r   s    r   testAssertLogsFailureNoLogsz)Test_TestCase.testAssertLogsFailureNoLogs  sZ      """4#8#89__& ' : #"&& :9 #"s9   A1A%A A%A1A"A%%A.	*A11A:c                 &   | j                         5  | j                  | j                        5  | j                  d      5  t        j                  d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY wNWARNINGr  r  )r  rM   rN   r  r  r  r   s    r   !testAssertLogsFailureLevelTooHighz/Test_TestCase.testAssertLogsFailureLevelTooHigh  sg      """4#8#89__9_5LL% 6 : #"55 :9 #"s:   BA; A/A;B/A84A;;B	 BBc                    | j                         5  t        j                  }t        j                  t        j
                         	 | j                  | j                        5  | j                  d      5  t        j                  d       d d d        d d d        t        j                  |       	 d d d        y # 1 sw Y   0xY w# 1 sw Y   4xY w# t        j                  |       w xY w# 1 sw Y   y xY wr  )
r  r  r  setLevelr  INFOrM   rN   r  r  )r   oldLevels     r   4testAssertLogsFailureLevelTooHigh_FilterInRootLoggerzBTest_TestCase.testAssertLogsFailureLevelTooHigh_FilterInRootLogger  s      "}}HW\\*+&&t'<'<=y9S) : >   * #"
 :9 >=   * #"sS   4C+C!C4B9
CCC+9C>CC	
CC((C++C4c                 *   | j                  dd      5  | j                  | j                        5  | j                  d      5  t        j	                  d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r  r  r   r  )r  rM   rN   r  r  r   s    r   &testAssertLogsFailureMismatchingLoggerz4Test_TestCase.testAssertLogsFailureMismatchingLogger  sk     __V7_3""4#8#89__U+NN3' , : 43++ :9 43s:   B	A=A1A= B	1A:6A==B	B		Bc                     | j                  t              5  | j                         5  t        d      # 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY wr  )rM   ZeroDivisionErrorr  r   s    r   !testAssertLogsUnexpectedExceptionz/Test_TestCase.testAssertLogsUnexpectedException  s>    01"'55 #"" 211   A	3<	A		Ac                 L   | j                  | j                        5 }| j                         5  t        j	                  d       t
        j                  d       d d d        d d d        | j                  t        j                        d       y # 1 sw Y   7xY w# 1 sw Y   ;xY w)Nr  r  z%Unexpected logs found: ['INFO:foo:1'])
rM   rN   assertNoLogsr  r  r  r$  rK   r   r  r  s     r   testAssertNoLogsDefaultz%Test_TestCase.testAssertNoLogsDefault  sy    t445""$S!  % % 6 	3	
 %$ 65"   B+BBB	BB#c                 L   | j                  | j                        5 }| j                         5  t        j	                  d       t
        j	                  d       d d d        d d d        | j                  t        j                        d       y # 1 sw Y   7xY w# 1 sw Y   ;xY w)Nr  r   z8Unexpected logs found: ['ERROR:quux:1', 'ERROR:foo:foo'])	rM   rN   r  r  r  r  rK   r   r  r  s     r    testAssertNoLogsFailureFoundLogsz.Test_TestCase.testAssertNoLogsFailureFoundLogs  sw    t445""$s#e$ % 6
 	F	
	 %$ 65r  c                 "   | j                         5  | j                  t              5  | j                  t              5  t        j                  d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  )r  r  r  r  r  r  r   s    r   testAssertNoLogsPerLoggerz'Test_TestCase.testAssertNoLogsPerLogger  sb      "*&&g&6NN3' 7 + #"66 +* #"s9   BA9A-A9B-A62A99B	>BBc                    | j                  | j                        5 }| j                  t              5  | j	                  t
              5  t        j                  d       t        j                  d       d d d        d d d        d d d        | j                  t        j                        d       y # 1 sw Y   ?xY w# 1 sw Y   CxY w# 1 sw Y   GxY w)Nr  r  r  z)Unexpected logs found: ['INFO:foo.bar:2'])rM   rN   r  r  r  r  r  r  r  rK   r   r  r  s     r    testAssertNoLogsFailurePerLoggerz.Test_TestCase.testAssertNoLogsFailurePerLogger  s     t445*&&g&6NN3'OOC( 7 + 6
 	7	
 76 +* 65s:   C
B>	+B24B><C
2B;7B>>C	C

Cc                     | j                         5  | j                  d      5  t        j                  d       t        j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  r   r  )r  r  r  r  r  r$  r   s    r   testAssertNoLogsPerLevelz&Test_TestCase.testAssertNoLogsPerLevel  sT      """"1U#s# 2 #"11 #"s"   A,+A A, A)	%A,,A5c                 P   | j                  | j                        5 }| j                  d      5  t        j	                  d       t
        j	                  d       d d d        d d d        | j                  t        j                        d       y # 1 sw Y   7xY w# 1 sw Y   ;xY w)Nr  r  r   r  z8Unexpected logs found: ['DEBUG:foo:foo', 'DEBUG:quux:1'])	rM   rN   r  r  r$  r  rK   r   r  r  s     r   testAssertNoLogsFailurePerLevelz-Test_TestCase.testAssertNoLogsFailurePerLevel  s|    t445"""1e$s# 2 6 	F	
 21 65s"   B+BBB	BB%c                     | j                  t              5  | j                         5  t        d      # 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY wr  )rM   r  r  r   s    r   #testAssertNoLogsUnexpectedExceptionz1Test_TestCase.testAssertNoLogsUnexpectedException*  s@    01""$'55 %$$ 211r  c                 r    | j                         5 }	 d d d        | j                         y # 1 sw Y   xY wr   )r  rc  )r   values     r   testAssertNoLogsYieldsNonez(Test_TestCase.testAssertNoLogsYieldsNone0  s/     E !%  ! s   -6c                     g d}|D ],  }| j                  t              5  t        | |       ddd       . y# 1 sw Y   9xY w)z:Test that the deprecated fail* methods get removed in 3.12)failIfEqualfailUnlessEqualfailUnlessAlmostEqualfailIfAlmostEqual
failUnlessfailUnlessRaisesfailIfassertNotEqualsassertEqualsassertAlmostEqualsassertNotAlmostEqualsassert_assertDictContainsSubsetassertRaisesRegexpassertRegexpMatchesN)rM   rO   r  )r   deprecated_namesdeprecated_names      r   testDeprecatedFailMethodsz'Test_TestCase.testDeprecatedFailMethods5  s=    
  0O"">2o. 32  022s	   7A 	c                 \     G d dt         j                        } |d      }t        |       y )Nc                       e Zd Zd Zy)0Test_TestCase.testDeepcopy.<locals>.TestableTestc                      y r   r   r   s    r   testNothingz<Test_TestCase.testDeepcopy.<locals>.TestableTest.testNothingE  ro   r   N)r   r   r    r0  r   r   r   TestableTestr.  D  rq   r   r1  r0  )r:   r;   r   )r   r1  r+   s      r   testDeepcopyzTest_TestCase.testDeepcopyB  s)    	8,, 	 M* 	r   c                 0   t        j                  d      }t        t        j                  dz         D ]b  }t        j
                  ||      }t        j                  |      }| j                  ||       |j                  t               t                      d y )NrP   rg   )protocol)	r:   r;   rangepickleHIGHEST_PROTOCOLdumpsloadsrK   r  )r   r+   r4  pickled_testunpickled_tests        r   
testPicklezTest_TestCase.testPickleM  st    
   'f559:H "<<x@L#\\,7NT>2 &&suce4 ;r   c                    ddd  G fddt         j                        } G fddt         j                        } G fddt         j                        } G fd	d
t         j                        }||||fD ]6  }| j                  t              5   |d      j	                          d d d        8 y # 1 sw Y   CxY w)Nc                     t         r   )KeyboardInterruptr   s    r   _raisez3Test_TestCase.testKeyboardInterrupt.<locals>._raise_  s    ##r   c                      y r   r   r   s    r   nothingz4Test_TestCase.testKeyboardInterrupt.<locals>.nothinga      r   c                       e Zd ZW  Zy)2Test_TestCase.testKeyboardInterrupt.<locals>.Test1Nr   r   r    test_somethingr@  s   r   Test1rE  d      #Nr   rI  c                       e Zd ZW  ZW Zy)2Test_TestCase.testKeyboardInterrupt.<locals>.Test2Nr   r   r    r2   rG  r@  rB  s   r   Test2rL  g      E$Nr   rO  c                       e Zd ZW ZW  Zy)2Test_TestCase.testKeyboardInterrupt.<locals>.Test3Nr   r   r    rG  r7   rN  s   r   Test3rR  k      $NHr   rT  c                       e Zd Z fdZy)2Test_TestCase.testKeyboardInterrupt.<locals>.Test4c                 (    | j                         y r   r  r   r@  s    r   rG  zATest_TestCase.testKeyboardInterrupt.<locals>.Test4.test_somethingp      'r   NrF  rH  s   r   Test4rW  o      (r   r\  rG  r   )r:   r;   rM   r?  rP   )r   rI  rO  rT  r\  klassr@  rB  s         @@r   testKeyboardInterruptz#Test_TestCase.testKeyboardInterrupt^  s    	$		$H%% 	$	%H%% 	%	H%% 		(H%% 	( UE51E""#45&'++- 65 255s   B88C	c                    ddd  G fddt         j                        } G fddt         j                        } G fddt         j                        } G fd	d
t         j                        }||||fD ]n  }t        j                         } |d      j                  |       | j	                  t        |j                        d       | j	                  |j                  d       p y )Nc                 ,    t        j                  d      )Nzsome reason)r:   SkipTestr   s    r   _skipz3Test_TestCase.testSkippingEverywhere.<locals>._skipx  s    ##M22r   c                      y r   r   r   s    r   rB  z5Test_TestCase.testSkippingEverywhere.<locals>.nothingz  rC  r   c                       e Zd ZW  Zy)3Test_TestCase.testSkippingEverywhere.<locals>.Test1NrF  rc  s   r   rI  rf  }  s    "Nr   rI  c                       e Zd ZW  ZW Zy)3Test_TestCase.testSkippingEverywhere.<locals>.Test2NrM  rc  rB  s   r   rO  ri    s    E$Nr   rO  c                       e Zd ZW ZW  Zy)3Test_TestCase.testSkippingEverywhere.<locals>.Test3NrS  rj  s   r   rT  rl    s    $NHr   rT  c                       e Zd Z fdZy)3Test_TestCase.testSkippingEverywhere.<locals>.Test4c                 (    | j                         y r   rY  )r   rc  s    r   rG  zBTest_TestCase.testSkippingEverywhere.<locals>.Test4.test_something  s    &r   NrF  rg  s   r   r\  rn    s    'r   r\  rG  rg   r   )r:   r;   rt   rP   rK   r  skippedtestsRun)	r   rI  rO  rT  r\  r^  ru   rc  rB  s	          @@r   testSkippingEverywherez$Test_TestCase.testSkippingEverywherew  s    	3		#H%% 	#	%H%% 	%	H%% 		'H%% 	' UE51E((*F"#''/S0!4V__a0	 2r   c                    ddd  G fddt         j                        } G fddt         j                        } G fddt         j                        } G fd	d
t         j                        }||||fD ]n  }t        j                         } |d      j                  |       | j	                  t        |j                        d       | j	                  |j                  d       p y )Nc                     t         r   )
SystemExitr   s    r   r@  z,Test_TestCase.testSystemExit.<locals>._raise  s    r   c                      y r   r   r   s    r   rB  z-Test_TestCase.testSystemExit.<locals>.nothing  rC  r   c                       e Zd ZW  Zy)+Test_TestCase.testSystemExit.<locals>.Test1NrF  rH  s   r   rI  rx    rJ  r   rI  c                       e Zd ZW  ZW Zy)+Test_TestCase.testSystemExit.<locals>.Test2NrM  rN  s   r   rO  rz    rP  r   rO  c                       e Zd ZW ZW  Zy)+Test_TestCase.testSystemExit.<locals>.Test3NrS  rN  s   r   rT  r|    rU  r   rT  c                       e Zd Z fdZy)+Test_TestCase.testSystemExit.<locals>.Test4c                 (    | j                         y r   rY  rZ  s    r   rG  z:Test_TestCase.testSystemExit.<locals>.Test4.test_something  r[  r   NrF  rH  s   r   r\  r~    r]  r   r\  rG  rg   r   )r:   r;   rt   rP   rK   r  errorsrq  )	r   rI  rO  rT  r\  r^  ru   r@  rB  s	          @@r   testSystemExitzTest_TestCase.testSystemExit  s    			$H%% 	$	%H%% 	%	H%% 		(H%% 	( UE51E((*F"#''/S/3V__a0	 2r   c                     t        j                         }t        j                  |      }t	        j
                         5  ~| j                   |              d d d        y # 1 sw Y   y xY wr   )r:   r;   weakrefrefr   
disable_gcrw  )r   r  wrs      r   testNoCycleszTest_TestCase.testNoCycles  sI      "[[!RT" "!!s   AA(c                      G fddt                G fddt        j                        }dD ]@  } ||      }|j                          t	                | j                  j                  d       B y )Nc                   &    e Zd ZdZ fdZ fdZy)9Test_TestCase.test_no_exception_leak.<locals>.MyExceptionr   c                 Z    xj                   dz  c_         t        j                  |        y r   )	ninstancerP  r.   r   rC   s    r   r.   zBTest_TestCase.test_no_exception_leak.<locals>.MyException.__init__  s"    %%*%""4(r   c                 0    xj                   dz  c_         y r   )r  r  s    r   __del__zATest_TestCase.test_no_exception_leak.<locals>.MyException.__del__  s    %%*%r   N)r   r   r    r  r.   r  rB   s   r   rC   r    s    I)+r   rC   c                   @    e Zd Z fdZej
                   fd       Zy)6Test_TestCase.test_no_exception_leak.<locals>.TestCasec                             r   r   r  s    r   r   z<Test_TestCase.test_no_exception_leak.<locals>.TestCase.test1  s    !m#r   c                             r   r   r  s    r   r%   z<Test_TestCase.test_no_exception_leak.<locals>.TestCase.test2  s    !m#r   N)r   r   r    r   r:   expectedFailurer%   rB   s   r   r;   r    s"    $ %%$ &$r   r;   )r   r%   r   )rP  r:   r;   rP   r   rK   r  )r   r;   method_nametestcaserC   s       @r   test_no_exception_leakz$Test_TestCase.test_no_exception_leak  s[    	+) 	+	$x(( 	$ .K,HLLNL[22A6	 .r   N)~r   r   r    r   r!   eq_pairsr&   ne_pairsrQ   rX   ra   rj   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r%  r,  r5  r<  rA  rF  rL  rS  rY  ra  re  r:   skipIfr0  r1  optimizerh  rj  rl  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r!  r$  r&  r3  r6  r<  rT  r\  r^  rd  rk  rq  ry  r  r  r  r  r  r  r  r  r  r  r  r-  contextmanagerr  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r  r  r  r+  r2  r<  r_  rr  r  r   cpython_onlyr  r  r   r   r   r=   r=   9   s    '"DHHW$567H '"DHHY$78'"DHHW$56'"DHHW$568H"*@
4:<++.+ +.++,++"	/>20CC2KK+&+8=&D+.+$/+*	&)"3 X__SYY''1,@BKBK X__SYY''1,@B
B
 X__SYY''1,@BQBQ!Q
Q
''#*#)J2Mh&'P,
6
;"+HQ:<*|&RP8Wt=B=$=&=,=2JDXM,
0(0@
4:
C$RR%0'CD:.$`7=B**XF  - -
5A	H	L.B-&
+(6
	
(
$	
6!
/	5".21616 # #7r   r=   __main__)#r-  r  r  r6  ri  r0  r  r  r  r  r  copyr   r+   r   r:   test.test_unittest.supportr   r   r   r   r	   test.supportr
   r   r  r  r  r  rv  r   r;   r=   r   mainr   r   r   <module>r     s        	 
          5 '

E
"Wy)
7V$+6 +6U7H%%|[ U7p< zHMMO r   