509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„jœà  ã               @   sª  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G dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!G dd„ dƒZ"dd„ Z#G dd „ d e"ƒZ$G d!d"„ d"e$ƒZ%G d#d$„ d$e$ƒZ&ej'd%d&d'gƒZ(G d(d)„ d)ej)ƒZ*G d*d+„ d+e"ƒZ+G d,d-„ d-eƒZ,G d.d/„ d/e,ƒZ-G d0d1„ d1e,ƒZ.dS )2é    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   ú%/usr/lib64/python3.6/unittest/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               @   s&   e Zd Zddd„Zejddd„ƒZdS )	Ú_OutcomeNc             C   s4   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  W nœ tk
r.   ‚ Y n¤ tk
rh } z d| _ | jj|t|ƒfƒ W Y d d }~X nj tk
rz   Y nX   tjƒ }| j	r–|| _
nd| _ | jj||fƒ d }Y nX | jrÒ| j rÒ| jj|d fƒ W d | j oÞ|| _ X d 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)N)F)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                s4   t | tƒs$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 |ƒS tS )N)r5   r(   )Ú	conditionr+   r   r   r   ÚskipIfh   s    r7   c             C   s   | st |ƒS t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                s4   t | tƒr t‡ fdd„| D ƒƒS t | tƒo2t| ˆ ƒ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| ƒS tS d S )NZWITHIN_PYTHON_RPM_BUILD)ÚosÚenvironr5   r(   )r+   r   r   r   Ú_skipInRpmBuild�   s    
rJ   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!   rN   r   r   r   r   œ   s    
z!_AssertRaisesBaseContext.__init__c             C   sÔ   zÈt | j| jƒs"td|| jf ƒ‚|rD|d d krDtjdtdƒ f }|sx|jdd ƒ| _	|rttjdt
t|ƒƒ tdƒ | S |^}}y|j| _W n tk
rª   t|ƒ| _Y nX | � |||Ž W d Q R X W d d } X d 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
   rO   ÚAttributeErrorr   )r   Únamer)   r*   Zcallable_objr   r   r   Úhandle¦   s.    z_AssertRaisesBaseContext.handle)N)r
   r   r   r   r\   r   r   r   r   rK   š   s   

rK   c               @   s$   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rby| j j}W n tk
r2   t| j ƒ}Y nX | jrP| jdj|| jƒƒ ql| 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
   rZ   r   rO   rG   ÚformatÚ	tracebackÚclear_framesr@   Úwith_tracebackZ	exceptionrN   ÚsearchÚpattern)r   Úexc_typeÚ	exc_valueÚtbÚexc_namerN   r   r   r   Ú__exit__Ò   s(    


z_AssertRaisesContext.__exit__N)r
   r   r   ÚBaseExceptionrQ   rS   r^   ri   r   r   r   r   r]   É   s   r]   c               @   s$   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   sR   x$t jjƒ D ]}t|dd ƒri |_qW tjdd�| _| jjƒ | _tj	d| j
ƒ | S )NÚ__warningregistry__T)ÚrecordÚalways)r   ÚmodulesÚvaluesÚgetattrrl   rT   Úcatch_warningsÚwarnings_managerr^   ÚsimplefilterrA   )r   Úvr   r   r   r^   ô   s    
z_AssertWarnsContext.__enter__c             C   s  | j j|||ƒ |d k	rd S y| jj}W n tk
rF   t| jƒ}Y nX d }xd| jD ]Z}|j}t|| jƒslqT|d krx|}| j	d k	r–| j	j
t|ƒƒ r–qT|| _|j| _|j| _d S W |d k	rÔ| jdj| j	jt|ƒƒƒ | jrð| jdj|| jƒƒ n| jdj|ƒƒ d S )Nz"{}" does not match "{}"z{} not triggered by {}z{} not triggered)rs   ri   rA   r
   rZ   r   rT   Úmessager-   rN   rc   ZwarningÚfilenameÚlinenorG   r_   rd   rO   )r   re   rf   rg   rh   Zfirst_matchingÚmÚwr   r   r   ri   ÿ   s8    

z_AssertWarnsContext.__exit__N)r
   r   r   ÚWarningrQ   rS   r^   ri   r   r   r   r   rk   î   s   rk   Ú_LoggingWatcherÚrecordsÚoutputc               @   s$   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   ,  s    z_CapturingHandler.__init__c             C   s   d S )Nr   )r   r   r   r   Úflush0  s    z_CapturingHandler.flushc             C   s*   | j jj|ƒ | j|ƒ}| j jj|ƒ d S )N)r‚   r}   r   r_   r~   )r   rm   rD   r   r   r   Úemit3  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   s:   t j| |ƒ || _|r(tjj||ƒ| _ntj| _d | _d S )N)	rB   r   Úlogger_namer€   Z_nameToLevelÚgetÚlevelÚINFOrD   )r   r!   r†   rˆ   r   r   r   r   ?  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€   ZLoggerÚloggerZ	getLoggerZ	FormatterÚLOGGING_FORMATr   ZsetFormatterr‚   ÚhandlersÚold_handlersrˆ   Ú	old_levelÚ	propagateÚold_propagateÚsetLevel)r   rŠ   Z	formatterZhandlerr   r   r   r^   H  s    
z_AssertLogsContext.__enter__c             C   s`   | j | j_| j| j_| jj| jƒ |d k	r.dS t| 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   r_   r€   ZgetLevelNamerˆ   r[   )r   re   rf   rg   r   r   r   ri   Y  s    

z_AssertLogsContext.__exit__N)r
   r   r   r‹   r   r^   ri   r   r   r   r   r…   :  s   	r…   c               @   sØ  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fd(d)„ƒZd*d+„ Zd,d-„ Zd.d/„ Z dŒd1d2„Z!d3d4„ Z"d5d6„ Z#d7d8„ Z$d9d:„ Z%d�d;d<„Z&dŽd=d>„Z'd�d?d@„Z(dAdB„ Z)dCdD„ Z*dEdF„ Z+d�dGdH„Z,dIdJ„ Z-d‘dKdL„Z.d’dMdN„Z/d“dOdP„Z0d”dQdR„Z1d•dSdT„Z2d–dUdV„Z3dWdX„ Z4d—dYdZ„Z5d˜d[d\„Z6d™d]d^„Z7dšd_d`„Z8d›dadb„Z9dœdcdd„Z:d�dedf„Z;dždgdh„Z<dŸdidj„Z=d dkdl„Z>d¡dmdn„Z?d¢dodp„Z@d£dqdr„ZAd¤dsdt„ZBd¥dudv„ZCd¦dwdx„ZDd§dydz„ZEd¨d{d|„ZFd©d}d~„ZGdd€„ ZHd�d‚„ ZIdªdƒd„„ZJd«d…d†„ZKd‡dˆ„ ZLeLe/ƒ ZMZNeLe0ƒ ZOZPeLe1ƒ ZQZReLe2ƒ ZSZTeLe(ƒ ZUZVeLe*ƒZWeLe'ƒZXeLeHƒZYeLeJƒZZeLeKƒZ[d0S )¬ÚTestCaseTéP   é   é   é   FÚrunTestc             C   s¶   || _ d | _d| _yt| |ƒ}W n. tk
rN   |dkrJtd| j|f ƒ‚Y n
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Ú_testMethodDocrq   rZ   Ú
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   s<   t |dd ƒ}|d k	r |||ƒ ntjdtdƒ |j|ƒ d S )NÚaddSkipz4TestResult has no addSkip method, skips not reportedr–   )rq   rT   rU   ÚRuntimeWarningÚ
addSuccess)r   r   r!   r+   rÃ   r   r   r   Ú_addSkip   s    zTestCase._addSkipc             k   s¸   | j d ks| j j rd V  d S | j}|d kr8tj|ƒ}n|jj|ƒ}t| ||ƒ| _zX| j j| jdd�� d V  W d Q R X | j j	sœ| j j
}|d k	r¨|jr¨t‚n| j jr¨t‚W d || _X d S )NT)r"   )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   sd   x^|D ]V\}}t |tƒr*|j|j||ƒ q|d k	rt|d | jƒrP|j||ƒ q|j||ƒ qW d S )Nr   )r-   rË   r   r!   r@   rE   Ú
addFailureZaddError)r   r   r   Útestr    r   r   r   Ú_feedErrorsToResult(  s    
zTestCase._feedErrorsToResultc             C   sD   y
|j }W n* tk
r4   tjdtƒ |j| ƒ Y nX || |ƒ d S )Nz@TestResult has no addExpectedFailure method, reporting as passes)ÚaddExpectedFailurerZ   rT   rU   rÄ   rÅ   )r   r   r    rÑ   r   r   r   Ú_addExpectedFailure2  s    
zTestCase._addExpectedFailurec             C   sh   y
|j }W nP tk
rZ   tjdtƒ y
td ‚W n$ tk
rT   |j| tjƒ ƒ Y nX Y n
X || ƒ d S )NzCTestResult has no addUnexpectedSuccess method, reporting as failure)	ÚaddUnexpectedSuccessrZ   rT   rU   rÄ   r   rÎ   r   r    )r   r   rÓ   r   r   r   Ú_addUnexpectedSuccess<  s    

zTestCase._addUnexpectedSuccessNc          (   C   s  |}|d kr.| j ƒ }t|dd ƒ}|d k	r.|ƒ  |j| ƒ t| | jƒ}t| jddƒs^t|ddƒrœz,t| jddƒpxt|ddƒ}| j|| |ƒ W d |j| ƒ X d S t|ddƒ}t| ddƒ}|pº|}t|ƒ}	zð|	| _|	j	| ƒ� | j
ƒ  W d Q R X |	j�r<||	_|	j	| dd�� |ƒ  W d Q R X d|	_|	j	| ƒ� | jƒ  W d Q R X | jƒ  x"|	jD ]\}
}| j||
|ƒ �qLW | j||	jƒ |	j�r²|�r¨|	j�rœ| j||	jƒ n
| j|ƒ n
|j| ƒ |S |j| ƒ |d k�ræt|d	d ƒ}|d k	�ræ|ƒ  |	jjƒ  d |	_d | _X d S )
NÚstartTestRunr1   Fr2   Ú r9   T)r"   ÚstopTestRun)rµ   rq   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   ÚrunK  sh    





zTestCase.runc          
   C   sN   | j p
tƒ }x:| jrF| jjƒ \}}}|j| ƒ� |||Ž W d Q R X qW |jS )N)rŸ   r   r¤   rW   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   sJ   | j ƒ  t| | jƒƒ  | jƒ  x&| jrD| jjdƒ\}}}|||Ž q W d S )Nr   éÿÿÿÿ)r¯   rq   rž   r°   r¤   rW   )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   s&   |r"| 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   s&   |s"| 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   sP   | j s|p|S |d kr|S yd||f S  tk
rJ   dt|ƒt|ƒf S X d S )Nz%s : %s)ÚlongMessageÚUnicodeDecodeErrorr   )r   rD   rF   r   r   r   rC   ½  s    
zTestCase._formatMessagec          
   O   s$   t || ƒ}z|jd||ƒS d }X d S )NÚassertRaises)r]   r\   )r   Úexpected_exceptionr)   r*   Úcontextr   r   r   rç   Ò  s    
zTestCase.assertRaisesc             O   s   t || ƒ}|jd||ƒS )NÚassertWarns)rk   r\   )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   sF   t |ƒt |ƒkr@| jjt |ƒƒ}|d k	r@t|tƒr<t| |ƒ}|S | jS )N)r.   r¦   r‡   r-   r   rq   Ú_baseAssertEqual)r   ÚfirstÚsecondZasserterr   r   r   Ú_getAssertEqualityFunc(  s    

zTestCase._getAssertEqualityFuncc             C   s0   ||ks,dt ||ƒ }| j||ƒ}| j|ƒ‚d S )Nz%s != %s)r   rC   rE   )r   rî   rï   rD   rF   r   r   r   rí   B  s    zTestCase._baseAssertEqualc             C   s   | j ||ƒ}||||d� d S )N)rD   )rð   )r   rî   rï   rD   Zassertion_funcr   r   r   ÚassertEqualI  s    zTestCase.assertEqualc             C   s2   ||ks.| j |dt|ƒt|ƒf ƒ}| j|ƒ‚d S )Nz%s == %s)rC   r   rE   )r   rî   rï   rD   r   r   r   ÚassertNotEqualP  s    zTestCase.assertNotEqualc             C   s²   ||krd S |d k	r$|d k	r$t dƒ‚|d k	r\t|| ƒ|kr@d S dt|ƒt|ƒt|ƒf }n<|d krhd}tt|| ƒ|ƒdkr‚d S d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)rR   Úabsr   ÚroundrC   rE   )r   rî   rï   ÚplacesrD   ÚdeltarF   r   r   r   ÚassertAlmostEqualY  s&    zTestCase.assertAlmostEqualc             C   sº   |d k	r|d k	rt dƒ‚|d k	rZ||k r>t|| ƒ|kr>d S dt|ƒt|ƒt|ƒf }nF|d krfd}||k rŠtt|| ƒ|ƒdkrŠd S d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)rR   rô   r   rõ   rC   rE   )r   rî   rï   rö   rD   r÷   rF   r   r   r   ÚassertNotAlmostEqual�  s"     zTestCase.assertNotAlmostEqualc          '   C   sì  |d k	rP|j }t||ƒs.| jd|t|ƒf ƒ‚t||ƒsT| jd|t|ƒf ƒ‚nd}d }yt|ƒ}W n  ttfk
r„   d| }Y nX |d kr¼yt|ƒ}W n  ttfk
rº   d| }Y nX |d k�r˜||krÒd S d|jƒ ft||ƒ  }xÚt	t
||ƒƒD ]ž}	y||	 }
W n. tttfk
�r8   |d|	|f 7 }P Y nX y||	 }W n. tttfk
�rt   |d|	|f 7 }P Y nX |
|krú|d	|	ft|
|ƒ  7 }P qúW ||k�rÆ|d k�rÆt|ƒt|ƒk�rÆd S ||k�r0|d
||| f 7 }y|d|t|| ƒf 7 }W n, tttfk
�r,   |d||f 7 }Y nX nh||k �r˜|d||| f 7 }y|d|t|| ƒf 7 }W n, tttfk
�r–   |d||f 7 }Y n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’   rR   Ú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   s2   | j }|d kst|ƒ|kr"|| S |tt|ƒ  S )N)ÚmaxDiffr’   ÚDIFF_OMITTED)r   rv   ÚdiffZmax_diffr   r   r   r    s    zTestCase._truncateMessagec             C   s   | j |||td� d S )N)r  )r	  r©   )r   Zlist1Zlist2rD   r   r   r   rš     s    
zTestCase.assertListEqualc             C   s   | j |||td� d S )N)r  )r	  r>   )r   Ztuple1Ztuple2rD   r   r   r   r›     s    	zTestCase.assertTupleEqualc       
       C   sh  y|j |ƒ}W n^ tk
r> } z| jd| ƒ W Y d d }~X n0 tk
rl } z| jd| ƒ W Y d d }~X nX y|j |ƒ}W n^ tk
r¬ } z| jd| ƒ W Y d d }~X n0 tk
rÚ } z| jd| ƒ W Y d d }~X nX |pâ|sèd S g }|�r|jdƒ x|D ]}|jt|ƒƒ �qW |�rH|jdƒ x|D ]}|jt|ƒƒ �q0W d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¶   )Ú
differencerR   rá   rZ   r   Úreprrÿ   rC   )
r   Zset1Zset2rD   Zdifference1r#   Zdifference2ÚlinesÚitemrF   r   r   r   rœ   "  s2      




zTestCase.assertSetEqualc             C   s2   ||kr.dt |ƒt |ƒf }| j| j||ƒƒ d S )Nz%s not found in %s)r   rá   rC   )r   ÚmemberÚ	containerrD   rF   r   r   r   ÚassertInM  s    zTestCase.assertInc             C   s2   ||kr.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   ÚassertNotInT  s    zTestCase.assertNotInc             C   s2   ||k	r.dt |ƒt |ƒf }| j| j||ƒƒ d S )Nz%s is not %s)r   rá   rC   )r   Úexpr1Úexpr2rD   rF   r   r   r   ÚassertIs[  s    zTestCase.assertIsc             C   s,   ||kr(dt |ƒf }| j| j||ƒƒ d S )Nzunexpectedly identical: %s)r   rá   rC   )r   r  r  rD   rF   r   r   r   ÚassertIsNotb  s    zTestCase.assertIsNotc             C   s~   | j |tdƒ | j |tdƒ ||krzd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™   h  s    
zTestCase.assertDictEqualc       	      C   sÒ   t jdtƒ g }g }xX|jƒ D ]L\}}||kr:|j|ƒ q||| kr|jdt|ƒt|ƒt|| ƒf ƒ qW |pt|szd S d}|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;   ry   r   r   r   r=   ‡  s    z4TestCase.assertDictContainsSubset.<locals>.<genexpr>z; zMismatched values: %s)	rT   rU   rV   Úitemsr   r   rÿ   rá   rC   )	r   ZsubsetZ
dictionaryrD   ZmissingZ
mismatchedÚkeyÚvaluerF   r   r   r   ÚassertDictContainsSubsett  s,    z!TestCase.assertDictContainsSubsetc       
      C   s¦   t |ƒt |ƒ }}ytj|ƒ}tj|ƒ}W n tk
rH   t||ƒ}Y nX ||krVd S t||ƒ}|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Ç   ÚCounterrR   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   sÚ   | j |tdƒ | j |tdƒ ||krÖt|ƒ| jks@t|ƒ| jkrN| 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 stringT)Úkeependsr   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   s2   ||k s.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   s2   ||ks.dt |ƒt |ƒf }| j| j||ƒƒ d S )Nz%s not less than or equal to %s)r   rá   rC   )r   r$  r%  rD   rF   r   r   r   ÚassertLessEqualÌ  s    zTestCase.assertLessEqualc             C   s2   ||ks.dt |ƒt |ƒf }| j| j||ƒƒ d S )Nz%s not greater than %s)r   rá   rC   )r   r$  r%  rD   rF   r   r   r   ÚassertGreaterÒ  s    zTestCase.assertGreaterc             C   s2   ||ks.dt |ƒt |ƒf }| j| j||ƒƒ d S )Nz"%s not greater than or equal to %s)r   rá   rC   )r   r$  r%  rD   rF   r   r   r   ÚassertGreaterEqualØ  s    zTestCase.assertGreaterEqualc             C   s,   |d k	r(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   s0   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   s0   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)r]   r\   )r   rè   rN   r)   r*   ré   r   r   r   r-  ÷  s    zTestCase.assertRaisesRegexc             O   s   t || |ƒ}|jd||ƒS )NÚassertWarnsRegex)rk   r\   )r   rë   rN   r)   r*   ré   r   r   r   r.    s    zTestCase.assertWarnsRegexc             C   sJ   t |ttfƒrtj|ƒ}|j|ƒsFd|j|f }| j||ƒ}| j|ƒ‚d S )Nz&Regex didn't match: %r not found in %r)	r-   r   ÚbytesrL   rM   rc   rd   rC   rE   )r   ÚtextrN   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/  rL   rM   rc   ÚstartÚendrd   rC   rE   )r   r0  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–   )rT   rU   r_   r
   rV   )r)   r*   )Úoriginal_funcr   r   Údeprecated_func6  s    
z,TestCase._deprecate.<locals>.deprecated_funcr   )r6  r7  r   )r6  r   Ú
_deprecate5  s    zTestCase._deprecatei€  i   )r˜   )N)N)N)N)NN)N)N)N)NNN)NNN)NN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)\r
   r   r   ÚAssertionErrorrE   rå   r
  r#  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  r!  r�   r&  r'  r(  r)  r*  r+  r  r,  r-  r.  r1  r5  r8  ZfailUnlessEqualZassertEqualsZfailIfEqualZassertNotEqualsZfailUnlessAlmostEqualZassertAlmostEqualsZfailIfAlmostEqualZassertNotAlmostEqualsZ
failUnlessZassert_ZfailUnlessRaisesZfailIfZassertRaisesRegexpZassertRegexpMatchesZassertNotRegexpMatchesr   r   r   r   r“   f  s¤   !
 	


E	


!



	 
' 
 
c


+






!










	r“   c                   sf   e Zd Z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‡  ZS )ÚFunctionTestCaseNc                s*   t t| ƒjƒ  || _|| _|| _|| _d S )N)Úsuperr<  r   Ú
_setUpFuncÚ_tearDownFuncÚ	_testFuncÚ_description)r   ZtestFuncr¯   r°   Zdescription)r¢   r   r   r   T  s
    zFunctionTestCase.__init__c             C   s   | j d k	r| j ƒ  d S )N)r>  )r   r   r   r   r¯   [  s    
zFunctionTestCase.setUpc             C   s   | j d k	r| j ƒ  d S )N)r?  )r   r   r   r   r°   _  s    
zFunctionTestCase.tearDownc             C   s   | j ƒ  d S )N)r@  )r   r   r   r   r˜   c  s    zFunctionTestCase.runTestc             C   s   | j jS )N)r@  r
   )r   r   r   r   r»   f  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¼   r>  r?  r@  rA  )r   r½   r   r   r   r¾   i  s    zFunctionTestCase.__eq__c             C   s   t t| ƒ| j| j| j| jfƒS )N)r¿   r.   r>  r?  r@  rA  )r   r   r   r   rÀ   r  s    zFunctionTestCase.__hash__c             C   s   dt | jƒ| jjf S )Nz%s (%s))r   r¢   r@  r
   )r   r   r   r   rÁ   v  s    
zFunctionTestCase.__str__c             C   s   dt | jƒ| jf S )Nz<%s tec=%s>)r   r¢   r@  )r   r   r   r   rÂ   z  s    
zFunctionTestCase.__repr__c             C   s2   | j d k	r| j S | jj}|r.|jdƒd jƒ p0d S )Nr¶   r   )rA  r@  r£   r·   r¸   )r   r¹   r   r   r   rº   ~  s    
z!FunctionTestCase.shortDescription)NNN)r
   r   r   r   r¯   r°   r˜   r»   r¾   rÀ   rÁ   rÂ   rº   Ú__classcell__r   r   )r¢   r   r<  K  s   		r<  c                   sD   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z‡  Z	S )rË   c                s(   t ƒ jƒ  || _|| _|| _|j| _d S )N)r=  r   Ú_messager!   rÉ   rE   )r   r!   rv   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   sb   g }| j tk	r |jdj| j ƒƒ | jrTd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)r_   )r;   Úkru   r   r   r   r=   —  s   z+_SubTest._subDescription.<locals>.<genexpr>z({})ú z(<subtest>))rC  r;  r   r_   rÉ   rÿ   Úsortedr  )r   ÚpartsZparams_descr   r   r   Ú_subDescription‘  s    
z_SubTest._subDescriptionc             C   s   dj | jjƒ | jƒ ƒS )Nz{} {})r_   r!   r»   rH  )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{} {})r_   r!   rH  )r   r   r   r   rÁ   ¥  s    z_SubTest.__str__)
r
   r   r   r   r˜   rH  r»   rº   rÁ   rB  r   r   )r¢   r   rË   …  s   rË   )/r   r/   r   rH   r€   r  rL   rT   rÇ   r%   r`   rÖ   r   Úutilr   r   r   r   r   Z
__unittestÚobjectr;  r  Ú	Exceptionr	   r   r   r   r(   r5   r7   r8   r   r:   rB   rJ   rK   r]   rk   Ú
namedtupler|   r�   r   r…   r“   r<  rË   r   r   r   r   Ú<module>   sX   (/%5
,       l: