Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/pickletester.cpython-34.pyo

�
f f�~�,@spddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddlmZmZmZmZmZmZmZddlmZe	jejddkd�Zeejd	�Zd
d�Zdd
�ZGdd�dej �Z!Gdd�d�Z"Gdd�d�Z#Gdd�de#�Z$Gdd�de#�Z%Gdd�de&�Z'Gdd�de&�Z(ddl)Z)e#e)_#de#_*e$e)_$de$_*e%e)_%de%_*e'e)_'de'_*e(e)_(de(_*Gdd�de+�Z,Gdd �d e#�Z-Gd!d"�d"e.�Z/Gd#d$�d$e&d"e/�Z0Gd%d&�d&e.�Z1d'd(�Z2d)Z3d*Z4d+Z5d,Z6d-Z7d.Z8d/Z9d0Z:d1Z;d2Z<d3Z=d4Z>d5Z?d6Z@eAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeeefegeheiejekelf,Zmd7Znd8Zod9d:�ZpGd;d<�d<e	jq�ZrGd=d>�d>e	jq�ZsGd?d@�d@e	jq�ZtGdAdB�dBe&�ZuGdCdD�dDe&�ZvGdEdF�dFe&�ZwGdGdH�dHe&�ZxGdIdJ�dJe&�ZyGdKdL�dLe&�ZzGdMdN�dNe&�Z{GdOdP�dPe+�Z|GdQdR�dRe}�Z~GdSdT�dTe�Z�GdUdV�dVe��Z�GdWdX�dXe��Z�GdYdZ�dZe��Z�Gd[d\�d\e��Z�Gd]d^�d^e��Z�Gd_d`�d`e��Z�Gdadb�dbe��Z�e|e~e�e�e�e�e�e�e�e�g
Z�Gdcdd�dde��Z�Gdedf�dfe&�a�Gdgdh�dh�Z�Gdidj�dje	jq�Z�Gdkdl�dle	jq�Z�Gdmdn�dne	jq�Z�doZ�Gdpdq�dqe&�Z�Gdrds�dse&�Z�Gdtdu�due	jq�Z�e�dkrlddvlm�Z�ep�Z�x�eejd	�D]�Z�ej�e�e��Z�e�dwj�e���xMede�e��dx�D]3Z�e�e�e�e�dx��Z�e�dyj�e���q�We�dz�e��e�d{j�e���e�d|j�e���e�e��e�d}�e��q�WndS)~�N)�SimpleCookie)�support)�
TestFailed�TESTFN�run_with_locale�
no_tracing�_2G�_4G�
bigmemtest)�bytes_types�� z(test is only meaningful on 32-bit builds�cCsCx<tj|�D]+\}}}|j|jd�krdSqWdS)Nzlatin-1TF)�pickletools�genops�code�decode)r�pickle�op�dummy�r�6/opt/alt/python34/lib64/python3.4/test/pickletester.py�opcode_in_pickle srcCsRd}xEtj|�D]4\}}}|j|jd�kr|d7}qqW|S)Nrzlatin-1r)rrrr)rr�nrrrrr�count_opcode's
rc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�UnseekableIOcGs
t�dS)N)�NotImplementedError)�self�argsrrr�peek0szUnseekableIO.peekcCsdS)NFr)rrrr�seekable3szUnseekableIO.seekablecGs
tj�dS)N)�io�UnsupportedOperation)rrrrr�seek6szUnseekableIO.seekcCs
tj�dS)N)r!r")rrrr�tell9szUnseekableIO.tellN)�__name__�
__module__�__qualname__rr r#r$rrrrr/src@s(eZdZdd�Zdd�ZdS)�ExtensionSavercCsY||_|tjkrLtj||_tj|jd|jd|�n	d|_dS)Nrr)r�copyreg�_inverted_registry�pair�remove_extension)rrrrr�__init__Js
	$zExtensionSaver.__init__cCs||j}tjj|�}|dk	rEtj|d|d|�n|j}|dk	rxtj|d|d|�ndS)Nrr)rr)r*�getr,r+�
add_extension)rrZcurpairr+rrr�restoreSs		zExtensionSaver.restoreN)r%r&r'r-r0rrrrr(Gs	r(c@seZdZdd�ZdS)�CcCs|j|jkS)N)�__dict__)r�otherrrr�__eq__]szC.__eq__N)r%r&r'r4rrrrr1\sr1c@seZdZdd�ZdS)�DcCsdS)Nr)r�argrrrr-asz
D.__init__N)r%r&r'r-rrrrr5`sr5c@seZdZdd�ZdS)�EcCsfS)Nr)rrrr�__getinitargs__eszE.__getinitargs__N)r%r&r'r8rrrrr7dsr7c@seZdZdS)�HN)r%r&r'rrrrr9hsr9c@s(eZdZdd�Zdd�ZdS)�KcCs
||_dS)N)�value)rr;rrrr-msz
K.__init__cCst|jffS)N)r:r;)rrrr�
__reduce__pszK.__reduce__N)r%r&r'r-r<rrrrr:lsr:�__main__c@seZdZdd�ZdS)�myintcCst|�|_dS)N)�str)r�xrrrr-�szmyint.__init__N)r%r&r'r-rrrrr>�sr>c@s(eZdZdd�Zdd�ZdS)�initargcCs||_||_dS)N)�a�b)rrBrCrrrr-�s	zinitarg.__init__cCs|j|jfS)N)rBrC)rrrrr8�szinitarg.__getinitargs__N)r%r&r'r-r8rrrrrA�srAc@seZdZdS)�	metaclassN)r%r&r'rrrrrD�srDc@seZdZdS)�
use_metaclassN)r%r&r'rrrrrE�srEc@s(eZdZdd�Zdd�ZdS)�pickling_metaclasscCs(t|�t|�ko'|j|jkS)N)�type�reduce_args)rr3rrrr4�szpickling_metaclass.__eq__cCs
t|jfS)N)�create_dynamic_classrH)rrrrr<�szpickling_metaclass.__reduce__N)r%r&r'r4r<rrrrrF�srFcCs(t||t��}||f|_|S)N)rF�dictrH)�name�bases�resultrrrrI�srIs;(lp0
L0L
aL1L
aF2.0
ac__builtin__
complex
p1
(F3.0
F0.0
tp2
Rp3
aL1L
aL-1L
aL255L
aL-255L
aL-256L
aL65535L
aL-65535L
aL-65536L
aL2147483647L
aL-2147483647L
aL-2147483648L
a(Vabc
p4
g4
ccopy_reg
_reconstructor
p5
(c__main__
C
p6
c__builtin__
object
p7
Ntp8
Rp9
(dp10
Vfoo
p11
L1L
sVbar
p12
L2L
sbg9
tp13
ag13
aL5L
a.an    0: (    MARK
    1: l        LIST       (MARK at 0)
    2: p    PUT        0
    5: L    LONG       0
    9: a    APPEND
   10: L    LONG       1
   14: a    APPEND
   15: F    FLOAT      2.0
   20: a    APPEND
   21: c    GLOBAL     '__builtin__ complex'
   42: p    PUT        1
   45: (    MARK
   46: F        FLOAT      3.0
   51: F        FLOAT      0.0
   56: t        TUPLE      (MARK at 45)
   57: p    PUT        2
   60: R    REDUCE
   61: p    PUT        3
   64: a    APPEND
   65: L    LONG       1
   69: a    APPEND
   70: L    LONG       -1
   75: a    APPEND
   76: L    LONG       255
   82: a    APPEND
   83: L    LONG       -255
   90: a    APPEND
   91: L    LONG       -256
   98: a    APPEND
   99: L    LONG       65535
  107: a    APPEND
  108: L    LONG       -65535
  117: a    APPEND
  118: L    LONG       -65536
  127: a    APPEND
  128: L    LONG       2147483647
  141: a    APPEND
  142: L    LONG       -2147483647
  156: a    APPEND
  157: L    LONG       -2147483648
  171: a    APPEND
  172: (    MARK
  173: V        UNICODE    'abc'
  178: p        PUT        4
  181: g        GET        4
  184: c        GLOBAL     'copy_reg _reconstructor'
  209: p        PUT        5
  212: (        MARK
  213: c            GLOBAL     '__main__ C'
  225: p            PUT        6
  228: c            GLOBAL     '__builtin__ object'
  248: p            PUT        7
  251: N            NONE
  252: t            TUPLE      (MARK at 212)
  253: p        PUT        8
  256: R        REDUCE
  257: p        PUT        9
  260: (        MARK
  261: d            DICT       (MARK at 260)
  262: p        PUT        10
  266: V        UNICODE    'foo'
  271: p        PUT        11
  275: L        LONG       1
  279: s        SETITEM
  280: V        UNICODE    'bar'
  285: p        PUT        12
  289: L        LONG       2
  293: s        SETITEM
  294: b        BUILD
  295: g        GET        9
  298: t        TUPLE      (MARK at 172)
  299: p    PUT        13
  303: a    APPEND
  304: g    GET        13
  308: a    APPEND
  309: L    LONG       5
  313: a    APPEND
  314: .    STOP
highest protocol among opcodes = 0
s�]q(KKG@c__builtin__
complex
q(G@GtqRqKJ����K�J���J���M��J��J��J���J�J�(Xabcqhccopy_reg
_reconstructor
q(c__main__
C
qc__builtin__
object
qNtqRq	}q
(XfooqKXbarqKubh	tq
h
Ke.a    0: ]    EMPTY_LIST
    1: q    BINPUT     0
    3: (    MARK
    4: K        BININT1    0
    6: K        BININT1    1
    8: G        BINFLOAT   2.0
   17: c        GLOBAL     '__builtin__ complex'
   38: q        BINPUT     1
   40: (        MARK
   41: G            BINFLOAT   3.0
   50: G            BINFLOAT   0.0
   59: t            TUPLE      (MARK at 40)
   60: q        BINPUT     2
   62: R        REDUCE
   63: q        BINPUT     3
   65: K        BININT1    1
   67: J        BININT     -1
   72: K        BININT1    255
   74: J        BININT     -255
   79: J        BININT     -256
   84: M        BININT2    65535
   87: J        BININT     -65535
   92: J        BININT     -65536
   97: J        BININT     2147483647
  102: J        BININT     -2147483647
  107: J        BININT     -2147483648
  112: (        MARK
  113: X            BINUNICODE 'abc'
  121: q            BINPUT     4
  123: h            BINGET     4
  125: c            GLOBAL     'copy_reg _reconstructor'
  150: q            BINPUT     5
  152: (            MARK
  153: c                GLOBAL     '__main__ C'
  165: q                BINPUT     6
  167: c                GLOBAL     '__builtin__ object'
  187: q                BINPUT     7
  189: N                NONE
  190: t                TUPLE      (MARK at 152)
  191: q            BINPUT     8
  193: R            REDUCE
  194: q            BINPUT     9
  196: }            EMPTY_DICT
  197: q            BINPUT     10
  199: (            MARK
  200: X                BINUNICODE 'foo'
  208: q                BINPUT     11
  210: K                BININT1    1
  212: X                BINUNICODE 'bar'
  220: q                BINPUT     12
  222: K                BININT1    2
  224: u                SETITEMS   (MARK at 199)
  225: b            BUILD
  226: h            BINGET     9
  228: t            TUPLE      (MARK at 112)
  229: q        BINPUT     13
  231: h        BINGET     13
  233: K        BININT1    5
  235: e        APPENDS    (MARK at 3)
  236: .    STOP
highest protocol among opcodes = 1
s��]q(KKG@c__builtin__
complex
qG@G�qRqKJ����K�J���J���M��J��J��J���J�J�(Xabcqhc__main__
C
q)�q}q(XfooqKXbarq	Kubhtq
h
Ke.u�    0: € PROTO      2
    2: ]    EMPTY_LIST
    3: q    BINPUT     0
    5: (    MARK
    6: K        BININT1    0
    8: K        BININT1    1
   10: G        BINFLOAT   2.0
   19: c        GLOBAL     '__builtin__ complex'
   40: q        BINPUT     1
   42: G        BINFLOAT   3.0
   51: G        BINFLOAT   0.0
   60: †     TUPLE2
   61: q        BINPUT     2
   63: R        REDUCE
   64: q        BINPUT     3
   66: K        BININT1    1
   68: J        BININT     -1
   73: K        BININT1    255
   75: J        BININT     -255
   80: J        BININT     -256
   85: M        BININT2    65535
   88: J        BININT     -65535
   93: J        BININT     -65536
   98: J        BININT     2147483647
  103: J        BININT     -2147483647
  108: J        BININT     -2147483648
  113: (        MARK
  114: X            BINUNICODE 'abc'
  122: q            BINPUT     4
  124: h            BINGET     4
  126: c            GLOBAL     '__main__ C'
  138: q            BINPUT     5
  140: )            EMPTY_TUPLE
  141:          NEWOBJ
  142: q            BINPUT     6
  144: }            EMPTY_DICT
  145: q            BINPUT     7
  147: (            MARK
  148: X                BINUNICODE 'foo'
  156: q                BINPUT     8
  158: K                BININT1    1
  160: X                BINUNICODE 'bar'
  168: q                BINPUT     9
  170: K                BININT1    2
  172: u                SETITEMS   (MARK at 147)
  173: b            BUILD
  174: h            BINGET     6
  176: t            TUPLE      (MARK at 113)
  177: q        BINPUT     10
  179: h        BINGET     10
  181: K        BININT1    5
  183: e        APPENDS    (MARK at 5)
  184: .    STOP
highest protocol among opcodes = 2
s��]q(KKG@cbuiltins
complex
qG@G�qRqKJ����K�J���J���M��J��J��J���J�J�(Xabcqhc__main__
C
q)�q}q(XbarqKXfooq	Kubhtq
h
Ke.u�    0: € PROTO      3
    2: ]    EMPTY_LIST
    3: q    BINPUT     0
    5: (    MARK
    6: K        BININT1    0
    8: K        BININT1    1
   10: G        BINFLOAT   2.0
   19: c        GLOBAL     'builtins complex'
   37: q        BINPUT     1
   39: G        BINFLOAT   3.0
   48: G        BINFLOAT   0.0
   57: †     TUPLE2
   58: q        BINPUT     2
   60: R        REDUCE
   61: q        BINPUT     3
   63: K        BININT1    1
   65: J        BININT     -1
   70: K        BININT1    255
   72: J        BININT     -255
   77: J        BININT     -256
   82: M        BININT2    65535
   85: J        BININT     -65535
   90: J        BININT     -65536
   95: J        BININT     2147483647
  100: J        BININT     -2147483647
  105: J        BININT     -2147483648
  110: (        MARK
  111: X            BINUNICODE 'abc'
  119: q            BINPUT     4
  121: h            BINGET     4
  123: c            GLOBAL     '__main__ C'
  135: q            BINPUT     5
  137: )            EMPTY_TUPLE
  138:          NEWOBJ
  139: q            BINPUT     6
  141: }            EMPTY_DICT
  142: q            BINPUT     7
  144: (            MARK
  145: X                BINUNICODE 'bar'
  153: q                BINPUT     8
  155: K                BININT1    2
  157: X                BINUNICODE 'foo'
  165: q                BINPUT     9
  167: K                BININT1    1
  169: u                SETITEMS   (MARK at 144)
  170: b            BUILD
  171: h            BINGET     6
  173: t            TUPLE      (MARK at 110)
  174: q        BINPUT     10
  176: h        BINGET     10
  178: K        BININT1    5
  180: e        APPENDS    (MARK at 5)
  181: .    STOP
highest protocol among opcodes = 2
s����]�(KKG@�builtins��complex���G@G��R�KJ����K�J���J���M��J��J��J���J�J�(�abc�h�__main__��C���)��}�(�bar�K�foo�Kubh
t�hKe.u�    0: € PROTO      4
    2: • FRAME      168
   11: ]    EMPTY_LIST
   12: ” MEMOIZE
   13: (    MARK
   14: K        BININT1    0
   16: K        BININT1    1
   18: G        BINFLOAT   2.0
   27: Œ     SHORT_BINUNICODE 'builtins'
   37: ”     MEMOIZE
   38: Œ     SHORT_BINUNICODE 'complex'
   47: ”     MEMOIZE
   48: “     STACK_GLOBAL
   49: ”     MEMOIZE
   50: G        BINFLOAT   3.0
   59: G        BINFLOAT   0.0
   68: †     TUPLE2
   69: ”     MEMOIZE
   70: R        REDUCE
   71: ”     MEMOIZE
   72: K        BININT1    1
   74: J        BININT     -1
   79: K        BININT1    255
   81: J        BININT     -255
   86: J        BININT     -256
   91: M        BININT2    65535
   94: J        BININT     -65535
   99: J        BININT     -65536
  104: J        BININT     2147483647
  109: J        BININT     -2147483647
  114: J        BININT     -2147483648
  119: (        MARK
  120: Œ         SHORT_BINUNICODE 'abc'
  125: ”         MEMOIZE
  126: h            BINGET     6
  128: Œ         SHORT_BINUNICODE '__main__'
  138: ”         MEMOIZE
  139: Œ         SHORT_BINUNICODE 'C'
  142: ”         MEMOIZE
  143: “         STACK_GLOBAL
  144: ”         MEMOIZE
  145: )            EMPTY_TUPLE
  146:          NEWOBJ
  147: ”         MEMOIZE
  148: }            EMPTY_DICT
  149: ”         MEMOIZE
  150: (            MARK
  151: Œ             SHORT_BINUNICODE 'bar'
  156: ”             MEMOIZE
  157: K                BININT1    2
  159: Œ             SHORT_BINUNICODE 'foo'
  164: ”             MEMOIZE
  165: K                BININT1    1
  167: u                SETITEMS   (MARK at 150)
  168: b            BUILD
  169: h            BINGET     10
  171: t            TUPLE      (MARK at 119)
  172: ”     MEMOIZE
  173: h        BINGET     14
  175: K        BININT1    5
  177: e        APPENDS    (MARK at 13)
  178: .    STOP
highest protocol among opcodes = 4
s%�c__builtin__
set
q]q(KKe�qRq.s%�c__builtin__
xrange
qKKK�qRq.s��cCookie
SimpleCookie
q)�qUkeyqcCookie
Morsel
q)�q(UcommentqUqUdomainqhUsecureqhUexpiresq	hUmax-ageq
hUversionqhUpathqhUhttponlyq
hu}q(Ucoded_valueqUvalueqhhhhubs}qb.s"�c__builtin__
set
q]qKa�qRq.s�cexceptions
?
q)Rq.sI�cexceptions
UnicodeEncodeError
q(UasciiqXfooqKKUbadqtqRq.c
Cs�t�}d|_d|_ddddg}d}d}d	}|jdd
|||d|||d|||dg�d
d
||f}|j|�|j|�|jd�|S)Nrrrg@g@y�i��i����abc�y@���)r1�foo�bar�extend�append)�cr@Zuint1maxZuint2maxZint4max�yrrr�create_datas 			


rXc@seZdZe�Zddd�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,dS)P�AbstractUnpickleTestsNcCs?|dkr!dj||�}n|j||d|�|jt|�t|�d|�t|d�r�|j|j|jd|�|j|j|jd|�nt|d�r;|j|j	|j	d|�xj|j	D]\}|jt||�t||�d|�|jt
||d�t
||d�d|�q�WndS)zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r}�msgr2�	__slots__)�format�assertEqual�assertIsrG�hasattrZassertDictEqualr2ZassertIsNotZassertListEqualr[�getattr)r�objZobjcopyrZZslotrrr�assert_is_copy�s""z$AbstractUnpickleTests.assert_is_copycCs�|jd|���|j|��py|j|�WnWtk
r�}z7tjdkrxtd||jj|f�n�WYdd}~XnXWdQXWdQXdS)N�datarz%-32r - %s: %s)	�subTest�assertRaises�loads�
BaseExceptionr�verbose�print�	__class__r%)r�errorsrc�excrrr�check_unpickling_error�sz,AbstractUnpickleTests.check_unpickling_errorcCs |j|j|jt��dS)N)rb�	_testdatarf�DATA0)rrrr�test_load_from_data0�sz*AbstractUnpickleTests.test_load_from_data0cCs |j|j|jt��dS)N)rbrnrf�DATA1)rrrr�test_load_from_data1�sz*AbstractUnpickleTests.test_load_from_data1cCs |j|j|jt��dS)N)rbrnrf�DATA2)rrrr�test_load_from_data2�sz*AbstractUnpickleTests.test_load_from_data2cCs |j|j|jt��dS)N)rbrnrf�DATA3)rrrr�test_load_from_data3�sz*AbstractUnpickleTests.test_load_from_data3cCs |j|j|jt��dS)N)rbrnrf�DATA4)rrrr�test_load_from_data4�sz*AbstractUnpickleTests.test_load_from_data4cCs�x�tfftdftffgD]�\}}|jjd�}djd|�}|j||�|j|��djd|�}|j||�|j|��djd|�}|j||�|j|��q"WdS)Nr@�asciis(i__main__
X
p0
(dp1
b.�Xs(c__main__
X
qoq}qb.s�(c__main__
X
qoq}qb.)r@)r1r5r7r%�encode�replacerbrf)r�XrZxnameZpickle0Zpickle1Zpickle2rrr�test_load_classic_instance�s.z0AbstractUnpickleTests.test_load_classic_instancecCssd}dt|�jd�d}|j|�}|j||�dt|�jd�d}|jt|�dS)	Nr�?�Irys
.sJUNK
.ll����)r?r{rfrbrm�
ValueError)rZmaxint64rc�gotrrr�
test_maxint64�sz#AbstractUnpickleTests.test_maxint64cCs�|jt�}|j|tddg��|jt�}|jt|�ttd���|jt|�ttd���|jt�}|jt|�t	�|jt|j
��dg�|j|djd�xQtD]I}t
jd|jjd��}|j|�}|jt|�|�q�W|jt
jdd	��}|jt|�t�|jt�}|jt|�t�|j|jd
�|j|jd�|j|jd�|j|jd�|j|jd�dS)NrrrrP�keyr;�?rys
StandardErrorrRZbad)rf�DATA_SETr]�set�DATA_XRANGErG�range�list�DATA_COOKIEr�keysr;�python2_exceptions_without_args�exception_pickler|r%r{r^�	Exception�
DATA_UEERR�UnicodeEncodeError�object�encoding�start�end�reason)r�loadedrlrcrrr�test_unpickle_from_2xs,""
z+AbstractUnpickleTests.test_unpickle_from_2xcCsa|j|jddd�d�|j|jddd�d�|j|jddd�d�dS)NsS'a\x00\xa0'
.r��bytessa�sUa�.s�Ua�.)r]rf)rrrr�test_load_python2_str_as_bytes&s

z4AbstractUnpickleTests.test_load_python2_str_as_bytescCsa|j|jddd�d�|j|jddd�d�|j|jddd�d�dS)Ns	V\u03c0
.r�r�uπsXπ.s
�Xπ.)r]rf)rrrr� test_load_python2_unicode_as_str1s

z6AbstractUnpickleTests.test_load_python2_unicode_as_strcCsI|j|jtjtjdd�ddtjdd�dd�dS)Nz<Ii,�xr�r�)r]rfrZ	BINSTRING�struct�pack�STOP)rrrr�#test_load_long_python2_str_as_bytes<s(z9AbstractUnpickleTests.test_load_long_python2_str_as_bytescCs~|j|jd��|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d�dS)NsN.s�.Ts�.FsI01
.sI00
.)ZassertIsNonerfr^)rrrr�test_constantsCs
z$AbstractUnpickleTests.test_constantscCs)|jddd�}|j|d�dS)Ns�Uq.r�zkoi8-r�)rfr])r�emptyrrr�test_empty_bytestringJsz+AbstractUnpickleTests.test_empty_bytestringcCs#d}|j|j|�d�dS)Ns	�C€.s€)r]rf)r�dumpedrrr�test_short_binbytesOsz)AbstractUnpickleTests.test_short_binbytescCs#d}|j|j|�d�dS)Ns�B€.s€)r]rf)rr�rrr�
test_binbytesSsz#AbstractUnpickleTests.test_binbytescCs#d}|jtjtf|�dS)Ns
�B����xyzq.)rmr�UnpicklingError�
OverflowError)rr�rrr�test_negative_32b_binbytesWsz0AbstractUnpickleTests.test_negative_32b_binbytescCs#d}|jtjtf|�dS)Ns
�X����xyzq.)rmrr�r�)rr�rrr�test_negative_32b_binunicode^sz2AbstractUnpickleTests.test_negative_32b_binunicodecCs#d}|j|j|�d�dS)Ns	��€.u€)r]rf)rr�rrr�test_short_binunicodeesz+AbstractUnpickleTests.test_short_binunicodecCs3|jtd�|jddg|jd��dS)Nsg0
p0�ds((Kdtp0
hl.)))r�)r�)rm�KeyErrorrbrf)rrrr�
test_misc_getisz#AbstractUnpickleTests.test_misc_getcCs#d}|j|j|�d�dS)Ns��€.s€)r]rf)rr�rrr�test_binbytes8nsz$AbstractUnpickleTests.test_binbytes8cCs#d}|j|j|�d�dS)Ns��€.u€)r]rf)rr�rrr�test_binunicode8rsz&AbstractUnpickleTests.test_binunicode8cCs#d}|jtjtf|�dS)Ns��€.)rmrr�r�)rr�rrr�test_large_32b_binbytes8vsz.AbstractUnpickleTests.test_large_32b_binbytes8cCs#d}|jtjtf|�dS)Ns��€.)rmrr�r�)rr�rrr�test_large_32b_binunicode8|sz0AbstractUnpickleTests.test_large_32b_binunicode8cCsHd}|j|�}|j|gfd�|j|d|d�dS)Ns((lp100000
g100000
t.rrr)rfr]r^)r�pickled�	unpickledrrr�test_get�szAbstractUnpickleTests.test_getcCsHd}|j|�}|j|gfd�|j|d|d�dS)Ns(]q�h�t.rrr)rfr]r^)rr�r�rrr�test_binget�sz!AbstractUnpickleTests.test_bingetcCsHd}|j|�}|j|gfd�|j|d|d�dS)Ns(]rjt.rrr)rfr]r^)rr�r�rrr�test_long_binget�sz&AbstractUnpickleTests.test_long_bingetcCsHd}|j|�}|j|gfd�|j|d|d�dS)Ns((l2t.rrr)rfr]r^)rr�r�rrr�test_dup�szAbstractUnpickleTests.test_dupcCsd}|jt|�dS)NsVa
p-1
.)rmr�)rr�rrr�test_negative_put�sz'AbstractUnpickleTests.test_negative_putcCsd}|jt|�dS)Ns�Xar����.)rmr�)rr�rrr�test_negative_32b_binput�sz.AbstractUnpickleTests.test_negative_32b_binputcCs|jtd�dS)NsS'\'
.)rmr�)rrrr�test_badly_escaped_string�sz/AbstractUnpickleTests.test_badly_escaped_stringc
CsUddddddddd	d
ddd
g
}x!|D]}|jtj|�q4WdS)NsS'
.sS"
.sS' 
.sS" 
.sS'"
.sS"'
.sS' ' 
.sS" " 
.sS ''
.sS ""
.sS 
.sS
.sS.)rmrr�)r�
badpickles�prrr�test_badly_quoted_string�s	
z.AbstractUnpickleTests.test_badly_quoted_stringcCsFddd	d
g}x-|D]%\}}|j|j|�|�qWdS)N�S''
.r��S""
.�S"\n"
.�
�S'\n'
.)r�r�)r�r�)r�r�)r�r�)r]rf)rZgoodpicklesr��expectedrrr�test_correctly_quoted_string�s	z2AbstractUnpickleTests.test_correctly_quoted_stringcCs#d}|j|j|�d�dS)Ns��I42
.�*)r]rf)rr�rrr�test_frame_readline�sz)AbstractUnpickleTests.test_frame_readlinecCsud}|j|�}|jt|�t�|j|tdd��|jt|�ddddddg�d	}|j|j|�tj�d
}|j|j|�tj	�xWdD]O}d
|d}|j|�}|jt|�t
�|jt|�d�q�WxddD]\}d|d}|j|�}|jt|�tj
�|j|tj
idd6��qWdS)Ns�c__builtin__
xrange
KKK�R.r�r��rP�s�c__builtin__
reduce
.s�cwhichdb
whichdb
.�	Exception�
StandardErrors�cexceptions
s	
Uugh�R.Zugh�UserDict�IterableUserDicts
�(cUserDict
s
o}Udata}KKssb.)r�r�)r�r�)rfr^rGr�r]r��	functools�reduce�dbm�whichdbr�r?�collections�UserDict)rr�r�rKrrr�test_compat_unpickle�s((

z*AbstractUnpickleTests.test_compat_unpicklec(Cs�ddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(g(}x!|D]}|j|j|�q�WdS))N�.�0�1�2�Rs)R�asNa�bsNb�d�esibuiltins
list
�l�os(osp1
sqsr�ssNssNNs�t�us}(Nus�s)�s�s�sN�s�sN�sNN�s�s�s�s)}�s�sVlist
�s�)rmZbad_stack_errors)rr�r�rrr�test_bad_stack�sT	
z$AbstractUnpickleTests.test_bad_stackcCs�ddddddddd	d
ddd
ddddddddddddddddg}x!|D]}|j|j|�qdWdS)NsN(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(�)rmZbad_mark_errors)rr�r�rrr�
test_bad_marks>	
z#AbstractUnpickleTests.test_bad_markcQCsA|jtd�|jtd�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|j|�q WdS)TN��N�BsBsBsBab�CsCsCab�FsF0.0sF0.00�GsGr�sI0�JsJ�K�LsL0sL10sL0LsL10L�MsM�SsS'abc'�TsTsTsTab�UsUsUab�VsVabcrzsXsXsXabs(cs
(cbuiltinss(cbuiltins
s(cbuiltins
listsNgsNg0s(is
(ibuiltinss(ibuiltins
s(ibuiltins
listsNhsNjsNjsNpsNp0sNqsNrsNrs�s�s�s�s�s�s�s�s�s�s�s�abs�s�s	�s�abs�s�s	�s�abs�s�s	�s
�N)rm�EOFErrorZtruncated_errors)rr�r�rrr�test_truncated_data>s�	
z)AbstractUnpickleTests.test_truncated_data)-r%r&r'rXrnrbrmrprrrtrvrxr~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�rrrrrY�sP	9
2'rYc@seZdZdZejZdd�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��ZGeHd�d���ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�S)��AbstractPickleTestsFcCsdS)Nr)rrrr�setUp�szAbstractPickleTests.setUpcCs�x�tD]�}td�}|j||�}|j|�}|j||�dff}|j||�}|j|�}|j||�td|�}|j||�}|j|�}|j||�qWdS)Nr�r)�	protocolsr>�dumpsrfrbrA)r�protor@�srWrrr�	test_misc�s
zAbstractPickleTests.test_misccCsO|j}x?tD]7}|j||�}|j|�}|j||�qWdS)N)rnr�r�rfrb)rr�r�r�r�rrr�test_roundtrip_equality�s
	
z+AbstractPickleTests.test_roundtrip_equalitycCs�ddlm}ddlm}xpdtfdtffD]V\}}|j|j|�}|�}||d|�|j�}|j	||�q9WdS)Nr)�StringIO)�disr�out)
r!rrr�	DATA0_DIS�	DATA1_DISr�rn�getvaluer])rrrr�r�r�Zfileliker�rrr�dont_test_disassembly�s%	z)AbstractPickleTests.dont_test_disassemblycCs�g}|j|�xitD]a}|j||�}|j|�}|j|t�|jt|�d�|j|d|�qWdS)Nrr)	rUr�r�rf�assertIsInstancer�r]�lenr^)r�lr�r�r@rrr�test_recursive_list�s

z'AbstractPickleTests.test_recursive_listcCs�gf}|dj|�x�tD]�}|j||�}|j|�}|j|t�|jt|�d�|j|dt�|jt|d�d�|j	|dd|�q!WdS)Nrr)
rUr�r�rfr�tupler]r	r�r^)r�tr�r�r@rrr�test_recursive_tuple_and_list�s	
z1AbstractPickleTests.test_recursive_tuple_and_listcCs�i}||d<xrtD]j}|j||�}|j|�}|j|t�|jt|j��dg�|j|d|�qWdS)Nr)	r�r�rfrrJr]r�r�r^)r�dr�r�r@rrr�test_recursive_dict�s

z'AbstractPickleTests.test_recursive_dictcCs�i}t|�}d||<x�tD]�}|j||�}|j|�}|j|t�|jt|j��d�|jt	|j��dt�|j
t	|j��dj|�q#WdS)Nrr)r:r�r�rfrrJr]r	r�r�r^r;)rr�kr�r�r@rrr�test_recursive_dict_key�s

 z+AbstractPickleTests.test_recursive_dict_keycCs�t�}t|�}|j|�x�tdtjd�D]�}|j||�}|j|�}|j|t�|j	t
|�d�|jt|�dt�|jt|�dj
|�q9WdS)Nr�rr)r�r:�addr�r�HIGHEST_PROTOCOLr�rfrr]r	r�r^r;)rrWrr�r�r@rrr�test_recursive_set�s	
z&AbstractPickleTests.test_recursive_setcCs�t�}|j|�xytdtjd�D]a}|j||�}|j|�}|j|t�|jt	|�d�|j
|d|�q-WdS)Nrrr)�MyListrUr�rrr�rfrr]r	r^)rrWr�r�r@rrr�test_recursive_list_subclass
s	
z0AbstractPickleTests.test_recursive_list_subclasscCs�t�}||d<x�tdtjd�D]j}|j||�}|j|�}|j|t�|jt|j	��dg�|j
|d|�q*WdS)Nrr)�MyDictr�rrr�rfrr]r�r�r^)rrr�r�r@rrr�test_recursive_dict_subclasss	
z0AbstractPickleTests.test_recursive_dict_subclasscCs�t�}t|�}d||<x�tdtjd�D]�}|j||�}|j|�}|j|t�|jt	t
|j���d�|jt
|j��dt�|jt
|j��dj
|�q6WdS)Nrrr)rr:r�rrr�rfrr]r	r�r�r^r;)rrrr�r�r@rrr� test_recursive_dict_subclass_keys	
" z4AbstractPickleTests.test_recursive_dict_subclass_keycCs�t�}||_xntD]f}|j||�}|j|�}|j|t�|jt|�t|��|j|j|�qWdS)N)	r1�attrr�r�rfrr]�dirr^)r�ir�r�r@rrr�test_recursive_inst*s		
z'AbstractPickleTests.test_recursive_instcCs�g}i|d6}t�}||_|j|�x�tD]�}|j||�}|j|�}|j|t�|jt	|�d�|jt
|d�t
|��|jt|djj��dg�|j|djd|k�q9WdS)Nrr)
r1rrUr�r�rfrr�r]r	rr��
assertTrue)rr
rrr�r�r@rrr�test_recursive_multi4s
		

 &z(AbstractPickleTests.test_recursive_multicCs�t�}||g�}||_x�tD]�}|j||�}|j|�}|j|t|��|jt|�d�|jt	|�dt�|j
t	|�dj|�q(WdS)Nrr)r9rr�r�rfrrGr]r	r�r^)rZfactory�hrWr�r�r@rrr�#check_recursive_collection_and_instCs		
z7AbstractPickleTests.check_recursive_collection_and_instcCs|jt�dS)N)r"r�)rrrr�test_recursive_list_and_instOsz0AbstractPickleTests.test_recursive_list_and_instcCs|jt�dS)N)r"r)rrrr�test_recursive_tuple_and_instRsz1AbstractPickleTests.test_recursive_tuple_and_instcCs|jtj�dS)N)r"rJ�fromkeys)rrrr�test_recursive_dict_and_instUsz0AbstractPickleTests.test_recursive_dict_and_instcCs|jt�dS)N)r"r�)rrrr�test_recursive_set_and_instXsz/AbstractPickleTests.test_recursive_set_and_instcCs|jt�dS)N)r"�	frozenset)rrrr�!test_recursive_frozenset_and_inst[sz5AbstractPickleTests.test_recursive_frozenset_and_instcCs|jt�dS)N)r"r)rrrr�%test_recursive_list_subclass_and_inst^sz9AbstractPickleTests.test_recursive_list_subclass_and_instcCs|jt�dS)N)r"�MyTuple)rrrr�&test_recursive_tuple_subclass_and_instasz:AbstractPickleTests.test_recursive_tuple_subclass_and_instcCs|jtj�dS)N)r"rr%)rrrr�%test_recursive_dict_subclass_and_instdsz9AbstractPickleTests.test_recursive_dict_subclass_and_instcCs|jt�dS)N)r"�MySet)rrrr�$test_recursive_set_subclass_and_instgsz8AbstractPickleTests.test_recursive_set_subclass_and_instcCs|jt�dS)N)r"�MyFrozenSet)rrrr�*test_recursive_frozenset_subclass_and_instjsz>AbstractPickleTests.test_recursive_frozenset_subclass_and_instcCsrdddddddg}xPtD]H}x?|D]7}|j||�}|j|�}|j||�q/Wq"WdS)Nr�z<\u>u<\ሴ>z<
>z<\>u<\𒍅>u<�>)r�r�rfrb)rZendcasesr��ur�Zu2rrr�test_unicodems	

z AbstractPickleTests.test_unicodecCsLd}x?tD]7}|j||�}|j|�}|j||�q
WdS)Nu𒍅)r�r�rfrb)rr
r�r�Zt2rrr�test_unicode_high_planexs

z+AbstractPickleTests.test_unicode_high_planecCs�x�tD]�}xFddddfD]1}|j||�}|j||j|��q!WxLdd�td�D�D]1}|j||�}|j||j|��qpWxLdd�td�D�D]1}|j||�}|j||j|��q�WqWdS)Nr�sxyzr�cSsg|]}t|g��qSr)r�)�.0rrrr�
<listcomp>�s	z2AbstractPickleTests.test_bytes.<locals>.<listcomp>�cSs"g|]}t||g��qSr)r�)r5rrrrr6�s	)r�r�rbrfr�)rr�r�r�rrr�
test_bytess
  zAbstractPickleTests.test_bytescCs~xwtD]o}tj}x]|ruxF||fD]7}|j||�}|j|�}|j||�q-W|d?}qWqWdS)Nr)r��sys�maxsizer�rfrb)rr�rr�r�Zn2rrr�	test_ints�s
		zAbstractPickleTests.test_intsc	Csx�tD]�}x�dD]{}d|>}xh|d||dfD]O}xF||fD]7}|j||�}|j|�}|j||�qPWq<WqWqWtdd�}||d	>7}x\||fD]M}|j|d
�}|j|�}|jt|�t�|j||�q�WdS)Nr��rNr7iZdeadbeeffeedface�i@Br�����)rr<r?r@rArB)r�r�rfrb�intr^rGr])	rr�ZnbitsZnbaseZnposrrr�r�rrr�	test_long�s


 zAbstractPickleTests.test_longcCs�ddddddddd	d
dg}|dd
�|D�}xPtD]H}x?|D]7}|j||�}|j|�}|j||�qRWqEWdS)Nggg+�p�hg�Z��*)g_D��9g�������?g�?g��Q�	@g�m�"wp@g�W�T��Dgꌠ9Y>)FcSsg|]
}|�qSrr)r5r@rrrr6�s	z2AbstractPickleTests.test_float.<locals>.<listcomp>)r�r�rfrb)rZtest_valuesr�r;rr�rrr�
test_float�s

zAbstractPickleTests.test_float�LC_ALLZde_DEZfr_FRcCs*|j|jdd�dd�d�dS)Ng333333�?rr�sF1.)r]r�)rrrr�test_float_format�sz%AbstractPickleTests.test_float_formatcCsOxHtD]@}t�}|j||�}|j|�}|j|t�qWdS)N)r��AAAr�rfr]�REDUCE_A)rr��instr�r�rrr�test_reduce�s

	zAbstractPickleTests.test_reducecCsUxNtD]F}tdd�}|j||�}|j|�}|j||�qWdS)Nrr)r�rAr�rfrb)rr�rJr�r�rrr�test_getinitargs�s

z$AbstractPickleTests.test_getinitargscCsUt�}xEtD]=}|j||�}|j|�}|j|j|j�qWdS)N)rEr�r�rfr]rj)rrBr�r�rCrrr�test_metaclass�s
	
z"AbstractPickleTests.test_metaclasscCs�tdtf�}tjttj�x[tD]S}|j||�}|j|�}|j	||�|j
t|�t|��q,WdS)NZmy_dynamic_class)rIr�r)rrFr<r�r�rfr]r^rG)rrBr�r�rCrrr�test_dynamic_class�s
z&AbstractPickleTests.test_dynamic_classcCsddl}ddl}|j�}x�tD]�}|j||�}|j|�}|j||�t|d�r�|j|j	�}|j||�}|j|�}|j||�nt|d�r+|j
|j	�}|j||�}|j|�}|j||�q+q+WdS)Nr�stat�statvfs)�time�osZ	localtimer�r�rfrbr_rO�curdirrP)rrQrRr
r�r�r2rrr�test_structseq�s"
z"AbstractPickleTests.test_structseqcCsFx?tD]7}|jd|�}|j|�}|jd|�qWdS)N.)r�r�rfr^)rr�r�r2rrr�
test_ellipsis�s
z!AbstractPickleTests.test_ellipsiscCsFx?tD]7}|jt|�}|j|�}|jt|�qWdS)N)r�r��NotImplementedrfr^)rr�r�r2rrr�test_notimplemented�s
z'AbstractPickleTests.test_notimplementedcCsrddtg}x\|D]T}xKtD]C}|jt|�|�}|j|�}|jt|�|�q#WqWdS)N.)rVr�r�rGrfr^)rZ
singletonsZ	singletonr�r�r2rrr�test_singleton_types�s

z(AbstractPickleTests.test_singleton_typescCsxwtD]o}|jd|�}|dkrZtjt|g�}|j|j|��q|jttj|�d�qWtdd}tj	tj
}tjt|g�|}y|j|�Wn;tk
r}z|j
dt|��WYdd}~XnX|jd�dS)Nrrrzunsupported pickle protocolz0expected bad protocol number to raise ValueErrorrQ)r�r�rZPROTOr�r�
startswithr]r�NONEr�rfr��assertInr?Zfail)rr�r�Zproto_headerZoobZ
build_noneZ	badpickle�errrrr�
test_protos
 )zAbstractPickleTests.test_protocCsnd}xatD]Y}|j||�}|j|�}|j||�|jttj|�|dk�q
WdS)Nl�UJ^w,3�|	r)r�r�rfrbr]rrZLONG1)rr@r�r�rWrrr�
test_long1s
zAbstractPickleTests.test_long1cCsnd}xatD]Y}|j||�}|j|�}|j||�|jttj|�|dk�q
WdS)Nl�UJ^w,3�|	r7r<ril�h�J2�w,f�	)r�r�rfrbr]rrZLONG4)rr@r�r�rWrrr�
test_long4s
zAbstractPickleTests.test_long4cCs�itjd6tjd6tjd6tjd	6tjd
6tjd6tjd6tjd
6tjd6tjd6tjd6tjd6tjd6tjd6tjd6tjd6tjd6tjd6tjd6tjd6}f}d}d}d}d}x�tD]�}x�|||||fD]l}|j||�}	|j|	�}
|j	||
�|t
|d�t|�f}|jt
||	��qWq�WdS)Nrrrr�r�)rr)rr)rr)rr�)rr�)rr)rr)rr)rr�)rr�)rr)rr)rr)rr�)rr�)r�r)r�r)r�r)r�r�)r�r�)r)rr)rrr�)rrr�r�)rZTUPLEZEMPTY_TUPLEZTUPLE1ZTUPLE2ZTUPLE3r�r�rfrb�minr	rr)r�expected_opcoderBrCrVr�er�r@r�rWr�rrr�test_short_tuples's@




















z%AbstractPickleTests.test_short_tuplescCsitjd6tjd6tjd	6tjd
6tjd6tjd6tjd
6tjd6tjd6tjd6tjd6tjd6}x�tD]�}x�dD]x}|j||�}|j|�}|j||k||||f�|t	|d�|f}|jt
||��q�Wq�WdS)Nrrrr�TF)rN)rN)rN)r�N)rT)rT)rT)r�T)rF)rF)rF)r�F)NFT)rrZZINTZNEWTRUEZNEWFALSEr�r�rfrr`r)rrar�r@r�rWr�rrr�test_singletonsNs&













"z#AbstractPickleTests.test_singletonscCsmtdddg�}d|_d|_x?tD]7}|j||�}|j|�}|j||�q.WdS)Nrrr�r��hello)r+rRrSr�r�rfrb)rr@r�r�rWrrr�test_newobj_tuplegs		
z%AbstractPickleTests.test_newobj_tuplecCsmtdddg�}d|_d|_x?tD]7}|j||�}|j|�}|j||�q.WdS)Nrrr�r�re)rrRrSr�r�rfrb)rr@r�r�rWrrr�test_newobj_listps		
z$AbstractPickleTests.test_newobj_listc	Cs�x�tD]�}x�tD]�}|j}||j�}d|_|j||�}|j|�}|||||t|�f}|j||�|j	||�||�|�|j	|j
|j
|�qWqWdS)Nr�)r��	myclasses�__base__�samplerRr�rfrGrbr]r2)rr�r1�Br@r�rW�detailrrr�test_newobj_genericys

		z'AbstractPickleTests.test_newobj_genericc	Cstdd�}x!ttfD]}|j|�qWx�tD]�}x�|D]�}|j}||j�}d|_tj	|�}|j
||�}|j|�}	|jt
|	�t
|��|||||	t
|	�f}
|j||�||	�|
�|j|j|	j|
�qHWq;WdS)Nr�)rh�MyIntr+�remover�rirjrR�weakref�proxyr�rfr]rGr2)rZclassesrVr�r1rkr@r�r�rWrlrrr�test_newobj_proxies�s

		z'AbstractPickleTests.test_newobj_proxiesc
Cs^t}tjt�}|j|d�}z)da|jttjf|j|�Wd|aXdS)Nr�r�)�SimpleNewObj�__new__r�re�	TypeErrorrr�rf)rZsave�orCrrr�test_newobj_not_class�s#z)AbstractPickleTests.test_newobj_not_classcCsHt|�}z*tjtd|�tdddg�}d|_d|_|j|d�}|jtj	d�|�|jd|�|j
t||��|j|�}|j
||�|j|d�}|jtj	d�|�|jd|�|jt||�d	t|��|j|�}|j
||�Wd|j�XdS)
Nrrrr�r�rezutf-8sMyListT)r(r)r/r%rrRrSr�r[r{�assertFalserrfrbZassertNotInr]�reprr0)rZextcode�opcoderbr@�s1rW�s2rrr�produce_global_ext�s&		"z&AbstractPickleTests.produce_global_extcCs*|jdtj�|jdtj�dS)NrrN)r}rZEXT1)rrrr�test_global_ext1�sz$AbstractPickleTests.test_global_ext1cCs=|jdtj�|jdtj�|jdtj�dS)Nr7i��iͫ)r}rZEXT2)rrrr�test_global_ext2�sz$AbstractPickleTests.test_global_ext2cCs=|jdtj�|jdtj�|jdtj�dS)Nii���i�ͫ)r}rZEXT4)rrrr�test_global_ext4�sz$AbstractPickleTests.test_global_ext4cCs$d}tt|��}xgtD]_}|j||�}|j|�}|j||�ttj|�}|j	||dk�qWd}tt|��}x�tD]{}|j||�}|j|�}|j||�ttj|�}|dkr	|j	|d�q�|j
|dk�q�WdS)N�
ri�	r)r�r�r�r�rfrbrr�APPENDSr]r)rrr@r�r�rWZnum_appendsrrr�test_list_chunking�s$

z&AbstractPickleTests.test_list_chunkingcCs:d}tjt|��}xwtD]o}|j||�}|j|t�|j|�}|j||�t	t
j|�}|j||dk�q"Wd}tjt|��}x�tD]{}|j||�}|j|�}|j||�t	t
j|�}|dkr|j|d�q�|j
|dk�q�WdS)Nr�ri�	r)rJr%r�r�r�rrrfrbrr�SETITEMSr]r)rrr@r�r�rWZnum_setitemsrrr�test_dict_chunking�s&

z&AbstractPickleTests.test_dict_chunkingcCs:d}tt|��}x�tD]x}|j||�}|j|�}|j||�ttj|�}|dkr�|j	|d�q|j	|d�qWd}tt|��}x�tD]x}|j||�}|j|�}|j||�ttj|�}|dkr"|j	|d�q�|j
|d�q�WdS)Nr�r�rri�	r)r�r�r�r�rfrbrrZADDITEMSr]�assertGreaterEqual)rrr@r�r�rWZnum_additemsrrr�test_set_chunkings(

z%AbstractPickleTests.test_set_chunkingcCs�tjt�}d|_x�tD]�}|j||�}|jttj	|�d|kocdkn�|jttj
|�|dk�|j|�}|j||�qWdS)Ni�rr�)
r�rtrsrOr�r�r]rrZNEWOBJZ	NEWOBJ_EXrfrb)rr@r�r�rWrrr�test_simple_newobjs	

z&AbstractPickleTests.test_simple_newobjcCs\tdddg�}d|_d|_|j|d�}|j|�}|j||�dS)Nrrr�r�re)�SlotListrRrSr�rfrb)rr@r�rWrrr�test_newobj_list_slots%s		z*AbstractPickleTests.test_newobj_list_slotscCsxxqtD]i}t�}|j|jd�|j||�}|j|jd�|j|�}|j|jd�qWdS)Nrr)r��REX_oner]�_reduce_calledr�rf)rr�r@r�rWrrr�'test_reduce_overrides_default_reduce_ex-s
	z;AbstractPickleTests.test_reduce_overrides_default_reduce_excCsxxqtD]i}t�}|j|jd�|j||�}|j|j|�|j|�}|j|jd�qWdS)N)r��REX_twor]�_protor�rf)rr�r@r�rWrrr�test_reduce_ex_called6s
	z)AbstractPickleTests.test_reduce_ex_calledcCsxxqtD]i}t�}|j|jd�|j||�}|j|j|�|j|�}|j|jd�qWdS)N)r��	REX_threer]r�r�rf)rr�r@r�rWrrr�test_reduce_ex_overrides_reduce?s
	z3AbstractPickleTests.test_reduce_ex_overrides_reducecCsxxqtD]i}t�}|j|jd�|j||�}|j|j|�|j|�}|j|j|�qWdS)N)r��REX_fourr]r�r�rf)rr�r@r�rWrrr�test_reduce_ex_calls_baseHs
	z-AbstractPickleTests.test_reduce_ex_calls_basecCsxxqtD]i}t�}|j|jd�|j||�}|j|jd�|j|�}|j|jd�qWdS)Nrr)r��REX_fiver]r�r�rf)rr�r@r�rWrrr�test_reduce_calls_baseQs
	z*AbstractPickleTests.test_reduce_calls_basecCs7t�}x'tD]}|jt|j||�qWdS)N)�
BadGetattrr�re�RuntimeErrorr�)rr@r�rrr�test_bad_getattrZs	
z$AbstractPickleTests.test_bad_getattrcCs�Gdd�dt�}Gdd�dt�}xltD]d}y|j|�|�Wntjk
rgYnXy|j|�|�Wq3tjk
r�Yq3Xq3WdS)Nc@seZdZdd�ZdS)z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.CcSstfdgdfS)N)r�)rrrrr<eszBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N)r%r&r'r<rrrrr1dsr1c@seZdZdd�ZdS)z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.DcSstfddgfS)N)rJ)rrrrr<iszBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__N)r%r&r'r<rrrrr5hsr5)r�r�r�rZPickleError)rr1r5r�rrr�test_reduce_bad_iteratoras
z,AbstractPickleTests.test_reduce_bad_iteratorcCs�dd�td�D�}tdd�|D��}t|�t|�t|�g}xXtD]P}|jd|��6|j||�}|j|�}|j||�WdQXqZWdS)Ncss|]}dt|�VqdS)ZaaaN)r?)r5rrrr�	<genexpr>{sz>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>r�css$|]}|dddgfVqdS)r�rPr�Nr)r5rrrrr�|sr�)r�rJr�rdr�rfrb)rr�Z
large_dictrar�r�r�rrr�test_many_puts_and_getsxs!
z+AbstractPickleTests.test_many_puts_and_getsc	Cs�x�tD]�}t�}d|_d|_|j||�}|j|�}t|j�}t|j�}x-t||�D]\}}|j	||�qwWqWdS)Nr�re)
r�r1rRrSr�rf�sortedr2�zipr^)	rr�r@r�rWZx_keysZy_keysZx_keyZy_keyrrr�test_attribute_name_interning�s
			z1AbstractPickleTests.test_attribute_name_interningcCsW|jtd�d�}|j|t�|jtdg�d�}|j|t�dS)NrPrr�)r�r�r]r�r��	DATA_SET2)rr�rrr�test_pickle_to_2x�sz%AbstractPickleTests.test_pickle_to_2xcCsxxqtD]i}dtddtf}|j||�}|j|�}|jt|�t|��|j||�qWdS)Nrsxy�iix)r�r`r	r�rfr])rr�rcr�r�rrr�test_large_pickles�s
z&AbstractPickleTests.test_large_picklesc
s�x�tD]���jd������fdd�td�D�}ttt|��}�jt|�|��dkr�x*|D]}�jt	t
j|��q�WnWdQXqWdS)Nr�cs&g|]}�jd|���qS)r)r�)r5r)r�rrrr6�s	zDAbstractPickleTests.test_int_pickling_efficiency.<locals>.<listcomp>�Fr)r�rdr�r��mapr	r]r�rxrrZLONG)rZpicklesZsizesr�r)r�rr�test_int_pickling_efficiency�s
"
z0AbstractPickleTests.test_int_pickling_efficiencycCsK|j||�}|jt||��|j|�}|j||�dS)N)r�rrrfr])rrarzr�r�r�rrr�_check_pickling_with_opcode�sz/AbstractPickleTests._check_pickling_with_opcodecCsetdddg�}xItD]A}|dkrG|j|tj|�q|j|tj|�qWdS)Nrrr�r)�REX_sixr�r�rZAPPENDr�)rrar�rrr�test_appends_on_non_lists�s

z-AbstractPickleTests.test_appends_on_non_listscCsqtidd6dd6dd6�}xItD]A}|dkrS|j|tj|�q(|j|tj|�q(WdS)Nrrr�rrQ������)�	REX_sevenr�r�rZSETITEMr�)rrar�rrr�test_setitems_on_non_dicts�s
!
z.AbstractPickleTests.test_setitems_on_non_dicts�@ic	Cs�d}d}}xotj|�D]^\}}}|jdkrDq n|dk	rq|||}|j||�n||}}q Wt|�||}|j||�dS)zO
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.
        �	N�FRAME)rrrKr]r	)	rr��frame_opcode_sizeZlast_argZlast_posrr6�pos�
frame_sizerrr�check_frame_opcodes�s
z'AbstractPickleTests.check_frame_opcodescCs�ttd��}x�tdtjd�D]�}|jd|���|j||�}|j|�}|j||�t|�t	tj
|�}|j||jd�|j
||jd�|j|�WdQXq)WdS)Nr�rPr�rr�ri��)r�r�rrrdr�rfr]r	rr�Z
assertGreater�FRAME_SIZE_TARGETZassertLessEqualr�)rrar�r�r�Zbytes_per_framerrr�test_framing_many_objects�s			z-AbstractPickleTests.test_framing_many_objectscCs�d}d|d|d|g}x�tdtjd�D]�}|jd|��k|j||�}|j|�}|j||�ttj|�}|j	|t
|��|j|�WdQXq8WdS)	Nir��y�zr�rr�i)r�rrrdr�rfr]rr�r�r	r�)r�Nrar�r�r�Zn_framesrrr�test_framing_large_objects�sz.AbstractPickleTests.test_framing_large_objectscstjdkrdSddd�}|j�d}�fdd�t|�D�}x�tdtjd�D]�}|j||�}||�}|jttj|�d�|j||j|��||d	d
��}|j	ttj|�ttj|��|j||j|��qgWdS)Nr�c
Ss�g}d}x?tj|�D].\}}}|jdkr|j|�qqWt�}d}xPt|�D]B\}	}|r�||	�r�qjn||||�7}||}qjW|||d�7}|S)z+Remove frame opcodes from the given pickle.r�r�rN)rrrKrU�	bytearray�	enumerate)
r�Z
keep_frameZframe_startsr�rz�_r�Z	newpickleZlast_frame_endrrrr�
remove_framess	z?AbstractPickleTests.test_optional_frames.<locals>.remove_frames�cs#g|]}t|g���qSr)r�)r5r)r�rrr6s	z<AbstractPickleTests.test_optional_frames.<locals>.<listcomp>rrcSs|dS)Nrr)rrrr�<lambda>sz:AbstractPickleTests.test_optional_frames.<locals>.<lambda>)
rrr�r�r�r]rr�rfZ
assertLess)rr�Z
num_framesrar�r�Zframeless_pickleZsome_frames_pickler)r�r�test_optional_frames�s	z(AbstractPickleTests.test_optional_framesc
Cs�Gdd�d�ax�tdtjd�D]|}xstjtjjtjjjgD]P}|jd|d|��0|j|j	||��}|j
||�WdQXqRWq*WdS)Nc@s#eZdZGdd�d�ZdS)�Nestedc@s#eZdZGdd�d�ZdS)zNested.Ac@s#eZdZGdd�d�ZdS)z
Nested.A.Bc@seZdZdS)zNested.A.B.CN)r%r&r'rrrrr1)sr1N)r%r&r'r1rrrrrk(srkN)r%r&r'rkrrrr�A'sr�N)r%r&r'r�rrrrr�&sr�r�rr�ra)r�r�rrr�rkr1rdrfr�r^)rr�rar�rrr�test_nested_names$s(z%AbstractPickleTests.test_nested_namesc
CslGdd�d�atjtjt�jtjjtjjtj�jf}tjtftjjtjff}x�tdt	j
d�D]�}x^|D]V}|jd|d|��6|j|j
||��}|j|�|��WdQXq�Wxs|D]k\}}|�}|jd|d|��<|j|j
||��}|j||�||��WdQXq�Wq�WdS)Nc@sSeZdZedd��Zedd��Zdd�ZGdd�d�Zd	S)
�
PyMethodsTestcSsdS)N�cheeserrrrrr�5szPyMethodsTest.cheesecSsdS)N�winer)�clsrrrr�8szPyMethodsTest.winecSsdS)N�biscuitsr)rrrrr�<szPyMethodsTest.biscuitsc@sFeZdZdZedd��Zedd��Zdd�ZdS)	zPyMethodsTest.NestedzNested classcSsdS)N�ketchuprrrrrr�AszPyMethodsTest.Nested.ketchupcSsdS)N�mapler)r�rrrr�DszPyMethodsTest.Nested.maplecSsdS)N�pier)rrrrr�HszPyMethodsTest.Nested.pieN)	r%r&r'�__doc__�staticmethodr��classmethodr�r�rrrrr�?sr�N)	r%r&r'r�r�r�r�r�r�rrrrr�4sr�r�rr��method)r�r�r�r�r�r�r�r�r�rrrdrfr�r])rZ
py_methodsZpy_unbound_methodsr�r�r�r�rarrr�test_py_methods2s&			
 	z#AbstractPickleTests.test_py_methodscCs�Gdd�dt�adjdftjdfdddgjfftjdddgffddhjdftjddhdfftj	dft
jdftdddg�jdftjtdddg�dfftj
d�jdftj
jtj
d�d
fff}x�tdtjd�D]s}xj|D]b\}}|jd|d|��<|j|j||��}|j||�||��WdQXq6Wq)WdS)Nc@s&eZdZGdd�de�ZdS)�Subclassc@seZdZdS)zSubclass.NestedN)r%r&r'rrrrr�fsr�N)r%r&r'r?r�rrrrr�esr��abcdrVrrr�rBrC�abc�xyzZsweetrbr�r�r�)rV)r�rV)r�rBr�rCr)r�r�)r�r�)r)rb)rr��indexr?�__len__r��__contains__r�rJr%r��	maketrans�countr�r�rrrdrfr�r])rZ	c_methodsr�r�rr�rrr�test_c_methodscs$!$z"AbstractPickleTests.test_c_methodsc
CsDtdd�ddfttd�ddftjddftjd	d	ft�d
dftj	�dd
ftj
�ddftj�ddfg}x�|D]�\}}}x�td�D]�}|jdt
|�d|��\|j||�}|jd||fj�|�|jt
|j|��t
|��WdQXq�Wq�WdS)Nrr�Z__builtin__ZxrangeZ123�	itertoolsZimapr�r��
exceptionsr�r�ZIterableUserDict�UserListr��defaultdictr�rGr�zc%s
%s)r�r�rCr�r�r�r�r�r�r�r�r�rdrGr�r[r{r^rf)rZtests�val�modrKr�r�rrr�test_compat_pickle�s z&AbstractPickleTests.test_compat_pickleNi)\r%r&r'Z	optimizedrYrnr�rbr�rrrrrrrrrrrr r"r#r$r&r'r)r*r,r-r/r1r3r4r8r;rDrErrGrKrLrMrNrTrUrWrXr]r^r_rcrdrfrgrmrrrwr}r~rr�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�r�r�r�rrrrr��s�		







	'		
					


	
'1#r�c@s�eZdZededddd�dd��Zededddd�d	d
��Zededddd�dd��Zededd
dd�dd��Z	ededd
dd�dd��Z
dS)�BigmemPickleTests�sizeZmemuseg������@Zdry_runFcCs�dd|>}zoxhtD]`}|dkr0qn|jd|��4|jttf��|j|d|�WdQXWdQXqWWdd}XdS)Nrr<rr��protocol)r�rdrer�r�r�)rr�rcr�rrr�test_huge_long_32b�s
'z$BigmemPickleTests.test_huge_long_32bg@cCs�d|d}z�x�tD]�}|dkr0qn|jd|��zzk|j|d|�}tjtjdt|��}|j|�}|j	|||t|�|��Wdd}XWdQXqWWdd}XdS)Nsabcdr�r�r�r�z<I)
r�rdr�rZBINBYTESr�r�r	r�r])rr�rcr�r��header�
data_startrrr�test_huge_bytes_32b�s 
z%BigmemPickleTests.test_huge_bytes_32bc Csd|d}z�x�tD]�}|dkr0qn|jd|���|dkr�|jttf��|j|d|�WdQXwnzk|j|d|�}tjtj	dt
|��}|j|�}|j|||t
|�|��Wdd}XWdQXqWWdd}XdS)Nsacbdr�r�r�r�z<Q)
r�rdrer�r�r�rZ	BINBYTES8r�r�r	r�r])rr�rcr�r�r�r�rrr�test_huge_bytes_64b�s(
z%BigmemPickleTests.test_huge_bytes_64br<cCsd|d}z�x�tD]�}|dkr0qn|jd|���z�|j|d|�}tjtjdt|��}|jd�}|j	|||t|�|��|j	|j
d�td�|jd�t|��Wdd}XWdQXqWWdd}XdS)Nr�r�rr�r�z<Isabcd)r�rdr�rZ
BINUNICODEr�r�r	r�r]�rindex)rr�rcr�r�r�r�rrr�test_huge_str_32b�s$
z#BigmemPickleTests.test_huge_str_32bc CsHd|d}z,x%tD]}|dkr0qn|jd|���|dkr�|jttf��|j|d|�WdQXwnz�|j|d|�}tjtj	dt
|��}|jd�}|j|||t
|�|��|j|j
d�t
d�|jd�t
|��Wdd}XWdQXqWWdd}XdS)Nr�r�rr�r�z<Qsabcd)r�rdrer�r�r�rZBINUNICODE8r�r�r	r�r]r�)rr�rcr�r�r�r�rrr�test_huge_str_64b�s,
z#BigmemPickleTests.test_huge_str_64bN)r%r&r'r
rr�r�r	r�r�r�rrrrr��s
''''r�c@s(eZdZdZdZdd�ZdS)r�z4No __reduce_ex__ here, but inheriting it from objectrcCsd|_tffS)Nr)r�r�)rrrrr<	s	zREX_one.__reduce__N)r%r&r'r�r�r<rrrrr�	sr�c@s(eZdZdZdZdd�ZdS)r�z1No __reduce__ here, but inheriting it from objectNcCs||_tffS)N)r�r�)rr�rrr�
__reduce_ex__$	s	zREX_two.__reduce_ex__)r%r&r'r�r�r�rrrrr�!	sr�c@s.eZdZdZdd�Zdd�ZdS)r�NcCs||_tffS)N)r�r�)rr�rrrr�*	s	zREX_three.__reduce_ex__cCstd��dS)Nz#This __reduce__ shouldn't be called)r)rrrrr<-	szREX_three.__reduce__)r%r&r'r�r�r<rrrrr�(	sr�c@s(eZdZdZdZdd�ZdS)r�z(Calling base class method should succeedNcCs||_tj||�S)N)r�r�r�)rr�rrrr�3	s	zREX_four.__reduce_ex__)r%r&r'r�r�r�rrrrr�0	sr�c@s(eZdZdZdZdd�ZdS)r�z-This one used to fail with infinite recursionrcCsd|_tj|�S)Nr)r�r�r<)rrrrr<:	s	zREX_five.__reduce__N)r%r&r'r�r�r<rrrrr�7	sr�c@sIeZdZdZddd�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)rr�rrrr-B	szREX_six.__init__cCs(t|�t|�ko'|j|jkS)N)rGr�)rr3rrrr4D	szREX_six.__eq__cCs|jj|�dS)N)r�rU)r�itemrrrrUF	szREX_six.appendcCs"t|�fdt|j�dfS)N)rG�iterr�)rrrrr<H	szREX_six.__reduce__)r%r&r'r�r-r4rUr<rrrrr�>	s
r�c@sIeZdZdZddd�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)rr�rrrr-O	szREX_seven.__init__cCs(t|�t|�ko'|j|jkS)N)rGr�)rr3rrrr4Q	szREX_seven.__eq__cCs||j|<dS)N)r�)rr�r;rrr�__setitem__S	szREX_seven.__setitem__cCs(t|�fddt|jj��fS)N)rGr�r�r�)rrrrr<U	szREX_seven.__reduce__)r%r&r'r�r-r4r�r<rrrrr�K	s
r�c@seZdZdZdS)rnrN)r%r&r'rjrrrrrn[	srnc@seZdZdZdS)�MyFloatg�?N)r%r&r'rjrrrrr�^	sr�c@seZdZdZdS)�	MyComplexg�?yNy�?)r%r&r'rjrrrrr�a	sr�c@seZdZdZdS)�MyStrreN)r%r&r'rjrrrrr�d	sr�c@seZdZdZdS)�	MyUnicodeu	hello ሴN)r%r&r'rjrrrrr�g	sr�c@seZdZdZdS)r+rrr�N)rrr�)r%r&r'rjrrrrr+j	sr+c@seZdZdddgZdS)rrrr�N)r%r&r'rjrrrrrm	src@s$eZdZidd6dd6ZdS)rrrBrrCN)r%r&r'rjrrrrrp	src@seZdZddhZdS)r.rBrCN)r%r&r'rjrrrrr.s	sr.c@s"eZdZeddh�ZdS)r0rBrCN)r%r&r'r(rjrrrrr0v	sr0c@seZdZdgZdS)r�rRN)r%r&r'r[rrrrr�	sr�c@s(eZdZdd�Zdd�ZdS)rscCstd��dS)Nz3SimpleNewObj.__init__() didn't expect to get called)ru)rrBrCrVrrrr-�	szSimpleNewObj.__init__cCs|j|jkS)N)r2)rr3rrrr4�	szSimpleNewObj.__eq__N)r%r&r'r-r4rrrrrs�	srsc@seZdZdd�ZdS)r�cCs|jdS)N)rR)rr�rrr�__getattr__�	szBadGetattr.__getattr__N)r%r&r'r�rrrrr��	sr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�AbstractPickleModuleTestscCsWddl}ttd�}z'|j�|jttjd|�Wd|jt�XdS)Nr�wb�{)	rR�openr�closerer�r�dumpro)rrR�frrr�test_dump_closed_file�	s
z/AbstractPickleModuleTests.test_dump_closed_filecCsWddl}ttd�}z'|j�|jttjd|�Wd|jt�XdS)Nrr�r�)	rRr�rr�rer�rrro)rrRrrrr�test_load_closed_file�	s
z/AbstractPickleModuleTests.test_load_closed_filecCs[tj�}didg}tj||�|jd�tj|�}|j||�dS)Nr��|r)r!�BytesIOrrr#�loadr])r�streamrcr�rrr�test_load_from_and_dump_to_file�	s
z9AbstractPickleModuleTests.test_load_from_and_dump_to_filecCs|jtjd�dS)Nr�)r]rr)rrrr�test_highest_protocol�	sz/AbstractPickleModuleTests.test_highest_protocolcCs�tj�}tjd|d�tjdd|dd�tjdd�tjddd�tj|d	�tj|dd
�dS)Nr�r�filer�rQrQrQrQrQrQ)r!rrrr��Pickler)rrrrr�test_callapi�	sz&AbstractPickleModuleTests.test_callapicCskGdd�dtj�}Gdd�dtj�}|jtj|�jd�|jtj|�j�dS)Nc@seZdZdd�ZdS)z;AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklercSsdS)Nr)rrrrr-�	szDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__N)r%r&r'r-rrrr�
BadPickler�	sr
c@seZdZdd�ZdS)z=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklercSsdS)Nr)rrrrr-�	szFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__N)r%r&r'r-rrrr�BadUnpickler�	srr)rrZ	UnpicklerreZ
PicklingErrorrr�r)rr
rrrr�
test_bad_init�	sz'AbstractPickleModuleTests.test_bad_initcCs5tdddddg�}|jttj|�dS)N�Xr�T)r�rer�rrf)rr�rrr�test_bad_input�	sz(AbstractPickleModuleTests.test_bad_inputN)
r%r&r'rrrr	rrrrrrrr��	s		
r�c@s4eZdZdd�Zdd�Zdd�ZdS)�AbstractPersistentPicklerTestscCs_t|t�r8|ddkr8|jd7_t|�S|dkrW|jd7_dSdSdS)Nrrr�test_false_valuer�)�
isinstancerC�id_countr?�false_count)rr�rrr�
persistent_id�	s
z,AbstractPersistentPicklerTests.persistent_idcCs<|s|jd7_dS|jd7_t|�}|SdS)Nrr)�load_false_count�
load_countrC)rZoidr�rrr�persistent_load�	sz.AbstractPersistentPicklerTests.persistent_loadcCs�ttd��dg}x�tD]�}d|_d|_d|_d|_|j|j|j	||��|�|j|jd�|j|jd�|j|jd�|j|jd�q WdS)Nr�rrrPr)
r�r�r�rrrrr]rfr�)r�Lr�rrr�test_persistence�	s
				%z/AbstractPersistentPicklerTests.test_persistenceN)r%r&r'rrrrrrrr�	s

rc@s�eZdZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dS)�#AbstractPicklerUnpicklerObjectTestsNcCsdS)Nr)rrrrr��	sz)AbstractPicklerUnpicklerObjectTests.setUpcCs�dddg}tj�}|j|�}|j|�|j�}|jd�|j�|j|�|j�}|j�|jd�|j�|j|�|j�}|j||�|j	||�dS)N�abcdefg�,r)
r!r�
pickler_classrrr#�truncateZ
clear_memo�assertNotEqualr])rrcr�pickler�
first_pickledZsecond_pickledZ
third_pickledrrr�test_clear_pickler_memo�	s 







z;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memocCs�dddg}tj�}|j|�}|j|�|j�}tj�}|j|�}|j|_|j|�|j�}|j||�dS)Nrr )r!rr!rr�memor#)rrcrr$r%�primed�primed_pickledrrr�test_priming_pickler_memo
s

z=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memoc
Csdddg}tj�}|j|�}|j|�|j�}tj�}|j|�}|j|_|j|�|j�}|jtj|��}|j�}|j||�|jtj|��}|j|_|j�}	|jj	�|j|	|�|j
|	|k�dS)Nrr )r!rr!rrr'�unpickler_classrr]�clearr)
rrcrr$r%r(r)�	unpicklerZunpickled_data1Zunpickled_data2rrr�test_priming_unpickler_memo,
s&


z?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memocCsdddg}tj�}|j|�}|j|�|j�}dddg}tj�}|j|�}|j|�|j�}tj�}|j|�|jd�|j|�}|j|j	�|�|jd�|j
�|j|�|jd�|j|j	�|�dS)Nrr r)r!rr!rr�writer#r+r]rr")r�data1rr$Zpickled1Zdata2Zpickled2r-rrr�test_reusing_unpickler_objectsJ
s(







zBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectscCs7x0tD](}|jd|��dd�td�D�dtg}|�}|j|d|�}|j|�|j�}d}|||�}|j|�}xtt|�D]f}	|j�r�|j	�}
n|j
|j�|�|j�r�|j
|j	�|
t|��q�q�W|jt
|j�WdQXqWdS)Nr�cSs"g|]}|t|�f�qSr)r?)r5r@rrrr6f
s	zSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings.<locals>.<listcomp>i�sabcder�rP)r�rdr�r	r!rrr+r r$r]rrer�)rZioclassr�r0rr$r�r�r-rr�rrr�_check_multiple_unpicklingsc
s"
#	
'z?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklingscCs|jtj�dS)N)r2r!r)rrrr�"test_multiple_unpicklings_seekablew
szFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekablecCs|jt�dS)N)r2r)rrrr�$test_multiple_unpicklings_unseekablez
szHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekablecCs�ttd��}x�tD]�}x�tdd�D]u}tjtj�d|�}|j|d|�}|j|�|jd�|j	|�}|j
|j�|�q/WqWdS)Nr�r�Zbuffer_sizer�r)r�r�r�r!�BufferedRandomrr!rr#r+r]r)rrcr�Zbuf_sizerr$r-rrr�"test_unpickling_buffering_readline}
s


zFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline)r%r&r'r!r+r�r&r*r.r1r2r3r4r7rrrrr�	srZreduce_Ac@seZdZdd�ZdS)rHcCs
ttffS)N)r?rI)rrrrr<�
szAAA.__reduce__N)r%r&r'r<rrrrrH�
srHc@seZdZdS)�BBBN)r%r&r'rrrrr8�
sr8c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�AbstractDispatchTableTestsc
CsUtj�}|j|d�}|jt��|jWdQX|jt|d��dS)Nr�dispatch_table)r!rr!re�AttributeErrorr:rxr_)rrr�rrr�test_default_dispatch_table�
s

z6AbstractDispatchTableTests.test_default_dispatch_tablecsZ�j��G�fdd�d�j��d���fdd�}�j|��dS)NcseZdZ�ZdS)zGAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r%r&r'r:r)�dtrr�	MyPickler�
sr>csEtj�}�||�}�j|j��|j|�|j�S)N)r!rr]r:rr)rar�rr�)r>r=rrrr��
s

zCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumps)�get_dispatch_tabler!�_test_dispatch_table)rr�r)r>r=rr�test_class_dispatch_table�
sz4AbstractDispatchTableTests.test_class_dispatch_tablecs8�j��d��fdd�}�j|��dS)NcsQtj�}�j||�}�|_�j|j��|j|�|j�S)N)r!rr!r:r]rr)rar�rr�)r=rrrr��
s	
zFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumps)r?r@)rr�r)r=rr�test_instance_dispatch_table�
sz7AbstractDispatchTableTests.test_instance_dispatch_tablec
s��fdd�}dd�}d
}|j||�|�|j||�|�d��fdd	�}||t<|j||���|j||�|�t�}t�}|j||�t�|j||�t�|j||�t�|j||�t�||t<|j||�t�|j||���|j||�t�|j||�t�d
��fdd�}	|	|t<|t=|j||���|j||�t�|j||�t�|j||�t�dS)Ncstj�|d��S)Nr)rrf)ra)r�rr�custom_load_dump�
szIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpcSstjtj|d��S)Nr)rrfr�)rarrr�default_load_dump�
szJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpry@�reduce_1cs
t�ffS)N)r?)ra)�REDUCE_1rrrE�
szAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1�reduce_2cs
t�ffS)N)r?)ra)�REDUCE_2rrrG�
szAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2y�?@)r]�complexrHr8rIr)
rr�r:rCrD�zrErBrCrGr)rFrHr�rr@�
s:
		

z/AbstractDispatchTableTests._test_dispatch_tableN)r%r&r'r<rArBr@rrrrr9�
sr9)rzDATA{0} = (r�z	    {0!r}�)z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")�r�r)r�r!r�rrr�r9ZunittestrpZhttp.cookiesrZtestrZtest.supportrrrrrr	r
rZ
skipUnlessr:r�r�rr�rrrrr(r1r5r7r�r9r:r=r&rCr>rArGrDrErFrIrorrqrrsZ	DATA2_DISruZ	DATA3_DISrwZ	DATA4_DISr�r�r�r��ArithmeticError�AssertionErrorr;rg�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�TabErrorru�UnboundLocalError�UnicodeError�UnicodeWarning�UserWarningr��Warning�ZeroDivisionErrorr�r�r�rXZTestCaserYr�r�r�r�r�r�r�r�r�rn�floatr�rIr�r?r�r�rr+r�rrJrr�r.r(r0rhr�rsr�r�rrrIrHr8r9r%rr@rr�r�rir\r	�jr�rCrrrr�<module>s@4													cMDDL	�������
<(�X