Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_functools.cpython-34.pyo

�
f f��@s�ddlZddlZddlmZddlZddlmZddlZddlm	Z	ddl
Z
ddlmZddl
Z
e	jdddg�Ze	jdd	dg�Ze	jd
d	dg�Zdd
�Zdd�ZGdd�d�Ze
jed�Gdd�dee
j��ZGdd�dee
j�ZergGdd�dej�Zne
jed�Gdd�de��ZGdd�de
j�ZGdd�de
j�ZGdd �d e�ZGd!d"�d"e
j�ZGd#d$�d$�Z e
jed�Gd%d&�d&e e
j��Z!Gd'd(�d(e e
j�Z"Gd)d*�d*e
j�Z#Gd+d,�d,e
j�Z$Gd-d.�d.e
j�Z%dd/d0�Z&e'd1kr�e&d2d3�ndS)4�N)�permutations)�choice)�support)�proxy�	functoolsZblocked�
_functoolsZfresh�decimalZ_decimalcOs
||fS)z,capture all positional and keyword arguments�)�args�kwr	r	�8/opt/alt/python34/lib64/python3.4/test/test_functools.py�capturesr
cCs|j|j|j|jfS)z* return the signature of a partial object )�funcr
�keywords�__dict__)�partr	r	r�	signaturesrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�TestPartialc
Cs�|jtdddddd�}|jt|��|j|dddd	d
d�dtdddd	d
d�f�|jtdd
��}|jt|ddddg��ddd	dg�dS)N���a�
�b�����c�(cSs|dS)Nrr	)�xr	r	r�<lambda>$sz1TestPartial.test_basic_examples.<locals>.<lambda>)rrrr)�partialr
�
assertTrue�callable�assertEqual�dict�map�list)�self�pr	r	r�test_basic_exampless!"zTestPartial.test_basic_examplescCsm|jtdddddd�}|j|jt�|j|jd�|j|jtdddd��dS)Nrrrrrr)rr)r!r
r$rr
rr%)r(r)r	r	r�test_attributes's!zTestPartial.test_attributescCsM|jt|j�y|jd��Wntk
r;YnX|jd�dS)Nrz%First arg not checked for callability)�assertRaises�	TypeErrorr!�fail)r(r	r	r�test_argument_checking.s
z"TestPartial.test_argument_checkingcCs�dddd�}idd6}|j|dd�}|j||�d�|j|idd6�|dd	�|j|idd6�dS)
NrrcSs|S)Nr	)rrr	r	rr9szBTestPartial.test_protection_of_callers_dict_argument.<locals>.funcrr�r�)r!r$)r(r�dr)r	r	r�(test_protection_of_callers_dict_argument7s

z4TestPartial.test_protection_of_callers_dict_argumentcCs�|jt�}|j|�fif�|j|dd�dif�|jtdd�}|j|�dif�|j|dd�dif�dS)Nrrrr)rr)rr)rrrr)r!r
r$)r(r)r	r	r�test_arg_combinationsBsz!TestPartial.test_arg_combinationscCs|jt�}|j|ji�|j|�fif�|j|dd�fidd6f�|jtdd�}|j|jidd6�|j|�fidd6f�|j|dd�fidd6dd6f�|j|dddd�fidd6dd6f�dS)Nrrrrr)r!r
r$r)r(r)r	r	r�test_kw_combinationsLs& -z TestPartial.test_kw_combinationscCsqxjfdddd	gD]S}|jt|�}|d
}|d�\}}|j||koe|ik�qWdS)Nrrrrr)r)rr)rrr)rrrr)r)r!r
r")r(r
r)�expected�got�emptyr	r	r�test_positionalZs

zTestPartial.test_positionalcCs~xwddddgD]c}|jtd|�}i|d6dd6}|dd�\}}|j||kor|fk�qWdS)Nrrg@r)r!r
r")r(rr)r6r8r7r	r	r�test_keywordbs
zTestPartial.test_keywordcCs�|jtddd�}|ddd�\}}|j|dkoY|idd6dd6k�|�\}}|j|dko�|idd6k�dS)Nrrrrr)rr)r)r!r
r")r(r)Zargs1Zkw1Zargs2Zkw2r	r	r�test_no_side_effectsjs
-z TestPartial.test_no_side_effectscCs�dd�}|jt|j|dd��|jt|j|d�d�|jt|j|�dd�|jt|j|dd�d�dS)NcSs||dS)Nr	)r�yr	r	r�fssz-TestPartial.test_error_propagation.<locals>.frrr<)r,�ZeroDivisionErrorr!)r(r=r	r	r�test_error_propagationrs
z"TestPartial.test_error_propagationcCsW|jtdd�}t|�}|j|j|j�d}|jtt|d�dS)N�base�r)r!�intrr$rr,�ReferenceError�getattr)r(r=r)r	r	r�test_weakrefzs
zTestPartial.test_weakrefcCsrttttd���}|jtjd�}|j||�d�|jdj�}|j||�d�dS)Nr��
0123456789)r'r&�str�ranger!�joinr$)r(�datarJr	r	r�#test_with_bound_and_unbound_methods�s
z/TestPartial.test_with_bound_and_unbound_methodsN)�__name__�
__module__�__qualname__r*r+r/r3r4r5r9r:r;r?rErLr	r	r	rrs	
rz requires the C _functools modulec@sReZdZerejZndd�Zdd�Zdd�Zdd�Zd	S)
�TestPartialCcCs�|jtdddddd�}|jtt|dt�|jtt|dd�|jtt|d	tdddd��|jt�}y
|`Wnt	k
r�YnX|j
d
�dS)Nrrrrrrrr
rz-partial object allowed __dict__ to be deleted)rr)r!r
r,�AttributeError�setattrr&r%�hexrr-r.)r(r)r	r	r�test_attributes_unwritable�s!(

z'TestPartialC.test_attributes_unwritablecsut�t�f}djdd�|D���it�d6t�d6}dj|�dj|�g}|jtjkr�d�n|jj�|jt�}|jd	j�t�t	|��|jt|�}|jd
j�t��t	|��|jt|�}|j
t	|��fdd�|D��|jt||�}|j
t	|���fd
d�|D��dS)Nz, css|]}t|�VqdS)N)�repr)�.0rr	r	r�	<genexpr>�sz)TestPartialC.test_repr.<locals>.<genexpr>rrza={a!r}, b={b!r}zb={b!r}, a={a!r}zfunctools.partialz{}({!r})z{}({!r}, {})cs%g|]}dj�t|��qS)z{}({!r}, {}))�formatr
)rV�kwargs_repr)�namer	r�
<listcomp>�s	z*TestPartialC.test_repr.<locals>.<listcomp>cs(g|]}dj�t�|��qS)z{}({!r}, {}, {}))rXr
)rVrY)�	args_reprrZr	rr[�s	)�objectrJ�
format_mapr!�c_functoolsrMr
r$rXrU�assertIn)r(r
�kwargsZkwargs_reprsr=r	)r\rZr�	test_repr�s,	

zTestPartialC.test_reprcCsz|jtddd�}d|_xRttjd�D]=}tjtj||��}|jt|�t|��q5WdS)NZasdfZbarTr)	r!rZadd_something_to__dict__rI�pickleZHIGHEST_PROTOCOL�loads�dumpsr$)r(r=�protoZf_copyr	r	r�test_pickle�s
	zTestPartialC.test_picklecCsBGdd�d�}|jt�}|jtd|j|��dS)Nc@s(eZdZdd�Zdd�ZdS)z8TestPartialC.test_setstate_refcount.<locals>.BadSequencecSsdS)Nrr	)r(r	r	r�__len__�sz@TestPartialC.test_setstate_refcount.<locals>.BadSequence.__len__cSsF|dkrtS|dkr,ttd��S|dkr<iSt�dS)Nrri@Brr)rr)�max�tuplerI�
IndexError)r(�keyr	r	r�__getitem__�szDTestPartialC.test_setstate_refcount.<locals>.BadSequence.__getitem__N)rMrNrOrhrmr	r	r	r�BadSequence�srnz4new style getargs format but argument is not a tuple)r!r]ZassertRaisesRegex�SystemError�__setstate__)r(rnr=r	r	r�test_setstate_refcount�s
	z#TestPartialC.test_setstate_refcountN)	rMrNrOr_r!rTrbrgrqr	r	r	rrP�srPc@seZdZeej�ZdS)�
TestPartialPyN)rMrNrO�staticmethod�py_functoolsr!r	r	r	rrr�srrc@seZdZdS)�PartialSubclassN)rMrNrOr	r	r	rru�sruc@seZdZereZndS)�TestPartialCSubclassN)rMrNrOr_rur!r	r	r	rrv�srvc@s�eZdZGdd�de�Ze�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�ZdS)�TestPartialMethodc@s�eZdZeje�Zejed�Zejedd�Zejeddd�Z	ejed�Z
ejejedd	�d
�Zeje
e�d�Zejee�dd
�ZdS)zTestPartialMethod.Arrrrrrr0r�r1�r2�	N)rMrNrOr�
partialmethodr
�nothing�
positionalr�both�nestedr!�over_partialrs�static�classmethod�clsr	r	r	r�A�s!r�cCs�|j|jj�|jfif�|j|jjd�|jdfif�|j|jjdd�|jfidd6f�|j|jjddd�|jdfidd6f�|j|jj�|jdfif�|j|jjd�|jddfif�|j|jjdd�|jdfidd6f�|j|jjddd�|jddfidd6f�|j|jj�|jfidd6f�|j|jjd�|jdfidd6f�|j|jjdd�|jfidd6dd6f�|j|jjddd�|jdfidd6dd6f�|j|jj�|jdfidd	6f�|j|jjd�|jddfidd	6f�|j|jjdd�|jdfidd	6dd6f�|j|jjddd�|jddfidd	6dd6f�|j|jj|jddd�|jddfidd	6dd6f�dS)
Nr0rrxrrrrrr)r$rr|r}rr~r�)r(r	r	rr4�s"%+28(.5;,29?/5<Bz'TestPartialMethod.test_arg_combinationscCs|j|jj�|jddfif�|j|jjd�|jdddfif�|j|jjdd�|jddfidd6f�|j|jjddd�|jdddfidd6f�|j|jj|jddd�|jdddfidd6f�dS)Nrr0rxr2r1)r$rrr�)r(r	r	r�test_nesteds
+18>zTestPartialMethod.test_nestedcCs.|j|jj�|jdfidd6f�|j|jjd�|jddfidd6f�|j|jjdd�|jdfidd6dd6f�|j|jjddd�|jddfidd6dd6f�|j|jj|jddd�|jddfidd6dd6f�dS)Nr1rxrr0r2ry)r$rr�r�)r(r	r	r�test_over_partials
/5<Bz#TestPartialMethod.test_over_partialcCs�|j}|j|jj|�|j|jj|�|j|jj|�|j|jj|j�|j|jjj|j�dS)N)r�assertIsr~�__self__rr�r�r�)r(�objr	r	r�test_bound_method_introspections	z1TestPartialMethod.test_bound_method_introspectioncCs�|j}|jt|jd��|jt|jd��|jt|jd��|jt|jd��|jt|jjd��dS)Nr�)r��assertFalse�hasattrr~rr�r�r)r(r�r	r	r�test_unbound_method_retrieval$s	z/TestPartialMethod.test_unbound_method_retrievalcCs�x�|j|jgD]y}|jd|��_|j|j�dif�|j|jd�dif�|j|jdd�d	idd6f�|j|jddd�d
idd6f�|j|j�|jfidd6f�|j|jd�|jdfidd6f�|j|jdd�|jfidd6dd6f�|j|jddd�|jdfidd6dd6f�WdQXqWdS)Nr�ryr0r2rzr)ry)ryr0)ry)ryr0)r�r�subTestr$r�r�)r(r�r	r	r�test_descriptors,s),)/6z"TestPartialMethod.test_descriptorscCsn|j|jjdd�|jfidd6f�|j|jj|jdd�|jfidd6f�dS)Nrr)r$rrr�)r(r	r	r�test_overriding_keywords9s2z*TestPartialMethod.test_overriding_keywordscCs0|jt��Gdd�dt�}WdQXdS)Nc@s"eZdZejdd�ZdS)z.TestPartialMethod.test_invalid_args.<locals>.BNr)rMrNrOrr{�methodr	r	r	r�B?sr�)r,r-r])r(r�r	r	r�test_invalid_args=sz#TestPartialMethod.test_invalid_argscCs0|jtt|j�d�djt��dS)Nr~z#functools.partialmethod({}, 3, b=4))r$rU�varsr�rXr
)r(r	r	rrbBszTestPartialMethod.test_reprcCs�Gdd�dtj�}|j|jj�|j|jj�xT|jj|jj|jj	|jj
|jjgD]}|jt
|dd��qsWdS)Nc@s7eZdZejdd��Zejed�ZdS)z1TestPartialMethod.test_abstract.<locals>.AbstractcSsdS)Nr	)r(rr<r	r	r�addIsz5TestPartialMethod.test_abstract.<locals>.Abstract.addr0N)	rMrNrO�abc�abstractmethodr�rr{�add5r	r	r	r�AbstractGsr��__isabstractmethod__F)r��ABCMetar"r�r�r�r�r�r�r�rr~r�rD)r(r�rr	r	r�
test_abstractFs
:zTestPartialMethod.test_abstractN)rMrNrOr]r�rr4r�r�r�r�r�r�r�rbr�r	r	r	rrw�s
	
rwc@s�eZdZejejdd�Zdd�Zdd�Ze	j
ejj
dkd�d	d
��Zdd�Zd
d�Zdd�Zeje	j
ejj
dkd�dd���ZdS)�TestUpdateWrapperc	Cs�x0|D](}|jt||�t||��qWxs|D]k}t||�}t||�}xD|D]<}|dkr�|dkr�qen|j||||�qeWq:W|j|j|�dS)Nr�__wrapped__)r�rDr�)	r(�wrapper�wrapped�assigned�updatedrZZwrapper_attrZwrapped_attrrlr	r	r�
check_wrapperXs
&

 zTestUpdateWrapper.check_wrappercCsVdddd��}d|_d|_ddd	d
��}tj||�||fS)NzThis is a new annotation)rcSsdS)zThis is a testNr	)rr	r	rr=lsz,TestUpdateWrapper._default_update.<locals>.fzThis is also a testzThis is a bald faced liezThis is the prior annotation)rcSsdS)Nr	)rr	r	rr�qsz2TestUpdateWrapper._default_update.<locals>.wrapper)�attrr�r�update_wrapper)r(r=r�r	r	r�_default_updateks		z!TestUpdateWrapper._default_updatecCs�|j�\}}|j||�|j|j|�|j|jd�|j|j|j�|j|jd�|j|jdd�|j	d|j�dS)Nr=zThis is also a testrzThis is a new annotationr)
r�r�r�r�r$rMrOr��__annotations__�assertNotIn)r(r�r=r	r	r�test_default_updatevsz%TestUpdateWrapper.test_default_updaterz)Docstrings are omitted with -O2 and abovecCs)|j�\}}|j|jd�dS)NzThis is a test)r�r$�__doc__)r(r�r=r	r	r�test_default_update_doc�sz)TestUpdateWrapper.test_default_update_doccCs�dd�}d|_dd�}tj||ff�|j||ff�|j|jd�|j|j|j�|j|jd�|j|j	i�|j
t|d��dS)NcSsdS)zThis is a testNr	r	r	r	rr=�sz+TestUpdateWrapper.test_no_update.<locals>.fzThis is also a testcSsdS)Nr	r	r	r	rr��sz1TestUpdateWrapper.test_no_update.<locals>.wrapperr�r�)r�rr�r�r$rM�assertNotEqualrOr�r�r�r�)r(r=r�r	r	r�test_no_update�s	z TestUpdateWrapper.test_no_updatecCs�dd�}d|_tdddddd	�|_d
d�}i|_d}d}tj||||�|j||||�|j|jd�|j|j	|j	�|j|j
d�|j|jd�|j|j|j�dS)NcSsdS)Nr	r	r	r	rr=�sz2TestUpdateWrapper.test_selective_update.<locals>.fzThis is a different testrrrrrrcSsdS)Nr	r	r	r	rr��sz8TestUpdateWrapper.test_selective_update.<locals>.wrapperr��	dict_attrr�)zattr)z	dict_attr)r�r%r�rr�r�r$rMr�rOr�)r(r=r��assign�updater	r	r�test_selective_update�s		z'TestUpdateWrapper.test_selective_updatecCs�dd�}dd�}i|_d}d	}tj||||�|jd|j�|j|ji�|`|jt��tj||||�WdQXd|_|jt��tj||||�WdQXdS)
NcSsdS)Nr	r	r	r	rr=�sz4TestUpdateWrapper.test_missing_attributes.<locals>.fcSsdS)Nr	r	r	r	rr��sz:TestUpdateWrapper.test_missing_attributes.<locals>.wrapperr�r�r)zattr)z	dict_attr)r�rr�r�rr$r,rQ)r(r=r�r�r�r	r	r�test_missing_attributes�s		z)TestUpdateWrapper.test_missing_attributescCs_dd�}tj|t�|j|jd�|j|jjd��|j|ji�dS)NcSsdS)Nr	r	r	r	rr��sz6TestUpdateWrapper.test_builtin_update.<locals>.wrapperrizmax()	rr�rir$rMr"r��
startswithr�)r(r�r	r	r�test_builtin_update�s
z%TestUpdateWrapper.test_builtin_updateN)rMrNrOr�WRAPPER_ASSIGNMENTS�WRAPPER_UPDATESr�r�r��unittest�skipIf�sys�flags�optimizer�r�r�r�rZrequires_docstringsr�r	r	r	rr�Vs
r�c@sjeZdZdd�Zdd�Zejejj	dkd�dd��Z
d	d
�Zdd�Zd
S)�	TestWrapscCsCdd�}d|_d|_tj|�dd��}||fS)NcSsdS)zThis is a testNr	r	r	r	rr=�sz$TestWraps._default_update.<locals>.fzThis is also a testzThis is still a bald faced liecSsdS)Nr	r	r	r	rr��sz*TestWraps._default_update.<locals>.wrapper)r�r�r�wraps)r(r=r�r	r	rr��s
		zTestWraps._default_updatecCsb|j�\}}|j||�|j|jd�|j|j|j�|j|jd�dS)Nr=zThis is also a test)r�r�r$rMrOr�)r(r�r=r	r	rr��s
zTestWraps.test_default_updaterz)Docstrings are omitted with -O2 and abovecCs)|j�\}}|j|jd�dS)NzThis is a test)r�r$r�)r(r��_r	r	rr��sz!TestWraps.test_default_update_doccCs�dd�}d|_tj|ff�dd��}|j||ff�|j|jd�|j|j|j�|j|jd�|j	t
|d��dS)NcSsdS)zThis is a testNr	r	r	r	rr=�sz#TestWraps.test_no_update.<locals>.fzThis is also a testcSsdS)Nr	r	r	r	rr��sz)TestWraps.test_no_update.<locals>.wrapperr�r�)r�rr�r�r$rMr�rOr�r�r�)r(r=r�r	r	rr��s	!zTestWraps.test_no_updatecCs�dd�}d|_tdddddd	�|_d
d�}d}d}tj|||�|dd���}|j||||�|j|jd�|j|j	|j	�|j|j
d�|j|jd�|j|j|j�dS)NcSsdS)Nr	r	r	r	rr=�sz*TestWraps.test_selective_update.<locals>.fzThis is a different testrrrrrrcSs
i|_|S)N)r�)r=r	r	r�
add_dict_attr�s	z6TestWraps.test_selective_update.<locals>.add_dict_attrr�r�cSsdS)Nr	r	r	r	rr��sz0TestWraps.test_selective_update.<locals>.wrapperr�)zattr)z	dict_attr)r�r%r�rr�r�r$rMr�rOr�)r(r=r�r�r�r�r	r	rr��s	zTestWraps.test_selective_updateN)
rMrNrOr�r�r�r�r�r�r�r�r�r�r	r	r	rr��sr�c@s1eZdZejZdd�Zdd�ZdS)�
TestReducecCs�Gdd�d�}dd�}|j|j|dddgd�d	�|j|j|ddggd
dggg�ddd
dg�|j|jdd
�tdd�d�d�|j|jdd
�tdd�d�d�|j|j||d��d�|j|j||d�d�d�|j|j||d�d�d�|jt|j�|jt|jdd�|jt|jddd�|j|jdd�d�|j|jddd�d�|jt|jdd�|jt|j|g�|jt|j|d�|jt|j|f�|jt|j|t��Gdd�d�}|jt|j||��|j|j|gd�d�|j|j|gd�d�Gdd�d�}|jt|jd|��dS)Nc@s4eZdZdd�Zdd�Zdd�ZdS)z'TestReduce.test_reduce.<locals>.SquarescSs||_g|_dS)N)ri�sofar)r(rir	r	r�__init__s	z0TestReduce.test_reduce.<locals>.Squares.__init__cSs
t|j�S)N)�lenr�)r(r	r	rrhsz/TestReduce.test_reduce.<locals>.Squares.__len__cSssd|ko|jkns(t�nt|j�}x.||krg|jj||�|d7}q:W|j|S)Nrr)rirkr�r��append)r(�i�nr	r	rrms	z3TestReduce.test_reduce.<locals>.Squares.__getitem__N)rMrNrOr�rhrmr	r	r	r�Squares
sr�cSs||S)Nr	)rr<r	r	rr�sz#TestReduce.test_reduce.<locals>.addrrrrFr�r2�wcSs||S)Nr	)rr<r	r	rr  sz(TestReduce.test_reduce.<locals>.<lambda>rryri�cSs||S)Nr	)rr<r	r	rr "s�lh�rir�*�1c@seZdZdd�ZdS)z/TestReduce.test_reduce.<locals>.TestFailingItercSs
t�dS)N)�RuntimeError)r(r	r	r�__iter__4sz8TestReduce.test_reduce.<locals>.TestFailingIter.__iter__N)rMrNrOr�r	r	r	r�TestFailingIter3sr�c@seZdZdd�ZdS)z&TestReduce.test_reduce.<locals>.BadSeqcSs
t�dS)N)�
ValueError)r(�indexr	r	rrm<sz2TestReduce.test_reduce.<locals>.BadSeq.__getitem__N)rMrNrOrmr	r	r	r�BadSeq;sr�)r�r�)r$rrIr,r-r]r�r�)r(r�r�r�r�r	r	r�test_reduce	s:('.!"%%zTestReduce.test_reducecCs?Gdd�d�}ddlm}|j|j||d��d�|j|j||d�d�d�|jt|j||d��|j|j||d�d�d�|j|j||d	��d�|j|j||d	�d�d�id	d
6dd6d
d6}|j|j||�dj|j���dS)Nc@s(eZdZdd�Zdd�ZdS)z5TestReduce.test_iterator_usage.<locals>.SequenceClasscSs
||_dS)N)r�)r(r�r	r	rr�Csz>TestReduce.test_iterator_usage.<locals>.SequenceClass.__init__cSs-d|ko|jknr#|St�dS)Nr)r�rk)r(r�r	r	rrmEszATestReduce.test_iterator_usage.<locals>.SequenceClass.__getitem__N)rMrNrOr�rmr	r	r	r�
SequenceClassBsr�r)r�r0rr��4rZonerZtworZthreerF)�operatorr�r$rr,r-rJ�keys)r(r�r�r2r	r	r�test_iterator_usageAs	"%%"%zTestReduce.test_iterator_usageN)rMrNrOr�reducerr�r�r	r	r	rr�s	8r�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestCmpToKeycCs�dd�}|j|�}|j|d�|d��|j|d�|d��|j|d�|d��dd�}|j|�}|j|d�|d��|j|d	�|d
��|j|d	�|d
��|j|d	�|d
��dS)NcSs||k||kS)Nr	)rr<r	r	r�cmp1Zsz*TestCmpToKey.test_cmp_to_key.<locals>.cmp1rrcSst|�t|�S)N)rB)rr<r	r	r�cmp2asz*TestCmpToKey.test_cmp_to_key.<locals>.cmp2g@�4rZ35)�
cmp_to_keyr$�
assertGreaterZassertGreaterEqualZ
assertLessZassertLessEqualr�)r(r�rlr�r	r	r�test_cmp_to_keyYszTestCmpToKey.test_cmp_to_keyc(CsWdd�}|jd|�}|j|dd�|dd��|j|dd�|dd��|jttf��|d�dkWdQX|jttf��d|d�kWdQX|jt��|j�}WdQX|jt��|j|d�}WdQX|j|�}|jt��|�WdQX|jt��|dd�WdQXdS)NcSs||k||kS)Nr	)rr<r	r	rr�jsz4TestCmpToKey.test_cmp_to_key_arguments.<locals>.cmp1�mycmpr�rr)r�r$r�r,r-rQ)r(r�rlr	r	r�test_cmp_to_key_argumentsis"""
z&TestCmpToKey.test_cmp_to_key_argumentscs�dd�}|j|�}|jt��|d�|d�kWdQXGdd�d���fdd�}|jt��|d�|d�kWdQXdS)NcSs
t�dS)N)r>)rr<r	r	rr�~sz'TestCmpToKey.test_bad_cmp.<locals>.cmp1rrc@seZdZdd�ZdS)z)TestCmpToKey.test_bad_cmp.<locals>.BadCmpcSs
t�dS)N)r>)r(�otherr	r	r�__lt__�sz0TestCmpToKey.test_bad_cmp.<locals>.BadCmp.__lt__N)rMrNrOr�r	r	r	r�BadCmp�sr�cs��S)Nr	)rr<)r�r	rr��s)r�r,r>)r(r�rlr	)r�r�test_bad_cmp}szTestCmpToKey.test_bad_cmpcCs;dd�}|jd|�}|j|d�jd�dS)NcSs||k||kS)Nr	)rr<r	r	rr��sz)TestCmpToKey.test_obj_field.<locals>.cmp1r��2)r�r$r�)r(r�rlr	r	r�test_obj_field�szTestCmpToKey.test_obj_fieldcCsJdd�}|jttd�d|j|��ddddd	g�dS)
NcSs||S)Nr	)rr<r	r	rr��sz)TestCmpToKey.test_sort_int.<locals>.mycmpr0rlrrrrr)r$�sortedrIr�)r(r�r	r	r�
test_sort_int�s$zTestCmpToKey.test_sort_intcCs�dd�}ddddddd	d
dg	}t|d|j|��}|jd
d�|D�dddddd	dddg	�dS)NcSs-t|�t|�}}||k||kS)N)rB)rr<r	r	rr��sz-TestCmpToKey.test_sort_int_str.<locals>.mycmpr0�3r1r�0r�rZ10rrlcSsg|]}t|��qSr	)rB)rV�valuer	r	rr[�s	z2TestCmpToKey.test_sort_int_str.<locals>.<listcomp>rrr)r�r�r$)r(r��valuesr	r	r�test_sort_int_str�s
!zTestCmpToKey.test_sort_int_strcCsQdd�}|j|�}|d�}|jtt|�|j|tj�dS)NcSs||S)Nr	)rr<r	r	rr��sz%TestCmpToKey.test_hash.<locals>.mycmpr)r�r,r-�hashZassertNotIsInstance�collections�Hashable)r(r�rl�kr	r	r�	test_hash�s
zTestCmpToKey.test_hashN)
rMrNrOr�r�r�r�r�r�r�r	r	r	rr�Ws	r�c@s"eZdZerejZndS)�
TestCmpToKeyCN)rMrNrOr_r�r	r	r	rr��sr�c@seZdZeej�ZdS)�TestCmpToKeyPyN)rMrNrOrsrtr�r	r	r	rr��sr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestTotalOrderingcCs�tjGdd�d��}|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�dS)Nc@s4eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_lt.<locals>.AcSs
||_dS)N)r�)r(r�r	r	rr��sz<TestTotalOrdering.test_total_ordering_lt.<locals>.A.__init__cSs|j|jkS)N)r�)r(r�r	r	rr��sz:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__lt__cSs|j|jkS)N)r�)r(r�r	r	r�__eq__�sz:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__eq__N)rMrNrOr�r�r�r	r	r	rr��sr�rr)r�total_orderingr"r�)r(r�r	r	r�test_total_ordering_lt�sz(TestTotalOrdering.test_total_ordering_ltcCs�tjGdd�d��}|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�dS)Nc@s4eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_le.<locals>.AcSs
||_dS)N)r�)r(r�r	r	rr��sz<TestTotalOrdering.test_total_ordering_le.<locals>.A.__init__cSs|j|jkS)N)r�)r(r�r	r	r�__le__�sz:TestTotalOrdering.test_total_ordering_le.<locals>.A.__le__cSs|j|jkS)N)r�)r(r�r	r	rr��sz:TestTotalOrdering.test_total_ordering_le.<locals>.A.__eq__N)rMrNrOr�r�r�r	r	r	rr��sr�rr)rr�r"r�)r(r�r	r	r�test_total_ordering_le�sz(TestTotalOrdering.test_total_ordering_lecCs�tjGdd�d��}|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�dS)Nc@s4eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_gt.<locals>.AcSs
||_dS)N)r�)r(r�r	r	rr��sz<TestTotalOrdering.test_total_ordering_gt.<locals>.A.__init__cSs|j|jkS)N)r�)r(r�r	r	r�__gt__�sz:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__gt__cSs|j|jkS)N)r�)r(r�r	r	rr��sz:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__eq__N)rMrNrOr�r�r�r	r	r	rr��sr�rr)rr�r"r�)r(r�r	r	r�test_total_ordering_gt�sz(TestTotalOrdering.test_total_ordering_gtcCs�tjGdd�d��}|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�dS)Nc@s4eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_ge.<locals>.AcSs
||_dS)N)r�)r(r�r	r	rr��sz<TestTotalOrdering.test_total_ordering_ge.<locals>.A.__init__cSs|j|jkS)N)r�)r(r�r	r	r�__ge__�sz:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__ge__cSs|j|jkS)N)r�)r(r�r	r	rr��sz:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__eq__N)rMrNrOr�r�r�r	r	r	rr��sr�rr)rr�r"r�)r(r�r	r	r�test_total_ordering_ge�sz(TestTotalOrdering.test_total_ordering_gecCs�tjGdd�dt��}|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�|j|d�|d�k�dS)Nc@seZdZdS)z=TestTotalOrdering.test_total_ordering_no_overwrite.<locals>.AN)rMrNrOr	r	r	rr��sr�rr)rr�rBr")r(r�r	r	r� test_total_ordering_no_overwrite�sz2TestTotalOrdering.test_total_ordering_no_overwritecCs6|jt��!tjGdd�d��}WdQXdS)Nc@seZdZdS)z7TestTotalOrdering.test_no_operations_defined.<locals>.AN)rMrNrOr	r	r	rr�sr�)r,r�rr�)r(r�r	r	r�test_no_operations_definedsz,TestTotalOrdering.test_no_operations_definedc�s�tjG�fdd�d���tjG�fdd�d���tjG�fdd�d���tjG�fdd�d���tjG�fd	d
�d
���|jd��+|jt���d �dkWdQXWdQX|jd
��1|jt���d��d�kWdQXWdQX|jd��1|jt���d��d�kWdQXWdQX|jd��1|jt���d��d�kWdQXWdQX|jd��1|jt���d��d�kWdQXWdQX|jd��1|jt���d��d�kWdQXWdQX|jd��1|jt���d��d�kWdQXWdQX|jd��1|jt���d��d�kWdQXWdQX|jd��1|jt���d��d�kWdQXWdQX|jd��M�d�}�d�}|j||�|jt��||kWdQXWdQX|jd��M�d�}�d�}|j||�|jt��||kWdQXWdQXdS)!Ncs@eZdZdd�Z�fdd�Z�fdd�ZdS)zRTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThancSs
||_dS)N)r�)r(r�r	r	rr�sz[TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__init__cs#t|��r|j|jkSdS)NF)�
isinstancer�)r(r�)�ImplementsLessThanr	rr�szYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__eq__cs#t|��r|j|jkStS)N)rr��NotImplemented)r(r�)rr	rr�szYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__lt__N)rMrNrOr�r�r�r	)rr	rrsrcs@eZdZdd�Z�fdd�Z�fdd�ZdS)zUTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThancSs
||_dS)N)r�)r(r�r	r	rr�sz^TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__init__cs#t|��r|j|jkSdS)NF)rr�)r(r�)�ImplementsGreaterThanr	rr� sz\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__eq__cs#t|��r|j|jkStS)N)rr�r)r(r�)rr	rr�$sz\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__gt__N)rMrNrOr�r�r�r	)rr	rrsrcs@eZdZdd�Z�fdd�Z�fdd�ZdS)zYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTocSs
||_dS)N)r�)r(r�r	r	rr�+szbTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__init__cs#t|��r|j|jkSdS)NF)rr�)r(r�)�ImplementsLessThanEqualTor	rr�-sz`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__eq__cs#t|��r|j|jkStS)N)rr�r)r(r�)rr	rr�1sz`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__le__N)rMrNrOr�r�r�r	)rr	rr)srcs@eZdZdd�Z�fdd�Z�fdd�ZdS)z\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTocSs
||_dS)N)r�)r(r�r	r	rr�8szeTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__init__cs#t|��r|j|jkSdS)NF)rr�)r(r�)�ImplementsGreaterThanEqualTor	rr�:szcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__eq__cs#t|��r|j|jkStS)N)rr�r)r(r�)rr	rr�>szcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__ge__N)rMrNrOr�r�r�r	)rr	rr6srcs:eZdZdd�Z�fdd�Zdd�ZdS)zXTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplementedcSs
||_dS)N)r�)r(r�r	r	rr�EszaTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__init__cs#t|��r|j|jkSdS)NF)rr�)r(r�)�ComparatorNotImplementedr	rr�Gsz_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__eq__cSstS)N)r)r(r�r	r	rr�Ksz_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__lt__N)rMrNrOr�r�r�r	)rr	rrCsrzLT < 1rzLT < LErzLT < GTzLE <= LTrzLE <= GErzGT > GErzGT > LTr0zGE >= GTrxzGE >= LEr1z
GE when equalryz
LE when equalrz���)rr�r�r,r-r$)r(rrr	)rrrrrr�$test_type_error_when_not_implementedsF"
"
"
"
"  " " " " " " " "z6TestTotalOrdering.test_type_error_when_not_implementedN)
rMrNrOr�r�r�r�rrr
r	r	r	rr��sr�c@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestLRUc
s�dd�}tjdd�|�}|j�\}}}}|j|d�|j|d�|j|d�|j|d�td�}x[td�D]M}t|�t|�}	}
||	|
�}||	|
�}|j||�q�W|j�\}}}}|j||k�|j||d�|j|d�|j�|j�\}}}}|j|d�|j|d�|j|d�||	|
�|j�\}}}}|j|d�|j|d�|j|d�|j|j	|�|j	|	|
�|j�\}}}}|j|d�|j|d�|j|d�tjd��fd	d
��}|j|j�j
d�d�x'td�D]}|j|�d�q�W|j�d�|j�\}}}}|j|d�|j|d�|j|d�tjd��fdd
��}|j|j�j
d�d�x'td�D]}|j|�d�qVW|j�d�|j�\}}}}|j|d�|j|d�|j|d�tjd
��fdd
��}|j|j�j
d
�d�x(dD] }	|j||	�|	d�qW|j�d�|j�\}}}}|j|d�|j|d�|j|d
�dS)NcSsd||S)Nrr	)rr<r	r	r�origzszTestLRU.test_lru.<locals>.orig�maxsizerrr0i�rcs�d7�dS)Nrrr	r	)�f_cntr	rr=�s
zTestLRU.test_lru.<locals>.fcs�d7�dS)Nrrr	r	)rr	rr=�s
rrcs�d7�|dS)Nrrr	)r)rr	rr=�s
r1rzryr�)r1rzr1rzr1rzryryryrzrzrzryryryr1)r�	lru_cache�
cache_infor$rIrr"�cache_clearr�r�r
)
r(rr=�hits�missesr
�currsizeZdomainr�rr<Zactualr6r	)rr�test_lruys~

!!!
zTestLRU.test_lrucs�tjdd��fdd���|j�fdd�td�D�dddd	d
ddd
ddddddddg�|j�j�tjdddddddd���j�|j�j�tjdddddddd��dS)Nr
cs,|dkr|S�|d��|d�S)Nrrr	)r�)�fibr	rr�sz/TestLRU.test_lru_with_maxsize_none.<locals>.fibcsg|]}�|��qSr	r	)rVr�)rr	rr[�s	z6TestLRU.test_lru_with_maxsize_none.<locals>.<listcomp>rArrrrr0ry�
r��"�7�Y���iyibr�rr)rrr$rIr�
_CacheInfor)r(r	)rr�test_lru_with_maxsize_none�s$"7%
z"TestLRU.test_lru_with_maxsize_nonecCs�x�dD]�}tj|�dd��}|j|d�d�|jt��}|d�WdQX|j|jj�|jt��|d�WdQXqWdS)N�cSsd|S)Nr�r	)r�r	r	rr�sz.TestLRU.test_lru_with_exceptions.<locals>.funcrr�)Nr!)rrr$r,rkZassertIsNone�	exception�__context__)r(r
r�cmr	r	r�test_lru_with_exceptions�s
z TestLRU.test_lru_with_exceptionscCsWxPd
D]H}tjd|dd�dd��}|j|d�d�|jt|d��td��|j|d	�d
�|jt|d	��td
��|j|dd�d�|jt|dd��td��|j|dd	�d
�|jt|dd	��td
��|j|j�jd�|j|j�jd�qWdS)Nr!r
�typedTcSs||S)Nr	)rr	r	r�square�sz+TestLRU.test_lru_with_types.<locals>.squarerrzg@g"@rr)Nr!)rrr$�typerrr)r(r
r(r	r	r�test_lru_with_types�s
$""%%zTestLRU.test_lru_with_typescs�tj��fdd���|j�fdd�td�D�ddddd	d
ddd
dddddddg�|j�j�tjdddddddd���j�|j�j�tjdddddddd��dS)Ncs2|dkr|S�d|d��d|d�S)Nrr�rr	)r�)rr	rrsz/TestLRU.test_lru_with_keyword_args.<locals>.fibcsg|]}�d|��qS)r�r	)rV�number)rr	rr[s	z6TestLRU.test_lru_with_keyword_args.<locals>.<listcomp>rArrrrr0ryrr�rrrrriyibrrrr
r!r)rrr$rIrrr)r(r	)rr�test_lru_with_keyword_argss7%
z"TestLRU.test_lru_with_keyword_argscs�tjdd��fdd���|j�fdd�td�D�dddd	d
ddd
ddddddddg�|j�j�tjdddddddd���j�|j�j�tjdddddddd��dS)Nr
cs2|dkr|S�d|d��d|d�S)Nrr�rr	)r�)rr	rrsz<TestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.fibcsg|]}�d|��qS)r�r	)rVr+)rr	rr[s	zCTestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.<listcomp>rArrrrr0ryrr�rrrrriyibrrrr)rrr$rIrrr)r(r	)rr�'test_lru_with_keyword_args_maxsize_nones$"7%
z/TestLRU.test_lru_with_keyword_args_maxsize_nonecs�tjdd�dd���G��fdd�d����d����d��|j��d���d��dS)	Nr
rcSs|S)zEUsed to demonstrate a reentrant lru_cache call within a single threadr	)rr	r	r�	test_func!sz.TestLRU.test_need_for_rlock.<locals>.test_funccsCeZdZdZdd�Zdd�Z��fdd�ZdS)	z-TestLRU.test_need_for_rlock.<locals>.DoubleEqz=Demonstrate a reentrant lru_cache call within a single threadcSs
||_dS)N)r)r(rr	r	rr�(sz6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__init__cSs|jS)N)r)r(r	r	r�__hash__*sz6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__hash__cs2|jdkr"��d��n|j|jkS)Nrr)r)r(r�)�DoubleEqr.r	rr�,sz4TestLRU.test_need_for_rlock.<locals>.DoubleEq.__eq__N)rMrNrOr�r�r/r�r	)r0r.r	rr0&sr0rr)rrr$)r(r	)r0r.r�test_need_for_rlockszTestLRU.test_need_for_rlockc
Cs/|jt��tjdd��}WdQXdS)NcSsdS)Nr	r	r	r	rr=9sz3TestLRU.test_early_detection_of_bad_call.<locals>.f)r,r-rr)r(r=r	r	r� test_early_detection_of_bad_call6sz(TestLRU.test_early_detection_of_bad_callN)rMrNrOrr r&r*r,r-r1r2r	r	r	rrwsYrc@s�eZdZdd�Zdd�Zdd�Zdd�Zeje	d	�e
jd
d���Zdd
�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)�TestSingleDispatchcCs�tjdd��}dd�}|jt|�|j|d�d�|j|d�d�|j|dd	d
g�d�dS)NcSsdS)Nr@r	)r�r	r	r�g@sz3TestSingleDispatch.test_simple_overloads.<locals>.gcSsdS)N�integerr	)r�r	r	r�g_intCsz7TestSingleDispatch.test_simple_overloads.<locals>.g_intrHr@rr5rr)r�singledispatch�registerrBr$)r(r4r6r	r	r�test_simple_overloads?sz(TestSingleDispatch.test_simple_overloadscCs
tjdd��}Gdd�d�}Gdd�d|�}Gdd�d|�}Gd	d
�d
||�}dd�}d
d�}|j||�|j||�|j||��d�|j||��d�|j||��d�|j||��d�dS)NcSsdS)Nr@r	)r�r	r	rr4Ksz&TestSingleDispatch.test_mro.<locals>.gc@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.AN)rMrNrOr	r	r	rr�Nsr�c@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.CN)rMrNrOr	r	r	r�CPsr:c@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.BN)rMrNrOr	r	r	rr�Rsr�c@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.DN)rMrNrOr	r	r	r�DTsr;cSsdS)Nr�r	)rr	r	r�g_AVsz(TestSingleDispatch.test_mro.<locals>.g_AcSsdS)Nr�r	)rr	r	r�g_BXsz(TestSingleDispatch.test_mro.<locals>.g_B)rr7r8r$)r(r4r�r:r�r;r<r=r	r	r�test_mroJszTestSingleDispatch.test_mrocCs�tjdd��}|jt�dd��}|j|d�d�|j|d�d�|j|jt�|�|j|jt�|jt��dS)	NcSsdS)Nr@r	)r�r	r	rr4bsz5TestSingleDispatch.test_register_decorator.<locals>.gcSsd|fS)Nzint %sr	)r�r	r	rr6esz9TestSingleDispatch.test_register_decorator.<locals>.g_intrFr@rzint 12)	rr7r8rBr$r��dispatchr]rH)r(r4r6r	r	r�test_register_decoratorasz*TestSingleDispatch.test_register_decoratorcCsTtjdd��}|j|jd�tjjdkrP|j|jd�ndS)NcSsdS)zSimple testZTestr	)r�r	r	rr4psz6TestSingleDispatch.test_wrapping_attributes.<locals>.gr4rzSimple test)rr7r$rMr�r�r�r�)r(r4r	r	r�test_wrapping_attributesosz+TestSingleDispatch.test_wrapping_attributeszrequires _decimalcCs�tjdd��}|jtj�dd��}tjd�}tjd�}|j||�d	�|j||�d
�|jtj�dd��}|j||�d�|j||�d�dS)NcSsdS)Nr@r	)r�r	r	rr4{sz,TestSingleDispatch.test_c_classes.<locals>.gcSs|jS)N)r
)r�r	r	rr�~sz,TestSingleDispatch.test_c_classes.<locals>._�Exponent < Emin�Number got roundedcSsdS)NzToo small to care.r	)r�r	r	rr��szToo small to care.)rB)rC)rC)rr7r8rZDecimalExceptionZ	SubnormalZRoundedr$)r(r4r��subnZrndr	r	r�test_c_classesxsz!TestSingleDispatch.test_c_classescCs�t}tj}|j|j|j|jg}xWt|�D]I}|t|�}|j	|t|j|j|j
|j|jt
g�q:W|j|j|j|jg}x]t|�D]O}||j|�}|j	||j|j|j|j
|j|jt
g�q�W|j|j
tg}x]t|�D]O}||j|j
|jtg�}|j	||jt|j
|jt
g�q'WGdd�d|j�}|jj|�|j|jg}xlt|�D]^}|||�}|j	|||j|j|jt|j|j|j
|j|jt
g�q�WGdd�d|j�}|j
|j|j|jg}x`t|�D]R}|||�}|j	|||j|jt|j|j
|j|jt
g	�qhWdS)Nc@seZdZdS)z.TestSingleDispatch.test_compose_mro.<locals>.DN)rMrNrOr	r	r	rr;�sr;c@seZdZdd�ZdS)z.TestSingleDispatch.test_compose_mro.<locals>.CcSsdS)Nr	)r(r	r	r�__call__�sz7TestSingleDispatch.test_compose_mro.<locals>.C.__call__N)rMrNrOrFr	r	r	rr:�sr:)r�r�_compose_mro�Sequence�MutableMapping�Mapping�Setrr%r$�Sized�Iterable�	Containerr]�OrderedDict�ChainMaprH�defaultdict�MutableSequencer8�Callable)r(r�mro�basesZhaystack�mr;r:r	r	r�test_compose_mro�s@	 !!z#TestSingleDispatch.test_compose_mrocCs�t}idd6}dddg}t�dh}t|�}d"}tjdd��}|j||�d�|j||�d�|j||�d�|j||�d�|j||�d�|j|jd	d
��|j||�d�|j||�d�|j||�d�|j||�d�|j||�d�|j|jdd
��|j||�d
�|j||�d�|j||�d�|j||�d�|j||�d�|j|j	dd
��|j||�d
�|j||�d�|j||�d�|j||�d�|j||�d�|j|j
dd
��|j||�d
�|j||�d�|j||�d�|j||�d�|j||�d�|j|jdd
��|j||�d
�|j||�d�|j||�d�|j||�d�|j||�d�|j|jdd
��|j||�d
�|j||�d�|j||�d�|j||�d�|j||�d�|j|j
dd
��|j||�d
�|j||�d�|j||�d�|j||�d�|j||�d�|j|jdd
��|j||�d
�|j||�d�|j||�d�|j||�d�|j||�d�|jtdd
��|j||�d�|j||�d�|j||�d�|j||�d�|j||�d�|jtdd
��|j||�d�|j||�d�|j||�d�|j||�d�|j||�d�|jtdd
��|j||�d�|j||�d�|j||�d�|j||�d�|j||�d�|jtdd
��|j||�d�|j||�d�|j||�d�|j||�d�|j||�d�|jtd d
��|j||�d�|j||�d�|j||�d�|j||�d�|j||�d!�dS)#NrrrrrcSsdS)Nr@r	)r�r	r	rr4�sz/TestSingleDispatch.test_register_abc.<locals>.gr@cSsdS)N�sizedr	)r�r	r	rr �sz6TestSingleDispatch.test_register_abc.<locals>.<lambda>rXcSsdS)N�mutablemappingr	)r�r	r	rr �srYcSsdS)NZchainmapr	)r�r	r	rr �scSsdS)N�mutablesequencer	)r�r	r	rr �srZcSsdS)N�
mutablesetr	)r�r	r	rr �sr[cSsdS)N�mappingr	)r�r	r	rr �scSsdS)N�sequencer	)r�r	r	rr �sr]cSsdS)N�setr	)r�r	r	rr �sr^cSsdS)Nr%r	)r�r	r	rr �sr%cSsdS)Nr'r	)r�r	r	rr sr'cSsdS)Nzconcrete-setr	)r�r	r	rr 	szconcrete-setcSsdS)Nz
frozen-setr	)r�r	r	rr sz
frozen-setcSsdS)Nrjr	)r�r	r	rr srj)rrr)r�r]�	frozensetrr7r$r8rLrIrPrR�
MutableSetrJrHrKr%r'r^rj)r(rr2�l�sr=�tr4r	r	r�test_register_abc�s�
z$TestSingleDispatch.test_register_abcc	CsBt}tj}Gdd�dt�}Gdd�d|�}|jjGdd�dt��}Gdd�dt�}Gd	d
�d
|||�}||j|||j||j|tg	}xBt|j|j|jg�D]"}	|j	||d|	�|�q�W|j
|j|j|j|jg}
|j	||d|
�|�dS)Nc@seZdZdS)z)TestSingleDispatch.test_c3_abc.<locals>.AN)rMrNrOr	r	r	rr�sr�c@seZdZdd�ZdS)z)TestSingleDispatch.test_c3_abc.<locals>.BcSsdS)Nrr	)r(r	r	rrh"sz1TestSingleDispatch.test_c3_abc.<locals>.B.__len__N)rMrNrOrhr	r	r	rr�!sr�c@seZdZdS)z)TestSingleDispatch.test_c3_abc.<locals>.CN)rMrNrOr	r	r	rr:$sr:c@seZdZdS)z)TestSingleDispatch.test_c3_abc.<locals>.DN)rMrNrOr	r	r	rr;'sr;c@seZdZdd�ZdS)z)TestSingleDispatch.test_c3_abc.<locals>.XcSsdS)Nr	)r(r	r	rrF*sz2TestSingleDispatch.test_c3_abc.<locals>.X.__call__N)rMrNrOrFr	r	r	r�X)sre�abcs)r�r�_c3_mror]rNr8rSrLrr$rJrM)r(rrTr�r�r:r;rer6rfZ	many_abcsr	r	r�test_c3_abcs	*% $zTestSingleDispatch.test_c3_abccCs�Gdd�dt�}Gdd�dd|�}Gdd�d|�}tjdd	��}|j|�d
d��}|�}|j||�d�dS)
Nc@seZdZdd�ZdS)z1TestSingleDispatch.test_false_meta.<locals>.MetaAcSsdS)Nrr	)r(r	r	rrh6sz9TestSingleDispatch.test_false_meta.<locals>.MetaA.__len__N)rMrNrOrhr	r	r	r�MetaA5sric@seZdZdS)z-TestSingleDispatch.test_false_meta.<locals>.AN)rMrNrOr	r	r	rr�8sr��	metaclassc@seZdZdS)z.TestSingleDispatch.test_false_meta.<locals>.AAN)rMrNrOr	r	r	r�AA:srkcSsdS)Nzbase Ar	)rr	r	r�fun<sz/TestSingleDispatch.test_false_meta.<locals>.funcSsdS)Nzfun Ar	)rr	r	rr�?sz-TestSingleDispatch.test_false_meta.<locals>._zfun A)r)rr7r8r$)r(rir�rkrlr�Zaar	r	r�test_false_meta3s	z"TestSingleDispatch.test_false_metacCs>t}tjdd��}Gdd�d|j�}|�}|j||�d�|j|jdd��|j|jdd��|j|jd	d��|j|jd
d��|j||�d�|jj|�|j||�d�|jj|�|j||�d�|jj|�|j||�d�Gd
d�d�}|�}|j||�d�|jj|�|j||�d�|jj|�|j	t
��}||�WdQX|jt|j
�d1�Gdd�d|j�}|�}	|j||	�d�|jj|�|j||	�d�|jj|�|j||	�d�tjdd��}
|
j|j�dd��}|
j|j�dd��}|j	t
�� }|
|jdd���WdQX|jt|j
�d2�Gdd�d|j�}
|jj|
�tjdd��}|j|j�d d��}|j|j�d!d��}|
�}|j||�d"�Gd#d$�d$�}Gd%d&�d&||j�}|�}|j|
|�d�|jj|�|j|
|�d�Gd'd(�d(�}|�}|j|
|�d�|jj|�|j	t
��}|
|�WdQX|jt|j
�d3�Gd)d*�d*|j|�}tjd+d,��}|j|�d-d��}|j|j�d.d��}|�}|j||�d/�|jj|�|j||�d0�dS)4NcSsdS)Nr@r	)�argr	r	rr4Gsz0TestSingleDispatch.test_mro_conflicts.<locals>.gc@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.OcSsdS)Nrr	)r(r	r	rrhKsz8TestSingleDispatch.test_mro_conflicts.<locals>.O.__len__N)rMrNrOrhr	r	r	r�OJsror@cSsdS)N�iterabler	)rnr	r	rr Osz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>cSsdS)N�	containerr	)rnr	r	rr PscSsdS)NrXr	)rnr	r	rr QscSsdS)Nr^r	)rnr	r	rr RsrXr^c@seZdZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.PN)rMrNrOr	r	r	r�P[srrrp�]Ambiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Iterable'>�]Ambiguous dispatch: <class 'collections.abc.Iterable'> or <class 'collections.abc.Container'>c@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.QcSsdS)Nrr	)r(r	r	rrhlsz8TestSingleDispatch.test_mro_conflicts.<locals>.Q.__len__N)rMrNrOrhr	r	r	r�QksrucSsdS)Nr@r	)rnr	r	r�husz0TestSingleDispatch.test_mro_conflicts.<locals>.hcSsdS)NrXr	)rnr	r	rr�xsz0TestSingleDispatch.test_mro_conflicts.<locals>._cSsdS)Nrqr	)rnr	r	rr�{scSsdS)Nrr	r	r	r	rr �s�ZAmbiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Sized'>�ZAmbiguous dispatch: <class 'collections.abc.Sized'> or <class 'collections.abc.Container'>c@seZdZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.RN)rMrNrOr	r	r	r�R�srycSsdS)Nr@r	)rnr	r	rr��sz0TestSingleDispatch.test_mro_conflicts.<locals>.icSsdS)Nr\r	)rnr	r	rr��scSsdS)Nr]r	)rnr	r	rr��sr]c@seZdZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.SN)rMrNrOr	r	r	r�S�srzc@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.TcSsdS)Nrr	)r(r	r	rrh�sz8TestSingleDispatch.test_mro_conflicts.<locals>.T.__len__N)rMrNrOrhr	r	r	r�T�sr{c@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.UcSsdS)Nrr	)r(r	r	rrh�sz8TestSingleDispatch.test_mro_conflicts.<locals>.U.__len__N)rMrNrOrhr	r	r	r�U�sr|c@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.VcSsdS)Nrr	)r(r	r	rrh�sz8TestSingleDispatch.test_mro_conflicts.<locals>.V.__len__N)rMrNrOrhr	r	r	r�V�sr}cSsdS)Nr@r	)rnr	r	r�j�sz0TestSingleDispatch.test_mro_conflicts.<locals>.jcSsdS)Nrbr	)rnr	r	rr��scSsdS)Nrqr	)rnr	r	rr��srbrq)rsrt)rwrx)rwrx)r�rr7rLr$r8rMrNrKr,r�r`rHr#rQrRrI)r(rr4ro�orrr)Zre_oneru�qrvr�Zre_tworyr��rrzr{rcr|�uZre_threer}r~�vr	r	r�test_mro_conflictsEs�							z%TestSingleDispatch.test_mro_conflictsc
s*ddlm}G�fdd�d|��tj}����fdd�t_t}tjdd��}i}g}|jt��d�|j||�d	�|jt��d
�|j�jg�|j�jt	g�|j�j
t	|jt�|j||�d	�|jt��d�|j�jg�|j�jt	t
g�|j�j
t	|jt�|j�j
t
|jt�|j�j
t	�j
t
�|j||�d	�|j||�d	�|j�jt
t	g�|j�jt	t
g�|jt
dd��|j�jt
t	g�|jt��d�|j||�d	�|jt��d
�|j�jt
t	g�|j�jt	t
t	g�|j�j
t	tjt	|j��|j||�d
�|jt��d�|j�jt
t	g�|j�jt	t
t	t
g�|j�j
t
tjt
|j��Gdd�d�}|jj|�|j||�d	�|j||�d
�|j�jt
t	t	t
g�|j�jt	t
t	t
g�|j|jdd��|jt��d�|j||�d�|jt��d
�|j�jt
t	t	t
g�|j�jt	t
t	t
t	g�|j||�d
�|jt��d�|j�jt
t	t	t
g�|j�jt	t
t	t
t	t
g�|j||�d
�|j||�d�|j�jt
t	t	t
t
t	g�|j�jt	t
t	t
t	t
g�|jt
�|jt	�|j�jt
t	t	t
t
t	t
t	g�|j�jt	t
t	t
t	t
g�|jj|�|jt��d�|j||�d
�|jt��d
�|j|jdd��|jt��d�|j||�d�|jt��d
�|j||�d
�|jt��d�|jt	dd��|j||�d�|j||�d
�|j�|jt��d�|t_dS)Nr)�UserDictcsIeZdZ��fdd�Zdd�Zdd�Zdd�Z�S)	z?TestSingleDispatch.test_cache_invalidation.<locals>.TracingDictcs/t�|�j||�g|_g|_dS)N)�superr��set_ops�get_ops)r(r
ra)�TracingDict�	__class__r	rr��s	zHTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__init__cSs!|j|}|jj|�|S)N)rKr�r�)r(rl�resultr	r	rrm�s
zKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__getitem__cSs!|jj|�||j|<dS)N)r�r�rK)r(rlr�r	r	r�__setitem__�szKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__setitem__cSs|jj�dS)N)rK�clear)r(r	r	rr��szETestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.clear)rMrNrOr�rmr�r�r	)r�)r�rr��sr�cs�S)Nr	r	)�tdr	rr �sz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>cSsdS)Nr@r	)rnr	r	rr4�sz5TestSingleDispatch.test_cache_invalidation.<locals>.gr@rrcSsdS)Nr'r	)rnr	r	rr �sr'c@seZdZdS)z5TestSingleDispatch.test_cache_invalidation.<locals>.XN)rMrNrOr	r	r	rre�srecSsdS)NrXr	)rnr	r	rr srXcSsdS)NrYr	)rnr	r	rr srYcSsdS)Nr%r	)rnr	r	rr #sr%)r�r�r�WeakKeyDictionaryr7r$r�r�r�r%rK�registryr]r'r8�
_find_implrIrLr?r`�_clear_cache)r(r�Z	_orig_wkdrr4r2rarer	)r�r�r�test_cache_invalidation�s�		"%%%


%
z*TestSingleDispatch.test_cache_invalidationN)rMrNrOr9r>r@rAr��
skipUnlessrrZcpython_onlyrErWrdrhrmr�r�r	r	r	rr3>s	3^�r3cCs�tttttttttt	t
tf}tj
|�|r�ttd�r�ddl}dgd}xAtt|��D]-}tj
|�|j�tj�||<qxWt|�ndS)N�gettotalrefcountrr0)rPrrrvrwr�r�r�r�r�r�rr3rZrun_unittestr�r��gcrIr�Zcollectr��print)�verboseZtest_classesr�Zcountsr�r	r	r�	test_main+s*	



r��__main__r�T)(r�r��	itertoolsrrcZrandomrr�Ztestrr��weakrefrrZimport_fresh_modulertr_rr
rrr�ZTestCaserPrrr!rurvrwr�r�r�r�r�r�r�rr3r�rMr	r	r	r�<module>sJlKrr>QS����