HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_pickle.cpython-310.pyc
o

�i�N�@sNddlmZmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZzddlZdZWne y�dZYnwGdd�deej!�Z"Gdd�deej!�Z#Gdd�deej!�Z$Gdd�deeeej!�Z%Gdd�de&�Z'Gdd�dee'ej!�Z(Gdd�dee'ej!�Z)Gdd �d eej!�Z*Gd!d"�d"eej!�Z+Gd#d$�d$eej!�Z,Gd%d&�d&eej!�Z-e�rqGd'd(�d(eej!�Z.Gd)d*�d*e#�Z/Gd+d,�d,e$�Z0Gd-d.�d.e(�Z1Gd/d0�d0e)�Z2Gd1d2�d2e$�Z3Gd3d4�d4e$�Z4Gd5d6�d6eej!�Z5Gd7d8�d8eej!�Z6Gd9d:�d:eej!�Z7Gd;d<�d<eej!�Z8ej9Gd=d>�d>ej!��Z:hd?�Z;hd@�Z<dAdB�Z=dCdD�Z>dEdF�Z?dGdH�Z@dIdJ�ZAGdKdL�dLej!�ZBdMdN�ZCeDdOk�r�e�E�dSdS)P�)�IMPORT_MAPPING�REVERSE_IMPORT_MAPPING�NAME_MAPPING�REVERSE_NAME_MAPPINGN)�support)�
import_helper)�AbstractHookTests)�AbstractUnpickleTests)�AbstractPickleTests)�AbstractPickleModuleTests)�AbstractPersistentPicklerTests)�&AbstractIdentityPersistentPicklerTests)�#AbstractPicklerUnpicklerObjectTests)�AbstractDispatchTableTests)�AbstractCustomPicklerClass)�BigmemPickleTestsTFc@s@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�r$r$�-/usr/local/lib/python3.10/test/test_pickle.pyr#s




rc@s6eZdZejZefZeje	e
eej
eefZdd�ZdS)�PyUnpicklerTestscK�$t�|�}|j|fi|��}|��S�N��io�BytesIO�	unpicklerr��self�buf�kwds�f�ur$r$r%r4�
zPyUnpicklerTests.loadsN)rrrrr"r,�
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�kwargsr1�pr$r$r%r?s


zPyPicklerTests.dumpscKr'r(r)r-r$r$r%rFr3zPyPicklerTests.loadsr()
rrrrr r@r"r,rrr$r$r$r%r>:s

r>c@sBeZdZejefZejeee	e
jeefZ
ddd�Zdd�ZdZdS)�InMemoryPickleTestsNcKstj||fi|��Sr()rr)r.rD�protocolrFr$r$r%rTszInMemoryPickleTests.dumpscKstj|fi|��Sr()rr)r.r/r0r$r$r%rWszInMemoryPickleTests.loadsr()rrrrr6r4r5r7r8r9r:r;r<r=rrZ+test_framed_write_sizes_with_delayed_writerr$r$r$r%rHLs
�
rHc@seZdZddd�Zdd�ZdS)�PersistentPicklerUnpicklerMixinNcs:G�fdd�d�j�}t��}|||�}|�|�|��S)Nc�eZdZ�fdd�ZdS)z:PersistentPicklerUnpicklerMixin.dumps.<locals>.PersPicklerc�
��|�Sr()�
persistent_id��subself�obj�r.r$r%rMa�
zHPersistentPicklerUnpicklerMixin.dumps.<locals>.PersPickler.persistent_idN�rrrrMr$rQr$r%�PersPickler`�rT)r@r*r+r�getvalue)r.rDrErTr1rGr$rQr%r_s


z%PersistentPicklerUnpicklerMixin.dumpscs8G�fdd�d�j�}t�|�}||fi|��}|��S)NcrK)z<PersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpicklercrLr()�persistent_loadrNrQr$r%rWjrRzLPersistentPicklerUnpicklerMixin.loads.<locals>.PersUnpickler.persistent_loadN�rrrrWr$rQr$r%�
PersUnpicklerirUrY)r,r*r+r)r.r/r0rYr1r2r$rQr%rhs
z%PersistentPicklerUnpicklerMixin.loadsr()rrrrrr$r$r$r%rJ]s
	rJc@�eZdZejZejZdS)�PyPersPicklerTestsN)rrrrr r@r"r,r$r$r$r%r[qs
r[c@sBeZdZejZejZej	dd��Z
ej	dd��Zej	dd��ZdS)�PyIdPersPicklerTestsc�^�fdd�}Gdd�d�j�}||�Gdd�d�j�}||�Gdd�d�j�}||�dS)Ncs�ttjd�D]}t��}|||�}|�d�����|���d�q|t���}��|�	d�d�t
�|�}~��|��dS�N��abc�def)
�ranger�HIGHEST_PROTOCOLr*r+r�assertEqualrrVrM�weakref�ref�assertIsNone)r!rEr1r@�rrQr$r%�check�s


z@PyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.checkc@�eZdZdd�ZdS)�FPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPicklercS�|Sr(r$rNr$r$r%rM���TPyIdPersPicklerTests.test_pickler_reference_cycle.<locals>.PersPickler.persistent_idNrSr$r$r$r%rT��rTc@�eZdZedd��ZdS)rkcSrlr(r$)�clsrPr$r$r%rM��rnN)rrr�classmethodrMr$r$r$r%rT��c@rp)rkcS�|Sr(r$)rPr$r$r%rM�rrrnN)rrrrrMr$r$r$r%rT�rt)r@)r.rirTr$rQr%�test_pickler_reference_cycle~sz1PyIdPersPicklerTests.test_pickler_reference_cyclecsvG�fdd�d|j�}Gdd�d�}|��|t���}|�|j��t���}|�|��~�t�	�|�
|��dS)NcseZdZ��fdd�Z�ZS)zPPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.Picklercs�|_t�j|i|��dSr()�dispatch_table�super�__init__)r.�argsrF)�	__class__�tabler$r%ry�szYPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.Pickler.__init__)rrrry�
__classcell__r$�r|)r{r%r!�sr!c@�eZdZdS)zVPyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleak.<locals>.DispatchTableN�rrrr$r$r$r%�
DispatchTable��r�)r@r*r+ZassertIsrwrerfZassertIsNotNoner�
gc_collectrg)r.r!r�r@Z	table_refr$r~r%�*test_custom_pickler_dispatch_table_memleak�s
z?PyIdPersPicklerTests.test_custom_pickler_dispatch_table_memleakcr])Ncstttjd�D]}|t���d|���}��|��d�q|t���}��|�d�d�t	�
|�}~��|��dSr^)rbrrcr*r+rrdrrWrerfrg)r#rEr,rhrQr$r%ri�s
zBPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.checkc@rj)�JPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpicklercSrlr(r$)rO�pidr$r$r%rW�rm�ZPyIdPersPicklerTests.test_unpickler_reference_cycle.<locals>.PersUnpickler.persistent_loadNrXr$r$r$r%rY�rorYc@rp)r�cSrlr(r$)rqr�r$r$r%rW�rrr�N)rrrrsrWr$r$r$r%rY�rtc@rp)r�cSrur(r$)r�r$r$r%rW�rrr�N)rrrrrWr$r$r$r%rY�rt)r,)r.rirYr$rQr%�test_unpickler_reference_cycle�s
z3PyIdPersPicklerTests.test_unpickler_reference_cycleN)
rrrrr r@r"r,r�cpython_onlyrvr�r�r$r$r$r%r\xs

r\c@rZ)�PyPicklerUnpicklerObjectTestsN)rrrrr �
pickler_classr"�unpickler_classr$r$r$r%r��s
r�c@�eZdZejZdd�ZdS)�PyDispatchTableTestscC�
tj��Sr(�rrw�copyrQr$r$r%�get_dispatch_table�rRz'PyDispatchTableTests.get_dispatch_tableN�rrrrr r�r�r$r$r$r%r���r�c@r�)�PyChainDispatchTableTestscC�t�itj�Sr(��collections�ChainMaprrwrQr$r$r%r���z,PyChainDispatchTableTests.get_dispatch_tableNr�r$r$r$r%r��r�r�c@�$eZdZGdd�deje�ZeZdS)�PyPicklerHookTestsc@r)z'PyPicklerHookTests.CustomPyPicklerClassNr�r$r$r$r%�CustomPyPicklerClass�sr�N)rrrrr rr�r�r$r$r$r%r��s
�r�c@s,eZdZddlmZmZmZmZmZm	Z	dS)�CPickleTestsr)rrrrr!r#N)
rrr�_picklerrrrr!r#r$r$r$r%r��s$r�c@s"eZdZejZejfZejfZ	dS)�CUnpicklerTestsN)
rrrr�r#r,rr6r5r=r$r$r$r%r��sr�c@rZ)�
CPicklerTestsN�rrrr�r!r@r#r,r$r$r$r%r���
r�c@rZ)�CPersPicklerTestsNr�r$r$r$r%r��r�r�c@rZ)�CIdPersPicklerTestsNr�r$r$r$r%r�r�r�c@�eZdZejZejZdS)�CDumpPickle_LoadPickleN)	rrrr�r!r@rr"r,r$r$r$r%r�r�r�c@r�)�DumpPickle_CLoadPickleN)	rrrrr r@r�r#r,r$r$r$r%r�r�r�c@s eZdZejZejZdd�ZdS)�CPicklerUnpicklerObjectTestscCs�|�t���}|�t��t|_Wd�n1swY|�t��
ddi|_Wd�n1s4wYddi|_dS)N���r_)r�r*r+ZassertRaises�	TypeError�object�memor9)r.r,r$r$r%�test_issue18339s��z,CPicklerUnpicklerObjectTests.test_issue18339N)	rrrr�r!r�r#r�r�r$r$r$r%r�sr�c@r�)�CDispatchTableTestscCr�r(r�rQr$r$r%r�rRz&CDispatchTableTests.get_dispatch_tableN�rrrrr!r�r�r$r$r$r%r��r�c@r�)�CChainDispatchTableTestscCr�r(r�rQr$r$r%r� r�z+CChainDispatchTableTests.get_dispatch_tableNr�r$r$r$r%r�r�r�c@r�)�CPicklerHookTestsc@r)z%CPicklerHookTests.CustomCPicklerClassNr�r$r$r$r%�CustomCPicklerClass$r�r�N)rrrr�r!rr�r�r$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|��q6||||d|d�dS)	NZ7P2n3i2n3i2PZ3nP0nZPn0P�sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�� r)r�calcobjsizer�r!r*r+rdr��
__sizeof__r:�calcsize�check_sizeof�sys�	getsizeofrbr�chr)r.�basesizerGZMT_sizeZME_sizeri�ir$r$r%�test_pickler,s,


�����
�zSizeofTests.test_picklercs�t�d�}tj�t�d��t�d��|j�dD].}dD])}�t��||d�}|�	t
�|�|��||d�t|�dt|�d�qq|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�r_r�r�csDt�|�}�t�|�ddd�}|���|�|�|��dS)Nr�r�r�)rrr*r+r)�dataZ	memo_sizeZ
marks_sizerr2�r�rir�Zstdsizer,r$r%�check_unpicklerMs

�z3SizeofTests.test_unpickler.<locals>.check_unpicklerr�d�cSsg|]}t|��qSr$)r�)�.0r�r$r$r%�
<listcomp>X�z.SizeofTests.test_unpickler.<locals>.<listcomp>�cSsd}t|�D]}||g}q|Sr?)rb)Zdeepr�r�r$r$r%�recurseYs
z+SizeofTests.test_unpickler.<locals>.recurse�2�@�<��a�)rr�r�r#r:r�r�r*r+rdr�r��lenrbrrr)r.r�r�r�r2r�r�r$r�r%�test_unpickler=sN


��������zSizeofTests.test_unpicklerN)rrrrr�r�r�r$r$r$r%r�(sr�>)�_elementtreezxml.etree.ElementTree)�cPickler)�	cStringIOr*)�StringIOr*>)�UserDictr�r�r�)�socket�
_socketobjectr��
SocketType)�__builtin__�
basestring�builtins�str)�
exceptions�
StandardErrorr��	ExceptioncC�<||ftvrt||f\}}||fS|tvrt|}||fSr()rr��module�namer$r$r%�mappingx��r�cCr�r()rrr�r$r$r%�reverse_mappingr�r�c
Cs�ztj|WStyhz't���tjrdnd}t�|t�t	|�Wd�n1s.wYWn,t
yM}z
tjrGtd||f�t�d}~wty`}ztjr[t|��d}~wwtj|YSw)N�always�ignorezCan't import module %r: %s)
r��modules�KeyError�warnings�catch_warningsr�verbose�simplefilter�DeprecationWarning�
__import__r8�printr<)r��action�excr$r$r%�	getmodule�s.

������rcCs&t|�}|�d�D]}t||�}q	|S)N�.)r�split�getattr)r�r�rPr�r$r$r%�getattribute�srccs<�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	Csltt���}|tt�O}|dd�tD�O}|dd�t��D�O}|D]}zt|�Wq"ty3Yq"wdS)NcS�h|]\}}|�qSr$r$�r�r�r�r$r$r%�	<setcomp>�r�z0CompatPickleTests.test_import.<locals>.<setcomp>cSrr$r$rr$r$r%r�r�)�setr�valuesrrrrr<)r.r�r�r$r$r%�test_import�s��zCompatPickleTests.test_importc
Cs�t��D]A\}}|�||f��.zt|�Wn	tyYnw|dd�dkr6|�|t�|�t||�Wd�n1s@wYqdS)Nr_�_)r�items�subTestrr<ZassertInrrd)r.�module3�module2r$r$r%�test_import_mapping�s�����z%CompatPickleTests.test_import_mappingc
Cs
t��D]~\\}}\}}|�||f||ff��c||fdkr,t||�}|�t|t��nG||fdkr@t||�}|�t|t��n3t||�\}}|dd�dkrY|�	||f||f�zt||�}Wn	tyiYn
w|�	t||�|�Wd�n1s}wYqdS)N�r��OSError�r�r<r_r)
rrrrZ
assertTruerrr<r�rd)r.r�name3r�name2rr�r�r$r$r%�test_name_mapping�s*

�����z#CompatPickleTests.test_name_mappingc	Cst��D]{\}}|�||f��hzt|�Wnty/}z
tjr%t|�WYd}~nd}~ww||ftvr^t	�
|d�|kr^t��D]\\}}\}}||f||fkrTn
qB|�d||f�t	�
||�}t�
||�}|�
||�Wd�n1szwYqdS)Nz No reverse mapping from %r to %r)rrrrr<rr�r��ALT_IMPORT_MAPPINGr�getrZfailrd)	r.rrr�Zm3Zn3Zm2Zn2r�r$r$r%�test_reverse_import_mapping�s0�������z-CompatPickleTests.test_reverse_import_mappingc
Cs�t��D]^\\}}\}}|�||f||ff��Czt||�}Wn	ty(Ynwt||�\}}||||ftvrB|�||f||f�t||�\}}|�||f||f�Wd�n1s]wYqdSr()	rrrrr<r��ALT_NAME_MAPPINGrdr�)r.rrrrrr�r�r$r$r%�test_reverse_name_mapping�s����z+CompatPickleTests.test_reverse_name_mappingc	CsJ|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d	�tt�D]q\}}|�|��`|tttt	t
fvrL	Wd�q1|tur_t|t�r_|�td|�d	�n4|t
ur}t|t
�r}|�td|�d
�|�td|�d|f�n|�td|�d|f�|�td|�d|f�Wd�n1s�wYq1dS)Nr�r�)r�r�r�r�)r�r�r)r�rrr)rdr�r�rr�r�BlockingIOError�ResourceWarning�StopAsyncIteration�RecursionError�EncodingWarningrrr<)r.r�r�r$r$r%�test_exceptions�s\����������������z!CompatPickleTests.test_exceptionsc	Csvt�d�}t|�D]/\}}|�|��|�td|�d|f�|�td|�d|f�Wd�n1s3wYq	dS)Nzmultiprocessing.context�multiprocessing)r�
import_modulerrrdr�r�)r.r�r�r�r$r$r%�test_multiprocessing_exceptionss
�����z1CompatPickleTests.test_multiprocessing_exceptionsN)
rrrrrrr"r$r*r-r$r$r$r%r
�s
"r
cCs|�t���|Sr()ZaddTest�doctestZDocTestSuite)�loaderZtests�patternr$r$r%�
load_testssr1�__main__)F�_compat_picklerrrrr�rr*r�r:r�r�rer.Zunittest�testrZtest.supportrZtest.pickletesterrr	r
rrr
rrrrr�Zhas_c_implementationr<ZTestCaserr&r>rHr�rJr[r\r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r r#r�r�rrrr
r1r�mainr$r$r$r%�<module>s��	���Z
Ax
�