Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_functools.cpython-311.pyc
�

�Keݲ����ddlZddlZddlZddlZddlZddlmZddlZddlm	Z	ddl
Z
ddlmZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZddlZddlmZddlmZddlmZddlZejd	d
g���Zejd	��Zejdd
g���Z ej!d���Z"d�Z#d�Z$Gd�de%��Z&Gd�de%��Z'Gd�de(��Z)Gd�d��Z*ej+ed��Gd�de*ej,����Z-Gd�de*ej,��Z.erGd�d ej/��Z0Gd!�d"ej/��Z1ej+ed��Gd#�d$e-����Z2Gd%�d&e.��Z3Gd'�d(ej,��Z4Gd)�d*ej,��Z5Gd+�d,e5��Z6Gd-�d.��Z7ej+ed��Gd/�d0e7ej,����Z8Gd1�d2e7ej,��Z9Gd3�d4��Z:ej+ed��Gd5�d6e:ej,����Z;Gd7�d8e:ej,��Z<Gd9�d:ej,��Z=ej>Gd;�d<����Z?Gd=�d>��Z@Gd?�d@��ZAe�B��dA���ZCe�B��dB���ZDGdC�dDeAej,��ZEGdE�dFeAej,��ZFGdG�dHej,��ZGGdI�dJ��ZHGdK�dL��ZIGdM�dN��ZJGdO�dP��ZKGdQ�dRej,��ZLeMdSkrejN��dSdS)T�N)�permutations)�choice)�support)�proxy)�
import_helper)�threading_helper)�assert_python_ok�	functools�
_functools)�blocked�decimal�_decimal)�freshc#�K�tj|}|tj|<	dV�|tj|<dS#|tj|<wxYw�N)�sys�modules)�name�replacement�original_modules   �=/usr/local/apps/python3/lib/python3.11/test/test_functools.py�replaced_moduler"sV�����k�$�'�O�#�C�K���,�
����+���D�����O���D��+�+�+�+s	�:�Ac�
�||fS)z,capture all positional and keyword arguments�)�args�kws  r�capturer+s����8�O�c�6�|j|j|j|jfS)z* return the signature of a partial object )�funcr�keywords�__dict__)�parts r�	signaturer$0s���I�t�y�$�-���?�?rc��eZdZdS)�MyTupleN��__name__�
__module__�__qualname__rrrr&r&4��������Drr&c��eZdZd�ZdS)�BadTuplec�@�t|��t|��zSr)�list��self�others  r�__add__zBadTuple.__add__8s���D�z�z�D��K�K�'�'rN)r(r)r*r3rrrr-r-7s#������(�(�(�(�(rr-c��eZdZdS)�MyDictNr'rrrr5r5;r+rr5c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestPartialc	��|�tdddd���}|�t|����|�|dddd	�
��dtddd	���f��|�td
���}|�t|gd�����gd���dS)N���
���a�b����(�r?�c�r9r:r@rA�r>r?rEc��|dzS)Nr;r��xs r�<lambda>z1TestPartial.test_basic_examples.<locals>.<lambda>Fs
���"��r)r;r<rBrC)�partialr�
assertTrue�callable�assertEqual�dict�mapr/�r1�ps  r�test_basic_exampleszTestPartial.test_basic_examplesAs����L�L��!�Q�"��L�3�3���������$�$�$������1�a�2��,�,�,�&��r�R�2�(>�(>�(>�?�	A�	A�	A��L�L��n�n�-�-������a�a�	�	�	�l�l�+�+�-=�-=�-=�>�>�>�>�>rc��|�tdddd���}|�|jt��|�|jd��|�|jt
dd�����dS)Nr9r:r;r<r=�r9r:)rLrrOr rr!rPrRs  r�test_attributeszTestPartial.test_attributesIsx���L�L��!�Q�"��L�3�3��������)�)�)�������(�(�(������T�B�"�%5�%5�%5�6�6�6�6�6rc���|�t|j��	|�d����|�d��dS#t$rYdSwxYw)Nr:z%First arg not checked for callability)�assertRaises�	TypeErrorrL�fail�r1s r�test_argument_checkingz"TestPartial.test_argument_checkingPsv�����)�T�\�2�2�2�	?��D�L�L��O�O����
�I�I�=�>�>�>�>�>���	�	�	��D�D�	���s�A�
A$�#A$c���d
d�}ddi}|�|d���}|�|di|��d��|�|ddi��|d�	��|�|ddi��dS)Nr;r<c��|Srrr=s  rr zBTestPartial.test_protection_of_callers_dict_argument.<locals>.func[s���Hrr>r@��r>��r?)r;r<r)rLrO)r1r �drSs    r�(test_protection_of_callers_dict_argumentz4TestPartial.test_protection_of_callers_dict_argumentYs���	�	�	�	�
��G���L�L���L�#�#���������Q����#�#�#�����S��G�$�$�$�	��A���������S��G�$�$�$�$�$rc���ddi}|jtfi|��}|�|��dddif��d|d<|�|��dddif��dS)Nr>r@rr`�rLrrO)r1rdrSs   r�test_kwargs_copyzTestPartial.test_kwargs_copyds}���!�H���D�L��&�&�A�&�&���������r�C��8�n�-�-�-���#���������r�C��8�n�-�-�-�-�-rc�z�|�t��}|�|��dif��|�|dd��dif��|�tdd��}|�|��dif��|�|dd��dif��dS)Nrr9r:rVr@rArFrgrRs  r�test_arg_combinationsz!TestPartial.test_arg_combinationsms���
�L�L��!�!���������r�2�h�'�'�'������1�Q���%���-�-�-��L�L��!�Q�'�'���������u�b�k�*�*�*������1�Q���)�R��1�1�1�1�1rc�D�|�t��}|�|ji��|�|��dif��|�|d���dddif��|�td���}|�|jddi��|�|��dddif��|�|d���dddd�f��|�|dd���dddd�f��dS)	Nrr9rar>r:rcr=r@)rLrrOr!rRs  r�test_kw_combinationsz TestPartial.test_kw_combinationsws(��
�L�L��!�!�������R�(�(�(��������r�2�h�'�'�'������Q����"�s�1�g��/�/�/��L�L��A�L�&�&�������c�!�W�-�-�-��������r�C��7�m�,�,�,������Q����"�1�!�n�n�!5�6�6�6������Q�!����r��q�>�>�&:�;�;�;�;�;rc��dD]G}|jtg|�R�}|dz}|d��\}}|�||ko|ik���HdS)N)r�r�rr9)rr9r:)rr9r:r@rIrJ�rLrrM)r1rrS�expected�got�emptys      r�test_positionalzTestPartial.test_positional�sp��9�	=�	=�D����W�,�t�,�,�,�A��f�}�H���3���J�C���O�O�H��O�;����<�<�<�<�		=�	=rc��dD]Q}|�t|���}|dd�}|d���\}}|�||ko|dk���RdS)N)r>rNg@ra)r>rJrIrrp)r1r>rSrqrsrrs      r�test_keywordzTestPartial.test_keyword�sr��$�	=�	=�A����W���*�*�A��$�'�'�H���T����J�E�3��O�O�H��O�;����<�<�<�<�		=�	=rc��|�tdd���}|dd���\}}|�|dko|ddd�k��|��\}}|�|dko|d	dik��dS)
Nrr9rar:rcror=rnr>rp)r1rS�args1�kw1�args2�kw2s      r�test_no_side_effectsz TestPartial.test_no_side_effects�s����L�L��!�q�L�)�)���Q�q�A�Y�Y�Y�
��s�������?�3�q�Q�-�-�+?�@�@�@��Q�S�S�
��s������
�8�#�#�a��.�9�9�9�9�9rc��d�}|�t|�|dd����|�t|�|d��d��|�t|�|��dd��|�t|�|d���d��dS)Nc��||zdSrr�rJ�ys  r�fz-TestPartial.test_error_propagation.<locals>.f�s��
��E�E�E�Err9r)r�)rY�ZeroDivisionErrorrL�r1r�s  r�test_error_propagationz"TestPartial.test_error_propagation�s���	�	�	����+�T�\�\�!�Q��-B�-B�C�C�C����+�T�\�\�!�Q�-?�-?��C�C�C����+�T�\�\�!�_�_�a��C�C�C����+�T�\�\�!�q�\�-A�-A�1�E�E�E�E�Erc�
�|�td���}t|��}|�|j|j��d}tj��|�tt|d��dS)N�)�baser )
rL�intrrOr r�
gc_collectrY�ReferenceError�getattr�r1r�rSs   r�test_weakrefzTestPartial.test_weakref�sp���L�L��2�L�&�&���!�H�H���������(�(�(�����������.�'�1�f�=�=�=�=�=rc�T�ttttd������}|�tjd��}|�||��d��|�dj��}|�||��d��dS)Nr;��
0123456789)r/rQ�str�rangerL�joinrO)r1�datar�s   r�#test_with_bound_and_unbound_methodsz/TestPartial.test_with_bound_and_unbound_methods�s����C��U�2�Y�Y�'�'�(�(���|�|�C�H�b�)�)�������d���\�2�2�2��|�|�B�G�$�$�������d���\�2�2�2�2�2rc���|j}|td��}||d���}|tdd���}|�t|��t|����dS�N�asdfT��bar)rLr$rO)r1rL�inner�nested�flats     r�test_nested_optimizationz$TestPartial.test_nested_optimization�sn���,����	�6�*�*�����D�)�)�)���w�y�&�d�3�3�3������6�*�*�I�d�O�O�<�<�<�<�<rc��|j}d�}||d��}||d��}d|_|�|jd��dS)Nc��|Srrr�s r�fooz;TestPartial.test_nested_partial_with_attribute.<locals>.foo�s���Jr�first�second�spam)rL�new_attrrO)r1rLr�rS�p2s     r�"test_nested_partial_with_attributez.TestPartial.test_nested_partial_with_attribute�sa���,��	�	�	�
�G�C��!�!��
�W�Q��
!�
!����������f�-�-�-�-�-rc����t��t��f}d�d�|D�����t��t��d�}d�|��d�|��g}|jtjt
jfvrd�n|jj�|�t��}|���dt�d�t|����|jtg|�R�}|���dt�d��d�t|����|jtfi|��}|�
t|���fd	�|D����|jtg|�Ri|��}|�
t|����fd
�|D����dS)N�, c3�4K�|]}t|��V��dSr)�repr)�.0r>s  r�	<genexpr>z(TestPartial.test_repr.<locals>.<genexpr>�s(����4�4�!�d�1�g�g�4�4�4�4�4�4rr=za={a!r}, b={b!r}zb={b!r}, a={a!r}�functools.partial�(�)c�0��g|]}��dt�d|�d���S�r�r�r��r)r��kwargs_reprrs  �r�
<listcomp>z)TestPartial.test_repr.<locals>.<listcomp>�sB���8�8�8�&��<�<��<�<�k�<�<�<�8�8�8rc
�6��g|]}��dt�d��d|�d���Sr�r�)r�r��	args_reprrs  ��rr�z)TestPartial.test_repr.<locals>.<listcomp>�sJ���8�8�8�&��I�I��I�I�i�I�I�;�I�I�I�8�8�8r)�objectr��
format_maprL�c_functools�py_functoolsr(rrOr��assertIn)r1r�kwargs�kwargs_reprsr�r�rs     @@r�	test_reprzTestPartial.test_repr�s��������&�(�(�#���I�I�4�4�t�4�4�4�4�4�	��x�x�f�h�h�/�/��*�5�5�f�=�=�*�5�5�f�=�=�?���<�K�/��1E�F�F�F�&�D�D��<�(�D��L�L��!�!�����D�/�/�7�/�/�/��a���9�9�9��D�L��(�4�(�(�(�����D�<�<�7�<�<�	�<�<�<�d�1�g�g�F�F�F��D�L��+�+�F�+�+���
�
�d�1�g�g�8�8�8�8�*6�8�8�8�	9�	9�	9�
�D�L��2�4�2�2�2�6�2�2���
�
�d�1�g�g�8�8�8�8�8�*6�8�8�8�	9�	9�	9�	9�	9rc�B�|jtjtjfvrd}n|jj}|�t��}|�|diif��	|�t|��|�d���|�tdiif��n##|�tdiif��wxYw|�t��}|�t|fiif��	|�t|��|�dt�d���|�tdiif��n##|�tdiif��wxYw|�t��}|�tdd|iif��	|�t|��|�dt�d���|�tdiif��dS#|�tdiif��wxYw)Nr�rz(...)r�z, ...)r>z, a=...))rLr�r�r(r�__setstate__rOr�)r1rr�s   r�test_recursive_reprzTestPartial.test_recursive_repr�s����<�K�/��1E�F�F�F�&�D�D��<�(�D��L�L��!�!��	����2�r�2��'�'�'�	2����T�!�W�W�4�4�4�&9�:�:�:�
�N�N�G�R��R�0�1�1�1�1��A�N�N�G�R��R�0�1�1�1�1�����L�L��!�!��	����!��r�2�.�/�/�/�	2����T�!�W�W�t�t�t�W�W�W�&F�G�G�G�
�N�N�G�R��R�0�1�1�1�1��A�N�N�G�R��R�0�1�1�1�1�����L�L��!�!��	�����c�1�X�r�2�3�3�3�	2����T�!�W�W����w�w�w�&H�I�I�I�
�N�N�G�R��R�0�1�1�1�1�1��A�N�N�G�R��R�0�1�1�1�1���s$�#&B(�( C�.E� E2�0.G>�> Hc��|���5|�tdgdg���}g|_t	t
jdz��D]Y}tjtj||����}|�	t|��t|�����Z	ddd��dS#1swxYwYdS)Nr�Tr�r9)
�AllowPicklerLr$�attrr��pickle�HIGHEST_PROTOCOL�loads�dumpsrO�r1r��proto�f_copys    r�test_picklezTestPartial.test_pickle�s��
�
�
�
�
�	B�	B����Y���t�f��=�=�A��A�F��v�6��:�;�;�
B�
B����f�l�1�e�&<�&<�=�=��� � ��6�!2�!2�I�a�L�L�A�A�A�A�
B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�BC�C�Cc��|�tdgdg���}g|_tj|��}|�t|��t|����|�|j|j��|�|j|j��|�|j|j��dSr�)rLr$r��copyrO�assertIsrr!�r1r�r�s   r�	test_copyzTestPartial.test_copys����L�L��V�H�4�&�L�9�9�������1��������6�*�*�I�a�L�L�9�9�9��
�
�f�k�1�6�*�*�*��
�
�f�k�1�6�*�*�*��
�
�f�o�q�z�2�2�2�2�2rc�J�|�tdgdg���}g|_tj|��}|�t|��t|����|�|j|j��|�|j|j��|�|jd|jd��|�|j|j��|�|jd|jd��dS)Nr�Tr�rr�)	rLr$r�r��deepcopyrO�assertIsNotrr!r�s   r�
test_deepcopyzTestPartial.test_deepcopys����L�L��V�H�4�&�L�9�9�������q�!�!������6�*�*�I�a�L�L�9�9�9������a�f�-�-�-������a�f�-�-�-������Q������3�3�3������!�*�5�5�5�������/���E�1B�C�C�C�C�Crc	�
�|�t��}|�tdt	d���t	g���f��|�t|��tdt	d���t	g���f��|�|dd���dddd	�f��|�tdt	d���df��|�t|��tdt	d���if��|�|dd���dddd	�f��|�tdddf��|�|dd���dd
dif��|�|d��dif��|�|��dif��|�tdidf��|�t|��tdiif��|�|dd���dd
dif��|�|d��dif��|�|��dif��dS)
N�r9r;ra�r�r:r<rcrVr=r?r)r:)rLr$r�rrPrOr�s  r�
test_setstatezTestPartial.test_setstatesf���L�L��#�#��	�����t�b�z�z�z�4�R�=�=�=�A�B�B�B�����1���!�4������T�r�]�]�]�C�	E�	E�	E������1�����f�B�R�.@�.@�%A�B�B�B�	�����t�b�z�z�z�4�8�9�9�9�����1�����t�b�z�z�z�2�'F�G�G�G������1�����f�B�R�.@�.@�%A�B�B�B�	�����t�T�2�3�3�3������1�����f�s�B�i�%8�9�9�9������1�����|�,�,�,��������t�R�j�)�)�)�	�����R��.�/�/�/�����1�����R��'<�=�=�=������1�����d�S�"�I�%6�7�7�7������1����b�z�*�*�*��������r�2�h�'�'�'�'�'rc	�|�|�t��}|�t|jt
dif��|�t|jt
diidf��|�t|jt
didg��|�t|jddidf��|�t|jt
didf��|�t|jt
gidf��|�t|jt
dgdf��dS)Nr)rLr$rYrZr�rr�s  r�test_setstate_errorsz TestPartial.test_setstate_errors2s���L�L��#�#�����)�Q�^�g�r�2�5F�G�G�G����)�Q�^�g�r�2�r�4�5P�Q�Q�Q����)�Q�^�g�r�2�t�5L�M�M�M����)�Q�^�d�B��D�5I�J�J�J����)�Q�^�g�t�R��5N�O�O�O����)�Q�^�g�r�2�t�5L�M�M�M����)�Q�^�g�r�2�t�5L�M�M�M�M�Mrc��|�t��}|�tt	d��td���df��t|��}|�|tdtd���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;rar9r:r>rrV)rLr$r�rr&r5rOrPr��type�tupler-)r1r��s�rs    r�test_setstate_subclassesz$TestPartial.test_setstate_subclasses<s����L�L��#�#��	�������������d�C�D�D�D��a�L�L������W�d�D�2�J�J�J��;�<�<�<��
�
�d�1�Q�4�j�j�%�(�(�(��
�
�d�1�Q�4�j�j�$�'�'�'�
�A�C�C������T�C��9�-�.�.�.��
�
�d�1�Q�4�j�j�%�(�(�(��
�
�d�1�Q�4�j�j�$�'�'�'�	�����$����T�:�;�;�;��a�L�L������W�d�B��3�4�4�4��
�
�d�1�Q�4�j�j�%�(�(�(�
�A�a�D�D������V�R�L�)�)�)��
�
�d�1�Q�4�j�j�%�(�(�(�(�(rc
��|���5|�t��}|�|diif��	t	t
jdz��D]I}|�t��5tj	||��ddd��n#1swxYwY�J	|�tdiif��n##|�tdiif��wxYw|�t��}|�t|fiif��	t	t
jdz��D]�}tj
tj	||����}	|�|jd|��|�tdiif���j#|�tdiif��wxYw	|�tdiif��n##|�tdiif��wxYw|�t��}|�tdd|iif��	t	t
jdz��D]�}tj
tj	||����}	|�|j
d|��|�tdiif���j#|�tdiif��wxYw	|�tdiif��n##|�tdiif��wxYw	ddd��dS#1swxYwYdS)Nrr9rr>)r�rLrr�r�r�r�rY�RecursionErrorr�r�r�rr!r�s    r�test_recursive_picklez!TestPartial.test_recursive_picklePs���
�
�
�
�
� 	6� 	6����W�%�%�A�
�N�N�A�r�2�r�?�+�+�+�
6�"�6�#:�Q�#>�?�?�/�/�E��*�*�>�:�:�/�/���Q��.�.�.�/�/�/�/�/�/�/�/�/�/�/����/�/�/�/��/������R��4�5�5�5�5�������R��4�5�5�5�5�������W�%�%�A�
�N�N�G�a�T�2�r�2�3�3�3�
6�"�6�#:�Q�#>�?�?�C�C�E�#�\�&�,�q�%�*@�*@�A�A�F�C��
�
�f�k�!�n�f�=�=�=��+�+�W�b�"�b�,A�B�B�B�B���+�+�W�b�"�b�,A�B�B�B�B����C������R��4�5�5�5�5�������R��4�5�5�5�5�������W�%�%�A�
�N�N�G�R�#�q��2�6�7�7�7�
6�"�6�#:�Q�#>�?�?�C�C�E�#�\�&�,�q�%�*@�*@�A�A�F�C��
�
�f�o�c�&:�F�C�C�C��+�+�W�b�"�b�,A�B�B�B�B���+�+�W�b�"�b�,A�B�B�B�B����C������R��4�5�5�5�5�������R��4�5�5�5�5����5�A 	6� 	6� 	6� 	6� 	6� 	6� 	6� 	6� 	6� 	6� 	6� 	6���� 	6� 	6� 	6� 	6� 	6� 	6s��4M�
8C�B$�C�$B(�(C�+B(�,C�1M� C0�0<M�-AG6�3!F3�G6�3 G�G6�M�6 H�=M�AL�!K�;L� K:�:L�>M� L=�=M�M�Mc��Gd�d��}|�t��}|�t|j|����dS)Nc��eZdZd�Zd�ZdS)�7TestPartial.test_setstate_refcount.<locals>.BadSequencec��dS)NrArr\s r�__len__z?TestPartial.test_setstate_refcount.<locals>.BadSequence.__len__v����qrc�z�|dkrtS|dkrttd����S|dvriSt�)Nrr9i@B)r:r@)�maxr�r��
IndexError)r1�keys  r�__getitem__zCTestPartial.test_setstate_refcount.<locals>.BadSequence.__getitem__xsA���!�8�8��J��A�X�X� ��w���0�0�0��F�]�]��I� � rN)r(r)r*r�r�rrr�BadSequencer�us2������
�
�
�
!�
!�
!�
!�
!rr�)rLr�rYrZr�)r1r�r�s   r�test_setstate_refcountz"TestPartial.test_setstate_refcounttsc��
	!�
	!�
	!�
	!�
	!�
	!�
	!�
	!�
�L�L�� � �����)�Q�^�[�[�]�]�C�C�C�C�CrN)r(r)r*rTrWr]rerhrjrlrtrvr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr7r7?s�������?�?�?�7�7�7�?�?�?�	%�	%�	%�.�.�.�2�2�2�<�<�<�=�=�=�=�=�=�:�:�:�F�F�F�>�>�>�3�3�3�=�=�=�
.�
.�
.�9�9�9�62�2�2�6B�B�B�3�3�3�	D�	D�	D�(�(�(�2N�N�N�)�)�)�(!6�!6�!6�HD�D�D�D�Drr7z requires the C _functools modulec�L�eZdZerejZGd�d��Zd�Zd�Zd�ZdS)�TestPartialCc��eZdZd�Zd�ZdS)�TestPartialC.AllowPicklec��|Srrr\s r�	__enter__z"TestPartialC.AllowPickle.__enter__�s���Krc��dS�NFr�r1r��value�tbs    r�__exit__z!TestPartialC.AllowPickle.__exit__�s���5rN)r(r)r*r�r�rrrr�r��s2������	�	�	�	�	�	�	�	rr�c
���|�tdddd���}|�tt|dt
��|�tt|dd��|�tt|d	t
dd�����|�t��}	|`|�	d
��dS#t$rYdSwxYw)Nr9r:r;r<r=r rrVr!z-partial object allowed __dict__ to be deleted)rLrrY�AttributeError�setattrrQrP�hexr"r[rZrRs  r�test_attributes_unwritablez'TestPartialC.test_attributes_unwritable�s����L�L��!�Q�"��L�3�3�����.�'�1�f�c�B�B�B����.�'�1�f�f�E�E�E����.�'�1�j�$��a�.�.�.�Q�Q�Q��L�L�����	G��
�
�I�I�E�F�F�F�F�F���	�	�	��D�D�	���s�8C�
C�Cc�>�|�t��}d|jd<t|��}|�d|��|�d|��|�t��5|��ddd��dS#1swxYwYdS)Nr�i��1234z'value')rLrr!r�r�rYrZ)r1rSr�s   r�'test_manually_adding_non_string_keywordz4TestPartialC.test_manually_adding_non_string_keyword�s����L�L��!�!��"��
�4����G�G���
�
�f�a� � � ��
�
�i��#�#�#�
�
�
�y�
)�
)�	�	�
�A�C�C�C�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�:B�B�Bc���|�t���G�fd�dt��}dg�j|��<t	���}|�d|��|�d|��dS)Nc���eZdZ�fd�ZdS)�@TestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDictc���dg�j|<dS)N�sth2�astr)r!rRs �r�__str__zHTestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDict.__str__�s���$*�8��
�4� ��vrN)r(r)r*r
)rSs�r�MutatesYourDictr	�s.�������
�
�
�
�
�
�
rr�sthrz['sth'])rLrr�r!r�r�)r1rr�rSs   @r�test_keystr_replaces_valuez'TestPartialC.test_keystr_replaces_value�s�����L�L��!�!��	�	�	�	�	�	�	�f�	�	�	�*/���
�?�?�$�$�%���G�G���
�
�f�a� � � ��
�
�i��#�#�#�#�#rN)	r(r)r*r�rLr�rrrrrrr�r��s|�������&��%����������
G�
G�
G����
$�
$�
$�
$�
$rr�c�6�eZdZejZGd�d��ZdS)�
TestPartialPyc� �eZdZd�Zd�Zd�ZdS)�TestPartialPy.AllowPicklec�:�tdt��|_dS)Nr
)rr��_cmr\s r�__init__z"TestPartialPy.AllowPickle.__init__�s��&�{�L�A�A�D�H�H�Hrc�4�|j���Sr)rr�r\s rr�z#TestPartialPy.AllowPickle.__enter__�s���8�%�%�'�'�'rc�:�|j�|||��Sr)rr�r�s    rr�z"TestPartialPy.AllowPickle.__exit__�s���8�$�$�T�5�"�5�5�5rN)r(r)r*rr�r�rrrr�r�sD������	B�	B�	B�	(�	(�	(�	6�	6�	6�	6�	6rr�N)r(r)r*r�rLr�rrrrr�sD�������"�G�6�6�6�6�6�6�6�6�6�6rrc��eZdZdS)�CPartialSubclassNr'rrrrr�s�������rrc��eZdZdS)�PyPartialSubclassNr'rrrrr�r+rrc��eZdZereZdZdS)�TestPartialCSubclassN)r(r)r*r�rrLr�rrrrr�s%�������#�"�� $���rrc��eZdZeZdS)�TestPartialPySubclassN)r(r)r*rrLrrrr!r!�s�������G�G�Grr!c��eZdZGd�de��Ze��Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�ZdS)�TestPartialMethodc��eZdZeje��Zejed��Zejed���Zejedd���Z	ejedd���Z
ejed��Zejejed	�
��d��Z
ejee��d��Zejee��d
���ZdS)�TestPartialMethod.Ar9r:rar@rArc�r1r r`��rErb��	�rdN)r(r)r*r
�
partialmethodr�nothing�
positionalr!�both�
spec_keywordsr�rL�over_partial�staticmethod�static�classmethod�clsrrr�Ar%�s�������)�)�)�'�2�2��,�Y�,�W�a�8�8�
�*�9�*�7�a�8�8�8��&�y�&�w��Q�7�7�7��/�	�/��a�a�H�H�H�
�(��(��Q�7�7��.�y�.�/@�y�/@��A�/N�/N�/N�PQ�R�R��(��(���g�)>�)>��B�B��%�i�%�k�k�'�&:�&:�a�@�@�@���rr6c�$�|�|j���|jfif��|�|j�d��|jdfif��|�|j�d���|jfddif��|�|j�dd���|jdfddif��|�|j���|jdfif��|�|j�d��|jddfif��|�|j�d���|jdfddif��|�|j�dd���|jddfddif��|�|j���|jfddif��|�|j�d��|jdfddif��|�|j�d���|jfddd�f��|�|j�dd���|jdfddd�f��|�|j���|jd	fd
dif��|�|j�d��|jd	dfd
dif��|�|j�d���|jd	fddd�f��|�|j�dd���|jd	dfddd�f��|�|j�|jdd���|jd	dfddd�f��|�|j���|jfddd
�f��dS)Nr`r'r(rEr9r>r:)r>rEr@r?rArDr&)rOr>r-r.r!r/r6r0r\s rrjz'TestPartialMethod.test_arg_combinations�s����������)�)�T�V�I�r�?�;�;�;���������*�*�d�f�a�[�"�,=�>�>�>��������!��,�,���y�3��(�.C�D�D�D���������Q��/�/�4�6�1�+��Q�x�1H�I�I�I������*�*�,�,����{�B�.?�@�@�@������*�*�1�-�-����A���/C�D�D�D������*�*�Q�*�/�/�4�6�1�+��Q�x�1H�I�I�I������*�*�1��*�2�2�d�f�a��^�c�1�X�4N�O�O�O��������*�*�d�f�Y��a��,A�B�B�B���������+�+�t�v�q�k�C��8�-D�E�E�E��������1��-�-���	���;K�;K�/L�M�M�M���������a��0�0�D�F�A�;�a�a�@P�@P�2Q�R�R�R����������$�&�!��s�A�h�(?�@�@�@��������Q���4�6�1�a�.�3��(�)C�D�D�D��������q��)�)�T�V�Q�K�q�q�9I�9I�+J�K�K�K��������Q�!��,�,����1�~�Q�Q�?O�?O�.P�Q�Q�Q��������T�V�Q�!��4�4����1�~�Q�UV�GW�GW�6X�Y�Y�Y������-�-�/�/�4�6�)�a�QR�=S�=S�1T�U�U�U�U�Urc�\�|�|j���|jddfif��|�|j�d��|jdddfif��|�|j�d���|jddfddif��|�|j�dd���|jdddfddif��|�|j�|jdd���|jdddfddif��dS)Nr9r`r'rbr+rd)rOr>r�r6r\s r�test_nestedzTestPartialMethod.test_nesteds�����������D�F�A�q�>�2�*>�?�?�?��������q�)�)�T�V�Q��1�,=�r�+B�C�C�C����������+�+�t�v�q�!�n�s�A�h�-G�H�H�H��������q�A��.�.�$�&�!�Q��1B�S�!�H�0M�N�N�N��������t�v�q�A��6�6�$�&�!�Q��9J�S�RS�H�8U�V�V�V�V�Vrc�`�|�|j���|jdfddif��|�|j�d��|jddfddif��|�|j�d���|jdfddd�f��|�|j�dd���|jddfddd�f��|�|j�|jdd���|jddfddd�f��dS)NrbrEr'r`r)r+�rErd)rOr>r1r6r\s r�test_over_partialz#TestPartialMethod.test_over_partials5�������,�,�.�.�$�&�!��s�A�h�0G�H�H�H������,�,�Q�/�/�4�6�1�a�.�3��(�1K�L�L�L������,�,�q�,�1�1�T�V�Q�K�q�q�AQ�AQ�3R�S�S�S������,�,�Q�!�,�4�4����1�~�Q�UV�GW�GW�6X�Y�Y�Y������,�,�T�V�Q�!�,�<�<����1�~�UV�]^�O_�O_�>`�a�a�a�a�arc�r�|j}|�|jj|��|�|jj|��|�|jj|��|�|jj|j��|�|jjj|j��dSr)r>r�r/�__self__r�r1r5r6�r1�objs  r�test_bound_method_introspectionz1TestPartialMethod.test_bound_method_introspections����f���
�
�c�h�'��-�-�-��
�
�c�j�)�3�/�/�/��
�
�c�&�/��5�5�5��
�
�c�g�&���/�/�/��
�
�d�f�j�)�4�6�2�2�2�2�2rc��|j}|�t|jd����|�t|jd����|�t|jd����|�t|jd����|�t|jjd����dS)Nr>)r6�assertFalse�hasattrr/r�r1r3r>r?s  r�test_unbound_method_retrievalz/TestPartialMethod.test_unbound_method_retrievals����f��������:�6�6�7�7�7�������Z�8�8�9�9�9������!1�:�>�>�?�?�?�������Z�8�8�9�9�9��������
�;�;�<�<�<�<�<rc	��|j|jfD�]�}|�|���5|�|���dif��|�|�d��dif��|�|�d���dddif��|�|�dd���dddif��|�|���|jfddif��|�|�d��|jdfddif��|�|�d�	��|jfddd
�f��|�|�dd�	��|jdfddd
�f��ddd��n#1swxYwY���dS)N�r@)r)r`)r)r`r)r+rdr*r(r;)r6r>�subTestrOr3r5r?s  r�test_descriptorsz"TestPartialMethod.test_descriptors s���F�D�F�#�
	S�
	S�C����#��&�&�	
S�	
S�� � �������b�z�:�:�:�� � ����A������=�=�=�� � ����a����4�#�q��2B�C�C�C�� � ����A���!3�!3�f�s�A�h�5G�H�H�H�� � ������d�f�Y��a��,A�B�B�B�� � �������t�v�q�k�C��8�-D�E�E�E�� � ����1������	���;K�;K�/L�M�M�M�� � �����a����D�F�A�;�a�a�@P�@P�2Q�R�R�R�	
S�	
S�	
S�	
S�	
S�	
S�	
S�	
S�	
S�	
S�	
S����	
S�	
S�	
S�	
S��
	S�
	Ss�FF9�9F=	�F=	c��|�|j�d���|jfddif��|�|j�|jd���|jfddif��dS)Nr@rar>)rOr>r!r6r\s r�test_overriding_keywordsz*TestPartialMethod.test_overriding_keywords-sr���������1��-�-���	�C��8�/D�E�E�E����������1��5�5���	�C��8�7L�M�M�M�M�Mrc��|�t��5Gd�dt��}ddd��n#1swxYwY|�t��5Gd�d��}ddd��n#1swxYwY|�t��5Gd�d��}ddd��dS#1swxYwYdS)Nc�0�eZdZejdd��ZdS)�.TestPartialMethod.test_invalid_args.<locals>.BNr9�r(r)r*r
r,�methodrrr�BrN3s"������0��0��q�9�9���rrQc�,�eZdZej��ZdS)rNNrOrrrrQz.TestPartialMethod.test_invalid_args.<locals>.B6s������0��0�2�2���rc�2�eZdZejed���ZdS)rNr9)r r>N)r(r)r*r
r,rrPrrrrQz.TestPartialMethod.test_invalid_args.<locals>.B9s%������0��0�g��C�C�C���r)rYrZr�)r1rQs  r�test_invalid_argsz#TestPartialMethod.test_invalid_args1s���
�
�
�y�
)�
)�	:�	:�
:�
:�
:�
:�
:�F�
:�
:�
:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��
�
�y�
)�
)�	3�	3�
3�
3�
3�
3�
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��
�
�y�
)�
)�	D�	D�
D�
D�
D�
D�
D�
D�
D�
D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds1�;�?�?� A:�:A>�A>�B:�:B>�B>c��|�tt|j��d��d�t
����dS)Nr/z#functools.partialmethod({}, 3, b=4))rOr��varsr6�formatrr\s rr�zTestPartialMethod.test_repr<sQ������d�4�6�l�l�6�2�3�3�>�E�E�g�N�N�	P�	P�	P�	P�	Prc�r�Gd�dtj��}|�|jj��|�|jj��|jj|jj|jj	|jj
|jjfD]&}|�t|dd�����'dS)Nc�P�eZdZejd���Zejed��ZdS)�1TestPartialMethod.test_abstract.<locals>.Abstractc��dSrr�r1rJr�s   r�addz5TestPartialMethod.test_abstract.<locals>.Abstract.addCs���rr`N)	r(r)r*�abc�abstractmethodr]r
r,�add5rrr�AbstractrZAsA������
�
�
�
� �
�
�+�9�*�3��2�2�D�D�Drra�__isabstractmethod__F)r^�ABCMetarMr]rbr`r6r3r5r1r�r/rCr�)r1rar s   r�
test_abstractzTestPartialMethod.test_abstract@s���	3�	3�	3�	3�	3�s�{�	3�	3�	3�	
�����9�:�:�:�����
�:�;�;�;��V�]�D�F�J���0C�T�V�]�TX�TZ�T_�`�	K�	K�D����W�T�+A�5�I�I�J�J�J�J�	K�	Krc��d�}tj|d��}|�|d��|dd����dS)Nc��||zSrrr=s  rr�z1TestPartialMethod.test_positional_only.<locals>.fP����q�5�Lrr9r:)r
rLrOr�s   r�test_positional_onlyz&TestPartialMethod.test_positional_onlyOsS��	�	�	�
��a��#�#�������1���q�q��A�w�w�'�'�'�'�'rN)r(r)r*r�r6r>rjr9r<rArErIrKrTr�rdrhrrrr#r#�s������A�A�A�A�A�F�A�A�A�	
����A�V�V�V�2W�W�W�b�b�b�3�3�3�=�=�=�S�S�S�N�N�N�	D�	D�	D�P�P�P�
K�
K�
K�(�(�(�(�(rr#c��eZdZejejfd�Zd�Zd�Ze	j
ejj
dkd��d���Zd�Zd�Zd	�Zeje	j
ejj
dkd��d
�����ZdS)�TestUpdateWrapperc�\�|D]4}|�t||��t||�����5|D]V}t||��}t||��}|D]1}|dkr|dkr�|�||||���2�W|�|j|��dS)Nr"�__wrapped__)r�r�rl)	r1�wrapper�wrapped�assigned�updatedr�wrapper_attr�wrapped_attrr�s	         r�
check_wrapperzTestUpdateWrapper.check_wrapperYs����	J�	J�D��M�M�'�'�4�0�0�'�'�4�2H�2H�I�I�I�I��	D�	D�D�"�7�D�1�1�L�"�7�D�1�1�L�#�
D�
D���:�%�%�#��*>�*>���
�
�l�3�/��c�1B�C�C�C�C�	
D�	
�
�
�g�)�7�3�3�3�3�3rc�`�d	d�}d|_d|_d
d�}tj||��||fS)Nr>�This is a new annotationc��dS��This is a testNrras rr�z,TestUpdateWrapper._default_update.<locals>.fm����Dr�This is also a testzThis is a bald faced lier?�This is the prior annotationc��dSrrrcs rrmz2TestUpdateWrapper._default_update.<locals>.wrapperr����Dr)r>ru)r?r{)r�rlr
�update_wrapper�r1r�rms   r�_default_updatez!TestUpdateWrapper._default_updatelsW��	�	�	�	�'���2��
�	�	�	�	�� ��!�,�,�,���z�rc��|���\}}|�||��|�|j|��|�|jd��|�|j|j��|�|jd��|�|jdd��|�	d|j��dS)Nr�rzr>rur?)
r�rsr�rlrOr(r*r��__annotations__�assertNotIn�r1rmr�s   r�test_default_updatez%TestUpdateWrapper.test_default_updatews����)�)�+�+�
������7�A�&�&�&��
�
�g�)�1�-�-�-�����)�3�/�/�/�����-�q�~�>�>�>������'<�=�=�=�����0��5�7Q�R�R�R�����g�5�6�6�6�6�6rr:�)Docstrings are omitted with -O2 and abovec�j�|���\}}|�|jd��dS�Nrx�r�rO�__doc__r�s   r�test_default_update_docz)TestUpdateWrapper.test_default_update_doc��8���)�)�+�+�
��������*:�;�;�;�;�;rc��d�}d|_d�}tj||dd��|�||dd��|�|jd��|�|j|j��|�|jd��|�|j	i��|�
t|d����dS)Nc��dSrwrrrrr�z+TestUpdateWrapper.test_no_update.<locals>.f�ryrrzc��dSrrrrrrmz1TestUpdateWrapper.test_no_update.<locals>.wrapper�r}rrrmr�)r�r
r~rsrOr(�assertNotEqualr*r�r�rCrDrs   r�test_no_updatez TestUpdateWrapper.test_no_update�s���	�	�	�'���	�	�	�� ��!�R��4�4�4����7�A�r�2�.�.�.�����)�9�5�5�5����G�0�!�.�A�A�A������$�/�/�/�����0�"�5�5�5������&�1�1�2�2�2�2�2rc���d�}d|_tddd���|_d�}i|_d}d	}tj||||��|�||||��|�|jd
��|�|j	|j	��|�|j
d��|�|jd��|�|j|j��dS)Nc��dSrrrrrr�z2TestUpdateWrapper.test_selective_update.<locals>.f�r}r�This is a different testr9r:r@rGc��dSrrrrrrmz8TestUpdateWrapper.test_selective_update.<locals>.wrapper�r}rr���	dict_attrrm)r�rPr�r
r~rsrOr(r�r*r��r1r�rm�assign�updates     r�test_selective_updatez'TestUpdateWrapper.test_selective_update�s��	�	�	�+����Q�!�q�)�)�)���	�	�	��������� ��!�V�V�<�<�<����7�A�v�v�6�6�6�����)�9�5�5�5����G�0�!�.�A�A�A������$�/�/�/������'A�B�B�B�����*�A�K�8�8�8�8�8rc��d�}d�}i|_d}d}tj||||��|�d|j��|�|ji��|`|�t��5tj||||��ddd��n#1swxYwYd|_|�t��5tj||||��ddd��dS#1swxYwYdS)Nc��dSrrrrrr�z4TestUpdateWrapper.test_missing_attributes.<locals>.f�r}rc��dSrrrrrrmz:TestUpdateWrapper.test_missing_attributes.<locals>.wrapper�r}rr�r�r�r9)r�r
r~r�r"rOrYrr�s     r�test_missing_attributesz)TestUpdateWrapper.test_missing_attributes�s���	�	�	�	�	�	��������� ��!�V�V�<�<�<������!1�2�2�2�����*�B�/�/�/���
�
�
�~�
.�
.�	A�	A��$�W�a���@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A����
�
�
�~�
.�
.�	A�	A��$�W�a���@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As$�;B�B#�&B#�C0�0C4�7C4c��d�}tj|t��|�|jd��|�|j�d����|�|ji��dS)Nc��dSrrrrrrmz6TestUpdateWrapper.test_builtin_update.<locals>.wrapper�r}rr�zmax()	r
r~r�rOr(rMr��
startswithr�)r1rms  r�test_builtin_updatez%TestUpdateWrapper.test_builtin_update�s~��
	�	�	�� ��#�.�.�.�����)�5�1�1�1������2�2�6�:�:�;�;�;�����0�"�5�5�5�5�5rN)r(r)r*r
�WRAPPER_ASSIGNMENTS�WRAPPER_UPDATESrsr�r��unittest�skipIfr�flags�optimizer�r�r�r�r�requires_docstringsr�rrrrjrjWs������ )�<�'�7�4�4�4�4�&	�	�	�7�7�7��X�_�S�Y�'�1�,�@�B�B�<�<�B�B�<�
3�
3�
3�9�9�9�$A�A�A�(
� ��X�_�S�Y�'�1�,�@�B�B�6�6�B�B�!� �6�6�6rrjc�v�eZdZd�Zd�Zejejj	dkd��d���Z
d�Zd�ZdS)	�	TestWrapsc�f�d�}d|_d|_tj|��d���}||fS)Nc��dSrwrrrrr�z$TestWraps._default_update.<locals>.f�ryrrzzThis is still a bald faced liec��dSrrrrrrmz*TestWraps._default_update.<locals>.wrapper�ryr)r�rlr
�wrapsrs   rr�zTestWraps._default_update�sO��	�	�	�'���8��
�	���	�	�	�	�
�	�	���z�rc��|���\}}|�||��|�|jd��|�|j|j��|�|jd��dS)Nr�rz)r�rsrOr(r*r�r�s   rr�zTestWraps.test_default_update�s����)�)�+�+�
������7�A�&�&�&�����)�3�/�/�/�����-�q�~�>�>�>������'<�=�=�=�=�=rr:r�c�j�|���\}}|�|jd��dSr�r�)r1rm�_s   rr�z!TestWraps.test_default_update_doc�r�rc�z�d�}d|_tj|dd��d���}|�||dd��|�|jd��|�|j|j��|�|jd��|�	t|d����dS)Nc��dSrwrrrrr�z#TestWraps.test_no_update.<locals>.f�ryrrzrc��dSrrrrrrmz)TestWraps.test_no_update.<locals>.wrapper�ryrrmr�)r�r
r�rsrOr(r�r*r�rCrDrs   rr�zTestWraps.test_no_update�s���	�	�	�'���	���B��	#�	#�	�	�
$�	#�	����7�A�r�2�.�.�.�����)�9�5�5�5����G�0�!�.�A�A�A������$�/�/�/������&�1�1�2�2�2�2�2rc��d�}d|_tddd���|_d�}d}d	}tj|||��|d
�����}|�||||��|�|jd��|�|j	|j	��|�|j
d��|�|jd��|�|j|j��dS)Nc��dSrrrrrr�z*TestWraps.test_selective_update.<locals>.f�r}rr�r9r:r@rGc��i|_|Srr�)r�s r�
add_dict_attrz6TestWraps.test_selective_update.<locals>.add_dict_attr�s���A�K��Hrr�r�c��dSrrrrrrmz0TestWraps.test_selective_update.<locals>.wrapper�s	��
�Drrm)r�rPr�r
r�rsrOr(r�r*r�)r1r�r�r�r�rms      rr�zTestWraps.test_selective_update�s��	�	�	�+����Q�!�q�)�)�)���	�	�	�����	���F�F�	+�	+�	�	�	�
��
,�	+�	����7�A�v�v�6�6�6�����)�9�5�5�5����G�0�!�.�A�A�A������$�/�/�/������'A�B�B�B�����*�A�K�8�8�8�8�8rN)
r(r)r*r�r�r�r�rr�r�r�r�r�rrrr�r��s�������	�	�	�>�>�>��X�_�S�Y�'�1�,�@�B�B�<�<�B�B�<�3�3�3�9�9�9�9�9rr�c��eZdZd�Zd�ZdS)�
TestReducec	�n�Gd�d��}d�}|�|�|gd�d��d��|�|�|ddggd	d
ggg��gd���|�|�d�td
d��d��d��|�|�d�td
d��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����Gd�d��}|�t|j||����|�|�|gd��d��|�|�|gd��d��Gd�d��}|�t|jd|����dS)Nc� �eZdZd�Zd�Zd�ZdS)�'TestReduce.test_reduce.<locals>.Squaresc�"�||_g|_dSr)r��sofar)r1r�s  rrz0TestReduce.test_reduce.<locals>.Squares.__init__
s�������
�
�
rc�*�t|j��Sr)�lenr�r\s rr�z/TestReduce.test_reduce.<locals>.Squares.__len__s���4�:���&rc���d|cxkr|jks	nt�t|j��}||kr(|j�||z��|dz
}||k�(|j|S)Nrr9)r�r�r�r��append)r1�i�ns   rr�z3TestReduce.test_reduce.<locals>.Squares.__getitem__sz���A�(�(�(�(���(�(�(�(�
�*:���
�O�O���1�f�f��J�%�%�a��c�*�*�*���F�A��1�f�f��z�!�}�$rN)r(r)r*rr�r�rrr�Squaresr�	sA������
 �
 �
 �
'�
'�
'�
%�
%�
%�
%�
%rr�c��||zSrrrs  rr]z#TestReduce.test_reduce.<locals>.addrgrrGr�r^r>rErd�w)r>rErdr�c��||zSrrrs  rrKz(TestReduce.test_reduce.<locals>.<lambda>s
��!�A�#�rr:r)r9i�c��||zSrrrs  rrKz(TestReduce.test_reduce.<locals>.<lambda>!s
��Q�q�S�r�lh�r;ir�*�1)r�r�rc��eZdZd�ZdS)�/TestReduce.test_reduce.<locals>.TestFailingIterc��t�r��RuntimeErrorr\s r�__iter__z8TestReduce.test_reduce.<locals>.TestFailingIter.__iter__3s��"�"rN)r(r)r*r�rrr�TestFailingIterr�2s#������
#�
#�
#�
#�
#rr�c��eZdZd�ZdS)�&TestReduce.test_reduce.<locals>.BadSeqc��t�r)�
ValueError)r1�indexs  rr�z2TestReduce.test_reduce.<locals>.BadSeq.__getitem__;s�� � rN)r(r)r*r�rrr�BadSeqr�:s#������
!�
!�
!�
!�
!rr�)rO�reducer�rYrZr�r�r�)r1r�r]r�r�s     r�test_reducezTestReduce.test_reduces���	%�	%�	%�	%�	%�	%�	%�	%�	�	�	�������S�/�/�/�2�>�>��F�F�F�����K�K��s�C�j�"�s�C�j�9�2�>�>����	
�	
�	
�	
������%5�%5�u�Q�q�z�z�1�E�E�t�L�L�L�����K�K�(�(�%��"�+�+�q�9�9��	
�	
�	
�	
������S�'�'�"�+�+�6�6��<�<�<�������S�'�'�"�+�+�q�9�9�3�?�?�?�������S�'�'�!�*�*�a�8�8�!�<�<�<����)�T�[�1�1�1����)�T�[�"�b�9�9�9����)�T�[�"�b�"�=�=�=�������R��-�-�s�3�3�3�������R��S�1�1�3�7�7�7����)�T�[�"�h�?�?�?����)�T�[�#�r�:�:�:����)�T�[�#�r�:�:�:����)�T�[�#�r�:�:�:����)�T�[�#�v�x�x�@�@�@�	#�	#�	#�	#�	#�	#�	#�	#�	
���,���S�/�/�:K�:K�L�L�L�������S�"�d�3�3�T�:�:�:�������S�"�b�1�1�2�6�6�6�	!�	!�	!�	!�	!�	!�	!�	!�	
���*�d�k�2�v�v�x�x�@�@�@�@�@rc�0�Gd�d��}ddlm}|�|�||d����d��|�|�||d��d��d��|�t
|j||d����|�|�||d��d��d��|�|�||d	����d��|�|�||d	��d��d��d	d
dd�}|�|�||��d
�|�������dS)Nc��eZdZd�Zd�ZdS)�5TestReduce.test_iterator_usage.<locals>.SequenceClassc��||_dSr�r�)r1r�s  rrz>TestReduce.test_iterator_usage.<locals>.SequenceClass.__init__B�
������rc�>�d|cxkr|jkrnn|St��Nr)r�r�)r1r�s  rr�zATestReduce.test_iterator_usage.<locals>.SequenceClass.__getitem__Ds(����?�?�?�?�D�F�?�?�?�?�?��H�$�$rN)r(r)r*rr�rrr�
SequenceClassr�As2������
�
�
�
%�
%�
%�
%�
%rr�r)r]r`r;r��4r9r:r@)�one�two�threer�)�operatorr]rOr�rYrZr��keys)r1r�r]rds    r�test_iterator_usagezTestReduce.test_iterator_usage@s���	%�	%�	%�	%�	%�	%�	%�	%�	!� � � � � �������S�-�-��*:�*:�;�;�R�@�@�@�������S�-�-��*:�*:�B�?�?��D�D�D����)�T�[�#�}�}�Q�7G�7G�H�H�H�������S�-�-��*:�*:�B�?�?��D�D�D�������S�-�-��*:�*:�;�;�Q�?�?�?�������S�-�-��*:�*:�B�?�?��D�D�D��a�!�,�,��������S�!�,�,�b�g�g�a�f�f�h�h�.?�.?�@�@�@�@�@rN)r(r)r*r�r�rrrr�r�s;������5A�5A�5A�pA�A�A�A�Arr�c�$�eZdZer	ejZdSdS)�TestReduceCN)r(r)r*r�r�rrrr�r�Vs(�������$��#����$�$rr�c�.�eZdZeej��ZdS)�TestReducePyN)r(r)r*r2r�r�rrrr�r�\s ������
�\�,�-�
.�
.�F�F�Frr�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestCmpToKeyc��d�}|�|��}|�|d��|d����|�|d��|d����|�|d��|d����d�}|�|��}|�|d��|d����|�|d��|d����|�|d��|d����|�|d��|d����dS)	Nc��||k||kz
Srrrs  r�cmp1z*TestCmpToKey.test_cmp_to_key.<locals>.cmp1c�����E�a�!�e�$�$rr@r9c�@�t|��t|��z
Sr�r�rs  r�cmp2z*TestCmpToKey.test_cmp_to_key.<locals>.cmp2js���q�6�6�C��F�F�?�"rg@�4r:�35)�
cmp_to_keyrO�
assertGreater�assertGreaterEqual�
assertLess�assertLessEqualr�)r1r�r�r�s    r�test_cmp_to_keyzTestCmpToKey.test_cmp_to_keybsP��	%�	%�	%��o�o�d�#�#�������Q�����Q���(�(�(����3�3�q�6�6�3�3�q�6�6�*�*�*������A�����A���/�/�/�	#�	#�	#��o�o�d�#�#�������S���3�3�s�8�8�,�,�,������A�����D�	�	�*�*�*����S�S��V�V�S�S��Y�Y�/�/�/����C�C��F�F�C�C��I�I�.�.�.�.�.rc�<�d�}|�|���}|�|d���|d�����|�|d���|d�����|�tt
f��5|d��dkddd��n#1swxYwY|�tt
f��5d|d��kddd��n#1swxYwY|�t��5|���}ddd��n#1swxYwY|�t��5|�|d��}ddd��n#1swxYwY|�|��}|�t��5|��ddd��n#1swxYwY|�t��5|dd��ddd��dS#1swxYwYdS)Nc��||k||kz
Srrrs  rr�z4TestCmpToKey.test_cmp_to_key_arguments.<locals>.cmp1sr�r��mycmpr@rGr9)r�rOrrYrZr�r1r�r�s   r�test_cmp_to_key_argumentsz&TestCmpToKey.test_cmp_to_key_argumentsrsv��	%�	%�	%��o�o�D�o�)�)�����������S�S�Q�Z�Z�Z�0�0�0����3�3�1�:�:�:�s�s�q�z�z�z�2�2�2�
�
�
�	�>�:�
;�
;�	�	��C��F�F�Q�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�	�>�:�
;�
;�	�	�
���A���J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	$�	$��/�/�#�#�C�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
�
�
�y�
)�
)�	.�	.��/�/�$��-�-�C�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��o�o�d�#�#��
�
�
�y�
)�
)�	�	��C�E�E�E�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��C��d�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sl�B+�+B/�2B/�C3�3C7�:C7�D9�9D=�D=�F�F�F�;G�G�G�7
H�H�Hc���d�}|�|��}|�t��5|d��|d��kddd��n#1swxYwYGd�d����fd�}|�t��5|d��|d��kddd��dS#1swxYwYdS)Nc��t�r�r�rs  rr�z'TestCmpToKey.test_bad_cmp.<locals>.cmp1�s��#�#rr@r9c��eZdZd�ZdS)�)TestCmpToKey.test_bad_cmp.<locals>.BadCmpc��t�rr
r0s  r�__lt__z0TestCmpToKey.test_bad_cmp.<locals>.BadCmp.__lt__�s��'�'rN)r(r)r*rrrr�BadCmpr�s#������
(�
(�
(�
(�
(rrc������Srr)rJr�rs  �rr�z'TestCmpToKey.test_bad_cmp.<locals>.cmp1�s����6�8�8�Or)r�rYr�)r1r�r�rs   @r�test_bad_cmpzTestCmpToKey.test_bad_cmp�sy���	$�	$�	$��o�o�d�#�#��
�
�
�0�
1�
1�	�	��C��F�F�S�S��V�V�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	(�	(�	(�	(�	(�	(�	(�	(�	�	�	�	�	�
�
�
�0�
1�
1�	�	��C��F�F�S�S��V�V�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s#�A�A� A�B6�6B:�=B:c��d�}|�|���}|�|d��jd��dS)Nc��||k||kz
Srrrs  rr�z)TestCmpToKey.test_obj_field.<locals>.cmp1�r�rr�2)r�rOr@r	s   r�test_obj_fieldzTestCmpToKey.test_obj_field�sJ��	%�	%�	%��o�o�D�o�)�)�������R����b�)�)�)�)�)rc��d�}|�ttd��|�|�����gd���dS)Nc��||z
Srrrs  rrz)TestCmpToKey.test_sort_int.<locals>.mycmp�rgrr`�r�)rAr@r:r9r)rO�sortedr�r�)r1rs  r�
test_sort_intzTestCmpToKey.test_sort_int�s[��	�	�	������a���d�o�o�e�.D�.D�E�E�E�(���	*�	*�	*�	*�	*rc��d�}gd�}t||�|�����}|�d�|D��gd���dS)Nc�X�t|��t|��}}||k||kz
Srr�rs  rrz-TestCmpToKey.test_sort_int_str.<locals>.mycmp�s*���q�6�6�3�q�6�6�q�A���E�a�!�e�$�$r)	r`�3rbr:�0r�rA�10r9rc�,�g|]}t|����Srr�)r�r�s  rr�z2TestCmpToKey.test_sort_int_str.<locals>.<listcomp>�s��9�9�9��#�e�*�*�9�9�9r)	rr9r9r:r@rAr`rbr;)rr�rO)r1r�valuess   r�test_sort_int_strzTestCmpToKey.test_sort_int_str�sx��	%�	%�	%�6�5�5����D�O�O�E�$:�$:�;�;�;�����9�9�&�9�9�9�5�5�5�	7�	7�	7�	7�	7rc���d�}|�|��}|d��}|�tt|��|�|t
jj��dS)Nc��||z
Srrrs  rrz%TestCmpToKey.test_hash.<locals>.mycmp�rgrr;)r�rYrZ�hash�assertNotIsInstance�collectionsr^�Hashable)r1rr��ks    r�	test_hashzTestCmpToKey.test_hash�sh��	�	�	��o�o�e�$�$���C��G�G�����)�T�1�-�-�-�� � ��K�O�$<�=�=�=�=�=rN)
r(r)r*rr
rrrr%r-rrrr�r�`s}������/�/�/� ���(
�
�
�*�*�*�*�*�*�7�7�7�>�>�>�>�>rr�c�@�eZdZerejZejd���ZdS)�
TestCmpToKeyCc�z�tj|tt�d������dSr)r�check_disallow_instantiationr�r�r�r\s r�test_disallow_instantiationz)TestCmpToKeyC.test_disallow_instantiation�s>��	�,��$�{�-�-�d�3�3�4�4�	
�	
�	
�	
�	
rN)r(r)r*r�r�r�cpython_onlyr2rrrr/r/�sA�������,� �+�
���
�
���
�
�
rr/c�.�eZdZeej��ZdS)�TestCmpToKeyPyN)r(r)r*r2r�r�rrrr5r5�s ��������l�5�6�6�J�J�Jrr5c�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�TestTotalOrderingc��tjGd�d����}|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��dS)Nc� �eZdZd�Zd�Zd�ZdS)�3TestTotalOrdering.test_total_ordering_lt.<locals>.Ac��||_dSr�r��r1r�s  rrz<TestTotalOrdering.test_total_ordering_lt.<locals>.A.__init__��
��"��
�
�
rc�"�|j|jkSrr<r0s  rrz:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__lt__�����z�E�K�/�/rc�"�|j|jkSrr<r0s  r�__eq__z:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__eq__�����z�U�[�0�0rN�r(r)r*rrrBrrrr6r:��A������
#�
#�
#�
0�
0�
0�
1�
1�
1�
1�
1rr6r9r:�r
�total_orderingrMrC�r1r6s  r�test_total_ordering_ltz(TestTotalOrdering.test_total_ordering_lt��L��	�	!�	1�	1�	1�	1�	1�	1�	1�
"�	!�	1�	
�����!���q�q��t�t��$�$�$������!���q�q��t�t��$�$�$������!�����!����%�%�%������!�����!����%�%�%������!�����!����%�%�%������!�����!����%�%�%������1�����!����%�%�%�%�%rc��tjGd�d����}|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��dS)Nc� �eZdZd�Zd�Zd�ZdS)�3TestTotalOrdering.test_total_ordering_le.<locals>.Ac��||_dSrr<r=s  rrz<TestTotalOrdering.test_total_ordering_le.<locals>.A.__init__�r>rc�"�|j|jkSrr<r0s  r�__le__z:TestTotalOrdering.test_total_ordering_le.<locals>.A.__le__�rCrc�"�|j|jkSrr<r0s  rrBz:TestTotalOrdering.test_total_ordering_le.<locals>.A.__eq__�rCrN)r(r)r*rrPrBrrrr6rM��A������
#�
#�
#�
1�
1�
1�
1�
1�
1�
1�
1rr6r9r:rFrHs  r�test_total_ordering_lez(TestTotalOrdering.test_total_ordering_le��L��	�	!�	1�	1�	1�	1�	1�	1�	1�
"�	!�	1�	
�����!���q�q��t�t��$�$�$������!���q�q��t�t��$�$�$������!�����!����%�%�%������!�����!����%�%�%������!�����!����%�%�%������!�����!����%�%�%������1�����1����&�&�&�&�&rc��tjGd�d����}|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��dS)Nc� �eZdZd�Zd�Zd�ZdS)�3TestTotalOrdering.test_total_ordering_gt.<locals>.Ac��||_dSrr<r=s  rrz<TestTotalOrdering.test_total_ordering_gt.<locals>.A.__init__�r>rc�"�|j|jkSrr<r0s  r�__gt__z:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__gt__�r@rc�"�|j|jkSrr<r0s  rrBz:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__eq__�rCrN)r(r)r*rrZrBrrrr6rW�rErr6r9r:rFrHs  r�test_total_ordering_gtz(TestTotalOrdering.test_total_ordering_gt�rJrc��tjGd�d����}|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��dS)Nc� �eZdZd�Zd�Zd�ZdS)�3TestTotalOrdering.test_total_ordering_ge.<locals>.Ac��||_dSrr<r=s  rrz<TestTotalOrdering.test_total_ordering_ge.<locals>.A.__init__�r>rc�"�|j|jkSrr<r0s  r�__ge__z:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__ge__�rCrc�"�|j|jkSrr<r0s  rrBz:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__eq__rCrN)r(r)r*rrbrBrrrr6r_�rRrr6r9r:rFrHs  r�test_total_ordering_gez(TestTotalOrdering.test_total_ordering_ge�rTrc�T�tjGd�dt����}|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��|�|d��|d��k��dS)Nc��eZdZdS)�=TestTotalOrdering.test_total_ordering_no_overwrite.<locals>.ANr'rrrr6rg��������Drr6r9r:)r
rGr�rMrHs  r� test_total_ordering_no_overwritez2TestTotalOrdering.test_total_ordering_no_overwrite
s$��	�	!�	�	�	�	�	��	�	�
"�	!�	������!���q�q��t�t��$�$�$������!���q�q��t�t��$�$�$������!�����!����%�%�%������!�����!����%�%�%������!�����!����%�%�%������!�����!����%�%�%�%�%rc��|�t��5tjGd�d����}ddd��dS#1swxYwYdS)Nc��eZdZdS)�7TestTotalOrdering.test_no_operations_defined.<locals>.ANr'rrrr6rls�������rr6)rYr�r
rGrHs  r�test_no_operations_definedz,TestTotalOrdering.test_no_operations_defineds���
�
�
�z�
*�
*�	�	�
�
%�
�
�
�
�
�
�
�&�
%�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s� A�A�Ac�>�����tjG�fd�d�����tjG�fd�d�����tjG�fd�d�����tjG�fd�d�����|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��|��d	���d	��t��dS)
Nc�*��eZdZd�Z�fd�Z�fd�ZdS)�ATestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanc��||_dSrr<r=s  rrzJTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__init__ r>rc�H��t|���r|j|jkSdSr���
isinstancer��r1r2�ImplementsLessThans  �rrBzHTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__eq__"�*����e�%7�8�8�5��:���4�4��urc�R��t|���r|j|jkStSr�rtr��NotImplementedrus  �rrzHTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__lt__&�+����e�%7�8�8�4��:���3�3�%�%rN�r(r)r*rrBr�rvs�rrvrp�V�������
#�
#�
#�
�
�
�
�
�
&�
&�
&�
&�
&�
&�
&rrvc�*��eZdZd�Z�fd�Z�fd�ZdS)�HTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualToc��||_dSrr<r=s  rrzQTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__init__-r>rc�H��t|���r|j|jkSdSr�rs�r1r2�ImplementsLessThanEqualTos  �rrBzOTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__eq__/�*����e�%>�?�?�5��:���4�4��urc�R��t|���r|j|jkStSrryr�s  �rrPzOTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__le__3�+����e�%>�?�?�5��:���4�4�%�%rN�r(r)r*rrBrP�r�s�rr�r�+r~rr�c�*��eZdZd�Z�fd�Z�fd�ZdS)�DTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanc��||_dSrr<r=s  rrzMTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__init__:r>rc�H��t|���r|j|jkSdSr�rs�r1r2�ImplementsGreaterThans  �rrBzKTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__eq__<�*����e�%:�;�;�5��:���4�4��urc�R��t|���r|j|jkStSrryr�s  �rrZzKTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__gt__@�+����e�%:�;�;�4��:���3�3�%�%rN�r(r)r*rrBrZ�r�s�rr�r�8r~rr�c�*��eZdZd�Z�fd�Z�fd�ZdS)�KTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualToc��||_dSrr<r=s  rrzTTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__init__Gr>rc�H��t|���r|j|jkSdSr�rs�r1r2�ImplementsGreaterThanEqualTos  �rrBzRTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__eq__I�*����e�%A�B�B�5��:���4�4��urc�R��t|���r|j|jkStSrryr�s  �rrbzRTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__ge__M�+����e�%A�B�B�5��:���4�4�%�%rN�r(r)r*rrBrb�r�s�rr�r�Er~rr�r9)r
rGr�rPrzrZrbr)r1r�r�rvr�s @@@@r�test_notimplementedz%TestTotalOrdering.test_notimplementeds<������	�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�
�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�
�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�
�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�	
�
�
�(�(��+�+�2�2�1�5�5�~�F�F�F��
�
�(�(��+�+�2�2�1�5�5�~�F�F�F��
�
�(�(��+�+�2�2�1�5�5�~�F�F�F��
�
�/�/��2�2�9�9�!�<�<�n�M�M�M��
�
�/�/��2�2�9�9�!�<�<�n�M�M�M��
�
�/�/��2�2�9�9�!�<�<�n�M�M�M��
�
�+�+�A�.�.�5�5�a�8�8�.�I�I�I��
�
�+�+�A�.�.�5�5�a�8�8�.�I�I�I��
�
�+�+�A�.�.�5�5�a�8�8�.�I�I�I��
�
�2�2�1�5�5�<�<�Q�?�?��P�P�P��
�
�2�2�1�5�5�<�<�Q�?�?��P�P�P��
�
�2�2�1�5�5�<�<�Q�?�?��P�P�P�P�Prc��������tjG�fd�d�����tjG�fd�d�����tjG�fd�d�����tjG�fd�d�����tjG�fd	�d
�����|�d��5|�t��5�d��d
kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d���d��kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d
���d
��kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d���d��kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d���d��kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d���d��kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d���d��kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d���d��kddd��n#1swxYwYddd��n#1swxYwY|�d��5|�t��5�d���d��kddd��n#1swxYwYddd��n#1swxYwY|�d��5�d��}�d��}|�||��|�t��5||kddd��n#1swxYwYddd��n#1swxYwY|�d��5�d ��}�d ��}|�||��|�t��5||kddd��n#1swxYwYddd��dS#1swxYwYdS)!Nc�*��eZdZd�Z�fd�Z�fd�ZdS)�RTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanc��||_dSrr<r=s  rrz[TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__init__dr>rc�H��t|���r|j|jkSdSr�rsrus  �rrBzYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__eq__frwrc�R��t|���r|j|jkStSrryrus  �rrzYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__lt__jr{rNr|r}s�rrvr�br~rrvc�*��eZdZd�Z�fd�Z�fd�ZdS)�UTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanc��||_dSrr<r=s  rrz^TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__init__qr>rc�H��t|���r|j|jkSdSr�rsr�s  �rrBz\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__eq__sr�rc�R��t|���r|j|jkStSrryr�s  �rrZz\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__gt__wr�rNr�r�s�rr�r�or~rr�c�*��eZdZd�Z�fd�Z�fd�ZdS)�YTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualToc��||_dSrr<r=s  rrzbTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__init__~r>rc�H��t|���r|j|jkSdSr�rsr�s  �rrBz`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__eq__�r�rc�R��t|���r|j|jkStSrryr�s  �rrPz`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__le__�r�rNr�r�s�rr�r�|r~rr�c�*��eZdZd�Z�fd�Z�fd�ZdS)�\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualToc��||_dSrr<r=s  rrzeTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__init__�r>rc�H��t|���r|j|jkSdSr�rsr�s  �rrBzcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__eq__�r�rc�R��t|���r|j|jkStSrryr�s  �rrbzcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__ge__�r�rNr�r�s�rr�r��r~rr�c�&��eZdZd�Z�fd�Zd�ZdS)�XTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplementedc��||_dSrr<r=s  rrzaTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__init__�r>rc�H��t|���r|j|jkSdSr�rs)r1r2�ComparatorNotImplementeds  �rrBz_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__eq__�s*����e�%=�>�>�5��:���4�4��urc��tSr)rzr0s  rrz_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__lt__�s��%�%rNr|)r�s�rr�r��sL�������
#�
#�
#�
�
�
�
�
�
&�
&�
&�
&�
&rr�zLT < 1���r9zLT < LErzLT < GTzLE <= LTr:zLE <= GEr@zGT > GErAzGT > LTr`zGE >= GTr'zGE >= LErbz
GE when equalr)z
LE when equalr*)r
rGrHrYrZrO)r1r>r?r�r�r�rvr�s   @@@@@r�$test_type_error_when_not_implementedz6TestTotalOrdering.test_type_error_when_not_implemented_s��������
�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�
�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�
�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�
�	!�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
"�	!�
	&�
�	!�	&�	&�	&�	&�	&�	&�	&�	&�	&�
"�	!�	&��\�\�(�
#�
#�	'�	'�T�%6�%6�y�%A�%A�	'�	'���r�"�"�Q�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'��\�\�)�
$�
$�	A�	A�d�&7�&7�	�&B�&B�	A�	A���q�!�!�$=�$=�a�$@�$@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A��\�\�)�
$�
$�	=�	=�d�&7�&7�	�&B�&B�	=�	=���q�!�!�$9�$9�!�$<�$<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=��\�\�*�
%�
%�	B�	B�t�'8�'8��'C�'C�	B�	B�%�%�a�(�(�,>�,>�q�,A�,A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B��\�\�*�
%�
%�	L�	L�t�'8�'8��'C�'C�	L�	L�%�%�a�(�(�,H�,H��,K�,K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L��\�\�)�
$�
$�	G�	G�d�&7�&7�	�&B�&B�	G�	G�!�!�!�$�$�'C�'C�A�'F�'F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G��\�\�)�
$�
$�	=�	=�d�&7�&7�	�&B�&B�	=�	=�!�!�!�$�$�'9�'9�!�'<�'<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=��\�\�*�
%�
%�	H�	H�t�'8�'8��'C�'C�	H�	H�(�(��+�+�/D�/D�Q�/G�/G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H��\�\�*�
%�
%�	L�	L�t�'8�'8��'C�'C�	L�	L�(�(��+�+�/H�/H��/K�/K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L��\�\�/�
*�
*�	�	�(�(��+�+�A�(�(��+�+�A����Q��"�"�"��"�"�9�-�-�
�
��Q���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�		�	�	�	�	�	�	�	�	�	�	����	�	�	�	��\�\�/�
*�
*�	�	�(�(��+�+�A�(�(��+�+�A����Q��"�"�"��"�"�9�-�-�
�
��Q���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sT�D�C7�+D�7C;	�;D�>C;	�?D�D�D�.F�	E.�"F�.E2	�2F�5E2	�6F�F	�F	�%G<�G%�G<�%G)	�)G<�,G)	�-G<�<H�H�I3�7I�I3�I 	� I3�#I 	�$I3�3I7�:I7�K*�.K�K*�K	�K*�K	�K*�*K.�1K.�
M!�%M
�>M!�
M	�M!�M	�M!�!M%�(M%�O�O�5O�O	�O�O	�	O�O�O�8Q�P8�,Q�8P<	�<Q�?P<	�Q�Q�Q�/S�
R/�#S�/R3	�3S�6R3	�7S�S
�
S
�&AU�-U�4U�U	�U�U	�U�U�U�7AW)�>W�W)�W	�W)�W	�W)�)W-�0W-c	�P�ttjdz��D]�}dD]�}|�||���5t	t
|��}tjtj||����}|�||��ddd��n#1swxYwY����dS)Nr9)rrZrPrb)rPr�)	r�r�r�rHr��Orderable_LTr�r�r�)r1r�rrP�method_copys     rr�zTestTotalOrdering.test_pickle�s����6�2�Q�6�7�7�	7�	7�E�>�
7�
7���\�\��U�\�;�;�7�7�$�\�4�8�8�F�"(�,�v�|�F�E�/J�/J�"K�"K�K��M�M�+�v�6�6�6�7�7�7�7�7�7�7�7�7�7�7����7�7�7�7��
7�	7�	7s�AB�B� Bc���tjG�fd�dt�����Gd�d����}Gd�d����}|�||k��|�||k��dS)Nc�4���eZdZ�fd�Z�fd�Z�fd�Z�xZS)�WTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMetac�L��t���||||��Sr)�super�__new__)r5r�bases�ns�	__class__s    �rr�z_TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__new__�s����w�w���s�D�%��<�<�<rc�F��t|���s	|j|jkSr�rtr(�r1r2�SortableMetas  �rrz^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__lt__�s'���!�%��6�6����}�u�~�5�5rc�F��t|���s	|j|jkSrr�r�s  �rrBz^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__eq__�s'���!�%��6�6����}���6�6r)r(r)r*r�rrB�
__classcell__)r�r�s@�rr�r��sk��������
=�
=�
=�
=�
=�
6�
6�
6�
6�
6�

7�
7�
7�
7�
7�
7�
7�
7�
7rr�c��eZdZdS)�LTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.BNr'rrrrQr����������DrrQ��	metaclassc��eZdZdS)�LTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.ANr'rrrr6r��r�rr6)r
rGr�rMrC)r1rQr6r�s   @r�/test_total_ordering_for_metaclasses_issue_44605zATestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605�s����	�	!�	7�	7�	7�	7�	7�	7�	7�4�	7�	7�
"�	!�	7�	�	�	�	�	�,�	�	�	�	�	�	�	�	�	�,�	�	�	�	�	
����A���������Q������rN)
r(r)r*rIrSr\rdrirmr�r�r�r�rrrr7r7�s�������&�&�&�"'�'�'�"&�&�&�"'�'�'�"
&�
&�
&����AQ�AQ�AQ�Fi�i�i�V7�7�7� � � � � rr7c� �eZdZd�Zd�Zd�ZdS)r�c��||_dSrr<r=s  rrzOrderable_LT.__init__�s
����
�
�
rc�"�|j|jkSrr<r0s  rrzOrderable_LT.__lt__�s���z�E�K�'�'rc�"�|j|jkSrr<r0s  rrBzOrderable_LT.__eq__�s���z�U�[�(�(rNrDrrrr�r��sA���������(�(�(�)�)�)�)�)rr�c��eZdZd�ZdS)�	TestCachec	����|jj�fd����|��fd�td��D��gd���|�����|j�dddd���������|�����|j�dddd�����dS)Nc�N��|dkr|S�|dz
���|dz
��zS�Nr:r9r�r��fibs �rr�z!TestCache.test_cache.<locals>.fib��4����1�u�u����3�q��s�8�8�c�c�!�A�#�h�h�&�&rc�&��g|]
}�|����Srr�r�r�r�s  �rr�z(TestCache.test_cache.<locals>.<listcomp>�!���4�4�4�Q�#�#�a�&�&�4�4�4rr��rr9r9r:r@r`r)�
r��"�7�Y���iyib���hits�misses�maxsize�currsizer)�module�cacherOr��
cache_info�
_CacheInfo�cache_clear�r1r�s @r�
test_cachezTestCache.test_cache�s���	
��	�	'�	'�	'�	'�
�	�	'�	
���4�4�4�4�%��)�)�4�4�4�I�I�I�	K�	K�	K�������)�)��K�"�"��2�t�b�"�Q�Q�	S�	S�	S�������������)�)��K�"�"��!�T�A�"�N�N�	P�	P�	P�	P�	PrN)r(r)r*r�rrrr�r��s(������P�P�P�P�Prr�c�.�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zej��d���Zej��d���Zej��d���Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestLRUc�D�
�d�}|j�d���|��}|���\}}}}|�|d��|�|d��|�|d��|�|d��t	d��}t	d��D]N}t|��t|��}
}	||	|
��}||	|
��}|�||���O|���\}}}}|�||k��|�||zd��|�|d��|���|���\}}}}|�|d��|�|d��|�|d��||	|
��|���\}}}}|�|d��|�|d��|�|d��|�|j	|��|�	|	|
��|���\}}}}|�|d��|�|d��|�|d��|j�d���
fd���}|�|���j
d��d�
t	d��D] }|�|��d���!|��
d��|���\}}}}|�|d��|�|d��|�|d��|j�d���
fd	���}|�|���j
d��d�
t	d��D] }|�|��d���!|��
d��|���\}}}}|�|d
��|�|d��|�|d��|j�d���
fd���}|�|���j
d��d�
d
D]$}	|�||	��|	dz���%|��
d
��|���\}}}}|�|d��|�|d
��|�|d��dS)Nc��d|z|zS�Nr@rrs  r�origzTestLRU.test_lru.<locals>.orig����q�5�1�9�rr<�r�rr`��r9c����dz
�dS�Nr9r<r��f_cnts�rr�zTestLRU.test_lru.<locals>.f6����
�Q�J�E��2rc����dz
�dSrrrs�rr�zTestLRU.test_lru.<locals>.fFrrrAr:c����dz
�|dzS�Nr9r;r)rJrs �rr�zTestLRU.test_lru.<locals>.fVs���
�Q�J�E��R�4�Kr)rbr*rbr*rbr*r)r)r)r*r*r*r)r)r)rbr;�)r��	lru_cacher�rOr�rrMr�r�rlr�)r1rr�r�r�r�r��domainr�rJr��actualrqrs             @r�test_lruzTestLRU.test_lru
s����	�	�	�-�D�K�!�!�"�!�-�-�d�3�3��*+�,�,�.�.�'��f�g�x�����"�%�%�%�����1�%�%�%�����q�!�!�!������#�#�#��q�����t���	/�	/�A��&�>�>�6�&�>�>�q�A��Q�q�!�W�W�F��t�A�q�z�z�H����V�X�.�.�.�.�*+�,�,�.�.�'��f�g�x�����v�
�&�&�&��������-�-�-�����2�&�&�&�	�
�
����*+�,�,�.�.�'��f�g�x�����q�!�!�!������#�#�#�����1�%�%�%�	��!�Q����*+�,�,�.�.�'��f�g�x�����q�!�!�!������#�#�#�����1�%�%�%�	
�
�
�a�m�T�*�*�*�	�
�
�a�����*+�,�,�.�.�'��f�g�x�����q�!�!�!������#�#�#�����1�%�%�%�
��	�	�q�	!�	!�	�	�	�	�
"�	!�	�	
��������/��3�3�3����q���	&�	&�A����Q�Q�S�S�"�%�%�%�%������"�"�"�*+�,�,�.�.�'��f�g�x�����q�!�!�!������#�#�#�����1�%�%�%�
��	�	�q�	!�	!�	�	�	�	�
"�	!�	�	
��������/��3�3�3����q���	&�	&�A����Q�Q�S�S�"�%�%�%�%������"�"�"�*+�,�,�.�.�'��f�g�x�����q�!�!�!������#�#�#�����1�%�%�%�
��	�	�q�	!�	!�	�	�	�	�
"�	!�	�	
��������/��3�3�3���?�	)�	)�A����Q�Q�q�T�T�1�R�4�(�(�(�(������"�"�"�*+�,�,�.�.�'��f�g�x�����r�"�"�"������#�#�#�����1�%�%�%�%�%rc	��|jjd���}|�tt	|gd�����gd���|�|���jd��|�|���jd��|�|���jd��|�|���j	d��dS)Nc��|dzS�Nr:rrIs r�squarez(TestLRU.test_lru_no_args.<locals>.squaregs����6�Mr)r;r<r;)�di�rr9r:�)
r�r
rOr/rQr�r�r�r�r�)r1rs  r�test_lru_no_argszTestLRU.test_lru_no_argsfs���	
��	�	�	�
�	�	�	
����c�&�,�,�,�7�7�8�8�(���	*�	*�	*�����*�*�,�,�1�1�5�5�5�����*�*�,�,�3�Q�7�7�7�����*�*�,�,�4�c�:�:�:�����*�*�,�,�5�q�9�9�9�9�9rc����d�|j�d�����fd����td��D]%}|��|��d|�d����&|�����jd��|��d��d��|�����jd��dS)	NTr;rc�>��d|�d�}|dkr�r
d��|��}|S)N�.r<Fr)rJ�rvr��onces  ��rr�z%TestLRU.test_lru_bug_35780.<locals>.f{s6����Q����B��B�w�w�4�w����Q�q�T�T���Ir�rr<z.20.)r�r
r�rOr�r�)r1rJr�rs  @@r�test_lru_bug_35780zTestLRU.test_lru_bug_35780rs�������	
��	�	�r�	�	*�	*�	�	�	�	�	�
+�	*�	��r���	-�	-�A����Q�Q�q�T�T�8�q�8�8�8�,�,�,�,���������0�"�5�5�5�	
�����2����'�'�'���������0�"�5�5�5�5�5rc���|j���d���}|d��|dii��|�|���jd��dS)Nc��dSrrrIs rr�z%TestLRU.test_lru_bug_36650.<locals>.f�ryrrr9rn)r�r
rOr�r�r�s  r�test_lru_bug_36650zTestLRU.test_lru_bug_36650�ss��
��	�	�	 �	 �	�	�
!�	 �	�	
��!����	��
�
�r�
�
�
���������,�a�0�0�0�0�0rc�^�|j�d���d���}tj���}tj�d���|_tj�d���|_|�||d��d��|�|jjd��|�|�	��d��|�||d��d��|�|jjd	��|�|�	��d
��|�|dd	��d��|�|jjd	��|�|�	��d
��|�||d��d��|�|jjd��|�|�	��d��dS)Nr9rc��|dz|zSr�rrs  rr�z*TestLRU.test_lru_hash_only_once.<locals>.f�s���q�5�1�9�rr)�return_valuei�r�)rr9r9r9r:)r9r9r9r9r'r<)r9r:r9r9r@)r9r@r9r9)
r�r
r��mock�Mock�__mul__�__hash__rO�
call_countr�)r1r��mock_ints   r�test_lru_hash_only_oncezTestLRU.test_lru_hash_only_once�s���
��	�	�q�	�	)�	)�	�	�
*�	)�	��=�%�%�'�'��#�=�-�-�2�-�>�>���$�M�.�.�C�.�@�@���	
�����8�Q����,�,�,�����*�5�q�9�9�9����������6�6�6�	
�����8�Q����,�,�,�����*�5�q�9�9�9����������6�6�6�	
�����1�a���"�%�%�%�����*�5�q�9�9�9����������6�6�6�	
�����8�Q����,�,�,�����*�5�q�9�9�9����������6�6�6�6�6rc� �tj}	|j�d��t��t_dD]-}|�tdd|���|���.	|t_dS#|t_wxYw)NrA)
rrr9r:r@r@rAr`r'r9rbr:r9�abcdefghijklmn)�builtinsr�r�r
rO)r1�old_lenr�s   r�test_lru_reentrancy_with_lenz$TestLRU.test_lru_reentrancy_with_len�s����,��	#�3�4�;�0�0��3�3�C�8�8�H�L�<�
?�
?��� � ��%5�b�q�b�%9�!:�!:�A�>�>�>�>�
?�#�H�L�L�L��7�H�L�"�"�"�"s�A"A?�?B
c���|j���d���}|�|dd��d��|�|d��d��dS)Nc��|Srr�rs rr�z-TestLRU.test_lru_star_arg_handling.<locals>.f�s���Krr9r:rV)rV�r�r
rOr�s  r�test_lru_star_arg_handlingz"TestLRU.test_lru_star_arg_handling�sp��	
��	�	�	 �	 �	�	�
!�	 �	�	
�����1�a���&�)�)�)������6���I�.�.�.�.�.rc��|j�d���d���}|j�d���d���}|�t��5|g��ddd��n#1swxYwY|�t��5|g��ddd��dS#1swxYwYdS)Nrc��dSrr��os r�infinite_cachez3TestLRU.test_lru_type_error.<locals>.infinite_cache�ryrr;c��dSrrr8s r�
limited_cachez2TestLRU.test_lru_type_error.<locals>.limited_cache�ryr)r�r
rYrZ)r1r:r<s   r�test_lru_type_errorzTestLRU.test_lru_type_error�se��

��	�	�t�	�	,�	,�	�	�
-�	,�	�
��	�	�r�	�	*�	*�	�	�
+�	*�	��
�
�y�
)�
)�	�	��N�2����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�y�
)�
)�	�	��M�"����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s$�#A;�;A?�A?� B9�9B=�B=c	����|j�d����fd����|��fd�td��D��gd���|�����|j�dddd���������|�����|j�dddd�����dS)	Nrc�N��|dkr|S�|dz
���|dz
��zSr�rr�s �rr�z/TestLRU.test_lru_with_maxsize_none.<locals>.fib�r�rc�&��g|]
}�|����Srrr�s  �rr�z6TestLRU.test_lru_with_maxsize_none.<locals>.<listcomp>�r�rr�r�r�r�r�r�r
rOr�r�r�r�r�s @r�test_lru_with_maxsize_nonez"TestLRU.test_lru_with_maxsize_none�s���	
��	�	�t�	�	,�	,�	'�	'�	'�	'�
-�	,�	'�	
���4�4�4�4�%��)�)�4�4�4�I�I�I�	K�	K�	K�������)�)��K�"�"��2�t�b�"�Q�Q�	S�	S�	S�������������)�)��K�"�"��!�T�A�"�N�N�	P�	P�	P�	P�	Prc	�t��|j�d���d����dD]K}|��fd�td��D��t	td�������L|�����|j�dddd�	����dS)
Ni����rc��|Srrr�s r�eqz2TestLRU.test_lru_with_maxsize_negative.<locals>.eq�����Hrroc�&��g|]
}�|����Srr)r�r�rEs  �rr�z:TestLRU.test_lru_with_maxsize_negative.<locals>.<listcomp>�s!���8�8�8��b�b��e�e�8�8�8r�ri,r�)r�r
rOr�r/r�r�)r1r�rEs  @r�test_lru_with_maxsize_negativez&TestLRU.test_lru_with_maxsize_negative�s����	
��	�	�s�	�	+�	+�	�	�
,�	+�	��	L�	L�A����8�8�8�8�U�3�Z�Z�8�8�8�$�u�S�z�z�:J�:J�K�K�K�K����������K�"�"��#�q�1�"�M�M�	O�	O�	O�	O�	Orc���dD]�}|j�|��d���}|�|d��d��|�t��5}|d��ddd��n#1swxYwY|�|jj��|�t��5|d��ddd��n#1swxYwY��dS)N�Nrc��d|S)Nr^r�r�s rr z.TestLRU.test_lru_with_exceptions.<locals>.funcs���Q�x�rrr>r)r�r
rOrYr��assertIsNone�	exception�__context__)r1r�r �cms    r�test_lru_with_exceptionsz TestLRU.test_lru_with_exceptions�sh��#�
	�
	�G�
�[�
"�
"�7�
+�
+�
 �
 �,�
+�
 ����T�T�!�W�W�c�*�*�*��"�"�:�.�.�
�"���R����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����b�l�6�7�7�7��"�"�:�.�.�
�
���R����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��
	�
	s$�!A9�9A=	�A=	�=C�C	�C	c���dD�]�}|j�|d���d���}|�|d��d��|�t|d����td����|�|d��d��|�t|d����td����|�|d�	��d��|�t|d�	����td����|�|d�	��d��|�t|d�	����td����|�|���jd
��|�|���jd
�����dS)NrKT�r��typedc��||zSrrrIs rrz+TestLRU.test_lru_with_types.<locals>.squares���1�u�rr@r*g@g"@rIrA)r�r
rOr�r�r�r�)r1r�rs   r�test_lru_with_typeszTestLRU.test_lru_with_types
s���"�
	<�
	<�G�
�[�
"�
"�7�$�
"�
?�
?�
�
�@�
?�
����V�V�A�Y�Y��*�*�*����T�&�&��)�)�_�_�d�1�g�g�6�6�6����V�V�C�[�[�#�.�.�.����T�&�&��+�+�.�.��S�	�	�:�:�:����V�V�a�[�[�[�!�,�,�,����T�&�&�1�+�+�+�.�.��Q���8�8�8����V�V�c�]�]�]�C�0�0�0����T�&�&�3�-�-�-�0�0�$�s�)�)�<�<�<����V�.�.�0�0�5�q�9�9�9����V�.�.�0�0�7��;�;�;�;�
	<�
	<rc�F�|j�d���t��}|�|d��d��|�|d��d��|�|d��d��|�|d��d	��|�|d
��d��|�|d��d
��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��|�|d��d��Gd�dt��}|�||d����d��|�||d����d��|�||d����d��|�||d����d��|�||d����d��|�||d����d��dS)NT)rUr9r��True��?z1.0rr!F�False�z0.0r�z(1,))T)rZrnz(0,))F)r\c��eZdZdS)�8TestLRU.test_lru_cache_typed_is_not_recursive.<locals>.TNr'rrr�Tr^.r�rr_)r�r
r�rOr�)r1�cachedr_s   r�%test_lru_cache_typed_is_not_recursivez-TestLRU.test_lru_cache_typed_is_not_recursives���2���&�&�T�&�2�2�4�8�8����������C�(�(�(���������v�.�.�.���������e�,�,�,���������C�(�(�(����������0�0�0���������e�,�,�,���������v�.�.�.���������&�1�1�1����������0�0�0���������v�.�.�.�������)�)�6�2�2�2����������0�0�0�	�	�	�	�	��	�	�	�	
�������$�����&�1�1�1��������'�
�
�+�+�V�4�4�4��������&�	�	�*�*�F�3�3�3��������$�����&�1�1�1��������(���,�,�f�5�5�5��������&�	�	�*�*�F�3�3�3�3�3rc	����|j����fd����|��fd�td��D��gd���|�����|j�dddd���������|�����|j�dddd�����dS)	Nc�R��|dkr|S�|dz
����|dz
���zS�Nr:r9r�rr�s �rr�z/TestLRU.test_lru_with_keyword_args.<locals>.fib9�8����1�u�u����3��1��:�:�:���a��c�
�
�
�*�*rc�(��g|]}�|�����S�r�r�r��numberr�s  �rr�z6TestLRU.test_lru_with_keyword_args.<locals>.<listcomp>?s#���3�3�3�v�S�S�6�]�]�]�3�3�3rr�r�r�rr�rrAr�s @r�test_lru_with_keyword_argsz"TestLRU.test_lru_with_keyword_args8s���	
��	�	�	 �	 �	+�	+�	+�	+�
!�	 �	+�	
���3�3�3�3��r���3�3�3�I�I�I�	
�	
�	
�	
������)�)��K�"�"��2�s�R�"�P�P�	R�	R�	R�������������)�)��K�"�"��!�S�1�"�M�M�	O�	O�	O�	O�	Orc	����|j�d����fd����|��fd�td��D��gd���|�����|j�dddd���������|�����|j�dddd�����dS)	Nrc�R��|dkr|S�|dz
����|dz
���zSrdrr�s �rr�z<TestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.fibIrerc�(��g|]}�|�����Srgrrhs  �rr�zCTestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.<listcomp>Ns#���@�@�@�F�#�#��-�-�-�@�@�@rr�r�r�r�rrAr�s @r�'test_lru_with_keyword_args_maxsize_nonez/TestLRU.test_lru_with_keyword_args_maxsize_noneHs���	
��	�	�t�	�	,�	,�	+�	+�	+�	+�
-�	,�	+�	
���@�@�@�@�e�B�i�i�@�@�@�I�I�I�	K�	K�	K�������)�)��K�"�"��2�t�b�"�Q�Q�	S�	S�	S�������������)�)��K�"�"��!�T�A�"�N�N�	P�	P�	P�	P�	Prc	�b�|j�d���d���}|�|dd���ddg��|�|dd�	��ddg��|�|���|j�d
ddd�����dS)Nr;rc�D�t|�����Sr)r/�items)r�s rr�z$TestLRU.test_kwargs_order.<locals>.fXs��������'�'�'rr9r:r=)r>r9)r?r:)r?r>rr�)r�r
rOr�r�r�s  r�test_kwargs_orderzTestLRU.test_kwargs_orderVs���	
��	�	�r�	�	*�	*�	(�	(�
+�	*�	(������Q�!����x��&:�;�;�;������Q�!����x��&:�;�;�;����������K�"�"��!�R�!�"�L�L�	N�	N�	N�	N�	Nrc���dd�}|j���|��}|jjD]4}|�t	||��t	||�����5dS)N�zomg�zomg_annotationc��dS)zf doc stringr�r)rts rr�z,TestLRU.test_lru_cache_decoration.<locals>.fas���2r)rtru)r�r
r�rOr�)r1r��gr�s    r�test_lru_cache_decorationz!TestLRU.test_lru_cache_decoration`s���	�	�	�	�
$�D�K�!�!�#�#�A�&�&���K�3�	A�	A�D����W�Q��-�-�w�q�$�/?�/?�@�@�@�@�	A�	Arc����	�
���
�d\}�d���j�|�z�������	�	���\}}}}��|d��t	j���
�	����
fd��
�	��
fd�}t
j��}tj	d��	�
fd�t|��D��}tj|��5�
�
��ddd��n#1swxYwY�	���\}}}}�jtur3��||����|�|z|z
��n2��||����|�|z|z
����||��t	j|�	��g}|�
fd
�t|��D��z
}�
���tj|��5�
�
��ddd��n#1swxYwYt
j	|��dS#t
j	|��wxYw)N)r`�c��d|z|zSr�rrs  rrz-TestLRU.test_lru_cache_threaded.<locals>.origkrrrrc�����d��t���D],}���|d���|d�����-dS)Nr;r)�waitr�rO)r,r�r��mrr1�starts  �����r�fullz-TestLRU.test_lru_cache_threaded.<locals>.fullrs^����J�J�r�N�N�N��1�X�X�
6�
6��� � ���1�a���$�$�q�!�*�*�5�5�5�5�
6�
6rc�����d��td�z��D]}�����dS)Nr;r:)r}r�r�)r�r�r~rs ���r�clearz.TestLRU.test_lru_cache_threaded.<locals>.clearwsD����J�J�r�N�N�N��1�Q�3�Z�Z�
 �
 ���
�
�����
 �
 r���ư>c�>��g|]}tj�|g�����S�)�targetr��	threading�Thread�r�r,r�s  �rr�z3TestLRU.test_lru_cache_threaded.<locals>.<listcomp>�s;���*�*�*��!�'�t�1�#�>�>�>�*�*�*r�r�c�>��g|]}tj�|g�����Sr�r�r�s  �rr�z3TestLRU.test_lru_cache_threaded.<locals>.<listcomp>�s;���+�+�+��"�(��A�3�?�?�?�+�+�+r)r�r
r�rOr��Eventr�getswitchintervalr�setswitchintervalr�r�
start_threads�setr�rr�r�)r1r�r�r�r�r�r��orig_si�threadsr�r�r~rrs`        @@@@@r�test_lru_cache_threadedzTestLRU.test_lru_cache_threadedhs:�����������1�	�	�	�.�D�K�!�!�!�A�#�!�.�.�t�4�4��*+�,�,�.�.�'��f�g�x�����1�%�%�%���!�!��	6�	6�	6�	6�	6�	6�	6�	6�	6�
	 �	 �	 �	 �	 �	 �	 �
�'�)�)���!�$�'�'�'�	+�*�*�*�*� %�a���*�*�*�G�!�/��8�8�
�
��	�	����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�/0�l�l�n�n�+�D�&�'�8��{�l�*�*��$�$�V�Q�/�/�/��$�$�T�1�Q�3��<�8�8�8�8�� � ���+�+�+�� � ��q��s�V�|�4�4�4����X�q�)�)�)�!�'�u�5�5�5�6�G��+�+�+�+�!&�q���+�+�+�
+�G��K�K�M�M�M�!�/��8�8�
�
��	�	����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�!�'�*�*�*�*�*��C�!�'�*�*�*�*���sU�0/I�D�4I�D�I�D�DI�	H*�I�*H.�.I�1H.�2I�I!c
��������	�d\}�tj|dz���tj|dz���tj|dz����j��|z����fd����������dd�|zdf�������fd��	�	fd�t
|��D��}tj|��5t
���D]�}��	d����
����	d����
����	d����
��������d|dz|z�|z|dzf����	ddd��dS#1swxYwYdS)	N)r`rbr9rc�8����d��d|zS�Nr;r@)r})rJ�pauses �rr�z+TestLRU.test_lru_cache_threaded2.<locals>.f�s����J�J�r�N�N�N��q�5�Lrrc����t���D]N}��d�����|��d|z����d���OdSr�)r�r}rO)r�r�r~r1r�stops �����r�testz.TestLRU.test_lru_cache_threaded2.<locals>.test�sd����1�X�X�
�
���
�
�2����� � ���1���q�1�u�-�-�-��	�	�"�
�
�
�
�
�
rc�:��g|]}tj������S)r�r�)r�r,r�s  �rr�z4TestLRU.test_lru_cache_threaded2.<locals>.<listcomp>�s'���C�C�C�Q�9�#�4�0�0�0�C�C�Crr;)r��Barrierr�r
rOr�r�rr�r}�reset)
r1r�r�r�r�r~r�rr�r�s
`   @@@@@@r�test_lru_cache_threaded2z TestLRU.test_lru_cache_threaded2�s:������������1��!�!�A�#�&�&���!�!�A�#�&�&��� ��1��%�%��	
��	�	�q��s�	�	+�	+�	�	�	�	�
,�	+�	�	
��������!�Q��!��Q��8�8�8�	�	�	�	�	�	�	�	�	�
D�C�C�C�%��(�(�C�C�C��
�
+�G�
4�
4�	I�	I��1�X�X�
I�
I���
�
�2�����
�
�����
�
�2�������
�
�
��	�	�"�
�
�
����
�
�
�� � ������!�a��c�1�W�a��c�1�Q�3�1G�H�H�H�H�
I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is�"CF6�6F:�=F:c������j�d���d������fd���fd�tgd���D��}tj|��5	ddd��dS#1swxYwYdS)Nr:rc�4�tjd��d|zS)Ng{�G�z�?r@)�time�sleeprIs rr�z+TestLRU.test_lru_cache_threaded3.<locals>.f�s���J�s�O�O�O��q�5�Lrc�����|���5���|��d|z|��ddd��dS#1swxYwYdS)N)�threadr@)rHrO)r�rJr�r1s  ��rr�z.TestLRU.test_lru_cache_threaded3.<locals>.test�s�������Q��'�'�
1�
1�� � ���1���q�1�u�a�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�
1�
1s�$A	�	A
�A
c�F��g|]\}}tj�||f�����Sr�r�)r�r��vr�s   �rr�z4TestLRU.test_lru_cache_threaded3.<locals>.<listcomp>�sA���;�;�;��q�!��#�4�q�!�f�=�=�=�;�;�;r)r9r:r:r@r:)r�r
�	enumeraterr�)r1r�r�r�s` @@r�test_lru_cache_threaded3z TestLRU.test_lru_cache_threaded3�s������	
��	�	�q�	�	)�	)�	�	�
*�	)�	�	1�	1�	1�	1�	1�	1�;�;�;�;�(����9�9�;�;�;��
�
+�G�
4�
4�	�	��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A.�.A2�5A2c�$���|j�d���d����G��fd�d�����d������d����|���d�����d����dS)Nr;rc��|S)zEUsed to demonstrate a reentrant lru_cache call within a single threadrrIs r�	test_funcz.TestLRU.test_need_for_rlock.<locals>.test_func�s	���Hrc�,��eZdZdZd�Zd�Z��fd�ZdS)�-TestLRU.test_need_for_rlock.<locals>.DoubleEqz=Demonstrate a reentrant lru_cache call within a single threadc��||_dSrrI�r1rJs  rrz6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__init__�r�rc��|jSrrIr\s rr(z6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__hash__�s	���v�
rc�b��|jdkr��d����|j|jkSr�rI)r1r2�DoubleEqr�s  ��rrBz4TestLRU.test_need_for_rlock.<locals>.DoubleEq.__eq__�s5����6�Q�;�;��I�h�h�q�k�k�*�*�*��v���(�(rN)r(r)r*r�rr(rB)r�r�s��rr�r��sW�������K�K�
�
�
�
�
�
�
)�
)�
)�
)�
)�
)�
)�
)rr�r9r:r4)r1r�r�s @@r�test_need_for_rlockzTestLRU.test_need_for_rlock�s�����
��	�	�r�	�	*�	*�	�	�
+�	*�	�		)�		)�		)�		)�		)�		)�		)�		)�		)�		)�		)�	�	�(�(�1�+�+�����	�(�(�1�+�+���������8�8�A�;�;�/�/�!��!���	&�	&�	&�	&�	&rc���G�fd�dt��}|d��}|d��}|d��}��|j���d��dD]1}��|�|��|dzdz���2��|j|j|jfd����|j���d	��d
D]1}��|�|��|dzdz���2��|j|j|jfd����|j���d��d
D]1}��|�|��|dzdz���2��|j|j|jfd����|j���d����|j���|j�������|j���|j�������|j���|j�����dS)Nc�Z��eZdZdZ�j�d��d���ZdS)�"TestLRU.test_lru_method.<locals>.Xrr:c�2�|xjdz
c_|dz|zSrrr�s  rr�z$TestLRU.test_lru_method.<locals>.X.f�s���
�
�a��
�
���t�D�y� rN)r(r)r*rr�r
r�r\s�r�Xr��sD��������E�
�[�
"�
"�1�
%�
%�
!�
!�&�
%�
!�
!�
!rr�r`rb)rrr:r)
r9r:r:r@r9r9r9r:r@r@r;)r'rr)rAr'r:r:)
r9r:r9r9r9r9r@r:r:r:)r'rAr)r;r;r:r:)
r:r9r9r9r9r:r9r@r:r9)r'rAr`)rrr:r:)r�rOr�r�r)r1r�r>r?rErJs`     r�test_lru_methodzTestLRU.test_lru_method�s����	!�	!�	!�	!�	!�	!�	!��	!�	!�	!�
�A�a�D�D��
�A�a�D�D��
�A�a�D�D���������)�)�<�8�8�8�-�	/�	/�A����Q�S�S��V�V�Q�r�T�A�X�.�.�.�.����!�'�1�7�A�G�4�i�@�@�@��������)�)�<�8�8�8�-�	/�	/�A����Q�S�S��V�V�Q�r�T�A�X�.�.�.�.����!�'�1�7�A�G�4�i�@�@�@��������)�)�>�:�:�:�-�	/�	/�A����Q�S�S��V�V�Q�r�T�A�X�.�.�.�.����!�'�1�7�A�G�4�i�@�@�@��������)�)�>�:�:�:��������)�)�1�3�>�>�+;�+;�<�<�<��������)�)�1�3�>�>�+;�+;�<�<�<��������)�)�1�3�>�>�+;�+;�<�<�<�<�<rc	�d�|j}|jd|j|jfD]�}t	t
jdz��D]n}|�||���5tjtj	||����}|�
||��ddd��n#1swxYwY�o��dS)Nrr9)r�r )r��cached_func�cached_meth�cached_staticmethr�r�r�rHr�r�r�)r1r5r�r�r�s     rr�zTestLRU.test_pickle�s����n�����#�S�_�c�6K�K�	-�	-�A��v�6��:�;�;�
-�
-���\�\��A�\�6�6�-�-�#�\�&�,�q�%�*@�*@�A�A�F��M�M�&�!�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-��
-�	-�	-s�>B#�#B'�*B'c��|j}d�}|j�|d��}|jd|j|j|j�d��|��f}|D]Z}|�|���5tj|��}|�	||��ddd��n#1swxYwY�[dS)Nc��d|z|zSr�rrs  rrzTestLRU.test_copy.<locals>.origrrr:r�r )
r�r�rLr�r�r�r
rHr�r��r1r5rr#�funcsr�r�s       rr�zTestLRU.test_copys
���n��	�	�	��{�"�"�4��+�+�����#�S�_�c�6K�)���&�&�q�)�)�$�/�/�1���	)�	)�A����1��%�%�
)�
)���1�����
�
�f�a�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��	)�	)��<+B3�3B7	�:B7	c��|j}d�}|j�|d��}|jd|j|j|j�d��|��f}|D]Z}|�|���5tj	|��}|�
||��ddd��n#1swxYwY�[dS)Nc��d|z|zSr�rrs  rrz#TestLRU.test_deepcopy.<locals>.origrrr:rr�)r�r�rLr�r�r�r
rHr�r�r�r�s       rr�zTestLRU.test_deepcopys���n��	�	�	��{�"�"�4��+�+�����#�S�_�c�6K�)���&�&�q�)�)�$�/�/�1���	)�	)�A����1��%�%�
)�
)���q�)�)���
�
�f�a�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��	)�	)r�c�D�|j�d���d���}|�|���ddd���|j�dd���d���}|�|���ddd���dS)	Nr:rc��dS�Nr9rrrrr�z,TestLRU.test_lru_cache_parameters.<locals>.f����1rFrTrTc��dSr�rrrrr�z,TestLRU.test_lru_cache_parameters.<locals>.f r�r)r�r
rO�cache_parametersr�s  r�test_lru_cache_parametersz!TestLRU.test_lru_cache_parameterss���	
��	�	�q�	�	)�	)�	�	�
*�	)�	�����+�+�-�-�1�u�/M�/M�N�N�N�	
��	�	�t�4�	�	8�	8�	�	�
9�	8�	�����+�+�-�-�4�$�/O�/O�P�P�P�P�Prc����jjd���}G�fd�d��}tj|��tj|j��tj|j��g}|D]}��|����� ~~tj��|D]}��	|����� dS)Nc��|SrrrIs r�
test_functionz9TestLRU.test_lru_cache_weakrefable.<locals>.test_function&rFrc�x��eZdZ�jjd���Ze�jj�fd�����ZdS)�-TestLRU.test_lru_cache_weakrefable.<locals>.Ac�
�||fSrrr�s  r�test_methodz9TestLRU.test_lru_cache_weakrefable.<locals>.A.test_method+s���a�y� rc����|fSrr)rJr1s �r�test_staticmethodz?TestLRU.test_lru_cache_weakrefable.<locals>.A.test_staticmethod/s����a�y� rN)r(r)r*r�r
r�r2r�r\s�rr6r�*si�������
�[�
"�
!�
!�#�
"�
!��
�[�
"�
!�
!�
!�
!�#�
"��\�
!�
!�
!rr6)
r�r
�weakref�refr�r��assertIsNotNone�gc�collectrN)r1r�r6�refsr�s`    r�test_lru_cache_weakrefablez"TestLRU.test_lru_cache_weakrefable%s����	
��	�	�	�
�	�	�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!���M�*�*���A�M�*�*���A�/�0�0�2���	(�	(�C�� � �����'�'�'�'�
��
�
�����	%�	%�C����c�c�e�e�$�$�$�$�	%�	%rN) r(r)r*rrrr!r+r0r5r=rBrIrRrWrarjrnrrrxr�requires_working_threadingr�r�r�r�r�r�r�r�r�r�rrrr�r�s������W&�W&�W&�r
:�
:�
:�6�6�6�61�1�1�!7�!7�!7�F
#�
#�
#�/�/�/����&P�P�P�O�O�O���� <�<�<� 4�4�4�6O�O�O� P�P�P�N�N�N�A�A�A�1��0�2�2�.+�.+�3�2�.+�`1��0�2�2�I�I�3�2�I�61��0�2�2���3�2��&�&�&�0=�=�=�>-�-�-�
)�
)�
)�
)�
)�
)�	Q�	Q�	Q�%�%�%�%�%rr�c��d|z|zSr�rrs  r�py_cached_funcr�C����q�5�1�9�rc��d|z|zSr�rrs  r�
c_cached_funcr�Gr�rc��eZdZeZefZe���d���Ze	e���d�����Z
dS)�	TestLRUPyc��d|z|zSr�rr\s   rr�zTestLRUPy.cached_methP����1�u�q�y�rc��d|z|zSr�rrs  rr�zTestLRUPy.cached_staticmethT����1�u�q�y�rN)r(r)r*r�r�r�r�r
r�r2r�rrrr�r�Lsx������
�F� �/�K����������������������\���rr�c��eZdZeZefZe���d���Ze	e���d�����Z
dS)�TestLRUCc��d|z|zSr�rr\s   rr�zTestLRUC.cached_meth^r�rc��d|z|zSr�rrs  rr�zTestLRUC.cached_staticmethbr�rN)r(r)r*r�r�r�r�r
r�r2r�rrrr�r�Zsx������
�F��.�K����������������������\���rr�c�
�eZdZd�Zd�Zd�Zd�Zeje	d��e
jd�����Zd�Z
d�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d S)!�TestSingleDispatchc�*�tjd���}d�}|�t|��|�|d��d��|�|d��d��|�|gd���d��dS)Nc��dS�Nr�rrGs rrwz3TestSingleDispatch.test_simple_overloads.<locals>.gj����6rc��dS)N�integerrrMs r�g_intz7TestSingleDispatch.test_simple_overloads.<locals>.g_intms���9rr�r�r9r��r9r:r@)r
�singledispatch�registerr�rO�r1rwr�s   r�test_simple_overloadsz(TestSingleDispatch.test_simple_overloadsis���	�	!�	�	�
"�	!�	�	�	�	�	�
�
�3����������5���6�*�*�*������1���y�)�)�)������7�7�7���V�,�,�,�,�,rc�<�tjd���}Gd�d��}Gd�d|��}Gd�d|��}Gd�d	||��}d
�}d�}|�||��|�||��|�||����d��|�||����d��|�||����d��|�||����d��dS)Nc��dSr�rrGs rrwz&TestSingleDispatch.test_mro.<locals>.gur�rc��eZdZdS)�&TestSingleDispatch.test_mro.<locals>.ANr'rrrr6r�xr�rr6c��eZdZdS)�&TestSingleDispatch.test_mro.<locals>.CNr'rrr�Crzr�rrc��eZdZdS)�&TestSingleDispatch.test_mro.<locals>.BNr'rrrrQr|r�rrQc��eZdZdS)�&TestSingleDispatch.test_mro.<locals>.DNr'rrr�Dr~r�rrc��dS)Nr6rras r�g_Az(TestSingleDispatch.test_mro.<locals>.g_A�����3rc��dS)NrQrrcs r�g_Bz(TestSingleDispatch.test_mro.<locals>.g_B�r
r)r
r�r�rO)r1rwr6rrQrr	rs        r�test_mrozTestSingleDispatch.test_mrots���	�	!�	�	�
"�	!�	�	�	�	�	�	�	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	��1�	�	�	�	�	�	�	�	�	�	�
�
�1�c����	�
�
�1�c���������1�1�3�3����%�%�%������1�1�3�3����%�%�%������1�1�3�3����%�%�%������1�1�3�3����%�%�%�%�%rc���tjd���}|�t��d���}|�|d��d��|�|d��d��|�|�t��|��|�|�t��|�t����dS)Nc��dSr�rrGs rrwz5TestSingleDispatch.test_register_decorator.<locals>.g�r�rc��d|��S)Nzint rrMs rr�z9TestSingleDispatch.test_register_decorator.<locals>.g_int�s��� �q�?�"rr�r�rzint 12)	r
r�r�r�rOr��dispatchr�r�r�s   r�test_register_decoratorz*TestSingleDispatch.test_register_decorator�s���	�	!�	�	�
"�	!�	�	
���C���	#�	#�
��	#������2����'�'�'������2����)�)�)��
�
�a�j�j��o�o�u�-�-�-��
�
�a�j�j��(�(�!�*�*�S�/�/�:�:�:�:�:rc���tjd���}|�|jd��tjjdkr|�|jd��dSdS)Nc��dS)�Simple test�TestrrGs rrwz6TestSingleDispatch.test_wrapping_attributes.<locals>.g�s	���6rrwr:r)r
r�rOr(rr�r�r�)r1rws  r�test_wrapping_attributesz+TestSingleDispatch.test_wrapping_attributes�so��	�	!�	�	�
"�	!�	�	
�����S�)�)�)��9���!�!����Q�Y�
�6�6�6�6�6�"�!rzrequires _decimalc�0�tjd���}|�tj��d���}t�d��}t�d��}|�||��d��|�||��d��|�tj��d���}|�||��d��|�||��d��dS)	Nc��dSr�rrGs rrwz,TestSingleDispatch.test_c_classes.<locals>.g�r�rc��|jSrr3rGs rr�z,TestSingleDispatch.test_c_classes.<locals>._�s	���8�Or�Exponent < Emin�Number got rounded)r)rc��dS)N�Too small to care.rrGs rr�z,TestSingleDispatch.test_c_classes.<locals>._�s��'�'rr)r
r�r�r
�DecimalException�	Subnormal�RoundedrO)r1rwr��subn�rnds     r�test_c_classesz!TestSingleDispatch.test_c_classes�s��
�	!�	�	�
"�	!�	�	
���G�,�	-�	-�	�	�
.�	-�	�� � �!2�3�3���o�o�2�3�3�������4���"6�7�7�7������3���!8�9�9�9�	
���G�%�	&�	&�	(�	(�
'�	&�	(������4���"6�7�7�7������3���!8�9�9�9�9�9rc�6�tj}tj}|j|j|j|jg}t|��D]Y}|t|��}|�
|t|j|j|j|j|j
|jtg���Z|j|j|jtjg}t|��D]c}|tj|��}|�
|tj|j|j|j|j|j
|jtg���d|j|jt$g}t|��D]c}|tj|j|jt$g��}|�
|tjt|j|jtg���dGd�dtj��}|j�|��|j|jg}t|��D]r}|||��}|�
|||j|j|jtjt|j|j|j|j|j
|jtg
���sGd�dtj��}|j|j|j|jg}t|��D]`}|||��}|�
|||jtjt|j|j|j|j
|jtg
���adS)Nc��eZdZdS)�.TestSingleDispatch.test_compose_mro.<locals>.DNr'rrrrr'�r�rrc��eZdZd�ZdS)�.TestSingleDispatch.test_compose_mro.<locals>.Cc��dSrrr\s r�__call__z7TestSingleDispatch.test_compose_mro.<locals>.C.__call__�����rN�r(r)r*r+rrrrr)��#������
�
�
�
�
rr)r*r^r
�_compose_mro�Sequence�MutableMapping�Mapping�SetrrPrO�
Collection�Sized�Iterable�	Containerr��OrderedDict�ChainMapr��defaultdict�MutableSequencer��
Reversible�Callable)r1rE�mror��haystackr~rrs        r�test_compose_mroz#TestSingleDispatch.test_compose_mro�s0���O���$����Q�-�q�y�!�%�@��$�U�+�+�	7�	7�H���D�(�#�#�A����Q��q�'7���!"��q�w��
�!"��f�!6�
7�
7�
7�
7���a�i��)9�;�;R�S��$�U�+�+�	7�	7�H���K�(�(�3�3�A����Q��!5�q�7G���!"��q�w��
�!"��f�!6�
7�
7�
7�
7���a�g�s�+��$�U�+�+�	7�	7�H���K�+�a�g�q�{�C�-H�I�I�A����Q��!8�$���!"��f�!6�
7�
7�
7�
7�	�	�	�	�	��'�	�	�	�	��"�"�1�%�%�%��"�A�$4�5��$�U�+�+�	*�	*�H���A�u�
�
�A����Q��A�$5�q�z�1�<�!,�!8�$��@P�RS�R[�!"��q�w��
�A�K�!'�!)�
*�
*�
*�
*�	�	�	�	�	��'�	�	�	���!�*�a�k�1�9�=��$�U�+�+�	7�	7�H���A�x� � �A����Q��A�J��0G��q�y�!"��q�w��
�!"��f�!6�
7�
7�
7�
7�	7�	7rc�p�tj}ddi}gd�}t��dh}t|��}d}tjd���}|�||��d��|�||��d��|�||��d��|�||��d��|�||��d��|�|jd���|�||��d��|�||��d��|�||��d��|�||��d��|�||��d��|�|j	d���|�||��d	��|�||��d��|�||��d��|�||��d��|�||��d��|�tj
d
���|�||��d	��|�||��d��|�||��d��|�||��d��|�||��d��|�|jd���|�||��d	��|�||��d��|�||��d��|�||��d��|�||��d��|�|jd
���|�||��d	��|�||��d��|�||��d��|�||��d��|�||��d��|�|j
d���|�||��d	��|�||��d��|�||��d��|�||��d��|�||��d��|�|jd���|�||��d	��|�||��d��|�||��d��|�||��d��|�||��d��|�|jd���|�||��d	��|�||��d��|�||��d��|�||��d��|�||��d��|�t d���|�||��d��|�||��d��|�||��d��|�||��d��|�||��d��|�t"d���|�||��d��|�||��d��|�||��d��|�||��d��|�||��d��|�t$d���|�||��d��|�||��d��|�||��d��|�||��d��|�||��d��|�td���|�||��d��|�||��d��|�||��d��|�||��d��|�||��d��|�t&d���|�||��d��|�||��d��|�||��d��|�||��d��|�||��d��dS)Nr>r?r�c��dSr�rrGs rrwz/TestSingleDispatch.test_register_abc.<locals>.g�r�rr�c��dS�N�sizedrrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>�����rrEc��dS�N�mutablemappingrrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>s��1A�rrIc��dS)N�chainmaprrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>s��Z�rc��dS)N�mutablesequencerrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>s��2C�rrMc��dS)N�
mutablesetrrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>s��\�rrOc��dS�N�mappingrrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>s��)�rc��dS�N�sequencerrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>���:�rrUc��dS�Nr�rrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>$���e�rr�c��dS�NrPrrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>*���V�rrPc��dS�Nr/rrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>0r\rr/c��dS)N�concrete-setrrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>6s��N�rr`c��dS)N�
frozen-setrrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda><s��,�rrbc��dS)Nr�rrGs rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>Bs��g�rr�)r*r^r��	frozensetr
r�rOr�r5r1r9r;�
MutableSetr2r0r3rPr/r�r�)r1rErd�lr�r��trws        r�test_register_abcz$TestSingleDispatch.test_register_abc�s�	���O��
�#�J���I�I��
�X�X�t����a�L�L����	�	!�	�	�
"�	!�	������1���v�&�&�&������1���v�&�&�&������1���v�&�&�&������1���v�&�&�&������1���v�&�&�&�	�
�
�1�7�/�/�0�0�0������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'�	�
�
�1�#�%A�%A�B�B�B������1���/�0�0�0������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'�	�
�
�;�'�)?�)?�@�@�@������1���/�0�0�0������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'�	�
�
�1�$�&C�&C�D�D�D������1���/�0�0�0������1���0�1�1�1������1���w�'�'�'������1���w�'�'�'������1���w�'�'�'�	�
�
�1�<�!9�!9�:�:�:������1���/�0�0�0������1���0�1�1�1������1���|�,�,�,������1���w�'�'�'������1���w�'�'�'�	�
�
�1�9�3�3�4�4�4������1���/�0�0�0������1���0�1�1�1������1���|�,�,�,������1���w�'�'�'������1���w�'�'�'�	�
�
�1�:�5�5�6�6�6������1���/�0�0�0������1���0�1�1�1������1���|�,�,�,������1���w�'�'�'������1���z�*�*�*�	�
�
�1�5�+�+�,�,�,������1���/�0�0�0������1���0�1�1�1������1���|�,�,�,������1���u�%�%�%������1���z�*�*�*�	�
�
�4�+�+�,�,�,������1���v�&�&�&������1���0�1�1�1������1���|�,�,�,������1���u�%�%�%������1���z�*�*�*�	�
�
�4�+�+�,�,�,������1���v�&�&�&������1���v�&�&�&������1���|�,�,�,������1���u�%�%�%������1���z�*�*�*�	�
�
�3�2�2�3�3�3������1���v�&�&�&������1���v�&�&�&������1���~�.�.�.������1���u�%�%�%������1���z�*�*�*�	�
�
�9�6�6�7�7�7������1���v�&�&�&������1���v�&�&�&������1���~�.�.�.������1���|�,�,�,������1���z�*�*�*�	�
�
�5�-�-�.�.�.������1���v�&�&�&������1���v�&�&�&������1���~�.�.�.������1���|�,�,�,������1���w�'�'�'�'�'rc	�R�tj}tj}Gd�dt��}Gd�d|��}|jjGd�dt����}Gd�dt��}Gd	�d
|||��}||j|||j||j|tg	}t|j|j|jg��D]#}	|�
|||	���|���$|j|j|j|j|jg}
|�
|||
���|��dS)Nc��eZdZdS)�)TestSingleDispatch.test_c3_abc.<locals>.ANr'rrrr6rkLr�rr6c��eZdZd�ZdS)�)TestSingleDispatch.test_c3_abc.<locals>.Bc��dSr�rr\s rr�z1TestSingleDispatch.test_c3_abc.<locals>.B.__len__Or�rN�r(r)r*r�rrrrQrmN�#������
�
�
�
�
rrQc��eZdZdS)�)TestSingleDispatch.test_c3_abc.<locals>.CNr'rrrrrrQrhrrc��eZdZdS)�)TestSingleDispatch.test_c3_abc.<locals>.DNr'rrrrrtTr�rrc��eZdZd�ZdS)�)TestSingleDispatch.test_c3_abc.<locals>.Xc��dSrrr\s rr+z2TestSingleDispatch.test_c3_abc.<locals>.X.__call__Wr,rNr-rrrr�rvVr.rr�)�abcs)
r*r^r
�_c3_mror�r7r�r=r5rrOr2r6)r1rEr>r6rQrrr�rqrx�	many_abcss           r�test_c3_abczTestSingleDispatch.test_c3_abcIs����O�����	�	�	�	�	��	�	�	�	�	�	�	�	��	�	�	�
��	�	�	�	�	�	��	�	�
�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	��1�a�	�	�	��q�z�1�a���a���!�V�L�� �!�'�1�:�q�{�!C�D�D�	:�	:�D����S�S���.�.�.��9�9�9�9��Y�����Q�[�!�*�M�	������Q�Y�/�/�/��:�:�:�:�:rc��Gd�dt��}Gd�d|���}Gd�d|��}tjd���}|�|��d	���}|��}|�||��d
��dS)Nc��eZdZd�ZdS)�1TestSingleDispatch.test_false_meta.<locals>.MetaAc��dSr�rr\s rr�z9TestSingleDispatch.test_false_meta.<locals>.MetaA.__len__cr�rNrorrr�MetaAr~brprr�c��eZdZdS)�-TestSingleDispatch.test_false_meta.<locals>.ANr'rrrr6r�er�rr6r�c��eZdZdS)�.TestSingleDispatch.test_false_meta.<locals>.AANr'rrr�AAr�gr�rr�c��dS)Nzbase Arras r�funz/TestSingleDispatch.test_false_meta.<locals>.funis���8rc��dS)N�fun Arras rr�z-TestSingleDispatch.test_false_meta.<locals>._l����7rr�)r�r
r�r�rO)r1r�r6r�r�r��aas       r�test_false_metaz"TestSingleDispatch.test_false_meta`s���	�	�	�	�	�D�	�	�	�	�	�	�	�	�%�	�	�	�	�	�	�	�	�	��	�	�	�	�	!�	�	�
"�	!�	�	���a���	�	�
��	�
�R�T�T�������R���'�*�*�*�*�*rc�
�tj}tjd���}Gd�d|j��}|��}|�||��d��|�|jd���|�|jd���|�|jd���|�|j	d���|�||��d	��|j�|��|�||��d	��|j�|��|�||��d	��|j	�|��|�||��d
��Gd�d��}|��}|�||��d��|j�|��|�||��d
��|j�|��|�
t��5}||��ddd��n#1swxYwY|�t|j��d��Gd�d|j��}|��}	|�||	��d	��|j�|��|�||	��d	��|j	�|��|�||	��d
��tjd���}
|
�|j��d���}|
�|j��d���}|�
t��5}|
tjd�����ddd��n#1swxYwY|�t|j��d��Gd�dtj��}
|j�|
��tjd���}|�|j��d���}|�|j��d���}|
��}|�||��d��Gd�d��}Gd�d||j��}|��}|�|
|��d	��|j�|��|�|
|��d	��Gd �d!��}|��}|�|
|��d	��|j�|��|�
t��5}|
|��ddd��n#1swxYwY|�t|j��d��Gd"�d#|j|��}tjd$���}|�|��d%���}|�|j��d&���}|��}|�||��d'��|j�|��|�||��d(��dS))Nc��dSr�r��args rrwz0TestSingleDispatch.test_mro_conflicts.<locals>.gtr�rc��eZdZd�ZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.Oc��dSr�rr\s rr�z8TestSingleDispatch.test_mro_conflicts.<locals>.O.__len__xr�rNrorrr�Or�wrprr�r�c��dS)N�iterablerr�s rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>|rVrc��dS�N�	containerrr�s rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>}s��K�rc��dSrDrr�s rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>~rFrc��dSrXrr�s rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>rYrrEr�c��eZdZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.PNr'rrr�Pr��r�rr�r�)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��eZdZd�ZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.Qc��dSr�rr\s rr�z8TestSingleDispatch.test_mro_conflicts.<locals>.Q.__len__�r�rNrorrr�Qr��rprr�c��dSr�rr�s r�hz0TestSingleDispatch.test_mro_conflicts.<locals>.h�r�rc��dSrDrr�s rr�z0TestSingleDispatch.test_mro_conflicts.<locals>._�r�rc��dSr�rr�s rr�z0TestSingleDispatch.test_mro_conflicts.<locals>._�����;rc��dSr�rrrrrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>�s��a�r)zZAmbiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Sized'>zZAmbiguous dispatch: <class 'collections.abc.Sized'> or <class 'collections.abc.Container'>c��eZdZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.RNr'rrr�Rr��r�rr�c��dSr�rr�s rr�z0TestSingleDispatch.test_mro_conflicts.<locals>.i�r�rc��dSrQrr�s rr�z0TestSingleDispatch.test_mro_conflicts.<locals>._�����9rc��dSrTrr�s rr�z0TestSingleDispatch.test_mro_conflicts.<locals>._�����:rrUc��eZdZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.SNr'rrr�Sr��r�rr�c��eZdZd�ZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.Tc��dSr�rr\s rr�z8TestSingleDispatch.test_mro_conflicts.<locals>.T.__len__�r�rNrorrrr_r��rprr_c��eZdZd�ZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.Uc��dSr�rr\s rr�z8TestSingleDispatch.test_mro_conflicts.<locals>.U.__len__�r�rNrorrr�Ur��rprr�c��eZdZd�ZdS)�0TestSingleDispatch.test_mro_conflicts.<locals>.Vc��dSr�rr\s rr�z8TestSingleDispatch.test_mro_conflicts.<locals>.V.__len__�r�rNrorrr�Vr��rprr�c��dSr�rr�s r�jz0TestSingleDispatch.test_mro_conflicts.<locals>.j�r�rc��dS)Nr�rr�s rr�z0TestSingleDispatch.test_mro_conflicts.<locals>._�s���3rc��dSr�rr�s rr�z0TestSingleDispatch.test_mro_conflicts.<locals>._�r�rr�r�)r*r^r
r�r5rOr�r6r7r3rYr�r�r�rOr:r;r1)r1rErwr�r9r�rS�re_oner��qr�r��re_twor�r�r�r�r_rgr��u�re_threer�r�r�s                         r�test_mro_conflictsz%TestSingleDispatch.test_mro_conflictsrs=���O��	�	!�	�	�
"�	!�	�	�	�	�	�	���	�	�	�
�A�C�C�������1���v�&�&�&�	�
�
�1�:�5�5�6�6�6�	�
�
�1�;� 7� 7�8�8�8�	�
�
�1�7�/�/�0�0�0�	�
�
�1�5�+�+�,�,�,������1���w�'�'�'�	�
���A���������1���w�'�'�'�	����Q���������1���w�'�'�'�	����q���������1���u�%�%�%�	�	�	�	�	�	�	�	�
�A�C�C�������1���v�&�&�&�	�
���A���������1���z�*�*�*�	����Q����
�
�
�|�
,�
,�	��
�A�a�D�D�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
��� �!�!�
9�	
�	
�	
�	�	�	�	�	���	�	�	�
�A�C�C�������1���w�'�'�'�	�
���A���������1���w�'�'�'�	����q���������1���u�%�%�%�	�	!�	�	�
"�	!�	�	
���A�G�	�	�	�	�
�	�	�	
���A�K�	 �	 �	�	�
!�	 �	��
�
�|�
,�
,�	2��
�A�k�%�i�i�0�0�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��
�
��� �!�!�
9�	
�	
�	
�	�	�	�	�	��'�	�	�	�	��"�"�1�%�%�%�	�	!�	�	�
"�	!�	�	
���A�$�	%�	%�	�	�
&�	%�	�	
���A�%�	&�	&�	�	�
'�	&�	�
�A�C�C�������1���z�*�*�*�	�	�	�	�	�	�	�	�	�	�	�	�	��1�7�	�	�	�
�A�C�C�������1���w�'�'�'�	����Q���������1���w�'�'�'�	�	�	�	�	�	�	�	�
�A�C�C�������1���w�'�'�'�	����Q����
�
�
�|�
,�
,�	��
�A�a�D�D�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
���"�#�#�
9�	
�	
�	
�	�	�	�	�	����	�	�	�
�	!�	�	�
"�	!�	�	
���A���	�	�
��	�	
���A�K�	 �	 �	�	�
!�	 �	�
�A�C�C�������1���s�#�#�#�	����Q���������1���{�+�+�+�+�+s6�;I�I�I�)O�O�O�*W�W�	Wc���	�ddlm}ddl}G�fd�d|�������	tj|d�	fd���5tj}tjd���}i}g}|�t�	��d��|�||��d��|�t�	��d	��|��	j
g��|��	jtg��|��	j
t|jt��|�||��d��|�t�	��d
��|��	j
g��|��	jtt g��|��	j
t|jt��|��	j
t |jt��|��	j
t�	j
t ��|�||��d��|�||��d��|��	j
t tg��|��	jtt g��|�t d���|��	j
t tg��|�t�	��d��|�||��d��|�t�	��d	��|��	j
t tg��|��	jtt tg��|��	j
tt
jt|j����|�||��d��|�t�	��d
��|��	j
t tg��|��	jtt tt g��|��	j
t t
jt |j����Gd
�d��}|j�|��|�||��d��|�||��d��|��	j
t ttt g��|��	jtt tt g��|�|jd���|�t�	��d��|�||��d��|�t�	��d	��|��	j
t ttt g��|��	jtt tt tg��|�||��d��|�t�	��d
��|��	j
t ttt g��|��	jtt tt tt g��|�||��d��|�||��d��|��	j
t ttt t tg��|��	jtt tt tt g��|�t ��|�t��|��	j
t ttt t tt tg��|��	jtt tt tt g��|j�|��|�t�	��d
��|�||��d��|�t�	��d	��|�|jd���|�t�	��d��|�||��d��|�t�	��d	��|�||��d��|�t�	��d
��|�td���|�||��d��|�||��d��|���|�t�	��d��ddd��dS#1swxYwYdS)Nr)�UserDictc�4���eZdZ��fd�Zd�Zd�Zd�Z�xZS)�?TestSingleDispatch.test_cache_invalidation.<locals>.TracingDictc�Z��t�|��j|i|��g|_g|_dSr)r�r�set_ops�get_ops)r1rr��TracingDictr�s   ��rrzHTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__init__�s7���1��k�4�(�(�1�4�B�6�B�B�B�!���!����rc�T�|j|}|j�|��|Sr)r�r�r�)r1r��results   rr�zKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__getitem__�s(����3�����#�#�C�(�(�(��
rc�N�|j�|��||j|<dSr)r�r�r�)r1r�r�s   r�__setitem__zKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__setitem__�s'����#�#�C�(�(�(�!&��	�#���rc�8�|j���dSr)r�r�r\s rr�zETestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.clear	s���	���!�!�!�!�!r)r(r)r*rr�r�r�r�)r�r�s@�rr�r��sk��������
"�
"�
"�
"�
"�
"�
�
�
�
'�
'�
'�
"�
"�
"�
"�
"�
"�
"rr��WeakKeyDictionaryc����Srr)�tds�rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>	s���R�rc��dSr�rr�s rrwz5TestSingleDispatch.test_cache_invalidation.<locals>.g	����vrr�r9r:c��dSr^rr�s rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>	����rr/c��eZdZdS)�5TestSingleDispatch.test_cache_invalidation.<locals>.XNr'rrrr�r�-	s�������rr�c��dSrDrr�s rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>5	s��G�rrEc��dSrHrr�s rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>L	s��5E�rrIc��dSr[rr�s rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>R	r�rrP)r*r�r�r�	swap_attrr^r
r�rOr�r�r�rPr��registryr�r/r��
_find_implr1r5rre�_clear_cache)
r1r�r�rErwrdrfr�r�r�s
        @@r�test_cache_invalidationz*TestSingleDispatch.test_cache_invalidation�sH	����(�(�(�(�(�(�����
	"�
	"�
	"�
	"�
	"�
	"�
	"�(�
	"�
	"�
	"��[�]�]��
�
�w�(;�Z�Z�Z�Z�
H�
H�P	)�P	)���A�
�
%�
�
�&�
%�
��A��A����S��W�W�a�(�(�(����Q�Q�q�T�T�6�*�*�*����S��W�W�a�(�(�(����R�Z��,�,�,����R�Z�$��0�0�0����R�W�T�]�A�J�v�,>�?�?�?����Q�Q�q�T�T�6�*�*�*����S��W�W�a�(�(�(����R�Z��,�,�,����R�Z�$���6�6�6����R�W�T�]�A�J�v�,>�?�?�?����R�W�T�]�A�J�v�,>�?�?�?����R�W�T�]�B�G�D�M�:�:�:����Q�Q�q�T�T�6�*�*�*����Q�Q�q�T�T�6�*�*�*����R�Z�$���6�6�6����R�Z�$���6�6�6�
�J�J�t�/�/�0�0�0����R�Z�$���6�6�6����S��W�W�a�(�(�(����Q�Q�q�T�T�6�*�*�*����S��W�W�a�(�(�(����R�Z�$���6�6�6����R�Z�$��d�);�<�<�<����R�W�T�]�&�1�$��
�C�C�
E�
E�
E����Q�Q�q�T�T�6�*�*�*����S��W�W�a�(�(�(����R�Z�$���6�6�6����R�Z�$��d�D�)A�B�B�B����R�W�T�]�&�1�$��
�C�C�
E�
E�
E�
�
�
�
�
�
�
�
�
��%�%�a�(�(�(����Q�Q�q�T�T�6�*�*�*����Q�Q�q�T�T�6�*�*�*����R�Z�$��d�D�)A�B�B�B����R�Z�$��d�D�)A�B�B�B�
�J�J�q�w� 3� 3�4�4�4����S��W�W�a�(�(�(����Q�Q�q�T�T�7�+�+�+����S��W�W�a�(�(�(����R�Z�$��d�D�)A�B�B�B����R�Z�$��d�D�$�)G�H�H�H����Q�Q�q�T�T�6�*�*�*����S��W�W�a�(�(�(����R�Z�$��d�D�)A�B�B�B����R�Z�$��d�D�$��)M�N�N�N����Q�Q�q�T�T�6�*�*�*����Q�Q�q�T�T�7�+�+�+����R�Z�$��d�D�$��)M�N�N�N����R�Z�$��d�D�$��)M�N�N�N�
�J�J�t����
�J�J�t�������R�Z�$��d�D�$��*.��*6�
7�
7�
7����R�Z�$��d�D�$��)M�N�N�N�
�L�!�!�!�$�$�$����S��W�W�a�(�(�(����Q�Q�q�T�T�6�*�*�*����S��W�W�a�(�(�(�
�J�J�q�'�)E�)E�F�F�F����S��W�W�a�(�(�(����Q�Q�q�T�T�#3�4�4�4����S��W�W�a�(�(�(����Q�Q�q�T�T�6�*�*�*����S��W�W�a�(�(�(�
�J�J�t�/�/�0�0�0����Q�Q�q�T�T�6�*�*�*����Q�Q�q�T�T�6�*�*�*�
�N�N�������S��W�W�a�(�(�(�aP	)�P	)�P	)�P	)�P	)�P	)�P	)�P	)�P	)�P	)�P	)�P	)����P	)�P	)�P	)�P	)�P	)�P	)s�jk�k�kc�l�tjd���}|jdtjjfd���}|jdd���}|�|d��d��|�|ddi��d	��|�|gd
���d��|�|d
��d��|�|d��d��|�t��Gd
�d����}|�|d��d��dS)Nc��dSr�rr�s rr�z.TestSingleDispatch.test_annotations.<locals>.iY	r�rr�c��dSrQrr�s rr�z.TestSingleDispatch.test_annotations.<locals>._\	r�r�collections.abc.Sequencec��dSrTrr�s rr�z.TestSingleDispatch.test_annotations.<locals>.__	r�rr�r>r9rRr�rUr�c��eZdZd�Zd�ZdS)�.TestSingleDispatch.test_annotations.<locals>._c��||_dSrr��r1r�s  rrz7TestSingleDispatch.test_annotations.<locals>._.__init__l	�
������rc��|j|kSrr�r0s  rrBz5TestSingleDispatch.test_annotations.<locals>._.__eq__o	s���x�5�(�(rN)r(r)r*rrBrrrr�r�j	s2������
�
�
�
)�
)�
)�
)�
)rr�)r�r�)r
r�r�r*r^r2rOr�)r1r�r�s   r�test_annotationsz#TestSingleDispatch.test_annotationsX	sm��	�	!�	�	�
"�	!�	�	
��	�;�?�*�	�	�	�
��	�	
��	�	�	�
��	������4���&�)�)�)������C��8���i�0�0�0������9�9�9���z�2�2�2������9���z�2�2�2������5���:�.�.�.�
���C���	)�	)�	)�	)�	)�	)�	)�
��	)�	
�����5���5�)�)�)�)�)rc�b�Gd�d��}|��}|�d��|�|jd��|��}|�t	|d����|�d��|�|jd��|��}|�t	|d����|�d��|�|jd	��|��}|�t	|d����dS)
Nc��eZdZejd���Ze�e��d���Ze�e	��d���ZdS)�2TestSingleDispatch.test_method_register.<locals>.Ac��d|_dSr�r�r�s  rrgz4TestSingleDispatch.test_method_register.<locals>.A.tu	s
��!����rc��d|_dS�Nr�r�r�s  rr�z4TestSingleDispatch.test_method_register.<locals>.A._x	�
�� ����rc��d|_dS�Nr�r�r�s  rr�z4TestSingleDispatch.test_method_register.<locals>.A._{	r�rN�
r(r)r*r
�singledispatchmethodrgr�r�r�r�rrrr6r�t	sw������
�
+�
"�
"�,�
+�
"�
�Z�Z��_�_�
!�
!��_�
!�
�Z�Z��_�_�
!�
!��_�
!�
!�
!rr6rr�r�r�r�r\r�)rgrOr�rCrD)r1r6r>r�s    r�test_method_registerz'TestSingleDispatch.test_method_registers	s-��		!�		!�		!�		!�		!�		!�		!�		!�
�A�C�C��	���A����������&�&�&�
�Q�S�S�������U�+�+�,�,�,�	���B����������&�&�&�
�Q�S�S�������U�+�+�,�,�,�	���C����������'�'�'�
�Q�S�S�������U�+�+�,�,�,�,�,rc�&�Gd�d��}|��}|�|�d����|�|�d����|�|�d��d��dS)Nc���eZdZejed�����Ze�e��ed�����Z	e�e
��ed�����Z	dS)�8TestSingleDispatch.test_staticmethod_register.<locals>.Ac��|Srrr�s rrgz:TestSingleDispatch.test_staticmethod_register.<locals>.A.t�	�	���
rc�,�t|t��Sr�rtr�r�s rr�z:TestSingleDispatch.test_staticmethod_register.<locals>.A._�	���"�#�s�+�+�+rc�,�t|t��Sr�rtr�r�s rr�z:TestSingleDispatch.test_staticmethod_register.<locals>.A._�	rrN�r(r)r*r
r�r2rgr�r�r�r�rrrr6r�	s�������
�
+�
�
�
��\�,�
+�
�
�Z�Z��_�_�
�
,�
,��\��_�
,�
�Z�Z��_�_�
�
,�
,��\��_�
,�
,�
,rr6rr�r\�rMrgrO�r1r6r>s   r�test_staticmethod_registerz-TestSingleDispatch.test_staticmethod_register�	���	,�	,�	,�	,�	,�	,�	,�	,�
�A�C�C��������A������������B��� � � �������S���3�'�'�'�'�'rc�4�Gd�d��}|�|�d��jd��|�|�d��jd��|�|�d��jd��dS)	Nc���eZdZd�Zejed�����Ze�e	��ed�����Z
e�e��ed�����Z
dS)�7TestSingleDispatch.test_classmethod_register.<locals>.Ac��||_dSrr�r�s  rrz@TestSingleDispatch.test_classmethod_register.<locals>.A.__init__�	r�rc��|d��Sr�r�r5r�s  rrgz9TestSingleDispatch.test_classmethod_register.<locals>.A.t�	����s�6�{�{�"rc��|d��Sr�rrs  rr�z9TestSingleDispatch.test_classmethod_register.<locals>.A._�	����s�5�z�z�!rc��|d��Sr�rrs  rr�z9TestSingleDispatch.test_classmethod_register.<locals>.A._�	rrN�r(r)r*rr
r�r4rgr�r�r�r�rrrr6r�	s�������
�
�
��
+�
�
#�
#��[�,�
+�
#�
�Z�Z��_�_�
�
"�
"��[��_�
"�
�Z�Z��_�_�
�
"�
"��[��_�
"�
"�
"rr6rr�r�r�r\r��rOrgr�rHs  r�test_classmethod_registerz,TestSingleDispatch.test_classmethod_register�	���	"�	"�	"�	"�	"�	"�	"�	"�"	
������Q����U�+�+�+�������R����e�,�,�,�������S����v�.�.�.�.�.rc��Gd�d��}|j�t��td�����}|j�t��td�����}|�|�d��jd��|�|�d��jd��|�|�d	��jd
��dS)Nc�D�eZdZd�Zejed�����ZdS)�4TestSingleDispatch.test_callable_register.<locals>.Ac��||_dSrr�r�s  rrz=TestSingleDispatch.test_callable_register.<locals>.A.__init__�	r�rc��|d��Sr�rrs  rrgz6TestSingleDispatch.test_callable_register.<locals>.A.t�	rrN)r(r)r*rr
r�r4rgrrrr6r�	sL������
�
�
��
+�
�
#�
#��[�,�
+�
#�
#�
#rr6c��|d��Sr�rrs  rr�z4TestSingleDispatch.test_callable_register.<locals>._�	����3�u�:�:�rc��|d��Sr�rrs  rr�z4TestSingleDispatch.test_callable_register.<locals>._�	r"rrr�r�r�r\r�)rgr�r�r4r�rOr�)r1r6r�s   r�test_callable_registerz)TestSingleDispatch.test_callable_register�	s���	#�	#�	#�	#�	#�	#�	#�	#�
����c�	�	�	�	�	�
��
�	�	�	
����c�	�	�	�	�	�
��
�	�	�	
������Q����U�+�+�+�������R����e�,�,�,�������S����v�.�.�.�.�.rc�:�Gd�dtj���}|�|jj��|�|jdj��|�t��5|��ddd��dS#1swxYwYdS)Nc�H�eZdZejejd�����ZdS)�ATestSingleDispatch.test_abstractmethod_register.<locals>.Abstractc��dSrrr\s   rr]zETestSingleDispatch.test_abstractmethod_register.<locals>.Abstract.add�	s	���rN)r(r)r*r
r�r^r_r]rrrrar'�	s?������
�
+�
�
�
�
� �
�,�
+�
�
�
rrar�r])r^rcrMr]rbr"rYrZ)r1ras  r�test_abstractmethod_registerz/TestSingleDispatch.test_abstractmethod_register�	s���	�	�	�	�	���	�	�	�	�	
�����9�:�:�:�����)�%�0�E�F�F�F�
�
�
�y�
)�
)�	�	��H�J�J�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�8B�B�Bc�*�Gd�d��}|��}|�|�d��d��|�|�d��d��|�|�d��d��dS)	Nc�z�eZdZejd���Zejdefd���Zejde	fd���ZdS)�4TestSingleDispatch.test_type_ann_register.<locals>.Ac��dSr�rr�s  rrgz6TestSingleDispatch.test_type_ann_register.<locals>.A.t�	r�rr�c��dSr�rr�s  rr�z6TestSingleDispatch.test_type_ann_register.<locals>.A._�	����urc��dSr�rr�s  rr�z6TestSingleDispatch.test_type_ann_register.<locals>.A._�	r/rNr�rrrr6r,�	s������
�
+�
�
�,�
+�
�
�Z�
�S�
�
�
��Z�
�
�Z�
�S�
�
�
��Z�
�
�
rr6rr�r�r�r\r�)rOrgrs   r�test_type_ann_registerz)TestSingleDispatch.test_type_ann_register�	s���		�		�		�		�		�		�		�		�
�A�C�C��������Q����'�'�'�������R���%�(�(�(�������S���6�*�*�*�*�*rc�&�Gd�d��}|��}|�|�d����|�|�d����|�|�d��d��dS)Nc��eZdZejed�����Zejedefd�����Z	ejede
fd�����Z	dS)�ATestSingleDispatch.test_staticmethod_type_ann_register.<locals>.Ac��|Srrr�s rrgzCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A.t�	rrr�c�,�t|t��Srrr�s rr�zCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A._�	rrc�,�t|t��Srrr�s rr�zCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A._�	rrNr	rrrr6r4�	s�������
�
+�
�
�
��\�,�
+�
�
�Z�
�
,�s�
,�
,�
,��\��Z�
,�
�Z�
�
,�s�
,�
,�
,��\��Z�
,�
,�
,rr6rr�r\r
rs   r�#test_staticmethod_type_ann_registerz6TestSingleDispatch.test_staticmethod_type_ann_register�	r
rc�4�Gd�d��}|�|�d��jd��|�|�d��jd��|�|�d��jd��dS)	Nc��eZdZd�Zejed�����Zejede	fd�����Z
ejedefd�����Z
dS)�@TestSingleDispatch.test_classmethod_type_ann_register.<locals>.Ac��||_dSrr�r�s  rrzITestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.__init__
r�rc��|d��Sr�rrs  rrgzBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.t
rrr�c��|d��Sr�rrs  rr�zBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A._

rrc��|d��Sr�rrs  rr�zBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A._
rrNrrrrr6r;
s�������
�
�
��
+�
�
#�
#��[�,�
+�
#�
�Z�
�
"�C�
"�
"�
"��[��Z�
"�
�Z�
�
"�C�
"�
"�
"��[��Z�
"�
"�
"rr6rr�r�r�r\r�rrHs  r�"test_classmethod_type_ann_registerz5TestSingleDispatch.test_classmethod_type_ann_register
rrc�0�Gd�d��}|j|��j|j|��j|j|��jfD]q}|�|���5|�|jd��|�|jdt��ddd��n#1swxYwY�r|�|jjd��|�|��jjd��|�|jjd��|�|��jjd��|�|jjd��|�|��jjd��dS)	Nc��eZdZejdedefd���Zejededefd�����Z	eje
dedefd�����ZdS)�=TestSingleDispatch.test_method_wrapping_attributes.<locals>.Ar��returnc� �t|��S��My function docstring�r�r�s  rr zBTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.func
����3�x�x�rc� �t|��SrFrHrs  r�cls_funczFTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.cls_func
����3�x�x�rc� �t|��SrFrHr�s r�static_funczITestSingleDispatch.test_method_wrapping_attributes.<locals>.A.static_func"
rLrN)r(r)r*r
r�r�r�r r4rKr2rNrrrr6rC
s�������
�
+�
 ��
 ��
 �
 �
 �,�
+�
 ��
+�
�
 �3�
 �3�
 �
 �
 ��[�,�
+�
 ��
+�
�
 ��
 ��
 �
 �
 ��\�,�
+�
 �
 �
 rr6��methrGr�r rKrN)	r rKrNrHrOr�r�r�r()r1r6rPs   r�test_method_wrapping_attributesz2TestSingleDispatch.test_method_wrapping_attributes
s���	 �	 �	 �	 �	 �	 �	 �	 �"
�F�
�A�C�C�H�
�J�
�A�C�C�L�
�M�
�A�C�C�O�

�
	C�
	C�D����4��(�(�
C�
C�� � ���/F�G�G�G�� � ��!5�e�!<�c�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C��	
������&�1�1�1���������*�F�3�3�3������,�j�9�9�9���������.�
�;�;�;������/��?�?�?���������1�=�A�A�A�A�As�$AB2�2B6	�9B6	c	���d��G�fd�d��}G�fd�d��}|�d��5}|}ddd��n#1swxYwY|�d��5}|}ddd��n#1swxYwY|�||��|�|d��|�|�d��|�d����|�|�d��d��dD]�}|�|�	��5|�t	||��jt	||��j��|�t	|��|��jt	|��|��j��ddd��n#1swxYwY��|j|��j|j|��jfD]q}|�|�
��5|�|jd��|�|jdt��ddd��n#1swxYwY�r|�|jjd
��|�|��jjd
��|�|jjd��|�|��jjd��dS)Nc�n��|j�ttj����fd�����}|S)Nc����|i|��Srr)rr�rns  �rrmzgTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decorator.<locals>.wrapper>
s����w��/��/�/�/r)�__func__r4r
r�)r rmrns  @r�classmethod_friendly_decoratorzVTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decorator<
sG����m�G�
�
�_�W�
%�
%�
0�
0�
0�
0�&�
%��[�
0��Nrc�z��eZdZeejdedefd�����Z�ededefd�����Z	dS)�MTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatchr�rDc3�>K�	t|��V�dS#YdSxYw)N�DonerHrs  r�cls_context_managerzaTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.cls_context_managerE
s.����"��c�(�(�N�N�N�!�6��6�6�6�6�6�6�6���c� �t|��SrrHrs  r�decorated_classmethodzcTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.decorated_classmethodM
rIrN)
r(r)r*r4�
contextlib�contextmanagerr�r�r[r^�rVs�r�WithoutSingleDispatchrXD
s��������
�
�
&�
"�c�
"�c�
"�
"�
"�'�
&��[�
"�,�
�
 ��
 ��
 �
 �
 ��[�,�
+�
 �
 �
 rrbc���eZdZejeejdede	fd�������Z
ej�edede	fd�������ZdS)�JTestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatchr�rDc3�>K�	t|��V�dS#YdSxYw)rGrZrHrs  rr[z^TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.cls_context_managerS
s.����
"��c�(�(�N�N�N�!�6��6�6�6�6�6�6�6r\c� �t|��SrFrHrs  rr^z`TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.decorated_classmethod]
s��
�3�x�x�rN)r(r)r*r
r�r4r_r`r�r�r[r^ras�r�WithSingleDispatchrdR
s��������
�
+�
�
�
&�
"�c�
"�c�
"�
"�
"�'�
&��[�,�
+�
"��
+�
+�
�
 ��
 ��
 �
 �
 ��[�,�
+�,�
+�
 �
 �
 rrgr`�5)r[r^)rPrOrGr�r[r^)	r[rOr^rHr�r(r�r�r�)	r1rbrgr��without_single_dispatch_foo�single_dispatch_foo�method_namerPrVs	        @r�test_double_wrapped_methodsz.TestSingleDispatch.test_double_wrapped_methods;
s����	�	�	�	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �(#�
6�
6�q�
9�
9�	.�S�*-�'�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.� �
3�
3�A�
6�
6�	&�#�"%��	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	
���4�6I�J�J�J����,�c�2�2�2����!�7�7��:�:��4�4�Q�7�7�	
�	
�	
�
	
���+�A�A�!�D�D�c�J�J�J�L�
	�
	�K����[��1�1�	
�	
�� � ��.��<�<�E��1�;�?�?�H����
� � ��.�.�0�0�+�>�>�G��1�1�3�3�[�A�A�J����
	
�	
�	
�	
�	
�	
�	
�	
�	
�	
�	
����	
�	
�	
�	
��
�2��� � �4��4��� � �6�	
�	C�	C�D����4��(�(�
C�
C�� � ���/F�G�G�G�� � ��!5�e�!<�c�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C��	
����2�;�!�	
�	
�	
�	
����� � �4�=�!�	
�	
�	
�	
����4�=�#�	
�	
�	
�	
����� � �6�?�#�	
�	
�	
�	
�	
sI�A�A�A�'A6�6A:�=A:�,B	G�G	�G	�AI�I!	�$I!	c��d}d}tjd���}|�t��5}|�d��d���}ddd��n#1swxYwY|�t
|j���|dz����|�t
|j���	|����|�t��5}|jd���}ddd��n#1swxYwY|�t
|j���|dz����|�t
|j���	|����|�t��5}|jd	tjtfd
���}ddd��n#1swxYwY|�t
|j���d����|�t
|j���	d����|�t��5}|jd	tjttjtffd
���}ddd��n#1swxYwY|�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.c��dSr�rr�s rr�z8TestSingleDispatch.test_invalid_registrations.<locals>.i�
r�rr�c��dS)NzI annotated with a non-typerr�s rr�z8TestSingleDispatch.test_invalid_registrations.<locals>._�
s��4�4r�42c��dS)NzI forgot to annotaterr�s rr�z8TestSingleDispatch.test_invalid_registrations.<locals>._�
s��-�-rzB<function TestSingleDispatch.test_invalid_registrations.<locals>._r�c��dS)Nz%I annotated with a generic collectionrr�s rr�z8TestSingleDispatch.test_invalid_registrations.<locals>._�
s
��?�>rzInvalid annotation for 'arg'.z$typing.Iterable[str] is not a class.c��dS)Nz
Invalid Unionrr�s rr�z8TestSingleDispatch.test_invalid_registrations.<locals>._�
s��&�rzFtyping.Union[int, typing.Iterable[str]] not all arguments are classes.)r
r�rYrZr�rMr�rOr��endswith�typingr6�Unionr�)r1�
msg_prefix�
msg_suffixr��excr�s      r�test_invalid_registrationsz-TestSingleDispatch.test_invalid_registrations�
s��?�
�
"�	�
�	!�	�	�
"�	!�	�
�
�
�y�
)�
)�	5�S�
�Z�Z��^�^�
5�
5��^�
5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	
����C�M�*�*�5�5�j�4�6G�H�H�I�I�I�����C�M�*�*�3�3�J�?�?�@�@�@�
�
�
�y�
)�
)�	.�S�
�Z�
.�
.��Z�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	
����C�M�*�*�5�5�j�P�7Q�
�
�	�	�	�	
����C�M�*�*�3�3�J�?�?�@�@�@�
�
�
�y�
)�
)�	?�S�
�Z�
?�v��s�+�
?�
?�
?��Z�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	
����C�M�*�*�5�5�+�
�
�	�	�	�	
����C�M�*�*�3�3�2�
�
�	�	�	��
�
�y�
)�
)�	'�S�
�Z�
'�v�|�C����)=�$=�>�
'�
'�
'��Z�
'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
����C�M�*�*�5�5�+�
�
�	�	�	�	
����C�M�*�*�3�3�T�
�
�	�	�	�	�	sH�A�A#�&A#�;D�D�D�4)G)�)G-�0G-�AK�K�Kc��tjd���}d}|�t|��5|��ddd��dS#1swxYwYdS)Nc��dSrrr3s rr�z>TestSingleDispatch.test_invalid_positional_argument.<locals>.f�
ryrz)f requires at least 1 positional argument)r
r��assertRaisesRegexrZ)r1r��msgs   r� test_invalid_positional_argumentz3TestSingleDispatch.test_invalid_positional_argument�
s���	�	!�	�	�
"�	!�	�9��
�
#�
#�I�s�
3�
3�	�	�
�A�C�C�C�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac��tjd���}|jdtjt
tffd���}|jdttzfd���}|�	|g��d��|�	|d��d��|�	|d��d��|�	|d	��d
��|�	|d��d
��dS)Nc��dS�N�defaultrr�s rr�z(TestSingleDispatch.test_union.<locals>.f�
r�rr�c��dS�N�typing.Unionrr�s rr�z(TestSingleDispatch.test_union.<locals>._�
���!�>rc��dS�N�types.UnionTyperr�s rr�z(TestSingleDispatch.test_union.<locals>._�
���$�$rr�r�r�rr9r�rZ)
r
r�r�rurvr��bytesr��floatrO�r1r�r�s   r�
test_unionzTestSingleDispatch.test_union�
s ��	�	!�	�	�
"�	!�	�
��	"�6�<��U�
�+�	"�	"�	"�
��	"�
��	%�3��;�	%�	%�	%�
��	%�	
�����2���	�*�*�*������2����/�/�/������3����0�0�0������1���0�1�1�1������3���!2�3�3�3�3�3rc���tjd���}|jdtjt
tffd���}|jdtt
zfd���}|�|g��d��|�|d��d��|�|d��d	��|�|d
��d��dS)Nc��dSr�rr�s rr�z1TestSingleDispatch.test_union_conflict.<locals>.f�
r�rr�c��dSr�rr�s rr�z1TestSingleDispatch.test_union_conflict.<locals>._�
r�rc��dSr�rr�s rr�z1TestSingleDispatch.test_union_conflict.<locals>._�
r�rr�r�r�rr�r9)	r
r�r�rurvr�r�r�rOr�s   r�test_union_conflictz&TestSingleDispatch.test_union_conflict�
s��	�	!�	�	�
"�	!�	�
��	"�6�<��U�
�+�	"�	"�	"�
��	"�
��	%�3��9�	%�	%�	%�
��	%�	
�����2���	�*�*�*������2��� 1�2�2�2������3����0�0�0������1���0�1�1�1�1�1rc�X�tjd���}|jdtjt
dffd���}|�|d��d��|�|d��d��|�|d��d��tjd���}|jdtdzfd	���}|�|d��d��|�|d��d
��|�|d��d
��dS)Nc��dSr�rr�s r�typing_unionz8TestSingleDispatch.test_union_None.<locals>.typing_union�
r�rr�c��dSr�rr�s rr�z-TestSingleDispatch.test_union_None.<locals>._r�rr9r�r�r�c��dSr�rr�s r�types_unionz7TestSingleDispatch.test_union_None.<locals>.types_union
r�rc��dSr�rr�s rr�z-TestSingleDispatch.test_union_None.<locals>._r�rr�)r
r�r�rurvr�rOr�)r1r�r�r�s    r�test_union_Nonez"TestSingleDispatch.test_union_None�
sg��	�	!�	�	�
"�	!�	�
�	�	"�6�<��T�	�*�	"�	"�	"�
�	�	"�	
�����a���)�4�4�4������b�)�)�>�:�:�:������d�+�+�^�<�<�<�	�	!�	�	�
"�	!�	�
�	�	%�3��:�	%�	%�	%�
�	�	%�	
�����R���)�4�4�4������Q���):�;�;�;������T�*�*�,=�>�>�>�>�>rc�0�tjd���}|�td��5|�t
td���ddd��n#1swxYwY|�td��5|�tjtd���ddd��n#1swxYwY|�td��5|�t
ttzd���ddd��n#1swxYwY|�td��5|�tjttzd���ddd��n#1swxYwY|�|dg��d��|�|d	g��d��|�|d
��d��|�|d��d��dS)Nc��dSr�rr�s rr�z8TestSingleDispatch.test_register_genericalias.<locals>.fr�r�Invalid first argument to c��dS�Nztypes.GenericAliasrr�s rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>s��.B�rc��dS�Nztyping.GenericAliasrr�s rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>s��5J�rc��dS)Nz$types.UnionTypes(types.GenericAlias)rr�s rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda> s��4Z�rc��dS�Nz!typing.Union[typing.GenericAlias]rr�s rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>"s��?b�rr9r�rZr�r)
r
r�r}rZr�r/r�ru�Listr�r�r�rOr�s  r�test_register_genericaliasz-TestSingleDispatch.test_register_genericaliass��	�	!�	�	�
"�	!�	��
#�
#�I�/K�
L�
L�	D�	D�
�J�J�t�C�y�"B�"B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�
�
#�
#�I�/K�
L�
L�	L�	L�
�J�J�v�{�3�'�)J�)J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�
�
#�
#�I�/K�
L�
L�	\�	\�
�J�J�t�C�y�3��(Z�(Z�[�[�[�	\�	\�	\�	\�	\�	\�	\�	\�	\�	\�	\����	\�	\�	\�	\�
�
#�
#�I�/K�
L�
L�	d�	d�
�J�J�v�{�5�)�E�1�3b�3b�c�c�c�	d�	d�	d�	d�	d�	d�	d�	d�	d�	d�	d����	d�	d�	d�	d�	
�����A�3����+�+�+������C�5���9�-�-�-������2���	�*�*�*������3����+�+�+�+�+sG�(A%�%A)�,A)�-C�C�C�*0D&�&D*�-D*�5F
�
F�Fc�&�tjd���}|�td��5|�t
t��ddd��n#1swxYwY|�td��5|�tjt��ddd��n#1swxYwY|�td��5|�t
ttz��ddd��n#1swxYwY|�td��5|�tjttz��ddd��dS#1swxYwYdS)Nc��dSr�rr�s rr�zBTestSingleDispatch.test_register_genericalias_decorator.<locals>.f*r�rr�)
r
r�r}rZr�r/r�rur�r�r�s  r�$test_register_genericalias_decoratorz7TestSingleDispatch.test_register_genericalias_decorator)sG��	�	!�	�	�
"�	!�	��
#�
#�I�/K�
L�
L�	"�	"�
�J�J�t�C�y�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
�
#�
#�I�/K�
L�
L�	)�	)�
�J�J�v�{�3�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�
#�
#�I�/K�
L�
L�	(�	(�
�J�J�t�C�y�3��'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
#�
#�I�/K�
L�
L�	/�	/�
�J�J�v�{�3�'�#�-�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/sG�&A#�#A'�*A'�	+C�C�C�&.D � D$�'D$�3F�F
�
F
c��tjd���}|�td��5|jdt
tfd���}ddd��n#1swxYwY|�td��5|jdtjtfd���}ddd��n#1swxYwY|�td��5|jdt
ttzfd���}ddd��n#1swxYwY|�td��5|jdtjttzfd���}ddd��n#1swxYwY|�|dg��d	��|�|d
g��d	��|�|d��d	��|�|d��d	��dS)
Nc��dSr�rr�s rr�zCTestSingleDispatch.test_register_genericalias_annotation.<locals>.f8r�rzInvalid annotation for 'arg'r�c��dSr�rr�s rr�zCTestSingleDispatch.test_register_genericalias_annotation.<locals>._=s��+�+rc��dSr�rr�s rr�zCTestSingleDispatch.test_register_genericalias_annotation.<locals>._As��,�,rc��dS)Nz#types.UnionType(types.GenericAlias)rr�s rr�zCTestSingleDispatch.test_register_genericalias_annotation.<locals>._Es��<�<rc��dSr�rr�s rr�zCTestSingleDispatch.test_register_genericalias_annotation.<locals>._Is��:�:rr9r�rZr�r)
r
r�r}rZr�r/r�rur�r�r�r�rOr�s   r�%test_register_genericalias_annotationz8TestSingleDispatch.test_register_genericalias_annotation7s��	�	!�	�	�
"�	!�	��
#�
#�I�/M�
N�
N�	,�	,�
�Z�
,�t�C�y�
,�
,�
,��Z�
,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,��
#�
#�I�/M�
N�
N�	-�	-�
�Z�
-�v�{�5�)�
-�
-�
-��Z�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��
#�
#�I�/M�
N�
N�	=�	=�
�Z�
=�t�C�y�3��
=�
=�
=��Z�
=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=��
#�
#�I�/M�
N�
N�	;�	;�
�Z�
;�v�{�5�)�E�1�
;�
;�
;��Z�
;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
	
�����A�3����+�+�+������C�5���9�-�-�-������2���	�*�*�*������3����+�+�+�+�+sG�$A!�!A%�(A%�)B<�<C�C�",D�D�!D�1E=�=F�FN)&r(r)r*r�r
rrr��
skipUnlessr
rr3r$r@rhr{r�r�r�r�r�rrr$r)r1r8r@rQrlrzrr�r�r�r�r�r�rrrr�r�hs������	-�	-�	-�&�&�&�.
;�
;�
;�7�7�7��X���"5�6�6���:�:���7�6�:�"47�47�47�l\(�\(�\(�|;�;�;�.+�+�+�$},�},�},�@d)�d)�d)�L*�*�*�6-�-�-�4(�(�(�(/�/�/�,/�/�/�.���+�+�+�"(�(�(�(/�/�/�,"B�"B�"B�Ha
�a
�a
�F0�0�0�d���4�4�4�&2�2�2�$?�?�?�2,�,�,�&/�/�/�,�,�,�,�,rr�c�8�eZdZdZd�Zejd���ZdS)�CachedCostItemr9c�B�t���|_dSr)r��RLock�lockr\s rrzCachedCostItem.__init__Vs�� �&�&�(�(��	�	�	rc�n�|j5|xjdz
c_ddd��n#1swxYwY|jS)�The cost of the item.r9N)r��_costr\s r�costzCachedCostItem.costYsx���Y�	�	��J�J�!�O�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��z�s�%�)�)N)r(r)r*r�rr��cached_propertyr�rrrr�r�SsG������
�E�)�)�)��!���"�!���rr�c�B�eZdZdZd�Ze�e��ZdS)�OptionallyCachedCostItemr9c�0�|xjdz
c_|jS)r�r9�r�r\s r�get_costz!OptionallyCachedCostItem.get_costds���
�
�a��
�
��z�rN)r(r)r*r�r�r�r��cached_costrrrr�r�as7������
�E����
�.�.�x�8�8�K�K�Krr�c�4�eZdZd�Zejd���ZdS)�CachedCostItemWaitc�^�d|_t���|_||_dSr�)r�r�r�r��event)r1r�s  rrzCachedCostItemWait.__init__ns'����
� �&�&�(�(��	���
�
�
rc��|j�d��|j5|xjdz
c_ddd��n#1swxYwY|jSr�)r�r}r�r�r\s rr�zCachedCostItemWait.costss����
�������
�Y�	�	��J�J�!�O�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��z�s�?�A�AN)r(r)r*rr�r�r�rrrr�r�lsB���������
�!���"�!���rr�c�8�eZdZdZd�Zejd���ZdS)�CachedCostItemWithSlotsr�c��d|_dSr�r�r\s rrz CachedCostItemWithSlots.__init__~s
����
�
�
rc� �td���)Nz!never called, slots not supportedr�r\s rr�zCachedCostItemWithSlots.cost�s���>�?�?�?rN)r(r)r*�	__slots__rr�r�r�rrrr�r�{sL�������I�����!�@�@�"�!�@�@�@rr�c�t�eZdZd�Zd�Zej��d���Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�ZdS)�TestCachedPropertyc��t��}|�|jd��|�|jd��dSr)r�rOr��r1�items  r�test_cachedzTestCachedProperty.test_cached�sC�����������A�&�&�&������A�&�&�&�&�&rc�.�t��}|�|���d��|�|jd��|�|���d��|�|jd��dS)Nr:r@rA)r�rOr�r�r�s  r�1test_cached_attribute_name_differs_from_func_namezDTestCachedProperty.test_cached_attribute_name_differs_from_func_name�s���'�)�)����������!�,�,�,�����)�1�-�-�-���������!�,�,�,�����)�1�-�-�-�-�-rc����tj��}t|���d}tj��}tjd��	�fd�t
|��D��}tj|��5|�	��ddd��n#1swxYwYtj|��n#tj|��wxYw|�
�jd��dS)Nr@r�c�@��g|]}tj�fd������S)c����jSr)r�)r�s�rrKz=TestCachedProperty.test_threaded.<locals>.<listcomp>.<lambda>�s	����	�rr�r�)r�r,r�s  �rr�z4TestCachedProperty.test_threaded.<locals>.<listcomp>�sA�������� �(9�(9�(9�(9�:�:�:���rr:)r�r�r�rr�r�r�rr�r�rOr�)r1�go�num_threadsr�r�r�s     @r�
test_threadedz TestCachedProperty.test_threaded�s6���
�_�
�
��!�"�%�%�����'�)�)����d�#�#�#�	+������{�+�+����G�"�/��8�8�
�
�������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�!�'�*�*�*�*��C�!�'�*�*�*�*���������A�&�&�&�&�&s0�/B>�=B�B>�B"�"B>�%B"�&B>�>Cc��t��}|�td��5|jddd��dS#1swxYwYdS)NzWNo '__dict__' attribute on 'CachedCostItemWithSlots' instance to cache 'cost' property.)r�r}rZr�r�s  r�test_object_with_slotsz)TestCachedProperty.test_object_with_slots�s���&�(�(��
�
#�
#��i�
�
�	�	�
�I�I�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�?�A�Ac��Gd�dt��}Gd�d|���}|�td��5|jddd��dS#1swxYwYdS)Nc�.�eZdZejd���ZdS)�6TestCachedProperty.test_immutable_dict.<locals>.MyMetac��dS)NTrr\s r�propz;TestCachedProperty.test_immutable_dict.<locals>.MyMeta.prop�s���trN)r(r)r*r�r�r�rrr�MyMetar��s1������
�
)�
�
�*�
)�
�
�
rr�c��eZdZdS)�7TestCachedProperty.test_immutable_dict.<locals>.MyClassNr'rrr�MyClassr��r�rr�r�zkThe '__dict__' attribute on 'MyMeta' instance does not support item assignment for caching 'prop' property.)r�r}rZr�)r1r�r�s   r�test_immutable_dictz&TestCachedProperty.test_immutable_dict�s���	�	�	�	�	�T�	�	�	�
	�	�	�	�	��	�	�	�	��
#�
#��y�
�
�	�	�
�L�L�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac��|�t��5}Gd�d��}ddd��n#1swxYwY|�t|jj��tt
d������dS)zDDisallow this case because decorated function a would not be cached.c�2�eZdZejd���ZeZdS)�KTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedPropertyc��dSrrr\s rr>zMTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedProperty.a�s���DrN)r(r)r*r�r�r>r?rrr�ReusedCachedPropertyr��s2�������-���.�-�����rr�NzLCannot assign the same cached_property to two different names ('a' and 'b').)rYr�rOr�rOrPrZ)r1�ctxr�s   r�test_reuse_different_namesz-TestCachedProperty.test_reuse_different_names�s���
�
�
�|�
,�
,�	��
�
�
�
�
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����
�)�*�*��	�h�i�i�j�j�	
�	
�	
�	
�	
s�5�9�9c�B���d�tj�fd����G�fd�d��}G�fd�d��}|��}|��}|�|jd��|�|jd��|�|jd��d	S)
zIReusing a cached_property on different classes under the same name is OK.rc����dz
��Sr�r)�_self�counters �r�_cpz4TestCachedProperty.test_reuse_same_name.<locals>._cp�s���
�q�L�G��Nrc���eZdZ�ZdS)�2TestCachedProperty.test_reuse_same_name.<locals>.AN�r(r)r*�cp�r�s�rr6r�����������B�B�Brr6c���eZdZ�ZdS)�2TestCachedProperty.test_reuse_same_name.<locals>.BNr�r�s�rrQr��r�rrQr9r:N)r�r�rOr�)r1r6rQr>r?r�r�s     @@r�test_reuse_same_namez'TestCachedProperty.test_reuse_same_name�s�������	�	%�	�	�	�	�
&�	%�	�
	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�
�A�C�C��
�A�C�C�������q�!�!�!������q�!�!�!������q�!�!�!�!�!rc���t�d���}Gd�d��}||_|�td��5|��jddd��dS#1swxYwYdS)Nc��dSrr)r�s rrKz=TestCachedProperty.test_set_name_not_called.<locals>.<lambda>�s��D�rc��eZdZdS)�8TestCachedProperty.test_set_name_not_called.<locals>.FooNr'rrr�Foor�r�rrzGCannot use cached_property instance without calling __set_name__ on it.)r�r�r�r}rZ)r1r�rs   r�test_set_name_not_calledz+TestCachedProperty.test_set_name_not_called�s���
�
)�
)�.�.�
9�
9��	�	�	�	�	�	�	�	����
�
#�
#��Y�
�
�	�	�
�C�E�E�H�H�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A(�(A,�/A,c�Z�|�tjtj��dSr)�assertIsInstancer�r�r�r�r\s r�test_access_from_classz)TestCachedProperty.test_access_from_class�s$�����n�1�<�3O�P�P�P�P�Prc�P�|�tjjd��dS)Nr�)rOr�r�r�r\s r�test_doczTestCachedProperty.test_doc�s%������,�4�6M�N�N�N�N�NrN)r(r)r*r�r�rr�r�r�r�r�r�rrrrrrr�r��s�������'�'�'�
.�.�.�1��0�2�2�'�'�3�2�'�(���
�
�
�

�

�

�"�"�"�.���Q�Q�Q�O�O�O�O�Orr��__main__)Or^r.r*�collections.abcr��	itertoolsrr��randomrrr�rr�r�rur��
unittest.mock�osr�r�rr_�test.supportrr�test.support.script_helperr	r
�import_fresh_moduler�r�r
r`rrr$r�r&r-rPr5r7r��TestCaser�rrLrrrr!r#rjr�r�r�r�r�r/r5r7rGr�r�r�r
r�r�r�r�r�r�r�r�r�r�r(�mainrrr�<module>rs}��
�
�
�
�����������������"�"�"�"�"�"�
�
�
�
�������
�
�
�
���������������
�
�
�
���������	�	�	�	�����	�	�	�	�����������&�&�&�&�&�&�)�)�)�)�)�)�7�7�7�7�7�7�����0�}�0��:F��I�I�I��/�m�/��<�<��
+�-�
+�I�j�\�
J�
J�
J����,�,���,����
@�@�@�	�	�	�	�	�e�	�	�	�(�(�(�(�(�u�(�(�(�	�	�	�	�	�T�	�	�	�CD�CD�CD�CD�CD�CD�CD�CD�J
���[�"D�E�E�0$�0$�0$�0$�0$�;�� 1�0$�0$�F�E�0$�f	6�	6�	6�	6�	6�K��!2�	6�	6�	6��
�
�
�
�
�
�;�.�
�
�
�	�	�	�	�	��,�	�	�	����[�"D�E�E�$�$�$�$�$�<�$�$�F�E�$� � � � � �M� � � �(�(�(�(�(��)�(�(�(�Do6�o6�o6�o6�o6��)�o6�o6�o6�d;9�;9�;9�;9�;9�!�;9�;9�;9�|LA�LA�LA�LA�LA�LA�LA�LA�^���[�"D�E�E�$�$�$�$�$�*�h�/�$�$�F�E�$�
/�/�/�/�/�:�x�0�/�/�/�P>�P>�P>�P>�P>�P>�P>�P>�f���[�"D�E�E�	
�	
�	
�	
�	
�L�(�"3�	
�	
�F�E�	
�7�7�7�7�7�\�8�#4�7�7�7�g �g �g �g �g ��)�g �g �g �T	��)�)�)�)�)�)�)���)�P�P�P�P�P�P�P�P�&u%�u%�u%�u%�u%�u%�u%�u%�p����������
�����������������*���������w��)����h,�h,�h,�h,�h,��*�h,�h,�h,�V��������9�9�9�9�9�9�9�9���������@�@�@�@�@�@�@�@�pO�pO�pO�pO�pO��*�pO�pO�pO�f�z����H�M�O�O�O�O�O��r