
    =Og                     @   	 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mZmZmZmZ dZ e            ZdZ G d de          Z G d	 d
e          Z G d de          Z G d de          Zd Zd Zd Zd Zg Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z' G d d          Z( G d de(          Z) G d d e)          Z* G d! d"e)          Z+ G d# d$ej,                  Z- G d% d&e          Z. G d' d(e.          Z/ G d) d*e.          Z0dS )+    N   )result)strclass	safe_repr_count_diff_all_purpose_count_diff_hashable_common_shorten_reprTz@
Diff is %s characters long. Set self.maxDiff to None to see it.c                       e Zd ZdS )SkipTestN__name__
__module____qualname__     &/usr/lib64/python3.11/unittest/case.pyr   r      s         r   r   c                       e Zd ZdS )_ShouldStopNr   r   r   r   r   r   !            r   r   c                       e Zd ZdS )_UnexpectedSuccessNr   r   r   r   r   r   &   r   r   r   c                   8    e Zd ZddZej        dd            ZdS )_OutcomeNc                 h    d| _         || _        t          |d          | _        d| _        d | _        d S )NF
addSubTestT)expecting_failurer   hasattrresult_supports_subtestssuccessexpectedFailure)selfr   s     r   __init__z_Outcome.__init__-   s8    !&(/(E(E%#r   Fc              #   B  K   | j         }d| _         	 d V  |r(| j         r!| j                            |j        |d            n# t          $ r  t
          $ r4}d| _         t          | j        |t          |                     Y d }~nzd }~wt          $ r Y nk t          j
                    }| j        r|| _        nAd| _         |r"| j                            |j        ||           nt          | j        ||           d }Y nxY w| j         o|| _         d S # | j         o|| _         w xY w)NTF)r   r   r   	test_caseKeyboardInterruptr   _addSkipstrr   sysexc_infor   r    	_addError)r!   r$   subTestold_successer)   s         r   testPartExecutorz_Outcome.testPartExecutor4   sq     l	8EEE,  M4< M&&y':ItLLL- ! 	 	 	 	5 	5 	5 DLT[)SVV44444444 	 	 	D	|~~H% @'/$$$ @K**9+>	8TTTTdk9h??? HHH
  <7KDLLL4<7KDL7777s;   A +D C;*B?D C;D A&C;9D DN)F)r   r   r   r"   
contextlibcontextmanagerr.   r   r   r   r   r   ,   sL        $ $ $ $ 8 8 8 8 8 8r   r   c                     t          | dd           }| |||           d S t          j        dt          d            | j        |           d S )NaddSkipz4TestResult has no addSkip method, skips not reported   )getattrwarningswarnRuntimeWarning
addSuccess)r   r$   reasonr3   s       r   r&   r&   U   sf    fi..G	6"""""L$a	) 	) 	))$$$$$r   c                     | C|Ct          |d         |j                  r | j        ||           d S  | j        ||           d S d S d S Nr   )
issubclassfailureException
addFailureaddError)r   testr)   s      r   r*   r*   ^   si    h2hqk4#899 	,FdH-----FOD(+++++	 22r   c                     | S r/   r   )objs    r   _idrD   e   s    Jr   c                     t          |           }	 |j        }|j        }n/# t          $ r" t	          d|j         d|j         d          d w xY w ||           } ||| d d d            |S )N'.z6' object does not support the context manager protocol)type	__enter____exit__AttributeError	TypeErrorr   r   )cm
addcleanupclsenterexitr   s         r   _enter_contextrR   i   s     r((CO| O O O DCN D DS-= D D D E EJN	OO U2YYFJtRtT***Ms	     ,Ac                B    	 t                               | ||f           d S r/   )_module_cleanupsappend)functionargskwargss      r   addModuleCleanuprY   y   s(    2XtV455555r   c                 .    	 t          | t                    S r/   )rR   rY   )rM   s    r   enterModuleContextr[   ~   s    0".///r   c                      	 g } t           rZt                                           \  }}}	  ||i | n,# t          $ r}|                     |           Y d }~nd }~ww xY wt           Z| r| d         d S r<   )rT   pop	ExceptionrU   )
exceptionsrV   rW   rX   excs        r   doModuleCleanupsra      s    J
 #!1!5!5!7!7$	#Hd%f%%%% 	# 	# 	#c""""""""	#	  #   m s   2 
AAAc                 f     	  fd}t           t          j                  r }d  ||          S |S )Nc                     t          | t                    s!t          j        |           fd            }|} d| _        | _        | S )Nc                  "    t                    r/   r   )rW   rX   r:   s     r   skip_wrapperz-skip.<locals>.decorator.<locals>.skip_wrapper   s    v&&&r   T)
isinstancerH   	functoolswraps__unittest_skip____unittest_skip_why__)	test_itemrf   r:   s     r   	decoratorzskip.<locals>.decorator   s^    )T** 	%_Y''' ' ' ' (''$I&*	#*0	'r    )rg   typesFunctionType)r:   rm   rl   s   `  r   skiprq      sX    	 	 	 	 	 &%,-- $	y###r   c                 4    	 | rt          |          S t          S r/   rq   rD   	conditionr:   s     r   skipIfrv      s"      F||Jr   c                 4    	 | st          |          S t          S r/   rs   rt   s     r   
skipUnlessrx      s"      F||Jr   c                     d| _         | S )NT)__unittest_expecting_failure__)rl   s    r   r    r       s    /3I,r   c                     t          | t                    rt          fd| D                       S t          | t                    ot	          |           S )Nc              3   8   K   | ]}t          |          V  d S r/   )_is_subtype).0r-   basetypes     r   	<genexpr>z_is_subtype.<locals>.<genexpr>   s-      >>;q(++>>>>>>r   )rg   tupleallrH   r=   )expectedr   s    `r   r}   r}      sW    (E"" ?>>>>X>>>>>>h%%H*Xx*H*HHr   c                       e Zd Zd Zd ZdS )_BaseTestCaseContextc                     || _         d S r/   )r$   )r!   r$   s     r   r"   z_BaseTestCaseContext.__init__   s    "r   c                 v    | j                             | j        |          }| j                             |          r/   )r$   _formatMessagemsgr>   )r!   standardMsgr   s      r   _raiseFailurez"_BaseTestCaseContext._raiseFailure   s1    n++DHkBBn--c222r   N)r   r   r   r"   r   r   r   r   r   r      s2        # # #3 3 3 3 3r   r   c                       e Zd ZddZd ZdS )_AssertRaisesBaseContextNc                     t                               | |           || _        || _        |t	          j        |          }|| _        d | _        d | _        d S r/   )	r   r"   r   r$   recompileexpected_regexobj_namer   )r!   r   r$   r   s       r   r"   z!_AssertRaisesBaseContext.__init__   sU    %%dI666 "%Z77N,r   c                    	 	 t          | j        | j                  st          |d| j                  |sM|                    dd           | _        |r,t          t          t          |                    d          | d } S |^}}	 |j	        | _
        n$# t          $ r t          |          | _
        Y nw xY w| 5   ||i | d d d            n# 1 swxY w Y   d } d S # d } w xY w)Nz() arg 1 must be r   z1 is an invalid keyword argument for this function)r}   r   
_base_typerL   _base_type_strr]   r   nextiterr   r   rK   r'   )r!   namerW   rX   callable_objs        r   handlez_AssertRaisesBaseContext.handle   s   		t}do>> =!%t':':!< = = = !::eT22 M#7;DLL7I7I7I7I%L M M M DD #'L42 , 5! 2 2 2 #L 1 12 . .d-f---. . . . . . . . . . . . . . . DDD4DKKKKsZ   A?C! C! 
B C! B85C! 7B88C! =	CC! CC! CC! !C%r/   )r   r   r   r"   r   r   r   r   r   r      s7               r   r   c                   D    e Zd Z	 eZdZd Zd Z ee	j
                  ZdS )_AssertRaisesContextz-an exception type or tuple of exception typesc                     | S r/   r   r!   s    r   rI   z_AssertRaisesContext.__enter__   s    r   c                    |	 | j         j        }n$# t          $ r t          | j                   }Y nw xY w| j        r/|                     d                    || j                             n=|                     d                    |                     nt          j        |           t          || j                   sdS |
                    d           | _        | j        dS | j        }|                    t          |                    s;|                     d                    |j        t          |                               dS )Nz{} not raised by {}z{} not raisedFT"{}" does not match "{}")r   r   rK   r'   r   r   format	tracebackclear_framesr=   with_traceback	exceptionr   searchpattern)r!   exc_type	exc_valuetbexc_namer   s         r   rJ   z_AssertRaisesContext.__exit__   se   .=1! . . .t}--.} E""#8#?#?@D$O $O P P P P ""?#9#9(#C#CDDDD"2&&&(DM22 	5"11$77&4,$$S^^44 	>9@@#+S^^ =  = > > >ts    22N)r   r   r   BaseExceptionr   r   rI   rJ   classmethodro   GenericAlias__class_getitem__r   r   r   r   r      sP        MJDN    6 $E$677r   r   c                   $    e Zd Z	 eZdZd Zd ZdS )_AssertWarnsContextz(a warning type or tuple of warning typesc                 6   t          t          j                                                  D ]}t	          |dd           ri |_        t          j        d          | _        | j        	                                | _        t          j
        d| j                   | S )N__warningregistry__T)recordalways)listr(   modulesvaluesr5   r   r6   catch_warningswarnings_managerrI   simplefilterr   )r!   vs     r   rI   z_AssertWarnsContext.__enter__   s     ck((**++ 	+ 	+Aq/66 +(*% ( 7t D D D-7799h666r   c                    | j                             |||           |d S 	 | j        j        }n$# t          $ r t          | j                  }Y nw xY wd }| j        D ]s}|j        }t          || j                  s||}| j	        (| j	        
                    t          |                    sR|| _        |j        | _        |j        | _         d S |@|                     d                    | j	        j        t          |                               | j        r0|                     d                    || j                             d S |                     d                    |                     d S )Nr   z{} not triggered by {}z{} not triggered)r   rJ   r   r   rK   r'   r6   messagerg   r   r   warningfilenamelinenor   r   r   r   )r!   r   r   r   r   first_matchingmws           r   rJ   z_AssertWarnsContext.__exit__+  s   &&xB???F	*}-HH 	* 	* 	*4=))HHH	* 	 	A	Aa// %!"#/'..s1vv66 0DLJDM(DKFF%9@@(0#n2E2E G  G H H H= 	D7>>x?C} N  N O O O O O 188BBCCCCCs   / AAN)r   r   r   Warningr   r   rI   rJ   r   r   r   r   r     sD        LJ?N	 	 	 D  D  D  D  Dr   r   c                       e Zd Zd ZdS )_OrderedChainMapc              #   ~   K   t                      }| j        D ]$}|D ]}||vr|                    |           |V   %d S r/   )setmapsadd)r!   seenmappingks       r   __iter__z_OrderedChainMap.__iter__O  s`      uuy 	 	G  D==HHQKKKGGG	 	r   N)r   r   r   r   r   r   r   r   r   N  s#            r   r   c                       e Zd Z	 eZdZdZdZ fdZdNdZ	d Z
d Zd	 Zed
             Zed             Zd Zd Zed             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zej        efd            Zd Z d Z!d Z"d Z#d Z$d Z%dOd Z&d! Z'ed"             Z(d# Z)d$ Z*d% Z+dOd&Z,dOd'Z-dOd(Z.d) Z/d* Z0d+ Z1dPd,Z2dPd-Z3d. Z4dOd/Z5dOd0Z6dOd1Z7	 	 dQd2Z8	 	 dQd3Z9dPd4Z:d5 Z;dOd6Z<dOd7Z=dOd8Z>dOd9Z?dOd:Z@dOd;ZAdOd<ZBdOd=ZCdOd>ZDdOd?ZEdOd@ZFdOdAZGdOdBZHdOdCZIdOdDZJdOdEZKdOdFZLdOdGZMdOdHZNdI ZOdJ ZPdOdKZQdOdLZRdM ZS eSe6          xZTZU eSe7          xZVZW eSe8          xZXZY eSe9          xZZZ[ eSe.          xZ\Z] eSe0          Z^ eSe-          Z_ eSeO          Z` eSeQ          Za eSeR          Zb xZcS )RTestCaseTi  i   c                 V    d| _         g | _         t                      j        |i | d S )NF)_classSetupFailed_class_cleanupssuper__init_subclass__)rO   rW   rX   	__class__s      r   r   zTestCase.__init_subclass__  s5     % !!42622222r   runTestc                 <   	 || _         d | _        d| _        	 t          | |          }|j        | _        n0# t
          $ r# |dk    rt          d| j        d|          Y nw xY wg | _        d | _	        i | _
        |                     t          d           |                     t          d           |                     t          d           |                     t          d           |                     t           d           |                     t"          d	           d S )
NzNo testr   zno such test method in : assertDictEqualassertListEqualassertTupleEqualassertSetEqualassertMultiLineEqual)_testMethodName_outcome_testMethodDocr5   __doc__rK   
ValueErrorr   	_cleanups_subtest_type_equality_funcsaddTypeEqualityFuncdictr   r   r   	frozensetr'   )r!   
methodName
testMethods      r   r"   zTestCase.__init__  sF   	  *'		5 z22J #-"4D  	4 	4 	4Y&& !j~~~zz"3 4 4 4 '&	4 
 %'!  '8999  '8999  (:;;;  &6777  ,<===  &<=====s   5 *A"!A"c                     	 || j         |<   d S r/   )r   )r!   typeobjrV   s      r   r   zTestCase.addTypeEqualityFunc  s    	 .6!'***r   c                B    	 | j                             |||f           d S r/   )r   rU   r!   rV   rW   rX   s       r   
addCleanupzTestCase.addCleanup  s-    	K
 	xv677777r   c                 .    	 t          || j                  S r/   )rR   r   )r!   rM   s     r   enterContextzTestCase.enterContext  s    	
 b$/222r   c                B    	 | j                             |||f           d S r/   )r   rU   rO   rV   rW   rX   s       r   addClassCleanupzTestCase.addClassCleanup  s+    	4""HdF#;<<<<<r   c                 .    	 t          || j                  S r/   )rR   r   )rO   rM   s     r   enterClassContextzTestCase.enterClassContext  s    3b#"5666r   c                     	 d S r/   r   r   s    r   setUpzTestCase.setUp  
    Kr   c                     	 d S r/   r   r   s    r   tearDownzTestCase.tearDown  r   r   c                     d S r/   r   rO   s    r   
setUpClasszTestCase.setUpClass  s    UUr   c                     d S r/   r   r   s    r   tearDownClasszTestCase.tearDownClass  s    ``r   c                     dS )Nr   r   r   s    r   countTestCaseszTestCase.countTestCases  s    qr   c                 (    t          j                    S r/   )r   
TestResultr   s    r   defaultTestResultzTestCase.defaultTestResult  s     """r   c                     	 | j         }|r?|                                                    d          d                                         nd S N
r   )r   stripsplitr!   docs     r   shortDescriptionzTestCase.shortDescription  sH    	 !58Bsyy{{  &&q)//111dBr   c                 >    t          | j                  d| j        S )NrG   r   r   r   r   s    r   idzTestCase.id  s#    "4>2222D4H4HIIr   c                 l    t          |           t          |          urt          S | j        |j        k    S r/   )rH   NotImplementedr   r!   others     r   __eq__zTestCase.__eq__  s0    ::T%[[((!!#u'<<<r   c                 H    t          t          |           | j        f          S r/   )hashrH   r   r   s    r   __hash__zTestCase.__hash__  s    T$ZZ!56777r   c                 P    | j         dt          | j                  d| j         dS )N (rG   ))r   r   r   r   s    r   __str__zTestCase.__str__   s1    #333Xdn5M5M5M5MtOcOcOcddr   c                 B    dt          | j                  d| j        dS )N<z testMethod=>r  r   s    r   __repr__zTestCase.__repr__  s.     (((($*>*>*>@ 	@r   c              +     K   	 | j         | j         j        sd V  d S | j        }|t          |          }n|j                            |          }t          | ||          | _        	 | j                             | j        d          5  d V  d d d            n# 1 swxY w Y   | j         j        s| j         j	        }||j
        rt          n| j         j        rt          || _        d S # || _        w xY w)NT)r+   )r   r   r   r   params	new_child_SubTestr.   r   r   failfastr   r    )r!   r   r$  parent
params_mapr   s         r   r+   zTestCase.subTest  sN     	 = (N EEEF>)&11JJ0088J sJ77	#//t/LL                =( "-%&/%%%. " "!"DMMMFDM""""s0   '!C) BC) BC)  B!?C) )	C2c                     	 |j         } || |           d S # t          $ r. t          j        dt                      |j        |            Y d S w xY w)Nz@TestResult has no addExpectedFailure method, reporting as passes)addExpectedFailurerK   r6   r7   r8   r9   )r!   r   r)   r+  s       r   _addExpectedFailurezTestCase._addExpectedFailure&  s~    	/!'!: tX.....  	$ 	$ 	$M\(* * *Fd######	$s    4AAc                     	 |j         } ||            d S # t          $ rX t          j        dt                     	 t
          d # t
          $ r'  |j        | t          j                               Y Y d S w xY ww xY w)NzCTestResult has no addUnexpectedSuccess method, reporting as failure)	addUnexpectedSuccessrK   r6   r7   r8   r   r?   r(   r)   )r!   r   r.  s      r   _addUnexpectedSuccesszTestCase._addUnexpectedSuccess0  s    	'#)#>  ! &&&&&  	8 	8 	8M_(* * *8(d2% 8 8 8!!$77777778	8s&    $A8A,A4/A83A44A8c                 .    |                                   d S r/   )r   r   s    r   
_callSetUpzTestCase._callSetUp?  s    

r   c                 ^     |            "t          j        d| dt          d           d S d S )NzFIt is deprecated to return a value that is not None from a test case (r     )
stacklevel)r6   r7   DeprecationWarning)r!   methods     r   _callTestMethodzTestCase._callTestMethodB  s\    688M 2(.2 2 23ERSU U U U U U  r   c                 .    |                                   d S r/   )r   r   s    r   _callTearDownzTestCase._callTearDownG  s    r   c                     ||i | d S r/   r   r   s       r   _callCleanupzTestCase._callCleanupJ  s    $!&!!!!!r   Nc                    |C|                                  }t          |dd           }t          |dd           }|
 |             nd } |j        |            	 t          | | j                  }t          | j        dd          st          |dd          rWt          | j        dd          pt          |dd          }t          || |           | |j        |            | |             S S t          | dd          pt          |dd          }t          |          }	 || _        |	                    |           5  | 
                                 d d d            n# 1 swxY w Y   |j        r||_        |	                    |           5  |                     |           d d d            n# 1 swxY w Y   d|_        |	                    |           5  |                                  d d d            n# 1 swxY w Y   |                                  |j        rK|r9|j        r|                     ||j                   n&|                     |           n |j        |            |d |_        d }d | _         |j        |            | |             S S # d |_        d }d | _        w xY w#  |j        |            | |             w w xY w)NstartTestRunstopTestRunrj   Frk   rn   rz   )r  r5   	startTestr   r   r&   stopTestr   r   r.   r1  r   r   r7  r9  
doCleanupsr    r,  r/  r9   )r!   r   r=  r>  r   skip_whyr   outcomes           r   runzTestCase.runM  s   >++--F"6>4@@L!&->>K'K2	 t';<<J(;UCC 
$7?? $DN4KRPP P&z3JBOO x000P FOD!!!& 'M >FF M
$DeLL  v&&G% '--d33 & &OO%%%& & & & & & & & & & & & & & &? -0AG- 11$77 9 9,,Z8889 9 9 9 9 9 9 9 9 9 9 9 9 9 905G- 11$77 - -**,,,- - - - - - - - - - - - - - -!!!? 0( 0"2 ? 44VW=TUUUU 66v>>>>))$/// +/' !% FOD!!!& ' +/' !%$$$$ FOD!!!& 's   A5J( ,1J( J :EJ EJ "E#&J 	F+J +F//J 2F/3J G3'J 3G77J :G7;A*J %J( J%%J( (Kc                    	 | j         pt                      }| j        rb| j                                        \  }}}|                    |           5   | j        |g|R i | d d d            n# 1 swxY w Y   | j        b|j        S r/   )r   r   r   r]   r.   r;  r   )r!   rC  rV   rW   rX   s        r   rA  zTestCase.doCleanups  s    	--8::n 	=%)^%7%7%9%9"HdF))$// = =!!(<T<<<V<<<= = = = = = = = = = = = = = = n 	= s   A..A25A2c                     	 g | _         | j        rk| j                                        \  }}}	  ||i | n;# t          $ r. | j                             t          j                               Y nw xY w| j        id S d S r/   )tearDown_exceptionsr   r]   r^   rU   r(   r)   r   s       r   doClassCleanupszTestCase.doClassCleanups  s    	"$! 	?%(%8%<%<%>%>"HdF?$)&)))) ? ? ?'..s|~~>>>>>?	 ! 	? 	? 	? 	? 	?s   7 5A/.A/c                      | j         |i |S r/   )rD  )r!   rW   kwdss      r   __call__zTestCase.__call__  s    tx&&&&r   c                    	 t          | | j                  }t          | j        dd          st          |dd          r6t          | j        dd          pt          |dd          }t          |          |                                  |                     |           |                                  | j        r7| j                                        \  }}} | j	        |g|R i | | j        5d S d S )Nrj   Frk   rn   )
r5   r   r   r   r1  r7  r9  r   r]   r;  )r!   r   rB  rV   rW   rX   s         r   debugzTestCase.debug  s   DT4#788
DN$7?? 	%J 3U;;	%  0GLL L":/FKK 8$$$Z(((n 	9%)^%7%7%9%9"HdFDh8888888 n 	9 	9 	9 	9 	9r   c                 "    	 t          |          r/   re   )r!   r:   s     r   skipTestzTestCase.skipTest  s    vr   c                 .    	 |                      |          r/   )r>   )r!   r   s     r   failzTestCase.fail  s    7##C(((r   c                     	 |r;|                      |dt          |          z            }|                     |          d S )Nz%s is not falser   r   r>   r!   exprr   s      r   assertFalsezTestCase.assertFalse  sL    1 	-%%c+<y+NOOC'',,,	- 	-r   c                     	 |s;|                      |dt          |          z            }|                     |          d S )Nz%s is not truerS  rT  s      r   
assertTruezTestCase.assertTrue  sL    0 	-%%c+;ioo+MNNC'',,,	- 	-r   c                     	 | j         s|p|S ||S 	 |d|S # t          $ r$ t          |          dt          |          cY S w xY w)Nz : )longMessageUnicodeDecodeErrorr   )r!   r   r   s      r   r   zTestCase._formatMessage  s    	  	&%+%;	I !,SS11! 	I 	I 	I!*;!7!7!7!73HHHH	Is    +AAc                 f    	 t          ||           }	 |                    d||          d }S # d }w xY w)NassertRaisesr   r   )r!   expected_exceptionrW   rX   contexts        r   r]  zTestCase.assertRaises  sG    	2 ''94@@	>>.$?? GGdGNNNNs   , 0c                 R    	 t          ||           }|                    d||          S )NassertWarnsr   r   )r!   expected_warningrW   rX   r`  s        r   rb  zTestCase.assertWarns  s/    	6 &&6==~~mT6:::r   c                 .    	 ddl m}  || ||d          S )Nr   _AssertLogsContextFno_logs_logrg  r!   loggerlevelrg  s       r   
assertLogszTestCase.assertLogs"  s5    	( 	-,,,,,!!$uEEEEr   c                 .    	 ddl m}  || ||d          S )Nr   rf  Trh  rj  rl  s       r   assertNoLogszTestCase.assertNoLogs:  s5    	
 	-,,,,,!!$tDDDDr   c                     	 t          |          t          |          u rP| j                            t          |                    }|'t          |t                    rt          | |          }|S | j        S r/   )rH   r   getrg   r'   r5   _baseAssertEqual)r!   firstsecondasserters       r   _getAssertEqualityFunczTestCase._getAssertEqualityFuncC  sq    	  ;;$v,,&&044T%[[AAH#h,, 7&tX66H$$r   c                     	 ||k    s>dt          ||          z  }|                     ||          }|                     |          d S )N%s != %s)r	   r   r>   )r!   ru  rv  r   r   s        r   rt  zTestCase._baseAssertEqual]  sS    H$';E6'J'JJK%%c;77C'',,, r   c                 P    	 |                      ||          } ||||           d S )N)r   )rx  )r!   ru  rv  r   assertion_funcs        r   assertEqualzTestCase.assertEquald  s;    	 44UFCCuf#......r   c                     	 ||k    sJ|                      |t          |          dt          |                    }|                     |          d S )N == rS  )r!   ru  rv  r   s       r   assertNotEqualzTestCase.assertNotEqualk  sj    	 %%c59I9I9I9I:CF:K:K:K,M N NC'',,, r   c           	         	 ||k    rd S ||t          d          t          ||z
            }|K||k    rd S t          |          dt          |          dt          |          dt          |          d}nO|d}t          ||          dk    rd S t          |          dt          |          d|dt          |          d}|                     ||          }|                     |          )	N specify delta or places not bothz !=  within  delta ( difference)   r   z	 places (rL   absr   roundr   r>   r!   ru  rv  placesr   deltadiffr   s           r   assertAlmostEqualzTestCase.assertAlmostEqualt  s1   	 F??F!3>???56>""u}} %    &!!!!%    $	!KK ~T6""a'' %    &!!!!$	!K
 !!#{33##C(((r   c           	         	 ||t          d          t          ||z
            }|Q||k    s||k    rd S t          |          dt          |          dt          |          dt          |          d}nE|d}||k    st          ||          dk    rd S t          |          dt          |          d|d}|                     ||          }|                     |          )	Nr  r  r  r  r  r  r   z placesr  r  s           r   assertNotAlmostEqualzTestCase.assertNotAlmostEqual  s#   		 !3>???56>""VOO%    &!!!!%    $	!KK ~VOOtV)<)<)A)A9B59I9I9I9I9B69J9J9J9J9?AK !!#{33##C(((r   c           	         	 |x|j         }t          ||          s(|                     d|dt          |                    t          ||          s(|                     d|dt          |                    nd}d }	 t	          |          }n# t
          t          f$ r d|z  }Y nw xY w|-	 t	          |          }n# t
          t          f$ r d|z  }Y nw xY w|||k    rd S d|                                ft          ||          z   z  }t          t          ||                    D ]}		 ||	         }
n(# t
          t          t          f$ r |d|	|fz  z  }Y  nw xY w	 ||	         }n(# t
          t          t          f$ r |d	|	|fz  z  }Y  nQw xY w|
|k    r|d
|	ft          |
|          z   z  z  } n+||k    r$|"t          |          t          |          k    rd S ||k    rS|d|||z
  fz  z  }	 |d|t          ||                   fz  z  }n# t
          t          t          f$ r |d||fz  z  }Y n]w xY w||k     rS|d|||z
  fz  z  }	 |d|t          ||                   fz  z  }n'# t
          t          t          f$ r |d||fz  z  }Y nw xY w|}dd                    t          j        t!          j        |                                          t!          j        |                                                              z   }|                     ||          }|                     ||          }|                     |           d S )NzFirst sequence is not a r   zSecond sequence is not a sequencez(First %s has no length.    Non-sequence?z)Second %s has no length.    Non-sequence?z%ss differ: %s != %s
z(
Unable to index element %d of first %s
z)
Unable to index element %d of second %s
z#
First differing element %d:
%s
%s
z+
First %s contains %d additional elements.
zFirst extra element %d:
%s
z'Unable to index element %d of first %s
z,
Second %s contains %d additional elements.
z(Unable to index element %d of second %s
r
  )r   rg   r>   r   lenrL   NotImplementedError
capitalizer	   rangemin
IndexErrorrH   joindifflibndiffpprintpformat
splitlines_truncateMessager   rQ  )r!   seq1seq2r   seq_typeseq_type_name	differinglen1len2iitem1item2r   diffMsgs                 r   assertSequenceEqualzTestCase.assertSequenceEqual  s   	 $-MdH-- L++++8==)D///-K L L LdH-- L++++8==)D///-K L L LL 'M		#t99DD./ 	# 	# 	#B!#III	# '4yy23 ' ' 'G%'			' t||0"--//1(t4456I 3tT??++   GEE!:/BC   "N"#]!3#4 5IEE
 GEE!:/BC   "O"#]!3#4 5IEE
 E>>"K#$$)=eU)K)K"K#M NIE "
 DLLX%5JJ$t**,,Fd{{ +.;TD[-IJ K	K"A#'4:)>)>"?#@ AII!:/BC K K K #259=4I#J KIIIK  +.;TD[-IJ K	L"A#'4:)>)>"?#@ AII!:/BC L L L #36:M5J#K LIIIL  M&...99;; ...99;;= => > > ++KAA!!#{33		#sl   B B*)B*0C   CC0D99!EE"E++!FF4H !H65H6I+ +!JJc                 x    | j         }|t          |          |k    r||z   S |t          t          |          z  z   S r/   )maxDiffr  DIFF_OMITTED)r!   r   r  max_diffs       r   r  zTestCase._truncateMessage'  s?    <s4yyH44T>!,T233r   c                 D    	 |                      |||t                     d S N)r  )r  r   )r!   list1list2r   s       r   r   zTestCase.assertListEqual-  s,    	 	  sT BBBBBr   c                 D    	 |                      |||t                     d S r  )r  r   )r!   tuple1tuple2r   s       r   r   zTestCase.assertTupleEqual9  s,    	 	  u EEEEEr   c                 L   	 	 |                     |          }nY# t          $ r"}|                     d|z             Y d }~n2d }~wt          $ r"}|                     d|z             Y d }~nd }~ww xY w	 |                     |          }nY# t          $ r"}|                     d|z             Y d }~n2d }~wt          $ r"}|                     d|z             Y d }~nd }~ww xY w|s|sd S g }|r<|                    d           |D ]$}|                    t          |                     %|r<|                    d           |D ]$}|                    t          |                     %d                    |          }	|                     |                     ||	                     d S )Nz/invalid type when attempting set difference: %sz2first argument does not support set difference: %sz3second argument does not support set difference: %sz*Items in the first set but not the second:z*Items in the second set but not the first:r
  )
differencerL   rQ  rK   rU   reprr  r   )
r!   set1set2r   difference1r-   difference2linesitemr   s
             r   r   zTestCase.assertSetEqualD  s+   		P//$//KK 	M 	M 	MIIG!KLLLLLLLL 	P 	P 	PIIJQNOOOOOOOO	P	Q//$//KK 	M 	M 	MIIG!KLLLLLLLL 	Q 	Q 	QIIKaOPPPPPPPP	Q  	{ 	F 	)LLEFFF# ) )T$ZZ(((( 	)LLEFFF# ) )T$ZZ((((ii&&		$%%c;7788888sD    
A/A  A/A**A/3B	 	
CB00C=CCc                     	 ||vrLt          |          dt          |          }|                     |                     ||                     d S d S )N not found in r   rQ  r   r!   member	containerr   r   s        r   assertInzTestCase.assertIno  sg    R""2;F2C2C2C2C2;I2F2F2FHKIId))#{;;<<<<< #"r   c                     	 ||v rLt          |          dt          |          }|                     |                     ||                     d S d S )Nz unexpectedly found in r  r  s        r   assertNotInzTestCase.assertNotInv  sg    VY;DV;L;L;L;L8A)8L8L8LNKIId))#{;;<<<<< r   c                     	 ||urLt          |          dt          |          }|                     |                     ||                     d S d S )Nz is not r  r!   expr1expr2r   r   s        r   assertIszTestCase.assertIs}  sf    R,5e,<,<,<,<-6u-=-=-=?KIId))#{;;<<<<< r   c                     	 ||u r=dt          |          }|                     |                     ||                     d S d S )Nzunexpectedly identical: r  r  s        r   assertIsNotzTestCase.assertIsNot  sR    VE>>>:CE:J:J:JLKIId))#{;;<<<<< >r   c           	         |                      |t          d           |                      |t          d           ||k    rdt          ||          z  }dd                    t	          j        t          j        |                                          t          j        |                                                              z   }| 	                    ||          }| 
                    |                     ||                     d S d S )Nz"First argument is not a dictionaryz#Second argument is not a dictionaryrz  r
  )assertIsInstancer   r	   r  r  r  r  r  r  r  rQ  r   )r!   d1d2r   r   r  s         r   r   zTestCase.assertDictEqual  s    b$(LMMMb$(MNNN88$';B'C'CCK499W]!>"--88::!>"--88::&< &< = = =D //TBBKIId))#{;;<<<<< 8r   c                 J   	 t          j        dt                     g }g }|                                D ]u\  }}||vr|                    |           |||         k    rJ|                    t          |          dt          |          dt          ||                              v|s|sd S d}|r"dd                    d |D                       z  }|r"|r|dz  }|d	d                    |          z  z  }|                     |                     ||                     d S )
Nz&assertDictContainsSubset is deprecatedz, expected: z
, actual: rn   zMissing: %s,c              3   4   K   | ]}t          |          V  d S r/   )r   )r~   r   s     r   r   z4TestCase.assertDictContainsSubset.<locals>.<genexpr>  s8       3= 3=A9Q<< 3= 3= 3= 3= 3= 3=r   z; zMismatched values: %s)	r6   r7   r5  itemsrU   r   r  rQ  r   )	r!   subset
dictionaryr   missing
mismatchedkeyvaluer   s	            r   assertDictContainsSubsetz!TestCase.assertDictContainsSubset  s}   @>(	* 	* 	*
 ,,.. 	@ 	@JC*$$s####*S/))!!#,S>>>>9U3C3C3C3C#,Z_#=#=#=#? @ @ @  	: 	F 	='#(( 3= 3=4;3= 3= 3= += += =K 	J $t#2SXXj5I5IIIK		$%%c;7788888r   c                    	 t          |          t          |          }}	 t          j        |          }t          j        |          }||k    rd S t          ||          }n # t          $ r t          ||          }Y nw xY w|rfd}d |D             }d                    |          }	|                     ||	          }|                     ||          }| 	                    |           d S d S )NzElement counts were not equal:
c                     g | ]}d |z  S )z First has %d, Second has %d:  %rr   )r~   r  s     r   
<listcomp>z-TestCase.assertCountEqual.<locals>.<listcomp>  s    WWW47$>WWWr   r
  )
r   collectionsCounterr   rL   r   r  r  r   rQ  )
r!   ru  rv  r   	first_seq
second_seqdifferencesr   r  r  s
             r   assertCountEqualzTestCase.assertCountEqual  s   
	 !%UT&\\:			F'	22E (44F
 .y*EEKK  	I 	I 	I1)ZHHKKK	I  	<KWW;WWWEii&&G//WEEK%%c;77CIIcNNNNN	 	s   (A" "A?>A?c                    	 |                      |t          d           |                      |t          d           ||k    r*t          |          | j        k    st          |          | j        k    r|                     |||           |                    d          }|                    d          }t          |          dk    r%|                    d          |k    r|dz   g}|dz   g}dt          ||          z  }dd	                    t          j
        ||                    z   }|                     ||          }|                     |                     ||                     d S d S )
NzFirst argument is not a stringzSecond argument is not a stringT)keependsr   z
r
  rz  rn   )r  r'   r  _diffThresholdrt  r  r  r	   r  r  r  r  rQ  r   )r!   ru  rv  r   
firstlinessecondlinesr   r  s           r   r   zTestCase.assertMultiLineEqual  sd   ;eS*JKKKfc+LMMMF??E

T000Fd111%%eVS999))4)88J ++T+::K:!##F(;(;u(D(D#dl^
%}o$';E6'J'JJK"'''-
K"H"HIIID//TBBKIId))#{;;<<<<< ?r   c                     	 ||k     sLt          |          dt          |          }|                     |                     ||                     d S d S )Nz not less than r  r!   abr   r   s        r   
assertLesszTestCase.assertLess  sY    Q1uu3<Q<<<<1NKIId))#{;;<<<<< ur   c                     	 ||k    sLt          |          dt          |          }|                     |                     ||                     d S d S )Nz not less than or equal to r  r  s        r   assertLessEqualzTestCase.assertLessEqual  sZ    RAvv?H||||YWX\\\ZKIId))#{;;<<<<< vr   c                     	 ||k    sLt          |          dt          |          }|                     |                     ||                     d S d S )Nz not greater than r  r  s        r   assertGreaterzTestCase.assertGreater  sY    Q1uu6?llllIaLLLQKIId))#{;;<<<<< ur   c                     	 ||k    sLt          |          dt          |          }|                     |                     ||                     d S d S )Nz not greater than or equal to r  r  s        r   assertGreaterEqualzTestCase.assertGreaterEqual  s^    RAvvBKA,,,,PYZ[P\P\P\]KIId))#{;;<<<<< vr   c                     	 |=t          |          d}|                     |                     ||                     d S d S )Nz is not Noner  r!   rC   r   r   s       r   assertIsNonezTestCase.assertIsNone  sK    Q?.7nnnn>KIId))#{;;<<<<< ?r   c                 f    	 |-d}|                      |                     ||                     d S d S )Nzunexpectedly None)rQ  r   r  s       r   assertIsNotNonezTestCase.assertIsNotNone  s>    6;-KIId))#{;;<<<<< ;r   c                     	 t          ||          s?t          |          d|}|                     |                     ||                     d S d S )Nz is not an instance of rg   r   rQ  r   r!   rC   rO   r   r   s        r   r  zTestCase.assertIsInstance  sa    	#s## 	=;DS>>>>33OKIId))#{;;<<<<<	= 	=r   c                     	 t          ||          r?t          |          d|}|                     |                     ||                     d S d S )Nz is an instance of r  r  s        r   assertNotIsInstancezTestCase.assertNotIsInstance  s_    :c3 	=7@~~~~ssKKIId))#{;;<<<<<	= 	=r   c                 T    	 t          || |          }|                    d||          S )NassertRaisesRegexr^  )r!   r_  r   rW   rX   r`  s         r   r  zTestCase.assertRaisesRegex  s2    
	 ''94PP~~14@@@r   c                 T    	 t          || |          }|                    d||          S )NassertWarnsRegexrc  )r!   rd  r   rW   rX   r`  s         r   r  zTestCase.assertWarnsRegex(  s2    	 &&6nMM~~0$???r   c                    	 t          |t          t          f          rt          j        |          }|                    |          s8d|j        d|}|                     ||          }|                     |          d S )NzRegex didn't match: r  )	rg   r'   bytesr   r   r   r   r   r>   )r!   textr   r   r   s        r   assertRegexzTestCase.assertRegex;  s    KnsEl33 	8Z77N$$T** 	- 	-&&&.K %%c;77C'',,,	- 	-r   c                 d   	 t          |t          t          f          rt          j        |          }|                    |          }|rgd||                                |                                         d|j        d|}| 	                    ||          }| 
                    |          d S )NzRegex matched: z	 matches z in )rg   r'   r  r   r   r   startendr   r   r>   )r!   r  unexpected_regexr   matchr   s         r   assertNotRegexzTestCase.assertNotRegexG  s    G&e55 	<!z*:;; ''-- 	- 	-U[[]]UYY[[0111 (((K
 %%c;77C'',,,	- 	-r   c                       fd}|S )Nc                  z    t          j        d                    j                  t          d            | i |S )NzPlease use {0} instead.r4   )r6   r7   r   r   r5  )rW   rX   original_funcs     r   deprecated_funcz,TestCase._deprecate.<locals>.deprecated_funcW  sG    M)001GHH"A' ' ' !=$1&111r   r   )r  r  s   ` r   
_deprecatezTestCase._deprecateV  s$    	2 	2 	2 	2 	2
 r   )r   r/   )NNNNN)dr   r   r   AssertionErrorr>   rZ  r  r  r   r"   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r"  r0   r1   _subtest_msg_sentinelr+   r,  r/  r1  r7  r9  r;  rD  rA  rH  rK  rM  rO  rQ  rV  rX  r   r]  rb  ro  rq  rx  rt  r}  r  r  r  r  r  r   r   r   r  r  r  r  r   r  r  r   r  r  r  r  r  r  r  r  r  r  r	  r  r  failUnlessEqualassertEqualsfailIfEqualassertNotEqualsfailUnlessAlmostEqualassertAlmostEqualsfailIfAlmostEqualassertNotAlmostEquals
failUnlessassert_failUnlessRaisesfailIfassertRaisesRegexpassertRegexpMatchesassertNotRegexpMatches__classcell__r   s   @r   r   r   X  s       @ &KG N3 3 3 3 3> > > >@6 6 68 8 83 3 3 = = [=
 7 7 [7     V V [V a a [a  # # #C C CJ J J= = =8 8 8e e e@ @ @ / # # # #</ / /' ' '  U U U
  " " "= = = =~   	? 	? [	?' ' '9 9 9"  ) ) ) )- - - -- - - -I I I*  B; ; ;>F F F F0E E E E% % %4- - - -/ / / /- - - - AE $+) +) +) +)Z DH#'!) !) !) !)Fa a a aF4 4 4
C 
C 
C 
C	F 	F 	F 	F)9 )9 )9 )9V= = = == = = == = = == = = =
= 
= 
= 
=9 9 9 9:   @= = = =(= = = == = = == = = == = = == = = == = = == = = == = = =A A A @ @ @&
- 
- 
- 
-- - - -   &0Z%<%<<Ol$.J~$>$>>K/1;<M1N1NN.0:
;O0P0PP-%:j111J!z,//Z$$F#$566$*[11'Z77r   r   c                   X     e Zd Z	 d fd	Zd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Z xZS )FunctionTestCaseNc                     t          t          |                                            || _        || _        || _        || _        d S r/   )r   r*  r"   
_setUpFunc_tearDownFunc	_testFunc_description)r!   testFuncr   r   descriptionr   s        r   r"   zFunctionTestCase.__init__u  sD    %%..000%!'r   c                 @    | j         |                                   d S d S r/   )r,  r   s    r   r   zFunctionTestCase.setUp|  s(    ?&OO '&r   c                 @    | j         |                                   d S d S r/   )r-  r   s    r   r   zFunctionTestCase.tearDown  s+    )      *)r   c                 .    |                                   d S r/   )r.  r   s    r   r   zFunctionTestCase.runTest  s    r   c                     | j         j        S r/   )r.  r   r   s    r   r  zFunctionTestCase.id  s    ~&&r   c                     t          || j                  st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r/   )rg   r   r  r,  r-  r.  r/  r  s     r   r  zFunctionTestCase.__eq__  sg    %00 	"!!%"22 7!U%887~07  E$66	7r   c                 l    t          t          |           | j        | j        | j        | j        f          S r/   )r  rH   r,  r-  r.  r/  r   s    r   r  zFunctionTestCase.__hash__  s4    T$ZZ$2D^T%68 9 9 	9r   c                 J    t          | j                  d| j        j        dS )Nr  r  )r   r   r.  r   r   s    r   r  zFunctionTestCase.__str__  s-    $T^4444 N3335 	5r   c                 B    dt          | j                  d| j        dS )Nr   z tec=r!  )r   r   r.  r   s    r   r"  zFunctionTestCase.__repr__  s*      ( 8 8 8 8%)^^^5 	5r   c                     | j         | j         S | j        j        }|r-|                    d          d                                         pd S r	  )r/  r.  r   r  r  r  s     r   r  z!FunctionTestCase.shortDescription  sI    ($$n$1syyq)//119T9r   r  )r   r   r   r"   r   r   r   r  r  r  r  r"  r  r'  r(  s   @r   r*  r*  l  s        ( ( ( ( ( (  ! ! !  ' ' '7 7 79 9 95 5 55 5 5: : : : : : :r   r*  c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )r&  c                     t                                                       || _        || _        || _        |j        | _        d S r/   )r   r"   _messager$   r$  r>   )r!   r$   r   r$  r   s       r   r"   z_SubTest.__init__  s?    " ) :r   c                      t          d          )Nzsubtests cannot be run directly)r  r   s    r   r   z_SubTest.runTest  s    !"CDDDr   c                 t   g }| j         t          ur-|                    d                    | j                              | j        r^d                    d | j                                        D                       }|                    d                    |                     d                    |          pdS )Nz[{}]z, c              3   H   K   | ]\  }}d                      ||          V  dS )z{}={!r}N)r   )r~   r   r   s      r   r   z+_SubTest._subDescription.<locals>.<genexpr>  sJ       $3 $3Q   A&&$3 $3 $3 $3 $3 $3r   z({}) z(<subtest>))r=  r  rU   r   r$  r  r  )r!   partsparams_descs      r   _subDescriptionz_SubTest._subDescription  s    = 555LLt}55666; 	5)) $3 $3"k//11$3 $3 $3 3 3K LL{33444xx/-/r   c                     d                     | j                                        |                                           S Nz{} {})r   r$   r  rD  r   s    r   r  z_SubTest.id  s0    ~~dn//1143G3G3I3IJJJr   c                 6    	 | j                                         S r/   )r$   r  r   s    r   r  z_SubTest.shortDescription  s    	 ~..000r   c                 \    d                     | j        |                                           S rF  )r   r$   rD  r   s    r   r  z_SubTest.__str__  s$    ~~dnd.B.B.D.DEEEr   )
r   r   r   r"   r   rD  r  r  r  r'  r(  s   @r   r&  r&    s        ; ; ; ; ;E E E	0 	0 	0K K K1 1 1F F F F F F Fr   r&  )1r(   rh   r  r  r   r6   r  r0   r   ro   rn   r   utilr   r   r   r   r	   
__unittestobjectr  r  r^   r   r   r   r   r&   r*   rD   rR   rT   rY   r[   ra   rq   rv   rx   r    r}   r   r   r   r   ChainMapr   r   r*  r&  r   r   r   <module>rM     s    



       				                    ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
 7    y       )   
       &8 &8 &8 &8 &8v &8 &8 &8R% % %, , ,      6 6 6
0 0 0
     (      I I I
3 3 3 3 3 3 3 3' ' ' ' '3 ' ' 'T$8 $8 $8 $8 $83 $8 $8 $8N1D 1D 1D 1D 1D2 1D 1D 1Dh    {+   P8 P8 P8 P8 P8v P8 P8 P8h 7: 7: 7: 7: 7:x 7: 7: 7:t!F !F !F !F !Fx !F !F !F !F !Fr   