Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 13.59.244.1
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : pickletester.cpython-310.pyc
o

`b$�
@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZzddlZWneyYdZYnwddlmZddlmZddlmZmZmZmZmZmZddlm Z ddl!m"Z"dd	lm#Z#dd
l$m%Z%ddlm&Z&ze%��ddl'Z(Wd�n1s�wYWney�dZ(Ynwe
�)ej*dkd
�Z+e,ej-d�Z.dd�Z/dd�Z0dd�Z1Gdd�dej2�Z3Gdd�de4�Z5Gdd�d�Z6Gdd�d�Z7Gdd�de7�Z8Gdd �d e7�Z9Gd!d"�d"�Z:Gd#d$�d$�Z;ddl<Z<e7e<_7d%e7_=e8e<_8d%e8_=e9e<_9d%e9_=Gd&d'�d'e>�Z?Gd(d)�d)e7�Z@Gd*d+�d+eA�ZBGd,d-�d-e4eBd.�ZCGd/d0�d0eA�ZDd1d2�ZEGd3d4�d4eF�ZGGd5d6�d6eH�ZIedu�rrGd7d8�d8�ZJd9ZKd:ZLd;ZMd<ZNd=ZOd>ZPd?ZQd@ZRdAZSdBZTdCZUdDZVdEZWdFZXgeY�eZ�e[�e\�e]�e^�e_�e`�ea�eb�ec�ed�ee�ef�e�eg�eh�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��RZ�dGZ�dHZ�dIdJ�Z�GdKdL�dL�Z�GdMdN�dN�Z�GdOdP�dP�Z�GdQdR�dRe4�Z�GdSdT�dTe4�Z�GdUdV�dVe4�Z�GdWdX�dXe4�Z�GdYdZ�dZe4�Z�Gd[d\�d\e4�Z�Gd]d^�d^e4�Z�Gd_d`�d`e4�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�e4�Z�Gd�d��d�e4�Z�d�d��Z�Gd�d��d��Z�Gd�d��d��Z�Gd�d��d��Z�e�d%k�r�dd�lm�Z�e��Z�e,ej-d�D]OZ�e��e�e��Z�e�d���e���e,de�e��d��D]Z�eFe�e�e�d���Z�e�d���e¡��qLe�d��e��e�d���e���e�d���e���e�e��e�d��e���q5dSdS)��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/python-3.10/lib/python3.10/test/pickletester.py�opcode_in_pickle9s
�rcCs6d}t�|�D]\}}}|j|�d�kr|d7}q|S)Nrrrr)rr�nrrrrr�count_opcode@s�rcCs|S�Nr��xrrr�identityH�r#c@�,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�UnseekableIOcG�t�r )�NotImplementedError��self�argsrrr�peekMr$zUnseekableIO.peekcC�dS)NFr�r*rrr�seekablePr$zUnseekableIO.seekablecG�tj�r ��io�UnsupportedOperationr)rrr�seekS�zUnseekableIO.seekcCr0r r1r.rrr�tellVr5zUnseekableIO.tellN)�__name__�
__module__�__qualname__r,r/r4r6rrrrr&Ls
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;Zsr;c@�eZdZdd�Zdd�ZdS)�ExtensionSavercCsD||_|tjvrtj||_t�|jd|jd|�dSd|_dS�Nrr)r�copyreg�_inverted_registry�pair�remove_extension)r*rrrrrAss


zExtensionSaver.__init__cCs\|j}tj�|�}|durt�|d|d|�|j}|dur,t�|d|d|�dSdSrE)rrFrG�getrIrH�
add_extension)r*rZcurpairrHrrr�restore|s�zExtensionSaver.restoreN)r7r8r9rArLrrrrrDps	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�/s$
��

�$�zPicklableNDArray.__reduce_ex__cCsDt|��}t|���}Wd�n1swY||fi|��Sr )r��listr�)r�r�r�r��itemsrrrr�Bs
�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_copyDs$


���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_errorVs�
����P�z,AbstractUnpickleTests.check_unpickling_errorcC�|�|j|�t��dSr )r��	_testdatar��DATA0r.rrr�test_load_from_data0a�z*AbstractUnpickleTests.test_load_from_data0cCr�r )r�r�r��DATA1r.rrr�test_load_from_data1dr�z*AbstractUnpickleTests.test_load_from_data1cCr�r )r�r�r��DATA2r.rrr�test_load_from_data2gr�z*AbstractUnpickleTests.test_load_from_data2cCr�r )r�r�r��DATA3r.rrr�test_load_from_data3jr�z*AbstractUnpickleTests.test_load_from_data3cCr�r )r�r�r��DATA4r.rrr�test_load_from_data4mr�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_instanceps$
����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�Zbad)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�ruπsXπ.s
�Xπ.r	r.rrr� test_load_python2_unicode_as_str�rz6AbstractUnpickleTests.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_binbytes�rz#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_binunicode	r$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_binunicode8rz&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-r/z/AbstractUnpickleTests.test_large_32b_bytearray8cCr)Ns��€.r rrrr�test_large_32b_binunicode83r/z0AbstractUnpickleTests.test_large_32b_binunicode8cC�8d}|�|�}|�|gfd�|�|d|d�dS)Ns((lp100000
g100000
t.r�rr�r�r�r��r*�pickled�	unpickledrrr�test_get9�
zAbstractUnpickleTests.test_getcCr2)Ns(]q�h�t.r�rrr3r4rrr�test_binget?r8z!AbstractUnpickleTests.test_bingetcCr2)Ns(]rjt.r�rrr3r4rrr�test_long_bingetEr8z&AbstractUnpickleTests.test_long_bingetcCr2)Ns((l2t.r�rrr3r4rrr�test_dupKr8zAbstractUnpickleTests.test_dupcC�d}|�t|�dS)NsVa
p-1
.�r�r�rrrr�test_negative_putQsz'AbstractUnpickleTests.test_negative_putcCr<)Ns�Xar����.r=rrrr�test_negative_32b_binputVsz.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_string_s
�z.AbstractUnpickleTests.test_badly_quoted_stringcCs,gd�}|D]
\}}|�|�|�|�qdS)N))sS''
.r)sS""
.r)sS"\n"
.�
)sS'\n'
.rEr	)r*ZgoodpicklesrC�expectedrrr�test_correctly_quoted_stringqs�z2AbstractUnpickleTests.test_correctly_quoted_stringcCr)Ns��I42
.�*r	)r*r5rrr�test_frame_readlineysz)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*r5r6rxrrr�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!rUr�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�.rWrXrrr�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_errorsrBrrr�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(�rtrBrrr�
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_errorsrBrrr�test_truncated_datas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.rKcs�����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_racefsB
���

�z/AbstractUnpickleTests.test_unpickle_module_racer )5r7r8r9r�r�r�r�r�r�r�r�r�r�r�rr
rrrrrr�requires_32br#r%r'r)r*r+r-r.r0r1r7r9r:r;r>r?r@rDrGrIrTrVrZr[rurvr�rZreap_threadsr�rrrrr�?sl
9






2'_r�c@s$eZdZdZejZdd�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`ead�d���Zbd�d��Zcd�d��Zdd�d��Zed�d��Zfd�d��Zgd�dÄZhd�dńZid�dDŽZjd�dɄZkd�Zld�Zmd�d̈́Zneojpd�dτ�Zqd�dфZrd�dӄZseojpd�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�Zd�d�Z�d�d�Z�d�d�Z�e���e�d�ud�d�d���Z�d�S)��AbstractPickleTestsFcCrVr rr.rrr�setUp�r$zAbstractPickleTests.setUpcCs�tD]@}td�}|�||�}|�|�}|�||�d}|�||�}|�|�}|�||�td|�}|�||�}|�|�}|�||�qdS)NrL)rrr)�	protocolsrg�dumpsr�r�rk�r*�protor"�sr�rrr�	test_misc�s



�zAbstractPickleTests.test_misccCs6|j}tD]}|�||�}|�|�}|�||�qdSr )r�r�r�r�r�)r*rFr�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�rFr�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_listrjz1AbstractPickleTests.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_dictCrjz1AbstractPickleTests.test_recursive_tuple_and_dictcCr�r�)r�r�r.rrr�&test_recursive_tuple_and_dict_subclassFr�z:AbstractPickleTests.test_recursive_tuple_and_dict_subclasscCr�)NcSr�r r�r!rrrr�Jr�zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>r�)r�r�r.rrr�"test_recursive_tuple_and_dict_likeIr�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_keyLs
�z,AbstractPickleTests._test_recursive_dict_keycCr�r )r�rwr.rrr�test_recursive_dict_keyZrjz+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�ar�zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>r�)r�r�r.rrr�test_recursive_dict_like_key`r�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_keycs,

 �z6AbstractPickleTests._test_recursive_tuple_and_dict_keycCr�r )r�rwr.rrr�!test_recursive_tuple_and_dict_keyrjz5AbstractPickleTests.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)NrLrr)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�r�r�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�rAz0AbstractPickleTests.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�rr.rrr�%test_recursive_dict_subclass_and_inst�rAz9AbstractPickleTests.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��urC�u2rrr�test_unicodes
��z AbstractPickleTests.test_unicodecCs4d}tD]}|�||�}|�|�}|�||�qdS)Nu𒍅r)r*r�r�rCr�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�rw�xyzs,xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzcSsg|]}t|g��qSr�r��r�r�rrrr�&sz2AbstractPickleTests.test_bytes.<locals>.<listcomp>�cSsg|]}t||g��qSrr r!rrrr�)�)r�r�r�r�r�)r*r�r�rCrrr�
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)NrrKs	bytearrayrLr~)r�r,r�r�r�r��assertIn�
assertTruerr�GLOBAL�STACK_GLOBAL�assertNotIn�
BYTEARRAY8)r*r�r�rnrCZbbrrr�test_bytearray-s&
���z"AbstractPickleTests.test_bytearraycCsJtD] }dD]}t|�}|�||f|�}|�|�\}}|�||�qqdS)Nr)r�r,r�r�r�)r*r�r�rnrC�b1�b2rrr�test_bytearray_memoization_bug@s��z2AbstractPickleTests.test_bytearray_memoization_bugcCsVtD]&}tj}|r(||fD]}|�||�}|�|�}|�||�q|d?}|s	qdSr�)r�r��maxsizer�r�r�)r*r�rrFr�Zn2rrr�	test_intsHs
���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�rCrrr�	test_longRs&
���
	
�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�l�z2AbstractPickleTests.test_float.<locals>.<listcomp>r)r*Ztest_valuesr�rbrr�rrr�
test_floatis
��zAbstractPickleTests.test_float�LC_ALL�de_DE�fr_FRcCs |�|�dd�dd�d�dS)Ng333333�?rrKsF1.)r�r�r.rrr�test_float_formatss z%AbstractPickleTests.test_float_formatcCs6tD]}t�}|�||�}|�|�}|�|t�qdSr )r��AAAr�r�r��REDUCE_A�r*r��instrrrrr�test_reducexs
�zAbstractPickleTests.test_reducecCs:tD]}tdd�}|�||�}|�|�}|�||�qdS)Nrr�)r�rkr�r�r�r>rrr�test_getinitargss

�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�rtrBrrr�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�rE)r*rFr�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�rLrrr�test_notimplemented�rNz'AbstractPickleTests.test_notimplementedcCsLddtg}|D]}tD]}|�t|�|�}|�|�}|�t|�|�qqdSrK)r�r�r�rtr�r�)r*Z
singletonsZ	singletonr�r�rrrr�test_singleton_types�s

��z(AbstractPickleTests.test_singleton_typesc
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�r5Z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)NrVr2r�)r�r�r�r�r�rr�LONG4rXrrr�
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�)rrK)rrL)rr)rr)rr�)rrK�rrL)r�r�r�r)r�r�)r�rK)r�rL)rKr)rKr))rKr�)rKrK�rKrLr)r�rr�rK)rr�rKrLrK)r�TUPLE�EMPTY_TUPLE�TUPLE1�TUPLE2�TUPLE3r�r�r�r��minr�r&r)r*�expected_opcodermrnr�r��er�r"r�r�rFrrr�test_short_tuples�sf
�������	�
��
�������
��z%AbstractPickleTests.test_short_tuplesc
Cs�tjtjtjtjtjtjtjtjtjtjtjtjd�}tD]/}dD]*}|�||�}|�|�}|�||u||||f�|t	|d�|f}|�t
||��q!qdS)N))rN)rN)r�N)rKN)rT)rT)r�T)rKT)rF)rF)r�F)rKF)NFTrK)rrS�INT�NEWTRUE�NEWFALSEr�r�r�r&rer)r*rfr�r"r�r�rFrrr�test_singletons
s,�
��z#AbstractPickleTests.test_singletonscC�Htgd��}d|_d|_tD]}|�||�}|�|�}|�||�qdS�Nr_rH�hello)rr�r�r�r�r�r�rXrrr�test_newobj_tuple#�
�z%AbstractPickleTests.test_newobj_tuplecCrmrn)r�r�r�r�r�r�r�rXrrr�test_newobj_list,rqz$AbstractPickleTests.test_newobj_listc	Cs�tD]A}tD]<}|j}||j�}d|_|�||�}|�|�}|||||t|�f}|�||�|�	||�||�|�|�	|j
|j
|�qqdS�NrH)r��	myclasses�__base__�sampler�r�r�rtr�r�rO)r*r�rN�Br"r�r��detailrrr�test_newobj_generic5s

��z'AbstractPickleTests.test_newobj_genericc	Cs�tdd�}ttfD]}|�|�q
tD]J}|D]E}|j}||j�}d|_t�	|�}|�
||�}|�|�}	|�t
|	�t
|��|||||	t
|	�f}
|�||�||	�|
�|�|j|	j|
�qqdSrs)rt�MyIntrr�r�rurvr��weakref�proxyr�r�r�rtrO)r*Zclassesr�r�rNrwr"rCr�r�rxrrr�test_newobj_proxiesBs"


��z'AbstractPickleTests.test_newobj_proxiescCs`tD]+}td�}d|_|�||�}|�|�}|�t|�t�|�t|�d�|�|jd�qdS)NrrH)	r��
MyIntWithNew2r�r�r�r�rtr�r4r�rrr�test_newobj_overridden_newUs
�z.AbstractPickleTests.test_newobj_overridden_newcCsFt}t�t�}|�|d�}zda|�ttjf|j|�W|adS|aw)NrLrH)�SimpleNewObjr�r�r�rUrr!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�r_rHrorr�sMyListr�T)rDrFrKr7r�r�r�r�r%r��assertFalserr�r�r)r��reprrL)r*Zextcode�opcodergr"�s1r��s2rrr�produce_global_extps&

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�)rwrr�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�rLrrr�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�rXrrr�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�rLs	XFACEs�FACE)�
ComplexNewObjr�r�r�r�r�r%r�rrr�r�r�r�r�rXrrr�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�rXrrr�test_complex_newobj_ex	s*�
���z*AbstractPickleTests.test_complex_newobj_excCs>tgd��}d|_d|_|�|d�}|�|�}|�||�dS)Nr_rHror�)�SlotListr�r�r�r�r�)r*r"r�r�rrr�test_newobj_list_slots	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_called)	r�z)AbstractPickleTests.test_reduce_ex_calledcCr�r )r��	REX_threer�r�r�r�r�rrr�test_reduce_ex_overrides_reduce2	r�z3AbstractPickleTests.test_reduce_ex_overrides_reducecCsTtD]%}t�}|�|jd�|�||�}|�|j|�|�|�}|�|j|�qdSr )r��REX_fourr�r�r�r�r�rrr�test_reduce_ex_calls_base;	r�z-AbstractPickleTests.test_reduce_ex_calls_basecCsTtD]%}t�}|�|jd�|�||�}|�|jd�|�|�}|�|jd�qdSrE)r��REX_fiver�r�r�r�r�rrr�test_reduce_calls_baseD	r�z*AbstractPickleTests.test_reduce_calls_basec	CsNt�}tD]}t���|�t|j||�Wd�n1swYqdSr )�
BadGetattrr�rZinfinite_recursionr��RuntimeErrorr�)r*r"r�rrr�test_bad_getattrM	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.rrrrdY	�zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N�r7r8r9rdrrrrrNX	rTrNc@rM)z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.DcSstdddgfSrZ)rwr.rrrrd]	r�zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__Nr�rrrrrU\	rTrU)rr�r�r�
PicklingError)r*rNrUr�rrr�test_reduce_bad_iteratorU	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>o	��z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>r(css�|]	}|gd�fVqdS))rLr~rMNr)r��krrrr�p	r�r�)r�rwr�r�r�r�r�)r*r�Z
large_dictr�r�rrrrr�test_many_puts_and_getsl	s
���z+AbstractPickleTests.test_many_puts_and_getsc	CsjtD]0}t�}d|_d|_|�||�}|�|�}t|j�}t|j�}t||�D]
\}}|�	||�q'qdS)NrHro)
r�rNr�r�r�r��sortedrO�zipr�)	r*r�r"r�r�Zx_keysZy_keysZx_keyZy_keyrrr�test_attribute_name_interningy	s


��z1AbstractPickleTests.test_attribute_name_interningcCs>|�td�d�}|�|t�|�tdg�d�}|�|t�dS)Nr~r�rK)r�r�r�r�r��	DATA_SET2rrrr�test_pickle_to_2x�	sz%AbstractPickleTests.test_pickle_to_2xcCsTtD]%}dtddtf}|�||�}|�|�}|�t|�t|��|�||�qdS)Nrsxyix)r�rer�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*ZpicklesZsizesrCrr�r�test_int_pickling_efficiency�	s����z0AbstractPickleTests.test_int_pickling_efficiencycCs6|�||�}|�t||��|�|�}|�||�dSr )r�r&rr�r�)r*r�r�r�r5r6rrr�_check_pickling_with_opcode�	s
z/AbstractPickleTests._check_pickling_with_opcodecCsDtgd��}tD]}|dkr|�|tj|�q|�|tj|�qdS)Nr_r)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�������r_r)r�r�r�r�SETITEMr�r�rrr�test_setitems_on_non_dicts�	s�z.AbstractPickleTests.test_setitems_on_non_dictsrLr�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>�BINBYTESr*�BINUNICODE8�	BINBYTES8�
BINUNICODE�FRAMErQ�	)rr�assertLessEqual�assertNotEqualrxr��FRAME_SIZE_TARGET�
assertLess�FRAME_SIZE_MINr�r�)r*r5Z	frame_endZframeless_startZframeless_opcodesrrW�posrrr�check_frame_opcodes�	sF
�
��
��
��z'AbstractPickleTests.check_frame_opcodesc	Cs�ttd��}tdtjd�D]J}|j|d��:|�||�}|�|�}|�||�t|�t	tj
|�}|�||jd�|�
||jd�|�|�Wd�n1sSwYqdS)Ni��rLrr�r�)r�r�rr�r�r�r�r�r�rr��
assertGreaterr�r�r�)r*r�r�r5r6Zbytes_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�
r6zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>r��x�y�zrLr)FT)r��fast�pickler�r�cSr�r�r�r�rrrr�
r�cSr�rr�r�rrrr�
r�)r�rr�r�r�r�r2r<r�r��dumpr=r�r�rr�r�)r*�NZsmall_itemsr�r�r�r5�bufr�r6�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)NrLc
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)
r5Z
keep_frameZframe_startsZframe_opcode_sizer��_r�Z	newpickleZlast_frame_endr�rrr�
remove_frames&
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|dS)Nr�r)r�rrrr�G
sz:AbstractPickleTests.test_optional_frames.<locals>.<lambda>r )rr�r�r�r,r�r�r�rr�r�r�)r*r�Z
num_framesr�r�r5Zframeless_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.rrrrAP
rczbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__cS�|j�|�dSr )r�r�)r*�chunkrrrr@R
rAz_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writecSsd�|j�S)Nrw)r�r�r.rrr�concatenate_chunksT
rSzlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunksN)r7r8r9rBrAr@rrrrr�ChunkAccumulatorN
s
rrLrcSs,g|]}t|��d�|ddt|�if�qS)r�rHr�)rir�r!rrrr�X
s$�zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>g��@Z0123456789abcdefr3r�rKcSr�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�r4r�r�r�r�rr�r�r�r�r�r�
gc_collectr�r�r�)
r*rr�Zobjects�writerr5Z
reconstructedr�Zchunk_sizesZlarge_sizesZmedium_sizesZsmall_sizesZ
chunk_sizerr.r�+test_framed_write_sizes_with_delayed_writerL
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)r7r8r9rNrrrrrw�
�rwN)r7r8r9rwrrrr�A�
r
rN)r7r8r9rrrrrr	�
r
r	r)r�r�)r	r�rr�rrwrNr�r�r�r�)r*r�r�r6rrr�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_r
zRecursive.mod.Recursiverr�)
r
r��modulesr8�modr9r�rr�r�r�r�r�)r*r�r6rrr�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-dS)Nc@s:eZdZedd��Zedd��Zdd�ZGdd�d�Zd	S)
�
PyMethodsTestcSr-)N�cheeserrrrrr�
�zPyMethodsTest.cheesecSs|tusJ�dS)N�wine)r�r�rrrr�
szPyMethodsTest.winecSst|t�sJ�dS)N�biscuits)r�rr.rrrr�
szPyMethodsTest.biscuitsc@s0eZdZdZedd��Zedd��Zdd�ZdS)	zPyMethodsTest.NestedzNested classcSr-)N�ketchuprrrrrr�
rzPyMethodsTest.Nested.ketchupcSs|tjusJ�dS)N�maple)rr	rrrrr�
szPyMethodsTest.Nested.maplecSst|tj�sJ�dS)N�pie)r�rr	r.rrrr�
szPyMethodsTest.Nested.pieN)	r7r8r9rB�staticmethodrr�rrrrrrr	�
s

r	N)	r7r8r9rrr�rrr	rrrrr�
s

rr�r��method)rrrrr	rrrr�rr�r�r�r�r�)r*Z
py_methodsZpy_unbound_methodsr�rr6r�r�rrr�test_py_methods�
s6�	�������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_dS)Nc@seZdZGdd�de�ZdS)�Subclassc@r\)zSubclass.NestedNr^rrrrr	�
r_r	N)r7r8r9rir	rrrrr�
sr�abcd)r�)rr�r_rrr�r�))rmr)rnr�)sabcr)rr�r�Zsweet)rgrgr)r�r�indexri�__len__r��__contains__r�rwrr,�	maketrans�countr	r�rr�r�r�r�r�)r*Z	c_methodsr�rr+r6rrr�test_c_methods�
s.�����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)NrrJ�__builtin__�xrangeZ123�	itertools�imaprOrQ�
exceptionsr�rS�IterableUserDict�UserListrR�defaultdictrK)rtr�zc%s
%s)r�r�r4rNrOrPrQr�rRrSr,r-r�rtr�r%r�r�r�)r*Ztests�valrrxr�r5rrr�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)�	byteorderrrw)r1)r�r�r�)rLr�r])r�r�r�r�r\)r{r�r�r�r4�
from_bytesr�r�)r*Z
bytestringr�rbr�rrr�buffer_like_objects&s(�

��
��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~r3cSr-�NTr�r�rrr�buffer_callbackJr$zAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback�r:)r7r�rr�r�r�r%r�r�NEXT_BUFFER�SHORT_BINBYTESr�r*r�r�r�rt)r*r�r�r�r:�data2r�rrr�test_in_band_buffers:s0���
��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~r;rcs��|���Sr )r�r�)r���buffersrrr�csz6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>r3r@)r7r�r�r�r�r�rr�r)r�rr=r*r<�READONLY_BUFFERr�r�r�r!r�r�r�rt�iter)r*r�r�r:r�r�rr@r�test_oob_buffersYsL��������z$AbstractPickleTests.test_oob_bufferscCsttd�}tdtjd�D]+}g}|j}|j|||d�}tt|�}|j||d�}|�	t
|�t
|��|�||�qdS�N�foobarr~rr;r@)r{r�rr�r�r�r�r,r�r�rtr�)r*r�r�rAr:r�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)NrFrr~)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�rr@rrrr:�rSzGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callbackrFr~r;)rr�r��ZeroDivisionErrorr�)r*r:r�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
dSrE)rr�r�r�r�r�r�rUr�rr!)r*r�r�r�rrr�test_buffers_error�s
����z&AbstractPickleTests.test_buffers_errorcCs8tdtjd�D]}|jd|dd�}|j|dd�}qdS)Nr~rr;r@)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_copycrNr )rOrPrQr�rRr�rSr.rr�
check_copy�rUz: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-r8r)r�rrrr���zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>r;r@)	r�rr�r�r�r�r�r�r�)�arrr�r�r�r:rA�rVrTr*rr�check_array�s$

�z;AbstractPickleTests.test_buffers_numpy.<locals>.check_arrayrMr��r^)rOZarangeZreshape�T)r*rZrXrrYr�test_buffers_numpy�s

z&AbstractPickleTests.test_buffers_numpy)�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	r
rr
rrrrrrrrr$r+r.r0r5r7rr;r@rArCrDrJrMrOrPrUrYr[rhrlrprrryr}rr�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�r�r�rrrrr%r/r2r7r?rDrGrIrKrLrM�unittestZskipIfrOr]rrrrr��s





	'		
					



	
/
 *
A
1#*
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)Nrr1r�r�r�)r�r�r�r�r"r�)r*r`r�r�rrr�test_huge_long_32b�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�abcdrLrKr�r�r
)
r�r�r�rr�rrr�r r��r*r`r�r�r5�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)NsacbdrLrKr�r��<Q)
r�r�r�r�r"r�rr�rrr�r r�rdrrr�test_huge_bytes_64bs6���
����z%BigmemPickleTests.test_huge_bytes_64br1c	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)NrrLrr�r�r
rc)r�r�r�rr�rrr�r r��rindexrdrrr�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)NrrLrr�r�rgrc)r�r�r�r�r"r�rr�rrr�r r�rirdrrr�test_huge_str_64b?s@���
������z#BigmemPickleTests.test_huge_str_64bN)r7r8r9rr	rbrfr
rhrjrkrrrrr_�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�grmzREX_two.__reduce_ex__�r7r8r9rBr�r�rrrrr�dror�c@s eZdZdZdd�Zdd�ZdS)r�NcCrqrZrrrsrrrr�mrmzREX_three.__reduce_ex__cC�td��)Nz#This __reduce__ shouldn't be called)rr.rrrrdpszREX_three.__reduce__)r7r8r9r�r�rdrrrrr�ksr�c@rp)r�z(Calling base class method should succeedNcCs||_t�||�Sr )r�rr�rsrrrr�vszREX_four.__reduce_ex__rtrrrrr�sror�c@rl)r�z-This one used to fail with infinite recursionrcCsd|_t�|�Sr�)r�rrdr.rrrrd}rozREX_five.__reduce__Nrnrrrrr�zror�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�rwzREX_six.__eq__cCr�r )r�r�)r*�itemrrrr��rAzREX_six.appendcCst|�ddt|j�dfSrZ)rtrCr�r.rrrrd�r�zREX_six.__reduce__r )r7r8r9rBrArRr�rdrrrrr���
r�c@rv)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�rwzREX_seven.__init__cCrxr )rtr�rPrrrrR�rwzREX_seven.__eq__cCs||j|<dSr r�)r*r�rbrrr�__setitem__�rjzREX_seven.__setitem__cCst|�dddt|j���fSrZ)rtrCr�r�r.rrrrd�rwzREX_seven.__reduce__r )r7r8r9rBrArRr{rdrrrrr��rzr�c@rv)rzUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    NcCrar �r�r*rrrrrA�rczREX_state.__init__cCrxr �rtrrPrrrrR�rwzREX_state.__eq__cCrar r|r}rrr�__setstate__�rczREX_state.__setstate__cCst|�d|jfSrZr~r.rrrrd�rAzREX_state.__reduce__r )r7r8r9rBrArRrrdrrrrr�rzrc@�eZdZdZdS)rzrN�r7r8r9rvrrrrrz��rzc@r�)�MyFloatg�?Nr�rrrrr��r�r�c@r�)�	MyComplexy�?Nr�rrrrr��r�r�c@r�)�MyStrroNr�rrrrr��r�r�c@r�)�	MyUnicodeu	hello ሴNr�rrrrr��r�r�c@r�)rr_Nr�rrrrr�r�rc@seZdZgd�ZdS)r�r_Nr�rrrrr��rTr�c@seZdZddd�ZdS)r�rr�rlNr�rrrrr��sr�c@seZdZddhZdS)rrmrnNr�rrrrr�rTrc@seZdZeddh�ZdS)rrmrnN)r7r8r9rrvrrrrr�src@rM)�MyIntWithNewcCr'r )�AssertionError)r�rbrrrr��r$zMyIntWithNew.__new__N)r7r8r9r�rrrrr��rTr�c@seZdZejZdS)r~N)r7r8r9r4r�rrrrr~��
r~c@seZdZdgZdS)r�r�N)r7r8r9r�rrrrr��r�r�c@rC)r�cOru)Nz3SimpleNewObj.__init__() didn't expect to get called)rUr�rrrrA�r�zSimpleNewObj.__init__cCrsr )r4rOrPrrrrR�rwzSimpleNewObj.__eq__N)r7r8r9rArRrrrrr��rer�c@rM)r�cCsd|dfS)N�%Xr3rr.rrr�__getnewargs__�rSzComplexNewObj.__getnewargs__N)r7r8r9r�rrrrr��rTr�c@rM)r�cCsd|fddifS)Nr��baser3rr.rrr�__getnewargs_ex__�r�z!ComplexNewObjEx.__getnewargs_ex__N)r7r8r9r�rrrrr��rTr�c@rM)r�cCs
|jdSr )r�)r*r�rrr�__getattr__�rczBadGetattr.__getattr__N)r7r8r9r�rrrrr��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�r�r�unlink�r*r�rrr�test_dump_closed_file��

z/AbstractPickleModuleTests.test_dump_closed_filec	Cr�r�r�r�rrr�test_load_closed_file�r�z/AbstractPickleModuleTests.test_load_closed_filecCsBt��}didg}|�||�|�d�|�|�}|�||�dS)Nr��|r)r2r<r�r4�loadr�)r*�streamr�r6rrr�test_load_from_and_dump_to_file�s


z9AbstractPickleModuleTests.test_load_from_and_dump_to_filecCs|�tjd�dSr})r�rr�r.rrr�test_highest_protocol
sz/AbstractPickleModuleTests.test_highest_protocolcCs^t��}|�d|d�|jd|dd�|�dd�|jddd�|�|d�|j|dd�dS)Nr�r�)�filer�r�)r2r<r�r��Picklerr�rrr�test_callapi
sz&AbstractPickleModuleTests.test_callapic	CsVttd�}ztD]}|�t|jd||�qW|��t�t�dS|��t�t�w)N�wr�)	r�r
r�r�rUr�r�rr�r1rrr�test_dump_text_file
s
��z-AbstractPickleModuleTests.test_dump_text_filecCs(t�d�}|�ttjtjf|j|�dS)NsX''.)	r2r<r�r�rrYrr!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&
rWzDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__NrXrrrr�
BadPickler%
rTr�c@rM)z=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklercSrVr rr.rrrrA)
rWzFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__NrXrrrr�BadUnpickler(
rTr�r)r��	Unpicklerr�rr�r�r!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�r:rr@)r{r�r�r�r�rr�r)r�r�r!r�)	r*r�r�r�r�rAr:r�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_buffersF
sz6AbstractPickleModuleTests.test_dumps_loads_oob_bufferscs(�fdd�}�fdd�}��||�dS)Ncs$t��}�j||fi|��|��Sr )r2r<r�r=)r�r�r�r.rrr�L
szCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumpscst�|�}�j|fi|��Sr )r2r<r�)r�r�r�r.rrr�Q
s
zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads)r�)r*r�r�rr.r�test_dump_load_oob_buffersJ
sz4AbstractPickleModuleTests.test_dump_load_oob_buffersN)r7r8r9r�r�r�r�r�r�r�r�r�r�r�rrrrr��s
	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�AbstractPersistentPicklerTestscCsJt|t�r|ddkr|jd7_t|�S|dkr#|jd7_dSdS)Nr�rr�test_false_valuer)r�r4�id_countri�false_count)r*rrrr�
persistent_id^
sz,AbstractPersistentPicklerTests.persistent_idcCs@|s|jd7_dS|jd7_t|�}|ddksJ�|S)Nrr�r�r)�load_false_count�
load_countr4)r*Zoidrrrr�persistent_loadh
sz.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_persistencer
s�z/AbstractPersistentPicklerTests.test_persistenceN)r7r8r9r�r�r�rrrrr�X
s

r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�&AbstractIdentityPersistentPicklerTestscC�|Sr r)r*r�rrrr��
r$z4AbstractIdentityPersistentPicklerTests.persistent_idcCr�r r)r*�pidrrrr��
r$z6AbstractIdentityPersistentPicklerTests.persistent_loadcCs2|�|�||��}|�|t|��|�||�dSr )r�r�r�rtr�)r*r�r�r6rrr�_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_strr5rrr�test_protocol0_is_ascii_only�
szCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_onlyN)r7r8r9r�r�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)�#AbstractPicklerUnpicklerObjectTestsNcCs|jsJ�|js
J�dSr )�
pickler_class�unpickler_classr.rrrr��
s
z)AbstractPicklerUnpicklerObjectTests.setUpcCs�gd�}tD]I}t��}|�||�}|�|�|��}|�d�|��|�|�|��}|��|�d�|��|�|�|��}|�	||�|�
||�qdS)N��abcdefgr��,r)r�r2r<r�r�r=r4�truncate�
clear_memor�r�)r*r�r�r�r��
first_pickledZsecond_pickledZ
third_pickledrrr�test_clear_pickler_memo�
s$




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



z=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memoc
Cs�gd�}t��}|�|�}|�|�|��}t��}|�|�}|j|_|�|�|��}|�t�|��}|��}|�||�|�t�|��}|j|_|��}	|j�	�|�|	|�|�
|	|u�dSr�)r2r<r�r�r=r�r�r�r��clearr&)
r*r�r�r�r�r�r��	unpicklerZunpickled_data1Zunpickled_data2rrr�test_priming_unpickler_memo�
s&




z?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memocCs�gd�}t��}|�|�}|�|�|��}gd�}t��}|�|�}|�|�|��}t��}|�|�|�d�|�|�}|�|�	�|�|�d�|�
�|�|�|�d�|�|�	�|�dS)Nr�)r�r�r�r)r2r<r�r�r=r@r4r�r�r�r�)r*�data1r�r�Zpickled1r>Zpickled2r�rrr�test_reusing_unpickler_objects�
s(









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�r�r=r�r6r�r�r�r�)r*Zioclassr/r�r�r�r�r5r�r�r�r�rrr�_check_multiple_unpicklingss*

����z?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklingscCrr )r�r2r<r.rrr�"test_multiple_unpicklings_seekable#rAzFAbstractPicklerUnpicklerObjectTests.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�r�r4r�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.rrrrdArczAAA.__reduce__Nr�rrrrr<@rTr<c@rC)�BBBcC�
d|_dS)Nzsome attribute�rmr.rrrrAEs
zBBB.__init__cCr�)N�BBB.__setstate__r�r}rrrrJrcr�N)r7r8r9rArrrrrr�Ds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_bbbNs
	r�c@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�r4rir�r�)r*r�Zobj_namerrr�reducer_override]sz+AbstractCustomPicklerClass.reducer_overrideN)r7r8r9rBr�rrrrr�[sr�c@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�yr$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_r�rrr�r~r�r�)r�rr�r�r2r<r�r��math�logr�r=r�r�r�r�ZassertRaisesRegexr�)r*r�r�r�r�r��biorC�new_fZsome_strZmath_logrrr�test_pickler_hookts2�������z#AbstractHookTests.test_pickler_hookc	Cs�tdtjd�D]E}|j|d��5dd�}t�|�}t��}|�||�}|�	|�t�
|���}|dks6J�~~|�|��Wd�n1sHwYqdS)Nrrr�cSrVr rrrrrr��r$zEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.fr~)
r�rr�r�r{�refr2r<r�r�r�r=r)r*r�r��wrr�rCr�rrr�(test_reducer_override_no_reference_cycle�s

���z:AbstractHookTests.test_reducer_override_no_reference_cycleN)r7r8r9r�rZcpython_onlyr�rrrrr�ss(r�c@r%)
�AbstractDispatchTableTestscCsXt��}|�|d�}|�t��|jWd�n1swY|�t|d��dS)Nr�dispatch_table)r2r<r�r�r0r�r�r�)r*r�rCrrr�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)r7r8r9r�r)�dtrr�	MyPickler�r�r�cs2t��}�||�}��|j��|�|�|��Sr )r2r<r�r�r�r=�r�r�r�rC�r�r�r*rrr��s


zCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumpsr )�get_dispatch_tabler��_test_dispatch_table�r*r�rr�r�test_class_dispatch_table�sz4AbstractDispatchTableTests.test_class_dispatch_tablecs(����d��fdd�	}��|��dS)Ncs:t��}��||�}�|_��|j��|�|�|��Sr )r2r<r�r�r�r�r=r��r�r*rrr��s
zFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumpsr )r�r�r�rr�r�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�r9r�rr�custom_load_dump�rAzIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpcSst�t�|d��Sr�)rr�r�r9rrr�default_load_dump�r�zJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpy�?@�reduce_1c�
t�ffSr rhr9)�REDUCE_1rrr�rczAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1�reduce_2crr rhr9)�REDUCE_2rrrrczAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2r�cSstd|jddtfSrZ)r�rOr�r9rrr�
reduce_bbbr�zCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbbr�)r��complexr<r�r=r�rm)r*r�r�r�r�r�rrmrnrrr)rrr�rr��sB
z/AbstractDispatchTableTests._test_dispatch_tableN)r7r8r9r�r�r�r�rrrrr��s
r�r�zDATA{0} = (r�z	    {0!r}r�z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")�rRrFrPr2rNr�r�rrr�rr�r�r^r{�textwraprZhttp.cookiesrr��ImportError�testrZtest.supportrrrrr	r
rZtest.support.import_helperrZtest.support.os_helperr
rZtest.support.warnings_helperrrZnumpyrOZ
skipUnlessr/r�r�r�r�rrr#r<r&rr;rDrNrUrYr]r`rfr8r4rgrkrtrprqrrrvr�r{r,r�r�r�r�r�r�r�Z	DATA2_DISr�Z	DATA3_DISr�Z	DATA4_DISr�r�r�r��ArithmeticErrorr�r0r��BufferError�BytesWarning�DeprecationWarningr��EnvironmentErrorr��FloatingPointError�
FutureWarning�
GeneratorExit�IOError�
ImportWarning�IndentationError�
IndexError�KeyError�KeyboardInterrupt�LookupError�MemoryError�	NameErrorr(�OSErrorr"�PendingDeprecationWarning�ReferenceErrorr��RuntimeWarning�
StopIteration�SyntaxError�
SyntaxWarning�SystemError�
SystemExit�TabErrorrU�UnboundLocalError�UnicodeError�UnicodeWarning�UserWarningr��WarningrJr�r�r�r�r�r�r_r�r�r�r�r�r�r�rrz�floatr�rr�rir�r�r�rr�r�rwr�r�rrrrtr�r~r�r�r�r�r�r�r�r�r�r=r<r�r�r�r�r�r7r�r"r�r�rCr�r�r��jrnrrrr�<module>s
� 
����	
N�S�A�:�:�
C��������	�
���
������������������ �!�"�#�$�%�&�'�(�)�*�+�,�-�0iD


�k("

B
k
�
© 2025 GrazzMean