Your IP : 216.73.216.85


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_pickle.cpython-39.pyc

a

XC?h�K�@s@ddlmZmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZzddlZdZWne�ydZYn0Gdd�deej�Z Gdd�deej�Z!Gdd�deej�Z"Gdd�deeeej�Z#Gdd�de$�Z%Gdd�dee%ej�Z&Gdd�dee%ej�Z'Gdd�deej�Z(Gd d!�d!eej�Z)Gd"d#�d#eej�Z*Gd$d%�d%eej�Z+e�r�Gd&d'�d'eej�Z,Gd(d)�d)e!�Z-Gd*d+�d+e"�Z.Gd,d-�d-e&�Z/Gd.d/�d/e'�Z0Gd0d1�d1e"�Z1Gd2d3�d3e"�Z2Gd4d5�d5eej�Z3Gd6d7�d7eej�Z4Gd8d9�d9eej�Z5Gd:d;�d;eej�Z6ej7Gd<d=�d=ej��Z8hd>�Z9hd?�Z:d@dA�Z;dBdC�Z<dDdE�Z=dFdG�Z>dHdI�Z?GdJdK�dKej�Z@dLdM�ZAeBdNk�r<e�C�dS)O�)�IMPORT_MAPPING�REVERSE_IMPORT_MAPPING�NAME_MAPPING�REVERSE_NAME_MAPPINGN)�support)�AbstractHookTests)�AbstractUnpickleTests)�AbstractPickleTests)�AbstractPickleModuleTests)�AbstractPersistentPicklerTests)�&AbstractIdentityPersistentPicklerTests)�#AbstractPicklerUnpicklerObjectTests)�AbstractDispatchTableTests)�AbstractCustomPicklerClass)�BigmemPickleTestsTFc@s@eZdZeej�Zeej�Zeej	�Z
eej�Zej
ZejZdS)�
PyPickleTestsN)�__name__�
__module__�__qualname__�staticmethod�pickleZ_dump�dumpZ_dumps�dumps�_load�loadZ_loads�loads�_Pickler�Pickler�
_Unpickler�	Unpickler�r r �5/opt/alt/python39/lib64/python3.9/test/test_pickle.pyr"s



rc@s6eZdZejZefZeje	e
eej
eefZdd�ZdS)�PyUnpicklerTestscKs$t�|�}|j|fi|��}|��S�N��io�BytesIO�	unpicklerr��self�buf�kwds�f�ur r r!r3s
zPyUnpicklerTests.loadsN)rrrrrr'�
IndexError�bad_stack_errors�UnpicklingError�EOFError�AttributeError�
ValueError�struct�error�ImportError�truncated_errorsrr r r r!r"+s�r"c@s*eZdZejZejZddd�Zdd�Z	dS)�PyPicklerTestsNcKs<t��}|j||fi|��}|�|�|�d�t|���S�Nr)r%r&�picklerr�seek�bytes�read)r)�arg�proto�kwargsr,�pr r r!r>s


zPyPicklerTests.dumpscKs$t�|�}|j|fi|��}|��Sr#r$r(r r r!rEs
zPyPicklerTests.loads)N)
rrrrrr:rr'rrr r r r!r89s
r8c@sBeZdZejefZejeee	e
jeefZ
ddd�Zdd�ZdZdS)�InMemoryPickleTestsNcKstj||fi|��Sr#)rr)r)r>Zprotocolr@r r r!rSszInMemoryPickleTests.dumpscKstj|fi|��Sr#)rr)r)r*r+r r r!rVszInMemoryPickleTests.loads)N)rrrrr0r.r/r1r2r3r4r5r6r7rrZ+test_framed_write_sizes_with_delayed_writerr r r r!rBKs
�
rBc@seZdZddd�Zdd�ZdS)�PersistentPicklerUnpicklerMixinNcs:G�fdd�d�j�}t��}|||�}|�|�|��S)NcseZdZ�fdd�ZdS)z:PersistentPicklerUnpicklerMixin.dumps.<locals>.PersPicklercs
��|�Sr#)�
persistent_id��subself�obj�r)r r!rD`szHPersistentPicklerUnpicklerMixin.dumps.<locals>.PersPickler.persistent_idN�rrrrDr rHr r!�PersPickler_srJ)r:r%r&r�getvalue)r)r>r?rJr,rAr rHr!r^s


z%PersistentPicklerUnpicklerMixin.dumpscs8G�fdd�d�j�}t�|�}||fi|��}|��S)NcseZdZ�fdd�ZdS)z<PersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpicklercs
��|�Sr#)�persistent_loadrErHr r!rLiszLPersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpickler.persistent_loadN�rrrrLr rHr r!�
PersUnpicklerhsrN)r'r%r&r)r)r*r+rNr,r-r rHr!rgs
z%PersistentPicklerUnpicklerMixin.loads)N)rrrrrr r r r!rC\s
	rCc@seZdZejZejZdS)�PyPersPicklerTestsN)rrrrrr:rr'r r r r!rOpsrOc@s4eZdZejZejZej	dd��Z
ej	dd��ZdS)�PyIdPersPicklerTestscs^�fdd�}Gdd�d�j�}||�Gdd�d�j�}||�Gdd�d�j�}||�dS)Ncs�ttjd�D]6}t��}|||�}|�d�����|���d�q|t���}��|�	d�d�t
�|�}~��|��dS�N��abc�def)
�ranger�HIGHEST_PROTOCOLr%r&r�assertEqualrrKrD�weakref�ref�assertIsNone)rr?r,r:�rrHr r!�checks


z@PyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.checkc@seZdZdd�ZdS)�FPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPicklercSs|Sr#r rEr r r!rD�s�TPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPickler.persistent_idNrIr r r r!rJ�srJc@seZdZedd��ZdS)r]cSs|Sr#r )�clsrGr r r!rD�sr^N)rrr�classmethodrDr r r r!rJ�sc@seZdZedd��ZdS)r]cSs|Sr#r )rGr r r!rD�sr^N)rrrrrDr r r r!rJ�s)r:)r)r\rJr rHr!�test_pickler_reference_cycle}sz1PyIdPersPicklerTests.test_pickler_reference_cyclecs^�fdd�}Gdd�d�j�}||�Gdd�d�j�}||�Gdd�d�j�}||�dS)Ncstttjd�D]*}|t���d|���}��|��d�q|t���}��|�d�d�t	�
|�}~��|��dSrQ)rUrrVr%r&rrWrrLrXrYrZ)rr?r'r[rHr r!r\�s
zBPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.checkc@seZdZdd�ZdS)�JPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpicklercSs|Sr#r )rF�pidr r r!rL�s�ZPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpickler.persistent_loadNrMr r r r!rN�srNc@seZdZedd��ZdS)rbcSs|Sr#r )r_rcr r r!rL�srdN)rrrr`rLr r r r!rN�sc@seZdZedd��ZdS)rbcSs|Sr#r )rcr r r!rL�srdN)rrrrrLr r r r!rN�s)r')r)r\rNr rHr!�test_unpickler_reference_cycle�s
z3PyIdPersPicklerTests.test_unpickler_reference_cycleN)rrrrrr:rr'r�cpython_onlyrarer r r r!rPws
rPc@seZdZejZejZdS)�PyPicklerUnpicklerObjectTestsN)rrrrr�
pickler_classr�unpickler_classr r r r!rg�srgc@seZdZejZdd�ZdS)�PyDispatchTableTestscCs
tj��Sr#�r�dispatch_table�copyrHr r r!�get_dispatch_table�sz'PyDispatchTableTests.get_dispatch_tableN�rrrrrrhrnr r r r!rj�srjc@seZdZejZdd�ZdS)�PyChainDispatchTableTestscCst�itj�Sr#��collections�ChainMaprrlrHr r r!rn�sz,PyChainDispatchTableTests.get_dispatch_tableNror r r r!rp�srpc@s$eZdZGdd�deje�ZeZdS)�PyPicklerHookTestsc@seZdZdS)z'PyPicklerHookTests.CustomPyPicklerClassN�rrrr r r r!�CustomPyPicklerClass�srvN)rrrrrrrvrhr r r r!rt�s�rtc@s,eZdZddlmZmZmZmZmZm	Z	dS)�CPickleTestsr)rrrrrrN)
rrr�_picklerrrrrrr r r r!rw�srwc@s"eZdZejZejfZejfZ	dS)�CUnpicklerTestsN)
rrrrxrr'rr0r/r7r r r r!ry�sryc@seZdZejZejZdS)�
CPicklerTestsN�rrrrxrr:rr'r r r r!rz�srzc@seZdZejZejZdS)�CPersPicklerTestsNr{r r r r!r|�sr|c@seZdZejZejZdS)�CIdPersPicklerTestsNr{r r r r!r}�sr}c@seZdZejZejZdS)�CDumpPickle_LoadPickleN)	rrrrxrr:rrr'r r r r!r~�sr~c@seZdZejZejZdS)�DumpPickle_CLoadPickleN)	rrrrrr:rxrr'r r r r!r�src@s eZdZejZejZdd�ZdS)�CPicklerUnpicklerObjectTestscCs�|�t���}|�t��t|_Wd�n1s40Y|�t��ddi|_Wd�n1sh0Yddi|_dS)N���rR)rir%r&ZassertRaises�	TypeError�object�memor3)r)r'r r r!�test_issue18339�s$(z,CPicklerUnpicklerObjectTests.test_issue18339N)	rrrrxrrhrrir�r r r r!r��sr�c@seZdZejZdd�ZdS)�CDispatchTableTestscCs
tj��Sr#rkrHr r r!rnsz&CDispatchTableTests.get_dispatch_tableN�rrrrrrhrnr r r r!r�sr�c@seZdZejZdd�ZdS)�CChainDispatchTableTestscCst�itj�Sr#rqrHr r r!rnsz+CChainDispatchTableTests.get_dispatch_tableNr�r r r r!r�sr�c@s$eZdZGdd�deje�ZeZdS)�CPicklerHookTestsc@seZdZdS)z%CPicklerHookTests.CustomCPicklerClassNrur r r r!�CustomCPicklerClasssr�N)rrrrxrrr�rhr r r r!r�sr�c@s"eZdZejZdd�Zdd�ZdS)�SizeofTestscCs�t�d�}t�t���}|�t�|�|�t	�
d�}t	�
d�}|j}||||d|t�
d��td�D]}|�t|��ql||||d|d�dS)	NZ7P2n3i2n3i2PZ3nP0nZPn0P�sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�� r)r�calcobjsizerxrr%r&rWr��
__sizeof__r4�calcsize�check_sizeof�sys�	getsizeofrUr�chr)r)�basesizerAZMT_sizeZME_sizer\�ir r r!�test_picklers,


������zSizeofTests.test_picklercs�t�d�}tj�t�d��t�d��|j�dD]\}dD]R}�t��||d�}|�	t
�|�|��||d�t|�dt|�d�q6q.|td	�dtd
�d������fdd�}|d
dd
�|d
gddd�|dd�t
d�D�dd�dd�}||d
�dd
�||d�dd�||d�dd�||d�dd�||d�dd��t�t�dd
��d	d
d�}|���|�d�dd�dS)Nz2P2n2P 2P2n2i5P 2P3n8P2n2i�P�n)�ASCIIzUTF-16zlatin-1)�strict�replace��encoding�errorsr�rRr�r�csDt�|�}�t�|�ddd�}|���|�|�|��dS)Nr�r�r�)rrr%r&r)�dataZ	memo_sizeZ
marks_sizerr-�r�r\r�Zstdsizer'r r!�check_unpickler5s

�z3SizeofTests.test_unpickler.<locals>.check_unpicklerr�d�cSsg|]}t|��qSr )r�)�.0r�r r r!�
<listcomp>@�z.SizeofTests.test_unpickler.<locals>.<listcomp>�cSsd}t|�D]}||g}q|Sr9)rU)Zdeepr�r�r r r!�recurseAs
z+SizeofTests.test_unpickler.<locals>.recurse�2�@�<��a�)rr�rxrr4r�r�r%r&rWr�r��lenrUrrr)r)r�r�r�r-r�r�r r�r!�test_unpickler%sL


������
�zSizeofTests.test_unpicklerN)rrrrr�r�r�r r r r!r�sr�>)Z	cStringIOr%)�StringIOr%)Z_elementtreezxml.etree.ElementTree)ZcPickler>)�socketZ
_socketobjectr�Z
SocketType)�UserDictr�rrr�)Z__builtin__Z
basestring�builtins�str)�
exceptions�
StandardErrorr��	ExceptioncCs6||ftvrt||f\}}n|tvr.t|}||fSr#)rr��module�namer r r!�mapping`s
r�cCs6||ftvrt||f\}}n|tvr.t|}||fSr#)rrr�r r r!�reverse_mappinggs
r�c
Cs�ztj|WSty�zNt���2tjr0dnd}t�|t�t	|�Wd�n1s\0YWnpt
y�}z&tjr�td||f�t�WYd}~n<d}~0ty�}ztjr�t|��WYd}~n
d}~00tj|YS0dS)N�always�ignorezCan't import module %r: %s)
r��modules�KeyError�warnings�catch_warningsr�verbose�simplefilter�DeprecationWarning�
__import__r2�printr6)r��action�excr r r!�	getmodulens"
*r�cCs&t|�}|�d�D]}t||�}q|S)N�.)r��split�getattr)r�r�rGr�r r r!�getattribute�sr�ccs:t|�D],}t||�}t|t�rt|t�r||fVqdSr#)�dirr��
isinstance�type�
issubclass�
BaseException)�modr��attrr r r!�get_exceptions�s
r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�CompatPickleTestsc	Csntt���}|tt�O}|dd�tD�O}|dd�t��D�O}|D]$}zt|�WqDtyfYqD0qDdS)NcSsh|]\}}|�qSr r �r�r�r�r r r!�	<setcomp>�r�z0CompatPickleTests.test_import.<locals>.<setcomp>cSsh|]\}}|�qSr r r�r r r!r��r�)�setr�valuesrrrr�r6)r)r�r�r r r!�test_import�szCompatPickleTests.test_importc
Cs�t��D]�\}}|�||f��\zt|�Wnty>Yn0|dd�dkrl|�|t�|�t||�Wd�q1s�0YqdS)NrR�_)r�items�subTestr�r6ZassertInrrW)r)�module3�module2r r r!�test_import_mapping�sz%CompatPickleTests.test_import_mappingc
Cs
t��D]�\\}}\}}|�||f||ff���||fdkrXt||�}|�t|t��n�||fdkr�t||�}|�t|t��nft||�\}}|dd�dkr�|�	||f||f�zt||�}Wnty�Yn0|�	t||�|�Wd�q1s�0YqdS)N�r��OSError�r�r6rRr�)
rr�r�r�Z
assertTruer�r�r6r�rW)r)r��name3r��name2r�r�r�r r r!�test_name_mapping�s 

z#CompatPickleTests.test_name_mappingc	Cst��D]�\}}|�||f���zt|�Wn2ty^}ztjrJt|�WYd}~n
d}~00||ftvr�t	�
|d�|kr�t��D]$\\}}\}}||f||fkr�q�q�|�d||f�t	�
||�}t�
||�}|�
||�Wd�q1s�0YqdS)Nz No reverse mapping from %r to %r)rr�r�r�r6rr�r��ALT_IMPORT_MAPPINGr�getrZfailrW)	r)r�r�r�Zm3Zn3Zm2Zn2r�r r r!�test_reverse_import_mapping�s&��z-CompatPickleTests.test_reverse_import_mappingc
Cs�t��D]�\\}}\}}|�||f||ff���zt||�}WntyPYn0t||�\}}||||ftvr�|�||f||f�t||�\}}|�||f||f�Wd�q1s�0YqdSr#)	rr�r�r�r6r��ALT_NAME_MAPPINGrWr�)r)r�r�r�r�r�r�r�r r r!�test_reverse_name_mapping�sz+CompatPickleTests.test_reverse_name_mappingc	CsH|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d	�tt�D]�\}}|�|���|tttt	fvr�Wd�qb|t
ur�t|t
�r�|�td|�d	�nh|tur�t|t�r�|�td|�d
�|�td|�d|f�n,|�td|�d|f�|�td|�d|f�Wd�qb1�s80YqbdS)Nr�r�)r�r�r�r�)r�r�r�)r�r�r�r�)
rWr�r�r�r�r��BlockingIOError�ResourceWarning�StopAsyncIteration�RecursionErrorr�r�r6)r)r�r�r r r!�test_exceptions�sP�����������z!CompatPickleTests.test_exceptionsc	Csvt�d�}t|�D]^\}}|�|��<|�td|�d|f�|�td|�d|f�Wd�q1sf0YqdS)Nzmultiprocessing.contextZmultiprocessing)r�
import_moduler�r�rWr�r�)r)r�r�r�r r r!�test_multiprocessing_exceptions�s
��z1CompatPickleTests.test_multiprocessing_exceptionsN)
rrrr�r�r�r�r�r�r�r r r r!r��s
!r�cCs|�t���|Sr#)ZaddTest�doctestZDocTestSuite)�loaderZtests�patternr r r!�
load_testssr��__main__)DZ_compat_picklerrrrr�rr%rrr4r�r�rXr�Zunittest�testrZtest.pickletesterrrr	r
rrr
rrrrxZhas_c_implementationr6ZTestCaserr"r8rBr�rCrOrPrgrjrprtrwryrzr|r}r~rr�r�r�r�rfr�r�r�r�r�r�r�r�r�r�r�mainr r r r!�<module>s�
	���C
Aw