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

�iv4�
@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlmZzddlZWneyadZYnwddlmZddlmZddlmZmZmZmZmZm Z ddl!m"Z"ddl#m$Z$dd	lm%Z%dd
l&m'Z'ddlm(Z(ze'��ddl)Z*Wd�n1s�wYWney�dZ*Ynwe�+ej,dkd
�Z-e.ej/d�Z0dd�Z1dd�Z2dd�Z3Gdd�dej4�Z5Gdd�de6�Z7Gdd�d�Z8Gdd�d�Z9Gdd�de9�Z:Gdd �d e9�Z;Gd!d"�d"�Z<Gd#d$�d$�Z=ddl>Z>e9e>_9d%e9_?e:e>_:d%e:_?e;e>_;d%e;_?Gd&d'�d'e@�ZAGd(d)�d)e9�ZBGd*d+�d+eC�ZDGd,d-�d-e6eDd.�ZEGd/d0�d0eC�ZFd1d2�ZGGd3d4�d4eH�ZIGd5d6�d6eJ�ZKedu�rzGd7d8�d8�ZLd9ZMd:ZNd;ZOd<ZPd=ZQd>ZRd?ZSd@ZTdAZUdBZVdCZWdDZXdEZYdFZZge[�e\�e]�e^�e_�e`�ea�eb�ec�ed�ee�ef�eg�eh�e�ei�ej�ek�el�em�en�eo�ep�eq�er�es�et�eu�ev�ew�ex�ey�ez�e{�e|�e}�e~�e�e��e��e��e��e��e��RZ�dGZ�dHZ�dIdJ�Z�GdKdL�dL�Z�GdMdN�dN�Z�GdOdP�dP�Z�GdQdR�dRe6�Z�GdSdT�dTe6�Z�GdUdV�dVe6�Z�GdWdX�dXe6�Z�GdYdZ�dZe6�Z�Gd[d\�d\e6�Z�Gd]d^�d^e6�Z�Gd_d`�d`e6�Z�Gdadb�dbe@�Z�Gdcdd�dde��Z�Gdedf�dfe��Z�Gdgdh�dhe��Z�Gdidj�dje��Z�Gdkdl�dle��Z�Gdmdn�dne��Z�Gdodp�dpe��Z�Gdqdr�dre��Z�Gdsdt�dte��Z�e�e�e�e�e�e�e�e�e�e�g
Z�Gdudv�dve@�Z�Gdwdx�dxe��Z�Gdydz�dze��Z�Gd{d|�d|e@�a�Gd}d~�d~t��Z�Gdd��d�t��Z�Gd�d��d��Z�Gd�d��d��Z�Gd�d��d��Z�Gd�d��d��Z�Gd�d��d��Z�d�Z�Gd�d��d�e6�Z�Gd�d��d�e6�Z�d�d��Z�Gd�d��d��Z�Gd�d��d��Z�Gd�d��d��Z�e�d%k�r�dd�l	m�Z�e��Z�e.ej/d�D]OZ�e��e�e��Z�e�d���e���e.de�e��d��D]Z�eHe�e�e�d���Z�e�d���eġ��qTe�d��e��e�d���e���e�d���e���e�e��e�d��e���q=dSdS)��N)�dedent)�SimpleCookie)�support)�	os_helper)�
TestFailed�run_with_locale�
no_tracing�_2G�_4G�
bigmemtest)�forget)�TESTFN)�threading_helper)�save_restore_warnings_filters)�bytes_typeslz(test is only meaningful on 32-bit builds�cCs0t�|�D]\}}}|j|�d�krdSqdS)N�latin-1TF��pickletools�genops�code�decode)r�pickle�op�dummy�r�./usr/local/lib/python3.10/test/pickletester.py�opcode_in_pickle;s
�rcCs6d}t�|�D]\}}}|j|�d�kr|d7}q|S)Nrrrr)rr�nrrrrr�count_opcodeBs�rcCs|S�Nr��xrrr�identityJ�r#c@�,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�UnseekableIOcG�t�r )�NotImplementedError��self�argsrrr�peekOr$zUnseekableIO.peekcC�dS)NFr�r*rrr�seekableRr$zUnseekableIO.seekablecG�tj�r ��io�UnsupportedOperationr)rrr�seekU�zUnseekableIO.seekcCr0r r1r.rrr�tellXr5zUnseekableIO.tellN)�__name__�
__module__�__qualname__r,r/r4r6rrrrr&Ns
r&c@�eZdZdZdd�ZdS)�	MinimalIOz=
    A file-like object that doesn't support readinto().
    cGs8tj|�|_|jj|_|jj|_|jj|_|jj|_dSr )r2�BytesIOZ_bio�getvalue�read�readline�writer)rrr�__init__`s



zMinimalIO.__init__N)r7r8r9�__doc__rArrrrr;\sr;c@�eZdZdd�Zdd�ZdS)�ExtensionSavercCsD||_|tjvrtj||_t�|jd|jd|�dSd|_dS�Nrr)r�copyreg�_inverted_registry�pair�remove_extension)r*rrrrrAus


zExtensionSaver.__init__cCs\|j}tj�|�}|durt�|d|d|�|j}|dur,t�|d|d|�dSdSrE)rrFrG�getrIrH�
add_extension)r*rZcurpairrHrrr�restore~s�zExtensionSaver.restoreN)r7r8r9rArLrrrrrDrs	rDc@�eZdZdd�ZdS)�CcCs|j|jkSr )�__dict__�r*�otherrrr�__eq__��zC.__eq__N)r7r8r9rRrrrrrN��rNc@rM)�DcC�dSr r)r*�argrrrrA�r$z
D.__init__N�r7r8r9rArrrrrU�rTrUc@rM)�EcCr-�Nrrr.rrr�__getinitargs__�r$zE.__getinitargs__N)r7r8r9r[rrrrrY�rTrYc@�eZdZdS)�ObjectN�r7r8r9rrrrr]��r]c@rC)�KcC�
||_dSr )�value)r*rbrrrrA��
z
K.__init__cCst|jffSr )r`rbr.rrr�
__reduce__�szK.__reduce__N)r7r8r9rArdrrrrr`��r`�__main__c@rM)�myintcCst|�|_dSr ��str)r*r"rrrrA��zmyint.__init__NrXrrrrrg�rTrgc@rC)�initargcCs||_||_dSr ��a�b)r*rmrnrrrrA��
zinitarg.__init__cCs|j|jfSr rlr.rrrr[�rSzinitarg.__getinitargs__N)r7r8r9rAr[rrrrrk�srkc@r\)�	metaclassNr^rrrrrp�r_rpc@r\)�
use_metaclassNr^rrrrrq�r_rq)rpc@rC)�pickling_metaclasscC�t|�t|�ko
|j|jkSr )�type�reduce_argsrPrrrrR�s
�zpickling_metaclass.__eq__cCs
t|jfSr )�create_dynamic_classrur.rrrrd�rczpickling_metaclass.__reduce__N)r7r8r9rRrdrrrrrr�srrcCst||t��}||f|_|Sr )rr�dictru)�name�bases�resultrrrrv�s
rvc@s<eZdZdZdZdZdZdd�Zdd�ZeZ	e
dd��ZdS)	�
ZeroCopyBytesTcC�4|dkrt|�jt�|�fdfSt|�jt|�ffS�N��rt�_reconstructr�PickleBuffer�bytes�r*�protocolrrr�
__reduce_ex__��zZeroCopyBytes.__reduce_ex__cC�d�|jjt|��S�Nz{}({!r})��format�	__class__r7r�r.rrr�__repr__��zZeroCopyBytes.__repr__cC�Xt|��}|j}t|�|ur|Wd�S||�Wd�S1s%wYdSr ��
memoryview�objrt��clsr��mrrrr���
�$�zZeroCopyBytes._reconstructN�r7r8r9�readonly�c_contiguous�f_contiguous�zero_copy_reconstructr�r��__str__�classmethodr�rrrrr{��r{c@s<eZdZdZdZdZdZdd�Zdd�ZeZ	e
dd��Zd	S)
�ZeroCopyBytearrayFTcCr|r}rr�rrrr��r�zZeroCopyBytearray.__reduce_ex__cCr�r�r�r.rrrr��r�zZeroCopyBytearray.__repr__cCr�r r�r�rrrr��r�zZeroCopyBytearray._reconstructNr�rrrrr��r�r�c@speZdZdZdd�Zdd�Zedd��Zedd	��Zed
d��Z	dd
�Z
dd�Zdd�Zdd�Z
edd��ZdS)�PicklableNDArrayFcOstj|i|��|_dSr )�_testbufferZndarray�array�r*r+�kwargsrrrrA	�zPicklableNDArray.__init__cCs"t|�}|�|�}|j||_|Sr )rt�__new__r�)r*�idxr��newrrr�__getitem__s
zPicklableNDArray.__getitem__cC�|jjSr )r�r�r.rrrr��zPicklableNDArray.readonlycCr�r )r�r�r.rrrr�r�zPicklableNDArray.c_contiguouscCr�r )r�r�r.rrrr�r�zPicklableNDArray.f_contiguouscCsbt|t�stS|jj|jjko0|jj|jjko0|jj|jjko0|jj|jjko0|j��|j��kSr )	�
isinstancer��NotImplementedr�r��shape�stridesr��tobytesrPrrrrRs
����zPicklableNDArray.__eq__cCst|t�stS||kSr )r�r�r�rPrrr�__ne__'s

zPicklableNDArray.__ne__cCs.t|��d|jj�d|jj�d|j���d�S)Nz(shape=z	,strides=z, bytes=�))rtr�r�r�r�r.rrrr�,s
��zPicklableNDArray.__repr__cCs�|jjstd��|jj|jj|jj|jrdntjd�}t	�
|j�}|dkr.t|�j||ffS|�
��}t|�j|��|ffWd�S1sHwYdS)Nz>Reconstructing a non-contiguous ndarray does not seem possibler)r�r�r��flagsr~)r��
contiguousr(r�r�r�r�r��ND_WRITABLErr�rtr��rawr�)r*r�Zndarray_kwargs�pbr�rrrr�1s$
��

�$�zPicklableNDArray.__reduce_ex__cCsDt|��}t|���}Wd�n1swY||fi|��Sr )r��listr�)r�r�r�r��itemsrrrr�Ds
�zPicklableNDArray._reconstructN)r7r8r9r�rAr��propertyr�r�r�rRr�r�r�r�r�rrrrr�s 


	r�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.cCs�t�}d|_d|_gd�}d}d}d}|�dd|||d|||d|||dg�dd||f}|�|�|�|�|�d	�|S)
Nr�)rrg@y@��������abcr~)rN�foo�bar�extend�append)�cr"Zuint1maxZuint2maxZint4max�yrrr�create_data,s"�


r�c@s�eZdZe�Zd\dd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zed$d%��Zed&d'��Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zed2d3��Zed4d5��Zed6d7��Z d8d9�Z!d:d;�Z"d<d=�Z#d>d?�Z$d@dA�Z%edBdC��Z&dDdE�Z'dFdG�Z(dHdI�Z)dJdK�Z*dLdM�Z+dNdO�Z,dPdQ�Z-dRdS�Z.dTdU�Z/dVdW�Z0dXdY�Z1e2j3dZd[��Z4dS)]�AbstractUnpickleTestsNcCs�|dur
d�||�}|j|||d�|jt|�t|�|d�t|d�r7|j|j|j|d�|j|j|j|d�t|d�rj|j|j	|j	|d�|j	D]"}|jt||�t||�|d�|jt
||d�t
||d�|d�qIdSdS)zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r})�msgrO�	__slots__)r��assertEqual�assertIsrt�hasattrZassertDictEqualrO�assertIsNotZassertListEqualr��getattr)r*r�Zobjcopyr�Zslotrrr�assert_is_copyFs$


���z$AbstractUnpickleTests.assert_is_copycCs�|j|d��K|�|��-z|�|�Wnty1}ztjdkr,td||jj|f��d}~wwWd�n1s<wYWd�dSWd�dS1sTwYdS)N)�datarz%-32r - %s: %s)	�subTest�assertRaises�loads�
BaseExceptionr�verbose�printr�r7)r*�errorsr��excrrr�check_unpickling_errorXs�
����P�z,AbstractUnpickleTests.check_unpickling_errorcC�|�|j|�t��dSr )r��	_testdatar��DATA0r.rrr�test_load_from_data0c�z*AbstractUnpickleTests.test_load_from_data0cCr�r )r�r�r��DATA1r.rrr�test_load_from_data1fr�z*AbstractUnpickleTests.test_load_from_data1cCr�r )r�r�r��DATA2r.rrr�test_load_from_data2ir�z*AbstractUnpickleTests.test_load_from_data2cCr�r )r�r�r��DATA3r.rrr�test_load_from_data3lr�z*AbstractUnpickleTests.test_load_from_data3cCr�r )r�r�r��DATA4r.rrr�test_load_from_data4or�z*AbstractUnpickleTests.test_load_from_data4cCs�tdftdftdffD]@\}}|j�d�}	d�d|�}|�||�|�|��	d�d|�}|�||�|�|��	d�d|�}|�||�|�|��qdS)Nrr!�asciis(i__main__
X
p0
(dp1
b.�Xs(c__main__
X
qoq}qb.s�(c__main__
X
qoq}qb.)rNrUrYr7�encode�replacer�r�)r*�Xr+ZxnameZpickle0Zpickle1Zpickle2rrr�test_load_classic_instancers$
����z0AbstractUnpickleTests.test_load_classic_instancecCsVd}dt|��d�d}|�|�}|�||�dt|��d�d}|�t|�dS)Nl�����Ir��
.sJUNK
.)rir�r�r�r��
ValueError)r*Zmaxint64r��gotrrr�
test_maxint64�s
z#AbstractUnpickleTests.test_maxint64cCsX|�t�}|�|tddg��|�t�}|�t|�ttd���|�t|�ttd���|�t�}|�t|�t	�|�t|�
��dg�|�|djd�tD]}t
�d|j�d��}|�|�}|�t|�|�qO|�t
�dd	��}|�t|�t�|�t�}|�t|�t�|�|jd
�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nrr�rr~�keyrb�?r��
StandardErrorr��bad)r��DATA_SETr��set�DATA_XRANGErt�ranger��DATA_COOKIEr�keysrb�python2_exceptions_without_args�exception_pickler�r7r�r��	Exception�
DATA_UEERR�UnicodeEncodeError�object�encoding�start�end�reason)r*�loadedr�r�rrr�test_unpickle_from_2x�s,




z+AbstractUnpickleTests.test_unpickle_from_2xcC�F|�|jddd�d�|�|jddd�d�|�|jddd�d�dS)NsS'a\x00\xa0'
.r��rsa�sUa�.s�Ua�.�r�r�r.rrr�test_load_python2_str_as_bytes��
��
��
��z4AbstractUnpickleTests.test_load_python2_str_as_bytescCr)Ns	V\u03c0
.r�r	uπsXπ.s
�Xπ.r
r.rrr� test_load_python2_unicode_as_str�rz6AbstractUnpickleTests.test_load_python2_unicode_as_strcCs2|�|jtjt�dd�dtjdd�d�dS)N�<Ii,s,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�r	)r�r�r�	BINSTRING�struct�pack�STOPr.rrr�#test_load_long_python2_str_as_bytes�s
�����z9AbstractUnpickleTests.test_load_long_python2_str_as_bytescCs\|�|�d��|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�dS)NsN.s�.Ts�.FsI01
.sI00
.)�assertIsNoner�r�r.rrr�test_constants�s
z$AbstractUnpickleTests.test_constantscCs|jddd�}|�|d�dS)Ns�Uq.zkoi8-rr	�)r�r�)r*�emptyrrr�test_empty_bytestring�sz+AbstractUnpickleTests.test_empty_bytestringcC�d}|�|�|�d�dS)Ns	�C€.�€r
�r*�dumpedrrr�test_short_binbytes��z)AbstractUnpickleTests.test_short_binbytescCr)Ns�B€.rr
rrrr�
test_binbytesrz#AbstractUnpickleTests.test_binbytescC�d}|�tjtf|�dS)Ns
�B����xyzq.�r�r�UnpicklingError�
OverflowErrorrrrr�test_negative_32b_binbytes��z0AbstractUnpickleTests.test_negative_32b_binbytescCr )Ns
�X����xyzq.r!rrrr�test_negative_32b_binunicoder%z2AbstractUnpickleTests.test_negative_32b_binunicodecCr)Ns	��€.�€r
rrrr�test_short_binunicoderz+AbstractUnpickleTests.test_short_binunicodecCsD|�tjd�|�tjd�|�tjd�|�ddg|�d��dS)Nsg0
p0sjens:shens:)�ds((Kdtp0
hl.)))r�rr"r�r�r.rrr�
test_misc_gets
�z#AbstractUnpickleTests.test_misc_getcCr)Ns��€.rr
rrrr�test_binbytes8rz$AbstractUnpickleTests.test_binbytes8cCr)Ns��€.r'r
rrrr�test_binunicode8!rz&AbstractUnpickleTests.test_binunicode8cCsd}|�|�|�td��dS)Ns��xxx.sxxx)r�r��	bytearrayrrrr�test_bytearray8%sz%AbstractUnpickleTests.test_bytearray8cCr )Ns��€.r!rrrr�test_large_32b_binbytes8)��z.AbstractUnpickleTests.test_large_32b_binbytes8cCr )Ns��€.r!rrrr�test_large_32b_bytearray8/r0z/AbstractUnpickleTests.test_large_32b_bytearray8cCr )Ns��€.r!rrrr�test_large_32b_binunicode85r0z0AbstractUnpickleTests.test_large_32b_binunicode8cC�8d}|�|�}|�|gfd�|�|d|d�dS)Ns((lp100000
g100000
t.r�rr�r�r�r��r*�pickled�	unpickledrrr�test_get;�
zAbstractUnpickleTests.test_getcCr3)Ns(]q�h�t.r�rrr4r5rrr�test_bingetAr9z!AbstractUnpickleTests.test_bingetcCr3)Ns(]rjt.r�rrr4r5rrr�test_long_bingetGr9z&AbstractUnpickleTests.test_long_bingetcCr3)Ns((l2t.r�rrr4r5rrr�test_dupMr9zAbstractUnpickleTests.test_dupcC�d}|�t|�dS)NsVa
p-1
.�r�r�rrrr�test_negative_putSsz'AbstractUnpickleTests.test_negative_putcCr=)Ns�Xar����.r>rrrr�test_negative_32b_binputXsz.AbstractUnpickleTests.test_negative_32b_binputcCs|�td�dS)NsS'\'
.r>r.rrr�test_badly_escaped_string^�z/AbstractUnpickleTests.test_badly_escaped_stringcCs$gd�}|D]	}|�tj|�qdS)N)
sS'
.sS"
.sS' 
.sS" 
.sS'"
.sS"'
.sS' ' 
.sS" " 
.sS ''
.sS ""
.sS 
.sS
.sS.)r�rr"�r*Z
badpickles�prrr�test_badly_quoted_stringas
�z.AbstractUnpickleTests.test_badly_quoted_stringcCs,gd�}|D]
\}}|�|�|�|�qdS)N))sS''
.r)sS""
.r)sS"\n"
.�
)sS'\n'
.rFr
)r*ZgoodpicklesrD�expectedrrr�test_correctly_quoted_stringss�z2AbstractUnpickleTests.test_correctly_quoted_stringcCr)Ns��I42
.�*r
)r*r6rrr�test_frame_readline{sz)AbstractUnpickleTests.test_frame_readlinecCsd}|�|�}|�t|�t�|�|tdd��|�t|�gd��d}|�|�|�tj�d}|�|�|�tj	�dD]}d|d	}|�|�}|�t|�t
�|�t|�d
�q<dD]!}d|d
}|�|�}|�t|�tj
�|�|t�
ddi��q\dS)Ns�c__builtin__
xrange
KKK�R.r�)rr���r~�s�c__builtin__
reduce
.s�cwhichdb
whichdb
.)s	Exceptionr�s�cexceptions
s	
Uugh�R.Zugh)sUserDictsIterableUserDicts
�(cUserDict
s
o}Udata}KKssb.r�)r�r�rtr�r�r��	functools�reduce�dbm�whichdbr�ri�collections�UserDict)r*r6r7rxrrr�test_compat_unpickle�s,

�
�z*AbstractUnpickleTests.test_compat_unpicklecCs.|�|�d�d�|�td�|�td�dS)Nscbuiltins
int
)R.rsN)R.scbuiltins
int
NR.)r�r�r��	TypeErrorr.rrr�test_bad_reduce�sz%AbstractUnpickleTests.test_bad_reducecCs8tjtf}|�|�d�d�|�|d�|�|d�dS)Nscbuiltins
int
)�.rscbuiltins
len
)�.scbuiltins
int
N�.�rr"rVr�r�r��r*�errorrrr�test_bad_newobj�s
z%AbstractUnpickleTests.test_bad_newobjcCsDtjtf}|�|�d�d�|�|d�|�|d�|�|d�dS)Nscbuiltins
int
)}�.rscbuiltins
len
)}�.scbuiltins
int
N}�.scbuiltins
int
)N�.rXrYrrr�test_bad_newobj_ex�s

z(AbstractUnpickleTests.test_bad_newobj_excC�$gd�}|D]	}|�|j|�qdS)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�Zbad_stack_errorsrCrrr�test_bad_stack�s.�z$AbstractUnpickleTests.test_bad_stackcCr])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(�rurCrrr�
test_bad_mark�s#�z#AbstractUnpickleTests.test_bad_markcCs<|�td�|�td�gd�}|D]	}|�|j|�qdS)N��N)U�BsBsBsBab�CsCsCab�FsF0.0sF0.00�GsGr�sI0�JsJ�K�LsL0sL10sL0LsL10L�MsM�SsS'abc'�TsTsTsTab�UsUsUab�VsVabcr�sXsXsXabs(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��EOFErrorZtruncated_errorsrCrrr�test_truncated_data	sY�z)AbstractUnpickleTests.test_truncated_datac	s�td�}td�}t�t�|�tjt�tj�	dt�|�tjj
t�ttj�td�d��}|�
|�d��Wd�n1s@wYttj�td�d��}|�
|�d��Wd�n1sbwY|�td�|�td	�ddl}d
�g�t�d�����fdd
�}tj|d�}tj|d�}|��|�����|j��|��|��ddlm}|�dd��D�|gd�dS)NzI
        import threading
        barrier = threading.Barrier(2)
        zs
        import locker
        locker.barrier.wait()
        class ToBeUnpickled(object):
            pass
        rz	locker.py�wb�utf-8zlocking_import.py�locker�locking_imports'�clocking_import
ToBeUnpickled
q)�q.rLcs�����t����dSr )�waitr�rr�r��barrierZpickle_bytes�resultsrr�t�sz:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t)�target)�
ToBeUnpickledcS�g|]}t|��qSr)rt��.0r"rrr�
<listcomp>��zCAbstractUnpickleTests.test_unpickle_module_race.<locals>.<listcomp>r�)r�os�mkdirr
Z
addCleanup�shutil�rmtree�sys�path�insert�remove�open�joinr@r�rr��	threading�Barrier�Threadrr�r�r�r�r�)	r*Z
locker_moduleZlocking_import_module�fr�r��t1�t2r�rr�r�test_unpickle_module_racehsB
���

�z/AbstractUnpickleTests.test_unpickle_module_racer )5r7r8r9r�r�r�r�r�r�r�r�r�r�r�rrr
rrrrr�requires_32br$r&r(r*r+r,r.r/r1r2r8r:r;r<r?r@rArErHrJrUrWr[r\rvrwr�rZreap_threadsr�rrrrr�Asl
9






2'_r�c@sLeZdZdZejZdd�ZejZdd�Zdd�Z	dd	�Z
ed
fdd�Zd
d�Z
dd�Zdd�Zed
fdd�Zdd�Zdd�Zdd�Zed
fdd�Zdd�Zdd �Zd!d"�Zed
fd#d$�Zd%d&�Zd'd(�Zd)d*�Zed
fd+d,�Zd-d.�Zd/d0�Zd1d2�Zed
fd3d4�Z d5d6�Z!d7d8�Z"d9d:�Z#d;d<�Z$d=d>�Z%d?d@�Z&dAdB�Z'dCdD�Z(dEdF�Z)dGdH�Z*dIdJ�Z+dKdL�Z,dMdN�Z-dOdP�Z.dQdR�Z/dSdT�Z0dUdV�Z1dWdX�Z2dYdZ�Z3d[d\�Z4d]d^�Z5d_d`�Z6dadb�Z7dcdd�Z8dedf�Z9dgdh�Z:didj�Z;e<dkdldm�dndo��Z=dpdq�Z>drds�Z?dtdu�Z@dvdw�ZAdxdy�ZBdzd{�ZCd|d}�ZDd~d�ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d��Zcedd�d���Zed�d��Zfd�d��Zgd�dÄZhd�dńZid�dDŽZjd�dɄZkd�d˄Zld�d̈́Zmd�dτZnd�Zod�Zpd�dӄZqerjsd�dՄ�Ztd�dׄZud�dلZverjsd�dۄ�Zwd�d݄Zxd�d߄Zyd�d�Zzd�d�Z{d�d�Z|d�d�Z}d�d�Z~d�d�Zd�d�Z�d�d�Z�d�d�Z�d�d�Z�d�d��Z�d�d��Z�e���e�d�ud��d�d���Z�d�d��Z�d�d��Z�d�S(�AbstractPickleTestsFcCrVr rr.rrr�setUp�r$zAbstractPickleTests.setUpcCs�tD]@}td�}|�||�}|�|�}|�||�d}|�||�}|�|�}|�||�td|�}|�||�}|�|�}|�||�qdS)NrM)rrr)�	protocolsrg�dumpsr�r�rk�r*�protor"�sr�rrr�	test_misc�s



�zAbstractPickleTests.test_misccCs6|j}tD]}|�||�}|�|�}|�||�qdSr )r�r�r�r�r�)r*rGr�r�r�rrr�test_roundtrip_equality�s
�z+AbstractPickleTests.test_roundtrip_equalitycCsjddlm}ddlm}dtfdtffD]\}}|�|j|�}|�}|||d�|��}|�	||�qdS)Nr)�StringIO��disr)�out)
r2r�rr��	DATA0_DIS�	DATA1_DISr�r�r=r�)r*r�r�r�rGr�Zfileliker�rrr�dont_test_disassembly�s�z)AbstractPickleTests.dont_test_disassemblyrc	Cst|�}|�|�t|tjd�D]'}|�||�}|�|�}|�||�||�}|�t|�d�|�	|d|�qdS�Nrr)
r�r�r�HIGHEST_PROTOCOLr�r��assertIsInstancer��lenr�)	r*r��aslist�minprotocol�lr�r�r"r�rrr�_test_recursive_list�s

�z(AbstractPickleTests._test_recursive_listcC�|�t�dSr )r�r�r.rrr�test_recursive_list�rjz'AbstractPickleTests.test_recursive_listcC�|jtdd�dS�Nr�)r�)r��MyListr.rrr�test_recursive_list_subclass��z0AbstractPickleTests.test_recursive_list_subclasscC�|jtdd�d�dS)NcS�|jSr �r�r!rrr�<lambda>��z>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>�r�)r��REX_sixr.rrr�test_recursive_list_like�r�z,AbstractPickleTests.test_recursive_list_likec	Cs,|�f}|d�|�t|tjd�D]9}|�||�}|�|�}|�|t�|�t	|�d�|�|d|�||d�}|�t	|�d�|�
|d|�q|\}t|tjd�D];}|�||�}|�|�}|�||�||�}|�t	|�d�|�|dt�|�t	|d�d�|�
|dd|�qXdSrE)r�r�rr�r�r�r��tupler�r�r�)	r*r�r�r�r�r�r�r"r�rrr�_test_recursive_tuple_and_list�s,

�z2AbstractPickleTests._test_recursive_tuple_and_listcCr�r )r�r�r.rrr�test_recursive_tuple_and_list
rjz1AbstractPickleTests.test_recursive_tuple_and_listcCr�r�)r�r�r.rrr�&test_recursive_tuple_and_list_subclassr�z:AbstractPickleTests.test_recursive_tuple_and_list_subclasscCr�)NcSr�r r�r!rrrr�r�zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>r�)r�r�r.rrr�"test_recursive_tuple_and_list_liker�z6AbstractPickleTests.test_recursive_tuple_and_list_likec	Csx|�}||d<t|tjd�D]*}|�||�}|�|�}|�||�||�}|�t|���dg�|�	|d|�qdS�Nr)
r�rr�r�r�r�r�r�r�r��	r*r��asdictr��dr�r�r"r�rrr�_test_recursive_dicts
�z(AbstractPickleTests._test_recursive_dictcCr�r )r�rwr.rrr�test_recursive_dict"rjz'AbstractPickleTests.test_recursive_dictcCr�r�)r��MyDictr.rrr�test_recursive_dict_subclass%r�z0AbstractPickleTests.test_recursive_dict_subclasscCr�)NcSr�r ��tabler!rrrr�)r�z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>�r�)r��	REX_sevenr.rrr�test_recursive_dict_like(r�z,AbstractPickleTests.test_recursive_dict_likec	Cs.|�f}||dd<t|tjd�D]:}|�||�}|�|�}|�|t�|�t|�d�|�|d|�||d�}|�t	|�dg�|�
|d|�q|\}t|tjd�D]<}|�||�}|�|�}|�||�||�}|�t	|�dg�|�|dt�|�t|d�d�|�
|dd|�qXdSrE)r�rr�r�r�r�r�r�r�r�r��	r*r�r�r�r�r�r�r"r�rrr�_test_recursive_tuple_and_dict+s,

�z2AbstractPickleTests._test_recursive_tuple_and_dictcCr�r )r�rwr.rrr�test_recursive_tuple_and_dictErjz1AbstractPickleTests.test_recursive_tuple_and_dictcCr�r�)r�r�r.rrr�&test_recursive_tuple_and_dict_subclassHr�z:AbstractPickleTests.test_recursive_tuple_and_dict_subclasscCr�)NcSr�r r�r!rrrr�Lr�zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>r�)r�r�r.rrr�"test_recursive_tuple_and_dict_likeKr�z6AbstractPickleTests.test_recursive_tuple_and_dict_likec	Cs�|�}d|t|�<t|tjd�D]:}|�||�}|�|�}|�||�||�}|�t|�	��d�|�t
|�	��dt�|�t
|�	��dj|�qdSr�)
r`r�rr�r�r�r�r�r�r�r�r�rbr�rrr�_test_recursive_dict_keyNs
�z,AbstractPickleTests._test_recursive_dict_keycCr�r )r�rwr.rrr�test_recursive_dict_key\rjz+AbstractPickleTests.test_recursive_dict_keycCr�r�)r�r�r.rrr� test_recursive_dict_subclass_key_r�z4AbstractPickleTests.test_recursive_dict_subclass_keycCr�)NcSr�r r�r!rrrr�cr�zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>r�)r�r�r.rrr�test_recursive_dict_like_keybr�z0AbstractPickleTests.test_recursive_dict_like_keyc	CsN|�f}d|dt|�<t|tjd�D]J}|�||�}|�|�}|�|t�|�t	|�d�|�|d|�||d�}|�t	|�d�|�t
|���dt�|�t
|���dj
|�q|\}t|tjd�D]:}|�||�}|�|�}|�||�||�}|�t	|�d�|�t
|���dt�|�t
|���dj
d|�qjdSr�)r`r�rr�r�r�r�r�r�r�r�r�r�rbr�rrr�"_test_recursive_tuple_and_dict_keyes,

 �z6AbstractPickleTests._test_recursive_tuple_and_dict_keycCr�r )r�rwr.rrr�!test_recursive_tuple_and_dict_key�rjz5AbstractPickleTests.test_recursive_tuple_and_dict_keycCr�r�)r�r�r.rrr�*test_recursive_tuple_and_dict_subclass_key�r�z>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_keycCr�)NcSr�r r�r!rrrr��r�zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>r�)r�r�r.rrr�&test_recursive_tuple_and_dict_like_key�r�z:AbstractPickleTests.test_recursive_tuple_and_dict_like_keycCs�t�}|�t|��tdtjd�D]0}|�||�}|�|�}|�|t�|�	t
|�d�|�t|�dt�|�t|�dj
|�q|\}tdtjd�D].}|�||�}|�|�}|�|t�|�|j
t�|�	t
|j
�d�|�t|j
�d|�qNdS)NrMrr)r��addr`r�rr�r�r�r�r�r�r�r�rb�r*r�r�r�r"rrr�test_recursive_set�s$

�z&AbstractPickleTests.test_recursive_setcCs^t�}||_tD]$}|�||�}|�|�}|�|t�|�t|�t|��|�|j|�qdSr )	r]�attrr�r�r�r�r��dirr�)r*�ir�r�r"rrr�test_recursive_inst�s
�z'AbstractPickleTests.test_recursive_instcCs�g}d|i}t�}||_|�|�tD]@}|�||�}|�|�}|�|t�|�t	|�d�|�t
|d�t
|��|�t|dj���dg�|�|djd|�qdSr�)
r]r�r�r�r�r�r�r�r�r�r�r�r�)r*r�r�rr�r�r"rrr�test_recursive_multi�s

�z(AbstractPickleTests.test_recursive_multicCs�t�}||g�|_t|j�}tD]3}|�||�}|�|�}|�|j|�|�t|j�d�|�t	|j�dt�|�
t	|j�d|�q|j}tD]0}|�||�}|�|�}|�||�|�t|�d�|�t	|�dt�|�
t	|�dj|�qIdSr�)r]r�rtr�r�r�r�r�r�r�r�)r*�factory�or�r�r�r"rrr�#_test_recursive_collection_and_inst�s&


�z7AbstractPickleTests._test_recursive_collection_and_instcCr�r )rr�r.rrr�test_recursive_list_and_inst�rjz0AbstractPickleTests.test_recursive_list_and_instcCr�r )rr�r.rrr�test_recursive_tuple_and_inst�rjz1AbstractPickleTests.test_recursive_tuple_and_instcC�|�tj�dSr )rrw�fromkeysr.rrr�test_recursive_dict_and_inst�rBz0AbstractPickleTests.test_recursive_dict_and_instcCr�r )rr�r.rrr�test_recursive_set_and_inst�rjz/AbstractPickleTests.test_recursive_set_and_instcCr�r )r�	frozensetr.rrr�!test_recursive_frozenset_and_inst�rjz5AbstractPickleTests.test_recursive_frozenset_and_instcCr�r )rr�r.rrr�%test_recursive_list_subclass_and_inst�rjz9AbstractPickleTests.test_recursive_list_subclass_and_instcCr�r )r�MyTupler.rrr�&test_recursive_tuple_subclass_and_inst�rjz:AbstractPickleTests.test_recursive_tuple_subclass_and_instcCrr )rr�r	r.rrr�%test_recursive_dict_subclass_and_inst�rBz9AbstractPickleTests.test_recursive_dict_subclass_and_instcCr�r )r�MySetr.rrr�$test_recursive_set_subclass_and_inst�rjz8AbstractPickleTests.test_recursive_set_subclass_and_instcCr�r )r�MyFrozenSetr.rrr�*test_recursive_frozenset_subclass_and_inst�rjz>AbstractPickleTests.test_recursive_frozenset_subclass_and_instcCsJt�}||_tD]}|�||�}|�|�}|�|t�|�|j|�qdSr )�	REX_state�stater�r�r�r�r�r�rrr�test_recursive_inst_state�s
�z-AbstractPickleTests.test_recursive_inst_statecCs�t�f}||d_tD],}|�||�}|�|�}|�|t�|�t|�d�|�|dt�|�	|dj|�q|\}tD],}|�||�}|�|�}|�|t�|�|jt�|�t|j�d�|�	|jd|�q=dSrE)
rrr�r�r�r�r�r�r�r�)r*r�r�r�r"rrr�#test_recursive_tuple_and_inst_state�s$


�z7AbstractPickleTests.test_recursive_tuple_and_inst_statecCsBgd�}tD]}|D]}|�||�}|�|�}|�||�q
qdS)N)rz<\u>u<\ሴ>z<
>z<\>u<\𒍅>u<�>�r�r�r�r�)r*Zendcasesr��urD�u2rrr�test_unicodes
��z AbstractPickleTests.test_unicodecCs4d}tD]}|�||�}|�|�}|�||�qdS)Nu𒍅r)r*r�r�rDr�rrr�test_unicode_high_planes
�z+AbstractPickleTests.test_unicode_high_planecCs�tD]L}dD]}|�||�}|�||�|��qdd�td�D�D]}|�||�}|�||�|��q!dd�td�D�D]}|�||�}|�||�|��q<qdS)N�rx�xyzs,xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzcSsg|]}t|g��qSr�r��r�rrrrr�(�z2AbstractPickleTests.test_bytes.<locals>.<listcomp>�cSsg|]}t||g��qSrr!r"rrrr�+�)r�r�r�r�r�)r*r�r�rDrrr�
test_bytes#s��zAbstractPickleTests.test_bytescCs�tD]]}dD]X}t|�}|�||�}|�|�}|�||�|�||�|dkr7|�d|�|�tt	j
|��q|dkrK|�d|�|�tt	j|��q|dkr^|�d|�|�tt	j
|��qqdS)NrrLs	bytearrayrMr~)r�r-r�r�r�r��assertIn�
assertTruerr�GLOBAL�STACK_GLOBAL�assertNotIn�
BYTEARRAY8)r*r�r�rnrDZbbrrr�test_bytearray/s&
���z"AbstractPickleTests.test_bytearraycCsJtD] }dD]}t|�}|�||f|�}|�|�\}}|�||�qqdS)Nr)r�r-r�r�r�)r*r�r�rnrD�b1�b2rrr�test_bytearray_memoization_bugBs��z2AbstractPickleTests.test_bytearray_memoization_bugcCsVtD]&}tj}|r(||fD]}|�||�}|�|�}|�||�q|d?}|s	qdSr�)r�r��maxsizer�r�r�)r*r�rrGr�Zn2rrr�	test_intsJs
���zAbstractPickleTests.test_intsc	Cs�tD]0}dD]+}d|>}|d||dfD]}||fD]}|�||�}|�|�}|�||�qqqqtdd�}||d>7}||fD]}|�|d�}|�|�}|�t|�t�|�||�qCdS)N)r�i�i��irZdeadbeeffeedface�i@Br�)r�r�r�r��intr�rtr�)	r*r�ZnbitsZnbaseZnposrrr�rDrrr�	test_longTs&
���
	
�zAbstractPickleTests.test_longcCsTgd�}|dd�|D�}tD]}|D]}|�||�}|�|�}|�||�qqdS)N)ggg+�p�hg�Z��*)g_D��9g�������?g�?g��Q�	@g�m�"wp@g�W�T��Dgꌠ9Y>)FcSsg|]}|�qSrrr�rrrr�n�z2AbstractPickleTests.test_float.<locals>.<listcomp>r)r*Ztest_valuesr�rbrr�rrr�
test_floatks
��zAbstractPickleTests.test_float�LC_ALL�de_DE�fr_FRcCs |�|�dd�dd�d�dS)Ng333333�?rrLsF1.)r�r�r.rrr�test_float_formatus z%AbstractPickleTests.test_float_formatcCs6tD]}t�}|�||�}|�|�}|�|t�qdSr )r��AAAr�r�r��REDUCE_A�r*r��instrrrrr�test_reducezs
�zAbstractPickleTests.test_reducecCs:tD]}tdd�}|�||�}|�|�}|�||�qdS)Nrr�)r�rkr�r�r�r@rrr�test_getinitargs�s

�z$AbstractPickleTests.test_getinitargscCs:t�}tD]}|�||�}|�|�}|�|j|j�qdSr )rqr�r�r�r�r��r*rmr�r�rnrrr�test_metaclass�s
�z"AbstractPickleTests.test_metaclasscCs^tdtf�}t�ttj�tD]}|�||�}|�|�}|�	||�|�
t|�t|��qdS)NZmy_dynamic_class)rvrrFrrrrdr�r�r�r�r�rtrDrrr�test_dynamic_class�s
�z&AbstractPickleTests.test_dynamic_classcCs�ddl}ddl}|��}tD]F}|�||�}|�|�}|�||�|�|j�}|�||�}|�|�}|�||�t	|d�rT|�
|j�}|�||�}|�|�}|�||�qdS)Nr�statvfs)�timer��	localtimer�r�r�r��stat�curdirr�rG)r*rHr�r�r�r�rrrr�test_structseq�s$



��z"AbstractPickleTests.test_structseqcCs0tD]}|�d|�}|�|�}|�d|�qdS�N.)r�r�r�r��r*r�r�rrrr�
test_ellipsis��

�z!AbstractPickleTests.test_ellipsiscCs0tD]}|�t|�}|�|�}|�t|�qdSr )r�r�r�r�r�rNrrr�test_notimplemented�rPz'AbstractPickleTests.test_notimplementedcCsLddtg}|D]}tD]}|�t|�|�}|�|�}|�t|�|�qqdSrM)r�r�r�rtr�r�)r*Z
singletonsZ	singletonr�r�rrrr�test_singleton_types�s

��z(AbstractPickleTests.test_singleton_typescCsPtj��D] }t|t�r%t|t�s%tD]}|�||�}|�	|�
|�|�qqdSr )�builtinsrO�valuesr�rt�
issubclassr�r�r�r�r��r*r�r�r�rrr�test_builtin_types�s��z&AbstractPickleTests.test_builtin_typescCs�tj��D]F}t|t�rKt|t�rKtD]7}|�||�}|�	|�}|dkr4t|t
�r4|tur4|�|t
�q|dkrDt|t
�rD|�|t
�q|�||�qqdS�Nr�)rSrOrTr�rtrUr�r�r�r��OSError�BlockingIOErrorr��ImportError)r*r�r�r�rrrr�test_builtin_exceptions�s
��z+AbstractPickleTests.test_builtin_exceptionscCsHtj��D]}t|tj�r!tD]}|�||�}|�|�	|�|�qqdSr )
rSrOrTr��types�BuiltinFunctionTyper�r�r�r�rVrrr�test_builtin_functions�s��z*AbstractPickleTests.test_builtin_functionsc
Cs�tD]'}|�d|�}|dkrtjt|g�}|�|�|��q|�ttj|�d�qtdd}tj	tj
}tjt|g�|}z|�|�Wntyb}z|�
dt|��WYd}~dSd}~ww|�d�dS)Nr�rr�rzunsupported pickle protocolz0expected bad protocol number to raise ValueError)r�r�r�PROTOr�r(�
startswithr�r�NONErr�r�r'riZfail)r*r�r6Zproto_headerZoobZ
build_noneZ	badpickle�errrrr�
test_proto�s ��zAbstractPickleTests.test_protocCsLd}tD]}|�||�}|�|�}|�||�|�ttj|�|dk�qdS)N��UJ^w,3�|	r�)r�r�r�r�r�rr�LONG1�r*r"r�r�r�rrr�
test_long1�s
�zAbstractPickleTests.test_long1cCsPdd>}tD]}|�||�}|�|�}|�||�|�ttj|�|dk�qdS)Nrer4r�)r�r�r�r�r�rr�LONG4rgrrr�
test_long4�s
�zAbstractPickleTests.test_long4cCsidtj�dtj�dtj�dtj�dtj�dtj�dtj�dtj�d	tj�d
tj�dtj�dtj�d
tj�dtj�dtj�dtj�dtj�tjtjtjd��}d}d}d}d}d}tD]0}|||||fD]&}|�||�}	|�|	�}
|�	||
�|t
|d�t|�f}|�t
||	��qdq[dS)N)rr)rr)rr�)rrL)rrM)rr)rr�rr�)rrL�rrM)r�r�r�r)r�r�)r�rL)r�rM)rLr)rLr))rLr�)rLrL�rLrMr)r�rr�rL)rr�rLrMrL)r�TUPLE�EMPTY_TUPLE�TUPLE1�TUPLE2�TUPLE3r�r�r�r��minr�r(r)r*�expected_opcodermrnr�r��er�r"r�r�rGrrr�test_short_tuplessf
�������	�
��
�������
��z%AbstractPickleTests.test_short_tuplesc
Cs�tjtjtjtjtjtjtjtjtjtjtjtjd�}tD]/}dD]*}|�||�}|�|�}|�||u||||f�|t	|d�|f}|�t
||��q!qdS)N))rN)rN)r�N)rLN)rT)rT)r�T)rLT)rF)rF)r�F)rLF)NFTrL)rrb�INT�NEWTRUE�NEWFALSEr�r�r�r(rur)r*rvr�r"r�r�rGrrr�test_singletons's,�
��z#AbstractPickleTests.test_singletonscC�Htgd��}d|_d|_tD]}|�||�}|�|�}|�||�qdS�NrorI�hello)rr�r�r�r�r�r�rgrrr�test_newobj_tuple@�
�z%AbstractPickleTests.test_newobj_tuplecCr}r~)r�r�r�r�r�r�r�rgrrr�test_newobj_listIr�z$AbstractPickleTests.test_newobj_listc	Cs�tD]A}tD]<}|j}||j�}d|_|�||�}|�|�}|||||t|�f}|�||�|�	||�||�|�|�	|j
|j
|�qqdS�NrI)r��	myclasses�__base__�sampler�r�r�rtr�r�rO)r*r�rN�Br"r�r��detailrrr�test_newobj_genericRs

��z'AbstractPickleTests.test_newobj_genericc	Cs�tdd�}ttfD]}|�|�q
tD]J}|D]E}|j}||j�}d|_t�	|�}|�
||�}|�|�}	|�t
|	�t
|��|||||	t
|	�f}
|�||�||	�|
�|�|j|	j|
�qqdSr�)r��MyIntrr�r�r�r�r��weakref�proxyr�r�r�rtrO)r*Zclassesr�r�rNr�r"rDr�r�r�rrr�test_newobj_proxies_s"


��z'AbstractPickleTests.test_newobj_proxiescCs`tD]+}td�}d|_|�||�}|�|�}|�t|�t�|�t|�d�|�|jd�qdS)NrrI)	r��
MyIntWithNew2r�r�r�r�rtr�r6r�rrr�test_newobj_overridden_newrs
�z.AbstractPickleTests.test_newobj_overridden_newcCsFt}t�t�}|�|d�}zda|�ttjf|j|�W|adS|aw)NrMrI)�SimpleNewObjr�r�r�rVrr"r�)r*�saverrnrrr�test_newobj_not_class}s
z)AbstractPickleTests.test_newobj_not_classcCs�t|�}znt�td|�tgd��}d|_d|_|�|d�}|�t�	d�|�|�d|�|�
t||��|�|�}|�
||�|�|d�}|�t�	d�|�|�d|�|�t||�d	t|��|�|�}|�
||�W|��dS|��w)
Nr�rorIrrr�sMyListr�T)rDrFrKr7r�r�r�r�r'r��assertFalserr�r�r+r��reprrL)r*Zextcode�opcoderwr"�s1r��s2rrr�produce_global_ext�s&

z&AbstractPickleTests.produce_global_extcCs |�dtj�|�dtj�dS)Nrr�)r�r�EXT1r.rrr�test_global_ext1�sz$AbstractPickleTests.test_global_ext1cC�.|�dtj�|�dtj�|�dtj�dS)Nr$r�iͫ)r�r�EXT2r.rrr�test_global_ext2��z$AbstractPickleTests.test_global_ext2cCr�)N�r�i�ͫ)r�r�EXT4r.rrr�test_global_ext4�r�z$AbstractPickleTests.test_global_ext4cCs�d}tt|��}tD]!}|�||�}|�|�}|�||�ttj|�}|�	||dk�q
d}tt|��}tD]+}|�||�}|�|�}|�||�ttj|�}|dkrZ|�	|d�q6|�
|dk�q6dS�N�
r��	r�)r�r�r�r�r�r�rr�APPENDSr�r()r*rr"r�r�r�Znum_appendsrrr�test_list_chunking�s&

�z&AbstractPickleTests.test_list_chunkingcCs�d}t�t|��}tD]'}|�||�}|�|t�|�|�}|�||�t	t
j|�}|�||dk�qd}t�t|��}tD]+}|�||�}|�|�}|�||�t	t
j|�}|dkrb|�|d�q>|�
|dk�q>dSr�)rwr	r�r�r�r�rr�r�rr�SETITEMSr�r()r*rr"r�r�r�Znum_setitemsrrr�test_dict_chunking�s(

�z&AbstractPickleTests.test_dict_chunkingcCs�d}tt|��}tD]*}|�||�}|�|�}|�||�ttj|�}|dkr.|�	|d�q
|�	|d�q
d}tt|��}tD]*}|�||�}|�|�}|�||�ttj|�}|dkrc|�	|d�q?|�
|d�q?dS)Nr�rMrrr�r�)r�r�r�r�r�r�rr�ADDITEMSr��assertGreaterEqual)r*rr"r�r�r�Znum_additemsrrr�test_set_chunking�s*

�z%AbstractPickleTests.test_set_chunkingc	Cs�t�td�}d|_tD]O}|j|d��?|�||�}|dkr%|�d|�n|�d|�|�tt	j
|�d|k�|�tt	j|��|�
|�}|�||�Wd�n1sUwYqdS)N����r�r�
I64206�M�r�)r�r�r�r�r�r�r'r�rr�NEWOBJr��	NEWOBJ_EXr�r�rgrrr�test_simple_newobj�s"�
���z&AbstractPickleTests.test_simple_newobjc	Cs�t�td�}d|_tD]e}|j|d��U|�||�}|dkr%|�d|�n|dkr0|�d|�n|dkr;|�d	|�n|�d
|�|�tt	j
|�d|k�|�tt	j|��|�
|�}|�||�Wd�n1skwYqdS�Nr�r�r�rr�r�r�rMs	XFACEs�FACE)�
ComplexNewObjr�r�r�r�r�r'r�rrr�r�r�r�r�rgrrr�test_complex_newobj
	s*�
���z'AbstractPickleTests.test_complex_newobjc	Cs�t�td�}d|_tD]e}|j|d��U|�||�}|dkr%|�d|�n|dkr0|�d|�n|dkr;|�d	|�n|�d
|�|�tt	j
|��|�tt	j|�d|k�|�
|�}|�||�Wd�n1skwYqdSr�)�ComplexNewObjExr�r�r�r�r�r'r�rrr�r�r�r�r�rgrrr�test_complex_newobj_ex!	s*�
���z*AbstractPickleTests.test_complex_newobj_excCs>tgd��}d|_d|_|�|d�}|�|�}|�||�dS)NrorIrr�)�SlotListr�r�r�r�r�)r*r"r�r�rrr�test_newobj_list_slots5	s
z*AbstractPickleTests.test_newobj_list_slotscCsTtD]%}t�}|�|jd�|�||�}|�|jd�|�|�}|�|jd�qdSrE)r��REX_oner��_reduce_calledr�r�r�rrr�'test_reduce_overrides_default_reduce_ex=	�
�z;AbstractPickleTests.test_reduce_overrides_default_reduce_excC�TtD]%}t�}|�|jd�|�||�}|�|j|�|�|�}|�|jd�qdSr )r��REX_twor��_protor�r�r�rrr�test_reduce_ex_calledF	r�z)AbstractPickleTests.test_reduce_ex_calledcCr�r )r��	REX_threer�r�r�r�r�rrr�test_reduce_ex_overrides_reduceO	r�z3AbstractPickleTests.test_reduce_ex_overrides_reducecCsTtD]%}t�}|�|jd�|�||�}|�|j|�|�|�}|�|j|�qdSr )r��REX_fourr�r�r�r�r�rrr�test_reduce_ex_calls_baseX	r�z-AbstractPickleTests.test_reduce_ex_calls_basecCsTtD]%}t�}|�|jd�|�||�}|�|jd�|�|�}|�|jd�qdSrE)r��REX_fiver�r�r�r�r�rrr�test_reduce_calls_basea	r�z*AbstractPickleTests.test_reduce_calls_basec	CsNt�}tD]}t���|�t|j||�Wd�n1swYqdSr )�
BadGetattrr�rZinfinite_recursionr��RuntimeErrorr�)r*r"r�rrr�test_bad_getattrj	s
���z$AbstractPickleTests.test_bad_getattrc	Cs|Gdd�dt�}Gdd�dt�}tD])}z	|�|�|�Wn
tjy'Ynwz	|�|�|�Wqtjy;YqwdS)Nc@rM)z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.CcSstddgdfSrZ)r�r.rrrrdv	�zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N�r7r8r9rdrrrrrNu	rTrNc@rM)z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.DcSstdddgfSrZ)rwr.rrrrdz	r�zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__Nr�rrrrrUy	rTrU)rr�r�r�
PicklingError)r*rNrUr�rrr�test_reduce_bad_iteratorr	s���z,AbstractPickleTests.test_reduce_bad_iteratorc	Cs�dd�td�D�}tdd�|D��}t|�t|�t|�g}tD])}|j|d��|�||�}|�|�}|�||�Wd�n1sCwYqdS)Ncss�|]	}dt|�VqdS)ZaaaNrhr"rrr�	<genexpr>�	��z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>r)css�|]	}|gd�fVqdS))rMr~rNNr)r��krrrr��	r�r�)r�rwr�r�r�r�r�)r*r�Z
large_dictr�r�rrrrr�test_many_puts_and_gets�	s
���z+AbstractPickleTests.test_many_puts_and_getsc	CsjtD]0}t�}d|_d|_|�||�}|�|�}t|j�}t|j�}t||�D]
\}}|�	||�q'qdS)NrIr)
r�rNr�r�r�r��sortedrO�zipr�)	r*r�r"r�r�Zx_keysZy_keysZx_keyZy_keyrrr�test_attribute_name_interning�	s


��z1AbstractPickleTests.test_attribute_name_interningcCs>|�td�d�}|�|t�|�tdg�d�}|�|t�dS)Nr~r�rL)r�r�r�r�r��	DATA_SET2rrrr�test_pickle_to_2x�	sz%AbstractPickleTests.test_pickle_to_2xcCsTtD]%}dtddtf}|�||�}|�|�}|�t|�t|��|�||�qdS)Nrsxyix)r�rur�r�r�r�)r*r�r�rrrrr�test_large_pickles�	s
�z&AbstractPickleTests.test_large_picklesc	s�tD]E��j�d��5��fdd�td�D�}ttt|��}��t|�|��dkr8|D]}��t	t
j|��q,Wd�n1sBwYqdS)Nr�csg|]
}��d|���qS�r��r�)r�r�r�r*rrr��	�zDAbstractPickleTests.test_int_pickling_efficiency.<locals>.<listcomp>�Fr�)r�r�r�r��mapr�r�r�r�rr�LONG)r*ZpicklesZsizesrDrr�r�test_int_pickling_efficiency�	s����z0AbstractPickleTests.test_int_pickling_efficiencycCs6|�||�}|�t||��|�|�}|�||�dSr )r�r(rr�r�)r*r�r�r�r6r7rrr�_check_pickling_with_opcode�	s
z/AbstractPickleTests._check_pickling_with_opcodecCsDtgd��}tD]}|dkr|�|tj|�q|�|tj|�qdS)Nror)r�r�r�r�APPENDr��r*r�r�rrr�test_appends_on_non_lists�	s�z-AbstractPickleTests.test_appends_on_non_listscCsHtdddd��}tD]}|dkr|�|tj|�q
|�|tj|�q
dS)Nr�������ror)r�r�r�r�SETITEMr�r�rrr�test_setitems_on_non_dicts�	s�z.AbstractPickleTests.test_setitems_on_non_dictsrMr�cCs8d}}hd�}t�|�D]m\}}}|dur"|�||�||kr"d}|dur<|�|jd�|j|vr;|�t|�|j�n,|jdksM|j|vr]t|�|jkr]|dur\|�|||j�d}n|durh|jdkrh|}|jdkrz|�	||j�|d|}q
t|�}|dur�|�
||�dS|dur�|�|||j�dSdS)a
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.

        Note that binary objects that are larger than FRAME_SIZE_TARGET are not
        framed by default and are therefore considered a frame by themselves in
        the following consistency check.
        N>�BINUNICODE8r,�BINBYTES�
BINUNICODE�	BINBYTES8�FRAMEr`�	)rr�assertLessEqual�assertNotEqualrxr��FRAME_SIZE_TARGET�
assertLess�FRAME_SIZE_MINr�r�)r*r6Z	frame_endZframeless_startZframeless_opcodesrrW�posrrr�check_frame_opcodes�	sB
�


��
��z'AbstractPickleTests.check_frame_opcodesc	Cs�ttd��}tdtjd�D]J}|j|d��:|�||�}|�|�}|�||�t|�t	tj
|�}|�||jd�|�
||jd�|�|�Wd�n1sSwYqdS)Ni��rMrr�r�)r�r�rr�r�r�r�r�r�rr��
assertGreaterr�r�r�)r*r�r�r6r7Zbytes_per_framerrr�test_framing_many_objects
s&

������z-AbstractPickleTests.test_framing_many_objectsc
Cs8d}dd�td�D�}d|g|�d|�d|�}tdtjd	�D]w}d
D]r}|j||d��a|s9|�||�}n$t|d�sF	Wd�q&t��}|j||d
�}||_	|�
|�|��}|�|�}	|�
dd�|D�dd�|	D��|�
||	�ttj|�}
|�
|
d	�|�|�Wd�n1s�wYq&q"dS)NicSsg|]}|g�qSrrr"rrrr�!
r8zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>r��x�y�zrMr)FT)r��fast�pickler�r�cSr�r�r�r�rrrr�5
r�cSr�rr�r�rrrr�6
r�)r�rr�r�r�r�r2r<r�r��dumpr=r�r�rr�r�)r*�NZsmall_itemsr�r�r�r6�bufr�r7�n_framesrrr�test_framing_large_objects
s8
�	

�����z.AbstractPickleTests.test_framing_large_objectscs�tjdkrdSddd�}|j�d}ttfD]T���fdd�t|�D�}tdtjd�D]=}|�||�}||�}|�ttj	|�d�|�||�
|��||d	d
��}|�ttj	|�ttj	|��|�||�
|��q+qdS)NrMc
Ss�g}d}t�|�D]\}}}|jdkr|�|�q	t�}d}t|�D]\}	}|r-||	�r-q"||||�7}||}q"|||d�7}|S)z+Remove frame opcodes from the given pickle.r�r�rN)rrrxr�r-�	enumerate)
r6Z
keep_frameZframe_startsZframe_opcode_sizer��_r�Z	newpickleZlast_frame_endrrrr�
remove_framesC
s

�
z?AbstractPickleTests.test_optional_frames.<locals>.remove_frames�csi|]
}|�|g���qSrrr"�Z
bytes_type�
frame_sizerr�
<dictcomp>[
r�z<AbstractPickleTests.test_optional_frames.<locals>.<dictcomp>rrcSs|dSrXr)rrrrr�d
sz:AbstractPickleTests.test_optional_frames.<locals>.<lambda>r )rr�r�r�r-r�r�r�rr�r�r�)r*rZ
num_framesr�r�r6Zframeless_pickleZsome_frames_picklerr	r�test_optional_frames?
s&


���z(AbstractPickleTests.test_optional_framesc
s|Gdd�d�}tdtjd�D]�}dd�ttd��D�}|�d�jd	d�|�}��||��|�|��}��	|�}��
||���t|j
�d�~t����
|��|�t|�d�jd}��t|j
�|���t|j
�d
|d�dd�|j
D�}�fd
d�|D�}	�fdd�|D�}
dd�|D�}|	D]}��|d
�j|�q���t|�t|	�t|
�d|�qdS)Nc@s(eZdZdZdd�Zdd�Zdd�ZdS)	zYAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.cSs
g|_dSr )�chunksr.rrrrAm
rczbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__cS�|j�|�dSr )r
r�)r*�chunkrrrr@o
rBz_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writecSsd�|j�S)Nrx)r�r
r.rrr�concatenate_chunksq
rSzlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunksN)r7r8r9rBrAr@rrrrr�ChunkAccumulatork
s
rrMrcSs,g|]}t|��d�|ddt|�if�qS)r�rIr)rir�r"rrrr�u
s$�zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>g��@Z0123456789abcdefr5r�rLcSr�rr�)r�r�rrrr��
r�csg|]	}|�jkr|�qSr�r��r�r�r.rrr��
s
�cs*g|]}d|kr�jkrnn|�qS�r�rrr.rrr��
s�cSsg|]}|dkr|�qSrrrrrrr��
r%)r�rr�r6r�r�r�rrr�r�r�r�r
r�
gc_collectr�r�r�)
r*rr�Zobjects�writerr6Z
reconstructedrZchunk_sizesZlarge_sizesZmedium_sizesZsmall_sizesZ
chunk_sizerr.r�+test_framed_write_sizes_with_delayed_writeri
sB	
��
�
��z?AbstractPickleTests.test_framed_write_sizes_with_delayed_writerc
Cs�Gdd�d�attjd�D]6}tjtjjtjjjfD](}|j||d��|�|�	||��}|�
||�Wd�n1s>wYqqdS)Nc@�eZdZGdd�d�ZdS)�Nestedc@r)zNested.Ac@r)z
Nested.A.Bc@r\)zNested.A.B.CNr^rrrrrN�
r_rNN)r7r8r9rNrrrrr��
�r�N)r7r8r9r�rrrr�A�
rrN)r7r8r9rrrrrr�
rrr)r�r�)rr�rr�rr�rNr�r�r�r�)r*r�r�r7rrr�test_nested_names�
s����z%AbstractPickleTests.test_nested_namesc	Cs�Gdd�d�atjtjt_dt_ttjd�D]'}|j	|d��|�
|�t|��}|�|t�Wd�n1s:wYqt`dS)Nc@r\)�	RecursiveNr^rrrrr�
r_rzRecursive.mod.Recursiverr�)
rr��modulesr8�modr9r�rr�r�r�r�r�)r*r�r7rrr�test_recursive_nested_names�
s��z/AbstractPickleTests.test_recursive_nested_namesc

Cs�Gdd�d�atjtjt�jtjjtjjt��jf}tjtftjjtjff}tt	j
d�D]c}|D]*}|j||d��|�|�
||��}|�|�|��Wd�n1sVwYq1|D]1\}}|�}|j||d��|�|�
||��}|�||�||��Wd�n1s�wYq^q-tjdtjdf}tt	j
d�D]'}|D]"}	|j||	d��|�t|j
|	|�Wd�n1s�wYq�q�dS)Nc@s:eZdZedd��Zedd��Zdd�ZGdd�d�Zd	S)
�
PyMethodsTestcSr-)N�cheeserrrrrr"�
�zPyMethodsTest.cheesecSr-)N�winer�r�rrrr$�
�zPyMethodsTest.winecSr-)N�biscuitsrr.rrrr'�
r#zPyMethodsTest.biscuitsc@s0eZdZdZedd��Zedd��Zdd�ZdS)	zPyMethodsTest.NestedzNested classcSr-)N�ketchuprrrrrr(�
r#zPyMethodsTest.Nested.ketchupcSr-)N�maplerr%rrrr)�
r&zPyMethodsTest.Nested.maplecSr-)N�pierr.rrrr*�
r#zPyMethodsTest.Nested.pieN)	r7r8r9rB�staticmethodr(r�r)r*rrrrr�
s

rN)	r7r8r9r+r"r�r$r'rrrrrr!�
s

r!r�r��methodr"r$�r��descr)r!r"r$r'rr(r)r*r�rr�r�r�r�r�rOr�rV)
r*Z
py_methodsZpy_unbound_methodsr�r-r7r�r��descriptorsr/rrr�test_py_methods�
sJ�	�����������z#AbstractPickleTests.test_py_methodscCs�Gdd�dt�adjdftjdfgd�jdftjgd�ffdd	hjd
ftjdd	hd	fftj	dft
jdftgd
��jd
ftjtgd
��d	fft�
d�jdftj
jt�
d�dfff}ttjd�D]3}|D].\}}|j||d��|�|�||��}|�||�||��Wd�n1s�wYqcq_t
jdtjdf}ttjd�D]'}|D]"}|j||d��|�t|j||�Wd�n1s�wYq�q�dS)Nc@seZdZGdd�de�ZdS)�Subclassc@r\)zSubclass.NestedNr^rrrrrr_rN)r7r8r9rirrrrrr2sr2�abcd)r�)r3r�rorrr�r�))rmr)rnr�)sabcr )rr�r�Zsweet)rwrwr,�	maketransr	r.)r�r2�indexri�__len__r��__contains__r�rwr	r-r4�countrr�rr�r�r�r�r�rOr�rV)r*Z	c_methodsr�r-r+r7r0r/rrr�test_c_methods�
sB���������z"AbstractPickleTests.test_c_methodsc
Cs�tdd�ddfttd�ddftjddftjd	d	ft�d
dft�	�dd
ft�
�ddft��ddfg}|D]D\}}}td�D]:}|jt
|�|d��'|�||�}|�d||f��|�|�t
|�|��t
|��Wd�n1sqwYq<q3dS)NrrK�__builtin__�xrangeZ123�	itertools�imaprPrR�
exceptionsr�rT�IterableUserDict�UserListrS�defaultdictrL)rtr�zc%s
%s)r�r�r6rOrPrQrRr�rSrTr@rAr�rtr�r'r�r�r�)r*Ztests�valrrxr�r6rrr�test_compat_pickle*s&


�
����z&AbstractPickleTests.test_compat_picklec	Cs dd�}tdtjd�D]#}|�ttjf��t�|�||��Wd�n1s*wYq|`	tdtjd�D]#}|�ttjf��t�|�||��Wd�n1sXwYq:|j
|_tdtjd�D]#}|�ttjf��t�|�||��Wd�n1s�wYqjdS)NcSrVr rrrrrr�?r$z6AbstractPickleTests.test_local_lookup_error.<locals>.frr)r�rr�r��AttributeErrorr�rr�r�r8r9r7�r*r�r�rrr�test_local_lookup_error<s&�������z+AbstractPickleTests.test_local_lookup_errorccs��d}t|�Vt|�VtdurAt|�}tj|dd�}dtjfD]!}t|dd|d�Vt|ddd	|d
�Vt|ddd|d
�Vq!dSdS)N�abcdefgh�little)�	byteorderrr�)r3)r�r�r�)rMr�rm)r�r�r�r�rl)r{r�r�r�r6�
from_bytesr�r�)r*Z
bytestringr�rbr�rrr�buffer_like_objectsUs(�

��
��z'AbstractPickleTests.buffer_like_objectscCs|��D]y}tdtjd�D]n}|�||�}|jr#|dkr#|�d|�|�ttj	|�d�|dkra|�ttj
|�|jr=dnd�|�ttj|�|jrLdnd�dd�}|j|||d�}|�||�|�
|�}|�||�|�t|�t|��|�||�qqdS)Nrrr~rGcSr-�NTr�r�rrr�buffer_callbackyr$zAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback�rN)rKr�rr�r�r�r'r�r�NEXT_BUFFER�SHORT_BINBYTESr�r,r�r�r�rt)r*r�r�r�rN�data2r�rrr�test_in_band_buffersis0���
��z(AbstractPickleTests.test_in_band_buffersc
s�|��D]�}tdd�D] }|�t��|j||gjd�Wd�n1s&wYqtdtjd�D]�}g��fdd�}|j|||d�}|�d|�|�	t
tj|�d�|�	t
tj|�d�|�	t
tj
|�d�|�	t
tj|�|jrvdnd�|jr�|�	t�d�d�|�tj��
|�|�Wd�n1s�wY|j|�d�}|jr�|�||�n|�t|�t|��|�	||�|j|t��d�}|jr�|�||�q4|�t|�t|��|�	||�q4qdS)	Nrr~rOrcs��|���Sr )r�r�)r���buffersrrr��sz6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>rGrT)rKr�r�r�r�r�rr�r+r�rrQr,rP�READONLY_BUFFERr�r�r�r"r�r�r�rt�iter)r*r�r�rNr�r�rrTr�test_oob_buffers�sL��������z$AbstractPickleTests.test_oob_bufferscCsttd�}tdtjd�D]+}g}|j}|j|||d�}tt|�}|j||d�}|�	t
|�t
|��|�||�qdS�N�foobarr~rrOrT)r{r�rr�r�r�r�r-r�r�rtr�)r*r�r�rUrNr�r�rrr�%test_oob_buffers_writable_to_readonly�s
�z9AbstractPickleTests.test_oob_buffers_writable_to_readonlyc	CsVt�d�}tdd�D]}|�tj��|�||�Wd�n1s#wYq
dS)NrZrr~)rr�r�r��PickleErrorr�)r*r�r�rrr�test_picklebuffer_error�s
���z+AbstractPickleTests.test_picklebuffer_errorcCsRdd�}t�d�}|�t��|j|d|d�Wd�dS1s"wYdS)NcSsdddSr�rrTrrrrN�rSzGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callbackrZr~rO)rr�r��ZeroDivisionErrorr�)r*rNr�rrr�test_buffer_callback_error�s

"�z.AbstractPickleTests.test_buffer_callback_errorc	Cs�t�d�}tdtjd�D]E}|j||gjd�}|�t��|j|t	�d�Wd�n1s0wY|�tj
��|j|gd�Wd�n1sMwYq
dSrY)rr�r�r�r�r�r�rVr�rr")r*r�r�r�rrr�test_buffers_error�s
����z&AbstractPickleTests.test_buffers_errorcCs8tdtjd�D]}|jd|dd�}|j|dd�}qdS)Nr~rrOrT)r�rr�r�r�)r*r�Zdata_pickledr�rrr�+test_inband_accept_default_buffers_argument�s�z?AbstractPickleTests.test_inband_accept_default_buffers_argumentNzTest needs Numpycs��fdd���fdd�����fdd�}t�d�}||�||ddd��t�d	��d
�}||�||j�||ddd��dS)Nc�&tj�||���|jj|jj�dSr )�np�testing�assert_equalr��ctypesr��r"r�r.rr�
check_no_copy��z=AbstractPickleTests.test_buffers_numpy.<locals>.check_no_copycrbr )rcrdrer�rfr�rgr.rr�
check_copy�riz:AbstractPickleTests.test_buffers_numpy.<locals>.check_copycs�tdtjd�D]}��||�}��|�}�||�qtdtjd�D]}dd�}�j|||d�}��|�}�||�q#tdtjd�D])}g}|j}�j|||d�}�j||d�}|jjsb|jjrh�||�qD�||�qDdS)Nrrr~cSr-rLr)rrrrr���zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>rOrT)	r�rr�r�r�r�r�r�r�)�arrr�r�r�rNrU�rjrhr*rr�check_array�s$

�z;AbstractPickleTests.test_buffers_numpy.<locals>.check_arrayrNr��rn)rcZarangeZreshape�T)r*rnrlrrmr�test_buffers_numpy�s

z&AbstractPickleTests.test_buffers_numpycs�ddlm�G���fdd�d�atD]J}td�D]C}d�dd�td�D���D]}||_�|_q(d	�z
|��|�}|�|�Wqt	y\}zd
}|�
|t|��WYd}~qd}~wwqdS)Nr)�getrandbitscs.eZdZ�fdd�Zdd�Z��fdd�ZdS)�Badcs�Sr rrP)�ENABLEDrrrRr$z
Bad.__eq__cSr-r�rr.rrr�__hash__r$zBad.__hash__cs�d�dkr
���tdfS)NrNrr)�clearrsr.)�
collectionrrrrrdszBad.__reduce__N)r7r8r9rRrurdr�rtrwrrrrrssrsrFcSsi|]}t�t��qSr)rs)r�rrrrrr#zEAbstractPickleTests.test_evil_class_mutating_dict.<locals>.<dictcomp>T�changed size during iteration)�randomrrrsr�r�r�rwr�r�r�r'ri)r*r�rr�r�rwrGrrxr�test_evil_class_mutating_dict
s(
����z1AbstractPickleTests.test_evil_class_mutating_dictcs�t�d�s��t���d���Gdd�d�a��fdd�}tD]8�|t�g�|t�t�g�|t�h�|t�t�h�|t�di�|t�dt�di�|t�t�d	��qdS)
Nr�z has no associated pickler typec@r\)�ClearerNr^rrrrr|.r_r|c
spG�fdd�d�j�}|t����}z|���WdSty7}zd}��|t|��WYd}~dSd}~ww)NcseZdZ�fdd�ZdS)z]AbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPicklercst|t�r	���dSr )r�r|rv�r*r��rwrr�
persistent_id3s
zkAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickler.persistent_idN)r7r8r9rrr~rr�EvilPickler2�r�ry)r�r2r<rr�r'ri)rwr�r�rwrGr�r~r�check1s��zHAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.checkrr�rk)r�ZskipTestrtr|r�)r*r�rr�r�%test_evil_pickler_mutating_collection(s

�z9AbstractPickleTests.test_evil_pickler_mutating_collection)�r7r8r9Z	optimizedr�r�r�r�r�r�r�r#r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr
rr
rrrrrrrrrr&r-r0r2r7r9rr=rBrCrErFrLrOrQrRrWr\r_rdrhrjrxr|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�r�r�r�r�rZskip_if_pgo_taskr�rrrrr r1r9rCrFrKrSrXr[r]r_r`ra�unittestZskipIfrcrqr{r�rrrrr��s





		
	'		
					



	
/
 *
A
:,*

,r�c@szeZdZeeddd�dd��Zeeddd�dd��Zeeddd�d	d
��Zeeddd�dd
��Z	eeddd�dd��Z
dS)�BigmemPickleTestsg������@F)�sizeZmemuse�dry_runc
Cs�dd|>}zCtD];}|dkrq	|j|d��&|�ttf��|j||d�Wd�n1s0wYWd�n1s?wYq	Wd}dSd}w)Nrr3r�r�r�)r�r�r�r�r#r�)r*r�r�r�rrr�test_huge_long_32bLs�����z$BigmemPickleTests.test_huge_long_32bg@c	Cs�d|d}zRtD]J}|dkrq	|j|d��5z)|j||d�}tjt�dt|��}|�|�}|�	|||t|�|��Wd}nd}wWd�n1sNwYq	Wd}dSd}w)N�abcdrMrLr�r�r)
r�r�r�rr�rrr�r5r��r*r�r�r�r6�headerZ
data_startrrr�test_huge_bytes_32b]s*�
����z%BigmemPickleTests.test_huge_bytes_32bc
Csd|d}z|tD]t}|dkrq	|j|d��_|dkrA|�ttf��|j||d�Wd�n1s4wY	Wd�q	z)|j||d�}tjt�	dt
|��}|�|�}|�|||t
|�|��Wd}nd}wWd�n1sxwYq	Wd}dSd}w)NsacbdrMrLr�r��<Q)
r�r�r�r�r#r�rr�rrr�r5r�r�rrr�test_huge_bytes_64brs6���
����z%BigmemPickleTests.test_huge_bytes_64br3c	Cs�d|d}zftD]^}|dkrq	|j|d��Iz=|j||d�}tjt�dt|��}|�d�}|�	|||t|�|��|�	|�
d�td�|�d�t|��Wd}nd}wWd�n1sbwYq	Wd}dSd}w)Nr3rMrr�r�rr�)r�r�r�rr�rrr�r5r��rindexr�rrr�test_huge_str_32b�s4�
������z#BigmemPickleTests.test_huge_str_32bc
Cs4d|d}z�tD]�}|dkrq	|j|d��s|dkrA|�ttf��|j||d�Wd�n1s4wY	Wd�q	z=|j||d�}tjt�	dt
|��}|�d�}|�|||t
|�|��|�|�
d�t
d�|�d�t
|��Wd}nd}wWd�n1s�wYq	Wd}dSd}w)Nr3rMrr�r�r�r�)r�r�r�r�r#r�rr�rrr�r5r�r�r�rrr�test_huge_str_64b�s@���
������z#BigmemPickleTests.test_huge_str_64bN)r7r8r9rr	r�r�r
r�r�r�rrrrr�Hs



r�c@�eZdZdZdZdd�ZdS)r�z4No __reduce_ex__ here, but inheriting it from objectrcCsd|_tdfS)Nrr)r�r�r.rrrrd��zREX_one.__reduce__N�r7r8r9rBr�rdrrrrr���r�c@�eZdZdZdZdd�ZdS)r�z1No __reduce__ here, but inheriting it from objectNcC�||_tdfSrZ�r�r��r*r�rrrr��r�zREX_two.__reduce_ex__�r7r8r9rBr�r�rrrrr��r�r�c@s eZdZdZdd�Zdd�ZdS)r�NcCr�rZr�r�rrrr��r�zREX_three.__reduce_ex__cC�td��)Nz#This __reduce__ shouldn't be called)rr.rrrrd�szREX_three.__reduce__)r7r8r9r�r�rdrrrrr��sr�c@r�)r�z(Calling base class method should succeedNcCs||_t�||�Sr )r�rr�r�rrrr��szREX_four.__reduce_ex__r�rrrrr��r�r�c@r�)r�z-This one used to fail with infinite recursionrcCsd|_t�|�Sr�)r�rrdr.rrrrd�rozREX_five.__reduce__Nr�rrrrr��r�r�c@�2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)r�z]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    NcCs|dur	||_dSg|_dSr r�)r*r�rrrrA��zREX_six.__init__cC�t|�t|�uo
|j|jkSr )rtr�rPrrrrR�r�zREX_six.__eq__cCrr )r�r�)r*�itemrrrr��rBzREX_six.appendcCst|�ddt|j�dfSrZ)rtrWr�r.rrrrd�r�zREX_six.__reduce__r )r7r8r9rBrArRr�rdrrrrr���
r�c@r�)r�z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    NcCs|dur	||_dSi|_dSr r�)r*r�rrrrA�r�zREX_seven.__init__cCr�r )rtr�rPrrrrR
r�zREX_seven.__eq__cCs||j|<dSr r�)r*r�rbrrr�__setitem__
rjzREX_seven.__setitem__cCst|�dddt|j���fSrZ)rtrWr�r�r.rrrrd
r�zREX_seven.__reduce__r )r7r8r9rBrArRr�rdrrrrr��r�r�c@r�)rzUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    NcCrar �r�r*rrrrrA
rczREX_state.__init__cCr�r �rtrrPrrrrR

r�zREX_state.__eq__cCrar r�r�rrr�__setstate__
rczREX_state.__setstate__cCst|�d|jfSrZr�r.rrrrd
rBzREX_state.__reduce__r )r7r8r9rBrArRr�rdrrrrr
r�rc@�eZdZdZdS)r�rN�r7r8r9r�rrrrr�
�r�c@r�)�MyFloatg�?Nr�rrrrr�
r�r�c@r�)�	MyComplexy�?Nr�rrrrr�
r�r�c@r�)�MyStrrNr�rrrrr� 
r�r�c@r�)�	MyUnicodeu	hello ሴNr�rrrrr�#
r�r�c@r�)rroNr�rrrrr&
r�rc@seZdZgd�ZdS)r�roNr�rrrrr�)
rTr�c@seZdZddd�ZdS)r�rr�rlNr�rrrrr�,
sr�c@seZdZddhZdS)rrmrnNr�rrrrr/
rTrc@seZdZeddh�ZdS)rrmrnN)r7r8r9rr�rrrrr2
r�rc@rM)�MyIntWithNewcCr'r )�AssertionError)r�rbrrrr�;
r$zMyIntWithNew.__new__N)r7r8r9r�rrrrr�:
rTr�c@seZdZejZdS)r�N)r7r8r9r6r�rrrrr�>
�
r�c@seZdZdgZdS)r�r�N)r7r8r9r�rrrrr�B
r�r�c@rC)r�cOr�)Nz3SimpleNewObj.__init__() didn't expect to get called)rVr�rrrrAF
r�zSimpleNewObj.__init__cCrsr )r6rOrPrrrrRI
r�zSimpleNewObj.__eq__N)r7r8r9rArRrrrrr�E
rer�c@rM)r�cCsd|dfS)N�%Xr5rr.rrr�__getnewargs__M
rSzComplexNewObj.__getnewargs__N)r7r8r9r�rrrrr�L
rTr�c@rM)r�cCsd|fddifS)Nr��baser5rr.rrr�__getnewargs_ex__Q
r�z!ComplexNewObjEx.__getnewargs_ex__N)r7r8r9r�rrrrr�P
rTr�c@rM)r�cCs
|jdSr )r�)r*r�rrr�__getattr__U
rczBadGetattr.__getattr__N)r7r8r9r�rrrrr�T
rTr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�AbstractPickleModuleTestsc	C�Bttd�}z|��|�t|jd|�Wt�t�dSt�t�w�Nr��{�r�r
�closer�r�rr�unlink�r*r�rrr�test_dump_closed_file[
�

z/AbstractPickleModuleTests.test_dump_closed_filec	Cr�r�r�r�rrr�test_load_closed_filec
r�z/AbstractPickleModuleTests.test_load_closed_filecCsBt��}didg}|�||�|�d�|�|�}|�||�dS)Nr��|r)r2r<rr4�loadr�)r*�streamr�r7rrr�test_load_from_and_dump_to_filek
s


z9AbstractPickleModuleTests.test_load_from_and_dump_to_filecCs|�tjd�dSr})r�rr�r.rrr�test_highest_protocols
sz/AbstractPickleModuleTests.test_highest_protocolcCs^t��}|�d|d�|jd|dd�|�dd�|jddd�|�|d�|j|dd�dS)Nr�r�)�filer�r�)r2r<rr��Picklerr�rrr�test_callapiw
sz&AbstractPickleModuleTests.test_callapic	CsVttd�}ztD]}|�t|jd||�qW|��t�t�dS|��t�t�w)N�wr�)	r�r
r�r�rVrr�rr�rErrr�test_dump_text_file�
s
��z-AbstractPickleModuleTests.test_dump_text_filecCs(t�d�}|�ttjtjf|j|�dS)NsX''.)	r2r<r�r�rrZrr"r�)r*r�rrr�test_incomplete_input�
s
z/AbstractPickleModuleTests.test_incomplete_inputcCsNGdd�d|j�}Gdd�d|j�}|�tj|�jd�|�tj|�j�dS)Nc@rM)z;AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklercSrVr rr.rrrrA�
rkzDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__NrXrrrr�
BadPickler�
rTr�c@rM)z=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklercSrVr rr.rrrrA�
rkzFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__NrXrrrr�BadUnpickler�
rTr�r)r��	Unpicklerr�rr�rr"r�)r*r�r�rrr�
test_bad_init�
sz'AbstractPickleModuleTests.test_bad_initc		Cs�td�}tdd�D]}|�t��|||gjd�Wd�n1s#wYq	tdtjd�D]D}g}|j}||||d�}|�d|�|�t	|d�d�|�tj
��||�Wd�n1sdwY|||d�}|�||�q1dS)Nsfoorr~)r�rNrrT)r{r�r�r�r�rr�r+r�r�r"r�)	r*r�r�r�r�rUrNr�r�rrr�check_dumps_loads_oob_buffers�
s,����
��z7AbstractPickleModuleTests.check_dumps_loads_oob_bufferscCs|�|j|j�dSr )r�r�r�r.rrr�test_dumps_loads_oob_buffers�
sz6AbstractPickleModuleTests.test_dumps_loads_oob_bufferscs(�fdd�}�fdd�}��||�dS)Ncs$t��}�j||fi|��|��Sr )r2r<rr=)r�r�r�r.rrr��
szCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumpscst�|�}�j|fi|��Sr )r2r<r�)r�r�r�r.rrr��
s
zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads)r�)r*r�r�rr.r�test_dump_load_oob_buffers�
sz4AbstractPickleModuleTests.test_dump_load_oob_buffersN)r7r8r9r�r�r�r�r�r�r�r�r�r�r�rrrrr�Y
s
	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�AbstractPersistentPicklerTestscCsJt|t�r|ddkr|jd7_t|�S|dkr#|jd7_dSdS)Nr�rr�test_false_valuer)r�r6�id_countri�false_count)r*rrrrr�
sz,AbstractPersistentPicklerTests.persistent_idcCs0|s|jd7_dS|jd7_t|�}|S)Nrr�)�load_false_count�
load_countr6)r*Zoidrrrr�persistent_load�
sz.AbstractPersistentPicklerTests.persistent_loadc	Cs�ttd��dg}tD]7}d|_d|_d|_d|_|�|�|�	||��|�|�|jd�|�|jd�|�|jd�|�|jd�qdS)Nr�r�rr~r)
r�r�r�r�r�r�r�r�r�r�)r*�Lr�rrr�test_persistence�
s�z/AbstractPersistentPicklerTests.test_persistenceN)r7r8r9rr�r�rrrrr��
s

r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�&AbstractIdentityPersistentPicklerTestscC�|Sr rr}rrrr�
r$z4AbstractIdentityPersistentPicklerTests.persistent_idcCr�r r)r*�pidrrrr��
r$z6AbstractIdentityPersistentPicklerTests.persistent_loadcCs2|�|�||��}|�|t|��|�||�dSr )r�r�r�rtr�)r*r�r�r7rrr�_check_return_correct_type�
szAAbstractIdentityPersistentPicklerTests._check_return_correct_typecCsDtD]}|dkr|�dd�qddddtfD]}|�||�qqdS)Nrr�sabc
zabc
r�g*\��(��)r�r�ri)r*r�r�rrr�test_return_correct_type�
s��z?AbstractIdentityPersistentPicklerTests.test_return_correct_typecCsBd}|�tj|j|d�tj|�d�d}|�tj|j|�dS)Nu∅rr�r�)r�rr�r��PERSIDr�r"r�)r*Z
non_ascii_strr6rrr�test_protocol0_is_ascii_onlyszCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_onlyN)r7r8r9rr�r�r�r�rrrrr��
s	r�c@sjeZdZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�#AbstractPicklerUnpicklerObjectTestsNcCrVr rr.rrrr�rkz)AbstractPicklerUnpicklerObjectTests.setUpcCs�gd�}tD]I}t��}|�||�}|�|�|��}|�d�|��|�|�|��}|��|�d�|��|�|�|��}|�	||�|�
||�qdS)N��abcdefgr��,r)r�r2r<�
pickler_classrr=r4�truncate�
clear_memor�r�)r*r�r�r�r��
first_pickledZsecond_pickledZ
third_pickledrrr�test_clear_pickler_memos$




�z;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memocCshgd�}t��}|�|�}|�|�|��}t��}|�|�}|j|_|�|�|��}|�||�dS�Nr�)r2r<r�rr=�memor�)r*r�r�r�r��primed�primed_pickledrrr�test_priming_pickler_memo2s



z=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memoc
Cs�gd�}t��}|�|�}|�|�|��}t��}|�|�}|j|_|�|�|��}|�t�|��}|��}|�||�|�t�|��}|j|_|��}	|j�	�|�|	|�|�
|	|u�dSr�)r2r<r�rr=r��unpickler_classr�r�rvr()
r*r�r�r�r�r�r��	unpicklerZunpickled_data1Zunpickled_data2rrr�test_priming_unpickler_memoDs&




z?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memocCs�gd�}t��}|�|�}|�|�|��}gd�}t��}|�|�}|�|�|��}t��}|�|�|�d�|�|�}|�|�	�|�|�d�|�
�|�|�|�d�|�|�	�|�dS)Nr�)r�r�r�r)r2r<r�rr=r@r4r�r�r�r�)r*�data1r�r�Zpickled1rRZpickled2r�rrr�test_reusing_unpickler_objectsbs(









zBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectsT�r/c	Cs�tD]o}|j|d��_dd�td�D�dtg}|�}|j||d�}|�|�|��}d}|||�}|�|�}	t|�D]}
|rD|��}|�	|	�
�|�|rZ|�	|��|t|��q<|�t|	j
�Wd�n1slwYqdS)Nr�cSsg|]}|t|�f�qSrrhr�rrrr�~r%zSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings.<locals>.<listcomp>i�sabcder�r~)
r�r�r�r�r�rr=r�r6r�r�r�r�)r*Zioclassr/r�r�r�r�r6rr�rr�rrr�_check_multiple_unpicklings{s*

����z?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklingscCrr )r�r2r<r.rrr�"test_multiple_unpicklings_seekable�rBzFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekablecCr��NFr�)r�r&r.rrr�$test_multiple_unpicklings_unseekable�r�zHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekablecCr�r�)r�r;r.rrr�!test_multiple_unpicklings_minimal�szEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimalcCsxttd��}tD]1}tdd�D])}tjt��|d�}|j||d�}|�|�|�d�|�	|�}|�
|��|�qqdS)Nr�r�)Zbuffer_sizer�r)r�r�r�r2�BufferedRandomr<r�rr4r�r�r�)r*r�r�Zbuf_sizer�r�r�rrr�"test_unpickling_buffering_readline�s


��zFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline)r7r8r9r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�	s r�Zreduce_Ac@rM)r>cCs
ttffSr )rir?r.rrrrd�rczAAA.__reduce__Nr�rrrrr>�rTr>c@rC)�BBBcC�
d|_dS)Nzsome attribute�rmr.rrrrA�s
zBBB.__init__cCr�)N�BBB.__setstate__rr�rrrr��rcrN)r7r8r9rAr�rrrrr��sr�cCs
d|_dS)atCustom state setter for BBB objects

    Such callable may be created by other persons than the ones who created the
    BBB class. If passed as the state_setter item of a custom reducer, this
    allows for custom state setting behavior of BBB objects. One can think of
    it as the analogous of list_setitems or dict_setitems but for foreign
    classes/functions.
    �custom state_setterNr)r�rrrr�setstate_bbb�s
	rc@r:)�AbstractCustomPicklerClassz<Pickler implementing a reducing hook using reducer_override.cCsLt|dd�}|dkrtdfS|dkrtdfS|dkrdS|dkr$td	��tS)
Nr7r�)r~�MyClass)�some str�gF�h�The reducer just failed)r�r6rir�r�)r*r�Zobj_namerrr�reducer_override�sz+AbstractCustomPicklerClass.reducer_overrideN)r7r8r9rBr
rrrrr�src@s"eZdZdd�Zejdd��ZdS)�AbstractHookTestsc
Cs8dd�}dd�}dd�}Gdd�d�}td	tjd
�D]~}|j|d��nt��}|�||�}|�||tj	g�t�
|���\}}	}
|�|d�|�|	d
�|�
|
tj	�|�tj��
|�|�Wd�n1sjwY|�td��
|�|�Wd�n1s�wYWd�n1s�wYqdS)NcSrVr rrrrrr��r$z.AbstractHookTests.test_pickler_hook.<locals>.fcSrVr rrrrrr�r$z.AbstractHookTests.test_pickler_hook.<locals>.gcSrVr rrrrrr�r$z.AbstractHookTests.test_pickler_hook.<locals>.hc@r\)z4AbstractHookTests.test_pickler_hook.<locals>.MyClassNr^rrrrr�r_rrrr�r~rr	)r�rr�r�r2r<r�r�math�logr�r=r�r�r�r�ZassertRaisesRegexr�)r*r�rrrr��biorD�new_fZsome_strZmath_logrrr�test_pickler_hook�s2�������z#AbstractHookTests.test_pickler_hookc	Cs�tdtjd�D]?}|j|d��/dd�}t�|�}t��}|�||�}|�	|�t�
|���}~~|�|��Wd�n1sBwYqdS)Nrrr�cSrVr rrrrrr�r$zEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.f)
r�rr�r�r��refr2r<r�rr�r=r)r*r�r��wrrrDrrrr�(test_reducer_override_no_reference_cycles

���z:AbstractHookTests.test_reducer_override_no_reference_cycleN)r7r8r9rrZcpython_onlyrrrrrr�s(rc@r%)
�AbstractDispatchTableTestscCsXt��}|�|d�}|�t��|jWd�n1swY|�t|d��dS)Nr�dispatch_table)r2r<r�r�rDrr�r�)r*r�rDrrr�test_default_dispatch_table#s�z6AbstractDispatchTableTests.test_default_dispatch_tablecs@����G�fdd�d�j��d���fdd�	}��|��dS)NcseZdZ�ZdS)zGAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r7r8r9rr)�dtrr�	MyPickler/r�rcs2t��}�||�}��|j��|�|�|��Sr )r2r<r�rrr=�r�r�r�rD�rrr*rrr�2s


zCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumpsr )�get_dispatch_tabler��_test_dispatch_table�r*r�rrr�test_class_dispatch_table+sz4AbstractDispatchTableTests.test_class_dispatch_tablecs(����d��fdd�	}��|��dS)Ncs:t��}��||�}�|_��|j��|�|�|��Sr )r2r<r�rr�rr=r�rr*rrr�?s
zFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumpsr )rrrrrr�test_instance_dispatch_table;sz7AbstractDispatchTableTests.test_instance_dispatch_tablecs��fdd�}dd�}d}|�||�|�|�||�|�d��fdd�}||t<|�||���|�||�|�t�}t�}|�||�t�|�||�t�|�||�t�|�||�t�||t<|�||�t�|�||���|�||�t�|�||�t�d	��fd
d�}	|	|t<|t=|�||���|�||�t�|�||�t�|�||�t�|�||�jd�d
d�}
|
|t<|�||�jd�dS)Ncst��|d��S�Nr)rr�rMr�rr�custom_load_dumpJrBzIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpcSst�t�|d��Sr!)rr�r�rMrrr�default_load_dumpMr�zJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpy�?@�reduce_1c�
t�ffSr rhrM)�REDUCE_1rrr$XrczAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1�reduce_2cr%r rhrM)�REDUCE_2rrr'orczAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2rcSstd|jddtfSrZ)r�rOrrMrrr�
reduce_bbb�r�zCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbbr)r��complexr>r�r?r�rm)r*r�rr"r#r�r$rmrnr'r)r)r&r(r�rrIsB
z/AbstractDispatchTableTests._test_dispatch_tableN)r7r8r9rrr rrrrrr!s
rr�zDATA{0} = (rz	    {0!r}r�z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")�rSrSrFrQr2rOr�rrrr�rr�r�r]r�r��textwraprZhttp.cookiesrr�r[�testrZtest.supportrrrrr	r
rZtest.support.import_helperrZtest.support.os_helperr
rZtest.support.warnings_helperrrZnumpyrcZ
skipUnlessr1r�r�r�r�rrr#r<r&rr;rDrNrUrYr]r`rfr8r6rgrkrtrprqrrrvr�r{r-r�r�r�r�r�r�r�Z	DATA2_DISr�Z	DATA3_DISr�Z	DATA4_DISr�r�r�r��ArithmeticErrorr�rDr��BufferError�BytesWarning�DeprecationWarningr��EnvironmentErrorr��FloatingPointError�
FutureWarning�
GeneratorExit�IOError�
ImportWarning�IndentationError�
IndexError�KeyError�KeyboardInterrupt�LookupError�MemoryError�	NameErrorr(rYr#�PendingDeprecationWarning�ReferenceErrorr��RuntimeWarning�
StopIteration�SyntaxError�
SyntaxWarning�SystemError�
SystemExit�TabErrorrV�UnboundLocalError�UnicodeError�UnicodeWarning�UserWarningr��Warningr^r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr��floatr�r*r�rir�r�r�rr�r�rwr�r�rrrr�r�r�r�r�r�r�r�r�r�r�r�r?r>r�rrrrr7r�r"rr�rDr�r�r��jrnrrrr�<module>s� 
����	
N�S�A�:�:�
C��������	�
���
������������������ �!�"�#�$�%�&�'�(�)�*�+�,�-�0i/


�k("

B
k
�