HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //opt/alt/python312/lib64/python3.12/test/__pycache__/test_pickle.cpython-312.opt-1.pyc
�

~h�e�R��|�ddlmZmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZ	ddlZdZGd�deejB�Z"Gd�deejB�Z#Gd�deejB�Z$Gd�deeeejB�Z%Gd�de&�Z'Gd�dee'ejB�Z(Gd�dee'ejB�Z)Gd�d eejB�Z*Gd!�d"eejB�Z+Gd#�d$eejB�Z,Gd%�d&eejB�Z-er�Gd'�d(eejB�Z.Gd)�d*e#�Z/Gd+�d,e$�Z0Gd-�d.e(�Z1Gd/�d0e)�Z2Gd1�d2e$�Z3Gd3�d4e$�Z4Gd5�d6eejB�Z5Gd7�d8eejB�Z6Gd9�d:eejB�Z7Gd;�d<eejB�Z8ejrGd=�d>ejB��Z:ejrGd?�d@ejB��Z;hdA�Z<hdB�Z=dC�Z>dD�Z?dE�Z@dF�ZAdG�ZBGdH�dIejB�ZCdJ�ZDeEdKk(rej��yy#e $rdZY��6wxYw)L�)�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ejZejZy)�
PyPickleTestsN)�__name__�
__module__�__qualname__�staticmethod�pickle�_dump�dump�_dumps�dumps�_load�load�_loads�loads�_Pickler�Pickler�
_Unpickler�	Unpickler���7/opt/alt/python312/lib64/python3.12/test/test_pickle.pyrr#sN������%�D�����'�E�����%�D�����'�E��o�o�G��!�!�Ir'rc�j�eZdZejZefZeje	e
eejeefZd�Zy)�PyUnpicklerTestsc�r�tj|�}|j|fi|��}|j�S�N��io�BytesIO�	unpicklerr��self�buf�kwds�f�us     r(r!zPyUnpicklerTests.loads4�/���J�J�s�O���D�N�N�1�%��%���v�v�x�r'N)rrrrr$r0�
IndexError�bad_stack_errors�UnpicklingError�EOFError�AttributeError�
ValueError�struct�error�ImportError�truncated_errorsr!r&r'r(r*r*,s=���!�!�I�"�}���.�.��&�
����j�+�?��r'r*c�J�eZdZejZejZdd�Zd�Z	y)�PyPicklerTestsNc���tj�}|j||fi|��}|j|�|j	d�t|j
��S�Nr)r.r/�picklerr�seek�bytes�read)r2�arg�proto�kwargsr5�ps      r(rzPyPicklerTests.dumps?sJ���J�J�L���D�L�L��E�,�V�,��	���s��	���q�	��Q�V�V�X��r'c�r�tj|�}|j|fi|��}|j�Sr,r-r1s     r(r!zPyPicklerTests.loadsFr7r'r,)
rrrrr"rFr$r0rr!r&r'r(rCrC:s ���o�o�G��!�!�I��r'rCc�t�eZdZejefZejeee	e
jeefZ
dd�Zd�ZdZy)�InMemoryPickleTestsNc�0�tj||fi|��Sr,)rr)r2rJ�protocolrLs    r(rzInMemoryPickleTests.dumpsTs���|�|�C��4�V�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(rPrPLsJ���.�.�
�;���.�.��&�
����j�+�?��5�)�37�/r'rPc��eZdZdd�Zd�Zy)�PersistentPicklerUnpicklerMixinNc���G�fd�d�j�}tj�}|||�}|j|�|j	�S)Nc���eZdZ�fd�Zy)�:PersistentPicklerUnpicklerMixin.dumps.<locals>.PersPicklerc�&���j|�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_sC���	/�$�,�,�	/�
�J�J�L����5�!��	���s���z�z�|�r'c���G�fd�d�j�}tj|�}||fi|��}|j�S)Nc���eZdZ�fd�Zy)�<PersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpicklerc�&���j|�Sr,)�persistent_loadr\s  �r(rgzLPersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpickler.persistent_loadjs����+�+�C�0�0r'N�rrrrgr`s�r(�
PersUnpicklerreis���
1r'ri)r0r.r/r)r2r3r4rir5r6s`     r(r!z%PersistentPicklerUnpicklerMixin.loadshs<���	1�D�N�N�	1�
�J�J�s�O���!�$�t�$���v�v�x�r'r,)rrrrr!r&r'r(rVrV]s���r'rVc�<�eZdZejZejZy)�PyPersPicklerTestsN)rrrrr"rFr$r0r&r'r(rkrkqs���o�o�G��!�!�Ir'rkc��eZdZejZejZejd��Z
ejd��Zejd��Zy)�PyIdPersPicklerTestsc����fd�}Gd�d�j�}||�Gd�d�j�}||�Gd�d�j�}||�y)Nc����ttjdz�D]_}tj�}|||�}|jd��j
�j|j��d��a|tj��}�j
|jd�d�tj|�}~�j|��y�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�6��:�;�
B���J�J�L��!�!�U�+�����U�#�� � ����A�J�J�L�!9�5�A�	
B�
�b�j�j�l�+�G����W�2�2�5�9�5�A����G�$�A�����a�c�"r'c��eZdZd�Zy)�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��Zy)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��Zy)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~sV���
	#�	�$�,�,�	�	�k��	�$�,�,�	�	�k��	�$�,�,�	�	�k�r'c�p��G�fd�d|j�}Gd�d�}|��|tj��}|j|j��tj��}|j|��~�tj�|j|��y)Nc�"���eZdZ��fd�Z�xZS)�PPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.Picklerc�2���|_t�|�|i|��yr,)�dispatch_table�super�__init__)r2�argsrL�	__class__�tables   ��r(r�zYPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.Pickler.__init__�s���&+��#��� �$�1�&�1r')rrrr��
__classcell__)r�r�s@�r(r#r��s
���
2�
2r'r#c��eZdZy)�VPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.DispatchTableN�rrrr&r'r(�
DispatchTabler�����r'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�d�l�l�	2�
	�	�����"�*�*�,�'���
�
�g�,�,�e�4��K�K��&�	����Y�[�)����������)�+�&r'c����fd�}Gd�d�j�}||�Gd�d�j�}||�Gd�d�j�}||�y)Nc	���ttjdz�D]M}|tj�jd|���}�j
|j�d��O|tj��}�j
|jd�d�tj|�}~�j|��yrp)rtrrur.r/rrvrrgrwrxry)r%rKr0rzr2s    �r(r{zBPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.check�s�����v�6�6��:�;�
:��%�b�j�j����E�5�1I�&J�K�	�� � ����!1�5�9�
:�"�"�*�*�,�/�I����Y�6�6�u�=�u�E����I�&�A�����a�c�"r'c��eZdZd�Zy)�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��Zy)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��Zy)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�sV���	#�	�D�N�N�	�	�m��	�D�N�N�	�	�m��	�D�N�N�	�	�m�r'N)
rrrrr"rFr$r0r�cpython_onlyr�r�r�r&r'r(rmrmxsd���o�o�G��!�!�I�������<
���'��'�,
�����r'rmc�<�eZdZejZejZy)�PyPicklerUnpicklerObjectTestsN)rrrrr"�
pickler_classr$�unpickler_classr&r'r(r�r��s���O�O�M��'�'�Or'r�c�*�eZdZejZd�Zy)�PyDispatchTableTestsc�>�tjj�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�O�M�,r'r�c�*�eZdZejZd�Zy)�PyChainDispatchTableTestsc�J�tjitj�Sr,��collections�ChainMaprr�r`s r(r�z,PyChainDispatchTableTests.get_dispatch_table�s���#�#�B��(=�(=�>�>r'Nr�r&r'r(r�r��s���O�O�M�?r'r�c�<�eZdZGd�deje�ZeZy)�PyPicklerHookTestsc��eZdZy)�'PyPicklerHookTests.CustomPyPicklerClassNr�r&r'r(�CustomPyPicklerClassr��s��r'r�N)rrrrr"rr�r�r&r'r(r�r��s��
�v���9�
�)�Mr'r�c�,�eZdZddlmZmZmZmZmZm	Z	y)�CPickleTestsr)rrrr!r#r%N)
rrr�_picklerrrr!r#r%r&r'r(r�r��s��H�H�Hr'r�c�X�eZdZejZejfZejfZ	y)�CUnpicklerTestsN)
rrrr�r%r0rr:r9rAr&r'r(r�r��s+���%�%�	�"�2�2�4��"�2�2�4�r'r�c�<�eZdZejZejZy)�
CPicklerTestsN�rrrr�r#rFr%r0r&r'r(r�r������/�/���%�%�	r'r�c�<�eZdZejZejZy)�CPersPicklerTestsNr�r&r'r(r�r��r�r'r�c�<�eZdZejZejZy)�CIdPersPicklerTestsNr�r&r'r(r�r�r�r'r�c�<�eZdZejZejZy)�CDumpPickle_LoadPickleN)	rrrr�r#rFrr$r0r&r'r(r�r�s���/�/���%�%�	r'r�c�<�eZdZejZejZy)�DumpPickle_CLoadPickleN)	rrrrr"rFr�r%r0r&r'r(r�r�s���/�/���%�%�	r'r�c�B�eZdZejZejZd�Zy)�CPicklerUnpicklerObjectTestsc�,�|jtj��}|jt�5t
|_ddd�|jt�5ddi|_ddd�ddi|_y#1swY�:xYw#1swY�xYw)N���rq)r�r.r/�assertRaises�	TypeError�object�memor=)r2r0s  r(�test_issue18339z,CPicklerUnpicklerObjectTests.test_issue18339s}���,�,�R�Z�Z�\�:�I��"�"�9�-�
(�!'�	��
(��"�"�:�.�
,�"$�d��	��
,���Y�I�N�
(�
(��
,�
,�s�A>�"
B
�>B�
BN)	rrrr�r#r�r%r�r�r&r'r(r�r�s�����
�!�+�+��	'r'r�c�*�eZdZejZd�Zy)�CDispatchTableTestsc�>�tjj�Sr,r�r`s r(r�z&CDispatchTableTests.get_dispatch_tables���(�(�-�-�/�/r'N�rrrrr#r�r�r&r'r(r�r�s�����
�	0r'r�c�*�eZdZejZd�Zy)�CChainDispatchTableTestsc�J�tjitj�Sr,r�r`s r(r�z+CChainDispatchTableTests.get_dispatch_table s���'�'��F�,A�,A�B�Br'Nr�r&r'r(r�r�s�����
�	Cr'r�c�<�eZdZGd�deje�ZeZy)�CPicklerHookTestsc��eZdZy)�%CPicklerHookTests.CustomCPicklerClassNr�r&r'r(�CustomCPicklerClassr�$r�r'r�N)rrrr�r#rr�r�r&r'r(r�r�#s��	�'�/�/�3M�	�+�
r'r�c��eZdZd�Zd�Zd�Zy)�HeapTypesTestsc�:�tjtj��}tjtj��}tjtjt|j�t|j�f|_yr,)r�r#r.r/r%�typer��_types)r2rFr0s   r(�setUpzHeapTypesTests.setUp*s_���o�o�b�j�j�l�3�G��)�)�"�*�*�,�7�I�����!�!��W�\�\�"��Y�^�^�$�	�D�Kr'c��ddl}|jD]=}|j|��5|j|j	|��ddd��?y#1swY�JxYw)Nr��tp)�gcr��subTest�
assertTrue�
is_tracked)r2r�r�s   r(�test_have_gczHeapTypesTests.test_have_gc8sU����k�k�
7���\�\�R�\�(�7��O�O�B�M�M�"�$5�6�7�7�
7�7�7�s�!A�A	c���|jD]C}|j|��5|jtd�5d|_ddd�ddd��Ey#1swY�xYw#1swY�\xYw)Nr��	immutable�bar)r�r��assertRaisesRegexr��foo)r2r�s  r(�test_immutablezHeapTypesTests.test_immutable>si���k�k�
'���\�\�R�\�(�'��/�/�	�;�G�'�!&���'�'�'�
'�'�'��'�'�s"�A �A�A �A�A � A)	N)rrrr�r�r�r&r'r(r�r�(s��	�	7�	'r'r�c�0�eZdZejZd�Zd�Zy)�SizeofTestsc��tjd�}tjt	j
��}|j
tj|�|�tjd�}tjd�}|j}||||zd|zztjd�z�td�D]}|jt!|���||||zd|zzdz�y)	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_picklerHs����*�*�>�:�H�����
�
��-�A����V�.�.�q�1�8�<��o�o�g�.�G��o�o�f�-�G��%�%�E��!�X����g�+�&��
�
�i�(�)�
*��1�X�
�����s�1�v��
��!�X����w�,�'���
r'c	����	�
���tjd�}tj�t	j
d��t	j
d��
|j�	dD]x}dD]q}�tj�||��}|jtj|�|��	||d�zzt|�zdzt|�zdz��s�z|td	�zdztd
�zdz���	�
��fd�}|ddd�|dgd
zdd�|td
�D�cgc]
}t|���c}dd�d�}||d�dd�||d�dd�||d�dd�||d�dd�||d
�dd��tjtj dd��d	d
��}|j#��	|�d�zzdzdz�ycc}w)Nz2P2n2P 2P2n2i5P 2P3n8P2n2i�P�n)�ASCIIzUTF-16zlatin-1)�strict�replace��encoding�errorsrrqrrc���tj|�}�	tj|�dd��}|j	��|�|�zz|�zz�y)Nrrr)rrr.r/r)
�data�	memo_size�
marks_sizerr6rr{r�stdsizer0s
     �����r(�check_unpicklerz3SizeofTests.test_unpickler.<locals>.check_unpicklerisQ����|�|�D�)���b�j�j��.�'.�x�A�������a��9�q�=�0�:��>�A�Br'r�d��c�2�d}t|�D]}||g}�|SrE)rt)�deeprrs   r(�recursez+SizeofTests.test_unpickler.<locals>.recurseus(�����t��(�A� �$�<�D�(��r'�2�@�<��a�)rrr�r%r>rrr.r/rvr�r�lenrtrrrr)
r2rrrr6rrr%rr{rrr0s
        @@@@@r(�test_unpicklerzSizeofTests.test_unpicklerYs�����*�*�+G�H�H��)�)�I�����$�A�����$�A��%�%�E�8�
B��1�B�F�!�"�*�*�,�+3�F�D�A��$�$�V�%6�%6�q�%9�8�D��!�X��!�V�$� ��]�+�-.�/�14�V��=�?@�A�B�	B�
B���W��-��1�C��M�A�A�E�G�
C�
C�
�A�r�1�%��Q�C�#�I�r�2�.��U�3�Z�8��S��V�8�#�r�B�
�

�G�A�J��A�.��G�A�J��B�/��G�B�K��R�0��G�B�K��R�0��G�C�L�#�s�3��"�*�*�V�\�\�#�q�%9�:�#*�8�=�A�
�F�F�H��!�W�r�A�v�%��)�A�-�.��9s�.G4N)rrrrrrr-r&r'r(r�r�Ds���+�+��	�"*	/r'r�>��cPickler��StringIOr.��	cStringIOr.��_elementtreezxml.etree.ElementTree>��socket�
_socketobjectr7�
SocketType��UserDictr;r�r;��
exceptions�
StandardError�builtins�	Exception��__builtin__�
basestringr?�strc�d�||ftvrt||f\}}||fS|tvr	t|}||fSr,)rr��module�names  r(�mappingrI�sJ����~��%�#�V�T�N�3�����4�<��
�>�	!���'���4�<�r'c�d�||ftvrt||f\}}||fS|tvr	t|}||fSr,)rrrFs  r(�reverse_mappingrK�sL����~�-�-�+�V�T�N�;�����4�<��
�)�	)�'��/���4�<�r'c��	tj|S#t$r�	tj�5t
jrdnd}tj|t�t|�ddd�n#1swYnxYwn`#t$r,}t
jrtd|�d|���t�d}~wt$r!}t
jrt|��d}~wwxYwtj|cYSwxYw)N�always�ignorezCan't import module z: )
r	�modules�KeyError�warnings�catch_warningsr�verbose�simplefilter�DeprecationWarning�
__import__r<�printr@)rG�action�excs   r(�	getmodulerZ�s���#��{�{�6�"�"���#�	��(�(�*�
#�%,�_�_��(���%�%�f�.@�A��6�"�
#�
#�
#���	�����f�c�B�C�����	�����c�
���	���{�{�6�"�"�#�sU��	C9�B�:A6�-	B�6A?	�;B�C9�	C �'B3�3C �?C�C � C9�8C9c�`�t|�}|jd�D]}t||�}�|S)N�.)rZ�split�getattr)rGrHr^rs    r(�getattributer_�s3��
�F�
�C�
�Z�Z��_����c�1�o����Jr'c#�K�t|�D]6}t||�}t|t�s� t	|t
�s�1||f���8y�wr,)�dirr^�
isinstancer��
issubclass�
BaseException)�modrH�attrs   r(�get_exceptionsrg�sB�����C�����s�D�!���d�D�!�j��}�&E���*���s�+A�A�	Ac�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�CompatPickleTestsc�J�ttj��}|tt�z}|tD��chc]\}}|��	c}}z}|tj�D��chc]\}}|��	c}}z}|D]}	t
|��ycc}}wcc}}w#t$rY�)wxYwr,)�setr�valuesrrrrZr@)r2rOrGrHs    r(�test_importzCompatPickleTests.test_import�s����n�+�+�-�.���3�-�.�.���/C�D�|�v�t�F�D�D���|�/B�/B�/D�E�|�v�t�F�E�E���	�F�
��&�!�	��E��E���
��
�s�B
�$B�<B�	B"�!B"c�0�tj�D]d\}}|j||f�5	t|�|dddk7r/|j|t�|jt||�ddd��fy#t$rY�MwxYw#1swY��xYw)Nrq�_)r�itemsr�rZr@�assertInrrv)r2�module3�module2s   r(�test_import_mappingz%CompatPickleTests.test_import_mapping�s��� 6� <� <� >�	G��G�W����w��0�1�
G���g�&��2�A�;�#�%��M�M�'�>�:��$�$�^�G�%<�g�F�
G�
G�	G��#�����
G�
G�s-�B�A=�7B�=	B	�B�B	�	B�B	c�8�tj�D]�\\}}\}}|j||f||ff�5||fdk(r,t||�}|j	t|t��n�||fdk(r,t||�}|j	t|t��nVt||�\}}|dddk7r|j||f||f�	t||�}|jt||�|�ddd���y#t$rY�wxYw#1swY��xYw)N�r=�OSError�r=r@rqro)
rrpr�r_r�rcrwr@rIrv)r2rr�name3rs�name2rfrGrHs        r(�test_name_mappingz#CompatPickleTests.test_name_mapping�s5��2F�2L�2L�2N�	K�.��W�e�.�w�������/�'�5�1A�B�C�
K��U�#�'@�@�'���7�D��O�O�J�t�W�$=�>��u�%�)F�F�'���7�D��O�O�J�t�[�$A�B�#*�7�E�#:�L�F�D��r��{�c�)��(�(�&�$��'�5�9I�J�K�+�G�U�;���(�(��f�d�)C�T�J�!
K�
K�	K��'�����
K�
K�s0�BD�
D�D�	D�	D�D�D�D	c�R�tj�D]�\}}|j||f�5	t|�||ftvr]tj|d�|k7rDtj�D]\\}}\}}||f||fk(s�n|jd|�d|���tj||�}tj||�}|j||�ddd���y#t$r%}t
jrt|�Yd}~��d}~wwxYw#1swY��xYw)NzNo reverse mapping from z to )rrpr�rZr@rrSrW�ALT_IMPORT_MAPPINGr�getr�failrv)	r2rsrrrY�m3�n3�m2�n2rGs	         r(�test_reverse_import_mappingz-CompatPickleTests.test_reverse_import_mapping�s"�� .� 4� 4� 6�	2��G�W����w��0�1�
2�#��g�&��g�&�.@�@�*�.�.�w��=��H�.B�.H�.H�.J�6�*���R�(�2�r�#�W�-�"�b��9�!�6��	�	�#*�G�#5�6�/�3�3�G�W�E��'�+�+�F�F�;��� � ���1�!
2�
2�	2��#�#�����c�
���#��
2�
2�s;�D�C+�AD�AD�+	D�4D�D�D�D�D&	c��tj�D]�\\}}\}}|j||f||ff�5	t||�}t||�\}}||||ftvr|j||f||f�t||�\}}|j||f||f�ddd���y#t$rY�lwxYw#1swY��xYwr,)	rrpr�r_r@rK�ALT_NAME_MAPPINGrvrI)r2rsrzrrryrfrGrHs        r(�test_reverse_name_mappingz+CompatPickleTests.test_reverse_name_mappings���2>�2D�2D�2F�
	C�.��W�e�.�w�������/�'�5�1A�B�C�	
C��'���7�D� /�w��>�����U�G�U�3�;K�K��$�$�f�d�^�g�u�5E�F�&�v�t�4����� � �&�$��'�5�1A�B�	
C�	
C�
	C��#�����	
C�	
C�s/�B6�B'�AB6�'	B3�0B6�2B3�3B6�6B?	c
��|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d	�tt�D�]\}}|j|�5|tttttttfvr
	ddd��J|tur-t|t�r|jtd|�d	�n�|turKt|t�r;|jtd|�d
�|jtd|�d|f�n<|jtd|�d|f�|jtd|�d|f�ddd���y#1swY��$xYw)Nr=r>)r?r@r@r?)r=r@rw)r?rwrvrx)rvrIrKrgr?r��BlockingIOError�ResourceWarning�StopAsyncIteration�RecursionError�EncodingWarning�BaseExceptionGroup�ExceptionGrouprwrcr@)r2rHrYs   r(�test_exceptionsz!CompatPickleTests.test_exceptions
s���������?�2�	4������{�;�2�	4������[�A�4�	6������y�9�0�	2������Y�?�2�	4�(��1�	9�I�D�#����d�#�
9��?�*�-�)�*�-�)�
+�+��
9�
9��g�%�*�S�'�*B��$�$�_�Z��%F�%>�@���+�
�3��0L��$�$�_�Z��%F�%B�D��$�$�W�\�4�%@�&2�D�%9�;��$�$�_�Z��%F�&2�D�%9�;��$�$�W�\�4�%@�&0�$�%7�9�)
9�
9�	9�
9�
9�s�4)F6�&CF6�6G	c�:�tjd�}t|�D]l\}}t|t�r�|j|�5|j
td|�d|f�|j
td|�d|f�ddd��ny#1swY�yxYw)Nzmultiprocessing.context�multiprocessing)	r�
import_modulergrc�Warningr�rvrKrI)r2rGrHrYs    r(�test_multiprocessing_exceptionsz1CompatPickleTests.test_multiprocessing_exceptions1s����,�,�-F�G��'��/�	D�I�D�#��#�w�'�����d�#�
D�� � ��1J�D�!Q�"3�T�!:�<�� � ��):�D�!A�";�T�!B�D�
D�
D�	D�
D�
D�s�	=B�B	N)
rrrrmrtr{r�r�r�r�r&r'r(riri�s*��	�	G�K�(2�(C�"9�H	Dr'ric�L�|jtj��|Sr,)�addTest�doctest�DocTestSuite)�loader�tests�patterns   r(�
load_testsr�=s��	�M�M�'�&�&�(�)��Lr'�__main__)G�_compat_picklerrrrr?rr.r�r>r	rQrwr��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�r�r}r�rIrKrZr_rgrir�r�mainr&r'r(�<module>r�s���@�@��
�	��
�
������&�/�3�1�7�<�D�A�8�8�/�!����
"�-�x�/@�/@�"��,�h�.?�.?���(�(�*;�*;��$7�-�/D�+�X�->�->�7�"�f��("�7�8�(�:K�:K�"�W�A�:�H�<M�<M�W�t(�$G��IZ�IZ�(�,�5�x�7H�7H�,�?� :�H�<M�<M�?�)�*�H�,=�,=�)��I�0�(�2C�2C�I�5�*�5�
&��&�&�.�&�&�2�&�&��&�&��&�'�'J�H�L]�L]�'�0�8�(�:K�:K�0�
C�#=�x�?P�?P�C�
,�-�x�/@�/@�,�

���'��*�*�'��'�6
���>/�h�'�'�>/��>/�B������#�&��yD��)�)�yD�x�
�z���H�M�M�O���G�!� ��!�s�>J0�0J;�:J;