
    .hh                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
SSKJr  SSKJrJrJrJrJr  Sr\" 5       rSr " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      rS rS rS rS r/ r S r!S r"S r#S r$S r%S r&S r'S r( " S S5      r) " S S\)5      r* " S S \*5      r+ " S! S"\*5      r, " S# S$\,5      r- " S% S&\R\                  5      r/ " S' S(\5      r0 " S) S*\05      r1 " S+ S,\05      r2g)-    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                       \ rS rSrSrg)SkipTest    N__name__
__module____qualname____firstlineno____static_attributes__r       6/opt/python-3.13.8/usr/lib/python3.13/unittest/case.pyr   r           r   r   c                       \ rS rSrSrg)_ShouldStop"   r   Nr   r   r   r   r   r   "   r   r   r   c                       \ rS rSrSrg)_UnexpectedSuccess'   r   Nr   r   r   r   r   r   '   r   r   r   c                   F    \ rS rSrSS jr\R                  SS j5       rSrg)_Outcome-   Nc                 \    SU l         Xl        [        US5      U l        SU l        S U l        g )NF
addSubTestT)expecting_failurer   hasattrresult_supports_subtestssuccessexpectedFailure)selfr   s     r   __init___Outcome.__init__.   s-    !&(/(E%#r   c              #     #    U R                   nSU l          S v   U(       a8  U R                   (       a'  U R                  R                  UR                  US 5        U R                   =(       a    UU l         g ! [         a    e [
         a1  nSU l         [        U R                  U[        U5      5         S nAN[S nAf[         a     Nj  [        R                  " 5       nU R                  (       a  XPl        OKSU l         U(       a'  U R                  R                  UR                  X5        O[        U R                  X5        S n N= f! U R                   =(       a    UU l         f = f7f)NTF)r%   r   r!   	test_caseKeyboardInterruptr   _addSkipstrr   sysexc_infor"   r&   	_addError)r'   r+   subTestold_successer0   s         r   testPartExecutor_Outcome.testPartExecutor5   s     ll	8, 4<<&&y':':ItL<<7KDL1 ! 	 	5 DLT[[)SV44 		||~H%%'/$$KK**9+>+>	Tdkk9? H
  <<7KDLsL   E#A5 ?E E#5E	'B50E 5EE A;E?E E  E#)r&   r"   r   r$   r%   N)F)	r   r   r   r   r(   
contextlibcontextmanagerr5   r   r   r   r   r   r   -   s!    $ 8 8r   r   c                     [        U SS 5      nUb	  U" X5        g [        R                  " S[        S5        U R                  " U5        g )NaddSkipz4TestResult has no addSkip method, skips not reported   )getattrwarningswarnRuntimeWarning
addSuccess)r   r+   reasonr;   s       r   r-   r-   V   s@    fi.G	"L$a	))$r   c                     U bH  UbD  [        US   UR                  5      (       a  U R                  " X5        g U R                  " X5        g g g Nr   )
issubclassfailureException
addFailureaddError)r   testr0   s      r   r1   r1   _   sF    h2hqk4#8#899d-OOD+	 3r   c                     U $ r7   r   )objs    r   _idrL   f   s    Jr   c                     [        U 5      n UR                  nUR                  nU" U 5      nU" X@S S S 5        U$ ! [         a(    [	        SUR
                   SUR                   S35      S ef = f)N'.z6' object does not support the context manager protocol)type	__enter____exit__AttributeError	TypeErrorr   r   )cm
addcleanupclsenterexitr   s         r   _enter_contextrZ   j   s     r(CO|| 2YFttT*M  O!CNN+1S-=-=,> ?C D EJN	OOs	   : 2A,c                2    [         R                  XU45        g r7   )_module_cleanupsappend)functionargskwargss      r   addModuleCleanupra   z   s     XV45r   c                 "    [        U [        5      $ r7   )rZ   ra   )rU   s    r   enterModuleContextrc      s    ".//r   c                      / n [         (       a-  [         R                  5       u  pn U" U0 UD6  [         (       a  M-  U (       a  U S   eg ! [         a  nU R                  U5         S nAN:S nAff = frD   )r\   pop	Exceptionr]   )
exceptionsr^   r_   r`   excs        r   doModuleCleanupsri      su     J

!1!5!5!7	#d%f% 
  m   	#c""	#s   A 
A-A((A-c                 j   ^  U 4S jn[        T [        R                  5      (       a  T nSm U" U5      $ U$ )Nc                    > [        U [        5      (       d!  [        R                  " U 5      U4S j5       nUn SU l        TU l        U $ )Nc                     > [        T5      er7   r   )r_   r`   rB   s     r   skip_wrapper-skip.<locals>.decorator.<locals>.skip_wrapper   s    v&&r   T)
isinstancerP   	functoolswraps__unittest_skip____unittest_skip_why__)	test_itemrn   rB   s     r   	decoratorskip.<locals>.decorator   sF    )T**__Y'' ('$I&*	#*0	'r    )rp   typesFunctionType)rB   rv   ru   s   `  r   skipr{      s8    	 &%,,--	##r   c                 2    U (       a  [        U5      $ [        $ r7   r{   rL   	conditionrB   s     r   skipIfr      s     F|Jr   c                 2    U (       d  [        U5      $ [        $ r7   r}   r~   s     r   
skipUnlessr      s     F|Jr   c                     SU l         U $ )NT)__unittest_expecting_failure__)ru   s    r   r&   r&      s    /3I,r   c                    ^ [        U [        5      (       a  [        U4S jU  5       5      $ [        U [        5      =(       a    [	        U T5      $ )Nc              3   <   >#    U  H  n[        UT5      v   M     g 7fr7   )_is_subtype).0r4   basetypes     r   	<genexpr>_is_subtype.<locals>.<genexpr>   s     >X;q(++Xs   )rp   tupleallrP   rE   )expectedr   s    `r   r   r      s:    (E"">X>>>h%H*Xx*HHr   c                        \ rS rSrS rS rSrg)_BaseTestCaseContext   c                     Xl         g r7   r+   )r'   r+   s     r   r(   _BaseTestCaseContext.__init__   s    "r   c                     U R                   R                  U R                  U5      nU R                   R                  U5      er7   )r+   _formatMessagemsgrF   )r'   standardMsgr   s      r   _raiseFailure"_BaseTestCaseContext._raiseFailure   s1    nn++DHHkBnn--c22r   r   N)r   r   r   r   r(   r   r   r   r   r   r   r      s    #3r   r   c                   $    \ rS rSrSS jrS rSrg)_AssertRaisesBaseContext   Nc                     [         R                  X5        Xl        X l        Ub  [        R
                  " U5      nX0l        S U l        S U l        g r7   )	r   r(   r   r+   recompileexpected_regexobj_namer   )r'   r   r+   r   s       r   r(   !_AssertRaisesBaseContext.__init__   sB    %%d6 "%ZZ7N,r   c                     [        U R                  U R                  5      (       d  [        U< SU R                  < 35      eU(       dC  UR                  SS 5      U l        U(       a!  [        [        [        U5      5      < S35      eU S n $ UtpB UR                  U l
        U    U" U0 UD6  S S S 5        S n g ! [         a    [        U5      U l
         N2f = f! , (       d  f       N1= f! S n f = f)Nz() arg 1 must be r   z1 is an invalid keyword argument for this function)r   r   
_base_typerT   _base_type_strre   r   nextiterr   r   rS   r.   )r'   namer_   r`   callable_objs        r   handle_AssertRaisesBaseContext.handle   s    	t}}doo>>!%t':':!< = =!::eT2#7;DL7I%L M M D #'L2 , 5 5 d-f-  D " 2 #L 12 DsN   BC) C) B8 "C) $	C-C) 8CC) CC) 
C&"C) )C-)r   r   r   r   r+   r7   )r   r   r   r   r(   r   r   r   r   r   r   r      s    r   r   c                   L    \ rS rSr\rSrS rS r\	" \
R                  5      rSrg)_AssertRaisesContext   z-an exception type or tuple of exception typesc                     U $ r7   r   r'   s    r   rQ   _AssertRaisesContext.__enter__   s    r   c                    Ucu   U R                   R                  nU R                  (       a,  U R                  SR                  UU R                  5      5        O7U R                  SR                  U5      5        O[        R                  " U5        [        XR                   5      (       d  gUR                  S 5      U l        U R                  c  gU R                  nUR                  [        U5      5      (       d4  U R                  SR                  UR                  [        U5      5      5        g! [         a    [        U R                   5      n GN5f = f)Nz{} not raised by {}z{} not raisedFT"{}" does not match "{}")r   r   rS   r.   r   r   format	tracebackclear_framesrE   with_traceback	exceptionr   searchpattern)r'   exc_type	exc_valuetbexc_namer   s         r   rR   _AssertRaisesContext.__exit__   s   .==11 }}""#8#?#?@D$O P ""?#9#9(#CD""2&(MM22"11$7&,,$$S^449@@#++S^ = >+ " .t}}-.s   D. .EE)r   N)r   r   r   r   BaseExceptionr   r   rQ   rR   classmethodry   GenericAlias__class_getitem__r   r   r   r   r   r      s+     JDN6 $E$6$67r   r   c                   (    \ rS rSr\rSrS rS rSr	g)_AssertWarnsContexti  z(a warning type or tuple of warning typesc                 J   [        [        R                  R                  5       5       H  n[	        USS 5      (       d  M  0 Ul        M      [        R                  " SS9U l        U R                  R                  5       U l        [        R                  " SU R                  5        U $ )N__warningregistry__T)recordalways)listr/   modulesvaluesr=   r   r>   catch_warningswarnings_managerrQ   simplefilterr   )r'   vs     r   rQ   _AssertWarnsContext.__enter__!  s|     ckk((*+Aq/66(*% , !) 7 7t D--779h6r   c                 >   U R                   R                  XU5        Ub  g  U R                  R                  nS nU R                   H  nUR                  n[        XpR                  5      (       d  M+  Uc  UnU R                  b+  U R                  R                  [        U5      5      (       d  Mh  Xpl        UR                  U l        UR                  U l          g    Ub>  U R                  SR                  U R                  R                   [        U5      5      5        U R"                  (       a,  U R                  SR                  UU R"                  5      5        g U R                  SR                  U5      5        g ! [         a    [        U R                  5      n GNcf = f)Nr   z{} not triggered by {}z{} not triggered)r   rR   r   r   rS   r.   r>   messagerp   r   r   warningfilenamelinenor   r   r   r   )r'   r   r   r   r   first_matchingmws           r   rR   _AssertWarnsContext.__exit__,  s]   &&xB?	*}}--H A		Aa//%!"##/''..s1v66LJJDM((DK  %9@@((00#n2E G H==7>>x?C}} N O 188BC3  	*4==)H	*s   E9 9FF)r   r   r   r>   r   N)
r   r   r   r   Warningr   r   rQ   rR   r   r   r   r   r   r     s     J?N	 Dr   r   c                       \ rS rSrS rSrg)_AssertNotWarnsContextiO  c                 Z   U R                   R                  XU5        Ub  g  U R                  R                  nU R                   H?  nUR                  n[        X`R                  5      (       d  M+  U R                  U S35        MA     g ! [         a    [        U R                  5      n Nqf = f)Nz
 triggered)
r   rR   r   r   rS   r.   r>   r   rp   r   )r'   r   r   r   r   r   r   s          r   rR   _AssertNotWarnsContext.__exit__Q  s    &&xB?	*}}--H A		A!]]++""hZz#:;   	*4==)H	*s   B B*)B*r   N)r   r   r   r   rR   r   r   r   r   r   r   O  s    <r   r   c                       \ rS rSrS rSrg)_OrderedChainMapi`  c              #      #    [        5       nU R                   H(  nU H  nX1;  d  M
  UR                  U5        Uv   M!     M*     g 7fr7   )setmapsadd)r'   seenmappingks       r   __iter___OrderedChainMap.__iter__a  s9     uyyG=HHQKG  !s
   "AAr   N)r   r   r   r   r   r   r   r   r   r   r   `  s    r   r   c                     ^  \ rS rSr\rSrSrSrU 4S jr	SNS jr
S rS rS	 r\S
 5       r\S 5       rS rS r\S 5       r\S 5       rS rS rS rS rS rS rS rS r\R<                  \4S j5       r S r!S r"S r#S r$S r%S r&S r'SOS  jr(S! r)\S" 5       r*S# r+S$ r,S% r-SOS& jr.SOS' jr/SOS( jr0S) r1S* r2S+ r3S, r4SPS- jr5SPS. jr6S/ r7SOS0 jr8SOS1 jr9SOS2 jr:  SQS3 jr;  SQS4 jr<SPS5 jr=S6 r>SOS7 jr?SOS8 jr@SOS9 jrASOS: jrBSOS; jrCSOS< jrDSOS= jrESOS> jrFSOS? jrGSOS@ jrHSOSA jrISOSB jrJSOSC jrKSOSD jrLSOSE jrMSOSF jrNSOSG jrOSOSH jrPSI rQSJ rRSOSK jrSSOSL jrTSMrUU =rV$ )RTestCaseij  Ti  i   c                 B   > SU l         / U l        [        TU ]  " U0 UD6  g )NF)_classSetupFailed_class_cleanupssuper__init_subclass__)rW   r_   r`   	__class__s      r   r   TestCase.__init_subclass__  s%     % !4262r   c                    Xl         S U l        SU l         [        X5      nUR                  U l        / U l        S U l	        0 U l
        U R                  [        S5        U R                  [        S5        U R                  [        S5        U R                  [        S5        U R                  [         S5        U R                  ["        S	5        g ! [
         a&    US:w  a  [        SU R                  < SU< 35      e Nf = f)
NzNo testrunTestzno such test method in : assertDictEqualassertListEqualassertTupleEqualassertSetEqualassertMultiLineEqual)_testMethodName_outcome_testMethodDocr=   __doc__rS   
ValueErrorr   	_cleanups_subtest_type_equality_funcsaddTypeEqualityFuncdictr   r   r   	frozensetr.   )r'   
methodName
testMethods      r   r(   TestCase.__init__  s    
  *'		5 2J #-"4"4D
 %'!  '89  '89  (:;  &67  ,<=  &<=)  	4Y& !~~z"3 4 4 '	4s   C -C<;C<c                      X R                   U'   g r7   )r  )r'   typeobjr^   s      r   r  TestCase.addTypeEqualityFunc  s     .6!!'*r   c                >    U R                   R                  XU45        g r7   )r  r]   r'   r^   r_   r`   s       r   
addCleanupTestCase.addCleanup  s     	xv67r   c                 ,    [        XR                  5      $ r7   )rZ   r  )r'   rU   s     r   enterContextTestCase.enterContext  s     b//22r   c                >    U R                   R                  XU45        g r7   )r   r]   rW   r^   r_   r`   s       r   addClassCleanupTestCase.addClassCleanup  s     	""HF#;<r   c                 ,    [        XR                  5      $ r7   )rZ   r  )rW   rU   s     r   enterClassContextTestCase.enterClassContext  s     b"5"566r   c                     g r7   r   r   s    r   setUpTestCase.setUp      r   c                     g r7   r   r   s    r   tearDownTestCase.tearDown  r  r   c                     g r7   r   rW   s    r   
setUpClassTestCase.setUpClass      r   c                     g r7   r   r$  s    r   tearDownClassTestCase.tearDownClass  r'  r   c                     g)Nr   r   r   s    r   countTestCasesTestCase.countTestCases  s    r   c                 ,    [         R                  " 5       $ r7   )r   
TestResultr   s    r   defaultTestResultTestCase.defaultTestResult  s      ""r   c                     U R                   nU(       a0  UR                  5       R                  S5      S   R                  5       $ S $ N
r   )r   stripsplitr'   docs     r   shortDescriptionTestCase.shortDescription  s;     !!58syy{  &q)//1BdBr   c                 N    [        U R                  5      < SU R                  < 3$ )NrO   r   r   r   r   s    r   idTestCase.id  s    "4>>2D4H4HIIr   c                 n    [        U 5      [        U5      La  [        $ U R                  UR                  :H  $ r7   )rP   NotImplementedr   r'   others     r   __eq__TestCase.__eq__	  s/    :T%[(!!##u'<'<<<r   c                 B    [        [        U 5      U R                  45      $ r7   )hashrP   r   r   s    r   __hash__TestCase.__hash__  s    T$Z!5!5677r   c                 l    U R                   < S[        U R                  5      < SU R                   < S3$ )N (rO   ))r   r   r   r   s    r   __str__TestCase.__str__  s$    #33Xdnn5MtOcOcddr   c                 R    S[        U R                  5      < SU R                  < S3$ )N<z testMethod=>r<  r   s    r   __repr__TestCase.__repr__  s"    ($*>*>@ 	@r   c              +   v  #    U R                   b  U R                   R                  (       d  S v   g U R                  nUc  [        U5      nOUR                  R                  U5      n[        XU5      U l         U R                   R                  U R                  SS9   S v   S S S 5        U R                   R                  (       d1  U R                   R                  nUb  UR                  (       a  [        eO!U R                   R                  (       a  [        eX0l        g ! , (       d  f       N= f! X0l        f = f7f)NT)r2   )r   r$   r  r   params	new_child_SubTestr5   r%   r   failfastr   r&   )r'   r   rT  parent
params_mapr   s         r   r2   TestCase.subTest  s      == (N(N>)&1J008J J7	#//t/L M==((--%&//%%.. "!"M ML #Ms7   A5D98$D. D!A5D. D9
D+'D. .D66D9c                      UR                   nU" X5        g ! [         a0    [        R                  " S[        5        UR
                  " U 5         g f = f)Nz@TestResult has no addExpectedFailure method, reporting as passes)addExpectedFailurerS   r>   r?   r@   rA   )r'   r   r0   r\  s       r   _addExpectedFailureTestCase._addExpectedFailure8  sN    	/!'!:!: t.  	$MM\(*d#	$s    7AAc                      UR                   nU" U 5        g ! [         a[    [        R                  " S[        5         [
        S e! [
         a*    UR                  " U [        R                  " 5       5          g f = ff = f)NzCTestResult has no addUnexpectedSuccess method, reporting as failure)	addUnexpectedSuccessrS   r>   r?   r@   r   rG   r/   r0   )r'   r   r`  s      r   _addUnexpectedSuccessTestCase._addUnexpectedSuccessB  sr    	'#)#>#>  !&  	8MM_(*8(d2% 8!!$78	8s&    %A<A0A84A<7A88A<c                      UR                   nU" X5        g ! [         a    [        R                  " S[        5         g f = f)Nz$TestResult has no addDuration method)addDurationrS   r>   r?   r@   )r'   r   elapsedrd  s       r   _addDurationTestCase._addDurationQ  s?    	' ,,K
 &	  	*MM@(*	*s    %??c                 $    U R                  5         g r7   )r  r   s    r   
_callSetUpTestCase._callSetUpZ  s    

r   c                 R    U" 5       b  [         R                  " SU S3[        SS9  g g )NzFIt is deprecated to return a value that is not None from a test case (rK     )
stacklevel)r>   r?   DeprecationWarning)r'   methods     r   _callTestMethodTestCase._callTestMethod]  s3    8MM ((.xq23ERSU  r   c                 $    U R                  5         g r7   )r!  r   s    r   _callTearDownTestCase._callTearDownb  s    r   c                    U" U0 UD6  g r7   r   r  s       r   _callCleanupTestCase._callCleanupe  s    $!&!r   c                    Uc5  U R                  5       n[        USS 5      n[        USS 5      nUb  U" 5         OS nUR                  " U 5         [        X R                  5      n[        U R                  SS5      (       d  [        USS5      (       aV  [        U R                  SS5      =(       d    [        USS5      n[        XU5        UUR                  " U 5        Ub  U" 5         $ $ [        U SS5      =(       d    [        USS5      n[        U5      n[        R                  " 5       n Xpl
        UR                  U 5         U R                  5         S S S 5        UR                  (       ab  Xgl        UR                  U 5         U R                  U5        S S S 5        SUl        UR                  U 5         U R!                  5         S S S 5        U R#                  5         U R%                  U[        R                  " 5       U-
  5        UR                  (       aX  U(       a?  UR&                  (       a  U R)                  XR&                  5        O$U R+                  U5        OUR,                  " U 5        US Ul        S nS U l
        UR                  " U 5        Ub  U" 5         $ $ ! , (       d  f       GNR= f! , (       d  f       GN"= f! , (       d  f       GN= f! S Ul        S nS U l
        f = f! UR                  " U 5        Ub  U" 5         f f = f)NstartTestRunstopTestRunrs   Frt   rx   r   )r0  r=   	startTestr   r   r-   stopTestr   timeperf_counterr   r5   ri  r%   r"   rp  rs  
doCleanupsrf  r&   r]  ra  rA   )	r'   r   ry  rz  r	  skip_whyr"   outcome
start_times	            r   runTestCase.runh  s   >++-F"6>4@L!&->K'K4	 ';';<J(;UCC
$7??#DNN4KRP P&z3JBO x0T OOD!& 'Q >F M
$DeL  v&G**,J% '--d3OO% 4??0A- 11$7,,Z8 805G- 11$7**, 8!!!&4+<+<+>+KM??("22 44V=T=TU 66v>))$/ +/' !% OOD!& 'A 43 87 87" +/' !% OOD!& 'su   A;K' 'AK' )K  J0K J. K 3K B*K .K' 
J+&K .
J=8K  
K
K K$$K' 'Lc                 X   U R                   =(       d
    [        5       nU R                  (       a`  U R                  R                  5       u  p#nUR	                  U 5         U R
                  " U/UQ70 UD6  S S S 5        U R                  (       a  M`  UR                  $ ! , (       d  f       N-= fr7   )r   r   r  re   r5   rv  r%   )r'   r  r^   r_   r`   s        r   r  TestCase.doCleanups  s}     ---8:nn%)^^%7%7%9"HF))$/!!(<T<V< 0 nnn  0/s   B
B)c                 $   / U l         U R                  (       a:  U R                  R                  5       u  pn U" U0 UD6  U R                  (       a  M9  g g ! [         a1    U R                   R	                  [
        R                  " 5       5         NOf = fr7   )tearDown_exceptionsr   re   rf   r]   r/   r0   r  s       r   doClassCleanupsTestCase.doClassCleanups  sy     #%!!%(%8%8%<%<%>"HF?$)&) !!!  ?''..s||~>?s   A 8BBc                 &    U R                   " U0 UD6$ r7   )r  )r'   r_   kwdss      r   __call__TestCase.__call__  s    xx&&&r   c                    [        X R                  5      n[        U R                  SS5      (       d  [        USS5      (       a6  [        U R                  SS5      =(       d    [        USS5      n[        U5      eU R	                  5         U R                  U5        U R                  5         U R                  (       aG  U R                  R                  5       u  p4nU R                  " U/UQ70 UD6  U R                  (       a  MF  g g )Nrs   Frt   rx   )
r=   r   r   r   ri  rp  rs  r  re   rv  )r'   r	  r  r^   r_   r`   s         r   debugTestCase.debug  s    T#7#78
DNN$7??J 3U;;0GL L":/FK 8$$Z(nn%)^^%7%7%9"HFh888 nnnr   c                     [        U5      er7   rm   )r'   rB   s     r   skipTestTestCase.skipTest  s    vr   c                 $    U R                  U5      er7   )rF   )r'   r   s     r   failTestCase.fail  s    ##C((r   c                 p    U(       a/  U R                  US[        U5      -  5      nU R                  U5      eg )Nz%s is not falser   r   rF   r'   exprr   s      r   assertFalseTestCase.assertFalse  s7    %%c+<y+NOC'',, r   c                 p    U(       d/  U R                  US[        U5      -  5      nU R                  U5      eg )Nz%s is not truer  r  s      r   
assertTrueTestCase.assertTrue  s7    %%c+;io+MNC'',, r   c                     U R                   (       d  U=(       d    U$ Uc  U$  U< SU< 3$ ! [         a    [        U5      < S[        U5      < 3s $ f = f)Nz : )longMessageUnicodeDecodeErrorr   )r'   r   r   s      r   r   TestCase._formatMessage  s[     %+%;	I !,S11! 	I!*;!73HH	Is   , %AAc                 P    [        X5      n UR                  SX#5      S n$ ! S nf = f)NassertRaisesr   r   )r'   expected_exceptionr_   r`   contexts        r   r  TestCase.assertRaises  s/    4 ''9@	>>.$? GdGs   ! %c                 <    [        X5      nUR                  SX#5      $ )NassertWarnsr   r   r'   expected_warningr_   r`   r  s        r   r  TestCase.assertWarns   s     8 &&6=~~mT::r   c                 <    [        X5      nUR                  SX#5      $ )N_assertNotWarns)r   r   r  s        r   r  TestCase._assertNotWarns?  s    ()9@~~/>>r   c                     SSK Jn  U" XUSS9$ )Nr   _AssertLogsContextFno_logs_logr  r'   loggerlevelr  s       r   
assertLogsTestCase.assertLogsD  s    * 	-!$uEEr   c                     SSK Jn  U" XUSS9$ )Nr   r  Tr  r  r  s       r   assertNoLogsTestCase.assertNoLogs\  s     	-!$tDDr   c                     [        U5      [        U5      L aI  U R                  R                  [        U5      5      nUb"  [        U[        5      (       a  [        X5      nU$ U R                  $ r7   )rP   r  getrp   r.   r=   _baseAssertEqual)r'   firstsecondasserters       r   _getAssertEqualityFuncTestCase._getAssertEqualityFunce  s\    " ;$v,&0044T%[AH#h,,&t6H$$$r   c                 n    X:X  d0  S[        X5      -  nU R                  X45      nU R                  U5      eg )N%s != %s)r	   r   rF   )r'   r  r  r   r   s        r   r  TestCase._baseAssertEqual  s=    $';E'JJK%%c7C'',, r   c                 4    U R                  X5      nU" XUS9  g )N)r   )r  )r'   r  r  r   assertion_funcs        r   assertEqualTestCase.assertEqual  s     44UCu#.r   c                     X:w  d<  U R                  U[        U5      < S[        U5      < 35      nU R                  U5      eg )N == r  )r'   r  r  r   s       r   assertNotEqualTestCase.assertNotEqual  sG     %%c59I:CF:K,M NC'',, r   c           	         X:X  a  g Ub  Ub  [        S5      e[        X-
  5      nUb=  Xe::  a  g [        U5      < S[        U5      < S[        U5      < S[        U5      < S3nOBUc  Sn[        Xc5      S:X  a  g [        U5      < S[        U5      < SU< S[        U5      < S3nU R	                  XG5      nU R                  U5      e)	N specify delta or places not bothz !=  within  delta ( difference)   r   z	 places (rT   absr   roundr   rF   r'   r  r  placesr   deltadiffr   s           r   assertAlmostEqualTestCase.assertAlmostEqual  s     ?!3>??5>"} % &!% $	!K ~T"a' % &!$	!K
 !!#3##C((r   c           	         Ub  Ub  [        S5      e[        X-
  5      nUbB  X:X  d  Xe:  a  g [        U5      < S[        U5      < S[        U5      < S[        U5      < S3nO:Uc  SnX:X  d  [        Xc5      S:w  a  g [        U5      < S[        U5      < SU< S3nU R	                  XG5      nU R                  U5      e)	Nr  r  r  r  r  r  r   z placesr  r  s           r   assertNotAlmostEqualTestCase.assertNotAlmostEqual  s     !3>??5>"O% &!% $	!K ~Ot)<)A9B59I9B69J9?AK !!#3##C((r   c           	         Ubq  UR                   n[        X5      (       d"  U R                  SU< S[        U5      < 35      e[        X$5      (       d"  U R                  SU< S[        U5      < 35      eOSnS n [	        U5      nUc   [	        U5      nUc  X:X  a  g SUR                  5       4[        X5      -   -  n[        [        WW5      5       H)  n	 X   n
 X)   nX:w  d  M  US
U	4[        X5      -   -  -  n  O#   Xx:X  a  Uc  [        U5      [        U5      :w  a  g Xx:  a#  USXWU-
  4-  -  n USU[        X   5      4-  -  nO'Xx:  a"  USXXU-
  4-  -  n USU[        X'   5      4-  -  nUnSSR                  [        R                  " [         R"                  " U5      R%                  5       [         R"                  " U5      R%                  5       5      5      -   nU R'                  X5      nU R)                  X<5      nU R+                  U5        g ! [
        [        4 a	    SU-  n GNf = f! [
        [        4 a	    SU-  n GNf = f! [
        [        [        4 a    USX4-  -  n   GMM  f = f! [
        [        [        4 a    US	X4-  -  n   GMt  f = f! [
        [        [        4 a    USX4-  -  n GNJf = f! [
        [        [        4 a    USXu4-  -  n GNof = f)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
r4  )r   rp   rF   r   lenrT   NotImplementedError
capitalizer	   rangemin
IndexErrorrP   joindifflibndiffpprintpformat
splitlines_truncateMessager   r  )r'   seq1seq2r   seq_typeseq_type_name	differinglen1len2iitem1item2r   diffMsgs                 r   assertSequenceEqualTestCase.assertSequenceEqual  s    $--Md--+++8)D/-K L Ld--+++8)D/-K L L . 'M		#t9D
 '4y
 |0"--/1(456I 3tT?+ GE GE >"K#$$)=e)K"K#M NI% ,( LX%5J$t*,{ +.;D[-IJ K	K"A#'4:)>"?#@ AI
  +.;D[-IJ K	L"A#'4:)>"?#@ AI
  MM&...99; ...99;=> > ++KA!!#3		#K ./ 	#B!#I	# 23 'G%'	' ":/BC "N"#!3#4 5I ":/BC "O"#!3#4 5I* ":/BC K #2594I#J KIK ":/BC L #36:5J#K LILsl   :H 	H. I
I12J J= H+*H+.II
I.-I.1JJJ:9J:=KKc                 p    U R                   nUb  [        U5      U::  a  X-   $ U[        [        U5      -  -   $ r7   )maxDiffr  DIFF_OMITTED)r'   r   r  max_diffs       r   r  TestCase._truncateMessageI  s8    <<s4yH4>!,T233r   c                 .    U R                  XU[        S9  g N)r  )r  r   )r'   list1list2r   s       r   r   TestCase.assertListEqualO  s     	  sT Br   c                 .    U R                  XU[        S9  g r
  )r  r   )r'   tuple1tuple2r   s       r   r   TestCase.assertTupleEqual[  s     	  u Er   c                     UR                  U5      n UR                  U5      nW(       d  W(       d  g / nU(       a4  UR	                  S5        U H  nUR	                  [        U5      5        M     W(       a4  UR	                  S5        U H  nUR	                  [        U5      5        M     SR                  U5      n	U R                  U R                  X95      5        g ! [         a  nU R                  SU-  5         S nANS nAf[         a  nU R                  SU-  5         S nAGNS nAff = f! [         a  nU R                  SU-  5         S nAGN/S nAf[         a  nU R                  SU-  5         S nAGNVS nAff = f)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:r4  )
differencerT   r  rS   r]   reprr  r   )
r'   set1set2r   difference1r4   difference2linesitemr   s
             r   r   TestCase.assertSetEqualf  sC   	P//$/K	Q//$/K {LLEF#T$Z( $LLEF#T$Z( $ ii&		$%%c785  	MIIG!KLL 	PIIJQNOO	P
  	MIIG!KLL 	QIIKaOPP	QsF   C D0 
D-(DD-D((D-0
F :EF !E;;F c                     X;  a<  [        U5      < S[        U5      < 3nU R                  U R                  X45      5        g g )N not found in r   r  r   r'   member	containerr   r   s        r   assertInTestCase.assertIn  s<    "2;F2C2;I2FHKIId))#;< #r   c                     X;   a<  [        U5      < S[        U5      < 3nU R                  U R                  X45      5        g g )Nz unexpectedly found in r  r  s        r   assertNotInTestCase.assertNotIn  s<    ;DV;L8A)8LNKIId))#;< r   c                     XLa<  [        U5      < S[        U5      < 3nU R                  U R                  X45      5        g g )Nz is not r  r'   expr1expr2r   r   s        r   assertIsTestCase.assertIs  s;    ,5e,<-6u-=?KIId))#;< r   c                 l    XL a0  S[        U5      < 3nU R                  U R                  X45      5        g g )Nzunexpectedly identical: r  r(  s        r   assertIsNotTestCase.assertIsNot  s0    >:CE:JLKIId))#;< r   c           	         U R                  U[        S5        U R                  U[        S5        X:w  a  S[        X5      -  nSSR                  [        R
                  " [        R                  " U5      R                  5       [        R                  " U5      R                  5       5      5      -   nU R                  XE5      nU R                  U R                  X45      5        g g )Nz"First argument is not a dictionaryz#Second argument is not a dictionaryr  r4  )assertIsInstancer  r	   r  r  r  r  r  r  r  r  r   )r'   d1d2r   r   r  s         r   r   TestCase.assertDictEqual  s    b$(LMb$(MN8$';B'CCK499W]]!>>"-88:!>>"-88:&< = =D //BKIId))#;< r   c                    [        U5      [        U5      pT [        R                  " U5      n[        R                  " U5      nX:X  a  g [        XE5      nU(       a\  SnU Vs/ s H  nSU-  PM
     n	nSR                  U	5      n
U R                  Xz5      nU R                  X75      nU R                  U5        g g ! [         a    [        XE5      n N{f = fs  snf )NzElement counts were not equal:
z First has %d, Second has %d:  %rr4  )
r   collectionsCounterr   rT   r   r  r  r   r  )r'   r  r  r   	first_seq
second_seqdifferencesr   r  r  r  s              r   assertCountEqualTestCase.assertCountEqual  s     !%UT&\:		F''	2E ((4F
 .yEK<KKVW;47$>;EWii&G//EK%%c7CIIcN   	I1)HK	I Xs   ,B8 !C8CCc                    U R                  U[        S5        U R                  U[        S5        X:w  Ga$  [        U5      U R                  :  d  [        U5      U R                  :  a  U R	                  XU5        UnUnU(       a$  U(       a  US   S:w  d	  US   S:w  a
  US-  nUS-  nO+U(       a  US   S:w  a  US-  nOU(       a  US   S:w  a  US-  nUR                  SS9nUR                  SS9nS[        X5      -  nSSR                  [        R                  " Xg5      5      -   n	U R                  X5      nU R                  U R                  X85      5        g g )	NzFirst argument is not a stringzSecond argument is not a stringr4  T)keependsr  rx   )r1  r.   r  _diffThresholdr  r  r	   r  r  r  r  r  r   )
r'   r  r  r   first_presplitsecond_presplit
firstlinessecondlinesr   r  s
             r   r   TestCase.assertMultiLineEqual  sN   eS*JKfc+LM?E
T000Fd111%%eS9 #N$O9$r
d(:"d*N#t+OF2J$.4'59,$&'22D2AJ)44d4CK %';E'JJK"'''--
"HIID//BKIId))#;<9 r   c                     X:  d<  [        U5      < S[        U5      < 3nU R                  U R                  X45      5        g g )Nz not less than r  r'   abr   r   s        r   
assertLessTestCase.assertLess  s5    u3<Q<1NKIId))#;< r   c                     X::  d<  [        U5      < S[        U5      < 3nU R                  U R                  X45      5        g g )Nz not less than or equal to r  rG  s        r   assertLessEqualTestCase.assertLessEqual  s6    v?H|YWX\ZKIId))#;< r   c                     X:  d<  [        U5      < S[        U5      < 3nU R                  U R                  X45      5        g g )Nz not greater than r  rG  s        r   assertGreaterTestCase.assertGreater  s5    u6?lIaLQKIId))#;< r   c                     X:  d<  [        U5      < S[        U5      < 3nU R                  U R                  X45      5        g g )Nz not greater than or equal to r  rG  s        r   assertGreaterEqualTestCase.assertGreaterEqual  s8    vBKA,PYZ[P\]KIId))#;< r   c                 j    Ub0  [        U5      < S3nU R                  U R                  X#5      5        g g )Nz is not Noner  r'   rK   r   r   s       r   assertIsNoneTestCase.assertIsNone  s/    ?.7n>KIId))#;< r   c                 P    Uc#  SnU R                  U R                  X#5      5        g g )Nzunexpectedly None)r  r   rV  s       r   assertIsNotNoneTestCase.assertIsNotNone  s(    ;-KIId))#;< r   c                     [        X5      (       d3  [        U5      < SU< 3nU R                  U R                  X45      5        g g )Nz is not an instance of rp   r   r  r   r'   rK   rW   r   r   s        r   r1  TestCase.assertIsInstance  s9     ###;DS>3OKIId))#;< $r   c                     [        X5      (       a3  [        U5      < SU< 3nU R                  U R                  X45      5        g g )Nz is an instance of r]  r^  s        r   assertNotIsInstanceTestCase.assertNotIsInstance&  s7    c7@~sKKIId))#;<  r   c                 >    [        XU5      nUR                  SX45      $ )NassertRaisesRegexr  )r'   r  r   r_   r`   r  s         r   rd  TestCase.assertRaisesRegex,  s#     ''9P~~14@@r   c                 >    [        XU5      nUR                  SX45      $ )NassertWarnsRegexr  )r'   r  r   r_   r`   r  s         r   rg  TestCase.assertWarnsRegex<  s#      &&6nM~~0$??r   c                     [        U[        [        45      (       a  [        R                  " U5      nUR                  U5      (       d6  SUR                  < SU< 3nU R                  X45      nU R                  U5      eg )NzRegex didn't match: r  )	rp   r.   bytesr   r   r   r   r   rF   )r'   textr   r   r   s        r   assertRegexTestCase.assertRegexO  sl    nsEl33ZZ7N$$T**&&.K %%c7C'',, +r   c                 F   [        U[        [        45      (       a  [        R                  " U5      nUR                  U5      nU(       aX  SXR                  5       UR                  5        < SUR                  < SU< 3nU R                  X55      nU R                  U5      eg )NzRegex matched: z	 matches z in )rp   r.   rj  r   r   r   startendr   r   rF   )r'   rk  unexpected_regexr   matchr   s         r   assertNotRegexTestCase.assertNotRegex[  s    &e55!zz*:; ''-[[]UYY[1 ((K
 %%c7C'',, r   )r  r   r  r   r   r  )r   r7   )NNNNN)Wr   r   r   r   AssertionErrorrF   r  r  r@  r   r(   r  r  r  r   r  r  r  r!  r%  r)  r,  r0  r9  r=  rC  rG  rL  rQ  r8   r9   _subtest_msg_sentinelr2   r]  ra  rf  ri  rp  rs  rv  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.  r   r;  r   rJ  rM  rP  rS  rW  rZ  r1  ra  rd  rg  rl  rs  r   __classcell__r   s   @r   r   r   j  s   B &KG N3>@683 = =
 7 7 V V a a#CJ=8e@ / # #</''U
"?B 	? 	?'9")--I*B;>?
F0E%4-/- AE $+)Z DH#'!)FaF4
C	F)9V====
=@!=F========A @&
-- -r   r   c                   b   ^  \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )FunctionTestCaseik  c                 Z   > [         [        U ]  5         X l        X0l        Xl        X@l        g r7   )r   r{  r(   
_setUpFunc_tearDownFunc	_testFunc_description)r'   testFuncr  r!  descriptionr   s        r   r(   FunctionTestCase.__init__t  s'    .0%!'r   c                 @    U R                   b  U R                  5         g g r7   )r}  r   s    r   r  FunctionTestCase.setUp{  s    ??&OO 'r   c                 @    U R                   b  U R                  5         g g r7   )r~  r   s    r   r!  FunctionTestCase.tearDown  s    )  *r   c                 $    U R                  5         g r7   )r  r   s    r   r   FunctionTestCase.runTest  s    r   c                 .    U R                   R                  $ r7   )r  r   r   s    r   r=  FunctionTestCase.id  s    ~~&&&r   c                 4   [        XR                  5      (       d  [        $ U R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R
                  UR
                  :H  =(       a    U R                  UR                  :H  $ r7   )rp   r   r@  r}  r~  r  r  rA  s     r   rC  FunctionTestCase.__eq__  sw    %00!!%"2"22 7!!U%8%887~~07   E$6$66	7r   c                     [        [        U 5      U R                  U R                  U R                  U R
                  45      $ r7   )rF  rP   r}  r~  r  r  r   s    r   rG  FunctionTestCase.__hash__  s7    T$Z$2D2D^^T%6%68 9 	9r   c                 d    [        U R                  5      < SU R                  R                  < S3$ )NrJ  rK  )r   r   r  r   r   s    r   rL  FunctionTestCase.__str__  s%    $T^^4 NN335 	5r   c                 R    S[        U R                  5      < SU R                  < S3$ )NrO  z tec=rP  )r   r   r  r   s    r   rQ  FunctionTestCase.__repr__  s     ( 8%)^^5 	5r   c                     U R                   b  U R                   $ U R                  R                  nU=(       a"    UR                  S5      S   R	                  5       =(       d    S $ r3  )r  r  r   r6  r5  r7  s     r   r9  !FunctionTestCase.shortDescription  sO    ($$$nn$$1syyq)//19T9r   )r  r}  r~  r  ru  )r   r   r   r   r(   r  r!  r   r=  rC  rG  rL  rQ  r9  r   rx  ry  s   @r   r{  r{  k  s:    (!'7955: :r   r{  c                   F   ^  \ rS rSrU 4S jrS rS rS rS rS r	Sr
U =r$ )	rV  i  c                 h   > [         TU ]  5         X l        Xl        X0l        UR
                  U l        g r7   )r   r(   _messager+   rT  rF   )r'   r+   r   rT  r   s       r   r(   _SubTest.__init__  s+    " ) : :r   c                     [        S5      e)Nzsubtests cannot be run directly)r  r   s    r   r   _SubTest.runTest  s    !"CDDr   c                 v   / nU R                   [        La*  UR                  SR                  U R                   5      5        U R                  (       aP  SR                  S U R                  R                  5        5       5      nUR                  SR                  U5      5        SR                  U5      =(       d    S$ )Nz[{}]z, c              3   H   #    U  H  u  pS R                  X5      v   M     g7f)z{}={!r}N)r   )r   r   r   s      r   r   +_SubTest._subDescription.<locals>.<genexpr>  s'      $31FQ   &&1s    "z({}) z(<subtest>))r  rw  r]   r   rT  r  items)r'   partsparams_descs      r   _subDescription_SubTest._subDescription  s    == 55LLt}}56;;)) $3"kk//1$3 3K LL{34xx/-/r   c                 r    SR                  U R                  R                  5       U R                  5       5      $ Nz{} {})r   r+   r=  r  r   s    r   r=  _SubTest.id  s)    ~~dnn//143G3G3IJJr   c                 6    U R                   R                  5       $ r7   )r+   r9  r   s    r   r9  _SubTest.shortDescription  s     ~~..00r   c                 V    SR                  U R                  U R                  5       5      $ r  )r   r+   r  r   s    r   rL  _SubTest.__str__  s     ~~dnnd.B.B.DEEr   )r  rF   rT  r+   )r   r   r   r   r(   r   r  r=  r9  rL  r   rx  ry  s   @r   rV  rV    s*    ;E	0K1F Fr   rV  )3r/   rq   r  r  r   r>   r6  r8   r   r}  ry   rx   r   utilr   r   r   r   r	   
__unittestobjectrw  r  rf   r   r   r   r   r-   r1   rL   rZ   r\   ra   rc   ri   r{   r   r   r&   r   r   r   r   r   r   ChainMapr   r   r{  rV  r   r   r   <module>r     s@       	       ? ? 
 7y ) 
 &8v &8R%,  6
0
 (I
3 3'3 'T$83 $8N1D2 1Dh<0 <"{++ }-v }-B 7:x 7:t!Fx !Fr   