<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

$Yf#                 @   sk  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d d l m Z d d l m Z m Z m Z m Z m Z d Z e   Z d Z Gd d   d e  Z Gd	 d
   d
 e  Z Gd d   d e  Z Gd d   d e  Z d d   Z d d   Z d d   Z d d   Z d d   Z  d d   Z! Gd d   d  Z" d d   Z# d d    Z$ Gd! d"   d" e"  Z% Gd# d$   d$ e%  Z& Gd% d&   d& e%  Z' e j( d' d( d) g  Z) Gd* d+   d+ e j*  Z+ Gd, d-   d- e"  Z, Gd. d/   d/ e  Z- Gd0 d1   d1 e-  Z. Gd2 d3   d3 e-  Z/ d S)4    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               @   s   e  Z d  Z d S)SkipTestN)__name__
__module____qualname__ r   r   )/opt/alt/python35/lib64/python3.5/case.pyr	      s   r	   c               @   s   e  Z d  Z d S)_ShouldStopN)r
   r   r   r   r   r   r   r   "   s   r   c               @   s   e  Z d  Z d S)_UnexpectedSuccessN)r
   r   r   r   r   r   r   r   '   s   r   c               @   s7   e  Z d  Z d d d  Z e j d d d   Z d S)_OutcomeNc             C   sL   d |  _  | |  _ t | d  |  _ d |  _ g  |  _ d  |  _ g  |  _ d  S)NF
addSubTestT)expecting_failurer   hasattrresult_supports_subtestssuccessskippedexpectedFailureerrors)selfr   r   r   r   __init__.   s    					z_Outcome.__init__Fc             c   s   |  j  } d |  _  z y	 d  VWn t k
 r5   Yn t k
 r~ } z* d |  _  |  j j | t |  f  WYd  d  } ~ Xn t k
 r Ynv t j   } |  j	 r | |  _
 n d |  _  |  j j | | f  d  } Yn) X|  j r|  j  r|  j j | d  f  Wd  |  j  o| |  _  Xd  S)NTF)r   KeyboardInterruptr	   r   appendstrr   sysexc_infor   r   r   r   )r   	test_caseisTestZold_successer    r   r   r   testPartExecutor7   s*    				.		z_Outcome.testPartExecutor)r
   r   r   r   
contextlibcontextmanagerr$   r   r   r   r   r   -   s   	r   c             C   s   |  S)Nr   )objr   r   r   _idU   s    r(   c                s     f d d   } | S)Nc                sL   t  |  t  s6 t j |     f d d    } | }  d |  _   |  _ |  S)Nc                 s   t      d  S)N)r	   )argskwargs)reasonr   r   skip_wrapper^   s    z-skip.<locals>.decorator.<locals>.skip_wrapperT)
isinstancetype	functoolswraps__unittest_skip____unittest_skip_why__)	test_itemr,   )r+   r   r   	decorator\   s    !		zskip.<locals>.decoratorr   )r+   r4   r   )r+   r   skipX   s    
r5   c             C   s   |  r t  |  St S)N)r5   r(   )	conditionr+   r   r   r   skipIfh   s    
r7   c             C   s   |  s t  |  St S)N)r5   r(   )r6   r+   r   r   r   
skipUnlessp   s    
r8   c             C   s   d |  _  |  S)NT)__unittest_expecting_failure__)r3   r   r   r   r   x   s    	r   c                sH   t  |  t  r, t   f d d   |  D  St  |  t  oG t |     S)Nc             3   s   |  ] } t  |    Vq d  S)N)_is_subtype).0r#   )basetyper   r   	<genexpr>~   s    z_is_subtype.<locals>.<genexpr>)r-   tupleallr.   
issubclass)expectedr<   r   )r<   r   r:   |   s    r:   c               @   s(   e  Z d  Z d d   Z d d   Z d S)_BaseTestCaseContextc             C   s   | |  _  d  S)N)r!   )r   r!   r   r   r   r      s    z_BaseTestCaseContext.__init__c             C   s.   |  j  j |  j |  } |  j  j |   d  S)N)r!   _formatMessagemsgfailureException)r   standardMsgrD   r   r   r   _raiseFailure   s    z"_BaseTestCaseContext._raiseFailureN)r
   r   r   r   rG   r   r   r   r   rB      s   rB   c             C   s!   d t  j k r t |   St Sd  S)NWITHIN_PYTHON_RPM_BUILD)osenvironr5   r(   )r+   r   r   r   _skipInRpmBuild   s    
rK   c                s%   t  j      f d d    } | S)Nc                 sa   d t  j k rP y   |  |   Wn$ t k
 rF t t j     Yn Xt  n   |  |   d  S)NrH   )rI   rJ   	ExceptionZ_ExpectedFailurer   r    r   )r)   r*   )funcr   r   wrapper   s    	z+_expectedFailureInRpmBuild.<locals>.wrapper)r/   r0   )rM   rN   r   )rM   r   _expectedFailureInRpmBuild   s    !rO   c               @   s+   e  Z d  Z d d d  Z d d   Z d S)_AssertRaisesBaseContextNc             C   s\   t  j |  |  | |  _ | |  _ | d  k	 r= t j |  } | |  _ d  |  _ d  |  _ d  S)N)	rB   r   rA   r!   recompileexpected_regexobj_namerD   )r   rA   r!   rS   r   r   r   r      s    				z!_AssertRaisesBaseContext.__init__c             C   s  zt  |  j |  j  s1 t d | |  j f   | r` | d d  k r` t j d t d  f  } | s | j d d   |  _	 | r t j d t
 t |   t d  |  S| ^ } } y | j |  _ Wn! t k
 r t |  |  _ Yn X|   | | |   Wd  QRXWd  d  }  Xd  S)Nz%s() arg 1 must be %sr   zcallable is None   rD   z3%r is an invalid keyword argument for this function)r:   rA   
_base_type	TypeError_base_type_strwarningswarnDeprecationWarningpoprD   nextiterr
   rT   AttributeErrorr   )r   namer)   r*   Zcallable_objr   r   r   handle   s.    	
	
z_AssertRaisesBaseContext.handle)r
   r   r   r   ra   r   r   r   r   rP      s   
rP   c               @   s4   e  Z d  Z e Z d Z d d   Z d d   Z d S)_AssertRaisesContextz-an exception type or tuple of exception typesc             C   s   |  S)Nr   )r   r   r   r   	__enter__   s    z_AssertRaisesContext.__enter__c             C   s  | d  k r y |  j  j } Wn! t k
 r? t |  j   } Yn X|  j rh |  j d j | |  j   q |  j d j |   n t j |  t	 | |  j   s d S| j
 d   |  _ |  j d  k r d S|  j } | j t |   s	|  j d j | j t |    d S)Nz{} not raised by {}z{} not raisedFTz"{}" does not match "{}")rA   r
   r_   r   rT   rG   format	tracebackclear_framesr@   with_traceback	exceptionrS   searchpattern)r   exc_type	exc_valuetbexc_namerS   r   r   r   __exit__   s(    		z_AssertRaisesContext.__exit__N)r
   r   r   BaseExceptionrV   rX   rc   ro   r   r   r   r   rb      s   rb   c               @   s4   e  Z d  Z e Z d Z d d   Z d d   Z d S)_AssertWarnsContextz(a warning type or tuple of warning typesc             C   ss   x2 t  j j   D]! } t | d d   r i  | _ q Wt j d d  |  _ |  j j   |  _ t j	 d |  j
  |  S)N__warningregistry__recordTalways)r   modulesvaluesgetattrrr   rY   catch_warningswarnings_managerrc   simplefilterrA   )r   vr   r   r   rc   	  s    z_AssertWarnsContext.__enter__c             C   sd  |  j  j | | |  | d  k	 r& d  Sy |  j j } Wn! t k
 rY t |  j  } Yn Xd  } x |  j D] } | j } t | |  j  s qj | d  k r | } |  j	 d  k	 r |  j	 j
 t |   r qj | |  _ | j |  _ | j |  _ d  SW| d  k	 r"|  j d j |  j	 j t |    |  j rJ|  j d j | |  j   n |  j d j |   d  S)Nz"{}" does not match "{}"z{} not triggered by {}z{} not triggered)ry   ro   rA   r
   r_   r   rY   messager-   rS   ri   warningfilenamelinenorG   rd   rj   rT   )r   rk   rl   rm   rn   Zfirst_matchingmwr   r   r   ro     s8    			z_AssertWarnsContext.__exit__N)r
   r   r   WarningrV   rX   rc   ro   r   r   r   r   rq     s   rq   _LoggingWatcherrecordsoutputc               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)_CapturingHandlerc             C   s&   t  j j |   t g  g   |  _ d  S)N)loggingHandlerr   r   watcher)r   r   r   r   r   A  s    z_CapturingHandler.__init__c             C   s   d  S)Nr   )r   r   r   r   flushE  s    z_CapturingHandler.flushc             C   s9   |  j  j j |  |  j |  } |  j  j j |  d  S)N)r   r   r   rd   r   )r   rs   rD   r   r   r   emitH  s    z_CapturingHandler.emitN)r
   r   r   r   r   r   r   r   r   r   r   <  s   r   c               @   s:   e  Z d  Z d Z d d   Z d d   Z d d   Z d S)	_AssertLogsContextz"%(levelname)s:%(name)s:%(message)sc             C   sS   t  j |  |  | |  _ | r: t j j | |  |  _ n t j |  _ d  |  _ d  S)N)	rB   r   logger_namer   _nameToLevelgetlevelINFOrD   )r   r!   r   r   r   r   r   r   T  s    	z_AssertLogsContext.__init__c             C   s   t  |  j t j  r( |  j } |  _ n t j |  j  } |  _ t j |  j  } t   } | j	 |  | j
 |  _
 | j d  d   |  _ | j |  _ | j |  _ | g | _ | j |  j  d | _ | j
 S)NF)r-   r   r   Loggerlogger	getLogger	FormatterLOGGING_FORMATr   setFormatterr   handlersold_handlersr   	old_level	propagateold_propagatesetLevel)r   r   	formatterhandlerr   r   r   rc   ]  s    		z_AssertLogsContext.__enter__c             C   s   |  j  |  j _ |  j |  j _ |  j j |  j  | d  k	 rA d St |  j j	  d k r |  j
 d j t j |  j  |  j j   d  S)NFr   z-no logs of level {} or higher triggered on {})r   r   r   r   r   r   r   lenr   r   rG   rd   r   getLevelNamer   r`   )r   rk   rl   rm   r   r   r   ro   n  s    z_AssertLogsContext.__exit__N)r
   r   r   r   r   rc   ro   r   r   r   r   r   O  s   	r   c               @   sG  e  Z d  Z e Z d Z d Z d Z d Z d d d	  Z	 d
 d   Z
 d d   Z d d   Z d d   Z e d d    Z e d d    Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z e j e d( d)   Z d* d+   Z d, d-   Z d. d/   Z  d0 d1 d2  Z! d3 d4   Z" d5 d6   Z# d7 d8   Z$ d9 d:   Z% d0 d; d<  Z& d0 d= d>  Z' d0 d? d@  Z( dA dB   Z) dC dD   Z* dE dF   Z+ d0 d0 dG dH  Z, dI dJ   Z- d0 dK dL  Z. d0 dM dN  Z/ d0 dO dP  Z0 d0 d0 d0 dQ dR  Z1 d0 d0 d0 dS dT  Z2 d0 d0 dU dV  Z3 dW dX   Z4 d0 dY dZ  Z5 d0 d[ d\  Z6 d0 d] d^  Z7 d0 d_ d`  Z8 d0 da db  Z9 d0 dc dd  Z: d0 de df  Z; d0 dg dh  Z< d0 di dj  Z= d0 dk dl  Z> d0 dm dn  Z? d0 do dp  Z@ d0 dq dr  ZA d0 ds dt  ZB d0 du dv  ZC d0 dw dx  ZD d0 dy dz  ZE d0 d{ d|  ZF d0 d} d~  ZG d d   ZH d d   ZI d0 d d  ZJ d0 d d  ZK d d   ZL eL e/  ZM ZN eL e0  ZO ZP eL e1  ZQ ZR eL e2  ZS ZT eL e(  ZU ZV eL e*  ZW eL e'  ZX eL eH  ZY eL eJ  ZZ eL eK  Z[ d0 S)TestCaseTP            FrunTestc             C   s   | |  _  d  |  _ d |  _ y t |  |  } Wn7 t k
 rg | d k rc t d |  j | f   Yn X| j |  _ g  |  _ d  |  _	 i  |  _
 |  j t d  |  j t d  |  j t d  |  j t d  |  j t d  |  j t d  d  S)	NzNo testr   zno such test method in %s: %sassertDictEqualassertListEqualassertTupleEqualassertSetEqualassertMultiLineEqual)_testMethodName_outcome_testMethodDocrw   r_   
ValueError	__class____doc__	_cleanups_subtest_type_equality_funcsaddTypeEqualityFuncdictlistr>   set	frozensetr   )r   Z
methodName
testMethodr   r   r   r     s&    						zTestCase.__init__c             C   s   | |  j  | <d  S)N)r   )r   Ztypeobjfunctionr   r   r   r     s    zTestCase.addTypeEqualityFuncc             O   s   |  j  j | | | f  d  S)N)r   r   )r   r   r)   r*   r   r   r   
addCleanup  s    zTestCase.addCleanupc             C   s   d  S)Nr   )r   r   r   r   setUp  s    zTestCase.setUpc             C   s   d  S)Nr   )r   r   r   r   tearDown  s    zTestCase.tearDownc             C   s   d  S)Nr   )clsr   r   r   
setUpClass  s    zTestCase.setUpClassc             C   s   d  S)Nr   )r   r   r   r   tearDownClass  s    zTestCase.tearDownClassc             C   s   d S)Nr   r   )r   r   r   r   countTestCases  s    zTestCase.countTestCasesc             C   s
   t  j   S)N)r   Z
TestResult)r   r   r   r   defaultTestResult  s    zTestCase.defaultTestResultc             C   s,   |  j  } | r( | j d  d j   p+ d  S)N
r   )r   splitstrip)r   docr   r   r   shortDescription  s    	zTestCase.shortDescriptionc             C   s   d t  |  j  |  j f S)Nz%s.%s)r   r   r   )r   r   r   r   id  s    zTestCase.idc             C   s,   t  |   t  |  k	 r t S|  j | j k S)N)r.   NotImplementedr   )r   otherr   r   r   __eq__  s    zTestCase.__eq__c             C   s   t  t |   |  j f  S)N)hashr.   r   )r   r   r   r   __hash__  s    zTestCase.__hash__c             C   s   d |  j  t |  j  f S)Nz%s (%s))r   r   r   )r   r   r   r   __str__  s    zTestCase.__str__c             C   s   d t  |  j  |  j f S)Nz<%s testMethod=%s>)r   r   r   )r   r   r   r   __repr__  s    zTestCase.__repr__c             C   sR   t  | d d   } | d  k	 r. | | |  n  t j d t d  | j |  d  S)NaddSkipz4TestResult has no addSkip method, skips not reportedr   )rw   rY   rZ   RuntimeWarning
addSuccess)r   r   r!   r+   r   r   r   r   _addSkip  s    	
zTestCase._addSkipc             k   s   |  j  j s d  Vd  S|  j } | d  k r< t j |  } n | j j |  } t |  | |  |  _ zt |  j  j |  j d d 
 d  VWd  QRX|  j  j	 s |  j  j
 } | d  k	 r | j r t  n |  j  j r t  Wd  | |  _ Xd  S)Nr"   T)r   r   r   collectionsChainMapparams	new_child_SubTestr$   r   r   Zfailfastr   r   )r   rD   r   parentZ
params_mapr   r   r   r   subTest  s$    		
zTestCase.subTestc             C   s   x | D]y \ } } t  | t  r; | j | j | |  q | d  k	 r t | d |  j  rp | j | |  q | j | |  q Wd  S)Nr   )r-   r   r   r!   r@   rE   
addFailureZaddError)r   r   r   testr    r   r   r   _feedErrorsToResult=  s    zTestCase._feedErrorsToResultc             C   sP   y | j  } Wn/ t k
 r> t j d t  | j |   Yn X| |  |  d  S)Nz@TestResult has no addExpectedFailure method, reporting as passes)addExpectedFailurer_   rY   rZ   r   r   )r   r   r    r   r   r   r   _addExpectedFailureG  s    	zTestCase._addExpectedFailurec             C   sx   y | j  } WnZ t k
 ri t j d t  y t d   Wn( t k
 rd | j |  t j    Yn XYn X| |   d  S)NzCTestResult has no addUnexpectedSuccess method, reporting as failure)	addUnexpectedSuccessr_   rY   rZ   r   r   r   r   r    )r   r   r   r   r   r   _addUnexpectedSuccessQ  s    	 zTestCase._addUnexpectedSuccessNc          (   C   s  | } | d  k rC |  j    } t | d d   } | d  k	 rC |   | j |   t |  |  j  } t |  j d d  s t | d d  r z> t |  j d d  p t | d d  } |  j | |  |  Wd  | j |   Xd  St | d d  } t |  d d  } | p	| } t |  }	 z'|	 |  _ |	 j	 |    |  j
   Wd  QRX|	 j r| |	 _ |	 j	 |  d d  |   Wd  QRXd |	 _ |	 j	 |    |  j   Wd  QRX|  j   x* |	 j D] \ }
 } |  j | |
 |  qW|  j | |	 j  |	 j r:| r-|	 j r|  j | |	 j  q:|  j |  n | j |   | SWd  | j |   | d  k rt | d	 d   } | d  k	 r|   |	 j j   d  |	 _ d  |  _ Xd  S)
NstartTestRunr1   Fr2    r9   r"   TstopTestRun)r   rw   Z	startTestr   r   r   ZstopTestr   r   r$   r   r   r   r   
doCleanupsr   r   r   r   r   r   r   clear)r   r   Zorig_resultr   r   Zskip_whyZexpecting_failure_methodZexpecting_failure_classr   outcomer   r+   r   r   r   r   run`  sh    				
			zTestCase.runc          
   C   se   |  j  p t   } xI |  j r] |  j j   \ } } } | j |    | | |   Wd  QRXq W| j S)N)r   r   r   r\   r$   r   )r   r   r   r)   r*   r   r   r   r     s    zTestCase.doCleanupsc             O   s   |  j  | |   S)N)r   )r   r)   kwdsr   r   r   __call__  s    zTestCase.__call__c             C   sc   |  j    t |  |  j    |  j   x5 |  j r^ |  j j d  \ } } } | | |   q* Wd  S)Nr   )r   rw   r   r   r   r\   )r   r   r)   r*   r   r   r   debug  s    

zTestCase.debugc             C   s   t  |   d  S)N)r	   )r   r+   r   r   r   skipTest  s    zTestCase.skipTestc             C   s   |  j  |   d  S)N)rE   )r   rD   r   r   r   fail  s    zTestCase.failc             C   s5   | r1 |  j  | d t |   } |  j |   d  S)Nz%s is not false)rC   r   rE   )r   exprrD   r   r   r   assertFalse  s    zTestCase.assertFalsec             C   s5   | s1 |  j  | d t |   } |  j |   d  S)Nz%s is not true)rC   r   rE   )r   r   rD   r   r   r   
assertTrue  s    zTestCase.assertTruec             C   sh   |  j  s | p | S| d  k r# | Sy d | | f SWn, t k
 rc d t |  t |  f SYn Xd  S)Nz%s : %s)longMessageUnicodeDecodeErrorr   )r   rD   rF   r   r   r   rC     s    
	
zTestCase._formatMessagec          
   O   s4   t  | |   } z | j d | |  SWd  d  } Xd  S)NassertRaises)rb   ra   )r   expected_exceptionr)   r*   contextr   r   r   r     s    zTestCase.assertRaisesc             O   s"   t  | |   } | j d | |  S)NassertWarns)rq   ra   )r   expected_warningr)   r*   r   r   r   r   r     s    zTestCase.assertWarnsc             C   s   t  |  | |  S)N)r   )r   r   r   r   r   r   
assertLogs'  s    zTestCase.assertLogsc             C   se   t  |  t  |  k r^ |  j j t  |   } | d  k	 r^ t | t  rZ t |  |  } | S|  j S)N)r.   r   r   r-   r   rw   _baseAssertEqual)r   firstsecondZasserterr   r   r   _getAssertEqualityFunc=  s    zTestCase._getAssertEqualityFuncc             C   sD   | | k s@ d t  | |  } |  j | |  } |  j |   d  S)Nz%s != %s)r   rC   rE   )r   r   r   rD   rF   r   r   r   r   W  s    zTestCase._baseAssertEqualc             C   s)   |  j  | |  } | | | d | d  S)NrD   )r   )r   r   r   rD   Zassertion_funcr   r   r   assertEqual^  s    zTestCase.assertEqualc             C   sG   | | k sC |  j  | d t |  t |  f  } |  j |   d  S)Nz%s == %s)rC   r   rE   )r   r   r   rD   r   r   r   assertNotEquale  s    zTestCase.assertNotEqualc             C   s   | | k r d  S| d  k	 r4 | d  k	 r4 t  d   | d  k	 r t | |  | k rZ d  Sd t |  t |  t |  f } nT | d  k r d } t t | |  |  d k r d  Sd t |  t |  | f } |  j | |  } |  j |   d  S)Nz specify delta or places not bothz%s != %s within %s delta   r   z%s != %s within %r places)rW   absr   roundrC   rE   )r   r   r   placesrD   deltarF   r   r   r   assertAlmostEqualn  s&    		
zTestCase.assertAlmostEqualc             C   s  | d  k	 r$ | d  k	 r$ t  d   | d  k	 r | | k rW t | |  | k rW d  Sd t |  t |  t |  f } na | d  k r d } | | k r t t | |  |  d k r d  Sd t |  t |  | f } |  j | |  } |  j |   d  S)Nz specify delta or places not bothz%s == %s within %s deltar  r   z%s == %s within %r places)rW   r  r   r  rC   rE   )r   r   r   r  rD   r  rF   r   r   r   assertNotAlmostEqual  s"    #	,	
zTestCase.assertNotAlmostEqualc          '   C   s  | d  k	 rt | j  } t | |  sC |  j d | t |  f   t | |  sz |  j d | t |  f   n d } d  } y t |  } Wn" t t f k
 r d | } Yn X| d  k r y t |  } Wn" t t f k
 r d | } Yn X| d  k r&| | k rd  Sd | j   f t | |  } x t	 t
 | |   D] }	 y | |	 }
 Wn0 t t t f k
 r| d |	 | f 7} PYn Xy | |	 } Wn0 t t t f k
 r| d |	 | f 7} PYn X|
 | k rH| d	 |	 f t |
 |  7} PqHW| | k r3| d  k r3t |  t |  k r3d  S| | k r| d
 | | | f 7} y" | d | t | |  f 7} Wq&t t t f k
 r| d | | f 7} Yq&Xnx | | k  r&| d | | | f 7} y" | d | t | |  f 7} Wn/ t t t f k
 r%| d | | f 7} Yn X| } d d j t j t j |  j   t j |  j     } |  j | |  } |  j | |  } |  j |  d  S)NzFirst sequence is not a %s: %szSecond sequence is not a %s: %sZ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
   r-   rE   r   r   rW   NotImplementedError
capitalizer   rangemin
IndexErrorr.   joindifflibndiffpprintpformat
splitlines_truncateMessagerC   r   )r   Zseq1Zseq2rD   seq_typeZseq_type_nameZ	differingZlen1Zlen2iZitem1Zitem2rF   diffMsgr   r   r   assertSequenceEqual  s    				zTestCase.assertSequenceEqualc             C   sA   |  j  } | d  k s' t |  | k r/ | | S| t t |  S)N)maxDiffr   DIFF_OMITTED)r   r|   diffZmax_diffr   r   r   r    s    	zTestCase._truncateMessagec             C   s   |  j  | | | d t d  S)Nr  )r  r   )r   Zlist1Zlist2rD   r   r   r   r     s    
zTestCase.assertListEqualc             C   s   |  j  | | | d t d  S)Nr  )r  r>   )r   Ztuple1Ztuple2rD   r   r   r   r   +  s    	zTestCase.assertTupleEqualc       
       C   s  y | j  |  } Wnk t k
 rK } z |  j d |  WYd  d  } ~ Xn6 t k
 r } z |  j d |  WYd  d  } ~ Xn Xy | j  |  } Wnk t k
 r } z |  j d |  WYd  d  } ~ Xn6 t k
 r} z |  j d |  WYd  d  } ~ Xn X| p| sd  Sg  } | rO| j d  x! | D] } | j t |   q2W| r| j d  x! | D] } | j t |   qiWd j |  }	 |  j |  j | |	   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   )
differencerW   r   r_   r   reprr  rC   )
r   Zset1Zset2rD   Zdifference1r#   Zdifference2linesitemrF   r   r   r   r   6  s2    #$#$zTestCase.assertSetEqualc             C   sE   | | k rA d t  |  t  |  f } |  j |  j | |   d  S)Nz%s not found in %s)r   r   rC   )r   member	containerrD   rF   r   r   r   assertIna  s    zTestCase.assertInc             C   sE   | | k rA d t  |  t  |  f } |  j |  j | |   d  S)Nz%s unexpectedly found in %s)r   r   rC   )r   r   r!  rD   rF   r   r   r   assertNotInh  s    zTestCase.assertNotInc             C   sE   | | k	 rA d t  |  t  |  f } |  j |  j | |   d  S)Nz%s is not %s)r   r   rC   )r   expr1expr2rD   rF   r   r   r   assertIso  s    zTestCase.assertIsc             C   s<   | | k r8 d t  |  f } |  j |  j | |   d  S)Nzunexpectedly identical: %s)r   r   rC   )r   r$  r%  rD   rF   r   r   r   assertIsNotv  s    zTestCase.assertIsNotc             C   s   |  j  | t d  |  j  | t d  | | k r d t | |  } d d j t j t j |  j   t j |  j     } |  j	 | |  } |  j
 |  j | |   d  S)Nz"First argument is not a dictionaryz#Second argument is not a dictionaryz%s != %sr   )assertIsInstancer   r   r  r  r  r  r  r  r  r   rC   )r   Zd1Zd2rD   rF   r  r   r   r   r   |  s    zTestCase.assertDictEqualc       	      C   s  t  j d t  g  } g  } xv | j   D]h \ } } | | k rQ | j |  q) | | | k r) | j d t |  t |  t | |  f  q) W| p | s d  Sd } | r d d j d d   | D  } | r | r | d 7} | d	 d j |  7} |  j |  j | |   d  S)
Nz&assertDictContainsSubset is deprecatedz%s, expected: %s, actual: %sr   zMissing: %s,c             s   s   |  ] } t  |  Vq d  S)N)r   )r;   r   r   r   r   r=     s    z4TestCase.assertDictContainsSubset.<locals>.<genexpr>z; zMismatched values: %s)	rY   rZ   r[   itemsr   r   r  r   rC   )	r   ZsubsetZ
dictionaryrD   missingZ
mismatchedkeyvaluerF   r   r   r   assertDictContainsSubset  s,    		
z!TestCase.assertDictContainsSubsetc       
      C   s   t  |  t  |  } } y" t j |  } t j |  } Wn! t k
 r^ t | |  } Yn  X| | k ro d  St | |  } | r d } d d   | D } d j |  }	 |  j | |	  } |  j | |  } |  j	 |  d  S)NzElement counts were not equal:
c             S   s   g  |  ] } d  |  q S)z First has %d, Second has %d:  %rr   )r;   r  r   r   r   
<listcomp>  s   	 z-TestCase.assertCountEqual.<locals>.<listcomp>r   )
r   r   CounterrW   r   r   r  r  rC   r   )
r   r   r   rD   Z	first_seqZ
second_seqZdifferencesrF   r  r  r   r   r   assertCountEqual  s     zTestCase.assertCountEqualc             C   s5  |  j  | t d  |  j  | t d  | | k r1t |  |  j k s\ t |  |  j k ro |  j | | |  | j d d  } | j d d  } t |  d k r | j d  | k r | d g } | d g } d t | |  } d d	 j t	 j
 | |   } |  j | |  } |  j |  j | |   d  S)
NzFirst argument is not a stringzSecond argument is not a stringkeependsTr   z
r   z%s != %sr   )r(  r   r   _diffThresholdr   r  r   r   r  r  r  r  r   rC   )r   r   r   rD   Z
firstlinesZsecondlinesrF   r  r   r   r   r     s    'zTestCase.assertMultiLineEqualc             C   sE   | | k  sA d t  |  t  |  f } |  j |  j | |   d  S)Nz%s not less than %s)r   r   rC   )r   abrD   rF   r   r   r   
assertLess  s    zTestCase.assertLessc             C   sE   | | k sA d t  |  t  |  f } |  j |  j | |   d  S)Nz%s not less than or equal to %s)r   r   rC   )r   r4  r5  rD   rF   r   r   r   assertLessEqual  s    zTestCase.assertLessEqualc             C   sE   | | k sA d t  |  t  |  f } |  j |  j | |   d  S)Nz%s not greater than %s)r   r   rC   )r   r4  r5  rD   rF   r   r   r   assertGreater  s    zTestCase.assertGreaterc             C   sE   | | k sA d t  |  t  |  f } |  j |  j | |   d  S)Nz"%s not greater than or equal to %s)r   r   rC   )r   r4  r5  rD   rF   r   r   r   assertGreaterEqual  s    zTestCase.assertGreaterEqualc             C   s<   | d  k	 r8 d t  |  f } |  j |  j | |   d  S)Nz%s is not None)r   r   rC   )r   r'   rD   rF   r   r   r   assertIsNone  s    zTestCase.assertIsNonec             C   s/   | d  k r+ d } |  j  |  j | |   d  S)Nzunexpectedly None)r   rC   )r   r'   rD   rF   r   r   r   assertIsNotNone  s    zTestCase.assertIsNotNonec             C   sB   t  | |  s> d t |  | f } |  j |  j | |   d  S)Nz%s is not an instance of %r)r-   r   r   rC   )r   r'   r   rD   rF   r   r   r   r(    s    zTestCase.assertIsInstancec             C   sB   t  | |  r> d t |  | f } |  j |  j | |   d  S)Nz%s is an instance of %r)r-   r   r   rC   )r   r'   r   rD   rF   r   r   r   assertNotIsInstance  s    zTestCase.assertNotIsInstancec             O   s%   t  | |  |  } | j d | |  S)NassertRaisesRegex)rb   ra   )r   r   rS   r)   r*   r   r   r   r   r=    s    zTestCase.assertRaisesRegexc             O   s%   t  | |  |  } | j d | |  S)NassertWarnsRegex)rq   ra   )r   r   rS   r)   r*   r   r   r   r   r>    s    zTestCase.assertWarnsRegexc             C   sk   t  | t t f  r$ t j |  } | j |  sg d | j | f } |  j | |  } |  j |   d  S)Nz&Regex didn't match: %r not found in %r)	r-   r   bytesrQ   rR   ri   rj   rC   rE   )r   textrS   rD   rF   r   r   r   assertRegex.  s    zTestCase.assertRegexc             C   s   t  | t t f  r$ t j |  } | j |  } | r d | | j   | j    | j | f } |  j	 | |  } |  j
 |   d  S)Nz"Regex matched: %r matches %r in %r)r-   r   r?  rQ   rR   ri   startendrj   rC   rE   )r   r@  Zunexpected_regexrD   matchrF   r   r   r   assertNotRegex:  s    
zTestCase.assertNotRegexc                s     f d d   } | S)Nc                 s,   t  j d j   j  t d    |  |   S)NzPlease use {0} instead.r   )rY   rZ   rd   r
   r[   )r)   r*   )original_funcr   r   deprecated_funcJ  s    
z,TestCase._deprecate.<locals>.deprecated_funcr   )rF  rG  r   )rF  r   
_deprecateI  s    zTestCase._deprecatei  i   )\r
   r   r   AssertionErrorrE   r   r  r3  Z_classSetupFailedr   r   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r%   r&   _subtest_msg_sentinelr   r   r   r   r   r   r   r   r   r   r   r   rC   r   r   r   r   r   r   r  r  r  r  r  r   r   r   r"  r#  r&  r'  r   r.  r1  r   r6  r7  r8  r9  r:  r;  r(  r<  r=  r>  rA  rE  rH  ZfailUnlessEqualZassertEqualsZfailIfEqualZassertNotEqualsZfailUnlessAlmostEqualZassertAlmostEqualsZfailIfAlmostEqualZassertNotAlmostEqualsZ
failUnlessZassert_ZfailUnlessRaisesZfailIfZassertRaisesRegexpZassertRegexpMatchesZassertNotRegexpMatchesr   r   r   r   r   {  s   ! 	

E	!	& c+!	r   c                   s   e  Z d  Z d d d   f d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z   S)FunctionTestCaseNc                s;   t  t |   j   | |  _ | |  _ | |  _ | |  _ d  S)N)superrL  r   
_setUpFunc_tearDownFunc	_testFunc_description)r   ZtestFuncr   r   description)r   r   r   r   h  s
    			zFunctionTestCase.__init__c             C   s   |  j  d  k	 r |  j    d  S)N)rN  )r   r   r   r   r   o  s    zFunctionTestCase.setUpc             C   s   |  j  d  k	 r |  j    d  S)N)rO  )r   r   r   r   r   s  s    zFunctionTestCase.tearDownc             C   s   |  j    d  S)N)rP  )r   r   r   r   r   w  s    zFunctionTestCase.runTestc             C   s
   |  j  j S)N)rP  r
   )r   r   r   r   r   z  s    zFunctionTestCase.idc             C   s\   t  | |  j  s t S|  j | j k o[ |  j | j k o[ |  j | j k o[ |  j | j k S)N)r-   r   r   rN  rO  rP  rQ  )r   r   r   r   r   r   }  s    zFunctionTestCase.__eq__c             C   s+   t  t |   |  j |  j |  j |  j f  S)N)r   r.   rN  rO  rP  rQ  )r   r   r   r   r     s    zFunctionTestCase.__hash__c             C   s   d t  |  j  |  j j f S)Nz%s (%s))r   r   rP  r
   )r   r   r   r   r     s    zFunctionTestCase.__str__c             C   s   d t  |  j  |  j f S)Nz<%s tec=%s>)r   r   rP  )r   r   r   r   r     s    zFunctionTestCase.__repr__c             C   sE   |  j  d  k	 r |  j  S|  j j } | rA | j d  d j   pD d  S)Nr   r   )rQ  rP  r   r   r   )r   r   r   r   r   r     s    z!FunctionTestCase.shortDescription)r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   rL  _  s   		rL  c                   s^   e  Z d  Z   f d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z   S)r   c                s8   t    j   | |  _ | |  _ | |  _ | j |  _ d  S)N)rM  r   _messager!   r   rE   )r   r!   r|   r   )r   r   r   r     s
    			z_SubTest.__init__c             C   s   t  d   d  S)Nzsubtests cannot be run directly)r	  )r   r   r   r   r     s    z_SubTest.runTestc             C   s   g  } |  j  t k	 r. | j d j |  j    |  j rx d j d d   t |  j j    D  } | j d j |   d j |  p d S)Nz[{}]z, c             s   s'   |  ] \ } } d  j  | |  Vq d S)z{}={!r}N)rd   )r;   kr{   r   r   r   r=     s   z+_SubTest._subDescription.<locals>.<genexpr>z({}) z(<subtest>))rS  rK  r   rd   r   r  sortedr*  )r   partsZparams_descr   r   r   _subDescription  s    		z_SubTest._subDescriptionc             C   s   d j  |  j j   |  j    S)Nz{} {})rd   r!   r   rX  )r   r   r   r   r     s    z_SubTest.idc             C   s   |  j  j   S)N)r!   r   )r   r   r   r   r     s    z_SubTest.shortDescriptionc             C   s   d j  |  j |  j    S)Nz{} {})rd   r!   rX  )r   r   r   r   r     s    z_SubTest.__str__)	r
   r   r   r   r   rX  r   r   r   r   r   )r   r   r     s   r   )0r   r/   r  rI   r   r  rQ   rY   r   r%   re   r   r   utilr   r   r   r   r   Z
__unittestobjectrK  r  rL   r	   r   r   r   r(   r5   r7   r8   r   r:   rB   rK   rO   rP   rb   rq   
namedtupler   r   r   r   r   rL  r   r   r   r   r   <module>   sR   (	(/%5	,   :