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

�Ke6O���ddlmZmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZ	ddlZdZn
#e $rdZYnwxYwGd�deej!��Z"Gd�deej!��Z#Gd�deej!��Z$Gd�deeeej!��Z%Gd�de&��Z'Gd�dee'ej!��Z(Gd�dee'ej!��Z)Gd�d eej!��Z*Gd!�d"eej!��Z+Gd#�d$eej!��Z,Gd%�d&eej!��Z-er�Gd'�d(eej!��Z.Gd)�d*e#��Z/Gd+�d,e$��Z0Gd-�d.e(��Z1Gd/�d0e)��Z2Gd1�d2e$��Z3Gd3�d4e$��Z4Gd5�d6eej!��Z5Gd7�d8eej!��Z6Gd9�d:eej!��Z7Gd;�d<eej!��Z8ej9Gd=�d>ej!����Z:hd?�Z;hd@�Z<dA�Z=dB�Z>dC�Z?dD�Z@dE�ZAGdF�dGej!��ZBdH�ZCeDdIkrejE��dSdS)J�)�IMPORT_MAPPING�REVERSE_IMPORT_MAPPING�NAME_MAPPING�REVERSE_NAME_MAPPINGN)�support)�
import_helper)�AbstractHookTests)�AbstractUnpickleTests)�AbstractPickleTests)�AbstractPickleModuleTests)�AbstractPersistentPicklerTests)�&AbstractIdentityPersistentPicklerTests)�#AbstractPicklerUnpicklerObjectTests)�AbstractDispatchTableTests)�AbstractCustomPicklerClass)�BigmemPickleTestsTFc��eZdZeej��Zeej��Zeej	��Z
eej��Zej
ZejZdS)�
PyPickleTestsN)�__name__�
__module__�__qualname__�staticmethod�pickle�_dump�dump�_dumps�dumps�_load�load�_loads�loads�_Pickler�Pickler�
_Unpickler�	Unpickler���:/usr/local/apps/python3/lib/python3.11/test/test_pickle.pyrr#sa�������<���%�%�D��L���'�'�E��<���%�%�D��L���'�'�E��o�G��!�I�I�Ir'rc�N�eZdZejZefZeje	e
eej
eefZd�ZdS)�PyUnpicklerTestsc�n�tj|��}|j|fi|��}|���S�N��io�BytesIO�	unpicklerr��self�buf�kwds�f�us     r(r!zPyUnpicklerTests.loads4�5���J�s�O�O���D�N�1�%�%��%�%���v�v�x�x�r'N)rrrrr$r0�
IndexError�bad_stack_errors�UnpicklingError�EOFError�AttributeError�
ValueError�struct�error�ImportError�truncated_errorsr!r&r'r(r*r*,sQ�������!�I�"�}���.��&�
���j�+�?������r'r*c�8�eZdZejZejZdd�Zd�Z	dS)�PyPicklerTestsNc���tj��}|j||fi|��}|�|��|�d��t|�����S�Nr)r.r/�picklerr�seek�bytes�read)r2�arg�proto�kwargsr5�ps      r(rzPyPicklerTests.dumps?sZ���J�L�L���D�L��E�,�,�V�,�,��	���s����	���q�	�	�	��Q�V�V�X�X���r'c�n�tj|��}|j|fi|��}|���Sr,r-r1s     r(r!zPyPicklerTests.loadsFr7r'r,)
rrrrr"rFr$r0rr!r&r'r(rCrC:sF�������o�G��!�I���������r'rCc�X�eZdZejefZejeee	e
jeefZ
dd�Zd�ZdZdS)�InMemoryPickleTestsNc�(�tj||fi|��Sr,)rr)r2rJ�protocolrLs    r(rzInMemoryPickleTests.dumpsTs���|�C��4�4�V�4�4�4r'c�&�tj|fi|��Sr,)rr!)r2r3r4s   r(r!zInMemoryPickleTests.loadsWs���|�C�(�(�4�(�(�(r'r,)rrrrr:r8r9r;r<r=r>r?r@rArr!�+test_framed_write_sizes_with_delayed_writerr&r'r(rPrPLsi�������.�
�;���.��&�
���j�+�?��5�5�5�5�)�)�)�37�/�/�/r'rPc��eZdZdd�Zd�ZdS)�PersistentPicklerUnpicklerMixinNc���G�fd�d�j��}tj��}|||��}|�|��|���S)Nc���eZdZ�fd�ZdS)�:PersistentPicklerUnpicklerMixin.dumps.<locals>.PersPicklerc�.����|��Sr,)�
persistent_id��subself�objr2s  �r(r[zHPersistentPicklerUnpicklerMixin.dumps.<locals>.PersPickler.persistent_idas����)�)�#�.�.�.r'N�rrrr[�r2s�r(�PersPicklerrY`s.�������
/�
/�
/�
/�
/�
/�
/r'ra)rFr.r/r�getvalue)r2rJrKrar5rMs`     r(rz%PersistentPicklerUnpicklerMixin.dumps_st���	/�	/�	/�	/�	/�	/�	/�$�,�	/�	/�	/�
�J�L�L���K��5�!�!��	���s�����z�z�|�|�r'c���G�fd�d�j��}tj|��}||fi|��}|���S)Nc���eZdZ�fd�ZdS)�<PersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpicklerc�.����|��Sr,)�persistent_loadr\s  �r(rgzLPersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpickler.persistent_loadjs����+�+�C�0�0�0r'N�rrrrgr`s�r(�
PersUnpicklerreis.�������
1�
1�
1�
1�
1�
1�
1r'ri)r0r.r/r)r2r3r4rir5r6s`     r(r!z%PersistentPicklerUnpicklerMixin.loadshsl���	1�	1�	1�	1�	1�	1�	1�D�N�	1�	1�	1�
�J�s�O�O���M�!�$�$�t�$�$���v�v�x�x�r'r,)rrrrr!r&r'r(rVrV]s7��������������r'rVc�*�eZdZejZejZdS)�PyPersPicklerTestsN)rrrrr"rFr$r0r&r'r(rkrkqs�������o�G��!�I�I�Ir'rkc��eZdZejZejZej	d���Z
ej	d���Zej	d���ZdS)�PyIdPersPicklerTestsc�����fd�}Gd�d�j��}||��Gd�d�j��}||��Gd�d�j��}||��dS)Nc���ttjdz��D]q}tj��}|||��}|�d������|�����d���r|tj����}��|�	d��d��tj|��}~��|����dS�N��abc�def)
�ranger�HIGHEST_PROTOCOLr.r/r�assertEqualr!rbr[�weakref�ref�assertIsNone)r#rKr5rF�rr2s     �r(�checkz@PyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.check�s�����v�6��:�;�;�
B�
B���J�L�L��!�'�!�U�+�+�����U�#�#�#�� � ����A�J�J�L�L�!9�!9�5�A�A�A�A��g�b�j�l�l�+�+�G����W�2�2�5�9�9�5�A�A�A���G�$�$�A�����a�a�c�c�"�"�"�"�"r'c��eZdZd�ZdS)�FPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPicklerc��|Sr,r&)r]r^s  r(r[zTPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPickler.persistent_id�����
r'Nr_r&r'r(rar}��#������
�
�
�
�
r'rac�$�eZdZed���ZdS)r}c��|Sr,r&)�clsr^s  r(r[zTPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPickler.persistent_id�����
r'N)rrr�classmethodr[r&r'r(razFPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPickler��-������
�
�
��[�
�
�
r'c�$�eZdZed���ZdS)r}c��|Sr,r&)r^s r(r[zTPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPickler.persistent_id�r�r'N)rrrrr[r&r'r(razFPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPickler��-������
�
�
��\�
�
�
r')rF)r2r{ras`  r(�test_pickler_reference_cyclez1PyIdPersPicklerTests.test_pickler_reference_cycle~s����
	#�
	#�
	#�
	#�
	#�	�	�	�	�	�$�,�	�	�	�	��k����	�	�	�	�	�$�,�	�	�	�	��k����	�	�	�	�	�$�,�	�	�	�	��k�����r'c���G�fd�d|j��}Gd�d��}|���|tj����}|�|j���tj���}|�|����~�tj	��|�
|����dS)Nc�"���eZdZ��fd�Z�xZS)�PPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.Picklerc�H���|_t��j|i|��dSr,)�dispatch_table�super�__init__)r2�argsrL�	__class__�tables   ��r(r�zYPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.Pickler.__init__�s-���&+��#� ���� �$�1�&�1�1�1�1�1r')rrrr��
__classcell__)r�r�s@�r(r#r��s>��������
2�
2�
2�
2�
2�
2�
2�
2�
2�
2r'r#c��eZdZdS)�VPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.DispatchTableN�rrrr&r'r(�
DispatchTabler����������Dr'r�)rFr.r/�assertIsr�rwrx�assertIsNotNoner�
gc_collectry)r2r#r�rF�	table_refr�s     @r(�*test_custom_pickler_dispatch_table_memleakz?PyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak�s����	2�	2�	2�	2�	2�	2�	2�d�l�	2�	2�	2�
	�	�	�	�	�	�	�	��
�����'�"�*�,�,�'�'���
�
�g�,�e�4�4�4��K��&�&�	����Y�Y�[�[�)�)�)�����������)�)�+�+�&�&�&�&�&r'c�����fd�}Gd�d�j��}||��Gd�d�j��}||��Gd�d�j��}||��dS)Nc	����ttjdz��D][}|tj��d|������}��|���d���\|tj����}��|�d��d��tj
|��}~��|����dSrp)rtrrur.r/rrvrrgrwrxry)r%rKr0rzr2s    �r(r{zBPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.check�s�����v�6��:�;�;�
:�
:��%�I�b�j����E�5�1I�1I�&J�&J�K�K�	�� � ����!1�!1�5�9�9�9�9�!�	�"�*�,�,�/�/�I����Y�6�6�u�=�=�u�E�E�E���I�&�&�A�����a�a�c�c�"�"�"�"�"r'c��eZdZd�ZdS)�JPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpicklerc��|Sr,r&)r]�pids  r(rgzZPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpickler.persistent_load�rr'Nrhr&r'r(rir��r�r'ric�$�eZdZed���ZdS)r�c��|Sr,r&)r�r�s  r(rgzZPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpickler.persistent_load�r�r'N)rrrr�rgr&r'r(rizJPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpickler�r�r'c�$�eZdZed���ZdS)r�c��|Sr,r&)r�s r(rgzZPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpickler.persistent_load�r�r'N)rrrrrgr&r'r(rizJPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpickler�r�r')r0)r2r{ris`  r(�test_unpickler_reference_cyclez3PyIdPersPicklerTests.test_unpickler_reference_cycle�s����	#�	#�	#�	#�	#�	�	�	�	�	�D�N�	�	�	�	��m����	�	�	�	�	�D�N�	�	�	�	��m����	�	�	�	�	�D�N�	�	�	�	��m�����r'N)
rrrrr"rFr$r0r�cpython_onlyr�r�r�r&r'r(rmrmxs��������o�G��!�I��������<
��'�'���'�,
��������r'rmc�*�eZdZejZejZdS)�PyPicklerUnpicklerObjectTestsN)rrrrr"�
pickler_classr$�unpickler_classr&r'r(r�r��s�������O�M��'�O�O�Or'r�c�"�eZdZejZd�ZdS)�PyDispatchTableTestsc�>�tj���Sr,�rr��copyr`s r(�get_dispatch_tablez'PyDispatchTableTests.get_dispatch_table�s���$�)�)�+�+�+r'N�rrrrr"r�r�r&r'r(r�r��s*�������O�M�,�,�,�,�,r'r�c�"�eZdZejZd�ZdS)�PyChainDispatchTableTestsc�@�tjitj��Sr,��collections�ChainMaprr�r`s r(r�z,PyChainDispatchTableTests.get_dispatch_table�s���#�B��(=�>�>�>r'Nr�r&r'r(r�r��s*�������O�M�?�?�?�?�?r'r�c�:�eZdZGd�deje��ZeZdS)�PyPicklerHookTestsc��eZdZdS)�'PyPicklerHookTests.CustomPyPicklerClassNr�r&r'r(�CustomPyPicklerClassr��s�������r'r�N)rrrrr"rr�r�r&r'r(r�r��sD������
�
�
�
�
�v��9�
�
�
�)�M�M�Mr'r�c�.�eZdZddlmZmZmZmZmZm	Z	dS)�CPickleTestsr)rrrr!r#r%N)
rrr�_picklerrrr!r#r%r&r'r(r�r��s@������H�H�H�H�H�H�H�H�H�H�H�H�H�H�H�H�H�Hr'r�c�<�eZdZejZejfZejfZ	dS)�CUnpicklerTestsN)
rrrr�r%r0rr:r9rAr&r'r(r�r��s0�������%�	�"�2�4��"�2�4���r'r�c�*�eZdZejZejZdS)�
CPicklerTestsN�rrrr�r#rFr%r0r&r'r(r�r����������/���%�	�	�	r'r�c�*�eZdZejZejZdS)�CPersPicklerTestsNr�r&r'r(r�r��r�r'r�c�*�eZdZejZejZdS)�CIdPersPicklerTestsNr�r&r'r(r�r�r�r'r�c�*�eZdZejZejZdS)�CDumpPickle_LoadPickleN)	rrrr�r#rFrr$r0r&r'r(r�r�s�������/���%�	�	�	r'r�c�*�eZdZejZejZdS)�DumpPickle_CLoadPickleN)	rrrrr"rFr�r%r0r&r'r(r�r�s�������/���%�	�	�	r'r�c�0�eZdZejZejZd�ZdS)�CPicklerUnpicklerObjectTestsc�V�|�tj����}|�t��5t
|_ddd��n#1swxYwY|�t��5ddi|_ddd��n#1swxYwYddi|_dS)N���rq)r�r.r/�assertRaises�	TypeError�object�memor=)r2r0s  r(�test_issue18339z,CPicklerUnpicklerObjectTests.test_issue18339s���,�,�R�Z�\�\�:�:�I��"�"�9�-�-�
(�
(�!'�	��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��"�"�:�.�.�
,�
,�"$�d��	��
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,���Y�I�N�N�Ns$�
A�A�!A�?
B�B�BN)	rrrr�r#r�r%r�r�r&r'r(r�r�s2��������
�!�+��	'�	'�	'�	'�	'r'r�c�"�eZdZejZd�ZdS)�CDispatchTableTestsc�>�tj���Sr,r�r`s r(r�z&CDispatchTableTests.get_dispatch_tables���(�-�-�/�/�/r'N�rrrrr#r�r�r&r'r(r�r�s*��������
�	0�	0�	0�	0�	0r'r�c�"�eZdZejZd�ZdS)�CChainDispatchTableTestsc�@�tjitj��Sr,r�r`s r(r�z+CChainDispatchTableTests.get_dispatch_table s���'��F�,A�B�B�Br'Nr�r&r'r(r�r�s/��������
�	C�	C�	C�	C�	Cr'r�c�:�eZdZGd�deje��ZeZdS)�CPicklerHookTestsc��eZdZdS)�%CPicklerHookTests.CustomCPicklerClassNr�r&r'r(�CustomCPicklerClassr�$r�r'r�N)rrrr�r#rr�r�r&r'r(r�r�#sB������	�	�	�	�	�'�/�3M�	�	�	�+�
�
�
r'r�c�(�eZdZejZd�Zd�ZdS)�SizeofTestsc��tjd��}tjt	j����}|�t�|��|��tj
d��}tj
d��}|j}||||zd|zztj
d��z��td��D]$}|�t!|�����%||||zd|zzdz��dS)	N�7P2n3i2n3i2P�3nP0n�Pn0P�sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�� r)r�calcobjsizer�r#r.r/rvr��
__sizeof__r>�calcsize�check_sizeof�sys�	getsizeofrtr�chr)r2�basesizerM�MT_size�ME_sizer{�is       r(�test_picklerzSizeofTests.test_pickler,s���*�>�:�:�H����
���-�-�A����V�.�.�q�1�1�8�<�<�<��o�g�.�.�G��o�f�-�-�G��%�E��E�!�X����g�+�&��
�i�(�(�)�
*�
*�
*��1�X�X�
�
�����s�1�v�v������E�!�X����w�,�'���
�
�
�
�
r'c	�R���	�
��tjd��}tj�t	jd���t	jd���	|j�dD]�}dD]�}�tj��||���}|�	t�|��|���||d�zzt|��zdzt|��zdz������|td	��zdztd
��zdz�
���	�
�fd�}|ddd��|dgd
zdd��|d�td
��D��dd��d�}||d��dd��||d��dd��||d��dd��||d��dd��||d
��dd���tjtjdd����d	d
���}|����|�
d�zzdzdz��dS)Nz2P2n2P 2P2n2i5P 2P3n8P2n2i�P�n)�ASCIIzUTF-16zlatin-1)�strict�replace��encoding�errorsr�rqrrc����tj|��}�	tj|��dd���}|����|�|�zz|�zz��dS)Nrrr)rrr.r/r)
�data�	memo_size�
marks_sizerr6r�r{r��stdsizer0s
     �����r(�check_unpicklerz3SizeofTests.test_unpickler.<locals>.check_unpicklerMss����|�D�)�)���I�b�j��.�.�'.�x�A�A�A����������a��9�q�=�0�:��>�A�B�B�B�B�Br'r�d�c�,�g|]}t|����Sr&)r�)�.0r�s  r(�
<listcomp>z.SizeofTests.test_unpickler.<locals>.<listcomp>Xs��8�8�8��S��V�V�8�8�8r'�c�6�d}t|��D]}||g}�|SrE)rt)�deeprr�s   r(�recursez+SizeofTests.test_unpickler.<locals>.recurseYs,�����t���(�(�A� �$�<�D�D��r'�2�@�<��a�)rr�r�r%r>r�r�r.r/rvr�r��lenrtrrr)r2r�rrr6rrr�r{r�r
r0s       @@@@@r(�test_unpicklerzSizeofTests.test_unpickler=s���������*�+G�H�H�H��)�I����$�$�A����$�$�A��%�E�8�
B�
B��1�B�B�F�!�	�"�*�,�,�+3�F�D�D�D�A��$�$�V�%6�%6�q�%9�%9�8�D�D�D��E�!�X��!�V�$� ��]�]�+�-.�/�14�V���=�?@�A�B�B�B�B�	B���W���-��1�C��M�M�A�A�E�G�
C�
C�
C�
C�
C�
C�
C�
C�
C�
�O�A�r�1�%�%�%��O�Q�C�#�I�r�2�.�.�.��O�8�8�U�3�Z�Z�8�8�8�#�r�B�B�B�
�
�
�

�O�G�G�A�J�J��A�.�.�.��O�G�G�A�J�J��B�/�/�/��O�G�G�B�K�K��R�0�0�0��O�G�G�B�K�K��R�0�0�0��O�G�G�C�L�L�#�s�3�3�3��	�"�*�V�\�#�q�%9�%9�:�:�#*�8�=�=�=�A�
�F�F�H�H�H��E�!�W�r�A�v�%��)�A�-�.�.�.�.�.r'N)rrrrr�r�rr&r'r(r�r�(s:�������+��	�	�	�"*	/�*	/�*	/�*	/�*	/r'r�>��cPickler��StringIOr.��	cStringIOr.��_elementtreezxml.etree.ElementTree>��socket�
_socketobjectr&�
SocketType��UserDictr*r�r*��
exceptions�
StandardError�builtins�	Exception��__builtin__�
basestringr.�strc�r�||ftvrt||f\}}n|tvr
t|}||fSr,)rr��module�names  r(�mappingr8xsD����~��%�%�#�V�T�N�3�����	�>�	!�	!���'���4�<�r'c�r�||ftvrt||f\}}n|tvr
t|}||fSr,)rrr5s  r(�reverse_mappingr:sF����~�-�-�-�+�V�T�N�;�����	�)�	)�	)�'��/���4�<�r'c��	tj|S#t$r�	tj��5t
jrdnd}tj|t��t|��ddd��n#1swxYwYnc#t$r-}t
jrtd|�d|����t�d}~wt$r!}t
jrt|���d}~wwxYwtj|cYSwxYw)N�always�ignorezCan't import module z: )
r��modules�KeyError�warnings�catch_warningsr�verbose�simplefilter�DeprecationWarning�
__import__r<�printr@)r6�action�excs   r(�	getmodulerI�s[��#��{�6�"�"���#�#�#�	��(�*�*�
#�
#�%,�_�B���(���%�f�.@�A�A�A��6�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#����	�	�	���
D���f�f�f�c�c�B�C�C�C��������	�	�	���
��c�
�
�
������	�����{�6�"�"�"�"�#���sa��
C<�B�:A8�,B�8A<	�<B�?A<	�B�C<�
C$�(B6�6
C$�C�C$�$C<�;C<c�t�t|��}|�d��D]}t||��}�|S)N�.)rI�split�getattr)r6r7r^r�s    r(�getattributerN�s<��
�F�
�
�C�
�Z�Z��_�_�����c�1�o�o����Jr'c#�K�t|��D]B}t||��}t|t��rt	|t
��r||fV��CdSr,)�dirrM�
isinstance�type�
issubclass�
BaseException)�modr7�attrs   r(�get_exceptionsrW�sh�����C�������s�D�!�!���d�D�!�!�	�j��}�&E�&E�	���*������r'c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�CompatPickleTestsc�&�ttj����}|tt��z}|d�tD��z}|d�tj��D��z}|D]"}	t
|���#t$rY�wxYwdS)Nc��h|]\}}|��Sr&r&�rr6r7s   r(�	<setcomp>z0CompatPickleTests.test_import.<locals>.<setcomp>�s��D�D�D�|�v�t�F�D�D�Dr'c��h|]\}}|��Sr&r&r\s   r(r]z0CompatPickleTests.test_import.<locals>.<setcomp>�s��E�E�E�|�v�t�F�E�E�Er')�setr�valuesrrrrIr@)r2r>r6s   r(�test_importzCompatPickleTests.test_import�s����n�+�-�-�.�.���3�-�.�.�.���D�D�/C�D�D�D�D���E�E�|�/B�/D�/D�E�E�E�E���	�	�F�
��&�!�!�!�!���
�
�
���
����	�	s�1B�
B�
Bc�l�tj��D]�\}}|�||f��5	t|��n#t$rYnwxYw|dd�dkr<|�|t��|�t||��ddd��n#1swxYwY��dS)Nrq�_)r�items�subTestrIr@�assertInrrv)r2�module3�module2s   r(�test_import_mappingz%CompatPickleTests.test_import_mapping�s#�� 6� <� >� >�	G�	G��G�W����w��0�1�1�
G�
G���g�&�&�&�&��"�����D������2�A�2�;�#�%�%��M�M�'�>�:�:�:��$�$�^�G�%<�g�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��	G�	Gs5�B(�A�B(�
A�B(�A�A
B(�(B,	�/B,	c��tj��D�]B\\}}\}}|�||f||ff��5||fdkr9t||��}|�t|t����n�||fdkr9t||��}|�t|t����n�t||��\}}|dd�dkr|�	||f||f��	t||��}|�	t||��|��n#t$rYnwxYwddd��n#1swxYwY��DdS)N�r,�OSError�r,r@rqrc)
rrdrerN�
assertTruerSrlr@r8rv)r2rg�name3rh�name2rVr6r7s        r(�test_name_mappingz#CompatPickleTests.test_name_mapping�s���2F�2L�2N�2N�	K�	K�.��W�e�.�w�������/�'�5�1A�B�C�C�
K�
K��U�#�'@�@�@�'���7�7�D��O�O�J�t�W�$=�$=�>�>�>�>��u�%�)F�F�F�'���7�7�D��O�O�J�t�[�$A�$A�B�B�B�B�#*�7�E�#:�#:�L�F�D��r��r�{�c�)�)��(�(�&�$��'�5�9I�J�J�J�K�+�G�U�;�;���(�(��f�d�)C�)C�T�J�J�J�J��'����������
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��	K�	Ks6�B>E�:D/�
%E�/
D<�9E�;D<�<E�E	�E	c�t�tj��D�]"\}}|�||f��5	t|��n2#t$r%}t
jrt|��Yd}~nd}~wwxYw||ftvr_tj
|d��|krFtj��D]\\}}\}}||f||fkrn�|�d|�d|����tj
||��}tj
||��}|�
||��ddd��n#1swxYwY��$dS)NzNo reverse mapping from z to )rrdrerIr@rrBrF�ALT_IMPORT_MAPPINGr�getr�failrv)	r2rhrgrH�m3�n3�m2�n2r6s	         r(�test_reverse_import_mappingz-CompatPickleTests.test_reverse_import_mapping�s��� .� 4� 6� 6�	2�	2��G�W����w��0�1�1�
2�
2�#��g�&�&�&�&��"�#�#�#���#��c�
�
�
����������#�����g�&�.@�@�@�*�.�w��=�=��H�H�.B�.H�.J�.J�6�6�*���R�(�2�r�#�W�-�"�b��9�9�!�E�:��	�	�	�#*�7�7�G�G�#5�6�6�6�/�3�G�W�E�E��'�+�F�F�;�;��� � ���1�1�1�!
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2��	2�	2s;�D+�A�D+�
A2�
A-�(D+�-A2�2B-D+�+D/	�2D/	c��tj��D]�\\}}\}}|�||f||ff��5	t||��}n#t$rYnwxYwt||��\}}||||ftvr|�||f||f��t||��\}}|�||f||f��ddd��n#1swxYwY��dSr,)	rrdrerNr@r:�ALT_NAME_MAPPINGrvr8)r2rhrprgrorVr6r7s        r(�test_reverse_name_mappingz+CompatPickleTests.test_reverse_name_mapping�sn��2>�2D�2F�2F�
	C�
	C�.��W�e�.�w�������/�'�5�1A�B�C�C�	
C�	
C��'���7�7�D�D��"�����D�����.�w��>�>�����U�G�U�3�;K�K�K��$�$�f�d�^�g�u�5E�F�F�F�&�v�t�4�4����� � �&�$��'�5�1A�B�B�B�	
C�	
C�	
C�	
C�	
C�	
C�	
C�	
C�	
C�	
C�	
C����	
C�	
C�	
C�	
C��
	C�
	Cs5�C�A
�C�
A�C�A�A*C�C	�C	c
�f�|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d	��tt��D�]f\}}|�|��5|tttttttfvr
	ddd���W|tur:t|t��r%|�td|��d	��n�|tur`t|t��rK|�td|��d
��|�td|��d|f��nL|�td|��d|f��|�td|��d|f��ddd��n#1swxYwY��hdS)Nr,r-)r.r/r/r.)r,r/rl)r.rlrkrm)rvr8r:rWr.re�BlockingIOError�ResourceWarning�StopAsyncIteration�RecursionError�EncodingWarning�BaseExceptionGroup�ExceptionGrouprlrSr@)r2r7rHs   r(�test_exceptionsz!CompatPickleTests.test_exceptions�s���������?�?�2�	4�	4�	4������{�;�;�2�	4�	4�	4������[�A�A�4�	6�	6�	6������y�9�9�0�	2�	2�	2������Y�?�?�2�	4�	4�	4�(��1�1�	9�	9�I�D�#����d�#�#�
9�
9��?�*�-�)�*�-�)�
+�+�+��
9�
9�
9�
9�
9�
9�
9��g�%�%�*�S�'�*B�*B�%��$�$�_�Z��%F�%F�%>�@�@�@�@���+�+�
�3��0L�0L�+��$�$�_�Z��%F�%F�%B�D�D�D��$�$�W�\�4�%@�%@�&2�D�%9�;�;�;�;��$�$�_�Z��%F�%F�&2�D�%9�;�;�;��$�$�W�\�4�%@�%@�&0�$�%7�9�9�9�)
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��	9�	9s�$0H$� C8H$�$H(	�+H(	c�J�tjd��}t|��D]~\}}|�|��5|�td|��d|f��|�t
d|��d|f��ddd��n#1swxYwY�dS)Nzmultiprocessing.context�multiprocessing)r�
import_modulerWrervr:r8)r2r6r7rHs    r(�test_multiprocessing_exceptionsz1CompatPickleTests.test_multiprocessing_exceptionss���,�-F�G�G��'��/�/�	D�	D�I�D�#����d�#�#�
D�
D�� � ��1J�D�!Q�!Q�"3�T�!:�<�<�<�� � ��):�D�!A�!A�";�T�!B�D�D�D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��	D�	Ds�A
B�B	�B	N)
rrrrarirqrzr}r�r�r&r'r(rYrY�s�������	�	�	�	G�	G�	G�K�K�K�(2�2�2�(C�C�C�"9�"9�"9�HD�D�D�D�Dr'rYc�R�|�tj����|Sr,)�addTest�doctest�DocTestSuite)�loader�tests�patterns   r(�
load_testsr�s"��	�M�M�'�&�(�(�)�)�)��Lr'�__main__)F�_compat_picklerrrrr.rr.r�r>r�r@rwr��unittest�testr�test.supportr�test.pickletesterr	r
rrr
rrrrrr��has_c_implementationr@�TestCaserr*rCrPr�rVrkrmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rsr|r8r:rIrNrWrYr�r�mainr&r'r(�<module>r�s	��@�@�@�@�@�@�@�@�@�@�@�@�����
�
�
�
�	�	�	�	�����
�
�
�
�
�
�
�
�����������������������&�&�&�&�&�&�/�/�/�/�/�/�3�3�3�3�3�3�1�1�1�1�1�1�7�7�7�7�7�7�<�<�<�<�<�<�D�D�D�D�D�D�A�A�A�A�A�A�8�8�8�8�8�8�8�8�8�8�8�8�/�/�/�/�/�/�!��N�N�N������!�!�!� ����!����"�"�"�"�"�-�x�/@�"�"�"������,�h�.?���������(�(�*;����$7�7�7�7�7�-�/D�+�X�->�7�7�7�"�����f����("�"�"�"�"�7�8�(�:K�"�"�"�W�W�W�W�W�A�:�H�<M�W�W�W�t(�(�(�(�(�$G��IZ�(�(�(�,�,�,�,�,�5�x�7H�,�,�,�?�?�?�?�?� :�H�<M�?�?�?�)�)�)�)�)�*�H�,=�)�)�)��x/�I�I�I�I�I�0�(�2C�I�I�I�5�5�5�5�5�*�5�5�5�
&�&�&�&�&��&�&�&�&�&�&�&�&�.�&�&�&�&�&�&�&�&�2�&�&�&�&�&�&�&�&��&�&�&�&�&�&�&�&��&�&�&�'�'�'�'�'�'J�H�L]�'�'�'�0�0�0�0�0�8�(�:K�0�0�0�
C�C�C�C�C�#=�x�?P�C�C�C�
,�,�,�,�,�-�x�/@�,�,�,�

��>/�>/�>/�>/�>/�h�'�>/�>/���>/�B��������������#�#�#�&������wD�wD�wD�wD�wD��)�wD�wD�wD�t���
�z����H�M�O�O�O�O�O��s�>B�B�B