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

�Ke	5�
��ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlmZ	ddlZn
#e$rdZYnwxYwddlmZddlmZddlmZmZmZmZmZm Z ddl!m"Z"ddl#m$Z$dd	lm%Z%dd
l&m'Z'ddlm(Z(	e'��5ddl)Z*ddd��n#1swxYwYn
#e$rdZ*YnwxYwej+ej,dkd
��Z-e.ej/dz��Z0d�Z1d�Z2d�Z3Gd�dej4��Z5Gd�de6��Z7Gd�d��Z8Gd�d��Z9Gd�de9��Z:Gd�de9��Z;Gd�d��Z<Gd �d!��Z=ddl>Z>e9e>_9d"e9_?e:e>_:d"e:_?e;e>_;d"e;_?Gd#�d$e@��ZAGd%�d&e9��ZBGd'�d(eC��ZDGd)�d*e6eD�+��ZEGd,�d-eC��ZFd.�ZGGd/�d0eH��ZIGd1�d2eJ��ZKe�
Gd3�d4��ZLd5ZMd6ZNd7ZOd8ZPd9ZQd:ZRd;ZSd<ZTd=ZUd>ZVd?ZWd@ZXdAZYdBZZge[�e\�e]�e^�e_�e`�ea�eb�ec�ed�ee�ef�eg�eh�e�ei�ej�ek�el�em�en�eo�ep�eq�er�es�et�eu�ev�ew�ex�ey�ez�e{�e|�e}�e~�e�e��e��e��e��e��e��RZ�dCZ�dDZ�dE�Z�GdF�dG��Z�GdH�dI��Z�GdJ�dK��Z�GdL�dMe6��Z�GdN�dOe6��Z�GdP�dQe6��Z�GdR�dSe6��Z�GdT�dUe6��Z�GdV�dWe6��Z�GdX�dYe6��Z�GdZ�d[e6��Z�Gd\�d]e@��Z�Gd^�d_e���Z�Gd`�dae���Z�Gdb�dce���Z�Gdd�dee���Z�Gdf�dge���Z�Gdh�die���Z�Gdj�dke���Z�Gdl�dme���Z�Gdn�doe���Z�e�e�e�e�e�e�e�e�e�e�g
Z�Gdp�dqe@��Z�Gdr�dse���Z�Gdt�due���Z�Gdv�dwe@��a�Gdx�dy�tV��Z�Gdz�d{�tV��Z�Gd|�d}��Z�Gd~�d��Z�Gd��d���Z�Gd��d���Z�Gd��d���Z�d�Z�Gd��d�e6��Z�Gd��d�e6��Z�d��Z�Gd��d���Z�Gd��d���Z�Gd��d���Z�e�d"k�rdd�l	m�Z�e���Z�e.ej/dz��D]�Z�ej�e�e���Z�e�d���e�����e.de�e���d���D]6Z�eHe�e�e�d�z���Z�e�d���eĦ����7e�d���e���e�d���e�����e�d���e�����e�e���e�d���e�����dSdS)��N)�dedent)�SimpleCookie)�support)�	os_helper)�
TestFailed�run_with_locale�
no_tracing�_2G�_4G�
bigmemtest)�forget)�TESTFN)�threading_helper)�save_restore_warnings_filters)�bytes_typeslz(test is only meaningful on 32-bit builds�c�~�tj|��D]'\}}}|j|�d��krdS�(dS)N�latin-1TF��pickletools�genops�code�decode)r�pickle�op�dummys    �;/usr/local/apps/python3/lib/python3.11/test/pickletester.py�opcode_in_pickler;sM��'�.�v�6�6�����E�5�
�7�d�k�k�)�,�,�,�,��4�4�-��5�c��d}tj|��D])\}}}|j|�d��kr|dz
}�*|S)Nrrrr)rr�nrrs     r�count_opcoder"BsP��	�A�'�.�v�6�6�����E�5�
�7�d�k�k�)�,�,�,�,�
��F�A���Hrc��|S�N���xs r�identityr(Js���Hrc�&�eZdZd�Zd�Zd�Zd�ZdS)�UnseekableIOc��t�r$)�NotImplementedError��self�argss  r�peekzUnseekableIO.peekOs��!�!rc��dS)NFr%�r.s r�seekablezUnseekableIO.seekableRs���urc��tj�r$��io�UnsupportedOperationr-s  r�seekzUnseekableIO.seekU����%�%rc��tj�r$r5r2s r�tellzUnseekableIO.tellXr9rN)�__name__�
__module__�__qualname__r0r3r8r;r%rrr*r*NsP������"�"�"����&�&�&�&�&�&�&�&rr*c��eZdZdZd�ZdS)�	MinimalIOz=
    A file-like object that doesn't support readinto().
    c��tj|�|_|jj|_|jj|_|jj|_|jj|_dSr$)r6�BytesIO�_bio�getvalue�read�readline�writer-s  r�__init__zMinimalIO.__init__`sB���J��%��	��	�*��
��I�N��	��	�*��
��Y�_��
�
�
rN)r<r=r>�__doc__rHr%rrr@r@\s-��������%�%�%�%�%rr@c��eZdZd�Zd�ZdS)�ExtensionSaverc���||_|tjvrEtj||_tj|jd|jd|��dSd|_dS�Nrr)r�copyreg�_inverted_registry�pair�remove_extension)r.rs  rrHzExtensionSaver.__init__usX����	��7�-�-�-��2�4�8�D�I��$�T�Y�q�\�4�9�Q�<��F�F�F�F�F��D�I�I�Irc���|j}tj�|��}|�"tj|d|d|��|j}|�$tj|d|d|��dSdSrM)rrNrO�getrQrP�
add_extension)r.r�curpairrPs    r�restorezExtensionSaver.restore~sz���y���,�0�0��6�6�����$�W�Q�Z����T�B�B�B��y�����!�$�q�'�4��7�D�9�9�9�9�9��rN)r<r=r>rHrVr%rrrKrKrs2���������:�:�:�:�:rrKc��eZdZd�ZdS)�Cc�"�|j|jkSr$)�__dict__�r.�others  r�__eq__zC.__eq__�s���}���.�.rN)r<r=r>r]r%rrrXrX�s#������/�/�/�/�/rrXc��eZdZd�ZdS)�Dc��dSr$r%)r.�args  rrHz
D.__init__�����rN�r<r=r>rHr%rrr_r_�s#������
�
�
�
�
rr_c��eZdZd�ZdS)�Ec��dS�Nr%r%r2s r�__getinitargs__zE.__getinitargs__�s���rrN)r<r=r>rhr%rrrere�s#����������rrec��eZdZdS)�ObjectN�r<r=r>r%rrrjrj���������Drrjc��eZdZd�Zd�ZdS)�Kc��||_dSr$)�value)r.rps  rrHz
K.__init__��
����
�
�
rc� �t|jffSr$)rnrpr2s r�
__reduce__zK.__reduce__�s���4�:�-��rN)r<r=r>rHrsr%rrrnrn�s2��������� � � � � rrn�__main__c��eZdZd�ZdS)�myintc�.�t|��|_dSr$��str)r.r's  rrHzmyint.__init__�s���q�6�6����rNrcr%rrrvrv�s#����������rrvc��eZdZd�Zd�ZdS)�initargc�"�||_||_dSr$��a�b)r.r~rs   rrHzinitarg.__init__�s���������rc��|j|jfSr$r}r2s rrhzinitarg.__getinitargs__�s���v�t�v�~�rN)r<r=r>rHrhr%rrr{r{�s2�������������rr{c��eZdZdS)�	metaclassNrkr%rrr�r��rlrr�c��eZdZdS)�
use_metaclassNrkr%rrr�r��rlrr�)r�c��eZdZd�Zd�ZdS)�pickling_metaclassc�b�t|��t|��ko|j|jkSr$)�type�reduce_argsr[s  rr]zpickling_metaclass.__eq__�s.���T�
�
�d�5�k�k�)�6�� �E�$5�5�	7rc��t|jfSr$)�create_dynamic_classr�r2s rrszpickling_metaclass.__reduce__�s��$�d�&6�7�7rN)r<r=r>r]rsr%rrr�r��s2������7�7�7�8�8�8�8�8rr�c�R�t||t����}||f|_|Sr$)r��dictr�)�name�bases�results   rr�r��s(��
��e�T�V�V�
4�
4�F����F���Mrc�D�eZdZdZdZdZdZd�Zd�ZeZ	e
d���ZdS)�
ZeroCopyBytesTc��|dkr*t|��jtj|��fdfSt|��jt	|��ffS�N��r��_reconstructr�PickleBuffer�bytes�r.�protocols  r�
__reduce_ex__zZeroCopyBytes.__reduce_ex__��K���q�=�=���:�:�*�V�-@��-F�-F�,H�$�N�N���:�:�*�U�4�[�[�N�:�:rc�\�d�|jjt|����S�Nz{}({!r})��format�	__class__r<r�r2s r�__repr__zZeroCopyBytes.__repr__��#��� � ���!8�%��+�+�F�F�Frc��t|��5}|j}t|��|ur|cddd��S||��cddd��S#1swxYwYdSr$��
memoryview�objr���clsr��ms   rr�zZeroCopyBytes._reconstruct����
��_�_�	 ���%�C��C�y�y�C����		 �	 �	 �	 �	 �	 �	 �	 ��s�3�x�x�
	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 ��A�
A�A�AN�r<r=r>�readonly�c_contiguous�f_contiguous�zero_copy_reconstructr�r��__str__�classmethodr�r%rrr�r��sj�������H��L��L� ��;�;�;�G�G�G��G�� � ��[� � � rr�c�D�eZdZdZdZdZdZd�Zd�ZeZ	e
d���ZdS)�ZeroCopyBytearrayFTc��|dkr*t|��jtj|��fdfSt|��jt	|��ffSr�r�r�s  rr�zZeroCopyBytearray.__reduce_ex__�r�rc�\�d�|jjt|����Sr�r�r2s rr�zZeroCopyBytearray.__repr__�r�rc��t|��5}|j}t|��|ur|cddd��S||��cddd��S#1swxYwYdSr$r�r�s   rr�zZeroCopyBytearray._reconstruct�r�r�Nr�r%rrr�r��sj�������H��L��L� ��;�;�;�G�G�G��G�� � ��[� � � rr�c��eZdZdZd�Zd�Zed���Zed���Zed���Z	d�Z
d�Zd	�Zd
�Z
ed���ZdS)
�PicklableNDArrayFc�2�tj|i|��|_dSr$)�_testbuffer�ndarray�array�r.r/�kwargss   rrHzPicklableNDArray.__init__	s��$�,�d�=�f�=�=�D�J�J�Jrc�r�t|��}|�|��}|j||_|Sr$)r��__new__r�)r.�idxr��news    r�__getitem__zPicklableNDArray.__getitem__s0���t�*�*�C��+�+�c�"�"�C��
�3��C�I��Jrc��|jjSr$)r�r�r2s rr�zPicklableNDArray.readonlys
���:�&�&rc��|jjSr$)r�r�r2s rr�zPicklableNDArray.c_contiguous�
���:�*�*rc��|jjSr$)r�r�r2s rr�zPicklableNDArray.f_contiguousr�rc�r�t|t��stS|jj|jjko�|jj|jjkog|jj|jjkoM|jj|jjko3|j���|j���kSr$)	�
isinstancer��NotImplementedr�r��shape�stridesr��tobytesr[s  rr]zPicklableNDArray.__eq__s����e�%5�6�6�
&�%�%��K�&�$�*�*;�;�B��K�%���)9�9�B��K�'�4�:�+=�=�B��K�(�D�J�,?�?�B��K�'�'�)�)�T�Z�-?�-?�-A�-A�A�	
Crc�H�t|t��stS||kSr$)r�r�r�r[s  r�__ne__zPicklableNDArray.__ne__'s(���e�%5�6�6�
&�%�%���
�&�&rc��t|���d|jj�d|jj�d|j����d�S)Nz(shape=z	,strides=z, bytes=�))r�r�r�r�r�r2s rr�zPicklableNDArray.__repr__,s]���D�z�z�5�5�$�*�*:�5�5�#�z�1�5�5�!�Z�/�/�1�1�5�5�5�
6rc���|jjstd���|jj|jj|jj|jrdntjd�}tj
|j��}|dkrt|��j||ffS|�
��5}t|��j|���|ffcddd��S#1swxYwYdS)Nz>Reconstructing a non-contiguous ndarray does not seem possibler)r�r�r��flagsr�)r��
contiguousr,r�r�r�r�r��ND_WRITABLErr�r�r��rawr�)r.r��ndarray_kwargs�pbr�s     rr�zPicklableNDArray.__reduce_ex__1s3���:�(�
L�)�+K�L�L�L�'+�z�'7�)-��);�(,�
�(9�-1�]�)E���-8�-D�	G�G�N�
�$�T�Z�0�0�B��1�}�}��T�
�
�/��^�,�.�.��V�V�X�X�;�� ��J�J�3��Y�Y�[�[�.�9�;�;�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�;�;s�*C�C�Cc��t|��5}t|�����}ddd��n#1swxYwY||fi|��Sr$)r��listr�)r�r�r�r��itemss     rr�zPicklableNDArray._reconstructDs����C���
*�A��Q�Y�Y�[�[�)�)��
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��3�u�'�'��'�'�'s�">�A�AN)r<r=r>r�rHr��propertyr�r�r�r]r�r�r�r�r�r%rrr�r�s�������!&��	>�	>�	>�	�	�	�
�	'�	'�
��	'�
�	+�	+�
��	+�
�	+�	+�
��	+�	C�	C�	C�	'�	'�	'�
	6�	6�	6�
	;�	;�	;�&
�	(�	(�
��	(�	(�	(rr�s;(lp0
L0L
aL1L
aF2.0
ac__builtin__
complex
p1
(F3.0
F0.0
tp2
Rp3
aL1L
aL-1L
aL255L
aL-255L
aL-256L
aL65535L
aL-65535L
aL-65536L
aL2147483647L
aL-2147483647L
aL-2147483648L
a(Vabc
p4
g4
ccopy_reg
_reconstructor
p5
(c__main__
C
p6
c__builtin__
object
p7
Ntp8
Rp9
(dp10
Vfoo
p11
L1L
sVbar
p12
L2L
sbg9
tp13
ag13
aL5L
a.an    0: (    MARK
    1: l        LIST       (MARK at 0)
    2: p    PUT        0
    5: L    LONG       0
    9: a    APPEND
   10: L    LONG       1
   14: a    APPEND
   15: F    FLOAT      2.0
   20: a    APPEND
   21: c    GLOBAL     '__builtin__ complex'
   42: p    PUT        1
   45: (    MARK
   46: F        FLOAT      3.0
   51: F        FLOAT      0.0
   56: t        TUPLE      (MARK at 45)
   57: p    PUT        2
   60: R    REDUCE
   61: p    PUT        3
   64: a    APPEND
   65: L    LONG       1
   69: a    APPEND
   70: L    LONG       -1
   75: a    APPEND
   76: L    LONG       255
   82: a    APPEND
   83: L    LONG       -255
   90: a    APPEND
   91: L    LONG       -256
   98: a    APPEND
   99: L    LONG       65535
  107: a    APPEND
  108: L    LONG       -65535
  117: a    APPEND
  118: L    LONG       -65536
  127: a    APPEND
  128: L    LONG       2147483647
  141: a    APPEND
  142: L    LONG       -2147483647
  156: a    APPEND
  157: L    LONG       -2147483648
  171: a    APPEND
  172: (    MARK
  173: V        UNICODE    'abc'
  178: p        PUT        4
  181: g        GET        4
  184: c        GLOBAL     'copy_reg _reconstructor'
  209: p        PUT        5
  212: (        MARK
  213: c            GLOBAL     '__main__ C'
  225: p            PUT        6
  228: c            GLOBAL     '__builtin__ object'
  248: p            PUT        7
  251: N            NONE
  252: t            TUPLE      (MARK at 212)
  253: p        PUT        8
  256: R        REDUCE
  257: p        PUT        9
  260: (        MARK
  261: d            DICT       (MARK at 260)
  262: p        PUT        10
  266: V        UNICODE    'foo'
  271: p        PUT        11
  275: L        LONG       1
  279: s        SETITEM
  280: V        UNICODE    'bar'
  285: p        PUT        12
  289: L        LONG       2
  293: s        SETITEM
  294: b        BUILD
  295: g        GET        9
  298: t        TUPLE      (MARK at 172)
  299: p    PUT        13
  303: a    APPEND
  304: g    GET        13
  308: a    APPEND
  309: L    LONG       5
  313: a    APPEND
  314: .    STOP
highest protocol among opcodes = 0
s�]q(KKG@c__builtin__
complex
q(G@GtqRqKJ����K�J���J���M��J��J��J���J�J�(Xabcqhccopy_reg
_reconstructor
q(c__main__
C
qc__builtin__
object
qNtqRq	}q
(XfooqKXbarqKubh	tq
h
Ke.a    0: ]    EMPTY_LIST
    1: q    BINPUT     0
    3: (    MARK
    4: K        BININT1    0
    6: K        BININT1    1
    8: G        BINFLOAT   2.0
   17: c        GLOBAL     '__builtin__ complex'
   38: q        BINPUT     1
   40: (        MARK
   41: G            BINFLOAT   3.0
   50: G            BINFLOAT   0.0
   59: t            TUPLE      (MARK at 40)
   60: q        BINPUT     2
   62: R        REDUCE
   63: q        BINPUT     3
   65: K        BININT1    1
   67: J        BININT     -1
   72: K        BININT1    255
   74: J        BININT     -255
   79: J        BININT     -256
   84: M        BININT2    65535
   87: J        BININT     -65535
   92: J        BININT     -65536
   97: J        BININT     2147483647
  102: J        BININT     -2147483647
  107: J        BININT     -2147483648
  112: (        MARK
  113: X            BINUNICODE 'abc'
  121: q            BINPUT     4
  123: h            BINGET     4
  125: c            GLOBAL     'copy_reg _reconstructor'
  150: q            BINPUT     5
  152: (            MARK
  153: c                GLOBAL     '__main__ C'
  165: q                BINPUT     6
  167: c                GLOBAL     '__builtin__ object'
  187: q                BINPUT     7
  189: N                NONE
  190: t                TUPLE      (MARK at 152)
  191: q            BINPUT     8
  193: R            REDUCE
  194: q            BINPUT     9
  196: }            EMPTY_DICT
  197: q            BINPUT     10
  199: (            MARK
  200: X                BINUNICODE 'foo'
  208: q                BINPUT     11
  210: K                BININT1    1
  212: X                BINUNICODE 'bar'
  220: q                BINPUT     12
  222: K                BININT1    2
  224: u                SETITEMS   (MARK at 199)
  225: b            BUILD
  226: h            BINGET     9
  228: t            TUPLE      (MARK at 112)
  229: q        BINPUT     13
  231: h        BINGET     13
  233: K        BININT1    5
  235: e        APPENDS    (MARK at 3)
  236: .    STOP
highest protocol among opcodes = 1
s��]q(KKG@c__builtin__
complex
qG@G�qRqKJ����K�J���J���M��J��J��J���J�J�(Xabcqhc__main__
C
q)�q}q(XfooqKXbarq	Kubhtq
h
Ke.u�    0: € PROTO      2
    2: ]    EMPTY_LIST
    3: q    BINPUT     0
    5: (    MARK
    6: K        BININT1    0
    8: K        BININT1    1
   10: G        BINFLOAT   2.0
   19: c        GLOBAL     '__builtin__ complex'
   40: q        BINPUT     1
   42: G        BINFLOAT   3.0
   51: G        BINFLOAT   0.0
   60: †     TUPLE2
   61: q        BINPUT     2
   63: R        REDUCE
   64: q        BINPUT     3
   66: K        BININT1    1
   68: J        BININT     -1
   73: K        BININT1    255
   75: J        BININT     -255
   80: J        BININT     -256
   85: M        BININT2    65535
   88: J        BININT     -65535
   93: J        BININT     -65536
   98: J        BININT     2147483647
  103: J        BININT     -2147483647
  108: J        BININT     -2147483648
  113: (        MARK
  114: X            BINUNICODE 'abc'
  122: q            BINPUT     4
  124: h            BINGET     4
  126: c            GLOBAL     '__main__ C'
  138: q            BINPUT     5
  140: )            EMPTY_TUPLE
  141:          NEWOBJ
  142: q            BINPUT     6
  144: }            EMPTY_DICT
  145: q            BINPUT     7
  147: (            MARK
  148: X                BINUNICODE 'foo'
  156: q                BINPUT     8
  158: K                BININT1    1
  160: X                BINUNICODE 'bar'
  168: q                BINPUT     9
  170: K                BININT1    2
  172: u                SETITEMS   (MARK at 147)
  173: b            BUILD
  174: h            BINGET     6
  176: t            TUPLE      (MARK at 113)
  177: q        BINPUT     10
  179: h        BINGET     10
  181: K        BININT1    5
  183: e        APPENDS    (MARK at 5)
  184: .    STOP
highest protocol among opcodes = 2
s��]q(KKG@cbuiltins
complex
qG@G�qRqKJ����K�J���J���M��J��J��J���J�J�(Xabcqhc__main__
C
q)�q}q(XbarqKXfooq	Kubhtq
h
Ke.u�    0: € PROTO      3
    2: ]    EMPTY_LIST
    3: q    BINPUT     0
    5: (    MARK
    6: K        BININT1    0
    8: K        BININT1    1
   10: G        BINFLOAT   2.0
   19: c        GLOBAL     'builtins complex'
   37: q        BINPUT     1
   39: G        BINFLOAT   3.0
   48: G        BINFLOAT   0.0
   57: †     TUPLE2
   58: q        BINPUT     2
   60: R        REDUCE
   61: q        BINPUT     3
   63: K        BININT1    1
   65: J        BININT     -1
   70: K        BININT1    255
   72: J        BININT     -255
   77: J        BININT     -256
   82: M        BININT2    65535
   85: J        BININT     -65535
   90: J        BININT     -65536
   95: J        BININT     2147483647
  100: J        BININT     -2147483647
  105: J        BININT     -2147483648
  110: (        MARK
  111: X            BINUNICODE 'abc'
  119: q            BINPUT     4
  121: h            BINGET     4
  123: c            GLOBAL     '__main__ C'
  135: q            BINPUT     5
  137: )            EMPTY_TUPLE
  138:          NEWOBJ
  139: q            BINPUT     6
  141: }            EMPTY_DICT
  142: q            BINPUT     7
  144: (            MARK
  145: X                BINUNICODE 'bar'
  153: q                BINPUT     8
  155: K                BININT1    2
  157: X                BINUNICODE 'foo'
  165: q                BINPUT     9
  167: K                BININT1    1
  169: u                SETITEMS   (MARK at 144)
  170: b            BUILD
  171: h            BINGET     6
  173: t            TUPLE      (MARK at 110)
  174: q        BINPUT     10
  176: h        BINGET     10
  178: K        BININT1    5
  180: e        APPENDS    (MARK at 5)
  181: .    STOP
highest protocol among opcodes = 2
s����]�(KKG@�builtins��complex���G@G��R�KJ����K�J���J���M��J��J��J���J�J�(�abc�h�__main__��C���)��}�(�bar�K�foo�Kubh
t�hKe.u�    0: € PROTO      4
    2: • FRAME      168
   11: ]    EMPTY_LIST
   12: ” MEMOIZE
   13: (    MARK
   14: K        BININT1    0
   16: K        BININT1    1
   18: G        BINFLOAT   2.0
   27: Œ     SHORT_BINUNICODE 'builtins'
   37: ”     MEMOIZE
   38: Œ     SHORT_BINUNICODE 'complex'
   47: ”     MEMOIZE
   48: “     STACK_GLOBAL
   49: ”     MEMOIZE
   50: G        BINFLOAT   3.0
   59: G        BINFLOAT   0.0
   68: †     TUPLE2
   69: ”     MEMOIZE
   70: R        REDUCE
   71: ”     MEMOIZE
   72: K        BININT1    1
   74: J        BININT     -1
   79: K        BININT1    255
   81: J        BININT     -255
   86: J        BININT     -256
   91: M        BININT2    65535
   94: J        BININT     -65535
   99: J        BININT     -65536
  104: J        BININT     2147483647
  109: J        BININT     -2147483647
  114: J        BININT     -2147483648
  119: (        MARK
  120: Œ         SHORT_BINUNICODE 'abc'
  125: ”         MEMOIZE
  126: h            BINGET     6
  128: Œ         SHORT_BINUNICODE '__main__'
  138: ”         MEMOIZE
  139: Œ         SHORT_BINUNICODE 'C'
  142: ”         MEMOIZE
  143: “         STACK_GLOBAL
  144: ”         MEMOIZE
  145: )            EMPTY_TUPLE
  146:          NEWOBJ
  147: ”         MEMOIZE
  148: }            EMPTY_DICT
  149: ”         MEMOIZE
  150: (            MARK
  151: Œ             SHORT_BINUNICODE 'bar'
  156: ”             MEMOIZE
  157: K                BININT1    2
  159: Œ             SHORT_BINUNICODE 'foo'
  164: ”             MEMOIZE
  165: K                BININT1    1
  167: u                SETITEMS   (MARK at 150)
  168: b            BUILD
  169: h            BINGET     10
  171: t            TUPLE      (MARK at 119)
  172: ”     MEMOIZE
  173: h        BINGET     14
  175: K        BININT1    5
  177: e        APPENDS    (MARK at 13)
  178: .    STOP
highest protocol among opcodes = 4
s%�c__builtin__
set
q]q(KKe�qRq.s%�c__builtin__
xrange
qKKK�qRq.s��cCookie
SimpleCookie
q)�qUkeyqcCookie
Morsel
q)�q(UcommentqUqUdomainqhUsecureqhUexpiresq	hUmax-ageq
hUversionqhUpathqhUhttponlyq
hu}q(Ucoded_valueqUvalueqhhhhubs}qb.s"�c__builtin__
set
q]qKa�qRq.s�cexceptions
?
q)Rq.sI�cexceptions
UnicodeEncodeError
q(UasciiqXfooqKKUbadqtqRq.c�:�t��}d|_d|_gd�}d}d}d}|�dd|||dz
|||dz
|||dz
g��dd||f}|�|��|�|��|�d	��|S)
Nr�)rrg@y@��������abcr�)rX�foo�bar�extend�append)�cr'�uint1max�uint2max�int4max�ys      r�create_datar�,s���	���A�
�A�E�
�A�E����A��H��H��G��H�H�a����	�H�9�Q�;���	�H�9�Q�;��'��W�H�Q�J�0�1�1�1�
��q�!��A��H�H�Q�K�K�K��H�H�Q�K�K�K��H�H�Q�K�K�K��Hrc���eZdZe��Zd/d�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zed���Zed���Zd�Zd�Zd�Zd�Zd�Zed���Zed���Zed���Z d�Z!d�Z"d�Z#d �Z$d!�Z%ed"���Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.d+�Z/d,�Z0d-�Z1e2j3e2j4��d.�����Z5dS)0�AbstractUnpickleTestsNc	���|�d�||��}|�|||���|�t|��t|��|���t	|d��rD|�|j|j|���|�|j|j|���t	|d��r�|�|j	|j	|���|j	D]n}|�t	||��t	||��|���|�t||d��t||d��|����mdSdS)zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r})�msgrZ�	__slots__)r��assertEqual�assertIsr��hasattr�assertDictEqualrZ�assertIsNot�assertListEqualr��getattr)r.r��objcopyr��slots     r�assert_is_copyz$AbstractUnpickleTests.assert_is_copyFs����;�.�5�5�c�7�C�C�C�����g�3��/�/�/��
�
�d�3�i�i��g���C�
�8�8�8��3�
�#�#�	F�� � ���w�/?�S� �I�I�I����S�\�7�+;���E�E�E��3��$�$�	H�� � ����0A�s� �K�K�K��
�
H�
H��� � ��C��&�&����(>�(>�C�!�I�I�I�� � ���d�D�!9�!9�!(��$��!=�!=�3�!�H�H�H�H�	H�	H�
H�
Hrc
�x�|�|���5|�|��5	|�|��nE#t$r8}tjdkr"t
|d�d|jj�d|�����d}~wwxYw	ddd��n#1swxYwYddd��dS#1swxYwYdS)N)�datar�32z - z: )	�subTest�assertRaises�loads�
BaseExceptionr�verbose�printr�r<)r.�errorsr�excs    r�check_unpickling_errorz,AbstractUnpickleTests.check_unpickling_errorXsb��
�\�\�t�\�
$�
$�	�	�
�
�
�v�
&�
&�	�	�
��
�
�4� � � � �� �
�
�
��?�Q�&�&���4�4�4���!7�!7�!7���>�?�?�?������	
����!�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sW�B/�B�A�B�
B�3B�B�B�B/�B	�B/�B	�B/�/B3�6B3c�l�|�|j|�t����dSr$)r��	_testdatar�DATA0r2s r�test_load_from_data0z*AbstractUnpickleTests.test_load_from_data0c�,�����D�N�D�J�J�u�,=�,=�>�>�>�>�>rc�l�|�|j|�t����dSr$)r�r
r�DATA1r2s r�test_load_from_data1z*AbstractUnpickleTests.test_load_from_data1frrc�l�|�|j|�t����dSr$)r�r
r�DATA2r2s r�test_load_from_data2z*AbstractUnpickleTests.test_load_from_data2irrc�l�|�|j|�t����dSr$)r�r
r�DATA3r2s r�test_load_from_data3z*AbstractUnpickleTests.test_load_from_data3lrrc�l�|�|j|�t����dSr$)r�r
r�DATA4r2s r�test_load_from_data4z*AbstractUnpickleTests.test_load_from_data4orrc��tdftdftdffD]�\}}|j�d��}	d�d|��}|�||�|�|����	d�d|��}|�||�|�|����	d�d|��}|�||�|�|������dS)Nr%r&�asciis(i__main__
X
p0
(dp1
b.�Xs(c__main__
X
qoq}qb.s�(c__main__
X
qoq}qb.)rXr_rer<�encode�replacer�r)r.�Xr/�xname�pickle0�pickle1�pickle2s       r�test_load_classic_instancez0AbstractUnpickleTests.test_load_classic_instancers'���B��!�V��q�"�g�6�4	?�4	?�G�A�t��J�%�%�g�.�.�E�	
�#�%,�G�D�%�$8�$8�
�
�����4��$�*�*�W�*=�*=�>�>�>�

�.�/6�w�t�U�/C�/C�
�
�����4��$�*�*�W�*=�*=�>�>�>�
�.�/6�w�t�U�/C�/C�
�
�����4��$�*�*�W�*=�*=�>�>�>�>�i4	?�4	?rc�6�d}dt|���d��zdz}|�|��}|�||��dt|���d��zdz}|�t
|��dS)Nl�����Ir�
.sJUNK
.)ryr rr�r�
ValueError)r.�maxint64r�gots    r�
test_maxint64z#AbstractUnpickleTests.test_maxint64�s��� ���c�(�m�m�*�*�7�3�3�3�f�<���j�j��������H�c�*�*�*��c�(�m�m�*�*�7�3�3�3�j�@���#�#�J��5�5�5�5�5rc��|�t��}|�|tddg����|�t��}|�t|��tt
d������|�t|��tt
d������|�t��}|�t|��t��|�t|�
����dg��|�|djd��tD]m}t�d|j�d����}|�|��}|�t|��|���n|�t�dd	����}|�t|��t$��|�t&��}|�t|��t(��|�|jd
��|�|jd��|�|jd��|�|jd��|�|jd��dS)Nrr�rr��keyrp�?r�
StandardErrorr��bad)r�DATA_SETr��set�DATA_XRANGEr��ranger��DATA_COOKIEr�keysrp�python2_exceptions_without_args�exception_pickler!r<r r��	Exception�
DATA_UEERR�UnicodeEncodeError�object�encoding�start�end�reason)r.�loadedr
rs    r�test_unpickle_from_2xz+AbstractUnpickleTests.test_unpickle_from_2x�sS�����H�%�%�������a��V���-�-�-����K�(�(������f���t�E�!�H�H�~�~�6�6�6�����f���t�E�!�H�H�~�~�6�6�6����K�(�(������f���|�4�4�4�����f�k�k�m�m�,�,�u�g�6�6�6�������,�g�6�6�6�3�	-�	-�C�#�+�+�D�#�,�2E�2E�g�2N�2N�O�O�D��Z�Z��%�%�F��M�M�$�v�,�,��,�,�,�,����,�4�4�T�;K�L�L�M�M���
�
�d�6�l�l�I�.�.�.����J�'�'���
�
�d�6�l�l�$6�7�7�7�������.�.�.������'�2�2�2������q�)�)�)������Q�'�'�'�������.�.�.�.�.rc��|�|�dd���d��|�|�dd���d��|�|�dd���d��dS)NsS'a\x00\xa0'
.r��r@sa�sUa�.s�Ua�.�r�rr2s r�test_load_python2_str_as_bytesz4AbstractUnpickleTests.test_load_python2_str_as_bytes�s���������$8�-4�$�6�6�7C�	E�	E�	E�	
������$6�-4�$�6�6�7C�	E�	E�	E�	
������$>�-4�$�6�6�7C�	E�	E�	E�	E�	Erc��|�|�dd���d��|�|�dd���d��|�|�dd���d��dS)Ns	V\u03c0
.r�rGuπsXπ.s
�Xπ.rHr2s r� test_load_python2_unicode_as_strz6AbstractUnpickleTests.test_load_python2_unicode_as_str�s���������N�-4�$�6�6�7;�	=�	=�	=�	
������$A�-4�$�6�6�7;�	=�	=�	=�	
������$I�-4�$�6�6�7;�	=�	=�	=�	=�	=rc	��|�|�tjt	jdd��zdztjzd���d��dS)N�<Ii,s,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�rG)r�rr�	BINSTRING�struct�pack�STOPr2s r�#test_load_long_python2_str_as_bytesz9AbstractUnpickleTests.test_load_long_python2_str_as_bytes�st��������F�$4�$*�K��c�$:�$:�%;�$.�%/�17��%=�.5�$�6�6�8B�	C�	C�	C�	C�	Crc��|�|�d����|�|�d��d��|�|�d��d��|�|�d��d��|�|�d��d��dS)NsN.s�.Ts�.FsI01
.sI00
.)�assertIsNonerr�r2s r�test_constantsz$AbstractUnpickleTests.test_constants�s������$�*�*�U�+�+�,�,�,��
�
�d�j�j��*�*�D�1�1�1��
�
�d�j�j��*�*�E�2�2�2��
�
�d�j�j��+�+�T�2�2�2��
�
�d�j�j��+�+�U�3�3�3�3�3rc�`�|�dd���}|�|d��dS)Ns�Uq.zkoi8-rrG�)rr�)r.�emptys  r�test_empty_bytestringz+AbstractUnpickleTests.test_empty_bytestring�s4���
�
�1�H�
�E�E�������#�#�#�#�#rc�\�d}|�|�|��d��dS)Ns	�C€.�€rH�r.�dumpeds  r�test_short_binbytesz)AbstractUnpickleTests.test_short_binbytes�s0��2��������F�+�+�-@�A�A�A�A�Arc�\�d}|�|�|��d��dS)Ns�B€.r[rHr\s  r�
test_binbytesz#AbstractUnpickleTests.test_binbytess0��>��������F�+�+�-@�A�A�A�A�Arc�X�d}|�tjtf|��dS)Ns
�B����xyzq.�rr�UnpicklingError�
OverflowErrorr\s  r�test_negative_32b_binbytesz0AbstractUnpickleTests.test_negative_32b_binbytes�8��7���#�#�V�%;�]�$K�$*�	,�	,�	,�	,�	,rc�X�d}|�tjtf|��dS)Ns
�X����xyzq.rbr\s  r�test_negative_32b_binunicodez2AbstractUnpickleTests.test_negative_32b_binunicoderfrc�\�d}|�|�|��d��dS)Ns	��€.�€rHr\s  r�test_short_binunicodez+AbstractUnpickleTests.test_short_binunicodes/��5��������F�+�+�\�:�:�:�:�:rc��|�tjd��|�tjd��|�tjd��|�ddg|�d����dS)Nsg0
p0sjens:shens:)�ds((Kdtp0
hl.)))rrrcr�rr2s r�
test_misc_getz#AbstractUnpickleTests.test_misc_gets����#�#�F�$:�I�F�F�F��#�#�F�$:�H�E�E�E��#�#�F�$:�H�E�E�E����V�V�,� �J�J�'<�=�=�	?�	?�	?�	?�	?rc�\�d}|�|�|��d��dS)Ns��€.r[rHr\s  r�test_binbytes8z$AbstractUnpickleTests.test_binbytes8s0��A��������F�+�+�-@�A�A�A�A�Arc�\�d}|�|�|��d��dS)Ns��€.rjrHr\s  r�test_binunicode8z&AbstractUnpickleTests.test_binunicode8!s/��A��������F�+�+�\�:�:�:�:�:rc�v�d}|�|�|��td����dS)Ns��xxx.sxxx)r�r�	bytearrayr\s  r�test_bytearray8z%AbstractUnpickleTests.test_bytearray8%s7��D��������F�+�+�Y�v�->�->�?�?�?�?�?rc�X�d}|�tjtf|��dS)Ns��€.rbr\s  r�test_large_32b_binbytes8z.AbstractUnpickleTests.test_large_32b_binbytes8)�6��A���#�#�V�%;�]�$K�$*�	,�	,�	,�	,�	,rc�X�d}|�tjtf|��dS)Ns��€.rbr\s  r�test_large_32b_bytearray8z/AbstractUnpickleTests.test_large_32b_bytearray8/rxrc�X�d}|�tjtf|��dS)Ns��€.rbr\s  r�test_large_32b_binunicode8z0AbstractUnpickleTests.test_large_32b_binunicode85rxrc��d}|�|��}|�|gfdz��|�|d|d��dS)Ns((lp100000
g100000
t.r�rr�rr�r��r.�pickled�	unpickleds   r�test_getzAbstractUnpickleTests.test_get;sV��,���J�J�w�'�'�	�����R�E�!�G�,�,�,��
�
�i��l�I�a�L�1�1�1�1�1rc��d}|�|��}|�|gfdz��|�|d|d��dS)Ns(]q�h�t.r�rrr~rs   r�test_bingetz!AbstractUnpickleTests.test_bingetAsV��#���J�J�w�'�'�	�����R�E�!�G�,�,�,��
�
�i��l�I�a�L�1�1�1�1�1rc��d}|�|��}|�|gfdz��|�|d|d��dS)Ns(]rjt.r�rrr~rs   r�test_long_bingetz&AbstractUnpickleTests.test_long_bingetGsV��;���J�J�w�'�'�	�����R�E�!�G�,�,�,��
�
�i��l�I�a�L�1�1�1�1�1rc��d}|�|��}|�|gfdz��|�|d|d��dS)Ns((l2t.r�rrr~rs   r�test_dupzAbstractUnpickleTests.test_dupMsV�����J�J�w�'�'�	�����R�E�!�G�,�,�,��
�
�i��l�I�a�L�1�1�1�1�1rc�@�d}|�t|��dS)NsVa
p-1
.�rr+r\s  r�test_negative_putz'AbstractUnpickleTests.test_negative_putSs#�����#�#�J��7�7�7�7�7rc�@�d}|�t|��dS)Ns�Xar����.r�r\s  r�test_negative_32b_binputz.AbstractUnpickleTests.test_negative_32b_binputXs&��A���#�#�J��7�7�7�7�7rc�<�|�td��dS)NsS'\'
.r�r2s r�test_badly_escaped_stringz/AbstractUnpickleTests.test_badly_escaped_string^s���#�#�J��<�<�<�<�<rc�X�gd�}|D]"}|�tj|���#dS)N)
sS'
.sS"
.sS' 
.sS" 
.sS'"
.sS"'
.sS' ' 
.sS" " 
.sS ''
.sS ""
.sS 
.sS
.sS.)rrrc�r.�
badpickles�ps   r�test_badly_quoted_stringz.AbstractUnpickleTests.test_badly_quoted_stringasN�����
��	C�	C�A��'�'��(>��B�B�B�B�	C�	Crc�p�gd�}|D].\}}|�|�|��|���/dS)N))sS''
.rW)sS""
.rW)sS"\n"
.�
)sS'\n'
.r�rH)r.�goodpicklesr��expecteds    r�test_correctly_quoted_stringz2AbstractUnpickleTests.test_correctly_quoted_stringssU��-�-�-��'�	6�	6�K�A�x����T�Z�Z��]�]�H�5�5�5�5�	6�	6rc�\�d}|�|�|��d��dS)Ns��I42
.�*rH)r.r�s  r�test_frame_readlinez)AbstractUnpickleTests.test_frame_readline{s1��G��
	
������G�,�,�b�1�1�1�1�1rc��d}|�|��}|�t|��t��|�|tdd����|�t|��gd���d}|�|�|��tj��d}|�|�|��tj	��dD]j}d|zd	z}|�|��}|�t|��t��|�t|��d
���kdD]v}d|zd
z}|�|��}|�t|��tj
��|�|tj
ddi�����wdS)Ns�c__builtin__
xrange
KKK�R.r�)rr���r��s�c__builtin__
reduce
.s�cwhichdb
whichdb
.)s	Exceptionr2s�cexceptions
s	
Uugh�R.�ugh)sUserDictsIterableUserDicts
�(cUserDict
s
o}Udata}KKssb.r�)rr�r�r7r�r��	functools�reduce�dbm�whichdbr<ry�collections�UserDict)r.r�r�r�s    r�test_compat_unpicklez*AbstractUnpickleTests.test_compat_unpickle�s���H���J�J�w�'�'�	��
�
�d�9�o�o�u�-�-�-�����E�!�Q�K�K�0�0�0�����i���*<�*<�*<�=�=�=�4���
�
�d�j�j��)�)�9�+;�<�<�<�1���
�
�d�j�j��)�)�3�;�7�7�7�4�	4�	4�D�/�$�6�9L�L�G��
�
�7�+�+�I��M�M�$�y�/�/�9�5�5�5����S��^�^�U�3�3�3�3�6�	F�	F�D�.��5�6�7�G��
�
�7�+�+�I��M�M�$�y�/�/�;�+?�@�@�@����Y��(<�a��V�(D�(D�E�E�E�E�	F�	Frc���|�|�d��d��|�td��|�td��dS)Nscbuiltins
int
)R.rsN)R.scbuiltins
int
NR.)r�rr�	TypeErrorr2s r�test_bad_reducez%AbstractUnpickleTests.test_bad_reduce�sX��������$:�;�;�Q�?�?�?��#�#�I�w�7�7�7��#�#�I�/E�F�F�F�F�Frc���tjtf}|�|�d��d��|�|d��|�|d��dS)Nscbuiltins
int
)�.rscbuiltins
len
)�.scbuiltins
int
N�.�rrcr�r�rr�r.�errors  r�test_bad_newobjz%AbstractUnpickleTests.test_bad_newobj�sf���'��3��������$=�>�>��B�B�B��#�#�E�+D�E�E�E��#�#�E�+D�E�E�E�E�Erc��tjtf}|�|�d��d��|�|d��|�|d��|�|d��dS)Nscbuiltins
int
)}�.rscbuiltins
len
)}�.scbuiltins
int
N}�.scbuiltins
int
)N�.r�r�s  r�test_bad_newobj_exz(AbstractUnpickleTests.test_bad_newobj_ex�s}���'��3��������$>�?�?��C�C�C��#�#�E�+E�F�F�F��#�#�E�+E�F�F�F��#�#�E�+E�F�F�F�F�Frc�N�gd�}|D]}|�|j|���dS)N),�.�0�1�2s(2�Rs)R�asNa�bsNb�d�es(esibuiltins
list
�l�os(osp1
sqsr�ssNssNNs�t�us(us}(Nu��s)�����sN���sN�sNN���s(�����s)}���sVlist
����r�bad_stack_errorsr�s   r�test_bad_stackz$AbstractUnpickleTests.test_bad_stack�sO��-
�-
�-
�
�\�	B�	B�A��'�'��(=�q�A�A�A�A�	B�	Brc�N�gd�}|D]}|�|j|���dS)N)sN(.sN(2scbuiltins
list
)(Rscbuiltins
list
()Rs]N(ascbuiltins
ValueError
)R}(bscbuiltins
ValueError
)R(}bs(NdsN(p1
sN(qsN(rs}NN(ss}N(Nss}(NNss}((uscbuiltins
list
)(�scbuiltins
list
()�sN(�sNN(�sN(N�sNNN(�sNN(N�sN(NN�s]((�scbuiltins
list
)}(�scbuiltins
list
)(}�scbuiltins
list
()}�sVbuiltins
(Vlist
�sVbuiltins
Vlist
(�sN(�r�r�s   r�
test_bad_markz#AbstractUnpickleTests.test_bad_mark�sO��"
�"
�"
�
�F�	B�	B�A��'�'��(=�q�A�A�A�A�	B�	Brc��|�td��|�td��gd�}|D]}|�|j|���dS)Nr�N)U�BsBsBsBab�CsCsCab�FsF0.0sF0.00�GsGr)sI0�JsJ�K�LsL0sL10sL0LsL10L�MsM�SsS'abc'�TsTsTsTab�UsUsUab�VsVabcrsXsXsXabs(cs
(cbuiltinss(cbuiltins
s(cbuiltins
listsNgsNg0s(is
(ibuiltinss(ibuiltins
s(ibuiltins
listsNhsNjsNjsNpsNp0sNqsNrsNr������s���s�����s���s�s�ab��s�s	�s�ab��s�s	�s�ab��s�s	�s�ab��s�s	�s
�N)r�EOFError�truncated_errorsr�s   r�test_truncated_dataz)AbstractUnpickleTests.test_truncated_data	s~���#�#�H�c�2�2�2��#�#�H�d�3�3�3�X
�X
�X
�
�r�	B�	B�A��'�'��(=�q�A�A�A�A�	B�	Brc��	�
��td��}td��}tjt��|�t
jt��tj�	dt��|�tjj
t��ttj�td��d��5}|�
|�d����ddd��n#1swxYwYttj�td��d��5}|�
|�d����ddd��n#1swxYwY|�td��|�td	��ddl}d
�
g�t#jd���	�	�
�fd�}t#j|�
��}t#j|�
��}|���|����	���|j���|���|���ddlm}|�d��D��|gdz��dS)NzI
        import threading
        barrier = threading.Barrier(2)
        zs
        import locker
        locker.barrier.wait()
        class ToBeUnpickled(object):
            pass
        rz	locker.py�wb�utf-8zlocking_import.py�locker�locking_imports'�clocking_import
ToBeUnpickled
q)�q.r�c�~��������tj�����dSr$)�waitr�rr)�barrier�pickle_bytes�resultss���r�tz:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t�s4���
�L�L�N�N�N��N�N�6�<��5�5�6�6�6�6�6r)�target)�
ToBeUnpickledc�,�g|]}t|����Sr%)r���.0r's  r�
<listcomp>zCAbstractUnpickleTests.test_unpickle_module_race.<locals>.<listcomp>�s��&�&�&��T�!�W�W�&�&�&rr�)r�os�mkdirr�
addCleanup�shutil�rmtree�sys�path�insert�remove�open�joinrGr r
r��	threading�Barrier�ThreadrAr�r�r�r�r�)r.�
locker_module�locking_import_module�fr�r��t1�t2r�r�r�r�s         @@@r�test_unpickle_module_racez/AbstractUnpickleTests.test_unpickle_module_racehs������� �
�
�
�!'�(�!
�!
��	����������
�v�.�.�.������6�"�"�"��������0�0�0�
�"�'�,�,�v�{�3�3�T�
:�
:�	3�a�
�G�G�M�(�(��1�1�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
�"�'�,�,�v�':�;�;�T�
B�
B�	;�a�
�G�G�)�0�0��9�9�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;������)�)�)����� 0�1�1�1��
�
�
�
H�	����#�A�&�&��	7�	7�	7�	7�	7�	7�	7��
�Q�
'�
'�
'��
�
�Q�
'�
'�
'��
���
�
�
�
���
�
�
��������������
���	�	�	�
���	�	�	�0�0�0�0�0�0����&�&�g�&�&�&�
�O�a��	!�	!�	!�	!�	!s$�")D�D�D�)F
�
F�Fr$)6r<r=r>r�r
r�rrrrrrr'r.rErIrKrRrUrYr^r`�requires_32brerhrkrnrprrrurwrzr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�reap_threads�requires_working_threadingrr%rrr�r�Asm��������
�
�I�H�H�H�H�$	�	�	�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�7?�7?�7?�r6�6�6�/�/�/�<	E�	E�	E�	=�	=�	=�C�C�C�4�4�4�$�$�$�
B�B�B�B�B�B��,�,��\�,��,�,��\�,�;�;�;�?�?�?�B�B�B�;�;�;�@�@�@��,�,��\�,�
�,�,��\�,�
�,�,��\�,�
2�2�2�2�2�2�2�2�2�2�2�2�8�8�8�
�8�8��\�8�
=�=�=�C�C�C�$6�6�6�2�2�2�F�F�F�6G�G�G�
F�F�F�G�G�G�0B�0B�0B�d%B�%B�%B�N]B�]B�]B�~�"�0��0�2�2�9!�9!�3�2�#�"�9!�9!�9!rr�c���eZdZdZejZd�ZejZd�Zd�Z	d�Z
edfd�Zd�Z
d	�Zd
�Zedfd�Zd�Zd
�Zd�Zedfd�Zd�Zd�Zd�Zedfd�Zd�Zd�Zd�Zedfd�Zd�Zd�Zd�Zedfd�Z d�Z!d�Z"d�Z#d�Z$d �Z%d!�Z&d"�Z'd#�Z(d$�Z)d%�Z*d&�Z+d'�Z,d(�Z-d)�Z.d*�Z/d+�Z0d,�Z1d-�Z2d.�Z3d/�Z4d0�Z5d1�Z6d2�Z7d3�Z8d4�Z9d5�Z:d6�Z;e<d7d8d9��d:���Z=d;�Z>d<�Z?d=�Z@d>�ZAd?�ZBd@�ZCdA�ZDdB�ZEdC�ZFdD�ZGdE�ZHdF�ZIdG�ZJdH�ZKdI�ZLdJ�ZMdK�ZNdL�ZOdM�ZPdN�ZQdO�ZRdP�ZSdQ�ZTdR�ZUdS�ZVdT�ZWdU�ZXdV�ZYdW�ZZdX�Z[dY�Z\dZ�Z]d[�Z^d\�Z_d]�Z`d^�Zad_�Zbd`�Zcedda���Zedb�Zfdc�Zgdd�Zhde�Zidf�Zjdg�Zkdh�Zldi�Zmdj�ZndkZodlZpdm�Zqerjsdn���Ztdo�Zudp�Zverjsdq���Zwdr�Zxds�Zydt�Zzdu�Z{dv�Z|dw�Z}dx�Z~dy�Zdz�Z�d{�Z�d|�Z�d}�Z�d~�Z�d�Z�e�j�e�d�ud���d����Z�d��Z�d��Z�d�S)��AbstractPickleTestsFc��dSr$r%r2s r�setUpzAbstractPickleTests.setUp�rbrc���tD]�}td��}|�||��}|�|��}|�||��d}|�||��}|�|��}|�||��td|��}|�||��}|�|��}|�||����dS)Nr�)rr%r)�	protocolsrv�dumpsrr�r{�r.�protor'�sr�s     r�	test_misczAbstractPickleTests.test_misc�s����	&�	&�E��a���A��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%��A��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%���1�
�
�A��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�%�	&�	&rc��|j}tD]C}|�||��}|�|��}|�||���DdSr$)r
rrrr�)r.r�rrr-s     r�test_roundtrip_equalityz+AbstractPickleTests.test_roundtrip_equality�s]���>���	/�	/�E��
�
�8�U�+�+�A��*�*�Q�-�-�C�����#�.�.�.�.�	/�	/rc��ddlm}ddlm}dtfdt
ffD]a\}}|�|j|��}|��}|||���|���}|�	||���bdS)Nr)�StringIO��disr)�out)
r6r#rr%�	DATA0_DIS�	DATA1_DISrr
rDr�)r.r#r%rr�r�fileliker-s        r�dont_test_disassemblyz)AbstractPickleTests.dont_test_disassembly�s���������#�#�#�#�#�#� !�9�~��9�~�=�	,�	,�O�E�8��
�
�4�>�5�1�1�A��x�z�z�H��C��x� � � � ��#�#�%�%�C����X�s�+�+�+�+�	,�	,rrc��|��}|�|��t|tjdz��D]�}|�||��}|�|��}|�||��||��}|�t|��d��|�	|d|����dS�Nrr)
r�r7r�HIGHEST_PROTOCOLrr�assertIsInstancer��lenr�)	r.r��aslist�minprotocol�lrrr'r�s	         r�_test_recursive_listz(AbstractPickleTests._test_recursive_list�s����C�E�E��	��������;��(?�!�(C�D�D�	#�	#�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�S�)�)�)���q�	�	�A����S��V�V�Q�'�'�'��M�M�!�A�$��"�"�"�"�
	#�	#rc�:�|�t��dSr$)r3r�r2s r�test_recursive_listz'AbstractPickleTests.test_recursive_list�����!�!�$�'�'�'�'�'rc�>�|�td���dS�Nr�)r1)r3�MyListr2s r�test_recursive_list_subclassz0AbstractPickleTests.test_recursive_list_subclass��!���!�!�&�a�!�8�8�8�8�8rc�@�|�td����dS)Nc��|jSr$�r�r&s r�<lambda>z>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>�s��A�G�r�r0)r3�REX_sixr2s r�test_recursive_list_likez,AbstractPickleTests.test_recursive_list_like�s%���!�!�'�2C�2C�!�D�D�D�D�Drc�:�|��f}|d�|��t|tjdz��D]�}|�||��}|�|��}|�|t��|�t|��d��|�|d|��||d��}|�t|��d��|�
|d|����|\}t|tjdz��D]�}|�||��}|�|��}|�||��||��}|�t|��d��|�|dt��|�t|d��d��|�
|dd|����dSrM)r�r7rr-rrr.�tupler�r/r�)	r.r�r0r1r�rrr'r�s	         r�_test_recursive_tuple_and_listz2AbstractPickleTests._test_recursive_tuple_and_list�s���
�S�U�U�H��	�!����A�����;��(?�!�(C�D�D�	#�	#�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�U�+�+�+����S��V�V�Q�'�'�'��!�!�!�A�$��,�,�,���q��t���A����S��V�V�Q�'�'�'��M�M�!�A�$��"�"�"�"�����;��(?�!�(C�D�D�	&�	&�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�S�)�)�)���q�	�	�A����S��V�V�Q�'�'�'��!�!�!�A�$��.�.�.����S��1��Y�Y��*�*�*��M�M�!�A�$�q�'�1�%�%�%�%�	&�	&rc�:�|�t��dSr$)rEr�r2s r�test_recursive_tuple_and_listz1AbstractPickleTests.test_recursive_tuple_and_list����+�+�D�1�1�1�1�1rc�>�|�td���dSr8)rEr9r2s r�&test_recursive_tuple_and_list_subclassz:AbstractPickleTests.test_recursive_tuple_and_list_subclass�!���+�+�F��+�B�B�B�B�Brc�@�|�td����dS)Nc��|jSr$r>r&s rr?zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>s��a�g�rr@)rErAr2s r�"test_recursive_tuple_and_list_likez6AbstractPickleTests.test_recursive_tuple_and_list_likes%���+�+�G�<M�<M�+�N�N�N�N�Nrc��|��}||d<t|tjdz��D]�}|�||��}|�|��}|�||��||��}|�t|�����dg��|�	|d|����dS�Nr)
r7rr-rrr.r�r�r9r��	r.r��asdictr1�drrr'r�s	         r�_test_recursive_dictz(AbstractPickleTests._test_recursive_dicts����C�E�E����!���;��(?�!�(C�D�D�	#�	#�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�S�)�)�)���q�	�	�A����T�!�&�&�(�(�^�^�a�S�1�1�1��M�M�!�A�$��"�"�"�"�
	#�	#rc�:�|�t��dSr$)rTr�r2s r�test_recursive_dictz'AbstractPickleTests.test_recursive_dict#r6rc�>�|�td���dSr8)rT�MyDictr2s r�test_recursive_dict_subclassz0AbstractPickleTests.test_recursive_dict_subclass&r;rc�@�|�td����dS)Nc��|jSr$��tabler&s rr?z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>*s��a�g�r�rR)rT�	REX_sevenr2s r�test_recursive_dict_likez,AbstractPickleTests.test_recursive_dict_like)s%���!�!�)�4E�4E�!�F�F�F�F�Frc��|��f}||dd<t|tjdz��D]�}|�||��}|�|��}|�|t��|�t|��d��|�|d|��||d��}|�t|��dg��|�
|d|����|\}t|tjdz��D]�}|�||��}|�|��}|�||��||��}|�t|��dg��|�|dt��|�t|d��d��|�
|dd|����dSrM)r7rr-rrr.rDr�r/r�r��	r.r�rRr1r�rrr'r�s	         r�_test_recursive_tuple_and_dictz2AbstractPickleTests._test_recursive_tuple_and_dict,s���
�S�U�U�H����!��Q���;��(?�!�(C�D�D�	#�	#�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�U�+�+�+����S��V�V�Q�'�'�'��!�!�!�A�$��,�,�,���q��t���A����T�!�W�W�q�c�*�*�*��M�M�!�A�$��"�"�"�"�����;��(?�!�(C�D�D�	&�	&�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�S�)�)�)���q�	�	�A����T�!�W�W�q�c�*�*�*��!�!�!�A�$��.�.�.����S��1��Y�Y��*�*�*��M�M�!�A�$�q�'�1�%�%�%�%�	&�	&rc�:�|�t��dSr$)rcr�r2s r�test_recursive_tuple_and_dictz1AbstractPickleTests.test_recursive_tuple_and_dictFrHrc�>�|�td���dSr8)rcrXr2s r�&test_recursive_tuple_and_dict_subclassz:AbstractPickleTests.test_recursive_tuple_and_dict_subclassIrKrc�@�|�td����dS)Nc��|jSr$r\r&s rr?zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>Ms����rr^)rcr_r2s r�"test_recursive_tuple_and_dict_likez6AbstractPickleTests.test_recursive_tuple_and_dict_likeLs%���+�+�I�>O�>O�+�P�P�P�P�Prc��|��}d|t|��<t|tjdz��D�]}|�||��}|�|��}|�||��||��}|�t|�	����d��|�t|�	����dt��|�t|�	����dj|����dSr,)
rnr7rr-rrr.r�r/r9r�r�rprQs	         r�_test_recursive_dict_keyz,AbstractPickleTests._test_recursive_dict_keyOs��
�C�E�E����!�A�$�$���;��(?�!�(C�D�D�	6�	6�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�S�)�)�)���q�	�	�A����S������]�]�A�.�.�.��!�!�$�q�v�v�x�x�.�.��"3�Q�7�7�7��M�M�$�q�v�v�x�x�.�.��+�1�1�5�5�5�5�	6�	6rc�:�|�t��dSr$)rlr�r2s r�test_recursive_dict_keyz+AbstractPickleTests.test_recursive_dict_key]s���%�%�d�+�+�+�+�+rc�>�|�td���dSr8)rlrXr2s r� test_recursive_dict_subclass_keyz4AbstractPickleTests.test_recursive_dict_subclass_key`s!���%�%�f�!�%�<�<�<�<�<rc�@�|�td����dS)Nc��|jSr$r\r&s rr?zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>ds��!�'�rr^)rlr_r2s r�test_recursive_dict_like_keyz0AbstractPickleTests.test_recursive_dict_like_keycs%���%�%�i�8I�8I�%�J�J�J�J�Jrc�4�|��f}d|dt|��<t|tjdz��D�]<}|�||��}|�|��}|�|t��|�t|��d��|�|d|��||d��}|�t|��d��|�t|�����dt��|�t|�����dj
|����>|\}t|tjdz��D]�}|�||��}|�|��}|�||��||��}|�t|��d��|�t|�����dt��|�t|�����dj
d|����dSr,)rnr7rr-rrr.rDr�r/r�r9r�rprbs	         r�"_test_recursive_tuple_and_dict_keyz6AbstractPickleTests._test_recursive_tuple_and_dict_keyfs&���S�U�U�H����!��Q�q�T�T�
��;��(?�!�(C�D�D�		6�		6�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�U�+�+�+����S��V�V�Q�'�'�'��!�!�!�A�$��,�,�,���q��t���A����S��V�V�Q�'�'�'��!�!�$�q�v�v�x�x�.�.��"3�Q�7�7�7��M�M�$�q�v�v�x�x�.�.��+�1�1�5�5�5�5�����;��(?�!�(C�D�D�	9�	9�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�S�)�)�)���q�	�	�A����S��V�V�Q�'�'�'��!�!�$�q�v�v�x�x�.�.��"3�Q�7�7�7��M�M�$�q�v�v�x�x�.�.��+�1�!�4�a�8�8�8�8�	9�	9rc�:�|�t��dSr$)rur�r2s r�!test_recursive_tuple_and_dict_keyz5AbstractPickleTests.test_recursive_tuple_and_dict_key�s���/�/��5�5�5�5�5rc�>�|�td���dSr8)rurXr2s r�*test_recursive_tuple_and_dict_subclass_keyz>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_key�s!���/�/��A�/�F�F�F�F�Frc�@�|�td����dS)Nc��|jSr$r\r&s rr?zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>�s��A�G�rr^)rur_r2s r�&test_recursive_tuple_and_dict_like_keyz:AbstractPickleTests.test_recursive_tuple_and_dict_like_key�s%���/�/�	�BS�BS�/�T�T�T�T�Trc���t��}|�t|����tdtjdz��D]�}|�||��}|�|��}|�|t��|�	t|��d��|�t|��dt��|�t|��dj
|����|\}tdtjdz��D]�}|�||��}|�|��}|�|t��|�|j
t��|�	t|j
��d��|�t|j
��d|����dS)Nr�rr)r5�addrnr7rr-rrr.r�r/r�r�rp�r.r�rrr's     r�test_recursive_setz&AbstractPickleTests.test_recursive_set�s����E�E��	���a��d�d�����1�f�5��9�:�:�	/�	/�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�S�)�)�)����S��V�V�Q�'�'�'��!�!�$�q�'�'�!�*�a�0�0�0��M�M�$�q�'�'�!�*�*�A�.�.�.�.�����1�f�5��9�:�:�	/�	/�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�Q�'�'�'��!�!�!�'�3�/�/�/����S���\�\�1�-�-�-��M�M�$�q�w�-�-��*�A�.�.�.�.�
	/�	/rc�f�t��}||_tD]�}|�||��}|�|��}|�|t��|�t|��t|����|�|j|����dSr$)	rj�attrrrrr.r��dirr�)r.�irrr's     r�test_recursive_instz'AbstractPickleTests.test_recursive_inst�s����H�H������	%�	%�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�V�,�,�,����S��V�V�S��V�V�,�,�,��M�M�!�&�!�$�$�$�$�	%�	%rc��g}d|i}t��}||_|�|��tD�]
}|�||��}|�|��}|�|t��|�t|��d��|�t|d��t|����|�t|dj�����dg��|�|djd|����dSr,)
rjr�r�rrrr.r�r�r/r�r9r�)r.r2rSr�rrr's       r�test_recursive_multiz(AbstractPickleTests.test_recursive_multi�s����
�q�E���H�H�����	��������	+�	+�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�T�*�*�*����S��V�V�Q�'�'�'����S��1��Y�Y��A���/�/�/����T�!�A�$�)�.�.�"2�"2�3�3�a�S�9�9�9��M�M�!�A�$�)�A�,��*�*�*�*�	+�	+rc��t��}||g��|_t|j��}tD]�}|�||��}|�|��}|�|j|��|�t|j��d��|�t|j��dt��|�
t|j��d|����|j}tD]�}|�||��}|�|��}|�||��|�t|��d��|�t|��dt��|�
t|��dj|����dSr,)rjr�r�rrrr.r�r/r�r�)r.�factory�or�rrr's       r�#_test_recursive_collection_and_instz7AbstractPickleTests._test_recursive_collection_and_inst�s���
�H�H����!���������L�L���	.�	.�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�&�!�,�,�,����S���[�[�!�,�,�,��!�!�$�q�v�,�,�q�/�6�:�:�:��M�M�$�q�v�,�,�q�/�1�-�-�-�-�
�F���	.�	.�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�Q�'�'�'����S��V�V�Q�'�'�'��!�!�$�q�'�'�!�*�f�5�5�5��M�M�$�q�'�'�!�*�/�1�-�-�-�-�
	.�	.rc�:�|�t��dSr$)r�r�r2s r�test_recursive_list_and_instz0AbstractPickleTests.test_recursive_list_and_inst�s���0�0��6�6�6�6�6rc�:�|�t��dSr$)r�rDr2s r�test_recursive_tuple_and_instz1AbstractPickleTests.test_recursive_tuple_and_inst�����0�0��7�7�7�7�7rc�D�|�tj��dSr$)r�r��fromkeysr2s r�test_recursive_dict_and_instz0AbstractPickleTests.test_recursive_dict_and_inst�s���0�0���?�?�?�?�?rc�:�|�t��dSr$)r�r5r2s r�test_recursive_set_and_instz/AbstractPickleTests.test_recursive_set_and_inst�s���0�0��5�5�5�5�5rc�:�|�t��dSr$)r��	frozensetr2s r�!test_recursive_frozenset_and_instz5AbstractPickleTests.test_recursive_frozenset_and_inst�s���0�0��;�;�;�;�;rc�:�|�t��dSr$)r�r9r2s r�%test_recursive_list_subclass_and_instz9AbstractPickleTests.test_recursive_list_subclass_and_inst�s���0�0��8�8�8�8�8rc�:�|�t��dSr$)r��MyTupler2s r�&test_recursive_tuple_subclass_and_instz:AbstractPickleTests.test_recursive_tuple_subclass_and_inst�s���0�0��9�9�9�9�9rc�D�|�tj��dSr$)r�rXr�r2s r�%test_recursive_dict_subclass_and_instz9AbstractPickleTests.test_recursive_dict_subclass_and_inst�s���0�0���A�A�A�A�Arc�:�|�t��dSr$)r��MySetr2s r�$test_recursive_set_subclass_and_instz8AbstractPickleTests.test_recursive_set_subclass_and_inst�r�rc�:�|�t��dSr$)r��MyFrozenSetr2s r�*test_recursive_frozenset_subclass_and_instz>AbstractPickleTests.test_recursive_frozenset_subclass_and_inst�s���0�0��=�=�=�=�=rc��t��}||_tD]c}|�||��}|�|��}|�|t��|�|j|���ddSr$)�	REX_state�staterrrr.r�rs     r�test_recursive_inst_statez-AbstractPickleTests.test_recursive_inst_state�s|���K�K������	&�	&�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�Y�/�/�/��M�M�!�'�1�%�%�%�%�		&�	&rc�"�t��f}||d_tD]�}|�||��}|�|��}|�|t��|�t|��d��|�|dt��|�	|dj|����|\}tD]�}|�||��}|�|��}|�|t��|�|jt��|�t|j��d��|�	|jd|����dSrM)
r�r�rrrr.rDr�r/r�)r.r�rrr's     r�#test_recursive_tuple_and_inst_statez7AbstractPickleTests.test_recursive_tuple_and_inst_state�s_��
�[�[�N����!��
��	)�	)�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�U�+�+�+����S��V�V�Q�'�'�'��!�!�!�A�$�	�2�2�2��M�M�!�A�$�*�a�(�(�(�(�����	)�	)�E��
�
�1�e�$�$�A��
�
�1�
�
�A��!�!�!�Y�/�/�/��!�!�!�'�5�1�1�1����S���\�\�1�-�-�-��M�M�!�'�!�*�a�(�(�(�(�
	)�	)rc��gd�}tD]H}|D]C}|�||��}|�|��}|�||���D�IdS)N)rWz<\u>u<\ሴ>z<
>z<\>u<\𒍅>u<�>�rrrr�)r.�endcasesr�ur��u2s      r�test_unicodez AbstractPickleTests.test_unicodes}�� � � ���	+�	+�E��
+�
+���J�J�q�%�(�(���Z�Z��]�]���#�#�A�r�*�*�*�*�
+�	+�	+rc��d}tD]C}|�||��}|�|��}|�||���DdS)Nu𒍅r�)r.r�rr�rs     r�test_unicode_high_planez+AbstractPickleTests.test_unicode_high_planes[�����	'�	'�E��
�
�1�e�$�$�A����A���B�����2�&�&�&�&�	'�	'rc��tD]�}dD]A}|�||��}|�||�|�����Bd�t	d��D��D]A}|�||��}|�||�|�����Bd�t	d��D��D]A}|�||��}|�||�|�����B��dS)N�r�xyzs,xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzc�.�g|]}t|g����Sr%�r��r�r�s  rr�z2AbstractPickleTests.test_bytes.<locals>.<listcomp>)s ��5�5�5�Q�e�Q�C�j�j�5�5�5r�c�0�g|]}t||g����Sr%r�r�s  rr�z2AbstractPickleTests.test_bytes.<locals>.<listcomp>,s"��8�8�8��e�Q��F�m�m�8�8�8r)rrr�rr7)r.rrr�s    r�
test_byteszAbstractPickleTests.test_bytes$s���		6�		6�E�,�
6�
6���J�J�q�%�(�(���#�#�A�t�z�z�!�}�}�5�5�5�5�5�5�%��*�*�5�5�5�
6�
6���J�J�q�%�(�(���#�#�A�t�z�z�!�}�}�5�5�5�5�8�8�U�3�Z�Z�8�8�8�
6�
6���J�J�q�%�(�(���#�#�A�t�z�z�!�}�}�5�5�5�5�
6�		6�		6rc��tD�]M}dD�]F}t|��}|�||��}|�|��}|�||��|�||��|dkrD|�d|��|�ttj
|������|dkrD|�d|��|�ttj|������|dkrC|�d|��|�ttj
|������H��OdS)Nr�r�s	bytearrayr�r�)rrtrrr�r��assertIn�
assertTruerr�GLOBAL�STACK_GLOBAL�assertNotIn�
BYTEARRAY8)r.rrrr��bbs      r�test_bytearrayz"AbstractPickleTests.test_bytearray0sN���	L�	L�E�,�
L�
L���a�L�L���J�J�q�%�(�(���Z�Z��]�]��� � ��Q�'�'�'��#�#�A�r�*�*�*��A�:�:��M�M�,��2�2�2��O�O�$4�V�]�A�$F�$F�G�G�G�G��a�Z�Z��M�M�,��2�2�2��O�O�$4�V�5H�!�$L�$L�M�M�M�M��a�Z�Z��$�$�\�1�5�5�5��O�O�$4�V�5F��$J�$J�K�K�K��
L�	L�	Lrc���tD]\}dD]W}t|��}|�||f|��}|�|��\}}|�||���X�]dS)Nr�)rrtrrr�)r.rrrr��b1�b2s       r�test_bytearray_memoization_bugz2AbstractPickleTests.test_bytearray_memoization_bugCs{���	&�	&�E�,�
&�
&���a�L�L���J�J��1�v�u�-�-�����A�����B��
�
�b�"�%�%�%�%�	
&�	&�	&rc���tD]`}tj}|rP||fD]C}|�||��}|�|��}|�||���D|dz	}|�P�adSrP)rr�maxsizerrr�)r.rr!r�r�n2s      r�	test_intszAbstractPickleTests.test_intsKs����	�	�E���A��
�"#��Q��6�6�H��
�
�8�U�3�3�A����A���B��'�'��"�5�5�5�5���F���
��	�	rc���tD]c}dD]^}d|z}|dz
||dzfD]K}||fD]C}|�||��}|�|��}|�||���D�L�_�dt	dd��}||dzz
}||fD]k}|�|d��}|�|��}|�t
|��t��|�||���ldS)N)r�i�i��ir�deadbeeffeedface�i@Br�)rrrr��intr�r�r�)	r.r�nbits�nbase�nposr!rr-r�s	         r�	test_longzAbstractPickleTests.test_longUs?���	4�	4�E�9�
4�
4���U�
��!�!�G�U�E�!�G�3�4�4�D�!�D�5�[�4�4��!%���A�u�!5�!5��"�j�j��0�0���+�+�A�s�3�3�3�3�4�4�
4��&��+�+��
��'�!�!������	%�	%�A��
�
�1�a� � �A��*�*�Q�-�-�C�
�M�M�$�s�)�)�S�)�)�)����Q��$�$�$�$�	%�	%rc���gd�}|d�|D��z}tD]H}|D]C}|�||��}|�|��}|�||���D�IdS)N)ggg+�p�hg�Z��*)g_D��9g�������?g�?g��Q�	@g�m�"wp@g�W�T��Dgꌠ9Y>)Fc��g|]}|��Sr%r%r�s  rr�z2AbstractPickleTests.test_float.<locals>.<listcomp>os��$=�$=�$=�A�a�R�$=�$=�$=rr�)r.�test_valuesrrprr-s      r�
test_floatzAbstractPickleTests.test_floatls���A�A�A��!�$=�$=��$=�$=�$=�=���	0�	0�E�$�
0�
0�����E�5�1�1���j�j��(�(���#�#�E�3�/�/�/�/�
0�	0�	0r�LC_ALL�de_DE�fr_FRc�j�|�|�dd��dd�d��dS)Ng333333�?rr�sF1.)r�rr2s r�test_float_formatz%AbstractPickleTests.test_float_formatvs7��	
������C��+�+�A�a�C�0�&�9�9�9�9�9rc���tD]V}t��}|�||��}|�|��}|�|t
���WdSr$)r�AAArrr��REDUCE_A�r.r�instr]rDs     r�test_reducezAbstractPickleTests.test_reduce{sa���	/�	/�E��5�5�D��Z�Z��e�,�,�F��Z�Z��'�'�F����V�X�.�.�.�.�		/�	/rc��tD]S}tdd��}|�||��}|�|��}|�||���TdS)Nrr�)rr{rrr�r�s     r�test_getinitargsz$AbstractPickleTests.test_getinitargs�se���	.�	.�E��1�a�=�=�D��Z�Z��e�,�,�F��Z�Z��'�'�F�����f�-�-�-�-�		.�	.rc���t��}tD]M}|�||��}|�|��}|�|j|j���NdSr$)r�rrrr�r��r.r~rrrs     r�test_metaclassz"AbstractPickleTests.test_metaclass�sc���O�O���	7�	7�E��
�
�1�e�$�$�A��
�
�1�
�
�A����Q�[�!�+�6�6�6�6�	7�	7rc�p�tdtf��}tjttj��tD]s}|�||��}|�|��}|�	||��|�
t|��t|�����tdS)N�my_dynamic_class)r�r?rNrr�rsrrrr�r�r�r�s     r�test_dynamic_classz&AbstractPickleTests.test_dynamic_class�s��� �!3�f�Y�?�?����)�+=�+H�I�I�I��	,�	,�E��
�
�1�e�$�$�A��
�
�1�
�
�A����Q��"�"�"��M�M�$�q�'�'�4��7�7�+�+�+�+�		,�	,rc�P�ddl}ddl}|���}tD�]}|�||��}|�|��}|�||��|j|j��}|�||��}|�|��}|�||��t|d��rV|j
|j��}|�||��}|�|��}|�||����dS)Nr�statvfs)�timer��	localtimerrrr��stat�curdirr�r�)r.r�r�r�rrr�s       r�test_structseqz"AbstractPickleTests.test_structseq�s�������	�	�	��N�N�����	*�	*�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�����	�"�"�A��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%��r�9�%�%�
*��B�J�r�y�)�)���J�J�q�%�(�(���J�J�q�M�M���#�#�A�q�)�)�)��	*�	*rc��tD]C}|�d|��}|�|��}|�d|���DdS�N.)rrrr��r.rrr�s    r�
test_ellipsisz!AbstractPickleTests.test_ellipsis�sT���	"�	"�E��
�
�3��&�&�A��
�
�1�
�
�A��M�M�#�q�!�!�!�!�	"�	"rc��tD]M}|�t|��}|�|��}|�t|���NdSr$)rrr�rr�r�s    r�test_notimplementedz'AbstractPickleTests.test_notimplemented�sT���	-�	-�E��
�
�>�5�1�1�A��
�
�1�
�
�A��M�M�.�!�,�,�,�,�	-�	-rc���ddtg}|D]g}tD]]}|�t|��|��}|�|��}|�t|��|���^�hdSr�)r�rrr�rr�)r.�
singletons�	singletonrrr�s      r�test_singleton_typesz(AbstractPickleTests.test_singleton_types�s����C��0�
�#�	2�	2�I�"�
2�
2���J�J�t�I����6�6���J�J�q�M�M���
�
�d�9�o�o�q�1�1�1�1�
2�	2�	2rc�.�tj���D]u}t|t��r^t|t��sItD]A}|�||��}|�	|�
|��|���B�vdSr$)�builtinsrZ�valuesr�r��
issubclassrrrr�r�r.r�rrs    r�test_builtin_typesz&AbstractPickleTests.test_builtin_types�s����"�)�)�+�+�	4�	4�A��!�T�"�"�
4�:�a��+G�+G�
4�&�4�4�E��
�
�1�e�,�,�A��M�M�$�*�*�Q�-�-��3�3�3�3��		4�	4rc� �tj���D]�}t|t��r�t|t��r�tD]�}|�||��}|�	|��}|dkr:t|t��r%|tur|�|t���m|dkr1t|t��r|�|t����|�||������dS�Nr�)rrZrr�r�rrrrr�OSError�BlockingIOErrorr��ImportError)r.r�rrr�s     r�test_builtin_exceptionsz+AbstractPickleTests.test_builtin_exceptions�s����"�)�)�+�+�
	,�
	,�A��!�T�"�"�	
,�z�!�]�'C�'C�	
,�&�,�,�E��
�
�1�e�,�,�A��
�
�1�
�
�A���z�z�j��G�&<�&<�z��/�AY�AY��
�
�a��1�1�1�1��!���
�1�k�(B�(B���
�
�a��5�5�5�5��
�
�a��+�+�+�+��
	,�
	,rc��tj���D]e}t|tj��rItD]A}|�||��}|�|�	|��|���B�fdSr$)
rrZrr��types�BuiltinFunctionTyperrr�rrs    r�test_builtin_functionsz*AbstractPickleTests.test_builtin_functions�s����"�)�)�+�+�	4�	4�A��!�U�6�7�7�
4�&�4�4�E��
�
�1�e�,�,�A��M�M�$�*�*�Q�-�-��3�3�3�3��		4�	4rc��tD]�}|�d|��}|dkrFtjt	|g��z}|�|�|�����d|�ttj|��d����tddz}tj	tj
z}tjt	|g��z|z}	|�|��|�d��dS#t$r.}|�dt|����Yd}~dSd}~wwxYw)Nr�rr�rz0expected bad protocol number to raise ValueErrorzunsupported pickle protocol)rrr�PROTOr�r��
startswithr�r"�NONErQr�failr+r�ry)r.rr��proto_header�oob�
build_none�	badpickle�errs        r�
test_protozAbstractPickleTests.test_proto�sE���	I�	I�E��j�j��u�-�-�G���z�z�%�|�e�U�G�n�n�<������ 2� 2�<� @� @�A�A�A�A�� � ��f�l�G�!D�!D�a�H�H�H�H���m�a����[�6�;�.�
��L�5�#��<�<�/�*�<�	�	J��J�J�y�!�!�!�
�I�I�H�I�I�I�I�I���	C�	C�	C��M�M�7��S���B�B�B�B�B�B�B�B�B�����	C���s�%D�
E	�#E�E	c��d}tD]u}|�||��}|�|��}|�||��|�ttj|��|dk���vdS)N��UJ^w,3�|	r�)rrrr�r�rr�LONG1�r.r'rrr�s     r�
test_long1zAbstractPickleTests.test_long1�s���)���	L�	L�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%����-�f�l�A�>�>���
�K�K�K�K�		L�	Lrc�
�ddz}tD]u}|�||��}|�|��}|�||��|�ttj|��|dk���vdS)Nrr�r�)rrrr�r�rr�LONG4rs     r�
test_long4zAbstractPickleTests.test_long4�s���)�e�4���	L�	L�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%����-�f�l�A�>�>���
�K�K�K�K�		L�	Lrc�Z�idtj�dtj�dtj�dtj�dtj�dtj�dtj�dtj�d	tj�d
tj�dtj�dtj�d
tj�dtj�dtj�dtj�dtj�tjtjtjd��}d}d}d}d}d}tD]�}|||||fD]�}|�||��}	|�|	��}
|�	||
��|t|d��t|��f}|�t||	��������dS)N)rr)rr)rr�)rr�)rr�)rr)rr�rr�)rr��rr�)r�r�r�r)r�r�)r�r�)r�r�)r�r)r�r))r�r�)r�r��r�r�r%)r�rr�r�)rr�r�r�r�)r�TUPLE�EMPTY_TUPLE�TUPLE1�TUPLE2�TUPLE3rrrr��minr/r�r)r.�expected_opcoder~rr�rS�err'rr�r�s            r�test_short_tuplesz%AbstractPickleTests.test_short_tupless����6�6�<��!�6�<��!�6�<��"�6�<��"�6�<�	�"�6�#5�
�"�6�<��"�6�<��"�6�<��"�6�<��"�6�#5��"�6�=��"�6�=��"�6�=�� "�6�<�!�$"�6�#5�%�&"�6�=�'�($*�=�#)�=�#)�<�-����0
�����������	?�	?�E���1�a��]�
?�
?���J�J�q�%�(�(���J�J�q�M�M���#�#�A�q�)�)�)�*�3�u�a�=�=�#�a�&�&�+@�A����� 0��1� =� =�>�>�>�>�
?�	?�	?rc
�6�tjtjtjtjtjtjtjtjtjtjtjtjd�}t
D]�}dD]�}|�||��}|�|��}|�||u||||f��|t|d��|f}|�t||��������dS)N))rN)rN)r�N)r�N)rT)rT)r�T)r�T)rF)rF)r�F)r�F)NFTr�)rr�INT�NEWTRUE�NEWFALSErrrr�r.r)r.r/rr'rr�r�s       r�test_singletonsz#AbstractPickleTests.test_singletons(s���&,�k�&,�k�&,�k�&,�k�&,�j�&,�j�&,�n�&,�n�'-�z�'-�z�'-��'-������	?�	?�E�&�
?�
?���J�J�q�%�(�(���J�J�q�M�M������Q����1�a�(8�9�9�9�*�3�u�a�=�=�!�+;�<����� 0��1� =� =�>�>�>�>�
?�	?�	?rc���tgd���}d|_d|_tD]C}|�||��}|�|��}|�||���DdS�Nr(r��hello)r�r�r�rrrr�rs     r�test_newobj_tuplez%AbstractPickleTests.test_newobj_tupleAsu���I�I�I�����������	&�	&�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�%�	&�	&rc���tgd���}d|_d|_tD]C}|�||��}|�|��}|�||���DdSr8)r9r�r�rrrr�rs     r�test_newobj_listz$AbstractPickleTests.test_newobj_listJsu���9�9�9�����������	&�	&�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�%�	&�	&rc
��tD]�}tD]�}|j}||j��}d|_|�||��}|�|��}|||||t|��f}|�||��|�	||��||��|��|�	|j
|j
|������dS�Nr�)r�	myclasses�__base__�sampler�rrr�r�r�rZ)r.rrX�Br'rr��details        r�test_newobj_genericz'AbstractPickleTests.test_newobj_genericSs����
	A�
	A�E��	
A�	
A���J���A�a�h�K�K������J�J�q�%�(�(���J�J�q�M�M����A�q�!�T�!�W�W�5���#�#�A�q�)�)�)�� � ���1���q�q��t�t�V�4�4�4�� � ���Q�Z��@�@�@�@�	
A�
	A�
	Arc
�f�tdd�}ttfD]}|�|���tD]�}|D]�}|j}||j��}d|_tj	|��}|�
||��}|�|��}	|�t|	��t|����|||||	t|	��f}
|�||��||	��|
��|�|j|	j|
�����dSr>)r?�MyIntr�rrr@rAr��weakref�proxyrrr�r�rZ)r.�classesr�rrXrBr'r�rr�rCs           r�test_newobj_proxiesz'AbstractPickleTests.test_newobj_proxies`s;���A�A�A�,����!�	�	�A��N�N�1������	A�	A�E��

A�

A���J���A�a�h�K�K������M�!�$�$���J�J�q�%�(�(���J�J�q�M�M��� � ��a���$�q�'�'�2�2�2���A�q�!�T�!�W�W�5��� � ���1���q�q��t�t�V�4�4�4�� � ���Q�Z��@�@�@�@�

A�	A�	Arc�h�tD]�}td��}d|_|�||��}|�|��}|�t
|��t��|�t|��d��|�|jd����dS)Nrr�)	r�
MyIntWithNew2r�rrr�r�r�r�rs     r�test_newobj_overridden_newz.AbstractPickleTests.test_newobj_overridden_newss����	(�	(�E��a� � �A��A�E��
�
�1�e�$�$�A��
�
�1�
�
�A��M�M�$�q�'�'�=�1�1�1����S��V�V�Q�'�'�'����Q�U�B�'�'�'�'�	(�	(rc���t}t�t��}|�|d��}	da|�tt
jf|j|��|adS#|awxYw)Nr�r�)�SimpleNewObjr�rrr�rrcr)r.�saver�rs    r�test_newobj_not_classz)AbstractPickleTests.test_newobj_not_class~su����� � ��.�.���J�J�q�!����	 ��L����y�&�*@�A�4�:�q�Q�Q�Q��L�L�L��4�L����s�/A1�1A5c��t|��}	tjtd|��t	gd���}d|_d|_|�|d��}|�t�	d��|��|�d|��|�
t||����|�|��}|�
||��|�|d��}|�t�	d��|��|�d|��|�t||��d	t!|����|�|��}|�
||��|���dS#|���wxYw)
Nr9r(r�r9rr�sMyListr�T)rKrNrTr<r9r�r�rr�r �assertFalserrr�r�r��reprrV)r.�extcode�opcoder0r'�s1r��s2s        r�produce_global_extz&AbstractPickleTests.produce_global_ext�s����7�#�#��	��!�(�H�g�>�>�>��y�y�y�!�!�A��A�E��A�E����A�q�!�!�B��M�M�(�/�/�'�2�2�B�7�7�7��M�M�)�R�(�(�(����-�f�b�9�9�:�:�:��
�
�2���A�����1�%�%�%����A�q�!�!�B����X�_�_�W�5�5�r�:�:�:����Y��+�+�+����-�f�b�9�9�4��b���J�J�J��
�
�2���A�����1�%�%�%�
�I�I�K�K�K�K�K��A�I�I�K�K�K�K���s�FG�Gc��|�dtj��|�dtj��dS)Nrr�)rYr�EXT1r2s r�test_global_ext1z$AbstractPickleTests.test_global_ext1�s8�����
�F�K�8�8�8����
�F�K�8�8�8�8�8rc���|�dtj��|�dtj��|�dtj��dS)Nr�r�iͫ)rYr�EXT2r2s r�test_global_ext2z$AbstractPickleTests.test_global_ext2��P�����
�F�K�8�8�8����
�F�K�8�8�8����
�F�K�8�8�8�8�8rc���|�dtj��|�dtj��|�dtj��dS)N�r�i�ͫ)rYr�EXT4r2s r�test_global_ext4z$AbstractPickleTests.test_global_ext4�r`rc��d}tt|����}tD]w}|�||��}|�|��}|�||��t
tj|��}|�	||dk���xd}tt|����}tD]�}|�||��}|�|��}|�||��t
tj|��}|dkr|�	|d���z|�
|dk����dS�N�
r��	r�)r�r7rrrr�r"r�APPENDSr�r�)r.r!r'rrr��num_appendss       r�test_list_chunkingz&AbstractPickleTests.test_list_chunking�sA������q���N�N���	5�	5�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�&�v�~�q�9�9�K����[�%�!�)�4�4�4�4�����q���N�N���	2�	2�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�&�v�~�q�9�9�K���z�z�� � ��a�0�0�0�0�����q� 0�1�1�1�1�	2�	2rc��d}t�t|����}tD]�}|�||��}|�|t��|�|��}|�||��ttj|��}|�||dk����d}t�t|����}tD]�}|�||��}|�|��}|�||��ttj|��}|dkr|�|d���z|�
|dk����dSrf)r�r�r7rrr.rrr�r"r�SETITEMSr�r�)r.r!r'rrr��num_setitemss       r�test_dict_chunkingz&AbstractPickleTests.test_dict_chunking�sc�����M�M�%��(�(�#�#���	6�	6�E��
�
�1�e�$�$�A��!�!�!�[�1�1�1��
�
�1�
�
�A�����1�%�%�%�'����;�;�L����\�5�1�9�5�5�5�5����M�M�%��(�(�#�#���	3�	3�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�'����;�;�L���z�z�� � ��q�1�1�1�1������ 1�2�2�2�2�	3�	3rc���d}tt|����}tD]�}|�||��}|�|��}|�||��t
tj|��}|dkr|�	|d���z|�	|d����d}tt|����}tD]�}|�||��}|�|��}|�||��t
tj|��}|dkr|�	|d���z|�
|d����dS)Nrgr�rrrhr�)r5r7rrrr�r"r�ADDITEMSr��assertGreaterEqual)r.r!r'rrr��num_additemss       r�test_set_chunkingz%AbstractPickleTests.test_set_chunking�s^������a���M�M���	2�	2�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�'����;�;�L��q�y�y�� � ��q�1�1�1�1�� � ��q�1�1�1�1�����a���M�M���	9�	9�E��
�
�1�e�$�$�A��
�
�1�
�
�A�����1�%�%�%�'����;�;�L��q�y�y�� � ��q�1�1�1�1��'�'��a�8�8�8�8�	9�	9rc�n�t�td��}d|_tD�]}|�|���5|�||��}|dkr|�d|��n|�d|��|�ttj
|��d|k��|�ttj|����|�
|��}|�||��ddd��n#1swxYwY��dS)N����rr�
I64206�M�r�)rOr�r�rrrr�r�rr�NEWOBJrS�	NEWOBJ_EXrr�rs     r�test_simple_newobjz&AbstractPickleTests.test_simple_newobj�s]��� � ��v�6�6������	*�	*�E����E��*�*�

*�

*��J�J�q�%�(�(���1�9�9��M�M�+�q�1�1�1�1��M�M�,��2�2�2�� � �!1�&�-��!C�!C�!"�e��-�-�-�� � �!1�&�2B�A�!F�!F�G�G�G��J�J�q�M�M���#�#�A�q�)�)�)�

*�

*�

*�

*�

*�

*�

*�

*�

*�

*�

*����

*�

*�

*�

*��	*�	*s�CD(�(D,	�/D,	c���t�td��}d|_tD�]>}|�|���5|�||��}|dkr|�d|��nP|dkr|�d|��n3|dkr|�d	|��n|�d
|��|�ttj
|��d|k��|�ttj|����|�
|��}|�||��ddd��n#1swxYwY��@dS�Nrvrwrxrryr�rzr�s	XFACEs�FACE)�
ComplexNewObjr�r�rrrr�r�rrr{rSr|rr�rs     r�test_complex_newobjz'AbstractPickleTests.test_complex_newobj	s����!�!�-��8�8������	*�	*�E����E��*�*�
*�
*��J�J�q�%�(�(���1�9�9��M�M�+�q�1�1�1�1��Q�Y�Y��M�M�,��2�2�2�2��Q�Y�Y��M�M�":�A�>�>�>�>��M�M�/�1�5�5�5�� � �!1�&�-��!C�!C�!"�e��-�-�-�� � �!1�&�2B�A�!F�!F�G�G�G��J�J�q�M�M���#�#�A�q�)�)�)�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��	*�	*��DE"�"E&	�)E&	c���t�td��}d|_tD�]>}|�|���5|�||��}|dkr|�d|��nP|dkr|�d|��n3|dkr|�d	|��n|�d
|��|�ttj
|����|�ttj|��d|k��|�
|��}|�||��ddd��n#1swxYwY��@dSr)�ComplexNewObjExr�r�rrrr�rSrrr{r�r|rr�rs     r�test_complex_newobj_exz*AbstractPickleTests.test_complex_newobj_ex"	s����#�#�O�V�<�<������	*�	*�E����E��*�*�
*�
*��J�J�q�%�(�(���1�9�9��M�M�+�q�1�1�1�1��Q�Y�Y��M�M�,��2�2�2�2��Q�Y�Y��M�M�":�A�>�>�>�>��M�M�/�1�5�5�5�� � �!1�&�-��!C�!C�D�D�D�� � �!1�&�2B�A�!F�!F�!"�e��-�-�-��J�J�q�M�M���#�#�A�q�)�)�)�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��	*�	*r�c���tgd���}d|_d|_|�|d��}|�|��}|�||��dS)Nr(r�r9r�)�SlotListr�r�rrr�)r.r'rr�s    r�test_newobj_list_slotsz*AbstractPickleTests.test_newobj_list_slots6	s_���Y�Y�Y�����������J�J�q�!�����J�J�q�M�M�����A�q�!�!�!�!�!rc�.�tD]�}t��}|�|jd��|�||��}|�|jd��|�|��}|�|jd����dSrM)r�REX_oner��_reduce_calledrrrs     r�'test_reduce_overrides_default_reduce_exz;AbstractPickleTests.test_reduce_overrides_default_reduce_ex>	s����	2�	2�E��	�	�A����Q�-�q�1�1�1��
�
�1�e�$�$�A����Q�-�q�1�1�1��
�
�1�
�
�A����Q�-�q�1�1�1�1�
	2�	2rc�.�tD]�}t��}|�|jd��|�||��}|�|j|��|�|��}|�|jd����dSr$)r�REX_twor��_protorrrs     r�test_reduce_ex_calledz)AbstractPickleTests.test_reduce_ex_calledG	s����	-�	-�E��	�	�A����Q�X�t�,�,�,��
�
�1�e�$�$�A����Q�X�u�-�-�-��
�
�1�
�
�A����Q�X�t�,�,�,�,�
	-�	-rc�.�tD]�}t��}|�|jd��|�||��}|�|j|��|�|��}|�|jd����dSr$)r�	REX_threer�r�rrrs     r�test_reduce_ex_overrides_reducez3AbstractPickleTests.test_reduce_ex_overrides_reduceP	s����	-�	-�E����A����Q�X�t�,�,�,��
�
�1�e�$�$�A����Q�X�u�-�-�-��
�
�1�
�
�A����Q�X�t�,�,�,�,�
	-�	-rc�.�tD]�}t��}|�|jd��|�||��}|�|j|��|�|��}|�|j|����dSr$)r�REX_fourr�r�rrrs     r�test_reduce_ex_calls_basez-AbstractPickleTests.test_reduce_ex_calls_baseY	s����	.�	.�E��
�
�A����Q�X�t�,�,�,��
�
�1�e�$�$�A����Q�X�u�-�-�-��
�
�1�
�
�A����Q�X�u�-�-�-�-�
	.�	.rc�.�tD]�}t��}|�|jd��|�||��}|�|jd��|�|��}|�|jd����dSrM)r�REX_fiver�r�rrrs     r�test_reduce_calls_basez*AbstractPickleTests.test_reduce_calls_baseb	s����	2�	2�E��
�
�A����Q�-�q�1�1�1��
�
�1�e�$�$�A����Q�-�q�1�1�1��
�
�1�
�
�A����Q�-�q�1�1�1�1�
	2�	2rc�L�t��}td��D]O}tj��5|�t
|j||��ddd��n#1swxYwY�Ptdtjdz��D]}|�||��}�dS)Nr�r)	�
BadGetattrr7r�infinite_recursionr�RuntimeErrorrrr-)r.r'rrs    r�test_bad_getattrz$AbstractPickleTests.test_bad_getattrk	s���
�L�L���1�X�X�	F�	F�E��+�-�-�
F�
F��!�!�,��
�A�u�E�E�E�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F���1�f�5��9�:�:�	%�	%�E��
�
�1�e�$�$�A�A�	%�	%s�#A"�"A&	�)A&	c�8�Gd�dt��}Gd�dt��}tD]k}	|�|��|��n#tj$rYnwxYw	|�|��|���W#tj$rY�hwxYwdS)Nc��eZdZd�ZdS)�7AbstractPickleTests.test_reduce_bad_iterator.<locals>.Cc��tddgdfSrg)r�r2s rrszBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__y	s���R��r�4�/�/rN�r<r=r>rsr%rrrXr�x	�#������
0�
0�
0�
0�
0rrXc��eZdZd�ZdS)�7AbstractPickleTests.test_reduce_bad_iterator.<locals>.Dc��tdddgfSrg)r�r2s rrszBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__}	s���R��t�R�/�/rNr�r%rrr_r�|	r�rr_)r?rrr�
PicklingError)r.rXr_rs    r�test_reduce_bad_iteratorz,AbstractPickleTests.test_reduce_bad_iteratoru	s���	0�	0�	0�	0�	0��	0�	0�	0�	0�	0�	0�	0�	0��	0�	0�	0��	�	�E�
��
�
�1�1�3�3��&�&�&�&���'�
�
�
���
����
��
�
�1�1�3�3��&�&�&�&���'�
�
�
���
����	�	s#�A�A"�!A"�&B�B�Bc��d�td��D��}td�|D����}t|��t|��t|��g}tD]q}|�|���5|�||��}|�|��}|�||��ddd��n#1swxYwY�rdS)Nc3�:K�|]}dt|��zV��dS)�aaaNrxr�s  r�	<genexpr>z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>�	s,����3�3�1���A����3�3�3�3�3�3rrmc3�"K�|]
}|gd�fV��dS))r�r�r�Nr%)r��ks  rr�z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>�	s*����7�7�Q�1�i�i�i�.�7�7�7�7�7�7rrx)r7r�rrrrr�)r.r9�
large_dictr�rr]rDs       r�test_many_puts_and_getsz+AbstractPickleTests.test_many_puts_and_gets�	s��4�3��c�
�
�3�3�3���7�7�$�7�7�7�7�7�
��J����j�!1�!1�4�
�3C�3C�D���	1�	1�E����E��*�*�
1�
1����C��/�/�����F�+�+���#�#�C��0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1��	1�	1s�>AC�C	�C	c�P�tD]�}t��}d|_d|_|�||��}|�|��}t
|j��}t
|j��}t||��D]\}}|�	||�����dS)Nr�r9)
rrXr�r�rr�sortedrZ�zipr�)	r.rr'rr��x_keys�y_keys�x_key�y_keys	         r�test_attribute_name_interningz1AbstractPickleTests.test_attribute_name_interning�	s����		,�		,�E����A��A�E��A�E��
�
�1�e�$�$�A��
�
�1�
�
�A��A�J�'�'�F��A�J�'�'�F� #�F�F� 3� 3�
,�
,���u��
�
�e�U�+�+�+�+�
,�		,�		,rc��|�td��d��}|�|t��|�t	dg��d��}|�|t
��dS)Nr�r�r�)rr7r�r6r5�	DATA_SET2r\s  r�test_pickle_to_2xz%AbstractPickleTests.test_pickle_to_2x�	sj��
���E�!�H�H�a�(�(�������-�-�-����C���H�H�a�(�(�������+�+�+�+�+rc�"�tD]�}dtddztf}|�||��}|�|��}|�t|��t|����|�||����dS)Nrsxyix)rr.r/rrr�)r.rrr]rDs     r�test_large_picklesz&AbstractPickleTests.test_large_pickles�	s����	+�	+�E��s�E�Y�/��5�D��Z�Z��e�,�,�F��Z�Z��'�'�F����S��[�[�#�d�)�)�4�4�4����V�T�*�*�*�*�	+�	+rc	����tD]Ɋ������5��fd�td��D��}tt	t
|����}��t|��|���dkr2|D]/}��ttj|�����0ddd��n#1swxYwY��dS)Nrxc�B��g|]}��d|z�����S�r�)r)r�r!rr.s  ��rr�zDAbstractPickleTests.test_int_pickling_efficiency.<locals>.<listcomp>�	s+���F�F�F�q�4�:�:�a��d�E�2�2�F�F�Fr�Fr�)rrr7r��mapr/r�r�rSrr�LONG)r.�pickles�sizesr�rs`   @r�test_int_pickling_efficiencyz0AbstractPickleTests.test_int_pickling_efficiency�	s/�����	K�	K�E����E��*�*�
K�
K�F�F�F�F�F�E�"�I�I�F�F�F���S��g�.�.�/�/��� � ������6�6�6��A�:�:�$�K�K���(�(�)9�&�+�q�)I�)I�J�J�J�J�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��	K�	Ks�BC�C	�C	c���|�||��}|�t||����|�|��}|�||��dSr$)rr�rrr�)r.r�rVrr�r�s      r�_check_pickling_with_opcodez/AbstractPickleTests._check_pickling_with_opcode�	s_���*�*�S�%�(�(�����(���9�9�:�:�:��J�J�w�'�'�	�����i�(�(�(�(�(rc���tgd���}tD]K}|dkr"|�|tj|���*|�|tj|���LdS)Nr(r)rArr�r�APPENDri�r.r�rs   r�test_appends_on_non_listsz-AbstractPickleTests.test_appends_on_non_lists�	ss���i�i�i� � ���	M�	M�E���z�z��0�0��f�m�U�K�K�K�K��0�0��f�n�e�L�L�L�L�		M�	Mrc���tdddd���}tD]K}|dkr"|�|tj|���*|�|tj|���LdS)Nr�������r(r)r_rr�r�SETITEMrmr�s   r�test_setitems_on_non_dictsz.AbstractPickleTests.test_setitems_on_non_dicts�	sy���B�2�"�-�-�.�.���	N�	N�E���z�z��0�0��f�n�e�L�L�L�L��0�0��f�o�u�M�M�M�M�		N�	Nrr�rbc���dx}}hd�}tj|��D�]\}}}|�|�||��||krd}|�M|�|jd��|j|vr(|�t|��|j��n^|jdks!|j|vr;t|��|jkr#|� |�||z
|j��d}n|�
|jdkr|}|jdkr#|�	||j��|dz|z}��t|��}|�|�
||��dS|� |�||z
|j��dSdS)a
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.

        Note that binary objects that are larger than FRAME_SIZE_TARGET are not
        framed by default and are therefore considered a frame by themselves in
        the following consistency check.
        N>�BINBYTES�	BINBYTES8�
BINUNICODEr��BINUNICODE8�FRAMEr�	)rr�assertLessEqual�assertNotEqualr�r/�FRAME_SIZE_TARGET�
assertLess�FRAME_SIZE_MINrrr�)r.r��	frame_end�frameless_start�frameless_opcodesrra�poss        r�check_frame_opcodesz'AbstractPickleTests.check_frame_opcodes�	s���'+�*�	�O�:�:�:��'�.�w�7�7�	*�	*�L�B��S��$��$�$�S�)�4�4�4��)�#�#� $�I��$��#�#�B�G�W�5�5�5��7�/�/�/��(�(��S���4�3I�J�J�J���G�w�&�&��W� 1�1�1���X�X�� 6�6�6�&�2�����o�(=�(,�(;�=�=�=�*.���$�,���G�1C�1C�&)�O��w�'�!�!��'�'��T�-@�A�A�A��!�G�c�M�	���'�l�l��� ����Y��,�,�,�,�,�
�
(��O�O�C�/�1�4�3F�G�G�G�G�G�)�
(rc�R�ttd����}tdtjdz��D]�}|�|���5|�||��}|�|��}|�||��t|��ttj
|��z}|�||jdz��|�
||jdz��|�|��ddd��n#1swxYwY��dS)Ni��r�rrxr�)r�r7rr-rrrr�r/r"r��
assertGreaterr�r�r�)r.r�rr�r��bytes_per_frames      r�test_framing_many_objectsz-AbstractPickleTests.test_framing_many_objects
se���5��<�<� � ���1�f�5��9�:�:�	2�	2�E����E��*�*�

2�

2��*�*�S�%�0�0�� �J�J�w�/�/�	�� � ��i�0�0�0�#&�w�<�<�#/���g�#F�#F�$G���"�"�?�#'�#9�A�#=�?�?�?��$�$�_�%)�%;�a�%?�A�A�A��(�(��1�1�1�

2�

2�

2�

2�

2�

2�

2�

2�

2�

2�

2����

2�

2�

2�

2��	2�	2s�B=D�D	�"D	c�d�d}d�td��D��}d|zg|�d|z�d|z�}tdtjdz��D�]c}d	D�]\}|�||�
��5|s|�||��}nwt|d��s
	ddd���Qt
j��}|�||���}||_	|�
|��|���}|�|��}	|�
d
�|D��d�|	D����|�
||	��ttj|��}
|�
|
d��|�|��ddd��n#1swxYwY��^��edS)Nic��g|]}|g��Sr%r%r�s  rr�zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>$
s��.�.�.�q��s�.�.�.rrg�x�y�zr�r)FT)r�fast�pickler�r�c�,�g|]}t|����Sr%�r/r�s  rr�zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>8
s��%:�%:�%:��c�!�f�f�%:�%:�%:rc�,�g|]}t|����Sr%r�r�s  rr�zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>9
s��%@�%@�%@��c�!�f�f�%@�%@�%@r)r7rr-rrr�r6rBr�r��dumprDrr�r"r�r�)r.�N�small_itemsr�rr�r��bufr�r��n_framess           r�test_framing_large_objectsz.AbstractPickleTests.test_framing_large_objects"
s2����.�.�E�"�I�I�.�.�.���a�x�9�+�9�t�a�x�9��q��9���1�f�5��9�:�:�	6�	6�E�%�
6�
6���\�\��D�\�9�9�6�6��1�#'�*�*�S�%�"8�"8��� '�t�Y�7�7�%�$�6�6�6�6�6�6�6�!�j�l�l��"&�,�,�s�U�,�"C�"C��'+������S�)�)�)�"%�,�,�.�.�� $�
�
�7� 3� 3�I��$�$�%:�%:�c�%:�%:�%:�%@�%@�i�%@�%@�%@�B�B�B��$�$�S�)�4�4�4�+�F�L�'�B�B�H��$�$�X�q�1�1�1��,�,�W�5�5�5�16�6�6�6�6�6�6�6�6�6�6����6�6�6�6��
6�	6�	6s�*+F!�!C4F!�!F%�(F%c	����	�tjdkrdSdd�}|j�	d}ttfD�]3���	fd�t|��D��}tdtjdz��D]�}|�||��}||��}|�ttj	|��d��|�||�
|����||d���}|�ttj	|��ttj	|����|�||�
|��������5dS)	Nr�c�(�g}d}tj|��D]&\}}}|jdkr|�|���'t	��}d}t|��D]%\}	}|r||	��r�||||�z
}||z}�&|||d�z
}|S)z+Remove frame opcodes from the given pickle.r�r�rN)rrr�r�rt�	enumerate)
r��
keep_frame�frame_starts�frame_opcode_sizerV�_r��	newpickle�last_frame_endr�s
          r�
remove_framesz?AbstractPickleTests.test_optional_frames.<locals>.remove_framesF
s����L� !��"-�"4�W�"=�"=�
-�
-����3��;�'�)�)� �'�'��,�,�,��!���I��N�#�L�1�1�
9�
9���3���*�*�Q�-�-����W�^�C�%7�8�8�	�!$�'8�!8��������1�1�I��r�c�0��i|]}|�|g���z��Sr%r%)r�r��
bytes_type�
frame_sizes  ��r�
<dictcomp>z<AbstractPickleTests.test_optional_frames.<locals>.<dictcomp>^
s*���N�N�N�q�1�j�j�!��o�o�
�2�N�N�Nrrrc��|dzSrr%)r�s rr?z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>g
s
��a�!�e�rr$)rr-r�r�rtr7rr�r"r�rr�)
r.r�
num_framesr�rr��frameless_pickle�some_frames_picklerrs
        @@r�test_optional_framesz(AbstractPickleTests.test_optional_framesB
s������"�Q�&�&��F�	�	�	�	�&�+�
��
�!�)�,�
	F�
	F�J�N�N�N�N�N�E�*�<M�<M�N�N�N�C��q�&�"9�A�"=�>�>�

F�

F���*�*�S�%�0�0��#0�=��#9�#9� �� � ��f�l�<L�!M�!M�q�Q�Q�Q�� � ��d�j�j�1A�&B�&B�C�C�C�%2�]�7�O�O�%L�%L�"�����V�\�;M� N� N� ,�V�\�7� C� C�E�E�E�� � ��d�j�j�1C�&D�&D�E�E�E�E�

F�
	F�
	Frc����Gd�d��}tdtjdz��D�]6}d�ttd����D��}|�d�jdzdzz��|��}��||���|��|���}��	|��}��
||����t|j
��d��~tj����
|���|��t|��dz
�jzdz}��t|j
��|����t|j
��d	|zd
z��d�|j
D��}�fd�|D��}	�fd
�|D��}
d�|D��}|	D]!}��|d	�jz|���"��t|��t|	��t|
��zd
z|����8dS)Nc�$�eZdZdZd�Zd�Zd�ZdS)�YAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.c��g|_dSr$)�chunksr2s rrHzbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__p
s
�� ����rc�:�|j�|��dSr$)rr�)r.�chunks  rrGz_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writer
s����"�"�5�)�)�)�)�)rc�6�d�|j��S)Nr)rrr2s r�concatenate_chunkszlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunkst
s���x�x���,�,�,rN)r<r=r>rIrHrGrr%rr�ChunkAccumulatorrn
sG������D�D�
!�
!�
!�
*�
*�
*�
-�
-�
-�
-�
-rrr�rc�|�g|]9}t|���d��|dzdt|��if��:S)rr�r�)ryr r�s  rr�zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>x
sO��1�1�1���A���
�
�g�.�.��B���c�!�f�f�
�F�1�1�1rg��@�0123456789abcdefr�r�r�c�,�g|]}t|����Sr%r�)r�r�s  rr�zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>�
s��9�9�9�a�3�q�6�6�9�9�9rc�*��g|]}|�jk�
|��Sr%�r��r�rr.s  �rr�zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>�
s0���;�;�;���4�#9�9�9��9�9�9rc�>��g|]}d|cxkr�jk�nn|��S�r�rrs  �rr�zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>�
sG���>�>�>�!��!�<�<�<�<�d�&<�<�<�<�<�<��<�<�<rc��g|]
}|dk�|��Srr%)r�rs  rr�zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>�
s��<�<�<��Q�!�V�V�1�V�V�Vr)r7rr-r�r�r�r�r�rrr�r�r/rr�
gc_collectrrr�r�)
r.rr�objects�writerr��
reconstructedr��chunk_sizes�large_sizes�medium_sizes�small_sizes�
chunk_sizes
`            r�+test_framed_write_sizes_with_delayed_writerz?AbstractPickleTests.test_framed_write_sizes_with_delayed_writerl
s����	-�	-�	-�	-�	-�	-�	-�	-��1�f�5��9�:�:�5	.�5	.�E�1�1� %�c�#�h�h���1�1�1�G�
�N�N�-� �2�b�8�1�<�>�
?�
?�
?�&�%�'�'�F��L�L���'�'�,�,�W�5�5�5�
�/�/�1�1�G� �J�J�w�/�/�M����]�G�4�4�4����s�6�=�1�1�1�5�5�5���� � � ����V�6�6�8�8�'�B�B�B��G���q�(�T�-C�C�a�G�H��#�#�C��
�$6�$6��A�A�A�

� � ��V�]�!3�!3�Q��\�A�5E�F�F�F�9�9�6�=�9�9�9�K�;�;�;�;�k�;�;�;�K�>�>�>�>�{�>�>�>�L�<�<�k�<�<�<�K�*�
-�
-�
����
�A��0F�,F� +�-�-�-�-�

� � ��[�!1�!1�!$�[�!1�!1�C��4E�4E�!E��!I�!,�
.�
.�
.�
.�g5	.�5	.rc	��Gd�d��attjdz��D]�}tjtjjtjjjfD]p}|�||���5|�|�	||����}|�
||��ddd��n#1swxYwY�q��dS)Nc�(�eZdZGd�d��ZdS)�Nestedc�(�eZdZGd�d��ZdS)�Nested.Ac�(�eZdZGd�d��ZdS)�
Nested.A.Bc��eZdZdS)�Nested.A.B.CNrkr%rrrXr2�
s�������rrXN)r<r=r>rXr%rrrBr0�
s<���������������rrBN)r<r=r>rBr%rr�Ar.�
s<���������������rr3N)r<r=r>r3r%rrr,r,�
s<������
�
�
�
�
�
�
�
�
�
rr,r)rr�)r,r7rr-r3rBrXrrrr�)r.rr�r�s    r�test_nested_namesz%AbstractPickleTests.test_nested_names�
s��	�	�	�	�	�	�	�	�
�6�2�Q�6�7�7�	2�	2�E���&�(�*�f�h�j�l�;�
2�
2���\�\��3�\�7�7�2�2� $�
�
�4�:�:�c�5�+A�+A� B� B�I��M�M�#�y�1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2��
2�	2�	2s�7AC�C�
Cc��Gd�d��atjtjt_dt_t
tjdz��D]y}|�	|���5|�
|�t|����}|�|t��ddd��n#1swxYwY�zt`dS)Nc��eZdZdS)�	RecursiveNrkr%rrr7r7�
��������Drr7zRecursive.mod.Recursiverrx)
r7r�modulesr=�modr>r7rr-rrrr�)r.rr�s   r�test_recursive_nested_namesz/AbstractPickleTests.test_recursive_nested_names�
s
��	�	�	�	�	�	�	�	���I�$8�9�	�
�!:�	���6�2�Q�6�7�7�	4�	4�E����E��*�*�
4�
4� �J�J�t�z�z�)�U�'C�'C�D�D�	��
�
�i��3�3�3�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��
�M�M�Ms�4A
C
�
C	�C	c	���Gd�d��atjtjt��jtjjtjjt���jf}tjtftjjtjff}ttj
dz��D�]}|D]�}|�||���5|�|�
||����}|�|��|����ddd��n#1swxYwY��|D]�\}}|��}|�||���5|�|�
||����}|�||��||����ddd��n#1swxYwY����tjdtjdf}ttj
dz��D]X}|D]S}	|�||	���5|�t"|j
|	|��ddd��n#1swxYwY�T�YdS)Nc�Z�eZdZed���Zed���Zd�ZGd�d��ZdS)�
PyMethodsTestc��dS)N�cheeser%r%rrr@zPyMethodsTest.cheese�
s���xrc��dS)N�winer%�r�s rrBzPyMethodsTest.wine�
s	���vrc��dS)N�biscuitsr%r2s rrEzPyMethodsTest.biscuits�
s��!�zrc�D�eZdZdZed���Zed���Zd�ZdS)�PyMethodsTest.NestedzNested classc��dS)N�ketchupr%r%rrrIzPyMethodsTest.Nested.ketchup�
s��$�9rc��dS)N�mapler%rCs rrKzPyMethodsTest.Nested.maple�
s	��#�7rc��dS)N�pier%r2s rrMzPyMethodsTest.Nested.pie�
s�� �5rN)	r<r=r>rI�staticmethodrIr�rKrMr%rrr,rG�
sZ���������%�%���%��#�#���#�!�!�!�!�!rr,N)	r<r=r>rNr@r�rBrEr,r%rrr>r>�
s}������
�
 �
 ��\�
 �
�
�
��[�
�
"�
"�
"�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!rr>r�r�methodr@rB�r�descr)r>r@rBrEr,rIrKrMr7rr-rrrr�rZrr�)
r.�
py_methods�py_unbound_methodsrrPr�r�r��descriptorsrRs
          r�test_py_methodsz#AbstractPickleTests.test_py_methods�
sZ��	!�	!�	!�	!�	!�	!�	!�	!�2
� ����O�O�$�� �(�� �&�� � �"�"�&�

�
��
#�]�3�
�
!�
%�}�';�<�
���6�2�Q�6�7�7�		B�		B�E�$�
<�
<���\�\��f�\�=�=�<�<� $�
�
�4�:�:�f�e�+D�+D� E� E�I��$�$�V�V�X�X�y�y�{�{�;�;�;�<�<�<�<�<�<�<�<�<�<�<����<�<�<�<�� 2�
B�
B�����c�e�e���\�\��f�\�=�=�B�B� $�
�
�4�:�:�f�e�+D�+D� E� E�I��$�$�V�V�C�[�[�)�)�C�.�.�A�A�A�B�B�B�B�B�B�B�B�B�B�B����B�B�B�B��
B�
�"�8�,��"�6�*�
���6�2�Q�6�7�7�	K�	K�E�$�
K�
K���\�\��U�\�;�;�K�K��%�%�i���U�E�J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K��
K�	K�	Ks8�AD;�;D?�D?�/AG
�
G�G�8#I'�'I+�.I+c�b�Gd�dt��adjdftjdfgd�jdft
jgd�ffdd	hjd
ftjdd	hd	fftj	dftjdftgd
���jd
ftjtgd
���d	fft�
d��jdftj
jt�
d��dfff}ttjdz��D]~}|D]y\}}|�||���5|�|�||����}|�||�||���ddd��n#1swxYwY�z�tjdtjdf}ttjdz��D]X}|D]S}|�||���5|�t.|j||��ddd��n#1swxYwY�T�YdS)Nc�*�eZdZGd�de��ZdS)�Subclassc��eZdZdS)�Subclass.NestedNrkr%rrr,r[s�������rr,N)r<r=r>ryr,r%rrrYrYs>������
�
�
�
�
��
�
�
�
�
rrY�abcd)r�)r\r�r(r%rr�r�))r~r)rr�)sabcr�)rr�r��sweet)r0r0rO�	maketransr�rQ)rDrY�indexry�__len__r��__contains__r5r�r�rtr^�countr,r7rr-rrrr�rZrr�)r.�	c_methodsrrPr/r�rUrRs        r�test_c_methodsz"AbstractPickleTests.test_c_methodss��	�	�	�	�	�u�	�	�	��\�6�"�
�Y�
�&�
�Y�Y�
��#�
�\�I�I�I�<�(���V�
 �$�'�
�
��A���{�+�
�]�0�1�
�
 �"2�3�
�g�g�g�
�
�
$�d�+�
�^�h�w�w�w�/�/��3�4�
�_�_�W�
%�
%�
+�V�4�
�_�
"�X�_�_�W�%=�%=�s�$C�D�+
�	�.�6�2�Q�6�7�7�	F�	F�E� )�
F�
F�����\�\��f�\�=�=�F�F� $�
�
�4�:�:�f�e�+D�+D� E� E�I��$�$�V�V�T�]�I�I�t�4D�E�E�E�F�F�F�F�F�F�F�F�F�F�F����F�F�F�F��
F�
��{�+��M�*�%�
���6�2�Q�6�7�7�	K�	K�E�$�
K�
K���\�\��U�\�;�;�K�K��%�%�i���U�E�J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K��
K�	K�	Ks%�7AF	�	F
�F
�3#H"�"H&�)H&c
���tdd��ddfttd��ddftjddft
jd	d	ft��d
dftj	��dd
ftj
��ddftj��ddfg}|D]�\}}}td��D]�}|�t|��|���5|�||��}|�d|�d|�����|��|�t|�|����t|����ddd��n#1swxYwY�ƌ�dS)Nrr��__builtin__�xrange�123�	itertools�imapr�r��
exceptionsr<r��IterableUserDict�UserListr��defaultdictr�)r�rr�r�)r7r�r�r�r�r�r�r<r�r�rmrnrr�rr�r r�r)r.�tests�valr:r�rr�s       r�test_compat_picklez&AbstractPickleTests.test_compat_pickle-s���
�1�a�[�[�-��2�
��e�_�_�k�6�2�
�
�}�h�7�
�[�)�Y�/�
�[�[�,��4�
�
!�
#�
#�Z�1C�D�
�
!�
#�
#�Z��<�
�
$�
&�
&�
�}�E�	
��$�	H�	H�N�C��d��q���
H�
H���\�\�t�C�y�y��\�>�>�H�H�"�j�j��e�4�4�G��M�M�M����T�T�#:�"B�"B�"D�"D�g�N�N�N��M�M�$�t�z�z�'�':�':�";�";�T�#�Y�Y�G�G�G�H�H�H�H�H�H�H�H�H�H�H����H�H�H�H��
H�	H�	Hs�BE(�(E,�/E,c�L�d�}tdtjdz��D]h}|�ttjf��5t
j|�||����ddd��n#1swxYwY�i|`	tdtjdz��D]h}|�ttjf��5t
j|�||����ddd��n#1swxYwY�i|j
|_tdtjdz��D]h}|�ttjf��5t
j|�||����ddd��n#1swxYwY�idS)Nc��dSr$r%r%rrrz6AbstractPickleTests.test_local_lookup_error.<locals>.fB����Drrr)r7rr-r�AttributeErrorr�rr%rr=r>r<�r.rrs   r�test_local_lookup_errorz+AbstractPickleTests.test_local_lookup_error?sB��	�	�	��1�f�5��9�:�:�	6�	6�E��"�"�N�F�4H�#I�J�J�
6�
6����
�
�1�e� 4� 4�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��
�L��1�f�5��9�:�:�	6�	6�E��"�"�N�F�4H�#I�J�J�
6�
6����
�
�1�e� 4� 4�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6���^��
��1�f�5��9�:�:�	6�	6�E��"�"�N�F�4H�#I�J�J�
6�
6����
�
�1�e� 4� 4�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��	6�	6s6�	)A>�>B	�B	�)D�D
	�
D
	�#)F�F	�F	c#�^K�d}t|��V�t|��V�t�}t|��}t�|d���}dtjfD]E}t|dd|���V�t|ddd	|�
��V�t|ddd|�
��V��DdSdS)N�abcdefgh�little)�	byteorderrrB)r�)r�r�r�)r�r�r&)r�r�r�r�r%)r�r�r�r�r��
from_bytesr�r�)r.�
bytestringr�rpr�s     r�buffer_like_objectsz'AbstractPickleTests.buffer_like_objectsXs���� �
��J�'�'�'�'�'��
�+�+�+�+�+��"���$�$�E��N�N�:��N�B�B�E��[�4�5�

4�

4��&�u�S��-2�4�4�4�4�4�4�'�u�S��/5�U�D�D�D�D�D�D�'�u�S�-3�V�-2�4�4�4�4�4�4�4�#�"�

4�

4rc�v�|���D�]�}tdtjdz��D�]�}|�||��}|jr|dkr|�d|��|�ttj	|��d��|dkr�|�ttj
|��|jrdnd��|�ttj|��|jrdnd��d�}|�|||���}|�||��|�
|��}|�||��|�t!|��t!|����|�||��������dS)Nrrr�ryc��dS�NTr%�r�s r�buffer_callbackzAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback|s��#�tr�r�)r~r7rr-rr�r�r�r"�NEXT_BUFFER�SHORT_BINBYTESr�r�rr�r�r�)r.r�rrr��data2r�s       r�test_in_band_buffersz(AbstractPickleTests.test_in_band_buffersls����+�+�-�-�	+�	+�C��q�&�"9�A�"=�>�>�
+�
+���z�z�#�u�-�-���#�5���
�
��M�M�+�t�4�4�4�� � ��f�.@�$�!G�!G��K�K�K��A�:�:��$�$�\�&�2G��%N�%N�*-�,�%=�Q�Q�A�?�?�?��$�$�\�&�2C�T�%J�%J�*-�,�%=�Q�Q�A�?�?�?�$�$�$� �J�J�s�E�7F�'�H�H�E��$�$�U�D�1�1�1��j�j��&�&��� � ��c�*�*�*��
�
�d�3�i�i��c���3�3�3�� � ��c�*�*�*�*�/
+�	+�	+rc�.��|���D�]�}tdd��D]Q}|�t��5|�||gj���ddd��n#1swxYwY�Rtdtjdz��D�]y}g��fd�}|�|||���}|�d|��|�	ttj|��d��|�	ttj|��d��|�	ttj
|��d��|�	ttj|��|jrdnd��|jr)|�	t#�d��d��|�tj��5|�|��ddd��n#1swxYwY|�|����}|jr|�||��nF|�t-|��t-|����|�	||��|�|t/������}|jr|�||����3|�t-|��t-|����|�	||����{���dS)Nrr�r�rc�R����|�����Sr$)r�r�)r��bufferss �rr?z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>�s���W�^�^�B�F�F�H�H�-E�-E�rry�r�)r~r7rr+rr�rr-r�r�r"r�r�r��READONLY_BUFFERr�r�r�rcrr�r�r��iter)r.r�rr�rr�r�s      @r�test_oob_buffersz$AbstractPickleTests.test_oob_buffers�sq����+�+�-�-�&	/�&	/�C��q�!���
:�
:���&�&�z�2�2�:�:��J�J�s�E�/1�y��:�:�:�:�:�:�:�:�:�:�:�:�:�:����:�:�:�:���q�&�"9�A�"=�>�>� 
/� 
/����"E�"E�"E�"E���z�z�#�u�2A�"�C�C��� � ��d�3�3�3�� � ��f�.C�T�!J�!J�A�N�N�N�� � ��f�.?��!F�!F��J�J�J�� � ��f�.@�$�!G�!G��K�K�K�� � ��f�.D�d�!K�!K�&)�l�!9����;�;�;��#�E��$�$�U�7�1�:�%6�%6��D�D�D��&�&�v�'=�>�>�%�%��J�J�t�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%��j�j��w�j�7�7���,�/��M�M�#�s�+�+�+�+��M�M�$�s�)�)�T�#�Y�Y�7�7�7��$�$�S�#�.�.�.��j�j��t�G�}�}�j�=�=���,�/��M�M�#�s�+�+�+�+��M�M�$�s�)�)�T�#�Y�Y�7�7�7��$�$�S�#�.�.�.�.�A 
/�
&	/�&	/s$�A/�/A3�6A3� H�H�	Hc��td��}tdtjdz��D]�}g}|j}|�|||���}t
t|��}|�||���}|�	t|��t|����|�||����dS�N�foobarr�rr�r�)r�r7rr-r�rr�rtrr�r�r�)r.r�rr�r�rr�s       r�%test_oob_buffers_writable_to_readonlyz9AbstractPickleTests.test_oob_buffers_writable_to_readonly�s����I�&�&���1�f�5��9�:�:�	'�	'�E��G�%�n�O��:�:�c�5�/�:�J�J�D��)�W�-�-�G��*�*�T�7�*�3�3�C��M�M�$�s�)�)�T�#�Y�Y�/�/�/����S�#�&�&�&�&�	'�	'rc���tjd��}tdd��D]O}|�tj��5|�||��ddd��n#1swxYwY�PdS)Nr�rr�)rr�r7r�PickleErrorr)r.r�rs   r�test_picklebuffer_errorz+AbstractPickleTests.test_picklebuffer_error�s���
�
 ��
+�
+���1�a�[�[�	&�	&�E��"�"�6�#5�6�6�
&�
&��
�
�2�u�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��	&�	&s�A)�)A-	�0A-	c���d�}tjd��}|�t��5|�|d|���ddd��dS#1swxYwYdS)Nc��ddzdSr,r%r�s rr�zGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callback�s��
�a�C�C�C�Crr�r�r�)rr�r�ZeroDivisionErrorr)r.r�r�s   r�test_buffer_callback_errorz.AbstractPickleTests.test_buffer_callback_error�s���	�	�	�
�
 ��
+�
+��
�
�
�0�
1�
1�	?�	?��J�J�r�1�o�J�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�A�A�Ac���tjd��}tdtjdz��D]�}|�||gj���}|�t��5|�|t�����ddd��n#1swxYwY|�tj
��5|�|g���ddd��n#1swxYwY��dSr�)rr�r7r-rr�rr�rr?rc)r.r�rrs    r�test_buffers_errorz&AbstractPickleTests.test_buffers_error�s^��
�
 ��
+�
+���1�f�5��9�:�:�	-�	-�E��:�:�b�%���:�C�C�D��"�"�9�-�-�
3�
3��
�
�4����
�2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��"�"�6�#9�:�:�
-�
-��
�
�4��
�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��
	-�	-s$�+$B�B	�"B	�C)�)C-	�0C-	c��tdtjdz��D]1}|�d|d���}|�|d���}�2dS)Nr�rr�r�)r7rr-rr)r.r�data_pickledrs    r�+test_inband_accept_default_buffers_argumentz?AbstractPickleTests.test_inband_accept_default_buffers_argument�s[���1�f�5��9�:�:�	:�	:�E��:�:�a���:�E�E�L��:�:�l�D�:�9�9�D�D�	:�	:rNzTest needs Numpyc�@�����fd���fd�����fd�}tjd��}||��||ddd���tjd���d��}||��||j��||ddd���dS)Nc���tj�||����|jj|jj��dSr$)�np�testing�assert_equalr��ctypesr�r'r�r.s  �r�
check_no_copyz=AbstractPickleTests.test_buffers_numpy.<locals>.check_no_copy�s?����J�#�#�A�q�)�)�)����Q�X�]�A�H�M�:�:�:�:�:rc���tj�||����|jj|jj��dSr$)r�r�r�r�r�rr�s  �r�
check_copyz:AbstractPickleTests.test_buffers_numpy.<locals>.check_copy�s?����J�#�#�A�q�)�)�)������
�q�x�}�=�=�=�=�=rc���tdtjdz��D]9}��||��}��|��}�||���:tdtjdz��D]>}d�}��|||���}��|��}�||���?tdtjdz��D]k}g}|j}��|||���}��||���}|jjs|jjr
�||���_�||���ldS)Nrrr�c��dSr�r%)r�s rr?zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>�s��D�rr�r�)	r7rr-rrr�r�r�r�)	�arrrrr�r�r�r�r�r.s	      ���r�check_arrayz;AbstractPickleTests.test_buffers_numpy.<locals>.check_array�sh����q�&�"9�A�"=�>�>�
%�
%���z�z�#�u�-�-���j�j��&�&���
�3��$�$�$�$��q�&�"9�A�"=�>�>�
%�
%��"0�.���z�z�#�u�o�z�N�N���j�j��&�&���
�3��$�$�$�$��q�&�"9�A�"=�>�>�
)�
)����")�.���z�z�#�u�o�z�N�N���j�j��w�j�7�7���9�)�)�S�Y�-C�)�!�M�#�s�+�+�+�+��J�s�C�(�(�(�(�
)�
)rr�r��r')r��arange�reshape�T)r.r�r�r�r�s`  @@r�test_buffers_numpyz&AbstractPickleTests.test_buffers_numpy�s������	;�	;�	;�	;�	;�	>�	>�	>�	>�	>�	)�	)�	)�	)�	)�	)�	)�.�i��l�l����C������C���!��H�����i��m�m�#�#�F�+�+����C������C�E������C���!��H�����rc	����	�ddlm�	G���	fd�d��atD]�}t	d��D]�}d�d�t	d��D����D]}||_�|_�d�	|��|��}|�|���_#t$r/}d	}|�
|t|����Yd}~��d}~wwxYw��dS)
Nr)�getrandbitsc�,��eZdZ�fd�Zd�Z��fd�ZdS)�Badc����Sr$r%)r.r\�ENABLEDs  �rr]z
Bad.__eq__s����rc��dSr>r%r2s r�__hash__zBad.__hash__s���rrc�\���d��dkr����tdfS)Nr�rr%)�clearr�)r.�
collectionr�s ��rrszBad.__reduce__s2����;�q�>�>�Q�&�&��$�$�&�&�&��R�y� rN)r<r=r>r]r�rs)r�r�r�s���rr�r�s[�������
�
�
�
�
�
�
�
�
!�
!�
!�
!�
!�
!�
!�
!rr�rFc�D�i|]}t��t����Sr%)r�)r�r�s  rrzEAbstractPickleTests.test_evil_class_mutating_dict.<locals>.<dictcomp>s"��>�>�>�q�c�e�e�S�U�U�>�>�>rT�changed size during iteration)�randomr�r�rr7r3r�rrr�r�ry)
r.rr�r3rr0r�r�r�r�s
       @@@r�test_evil_class_mutating_dictz1AbstractPickleTests.test_evil_class_mutating_dict
sD�����&�&�&�&�&�&�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!��
	4�
	4�E��2�Y�Y�
4�
4����>�>�E�"�I�I�>�>�>�
�%�0�0�C�!�C�G�%/�C�N�N���4��:�:�j�%�8�8�D��J�J�t�$�$�$�$��#�4�4�4�>�H��M�M�(�C��F�F�3�3�3�3�3�3�3�3�����4����
4�
	4�
	4s�&+B�
C�%C�Cc�n���t�d��s%��t����d����Gd�d��a��fd�}tD]�|t��g��|t��t��g��|t��h��|t��t��h��|t��di��|t��dt��di��|t��t��d�����dS)	Nr�z has no associated pickler typec��eZdZdS)�ClearerNrkr%rrr�r�1r8rr�c����G�fd�d�j��}|tj�����}	|����dS#t$r0}d}��|t
|����Yd}~dSd}~wwxYw)Nc���eZdZ�fd�ZdS)�]AbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPicklerc�Z��t|t��r����dSr$)r�r�r�)r.r�r�s  �r�
persistent_idzkAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickler.persistent_id6s,���!�#�w�/�/�+�"�(�(�*�*�*��4rN)r<r=r>r�)r�s�r�EvilPicklerr�5s.������� � � � � � � rr�r�)r�r6rBr�r�r�ry)r�r�r�r0r�rr.s`    ��r�checkzHAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check4s�����
 �
 �
 �
 �
 �
 �
 �d�l�
 �
 �
 �
"�k�"�*�,�,��6�6�G�
0����Z�(�(�(�(�(���
0�
0�
0�:���
�
�h��A���/�/�/�/�/�/�/�/�/�����
0���s�A
�
B�%B�Brr�r$)r��skipTestr�r�r)r.r�rs` @r�%test_evil_pickler_mutating_collectionz9AbstractPickleTests.test_evil_pickler_mutating_collection+s[�����t�Y�'�'�	P��-�-�4��:�:� N� N� N�O�O�O�	�	�	�	�	�	�	�	�	0�	0�	0�	0�	0�	0��	0�	0�E��E�7�9�9�+�����E�7�9�9�g�i�i�(�)�)�)��E�7�9�9�+�����E�7�9�9�g�i�i�(�)�)�)��E�7�9�9�a�.�!�!�!��E�7�9�9�a����A�.�/�/�/��E�g�i�i�G�I�I�.�.�/�/�/�/�	0�	0r)�r<r=r>�	optimizedr�r
rr�rr!r*r(r3r5r:rBrErGrJrNrTrVrYr`rcrergrjrlrnrprsrurwryr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�rrrrrr"r1r6r:r<rDrJrMrQrYr\r_rdrkrortr}r�r�r�r�r�r�r�r�r	r�r�r�r�r�r�r�r�r�r�r�r�r�r�skip_if_pgo_taskr�r�rr)r4r;rVrdrqrwr~r�r�r�r�r�r�r��unittest�skipIfr�r�r�r�r%rrrr�sv�������I�%�/�I�
�
�
�+�9�N�&�&�&�(/�/�/�	,�	,�	,�08�Q�
#�
#�
#�
#�(�(�(�9�9�9�E�E�E�:B�q�&�&�&�&�42�2�2�C�C�C�O�O�O�08�Q�
#�
#�
#�
#�(�(�(�9�9�9�G�G�G�:B�q�&�&�&�&�42�2�2�C�C�C�Q�Q�Q�4<��6�6�6�6�,�,�,�=�=�=�K�K�K�>F�ST�9�9�9�9�86�6�6�G�G�G�U�U�U�/�/�/�,	%�	%�	%�
+�
+�
+�.�.�.�27�7�7�8�8�8�@�@�@�6�6�6�<�<�<�9�9�9�:�:�:�B�B�B�8�8�8�>�>�>�&�&�&�)�)�)�,	+�	+�	+�'�'�'�
6�
6�
6�L�L�L�&&�&�&����%�%�%�.0�0�0��_�X�w��0�0�:�:�1�0�:�/�/�/�.�.�.�7�7�7�,�,�,�*�*�*�&"�"�"�-�-�-�2�2�2�4�4�4�,�,�,�4�4�4�J�J�J�&L�L�L�L�L�L�%?�%?�%?�N?�?�?�2&�&�&�&�&�&�A�A�A�A�A�A�&	(�	(�	(�
 �
 �
 � ���89�9�9�9�9�9�
9�9�9�
2�2�2�,3�3�3�.9�9�9�2*�*�*� *�*�*�(*�*�*�("�"�"�2�2�2�-�-�-�-�-�-�.�.�.�2�2�2��%�%��Z�%����.1�1�1�,�,�,�,�,�,�+�+�+�
K�
K�
K�)�)�)�M�M�M�N�N�N��N�!��-H�-H�-H�^
��
2�
2���
2�6�6�6�@(F�(F�(F�T
��?.�?.���?.�B2�2�2�
�
�
�8K�8K�8K�t*K�*K�*K�XH�H�H�$6�6�6�24�4�4�(+�+�+�>(/�(/�(/�T'�'�'�&�&�&�?�?�?�	-�	-�	-�:�:�:�
�X�_�R�4�Z�!3�4�4�*�*�5�4�*�X4�4�4�<0�0�0�0�0rrc���eZdZeedd���d���Zeedd���d���Zeedd���d���Zeedd���d	���Z	eedd���d
���Z
dS)�BigmemPickleTestsg������@F)�size�memuse�dry_runc�J�dd|zz}	tD]�}|dkr�	|�|���5|�ttf��5|�||���ddd��n#1swxYwYddd��n#1swxYwY��	d}dS#d}wxYw)Nrr�r�rxr�)rrrr+rdr)r.r�rrs    r�test_huge_long_32bz$BigmemPickleTests.test_huge_long_32bOs:���Q��X���	�"�
9�
9���1�9�9���\�\��\�.�.�9�9��*�*�J�
�+F�G�G�9�9��
�
�4�%�
�8�8�8�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9��
9��D�D�D��4�D�K�K�K�KsR�&B�"B
�A6�*B
�6A:�:B
�=A:�>B
�B�
B	�B�B	�B�B"g@c
���d|dzz}	tD]�}|dkr�	|�|���5	|�||���}tjtjdt|����z}|�|��}|�	|||t|��z
|���d}n#d}wxYw	ddd��n#1swxYwY��	d}dS#d}wxYw)N�abcdr�r�rxr�rM)
rrrrr�rOrPr/r_r��r.r�rrr��header�
data_starts       r�test_huge_bytes_32bz%BigmemPickleTests.test_huge_bytes_32b`sQ���$�!�)�$��	�"�

'�

'���1�9�9���\�\��\�.�.�
'�
'�	'�"&�*�*�T�E�*�"B�"B��"(�/�"(�+�d�C��I�I�">�">�#?��%,�]�]�4�%8�%8�
��(�(�"�#�J�s�6�{�{�$:�:�$E�F�H�H�H�#'����$�������
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��

'��D�D�D��4�D�K�K�K�KsF�&C#�C�B	B>�;C�>C�C�C#�C	�C#�C	�C#�#C'c
��d|dzz}	tD�]0}|dkr�
|�|���5|dkr]|�ttf��5|�||���ddd��n#1swxYwY	ddd����	|�||���}tjtj	dt|����z}|�|��}|�|||t|��z
|���d}n#d}wxYw	ddd��n#1swxYwY��2	d}dS#d}wxYw)Nsacbdr�r�rxr��<Q)
rrrr+rdrrr�rOrPr/r_r�r�s       r�test_huge_bytes_64bz%BigmemPickleTests.test_huge_bytes_64bus���$�!�)�$��	�"�
'�
'���1�9�9���\�\��\�.�.�'�'���z�z�"�.�.�
�M�/J�K�K�=�=� �J�J�t�e�J�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=� �
'�'�'�'�'�'�'�	'�"&�*�*�T�E�*�"B�"B��"(�"2�"(�+�d�C��I�I�">�">�#?��%,�]�]�4�%8�%8�
��(�(�"�#�J�s�6�{�{�$:�:�$E�F�H�H�H�#'����$�������!'�'�'�'�'�'�'�'�'�'�'����'�'�'�'��
'�*�D�D�D��4�D�K�K�K�Ksq�'E�(D6�A=�1D6�=B�D6�B�D6�	E�B	D"�D6�"D&�&D6�*E�6D:	�:E�=D:	�>E�Er�c
��d|dzz}	tD�])}|dkr�
|�|���5	|�||���}tjtjdt|����z}|�d��}|�	|||t|��z
|���|�	|�
d��td��z|�d��z
t|����d}n#d}wxYw	ddd��n#1swxYwY��+	d}dS#d}wxYw)Nr\r�rrxr�rMr�)rrrrr�rOrPr/r_r��rindexr�s       r�test_huge_str_32bz#BigmemPickleTests.test_huge_str_32b�s�������#��	�"�
'�
'���A�:�:���\�\��\�.�.�'�'�'�"&�*�*�T�E�*�"B�"B��"(�"3�"(�+�d�C��I�I�">�">�#?��%,�]�]�7�%;�%;�
��(�(�"�#�J�s�6�{�{�$:�:�$E�F�H�H�H��(�(�'�.�.��*A�*A�C��L�L�*P�*1�-�-��*@�*@�+A�CF�t�9�9�N�N�N�#'����$�������'�'�'�'�'�'�'�'�'�'�'����'�'�'�'��
'�"�D�D�D��4�D�K�K�K�KsF�'E�D/�C%D�D/�D�D/�#E�/D3	�3E�6D3	�7E�Ec
�V�d|dzz}	tD�]�}|dkr�
|�|���5|dkr]|�ttf��5|�||���ddd��n#1swxYwY	ddd����	|�||���}tjtj	dt|����z}|�d��}|�|||t|��z
|���|�|�
d��td��z|�d��z
t|����d}n#d}wxYw	ddd��n#1swxYwY���	d}dS#d}wxYw)Nr\r�rrxr�r�r�)rrrr+rdrrr�rOrPr/r_r�r�r�s       r�test_huge_str_64bz#BigmemPickleTests.test_huge_str_64b�sY������#��	�"�
'�
'���A�:�:���\�\��\�.�.�'�'��q�y�y�!�.�.�
�M�/J�K�K�=�=� �J�J�t�e�J�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=� �	'�'�'�'�'�'�'�
'�"&�*�*�T�E�*�"B�"B��"(�"4�"(�+�d�C��I�I�">�">�#?��%,�]�]�7�%;�%;�
��(�(�"�#�J�s�6�{�{�$:�:�$E�F�H�H�H��(�(�'�.�.��*A�*A�C��L�L�*P�*1�-�-��*@�*@�+A�CF�t�9�9�N�N�N�#'����$�������!'�'�'�'�'�'�'�'�'�'�'����'�'�'�'��
'�*�D�D�D��4�D�K�K�K�Ksq�'F$�(F�A=�1F�=B�F�B�F�	F$�C%E>�;F�>F�F�F$�F	�F$�F	�F$�$F(N)r<r=r>rr
r�r�rr�r�r�r%rrr�r�Ks��������Z�S��e�4�4�4�
�
�5�4�
� �Z�S��e�4�4�4���5�4��(�Z�S��e�4�4�4���5�4��:�Z�S��E�2�2�2���3�2��4�Z�S��E�2�2�2���3�2���rr�c��eZdZdZdZd�ZdS)r�z4No __reduce_ex__ here, but inheriting it from objectrc�"�d|_tdfS)Nrr%)r�r�r2s rrszREX_one.__reduce__�s�������{�rN�r<r=r>rIr�rsr%rrr�r��s.������>�>��N�����rr�c��eZdZdZdZd�ZdS)r�z1No __reduce__ here, but inheriting it from objectNc�"�||_tdfSrg�r�r��r.rs  rr�zREX_two.__reduce_ex__���������{�r�r<r=r>rIr�r�r%rrr�r��s.������;�;�
�F�����rr�c��eZdZdZd�Zd�ZdS)r�Nc�"�||_tdfSrgr�r�s  rr�zREX_three.__reduce_ex__�r�rc� �td���)Nz#This __reduce__ shouldn't be called)rr2s rrszREX_three.__reduce__�s���>�?�?�?r)r<r=r>r�r�rsr%rrr�r��s<������
�F����@�@�@�@�@rr�c��eZdZdZdZd�ZdS)r�z(Calling base class method should succeedNc�F�||_t�||��Sr$)r�r?r�r�s  rr�zREX_four.__reduce_ex__�s������#�#�D�%�0�0�0rr�r%rrr�r��s.������2�2�
�F�1�1�1�1�1rr�c��eZdZdZdZd�ZdS)r�z-This one used to fail with infinite recursionrc�D�d|_t�|��SrP)r�r?rsr2s rrszREX_five.__reduce__�s������ � ��&�&�&rNr�r%rrr�r��s.������7�7��N�'�'�'�'�'rr�c�,�eZdZdZdd�Zd�Zd�Zd�ZdS)rAz]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    Nc��|�|ng|_dSr$r>)r.r�s  rrHzREX_six.__init__����#�/�U�U�R��
�
�
rc�^�t|��t|��uo|j|jkSr$)r�r�r[s  rr]zREX_six.__eq__��'���D�z�z�T�%�[�[�(�F�T�Z�5�;�-F�Frc�:�|j�|��dSr$)r�r�)r.�items  rr�zREX_six.append�s���
���$�����rc�N�t|��ddt|j��dfSrg)r�r�r�r2s rrszREX_six.__reduce__�s#���D�z�z�2�t�T�$�*�%5�%5�t�;�;rr$)r<r=r>rIrHr]r�rsr%rrrArA�sb��������8�8�8�8�G�G�G� � � �<�<�<�<�<rrAc�,�eZdZdZdd�Zd�Zd�Zd�ZdS)r_z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    Nc��|�|ni|_dSr$r\)r.r]s  rrHzREX_seven.__init__
r�rc�^�t|��t|��uo|j|jkSr$)r�r]r[s  rr]zREX_seven.__eq__
r�rc��||j|<dSr$r\)r.r0rps   r�__setitem__zREX_seven.__setitem__
s����
�3���rc�r�t|��dddt|j�����fSrg)r�r�r]r�r2s rrszREX_seven.__reduce__
s/���D�z�z�2�t�T�4��
�0@�0@�0B�0B�+C�+C�C�Crr$)r<r=r>rIrHr]rrsr%rrr_r_�sg��������8�8�8�8�G�G�G� � � �D�D�D�D�Drr_c�,�eZdZdZdd�Zd�Zd�Zd�ZdS)r�zUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    Nc��||_dSr$�r��r.r�s  rrHzREX_state.__init__
rqrc�^�t|��t|��uo|j|jkSr$�r�r�r[s  rr]zREX_state.__eq__
r�rc��||_dSr$rrs  r�__setstate__zREX_state.__setstate__
rqrc�0�t|��d|jfSrgr
r2s rrszREX_state.__reduce__
s���D�z�z�2�t�z�)�)rr$)r<r=r>rIrHr]rrsr%rrr�r�

sb������������G�G�G����*�*�*�*�*rr�c��eZdZdZdS)rFrN�r<r=r>rAr%rrrFrF
s������
�F�F�FrrFc��eZdZdZdS)�MyFloatg�?Nrr%rrrr
s������
�F�F�Frrc��eZdZdZdS)�	MyComplexy�?Nrr%rrrr 
s������
�F�F�Frrc��eZdZdZdS)�MyStrr9Nrr%rrrr#
s������
�F�F�Frrc��eZdZdZdS)�	MyUnicodeu	hello ሴNrr%rrrr&
s������
�F�F�Frrc��eZdZdZdS)r�r(Nrr%rrr�r�)
s������
�F�F�Frr�c��eZdZgd�ZdS)r9r(Nrr%rrr9r9,
s������
�Y�Y�F�F�Frr9c��eZdZddd�ZdS)rXrr�r}Nrr%rrrXrX/
s�������1�
�
�F�F�FrrXc��eZdZddhZdS)r�r~rNrr%rrr�r�2
s�������3�Z�F�F�Frr�c�(�eZdZeddh��ZdS)r�r~rN)r<r=r>r�rAr%rrr�r�5
s!������
�Y��S�z�
"�
"�F�F�Frr�c��eZdZd�ZdS)�MyIntWithNewc��t�r$)�AssertionError)r�rps  rr�zMyIntWithNew.__new__>
s���rN)r<r=r>r�r%rrrr=
s#����������rrc��eZdZejZdS)rLN)r<r=r>r�r�r%rrrLrLA
s�������k�G�G�GrrLc��eZdZdgZdS)r�r�N)r<r=r>r�r%rrr�r�E
s��������I�I�Irr�c��eZdZd�Zd�ZdS)rOc� �td���)Nz3SimpleNewObj.__init__() didn't expect to get called)r�r�s   rrHzSimpleNewObj.__init__I
s���M�N�N�Nrc�b�t|��t|��ko|j|jkSr$)r�rZr[s  rr]zSimpleNewObj.__eq__L
s'���4�y�y�C��J�J�&�J�4�=�E�N�+J�JrN)r<r=r>rHr]r%rrrOrOH
s:������O�O�O�K�K�K�K�KrrOc��eZdZd�ZdS)r�c��d|zdfS)N�%Xr�r%r2s r�__getnewargs__zComplexNewObj.__getnewargs__P
s���t��R� � rN)r<r=r>r)r%rrr�r�O
s#������!�!�!�!�!rr�c��eZdZd�ZdS)r�c��d|zfddifS)Nr(�baser�r%r2s r�__getnewargs_ex__z!ComplexNewObjEx.__getnewargs_ex__T
s���t��~���|�+�+rN)r<r=r>r-r%rrr�r�S
s#������,�,�,�,�,rr�c��eZdZd�ZdS)r�c��|jdSr$)r�)r.r0s  r�__getattr__zBadGetattr.__getattr__X
s
������rN)r<r=r>r0r%rrr�r�W
s#����������rr�c�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�AbstractPickleModuleTestsc��ttd��}	|���|�t|jd|��t
jt��dS#t
jt��wxYw�Nr��{�rr�closerr+r�r�unlink�r.rs  r�test_dump_closed_filez/AbstractPickleModuleTests.test_dump_closed_file^
�m��������	%�
�G�G�I�I�I����j�$�)�S�!�<�<�<���V�$�$�$�$�$��I��V�$�$�$�$�����6A(�(Bc��ttd��}	|���|�t|jd|��t
jt��dS#t
jt��wxYwr4r6r9s  r�test_load_closed_filez/AbstractPickleModuleTests.test_load_closed_filef
r;r<c���tj��}didg}|�||��|�d��|�|��}|�||��dS)Nr5�|r)r6rBr�r8�loadr�)r.�streamrr�s    r�test_load_from_and_dump_to_filez9AbstractPickleModuleTests.test_load_from_and_dump_to_filen
sh��������R��~���	�	�$��������A�����I�I�f�%�%�	�����D�)�)�)�)�)rc�F�|�tjd��dSr�)r�rr-r2s r�test_highest_protocolz/AbstractPickleModuleTests.test_highest_protocolv
s!������0�!�4�4�4�4�4rc�>�tj��}|�d|d��|�d|d���|�dd��|�dd���|�|d��|�|d���dS)Nr5r�)�filer�r�)r6rBr�r�Picklerr9s  r�test_callapiz&AbstractPickleModuleTests.test_callapiz
s����J�L�L���	�	�#�q�"�����	�	�#�A��	�+�+�+��
�
�3������
�
�3��
�$�$�$����Q��������Q���$�$�$�$�$rc�L�ttd��}	tD]%}|�t|jd||���&	|���tjt��dS#|���tjt��wxYw)N�wr5)	rrrrr�r�r7rr8rvs   r�test_dump_text_filez-AbstractPickleModuleTests.test_dump_text_file�
s���������	%�"�
G�
G���!�!�)�T�Y��Q��F�F�F�F�
G�
�G�G�I�I�I���V�$�$�$�$�$��
�G�G�I�I�I���V�$�$�$�$���s�-A4�4/B#c��tjd��}|�ttjtjf|j|��dS)NsX''.)	r6rBrr�rOr�rrcrA)r.rs  r�test_incomplete_inputz/AbstractPickleModuleTests.test_incomplete_input�
s>���J�w�������8�V�\�6�3I�J�D�I�WX�Y�Y�Y�Y�Yrc��Gd�d|j��}Gd�d|j��}|�tj|��jd��|�tj|��j��dS)Nc��eZdZd�ZdS)�;AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklerc��dSr$r%r2s rrHzDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__�
����rNrcr%rr�
BadPicklerrQ�
�������$�$�$�$�$rrTc��eZdZd�ZdS)�=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklerc��dSr$r%r2s rrHzFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__�
rSrNrcr%rr�BadUnpicklerrW�
rUrrYr)rH�	Unpicklerrrr�r�rcrA)r.rTrYs   r�
test_bad_initz'AbstractPickleModuleTests.test_bad_init�
s���	%�	%�	%�	%�	%���	%�	%�	%�	%�	%�	%�	%�	%�4�>�	%�	%�	%�	
���&�.�
�
���0A�1�E�E�E����&�0�,�,�.�.�2E�F�F�F�F�Frc��td��}tdd��D]G}|�t��5|||gj���ddd��n#1swxYwY�Htdt
jdz��D]�}g}|j}||||���}|�d|��|�t|d��d��|�t
j
��5||��ddd��n#1swxYwY|||���}|�||����dS)Nsfoorr�)r�r�rr�)r�r7rr+r�rr-r�r�r�rcr�)	r.rrr�rr�r�rr�s	         r�check_dumps_loads_oob_buffersz7AbstractPickleModuleTests.check_dumps_loads_oob_buffers�
s����F�#�#���1�a�[�[�	1�	1�E��"�"�:�.�.�
1�
1���c�E�&(�i�1�1�1�1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1���1�f�5��9�:�:�	$�	$�E��G�%�n�O��5��u�)8�:�:�:�D����V�T�*�*�*����U�7�1�:�.�.��7�7�7��"�"�6�#9�:�:�
�
���d����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��%��g�.�.�.�C��M�M�#�s�#�#�#�#�	$�	$s#�A�A 	�#A 	�<D�D	�D	c�F�|�|j|j��dSr$)r]rrr2s r�test_dumps_loads_oob_buffersz6AbstractPickleModuleTests.test_dumps_loads_oob_buffers�
s"���*�*�4�:�t�z�B�B�B�B�Brc�H���fd�}�fd�}��||��dS)Nc�p��tj��}�j||fi|��|���Sr$)r6rBr�rD)r�r�rr.s   �rrzCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumps�
s8����
���A��D�I�c�1�'�'��'�'�'��:�:�<�<�rc�H��tj|��}�j|fi|��Sr$)r6rBrA)rr�rr.s   �rrzCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads�
s,����
�4� � �A��4�9�Q�)�)�&�)�)�)r)r])r.rrs`  r�test_dump_load_oob_buffersz4AbstractPickleModuleTests.test_dump_load_oob_buffers�
sS���	 �	 �	 �	 �	 �
	*�	*�	*�	*�	*�	
�*�*�5�%�8�8�8�8�8rN)r<r=r>r:r>rCrErIrLrNr[r]r_rcr%rrr2r2\
s�������%�%�%�%�%�%�*�*�*�5�5�5�%�%�%�%�%�%�Z�Z�Z�
G�
G�
G�$�$�$�0C�C�C�9�9�9�9�9rr2c� �eZdZd�Zd�Zd�ZdS)�AbstractPersistentPicklerTestsc��t|t��r(|dzdkr|xjdz
c_t|��S|dkr|xjdz
c_dSdS)Nr�rr�test_false_valuerW)r�r��id_country�false_count)r.r?s  rr�z,AbstractPersistentPicklerTests.persistent_id�
sf���f�c�"�"�	�v��z�Q����M�M�Q��M�M��v�;�;��
�)�
)�
)�����!����2��4rc�l�|s|xjdz
c_dS|xjdz
c_t|��}|S)Nrrg)�load_false_count�
load_countr�)r.�oidr?s   r�persistent_loadz.AbstractPersistentPicklerTests.persistent_load�
sD���	��!�!�Q�&�!�!�%�%��O�O�q� �O�O���X�X�F��Mrc	���ttd����dgz}tD]�}d|_d|_d|_d|_|�|�|�	||����|��|�|jd��|�|jd��|�|jd��|�|jd����dS)Nrgrgrr�r)
r�r7rrhrirkrlr�rr)r.�Lrs   r�test_persistencez/AbstractPersistentPicklerTests.test_persistence�
s�����r���O�O�1�2�2���		7�		7�E��D�M� �D��$%�D�!��D�O����T�Z�Z��
�
�1�e�(<�(<�=�=�q�A�A�A����T�]�A�.�.�.����T�-�q�1�1�1����T�_�a�0�0�0����T�2�A�6�6�6�6�		7�		7rN)r<r=r>r�rnrqr%rrrere�
sA������������7�7�7�7�7rrec�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�&AbstractIdentityPersistentPicklerTestsc��|Sr$r%)r.r�s  rr�z4AbstractIdentityPersistentPicklerTests.persistent_id�
����
rc��|Sr$r%)r.�pids  rrnz6AbstractIdentityPersistentPicklerTests.persistent_load�
rurc���|�|�||����}|�|t|����|�||��dSr$)rrr.r�r�)r.r�rr�s    r�_check_return_correct_typezAAbstractIdentityPersistentPicklerTests._check_return_correct_type�
sY���J�J�t�z�z�#�u�5�5�6�6�	����i��c���3�3�3�����C�(�(�(�(�(rc��tD]D}|dkr|�dd���ddddtfD]}|�||����EdS)Nrr�sabc
zabc
r�g*\��(��)rryry)r.rr�s   r�test_return_correct_typez?AbstractIdentityPersistentPicklerTests.test_return_correct_type�
s|���	@�	@�E���z�z��/�/��q�9�9�9�9�$�g�r�:�s�C�@�@�C��3�3�C��?�?�?�?�@�	@�	@rc���d}|�tj|j|d��tj|�d��zdz}|�tj|j|��dS)Nu∅rr�r*)rrr�r�PERSIDr rcr)r.�
non_ascii_strr�s   r�test_protocol0_is_ascii_onlyzCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_onlysh��'�
����&�.��
�M�1�M�M�M��-�-�"6�"6�w�"?�"?�?�&�H�����&�0�$�*�g�F�F�F�F�FrN)r<r=r>r�rnryr{rr%rrrsrs�
sg������������)�)�)�
@�@�@�G�G�G�G�Grrsc�X�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	dd�d	�Z
d
�Zd�Zd�Z
d
�ZdS)�#AbstractPicklerUnpicklerObjectTestsNc��dSr$r%r2s rrz)AbstractPicklerUnpicklerObjectTests.setUprSrc��gd�}tD�]9}tj��}|�||��}|�|��|���}|�d��|���|�|��|���}|���|�d��|���|�|��|���}|�	||��|�
||����;dS)N��abcdefgr��,r)rr6rB�
pickler_classr�rDr8�truncate�
clear_memor�r�)r.rrrr��
first_pickled�second_pickled�
third_pickleds        r�test_clear_pickler_memoz;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memos"��*�)�)���	;�	;�E��
���A��(�(��E�2�2�G��L�L������J�J�L�L�M�
�F�F�1�I�I�I�
�J�J�L�L�L��L�L������Z�Z�\�\�N�
��� � � �
�F�F�1�I�I�I�
�J�J�L�L�L��L�L������J�J�L�L�M����
�~�>�>�>����]�M�:�:�:�:�/	;�	;rc��gd�}tj��}|�|��}|�|��|���}tj��}|�|��}|j|_|�|��|���}|�||��dS�Nr�)r6rBr�r�rD�memor�)r.rrr�r��primed�primed_pickleds       r�test_priming_pickler_memoz=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memo5s���)�)�)���J�L�L���$�$�Q�'�'�����T�����
�
���
��J�L�L���#�#�A�&�&���l������D�������������M�>�:�:�:�:�:rc�&�gd�}tj��}|�|��}|�|��|���}tj��}|�|��}|j|_|�|��|���}|�tj|����}|���}|�||��|�tj|����}|j|_|���}	|j�	��|�|	|��|�
|	|u��dSr�)r6rBr�r�rDr��unpickler_classrAr�r�r�)
r.rrr�r�r�r��	unpickler�unpickled_data1�unpickled_data2s
          r�test_priming_unpickler_memoz?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memoGsL��)�)�)���J�L�L���$�$�Q�'�'�����T�����
�
���
��J�L�L���#�#�A�&�&���l������D�����������(�(���M�)B�)B�C�C�	�#�.�.�*�*������$�/�/�/��%�%�b�j��&@�&@�A�A���n��� �+�+�-�-�������������$�/�/�/�����?�:�;�;�;�;�;rc�D�gd�}tj��}|�|��}|�|��|���}gd�}tj��}|�|��}|�|��|���}tj��}|�|��|�d��|�|��}|�|�	��|��|�d��|�
��|�|��|�d��|�|�	��|��dS)Nr�)r�r�r�r)r6rBr�r�rDrGr8r�r�rAr�)r.�data1rr��pickled1r��pickled2r�s        r�test_reusing_unpickler_objectszBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectsesT��*�*�*���J�L�L���$�$�Q�'�'�����U�����:�:�<�<��#�#�#���J�L�L���$�$�Q�'�'�����U�����:�:�<�<���J�L�L��	�������	���q�	�	�	��(�(��+�+�	�������)�)�5�1�1�1�	���q�	�	�	�	�
�
����	�������	���q�	�	�	�������)�)�5�1�1�1�1�1rT�r3c
���tD�]m}|�|���5d�td��D��dtgz}|��}|�||���}|�|��|���}d}|||z��}|�|��}	t|��D]z}
|r|���}|�	|	�
��|��|r8|�	|���|t|��z���{|�t|	j
��ddd��n#1swxYwY��odS)Nrxc�0�g|]}|t|��f��Sr%rxr�s  rr�zSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings.<locals>.<listcomp>�s"��:�:�:��!�S��V�V��:�:�:ri�sabcder�r�)
rrr7r/r�r�rDr�r;r�rArr�)r.�ioclassr3rr�rr�r�r�r�r�r�s            r�_check_multiple_unpicklingsz?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings~s����	<�	<�E����E��*�*�
<�
<�:�:�e�D�k�k�:�:�:�h��_�L���G�I�I���,�,�Q��,�?�?�����U�#�#�#��*�*�,�,�����G�G�a�K�(�(�� �0�0��3�3�	��q���G�G�A��'��f�f�h�h���$�$�Y�^�^�%5�%5�u�=�=�=��G��(�(������3��W���3E�F�F�F���!�!�(�I�N�;�;�;�!
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<��	<�	<s�D=E*�*E.	�1E.	c�D�|�tj��dSr$)r�r6rBr2s r�"test_multiple_unpicklings_seekablezFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekable�s���(�(���4�4�4�4�4rc�>�|�td���dS�NFr�)r�r*r2s r�$test_multiple_unpicklings_unseekablezHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekable�s!���(�(���(�F�F�F�F�Frc�>�|�td���dSr�)r�r@r2s r�!test_multiple_unpicklings_minimalzEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimal�s#��	
�(�(��U�(�C�C�C�C�Crc���ttd����}tD]�}tdd��D]�}tjtj��|���}|�||���}|�|��|�d��|�	|��}|�
|���|������dS)Nrgr�)�buffer_sizer�r)r�r7rr6�BufferedRandomrBr�r�r8r�r�rA)r.rr�buf_sizerr�r�s       r�"test_unpickling_buffering_readlinezFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline�s����E�"�I�I�����	9�	9�E�!�!�R�L�L�
9�
9���%�b�j�l�l��I�I�I���,�,�Q��,�?�?�����T�"�"�"����q�	�	�	� �0�0��3�3�	�� � ����!1�!1�4�8�8�8�8�

9�	9�	9r)r<r=r>r�r�rr�r�r�r�r�r�r�r�r�r%rrr�r�s��������M��O�$�$�$�;�;�;�@;�;�;�$<�<�<�<2�2�2�2@D�<�<�<�<�<�(5�5�5�G�G�G�D�D�D�
9�9�9�9�9rr��reduce_Ac��eZdZd�ZdS)r�c� �ttffSr$)ryr�r2s rrszAAA.__reduce__�s���X�K��rNr�r%rrr�r��s#������ � � � � rr�c��eZdZd�Zd�ZdS)�BBBc��d|_dS)Nzsome attribute�r~r2s rrHzBBB.__init__�s��"����rc��d|_dS)N�BBB.__setstate__r�rs  rrzBBB.__setstate__�s
��#����rN)r<r=r>rHrr%rrr�r��s2������"�"�"�
$�$�$�$�$rr�c��d|_dS)atCustom state setter for BBB objects

    Such callable may be created by other persons than the ones who created the
    BBB class. If passed as the state_setter item of a custom reducer, this
    allows for custom state setting behavior of BBB objects. One can think of
    it as the analogous of list_setitems or dict_setitems but for foreign
    classes/functions.
    �custom state_setterNr�)r�r�s  r�setstate_bbbr��s��
"�C�E�E�Erc��eZdZdZd�ZdS)�AbstractCustomPicklerClassz<Pickler implementing a reducing hook using reducer_override.c��t|dd��}|dkr	tdfS|dkr	tdfS|dkrdS|dkrtd	���tS)
Nr<r)r��MyClass)�some str�gF�h�The reducer just failed)r�r�ryr+r�)r.r��obj_names   r�reducer_overridez+AbstractCustomPicklerClass.reducer_override�sl���3�
�D�1�1���s�?�?���:���y� � ��
�%�%�
��_�_��5�
��_�_��6�7�7�7��rN)r<r=r>rIr�r%rrr�r��s)������F�F�����rr�c�4�eZdZd�Zejd���ZdS)�AbstractHookTestsc�|�d�}d�}d�}Gd�d��}tdtjdz��D�]�}|�|���5t	j��}|�||��}|�||tj	g��tj
|�����\}}	}
|�|d	��|�|	d
��|�
|
tj	��|�tj��5|�|��ddd��n#1swxYwY|�t"d��5|�|��ddd��n#1swxYwYddd��n#1swxYwY���dS)Nc��dSr$r%r%rrrz.AbstractHookTests.test_pickler_hook.<locals>.f�rtrc��dSr$r%r%rrr�z.AbstractHookTests.test_pickler_hook.<locals>.g�rtrc��dSr$r%r%rrr�z.AbstractHookTests.test_pickler_hook.<locals>.h�rtrc��eZdZdS)�4AbstractHookTests.test_pickler_hook.<locals>.MyClassNrkr%rrr�r��r8rr�rrrxr�r�r�)r7rr-rr6rBr�r��math�logrrDr�r�rr��assertRaisesRegexr+)r.rr�r�r�r�bior��new_f�some_str�math_logs           r�test_pickler_hookz#AbstractHookTests.test_pickler_hook�s���
	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	��1�f�5��9�:�:�	�	�E����E��*�*�
�
��j�l�l���&�&�s�E�2�2������7�D�H�-�.�.�.�,2�L������,H�,H�)��x��� � ���*�*�*�� � ��:�6�6�6�
�
�
�h���1�1�1��&�&�v�';�<�<����F�F�1�I�I�I��������������������+�+�"�$=�?�?����F�F�1�I�I�I�������������������%
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s[�
C!F/�.E�F/�E�F/�E�F/�6F�F/�F�F/�F� F/�/F3	�6F3	c���tdtjdz��D]�}|�|���5d�}t	j|��}t
j��}|�||��}|�	|��tj
|�����}~~|�|����ddd��n#1swxYwY��dS)Nrrrxc��dSr$r%r%rrrzEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.fs���Dr)
r7rr-rrG�refr6rBr�r�rrDrT)r.rr�wrr�r�r�s       r�(test_reducer_override_no_reference_cyclez:AbstractHookTests.test_reducer_override_no_reference_cycles���1�f�5��9�:�:�	(�	(�E����E��*�*�
(�
(�����[��^�^���j�l�l���&�&�s�E�2�2�����q�	�	�	���S�\�\�^�^�4�4�����!�!�"�"�$�$�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��	(�	(s�BC�C!	�$C!	N)r<r=r>r�r�cpython_onlyr�r%rrr�r��sC������&�&�&�P
��(�(���(�(�(rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�AbstractDispatchTableTestsc��tj��}|�|d��}|�t��5|jddd��n#1swxYwY|�t|d����dS)Nr�dispatch_table)r6rBr�rrur�rSr�)r.rr�s   r�test_default_dispatch_tablez6AbstractDispatchTableTests.test_default_dispatch_table&s����J�L�L�����q�!�$�$��
�
�
�~�
.�
.�	�	�
���	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������$4�5�5�6�6�6�6�6s�A�A�Ac����������G�fd�d�j���d���fd�	}��|���dS)Nc���eZdZ�ZdS)�GAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r<r=r>r�)�dts�r�	MyPicklerr�2s��������N�N�Nrr�c����tj��}�||��}��|j���|�|��|���Sr$)r6rBr�r�r�rD)r�r�rr�r�r�r.s    ���rrzCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumps5sU����
���A��	�!�X�&�&�A����Q�-�r�2�2�2�
�F�F�3�K�K�K��:�:�<�<�rr$)�get_dispatch_tabler��_test_dispatch_table)r.rr�r�s` @@r�test_class_dispatch_tablez4AbstractDispatchTableTests.test_class_dispatch_table.s������
�
$�
$�
&�
&��	 �	 �	 �	 �	 �	 �	 ��*�	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	
�!�!�%��,�,�,�,�,rc�l��������d��fd�	}��|���dS)Nc����tj��}��||��}�|_��|j���|�|��|���Sr$)r6rBr�r�r�r�rD)r�r�rr�r�r.s    ��rrzFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumpsBsa����
���A��"�"�1�h�/�/�A�!�A�����Q�-�r�2�2�2�
�F�F�3�K�K�K��:�:�<�<�rr$)r�r�)r.rr�s` @r�test_instance_dispatch_tablez7AbstractDispatchTableTests.test_instance_dispatch_table>sV����
�
$�
$�
&�
&��	 �	 �	 �	 �	 �	 �	 �	
�!�!�%��,�,�,�,�,rc������fd�}d�}d}|�||��|��|�||��|��d��fd�}||t<|�||�����|�||��|��t��}t��}|�||��t��|�||��t��|�||��t��|�||��t��||t<|�||��t��|�||�����|�||��t��|�||��t��d��fd�}	|	|t<|t=|�||�����|�||��t��|�||��t��|�||��t��|�||��jd��d	�}
|
|t<|�||��jd
��dS)Nc�@��tj�|d����S�Nr)rr)r�rs �r�custom_load_dumpzIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpMs����<���c�1�
�
�.�.�.rc�P�tjtj|d����Sr�)rrrr�s r�default_load_dumpzJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpPs���<���S�!� 4� 4�5�5�5ry�?@�reduce_1c���t�ffSr$rx)r��REDUCE_1s �rr�zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1[�������#�#r�reduce_2c���t�ffSr$rx)r��REDUCE_2s �rr�zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2rr�rr�c�0�td|jddtfSrg)r�rZr�r�s r�
reduce_bbbzCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbb�s����C�L�$��l�B�Brr�)r��complexr�r�r�r.r~)
r.rr�r�r�r�r�r~rr�r�r�r�s
 `         @@rr�z/AbstractDispatchTableTests._test_dispatch_tableLsD�����	/�	/�	/�	/�	/�	6�	6�	6�

�����)�)�!�,�,�a�0�0�0����*�*�1�-�-�q�1�1�1���	$�	$�	$�	$�	$�"*��w�����)�)�!�,�,�h�7�7�7����*�*�1�-�-�q�1�1�1�
�E�E���E�E�����)�)�!�,�,�h�7�7�7����.�.�q�1�1�3�7�7�7����*�*�1�-�-�x�8�8�8����/�/��2�2�C�8�8�8�'��s�����)�)�!�,�,�h�7�7�7����)�)�!�,�,�h�7�7�7����*�*�1�-�-�x�8�8�8����/�/��2�2�C�8�8�8���	$�	$�	$�	$�	$�&��s���3�����)�)�!�,�,�h�7�7�7����.�.�q�1�1�3�7�7�7����*�*�1�-�-�x�8�8�8����/�/��2�2�C�8�8�8�	
���*�*�1�-�-�/�1C�D�D�D�	C�	C�	C�)��s��	
���)�)�!�,�,�.�0E�F�F�F�F�FrN)r<r=r>r�r�r�r�r%rrr�r�$sZ������7�7�7�-�-�-� -�-�-�@G�@G�@G�@G�@Grr�r$zDATA{0} = (rz	    {0!r}r�z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")�rr�rNr�r6r�r�r�rrrrOrr	r
r�rG�textwrapr�http.cookiesrr�r
�testr�test.supportrrrr	r
rr�test.support.import_helperr
�test.support.os_helperrr�test.support.warnings_helperrr�numpyr��
skipUnlessr�rr7r-rrr"r(rBr*r?r@rKrXr_rerjrnrtr=r�rvr{r�r�r�r�r�r�r�rtr�r�rr'rr(r�	DATA2_DISr�	DATA3_DISr�	DATA4_DISr4r6r8r��ArithmeticErrorr rur�BufferError�BytesWarning�DeprecationWarningr��EnvironmentErrorr<�FloatingPointError�
FutureWarning�
GeneratorExit�IOError�
ImportWarning�IndentationError�
IndexError�KeyError�KeyboardInterrupt�LookupError�MemoryError�	NameErrorr,rrd�PendingDeprecationWarning�ReferenceErrorr��RuntimeWarning�
StopIteration�SyntaxError�
SyntaxWarning�SystemError�
SystemExit�TabErrorr��UnboundLocalError�UnicodeError�UnicodeWarning�UserWarningr+�Warningr�r:r;r=r�r�rr�r�r�r�r�r�rAr_r�rF�floatrr�rryrrrDr�r�r9r�rXr5r�r�r�r?rrLr�rOr�r�r�r2rersr�r�r�r�r�r�r�r�r<r%r'r�rr�rr�r/�jrr%rr�<module>r+sG��������������
�
�
�
�	�	�	�	�����	�	�	�	�����
�
�
�
�����
�
�
�
�
�
�
�
�
�
�
�
�����������������������%�%�%�%�%�%�������������K�K�K�����������"�"�"�"�"�"�����������������.�-�-�-�-�-�)�)�)�)�)�)�)�)�)�)�)�)�F�F�F�F�F�F�������
�	&�	&�	(�	(�������������������������������	
�B�B�B�����#�x�"�3�;��#6�#M�O�O��
�E�&�)�A�-�.�.�	����
�
�
�
�
�
�&�&�&�&�&�2�:�&�&�&�	%�	%�	%�	%�	%��	%�	%�	%�,:�:�:�:�:�:�:�:�*/�/�/�/�/�/�/�/�
�
�
�
�
��
�
�
����������
	�	�	�	�	�	�	�	� � � � � � � � �����
��
����
��
����
��
���������C���������a����	�	�	�	�	��	�	�	�	�	�	�	�	�F�i�	�	�	�	�8�8�8�8�8��8�8�8���� � � � � �E� � � �8 � � � � �	� � � �8��G(�G(�G(�G(�G(�G(�G(�G(�\��(P
�	�f%�� >
�	�B	��7
�	�t	
��7
�	�t.��@
�	�FQ��T��Q��
L�	�.#��.#��.#��.#��	.#�
�.#��
.#��.#�
�.#��.#��.#��.#��.#��.#��.#��.#� �!.#�"�#.#�$�%.#�&
�'.#�(�).#�*�+.#�,�-.#�.�/.#�0�1.#�2�3.#�4�5.#�6�7.#�8�9.#�:�;.#�<�=.#�@�A.#�B�C.#�D�E.#�F�G.#�H�I.#�J
�K.#�L�M.#�N�O.#�P�Q.#�R�S.#�T�U.#�V�W.#�X�Y.#�Z�[.#�.#��`<��,�
�

�
�
�*b	!�b	!�b	!�b	!�b	!�b	!�b	!�b	!�La0�a0�a0�a0�a0�a0�a0�a0�H5|�|�|�|�|�|�|�|�B�����f���������f����@�@�@�@�@��@�@�@�1�1�1�1�1�v�1�1�1�'�'�'�'�'�v�'�'�'�<�<�<�<�<�f�<�<�<�D�D�D�D�D��D�D�D�*�*�*�*�*��*�*�*� �����C���������e������������������C������������������e���������T���������T���������C����#�#�#�#�#�)�#�#�#��G�
�
�I�
�f�f�e�[�
:�	�
�����3���������L���������v����K�K�K�K�K�3�K�K�K�!�!�!�!�!�L�!�!�!�,�,�,�,�,�l�,�,�,���������
h9�h9�h9�h9�h9�h9�h9�h9�V%7�%7�%7�%7�%7�%7�%7�%7�PG�G�G�G�G�G�G�G�:\9�\9�\9�\9�\9�\9�\9�\9�B�� � � � � �&� � � �$�$�$�$�$�&�$�$�$�	"�	"�	"���������0?(�?(�?(�?(�?(�?(�?(�?(�DhG�hG�hG�hG�hG�hG�hG�hG�V�z�����������
�
�A�
�U�6�*�1�,�
-�
-�����F�L��A����
��m�"�"�1�%�%�&�&�&���q�#�#�a�&�&�"�%�%�	)�	)�A���a��!�B�$��i� � �A��E�+�$�$�Q�'�'�(�(�(�(�
��c�
�
�
�
�����
��(�/�/��2�2�3�3�3�
��&�-�-�a�0�0�1�1�1���A����
��h����
������!���sH�A�A!� A!�
C�)B:�.C�:B>�>C�B>�C�C�C