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

~h�eY?�
�
�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlmZ	ddlZddlmZddlmZddlmZmZmZmZmZm Z ddl!m"Z"ddl#m$Z$dd	lm%Z%dd
l&m'Z'ddlm(Z(	e'�5ddl)Z*ddd�ejVejXdkd
�Z-e.ej^dz�Z0d�Z1d�Z2d�Z3Gd�dejh�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���Z�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(r�dd�l	m�Z�e��Z�e.ej^dz�D]�Z�e�j|e�e��Z�e�d��j�e���e.de�e��d��D](Z�eHe�e�e�d�z�Z�e�d��j�e�*e�d��e��e�d��j�e���e�d��j�e���e�e��e�d��e����yy#e$rdZY���wxYw#1swY��PxYw#e$rdZ*Y��]wxYw)��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|jd�k(s�&yy)N�latin-1TF��pickletools�genops�code�decode)r�pickle�op�dummys    �8/opt/alt/python312/lib64/python3.12/test/pickletester.py�opcode_in_pickler;s@��'�.�.�v�6����E�5�
�7�7�d�k�k�)�,�,����c��d}tj|�D]*\}}}|j|jd�k(s�&|dz
}�,|S)Nrrrr)rr�nrrs     r�count_opcoder"BsM��	�A�'�.�.�v�6����E�5�
�7�7�d�k�k�)�,�,�
��F�A��
�Hrc��|S�N���xs r�identityr(Js���Hrc�$�eZdZd�Zd�Zd�Zd�Zy)�UnseekableIOc��t�r$)�NotImplementedError��self�argss  r�peekzUnseekableIO.peekOs��!�!rc��y)NFr%�r.s r�seekablezUnseekableIO.seekableRs��rc�"�tj�r$��io�UnsupportedOperationr-s  r�seekzUnseekableIO.seekU����%�%�%rc�"�tj�r$r5r2s r�tellzUnseekableIO.tellXr9rN)�__name__�
__module__�__qualname__r0r3r8r;r%rrr*r*Ns��"��&�&rr*c��eZdZdZd�Zy)�	MinimalIOz=
    A file-like object that doesn't support readinto().
    c�
�tj|�|_|jj|_|jj|_|jj
|_|jj|_yr$)r6�BytesIO�_bio�getvalue�read�readline�writer-s  r�__init__zMinimalIO.__init__`sR���J�J��%��	��	�	�*�*��
��I�I�N�N��	��	�	�*�*��
��Y�Y�_�_��
rN)r<r=r>�__doc__rHr%rrr@r@\s���%rr@c��eZdZd�Zd�Zy)�ExtensionSaverc���||_|tjvrJtj||_tj|jd|jd|�yd|_y�Nrr)r�copyreg�_inverted_registry�pair�remove_extension)r.rs  rrHzExtensionSaver.__init__usR����	��7�-�-�-��2�2�4�8�D�I��$�$�T�Y�Y�q�\�4�9�9�Q�<��F��D�Irc���|j}tjj|�}|�tj|d|d|�|j
}|�tj|d|d|�yyrM)rrNrO�getrQrP�
add_extension)r.r�curpairrPs    r�restorezExtensionSaver.restore~so���y�y���,�,�0�0��6�����$�$�W�Q�Z����T�B��y�y�����!�!�$�q�'�4��7�D�9�rN)r<r=r>rHrVr%rrrKrKrs���:rrKc��eZdZd�Zy)�Cc�4�|j|jk(Sr$)�__dict__�r.�others  r�__eq__zC.__eq__�s���}�}����.�.rN)r<r=r>r]r%rrrXrX�s��/rrXc��eZdZd�Zy)�Dc��yr$r%)r.�args  rrHz
D.__init__����rN�r<r=r>rHr%rrr_r_�s��
rr_c��eZdZd�Zy)�Ec��y�Nr%r%r2s r�__getinitargs__zE.__getinitargs__�s��rN)r<r=r>rhr%rrrere�s��rrec��eZdZy)�ObjectN�r<r=r>r%rrrjrj����rrjc��eZdZd�Zd�Zy)�Kc��||_yr$)�value)r.rps  rrHz
K.__init__��	����
rc�(�t|jffSr$)rnrpr2s r�
__reduce__zK.__reduce__�s���4�:�:�-��rN)r<r=r>rHrsr%rrrnrn�s��� rrn�__main__c��eZdZd�Zy)�myintc�$�t|�|_yr$��str)r.r's  rrHzmyint.__init__�s
���q�6��rNrcr%rrrvrv�s��rrvc��eZdZd�Zd�Zy)�initargc� �||_||_yr$��a�b)r.r~rs   rrHzinitarg.__init__�s�������rc�2�|j|jfSr$r}r2s rrhzinitarg.__getinitargs__�s���v�v�t�v�v�~�rN)r<r=r>rHrhr%rrr{r{�s���rr{c��eZdZy)�	metaclassNrkr%rrr�r��rlrr�c��eZdZy)�
use_metaclassNrkr%rrr�r��rlrr�)r�c��eZdZd�Zd�Zy)�pickling_metaclassc�f�t|�t|�k(xr|j|jk(Sr$)�type�reduce_argsr[s  rr]zpickling_metaclass.__eq__�s0���T�
�d�5�k�)�6�� � �E�$5�$5�5�	7rc�&�t|jfSr$)�create_dynamic_classr�r2s rrszpickling_metaclass.__reduce__�s��$�d�&6�&6�7�7rN)r<r=r>r]rsr%rrr�r��s��7�8rr�c�B�t||t��}||f|_|Sr$)r��dictr�)�name�bases�results   rr�r��s#��
��e�T�V�
4�F����F���Mrc�<�eZdZdZdZdZdZd�Zd�ZeZ	e
d��Zy)�
ZeroCopyBytesTc��|dk\r,t|�jtj|�fdfSt|�jt	|�ffS�N��r��_reconstructr�PickleBuffer�bytes�r.�protocols  r�
__reduce_ex__zZeroCopyBytes.__reduce_ex__��I���q�=���:�*�*�V�-@�-@��-F�,H�$�N�N���:�*�*�U�4�[�N�:�:rc�`�dj|jjt|��S�Nz{}({!r})��format�	__class__r<r�r2s r�__repr__zZeroCopyBytes.__repr__��#��� � ����!8�!8�%��+�F�Frc��t|�5}|j}t|�|ur|cddd�S||�cddd�S#1swYyxYwr$��
memoryview�objr���clsr��ms   rr�zZeroCopyBytes._reconstruct��K��
��_�	 ���%�%�C��C�y�C���		 �	 ��3�x�
	 �	 �	 ���A�A�AN�r<r=r>�readonly�c_contiguous�f_contiguous�zero_copy_reconstructr�r��__str__�classmethodr�r%rrr�r��s;���H��L��L� ��;�G��G�� �� rr�c�<�eZdZdZdZdZdZd�Zd�ZeZ	e
d��Zy)�ZeroCopyBytearrayFTc��|dk\r,t|�jtj|�fdfSt|�jt	|�ffSr�r�r�s  rr�zZeroCopyBytearray.__reduce_ex__�r�rc�`�dj|jjt|��Sr�r�r2s rr�zZeroCopyBytearray.__repr__�r�rc��t|�5}|j}t|�|ur|cddd�S||�cddd�S#1swYyxYwr$r�r�s   rr�zZeroCopyBytearray._reconstruct�r�r�Nr�r%rrr�r��s;���H��L��L� ��;�G��G�� �� rr�c�t�eZdZdZd�Zd�Zed��Zed��Zed��Z	d�Z
d�Zd	�Zd
�Z
ed��Zy)
�PicklableNDArrayFc�8�tj|i|��|_yr$)�_testbuffer�ndarray�array�r.r/�kwargss   rrHzPicklableNDArray.__init__	s��$�,�,�d�=�f�=�D�Jrc�f�t|�}|j|�}|j||_|Sr$)r��__new__r�)r.�idxr��news    r�__getitem__zPicklableNDArray.__getitem__s-���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��t|t�stS|jj|jjk(xr�|jj
|jj
k(xr�|jj|jjk(xrd|jj|jjk(xr5|jj�|jj�k(Sr$)	�
isinstancer��NotImplementedr�r��shape�stridesr��tobytesr[s  rr]zPicklableNDArray.__eq__s����e�%5�6�%�%��K�K�&�&�$�*�*�*;�*;�;�B��K�K�%�%����)9�)9�9�B��K�K�'�'�4�:�:�+=�+=�=�B��K�K�(�(�D�J�J�,?�,?�?�B��K�K�'�'�)�T�Z�Z�-?�-?�-A�A�	
Crc�:�t|t�stS||k(Sr$)r�r�r�r[s  r�__ne__zPicklableNDArray.__ne__'s ���e�%5�6�%�%���
�&�&rc��t|��d|jj�d|jj�d|jj	��d�S)Nz(shape=z	,strides=z, bytes=�))r�r�r�r�r�r2s rr�zPicklableNDArray.__repr__,sU���D�z�l�'�$�*�*�*:�*:�);�<�#�z�z�1�1�2�3�!�Z�Z�/�/�1�2�!�5�
6rc��|jjstd��|jj|jj|jj
|jrdntjd�}tj|j�}|dk\rt|�j||ffS|j�5}t|�j|j�|ffcddd�S#1swYyxYw)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__1s����:�:�(�(�)�+K�L�L�'+�z�z�'7�'7�)-���);�);�(,�
�
�(9�(9�-1�]�]��-8�-D�-D�	G�N�
�$�$�T�Z�Z�0�B��1�}��T�
�/�/��^�,�.�.��V�V�X�;�� ��J�3�3��Y�Y�[�.�9�;�;�;�;�s�'C?�?Dc��t|�5}t|j��}ddd�|fi|��S#1swY�xYwr$)r��listr�)r�r�r�r��itemss     rr�zPicklableNDArray._reconstructDsD���C��
*�A��Q�Y�Y�[�)��
*��u�'��'�'�	
*�
*�s	�7�AN)r<r=r>r�rHr��propertyr�r�r�r]r�r�r�r�r�r%rrr�r�sy��!&��	>�	�
�	'�
�	'�
�	+�
�	+�
�	+�
�	+�	C�	'�
	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}|jdd|||dz
|||dz
|||dz
g�dd||f}|j	|�|j	|�|j	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�
��q�!��A��H�H�Q�K��H�H�Q�K��H�H�Q�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-�Z1e2jfe2jh�d.���Z5y)0�AbstractUnpickleTestsNc	��|�dj||�}|j|||��|jt|�t|�|��t	|d�rP|j|j|j|��|j|j|j|��t	|d�r�|j|j|j|��|jD]T}|jt	||�t	||�|��|jt||d�t||d�|���Vyy)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�����g�3��/��
�
�d�3�i��g��C�
�8��3�
�#�� � ����w�/?�/?�S� �I����S�\�\�7�+;�+;���E��3��$�� � �����0A�0A�s� �K��
�
�
H��� � ��C��&����(>�C�!�I�� � ���d�D�!9�!(��$��!=�3�!�H�
H�%rc
�^�|j|��5|j|�5	|j|�	ddd�ddd�y#t$rA}tj
dkDr(t
|d�d|jj�d|����d}~wwxYw#1swY�_xYw#1swYyxYw)N)�datar�32z - z: )	�subTest�assertRaises�loads�
BaseExceptionr�verbose�printr�r<)r.�errorsr�excs    r�check_unpickling_errorz,AbstractUnpickleTests.check_unpickling_errorXs���
�\�\�t�\�
$�	�
�
�
�v�
&�	�
��
�
�4� �	�	�	��!�
��?�?�Q�&������!7�!7��>�?���	
��		�	��	�	�s>�B#�B�A
�B#�
	B�<B�B�B�B 	�B#�#B,c�b�|j|j|jt��yr$)r��	_testdatar�DATA0r2s r�test_load_from_data0z*AbstractUnpickleTests.test_load_from_data0c������D�N�N�D�J�J�u�,=�>rc�b�|j|j|jt��yr$)r�r
r�DATA1r2s r�test_load_from_data1z*AbstractUnpickleTests.test_load_from_data1frrc�b�|j|j|jt��yr$)r�r
r�DATA2r2s r�test_load_from_data2z*AbstractUnpickleTests.test_load_from_data2irrc�b�|j|j|jt��yr$)r�r
r�DATA3r2s r�test_load_from_data3z*AbstractUnpickleTests.test_load_from_data3lrrc�b�|j|j|jt��yr$)r�r
r�DATA4r2s r�test_load_from_data4z*AbstractUnpickleTests.test_load_from_data4orrc���tdftdftdffD]�\}}|jj	d�}	djd|�}|j
||�|j|��	djd|�}|j
||�|j|��	djd|�}|j
||�|j|����y)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	?�G�A�t��J�J�%�%�g�.�E�	
�#�%,�G�D�%�$8�
�
����4��$�*�*�W�*=�>�

�.�/6�w�t�U�/C�
�
����4��$�*�*�W�*=�>�
�.�/6�w�t�U�/C�
�
����4��$�*�*�W�*=�>�i4	?rc��d}dt|�jd�zdz}|j|�}|j||�dt|�jd�zdz}|j	t
|�y)Nl�����Ir�
.sJUNK
.)ryr rr�r�
ValueError)r.�maxint64r�gots    r�
test_maxint64z#AbstractUnpickleTests.test_maxint64�ss�� ���c�(�m�*�*�7�3�3�f�<���j�j�������H�c�*��c�(�m�*�*�7�3�3�j�@���#�#�J��5rc��|jt�}|j|tddg��|jt�}|jt|�tt
d���|jt|�tt
d���|jt�}|jt|�t�|jt|j��dg�|j|djd�tD]]}tjd|jj!d��}|j|�}|j#t|�|��_|jtjdd	��}|j#t|�t$�|jt&�}|j#t|�t(�|j|j*d
�|j|j,d�|j|j.d�|j|j0d�|j|j2d�y)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�s������H�%�������a��V��-����K�(������f��t�E�!�H�~�6�����f��t�E�!�H�~�6����K�(������f��|�4�����f�k�k�m�,�u�g�6�������,�,�g�6�3�	-�C�#�+�+�D�#�,�,�2E�2E�g�2N�O�D��Z�Z��%�F��M�M�$�v�,��,�	-����,�4�4�T�;K�L�M���
�
�d�6�l�I�.����J�'���
�
�d�6�l�$6�7��������.�������'�2�������q�)�������Q�'��������.rc���|j|jdd��d�|j|jdd��d�|j|jdd��d�y)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�7C�	E�	
������$6�-4�$�6�7C�	E�	
������$>�-4�$�6�7C�	Erc���|j|jdd��d�|j|jdd��d�|j|jdd��d�y)Ns	V\u03c0
.r�rGuπsXπ.s
�Xπ.rHr2s r� test_load_python2_unicode_as_strz6AbstractUnpickleTests.test_load_python2_unicode_as_str�sz��������N�-4�$�6�7;�	=�	
������$A�-4�$�6�7;�	=�	
������$I�-4�$�6�7;�	=rc	��|j|jtjt	j
dd�zdztjzd��d�y)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�s[��������F�$4�$4�$*�K�K��c�$:�%;�$.�%/�17���%=�.5�$�6�8B�	Crc�L�|j|jd��|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d�y)NsN.s�.Ts�.FsI01
.sI00
.)�assertIsNonerr�r2s r�test_constantsz$AbstractUnpickleTests.test_constants�su�����$�*�*�U�+�,��
�
�d�j�j��*�D�1��
�
�d�j�j��*�E�2��
�
�d�j�j��+�T�2��
�
�d�j�j��+�U�3rc�N�|jdd��}|j|d�y)Ns�Uq.zkoi8-rrG�)rr�)r.�emptys  r�test_empty_bytestringz+AbstractUnpickleTests.test_empty_bytestring�s%���
�
�1�H�
�E�������#rc�J�d}|j|j|�d�y)Ns	�C€.�€rH�r.�dumpeds  r�test_short_binbytesz)AbstractUnpickleTests.test_short_binbytes�s!��2��������F�+�-@�Arc�J�d}|j|j|�d�y)Ns�B€.r[rHr\s  r�
test_binbytesz#AbstractUnpickleTests.test_binbytess!��>��������F�+�-@�Arc�T�d}|jtjtf|�y)Ns
�B����xyzq.�rr�UnpicklingError�
OverflowErrorr\s  r�test_negative_32b_binbytesz0AbstractUnpickleTests.test_negative_32b_binbytes�'��7���#�#�V�%;�%;�]�$K�$*�	,rc�T�d}|jtjtf|�y)Ns
�X����xyzq.rbr\s  r�test_negative_32b_binunicodez2AbstractUnpickleTests.test_negative_32b_binunicoderfrc�J�d}|j|j|�d�y)Ns	��€.�€rHr\s  r�test_short_binunicodez+AbstractUnpickleTests.test_short_binunicodes ��5��������F�+�\�:rc�
�|jtjd�|jtjd�|jtjd�|jddg|j	d��y)Nsg0
p0sjens:shens:)�ds((Kdtp0
hl.)))rrrcr�rr2s r�
test_misc_getz#AbstractUnpickleTests.test_misc_getsf���#�#�F�$:�$:�I�F��#�#�F�$:�$:�H�E��#�#�F�$:�$:�H�E����V�V�,� �J�J�'<�=�	?rc�J�d}|j|j|�d�y)Ns��€.r[rHr\s  r�test_binbytes8z$AbstractUnpickleTests.test_binbytes8s!��A��������F�+�-@�Arc�J�d}|j|j|�d�y)Ns��€.rjrHr\s  r�test_binunicode8z&AbstractUnpickleTests.test_binunicode8!s ��A��������F�+�\�:rc�\�d}|j|j|�td��y)Ns��xxx.sxxx)r�r�	bytearrayr\s  r�test_bytearray8z%AbstractUnpickleTests.test_bytearray8%s%��D��������F�+�Y�v�->�?rc�T�d}|jtjtf|�y)Ns��€.rbr\s  r�test_large_32b_binbytes8z.AbstractUnpickleTests.test_large_32b_binbytes8)�%��A���#�#�V�%;�%;�]�$K�$*�	,rc�T�d}|jtjtf|�y)Ns��€.rbr\s  r�test_large_32b_bytearray8z/AbstractUnpickleTests.test_large_32b_bytearray8/rxrc�T�d}|jtjtf|�y)Ns��€.rbr\s  r�test_large_32b_binunicode8z0AbstractUnpickleTests.test_large_32b_binunicode85rxrc��d}|j|�}|j|gfdz�|j|d|d�y)Ns((lp100000
g100000
t.r�rr�rr�r��r.�pickled�	unpickleds   r�test_getzAbstractUnpickleTests.test_get;sA��,���J�J�w�'�	�����R�E�!�G�,��
�
�i��l�I�a�L�1rc��d}|j|�}|j|gfdz�|j|d|d�y)Ns(]q�h�t.r�rrr~rs   r�test_bingetz!AbstractUnpickleTests.test_bingetAsA��#���J�J�w�'�	�����R�E�!�G�,��
�
�i��l�I�a�L�1rc��d}|j|�}|j|gfdz�|j|d|d�y)Ns(]rjt.r�rrr~rs   r�test_long_bingetz&AbstractUnpickleTests.test_long_bingetGsA��;���J�J�w�'�	�����R�E�!�G�,��
�
�i��l�I�a�L�1rc��d}|j|�}|j|gfdz�|j|d|d�y)Ns((l2t.r�rrr~rs   r�test_dupzAbstractUnpickleTests.test_dupMsA�����J�J�w�'�	�����R�E�!�G�,��
�
�i��l�I�a�L�1rc�4�d}|jt|�y)NsVa
p-1
.�rr+r\s  r�test_negative_putz'AbstractUnpickleTests.test_negative_putSs�����#�#�J��7rc�4�d}|jt|�y)Ns�Xar����.r�r\s  r�test_negative_32b_binputz.AbstractUnpickleTests.test_negative_32b_binputXs��A���#�#�J��7rc�0�|jtd�y)NsS'\'
.r�r2s r�test_badly_escaped_stringz/AbstractUnpickleTests.test_badly_escaped_string^s���#�#�J��<rc�Z�gd�}|D]"}|jtj|��$y)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_stringas2���
��	C�A��'�'��(>�(>��B�	Crc�b�gd�}|D]&\}}|j|j|�|��(y)N))sS''
.rW)sS""
.rW)sS"\n"
.�
)sS'\n'
.r�rH)r.�goodpicklesr��expecteds    r�test_correctly_quoted_stringz2AbstractUnpickleTests.test_correctly_quoted_stringss6��-��'�	6�K�A�x����T�Z�Z��]�H�5�	6rc�J�d}|j|j|�d�y)Ns��I42
.�*rH)r.r�s  r�test_frame_readlinez)AbstractUnpickleTests.test_frame_readline{s"��G��
	
������G�,�b�1rc�2�d}|j|�}|jt|�t�|j	|tdd��|j	t|�gd��d}|j|j|�tj�d}|j|j|�tj�dD]U}d|zd	z}|j|�}|jt|�t�|j	t|�d
��WdD]k}d|zd
z}|j|�}|jt|�tj�|j	|tjddi���my)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�sQ��H���J�J�w�'�	��
�
�d�9�o�u�-�����E�!�Q�K�0�����i��*<�=�4���
�
�d�j�j��)�9�+;�+;�<�1���
�
�d�j�j��)�3�;�;�7�4�	4�D�/�$�6�9L�L�G��
�
�7�+�I��M�M�$�y�/�9�5����S��^�U�3�		4�7�	F�D�.��5�6�7�G��
�
�7�+�I��M�M�$�y�/�;�+?�+?�@����Y��(<�(<�a��V�(D�E�	Frc��|j|jd�d�|jtd�|jtd�y)Nscbuiltins
int
)R.rsN)R.scbuiltins
int
NR.)r�rr�	TypeErrorr2s r�test_bad_reducez%AbstractUnpickleTests.test_bad_reduce�s=��������$:�;�Q�?��#�#�I�w�7��#�#�I�/E�Frc��tjtf}|j|j	d�d�|j|d�|j|d�y)Nscbuiltins
int
)�.rscbuiltins
len
)�.scbuiltins
int
N�.�rrcr�r�rr�r.�errors  r�test_bad_newobjz%AbstractUnpickleTests.test_bad_newobj�sN���'�'��3��������$=�>��B��#�#�E�+D�E��#�#�E�+D�Erc���tjtf}|j|j	d�d�|j|d�|j|d�|j|d�y)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��#�#�E�+E�F��#�#�E�+E�F��#�#�E�+E�Frc�R�gd�}|D]}|j|j|�� y)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�s3��-
�
�\�	B�A��'�'��(=�(=�q�A�	Brc�R�gd�}|D]}|j|j|�� y)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�s3��"
�
�F�	B�A��'�'��(=�(=�q�A�	Brc��|jtd�|jtd�gd�}|D]}|j|j|�� y)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	sT���#�#�H�c�2��#�#�H�d�3�X
�
�r�	B�A��'�'��(=�(=�q�A�	Brc� �
���td�}td�}tjt�|j	t
jt�tjjdt�|j	tjjt�ttjjtd�d�5}|j|jd��ddd�ttjjtd�d�5}|j|jd��ddd�|j	td�|j	td	�ddl}d
�g�t#j$d��
�
��fd�}t#j&|�
�}t#j&|�
�}|j)�|j)��
j+�|j,j+�|j�|j�ddlm}|j3�D�	cgc]
}	t5|	���c}	|gdz�y#1swY��{xYw#1swY��1xYwcc}	w)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�n���j��jtj���yr$)�waitr�rr)�barrier�pickle_bytes�resultss���r�tz:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t�s#���
�L�L�N��N�N�6�<�<��5�6r)�target)�
ToBeUnpickledr�)r�os�mkdirr�
addCleanup�shutil�rmtree�sys�path�insert�remove�open�joinrGr r
r��	threading�Barrier�ThreadrAr�r�r�r�r�r�)
r.�
locker_module�locking_import_module�fr�r��t1�t2r�r'r�r�r�s
          @@@r�test_unpickle_module_racez/AbstractUnpickleTests.test_unpickle_module_racehs����� �
�
�!'�(�!
��	���������
�
�v�.�������6�"����������0�
�"�'�'�,�,�v�{�3�T�
:�	3�a�
�G�G�M�(�(��1�2�	3�
�"�'�'�,�,�v�':�;�T�
B�	;�a�
�G�G�)�0�0��9�:�	;������)����� 0�1��
H�	����#�#�A�&��	7��
�
�Q�
'��
�
�
�Q�
'��
���
�
���
�����������
���	�
���	�0����%�&��T�!�W�&�
�O�a��	!�M	3�	3��	;�	;��J
's�!I1�.!I>�J�1I;�>Jr$)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_threadingr
r%rrr�r�As����
�I�H�$	�?�?�?�?�?�7?�r6�/�<	E�	=�C�4�$�
B�B��,��,��,��,�;�?�B�;�@��,��,�
�,��,�
�,��,�
2�2�2�2�8�
�8��8�
=�C�$6�2�F�6G�
F�G�0B�d%B�N]B�~�"�"�0��0�0�2�9!�3�#�9!rr�c��eZdZdZej
Zd�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;d7�Z<e=d8d9d:�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`�Zcda�Zdeedb��Zfdc�Zgdd�Zhde�Zidf�Zjdg�Zkdh�Zldi�Zmdj�Zndk�ZodlZpdmZqdn�Zresj�esj�do�dp���Zvdq�Zwdr�Zxesj�ds��Zydt�Zzdu�Z{dv�Z|dw�Z}dx�Z~dy�Zdz�Z�d{�Z�d|�Z�d}�Z�d~�Z�d�Z�d��Z�d��Z�e��je�d�ud��d���Z�d��Z�d��Z�y�)��AbstractPickleTestsFc��yr$r%r2s r�setUpzAbstractPickleTests.setUp�rbrc��tD]�}td�}|j||�}|j|�}|j	||�d}|j||�}|j|�}|j	||�td|�}|j||�}|j|�}|j	||���y)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]7}|j||�}|j|�}|j	||��9yr$)r
rrrr�)r.r�rrr-s     r�test_roundtrip_equalityz+AbstractPickleTests.test_roundtrip_equality�sG���>�>���	/�E��
�
�8�U�+�A��*�*�Q�-�C�����#�.�	/rc���ddlm}ddlm}dtfdt
ffD]T\}}|j
|j|�}|�}|||��|j�}|j||��Vy)Nr)�StringIO��disr)�out)
r6rrr!�	DATA0_DIS�	DATA1_DISrr
rDr�)r.rr!rr�r�fileliker-s        r�dont_test_disassemblyz)AbstractPickleTests.dont_test_disassembly�sk���#� !�9�~��9�~�=�	,�O�E�8��
�
�4�>�>�5�1�A��z�H���x� ��#�#�%�C����X�s�+�	,rrc�R�|�}|j|�t|tjdz�D]o}|j	||�}|j|�}|j
||�||�}|jt|�d�|j|d|��qy�Nrr)
r�r7r�HIGHEST_PROTOCOLrr�assertIsInstancer��lenr�)	r.r��aslist�minprotocol�lrrr'r�s	         r�_test_recursive_listz(AbstractPickleTests._test_recursive_list�s����E��	������;��(?�(?�!�(C�D�	#�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�S�)��q�	�A����S��V�Q�'��M�M�!�A�$��"�
	#rc�.�|jt�yr$)r/r�r2s r�test_recursive_listz'AbstractPickleTests.test_recursive_list�����!�!�$�'rc�2�|jtd��y�Nr�)r-)r/�MyListr2s r�test_recursive_list_subclassz0AbstractPickleTests.test_recursive_list_subclass�����!�!�&�a�!�8rc�4�|jtd���y)Nc��|jSr$�r�r&s r�<lambda>z>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>�s
��A�G�G�r�r,)r/�REX_sixr2s r�test_recursive_list_likez,AbstractPickleTests.test_recursive_list_like�s���!�!�'�2C�!�Drc�b�|�f}|dj|�t|tjdz�D]�}|j	||�}|j|�}|j
|t�|jt|�d�|j
|d|�||d�}|jt|�d�|j|d|���|\}t|tjdz�D]�}|j	||�}|j|�}|j
||�||�}|jt|�d�|j
|dt�|jt|d�d�|j|dd|���yrM)r�r7rr)rrr*�tupler�r+r�)	r.r�r,r-r�rrr'r�s	         r�_test_recursive_tuple_and_listz2AbstractPickleTests._test_recursive_tuple_and_list�sy��
�U�H��	�!����A���;��(?�(?�!�(C�D�	#�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�U�+����S��V�Q�'��!�!�!�A�$��,��q��t��A����S��V�Q�'��M�M�!�A�$��"�	#�����;��(?�(?�!�(C�D�	&�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�S�)��q�	�A����S��V�Q�'��!�!�!�A�$��.����S��1��Y��*��M�M�!�A�$�q�'�1�%�	&rc�.�|jt�yr$)rAr�r2s r�test_recursive_tuple_and_listz1AbstractPickleTests.test_recursive_tuple_and_list����+�+�D�1rc�2�|jtd��yr4)rAr5r2s r�&test_recursive_tuple_and_list_subclassz:AbstractPickleTests.test_recursive_tuple_and_list_subclass����+�+�F��+�Brc�4�|jtd���y)Nc��|jSr$r:r&s rr;zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>s
��a�g�g�rr<)rAr=r2s r�"test_recursive_tuple_and_list_likez6AbstractPickleTests.test_recursive_tuple_and_list_likes���+�+�G�<M�+�Nrc�X�|�}||d<t|tjdz�D]~}|j||�}|j	|�}|j||�||�}|j
t|j��dg�|j|d|���y�Nr)
r7rr)rrr*r�r�r9r��	r.r��asdictr-�drrr'r�s	         r�_test_recursive_dictz(AbstractPickleTests._test_recursive_dicts����E����!���;��(?�(?�!�(C�D�	#�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�S�)��q�	�A����T�!�&�&�(�^�a�S�1��M�M�!�A�$��"�
	#rc�.�|jt�yr$)rPr�r2s r�test_recursive_dictz'AbstractPickleTests.test_recursive_dict#r2rc�2�|jtd��yr4)rP�MyDictr2s r�test_recursive_dict_subclassz0AbstractPickleTests.test_recursive_dict_subclass&r7rc�4�|jtd���y)Nc��|jSr$��tabler&s rr;z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>*s
��a�g�g�r�rN)rP�	REX_sevenr2s r�test_recursive_dict_likez,AbstractPickleTests.test_recursive_dict_like)s���!�!�)�4E�!�Frc�N�|�f}||dd<t|tjdz�D]�}|j||�}|j	|�}|j|t�|jt|�d�|j|d|�||d�}|jt|�dg�|j|d|���|\}t|tjdz�D]�}|j||�}|j	|�}|j||�||�}|jt|�dg�|j|dt�|jt|d�d�|j|dd|���yrM)r7rr)rrr*r@r�r+r�r��	r.r�rNr-r�rrr'r�s	         r�_test_recursive_tuple_and_dictz2AbstractPickleTests._test_recursive_tuple_and_dict,s{��
�U�H����!��Q���;��(?�(?�!�(C�D�	#�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�U�+����S��V�Q�'��!�!�!�A�$��,��q��t��A����T�!�W�q�c�*��M�M�!�A�$��"�	#�����;��(?�(?�!�(C�D�	&�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�S�)��q�	�A����T�!�W�q�c�*��!�!�!�A�$��.����S��1��Y��*��M�M�!�A�$�q�'�1�%�	&rc�.�|jt�yr$)r_r�r2s r�test_recursive_tuple_and_dictz1AbstractPickleTests.test_recursive_tuple_and_dictFrDrc�2�|jtd��yr4)r_rTr2s r�&test_recursive_tuple_and_dict_subclassz:AbstractPickleTests.test_recursive_tuple_and_dict_subclassIrGrc�4�|jtd���y)Nc��|jSr$rXr&s rr;zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>Ms
�����rrZ)r_r[r2s r�"test_recursive_tuple_and_dict_likez6AbstractPickleTests.test_recursive_tuple_and_dict_likeLs���+�+�I�>O�+�Prc�
�|�}d|t|�<t|tjdz�D]�}|j	||�}|j|�}|j
||�||�}|jt|j��d�|j
t|j��dt�|jt|j��dj|���yr()
rnr7rr)rrr*r�r+r9r�r�rprMs	         r�_test_recursive_dict_keyz,AbstractPickleTests._test_recursive_dict_keyOs���
�E����!�A�$���;��(?�(?�!�(C�D�	6�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�S�)��q�	�A����S�����]�A�.��!�!�$�q�v�v�x�.��"3�Q�7��M�M�$�q�v�v�x�.��+�1�1�1�5�	6rc�.�|jt�yr$)rhr�r2s r�test_recursive_dict_keyz+AbstractPickleTests.test_recursive_dict_key]s���%�%�d�+rc�2�|jtd��yr4)rhrTr2s r� test_recursive_dict_subclass_keyz4AbstractPickleTests.test_recursive_dict_subclass_key`s���%�%�f�!�%�<rc�4�|jtd���y)Nc��|jSr$rXr&s rr;zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>ds
��!�'�'�rrZ)rhr[r2s r�test_recursive_dict_like_keyz0AbstractPickleTests.test_recursive_dict_like_keycs���%�%�i�8I�%�Jrc�2�|�f}d|dt|�<t|tjdz�D]�}|j	||�}|j|�}|j
|t�|jt|�d�|j
|d|�||d�}|jt|�d�|j
t|j��dt�|jt|j��dj|���|\}t|tjdz�D]�}|j	||�}|j|�}|j
||�||�}|jt|�d�|j
t|j��dt�|jt|j��djd|���yr()rnr7rr)rrr*r@r�r+r�r9r�rpr^s	         r�"_test_recursive_tuple_and_dict_keyz6AbstractPickleTests._test_recursive_tuple_and_dict_keyfs����U�H����!��Q�q�T�
��;��(?�(?�!�(C�D�		6�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�U�+����S��V�Q�'��!�!�!�A�$��,��q��t��A����S��V�Q�'��!�!�$�q�v�v�x�.��"3�Q�7��M�M�$�q�v�v�x�.��+�1�1�1�5�		6�����;��(?�(?�!�(C�D�	9�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�S�)��q�	�A����S��V�Q�'��!�!�$�q�v�v�x�.��"3�Q�7��M�M�$�q�v�v�x�.��+�1�1�!�4�a�8�	9rc�.�|jt�yr$)rqr�r2s r�!test_recursive_tuple_and_dict_keyz5AbstractPickleTests.test_recursive_tuple_and_dict_key�s���/�/��5rc�2�|jtd��yr4)rqrTr2s r�*test_recursive_tuple_and_dict_subclass_keyz>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_key�s���/�/��A�/�Frc�4�|jtd���y)Nc��|jSr$rXr&s rr;zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>�s
��A�G�G�rrZ)rqr[r2s r�&test_recursive_tuple_and_dict_like_keyz:AbstractPickleTests.test_recursive_tuple_and_dict_like_key�s���/�/�	�BS�/�Trc�d�t�}|jt|��tdtj
dz�D]�}|j
||�}|j|�}|j|t�|jt|�d�|jt|�dt�|jt|�dj|���|\}tdtj
dz�D]�}|j
||�}|j|�}|j|t�|j|jt�|jt|j�d�|jt|j�d|���y)Nr�rr)r5�addrnr7rr)rrr*r�r+r�r�rp�r.r�rrr's     r�test_recursive_setz&AbstractPickleTests.test_recursive_set�sL���E��	���a��d���1�f�5�5��9�:�	/�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�S�)����S��V�Q�'��!�!�$�q�'�!�*�a�0��M�M�$�q�'�!�*�*�*�A�.�
	/�����1�f�5�5��9�:�	/�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�Q�'��!�!�!�'�'�3�/����S����\�1�-��M�M�$�q�w�w�-��*�A�.�
	/rc�.�t�}||_tD]{}|j||�}|j	|�}|j|t�|j
t|�t|��|j|j|��}yr$)	rj�attrrrrr*r��dirr�)r.�irrr's     r�test_recursive_instz'AbstractPickleTests.test_recursive_inst�sv���H������	%�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�V�,����S��V�S��V�,��M�M�!�&�&�!�$�	%rc��g}d|i}t�}||_|j|�tD]�}|j	||�}|j|�}|j
|t�|jt|�d�|jt|d�t|��|jt|djj��dg�|j|djd|���yr()
rjr~r�rrrr*r�r�r+rr9r�)r.r.rOr�rrr's       r�test_recursive_multiz(AbstractPickleTests.test_recursive_multi�s�����
�q�E���H�����	������	+�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�T�*����S��V�Q�'����S��1��Y��A��/����T�!�A�$�)�)�.�.�"2�3�a�S�9��M�M�!�A�$�)�)�A�,��*�	+rc�F�t�}||g�|_t|j�}tD]�}|j	||�}|j|�}|j
|j|�|jt|j�d�|j
t|j�dt�|jt|j�d|���|j}tD]�}|j	||�}|j|�}|j
||�|jt|�d�|j
t|�dt�|jt|�dj|���yr()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���!���������L���	.�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�&�&�!�,����S����[�!�,��!�!�$�q�v�v�,�q�/�6�:��M�M�$�q�v�v�,�q�/�1�-�
	.�
�F�F���	.�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�Q�'����S��V�Q�'��!�!�$�q�'�!�*�f�5��M�M�$�q�'�!�*�/�/�1�-�
	.rc�.�|jt�yr$)r�r�r2s r�test_recursive_list_and_instz0AbstractPickleTests.test_recursive_list_and_inst�s���0�0��6rc�.�|jt�yr$)r�r@r2s r�test_recursive_tuple_and_instz1AbstractPickleTests.test_recursive_tuple_and_inst�����0�0��7rc�B�|jtj�yr$)r�r��fromkeysr2s r�test_recursive_dict_and_instz0AbstractPickleTests.test_recursive_dict_and_inst�s���0�0����?rc�.�|jt�yr$)r�r5r2s r�test_recursive_set_and_instz/AbstractPickleTests.test_recursive_set_and_inst�s���0�0��5rc�.�|jt�yr$)r��	frozensetr2s r�!test_recursive_frozenset_and_instz5AbstractPickleTests.test_recursive_frozenset_and_inst�s���0�0��;rc�.�|jt�yr$)r�r5r2s r�%test_recursive_list_subclass_and_instz9AbstractPickleTests.test_recursive_list_subclass_and_inst�s���0�0��8rc�.�|jt�yr$)r��MyTupler2s r�&test_recursive_tuple_subclass_and_instz:AbstractPickleTests.test_recursive_tuple_subclass_and_inst�s���0�0��9rc�B�|jtj�yr$)r�rTr�r2s r�%test_recursive_dict_subclass_and_instz9AbstractPickleTests.test_recursive_dict_subclass_and_inst�s���0�0����Arc�.�|jt�yr$)r��MySetr2s r�$test_recursive_set_subclass_and_instz8AbstractPickleTests.test_recursive_set_subclass_and_inst�r�rc�.�|jt�yr$)r��MyFrozenSetr2s r�*test_recursive_frozenset_subclass_and_instz>AbstractPickleTests.test_recursive_frozenset_subclass_and_inst�s���0�0��=rc���t�}||_tD]W}|j||�}|j	|�}|j|t�|j
|j|��Yyr$)�	REX_state�staterrrr*r�r{s     r�test_recursive_inst_statez-AbstractPickleTests.test_recursive_inst_state�s^���K������	&�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�Y�/��M�M�!�'�'�1�%�		&rc��t�f}||d_tD]�}|j||�}|j	|�}|j|t�|jt|�d�|j|dt�|j|dj|���|\}tD]�}|j||�}|j	|�}|j|t�|j|jt�|jt|j�d�|j|jd|���yrM)
r�r�rrrr*r@r�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�Q�'��!�!�!�A�$�	�2��M�M�!�A�$�*�*�a�(�
	)�����	)�E��
�
�1�e�$�A��
�
�1�
�A��!�!�!�Y�/��!�!�!�'�'�5�1����S����\�1�-��M�M�!�'�'�!�*�a�(�
	)rc��gd�}tD]>}|D]7}|j||�}|j|�}|j||��9�@y)N)rWz<\u>u<\ሴ>z<
>z<\>u<\𒍅>u<�>�rrrr�)r.�endcasesr�ur��u2s      r�test_unicodez AbstractPickleTests.test_unicodesV�� ���	+�E��
+���J�J�q�%�(���Z�Z��]���#�#�A�r�*�
+�	+rc��d}tD]7}|j||�}|j|�}|j||��9y)Nu𒍅r�)r.r�rr�rs     r�test_unicode_high_planez+AbstractPickleTests.test_unicode_high_planesC�����	'�E��
�
�1�e�$�A����A��B�����2�&�	'rc��tD]C}dD]<}|j||f|�}|j|�\}}|j||��>�Ey)N)rW�xyzzxyz
zx\yzux¡yz
�rrrr�)r.rrr��s1�s2s      r�test_unicode_memoizationz,AbstractPickleTests.test_unicode_memoization$sS���	&�E�=�
&���J�J��1�v�u�-�����A����B��
�
�b�"�%�
&�	&rc��tD]�}dD]5}|j||�}|j||j|���7t	d�D�cgc]}t|g���c}D]5}|j||�}|j||j|���7t	d�D�cgc]}t||g���c}D]5}|j||�}|j||j|���7��ycc}wcc}w)N�r�xyzs,xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz�)rrr�rr7r�)r.rrr�r�s     r�
test_byteszAbstractPickleTests.test_bytes,s����		6�E�,�
6���J�J�q�%�(���#�#�A�t�z�z�!�}�5�
6�+0��*�5�Q�e�Q�C�j�5�
6���J�J�q�%�(���#�#�A�t�z�z�!�}�5�
6�.3�3�Z�8��e�Q��F�m�8�
6���J�J�q�%�(���#�#�A�t�z�z�!�}�5�
6�		6��6��9s�C>�,Dc�Z�tD�]!}dD�]}t|�}|j||�}|j|�}|j	||�|j||�|dkr<|j
d|�|jttj|����|dk(r<|j
d|�|jttj|����|dk(s��|jd|�|jttj|������$y)Nr�r�s	bytearrayr�r�)rrtrrr�r��assertIn�
assertTruerr�GLOBAL�STACK_GLOBAL�assertNotIn�
BYTEARRAY8)r.rrrr��bbs      r�test_bytearrayz"AbstractPickleTests.test_bytearray8s����	L�E�,�
L���a�L���J�J�q�%�(���Z�Z��]��� � ��Q�'��#�#�A�r�*��A�:��M�M�,��2��O�O�$4�V�]�]�A�$F�G��a�Z��M�M�,��2��O�O�$4�V�5H�5H�!�$L�M��a�Z��$�$�\�1�5��O�O�$4�V�5F�5F��$J�K�
L�	Lrc��tD]N}dD]G}t|�}|j||f|�}|j|�\}}|j	||��I�Py)Nr�)rrtrrr�)r.rrrr��b1�b2s       r�test_bytearray_memoization_bugz2AbstractPickleTests.test_bytearray_memoization_bugKs\���	&�E�,�
&���a�L���J�J��1�v�u�-�����A����B��
�
�b�"�%�	
&�	&rc���tD]\}tj}|s�||fD]7}|j||�}|j	|�}|j||��9|dz	}|r�G�^yrL)rr��maxsizerrr�)r.rr!r�r�n2s      r�	test_intszAbstractPickleTests.test_intsSso���	�E����A��"#��Q��6�H��
�
�8�U�3�A����A��B��'�'��"�5�6���F���	rc��tD]]}dD]V}d|z}|dz
||dzfD]A}||fD]7}|j||�}|j|�}|j||��9�C�X�_t	dd�}||dzz
}||fD]V}|j|d�}|j|�}|jt
|�t�|j||��Xy)N)r�i�i��ir�deadbeeffeedface�i@Br�)rrrr��intr�r�r�)	r.r�nbits�nbase�nposr!rr-r�s	         r�	test_longzAbstractPickleTests.test_long]s����	4�E�9�
4���U�
��!�!�G�U�E�!�G�3�4�D�!�D�5�[�4��!%���A�u�!5��"�j�j��0���+�+�A�s�3�4�4�
4�	4��&��+��
��'�!�!������	%�A��
�
�1�a� �A��*�*�Q�-�C�
�M�M�$�s�)�S�)����Q��$�	%rc���gd�}||D�cgc]}|��c}z}tD]>}|D]7}|j||�}|j|�}|j||��9�@ycc}w)N)ggg+�p�hg�Z��*)g_D��9g�������?g�?g��Q�	@g�m�"wp@g�W�T��Dgꌠ9Y>)Fr�)r.�test_valuesr'rrprr-s       r�
test_floatzAbstractPickleTests.test_floattsr��A��!��$=�A�a�R�$=�=���	0�E�$�
0�����E�5�1���j�j��(���#�#�E�3�/�
0�	0��%>s�
A!�LC_ALL�de_DE�fr_FRc�N�|j|jdd�ddd�y)Ng333333�?rr�sF1.)r�rr2s r�test_float_formatz%AbstractPickleTests.test_float_format~s&��	
������C��+�A�a�0�&�9rc��tD]E}t�}|j||�}|j|�}|j	|t
��Gyr$)r�AAArrr��REDUCE_A�r.r�instr]rDs     r�test_reducezAbstractPickleTests.test_reduce�sF���	/�E��5�D��Z�Z��e�,�F��Z�Z��'�F����V�X�.�		/rc��tD]C}tdd�}|j||�}|j|�}|j	||��Ey)Nrr�)rr{rrr�r�s     r�test_getinitargsz$AbstractPickleTests.test_getinitargs�sJ���	.�E��1�a�=�D��Z�Z��e�,�F��Z�Z��'�F�����f�-�		.rc��t�}tD]K}|j||�}|j|�}|j	|j
|j
��Myr$)r�rrrr�r��r.r~rrrs     r�test_metaclassz"AbstractPickleTests.test_metaclass�sM���O���	7�E��
�
�1�e�$�A��
�
�1�
�A����Q�[�[�!�+�+�6�	7rc�>�tdtf�}tjttj
�tD][}|j||�}|j|�}|j||�|jt|�t|���]y)N�my_dynamic_class)r�r?rNrr�rsrrrr�r�r�r�s     r�test_dynamic_classz&AbstractPickleTests.test_dynamic_class�sy�� �!3�f�Y�?�����)�+=�+H�+H�I��	,�E��
�
�1�e�$�A��
�
�1�
�A����Q��"��M�M�$�q�'�4��7�+�		,rc��ddl}ddl}|j�}tD]�}|j	||�}|j|�}|j
||�|j|j�}|j	||�}|j|�}|j
||�t|d�s��|j|j�}|j	||�}|j|�}|j
||���y)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�J�r�y�y�)���J�J�q�%�(���J�J�q�M���#�#�A�q�)�	*rc��tD]7}|jd|�}|j|�}|jd|��9y�N.r��r.rrr�s    r�
test_ellipsisz!AbstractPickleTests.test_ellipsis�s<���	"�E��
�
�3��&�A��
�
�1�
�A��M�M�#�q�!�	"rc��tD]?}|jt|�}|j|�}|j	t|��Ayr$)rrr�rr�r�s    r�test_notimplementedz'AbstractPickleTests.test_notimplemented�s<���	-�E��
�
�>�5�1�A��
�
�1�
�A��M�M�.�!�,�	-rc���ddtg}|D]T}tD]I}|jt|�|�}|j	|�}|jt|�|��K�Vyr�)r�rrr�rr�)r.�
singletons�	singletonrrr�s      r�test_singleton_typesz(AbstractPickleTests.test_singleton_types�s_���C��0�
�#�	2�I�"�
2���J�J�t�I���6���J�J�q�M���
�
�d�9�o�q�1�
2�	2rc�
�tjj�D]b}t|t�s�t|t�r�%tD]5}|j||�}|j|j|�|��7�dyr$)�builtinsrZ�valuesr�r��
issubclassrrrr�r�r.r�rrs    r�test_builtin_typesz&AbstractPickleTests.test_builtin_types�sh���"�"�)�)�+�	4�A��!�T�"�:�a��+G�&�4�E��
�
�1�e�,�A��M�M�$�*�*�Q�-��3�4�	4rc���tjj�D]�}t|t�s�t|t�s�%tD]�}|j||�}|j|�}|dkr/t|t�r|tur|j|t��Z|dkr't|t�r|j|t���|j||�����y�Nr�)r�rZr�r�r�rrrrr�OSError�BlockingIOErrorr��ImportError)r.r�rrr�s     r�test_builtin_exceptionsz+AbstractPickleTests.test_builtin_exceptions�s����"�"�)�)�+�
	,�A��!�T�"�z�!�]�'C�&�,�E��
�
�1�e�,�A��
�
�1�
�A���z�j��G�&<��/�AY��
�
�a��1��!��
�1�k�(B��
�
�a��5��
�
�a��+�,�
	,rc��tjj�D][}t|tj
�s�tD]5}|j||�}|j|j|�|��7�]yr$)
r�rZr�r��types�BuiltinFunctionTyperrr�rrs    r�test_builtin_functionsz*AbstractPickleTests.test_builtin_functions�se���"�"�)�)�+�	4�A��!�U�6�6�7�&�4�E��
�
�1�e�,�A��M�M�$�*�*�Q�-��3�4�	4rc�Z�tD]�}|jd|�}|dk\r>tjt	|g�z}|j|j
|���X|jttj|�d���tddz}tjtjz}tjt	|g�z|z}	|j|�|jd�y#t$r%}|jdt|��Yd}~yd}~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�s����	I�E��j�j��u�-�G���z�%�|�|�e�U�G�n�<������ 2� 2�<� @�A�� � ��f�l�l�G�!D�a�H�
	I���m�a����[�[�6�;�;�.�
��L�L�5�#��<�/�*�<�	�	J��J�J�y�!�
�I�I�H�I���	C��M�M�7��S��B�B��	C�s�C<�<	D*�D%�%D*c���d}tD]d}|j||�}|j|�}|j||�|j	ttj|�|dk\��fy)N��UJ^w,3�|	r�)rrrr�r�rr�LONG1�r.r'rrr�s     r�
test_long1zAbstractPickleTests.test_long1�se��)���	L�E��
�
�1�e�$�A��
�
�1�
�A�����1�%����-�f�l�l�A�>���
�K�		Lrc���ddz}tD]d}|j||�}|j|�}|j||�|j	ttj|�|dk\��fy)Nrr�r�)rrrr�r�rr�LONG4rs     r�
test_long4zAbstractPickleTests.test_long4sj��)�e�4���	L�E��
�
�1�e�$�A��
�
�1�
�A�����1�%����-�f�l�l�A�>���
�K�		Lrc��idtj�dtj�dtj�dtj�dtj�dtj�dtj�dtj�d	tj�d
tj�dtj�dtj�d
tj�dtj
�dtj�dtj�dtj�tjtj
tjd��}d}d}d}d}d}tD]x}|||||fD]l}|j||�}	|j|	�}
|j||
�|t|d�t|�f}|jt||	���n�zy)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�rO�err'rr�r�s            r�test_short_tuplesz%AbstractPickleTests.test_short_tuples	s����6�6�<�<��!�6�<�<��!�6�<�<��"�6�<�<��"�6�<�<�	�"�6�#5�#5�
�"�6�<�<��"�6�<�<��"�6�<�<��"�6�<�<��"�6�#5�#5��"�6�=�=��"�6�=�=��"�6�=�=�� "�6�<�<�!�$"�6�#5�#5�%�&"�6�=�=�'�($*�=�=�#)�=�=�#)�<�<�-��0
�����������	?�E���1�a��]�
?���J�J�q�%�(���J�J�q�M���#�#�A�q�)�*�3�u�a�=�#�a�&�+@�A����� 0��1� =�>�
?�	?rc
�d�tjtjtjtjtjtjtjtjtjtjtjtjd�}t
D]p}dD]i}|j
||�}|j|�}|j||u||||f�|t|d�|f}|jt||���k�ry)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_singletons0s���&,�k�k�&,�k�k�&,�k�k�&,�k�k�&,�j�j�&,�j�j�&,�n�n�&,�n�n�'-�z�z�'-�z�z�'-���'-������	?�E�&�
?���J�J�q�%�(���J�J�q�M������Q����1�a�(8�9�*�3�u�a�=�!�+;�<����� 0��1� =�>�
?�	?rc��tgd��}d|_d|_tD]7}|j	||�}|j|�}|j
||��9y�Nr%r��hello)r�r�r�rrrr�rs     r�test_newobj_tuplez%AbstractPickleTests.test_newobj_tupleIsV���I����������	&�E��
�
�1�e�$�A��
�
�1�
�A�����1�%�	&rc��tgd��}d|_d|_tD]7}|j	||�}|j|�}|j
||��9yr5)r5r�r�rrrr�rs     r�test_newobj_listz$AbstractPickleTests.test_newobj_listRsV���9����������	&�E��
�
�1�e�$�A��
�
�1�
�A�����1�%�	&rc
��tD]�}tD]�}|j}||j�}d|_|j||�}|j
|�}|||||t|�f}|j||�|j||�||�|�|j|j|j|�����y�Nr�)r�	myclasses�__base__�sampler�rrr�r�r�rZ)r.rrX�Br'rr��details        r�test_newobj_genericz'AbstractPickleTests.test_newobj_generic[s����
	A�E��	
A���J�J���a�h�h�K������J�J�q�%�(���J�J�q�M����A�q�!�T�!�W�5���#�#�A�q�)�� � ��1��q��t�V�4�� � ����Q�Z�Z��@�	
A�
	Arc
�.�tdd}ttfD]}|j|��tD]�}|D]�}|j
}||j�}d|_tj|�}|j||�}|j|�}	|jt|	�t|��|||||	t|	�f}
|j||�||	�|
�|j|j|	j|
�����yr;)r<�MyIntr�rrr=r>r��weakref�proxyrrr�r�rZ)r.�classesr�rrXr?r'r�rr�r@s           r�test_newobj_proxiesz'AbstractPickleTests.test_newobj_proxieshs����A�,����!�	�A��N�N�1��	��	A�E��

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

A�	Arc�0�tD]�}td�}d|_|j||�}|j	|�}|jt
|�t�|jt|�d�|j|jd���y)Nrr�)	r�
MyIntWithNew2r�rrr�r�r�r�rs     r�test_newobj_overridden_newz.AbstractPickleTests.test_newobj_overridden_new{sy���	(�E��a� �A��A�E��
�
�1�e�$�A��
�
�1�
�A��M�M�$�q�'�=�1����S��V�Q�'����Q�U�U�B�'�	(rc���t}tjt�}|j|d�}	da|jtt
jf|j|�|ay#|awxYw)Nr�r�)�SimpleNewObjr�rrr�rrcr)r.�saver�rs    r�test_newobj_not_classz)AbstractPickleTests.test_newobj_not_class�s_����� � ��.���J�J�q�!���	 ��L����y�&�*@�*@�A�4�:�:�q�Q��L��4�L�s�3A)�)A-c��t|�}	tjtd|�t	gd��}d|_d|_|j|d�}|jtjd�|�|jd|�|jt||��|j|�}|j||�|j|d�}|jtjd�|�|jd|�|jt||�d	t!|��|j|�}|j||�|j#�y#|j#�wxYw)
Nr5r%r�r6rr�sMyListr�T)rKrNrTr<r5r�r�rr�r �assertFalserrr�r�r��reprrV)r.�extcode�opcoder-r'r�r�r�s        r�produce_global_extz&AbstractPickleTests.produce_global_ext�s.���7�#��	��!�!�(�H�g�>��y�!�A��A�E��A�E����A�q�!�B��M�M�(�/�/�'�2�B�7��M�M�)�R�(����-�f�b�9�:��
�
�2��A�����1�%����A�q�!�B����X�_�_�W�5�r�:����Y��+����-�f�b�9�4��b��J��
�
�2��A�����1�%�
�I�I�K��A�I�I�K�s�EE-�-E?c��|jdtj�|jdtj�y)Nrr�)rTr�EXT1r2s r�test_global_ext1z$AbstractPickleTests.test_global_ext1�s*�����
�F�K�K�8����
�F�K�K�8rc���|jdtj�|jdtj�|jdtj�y)Nr�r�iͫ)rTr�EXT2r2s r�test_global_ext2z$AbstractPickleTests.test_global_ext2��>�����
�F�K�K�8����
�F�K�K�8����
�F�K�K�8rc���|jdtj�|jdtj�|jdtj�y)N�r�i�ͫ)rTr�EXT4r2s r�test_global_ext4z$AbstractPickleTests.test_global_ext4�r[rc�F�d}tt|��}tD]f}|j||�}|j	|�}|j||�t
tj|�}|j||dkD��hd}tt|��}tD]}}|j||�}|j	|�}|j||�t
tj|�}|dk(r|j|d��j|j|dk\��y�N�
r��	r�)r�r7rrrr�r"r�APPENDSr�r�)r.r!r'rrr��num_appendss       r�test_list_chunkingz&AbstractPickleTests.test_list_chunking�s�������q��N���	5�E��
�
�1�e�$�A��
�
�1�
�A�����1�%�&�v�~�~�q�9�K����[�%�!�)�4�	5�
����q��N���	2�E��
�
�1�e�$�A��
�
�1�
�A�����1�%�&�v�~�~�q�9�K���z�� � ��a�0�����q� 0�1�	2rc��d}tjt|��}tD]|}|j	||�}|j|t�|j|�}|j||�ttj|�}|j||dkD��~d}tjt|��}tD]}}|j	||�}|j|�}|j||�ttj|�}|dk(r|j|d��j|j|dk\��yra)r�r�r7rrr*rrr�r"r�SETITEMSr�r�)r.r!r'rrr��num_setitemss       r�test_dict_chunkingz&AbstractPickleTests.test_dict_chunking�s�����M�M�%��(�#���	6�E��
�
�1�e�$�A��!�!�!�[�1��
�
�1�
�A�����1�%�'�����;�L����\�5�1�9�5�
	6�
���M�M�%��(�#���	3�E��
�
�1�e�$�A��
�
�1�
�A�����1�%�'�����;�L���z�� � ��q�1������ 1�2�	3rc�l�d}tt|��}tD]{}|j||�}|j	|�}|j||�t
tj|�}|dkr|j|d��j|j|d��}d}tt|��}tD]{}|j||�}|j	|�}|j||�t
tj|�}|dkr|j|d��j|j|d��}y)Nrbr�rrrcr�)r5r7rrrr�r"r�ADDITEMSr��assertGreaterEqual)r.r!r'rrr��num_additemss       r�test_set_chunkingz%AbstractPickleTests.test_set_chunking�s������a��M���	2�E��
�
�1�e�$�A��
�
�1�
�A�����1�%�'�����;�L��q�y�� � ��q�1�� � ��q�1�	2�
����a��M���	9�E��
�
�1�e�$�A��
�
�1�
�A�����1�%�'�����;�L��q�y�� � ��q�1��'�'��a�8�	9rc��tjtd�}d|_tD]�}|j	|��5|j||�}|dkr|j
d|�n|j
d|�|jttj|�d|k�|jttj|��|j|�}|j||�ddd���y#1swY��xYw)N����rr�
I64206�M�r�)rLr�r�rrrr�r�rr�NEWOBJrP�	NEWOBJ_EXrr�rs     r�test_simple_newobjz&AbstractPickleTests.test_simple_newobj	s���� � ��v�6������	*�E����E��*�

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

*�

*�	*�

*�

*�s�B6C>�>D	c�z�tjtd�}d|_tD�]}|j	|��5|j||�}|dkr|j
d|�nB|dkr|j
d|�n*|dkr|j
d	|�n|j
d
|�|jttj|�d|k�|jttj|��|j|�}|j||�ddd���y#1swY��xYw�Nrqrrrsrrtr�rur�s	XFACEs�FACE)�
ComplexNewObjr�r�rrrr�r�rrrvrPrwrr�rs     r�test_complex_newobjz'AbstractPickleTests.test_complex_newobj	s���!�!�-��8������	*�E����E��*�
*��J�J�q�%�(���1�9��M�M�+�q�1��Q�Y��M�M�,��2��Q�Y��M�M�":�A�>��M�M�/�1�5�� � �!1�&�-�-��!C�!"�e��-�� � �!1�&�2B�2B�A�!F�G��J�J�q�M���#�#�A�q�)�
*�
*�	*�
*�
*���C&D0�0D:	c�z�tjtd�}d|_tD�]}|j	|��5|j||�}|dkr|j
d|�nB|dkr|j
d|�n*|dkr|j
d	|�n|j
d
|�|jttj|��|jttj|�d|k�|j|�}|j||�ddd���y#1swY��xYwrz)�ComplexNewObjExr�r�rrrr�rPrrrvr�rwrr�rs     r�test_complex_newobj_exz*AbstractPickleTests.test_complex_newobj_ex*	s���#�#�O�V�<������	*�E����E��*�
*��J�J�q�%�(���1�9��M�M�+�q�1��Q�Y��M�M�,��2��Q�Y��M�M�":�A�>��M�M�/�1�5�� � �!1�&�-�-��!C�D�� � �!1�&�2B�2B�A�!F�!"�e��-��J�J�q�M���#�#�A�q�)�
*�
*�	*�
*�
*�r}c��tgd��}d|_d|_|j|d�}|j	|�}|j||�y)Nr%r�r6r�)�SlotListr�r�rrr�)r.r'rr�s    r�test_newobj_list_slotsz*AbstractPickleTests.test_newobj_list_slots>	sG���Y����������J�J�q�!����J�J�q�M�����A�q�!rc��tD]�}t�}|j|jd�|j	||�}|j|jd�|j|�}|j|jd���yrM)r�REX_oner��_reduce_calledrrrs     r�'test_reduce_overrides_default_reduce_exz;AbstractPickleTests.test_reduce_overrides_default_reduce_exF	sw���	2�E��	�A����Q�-�-�q�1��
�
�1�e�$�A����Q�-�-�q�1��
�
�1�
�A����Q�-�-�q�1�
	2rc��tD]�}t�}|j|jd�|j	||�}|j|j|�|j|�}|j|jd���yr$)r�REX_twor��_protorrrs     r�test_reduce_ex_calledz)AbstractPickleTests.test_reduce_ex_calledO	sq���	-�E��	�A����Q�X�X�t�,��
�
�1�e�$�A����Q�X�X�u�-��
�
�1�
�A����Q�X�X�t�,�
	-rc��tD]�}t�}|j|jd�|j	||�}|j|j|�|j|�}|j|jd���yr$)r�	REX_threer�r�rrrs     r�test_reduce_ex_overrides_reducez3AbstractPickleTests.test_reduce_ex_overrides_reduceX	sq���	-�E���A����Q�X�X�t�,��
�
�1�e�$�A����Q�X�X�u�-��
�
�1�
�A����Q�X�X�t�,�
	-rc��tD]�}t�}|j|jd�|j	||�}|j|j|�|j|�}|j|j|���yr$)r�REX_fourr�r�rrrs     r�test_reduce_ex_calls_basez-AbstractPickleTests.test_reduce_ex_calls_basea	sq���	.�E��
�A����Q�X�X�t�,��
�
�1�e�$�A����Q�X�X�u�-��
�
�1�
�A����Q�X�X�u�-�
	.rc��tD]�}t�}|j|jd�|j	||�}|j|jd�|j|�}|j|jd���yrM)r�REX_fiver�r�rrrs     r�test_reduce_calls_basez*AbstractPickleTests.test_reduce_calls_basej	sw���	2�E��
�A����Q�-�-�q�1��
�
�1�e�$�A����Q�-�-�q�1��
�
�1�
�A����Q�-�-�q�1�
	2rc�6�t�}td�D]A}tj�5|j	t
|j||�ddd��Ctdtjdz�D]}|j
||�}�y#1swY��xYw)Nr�r)	�
BadGetattrr7r�infinite_recursionr�RuntimeErrorrrr))r.r'rrs    r�test_bad_getattrz$AbstractPickleTests.test_bad_getattrs	s���
�L���1�X�	F�E��+�+�-�
F��!�!�,��
�
�A�u�E�
F�
F�	F��1�f�5�5��9�:�	%�E��
�
�1�e�$�A�	%�
F�
F�s�#B�B	c��Gd�dt�}Gd�dt�}tD]2}	|j|�|�	|j|�|��4y#tj$rY�0wxYw#tj$rY�dwxYw)Nc��eZdZd�Zy)�7AbstractPickleTests.test_reduce_bad_iterator.<locals>.Cc��tddgdfSrg)r�r2s rrszBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__�	s���R��r�4�/�/rN�r<r=r>rsr%rrrXr��	���
0rrXc��eZdZd�Zy)�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_iterator}	s���	0��	0�	0��	0��	�E�
��
�
�1�3��&�
��
�
�1�3��&�
	���'�'�
��
���'�'�
��
�s#�A�A4�A1�0A1�4B
�	B
c�Z�d�td�D�}td�|D��}t|�t|�t|�g}tD]R}|j|��5|j	||�}|j|�}|j
||�ddd��Ty#1swY�_xYw)Nc3�8K�|]}dt|�z���y�w)�aaaNrx)�.0r�s  r�	<genexpr>z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>�	s����3�1���A���3�s�rmc3�(K�|]
}|gd�f���y�w))r�r�r�Nr%)r��ks  rr�z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>�	s����7�Q�1�i�.�7�s�rs)r7r�rrrrr�)r.r9�
large_dictr�rr]rDs       r�test_many_puts_and_getsz+AbstractPickleTests.test_many_puts_and_gets�	s���4��c�
�3���7�$�7�7�
��J���j�!1�4�
�3C�D���	1�E����E��*�
1����C��/�����F�+���#�#�C��0�
1�
1�	1�
1�
1�s� 6B!�!B*	c�0�tD]�}t�}d|_d|_|j	||�}|j|�}t
|j�}t
|j�}t||�D]\}}|j||����y)Nr�r6)
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�J�'�F��A�J�J�'�F� #�F�F� 3�
,���u��
�
�e�U�+�
,�		,rc���|jtd�d�}|j|t�|jt	dg�d�}|j|t
�y)Nr�r�r�)rr7r�r6r5�	DATA_SET2r\s  r�test_pickle_to_2xz%AbstractPickleTests.test_pickle_to_2x�	sN��
���E�!�H�a�(�������-����C���H�a�(�������+rc���tD]l}dtddztf}|j||�}|j	|�}|jt|�t|��|j||��ny)Nrsxyix)rr+r+rrr�)r.rrr]rDs     r�test_large_picklesz&AbstractPickleTests.test_large_pickles�	sl���	+�E��s�E�Y�/��5�D��Z�Z��e�,�F��Z�Z��'�F����S��[�#�d�)�4����V�T�*�	+rc	��tD]�}|j|��5td�D�cgc]}|jd|z|���}}t	tt|��}|jt|�|�|dk\r0|D]+}|jttj|���-ddd���ycc}w#1swY��xYw)Nrs�Fr�)
rrr7rr��mapr+r�r�rPrr�LONG)r.rr!�pickles�sizesr�s      r�test_int_pickling_efficiencyz0AbstractPickleTests.test_int_pickling_efficiency�	s����	K�E����E��*�
K�<A�"�I�F�q�4�:�:�a��d�E�2�F��F��S��g�.�/��� � �����6��A�:�$�K���(�(�)9�&�+�+�q�)I�J�K�

K�
K�	K��F�
K�
K�s�C�B<�A+C�<C�C
	c��|j||�}|jt||��|j|�}|j	||�yr$)rr�rrr�)r.r�rSrr�r�s      r�_check_pickling_with_opcodez/AbstractPickleTests._check_pickling_with_opcode�	sD���*�*�S�%�(�����(���9�:��J�J�w�'�	�����i�(rc���tgd��}tD]J}|dk(r"|j|tj|��*|j|tj
|��Ly)Nr%r)r=rr�r�APPENDrd�r.r�rs   r�test_appends_on_non_listsz-AbstractPickleTests.test_appends_on_non_lists�	sP���i� ���	M�E���z��0�0��f�m�m�U�K��0�0��f�n�n�e�L�		Mrc���tdddd��}tD]J}|dk(r"|j|tj|��*|j|tj
|��Ly)Nr�������r%r)r[rr�r�SETITEMrhr�s   r�test_setitems_on_non_dictsz.AbstractPickleTests.test_setitems_on_non_dicts�	sW���B�2�"�-�.���	N�E���z��0�0��f�n�n�e�L��0�0��f�o�o�u�M�		Nrr�r]c���dx}}hd�}tj|�D�]\}}}|�|j||�||k(rd}|�P|j|jd�|j|vr�|jt|�|j�nl|jdk(s&|j|vr<t|�|jkDr$|�5|j||z
|j�d}n|�|jdk7r|}|jdk(s��|j||j�|dz|z}��t|�}|�|j||�y|� |j||z
|j�yy)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_MINrmr�)r.r��	frame_end�frameless_start�frameless_opcodesrra�poss        r�check_frame_opcodesz'AbstractPickleTests.check_frame_opcodes�	sz��'+�*�	�O�:��'�.�.�w�7�	*�L�B��S��$��$�$�S�)�4��)�#� $�I��$��#�#�B�G�G�W�5��7�7�/�/��(�(��S��4�3I�3I�J��G�G�w�&��W�W� 1�1���X�� 6� 6�6�&�2�����o�(=�(,�(;�(;�=�*.��$�,����G�1C�&)�O��w�w�'�!��'�'��T�-@�-@�A��!�G�c�M�	�9	*�<�'�l��� ����Y��,�
�
(��O�O�C�/�1�4�3F�3F�G�)r�cpuc��ttd��}tdtjdz�D]�}|j	|��5|j||�}|j
|�}|j||�t|�ttj|�z}|j||jdz�|j||jdz�|j|�ddd���y#1swY��xYw)Ni��r�rrsr�)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
s����5��<� ���1�f�5�5��9�:�	2�E����E��*�

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

2�

2�	2�

2�

2�s
�B+C=�=D	c�\�d}td�D�cgc]}|g��}}d|zg|�d|z�d|z�}tdtjdz�D�]B}dD�]9}|j||�	�5|s|j	||�}net|d
�s
	ddd��Ct
j�}|j||��}	||	_	|	j|�|j�}|j|�}
|j|D�cgc]
}t|���c}|
D�cgc]
}t|���c}�|j||
�ttj |�}|j|d�|j#|�ddd���<��Eycc}wcc}wcc}w#1swY��ZxYw)Nirb�x�y�zr�r)FT)r�fast�pickler�r�)r7rr)rrr�r6rBr�r��dumprDrr�r+r"r�r�)
r.�Nr��small_itemsr�rr�r��bufr�r�r'�n_framess
             r�test_framing_large_objectsz.AbstractPickleTests.test_framing_large_objects+
s�����$)�"�I�.�q��s�.��.��a�x�9�+�9�t�a�x�9��q��9���1�f�5�5��9�:�	6�E�%�
6���\�\��D�\�9�6��#'�*�*�S�%�"8�� '�t�Y�7�$�6�6�!�j�j�l��"&�,�,�s�U�,�"C��'+������S�)�"%�,�,�.�� $�
�
�7� 3�I��$�$�c�%:��c�!�f�%:�6?�%@��c�!�f�%@�B��$�$�S�)�4�+�F�L�L�'�B�H��$�$�X�q�1��,�,�W�5�16�6�
6�	6��/��(&;��%@�#6�6�s7�
F�(#F!�A/F!�F�F!�F�-AF!�
F!�!F+c	��tjdkrydd�}|j}d}ttfD�]}t|�D�cic]}|||g�|z��}}tdtjdz�D]�}|j
||�}||�}	|jttj|	�d�|j||j|	��||d��}
|jttj|
�ttj|��|j||j|
������ycc}w)Nr�c�
�g}d}tj|�D]'\}}}|jdk(s�|j|��)t	�}d}t|�D]\}	}|r	||	�r�||||z
}||z}�|||dz
}|S)z+Remove frame opcodes from the given pickle.r�r�rN)rrr�r�rt�	enumerate)
r��
keep_frame�frame_starts�frame_opcode_sizerS�_r��	newpickle�last_frame_endr�s
          r�
remove_framesz?AbstractPickleTests.test_optional_frames.<locals>.remove_framesO
s����L� !��"-�"4�"4�W�"=�
-����3��;�;�'�)� �'�'��,�
-�"��I��N�#�L�1�
9���3��*�Q�-���W�^�C�8�8�	�!$�'8�!8��	
9�

����1�1�I��r�rrc��|dzSrr%)r�s rr;z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>p
s
��a�!�e�rr$)rr)r�r�rtr7rr�r"r�rr�)r.r��
frame_size�
num_frames�
bytes_typer�r�rr��frameless_pickle�some_frames_pickles           r�test_optional_framesz(AbstractPickleTests.test_optional_framesK
s1���"�"�Q�&��	�&�+�+�
��
�!�)�,�
	F�J�<A�*�<M�N�q�1�j�!��o�
�2�2�N�C�N��q�&�"9�"9�A�"=�>�

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

F�
	F��Ns�Ec
�b�Gd�d�}tdtjdz�D�]k}ttd��D�cgc]-}t	|�jd�|dzdt	|�if��/}}|j
d	|jd
zdzz�|�}|j||�j|�|j�}|j|�}|j||�|jt|j�d�~t!j"�|j|j�|�t|�dz
|jzdz}|j%t|j�|�|j't|j�d|zdz�|jD�	cgc]
}	t|	���}
}	|
D�cgc]}||jk\r|��}}|
D�cgc]}d
|cxkr|jkrnn|��}
}|
D�cgc]
}|d
ks�	|��}}|D]"}|j)|d|jz|
��$|j't|�t|�t|
�zdz|
���nycc}wcc}	wcc}wcc}wcc}w)Nc�"�eZdZdZd�Zd�Zd�Zy)�YAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.c��g|_yr$)�chunksr2s rrHzbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__y
s	�� ��rc�:�|jj|�yr$)rr�)r.�chunks  rrGz_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.write{
s�����"�"�5�)rc�8�dj|j�S)Nr)rrr2s r�concatenate_chunkszlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunks}
s���x�x����,�,rN)r<r=r>rIrHrGr
r%rr�ChunkAccumulatorrw
s��D�
!�
*�
-rrr�rg��@rr�r��0123456789abcdefr�r�r�r�)r7rr)r�ryr r�r�r�r�r
rr�r�r+rr�
gc_collectrmr�r�)r.rrr��objects�writerr��
reconstructedr�r��chunk_sizesr�large_sizes�medium_sizes�small_sizes�
chunk_sizes                r�+test_framed_write_sizes_with_delayed_writerz?AbstractPickleTests.test_framed_write_sizes_with_delayed_writeru
s���	-�	-��1�f�5�5��9�:�5	.�E� %�c�#�h��1���A��
�
�g�.��B���c�!�f�
�F�1�G�1�
�N�N�-� �2�2�b�8�1�<�>�
?�&�'�F��L�L���'�,�,�W�5�
�/�/�1�G� �J�J�w�/�M����]�G�4����s�6�=�=�1�1�5����� ����V�6�6�8�'�B��G��q�(�T�-C�-C�C�a�G�H��#�#�C��
�
�$6��A�

� � ��V�]�]�!3�Q��\�A�5E�F�+1�=�=�9�a�3�q�6�9�K�9�&1�;���4�#9�#9�9��;�K�;�'2�>�!��!�<�d�&<�&<�<��>�L�>�&1�<��Q�!�V�1�<�K�<�*�
-�
����
�A��0F�0F�,F� +�-�
-�
� � ��[�!1�!$�[�!1�C��4E�!E��!I�!,�
.�g5	.��1��H:��;��>��<s$�2J�J�#J"�!J'�(
J,�3J,c	��Gd�d�attjdz�D]�}tjtjj
tjj
jfD]Q}|j||��5|j|j||��}|j||�ddd��S��y#1swY�`xYw)Nc� �eZdZGd�d�Zy)�Nestedc� �eZdZGd�d�Zy)�Nested.Ac� �eZdZGd�d�Zy)�
Nested.A.Bc��eZdZy)�Nested.A.B.CNrkr%rrrXr�
s��rrXN)r<r=r>rXr%rrr?r�
s���rr?N)r<r=r>r?r%rr�Ar�
s���rr N)r<r=r>r r%rrrr�
s��
�
rrr)rr�)rr7rr)r r?rXrrrr�)r.rr�r�s    r�test_nested_namesz%AbstractPickleTests.test_nested_names�
s���	�	�
�6�2�2�Q�6�7�	2�E����&�(�(�*�*�f�h�h�j�j�l�l�;�
2���\�\��3�\�7�2� $�
�
�4�:�:�c�5�+A� B�I��M�M�#�y�1�2�2�
2�	2�2�2�s�
4C�Cc��Gd�d�atjtjt_dt_t
tjdz�D]X}|j|��5|j|jt|��}|j|t�ddd��Zt`y#1swY�kxYw)Nc��eZdZy)�	RecursiveNrkr%rrr$r$�
���rr$zRecursive.mod.Recursiverrs)
r$r��modulesr=�modr>r7rr)rrrr�)r.rr�s   r�test_recursive_nested_namesz/AbstractPickleTests.test_recursive_nested_names�
s���	�	����I�$8�$8�9�	�
�!:�	���6�2�2�Q�6�7�	4�E����E��*�
4� �J�J�t�z�z�)�U�'C�D�	��
�
�i��3�
4�
4�	4�
�M�
4�
4�s�1<B>�>C	c	���Gd�d�atjtjt�jtjj
tjjtj	�jf}tjtftjjtjff}ttjdz�D]�}|D][}|j||��5|j|j||��}|j|�|��ddd��]|D]g\}}|�}|j||��5|j|j||��}|j||�||��ddd��i��tjdtjdf}ttjdz�D]G}|D]@}	|j||	��5|j!t"|j|	|�ddd��B�Iy#1swY��cxYw#1swY��xYw#1swY�ixYw)Nc�F�eZdZed��Zed��Zd�ZGd�d�Zy)�
PyMethodsTestc��y)N�cheeser%r%rrr-zPyMethodsTest.cheese�
s��rc��|tusJ�y)N�wine)r+�r�s rr/zPyMethodsTest.wine�
s���m�+�+�rc�(�t|t�sJ�y)N�biscuits)r�r+r2s rr2zPyMethodsTest.biscuits�
s��!�$�
�6�6�!rc�6�eZdZdZed��Zed��Zd�Zy)�PyMethodsTest.NestedzNested classc��y)N�ketchupr%r%rrr6zPyMethodsTest.Nested.ketchup�
s��$rc�,�|tjusJ�y)N�maple)r+rr0s rr8zPyMethodsTest.Nested.maple�
s���-�"6�"6�6�6�"rc�<�t|tj�sJ�y)N�pie)r�r+rr2s rr:zPyMethodsTest.Nested.pie�
s��%�d�M�,@�,@�A�A� rN)	r<r=r>rI�staticmethodr6r�r8r:r%rrrr4�
s.����%��%��#��#�!rrN)	r<r=r>r;r-r�r/r2rr%rrr+r+�
s5��
�
 ��
 �
�
��
�
"�
!�
!rr+r�r�methodr-r/�r�descr)r+r-r/r2rr6r8r:r7rr)rrrr�rZrr�)
r.�
py_methods�py_unbound_methodsrr=r�r�r��descriptorsr?s
          r�test_py_methodsz#AbstractPickleTests.test_py_methods�
s;��	!�	!�2
� � �����O�$�$�� � �(�(�� � �&�&�� � �"�&�&�

�
��
#�
#�]�3�
�
!�
!�
%�
%�}�';�';�<�
���6�2�2�Q�6�7�		B�E�$�
<���\�\��f�\�=�<� $�
�
�4�:�:�f�e�+D� E�I��$�$�V�X�y�{�;�<�<�
<� 2�
B�����e���\�\��f�\�=�B� $�
�
�4�:�:�f�e�+D� E�I��$�$�V�C�[�)�C�.�A�B�B�
B�		B�
�"�"�8�,��"�"�6�*�
���6�2�2�Q�6�7�	K�E�$�
K���\�\��U�\�;�K��%�%�i����U�E�J�K�K�
K�	K�<�<��
B�B��K�K�s%�>I�.AI�#I!�I�I�!I*c��Gd�dt�adjdftjdfgd�jdft
jgd�ffdd	hjd
ftjdd	hd	fftjdftjdftgd
��jd
ftjtgd
��d	fftjd�jdftjjtjd�dfff}ttj dz�D]a}|D]Z\}}|j#||��5|j%|j'||��}|j)||�||��ddd��\�ctj*dtj*df}ttj dz�D]G}|D]@}|j#||��5|j-t.|j&||�ddd��B�Iy#1swY��xYw#1swY�[xYw)Nc�"�eZdZGd�de�Zy)�Subclassc��eZdZy)�Subclass.NestedNrkr%rrrrH
s��rrN)r<r=r>ryrr%rrrFrFs��
��
rrF�abcd)r�)rIr�r%r%rr�)r�))r~r)rr�)sabcr�)rr�r��sweet)r-r-r<�	maketransr�r>)r@rF�indexry�__len__r��__contains__r5r�r�rtrK�countrr7rr)rrrr�rZrr�)r.�	c_methodsrr=r/r�rBr?s        r�test_c_methodsz"AbstractPickleTests.test_c_methods
s&��	�u�	��\�\�6�"�
�Y�Y�
�&�
�
�
��#�
�\�\�I�<�(���V�
 �
 �$�'�
�
�
��A���{�+�
�]�]�0�1�
�
 �
 �"2�3�
�g�
�
$�
$�d�+�
�^�^�h�w�/��3�4�
�_�_�W�
%�
+�
+�V�4�
�_�_�
"�
"�X�_�_�W�%=�s�$C�D�+
�	�.�6�2�2�Q�6�7�	F�E� )�
F�����\�\��f�\�=�F� $�
�
�4�:�:�f�e�+D� E�I��$�$�V�T�]�I�t�4D�E�F�F�
F�	F�
���{�+��M�M�*�%�
���6�2�2�Q�6�7�	K�E�$�
K���\�\��U�\�;�K��%�%�i����U�E�J�K�K�
K�	K�F�F��K�K�s�:H,�<#H8�,H5�8Ic
��tdd�ddfttd�ddftjddft
jd	d	ft�d
dftj�dd
ftj�ddftj�ddfg}|D]�\}}}td�D]�}|jt|�|��5|j||�}|jd|�d|��j!�|�|j#t|j%|��t|��ddd�����y#1swY��xYw)Nrr��__builtin__�xrange�123�	itertools�imapr�r��
exceptionsr<r��IterableUserDict�UserListr��defaultdictr�)r�rr�r�)r7r�r�r�r�r�r�r<r�r�rZr[rr�rr�r r�r)r.�tests�valr'r�rr�s       r�test_compat_picklez&AbstractPickleTests.test_compat_pickle6s:��
�1�a�[�-��2�
��e�_�k�6�2�
�
�
�}�h�7�
�[�[�)�Y�/�
�[�,��4�
�
!�
!�
#�Z�1C�D�
�
!�
!�
#�Z��<�
�
$�
$�
&�
�}�E�	
��$�	H�N�C��d��q��
H���\�\�t�C�y��\�>�H�"�j�j��e�4�G��M�M��T�#:�"B�"B�"D�g�N��M�M�$�t�z�z�'�':�";�T�#�Y�G�H�H�
H�	H�H�H�s
�A,E�E
c�8�d�}tdtjdz�D]U}|jttj
f�5t
j|j||��ddd��W|`	tdtjdz�D]U}|jttj
f�5t
j|j||��ddd��W|j|_tdtjdz�D]U}|jttj
f�5t
j|j||��ddd��Wy#1swY��`xYw#1swY��xYw#1swY�{xYw)Nc��yr$r%r%rrr
z6AbstractPickleTests.test_local_lookup_error.<locals>.fK���rrr)r7rr)r�AttributeErrorr�rr!rr=r>r<�r.r
rs   r�test_local_lookup_errorz+AbstractPickleTests.test_local_lookup_errorHs^��	��1�f�5�5��9�:�	6�E��"�"�N�F�4H�4H�#I�J�
6�����
�
�1�e� 4�5�
6�
6�	6�

�L��1�f�5�5��9�:�	6�E��"�"�N�F�4H�4H�#I�J�
6�����
�
�1�e� 4�5�
6�
6�	6��^�^��
��1�f�5�5��9�:�	6�E��"�"�N�F�4H�4H�#I�J�
6�����
�
�1�e� 4�5�
6�
6�	6�
6�
6��
6�
6��

6�
6�s$�	&E7�&F�&F�7F	�F
	�F	c#�.K�d}t|���t|���t�ot|�}tj|d��}dtjfD]7}t|dd|����t|ddd	|�
���t|ddd|�
����9yy�w)N�abcdefgh�little)�	byteorderrr?)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_objectsas����� �
��J�'�'��
�+�+��"���$�E��N�N�:��N�B�E��[�4�4�5�

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

4�#�s�BBc�&�|j�D�]}}tdtjdz�D�]Y}|j	||�}|j
r|dk\r|j
d|�|jttj|�d�|dk\r�|jttj|�|jrdnd�|jttj|�|jrdnd�d�}|j	|||��}|j||�|j|�}|j||�|jt!|�t!|��|j||���\���y)Nrrr�rfc��y�NTr%�r�s r�buffer_callbackzAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback�s��#r�rp)rkr7rr)rr�r�r�r"�NEXT_BUFFER�SHORT_BINBYTESr�r�rr�r�r�)r.r�rrrp�data2r�s       r�test_in_band_buffersz(AbstractPickleTests.test_in_band_buffersusP���+�+�-�	+�C��q�&�"9�"9�A�"=�>�
+���z�z�#�u�-���#�#���
��M�M�+�t�4�� � ��f�.@�.@�$�!G��K��A�:��$�$�\�&�2G�2G��%N�*-�,�,�Q�A�?��$�$�\�&�2C�2C�T�%J�*-�,�,�Q�A�?�$� �J�J�s�E�7F�'�H�E��$�$�U�D�1��j�j��&��� � ��c�*��
�
�d�3�i��c��3�� � ��c�*�/
+�	+rc���|j�D�]�}tdd�D]>}|jt�5|j	||gj
��ddd��@tdtjdz�D�]#}g��fd�}|j	|||��}|jd|�|jttj|�d�|jttj|�d�|jttj|�d�|jttj|�|jrdnd�|j r|jt#�d�d�|jtj$�5|j'|�ddd�|j'|���}|j(r|j+||�n6|j+t-|�t-|��|j||�|j'|t/����}|j(r|j+||����|j+t-|�t-|��|j||���&���y#1swY���xYw#1swY��xYw)Nrr�rqrc�B���j|j��Sr$)r�r�)r��bufferss �rr;z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>�s���W�^�^�B�F�F�H�-E�rrf�rx)rkr7rr+rr�rr)r�r�r"rsr�rr�READONLY_BUFFERr�r�r�rcrr�r�r��iter)r.r�rrprr�rxs      @r�test_oob_buffersz$AbstractPickleTests.test_oob_buffers�sI����+�+�-�&	/�C��q�!��
:���&�&�z�2�:��J�J�s�E�/1�y�y��:�:�:�
:�
�q�&�"9�"9�A�"=�>� 
/����"E���z�z�#�u�2A�"�C��� � ��d�3�� � ��f�.C�.C�T�!J�A�N�� � ��f�.?�.?��!F��J�� � ��f�.@�.@�$�!G��K�� � ��f�.D�.D�d�!K�&)�l�l���;��#�#��$�$�U�7�1�:�%6��D��&�&�v�'=�'=�>�%��J�J�t�$�%��j�j��w�j�7���,�,��M�M�#�s�+��M�M�$�s�)�T�#�Y�7��$�$�S�#�.��j�j��t�G�}�j�=���,�,��M�M�#�s�+��M�M�$�s�)�T�#�Y�7��$�$�S�#�.�A 
/�
&	/�:�:��$%�%�s�J+�0J8�+J5�8Kc�T�td�}tdtjdz�D]}}g}|j}|j|||��}t
t|�}|j||��}|jt|�t|��|j||��y�N�foobarr�rrqry)r�r7rr)r�rr�rtrr�r�r�)r.r�rrxrprr�s       r�%test_oob_buffers_writable_to_readonlyz9AbstractPickleTests.test_oob_buffers_writable_to_readonly�s����I�&���1�f�5�5��9�:�	'�E��G�%�n�n�O��:�:�c�5�/�:�J�D��)�W�-�G��*�*�T�7�*�3�C��M�M�$�s�)�T�#�Y�/����S�#�&�	'rc���tjd�}tdd�D]<}|jtj�5|j||�ddd��>y#1swY�IxYw)Nrrr�)rr�r7r�PickleErrorr)r.r�rs   r�test_picklebuffer_errorz+AbstractPickleTests.test_picklebuffer_error�sc��
�
 �
 ��
+���1�a�[�	&�E��"�"�6�#5�#5�6�
&��
�
�2�u�%�
&�
&�	&�
&�
&�s�A"�"A+	c��d�}tjd�}|jt�5|j	|d|��ddd�y#1swYyxYw)Nc��ddzyr(r%rys rrpzGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callback�s	��
�a�Crrr�rq)rr�r�ZeroDivisionErrorr)r.rpr�s   r�test_buffer_callback_errorz.AbstractPickleTests.test_buffer_callback_error�sM��	�
�
 �
 ��
+��
�
�
�0�
1�	?��J�J�r�1�o�J�>�	?�	?�	?�s�A�Ac���tjd�}tdtjdz�D]�}|j	||gj
��}|j
t�5|j|t���ddd�|j
tj�5|j|g��ddd���y#1swY�GxYw#1swY��xYwr~)rr�r7r)rr�rr�rr?rc)r.r�rrs    r�test_buffers_errorz&AbstractPickleTests.test_buffers_error�s���
�
 �
 ��
+���1�f�5�5��9�:�	-�E��:�:�b�%����:�C�D��"�"�9�-�
3��
�
�4���
�2�
3��"�"�6�#9�#9�:�
-��
�
�4��
�,�
-�
-�
	-�
3�
3��
-�
-�s�)C�,C�C	�C 	c��tdtjdz�D])}|jd|d��}|j	|d��}�+y)Nr�rrqry)r7rr)rr)r.r�data_pickledrs    r�+test_inband_accept_default_buffers_argumentz?AbstractPickleTests.test_inband_accept_default_buffers_argument�sI���1�f�5�5��9�:�	:�E��:�:�a���:�E�L��:�:�l�D�:�9�D�	:rNzTest needs Numpyc������fd���fd�����fd�}tjd�}||�||ddd��tjd�jd�}||�||j�||ddd��y)Nc���tjj||��j|jj
|jj
�yr$)�np�testing�assert_equalr��ctypesr�r'r�r.s  �r�
check_no_copyz=AbstractPickleTests.test_buffers_numpy.<locals>.check_no_copy�s7����J�J�#�#�A�q�)����Q�X�X�]�]�A�H�H�M�M�:rc���tjj||��j|jj
|jj
�yr$)r�r�r�r�r�rr�s  �r�
check_copyz:AbstractPickleTests.test_buffers_numpy.<locals>.check_copy�s7����J�J�#�#�A�q�)�������
�
�q�x�x�}�}�=rc�t��tdtjdz�D].}�j||�}�j	|�}�||��0tdtjdz�D]3}d�}�j|||��}�j	|�}�||��5tdtjdz�D]v}g}|j
}�j|||��}�j	||��}|jjs|jjr
�||��n�||��xy)Nrrr�c��yrnr%)r�s rr;zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>���rrqry)	r7rr)rrr�r�r�r�)	�arrrrr�rprxr�r�r.s	      ���r�check_arrayz;AbstractPickleTests.test_buffers_numpy.<locals>.check_array�s$����q�&�"9�"9�A�"=�>�
%���z�z�#�u�-���j�j��&���3��$�
%��q�&�"9�"9�A�"=�>�
%��"0���z�z�#�u�o�z�N���j�j��&���3��$�	
%��q�&�"9�"9�A�"=�>�
)����")�.�.���z�z�#�u�o�z�N���j�j��w�j�7���9�9�)�)�S�Y�Y�-C�-C�!�#�s�+��s�C�(�
)rr�r��r$)r��arange�reshape�T)r.r�r�r�r�s`  @@r�test_buffers_numpyz&AbstractPickleTests.test_buffers_numpy�su���	;�	>�	)�.�i�i��l���C���C��!��H���i�i��m�#�#�F�+���C���C�E�E���C��!��H�rc	����	�ddlm�	G���	fd�d�atD]y}t	d�D]i}d�t	d�D�cic]}t�t���c}��D]}||_�|_�d�	|j�|�}|j|��k�{ycc}w#t$r'}d}|j|t|��Yd}~��d}~wwxYw)	Nr)�getrandbitsc�*��eZdZ�fd�Zd�Z��fd�Zy)�Badc����Sr$r%)r.r\�ENABLEDs  �rr]z
Bad.__eq__s����rc��yr;r%r2s r�__hash__zBad.__hash__s��rc�J���d�dk(r�j�tdfS)Nr�rr%)�clearr�)r.�
collectionr�s ��rrszBad.__reduce__ s%����q�>�Q�&��$�$�&��R�y� rN)r<r=r>r]r�rs)r�r�r�s���rr�r�s���
�
�
!rr�r�FT�changed size during iteration)�randomr�r�rr7r3r�rrr�r�ry)
r.rr�r3rr-r�r�r�r�s
       @@@r�test_evil_class_mutating_dictz1AbstractPickleTests.test_evil_class_mutating_dicts����&�	!�	!��
	4�E��2�Y�
4����49�"�I�>�q�c�e�S�U�l�>�
�%�0�C�!�C�G�%/�C�N�0���4��:�:�j�%�8�D��J�J�t�$�
4�
	4��?��$�4�>�H��M�M�(�C��F�3�3��4�s�B�3#B � 	C�)C�Cc�����t�d�s�jt���d���Gd�d�a��fd�}tD]��|t�g�|t�t�g�|t�h�|t�t�h�|t�di�|t�dt�di�|t�t�d����y)	Nr�z has no associated pickler typec��eZdZy)�ClearerNrkr%rrr�r�:r%rr�c����G�fd�d�j�}|tj���}	|j��y#t$r'}d}�j|t
|��Yd}~yd}~wwxYw)Nc���eZdZ�fd�Zy)�]AbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPicklerc�F��t|t�r�j�yr$)r�r�r�)r.r�r�s  �r�
persistent_idzkAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickler.persistent_id?s���!�#�w�/�"�(�(�*�rN)r<r=r>r�)r�s�r�EvilPicklerr�>s��� rr�r�)r�r6rBr�r�r�ry)r�r�r�r-r�rr.s`    ��r�checkzHAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check=sb���
 �d�l�l�
 �
"�"�*�*�,��6�G�
0����Z�(���
0�:���
�
�h��A��/�/��
0�s�A�	A8�A3�3A8rr�r!)r��skipTestr�r�r)r.r�rs` @r�%test_evil_pickler_mutating_collectionz9AbstractPickleTests.test_evil_pickler_mutating_collection4s�����t�Y�'��-�-�4��:�,�.M� N�O�O�	�	�	0��	0�E��7�9�+���7�9�g�i�(�)��7�9�+���7�9�g�i�(�)��7�9�a�.�!��7�9�a���A�.�/��g�i�G�I�.�/�	0r)�r<r=r>�	optimizedr�r
rr�rrr&r(r/r1r6r>rArCrFrJrPrRrUr\r_rarcrfrhrjrlrorqrsrurxr|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�rrrrrrr.r3r7r9rArGrJrNrTrWrZr_rfrjrorxr|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_task�requires_resourcer�r�rrr!r(rCrQr^rdrkrur|r�r�r�r�r��unittest�skipIfr�r�r�r�r%rrrr�sq���I�%�/�/�I�
�+�9�9�N�&�(/�	,�08�Q�
#�(�9�E�:B�q�&�42�C�O�08�Q�
#�(�9�G�:B�q�&�42�C�Q�4<��6�,�=�K�>F�ST�9�86�G�U�/�,	%�
+�.�27�8�@�6�<�9�:�B�8�>�&�)�,	+�'�&�
6�L�&&��%�.0��X�w��0�:�1�:�/�.�7�,�*�&"�-�2�4�,�4�J�&L�L�%?�N?�2&�&�A�A�&	(�
 � �89�9�
9�
2�,3�.9�2*� *�(*�("�2�-�-�.�2��%��%��.1�,�,�+�
K�)�M�N��N�!��-H�^
����W���u�%�
2�&��
2�6�@(F�T
���?.��?.�B2�
�8K�t*K�XH�$6�24�(+�>(/�T'�&�?�	-�:�
�X�_�_�R�4�Z�!3�4�*�5�*�X4�<0rrc��eZdZeedd��d��Zeedd��d��Zeedd��d��Zeedd��d	��Z	eedd��d
��Z
y)�BigmemPickleTestsg������@F)�size�memuse�dry_runc� �dd|zz}	tD]Z}|dkr�	|j|��5|jttf�5|j||��ddd�ddd��\	d}y#1swY�xYw#1swY�vxYw#d}wxYw)Nrr�r�rsr�)rrrr+rdr)r.r�rrs    r�test_huge_long_32bz$BigmemPickleTests.test_huge_long_32bXs����Q��X���	�"�
9���1�9���\�\��\�.�9��*�*�J�
�+F�G�9��
�
�4�%�
�8�9�9�9�
9��D�9�9��9�9���D�s:�!B	�A=�A1�A=�#
B	�1A:�6A=�=B	�B	�	B
g@c
��d|dzz}	tD]�}|dkr�	|j|��5	|j||��}tjtjdt|��z}|j|�}|j|||t|�z
|�d}	ddd���	d}y#d}wxYw#1swY��xYw#d}wxYw)N�abcdr�r�rsr�rM)
rrrrr�rOrPr+rLr��r.r�rrr��header�
data_starts       r�test_huge_bytes_32bz%BigmemPickleTests.test_huge_bytes_32bis����$�!�)�$��	�"�

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

'��D��#'���
'�
'���D�s:�!C�B:�A5B3�"B:�%
C�3B7�7B:�:C	�?C�C
c
�@�d|dzz}	tD]�}|dkr�	|j|��5|dk(rA|jttf�5|j||��ddd�	ddd��b	|j||��}tjtjdt|��z}|j|�}|j|||t|�z
|�d}	ddd���	d}y#1swY��xYw#d}wxYw#1swY��xYw#d}wxYw)Nsacbdr�r�rsr��<Q)
rrrr+rdrrr�rOrPr+rLr�r�s       r�test_huge_bytes_64bz%BigmemPickleTests.test_huge_bytes_64b~s.���$�!�)�$��	�"�
'���1�9���\�\��\�.�'���z�"�.�.�
�M�/J�K�=� �J�J�t�e�J�<�=� �
'�'�	'�"&�*�*�T�E�*�"B��"(�"2�"2�"(�+�+�d�C��I�">�#?��%,�]�]�4�%8�
��(�(�"�#�J�s�6�{�$:�:�F�H�#'��!'�'�
'�*�D�=�=��#'���!'�'��$�D�sY�!D�!D�C9� 	D�)	D�3A5D�(D�+
D�9D�>D�D	�	D�D	�D�Dr�c
�*�d|dzz}	tD]�}|dk(r�	|j|��5	|j||��}tjtjdt|��z}|jd�}|j|||t|�z
|�|j|jd�td�z|jd�z
t|��d}	ddd���	d}y#d}wxYw#1swY��xYw#d}wxYw)NrIr�rrsr�rMr�)rrrrr�rOrPr+rLr��rindexr�s       r�test_huge_str_32bz#BigmemPickleTests.test_huge_str_32b�s������#��	�"�
'���A�:���\�\��\�.�'�'�"&�*�*�T�E�*�"B��"(�"3�"3�"(�+�+�d�C��I�">�#?��%,�]�]�7�%;�
��(�(�"�#�J�s�6�{�$:�:�F�H��(�(�'�.�.��*A�C��L�*P�*1�-�-��*@�+A�CF�t�9�N�#'��'�'�
'�"�D��#'���'�'���D�s:�!D�D�B=C;�*D�-
D�;C?�?D�D	�D�Dc
���d|dzz}	tD�]+}|dk(r�
|j|��5|dkrA|jttf�5|j||��ddd�	ddd��c	|j||��}tjtjdt|��z}|jd�}|j|||t|�z
|�|j|jd�td�z|jd�z
t|��d}	ddd���.	d}y#1swY��xYw#d}wxYw#1swY��PxYw#d}wxYw)NrIr�rrsr�r�r�)rrrr+rdrrr�rOrPr+rLr�r�r�s       r�test_huge_str_64bz#BigmemPickleTests.test_huge_str_64b�sj������#��	�"�
'���A�:���\�\��\�.�'��q�y�!�.�.�
�M�/J�K�=� �J�J�t�e�J�<�=� �	'�'�
'�"&�*�*�T�E�*�"B��"(�"4�"4�"(�+�+�d�C��I�">�#?��%,�]�]�7�%;�
��(�(�"�#�J�s�6�{�$:�:�F�H��(�(�'�.�.��*A�C��L�*P�*1�-�-��*@�+A�CF�t�9�N�#'��!'�'�
'�*�D�!=�=��#'���!'�'��$�D�sY�"E#�!E�
E�!	E�*	E#�4B=E�1E�4E#�E�E�E�E�E 	�E#�#E'N)r<r=r>rr
r�r�rr�r�r�r%rrr�r�Ts����S��e�4�
�5�
� �S��e�4��5��(�S��e�4��5��:�S��E�2��3��4�S��E�2��3�rr�c��eZdZdZdZd�Zy)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�Zy)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�Zy)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�Zy)r�z(Calling base class method should succeedNc�<�||_tj||�Sr$)r�r?r�r�s  rr�zREX_four.__reduce_ex__�s������#�#�D�%�0�0rr�r%rrr�r��s��2�
�F�1rr�c��eZdZdZdZd�Zy)r�z-This one used to fail with infinite recursionrc�:�d|_tj|�SrL)r�r?rsr2s rrszREX_five.__reduce__�s������ � ��&�&rNr�r%rrr�r��s��7��N�'rr�c�*�eZdZdZdd�Zd�Zd�Zd�Zy)r=z]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    Nc�&�|�||_yg|_yr$r:)r.r�s  rrHzREX_six.__init__����#�/�U��
�R��
rc�d�t|�t|�uxr|j|jk(Sr$)r�r�r[s  rr]zREX_six.__eq__��'���D�z�T�%�[�(�F�T�Z�Z�5�;�;�-F�Frc�:�|jj|�yr$)r�r�)r.�items  rr�zREX_six.append
s���
�
���$�rc�H�t|�ddt|j�dfSrg)r�r{r�r2s rrszREX_six.__reduce__
s ���D�z�2�t�T�$�*�*�%5�t�;�;rr$)r<r=r>rIrHr]r�rsr%rrr=r=�s���8�G� �<rr=c�*�eZdZdZdd�Zd�Zd�Zd�Zy)r[z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    Nc�&�|�||_yi|_yr$rX)r.rYs  rrHzREX_seven.__init__

r�rc�d�t|�t|�uxr|j|jk(Sr$)r�rYr[s  rr]zREX_seven.__eq__
r�rc�"�||j|<yr$rX)r.r0rps   r�__setitem__zREX_seven.__setitem__
s����
�
�3�rc�d�t|�dddt|jj��fSrg)r�r{rYr�r2s rrszREX_seven.__reduce__
s)���D�z�2�t�T�4��
�
�0@�0@�0B�+C�C�Crr$)r<r=r>rIrHr]r�rsr%rrr[r[
s���8�G� �Drr[c�*�eZdZdZdd�Zd�Zd�Zd�Zy)r�zUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    Nc��||_yr$�r��r.r�s  rrHzREX_state.__init__
rqrc�d�t|�t|�uxr|j|jk(Sr$�r�r�r[s  rr]zREX_state.__eq__
r�rc��||_yr$r�r�s  r�__setstate__zREX_state.__setstate__
rqrc�2�t|�d|jfSrgr�r2s rrszREX_state.__reduce__
s���D�z�2�t�z�z�)�)rr$)r<r=r>rIrHr]r�rsr%rrr�r�
s����G��*rr�c��eZdZdZy)rCrN�r<r=r>r>r%rrrCrC#
s��
�FrrCc��eZdZdZy)�MyFloatg�?Nr�r%rrr�r�&
s��
�Frr�c��eZdZdZy)�	MyComplexy�?Nr�r%rrrr)
s��
�Frrc��eZdZdZy)�MyStrr6Nr�r%rrrr,
s��
�Frrc��eZdZdZy)�	MyUnicodeu	hello ሴNr�r%rrrr/
s��
�Frrc��eZdZdZy)r�r%Nr�r%rrr�r�2
s��
�Frr�c��eZdZgd�Zy)r5r%Nr�r%rrr5r55
s��
�Frr5c��eZdZddd�Zy)rTrr�r}Nr�r%rrrTrT8
s���1�
�FrrTc��eZdZddhZy)r�r~rNr�r%rrr�r�;
s���3�Z�Frr�c� �eZdZeddh�Zy)r�r~rN)r<r=r>r�r>r%rrr�r�>
s��
��S�z�
"�Frr�c��eZdZd�Zy)�MyIntWithNewc��t�r$)�AssertionError)r�rps  rr�zMyIntWithNew.__new__G
s���rN)r<r=r>r�r%rrrrF
s��rrc�$�eZdZejZy)rIN)r<r=r>r�r�r%rrrIrIJ
s���k�k�GrrIc��eZdZdgZy)r�r�N)r<r=r>r�r%rrr�r�N
s	����Irr�c��eZdZd�Zd�Zy)rLc��td��)Nz3SimpleNewObj.__init__() didn't expect to get called)r�r�s   rrHzSimpleNewObj.__init__R
s���M�N�Nrc�f�t|�t|�k(xr|j|jk(Sr$)r�rZr[s  rr]zSimpleNewObj.__eq__U
s'���4�y�C��J�&�J�4�=�=�E�N�N�+J�JrN)r<r=r>rHr]r%rrrLrLQ
s��O�KrrLc��eZdZd�Zy)r{c��d|zdfS)N�%Xr�r%r2s r�__getnewargs__zComplexNewObj.__getnewargs__Y
s���t��R� � rN)r<r=r>rr%rrr{r{X
s��!rr{c��eZdZd�Zy)rc��d|zfddifS)Nr�baser�r%r2s r�__getnewargs_ex__z!ComplexNewObjEx.__getnewargs_ex__]
s���t��~���|�+�+rN)r<r=r>rr%rrrr\
s��,rrc��eZdZd�Zy)r�c��|jyr$)r�)r.r0s  r�__getattr__zBadGetattr.__getattr__a
s	����rN)r<r=r>rr%rrr�r�`
s��rr�c�Z�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zy)�AbstractPickleModuleTestsc��ttd�}	|j�|jt|j
d|�t
jt�y#t
jt�wxYw�Nr��{�rr�closerr+r�r�unlink�r.r
s  r�test_dump_closed_filez/AbstractPickleModuleTests.test_dump_closed_fileg
�Q�������	%�
�G�G�I����j�$�)�)�S�!�<����V�$��I���V�$���2A�A9c��ttd�}	|j�|jt|j
d|�t
jt�y#t
jt�wxYwr"r$r's  r�test_load_closed_filez/AbstractPickleModuleTests.test_load_closed_fileo
r)r*c���tj�}didg}|j||�|jd�|j	|�}|j||�y)Nr#�|r)r6rBr�r8�loadr�)r.�streamrr�s    r�test_load_from_and_dump_to_filez9AbstractPickleModuleTests.test_load_from_and_dump_to_filew
sO��������R��~���	�	�$������A���I�I�f�%�	�����D�)rc�D�|jtjd�yr�)r�rr)r2s r�test_highest_protocolz/AbstractPickleModuleTests.test_highest_protocol
s������0�0�!�4rc��tj�}|jd|d�|jd|d��|jdd�|jdd��|j	|d�|j	|d��y)Nr#r�)�filer�r�)r6rBr�r�Picklerr's  r�test_callapiz&AbstractPickleModuleTests.test_callapi�
sk���J�J�L���	�	�#�q�"���	�	�#�A��	�+��
�
�3����
�
�3��
�$����Q������Q���$rc�2�ttd�}	tD]%}|jt|j
d||��'	|j
�tjt�y#|j
�tjt�wxYw)N�wr#)	rrrrr�r�r%rr&rcs   r�test_dump_text_filez-AbstractPickleModuleTests.test_dump_text_file�
sr�������	%�"�
G���!�!�)�T�Y�Y��Q��F�
G�
�G�G�I����V�$��
�G�G�I����V�$�s�.A+�++Bc��tjd�}|jttj
tjf|j|�y)NsX''.)	r6rBrr�rOr�rrcr/)r.rs  r�test_incomplete_inputz/AbstractPickleModuleTests.test_incomplete_input�
s8���J�J�w������8�V�\�\�6�3I�3I�J�D�I�I�WX�Yrc��Gd�d|j�}Gd�d|j�}|jtj|�j
d�|jtj|�j�y)Nc��eZdZd�Zy)�;AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklerc��yr$r%r2s rrHzDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__�
r�rNrcr%rr�
BadPicklerr?�
���$rrAc��eZdZd�Zy)�=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklerc��yr$r%r2s rrHzFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__�
r�rNrcr%rr�BadUnpicklerrD�
rBrrFr)r6�	Unpicklerrrr�r�rcr/)r.rArFs   r�
test_bad_initz'AbstractPickleModuleTests.test_bad_init�
sb��	%����	%�	%�4�>�>�	%�	
���&�.�.�
��0A�0A�1�E����&�0�0�,�.�2E�2E�Frc�����d��td���Gd�d�}|jttf|j|��G�fd�d�}|jttf|j|��G�fd�d�}|jttf|j|��G��fd�d�}|jt
|j|��G��fd�d�}|jt
|j|��G�fd	�d�}|jt
|j|��G�fd
�d�}|jtt
f|j|��G��fd�d�}	|j	|��G��fd�d�}	|j	|��y#t
$rY�0wxYw#t
$rYywxYw)
Nc��t�r$)rr�s   r�raises_oserrorzIAbstractPickleModuleTests.test_unpickler_bad_file.<locals>.raises_oserror�
s���Mrc��ddzyr(r%r2s r�bad_propertyzGAbstractPickleModuleTests.test_unpickler_bad_file.<locals>.bad_property�
s	��
�a�Crc��eZdZy��<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.FNrkr%rr�FrP�
r%rrQc���eZdZW�ZyrO�r<r=r>rF�rKs�rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s���%�Hrc���eZdZW�ZyrO�r<r=r>rErTs�rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s���!�Drc���eZdZW�ZW�ZyrO)r<r=r>rErF�rMrKs��rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s
����D�%�Hrc���eZdZW�ZW�ZyrO)r<r=r>rFrErXs��rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s
���#�H�!�Drc���eZdZW�ZyrOrS�rMs�rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s���#�Hrc���eZdZW�ZyrOrVr[s�rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s����Drc� ��eZdZW�ZW�ZW�ZyrO)r<r=r>r0rErFrXs��rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s����D�!�D�%�Hrc� ��eZdZW�ZW�ZW�ZyrO)r<r=r>�readintorErFrXs��rrQz<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F�
s���#�H�!�D�%�Hr)r�rrbr�rGr�)r.rQrMrKs  @@r�test_unpickler_bad_filez1AbstractPickleModuleTests.test_unpickler_bad_file�
s����	�	�	�
�	�	�	����>�9�5�t�~�~�q�s�K�	&�	&����>�9�5�t�~�~�q�s�K�	"�	"����>�9�5�t�~�~�q�s�K�	&�	&�	
���+�T�^�^�Q�S�A�	"�	"�	
���+�T�^�^�Q�S�A�	$�	$����+�T�^�^�Q�S�A�	 �	 ����>�+<�=�t�~�~�q�s�S�	&�	&�	��N�N�1�3��
	&�	&�	��N�N�1�3���!�	��	��!�	��	�s$�G�:G �	G�G� 	G,�+G,c���Gd�d�}|jt|j|��Gd�d�}|jt|j|��y)Nc��eZdZy)�:AbstractPickleModuleTests.test_pickler_bad_file.<locals>.FNrkr%rrrQrc�
r%rrQc��eZdZed��Zy)rcc��ddzyr(r%r2s rrGz@AbstractPickleModuleTests.test_pickler_bad_file.<locals>.F.write�
s	���!�rN)r<r=r>r�rGr%rrrQz:AbstractPickleModuleTests.test_pickler_bad_file.<locals>.F�
s��
�
��
r)rr�r6r�)r.rQs  r�test_pickler_bad_filez/AbstractPickleModuleTests.test_pickler_bad_file�
sI��	�	����)�T�\�\�1�3�7�	�	�	
���+�T�\�\�1�3�?rc�@�td�}tdd�D]5}|jt�5|||gj��ddd��7tdt
jdz�D]�}g}|j}||||��}|jd|�|jt|d�d�|jt
j�5||�ddd�|||��}|j||���y#1swY��xYw#1swY�4xYw)Nsfoorr�)r�rprry)r�r7rr+r�rr)r�r�r�rcr�)	r.rrr�rrxrprr�s	         r�check_dumps_loads_oob_buffersz7AbstractPickleModuleTests.check_dumps_loads_oob_buffers�
s���F�#���1�a�[�	1�E��"�"�:�.�
1��c�E�&(�i�i�1�
1�
1�	1�
�1�f�5�5��9�:�	$�E��G�%�n�n�O���u�)8�:�D����V�T�*����U�7�1�:�.��7��"�"�6�#9�#9�:�
��d��
���g�.�C��M�M�#�s�#�	$�
1�
1��
�
�s�D�	D�D	�D	c�P�|j|j|j�yr$)rhrrr2s r�test_dumps_loads_oob_buffersz6AbstractPickleModuleTests.test_dumps_loads_oob_bufferss���*�*�4�:�:�t�z�z�Brc�>���fd�}�fd�}�j||�y)Nc�t��tj�}�j||fi|��|j�Sr$)r6rBr�rD)r�r�r
r.s   �rrzCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumpss/����
�
��A��D�I�I�c�1�'��'��:�:�<�rc�T��tj|�}�j|fi|��Sr$)r6rBr/)rr�r
r.s   �rrzCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loadss'����
�
�4� �A��4�9�9�Q�)�&�)�)r)rh)r.rrs`  r�test_dump_load_oob_buffersz4AbstractPickleModuleTests.test_dump_load_oob_bufferss���	 �
	*�	
�*�*�5�%�8rN)r<r=r>r(r,r1r3r7r:r<rHr`rfrhrjrnr%rrr r e
sH��%�%�*�5�%�%�Z�
G�?�B@�$�0C�9rr c��eZdZd�Zd�Zd�Zy)�AbstractPersistentPicklerTestsc��t|t�r(|dzdk(r |xjdz
c_t|�S|dk(r|xjdz
c_yy)Nr�rr�test_false_valuerW)r�r��id_country�false_count)r.r?s  rr�z,AbstractPersistentPicklerTests.persistent_id$sN���f�c�"�v��z�Q���M�M�Q��M��v�;��
�)�
)�����!���rc��|s|xjdz
c_y|xjdz
c_t|�}|dzdk(sJ�|S)Nrrrr�r)�load_false_count�
load_countr�)r.�oidr?s   r�persistent_loadz.AbstractPersistentPicklerTests.persistent_load.sC����!�!�Q�&�!�%��O�O�q� �O���X�F��A�:��?�"��Mrc	���ttd��dgz}tD]�}d|_d|_d|_d|_|j|j|j||��|�|j|jd�|j|jd�|j|jd�|j|j
d���y)Nrbrrrr�r)
r�r7rrsrtrvrwr�rr)r.�Lrs   r�test_persistencez/AbstractPersistentPicklerTests.test_persistence8s�����r��O�1�2�2���		7�E��D�M� �D��$%�D�!��D�O����T�Z�Z��
�
�1�e�(<�=�q�A����T�]�]�A�.����T�-�-�q�1����T�_�_�a�0����T�2�2�A�6�		7rN)r<r=r>r�ryr|r%rrrprps����7rrpc�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�&AbstractIdentityPersistentPicklerTestsc��|Sr$r%)r.r�s  rr�z4AbstractIdentityPersistentPicklerTests.persistent_idH����
rc��|Sr$r%)r.�pids  rryz6AbstractIdentityPersistentPicklerTests.persistent_loadKr�rc��|j|j||��}|j|t|��|j	||�yr$)rrr*r�r�)r.r�rr�s    r�_check_return_correct_typezAAbstractIdentityPersistentPicklerTests._check_return_correct_typeNs?���J�J�t�z�z�#�u�5�6�	����i��c��3�����C�(rc��tD]<}|dk(r|jdd��ddddtfD]}|j||���>y)Nrr�sabc
zabc
r�g*\��(��)rr�ry)r.rr�s   r�test_return_correct_typez?AbstractIdentityPersistentPicklerTests.test_return_correct_typeSsV���	@�E���z��/�/��q�9�$�g�r�:�s�C�@�C��3�3�C��?�@�	@rc��d}|jtj|j|d�tj|jd�zdz}|jtj|j|�y)Nu∅rr�r*)rrr�r�PERSIDr rcr)r.�
non_ascii_strr�s   r�test_protocol0_is_ascii_onlyzCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_only\s_��'�
����&�.�.��
�
�M�1�M��-�-�-�"6�"6�w�"?�?�&�H�����&�0�0�$�*�*�g�FrN)r<r=r>r�ryr�r�r�r%rrr~r~Fs����)�
@�Grr~c�V�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	dd�d	�Z
d
�Zd�Zd�Z
d
�Zy)�#AbstractPicklerUnpicklerObjectTestsNc�<�|jsJ�|jsJ�yr$)�
pickler_class�unpickler_classr2s rrz)AbstractPicklerUnpicklerObjectTests.setUphs���!�!�!��#�#�#�#rc�$�gd�}tD�]}tj�}|j||�}|j	|�|j�}|j
d�|j�|j	|�|j�}|j�|j
d�|j�|j	|�|j�}|j||�|j||���y)N��abcdefgr��,r)rr6rBr�r�rDr8�truncate�
clear_memor�r�)r.rrr
r��
first_pickled�second_pickled�
third_pickleds        r�test_clear_pickler_memoz;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memols���*���	;�E��
�
��A��(�(��E�2�G��L�L����J�J�L�M�
�F�F�1�I�
�J�J�L��L�L����Z�Z�\�N�
��� �
�F�F�1�I�
�J�J�L��L�L����J�J�L�M����
�~�>����]�M�:�/	;rc�j�gd�}tj�}|j|�}|j|�|j	�}tj�}|j|�}|j
|_|j|�|j	�}|j
||�y�Nr�)r6rBr�r�rD�memor�)r.rr
r�r��primed�primed_pickleds       r�test_priming_pickler_memoz=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memo�s���)���J�J�L���$�$�Q�'�����T���
�
��
��J�J�L���#�#�A�&���l�l������D����������M�>�:rc���gd�}tj�}|j|�}|j|�|j	�}tj�}|j|�}|j
|_|j|�|j	�}|j
tj|��}|j�}|j||�|j
tj|��}|j
|_|j�}	|j
j�|j|	|�|j|	|u�yr�)r6rBr�r�rDr�r�r/r�r�r�)
r.rr
r�r�r�r��	unpickler�unpickled_data1�unpickled_data2s
          r�test_priming_unpickler_memoz?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memo�s��)���J�J�L���$�$�Q�'�����T���
�
��
��J�J�L���#�#�A�&���l�l������D��������(�(����M�)B�C�	�#�.�.�*������$�/��%�%�b�j�j��&@�A���n�n��� �+�+�-������������$�/�����?�:�;rc��gd�}tj�}|j|�}|j|�|j	�}gd�}tj�}|j|�}|j|�|j	�}tj�}|j|�|j
d�|j|�}|j|j�|�|j
d�|j�|j|�|j
d�|j|j�|�y)Nr�)r�r�r�r)r6rBr�r�rDrGr8r�r�r/r�)r.�data1r
r��pickled1rt�pickled2r�s        r�test_reusing_unpickler_objectszBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objects�s���*���J�J�L���$�$�Q�'�����U���:�:�<��#���J�J�L���$�$�Q�'�����U���:�:�<���J�J�L��	�����	���q�	��(�(��+�	�������)�5�1�	���q�	�	�
�
��	�����	���q�	�������)�5�1rT�r3c
��tD�]5}|j|��5td�D�cgc]}|t|�f��c}dtgz}|�}|j||��}|j
|�|j�}d}	|||	z�}|j|�}
t|	�D]c}|r|j�}|j|
j�|�|s�8|j|j�t	|�z��e|jt|
j�ddd���8ycc}w#1swY��IxYw)Nrsi�sabcder�r�)rrr7ryr+r�r�rDr�r;r�r/rr�)
r.�ioclassr3rr'r�r
r�r�r�r�r�r�s
             r�_check_multiple_unpicklingsz?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings�s)���	<�E����E��*�
<�.3�D�k�:��!�S��V��:�h��_�L���I���,�,�Q��,�?�����U�#��*�*�,�����G�a�K�(�� �0�0��3�	��q��G�A���f�f�h���$�$�Y�^�^�%5�u�=���(�(�����3��W��3E�F�G��!�!�(�I�N�N�;�!
<�
<�	<��:�
<�
<�s#�E�E�B'E�'AE�E�E	c�B�|jtj�yr$)r�r6rBr2s r�"test_multiple_unpicklings_seekablezFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekable�s���(�(����4rc�2�|jtd��y�NFr�)r�r*r2s r�$test_multiple_unpicklings_unseekablezHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekable�s���(�(���(�Frc�2�|jtd��yr�)r�r@r2s r�!test_multiple_unpicklings_minimalzEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimal�s��	
�(�(��U�(�Crc��ttd��}tD]�}tdd�D]�}tjtj
�|��}|j
||��}|j|�|jd�|j|�}|j|j�|�����y)Nrbr�)�buffer_sizer�r)r�r7rr6�BufferedRandomrBr�r�r8r�r�r/)r.rr�buf_sizer
r�r�s       r�"test_unpickling_buffering_readlinezFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline�s����E�"�I����	9�E�!�!�R�L�
9���%�%�b�j�j�l��I���,�,�Q��,�?�����T�"����q�	� �0�0��3�	�� � ����!1�4�8�

9�	9r)r<r=r>r�r�rr�r�r�r�r�r�r�r�r�r%rrr�r�csH���M��O�$�;�@;�$<�<2�2@D�<�(5�G�D�
9rr��reduce_Ac��eZdZd�Zy)r�c��ttffSr$)ryr�r2s rrszAAA.__reduce__s���X�K��rNr�r%rrr�r�s�� rr�c��eZdZd�Zd�Zy)�BBBc��d|_y)Nzsome attribute�r~r2s rrHzBBB.__init__s��"��rc��d|_y)N�BBB.__setstate__r�r�s  rr�zBBB.__setstate__s	��#��rN)r<r=r>rHr�r%rrr�r�
s��"�
$rr�c��d|_y)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�Erc��eZdZdZd�Zy)�AbstractCustomPicklerClassz<Pickler implementing a reducing hook using reducer_override.c��t|dd�}|dk(rtdfS|dk(rtdfS|dk(ry|dk(rtd	��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#s[���3�
�D�1���s�?���:���y� ��
�%�%�
��_��
��_��6�7�7��rN)r<r=r>rIr�r%rrr�r�!s
��F�rr�c�6�eZdZd�Zej
d��Zy)�AbstractHookTestsc�*�d�}d�}d�}Gd�d�}tdtjdz�D�]:}|j|��5t	j
�}|j
||�}|j||tjg�tj|j��\}}	}
|j|d	�|j|	d
�|j|
tj�|jtj�5|j|�ddd�|j!t"d�5|j|�ddd�ddd���=y#1swY�ExYw#1swY�!xYw#1swY��axYw)Nc��yr$r%r%rrr
z.AbstractHookTests.test_pickler_hook.<locals>.f?rarc��yr$r%r%rrr�z.AbstractHookTests.test_pickler_hook.<locals>.gBrarc��yr$r%r%rrr�z.AbstractHookTests.test_pickler_hook.<locals>.hErarc��eZdZy)�4AbstractHookTests.test_pickler_hook.<locals>.MyClassNrkr%rrr�r�Hr%rr�rrrsr�r�r�)r7rr)rr6rBr�r��math�logrrDr�r�rr��assertRaisesRegexr+)r.r
r�r�r�r�bior��new_f�some_str�math_logs           r�test_pickler_hookz#AbstractHookTests.test_pickler_hook:sS��
	�	�	�	�	��1�f�5�5��9�:�	�E����E��*�
��j�j�l���&�&�s�E�2������7�D�H�H�-�.�,2�L�L�����,H�)��x��� � ���*�� � ��:�6�
�
�
�h����1��&�&�v�';�';�<���F�F�1�I���+�+�"�$=�?���F�F�1�I��%
�
�	� ������%
�
�s=�CF�E0�,F�
E<�F�0E9�5F�<F�F�F	c��tdtjdz�D]�}|j|��5d�}t	j
|�}t
j�}|j||�}|j|�tj|j��}|dk(sJ�~~|j|��ddd���y#1swY��xYw)Nrrrsc��yr$r%r%rrr
zEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.fjs��rr�)
r7rr)rrD�refr6rBr�r�rrDrT)r.rr
�wrr�r�r�s       r�(test_reducer_override_no_reference_cyclez:AbstractHookTests.test_reducer_override_no_reference_cyclebs����1�f�5�5��9�:�	(�E����E��*�
(���[�[��^���j�j�l���&�&�s�E�2�����q�	����S�\�\�^�4����z�!����!�!�"�$�'�
(�
(�	(�
(�
(�s�BC�C	N)r<r=r>r�r�cpython_onlyr�r%rrr�r�9s"��&�P
���(��(rr�c�$�eZdZd�Zd�Zd�Zd�Zy)�AbstractDispatchTableTestsc���tj�}|j|d�}|jt�5|j
ddd�|j
t|d��y#1swY�%xYw)Nr�dispatch_table)r6rBr�rrbr�rPr�)r.r
r�s   r�test_default_dispatch_tablez6AbstractDispatchTableTests.test_default_dispatch_table}sa���J�J�L�����q�!�$��
�
�
�~�
.�	�
���	������$4�5�6�	�	�s�
A-�-A6c������j��G�fd�d�j��d���fd�	}�j|��y)Nc���eZdZW�Zy)�GAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r<r=r>r�)�dts�r�	MyPicklerr��s����Nrr�c���tj�}�||�}�j|j��|j	|�|j�Sr$)r6rBr�r�r�rD)r�r�r
r�r�r�r.s    ���rrzCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumps�sG����
�
��A��!�X�&�A����Q�-�-�r�2�
�F�F�3�K��:�:�<�rr$)�get_dispatch_tabler��_test_dispatch_table)r.rr�r�s` @@r�test_class_dispatch_tablez4AbstractDispatchTableTests.test_class_dispatch_table�s:���
�
$�
$�
&��	 ��*�*�	 �	 �	
�!�!�%��,rc�Z����j��d��fd�	}�j|��y)Nc����tj�}�j||�}�|_�j	|j��|j|�|j
�Sr$)r6rBr�r�r�r�rD)r�r�r
r�r�r.s    ��rrzFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumps�sU����
�
��A��"�"�1�h�/�A�!�A�����Q�-�-�r�2�
�F�F�3�K��:�:�<�rr$)r�r�)r.rr�s` @r�test_instance_dispatch_tablez7AbstractDispatchTableTests.test_instance_dispatch_table�s(���
�
$�
$�
&��	 �	
�!�!�%��,rc������fd�}d�}d}|j||�|�|j||�|�d��fd�}||t<|j||���|j||�|�t�}t�}|j||�t�|j||�t�|j||�t�|j||�t�||t<|j||�t�|j||���|j||�t�|j||�t�d��fd�}	|	|t<|t=|j||���|j||�t�|j||�t�|j||�t�|j||�jd�d	�}
|
|t<|j||�jd
�y)Nc�<��tj�|d��S�Nr)rr)r�rs �r�custom_load_dumpzIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dump�s����<�<��c�1�
�.�.rc�T�tjtj|d��Sr�)rrrros r�default_load_dumpzJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dump�s���<�<����S�!� 4�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 �rrzAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2�rrr�c�6�td|jddtfSrg)r�rZr�ros r�
reduce_bbbzCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbb�s����C�L�L�$��l�B�Brr�)r��complexr�r�r�r*r~)
r.rr�r�r�r�r�r~rrrrrs
 `         @@rr�z/AbstractDispatchTableTests._test_dispatch_table�s���	/�	6�

�����)�!�,�a�0����*�1�-�q�1���	$�"*��w�����)�!�,�h�7����*�1�-�q�1�
�E���E�����)�!�,�h�7����.�q�1�3�7����*�1�-�x�8����/��2�C�8�'��s�����)�!�,�h�7����)�!�,�h�7����*�1�-�x�8����/��2�C�8���	$�&��s���3�����)�!�,�h�7����.�q�1�3�7����*�1�-�x�8����/��2�C�8�	
���*�1�-�/�/�1C�D�	C�)��s��	
���)�!�,�.�.�0E�FrN)r<r=r>r�r�r�r�r%rrr�r�{s��7�-� -�@Grr�r zDATA{0} = (r�z	    {0!r}r�z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")�r�r�rNr�r6r�r�r�rrr�rOr�rr
r�rD�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��ArithmeticErrorrrbr�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�r=r[r�rC�floatr�rrryrrr@r�r�r5r�rTr5r�r�r�r<rrIr�rLr{rr�r rpr~r�r�r�r�r�r�r�r�r<r!r'r�rr�rr�r+�jrr%rr�<module>r5s>�����
�	��	��
��
�
�
������%����"���.�)�)�F��
�	&�	(����#�x�"�"�3�;�;��#6�#M�O��
�&�)�)�A�-�.�	��
�
�&�2�:�:�&�	%��	%�,:�:�*/�/�
��
����
	�	� � ��
��
����
��
����
��
�����C���a��	��	�	�F�i�	�8��8�� �E� �8 �	� �8��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	!�Lj0�j0�Z5|�|�B�f���f��@��@�1�v�1�'�v�'�<�f�<�D��D�*��*� �C���e������C������e���T���T���C��#�)�#��G�
�
�I�
�f�f�e�[�
:�	�
�3���L���v��K�3�K�!�L�!�,�l�,���
v9�v9�r%7�%7�PG�G�:\9�\9�B�� �&� �$�&�$�	"���0?(�?(�DhG�hG�V�z����
�A�
�6�*�*�1�,�
-����F�L�L��A���
�m�"�"�1�%�&��q�#�a�&�"�%�	)�A��a��!�B�$�i� �A��+�$�$�Q�'�(�	)�	�c�
�
��
�(�/�/��2�3�
�&�-�-�a�0�1��A��
�h��
���	��_~���K���(�����	
�B��s<�S�S8�S+�S8�S(�'S(�+S5�0S8�8T�T