Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_functools.cpython-39.pyc

a

��g[��@s�ddlZddlZddlZddlZddlZddlmZddlZddlm	Z	ddl
Z
ddlmZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZddlZddlmZddlZejddgd	�Zejddgd
�Zejddgd
�Zejd
d��Zdd�Z dd�Z!Gdd�de"�Z#Gdd�de"�Z$Gdd�de%�Z&Gdd�d�Z'e�(ed�Gdd�de'ej)��Z*Gdd�de'ej)�Z+e�r�Gd d!�d!ej,�Z-Gd"d#�d#ej,�Z.e�(ed�Gd$d%�d%e*��Z/Gd&d'�d'e+�Z0Gd(d)�d)ej)�Z1Gd*d+�d+ej)�Z2Gd,d-�d-e2�Z3Gd.d/�d/�Z4e�(ed�Gd0d1�d1e4ej)��Z5Gd2d3�d3e4ej)�Z6Gd4d5�d5�Z7e�(ed�Gd6d7�d7e7ej)��Z8Gd8d9�d9e7ej)�Z9Gd:d;�d;ej)�Z:ej;Gd<d=�d=��Z<Gd>d?�d?�Z=Gd@dA�dA�Z>e�?�dBdC��Z@e�?�dDdE��ZAGdFdG�dGe>ej)�ZBGdHdI�dIe>ej)�ZCGdJdK�dKej)�ZDGdLdM�dM�ZEGdNdO�dO�ZFGdPdQ�dQ�ZGGdRdS�dS�ZHGdTdU�dUej)�ZIeJdVk�r�e�K�dS)W�N)�permutations)�choice)�support)�proxy)�assert_python_ok�	functools�
_functools)Zblocked)Zfresh�decimalZ_decimalc	cs:tj|}|tj|<zdVW|tj|<n|tj|<0dS�N)�sys�modules)�nameZreplacementZoriginal_module�r�//usr/local/lib/python3.9/test/test_functools.py�replaced_modules


rcOs||fS)z,capture all positional and keyword argumentsr)�args�kwrrr�capture(srcCs|j|j|j|jfS)z* return the signature of a partial object )�funcr�keywords�__dict__)�partrrr�	signature-src@seZdZdS)�MyTupleN��__name__�
__module__�__qualname__rrrrr1src@seZdZdd�ZdS)�BadTuplecCst|�t|�Sr
)�list��self�otherrrr�__add__5szBadTuple.__add__N)rrrr#rrrrr4src@seZdZdS)�MyDictNrrrrrr$8sr$c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3S)4�TestPartialc	Csx|jtddddd�}|�t|��|�|dddd	d
�dtddd	d�f�|�td
d��}|�t|gd���gd��dS)N���
���a�b����(�r,�c�r&r'r-r.�r+r,r2cSs|dS)Nr(r��xrrr�<lambda>C�z1TestPartial.test_basic_examples.<locals>.<lambda>)r(r)r/r0)�partialr�
assertTrue�callable�assertEqual�dict�mapr�r!�prrr�test_basic_examples>s�zTestPartial.test_basic_examplescCsJ|jtddddd�}|�|jt�|�|jd�|�|jtddd��dS)Nr&r'r(r)r*�r&r')r9rr<rrrr=r?rrr�test_attributesFszTestPartial.test_attributescCs@|�t|j�z|�d��Wnty0Yn0|�d�dS)Nr'z%First arg not checked for callability)�assertRaises�	TypeErrorr9�fail�r!rrr�test_argument_checkingMsz"TestPartial.test_argument_checkingcCsdddd�}ddi}|j|dd�}|�|fi|��d�|�|ddi�|d	d
�|�|ddi�dS)Nr(r)cSs|Sr
rr*rrrrXszBTestPartial.test_protection_of_callers_dict_argument.<locals>.funcr+r-��r+��r,)r(r))r9r<)r!r�dr@rrr�(test_protection_of_callers_dict_argumentVs

z4TestPartial.test_protection_of_callers_dict_argumentcCsRddi}|jtfi|��}|�|�dddif�d|d<|�|�dddif�dS)Nr+r-rrI�r9rr<)r!rMr@rrr�test_kwargs_copyas
zTestPartial.test_kwargs_copycCsl|�t�}|�|�dif�|�|dd�dif�|�tdd�}|�|�dif�|�|dd�dif�dS)Nrr&r'rBr-r.r3rOr?rrr�test_arg_combinationsjs
z!TestPartial.test_arg_combinationscCs�|�t�}|�|ji�|�|�dif�|�|dd�dddif�|jtdd�}|�|jddi�|�|�dddif�|�|dd�dddd�f�|�|ddd�dddd�f�dS)	Nrr&rJr+r'rLr*r-)r9rr<rr?rrr�test_kw_combinationsts
z TestPartial.test_kw_combinationscCsJdD]@}|jtg|�R�}|d}|d�\}}|�||ko@|ik�qdS)N)r�r�rr&)rr&r')rr&r'r-r5r6�r9rr:)r!rr@�expected�got�emptyrrr�test_positional�s
zTestPartial.test_positionalcCsJdD]@}|jt|d�}|dd�}|dd�\}}|�||ko@|dk�qdS)N)r+rNg@rJ)r+r6r5rrU)r!r+r@rVrXrWrrr�test_keyword�s

zTestPartial.test_keywordcCsd|jtddd�}|ddd�\}}|�|dko8|ddd�k�|�\}}|�|dko\|d	dik�dS)
Nrr&rJr'rLrTr*rSr+rU)r!r@Zargs1Zkw1Zargs2Zkw2rrr�test_no_side_effects�s

z TestPartial.test_no_side_effectscCsfdd�}|�t|�|dd��|�t|�|d�d�|�t|�|�dd�|�t|j|dd�d�dS)NcSs||dSr
r�r6�yrrr�f�sz-TestPartial.test_error_propagation.<locals>.fr&r)r])rD�ZeroDivisionErrorr9�r!r^rrr�test_error_propagation�s
z"TestPartial.test_error_propagationcCsF|jtdd�}t|�}|�|j|j�d}t��|�tt	|d�dS)N�)�baser)
r9�intrr<rr�
gc_collectrD�ReferenceError�getattr�r!r^r@rrr�test_weakref�szTestPartial.test_weakrefcCsPttttd���}|�tjd�}|�||�d�|�dj�}|�||�d�dS)Nr(��
0123456789)rr>�str�ranger9�joinr<)r!�datarnrrr�#test_with_bound_and_unbound_methods�s
z/TestPartial.test_with_bound_and_unbound_methodscCsB|j}|td�}||dd�}|tddd�}|�t|�t|��dS�N�asdfT��bar)r9rr<)r!r9�inner�nestedZflatrrr�test_nested_optimization�s

z$TestPartial.test_nested_optimizationcCs:|j}dd�}||d�}||d�}d|_|�|jd�dS)NcSs|Sr
rrsrrr�foo�sz;TestPartial.test_nested_partial_with_attribute.<locals>.foo�first�secondZspam)r9Znew_attrr<)r!r9rxr@Zp2rrr�"test_nested_partial_with_attribute�s

z.TestPartial.test_nested_partial_with_attributecs(t�t�f}d�dd�|D���t�t�d�}d�|�d�|�g}|jtjtjfvrZd�n|jj�|�t�}|���dt�d	�t	|��|jtg|�R�}|���dt�d��d	�t	|��|jtfi|��}|�
t	|��fd
d�|D��|jtg|�Ri|��}|�
t	|���fdd�|D��dS)
N�, css|]}t|�VqdSr
)�repr)�.0r+rrr�	<genexpr>�r8z(TestPartial.test_repr.<locals>.<genexpr>r*za={a!r}, b={b!r}zb={b!r}, a={a!r}�functools.partial�(�)cs"g|]}��dt�d|�d��qS�r�r|r��r�r~Zkwargs_repr)r
rr�
<listcomp>�s�z)TestPartial.test_repr.<locals>.<listcomp>c
s(g|] }��dt�d��d|�d��qSr�r�r��Z	args_reprr
rrr��s�)�objectrn�
format_mapr9�c_functools�py_functoolsrrr<r}�assertIn)r!r�kwargsZkwargs_reprsr^rr�r�	test_repr�s2�
"

��
��zTestPartial.test_reprcCsH|jtjtjfvrd}n|jj}|�t�}|�|diif�z,|�t|�d|f�W|�tdiif�n|�tdiif�0|�t�}|�t|fiif�z.|�t|�d|tf�W|�tdiif�n|�tdiif�0|�t�}|�tdd|iif�z.|�t|�d|tf�W|�tdiif�n|�tdiif�0dS)Nr�rz%s(...)z%s(%r, ...)r+z
%s(%r, a=...))r9r�r�rr�__setstate__r<r})r!r
r^rrr�test_recursive_repr�s$
(
(
zTestPartial.test_recursive_reprcCs�|���d|jtdgdgd�}g|_ttjd�D]*}t�t�||��}|�	t|�t|��q2Wd�n1sr0YdS)NrrTrsr&)
�AllowPickler9r�attrrm�pickle�HIGHEST_PROTOCOL�loads�dumpsr<�r!r^�proto�f_copyrrr�test_pickle�s
zTestPartial.test_picklecCsl|jtdgdgd�}g|_t�|�}|�t|�t|��|�|j|j�|�|j|j�|�|j|j�dSrq)r9rr��copyr<�assertIsrr�r!r^r�rrr�	test_copys
zTestPartial.test_copycCs�|jtdgdgd�}g|_t�|�}|�t|�t|��|�|j|j�|�|j|j�|�|jd|jd�|�|j|j�|�|jd|jd�dS)NrrTrsrrt)	r9rr�r��deepcopyr<ZassertIsNotrrr�rrr�
test_deepcopys
zTestPartial.test_deepcopyc	Cs�|�t�}|�tdtdd�tgd�f�|�t|�tdtdd�tgd�f�|�|ddd�dddd	�f�|�tdtdd�df�|�t|�tdtdd�if�|�|ddd�dddd	�f�|�tdddf�|�|ddd�dd
dif�|�|d�dif�|�|�dif�|�tdidf�|�t|�tdiif�|�|ddd�dd
dif�|�|d�dif�|�|�dif�dS)
N�r&r(rJ�r�r'r)rLrBr*r,r)r')r9rr�rr=r<r`rrr�
test_setstates$

�zTestPartial.test_setstatec	Cs�|�t�}|�t|jtdif�|�t|jtdiidf�|�t|jtdidg�|�t|jddidf�|�t|jtdidf�|�t|jtgidf�|�t|jtdgdf�dS)Nr)r9rrDrEr�rr`rrr�test_setstate_errors/s
z TestPartial.test_setstate_errorscCs(|�t�}|�ttd�tdd�df�t|�}|�|tdtdd�if�|�t	|d�t
�|�t	|d�t�|�}|�|dddif�|�t	|d�t
�|�t	|d�t�|�ttd�idf�t|�}|�|tdiif�|�t	|d�t
�|d�}|�|dif�|�t	|d�t
�dS)	Nr�r(rJr&r'r+rrB)r9rr�rrr$r<r=r��type�tupler)r!r^�s�rrrr�test_setstate_subclasses9s"
z$TestPartial.test_setstate_subclassescCs"|����|�t�}|�|diif�z`ttjd�D]:}|�t��t�	||�Wd�q81sh0Yq8W|�tdiif�n|�tdiif�0|�t�}|�t|fiif�zzttjd�D]T}t�
t�	||��}z(|�|jd|�W|�tdiif�q�|�tdiif�0q�W|�tdiif�n|�tdiif�0|�t�}|�tdd|iif�z|ttjd�D]V}t�
t�	||��}z(|�|j
d|�W|�tdiif�n|�tdiif�0�q|W|�tdiif�n|�tdiif�0Wd�n1�s0YdS)Nrr&rr+)r�r9rr�rmr�r�rD�RecursionErrorr�r�r�rrr�rrr�test_recursive_pickleMs4
.(
,(
.z!TestPartial.test_recursive_picklecCs.Gdd�d�}|�t�}|�t|j|��dS)Nc@seZdZdd�Zdd�ZdS)z7TestPartial.test_setstate_refcount.<locals>.BadSequencecSsdS)Nr.rrGrrr�__len__ssz?TestPartial.test_setstate_refcount.<locals>.BadSequence.__len__cSs4|dkrtS|dkr ttd��S|dvr,iSt�dS)Nrr&i@B)r'r-)�maxr�rm�
IndexError)r!�keyrrr�__getitem__uszCTestPartial.test_setstate_refcount.<locals>.BadSequence.__getitem__N)rrrr�r�rrrr�BadSequencersr�)r9r�rDrEr�)r!r�r^rrr�test_setstate_refcountqs
z"TestPartial.test_setstate_refcountN)rrrrArCrHrNrPrQrRrYrZr[rarirprwr{r�r�r�r�r�r�r�r�r�r�rrrrr%<s2		
	
$r%z requires the C _functools modulec@s<eZdZerejZGdd�d�Zdd�Zdd�Zdd�Zd	S)
�TestPartialCc@seZdZdd�Zdd�ZdS)zTestPartialC.AllowPicklecCs|Sr
rrGrrr�	__enter__�sz"TestPartialC.AllowPickle.__enter__cCsdS�NFr�r!r��value�tbrrr�__exit__�sz!TestPartialC.AllowPickle.__exit__N)rrrr�r�rrrrr��sr�c
Cs�|jtddddd�}|�tt|dt�|�tt|dd�|�tt|d	tddd��|�t�}z|`Wnt	yvYn0|�
d
�dS)Nr&r'r(r)r*rrrBrz-partial object allowed __dict__ to be deleted)r9rrD�AttributeError�setattrr>r=�hexrrErFr?rrr�test_attributes_unwritable�s
z'TestPartialC.test_attributes_unwritablecCsh|�t�}d|jd<t|�}|�d|�|�d|�|�t��|�Wd�n1sZ0YdS)Nr�i�Z1234z'value')r9rrr}r�rDrE)r!r@r�rrr�'test_manually_adding_non_string_keyword�s

z4TestPartialC.test_manually_adding_non_string_keywordcsP|�t��G�fdd�dt�}dg�j|�<t��}|�d|�|�d|�dS)NcseZdZ�fdd�ZdS)z@TestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDictcsdg�j|<dS)NZsth2�astr)rrG�r@rr�__str__�szHTestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDict.__str__N)rrrr�rr�rr�MutatesYourDict�sr�Zsthr�z['sth'])r9rr�rr}r�)r!r�r�rr�r�test_keystr_replaces_value�s
z'TestPartialC.test_keystr_replaces_valueN)	rrrr�r9r�r�r�r�rrrrr��s
r�c@s eZdZejZGdd�d�ZdS)�
TestPartialPyc@s$eZdZdd�Zdd�Zdd�ZdS)zTestPartialPy.AllowPicklecCstdt�|_dS)Nr)rr��_cmrGrrr�__init__�sz"TestPartialPy.AllowPickle.__init__cCs
|j��Sr
)r�r�rGrrrr��sz#TestPartialPy.AllowPickle.__enter__cCs|j�|||�Sr
)r�r�r�rrrr��sz"TestPartialPy.AllowPickle.__exit__N)rrrr�r�r�rrrrr��sr�N)rrrr�r9r�rrrrr��sr�c@seZdZdS)�CPartialSubclassNrrrrrr��sr�c@seZdZdS)�PyPartialSubclassNrrrrrr��sr�c@seZdZereZdZdS)�TestPartialCSubclassN)rrrr�r�r9rwrrrrr��sr�c@seZdZeZdS)�TestPartialPySubclassN)rrrr�r9rrrrr��sr�c@szeZdZGdd�de�Ze�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestPartialMethodc@s�eZdZe�e�Ze�ed�Zejedd�Zejeddd�Z	ejeddd�Z
e�ed�Ze�ejed	d
�d�Z
e�ee�d�Zejee�d
d�ZdS)zTestPartialMethod.Ar&r'rJr-r.rL�r!rrI��r2rK��	�rMN)rrrr�
partialmethodr�nothing�
positionalr�both�
spec_keywordsrvr9�over_partial�staticmethod�static�classmethod�clsrrrr�A�s
r�cCsz|�|j��|jfif�|�|j�d�|jdfif�|�|jjdd�|jfddif�|�|jjddd�|jdfddif�|�|j��|jdfif�|�|j�d�|jddfif�|�|jjdd�|jdfddif�|�|jjddd�|jddfddif�|�|j��|jfddif�|�|j�d�|jdfddif�|�|jjdd�|jfddd�f�|�|jjddd�|jdfddd�f�|�|j��|jd	fd
dif�|�|j�d�|jd	dfd
dif�|�|jjdd�|jd	fddd�f�|�|jjddd�|jd	dfddd�f�|�|jj|jddd�|jd	dfddd�f�|�|j��|jfddd
�f�dS)NrIr�r�r2r&r+r')r+r2r-r,r.r1r�)r<r+r�r�rr�r�r�rGrrrrQ�s$"& $("$( $&*.z'TestPartialMethod.test_arg_combinationscCs�|�|j��|jddfif�|�|j�d�|jdddfif�|�|jjdd�|jddfddif�|�|jjddd�|jdddfddif�|�|jj|jddd�|jdddfddif�dS)Nr&rIr�rKr�rM)r<r+rvr�rGrrr�test_nested�s
"&*zTestPartialMethod.test_nestedcCs�|�|j��|jdfddif�|�|j�d�|jddfddif�|�|jjdd�|jdfddd�f�|�|jjddd�|jddfddd�f�|�|jj|jddd�|jddfddd�f�dS)NrKr2r�rIr�r��r2rM)r<r+r�r�rGrrr�test_over_partials
 $&*z#TestPartialMethod.test_over_partialcCs`|j}|�|jj|�|�|jj|�|�|jj|�|�|jj|j�|�|jjj|j�dSr
)r+r�r��__self__rvr�r�r��r!�objrrr�test_bound_method_introspection
sz1TestPartialMethod.test_bound_method_introspectioncCsf|j}|�t|jd��|�t|jd��|�t|jd��|�t|jd��|�t|jjd��dS)Nr�)r��assertFalse�hasattrr�rvr�r�r+r�rrr�test_unbound_method_retrievalsz/TestPartialMethod.test_unbound_method_retrievalc	Cs.|j|jfD�]}|j|d���|�|��dif�|�|�d�dif�|�|jdd�dddif�|�|jddd�dddif�|�|��|jfddif�|�|�d�|jdfddif�|�|jdd	�|jfddd
�f�|�|jddd	�|jdfddd
�f�Wd�q1�s0YqdS)N�r�)r�rI)r�rIr�r�rMr�r�r�)r�r+�subTestr<r�r�r�rrr�test_descriptorss "z"TestPartialMethod.test_descriptorscCsL|�|jjdd�|jfddif�|�|jj|jdd�|jfddif�dS)Nr-rJr+)r<r+rr�rGrrr�test_overriding_keywords*s"z*TestPartialMethod.test_overriding_keywordscCs�|�t�� Gdd�dt�}Wd�n1s00Y|�t��Gdd�d�}Wd�n1sh0Y|�t��Gdd�d�}Wd�n1s�0YdS)Nc@seZdZe�dd�ZdS)�.TestPartialMethod.test_invalid_args.<locals>.BNr&�rrrrr��methodrrrr�B0sr�c@seZdZe��ZdS)r�Nr�rrrrr�3sc@seZdZejedd�ZdS)r�r&)rr+N)rrrrr�rr�rrrrr�6s)rDrEr�)r!r�rrr�test_invalid_args.s.,z#TestPartialMethod.test_invalid_argscCs$|�tt|j�d�d�t��dS)Nr�z#functools.partialmethod({}, 3, b=4))r<r}�varsr��formatrrGrrrr�9s�zTestPartialMethod.test_reprcCslGdd�dtj�}|�|jj�|�|jj�|jj|jj|jj	|jj
|jjfD]}|�t
|dd��qPdS)Nc@s&eZdZejdd��Ze�ed�ZdS)z1TestPartialMethod.test_abstract.<locals>.AbstractcSsdSr
r�r!r6r]rrr�add@sz5TestPartialMethod.test_abstract.<locals>.Abstract.addrIN)	rrr�abc�abstractmethodr�rr��add5rrrr�Abstract>s
r��__isabstractmethod__F)r��ABCMetar:r�r�r�r�r�r�r�rvr�r�rg)r!r�rrrr�
test_abstract=s
&zTestPartialMethod.test_abstractcCs.dd�}t�|d�}|�|d�|dd��dS)NcSs||Sr
rr*rrrr^Msz1TestPartialMethod.test_positional_only.<locals>.fr&r')rr9r<rhrrr�test_positional_onlyLsz&TestPartialMethod.test_positional_onlyN)rrrr�r�r+rQr�r�r�r�r�r�r�r�r�r�rrrrr��s
r�c@s�eZdZejejfdd�Zdd�Zdd�Ze	�
ejj
dkd�d	d
��Zdd�Zd
d�Zdd�Zeje	�
ejj
dkd�dd���ZdS)�TestUpdateWrapperc	Cs�|D]}|�t||�t||��q|D]H}t||�}t||�}|D]*}|dkrX|dkrXqB|�||||�qBq&|�|j|�dS)Nr�__wrapped__)r�rgr�)	r!�wrapper�wrapped�assigned�updatedr
Zwrapper_attrZwrapped_attrr�rrr�
check_wrapperVs

zTestUpdateWrapper.check_wrappercCs<dd�dd�}d|_d|_dd�d	d
�}t�||�||fS)N�This is a new annotationrJcSsdS��This is a testNrrJrrrr^jsz,TestUpdateWrapper._default_update.<locals>.f�This is also a testzThis is a bald faced liezThis is the prior annotationrLcSsdSr
rrLrrrr�osz2TestUpdateWrapper._default_update.<locals>.wrapper)r�r�r�update_wrapper�r!r^r�rrr�_default_updateisz!TestUpdateWrapper._default_updatecCsv|��\}}|�||�|�|j|�|�|jd�|�|j|j�|�|jd�|�|jdd�|�	d|j�dS)Nr^rr+rr,)
r	rr�r�r<rrr��__annotations__�assertNotIn�r!r�r^rrr�test_default_updatetsz%TestUpdateWrapper.test_default_updater'�)Docstrings are omitted with -O2 and abovecCs|��\}}|�|jd�dS�Nr�r	r<�__doc__rrrr�test_default_update_doc~sz)TestUpdateWrapper.test_default_update_doccCs�dd�}d|_dd�}t�||dd�|�||dd�|�|jd�|�|j|j�|�|jd�|�|j	i�|�
t|d��dS)	NcSsdSrrrrrrr^�sz+TestUpdateWrapper.test_no_update.<locals>.frcSsdSr
rrrrrr��sz1TestUpdateWrapper.test_no_update.<locals>.wrapperrr�r�)r�rrrr<r�assertNotEqualrrr
r�r�rrrr�test_no_update�sz TestUpdateWrapper.test_no_updatecCs�dd�}d|_tdddd�|_dd	�}i|_d
}d}t�||||�|�||||�|�|jd�|�|j	|j	�|�|j
d�|�|jd�|�|j|j�dS)
NcSsdSr
rrrrrr^�sz2TestUpdateWrapper.test_selective_update.<locals>.f�This is a different testr&r'r-r4cSsdSr
rrrrrr��sz8TestUpdateWrapper.test_selective_update.<locals>.wrapperr���	dict_attrr�)r�r=rrrrr<rrrr�r!r^r��assign�updaterrr�test_selective_update�sz'TestUpdateWrapper.test_selective_updatecCs�dd�}dd�}i|_d}d}t�||||�|�d|j�|�|ji�|`|�t�� t�||||�Wd�n1s~0Yd|_|�t�� t�||||�Wd�n1s�0YdS)	NcSsdSr
rrrrrr^�sz4TestUpdateWrapper.test_missing_attributes.<locals>.fcSsdSr
rrrrrr��sz:TestUpdateWrapper.test_missing_attributes.<locals>.wrapperr�rr�r&)rrrrrr<rDr�rrrr�test_missing_attributes�s.z)TestUpdateWrapper.test_missing_attributescCsFdd�}t�|t�|�|jd�|�|j�d��|�|ji�dS)NcSsdSr
rrrrrr��sz6TestUpdateWrapper.test_builtin_update.<locals>.wrapperr�zmax()	rrr�r<rr:r�
startswithr
)r!r�rrr�test_builtin_update�s
z%TestUpdateWrapper.test_builtin_updateN)rrrr�WRAPPER_ASSIGNMENTS�WRAPPER_UPDATESrr	r
�unittest�skipIfr�flags�optimizerrrrrZrequires_docstringsrrrrrr�Ts"�

�
�r�c@sHeZdZdd�Zdd�Ze�ejj	dkd�dd��Z
d	d
�Zdd�Zd
S)�	TestWrapscCs.dd�}d|_d|_t�|�dd��}||fS)NcSsdSrrrrrrr^�sz$TestWraps._default_update.<locals>.frzThis is still a bald faced liecSsdSr
rrrrrr��sz*TestWraps._default_update.<locals>.wrapper)r�r�r�wrapsrrrrr	�s
zTestWraps._default_updatecCsH|��\}}|�||�|�|jd�|�|j|j�|�|jd�dS)Nr^r)r	rr<rrr�rrrrr
�s
zTestWraps.test_default_updater'rcCs|��\}}|�|jd�dSrr)r!r��_rrrr�sz!TestWraps.test_default_update_doccCstdd�}d|_t�|dd�dd��}|�||dd�|�|jd�|�|j|j�|�|jd�|�	t
|d��dS)	NcSsdSrrrrrrr^�sz#TestWraps.test_no_update.<locals>.frrcSsdSr
rrrrrr��sz)TestWraps.test_no_update.<locals>.wrapperr�r�)r�rr&rr<rrrrr�r�rrrrr�s
zTestWraps.test_no_updatecCs�dd�}d|_tdddd�|_dd	�}d
}d}t�|||�|dd
���}|�||||�|�|jd�|�|j	|j	�|�|j
d�|�|jd�|�|j|j�dS)NcSsdSr
rrrrrr^�sz*TestWraps.test_selective_update.<locals>.frr&r'r-r4cSs
i|_|Sr
r)r^rrr�
add_dict_attr�sz6TestWraps.test_selective_update.<locals>.add_dict_attrr�rcSsdSr
rrrrrr��sz0TestWraps.test_selective_update.<locals>.wrapperr�)r�r=rrr&rr<rrrr)r!r^r(rrr�rrrr�szTestWraps.test_selective_updateN)
rrrr	r
r!r"rr#r$rrrrrrrr%�s�
r%c@seZdZdd�Zdd�ZdS)�
TestReducec	CsGdd�d�}dd�}|�|�|gd�d�d�|�|�|dd	ggd
dggg�gd��|�|�d
d�tdd�d�d�|�|�dd�tdd�d�d�|�|�||d��d�|�|�||d�d�d�|�|�||d�d�d�|�t|j�|�t|jdd�|�t|jddd�|�|�dd�d�|�|�ddd�d�|�t|jdd�|�t|j|g�|�t|j|d�|�t|j|d�|�t|j|t��Gdd�d�}|�t|j||��|�|�|gd�d�|�|�|gd�d�Gdd �d �}|�t|jd|��dS)!Nc@s$eZdZdd�Zdd�Zdd�ZdS)z'TestReduce.test_reduce.<locals>.SquarescSs||_g|_dSr
)r��sofar)r!r�rrrr�sz0TestReduce.test_reduce.<locals>.Squares.__init__cSs
t|j�Sr
)�lenr*rGrrrr�sz/TestReduce.test_reduce.<locals>.Squares.__len__cSsRd|kr|jksnt�t|j�}||krH|j�||�|d7}q&|j|S)Nrr&)r�r�r+r*�append)r!�i�nrrrr�s

z3TestReduce.test_reduce.<locals>.Squares.__getitem__N)rrrr�r�r�rrrr�Squaressr/cSs||Sr
rr\rrrr�sz#TestReduce.test_reduce.<locals>.addr4rjr�r+r2rM�w)r+r2rMr0cSs||Sr
rr\rrrr7r8z(TestReduce.test_reduce.<locals>.<lambda>r'r�r&i�cSs||Sr
rr\rrrr7r8�lh�r(ir�*�1)r2r2rc@seZdZdd�ZdS)z/TestReduce.test_reduce.<locals>.TestFailingItercSst�dSr
��RuntimeErrorrGrrr�__iter__0sz8TestReduce.test_reduce.<locals>.TestFailingIter.__iter__N)rrrr6rrrr�TestFailingIter/sr7c@seZdZdd�ZdS)z&TestReduce.test_reduce.<locals>.BadSeqcSst�dSr
)�
ValueError)r!�indexrrrr�8sz2TestReduce.test_reduce.<locals>.BadSeq.__getitem__N)rrrr�rrrr�BadSeq7sr:)r<�reducermrDrEr�r5r8)r!r/r�r7r:rrr�test_reduces>� �zTestReduce.test_reducecCs�Gdd�d�}ddlm}|�|�||d��d�|�|�||d�d�d�|�t|j||d��|�|�||d�d�d�|�|�||d	��d�|�|�||d	�d�d�d	d
dd�}|�|�||�d
�|����dS)Nc@seZdZdd�Zdd�ZdS)z5TestReduce.test_iterator_usage.<locals>.SequenceClasscSs
||_dSr
�r.)r!r.rrrr�?sz>TestReduce.test_iterator_usage.<locals>.SequenceClass.__init__cSs&d|kr|jkrnn|St�dS�Nr)r.r��r!r-rrrr�AszATestReduce.test_iterator_usage.<locals>.SequenceClass.__getitem__N)rrrr�r�rrrr�
SequenceClass>sr@r)r�rIr(r2�4r&r'r-)ZoneZtwoZthreerj)�operatorr�r<r;rDrErn�keys)r!r@r�rMrrr�test_iterator_usage=s	zTestReduce.test_iterator_usageN)rrrr<rDrrrrr)s8r)c@seZdZerejZdS)�TestReduceCN)rrrr�r;rrrrrESsrEc@seZdZeej�ZdS)�TestReducePyN)rrrr�r�r;rrrrrFYsrFc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestCmpToKeycCs�dd�}|�|�}|�|d�|d��|�|d�|d��|�|d�|d��dd�}|�|�}|�|d�|d��|�|d	�|d
��|�|d	�|d
��|�|d	�|d
��dS)NcSs||k||kSr
rr\rrr�cmp1`sz*TestCmpToKey.test_cmp_to_key.<locals>.cmp1r-r&cSst|�t|�Sr
�rdr\rrr�cmp2gsz*TestCmpToKey.test_cmp_to_key.<locals>.cmp2g@�4r'Z35)�
cmp_to_keyr<�
assertGreaterZassertGreaterEqualZ
assertLess�assertLessEqualr)r!rHr�rJrrr�test_cmp_to_key_s

zTestCmpToKey.test_cmp_to_keycCs�dd�}|j|d�}|�|dd�|dd��|�|dd�|dd��|�ttf��|d�dkWd�n1st0Y|�ttf��d|d�kWd�n1s�0Y|�t��|��}Wd�n1s�0Y|�t��|�|d�}Wd�n1�s0Y|�|�}|�t��|�Wd�n1�sT0Y|�t��|dd�Wd�n1�s�0YdS)NcSs||k||kSr
rr\rrrrHpsz4TestCmpToKey.test_cmp_to_key_arguments.<locals>.cmp1��mycmpr-r�r&)rLr<rMrDrEr��r!rHr�rrr�test_cmp_to_key_argumentsos"**&,
&z&TestCmpToKey.test_cmp_to_key_argumentscs�dd�}|�|�}|�t�� |d�|d�kWd�n1sB0YGdd�d���fdd�}|�t�� |d�|d�kWd�n1s�0YdS)NcSst�dSr
�r_r\rrrrH�sz'TestCmpToKey.test_bad_cmp.<locals>.cmp1r-r&c@seZdZdd�ZdS)z)TestCmpToKey.test_bad_cmp.<locals>.BadCmpcSst�dSr
rTr rrr�__lt__�sz0TestCmpToKey.test_bad_cmp.<locals>.BadCmp.__lt__N)rrrrUrrrr�BadCmp�srVcs��Sr
rr\�rVrrrH�s)rLrDr_rRrrWr�test_bad_cmp�s
.zTestCmpToKey.test_bad_cmpcCs*dd�}|j|d�}|�|d�jd�dS)NcSs||k||kSr
rr\rrrrH�sz)TestCmpToKey.test_obj_field.<locals>.cmp1rP�2)rLr<r�rRrrr�test_obj_field�szTestCmpToKey.test_obj_fieldcCs.dd�}|�ttd�|�|�d�gd��dS)NcSs||Sr
rr\rrrrQ�sz)TestCmpToKey.test_sort_int.<locals>.mycmprI�r�)r.r-r'r&r)r<�sortedrmrL)r!rQrrr�
test_sort_int�s�zTestCmpToKey.test_sort_intcCs@dd�}gd�}t||�|�d�}|�dd�|D�gd��dS)NcSs"t|�t|�}}||k||kSr
rIr\rrrrQ�sz-TestCmpToKey.test_sort_int_str.<locals>.mycmp)	rI�3rKr'�0r3r.Z10r&r[cSsg|]}t|��qSrrI)r~r�rrrr��r8z2TestCmpToKey.test_sort_int_str.<locals>.<listcomp>)	rr&r&r'r-r.rIrKr()r\rLr<)r!rQ�valuesrrr�test_sort_int_str�s�zTestCmpToKey.test_sort_int_strcCs<dd�}|�|�}|d�}|�tt|�|�|tjj�dS)NcSs||Sr
rr\rrrrQ�sz%TestCmpToKey.test_hash.<locals>.mycmpr()rLrDrE�hashZassertNotIsInstance�collectionsr��Hashable)r!rQr��krrr�	test_hash�s

zTestCmpToKey.test_hashN)
rrrrOrSrXrZr]rarfrrrrrG]s	rGc@seZdZerejZdS)�
TestCmpToKeyCN)rrrr�rLrrrrrg�srgc@seZdZeej�ZdS)�TestCmpToKeyPyN)rrrr�r�rLrrrrrh�srhc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestTotalOrderingcCs�tjGdd�d��}|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_lt.<locals>.AcSs
||_dSr
�r��r!r�rrrr��sz<TestTotalOrdering.test_total_ordering_lt.<locals>.A.__init__cSs|j|jkSr
rjr rrrrU�sz:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__lt__cSs|j|jkSr
rjr rrr�__eq__�sz:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__eq__N�rrrr�rUrlrrrrr��sr�r&r'�r�total_orderingr:r��r!r�rrr�test_total_ordering_lt�sz(TestTotalOrdering.test_total_ordering_ltcCs�tjGdd�d��}|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_le.<locals>.AcSs
||_dSr
rjrkrrrr��sz<TestTotalOrdering.test_total_ordering_le.<locals>.A.__init__cSs|j|jkSr
rjr rrr�__le__�sz:TestTotalOrdering.test_total_ordering_le.<locals>.A.__le__cSs|j|jkSr
rjr rrrrl�sz:TestTotalOrdering.test_total_ordering_le.<locals>.A.__eq__N)rrrr�rrrlrrrrr��sr�r&r'rnrprrr�test_total_ordering_le�sz(TestTotalOrdering.test_total_ordering_lecCs�tjGdd�d��}|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_gt.<locals>.AcSs
||_dSr
rjrkrrrr��sz<TestTotalOrdering.test_total_ordering_gt.<locals>.A.__init__cSs|j|jkSr
rjr rrr�__gt__�sz:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__gt__cSs|j|jkSr
rjr rrrrl�sz:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__eq__N)rrrr�rtrlrrrrr��sr�r&r'rnrprrr�test_total_ordering_gt�sz(TestTotalOrdering.test_total_ordering_gtcCs�tjGdd�d��}|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3TestTotalOrdering.test_total_ordering_ge.<locals>.AcSs
||_dSr
rjrkrrrr��sz<TestTotalOrdering.test_total_ordering_ge.<locals>.A.__init__cSs|j|jkSr
rjr rrr�__ge__�sz:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__ge__cSs|j|jkSr
rjr rrrrl�sz:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__eq__N)rrrr�rvrlrrrrr��sr�r&r'rnrprrr�test_total_ordering_ge�sz(TestTotalOrdering.test_total_ordering_gecCs�tjGdd�dt��}|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�|�|d�|d�k�dS)Nc@seZdZdS)z=TestTotalOrdering.test_total_ordering_no_overwrite.<locals>.ANrrrrrr�sr�r&r')rrordr:rprrr� test_total_ordering_no_overwritesz2TestTotalOrdering.test_total_ordering_no_overwritecCsB|�t��$tjGdd�d��}Wd�n1s40YdS)Nc@seZdZdS)z7TestTotalOrdering.test_no_operations_defined.<locals>.ANrrrrrr�sr�)rDr8rrorprrr�test_no_operations_definedsz,TestTotalOrdering.test_no_operations_definedc	stjG�fdd�d���tjG�fdd�d���tjG�fdd�d���tjG�fdd�d���tjG�fd	d
�d
���|�d��F|�t���d�d
kWd�n1s�0YWd�n1s�0Y|�d��L|�t�� �d��d�kWd�n1�s0YWd�n1�s60Y|�d��L|�t�� �d
��d
�kWd�n1�s~0YWd�n1�s�0Y|�d��L|�t�� �d��d�kWd�n1�s�0YWd�n1�s0Y|�d��L|�t�� �d��d�kWd�n1�sN0YWd�n1�sn0Y|�d��L|�t�� �d��d�kWd�n1�s�0YWd�n1�s�0Y|�d��L|�t�� �d��d�kWd�n1�s0YWd�n1�s>0Y|�d��L|�t�� �d��d�kWd�n1�s�0YWd�n1�s�0Y|�d��L|�t�� �d��d�kWd�n1�s�0YWd�n1�s0Y|�d��`�d�}�d�}|�||�|�t��||kWd�n1�sj0YWd�n1�s�0Y|�d��`�d �}�d �}|�||�|�t��||kWd�n1�s�0YWd�n1�s0YdS)!Ncs,eZdZdd�Z�fdd�Z�fdd�ZdS)zRTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThancSs
||_dSr
rjrkrrrr�sz[TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__init__cst|��r|j|jkSdSr���
isinstancer�r ��ImplementsLessThanrrrls
zYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__eq__cst|��r|j|jkStSr
�r{r��NotImplementedr r|rrrUs
zYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__lt__N�rrrr�rlrUrr|rrr}sr}cs,eZdZdd�Z�fdd�Z�fdd�ZdS)zUTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThancSs
||_dSr
rjrkrrrr�$sz^TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__init__cst|��r|j|jkSdSr�rzr ��ImplementsGreaterThanrrrl&s
z\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__eq__cst|��r|j|jkStSr
r~r r�rrrt*s
z\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__gt__N)rrrr�rlrtrr�rrr�"sr�cs,eZdZdd�Z�fdd�Z�fdd�ZdS)zYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTocSs
||_dSr
rjrkrrrr�1szbTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__init__cst|��r|j|jkSdSr�rzr ��ImplementsLessThanEqualTorrrl3s
z`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__eq__cst|��r|j|jkStSr
r~r r�rrrr7s
z`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__le__N)rrrr�rlrrrr�rrr�/sr�cs,eZdZdd�Z�fdd�Z�fdd�ZdS)z\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTocSs
||_dSr
rjrkrrrr�>szeTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__init__cst|��r|j|jkSdSr�rzr ��ImplementsGreaterThanEqualTorrrl@s
zcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__eq__cst|��r|j|jkStSr
r~r r�rrrvDs
zcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__ge__N)rrrr�rlrvrr�rrr�<sr�cs(eZdZdd�Z�fdd�Zdd�ZdS)zXTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplementedcSs
||_dSr
rjrkrrrr�KszaTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__init__cst|��r|j|jkSdSr�rzr ��ComparatorNotImplementedrrrlMs
z_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__eq__cSstSr
)rr rrrrUQsz_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__lt__Nr�rr�rrr�Isr�zLT < 1���r&zLT < LErzLT < GTzLE <= LTr'zLE <= GEr-zGT > GEr.zGT > LTrIzGE >= GTr�zGE >= LErKz
GE when equalr�z
LE when equalr�)rror�rDrEr<)r!r+r,r)r�r�r�r}r�r�$test_type_error_when_not_implementedsP
HPPPPPPPPHz6TestTotalOrdering.test_type_error_when_not_implementedc
Csxttjd�D]d}dD]Z}|j||d��8tt|�}t�t�||��}|�||�Wd�q1sf0YqqdS)Nr&)rUrtrrrv)r�r�)	rmr�r�r�rg�Orderable_LTr�r�r�)r!r�r
r�Zmethod_copyrrrr�}s
zTestTotalOrdering.test_picklecs^tjG�fdd�dt���Gdd�d�d�}Gdd�d�d�}|�||k�|�||k�dS)Ncs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)zWTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMetacst��||||�Sr
)�super�__new__)r�r
�bases�ns��	__class__rrr��sz_TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__new__cst|��s
|j|jkSr
�r{rr ��SortableMetarrrU�s
z^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__lt__cst|��s
|j|jkSr
r�r r�rrrl�s
z^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__eq__)rrrr�rUrl�
__classcell__rr�r�rr��sr�c@seZdZdS)zLTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.BNrrrrrr��sr���	metaclassc@seZdZdS)zLTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.ANrrrrrr��sr�)rror�r:r�)r!r�r�rr�r�/test_total_ordering_for_metaclasses_issue_44605�szATestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605N)rrrrqrsrurwrxryr�r�r�rrrrri�sk	ric@s$eZdZdd�Zdd�Zdd�ZdS)r�cCs
||_dSr
rjrkrrrr��szOrderable_LT.__init__cCs|j|jkSr
rjr rrrrU�szOrderable_LT.__lt__cCs|j|jkSr
rjr rrrrl�szOrderable_LT.__eq__Nrmrrrrr��sr�c@seZdZdd�ZdS)�	TestCachec	s�|jj�fdd���|��fdd�td�D�gd��|����|jjddddd�����|����|jjd	d	dd	d��dS)
Ncs$|dkr|S�|d��|d�S�Nr'r&rr=��fibrrr��sz!TestCache.test_cache.<locals>.fibcsg|]}�|��qSrr�r~r.r�rrr��r8z(TestCache.test_cache.<locals>.<listcomp>rb�rr&r&r'r-rIr��
r1�"�7�Y���iyib���hits�misses�maxsize�currsizer)�module�cacher<rm�
cache_info�
_CacheInfo�cache_clearrGrr�r�
test_cache�s�
�
�zTestCache.test_cacheN)rrrr�rrrrr��sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5S)6�TestLRUc
sNdd�}|jjdd�|�}|��\}}}}|�|d�|�|d�|�|d�|�|d�td�}td�D]6}t|�t|�}	}
||	|
�}||	|
�}|�||�qj|��\}}}}|�||k�|�||d�|�|d�|��|��\}}}}|�|d�|�|d�|�|d�||	|
�|��\}}}}|�|d�|�|d�|�|d�|�|j	|�|�	|	|
�|��\}}}}|�|d�|�|d�|�|d�|j�d��fd	d
��}|�|��j
d�d�td�D]}|�|�d��q�|��d�|��\}}}}|�|d�|�|d�|�|d�|j�d��fdd
��}|�|��j
d�d�td�D]}|�|�d��qf|��d�|��\}}}}|�|d�|�|d�|�|d�|j�d
��fdd
��}|�|��j
d
�d�dD]}	|�||	�|	d��q�|��d�|��\}}}}|�|d�|�|d�|�|d
�dS)NcSsd||S�Nr-rr\rrr�orig�szTestLRU.test_lru.<locals>.origr)�r�rrI��r&cs�d7�dS�Nr&r)rr��f_cntrrr^�szTestLRU.test_lru.<locals>.fcs�d7�dSr�rrr�rrr^�sr.r'cs�d7�|dS�Nr&r(rr5r�rrr^	s)rKr�rKr�rKr�r�r�r�r�r�r�r�r�r�rKr(�)r��	lru_cacher�r<rmrr:r�r�r�r�)
r!r�r^r�r�r�r��domainr-r6r]�actualrVrr�r�test_lru�s�





zTestLRU.test_lrucCsz|jjdd��}|�tt|gd���gd��|�|��jd�|�|��jd�|�|��jd�|�|��j	d�dS)NcSs|dS�Nr'rr5rrr�squaresz(TestLRU.test_lru_no_args.<locals>.square)r(r)r()�di�r�r&r'�)
r�r�r<rr>r�r�r�r�r�)r!r�rrr�test_lru_no_argss
�zTestLRU.test_lru_no_argscs~d�|jjdd���fdd���td�D]}|��|�d|�d��q(|����jd�|��d�d	�|����jd�dS)
NTr(r�cs(d|�d�}|dkr$�r$d��|�}|S)N�.r)Fr)r6�rv�r^�oncerrr^.s
z%TestLRU.test_lru_bug_35780.<locals>.f�r�r)z.20.)r�r�rmr<r�r��r!r6rr�r�test_lru_bug_35780%s	zTestLRU.test_lru_bug_35780cCs>|j��dd��}|d�|dii��|�|��jd�dS)NcSsdSr
rr5rrrr^Fsz%TestLRU.test_lru_bug_36650.<locals>.frr&)r)r�r�r<r�r�r`rrr�test_lru_bug_36650@s

zTestLRU.test_lru_bug_36650cCs|jjdd�dd��}tj��}tjjdd�|_tjjdd�|_|�||d�d�|�|jjd�|�|�	�d	�|�||d�d�|�|jjd
�|�|�	�d�|�|dd
�d
�|�|jjd
�|�|�	�d�|�||d�d�|�|jjd�|�|�	�d�dS)Nr&r�cSs|d|Sr�rr\rrrr^Tsz*TestLRU.test_lru_hash_only_once.<locals>.fr�)Zreturn_valuei�rb)rr&r&r&r')r&r&r&r&r�r))r&r'r&r&r-)r&r-r&r&)
r�r�r!ZmockZMock�__mul__�__hash__r<Z
call_countr�)r!r^Zmock_intrrr�test_lru_hash_only_onceNs"

zTestLRU.test_lru_hash_only_oncecCsRtj}z>|j�d�t�t_dD]}|�tdd|��|�qW|t_n|t_0dS)Nr.)
rrr&r'r-r-r.rIr�r&rKr'r&Zabcdefghijklmn)�builtinsr+r�r�r<)r!Zold_lenr-rrr�test_lru_reentrancy_with_lenqsz$TestLRU.test_lru_reentrancy_with_lencCs6t��dd��}|�|dd�d�|�|d�d�dS)NcWs|Sr
r�rrrrr^sz-TestLRU.test_lru_star_arg_handling.<locals>.fr&r'rB)rB)rr�r<r`rrr�test_lru_star_arg_handling}s
z"TestLRU.test_lru_star_arg_handlingcCs�tjdd�dd��}tjdd�dd��}|�t��|g�Wd�n1sP0Y|�t��|g�Wd�n1s�0YdS)Nr�cSsdSr
r��orrr�infinite_cache�sz3TestLRU.test_lru_type_error.<locals>.infinite_cacher(cSsdSr
rr�rrr�
limited_cache�sz2TestLRU.test_lru_type_error.<locals>.limited_cache)rr�rDrE)r!r�r�rrr�test_lru_type_error�s



&zTestLRU.test_lru_type_errorc	s�|jjdd��fdd���|��fdd�td�D�gd��|����|jjddddd	�����|����|jjd
d
dd
d	��dS)Nr�cs$|dkr|S�|d��|d�Sr�rr=r�rrr��sz/TestLRU.test_lru_with_maxsize_none.<locals>.fibcsg|]}�|��qSrrr�r�rrr��r8z6TestLRU.test_lru_with_maxsize_none.<locals>.<listcomp>rbr�r�r�r�r�r�r<rmr�r�r�rGrr�r�test_lru_with_maxsize_none�s�
�
�z"TestLRU.test_lru_with_maxsize_nonec	sj|jjdd�dd���dD]*}|��fdd�td�D�ttd���q|����|jjd	d
d	d	d��dS)Ni����r�cSs|Sr
rr=rrr�eq�sz2TestLRU.test_lru_with_maxsize_negative.<locals>.eqrTcsg|]}�|��qSrrr��r�rrr��r8z:TestLRU.test_lru_with_maxsize_negative.<locals>.<listcomp>�ri,r�)r�r�r<rmrr�r�r?rr�r�test_lru_with_maxsize_negative�s
(
�z&TestLRU.test_lru_with_maxsize_negativec	Cs�dD]�}|j�|�dd��}|�|d�d�|�t��}|d�Wd�n1sT0Y|�|jj�|�t��|d�Wd�q1s�0YqdS)N�Nr�cSsd|S)Nr�r�r-rrrr�sz.TestLRU.test_lru_with_exceptions.<locals>.funcrr+r�)r�r�r<rDr��assertIsNone�	exception�__context__)r!r�r�cmrrr�test_lru_with_exceptions�s

&z TestLRU.test_lru_with_exceptionscCs�dD]�}|jj|dd�dd��}|�|d�d�|�t|d��td��|�|d�d	�|�t|d��td	��|�|dd
�d�|�t|dd
��td��|�|dd
�d	�|�t|dd
��td	��|�|��jd�|�|��jd�qdS)Nr�T�r��typedcSs||Sr
rr5rrrr��sz+TestLRU.test_lru_with_types.<locals>.squarer-r�g@g"@r5r.)r�r�r<r�r�r�r�)r!r�r�rrr�test_lru_with_types�s
zTestLRU.test_lru_with_typesc	s�|j���fdd���|��fdd�td�D�gd��|����|jjddddd	�����|����|jjd
d
dd
d	��dS)Ncs(|dkr|S�|dd��|dd�S�Nr'r&r=rr=r�rrr��sz/TestLRU.test_lru_with_keyword_args.<locals>.fibcsg|]}�|d��qS�r=r�r~�numberr�rrr��r8z6TestLRU.test_lru_with_keyword_args.<locals>.<listcomp>rbr�r�r�r�rr�rGrr�r�test_lru_with_keyword_args�s�
�
�z"TestLRU.test_lru_with_keyword_argsc	s�|jjdd��fdd���|��fdd�td�D�gd��|����|jjddddd	�����|����|jjd
d
dd
d	��dS)Nr�cs(|dkr|S�|dd��|dd�Sr�rr=r�rrr��sz<TestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.fibcsg|]}�|d��qSr�rr�r�rrr��r8zCTestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.<listcomp>rbr�r�r�rr�rGrr�r�'test_lru_with_keyword_args_maxsize_none�s�
�
�z/TestLRU.test_lru_with_keyword_args_maxsize_nonec	Csj|jjdd�dd��}|�|ddd�dd	g�|�|ddd
�d	dg�|�|��|jjddddd��dS)
Nr(r�c[st|���Sr
)r�items)r�rrrr^�sz$TestLRU.test_kwargs_order.<locals>.fr&r'r*)r+r&)r,r')r,r+rr�)r�r�r<r�r�r`rrr�test_kwargs_order�s

�zTestLRU.test_kwargs_ordercCsFdd�dd�}|j��|�}|jjD]}|�t||�t||��q$dS)NZzomg_annotation�ZzomgcSsdS)zf doc stringr2rr�rrrr^�sz,TestLRU.test_lru_cache_decoration.<locals>.f)r�r�rr<rg)r!r^�gr�rrr�test_lru_cache_decoration�sz!TestLRU.test_lru_cache_decorationc		s�d\}�dd���jj|�d�������\}}}}��|d�t��������fdd�����fdd	�}t��}t�	d
��z$�fdd�t
|�D�}t�|�����Wd�n1s�0Y���\}}}}�jt
u�r
��||���|�||�n ��||���|�||���||�tj|d
�g}|�fdd�t
|�D�7}���t�|�����Wd�n1�s�0YWt�	|�nt�	|�0dS)N)rI�cSsd||Sr�rr\rrrr�sz-TestLRU.test_lru_cache_threaded.<locals>.origr�rcs4��d�t��D]}���|d��|d��qdS)Nr(r)�waitrmr<)rer')r^�mr�r!�startrr�full	s
z-TestLRU.test_lru_cache_threaded.<locals>.fullcs(��d�td��D]}���qdS)Nr(r')r�rmr�)r')r^r�r�rr�clears
z.TestLRU.test_lru_cache_threaded.<locals>.clear���ư>csg|]}tj�|gd��qS�)�targetr��	threading�Thread�r~re�r�rrr�s�z3TestLRU.test_lru_cache_threaded.<locals>.<listcomp>�r�csg|]}tj�|gd��qSr�r�r�rrrr�(s�)r�r�r�r<r��Eventr�getswitchintervalr�setswitchintervalrm�
start_threads�setr�rNr�r�)	r!r.r�r�r�r�r��orig_si�threadsr)r^r�r�r�r!r�r�test_lru_cache_threadeds>

�&�*zTestLRU.test_lru_cache_threadedc
s2d\}�t�|d��t�|d��t�|d���jj�|d��fdd��������dd�|df������fdd���fd	d
�t|�D�}t�|��|t��D]b}��	d���
���	d���
���	d���
������d|d|�||df�q�Wd�n1�s$0YdS)N)rIrKr&r�cs��d�d|S�Nr(r-)r�r5)�pauserrr^6s
z+TestLRU.test_lru_cache_threaded2.<locals>.frcs:t��D],}��d����|�d|���d�qdSr
)rmr�r<r�)r^r�r!r��stoprr�test;s
z.TestLRU.test_lru_cache_threaded2.<locals>.testcsg|]}tj�d��qS)rr�r��r
rrr�@r8z4TestLRU.test_lru_cache_threaded2.<locals>.<listcomp>r()r��Barrierr�r�r<r�rmrrr��reset)r!r.rr-r)r^r�rr!r�rr
r�test_lru_cache_threaded20s$


z TestLRU.test_lru_cache_threaded2csl�jjdd�dd�����fdd���fdd�tgd	��D�}t�|��Wd�n1s^0YdS)
Nr'r�cSst�d�d|S)Ng{�G�z�?r-)�time�sleepr5rrrr^Ls
z+TestLRU.test_lru_cache_threaded3.<locals>.fcsF�j|d��&���|�d||�Wd�n1s80YdS)N)�threadr-)r�r<)r-r6)r^r!rrr
Psz.TestLRU.test_lru_cache_threaded3.<locals>.testcs"g|]\}}tj�||fd��qSr�r�)r~r-�vrrrr�Ss�z4TestLRU.test_lru_cache_threaded3.<locals>.<listcomp>)r&r'r'r-r')r�r��	enumeraterr)r!rr)r^r!r
r�test_lru_cache_threaded3Ks


�z TestLRU.test_lru_cache_threaded3cs^|jjdd�dd���G��fdd�d����d����d��|���d���d��dS)	Nr(r�cSs|S)zEUsed to demonstrate a reentrant lru_cache call within a single threadrr5rrr�	test_func[sz.TestLRU.test_need_for_rlock.<locals>.test_funccs.eZdZdZdd�Zdd�Z��fdd�ZdS)	z-TestLRU.test_need_for_rlock.<locals>.DoubleEqz=Demonstrate a reentrant lru_cache call within a single threadcSs
||_dSr
r5r�rrrr�bsz6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__init__cSs|jSr
r5rGrrrr�dsz6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__hash__cs"|jdkr��d��|j|jkSr�r5r ��DoubleEqrrrrlfs
z4TestLRU.test_need_for_rlock.<locals>.DoubleEq.__eq__N)rrrrr�r�rlrrrrr`srr&r')r�r�r<rGrrr�test_need_for_rlockXs
�zTestLRU.test_need_for_rlockcstG�fdd�dt�}|d�}|d�}|d�}��|j��d�dD]}��|�|�|dd�qB��|j|j|jfd���|j��d	�d
D]}��|�|�|dd�q���|j|j|jfd���|j��d�d
D]}��|�|�|dd�qވ�|j|j|jfd���|j��d���|j��|j�����|j��|j�����|j��|j���dS)Ncs$eZdZdZ�j�d�dd��ZdS)z"TestLRU.test_lru_method.<locals>.Xrr'cSs|jd7_|d|Sr�r�r�rrrr^ssz$TestLRU.test_lru_method.<locals>.X.fN)rrrr�r�r�r^rrGrr�Xqs
rrIrK)rrr'r)
r&r'r'r-r&r&r&r'r-r-r()r�rr)r.r�r'r')
r&r'r&r&r&r&r-r'r'r')r�r.r)r(r(r'r')
r'r&r&r&r&r'r&r-r'r&)r�r.rI)r�r�r'r')rdr<r^r�r�)r!rr+r,r2r6rrGr�test_lru_methodps(zTestLRU.test_lru_methodc
Cs�|j}|jd|j|jfD]d}ttjd�D]P}|j||d��.t�t�	||��}|�
||�Wd�q,1sr0Yq,qdS)Nrr&)r�r)r��cached_func�cached_meth�cached_staticmethrmr�r�r�r�r�r�)r!r�r^r�r�rrrr��szTestLRU.test_picklec	Cs�|j}dd�}|j�|d�}|jd|j|j|j�d�|�f}|D]F}|j|d��&t�|�}|�	||�Wd�qB1s~0YqBdS)NcSsd||Sr�rr\rrrr��szTestLRU.test_copy.<locals>.origr'r�r)
r�r�r9rrr r�r�r�r��r!r�r�rZfuncsr^r�rrrr��s�
zTestLRU.test_copyc	Cs�|j}dd�}|j�|d�}|jd|j|j|j�d�|�f}|D]F}|j|d��&t�	|�}|�
||�Wd�qB1s~0YqBdS)NcSsd||Sr�rr\rrrr��sz#TestLRU.test_deepcopy.<locals>.origr'rr!)r�r�r9rrr r�r�r�r�r�r"rrrr��s�
zTestLRU.test_deepcopycCs^|jjdd�dd��}|�|��ddd��|jjddd�d	d��}|�|��ddd��dS)
Nr'r�cSsdS�Nr&rrrrrr^�sz,TestLRU.test_lru_cache_parameters.<locals>.fFr�r�TcSsdSr#rrrrrr^�s)r�r�r<�cache_parametersr`rrr�test_lru_cache_parameters�s

z!TestLRU.test_lru_cache_parameterscs~�jjdd��}G�fdd�d�}t�|�t�|j�t�|j�g}|D]}��|��qF~~t��|D]}��	|��qhdS)NcSs|Sr
rr5rrr�
test_function�sz9TestLRU.test_lru_cache_weakrefable.<locals>.test_functioncs4eZdZ�jjdd��Ze�jj�fdd���ZdS)z-TestLRU.test_lru_cache_weakrefable.<locals>.AcSs||fSr
rr�rrr�test_method�sz9TestLRU.test_lru_cache_weakrefable.<locals>.A.test_methodcs�|fSr
rr5rGrr�test_staticmethod�sz?TestLRU.test_lru_cache_weakrefable.<locals>.A.test_staticmethodN)rrrr�r�r'r�r(rrGrrr��s

r�)
r�r��weakref�refr'r(ZassertIsNotNone�gcZcollectr�)r!r&r�Zrefsr*rrGr�test_lru_cache_weakrefable�s



�z"TestLRU.test_lru_cache_weakrefableN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	rrrrr�r�r�r%r,rrrrr��s4Y#		
0
r�cCsd||Sr�rr\rrr�py_cached_func�sr-cCsd||Sr�rr\rrr�
c_cached_func�sr.c@s:eZdZeZefZe��dd��Ze	e��dd���Z
dS)�	TestLRUPycCsd||Sr�rr�rrrr�szTestLRUPy.cached_methcCsd||Sr�rr\rrrr �szTestLRUPy.cached_staticmethN)rrrr�r�r-rr�rr�r rrrrr/�s
r/c@s:eZdZeZefZe��dd��Ze	e��dd���Z
dS)�TestLRUCcCsd||Sr�rr�rrrr�szTestLRUC.cached_methcCsd||Sr�rr\rrrr �szTestLRUC.cached_staticmethN)rrrr�r�r.rr�rr�r rrrrr0�s
r0c@s�eZdZdd�Zdd�Zdd�Zdd�Ze�e	d	�e
jd
d���Zdd
�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Z d4d5�Z!d6d7�Z"d8S)9�TestSingleDispatchcCsZtjdd��}dd�}|�t|�|�|d�d�|�|d�d�|�|gd	��d�dS)
NcSsdS�Nrcrr�rrrr��sz3TestSingleDispatch.test_simple_overloads.<locals>.gcSsdS)N�integerrr�rrr�g_intsz7TestSingleDispatch.test_simple_overloads.<locals>.g_intrlrcr&r3�r&r'r-)r�singledispatch�registerrdr<�r!r�r4rrr�test_simple_overloads�s
z(TestSingleDispatch.test_simple_overloadscCs�tjdd��}Gdd�d�}Gdd�d|�}Gdd�d|�}Gd	d
�d
||�}dd�}d
d�}|�||�|�||�|�||��d�|�||��d�|�||��d�|�||��d�dS)NcSsdSr2rr�rrrr�
sz&TestSingleDispatch.test_mro.<locals>.gc@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.ANrrrrrr�
sr�c@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.CNrrrrr�Csr:c@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.BNrrrrrr�sr�c@seZdZdS)z&TestSingleDispatch.test_mro.<locals>.DNrrrrr�Dsr;cSsdS)Nr�rrJrrr�g_Asz(TestSingleDispatch.test_mro.<locals>.g_AcSsdS)Nr�rrLrrr�g_Bsz(TestSingleDispatch.test_mro.<locals>.g_B)rr6r7r<)r!r�r�r:r�r;r<r=rrr�test_mro	s
zTestSingleDispatch.test_mrocCsntjdd��}|�t�dd��}|�|d�d�|�|d�d�|�|�t�|�|�|�t�|�t��dS)	NcSsdSr2rr�rrrr�!sz5TestSingleDispatch.test_register_decorator.<locals>.gcSs
d|fS)Nzint %srr�rrrr4$sz9TestSingleDispatch.test_register_decorator.<locals>.g_intrjrcr�zint 12)	rr6r7rdr<r��dispatchr�rlr8rrr�test_register_decorator s

z*TestSingleDispatch.test_register_decoratorcCs:tjdd��}|�|jd�tjjdkr6|�|jd�dS)NcSsdS)�Simple testZTestrr�rrrr�/sz6TestSingleDispatch.test_wrapping_attributes.<locals>.gr�r'rA)rr6r<rrr#r$r)r!r�rrr�test_wrapping_attributes.s

z+TestSingleDispatch.test_wrapping_attributeszrequires _decimalcCs�tjdd��}|�tj�dd��}t�d�}t�d�}|�||�d�|�||�d�|�tj�d	d��}|�||�d
�|�||�d�dS)NcSsdSr2rr�rrrr�:sz,TestSingleDispatch.test_c_classes.<locals>.gcSs|jSr
r�r�rrrr'=sz,TestSingleDispatch.test_c_classes.<locals>._�Exponent < Emin�Number got rounded)rC)rDcSsdS)N�Too small to care.rr�rrrr'DsrE)rr6r7r	ZDecimalExceptionZ	SubnormalZRoundedr<)r!r�r'�subnZrndrrr�test_c_classes7s






z!TestSingleDispatch.test_c_classescCs�tj}tj}|j|j|j|jg}t|�D]6}|t	|�}|�
|t	|j|j|j|j|j
|jtg�q(|j|j|jtjg}t|�D]:}|tj|�}|�
|tj|j|j|j|j|j
|jtg�q||j|jtg}t|�D]6}|tj|j|jtg�}|�
|tjt	|j|jtg�q�Gdd�dtj�}|j�|�|j|jg}t|�D]J}|||�}|�
|||j|j|jtjt	|j|j|j|j|j
|jtg
��q8Gdd�dtj�}|j|j|j|jg}t|�D]>}|||�}|�
|||jtjt	|j|j|j|j
|jtg
��q�dS)Nc@seZdZdS)z.TestSingleDispatch.test_compose_mro.<locals>.DNrrrrrr;hsr;c@seZdZdd�ZdS)z.TestSingleDispatch.test_compose_mro.<locals>.CcSsdSr
rrGrrr�__call__wsz7TestSingleDispatch.test_compose_mro.<locals>.C.__call__N�rrrrHrrrrr:vsr:)rcr�r�_compose_mro�Sequence�MutableMapping�Mapping�Setrr=r<�
Collection�Sized�Iterable�	Containerr��OrderedDict�ChainMaprl�defaultdict�MutableSequencer7�
Reversible�Callable)r!r2�mror�Zhaystackr�r;r:rrr�test_compose_mroJsP
���
�

�z#TestSingleDispatch.test_compose_mrocCs~tj}ddi}gd�}t�dh}t|�}d}tjdd��}|�||�d�|�||�d�|�||�d�|�||�d�|�||�d�|�|jdd��|�||�d	�|�||�d	�|�||�d	�|�||�d	�|�||�d	�|�|j	d
d��|�||�d�|�||�d	�|�||�d	�|�||�d	�|�||�d	�|�tj
dd��|�||�d�|�||�d	�|�||�d	�|�||�d	�|�||�d	�|�|jd
d��|�||�d�|�||�d�|�||�d	�|�||�d	�|�||�d	�|�|jdd��|�||�d�|�||�d�|�||�d�|�||�d	�|�||�d	�|�|j
dd��|�||�d�|�||�d�|�||�d�|�||�d	�|�||�d	�|�|jdd��|�||�d�|�||�d�|�||�d�|�||�d	�|�||�d�|�|jdd��|�||�d�|�||�d�|�||�d�|�||�d�|�||�d�|�tdd��|�||�d�|�||�d�|�||�d�|�||�d�|�||�d�|�tdd��|�||�d�|�||�d�|�||�d�|�||�d�|�||�d�|�tdd��|�||�d�|�||�d�|�||�d�|�||�d�|�||�d�|�tdd��|�||�d�|�||�d�|�||�d�|�||�d�|�||�d�|�tdd��|�||�d�|�||�d�|�||�d�|�||�d�|�||�d�dS) Nr+r,r5cSsdSr2rr�rrrr��sz/TestSingleDispatch.test_register_abc.<locals>.grccSsdS�N�sizedrr�rrrr7�r8z6TestSingleDispatch.test_register_abc.<locals>.<lambda>r\cSsdS�N�mutablemappingrr�rrrr7�r8r^cSsdS)NZchainmaprr�rrrr7�r8cSsdS)N�mutablesequencerr�rrrr7�r8r_cSsdS)N�
mutablesetrr�rrrr7�r8r`cSsdS�N�mappingrr�rrrr7�r8cSsdS�N�sequencerr�rrrr7�r8rdcSsdS�Nrrr�rrrr7�r8rcSsdS�Nr=rr�rrrr7�r8r=cSsdS�Nrrr�rrrr7�r8rcSsdS)N�concrete-setrr�rrrr7�r8rhcSsdS)N�
frozen-setrr�rrrr7�r8ricSsdS)Nr�rr�rrrr7�r8r�)rcr�r��	frozensetrr6r<r7rPrLrTrV�
MutableSetrMrKrNr=rrr�)r!r2rM�lr�r^�tr�rrr�test_register_abc�s�

z$TestSingleDispatch.test_register_abcc	Cs�tj}tj}Gdd�dt�}Gdd�d|�}|jjGdd�dt��}Gdd�dt�}Gd	d
�d
|||�}||j|||j||j|tg	}t	|j|j|jg�D]}	|�
|||	d�|�q�|j|j|j|j|jg}
|�
|||
d�|�dS)Nc@seZdZdS)z)TestSingleDispatch.test_c3_abc.<locals>.ANrrrrrr��sr�c@seZdZdd�ZdS)z)TestSingleDispatch.test_c3_abc.<locals>.BcSsdSr>rrGrrrr��sz1TestSingleDispatch.test_c3_abc.<locals>.B.__len__N�rrrr�rrrrr��sr�c@seZdZdS)z)TestSingleDispatch.test_c3_abc.<locals>.CNrrrrrr:�sr:c@seZdZdS)z)TestSingleDispatch.test_c3_abc.<locals>.DNrrrrrr;�sr;c@seZdZdd�ZdS)z)TestSingleDispatch.test_c3_abc.<locals>.XcSsdSr
rrGrrrrH�sz2TestSingleDispatch.test_c3_abc.<locals>.X.__call__NrIrrrrr�sr)�abcs)
rcr�r�_c3_mror�rRr7rXrPrr<rMrQ)r!r2rYr�r�r:r;rrVrpZ	many_abcsrrr�test_c3_abc�szTestSingleDispatch.test_c3_abccCslGdd�dt�}Gdd�d|d�}Gdd�d|�}tjdd	��}|�|�d
d��}|�}|�||�d�dS)
Nc@seZdZdd�ZdS)z1TestSingleDispatch.test_false_meta.<locals>.MetaAcSsdSr>rrGrrrr��sz9TestSingleDispatch.test_false_meta.<locals>.MetaA.__len__Nrorrrr�MetaA�srsc@seZdZdS)z-TestSingleDispatch.test_false_meta.<locals>.ANrrrrrr��sr�r�c@seZdZdS)z.TestSingleDispatch.test_false_meta.<locals>.AANrrrrr�AA�srtcSsdS)Nzbase ArrJrrr�fun�sz/TestSingleDispatch.test_false_meta.<locals>.funcSsdS)N�fun ArrJrrrr'sz-TestSingleDispatch.test_false_meta.<locals>._rv)r�rr6r7r<)r!rsr�rtrur'�aarrr�test_false_meta�s

z"TestSingleDispatch.test_false_metacCstj}tjdd��}Gdd�d|j�}|�}|�||�d�|�|jdd��|�|jdd��|�|jd	d��|�|j	d
d��|�||�d�|j�|�|�||�d�|j�|�|�||�d�|j	�|�|�||�d�Gd
d�d�}|�}|�||�d�|j�|�|�||�d�|j�|�|�
t��}||�Wd�n1�s^0Y|�t
|j�d�Gdd�d|j�}|�}	|�||	�d�|j�|�|�||	�d�|j	�|�|�||	�d�tjdd��}
|
�|j�dd��}|
�|j�dd��}|�
t��"}|
t�dd���Wd�n1�sD0Y|�t
|j�d�Gdd�dtj�}
|j�|
�tjdd��}|�|j�dd��}|�|j�dd��}|
�}|�||�d �Gd!d"�d"�}Gd#d$�d$||j�}|�}|�|
|�d�|j�|�|�|
|�d�Gd%d&�d&�}|�}|�|
|�d�|j�|�|�
t��}|
|�Wd�n1�sx0Y|�t
|j�d�Gd'd(�d(|j|�}tjd)d*��}|�|�d+d��}|�|j�d,d��}|�}|�||�d-�|j�|�|�||�d.�dS)/NcSsdSr2r��argrrrr�	sz0TestSingleDispatch.test_mro_conflicts.<locals>.gc@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.OcSsdSr>rrGrrrr�
sz8TestSingleDispatch.test_mro_conflicts.<locals>.O.__len__Nrorrrr�Osr{rccSsdS)N�iterablerryrrrr7r8z7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>cSsdS�N�	containerrryrrrr7r8cSsdSr[rryrrrr7r8cSsdSrerryrrrr7r8r\rc@seZdZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.PNrrrrr�Psrr|)z]Ambiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Iterable'>z]Ambiguous dispatch: <class 'collections.abc.Iterable'> or <class 'collections.abc.Container'>c@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.QcSsdSr>rrGrrrr�.sz8TestSingleDispatch.test_mro_conflicts.<locals>.Q.__len__Nrorrrr�Q-sr�cSsdSr2rryrrr�h7sz0TestSingleDispatch.test_mro_conflicts.<locals>.hcSsdSr[rryrrrr':sz0TestSingleDispatch.test_mro_conflicts.<locals>._cSsdSr}rryrrrr'=scSsdSr>rrrrrr7Er8)zZAmbiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Sized'>zZAmbiguous dispatch: <class 'collections.abc.Sized'> or <class 'collections.abc.Container'>c@seZdZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.RNrrrrr�RMsr�cSsdSr2rryrrrr-Psz0TestSingleDispatch.test_mro_conflicts.<locals>.icSsdSrarryrrrr'SscSsdSrcrryrrrr'Vsrdc@seZdZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.SNrrrrr�S[sr�c@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.TcSsdSr>rrGrrrr�^sz8TestSingleDispatch.test_mro_conflicts.<locals>.T.__len__Nrorrrr�T]sr�c@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.UcSsdSr>rrGrrrr�esz8TestSingleDispatch.test_mro_conflicts.<locals>.U.__len__Nrorrrr�Udsr�c@seZdZdd�ZdS)z0TestSingleDispatch.test_mro_conflicts.<locals>.VcSsdSr>rrGrrrr�vsz8TestSingleDispatch.test_mro_conflicts.<locals>.V.__len__Nrorrrr�Vusr�cSsdSr2rryrrr�jxsz0TestSingleDispatch.test_mro_conflicts.<locals>.jcSsdS)Nr�rryrrrr'{scSsdSr}rryrrrr'~sr�r~)rcr�rr6rPr<r7rQrRrNrDr5r�rlr�rUrVrL)r!r2r�r{r�rr@Zre_oner��qr�r'Zre_twor�r-r�r�r�rmr��uZre_threer�r�rrrr�test_mro_conflictss�
(�




2�




(�



z%TestSingleDispatch.test_mro_conflictscs^ddlm}ddl}G�fdd�d|�����t�|d�fdd����tj}tjdd	��}i}g}|�t	��d�|�||�d
�|�t	��d�|��j
g�|��jtg�|��j
t|jt�|�||�d
�|�t	��d�|��j
g�|��jttg�|��j
t|jt�|��j
t|jt�|��j
t�j
t�|�||�d
�|�||�d
�|��j
ttg�|��jttg�|�td
d��|��j
ttg�|�t	��d�|�||�d
�|�t	��d�|��j
ttg�|��jtttg�|��j
tt�t|j��|�||�d�|�t	��d�|��j
ttg�|��jttttg�|��j
tt�t|j��Gdd�d�}|j�|�|�||�d
�|�||�d�|��j
ttttg�|��jttttg�|�|jdd��|�t	��d�|�||�d�|�t	��d�|��j
ttttg�|��jtttttg�|�||�d�|�t	��d�|��j
ttttg�|��jttttttg�|�||�d�|�||�d�|��j
ttttttg�|��jttttttg�|�t�|�t�|��j
ttttttttg�|��jttttttg�|j�|�|�t	��d�|�||�d�|�t	��d�|�|jdd��|�t	��d�|�||�d�|�t	��d�|�||�d�|�t	��d�|�tdd��|�||�d�|�||�d�|��|�t	��d�Wd�n1�sP0YdS)Nr)�UserDictcs6eZdZ��fdd�Zdd�Zdd�Zdd�Z�ZS)	z?TestSingleDispatch.test_cache_invalidation.<locals>.TracingDictcs&t�|�j|i|��g|_g|_dSr
)r�r��set_ops�get_ops)r!rr�)�TracingDictr�rrr��szHTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__init__cSs|j|}|j�|�|Sr
)ror�r,)r!r��resultrrrr��s
zKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__getitem__cSs|j�|�||j|<dSr
)r�r,ro)r!r�r�rrr�__setitem__�szKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__setitem__cSs|j��dSr
)ror�rGrrrr��szETestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.clear)rrrr�r�r�r�r�r)r�r�rr��sr��WeakKeyDictionarycs�Sr
rr)�tdrrr7�r8z<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>cSsdSr2rryrrrr��sz5TestSingleDispatch.test_cache_invalidation.<locals>.grcr&r'cSsdSrgrryrrrr7�r8rc@seZdZdS)z5TestSingleDispatch.test_cache_invalidation.<locals>.XNrrrrrr�srcSsdSr[rryrrrr7�r8r\cSsdSr]rryrrrr7�r8r^cSsdSrfrryrrrr7�r8r=)rcr�r)rZ	swap_attrr�rr6r<r+r�r�r=ro�registryr�rr7�
_find_implrLrPr?rk�_clear_cache)r!r�r)r2r�rMrlrr)r�r�r�test_cache_invalidation�s�
��

�z*TestSingleDispatch.test_cache_invalidationcCs�tjdd��}|jtjjd�dd��}|jdd�dd��}|�|d�d�|�|d	d
i�d�|�|gd��d
�|�|d�d
�|�|d�d
�|�t�Gdd�d��}|�|d�d�dS)NcSsdSr2rryrrrr-�sz.TestSingleDispatch.test_annotations.<locals>.irycSsdSrarryrrrr'�s�.TestSingleDispatch.test_annotations.<locals>._zcollections.abc.SequencecSsdSrcrryrrrr'�srcr+r&rbr5rdrlc@seZdZdd�Zdd�ZdS)r�cSs
||_dSr
ry�r!rzrrrr�	sz7TestSingleDispatch.test_annotations.<locals>._.__init__cSs
|j|kSr
ryr rrrrl	sz5TestSingleDispatch.test_annotations.<locals>._.__eq__N)rrrr�rlrrrrr'�sr')rr6r7rcr�rMr<rl)r!r-r'rrr�test_annotations�s
z#TestSingleDispatch.test_annotationscCs�Gdd�d�}|�}|�d�|�|jd�|�}|�t|d��|�d�|�|jd�|�}|�t|d��|�d�|�|jd	�|�}|�t|d��dS)
Nc@s>eZdZejdd��Ze�e�dd��Ze�e	�dd��ZdS)z2TestSingleDispatch.test_method_register.<locals>.AcSs
d|_dSr2ryr�rrrrm
	sz4TestSingleDispatch.test_method_register.<locals>.A.tcSs
d|_dS�Nrdryr�rrrr'
	sz4TestSingleDispatch.test_method_register.<locals>.A._cSs
d|_dS�Nrlryr�rrrr'	sN�
rrrr�singledispatchmethodrmr7rdr'rlrrrrr�		s

r�rrdrzrjrl�rc)rmr<rzr�r�)r!r�r+rwrrr�test_method_register	s



z'TestSingleDispatch.test_method_registercCsJGdd�d�}|�}|�|�d��|�|�d��|�|�d�d�dS)Nc@sJeZdZejedd���Ze�e�edd���Z	e�e
�edd���Z	dS)z8TestSingleDispatch.test_staticmethod_register.<locals>.AcSs|Sr
rryrrrrm$	sz:TestSingleDispatch.test_staticmethod_register.<locals>.A.tcSs
t|t�Sr
�r{rdryrrrr'(	sz:TestSingleDispatch.test_staticmethod_register.<locals>.A._cSs
t|t�Sr
�r{rlryrrrr',	sN�rrrrr�r�rmr7rdr'rlrrrrr�#	sr�rrjr��r:rmr<�r!r�r+rrr�test_staticmethod_register"	s

z-TestSingleDispatch.test_staticmethod_registercCsNGdd�d�}|�|�d�jd�|�|�d�jd�|�|�d�jd�dS)	Nc@sReZdZdd�Zejedd���Ze�e	�edd���Z
e�e�edd���Z
dS)	z7TestSingleDispatch.test_classmethod_register.<locals>.AcSs
||_dSr
ryr�rrrr�8	sz@TestSingleDispatch.test_classmethod_register.<locals>.A.__init__cSs|d�Sr2r�r�rzrrrrm;	sz9TestSingleDispatch.test_classmethod_register.<locals>.A.tcSs|d�Sr�rr�rrrr'?	sz9TestSingleDispatch.test_classmethod_register.<locals>.A._cSs|d�Sr�rr�rrrr'C	sN�rrrr�rr�r�rmr7rdr'rlrrrrr�7	sr�rrdrjrlr�rc�r<rmrzrprrr�test_classmethod_register6	sz,TestSingleDispatch.test_classmethod_registercCs~Gdd�d�}|j�t�tdd���}|j�t�tdd���}|�|�d�jd�|�|�d�jd	�|�|�d
�jd�dS)Nc@s&eZdZdd�Zejedd���ZdS)z4TestSingleDispatch.test_callable_register.<locals>.AcSs
||_dSr
ryr�rrrr�N	sz=TestSingleDispatch.test_callable_register.<locals>.A.__init__cSs|d�Sr2rr�rrrrmQ	sz6TestSingleDispatch.test_callable_register.<locals>.A.tN)rrrr�rr�r�rmrrrrr�M	sr�cSs|d�Sr�rr�rrrr'V	sz4TestSingleDispatch.test_callable_register.<locals>._cSs|d�Sr�rr�rrrr'Z	srrdrjrlr�rc)rmr7rdr�rlr<rz)r!r�r'rrr�test_callable_registerL	s	

z)TestSingleDispatch.test_callable_registercCshGdd�dtjd�}|�|jj�|�|jdj�|�t��|�Wd�n1sZ0YdS)Nc@s eZdZejejdd���ZdS)zATestSingleDispatch.test_abstractmethod_register.<locals>.AbstractcSsdSr
rr�rrrr�f	szETestSingleDispatch.test_abstractmethod_register.<locals>.Abstract.addN)rrrrr�r�r�r�rrrrr�d	sr�r�r�)r�r�r:r�r�rrDrE)r!r�rrr�test_abstractmethod_registerc	s
z/TestSingleDispatch.test_abstractmethod_registercCsNGdd�d�}|�}|�|�d�d�|�|�d�d�|�|�d�d�dS)	Nc@sBeZdZejdd��Zejed�dd��Zeje	d�dd��ZdS)z4TestSingleDispatch.test_type_ann_register.<locals>.AcSsdSr2rr�rrrrms	sz6TestSingleDispatch.test_type_ann_register.<locals>.A.trycSsdSr�rr�rrrr'v	sz6TestSingleDispatch.test_type_ann_register.<locals>.A._cSsdSr�rr�rrrr'y	sNr�rrrrr�r	s
r�rrdrjrlr�rc)r<rmr�rrr�test_type_ann_registerq	s

z)TestSingleDispatch.test_type_ann_registercCsJGdd�d�}|�}|�|�d��|�|�d��|�|�d�d�dS)Nc@sNeZdZejedd���Zejeed�dd���Z	ejee
d�dd���Z	dS)zATestSingleDispatch.test_staticmethod_type_ann_register.<locals>.AcSs|Sr
rryrrrrm�	szCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A.trycSs
t|t�Sr
r�ryrrrr'�	szCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A._cSs
t|t�Sr
r�ryrrrr'�	sNr�rrrrr��	sr�rrjr�r�r�rrr�#test_staticmethod_type_ann_register�	s

z6TestSingleDispatch.test_staticmethod_type_ann_registercCsNGdd�d�}|�|�d�jd�|�|�d�jd�|�|�d�jd�dS)	Nc@sVeZdZdd�Zejedd���Zejee	d�dd���Z
ejeed�dd���Z
d	S)
z@TestSingleDispatch.test_classmethod_type_ann_register.<locals>.AcSs
||_dSr
ryr�rrrr��	szITestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.__init__cSs|d�Sr2rr�rrrrm�	szBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.trycSs|d�Sr�rr�rrrr'�	szBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A._cSs|d�Sr�rr�rrrr'�	sNr�rrrrr��	sr�rrdrjrlr�rcr�rprrr�"test_classmethod_type_ann_register�	sz5TestSingleDispatch.test_classmethod_type_ann_registerc	Cs�Gdd�d�}|j|�j|j|�j|j|�jfD]P}|j|d��0|�|jd�|�|jdt�Wd�q01sv0Yq0|�|jjd�|�|�jjd�|�|jjd�|�|�jjd�|�|jjd�|�|�jjd�dS)	Nc@sVeZdZejeed�dd��Zejeeed�dd���Z	eje
eed�dd���ZdS)	z=TestSingleDispatch.test_method_wrapping_attributes.<locals>.A�rz�returncSst|�S��My function docstring�rlr�rrrr�	szBTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.funccSst|�Sr�r�r�rrr�cls_func�	szFTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.cls_funccSst|�Sr�r�ryrrr�static_func�	szITestSingleDispatch.test_method_wrapping_attributes.<locals>.A.static_funcN)rrrrr�rdrlrr�r�r�r�rrrrr��	sr���methr�rzrr�r�)	rr�r�r�r<rr
rdr)r!r�r�rrr�test_method_wrapping_attributes�	s"�2z2TestSingleDispatch.test_method_wrapping_attributesc	s�dd��G�fdd�d�}G�fdd�d�}|�d��}|}Wd�n1sP0Y|�d��}|}Wd�n1s~0Y|�||�|�|d�|�|�d�|�d��|�|�d�d�d	D]n}|j|d
��L|�t||�jt||�j�|�t|�|�jt|�|�j�Wd�q�1�s20Yq�|j|�j|j|�jfD]T}|j|d��0|�|jd�|�|jd
t�Wd�n1�s�0Y�qV|�|jjd�|�|�jjd�|�|jjd�|�|�jjd�dS)Ncs$|j�tt����fdd���}|S)Ncs�|i|��Sr
r)rr��r�rrr��	szgTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decorator.<locals>.wrapper)�__func__r�rr&)rr�rr�r�classmethod_friendly_decorator�	s
zVTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decoratorcs>eZdZeejeed�dd���Z�eeed�dd���Z	dS)zMTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatchr�css$zt|�VWdSYdS0dS)N�Doner�r�rrr�cls_context_manager�	szaTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.cls_context_managercSst|�Sr
r�r�rrr�decorated_classmethod�	szcTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.decorated_classmethodN)
rrrr��
contextlib�contextmanagerrdrlr�r�r�r�rr�WithoutSingleDispatch�	sr�csJeZdZejeejee	d�dd����Z
ej�eee	d�dd����ZdS)zJTestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatchr�css$zt|�VWdSYdS0dS)r�r�Nr�r�rrrr��	sz^TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.cls_context_managercSst|�Sr�r�r�rrrr��	sz`TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.decorated_classmethodN)rrrrr�r�r�r�rdrlr�r�rr�rr�WithSingleDispatch�	sr�rI�5)r�r�)r�r�r�rzr�r�)	r�r<r�r�rgrrr
rd)r!r�r�rxZwithout_single_dispatch_fooZsingle_dispatch_fooZmethod_namer�rr�r�test_double_wrapped_methods�	s`""�

��&�6����z.TestSingleDispatch.test_double_wrapped_methodscCs`d}d}tjdd��}|�t��"}|�d�dd��}Wd�n1sH0Y|�t|j��|d��|�t|j��	|��|�t��}|jd	d��}Wd�n1s�0Y|�t|j��|d
��|�t|j��	|��|�t��*}|jt
jtd�dd��}Wd�n1�s&0Y|�t|j��d
��|�t|j��	d��dS)Nz(Invalid first argument to `register()`: zS. Use either `@register(some_class)` or plain `@register` on an annotated function.cSsdSr2rryrrrr-9
sz8TestSingleDispatch.test_invalid_registrations.<locals>.ir2cSsdS)NzI annotated with a non-typerryrrrr'=
sz8TestSingleDispatch.test_invalid_registrations.<locals>._Z42cSsdS)NzI forgot to annotaterryrrrr'C
szB<function TestSingleDispatch.test_invalid_registrations.<locals>._rycSsdS)Nz%I annotated with a generic collectionrryrrrr'L
szInvalid annotation for 'arg'.z$typing.Iterable[str] is not a class.)rr6rDrEr7r:rlr�r�endswith�typingrQ)r!Z
msg_prefixZ
msg_suffixr-�excr'rrr�test_invalid_registrations3
s4�
((�6��z-TestSingleDispatch.test_invalid_registrationscCsHtjdd��}d}|�t|��|�Wd�n1s:0YdS)NcWsdSr
rr�rrrr^[
sz>TestSingleDispatch.test_invalid_positional_argument.<locals>.fz)f requires at least 1 positional argument)rr6�assertRaisesRegexrE)r!r^�msgrrr� test_invalid_positional_argumentZ
s

z3TestSingleDispatch.test_invalid_positional_argumentcCs�tjdd��}|�td��$|�ttdd��Wd�n1sD0Y|�td��&|�tjtdd��Wd�n1s�0Y|�td��.|�tj	ttt
fdd��Wd�n1s�0Y|�td��0|�tj	tjttfdd��Wd�n1�s0Y|�td��"|�tj
d	d��Wd�n1�s^0Y|�|d
g�d�|�|dg�d�|�|d
�d�|�|d�d�dS)NcSsdS�N�defaultrryrrrr^c
sz8TestSingleDispatch.test_register_genericalias.<locals>.f�Invalid first argument to cSsdS�Nztypes.GenericAliasrryrrrr7h
r8z?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>cSsdS�Nztyping.GenericAliasrryrrrr7j
r8cSsdS)Nz typing.Union[types.GenericAlias]rryrrrr7l
r8cSsdS�Nz!typing.Union[typing.GenericAlias]rryrrrr7n
r8cSsdS�Nz
typing.Anyrryrrrr7p
r8r&r���?rjr8)rr6r�rEr7rrdr��List�Unionrl�float�bytes�Anyr<r`rrr�test_register_genericaliasb
s 
24<@2z-TestSingleDispatch.test_register_genericaliascCsNtjdd��}|�td��|�tt�Wd�n1s>0Y|�td�� |�tjt�Wd�n1sz0Y|�td��(|�tj	ttt
f�Wd�n1s�0Y|�td��*|�tj	tjtt
f�Wd�n1�s0Y|�td��|�tj�Wd�n1�s@0YdS)NcSsdSr�rryrrrr^x
szBTestSingleDispatch.test_register_genericalias_decorator.<locals>.fr�)rr6r�rEr7rrdr�r�r�rlr�r`rrr�$test_register_genericalias_decoratorw
s
,.6:z7TestSingleDispatch.test_register_genericalias_decoratorcCs�tjdd��}|�td��(|jttd�dd��}Wd�n1sH0Y|�td��*|jtjt	d�dd��}Wd�n1s�0Y|�td��2|jtj
tttfd�dd��}Wd�n1s�0Y|�td��4|jtj
tjt	tfd�d	d��}Wd�n1�s.0Y|�td��&|jtj
d�d
d��}Wd�n1�sr0Y|�|dg�d�|�|d
g�d�|�|d�d�|�|d�d�dS)NcSsdSr�rryrrrr^�
szCTestSingleDispatch.test_register_genericalias_annotation.<locals>.fzInvalid annotation for 'arg'rycSsdSr�rryrrrr'�
szCTestSingleDispatch.test_register_genericalias_annotation.<locals>._cSsdSr�rryrrrr'�
scSsdS)Nz#types.UnionType(types.GenericAlias)rryrrrr'�
scSsdSr�rryrrrr'�
scSsdSr�rryrrrr'�
sr&r�r�rjr8)rr6r�rEr7rrdr�r�r�r�rlr�r�r<)r!r^r'rrr�%test_register_genericalias_annotation�
s*
24<@2z8TestSingleDispatch.test_register_genericalias_annotationN)#rrrr9r>r@rBr!�
skipUnlessr	rZcpython_onlyrGrZrnrrrxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr1�s<	
6^f$c'r1c@s&eZdZdZdd�Zejdd��ZdS)�CachedCostItemr&cCst��|_dSr
)r��RLock�lockrGrrrr��
szCachedCostItem.__init__cCs:|j�|jd7_Wd�n1s*0Y|jS)�The cost of the item.r&N)r��_costrGrrr�cost�
s,zCachedCostItem.costN)rrrr�r�r��cached_propertyr�rrrrr��
sr�c@s"eZdZdZdd�Ze�e�ZdS)�OptionallyCachedCostItemr&cCs|jd7_|jS)r�r&�r�rGrrr�get_cost�
sz!OptionallyCachedCostItem.get_costN)rrrr�r�r�r��cached_costrrrrr��
sr�c@s"eZdZdd�Zejdd��ZdS)�CachedCostItemWaitcCsd|_t��|_||_dSr#)r�r�r�r��event)r!r�rrrr��
s
zCachedCostItemWait.__init__cCsF|j�d�|j�|jd7_Wd�n1s60Y|jSr#)r�r�r�r�rGrrrr��
s,zCachedCostItemWait.costN)rrrr�r�r�r�rrrrr��
sr�c@s&eZdZdZdd�Zejdd��ZdS)�CachedCostItemWithSlotsr�cCs
d|_dSr#r�rGrrrr��
sz CachedCostItemWithSlots.__init__cCstd��dS)Nz!never called, slots not supportedr4rGrrrr��
szCachedCostItemWithSlots.costN)rrr�	__slots__r�r�r�r�rrrrr��
sr�c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestCachedPropertycCs&t�}|�|jd�|�|jd�dSr�)r�r<r��r!�itemrrr�test_cached�
szTestCachedProperty.test_cachedcCsFt�}|�|��d�|�|jd�|�|��d�|�|jd�dS)Nr'r-r.)r�r<r�r�r�rrr�1test_cached_attribute_name_differs_from_func_name�
s
zDTestCachedProperty.test_cached_attribute_name_differs_from_func_namec	s�t��}t|��d}t��}t�d�zV�fdd�t|�D�}t�|��|�	�Wd�n1sf0YWt�|�nt�|�0|�
�jd�dS)Nr-r�cs g|]}tj�fdd�d��qS)cs�jSr
)r�r�r�rrr7�
r8z=TestCachedProperty.test_threaded.<locals>.<listcomp>.<lambda>rr�r�r�rrr��
s�z4TestCachedProperty.test_threaded.<locals>.<listcomp>r')r�rr�rrrrmrrrr<r�)r!ZgoZnum_threadsrrrr�r�
test_threaded�
s

�(z TestCachedProperty.test_threadedcCs<t�}|�td��|jWd�n1s.0YdS)NzWNo '__dict__' attribute on 'CachedCostItemWithSlots' instance to cache 'cost' property.)r�r�rEr�r�rrr�test_object_with_slots�
s�z)TestCachedProperty.test_object_with_slotscCsXGdd�dt�}Gdd�d|d�}|�td��|jWd�n1sJ0YdS)Nc@seZdZejdd��ZdS)z6TestCachedProperty.test_immutable_dict.<locals>.MyMetacSsdS)NTrrGrrr�propsz;TestCachedProperty.test_immutable_dict.<locals>.MyMeta.propN)rrrr�r�r�rrrr�MyMetasr�c@seZdZdS)z7TestCachedProperty.test_immutable_dict.<locals>.MyClassNrrrrr�MyClass	sr�r�zkThe '__dict__' attribute on 'MyMeta' instance does not support item assignment for caching 'prop' property.)r�r�rEr�)r!r�r�rrr�test_immutable_dicts�z&TestCachedProperty.test_immutable_dictcCsX|�t��}Gdd�d�}Wd�n1s.0Y|�t|jj�ttd���dS)zDDisallow this case because decorated function a would not be cached.c@seZdZejdd��ZeZdS)zKTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedPropertycSsdSr
rrGrrrr+szMTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedProperty.aN)rrrr�r�r+r,rrrr�ReusedCachedPropertys
r�NzLCannot assign the same cached_property to two different names ('a' and 'b').)rDr5r<rlr�r�rE)r!�ctxr�rrr�test_reuse_different_namess,

�z-TestCachedProperty.test_reuse_different_namescstd�tj�fdd���G�fdd�d�}G�fdd�d�}|�}|�}|�|jd�|�|jd	�|�|jd�d
S)zIReusing a cached_property on different classes under the same name is OK.rcs�d7��Sr#r)Z_self)�counterrr�_cp%sz4TestCachedProperty.test_reuse_same_name.<locals>._cpcseZdZ�ZdS)z2TestCachedProperty.test_reuse_same_name.<locals>.AN�rrr�cpr�r�rrr�+sr�cseZdZ�ZdS)z2TestCachedProperty.test_reuse_same_name.<locals>.BNr�rrrrr�.sr�r&r'N)r�r�r<r�)r!r�r�r+r,r)r�r�r�test_reuse_same_name!sz'TestCachedProperty.test_reuse_same_namecCsZt�dd��}Gdd�d�}||_|�td��|�jWd�n1sL0YdS)NcSsdSr
r)r�rrrr79r8z=TestCachedProperty.test_set_name_not_called.<locals>.<lambda>c@seZdZdS)z8TestCachedProperty.test_set_name_not_called.<locals>.FooNrrrrr�Foo:srzGCannot use cached_property instance without calling __set_name__ on it.)r�r�r�r�rE)r!r�rrrr�test_set_name_not_called8s�z+TestCachedProperty.test_set_name_not_calledcCs|�tjtj�dSr
)ZassertIsInstancer�r�r�r�rGrrr�test_access_from_classEsz)TestCachedProperty.test_access_from_classcCs|�tjjd�dS)Nr�)r<r�r�rrGrrr�test_docHszTestCachedProperty.test_docN)
rrrr�r�r�r�r�r�rrrrrrrrr��
s
r��__main__)Lr�r�rc�collections.abcr��	itertoolsrr��randomrrr
rr�rr�r!Z
unittest.mock�osr)r+rr�Ztest.support.script_helperrrZimport_fresh_moduler�r�r	r�rrrr�rrr=r$r%r�ZTestCaser�r�r9r�r�r�r�r�r�r%r)rErFrGrgrhriror�r�r�r�r-r.r/r0r1r�r�r�r�r�r�mainrrrr�<module>s�
G
3
r>O
S
h	

1r


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists