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.7/test/__pycache__/pickletester.cpython-37.pyc
B

��g���,@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZddlmZmZmZmZmZmZmZmZmZddlmZe�e
j dkd�Z!e"ej#d	�Z$d
d�Z%dd
�Z&Gdd�dej'�Z(Gdd�d�Z)Gdd�d�Z*Gdd�de*�Z+Gdd�de*�Z,Gdd�de-�Z.Gdd�de-�Z/ddl0Z0e*e0_*de*_1e+e0_+de+_1e,e0_,de,_1e.e0_.de._1e/e0_/de/_1Gdd�de2�Z3Gdd �d e*�Z4Gd!d"�d"e5�Z6Gd#d$�d$e-e6d%�Z7Gd&d'�d'e5�Z8d(d)�Z9d*Z:d+Z;d,Z<d-Z=d.Z>d/Z?d0Z@d1ZAd2ZBd3ZCd4ZDd5ZEd6ZFd7ZGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeeefegeheiejekelemeneoepeqeresf,Ztd8Zud9Zvd:d;�ZwGd<d=�d=ejx�ZyGd>d?�d?ejx�ZzGd@dA�dAejx�Z{GdBdC�dCe-�Z|GdDdE�dEe-�Z}GdFdG�dGe-�Z~GdHdI�dIe-�ZGdJdK�dKe-�Z�GdLdM�dMe-�Z�GdNdO�dOe-�Z�GdPdQ�dQe2�Z�GdRdS�dSe��Z�GdTdU�dUe��Z�GdVdW�dWe��Z�GdXdY�dYe��Z�GdZd[�d[e��Z�Gd\d]�d]e��Z�Gd^d_�d_e��Z�Gd`da�dae��Z�Gdbdc�dce��Z�e�e�e�e�e�e�e�e�e�e�g
Z�Gddde�dee��Z�Gdfdg�dge2�a�Gdhdi�dit��Z�Gdjdk�dkt��Z�Gdldm�dm�Z�Gdndo�doejx�Z�Gdpdq�dqejx�Z�Gdrds�dsejx�Z�Gdtdu�duejx�Z�dvZ�Gdwdx�dxe-�Z�Gdydz�dze-�Z�Gd{d|�d|ejx�Z�e�dk�r�dd}lm�Z�ew�Z�x�e"ej#d	�D]�Z�e��e�e��Z�e�d~��e���x<e"de�e��d�D](Z�e�e�e�e�d��Z�e�d���e����q4We�d��e��e�d���e���e�d���e���e�e��e�d��e���qWdS)��N)�dedent)�SimpleCookie)�support)	�
TestFailed�TESTFN�run_with_locale�
no_tracing�_2G�_4G�
bigmemtest�reap_threads�forget)�bytes_typeslz(test is only meaningful on 32-bit builds�cCs2x,t�|�D]\}}}|j|�d�krdSqWdS)Nzlatin-1TF)�pickletools�genops�code�decode)r�pickle�op�dummy�r�-/usr/local/lib/python3.7/test/pickletester.py�opcode_in_pickle$srcCs:d}x0t�|�D]"\}}}|j|�d�kr|d7}qW|S)Nrzlatin-1r)rrrr)rr�nrrrrr�count_opcode+s
rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�UnseekableIOcGst�dS)N)�NotImplementedError)�self�argsrrr�peek4szUnseekableIO.peekcCsdS)NFr)rrrr�seekable7szUnseekableIO.seekablecGs
tj�dS)N)�io�UnsupportedOperation)rrrrr�seek:szUnseekableIO.seekcCs
tj�dS)N)r"r#)rrrr�tell=szUnseekableIO.tellN)�__name__�
__module__�__qualname__r r!r$r%rrrrr3src@seZdZdd�Zdd�ZdS)�ExtensionSavercCsB||_|tjkr8tj||_t�|jd|jd|�nd|_dS)Nrr)r�copyreg�_inverted_registry�pair�remove_extension)rrrrr�__init__Ns

zExtensionSaver.__init__cCsX|j}tj�|�}|dk	r0t�|d|d|�|j}|dk	rTt�|d|d|�dS)Nrr)rr*r+�getr-r,�
add_extension)rrZcurpairr,rrr�restoreWszExtensionSaver.restoreN)r&r'r(r.r1rrrrr)Ks	r)c@seZdZdd�ZdS)�CcCs|j|jkS)N)�__dict__)r�otherrrr�__eq__aszC.__eq__N)r&r'r(r5rrrrr2`sr2c@seZdZdd�ZdS)�DcCsdS)Nr)r�argrrrr.esz
D.__init__N)r&r'r(r.rrrrr6dsr6c@seZdZdd�ZdS)�EcCsdS)Nrr)rrrr�__getinitargs__iszE.__getinitargs__N)r&r'r(r9rrrrr8hsr8c@seZdZdS)�HN)r&r'r(rrrrr:lsr:c@seZdZdd�Zdd�ZdS)�KcCs
||_dS)N)�value)rr<rrrr.qsz
K.__init__cCst|jffS)N)r;r<)rrrr�
__reduce__tszK.__reduce__N)r&r'r(r.r=rrrrr;psr;�__main__c@seZdZdd�ZdS)�myintcCst|�|_dS)N)�str)r�xrrrr.�szmyint.__init__N)r&r'r(r.rrrrr?�sr?c@seZdZdd�Zdd�ZdS)�initargcCs||_||_dS)N)�a�b)rrCrDrrrr.�szinitarg.__init__cCs|j|jfS)N)rCrD)rrrrr9�szinitarg.__getinitargs__N)r&r'r(r.r9rrrrrB�srBc@seZdZdS)�	metaclassN)r&r'r(rrrrrE�srEc@seZdZdS)�
use_metaclassN)r&r'r(rrrrrF�srF)rEc@seZdZdd�Zdd�ZdS)�pickling_metaclasscCst|�t|�ko|j|jkS)N)�type�reduce_args)rr4rrrr5�szpickling_metaclass.__eq__cCs
t|jfS)N)�create_dynamic_classrI)rrrrr=�szpickling_metaclass.__reduce__N)r&r'r(r5r=rrrrrG�srGcCst||t��}||f|_|S)N)rG�dictrI)�name�bases�resultrrrrJ�s
rJs;(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|_ddddg}d}d}d}|�dd	|||d|||d|||dg�d
d
||f}|�|�|�|�|�d�|S)Nr�rg@y@�i��i�������abc�)r2�foo�bar�extend�append)�crAZuint1maxZuint2maxZint4max�yrrr�create_data�s 


rZc@s�eZdZe�ZdXdd�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/�Zed0d1��Zed2d3��Zd4d5�Zd6d7�Z d8d9�Z!d:d;�Z"d<d=�Z#ed>d?��Z$d@dA�Z%dBdC�Z&dDdE�Z'dFdG�Z(dHdI�Z)dJdK�Z*dLdM�Z+dNdO�Z,dPdQ�Z-dRdS�Z.dTdU�Z/e0dVdW��Z1dS)Y�AbstractUnpickleTestsNcCs�|dkrd�||�}|j|||d�|jt|�t|�|d�t|d�rn|j|j|j|d�|j|j|j|d�t|d�r�|j|j	|j	|d�xJ|j	D]@}|jt||�t||�|d�|jt
||d�t
||d�|d�q�WdS)zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r})�msgr3�	__slots__)�format�assertEqual�assertIsrH�hasattrZassertDictEqualr3ZassertIsNotZassertListEqualr]�getattr)r�objZobjcopyr\Zslotrrr�assert_is_copy�s

z$AbstractUnpickleTests.assert_is_copycCs�|j|d��p|�|��Zy|�|�WnDtk
rl}z&tjdkrZtd||jj|f��Wdd}~XYnXWdQRXWdQRXdS)N)�datarz%-32r - %s: %s)	�subTest�assertRaises�loads�
BaseExceptionr�verbose�print�	__class__r&)r�errorsre�excrrr�check_unpickling_error�s
z,AbstractUnpickleTests.check_unpickling_errorcCs|�|j|�t��dS)N)rd�	_testdatarh�DATA0)rrrr�test_load_from_data0�sz*AbstractUnpickleTests.test_load_from_data0cCs|�|j|�t��dS)N)rdrprh�DATA1)rrrr�test_load_from_data1�sz*AbstractUnpickleTests.test_load_from_data1cCs|�|j|�t��dS)N)rdrprh�DATA2)rrrr�test_load_from_data2�sz*AbstractUnpickleTests.test_load_from_data2cCs|�|j|�t��dS)N)rdrprh�DATA3)rrrr�test_load_from_data3�sz*AbstractUnpickleTests.test_load_from_data3cCs|�|j|�t��dS)N)rdrprh�DATA4)rrrr�test_load_from_data4�sz*AbstractUnpickleTests.test_load_from_data4cCs�x�tdftdftdfgD]z\}}|j�d�}d�d|�}|�||�|�|��d�d|�}|�||�|�|��d�d|�}|�||�|�|��qWdS)Nr)rA�asciis(i__main__
X
p0
(dp1
b.�Xs(c__main__
X
qoq}qb.s�(c__main__
X
qoq}qb.)r2r6r8r&�encode�replacerdrh)r�XrZxnameZpickle0Zpickle1Zpickle2rrr�test_load_classic_instance�s z0AbstractUnpickleTests.test_load_classic_instancecCsVd}dt|��d�d}|�|�}|�||�dt|��d�d}|�t|�dS)Nl�����Ir{s
.sJUNK
.)r@r}rhrdro�
ValueError)rZmaxint64re�gotrrr�
test_maxint64s
z#AbstractUnpickleTests.test_maxint64cCs\|�t�}|�|tddg��|�t�}|�t|�ttd���|�t|�ttd���|�t�}|�t|�t	�|�t|�
��dg�|�|djd�x:tD]2}t
�d|j�d��}|�|�}|�t|�|�q�W|�t
�dd	��}|�t|�t�|�t�}|�t|�t�|�|jd
�|�|jd�|�|jd�|�|jd�|�|jd�dS)NrrOrrS�keyr<�?r{s
StandardErrorrTZbad)rh�DATA_SETr_�set�DATA_XRANGErH�range�list�DATA_COOKIEr�keysr<�python2_exceptions_without_args�exception_pickler~r&r}r`�	Exception�
DATA_UEERR�UnicodeEncodeError�object�encoding�start�end�reason)r�loadedrnrerrr�test_unpickle_from_2xs,





z+AbstractUnpickleTests.test_unpickle_from_2xcCsF|�|jddd�d�|�|jddd�d�|�|jddd�d�dS)NsS'a\x00\xa0'
.�bytes)r�sa�sUa�.s�Ua�.)r_rh)rrrr�test_load_python2_str_as_bytes*s


z4AbstractUnpickleTests.test_load_python2_str_as_bytescCsF|�|jddd�d�|�|jddd�d�|�|jddd�d�dS)Ns	V\u03c0
.r�)r�uπsXπ.s
�Xπ.)r_rh)rrrr� test_load_python2_unicode_as_str5s


z6AbstractUnpickleTests.test_load_python2_unicode_as_strcCs2|�|jtjt�dd�dtjdd�d�dS)Nz<Ii,s,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�)r�)r_rhrZ	BINSTRING�struct�pack�STOP)rrrr�#test_load_long_python2_str_as_bytes@sz9AbstractUnpickleTests.test_load_long_python2_str_as_bytescCs\|�|�d��|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�dS)NsN.s�.Ts�.FsI01
.sI00
.)ZassertIsNonerhr`)rrrr�test_constantsGs
z$AbstractUnpickleTests.test_constantscCs|jddd�}|�|d�dS)Ns�Uq.zkoi8-r)r��)rhr_)r�emptyrrr�test_empty_bytestringNsz+AbstractUnpickleTests.test_empty_bytestringcCsd}|�|�|�d�dS)Ns	�C€.s€)r_rh)r�dumpedrrr�test_short_binbytesSsz)AbstractUnpickleTests.test_short_binbytescCsd}|�|�|�d�dS)Ns�B€.s€)r_rh)rr�rrr�
test_binbytesWsz#AbstractUnpickleTests.test_binbytescCsd}|�tjtf|�dS)Ns
�B����xyzq.)ror�UnpicklingError�
OverflowError)rr�rrr�test_negative_32b_binbytes[sz0AbstractUnpickleTests.test_negative_32b_binbytescCsd}|�tjtf|�dS)Ns
�X����xyzq.)rorr�r�)rr�rrr�test_negative_32b_binunicodebsz2AbstractUnpickleTests.test_negative_32b_binunicodecCsd}|�|�|�d�dS)Ns	��€.u€)r_rh)rr�rrr�test_short_binunicodeisz+AbstractUnpickleTests.test_short_binunicodecCs&|�td�|�ddg|�d��dS)Nsg0
p0)�ds((Kdtp0
hl.)))ro�KeyErrorrdrh)rrrr�
test_misc_getms
z#AbstractUnpickleTests.test_misc_getcCsd}|�|�|�d�dS)Ns��€.s€)r_rh)rr�rrr�test_binbytes8rsz$AbstractUnpickleTests.test_binbytes8cCsd}|�|�|�d�dS)Ns��€.u€)r_rh)rr�rrr�test_binunicode8vsz&AbstractUnpickleTests.test_binunicode8cCsd}|�tjtf|�dS)Ns��€.)rorr�r�)rr�rrr�test_large_32b_binbytes8zsz.AbstractUnpickleTests.test_large_32b_binbytes8cCsd}|�tjtf|�dS)Ns��€.)rorr�r�)rr�rrr�test_large_32b_binunicode8�sz0AbstractUnpickleTests.test_large_32b_binunicode8cCs8d}|�|�}|�|gfd�|�|d|d�dS)Ns((lp100000
g100000
t.rOrr)rhr_r`)r�pickled�	unpickledrrr�test_get�s
zAbstractUnpickleTests.test_getcCs8d}|�|�}|�|gfd�|�|d|d�dS)Ns(]q�h�t.rOrr)rhr_r`)rr�r�rrr�test_binget�s
z!AbstractUnpickleTests.test_bingetcCs8d}|�|�}|�|gfd�|�|d|d�dS)Ns(]rjt.rOrr)rhr_r`)rr�r�rrr�test_long_binget�s
z&AbstractUnpickleTests.test_long_bingetcCs8d}|�|�}|�|gfd�|�|d|d�dS)Ns((l2t.rOrr)rhr_r`)rr�r�rrr�test_dup�s
zAbstractUnpickleTests.test_dupcCsd}|�t|�dS)NsVa
p-1
.)ror�)rr�rrr�test_negative_put�sz'AbstractUnpickleTests.test_negative_putcCsd}|�t|�dS)Ns�Xar����.)ror�)rr�rrr�test_negative_32b_binput�sz.AbstractUnpickleTests.test_negative_32b_binputcCs|�td�dS)NsS'\'
.)ror�)rrrr�test_badly_escaped_string�sz/AbstractUnpickleTests.test_badly_escaped_stringc
Cs>ddddddddd	d
ddd
g
}x|D]}|�tj|�q$WdS)NsS'
.sS"
.sS' 
.sS" 
.sS'"
.sS"'
.sS' ' 
.sS" " 
.sS ''
.sS ""
.sS 
.sS
.sS.)rorr�)r�
badpickles�prrr�test_badly_quoted_string�s
z.AbstractUnpickleTests.test_badly_quoted_stringcCs4ddddg}x"|D]\}}|�|�|�|�qWdS)N)sS''
.r�)sS""
.r�)sS"\n"
.�
)sS'\n'
.r�)r_rh)rZgoodpicklesr��expectedrrr�test_correctly_quoted_string�sz2AbstractUnpickleTests.test_correctly_quoted_stringcCsd}|�|�|�d�dS)Ns��I42
.�*)r_rh)rr�rrr�test_frame_readline�sz)AbstractUnpickleTests.test_frame_readlinec	Csd}|�|�}|�t|�t�|�|tdd��|�t|�ddddddg�d	}|�|�|�tj�d
}|�|�|�tj	�xBdD]:}d|d
}|�|�}|�t|�t
�|�t|�d�q�WxJdD]B}d|d}|�|�}|�t|�tj
�|�|t�
ddi��q�WdS)Ns�c__builtin__
xrange
KKK�R.r�rO��rS�s�c__builtin__
reduce
.s�cwhichdb
whichdb
.)s	Exceptions
StandardErrors�cexceptions
s	
Uugh�R.Zugh)sUserDictsIterableUserDicts
�(cUserDict
s
o}Udata}KKssb.)rhr`rHr�r_r��	functools�reduce�dbm�whichdbr�r@�collections�UserDict)rr�r�rLrrr�test_compat_unpickle�s(




z*AbstractUnpickleTests.test_compat_unpicklecCs.|�|�d�d�|�td�|�td�dS)Nscbuiltins
int
)R.rsN)R.scbuiltins
int
NR.)r_rhro�	TypeError)rrrr�test_bad_reduce�sz%AbstractUnpickleTests.test_bad_reducecCs8tjtf}|�|�d�d�|�|d�|�|d�dS)Nscbuiltins
int
)�.rscbuiltins
len
)�.scbuiltins
int
N�.)rr�r�r_rhro)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�.)rr�r�r_rhro)rr�rrr�test_bad_newobj_ex�s

z(AbstractUnpickleTests.test_bad_newobj_exc,Cs|ddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,}x|D]}|�|j|�qbWdS)-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
���)ro�bad_stack_errors)rr�r�rrr�test_bad_stack�s\
z$AbstractUnpickleTests.test_bad_stackcCs`ddddddddd	d
ddd
dddddddddddddddddg}x|D]}|�|j|�qFWdS)NsN(.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(�)ror�)rr�r�rrr�
test_bad_mark-s@
z#AbstractUnpickleTests.test_bad_markcQCs�|�td�|�td�ddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgQ}x|D]}|�|j|�q�WdS)TN��N�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
�N)ro�EOFErrorZtruncated_errors)rr�r�rrr�test_truncated_dataTs�
z)AbstractUnpickleTests.test_truncated_datac		s^td�}td�}t�t�|�tjt�tj�	dt�|�tjj
t�ttj�td�d��}|�
|�d��WdQRXttj�td�d��}|�
|�d��WdQRX|�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�wbzutf-8zlocking_import.py�locker�locking_imports'�clocking_import
ToBeUnpickled
q)�q.r�cs�����t����dS)N)�waitrWrrhr)�barrier�pickle_bytes�resultsrr�t�sz:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t)�target)�
ToBeUnpickledcSsg|]}t|��qSr)rH)�.0rArrr�
<listcomp>�szCAbstractUnpickleTests.test_unpickle_module_race.<locals>.<listcomp>rO)r�os�mkdirrZ
addCleanup�shutilZrmtree�sys�path�insert�remove�open�join�writer}r
r
�	threadingZBarrierZThreadr�rr
rrr_)	rZ
locker_moduleZlocking_import_module�fr
rZt1�t2rr)r
rrr�test_unpickle_module_race�s>


z/AbstractUnpickleTests.test_unpickle_module_race)N)2r&r'r(rZrprdrorrrtrvrxrzr�r�r�r�r�r�r�r�r�r��requires_32br�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr"rrrrr[�sX
9
2'[r[c@s�eZdZdZejZdd�ZejZdd�Zdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Z d6d7�Z!d8d9�Z"d:d;�Z#d<d=�Z$d>d?�Z%e&d@dAdB�dCdD��Z'dEdF�Z(dGdH�Z)dIdJ�Z*dKdL�Z+dMdN�Z,dOdP�Z-dQdR�Z.dSdT�Z/dUdV�Z0dWdX�Z1dYdZ�Z2d[d\�Z3d]d^�Z4d_d`�Z5dadb�Z6dcdd�Z7dedf�Z8dgdh�Z9didj�Z:dkdl�Z;dmdn�Z<dodp�Z=dqdr�Z>dsdt�Z?dudv�Z@dwdx�ZAdydz�ZBd{d|�ZCd}d~�ZDdd��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZIeJd�d���ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�ZUd�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�S)��AbstractPickleTestsFcCsdS)Nr)rrrr�setUp�szAbstractPickleTests.setUpcCs�x�tD]�}td�}|�||�}|�|�}|�||�d}|�||�}|�|�}|�||�td|�}|�||�}|�|�}|�||�qWdS)Nr�)rrr)�	protocolsr?�dumpsrhrdrB)r�protorA�srYrrr�	test_misc�s




zAbstractPickleTests.test_misccCs:|j}x.tD]&}|�||�}|�|�}|�||�qWdS)N)rpr&r'rhrd)rr�r(r)r�rrr�test_roundtrip_equality
s


z+AbstractPickleTests.test_roundtrip_equalitycCsnddlm}ddlm}xPdtfdtffD]<\}}|�|j|�}|�}|||d�|��}|�	||�q*WdS)Nr)�StringIO)�disr)�out)
r"r,rr-�	DATA0_DIS�	DATA1_DISr'rp�getvaluer_)rr,r-r(r�r)Zfileliker�rrr�dont_test_disassemblysz)AbstractPickleTests.dont_test_disassemblycCsbg}|�|�xNtD]F}|�||�}|�|�}|�|t�|�t|�d�|�|d|�qWdS)Nrr)	rWr&r'rh�assertIsInstancer�r_�lenr`)r�lr(r)rArrr�test_recursive_list%s


z'AbstractPickleTests.test_recursive_listcCs�gf}|d�|�xvtD]n}|�||�}|�|�}|�|t�|�t|�d�|�|dt�|�t|d�d�|�	|dd|�qWdS)Nrr)
rWr&r'rhr3�tupler_r4r�r`)rrr(r)rArrr�test_recursive_tuple_and_list/s

z1AbstractPickleTests.test_recursive_tuple_and_listcCsfi}||d<xTtD]L}|�||�}|�|�}|�|t�|�t|���dg�|�|d|�qWdS)Nr)	r&r'rhr3rKr_r�r�r`)r�dr(r)rArrr�test_recursive_dict;s

z'AbstractPickleTests.test_recursive_dictcCs�i}t|�}d||<xttD]l}|�||�}|�|�}|�|t�|�t|���d�|�t	|���dt�|�
t	|���dj|�qWdS)Nrr)r;r&r'rhr3rKr_r4r�r�r`r<)rr9�kr(r)rArrr�test_recursive_dict_keyEs

z+AbstractPickleTests.test_recursive_dict_keycCs�t�}t|�}|�|�xttdtjd�D]`}|�||�}|�|�}|�|t�|�	t
|�d�|�t|�dt�|�t|�dj
|�q*WdS)Nr�rr)r�r;�addr�r�HIGHEST_PROTOCOLr'rhr3r_r4r�r`r<)rrYr;r(r)rArrr�test_recursive_setQs

z&AbstractPickleTests.test_recursive_setcCspt�}|�|�xZtdtjd�D]F}|�||�}|�|�}|�|t�|�t	|�d�|�
|d|�q"WdS)NrOrr)�MyListrWr�rr>r'rhr3r_r4r`)rrYr(r)rArrr�test_recursive_list_subclass]s

z0AbstractPickleTests.test_recursive_list_subclasscCstt�}||d<x`tdtjd�D]L}|�||�}|�|�}|�|t�|�t|�	��dg�|�
|d|�q WdS)NrrO)�MyDictr�rr>r'rhr3r_r�r�r`)rr9r(r)rArrr�test_recursive_dict_subclassgs
z0AbstractPickleTests.test_recursive_dict_subclasscCs�t�}t|�}d||<x�tdtjd�D]p}|�||�}|�|�}|�|t�|�t	t
|����d�|�t
|���dt�|�t
|���dj
|�q(WdS)NrrOr)rBr;r�rr>r'rhr3r_r4r�r�r`r<)rr9r;r(r)rArrr� test_recursive_dict_subclass_keyqs
z4AbstractPickleTests.test_recursive_dict_subclass_keycCsbt�}||_xPtD]H}|�||�}|�|�}|�|t�|�t|�t|��|�|j|�qWdS)N)	r2�attrr&r'rhr3r_�dirr`)r�ir(r)rArrr�test_recursive_inst}s

z'AbstractPickleTests.test_recursive_instcCs�g}d|i}t�}||_|�|�x�tD]�}|�||�}|�|�}|�|t�|�t	|�d�|�t
|d�t
|��|�t|dj���dg�|�|djd|k�q(WdS)Nrr)
r2rErWr&r'rhr3r�r_r4rFr��
assertTrue)rr5r9rGr(r)rArrr�test_recursive_multi�s


z(AbstractPickleTests.test_recursive_multicCs�t�}||g�}||_xltD]d}|�||�}|�|�}|�|t|��|�t|�d�|�t	|�dt�|�
t	|�dj|�qWdS)Nrr)r:rEr&r'rhr3rHr_r4r�r`)r�factory�hrYr(r)rArrr�#check_recursive_collection_and_inst�s


z7AbstractPickleTests.check_recursive_collection_and_instcCs|�t�dS)N)rMr�)rrrr�test_recursive_list_and_inst�sz0AbstractPickleTests.test_recursive_list_and_instcCs|�t�dS)N)rMr7)rrrr�test_recursive_tuple_and_inst�sz1AbstractPickleTests.test_recursive_tuple_and_instcCs|�tj�dS)N)rMrK�fromkeys)rrrr�test_recursive_dict_and_inst�sz0AbstractPickleTests.test_recursive_dict_and_instcCs|�t�dS)N)rMr�)rrrr�test_recursive_set_and_inst�sz/AbstractPickleTests.test_recursive_set_and_instcCs|�t�dS)N)rM�	frozenset)rrrr�!test_recursive_frozenset_and_inst�sz5AbstractPickleTests.test_recursive_frozenset_and_instcCs|�t�dS)N)rMr@)rrrr�%test_recursive_list_subclass_and_inst�sz9AbstractPickleTests.test_recursive_list_subclass_and_instcCs|�t�dS)N)rM�MyTuple)rrrr�&test_recursive_tuple_subclass_and_inst�sz:AbstractPickleTests.test_recursive_tuple_subclass_and_instcCs|�tj�dS)N)rMrBrP)rrrr�%test_recursive_dict_subclass_and_inst�sz9AbstractPickleTests.test_recursive_dict_subclass_and_instcCs|�t�dS)N)rM�MySet)rrrr�$test_recursive_set_subclass_and_inst�sz8AbstractPickleTests.test_recursive_set_subclass_and_instcCs|�t�dS)N)rM�MyFrozenSet)rrrr�*test_recursive_frozenset_subclass_and_inst�sz>AbstractPickleTests.test_recursive_frozenset_subclass_and_instcCsTdddddddg}x<tD]4}x.|D]&}|�||�}|�|�}|�||�q"WqWdS)Nr�z<\u>u<\ሴ>z<
>z<\>u<\𒍅>u<�>)r&r'rhrd)rZendcasesr(�ur�Zu2rrr�test_unicode�s


z AbstractPickleTests.test_unicodecCs8d}x.tD]&}|�||�}|�|�}|�||�q
WdS)Nu𒍅)r&r'rhrd)rrr(r�r!rrr�test_unicode_high_plane�s


z+AbstractPickleTests.test_unicode_high_planecCs�x�tD]�}x*dD]"}|�||�}|�||�|��qWx8dd�td�D�D]"}|�||�}|�||�|��qJWx8dd�td�D�D]"}|�||�}|�||�|��q�WqWdS)N)r�sxyzs,xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzcSsg|]}t|g��qSr)r�)rrGrrrr�sz2AbstractPickleTests.test_bytes.<locals>.<listcomp>�cSsg|]}t||g��qSr)r�)rrGrrrr�s)r&r'rdrhr�)rr(r)r�rrr�
test_bytes�s

zAbstractPickleTests.test_bytescCs`xZtD]R}tj}xF|rVx4||fD]&}|�||�}|�|�}|�||�q"W|d?}qWqWdS)Nr)r&r�maxsizer'rhrd)rr(rr�r)Zn2rrr�	test_ints�s

zAbstractPickleTests.test_intsc	Cs�xttD]l}xfdD]^}d|>}xP|d||dfD]:}x4||fD]&}|�||�}|�|�}|�||�q@Wq0WqWqWtdd�}||d>7}xD||fD]6}|�|d�}|�|�}|�t|�t�|�||�q�WdS)N)r�i�i�iirZdeadbeeffeedface�i@BrO)r&r'rhrd�intr`rHr_)	rr(ZnbitsZnbaseZnposrrr�r�rrr�	test_long�s




zAbstractPickleTests.test_longcCsnddddddddd	d
dg}|dd
�|D�}x<tD]4}x.|D]&}|�||�}|�|�}|�||�q<Wq2WdS)Nggg+�p�hg�Z��*)g_D��9g�������?g�?g��Q�	@g�m�"wp@g�W�T��Dgꌠ9Y>)FcSsg|]
}|�qSrr)rrArrrrsz2AbstractPickleTests.test_float.<locals>.<listcomp>)r&r'rhrd)rZtest_valuesr(r<rr�rrr�
test_float�s


zAbstractPickleTests.test_float�LC_ALL�de_DE�fr_FRcCs |�|�dd�dd�d�dS)Ng333333�?rr�sF1.)r_r')rrrr�test_float_format	sz%AbstractPickleTests.test_float_formatcCs:x4tD],}t�}|�||�}|�|�}|�|t�qWdS)N)r&�AAAr'rhr_�REDUCE_A)rr(�instr�r�rrr�test_reduces


zAbstractPickleTests.test_reducecCs>x8tD]0}tdd�}|�||�}|�|�}|�||�qWdS)NrrO)r&rBr'rhrd)rr(ror�r�rrr�test_getinitargss



z$AbstractPickleTests.test_getinitargscCs>t�}x2tD]*}|�||�}|�|�}|�|j|j�qWdS)N)rFr&r'rhr_rl)rrCr(r)rDrrr�test_metaclasss


z"AbstractPickleTests.test_metaclasscCsbtdtf�}t�ttj�xBtD]:}|�||�}|�|�}|�	||�|�
t|�t|��q WdS)NZmy_dynamic_class)rJr�r*rrGr=r&r'rhr_r`rH)rrCr(r)rDrrr�test_dynamic_class#s

z&AbstractPickleTests.test_dynamic_classcCs�ddl}ddl}|��}x�tD]�}|�||�}|�|�}|�||�t|d�r||�|j	�}|�||�}|�|�}|�||�t|d�r|�
|j	�}|�||�}|�|�}|�||�qWdS)Nr�stat�statvfs)�timerZ	localtimer&r'rhrdrart�curdirru)rrvrrr(r)r]rrr�test_structseq,s"





z"AbstractPickleTests.test_structseqcCs4x.tD]&}|�d|�}|�|�}|�d|�qWdS)N.)r&r'rhr`)rr(r)r]rrr�
test_ellipsis@s

z!AbstractPickleTests.test_ellipsiscCs4x.tD]&}|�t|�}|�|�}|�t|�qWdS)N)r&r'�NotImplementedrhr`)rr(r)r]rrr�test_notimplementedFs

z'AbstractPickleTests.test_notimplementedcCsTddtg}xD|D]<}x6tD].}|�t|�|�}|�|�}|�t|�|�qWqWdS)N.)rzr&r'rHrhr`)rZ
singletonsZ	singletonr(r)r]rrr�test_singleton_typesLs



z(AbstractPickleTests.test_singleton_typesc
Cs�xVtD]N}|�d|�}|dkr@tjt|g�}|�|�|��q|�ttj|�d�qWtdd}tj	tj
}tjt|g�|}y|�|�Wn2tk
r�}z|�
dt|��Wdd}~XYnX|�d�dS)NrOrrQrzunsupported pickle protocolz0expected bad protocol number to raise ValueError)r&r'r�PROTOr�rI�
startswithr_r�NONEr�rhr��assertInr@Zfail)rr(r�Zproto_headerZoobZ
build_noneZ	badpickle�errrrr�
test_protoWs
"zAbstractPickleTests.test_protocCsPd}xFtD]>}|�||�}|�|�}|�||�|�ttj|�|dk�q
WdS)Nl�UJ^w,3�|	rO)r&r'rhrdr_rrZLONG1)rrAr(r)rYrrr�
test_long1js

zAbstractPickleTests.test_long1cCsTdd>}xFtD]>}|�||�}|�|�}|�||�|�ttj|�|dk�qWdS)Nl�UJ^w,3�|	irO)r&r'rhrdr_rrZLONG4)rrAr(r)rYrrr�
test_long4rs

zAbstractPickleTests.test_long4cCs�tjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjd�}d}d}d}d}d}xltD]d}x^|||||fD]L}|�||�}	|�|	�}
|�	||
�|t
|d�t|�f}|�t
||	��q�WqpWdS)N))rr)rr)rrO)rr�)rr�)rr)rr)rrO)rr�)rr�)rOr)rOr)rOrO)rOr�)rOr�)r�r)r�r)r�rO)r�r�)r�r�r)r)rrO)rrOr�)rrOr�r�r�)rZTUPLEZEMPTY_TUPLEZTUPLE1ZTUPLE2ZTUPLE3r&r'rhrd�minr4rIr)r�expected_opcoderCrDrXr9�er(rAr)rYr�rrr�test_short_tupleszs@


z%AbstractPickleTests.test_short_tuplesc
Cs�tjtjtjtjtjtjtjtjtjtjtjtjd�}xjtD]b}x\dD]T}|�||�}|�|�}|�||k||||f�|t	|d�|f}|�t
||��qFWq<WdS)N))rN)rN)rON)r�N)rT)rT)rOT)r�T)rF)rF)rOF)r�F)NFTr�)rrZINTZNEWTRUEZNEWFALSEr&r'rhrIr�r)rr�r(rAr)rYr�rrr�test_singletons�s&



z#AbstractPickleTests.test_singletonscCsNtdddg�}d|_d|_x.tD]&}|�||�}|�|�}|�||�q WdS)NrrOr�r��hello)rVrTrUr&r'rhrd)rrAr(r)rYrrr�test_newobj_tuple�s

z%AbstractPickleTests.test_newobj_tuplecCsNtdddg�}d|_d|_x.tD]&}|�||�}|�|�}|�||�q WdS)NrrOr�r�r�)r@rTrUr&r'rhrd)rrAr(r)rYrrr�test_newobj_list�s

z$AbstractPickleTests.test_newobj_listc	Cs�x�tD]�}x�tD]x}|j}||j�}d|_|�||�}|�|�}|||||t|�f}|�||�|�	||�||�|�|�	|j
|j
|�qWqWdS)Nr�)r&�	myclasses�__base__�samplerTr'rhrHrdr_r3)rr(r2�BrAr)rY�detailrrr�test_newobj_generic�s



z'AbstractPickleTests.test_newobj_genericc	Cs�tdd�}xttfD]}|�|�qWx�tD]�}x�|D]�}|j}||j�}d|_t�	|�}|�
||�}|�|�}	|�t
|	�t
|��|||||	t
|	�f}
|�||�||	�|
�|�|j|	j|
�q8Wq.WdS)Nr�)r��MyIntrVrr&r�r�rT�weakref�proxyr'rhr_rHr3)r�classesrXr(r2r�rAr�r)rYr�rrr�test_newobj_proxies�s




z'AbstractPickleTests.test_newobj_proxiescCsDt}t�t�}|�|d�}zda|�ttjf|j|�Wd|aXdS)Nr�r�)�SimpleNewObj�__new__r'rgr�rr�rh)rZsave�orDrrr�test_newobj_not_class�s
z)AbstractPickleTests.test_newobj_not_classcCs�t|�}z�t�td|�tdddg�}d|_d|_|�|d�}|�t�	d�|�|�d|�|�
t||��|�|�}|�
||�|�|d�}|�t�	d�|�|�d|�|�t||�d	t|��|�|�}|�
||�Wd|��XdS)
Nr@rrOr�r�r�zutf-8sMyListT)r)r*r0r&r@rTrUr'r�r}�assertFalserrhrdZassertNotInr_�reprr1)rZextcode�opcoder�rA�s1rY�s2rrr�produce_global_ext�s&

z&AbstractPickleTests.produce_global_extcCs |�dtj�|�dtj�dS)NrrP)r�rZEXT1)rrrr�test_global_ext1sz$AbstractPickleTests.test_global_ext1cCs.|�dtj�|�dtj�|�dtj�dS)Nr`i��iͫ)r�rZEXT2)rrrr�test_global_ext2sz$AbstractPickleTests.test_global_ext2cCs.|�dtj�|�dtj�|�dtj�dS)Nii���i�ͫ)r�rZEXT4)rrrr�test_global_ext4!sz$AbstractPickleTests.test_global_ext4cCs�d}tt|��}xJtD]B}|�||�}|�|�}|�||�ttj|�}|�	||dk�qWd}tt|��}x^tD]V}|�||�}|�|�}|�||�ttj|�}|dkr�|�	|d�qr|�
|dk�qrWdS)N�
ri�	rO)r�r�r&r'rhrdrr�APPENDSr_rI)rrrAr(r)rYZnum_appendsrrr�test_list_chunking&s$



z&AbstractPickleTests.test_list_chunkingcCs�d}t�t|��}xVtD]N}|�||�}|�|t�|�|�}|�||�t	t
j|�}|�||dk�qWd}t�t|��}x^tD]V}|�||�}|�|�}|�||�t	t
j|�}|dkr�|�|d�q�|�
|dk�q�WdS)Nr�ri�	rO)rKrPr�r&r'r3rrhrdrr�SETITEMSr_rI)rrrAr(r)rYZnum_setitemsrrr�test_dict_chunking<s&



z&AbstractPickleTests.test_dict_chunkingcCs�d}tt|��}x\tD]T}|�||�}|�|�}|�||�ttj|�}|dkr^|�	|d�q|�	|d�qWd}tt|��}x\tD]T}|�||�}|�|�}|�||�ttj|�}|dkr�|�	|d�q�|�
|d�q�WdS)Nr�r�rri�	rO)r�r�r&r'rhrdrrZADDITEMSr_�assertGreaterEqual)rrrAr(r)rYZnum_additemsrrr�test_set_chunkingSs(



z%AbstractPickleTests.test_set_chunkingc
Cs�t�td�}d|_x�tD]�}|j|d��t|�||�}|dkrL|�d|�n|�d|�|�tt	j
|�d|k�|�tt	j|��|�
|�}|�||�WdQRXqWdS)Ni�i�)r(rs
I64206sM�rO)r�r�rRr&rfr'r�r_rr�NEWOBJr��	NEWOBJ_EXrhrd)rrAr(r)rYrrr�test_simple_newobjls


z&AbstractPickleTests.test_simple_newobjc
Cs�t�td�}d|_x�tD]�}|j|d���|�||�}|dkrL|�d|�n8|dkrb|�d|�n"|dkrx|�d	|�n|�d
|�|�tt	j
|�d|k�|�tt	j|��|�
|�}|�||�WdQRXqWdS)Ni�i�)r(rs
I64206rOsM�r�s	XFACEs�FACE)�
ComplexNewObjr�rRr&rfr'r�r_rrr�r�r�rhrd)rrAr(r)rYrrr�test_complex_newobj|s"


z'AbstractPickleTests.test_complex_newobjc
Cs�t�td�}d|_x�tD]�}|j|d���|�||�}|dkrL|�d|�n8|dkrb|�d|�n"|dkrx|�d	|�n|�d
|�|�tt	j
|��|�tt	j|�d|k�|�
|�}|�||�WdQRXqWdS)Ni�i�)r(rs
I64206rOsM�r�s	XFACEs�FACE)�ComplexNewObjExr�rRr&rfr'r�r�rrr�r_r�rhrd)rrAr(r)rYrrr�test_complex_newobj_ex�s"


z*AbstractPickleTests.test_complex_newobj_excCs@tdddg�}d|_d|_|�|d�}|�|�}|�||�dS)NrrOr�r�r�)�SlotListrTrUr'rhrd)rrAr)rYrrr�test_newobj_list_slots�s
z*AbstractPickleTests.test_newobj_list_slotscCsXxRtD]J}t�}|�|jd�|�||�}|�|jd�|�|�}|�|jd�qWdS)Nrr)r&�REX_oner_�_reduce_calledr'rh)rr(rAr)rYrrr�'test_reduce_overrides_default_reduce_ex�s

z;AbstractPickleTests.test_reduce_overrides_default_reduce_excCsXxRtD]J}t�}|�|jd�|�||�}|�|j|�|�|�}|�|jd�qWdS)N)r&�REX_twor_�_protor'rh)rr(rAr)rYrrr�test_reduce_ex_called�s

z)AbstractPickleTests.test_reduce_ex_calledcCsXxRtD]J}t�}|�|jd�|�||�}|�|j|�|�|�}|�|jd�qWdS)N)r&�	REX_threer_r�r'rh)rr(rAr)rYrrr�test_reduce_ex_overrides_reduce�s

z3AbstractPickleTests.test_reduce_ex_overrides_reducecCsXxRtD]J}t�}|�|jd�|�||�}|�|j|�|�|�}|�|j|�qWdS)N)r&�REX_fourr_r�r'rh)rr(rAr)rYrrr�test_reduce_ex_calls_base�s

z-AbstractPickleTests.test_reduce_ex_calls_basecCsXxRtD]J}t�}|�|jd�|�||�}|�|jd�|�|�}|�|jd�qWdS)Nrr)r&�REX_fiver_r�r'rh)rr(rAr)rYrrr�test_reduce_calls_base�s

z*AbstractPickleTests.test_reduce_calls_basecCs*t�}xtD]}|�t|j||�qWdS)N)�
BadGetattrr&rg�RuntimeErrorr')rrAr(rrr�test_bad_getattr�s
z$AbstractPickleTests.test_bad_getattrc	Cs�Gdd�dt�}Gdd�dt�}x`tD]X}y|�|�|�Wntjk
rRYnXy|�|�|�Wq&tjk
r|Yq&Xq&WdS)Nc@seZdZdd�ZdS)z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.CcSstddgdfS)Nr)r�)rrrrr=�szBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N)r&r'r(r=rrrrr2�sr2c@seZdZdd�ZdS)z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.DcSstdddgfS)Nr)rK)rrrrr=�szBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__N)r&r'r(r=rrrrr6�sr6)r�r&r'r�
PicklingError)rr2r6r(rrr�test_reduce_bad_iterator�s
z,AbstractPickleTests.test_reduce_bad_iteratorc
Cs�dd�td�D�}tdd�|D��}t|�t|�t|�g}xFtD]>}|j|d��(|�||�}|�|�}|�||�WdQRXq@WdS)Ncss|]}dt|�VqdS)ZaaaN)r@)rrGrrr�	<genexpr>�sz>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>r�css|]}|dddgfVqdS)r�rSr�Nr)rr;rrrr��s)r()r�rKr&rfr'rhrd)rr�Z
large_dictrcr(r�r�rrr�test_many_puts_and_gets�s

z+AbstractPickleTests.test_many_puts_and_getsc	CsrxltD]d}t�}d|_d|_|�||�}|�|�}t|j�}t|j�}x"t||�D]\}}|�	||�qRWqWdS)Nr�r�)
r&r2rTrUr'rh�sortedr3�zipr`)	rr(rAr)rYZx_keysZy_keysZx_keyZy_keyrrr�test_attribute_name_internings



z1AbstractPickleTests.test_attribute_name_interningcCs>|�td�d�}|�|t�|�tdg�d�}|�|t�dS)NrSrOr�)r'r�r_r�r��	DATA_SET2)rr�rrr�test_pickle_to_2xsz%AbstractPickleTests.test_pickle_to_2xcCsXxRtD]J}dtddtf}|�||�}|�|�}|�t|�t|��|�||�qWdS)Nrsxyix)r&r�r4r'rhr_)rr(rer�r�rrr�test_large_pickless

z&AbstractPickleTests.test_large_picklesc
s�x�tD]z��j�d��d��fdd�td�D�}ttt|��}��t|�|��dkrvx|D]}��t	t
j|��q\WWdQRXqWdS)N)r(csg|]}��d|���qS)rO)r')rr)r(rrrr*szDAbstractPickleTests.test_int_pickling_efficiency.<locals>.<listcomp>�FrO)r&rfr�r��mapr4r_r�r�rrZLONG)rZpicklesZsizesr�r)r(rr�test_int_pickling_efficiency&s

z0AbstractPickleTests.test_int_pickling_efficiencycCs6|�||�}|�t||��|�|�}|�||�dS)N)r'rIrrhr_)rrcr�r(r�r�rrr�_check_pickling_with_opcode2s
z/AbstractPickleTests._check_pickling_with_opcodecCsJtdddg�}x6tD].}|dkr2|�|tj|�q|�|tj|�qWdS)NrrOr�r)�REX_sixr&r�rZAPPENDr�)rrcr(rrr�test_appends_on_non_lists8s

z-AbstractPickleTests.test_appends_on_non_listscCsLtdddd��}x6tD].}|dkr4|�|tj|�q|�|tj|�qWdS)NrQ������)rrOr�r)�	REX_sevenr&r�rZSETITEMr�)rrcr(rrr�test_setitems_on_non_dictsAs

z.AbstractPickleTests.test_setitems_on_non_dictsr�icCs>d}}ddddh}x�t�|�D]�\}}}|dk	rJ|�||�||krJd}|dk	r~|�|jd�|j|kr�|�t|�|j�nX|jdks�|j|kr�t|�|jkr�|dk	r�|�|||j�d}n|dkr�|jdkr�|}|jdkr |�	||j�|d|}q Wt|�}|dk	�r|�
||�n|dk	�r:|�|||j�dS)	a
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.

        Note that binary objects that are larger than FRAME_SIZE_TARGET are not
        framed by default and are therefore considered a frame by themselves in
        the following consistency check.
        N�BINBYTES�
BINUNICODE�	BINBYTES8�BINUNICODE8�FRAMEr}�	)rr�assertLessEqual�assertNotEqualrLr4�FRAME_SIZE_TARGET�
assertLess�FRAME_SIZE_MINr�r_)rr�Z	frame_endZframeless_startZframeless_opcodesrr7�posrrr�check_frame_opcodesNs8






z'AbstractPickleTests.check_frame_opcodesc
Cs�ttd��}x�tdtjd�D]�}|j|d��j|�||�}|�|�}|�||�t|�t	tj
|�}|�||jd�|�
||jd�|�|�WdQRXqWdS)Ni��r�r)r(rO)r�r�rr>rfr'rhr_r4rr��
assertGreaterr�r�r�)rrcr(r�r�Zbytes_per_framerrr�test_framing_many_objects|s
z-AbstractPickleTests.test_framing_many_objectscCsd}dd�td�D�}d|f|d|d|f�}x�tdtjd	�D]�}x�d
D]�}|j||d���|st|�||�}n:t|d�s�wNt��}|j||d
�}||_	|�
|�|��}|�|�}	|�
dd�|D�dd�|	D��|�
||	�ttj|�}
|�
|
d	�|�|�WdQRXqNWqDWdS)NicSsg|]
}|g�qSrr)rrGrrrr�szBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>r��x�y�zr�r)FT)r(�fast�pickler)�protocolcSsg|]}t|��qSr)r4)rrArrrr�scSsg|]}t|��qSr)r4)rrArrrr�s)r�rr>rfr'rar"�BytesIOr�r��dumpr1rhr_rr�r�)r�NZsmall_itemsrcr(r�r��bufr�r��n_framesrrr�test_framing_large_objects�s,



z.AbstractPickleTests.test_framing_large_objectscs�tjdkrdSddd�}|j�d}�fdd�t|�D�}x�tdtjd�D]z}|�||�}||�}|�ttj|�d�|�||�|��||d	d
��}|�	ttj|�ttj|��|�||�|��qJWdS)Nr�c
Ss�g}d}x,t�|�D]\}}}|jdkr|�|�qWt�}d}x:t|�D].\}	}|r`||	�r`qJ||||�7}||}qJW|||d�7}|S)z+Remove frame opcodes from the given pickle.r�r�rN)rrrLrW�	bytearray�	enumerate)
r�Z
keep_frameZframe_startsZframe_opcode_sizer��_r�Z	newpickleZlast_frame_endrGrrr�
remove_frames�s
z?AbstractPickleTests.test_optional_frames.<locals>.remove_frames�csi|]}t|g��|�qSr)r�)rrG)�
frame_sizerr�
<dictcomp>�sz<AbstractPickleTests.test_optional_frames.<locals>.<dictcomp>rrcSs|dS)NrOr)rGrrr�<lambda>�r�z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>)N)
rr>r�r�r'r_rr�rhr�)rr�Z
num_framesrcr(r�Zframeless_pickleZsome_frames_pickler)r�r�test_optional_frames�s

z(AbstractPickleTests.test_optional_framesc
s�Gdd�d�}�xttdtjd�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�}x"|	D]}��|d
�j|��qBW��t|�t|	�t|
�d|�q"WdS)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|_dS)N)�chunks)rrrrr.�szbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__cSs|j�|�dS)N)r�rW)r�chunkrrrr�sz_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writecSsd�|j�S)Nr�)rr�)rrrr�concatenate_chunks�szlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunksN)r&r'r(�__doc__r.rr�rrrr�ChunkAccumulator�srr�rcSs,g|]$}t|��d�|ddt|�if�qS)r{r�rG)r@r})rrGrrrr�szSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>g��@Z0123456789abcdefrerOr�cSsg|]}t|��qSr)r4)rrXrrrr	scsg|]}|�jkr|�qSr)r�)rr))rrrr	scs*g|]"}d|kr�jkrnq|�qS)r�)r�)rr))rrrr	scSsg|]}|dkr|�qS)r�r)rr)rrrr	s)r�rr>rfrWr�r�r�r�rhr_r�r4r�rZ
gc_collectr�r�r�)
rrr(Zobjects�writerr�Z
reconstructedr�Zchunk_sizesZlarge_sizesZmedium_sizesZsmall_sizesZ
chunk_sizer)rr�+test_framed_write_sizes_with_delayed_writer�s8	


z?AbstractPickleTests.test_framed_write_sizes_with_delayed_writercCs�Gdd�d�axnttjd�D]\}xVtjtjjtjjjgD]<}|j||d��$|�|�	||��}|�
||�WdQRXq:WqWdS)Nc@seZdZGdd�d�ZdS)�Nestedc@seZdZGdd�d�ZdS)zNested.Ac@seZdZGdd�d�ZdS)z
Nested.A.Bc@seZdZdS)zNested.A.B.CN)r&r'r(rrrrr2	sr2N)r&r'r(r2rrrrr�	sr�N)r&r'r(r�rrrr�A	srN)r&r'r(rrrrrr	srr)r(rc)rr�rr>rr�r2rfrhr'r`)rr(rcr�rrr�test_nested_names	sz%AbstractPickleTests.test_nested_namesc
CsxGdd�d�atjtjt_dt_xLttjd�D]:}|j	|d��$|�
|�t|��}|�|t�WdQRXq2Wt`dS)Nc@seZdZdS)�	RecursiveN)r&r'r(rrrrr$	srzRecursive.mod.Recursiver)r()
rr�modulesr'�modr(r�rr>rfrhr'r`)rr(r�rrr�test_recursive_nested_names"	sz/AbstractPickleTests.test_recursive_nested_namescCs
Gdd�d�atjtjt�jtjjtjjt��jf}tjtftjjtjff}x�tt	j
d�D]�}xH|D]@}|j||d��(|�|�
||��}|�|�|��WdQRXqfWxV|D]N\}}|�}|j||d��,|�|�
||��}|�||�||��WdQRXq�Wq\WdS)Nc@s:eZdZedd��Zedd��Zdd�ZGdd�d�Zd	S)
�
PyMethodsTestcSsdS)N�cheeserrrrrr1	szPyMethodsTest.cheesecSs|tkst�dS)N�wine)r
�AssertionError)�clsrrrr4	szPyMethodsTest.winecSst|t�st�dS)N�biscuits)�
isinstancer
r
)rrrrr8	szPyMethodsTest.biscuitsc@s0eZdZdZedd��Zedd��Zdd�ZdS)	zPyMethodsTest.NestedzNested classcSsdS)N�ketchuprrrrrr=	szPyMethodsTest.Nested.ketchupcSs|tjkst�dS)N�maple)r
rr
)rrrrr@	szPyMethodsTest.Nested.maplecSst|tj�st�dS)N�pie)rr
rr
)rrrrrD	szPyMethodsTest.Nested.pieN)	r&r'r(r��staticmethodr�classmethodrrrrrrr;	srN)	r&r'r(rrrrrrrrrrr
0	sr
r)r(�method)r
rrrrrrrr�rr>rfrhr'r_)rZ
py_methodsZpy_unbound_methodsr(rr�rrcrrr�test_py_methods.	s&
z#AbstractPickleTests.test_py_methodscCs&Gdd�dt�adjdftjdfdddgjd	ftjdddgffddhjd
ftjddhdfftj	dft
jdftdddg�jd
ftjtdddg�dfft�
d
�jdftj
jt�
d
�dfff}xhttjd�D]V}xP|D]H\}}|j||d��,|�|�||��}|�||�||��WdQRXq�Wq�WdS)Nc@seZdZGdd�de�ZdS)�Subclassc@seZdZdS)zSubclass.NestedN)r&r'r(rrrrrb	srN)r&r'r(r@rrrrrra	sr�abcd)rX)rrXrrOr�r)rO))rCr)rDrO)sabcsxyzZsweet)r�r�)r(r)r7r�indexr@�__len__r��__contains__r�rKrPr��	maketrans�countrr�rr>rfrhr'r_)rZ	c_methodsr(rrr�rrr�test_c_methods_	s$z"AbstractPickleTests.test_c_methodscCs�tdd�ddfttd�ddftjddftjd	d	ft�d
dft�	�dd
ft�
�ddft��ddfg}x�|D]x\}}}xltd�D]`}|jt
|�|d��D|�||�}|�d||f��|�|�t
|�|��t
|��WdQRXq|WqhWdS)Nrr�Z__builtin__ZxrangeZ123�	itertoolsZimapr�r��
exceptionsr�r�ZIterableUserDict�UserListr��defaultdictr�)rHr(zc%s
%s)r�r�rfr�r�r�r�r�r�r�r"r#rfrHr'r�r}r`rh)rZtests�valrrLr(r�rrr�test_compat_pickle�	s


z&AbstractPickleTests.test_compat_picklec
Cs�dd�}xFtdtjd�D]2}|�ttjf��t�|�||��WdQRXqW|`	xFtdtjd�D]2}|�ttjf��t�|�||��WdQRXqfW|j
|_xFtdtjd�D]2}|�ttjf��t�|�||��WdQRXq�WdS)NcSsdS)Nrrrrrr �	sz6AbstractPickleTests.test_local_lookup_error.<locals>.frr)r�rr>rg�AttributeErrorr�rr-r'r'r(r&)rr r(rrr�test_local_lookup_error�	s  z+AbstractPickleTests.test_local_lookup_errorN)br&r'r(Z	optimizedr[rpr%rdr*r+r2r6r8r:r<r?rArCrDrHrJrMrNrOrQrRrTrUrWrXrZr\r^r_rarcrgrhrrlrprqrrrsrxryr{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�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	rrr%r'rrrrr$�s�







	'		
					


	
. )A
1#r$c@szeZdZeeddd�dd��Zeeddd�dd��Zeeddd�d	d
��Zeeddd�dd
��Z	eeddd�dd��Z
dS)�BigmemPickleTestsg������@F)�sizeZmemuseZdry_runcCstdd|>}z\xVtD]N}|dkr"q|j|d��.|�ttf��|j||d�WdQRXWdQRXqWWdd}XdS)NrrdrO)r()r�)r&rfrgr�r�r')rr)rer(rrr�test_huge_long_32b�	s
*z$BigmemPickleTests.test_huge_long_32bg@c
Cs�d|d}z�x�tD]|}|dkr"q|j|d��\zN|j||d�}tjt�dt|��}|�|�}|�	|||t|�|��Wdd}XWdQRXqWWdd}XdS)Nsabcdr�r�)r()r�z<I)
r&rfr'rr�r�r�r4rr_)rr)rer(r��header�
data_startrrr�test_huge_bytes_32b�	s 

z%BigmemPickleTests.test_huge_bytes_32bcCs�d|d}z�x�tD]�}|dkr"q|j|d���|dkrb|�ttf��|j||d�WdQRXwzN|j||d�}tjt�	dt
|��}|�|�}|�|||t
|�|��Wdd}XWdQRXqWWdd}XdS)Nsacbdr�r�)r()r�z<Q)
r&rfrgr�r�r'rr�r�r�r4rr_)rr)rer(r�r+r,rrr�test_huge_bytes_64b�	s(

z%BigmemPickleTests.test_huge_bytes_64brdc
Cs�d|d}z�x�tD]�}|dkr"q|j|d���zv|j||d�}tjt�dt|��}|�d�}|�	|||t|�|��|�	|�
d�td�|�d�t|��Wdd}XWdQRXqWWdd}XdS)Nrr�r)r()r�z<Isabcd)r&rfr'rr�r�r�r4rr_�rindex)rr)rer(r�r+r,rrr�test_huge_str_32b�	s$

z#BigmemPickleTests.test_huge_str_32bcCs�d|d}z�x�tD]�}|dkr"q|j|d���|dkrb|�ttf��|j||d�WdQRXwzv|j||d�}tjt�	dt
|��}|�d�}|�|||t
|�|��|�|�
d�t
d�|�d�t
|��Wdd}XWdQRXqWWdd}XdS)Nrr�r)r()r�z<Qsabcd)r&rfrgr�r�r'rr�r�r�r4rr_r/)rr)rer(r�r+r,rrr�test_huge_str_64b
s,

z#BigmemPickleTests.test_huge_str_64bN)r&r'r(rr	r*r-r
r.r0r1rrrrr(�	s
r(c@seZdZdZdZdd�ZdS)r�z4No __reduce_ex__ here, but inheriting it from objectrcCsd|_tdfS)Nrr)r�r�)rrrrr=.
szREX_one.__reduce__N)r&r'r(r�r�r=rrrrr�+
sr�c@seZdZdZdZdd�ZdS)r�z1No __reduce__ here, but inheriting it from objectNcCs||_tdfS)Nr)r�r�)rr(rrr�
__reduce_ex__5
szREX_two.__reduce_ex__)r&r'r(r�r�r2rrrrr�2
sr�c@s eZdZdZdd�Zdd�ZdS)r�NcCs||_tdfS)Nr)r�r�)rr(rrrr2;
szREX_three.__reduce_ex__cCstd��dS)Nz#This __reduce__ shouldn't be called)r)rrrrr=>
szREX_three.__reduce__)r&r'r(r�r2r=rrrrr�9
sr�c@seZdZdZdZdd�ZdS)r�z(Calling base class method should succeedNcCs||_t�||�S)N)r�r�r2)rr(rrrr2D
szREX_four.__reduce_ex__)r&r'r(r�r�r2rrrrr�A
sr�c@seZdZdZdZdd�ZdS)r�z-This one used to fail with infinite recursionrcCsd|_t�|�S)Nr)r�r�r=)rrrrr=K
szREX_five.__reduce__N)r&r'r(r�r�r=rrrrr�H
sr�c@s2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)r�z]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    NcCs|dk	r|ng|_dS)N)�items)rr3rrrr.S
szREX_six.__init__cCst|�t|�ko|j|jkS)N)rHr3)rr4rrrr5U
szREX_six.__eq__cCs|j�|�dS)N)r3rW)r�itemrrrrWW
szREX_six.appendcCst|�ddt|j�dfS)Nr)rH�iterr3)rrrrr=Y
szREX_six.__reduce__)N)r&r'r(r�r.r5rWr=rrrrr�O
s

r�c@s2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)r�z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    NcCs|dk	r|ni|_dS)N)�table)rr6rrrr.`
szREX_seven.__init__cCst|�t|�ko|j|jkS)N)rHr6)rr4rrrr5b
szREX_seven.__eq__cCs||j|<dS)N)r6)rr�r<rrr�__setitem__d
szREX_seven.__setitem__cCst|�dddt|j���fS)Nr)rHr5r6r3)rrrrr=f
szREX_seven.__reduce__)N)r&r'r(r�r.r5r7r=rrrrr�\
s

r�c@seZdZdZdS)r�rN)r&r'r(r�rrrrr�l
sr�c@seZdZdZdS)�MyFloatg�?N)r&r'r(r�rrrrr8o
sr8c@seZdZdZdS)�	MyComplexy�?N)r&r'r(r�rrrrr9r
sr9c@seZdZdZdS)�MyStrr�N)r&r'r(r�rrrrr:u
sr:c@seZdZdZdS)�	MyUnicodeu	hello ሴN)r&r'r(r�rrrrr;x
sr;c@seZdZdZdS)rV)rrOr�N)r&r'r(r�rrrrrV{
srVc@seZdZdddgZdS)r@rrOr�N)r&r'r(r�rrrrr@~
sr@c@seZdZddd�ZdS)rBrrO)rCrDN)r&r'r(r�rrrrrB�
srBc@seZdZddhZdS)rYrCrDN)r&r'r(r�rrrrrY�
srYc@seZdZeddh�ZdS)r[rCrDN)r&r'r(rSr�rrrrr[�
sr[c@seZdZdgZdS)r�rTN)r&r'r(r]rrrrr��
sr�c@seZdZdd�Zdd�ZdS)r�cOstd��dS)Nz3SimpleNewObj.__init__() didn't expect to get called)r�)rr�kwargsrrrr.�
szSimpleNewObj.__init__cCst|�t|�ko|j|jkS)N)rfr3)rr4rrrr5�
szSimpleNewObj.__eq__N)r&r'r(r.r5rrrrr��
sr�c@seZdZdd�ZdS)r�cCsd|dfS)Nz%Xrer)rrrr�__getnewargs__�
szComplexNewObj.__getnewargs__N)r&r'r(r=rrrrr��
sr�c@seZdZdd�ZdS)r�cCsd|fddifS)Nz%X�baserer)rrrr�__getnewargs_ex__�
sz!ComplexNewObjEx.__getnewargs_ex__N)r&r'r(r?rrrrr��
sr�c@seZdZdd�ZdS)r�cCs
|jdS)N)rT)rr�rrr�__getattr__�
szBadGetattr.__getattr__N)r&r'r(r@rrrrr��
sr�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�AbstractPickleModuleTestsc	Cs:ttd�}z|��|�t|jd|�Wdt�t�XdS)Nr	�{)rr�closergr�r�r�unlink)rr rrr�test_dump_closed_file�
s

z/AbstractPickleModuleTests.test_dump_closed_filec	Cs:ttd�}z|��|�t|jd|�Wdt�t�XdS)Nr	rB)rrrCrgr�r�rrD)rr rrr�test_load_closed_file�
s

z/AbstractPickleModuleTests.test_load_closed_filecCsBt��}didg}|�||�|�d�|�|�}|�||�dS)NrB�|r)r"r�r�r$�loadr_)r�streamrer�rrr�test_load_from_and_dump_to_file�
s


z9AbstractPickleModuleTests.test_load_from_and_dump_to_filecCs|�tjd�dS)Nr�)r_rr>)rrrr�test_highest_protocol�
sz/AbstractPickleModuleTests.test_highest_protocolcCs^t��}|�d|d�|jd|dd�|�dd�|jddd�|�|d�|j|dd�dS)NrBrQ)�filer�)r�)r"r�r�r'�Pickler)rr rrr�test_callapi�
sz&AbstractPickleModuleTests.test_callapic	CsJttd�}z&x tD]}|�t|jd||�qWWd|��t�t�XdS)N�wrB)	rrr&rgr�r�rCrrD)rr r(rrr�test_dump_text_file�
s

z-AbstractPickleModuleTests.test_dump_text_filecCs(t�d�}|�ttjtjf|j|�dS)NsX''.)	r"r�rgrr�r�rr�rH)rr)rrr�test_incomplete_input�
s
z/AbstractPickleModuleTests.test_incomplete_inputcCsNGdd�d|j�}Gdd�d|j�}|�tj|�jd�|�tj|�j�dS)Nc@seZdZdd�ZdS)z;AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklercSsdS)Nr)rrrrr.�
r�zDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__N)r&r'r(r.rrrr�
BadPickler�
srRc@seZdZdd�ZdS)z=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklercSsdS)Nr)rrrrr.�
r�zFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__N)r&r'r(r.rrrr�BadUnpickler�
srSr)rMZ	Unpicklerrgrr�r�r�rH)rrRrSrrr�
test_bad_init�
sz'AbstractPickleModuleTests.test_bad_initN)r&r'r(rErFrJrKrNrPrQrTrrrrrA�
s
	rAc@s$eZdZdd�Zdd�Zdd�ZdS)�AbstractPersistentPicklerTestscCsNt|t�r,|ddkr,|jd7_t|�S|dkrF|jd7_dSdSdS)NrOrr�test_false_valuer�)rrf�id_countr@�false_count)rr�rrr�
persistent_id�
sz,AbstractPersistentPicklerTests.persistent_idcCsD|s|jd7_dS|jd7_t|�}|ddks<t�|SdS)NrrVrOr)�load_false_count�
load_countrfr
)rZoidr�rrr�persistent_load�
sz.AbstractPersistentPicklerTests.persistent_loadc	Cs�ttd��dg}xvtD]n}d|_d|_d|_d|_|�|�|�	||��|�|�|jd�|�|jd�|�|jd�|�|jd�qWdS)Nr�rVrrSr)
r�r�r&rWrXrZr[r_rhr')r�Lr(rrr�test_persistences
z/AbstractPersistentPicklerTests.test_persistenceN)r&r'r(rYr\r^rrrrrU�
s

rUc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�&AbstractIdentityPersistentPicklerTestscCs|S)Nr)rrcrrrrYsz4AbstractIdentityPersistentPicklerTests.persistent_idcCs|S)Nr)r�pidrrrr\sz6AbstractIdentityPersistentPicklerTests.persistent_loadcCs2|�|�||��}|�|t|��|�||�dS)N)rhr'r3rHr_)rrcr(r�rrr�_check_return_correct_typeszAAbstractIdentityPersistentPicklerTests._check_return_correct_typecCsLxFtD]>}|dkr |�dd�qx"ddddtgD]}|�||�q0WqWdS)NrrRsabc
zabc
rQg*\��(��)r&rar@)rr(rcrrr�test_return_correct_types

z?AbstractIdentityPersistentPicklerTests.test_return_correct_typecCsBd}|�tj|j|d�tj|�d�d}|�tj|j|�dS)Nu∅rzutf-8s
.)rgrr�r'ZPERSIDr}r�rh)rZ
non_ascii_strr�rrr�test_protocol0_is_ascii_only'szCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_onlyN)r&r'r(rYr\rarbrcrrrrr_s
	r_c@s\eZdZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dS)�#AbstractPicklerUnpicklerObjectTestsNcCs|js
t�|jst�dS)N)�
pickler_classr
�unpickler_class)rrrrr%3s
z)AbstractPicklerUnpicklerObjectTests.setUpcCs�dddg}x�tD]�}t��}|�||�}|�|�|��}|�d�|��|�|�|��}|��|�d�|��|�|�|��}|�	||�|�
||�qWdS)N�abcdefg�,r)r&r"r�rer�r1r$�truncateZ
clear_memor�r_)rrer(r r��
first_pickledZsecond_pickledZ
third_pickledrrr�test_clear_pickler_memo7s"






z;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memocCsjdddg}t��}|�|�}|�|�|��}t��}|�|�}|j|_|�|�|��}|�||�dS)Nrgrh)r"r�rer�r1�memor�)rrer r�rj�primed�primed_pickledrrr�test_priming_pickler_memoWs




z=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memoc
Cs�dddg}t��}|�|�}|�|�|��}t��}|�|�}|j|_|�|�|��}|�t�|��}|��}|�||�|�t�|��}|j|_|��}	|j�	�|�|	|�|�
|	|k�dS)Nrgrh)r"r�rer�r1rlrfrHr_�clearrI)
rrer r�rjrmrn�	unpicklerZunpickled_data1Zunpickled_data2rrr�test_priming_unpickler_memois&





z?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memocCs�dddg}t��}|�|�}|�|�|��}dddg}t��}|�|�}|�|�|��}t��}|�|�|�d�|�|�}|�|�	�|�|�d�|�
�|�|�|�d�|�|�	�|�dS)Nrgrhr)r"r�rer�r1rr$rfr_rHri)r�data1r r�Zpickled1Zdata2Zpickled2rqrrr�test_reusing_unpickler_objects�s(











zBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectsc
Cs�x�tD]�}|j|d���dd�td�D�dtg}|�}|j||d�}|�|�|��}d}|||�}|�|�}xPt|�D]D}	|��r�|�	�}
|�
|��|�|��r||�
|�	�|
t|��q|W|�t
|j�WdQRXqWdS)N)r(cSsg|]}|t|�f�qSr)r@)rrArrrr�szSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings.<locals>.<listcomp>i�sabcde)r�rS)r&rfr�r4rer�r1rfr!r%r_rHrgr)rZioclassr(rsr r�r�r�rqrGr�rrr�_check_multiple_unpicklings�s"


z?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklingscCs|�tj�dS)N)rur"r�)rrrr�"test_multiple_unpicklings_seekable�szFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekablecCs|�t�dS)N)rur)rrrr�$test_multiple_unpicklings_unseekable�szHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekablecCs�ttd��}xntD]f}x`tdd�D]R}tjt��|d�}|j||d�}|�|�|�d�|�	|�}|�
|��|�q"WqWdS)Nr�r�)�buffer_size)r�r)r�r�r&r"�BufferedRandomr�rer�r$rfr_rH)rrer(Zbuf_sizer r�rqrrr�"test_unpickling_buffering_readline�s



zFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline)r&r'r(rerfr%rkrorrrtrurvrwr{rrrrrd.s rdZreduce_Ac@seZdZdd�ZdS)rmcCs
ttffS)N)r@rn)rrrrr=�szAAA.__reduce__N)r&r'r(r=rrrrrm�srmc@seZdZdS)�BBBN)r&r'r(rrrrr|�sr|c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�AbstractDispatchTableTestsc	CsDt��}|�|d�}|�t��|jWdQRX|�t|d��dS)Nr�dispatch_table)r"r�rergr&r~r�ra)rr r�rrr�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)r&r'r(r~r)�dtrr�	MyPickler�sr�cs2t��}�||�}��|j��|�|�|��S)N)r"r�r_r~r�r1)rcr�r r�)r�r�rrrr'�s


zCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumps)N)�get_dispatch_tablere�_test_dispatch_table)rr'r)r�r�rr�test_class_dispatch_table�sz4AbstractDispatchTableTests.test_class_dispatch_tablecs(����d��fdd�	}��|��dS)Ncs:t��}��||�}�|_��|j��|�|�|��S)N)r"r�rer~r_r�r1)rcr�r r�)r�rrrr'�s
zFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumps)N)r�r�)rr'r)r�rr�test_instance_dispatch_table�sz7AbstractDispatchTableTests.test_instance_dispatch_tablec
sf�fdd�}dd�}d}|�||�|�|�||�|�d��fdd�}||t<|�||���|�||�|�t�}t�}|�||�t�|�||�t�|�||�t�|�||�t�||t<|�||�t�|�||���|�||�t�|�||�t�d	��fd
d�}	|	|t<|t=|�||���|�||�t�|�||�t�|�||�t�dS)Ncst��|d��S)Nr)rrh)rc)r'rr�custom_load_dump�szIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpcSst�t�|d��S)Nr)rrhr')rcrrr�default_load_dump�szJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpy�?@�reduce_1cs
t�ffS)N)r@)rc)�REDUCE_1rrr�
szAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1�reduce_2cs
t�ffS)N)r@)rc)�REDUCE_2rrr�!szAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2)r_�complexrmr|rnr3)
rr'r~r�r�r�r�rCrDr�r)r�r�r'rr��s:z/AbstractDispatchTableTests._test_dispatch_tableN)r&r'r(rr�r�r�rrrrr}�sr})r-zDATA{0} = (r�z	    {0!r}�)z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")�r�r*r�r"r�rrrrr�rrZunittestr��textwraprZhttp.cookiesrZtestrZtest.supportrrrrr	r
rrr
rZ
skipUnlessrbr#r�r>r&rrr�rr)r2r6r8r�r:r;r>r'rfr?rBrHrErFrGrJrqr/rsr0ruZ	DATA2_DISrwZ	DATA3_DISryZ	DATA4_DISr�r�r�r��ArithmeticErrorr
r&ri�BufferError�BytesWarning�DeprecationWarningr�EnvironmentErrorr��FloatingPointError�
FutureWarning�
GeneratorExit�IOError�ImportError�
ImportWarning�IndentationError�
IndexErrorr��KeyboardInterrupt�LookupError�MemoryError�	NameErrorr�OSErrorr��PendingDeprecationWarning�ReferenceErrorr��RuntimeWarning�
StopIteration�SyntaxError�
SyntaxWarning�SystemError�
SystemExit�TabErrorr��UnboundLocalError�UnicodeError�UnicodeWarning�UserWarningr��Warning�ZeroDivisionErrorr�r�r�rZZTestCaser[r$r(r�r�r�r�r�r�r�r��floatr8r�r9r@r:r;r7rVr�r@rKrBr�rYrSr[r�r�r�r�r�r�rArUr_rdrnrmr|r}r&r-rArGr'r�rkr^r4�jr�rDrrrr�<module>s`,		cMDDLYF
B(X