
    ;e	5             
          d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ 	 d dlZn# e$ r dZY nw xY wd dlmZ d dlmZ d dlmZmZmZmZmZm Z  d dl!m"Z" d dl#m$Z$ d d	lm%Z% d d
l&m'Z' d dlm(Z( 	  e'            5  d dl)Z*ddd           n# 1 swxY w Y   n# e$ r dZ*Y nw xY w ej+        ej,        dk     d          Z- e.ej/        dz             Z0d Z1d Z2d Z3 G d dej4                  Z5 G d de6          Z7 G d d          Z8 G d d          Z9 G d de9          Z: G d de9          Z; G d d          Z< G d  d!          Z=d dl>Z>e9e>_9        d"e9_?        e:e>_:        d"e:_?        e;e>_;        d"e;_?         G d# d$e@          ZA G d% d&e9          ZB G d' d(eC          ZD G d) d*e6eD+          ZE G d, d-eC          ZFd. ZG G d/ d0eH          ZI G d1 d2eJ          ZKe G d3 d4          ZLd5ZMd6ZNd7ZOd8ZPd9ZQd:ZRd;ZSd<ZTd=ZUd>ZVd?ZWd@ZXdAZYdBZZg e[e\e]e^e_e`eaebecedeeefegeheeiejekelemeneoepeqereseteuevewexeyeze{e|e}e~eeeeeeeR ZdCZdDZdE Z G dF dG          Z G dH dI          Z G dJ dK          Z G dL dMe6          Z G dN dOe6          Z G dP dQe6          Z G dR dSe6          Z G dT dUe6          Z G dV dWe6          Z G dX dYe6          Z G dZ d[e6          Z G d\ d]e@          Z G d^ d_e          Z G d` dae          Z G db dce          Z G dd dee          Z G df dge          Z G dh die          Z G dj dke          Z G dl dme          Z G dn doe          Zeeeeeeeeeeg
Z G dp dqe@          Z G dr dse          Z G dt due          Z G dv dwe@          a G dx dytV                    Z G dz d{tV                    Z G d| d}          Z G d~ d          Z G d d          Z G d d          Z G d d          ZdZ G d de6          Z G d de6          Zd Z G d d          Z G d d          Z G d d          Zed"k    rd dl	mZ  e            Z e.ej/        dz             D ]Z ej        ee          Z ed                    e                      e.d  ee          d          D ]6Z eHeeedz                      Z ed                    eĦ                     7 ed            e              ed                    e                      ed                    e                      ee            ed            e             dS dS )    N)dedent)SimpleCookie)support)	os_helper)
TestFailedrun_with_locale
no_tracing_2G_4G
bigmemtest)forget)TESTFN)threading_helper)save_restore_warnings_filters)bytes_typesl        z(test is only meaningful on 32-bit builds   c                 ~    t          j        |          D ]'\  }}}|j        |                     d          k    r dS (dS )Nlatin-1TFpickletoolsgenopscodedecode)r   pickleopdummys       (/usr/lib/python3.11/test/pickletester.pyopcode_in_pickler   ;   sM    '.v66  E57dkk),,,,44 -5    c                     d}t          j        |          D ])\  }}}|j        |                     d          k    r|dz  }*|S )Nr   r   r   r   )r   r   nr   r   s        r   count_opcoder"   B   sP    	A'.v66  E57dkk),,,,FAHr   c                     | S N xs    r   identityr(   J   s    Hr   c                   &    e Zd Zd Zd Zd Zd ZdS )UnseekableIOc                     t           r$   )NotImplementedErrorselfargss     r   peekzUnseekableIO.peekO   s    !!r   c                     dS )NFr%   r.   s    r   seekablezUnseekableIO.seekableR   s    ur   c                     t           j        r$   ioUnsupportedOperationr-   s     r   seekzUnseekableIO.seekU       %%r   c                     t           j        r$   r5   r2   s    r   tellzUnseekableIO.tellX   r9   r   N)__name__
__module____qualname__r0   r3   r8   r;   r%   r   r   r*   r*   N   sP        " " "  & & && & & & &r   r*   c                       e Zd ZdZd ZdS )	MinimalIOz=
    A file-like object that doesn't support readinto().
    c                     t          j        | | _        | j        j        | _        | j        j        | _        | j        j        | _        | j        j        | _        d S r$   )r6   BytesIO_biogetvaluereadreadlinewriter-   s     r   __init__zMinimalIO.__init__`   sB    J%		*IN		*Y_


r   N)r<   r=   r>   __doc__rH   r%   r   r   r@   r@   \   s-         % % % % %r   r@   c                       e Zd Zd Zd ZdS )ExtensionSaverc                     || _         |t          j        v rEt          j        |         | _        t          j        | j        d         | j        d         |           d S d | _        d S Nr   r   )r   copyreg_inverted_registrypairremove_extension)r.   r   s     r   rH   zExtensionSaver.__init__u   sX    	7---248DI$TYq\49Q<FFFFFDIIIr   c                     | j         }t          j                            |          }|"t          j        |d         |d         |           | j        }|$t          j        |d         |d         |           d S d S rM   )r   rN   rO   getrQ   rP   add_extension)r.   r   curpairrP   s       r   restorezExtensionSaver.restore~   sz    y,0066$WQZTBBBy!$q'47D99999 r   N)r<   r=   r>   rH   rV   r%   r   r   rK   rK   r   s2          : : : : :r   rK   c                       e Zd Zd ZdS )Cc                 "    | j         |j         k    S r$   )__dict__r.   others     r   __eq__zC.__eq__   s    }..r   N)r<   r=   r>   r]   r%   r   r   rX   rX      s#        / / / / /r   rX   c                       e Zd Zd ZdS )Dc                     d S r$   r%   )r.   args     r   rH   z
D.__init__       r   Nr<   r=   r>   rH   r%   r   r   r_   r_      s#            r   r_   c                       e Zd Zd ZdS )Ec                     dS Nr%   r%   r2   s    r   __getinitargs__zE.__getinitargs__   s    rr   N)r<   r=   r>   rh   r%   r   r   re   re      s#            r   re   c                       e Zd ZdS )ObjectNr<   r=   r>   r%   r   r   rj   rj              Dr   rj   c                       e Zd Zd Zd ZdS )Kc                     || _         d S r$   )value)r.   rp   s     r   rH   z
K.__init__       


r   c                      t           | j        ffS r$   )rn   rp   r2   s    r   
__reduce__zK.__reduce__   s    4:-r   N)r<   r=   r>   rH   rs   r%   r   r   rn   rn      s2                   r   rn   __main__c                       e Zd Zd ZdS )myintc                 .    t          |          | _         d S r$   str)r.   r'   s     r   rH   zmyint.__init__   s    q66r   Nrc   r%   r   r   rv   rv      s#            r   rv   c                       e Zd Zd Zd ZdS )initargc                 "    || _         || _        d S r$   ab)r.   r~   r   s      r   rH   zinitarg.__init__   s    r   c                     | j         | j        fS r$   r}   r2   s    r   rh   zinitarg.__getinitargs__   s    vtv~r   N)r<   r=   r>   rH   rh   r%   r   r   r{   r{      s2              r   r{   c                       e Zd ZdS )	metaclassNrk   r%   r   r   r   r      rl   r   r   c                       e Zd ZdS )use_metaclassNrk   r%   r   r   r   r      rl   r   r   )r   c                       e Zd Zd Zd ZdS )pickling_metaclassc                 b    t          |           t          |          k    o| j        |j        k    S r$   )typereduce_argsr[   s     r   r]   zpickling_metaclass.__eq__   s.    T

d5kk) 6 E$55	7r   c                     t           | j        fS r$   )create_dynamic_classr   r2   s    r   rs   zpickling_metaclass.__reduce__   s    $d&677r   N)r<   r=   r>   r]   rs   r%   r   r   r   r      s2        7 7 78 8 8 8 8r   r   c                 R    t          | |t                                }| |f|_        |S r$   )r   dictr   )namebasesresults      r   r   r      s(    eTVV44FFMr   c                   D    e Zd ZdZdZdZdZd Zd ZeZ	e
d             ZdS )ZeroCopyBytesTc                     |dk    r*t          |           j        t          j        |           fd fS t          |           j        t	          |           ffS N   r   _reconstructr   PickleBufferbytesr.   protocols     r   __reduce_ex__zZeroCopyBytes.__reduce_ex__   K    q==::*V-@-F-F,H$NN::*U4[[N::r   c                 \    d                     | j        j        t          |                     S Nz{}({!r})format	__class__r<   r   r2   s    r   __repr__zZeroCopyBytes.__repr__   #      !8%++FFFr   c                     t          |          5 }|j        }t          |          | u r|cd d d            S  | |          cd d d            S # 1 swxY w Y   d S r$   
memoryviewobjr   clsr   ms      r   r   zZeroCopyBytes._reconstruct       __ 	 %CCyyC		  	  	  	  	  	  	  	  s3xx	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    A
AAANr<   r=   r>   readonlyc_contiguousf_contiguouszero_copy_reconstructr   r   __str__classmethodr   r%   r   r   r   r      sj        HLL ; ; ;G G G G    [     r   r   c                   D    e Zd ZdZdZdZdZd Zd ZeZ	e
d             ZdS )ZeroCopyBytearrayFTc                     |dk    r*t          |           j        t          j        |           fd fS t          |           j        t	          |           ffS r   r   r   s     r   r   zZeroCopyBytearray.__reduce_ex__   r   r   c                 \    d                     | j        j        t          |                     S r   r   r2   s    r   r   zZeroCopyBytearray.__repr__   r   r   c                     t          |          5 }|j        }t          |          | u r|cd d d            S  | |          cd d d            S # 1 swxY w Y   d S r$   r   r   s      r   r   zZeroCopyBytearray._reconstruct   r   r   Nr   r%   r   r   r   r      sj        HLL ; ; ;G G G G    [     r   r   c                       e Zd ZdZd Zd Zed             Zed             Zed             Z	d Z
d Zd	 Zd
 Zed             ZdS )PicklableNDArrayFc                 2    t          j        |i || _        d S r$   )_testbufferndarrayarrayr.   r/   kwargss      r   rH   zPicklableNDArray.__init__	  s    $,d=f==DJJJr   c                 r    t          |           }|                    |          }| j        |         |_        |S r$   )r   __new__r   )r.   idxr   news       r   __getitem__zPicklableNDArray.__getitem__  s0    t**C++c""C
3CIJr   c                     | j         j        S r$   )r   r   r2   s    r   r   zPicklableNDArray.readonly  s    :&&r   c                     | j         j        S r$   )r   r   r2   s    r   r   zPicklableNDArray.c_contiguous      :**r   c                     | j         j        S r$   )r   r   r2   s    r   r   zPicklableNDArray.f_contiguous  r   r   c                 r   t          |t                    st          S |j        j        | j        j        k    o|j        j        | j        j        k    og|j        j        | j        j        k    oM|j        j        | j        j        k    o3|j                                        | j                                        k    S r$   )	
isinstancer   NotImplementedr   r   shapestridesr   tobytesr[   s     r   r]   zPicklableNDArray.__eq__  s    e%566 &%%K&$**;; BK%)99BK'4:+==B K(DJ,??B K''))TZ-?-?-A-AA	Cr   c                 H    t          |t                    st          S | |k     S r$   )r   r   r   r[   s     r   __ne__zPicklableNDArray.__ne__'  s(    e%566 &%%&&r   c                     t          |            d| j        j         d| j        j         d| j                                         dS )Nz(shape=z	,strides=z, bytes=))r   r   r   r   r   r2   s    r   r   zPicklableNDArray.__repr__,  s]    Dzz 5 5$**: 5 5#z15 5!Z//115 5 5 6r   c                    | j         j        st          d          | j         j        | j         j        | j         j        | j        rdnt          j        d}t          j
        | j                   }|dk    rt          |           j        ||ffS |                                5 }t          |           j        |                                |ffcd d d            S # 1 swxY w Y   d S )Nz>Reconstructing a non-contiguous ndarray does not seem possibler   )r   r   r   flagsr   )r   
contiguousr,   r   r   r   r   r   ND_WRITABLEr   r   r   r   rawr   )r.   r   ndarray_kwargspbr   s        r   r   zPicklableNDArray.__reduce_ex__1  s3   :( L) +K L L L'+z'7)-);(,
(9-1] )E-8-D	G GN
 $TZ00B1}}T

/^,. . VVXX ; JJ3YY[[.9;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   *CCCc                     t          |          5 }t          |                                          }d d d            n# 1 swxY w Y    | |fi |S r$   )r   listr   )r   r   r   r   itemss        r   r   zPicklableNDArray._reconstructD  s    C *A QYY[[))* * * * * * * * * * * * * * * 3u'''''s   ">AAN)r<   r=   r>   r   rH   r   propertyr   r   r   r]   r   r   r   r   r   r%   r   r   r   r     s         !&	> 	> 	>	 	 	 
	' 	' 
	' 
	+ 	+ 
	+ 
	+ 	+ 
	+	C 	C 	C	' 	' 	'
	6 	6 	6
	; 	; 	;& 
	( 	( 
	( 	( 	(r   r   s;  (lp0
L0L
aL1L
aF2.0
ac__builtin__
complex
p1
(F3.0
F0.0
tp2
Rp3
aL1L
aL-1L
aL255L
aL-255L
aL-256L
aL65535L
aL-65535L
aL-65536L
aL2147483647L
aL-2147483647L
aL-2147483648L
a(Vabc
p4
g4
ccopy_reg
_reconstructor
p5
(c__main__
C
p6
c__builtin__
object
p7
Ntp8
Rp9
(dp10
Vfoo
p11
L1L
sVbar
p12
L2L
sbg9
tp13
ag13
aL5L
a.an      0: (    MARK
    1: l        LIST       (MARK at 0)
    2: p    PUT        0
    5: L    LONG       0
    9: a    APPEND
   10: L    LONG       1
   14: a    APPEND
   15: F    FLOAT      2.0
   20: a    APPEND
   21: c    GLOBAL     '__builtin__ complex'
   42: p    PUT        1
   45: (    MARK
   46: F        FLOAT      3.0
   51: F        FLOAT      0.0
   56: t        TUPLE      (MARK at 45)
   57: p    PUT        2
   60: R    REDUCE
   61: p    PUT        3
   64: a    APPEND
   65: L    LONG       1
   69: a    APPEND
   70: L    LONG       -1
   75: a    APPEND
   76: L    LONG       255
   82: a    APPEND
   83: L    LONG       -255
   90: a    APPEND
   91: L    LONG       -256
   98: a    APPEND
   99: L    LONG       65535
  107: a    APPEND
  108: L    LONG       -65535
  117: a    APPEND
  118: L    LONG       -65536
  127: a    APPEND
  128: L    LONG       2147483647
  141: a    APPEND
  142: L    LONG       -2147483647
  156: a    APPEND
  157: L    LONG       -2147483648
  171: a    APPEND
  172: (    MARK
  173: V        UNICODE    'abc'
  178: p        PUT        4
  181: g        GET        4
  184: c        GLOBAL     'copy_reg _reconstructor'
  209: p        PUT        5
  212: (        MARK
  213: c            GLOBAL     '__main__ C'
  225: p            PUT        6
  228: c            GLOBAL     '__builtin__ object'
  248: p            PUT        7
  251: N            NONE
  252: t            TUPLE      (MARK at 212)
  253: p        PUT        8
  256: R        REDUCE
  257: p        PUT        9
  260: (        MARK
  261: d            DICT       (MARK at 260)
  262: p        PUT        10
  266: V        UNICODE    'foo'
  271: p        PUT        11
  275: L        LONG       1
  279: s        SETITEM
  280: V        UNICODE    'bar'
  285: p        PUT        12
  289: L        LONG       2
  293: s        SETITEM
  294: b        BUILD
  295: g        GET        9
  298: t        TUPLE      (MARK at 172)
  299: p    PUT        13
  303: a    APPEND
  304: g    GET        13
  308: a    APPEND
  309: L    LONG       5
  313: a    APPEND
  314: .    STOP
highest protocol among opcodes = 0
s   ]q (K KG@       c__builtin__
complex
q(G@      G        tqRqKJKJJ MJ J  JJ  J   (X   abcqhccopy_reg
_reconstructor
q(c__main__
C
qc__builtin__
object
qNtqRq	}q
(X   fooqKX   barqKubh	tqhKe.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 (K KG@       c__builtin__
complex
qG@      G        qRqKJKJJ MJ J  JJ  J   (X   abcqhc__main__
C
q)q}q(X   fooqKX   barq	Kubhtq
h
Ke.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 (K KG@       cbuiltins
complex
qG@      G        qRqKJKJJ MJ J  JJ  J   (X   abcqhc__main__
C
q)q}q(X   barqKX   fooq	Kubhtq
h
Ke.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          ](K KG@       builtinscomplexG@      G        RKJKJJ MJ J  JJ  J   (abch__main__C)}(barKfooKubh
thKe.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(KKeqRq.s%   c__builtin__
xrange
q K KKqRq.s   cCookie
SimpleCookie
q )qUkeyqcCookie
Morsel
q)q(UcommentqU qUdomainqhUsecureqhUexpiresq	hUmax-ageq
hUversionqhUpathqhUhttponlyqhu}q(Ucoded_valueqUvalueqhhhhubs}qb.s"   c__builtin__
set
q ]qKaqRq.s   cexceptions
?
q )Rq.sI   cexceptions
UnicodeEncodeError
q (UasciiqX   fooqK KUbadqtqRq.c                  :   t                      } d| _        d| _        g d}d}d}d}|                    dd|| | dz
  || | dz
  || | dz
  g           dd| | f}|                    |           |                    |           |                    d	           |S )
Nr      )r   r   g       @y      @             abcr   )rX   foobarextendappend)cr'   uint1maxuint2maxint4maxys         r   create_datar   ,  s    	AAEAEA HHGHHa	H9Q;	H9Q;'WHQJ0 1 1 1 
q!AHHQKKKHHQKKKHHQKKKHr   c                      e Zd Z e            Zd/dZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zed             Zed             Zd Zd Zd Zd Zd Zed             Zed             Zed             Z d Z!d Z"d Z#d  Z$d! Z%ed"             Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1e2j3         e2j4                    d.                         Z5dS )0AbstractUnpickleTestsNc           	         |d                     ||          }|                     |||           |                     t          |          t          |          |           t	          |d          rD|                     |j        |j        |           |                     |j        |j        |           t	          |d          r|                     |j	        |j	        |           |j	        D ]n}|                     t	          ||          t	          ||          |           |                     t          ||d          t          ||d          |           mdS dS )zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r})msgrZ   	__slots__)r   assertEqualassertIsr   hasattrassertDictEqualrZ   assertIsNotassertListEqualr   getattr)r.   r   objcopyr   slots        r   assert_is_copyz$AbstractUnpickleTests.assert_is_copyF  s    ;.55c7CCCg3///d3iigC8883
## 	F  w/?S IIIS\7+;EEE3$$ 	H  0As KKK H H  C&&(>(>C ! I I I  dD!9!9!($!=!=3 ! H H H H	H 	HH Hr   c           
      x   |                      |          5  |                     |          5  	 |                     |           nE# t          $ r8}t          j        dk    r"t          |dd|j        j        d|            d }~ww xY w	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)datar   32z - z: )	subTestassertRaisesloadsBaseExceptionr   verboseprintr   r<   )r.   errorsr  excs       r   check_unpickling_errorz,AbstractUnpickleTests.check_unpickling_errorX  sb   \\t\$$ 	 	v&&	 	

4        ?Q&&444!7!7!7> ? ? ?	 !	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sW   B/BAB
B3BBBB/B	B/B	B//B36B3c                 l    |                      | j        |                     t                               d S r$   )r   	_testdatar  DATA0r2   s    r   test_load_from_data0z*AbstractUnpickleTests.test_load_from_data0c  ,    DNDJJu,=,=>>>>>r   c                 l    |                      | j        |                     t                               d S r$   )r   r  r  DATA1r2   s    r   test_load_from_data1z*AbstractUnpickleTests.test_load_from_data1f  r  r   c                 l    |                      | j        |                     t                               d S r$   )r   r  r  DATA2r2   s    r   test_load_from_data2z*AbstractUnpickleTests.test_load_from_data2i  r  r   c                 l    |                      | j        |                     t                               d S r$   )r   r  r  DATA3r2   s    r   test_load_from_data3z*AbstractUnpickleTests.test_load_from_data3l  r  r   c                 l    |                      | j        |                     t                               d S r$   )r   r  r  DATA4r2   s    r   test_load_from_data4z*AbstractUnpickleTests.test_load_from_data4o  r  r   c                    t           dft          dft          dffD ]\  }}|j                            d          }	 d                    d|          }|                      || |                     |                     	 d                    d|          }|                      || |                     |                     	 d                    d|          }|                      || |                     |                     d S )Nr%   r&   asciis   (i__main__
X
p0
(dp1
b.   Xs   (c__main__
X
q oq}qb.s   (c__main__
X
q oq}qb.)rX   r_   re   r<   encodereplacer   r  )r.   Xr/   xnamepickle0pickle1pickle2s          r   test_load_classic_instancez0AbstractUnpickleTests.test_load_classic_instancer  s'    B!Vq"g6 4	? 4	?GAtJ%%g..E	# %,GD%$8$8  4$**W*=*=>>>
./6wtU/C/C  4$**W*=*=>>>./6wtU/C/C  4$**W*=*=>>>>i4	? 4	?r   c                 6   d}dt          |                              d          z   dz   }|                     |          }|                     ||           dt          |                              d          z   dz   }|                     t
          |           d S )Nl       Ir     
.s   JUNK
.)ry   r   r  r   r  
ValueError)r.   maxint64r  gots       r   test_maxint64z#AbstractUnpickleTests.test_maxint64  s     c(mm**7333f<jjHc*** c(mm**7333j@##J55555r   c                    |                      t                    }|                     |t          ddg                     |                      t                    }|                     t          |          t          t          d                               |                     t          |          t          t          d                               |                      t                    }|                     t          |          t                     |                     t          |
                                          dg           |                     |d         j        d           t          D ]m}t                              d|j                            d                    }|                      |          }|                     t          |          |           n|                      t                              dd	                    }|                     t          |          t$                     |                      t&                    }|                     t          |          t(                     |                     |j        d
           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d S )Nr   r   r   r   keyrp      ?r     StandardErrorr   bad)r  DATA_SETr   setDATA_XRANGEr   ranger   DATA_COOKIEr   keysrp   python2_exceptions_without_argsexception_pickler!  r<   r   r   	Exception
DATA_UEERRUnicodeEncodeErrorobjectencodingstartendreason)r.   loadedr
  r  s       r   test_unpickle_from_2xz+AbstractUnpickleTests.test_unpickle_from_2x  sS   H%%aV---K((ftE!HH~~666ftE!HH~~666K((f|444fkkmm,,ug666,g666 3 	- 	-C#++D#,2E2Eg2N2NOODZZ%%FMM$v,,,,,, ,44T;KLLMMd6llI...J''d6ll$6777...'222q)))Q'''.....r   c                    |                      |                     dd          d           |                      |                     dd          d           |                      |                     dd          d           d S )Ns   S'a\x00\xa0'
.r   r@  s   a s   Ua .s   Ua .r   r  r2   s    r   test_load_python2_str_as_bytesz4AbstractUnpickleTests.test_load_python2_str_as_bytes  s    $8-4 $ 6 67C	E 	E 	E 	$6-4 $ 6 67C	E 	E 	E 	$>-4 $ 6 67C	E 	E 	E 	E 	Er   c                    |                      |                     dd          d           |                      |                     dd          d           |                      |                     dd          d           d S )Ns	   V\u03c0
.r   rG  u   πs   X   π.s
   X   π.rH  r2   s    r    test_load_python2_unicode_as_strz6AbstractUnpickleTests.test_load_python2_unicode_as_str  s    N-4 $ 6 67;	= 	= 	= 	$A-4 $ 6 67;	= 	= 	= 	$I-4 $ 6 67;	= 	= 	= 	= 	=r   c           	          |                      |                     t          j        t	          j        dd          z   dz   t          j        z   d          d           d S )N<Ii,  s,  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   rG  )r   r  r   	BINSTRINGstructpackSTOPr2   s    r   #test_load_long_python2_str_as_bytesz9AbstractUnpickleTests.test_load_long_python2_str_as_bytes  st    F$4$*Kc$:$:%;$.%/17%= .5 $ 6 6 8B	C 	C 	C 	C 	Cr   c                    |                      |                     d                     |                     |                     d          d           |                     |                     d          d           |                     |                     d          d           |                     |                     d          d           d S )Ns   N.s   .Ts   .Fs   I01
.s   I00
.)assertIsNoner  r   r2   s    r   test_constantsz$AbstractUnpickleTests.test_constants  s    $**U++,,,djj**D111djj**E222djj++T222djj++U33333r   c                 `    |                      dd          }|                     |d           d S )Ns   U q .zkoi8-rrG   )r  r   )r.   emptys     r   test_empty_bytestringz+AbstractUnpickleTests.test_empty_bytestring  s4    

1H
EE#####r   c                 \    d}|                      |                     |          d           d S )Ns	   C€ .   € rH  r.   dumpeds     r   test_short_binbytesz)AbstractUnpickleTests.test_short_binbytes  s0    2F++-@AAAAAr   c                 \    d}|                      |                     |          d           d S )Ns   B   € .r[  rH  r\  s     r   test_binbytesz#AbstractUnpickleTests.test_binbytes   s0    >F++-@AAAAAr   c                 X    d}|                      t          j        t          f|           d S )Ns   Bxyzq .r  r   UnpicklingErrorOverflowErrorr\  s     r   test_negative_32b_binbytesz0AbstractUnpickleTests.test_negative_32b_binbytes  8     7##V%;]$K$*	, 	, 	, 	, 	,r   c                 X    d}|                      t          j        t          f|           d S )Ns   Xxyzq .rb  r\  s     r   test_negative_32b_binunicodez2AbstractUnpickleTests.test_negative_32b_binunicode  rf  r   c                 \    d}|                      |                     |          d           d S )Ns	   € .   € rH  r\  s     r   test_short_binunicodez+AbstractUnpickleTests.test_short_binunicode  s/    5F++\:::::r   c                    |                      t          j        d           |                      t          j        d           |                      t          j        d           |                     ddg|                     d                     d S )Ns   g0
p0s   jens:s   hens:)d   s   ((Kdtp0
h l.)))r  r   rc  r   r  r2   s    r   test_misc_getz#AbstractUnpickleTests.test_misc_get  s    ##F$:IFFF##F$:HEEE##F$:HEEEVV, JJ'<==	? 	? 	? 	? 	?r   c                 \    d}|                      |                     |          d           d S )Ns          € .r[  rH  r\  s     r   test_binbytes8z$AbstractUnpickleTests.test_binbytes8  s0    AF++-@AAAAAr   c                 \    d}|                      |                     |          d           d S )Ns          € .rj  rH  r\  s     r   test_binunicode8z&AbstractUnpickleTests.test_binunicode8!  s/    AF++\:::::r   c                 v    d}|                      |                     |          t          d                     d S )Ns          xxx.s   xxx)r   r  	bytearrayr\  s     r   test_bytearray8z%AbstractUnpickleTests.test_bytearray8%  s7    DF++Yv->->?????r   c                 X    d}|                      t          j        t          f|           d S )Ns         € .rb  r\  s     r   test_large_32b_binbytes8z.AbstractUnpickleTests.test_large_32b_binbytes8)  6    A##V%;]$K$*	, 	, 	, 	, 	,r   c                 X    d}|                      t          j        t          f|           d S )Ns         € .rb  r\  s     r   test_large_32b_bytearray8z/AbstractUnpickleTests.test_large_32b_bytearray8/  rx  r   c                 X    d}|                      t          j        t          f|           d S )Ns         € .rb  r\  s     r   test_large_32b_binunicode8z0AbstractUnpickleTests.test_large_32b_binunicode85  rx  r   c                     d}|                      |          }|                     |g fdz             |                     |d         |d                    d S )Ns   ((lp100000
g100000
t.r   r   r   r  r   r   r.   pickled	unpickleds      r   test_getzAbstractUnpickleTests.test_get;  sV    ,JJw''	RE!G,,,ilIaL11111r   c                     d}|                      |          }|                     |g fdz             |                     |d         |d                    d S )Ns   (]qht.r   r   r   r~  r  s      r   test_bingetz!AbstractUnpickleTests.test_bingetA  sV    #JJw''	RE!G,,,ilIaL11111r   c                     d}|                      |          }|                     |g fdz             |                     |d         |d                    d S )Ns   (]r   j   t.r   r   r   r~  r  s      r   test_long_bingetz&AbstractUnpickleTests.test_long_bingetG  sV    ;JJw''	RE!G,,,ilIaL11111r   c                     d}|                      |          }|                     |g fdz             |                     |d         |d                    d S )Ns   ((l2t.r   r   r   r~  r  s      r   test_dupzAbstractUnpickleTests.test_dupM  sV    JJw''	RE!G,,,ilIaL11111r   c                 @    d}|                      t          |           d S )Ns   Va
p-1
.r  r+  r\  s     r   test_negative_putz'AbstractUnpickleTests.test_negative_putS  s#    ##J77777r   c                 @    d}|                      t          |           d S )Ns   X   ar.r  r\  s     r   test_negative_32b_binputz.AbstractUnpickleTests.test_negative_32b_binputX  s&     A##J77777r   c                 <    |                      t          d           d S )Ns   S'\'
.r  r2   s    r   test_badly_escaped_stringz/AbstractUnpickleTests.test_badly_escaped_string^  s    ##J<<<<<r   c                 X    g d}|D ]"}|                      t          j        |           #d S )N)s   S'
.s   S"
.s   S' 
.s   S" 
.s   S'"
.s   S"'
.s   S' ' 
.s   S" " 
.s   S ''
.s   S ""
.s   S 
.s   S
.s   S.)r  r   rc  r.   
badpicklesps      r   test_badly_quoted_stringz.AbstractUnpickleTests.test_badly_quoted_stringa  sN      
  	C 	CA''(>BBBB	C 	Cr   c                 p    g d}|D ].\  }}|                      |                     |          |           /d S )N))s   S''
.rW  )s   S""
.rW  )s   S"\n"
.
)s   S'\n'
.r  rH  )r.   goodpicklesr  expecteds       r   test_correctly_quoted_stringz2AbstractUnpickleTests.test_correctly_quoted_strings  sU    - - - ' 	6 	6KAxTZZ]]H5555	6 	6r   c                 \    d}|                      |                     |          d           d S )Ns          I42
.*   rH  )r.   r  s     r   test_frame_readlinez)AbstractUnpickleTests.test_frame_readline{  s1    G
 	G,,b11111r   c                    d}|                      |          }|                     t          |          t                     |                     |t          dd                     |                     t          |          g d           d}|                     |                      |          t          j                   d}|                     |                      |          t          j	                   dD ]j}d|z   d	z   }|                      |          }|                     t          |          t                     |                     t          |          d
           kdD ]v}d|z   dz   }|                      |          }|                     t          |          t          j                   |                     |t          j        ddi                     wd S )Ns   c__builtin__
xrange
KKKR.r      )r   r         r      s   c__builtin__
reduce
.s   cwhichdb
whichdb
.)s	   Exceptionr2  s   cexceptions
s	   
UughR.ugh)s   UserDicts   IterableUserDicts   (cUserDict
s   
o}Udata}KKssb.r   )r  r   r   r7  r   r   	functoolsreducedbmwhichdbr<  ry   collectionsUserDict)r.   r  r  r   s       r   test_compat_unpicklez*AbstractUnpickleTests.test_compat_unpickle  s   HJJw''	d9oou---E!QKK000i*<*<*<===4djj))9+;<<<1djj))3;7774 	4 	4D/$69LLG

7++IMM$y//9555S^^U33336 	F 	FD.567G

7++IMM$y//;+?@@@Y(<aV(D(DEEEE	F 	Fr   c                     |                      |                     d          d           |                     t          d           |                     t          d           d S )Ns   cbuiltins
int
)R.r   s   N)R.s   cbuiltins
int
NR.)r   r  r  	TypeErrorr2   s    r   test_bad_reducez%AbstractUnpickleTests.test_bad_reduce  sX    $:;;Q???##Iw777##I/EFFFFFr   c                     t           j        t          f}|                     |                     d          d           |                     |d           |                     |d           d S )Ns   cbuiltins
int
).r   s   cbuiltins
len
).s   cbuiltins
int
N.r   rc  r  r   r  r  r.   errors     r   test_bad_newobjz%AbstractUnpickleTests.test_bad_newobj  sf    '3$=>>BBB##E+DEEE##E+DEEEEEr   c                    t           j        t          f}|                     |                     d          d           |                     |d           |                     |d           |                     |d           d S )Ns   cbuiltins
int
)}.r   s   cbuiltins
len
)}.s   cbuiltins
int
N}.s   cbuiltins
int
)N.r  r  s     r   test_bad_newobj_exz(AbstractUnpickleTests.test_bad_newobj_ex  s}    '3$>??CCC##E+EFFF##E+EFFF##E+EFFFFFr   c                 N    g d}|D ]}|                      | j        |           d S )N),   .   0   1   2s   (2   Rs   )R   as   Na   bs   Nb   d   es   (es   ibuiltins
list
   l   os   (os   p1
s   q s   r       ss   Nss   NNs   t   us   (us   }(Nu   s   )      s   N   s   Ns   NN   s   (      s   )}   s   Vlist
   r  bad_stack_errorsr  s      r   test_bad_stackz$AbstractUnpickleTests.test_bad_stack  sO    -
 -
 -

\  	B 	BA''(=qAAAA	B 	Br   c                 N    g d}|D ]}|                      | j        |           d S )N)s   N(.s   N(2s   cbuiltins
list
)(Rs   cbuiltins
list
()Rs   ]N(as   cbuiltins
ValueError
)R}(bs   cbuiltins
ValueError
)R(}bs   (Nds   N(p1
s   N(q s   N(r    s   }NN(ss   }N(Nss   }(NNss   }((us   cbuiltins
list
)(s   cbuiltins
list
()s   N(s   NN(s   N(Ns   NNN(s   NN(Ns   N(NNs   ]((s   cbuiltins
list
)}(s   cbuiltins
list
)(}s   cbuiltins
list
()}s   Vbuiltins
(Vlist
s   Vbuiltins
Vlist
(s   N(r  r  s      r   test_bad_markz#AbstractUnpickleTests.test_bad_mark  sO    "
 "
 "

F  	B 	BA''(=qAAAA	B 	Br   c                     |                      t          d           |                      t          d           g d}|D ]}|                      | j        |           d S )Nr      N)U   Bs   B  s   B   s   B   ab   Cs   Cs   Cab   Fs   F0.0s   F0.00   Gs   G       r)  s   I0   Js   J      K   Ls   L0s   L10s   L0Ls   L10L   Ms   M    Ss   S'abc'   Ts   T  s   T   s   T   ab   Us   Us   Uab   Vs   Vabcr  s   X  s   X   s   X   abs   (cs
   (cbuiltinss   (cbuiltins
s   (cbuiltins
lists   Ngs   Ng0s   (is
   (ibuiltinss   (ibuiltins
s   (ibuiltins
lists   Nhs   Njs   Nj   s   Nps   Np0s   Nqs   Nrs   Nr            s      s           s         s   s   ab   s         s	          s          ab   s         s	          s          ab   s         s	          s          ab   s         s	          s
          N)r  EOFErrortruncated_errorsr  s      r   test_truncated_dataz)AbstractUnpickleTests.test_truncated_data	  s~    ##Hc222##Hd333X
 X
 X

r  	B 	BA''(=qAAAA	B 	Br   c                   	
 t          d          }t          d          }t          j        t                     |                     t
          j        t                     t          j        	                    dt                     |                     t          j        j
        t                     t          t          j                            t          d          d          5 }|                    |                    d                     d d d            n# 1 swxY w Y   t          t          j                            t          d          d          5 }|                    |                    d                     d d d            n# 1 swxY w Y   |                     t          d           |                     t          d	           dd l}d

g t#          j        d          		
fd}t#          j        |          }t#          j        |          }|                                 |                                 	                                 |j                                         |                                 |                                 ddlm} |                     d D             |gdz             d S )NzI
        import threading
        barrier = threading.Barrier(2)
        zs
        import locker
        locker.barrier.wait()
        class ToBeUnpickled(object):
            pass
        r   z	locker.pywbutf-8zlocking_import.pylockerlocking_imports'   clocking_import
ToBeUnpickled
q )q.r  c                  ~                                                           t          j                             d S r$   )waitr   r   r  )barrierpickle_bytesresultss   r   tz:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t  s4     LLNNNNN6<5566666r   )target)ToBeUnpickledc                 ,    g | ]}t          |          S r%   )r   .0r'   s     r   
<listcomp>zCAbstractUnpickleTests.test_unpickle_module_race.<locals>.<listcomp>  s    &&&T!WW&&&r   r   )r   osmkdirr   
addCleanupshutilrmtreesyspathinsertremoveopenjoinrG   r   r   r  	threadingBarrierThreadrA  r  r  r  r  r   )r.   locker_modulelocking_import_modulefr  r  t1t2r  r  r  r  s            @@@r   test_unpickle_module_racez/AbstractUnpickleTests.test_unpickle_module_raceh  s         !' ( ! ! 	v...6"""000"',,v{33T:: 	3aGGM((11222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3"',,v':;;TBB 	;aGG)0099:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;))) 0111 H 	 #A&&	7 	7 	7 	7 	7 	7 	7 Q'''Q'''








			
			000000&&g&&&Oa	! 	! 	! 	! 	!s$   ")DDD)F

FFr$   )6r<   r=   r>   r   r  r   r  r  r  r  r  r  r'  r.  rE  rI  rK  rR  rU  rY  r^  r`  requires_32bre  rh  rk  rn  rp  rr  ru  rw  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   reap_threadsrequires_working_threadingr  r%   r   r   r   r   A  sm        IH H H H$	 	 	? ? ?? ? ?? ? ?? ? ?? ? ?7? 7? 7?r6 6 6/ / /<	E 	E 	E	= 	= 	=C C C4 4 4$ $ $
B B BB B B , , \, , , \,; ; ;? ? ?B B B; ; ;@ @ @ , , \,
 , , \,
 , , \,
2 2 22 2 22 2 22 2 28 8 8
 8 8 \8
= = =C C C$6 6 62 2 2F F F6G G G
F F FG G G0B 0B 0Bd%B %B %BN]B ]B ]B~ "00229! 9! 32 #"9! 9! 9!r   r   c                      e Zd ZdZej        Zd Zej        Zd Zd Z	d Z
edfdZd Zd	 Zd
 ZedfdZd Zd Zd ZedfdZd Zd Zd ZedfdZd Zd Zd ZedfdZd Zd Zd ZedfdZ d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z; e<d7d8d9          d:             Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcedda             Zedb Zfdc Zgdd Zhde Zidf Zjdg Zkdh Zldi Zmdj ZndkZodlZpdm Zqerjs        dn             Ztdo Zudp Zverjs        dq             Zwdr Zxds Zydt Zzdu Z{dv Z|dw Z}dx Z~dy Zdz Zd{ Zd| Zd} Zd~ Zd Z ej        edu d          d             Zd Zd ZdS )AbstractPickleTestsFc                     d S r$   r%   r2   s    r   setUpzAbstractPickleTests.setUp  rb   r   c                    t           D ]}t          d          }|                     ||          }|                     |          }|                     ||           d}|                     ||          }|                     |          }|                     ||           t          d|          }|                     ||          }|                     |          }|                     ||           d S )Nr  )r   r%   r   )	protocolsrv   dumpsr  r   r{   r.   protor'   sr   s        r   	test_misczAbstractPickleTests.test_misc  s     	& 	&EaA

1e$$A

1A1%%%A

1e$$A

1A1%%%1A

1e$$A

1A1%%%%	& 	&r   c                     | j         }t          D ]C}|                     ||          }|                     |          }|                     ||           Dd S r$   )r  r  r  r  r   )r.   r  r  r  r-  s        r   test_roundtrip_equalityz+AbstractPickleTests.test_roundtrip_equality  s]    > 	/ 	/E

8U++A**Q--C#....	/ 	/r   c                    ddl m} ddlm} dt          fdt
          ffD ]a\  }}|                     | j        |          } |            } |||           |                                }| 	                    ||           bd S )Nr   )StringIOdisr   )out)
r6   r#  r   r%  	DATA0_DIS	DATA1_DISr  r  rD   r   )r.   r#  r%  r  r  r  fileliker-  s           r   dont_test_disassemblyz)AbstractPickleTests.dont_test_disassembly  s    ###### !9~9~= 	, 	,OE8

4>511AxzzHCx    ##%%CXs++++	, 	,r   r   c                     |            }|                     |           t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     ||            ||          }|                     t          |          d           | 	                    |d         |           d S Nr   r   )
r   r7  r   HIGHEST_PROTOCOLr  r  assertIsInstancer   lenr   )	r.   r   aslistminprotocollr  r  r'   r   s	            r   _test_recursive_listz(AbstractPickleTests._test_recursive_list  s    CEE	;(?!(CDD 	# 	#E

1e$$A

1A!!!S)))q		ASVVQ'''MM!A$""""	# 	#r   c                 :    |                      t                     d S r$   )r3  r   r2   s    r   test_recursive_listz'AbstractPickleTests.test_recursive_list      !!$'''''r   c                 >    |                      t          d           d S Nr   )r1  )r3  MyListr2   s    r   test_recursive_list_subclassz0AbstractPickleTests.test_recursive_list_subclass  !    !!&a!88888r   c                 @    |                      t          d            d S )Nc                     | j         S r$   r   r&   s    r   <lambda>z>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>  s    AG r   r0  )r3  REX_sixr2   s    r   test_recursive_list_likez,AbstractPickleTests.test_recursive_list_like  s%    !!'2C2C!DDDDDr   c                 :    |            f}|d                              |           t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     |t                     |                     t          |          d           |                     |d         |            ||d                   }|                     t          |          d           | 
                    |d         |           |\  }t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     ||            ||          }|                     t          |          d           |                     |d         t                     |                     t          |d                   d           | 
                    |d         d         |           d S rM   )r   r7  r   r-  r  r  r.  tupler   r/  r   )	r.   r   r0  r1  r  r  r  r'   r   s	            r   _test_recursive_tuple_and_listz2AbstractPickleTests._test_recursive_tuple_and_list  s   SUUH	!A;(?!(CDD 	# 	#E

1e$$A

1A!!!U+++SVVQ'''!!!A$,,,qtASVVQ'''MM!A$"""" ;(?!(CDD 	& 	&E

1e$$A

1A!!!S)))q		ASVVQ'''!!!A$...S1YY***MM!A$q'1%%%%	& 	&r   c                 :    |                      t                     d S r$   )rE  r   r2   s    r   test_recursive_tuple_and_listz1AbstractPickleTests.test_recursive_tuple_and_list      ++D11111r   c                 >    |                      t          d           d S r8  )rE  r9  r2   s    r   &test_recursive_tuple_and_list_subclassz:AbstractPickleTests.test_recursive_tuple_and_list_subclass  !    ++F+BBBBBr   c                 @    |                      t          d            d S )Nc                     | j         S r$   r>  r&   s    r   r?  zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>  s    ag r   r@  )rE  rA  r2   s    r   "test_recursive_tuple_and_list_likez6AbstractPickleTests.test_recursive_tuple_and_list_like  s%    ++G<M<M+NNNNNr   c                     |            }||d<   t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     ||            ||          }|                     t          |                                          dg           | 	                    |d         |           d S Nr   )
r7  r   r-  r  r  r.  r   r   r9  r   	r.   r   asdictr1  dr  r  r'   r   s	            r   _test_recursive_dictz(AbstractPickleTests._test_recursive_dict  s    CEE!;(?!(CDD 	# 	#E

1e$$A

1A!!!S)))q		AT!&&((^^aS111MM!A$""""	# 	#r   c                 :    |                      t                     d S r$   )rT  r   r2   s    r   test_recursive_dictz'AbstractPickleTests.test_recursive_dict#  r6  r   c                 >    |                      t          d           d S r8  )rT  MyDictr2   s    r   test_recursive_dict_subclassz0AbstractPickleTests.test_recursive_dict_subclass&  r;  r   c                 @    |                      t          d            d S )Nc                     | j         S r$   tabler&   s    r   r?  z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>*  s    ag r   rR  )rT  	REX_sevenr2   s    r   test_recursive_dict_likez,AbstractPickleTests.test_recursive_dict_like)  s%    !!)4E4E!FFFFFr   c                     |            f}||d         d<   t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     |t                     |                     t          |          d           |                     |d         |            ||d                   }|                     t          |          dg           | 
                    |d         |           |\  }t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     ||            ||          }|                     t          |          dg           |                     |d         t                     |                     t          |d                   d           | 
                    |d         d         |           d S rM   )r7  r   r-  r  r  r.  rD  r   r/  r   r   	r.   r   rR  r1  r  r  r  r'   r   s	            r   _test_recursive_tuple_and_dictz2AbstractPickleTests._test_recursive_tuple_and_dict,  s   SUUH!Q;(?!(CDD 	# 	#E

1e$$A

1A!!!U+++SVVQ'''!!!A$,,,qtAT!WWqc***MM!A$"""" ;(?!(CDD 	& 	&E

1e$$A

1A!!!S)))q		AT!WWqc***!!!A$...S1YY***MM!A$q'1%%%%	& 	&r   c                 :    |                      t                     d S r$   )rc  r   r2   s    r   test_recursive_tuple_and_dictz1AbstractPickleTests.test_recursive_tuple_and_dictF  rH  r   c                 >    |                      t          d           d S r8  )rc  rX  r2   s    r   &test_recursive_tuple_and_dict_subclassz:AbstractPickleTests.test_recursive_tuple_and_dict_subclassI  rK  r   c                 @    |                      t          d            d S )Nc                     | j         S r$   r\  r&   s    r   r?  zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>M  s     r   r^  )rc  r_  r2   s    r   "test_recursive_tuple_and_dict_likez6AbstractPickleTests.test_recursive_tuple_and_dict_likeL  s%    ++I>O>O+PPPPPr   c                     |            }d|t          |          <   t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     ||            ||          }|                     t          |	                                          d           |                     t          |	                                          d         t                      |                     t          |	                                          d         j        |           d S r,  )rn   r7  r   r-  r  r  r.  r   r/  r9  r   r   rp   rQ  s	            r   _test_recursive_dict_keyz,AbstractPickleTests._test_recursive_dict_keyO  s    CEE!A$$;(?!(CDD 	6 	6E

1e$$A

1A!!!S)))q		AS]]A...!!$qvvxx.."3Q777MM$qvvxx..+115555	6 	6r   c                 :    |                      t                     d S r$   )rl  r   r2   s    r   test_recursive_dict_keyz+AbstractPickleTests.test_recursive_dict_key]  s    %%d+++++r   c                 >    |                      t          d           d S r8  )rl  rX  r2   s    r    test_recursive_dict_subclass_keyz4AbstractPickleTests.test_recursive_dict_subclass_key`  s!    %%f!%<<<<<r   c                 @    |                      t          d            d S )Nc                     | j         S r$   r\  r&   s    r   r?  zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>d  s    !' r   r^  )rl  r_  r2   s    r   test_recursive_dict_like_keyz0AbstractPickleTests.test_recursive_dict_like_keyc  s%    %%i8I8I%JJJJJr   c                 4    |            f}d|d         t          |          <   t          |t          j        dz             D ]<}|                     ||          }|                     |          }|                     |t                     |                     t          |          d           |                     |d         |            ||d                   }|                     t          |          d           |                     t          |                                          d         t                      |                     t          |                                          d         j        |           >|\  }t          |t          j        dz             D ]}|                     ||          }|                     |          }|                     ||            ||          }|                     t          |          d           |                     t          |                                          d         t                      |                     t          |                                          d         j        d         |           d S r,  )rn   r7  r   r-  r  r  r.  rD  r   r/  r   r9  r   rp   rb  s	            r   "_test_recursive_tuple_and_dict_keyz6AbstractPickleTests._test_recursive_tuple_and_dict_keyf  s&    SUUH!QqTT
;(?!(CDD 		6 		6E

1e$$A

1A!!!U+++SVVQ'''!!!A$,,,qtASVVQ'''!!$qvvxx.."3Q777MM$qvvxx..+115555 ;(?!(CDD 	9 	9E

1e$$A

1A!!!S)))q		ASVVQ'''!!$qvvxx.."3Q777MM$qvvxx..+1!4a8888	9 	9r   c                 :    |                      t                     d S r$   )ru  r   r2   s    r   !test_recursive_tuple_and_dict_keyz5AbstractPickleTests.test_recursive_tuple_and_dict_key  s    //55555r   c                 >    |                      t          d           d S r8  )ru  rX  r2   s    r   *test_recursive_tuple_and_dict_subclass_keyz>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_key  s!    //A/FFFFFr   c                 @    |                      t          d            d S )Nc                     | j         S r$   r\  r&   s    r   r?  zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>  s    AG r   r^  )ru  r_  r2   s    r   &test_recursive_tuple_and_dict_like_keyz:AbstractPickleTests.test_recursive_tuple_and_dict_like_key  s%    //	BSBS/TTTTTr   c                    t                      }|                    t          |                     t          dt          j        dz             D ]}|                     ||          }|                     |          }|                     |t                      | 	                    t          |          d           |                     t          |          d         t                     |                     t          |          d         j        |           |\  }t          dt          j        dz             D ]}|                     ||          }|                     |          }|                     |t                     |                     |j        t                      | 	                    t          |j                  d           |                     t          |j                  d         |           d S )Nr  r   r   )r5  addrn   r7  r   r-  r  r  r.  r   r/  r   r   rp   r.   r   r  r  r'   s        r   test_recursive_setz&AbstractPickleTests.test_recursive_set  s   EE	add1f59:: 	/ 	/E

1e$$A

1A!!!S)))SVVQ'''!!$q''!*a000MM$q''!**A.... 1f59:: 	/ 	/E

1e$$A

1A!!!Q'''!!!'3///S\\1---MM$qw--*A....	/ 	/r   c                 f   t                      }||_        t          D ]}|                     ||          }|                     |          }|                     |t                      |                     t          |          t          |                     |                     |j        |           d S r$   )	rj   attrr  r  r  r.  r   dirr   )r.   ir  r  r'   s        r   test_recursive_instz'AbstractPickleTests.test_recursive_inst  s    HH 	% 	%E

1e$$A

1A!!!V,,,SVVSVV,,,MM!&!$$$$	% 	%r   c                    g }d|i}t                      }||_        |                    |           t          D ]
}|                     ||          }|                     |          }|                     |t                     |                     t          |          d           |                     t          |d                   t          |                     |                     t          |d         j                                                  dg           |                     |d         j        d         |           d S r,  )rj   r  r   r  r  r  r.  r   r   r/  r  r9  r   )r.   r2  rS  r  r  r  r'   s          r   test_recursive_multiz(AbstractPickleTests.test_recursive_multi  s   qEHH	 	+ 	+E

1e$$A

1A!!!T***SVVQ'''S1YYA///T!A$).."2"233aS999MM!A$)A,****	+ 	+r   c                    t                      } ||g          |_        t          |j                  }t          D ]}|                     ||          }|                     |          }|                     |j        |           |                     t          |j                  d           |                     t          |j                  d         t                      | 
                    t          |j                  d         |           |j        }t          D ]}|                     ||          }|                     |          }|                     ||           |                     t          |          d           |                     t          |          d         t                      | 
                    t          |          d         j        |           d S r,  )rj   r  r   r  r  r  r.  r   r/  r   r   )r.   factoryor  r  r  r'   s          r   #_test_recursive_collection_and_instz7AbstractPickleTests._test_recursive_collection_and_inst  s    HH!LL 	. 	.E

1e$$A

1A!!!&!,,,S[[!,,,!!$qv,,q/6:::MM$qv,,q/1---- F 	. 	.E

1e$$A

1A!!!Q'''SVVQ'''!!$q''!*f555MM$q''!*/1----	. 	.r   c                 :    |                      t                     d S r$   )r  r   r2   s    r   test_recursive_list_and_instz0AbstractPickleTests.test_recursive_list_and_inst  s    0066666r   c                 :    |                      t                     d S r$   )r  rD  r2   s    r   test_recursive_tuple_and_instz1AbstractPickleTests.test_recursive_tuple_and_inst      0077777r   c                 D    |                      t          j                   d S r$   )r  r   fromkeysr2   s    r   test_recursive_dict_and_instz0AbstractPickleTests.test_recursive_dict_and_inst  s    00?????r   c                 :    |                      t                     d S r$   )r  r5  r2   s    r   test_recursive_set_and_instz/AbstractPickleTests.test_recursive_set_and_inst  s    0055555r   c                 :    |                      t                     d S r$   )r  	frozensetr2   s    r   !test_recursive_frozenset_and_instz5AbstractPickleTests.test_recursive_frozenset_and_inst  s    00;;;;;r   c                 :    |                      t                     d S r$   )r  r9  r2   s    r   %test_recursive_list_subclass_and_instz9AbstractPickleTests.test_recursive_list_subclass_and_inst  s    0088888r   c                 :    |                      t                     d S r$   )r  MyTupler2   s    r   &test_recursive_tuple_subclass_and_instz:AbstractPickleTests.test_recursive_tuple_subclass_and_inst  s    0099999r   c                 D    |                      t          j                   d S r$   )r  rX  r  r2   s    r   %test_recursive_dict_subclass_and_instz9AbstractPickleTests.test_recursive_dict_subclass_and_inst  s    00AAAAAr   c                 :    |                      t                     d S r$   )r  MySetr2   s    r   $test_recursive_set_subclass_and_instz8AbstractPickleTests.test_recursive_set_subclass_and_inst  r  r   c                 :    |                      t                     d S r$   )r  MyFrozenSetr2   s    r   *test_recursive_frozenset_subclass_and_instz>AbstractPickleTests.test_recursive_frozenset_subclass_and_inst  s    00=====r   c                    t                      }||_        t          D ]c}|                     ||          }|                     |          }|                     |t                      |                     |j        |           dd S r$   )	REX_statestater  r  r  r.  r   r  s        r   test_recursive_inst_statez-AbstractPickleTests.test_recursive_inst_state  s|    KK 	& 	&E

1e$$A

1A!!!Y///MM!'1%%%%		& 	&r   c                 "   t                      f}||d         _        t          D ]}|                     ||          }|                     |          }|                     |t                     |                     t          |          d           |                     |d         t                      | 	                    |d         j        |           |\  }t          D ]}|                     ||          }|                     |          }|                     |t                      |                     |j        t                     |                     t          |j                  d           | 	                    |j        d         |           d S rM   )
r  r  r  r  r  r.  rD  r   r/  r   )r.   r  r  r  r'   s        r   #test_recursive_tuple_and_inst_statez7AbstractPickleTests.test_recursive_tuple_and_inst_state  s_   [[N!
 	) 	)E

1e$$A

1A!!!U+++SVVQ'''!!!A$	222MM!A$*a((((  	) 	)E

1e$$A

1A!!!Y///!!!'5111S\\1---MM!'!*a((((	) 	)r   c                     g d}t           D ]H}|D ]C}|                     ||          }|                     |          }|                     ||           DId S )N)rW  z<\u>u   <\ሴ>z<
>z<\>u   <\𒍅>u   <>r  r  r  r   )r.   endcasesr  ur  u2s         r   test_unicodez AbstractPickleTests.test_unicode  s}           	+ 	+E + +JJq%((ZZ]]##Ar****+	+ 	+r   c                     d}t           D ]C}|                     ||          }|                     |          }|                     ||           Dd S )Nu   𒍅r  )r.   r  r  r  r  s        r   test_unicode_high_planez+AbstractPickleTests.test_unicode_high_plane  s[     	' 	'E

1e$$AAB2&&&&	' 	'r   c                    t           D ]}dD ]A}|                     ||          }|                     ||                     |                     Bd t	          d          D             D ]A}|                     ||          }|                     ||                     |                     Bd t	          d          D             D ]A}|                     ||          }|                     ||                     |                     Bd S )Nr      xyzs,  xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzc                 .    g | ]}t          |g          S r%   r   r  r  s     r   r  z2AbstractPickleTests.test_bytes.<locals>.<listcomp>)  s     555QeQCjj555r      c                 0    g | ]}t          ||g          S r%   r  r  s     r   r  z2AbstractPickleTests.test_bytes.<locals>.<listcomp>,  s"    888eQFmm888r   )r  r  r   r  r7  )r.   r  r  r  s       r   
test_byteszAbstractPickleTests.test_bytes$  s    		6 		6E, 6 6JJq%((##Atzz!}}555555%**555 6 6JJq%((##Atzz!}}555588U3ZZ888 6 6JJq%((##Atzz!}}55556		6 		6r   c                    t           D ]M}dD ]F}t          |          }|                     ||          }|                     |          }|                     ||           |                     ||           |dk    rD|                     d|           |                     t          t          j
        |                     |dk    rD|                     d|           |                     t          t          j        |                     |dk    rC|                     d|           |                     t          t          j        |                     HOd S )Nr  r  s	   bytearrayr  r   )r  rt  r  r  r   r   assertIn
assertTruer   r   GLOBALSTACK_GLOBALassertNotIn
BYTEARRAY8)r.   r  r  r   r  bbs         r   test_bytearrayz"AbstractPickleTests.test_bytearray0  sN    	L 	LE, L LaLLJJq%((ZZ]]  Q'''##Ar***A::MM,222OO$4V]A$F$FGGGGaZZMM,222OO$4V5H!$L$LMMMMaZZ$$\1555OO$4V5F$J$JKKKL	L 	Lr   c                     t           D ]\}dD ]W}t          |          }|                     ||f|          }|                     |          \  }}|                     ||           X]d S )Nr  )r  rt  r  r  r   )r.   r  r  r   r  b1b2s          r   test_bytearray_memoization_bugz2AbstractPickleTests.test_bytearray_memoization_bugC  s{     	& 	&E, & &aLLJJ1vu--ABb"%%%%	&	& 	&r   c                     t           D ]`}t          j        }|rP| |fD ]C}|                     ||          }|                     |          }|                     ||           D|dz	  }|Pad S rP  )r  r  maxsizer  r  r   )r.   r  r!   r  r  n2s         r   	test_intszAbstractPickleTests.test_intsK  s     	 	EA "#Q 6 6H

8U33AAB''"5555F  	 	r   c                    t           D ]c}dD ]^}d|z  }|dz
  ||dz   fD ]K}|| fD ]C}|                     ||          }|                     |          }|                     ||           DL_dt	          dd          }||dz  z  }|| fD ]k}|                     |d          }|                     |          }|                     t          |          t                     |                     ||           ld S )N)r      i  i     i  r   deadbeeffeedface   i@B r   )r  r  r  r   intr   r   r   )	r.   r  nbitsnbasenposr!   r   r-  r  s	            r   	test_longzAbstractPickleTests.test_longU  s?    	4 	4E9 4 4U
!!GUE!G3 4 4D!D5[ 4 4!%Au!5!5"jj00++As3333444 &++'!! 	% 	%A

1a  A**Q--C MM$s))S)))Q$$$$	% 	%r   c                     g d}|d |D             z   }t           D ]H}|D ]C}|                     ||          }|                     |          }|                     ||           DId S )N)g        g       g+ph  gZ*) g_D9g?g      ?gQ	@gm"wp@gWTDgꌠ9Y>)Fc                     g | ]}| S r%   r%   r  s     r   r  z2AbstractPickleTests.test_float.<locals>.<listcomp>o  s    $=$=$=AaR$=$=$=r   r  )r.   test_valuesr  rp   r   r-  s         r   
test_floatzAbstractPickleTests.test_floatl  s    A A A!$=$=$=$=$== 	0 	0E$ 0 0E511jj((##E3////0	0 	0r   LC_ALLde_DEfr_FRc                 j    |                      |                     dd          dd         d           d S )Ng333333?r   r  s   F1.)r   r  r2   s    r   test_float_formatz%AbstractPickleTests.test_float_formatv  s7     	C++AaC0&99999r   c                     t           D ]V}t                      }|                     ||          }|                     |          }|                     |t
                     Wd S r$   )r  AAAr  r  r   REDUCE_Ar.   r  instr]  rD  s        r   test_reducezAbstractPickleTests.test_reduce{  sa     	/ 	/E55DZZe,,FZZ''FVX....		/ 	/r   c                     t           D ]S}t          dd          }|                     ||          }|                     |          }|                     ||           Td S )Nr   r   )r  r{   r  r  r   r  s        r   test_getinitargsz$AbstractPickleTests.test_getinitargs  se     	. 	.E1a==DZZe,,FZZ''Ff----		. 	.r   c                     t                      }t          D ]M}|                     ||          }|                     |          }|                     |j        |j                   Nd S r$   )r   r  r  r  r   r   r.   r~   r  r  r   s        r   test_metaclassz"AbstractPickleTests.test_metaclass  sc    OO 	7 	7E

1e$$A

1AQ[!+6666	7 	7r   c                 p   t          dt          f          }t          j        t          t          j                   t          D ]s}|                     ||          }|                     |          }| 	                    ||           | 
                    t          |          t          |                     td S )Nmy_dynamic_class)r   r?  rN   r   r   rs   r  r  r  r   r   r   r  s        r   test_dynamic_classz&AbstractPickleTests.test_dynamic_class  s     !3fY??)+=+HIII 	, 	,E

1e$$A

1AQ"""MM$q''477++++		, 	,r   c                 P   dd l }dd l}|                                }t          D ] }|                     ||          }|                     |          }|                     ||            |j        |j                  }|                     ||          }|                     |          }|                     ||           t          |d          rV |j
        |j                  }|                     ||          }|                     |          }|                     ||           d S )Nr   statvfs)timer  	localtimer  r  r  r   statcurdirr   r  )r.   r  r  r  r  r  r  s          r   test_structseqz"AbstractPickleTests.test_structseq  s   			NN 	* 	*E

1e$$A

1A1%%%	""A

1e$$A

1A1%%%r9%% *BJry))JJq%((JJqMM##Aq)))	* 	*r   c                     t           D ]C}|                     d|          }|                     |          }|                     d|           Dd S N.)r  r  r  r   r.   r  r  r  s       r   test_ellipsisz!AbstractPickleTests.test_ellipsis  sT     	" 	"E

3&&A

1AMM#q!!!!	" 	"r   c                     t           D ]M}|                     t          |          }|                     |          }|                     t          |           Nd S r$   )r  r  r   r  r   r  s       r   test_notimplementedz'AbstractPickleTests.test_notimplemented  sT     	- 	-E

>511A

1AMM.!,,,,	- 	-r   c                     d dt           g}|D ]g}t          D ]]}|                     t          |          |          }|                     |          }|                     t          |          |           ^hd S r  )r   r  r  r   r  r   )r.   
singletons	singletonr  r  r  s         r   test_singleton_typesz(AbstractPickleTests.test_singleton_types  s    C0
# 	2 	2I" 2 2JJtI66JJqMMd9ooq11112	2 	2r   c                 .   t           j                                        D ]u}t          |t                    r^t          |t                    sIt          D ]A}|                     ||          }| 	                    | 
                    |          |           Bvd S r$   )builtinsrZ   valuesr   r   
issubclassr  r  r  r   r  r.   r  r  r  s       r   test_builtin_typesz&AbstractPickleTests.test_builtin_types  s    "))++ 	4 	4A!T"" 4:a+G+G 4& 4 4E

1e,,AMM$**Q--3333		4 	4r   c                     t           j                                        D ]}t          |t                    rt          |t                    rt          D ]}|                     ||          }| 	                    |          }|dk    r:t          |t                    r%|t          ur|                     |t                     m|dk    r1t          |t                    r|                     |t                     |                     ||           d S Nr   )r  rZ   r  r   r   r  r  r  r  r  OSErrorBlockingIOErrorr   ImportError)r.   r  r  r  r  s        r   test_builtin_exceptionsz+AbstractPickleTests.test_builtin_exceptions  s    "))++ 
	, 
	,A!T"" 	,z!]'C'C 	,& , ,E

1e,,A

1AzzjG&<&<z/AYAYa1111!
1k(B(Ba5555a++++
	, 
	,r   c                    t           j                                        D ]e}t          |t          j                  rIt          D ]A}|                     ||          }|                     | 	                    |          |           Bfd S r$   )
r  rZ   r  r   typesBuiltinFunctionTyper  r  r   r  r  s       r   test_builtin_functionsz*AbstractPickleTests.test_builtin_functions  s    "))++ 	4 	4A!U677 4& 4 4E

1e,,AMM$**Q--3333		4 	4r   c                    t           D ]}|                     d |          }|dk    rFt          j        t	          |g          z   }|                     |                    |                     d|                     t          t          j        |          d           t           d         dz   }t          j	        t          j
        z   }t          j        t	          |g          z   |z   }	 |                     |           |                     d           d S # t          $ r.}|                     dt          |                     Y d }~d S d }~ww xY w)Nr   r   r   r   z0expected bad protocol number to raise ValueErrorzunsupported pickle protocol)r  r  r   PROTOr   r  
startswithr   r"   NONErQ  r  failr+  r  ry   )r.   r  r  proto_headeroob
build_none	badpickleerrs           r   
test_protozAbstractPickleTests.test_proto  sE    	I 	IEjju--Gzz%|eUGnn< 2 2< @ @AAAA  flG!D!DaHHHHma[6;.
L5#<</*<		JJJy!!! IIHIIIII  	C 	C 	CMM7SBBBBBBBBB	Cs   %D 
E	#EE	c                    d}t           D ]u}|                     ||          }|                     |          }|                     ||           |                     t          t          j        |          |dk               vd S )N   UJ^w,3|	 r   )r  r  r  r   r   r   r   LONG1r.   r'   r  r  r   s        r   
test_long1zAbstractPickleTests.test_long1  s    ) 	L 	LE

1e$$A

1A1%%%-flA>>
KKKK		L 	Lr   c                 
   ddz  }t           D ]u}|                     ||          }|                     |          }|                     ||           |                     t          t          j        |          |dk               vd S )Nr  r  r   )r  r  r  r   r   r   r   LONG4r  s        r   
test_long4zAbstractPickleTests.test_long4  s    )e4 	L 	LE

1e$$A

1A1%%%-flA>>
KKKK		L 	Lr   c                 Z   i dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        d	t           j        d
t           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        t           j        t           j        t           j        d}d}d}d}d}d}t          D ]}|||||fD ]}|                     ||          }	|                     |	          }
| 	                    ||
           |t          |d          t          |          f         }|                     t          ||	                     d S )N)r   r   )r   r   )r   r   )r   r  )r   r  )r   r   )r   r   r   r   )r   r  r   r  )r   r   r   r   )r   r   )r   r  )r   r  )r  r   )r  r   ))r  r   )r  r  r  r  r%   )r   r   r   r  )r   r   r  r  r  )r   TUPLEEMPTY_TUPLETUPLE1TUPLE2TUPLE3r  r  r  r   minr/  r  r   )r.   expected_opcoder~   r   r   rS  er  r'   r  r   r  s               r   test_short_tuplesz%AbstractPickleTests.test_short_tuples  s   66< !6<!6< "6< "6<	 "6#5 "6< "6< "6< "6< "6#5 "6= "6= "6=  "6<!$ "6#5%& "6='( $*=#)=#)<-  0  	? 	?E1a] ? ?JJq%((JJqMM##Aq)))*3ua==#a&&+@A 01 = =>>>>?	? 	?r   c                 6   t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        d}t
          D ]}dD ]}|                     ||          }|                     |          }|                     ||u ||||f           |t          |d          |f         }|                     t          ||                     d S )N))r   N)r   N)r   N)r  N)r   T)r   T)r   T)r  T)r   F)r   F)r   F)r  F)NFTr  )r   r  INTNEWTRUENEWFALSEr  r  r  r  r.  r   )r.   r/  r  r'   r  r   r  s          r   test_singletonsz#AbstractPickleTests.test_singletons(  s    &,k&,k&,k&,k&,j&,j&,n&,n'-z'-z'-'-   	? 	?E& ? ?JJq%((JJqMMQ1a(8999*3ua==!+;< 01 = =>>>>?	? 	?r   c                     t          g d          }d|_        d|_        t          D ]C}|                     ||          }|                     |          }|                     ||           Dd S Nr(  r  hello)r  r   r   r  r  r  r   r  s        r   test_newobj_tuplez%AbstractPickleTests.test_newobj_tupleA  su    III 	& 	&E

1e$$A

1A1%%%%	& 	&r   c                     t          g d          }d|_        d|_        t          D ]C}|                     ||          }|                     |          }|                     ||           Dd S r8  )r9  r   r   r  r  r  r   r  s        r   test_newobj_listz$AbstractPickleTests.test_newobj_listJ  su    999 	& 	&E

1e$$A

1A1%%%%	& 	&r   c           
         t           D ]}t          D ]}|j        } ||j                  }d|_        |                     ||          }|                     |          }|||||t          |          f}|                     ||           | 	                     ||           ||          |           | 	                    |j
        |j
        |           d S Nr  )r  	myclasses__base__sampler   r  r  r   r   r   rZ   )r.   r  rX   Br'   r  r   details           r   test_newobj_genericz'AbstractPickleTests.test_newobj_genericS  s     
	A 
	AE 	A 	AJAahKKJJq%((JJqMMAq!T!WW5##Aq)))  1qqttV444  QZ@@@@	A
	A 
	Ar   c           
      f   t           d d          }t          t          fD ]}|                    |           t          D ]}|D ]}|j        } ||j                  }d|_        t          j	        |          }| 
                    ||          }|                     |          }	|                     t          |	          t          |                     |||||	t          |	          f}
|                      ||           ||	          |
           |                     |j        |	j        |
           d S r>  )r?  MyIntr  r  r  r@  rA  r   weakrefproxyr  r  r   r   rZ   )r.   classesr   r  rX   rB  r'   r  r  r   rC  s              r   test_newobj_proxiesz'AbstractPickleTests.test_newobj_proxies`  s;   AAA,! 	 	ANN1 	A 	AE 
A 
AJAahKKM!$$JJq%((JJqMM  a$q''222Aq!T!WW5  1qqttV444  QZ@@@@
A	A 	Ar   c                 h   t           D ]}t          d          }d|_        |                     ||          }|                     |          }|                     t          |          t                     |                     t          |          d           |                     |j        d           d S )Nr   r  )	r  MyIntWithNew2r   r  r  r   r   r   r  r  s        r   test_newobj_overridden_newz.AbstractPickleTests.test_newobj_overridden_news  s     	( 	(Ea  AAE

1e$$A

1AMM$q''=111SVVQ'''QUB''''	( 	(r   c                     t           }t                               t                     }|                     |d          }	 da |                     t          t
          j        f| j        |           |a d S # |a w xY w)Nr  r  )SimpleNewObjr   r  r  r  r   rc  r  )r.   saver  r   s       r   test_newobj_not_classz)AbstractPickleTests.test_newobj_not_class~  su       ..JJq!	 Ly&*@A4:qQQQLLL4Ls   /A1 1A5c                    t          |          }	 t          j        t          d|           t	          g d          }d|_        d|_        |                     |d          }|                     t          	                    d          |           |                     d|           | 
                    t          ||                     |                     |          }|                     ||           |                     |d          }|                     t          	                    d          |           |                     d|           |                     t          ||          d	t!          |                     |                     |          }|                     ||           |                                 d S # |                                 w xY w)
Nr9  r(  r  r9  r   r  s   MyListr   T)rK   rN   rT   r<   r9  r   r   r  r  r   assertFalser   r  r   r  r   reprrV   )r.   extcodeopcoder0  r'   s1r   s2s           r   produce_global_extz&AbstractPickleTests.produce_global_ext  s   7##	!(Hg>>>yyy!!AAEAE Aq!!BMM(//'22B777MM)R(((-fb99:::

2A1%%% Aq!!BX__W55r:::Y+++-fb994bJJJ

2A1%%%IIKKKKKAIIKKKKs   FG   Gc                     |                      dt          j                   |                      dt          j                   d S )Nr   r   )rY  r   EXT1r2   s    r   test_global_ext1z$AbstractPickleTests.test_global_ext1  s8    
FK888
FK88888r   c                     |                      dt          j                   |                      dt          j                   |                      dt          j                   d S )Nr  r   iͫ  )rY  r   EXT2r2   s    r   test_global_ext2z$AbstractPickleTests.test_global_ext2  P    
FK888
FK888
FK88888r   c                     |                      dt          j                   |                      dt          j                   |                      dt          j                   d S )N   r   iͫ)rY  r   EXT4r2   s    r   test_global_ext4z$AbstractPickleTests.test_global_ext4  r`  r   c                    d}t          t          |                    }t          D ]w}|                     ||          }|                     |          }|                     ||           t          t          j        |          }| 	                    ||dk               xd}t          t          |                    }t          D ]}|                     ||          }|                     |          }|                     ||           t          t          j        |          }|dk    r| 	                    |d           z| 
                    |dk               d S N
   r   	  r   )r   r7  r  r  r  r   r"   r   APPENDSr   r  )r.   r!   r'   r  r  r   num_appendss          r   test_list_chunkingz&AbstractPickleTests.test_list_chunking  sA   qNN 	5 	5E

1e$$A

1A1%%%&v~q99K[%!)4444qNN 	2 	2E

1e$$A

1A1%%%&v~q99Kzz  a0000q 01111	2 	2r   c                    d}t                               t          |                    }t          D ]}|                     ||          }|                     |t                     |                     |          }|                     ||           t          t          j        |          }|                     ||dk               d}t                               t          |                    }t          D ]}|                     ||          }|                     |          }|                     ||           t          t          j        |          }|dk    r|                     |d           z|                     |dk               d S rf  )r   r  r7  r  r  r.  r   r  r   r"   r   SETITEMSr   r  )r.   r!   r'   r  r  r   num_setitemss          r   test_dict_chunkingz&AbstractPickleTests.test_dict_chunking  sc   MM%((## 	6 	6E

1e$$A!!![111

1A1%%%';;L\5195555MM%((## 	3 	3E

1e$$A

1A1%%%';;Lzz  q1111 12222	3 	3r   c                    d}t          t          |                    }t          D ]}|                     ||          }|                     |          }|                     ||           t          t          j        |          }|dk     r| 	                    |d           z| 	                    |d           d}t          t          |                    }t          D ]}|                     ||          }|                     |          }|                     ||           t          t          j        |          }|dk     r| 	                    |d           z| 
                    |d           d S )Nrg  r  r   r   rh  r   )r5  r7  r  r  r  r   r"   r   ADDITEMSr   assertGreaterEqual)r.   r!   r'   r  r  r   num_additemss          r   test_set_chunkingz%AbstractPickleTests.test_set_chunking  s^   aMM 	2 	2E

1e$$A

1A1%%%';;Lqyy  q1111  q1111aMM 	9 	9E

1e$$A

1A1%%%';;Lqyy  q1111''a8888	9 	9r   c                 n   t                               t           d          }d|_        t          D ]}|                     |          5  |                     ||          }|dk     r|                     d|           n|                     d|           |                     t          t          j
        |          d|k               |                     t          t          j        |                     |                     |          }|                     ||           d d d            n# 1 swxY w Y   d S )N    r  r      
I64206   Mr   )rO  r   r   r  r  r  r  r   r   r   NEWOBJrS  	NEWOBJ_EXr  r   r  s        r   test_simple_newobjz&AbstractPickleTests.test_simple_newobj  s]     v66 	* 	*EE** 
* 
*JJq%((199MM+q1111MM,222  !1&-!C!C!"e- - -  !1&2BA!F!FGGGJJqMM##Aq)))
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
*	* 	*s   CD((D,	/D,	c                    t                               t           d          }d|_        t          D ]>}|                     |          5  |                     ||          }|dk     r|                     d|           nP|dk     r|                     d|           n3|dk     r|                     d	|           n|                     d
|           |                     t          t          j
        |          d|k               |                     t          t          j        |                     |                     |          }|                     ||           d d d            n# 1 swxY w Y   @d S Nrv  rw  rx  r   ry  r   rz  r  s	   X   FACEs   FACE)ComplexNewObjr   r   r  r  r  r  r   r   r   r{  rS  r|  r  r   r  s        r   test_complex_newobjz'AbstractPickleTests.test_complex_newobj	  s   !!-88 	* 	*EE** * *JJq%((199MM+q1111QYYMM,2222QYYMM":A>>>>MM/1555  !1&-!C!C!"e- - -  !1&2BA!F!FGGGJJqMM##Aq)))* * * * * * * * * * * * * * *	* 	*   DE""E&	)E&	c                    t                               t           d          }d|_        t          D ]>}|                     |          5  |                     ||          }|dk     r|                     d|           nP|dk     r|                     d|           n3|dk     r|                     d	|           n|                     d
|           |                     t          t          j
        |                     |                     t          t          j        |          d|k               |                     |          }|                     ||           d d d            n# 1 swxY w Y   @d S r  )ComplexNewObjExr   r   r  r  r  r  rS  r   r   r{  r   r|  r  r   r  s        r   test_complex_newobj_exz*AbstractPickleTests.test_complex_newobj_ex"	  s   ##OV<< 	* 	*EE** * *JJq%((199MM+q1111QYYMM,2222QYYMM":A>>>>MM/1555  !1&-!C!CDDD  !1&2BA!F!F!"e- - -JJqMM##Aq)))* * * * * * * * * * * * * * *	* 	*r  c                     t          g d          }d|_        d|_        |                     |d          }|                     |          }|                     ||           d S )Nr(  r  r9  r   )SlotListr   r   r  r  r   )r.   r'   r  r   s       r   test_newobj_list_slotsz*AbstractPickleTests.test_newobj_list_slots6	  s_    YYYJJq!JJqMMAq!!!!!r   c                 .   t           D ]}t                      }|                     |j        d           |                     ||          }|                     |j        d           |                     |          }|                     |j        d           d S rM   )r  REX_oner   _reduce_calledr  r  r  s        r   'test_reduce_overrides_default_reduce_exz;AbstractPickleTests.test_reduce_overrides_default_reduce_ex>	  s     	2 	2E		AQ-q111

1e$$AQ-q111

1AQ-q1111	2 	2r   c                 .   t           D ]}t                      }|                     |j        d            |                     ||          }|                     |j        |           |                     |          }|                     |j        d            d S r$   )r  REX_twor   _protor  r  r  s        r   test_reduce_ex_calledz)AbstractPickleTests.test_reduce_ex_calledG	  s     	- 	-E		AQXt,,,

1e$$AQXu---

1AQXt,,,,	- 	-r   c                 .   t           D ]}t                      }|                     |j        d            |                     ||          }|                     |j        |           |                     |          }|                     |j        d            d S r$   )r  	REX_threer   r  r  r  r  s        r   test_reduce_ex_overrides_reducez3AbstractPickleTests.test_reduce_ex_overrides_reduceP	  s     	- 	-EAQXt,,,

1e$$AQXu---

1AQXt,,,,	- 	-r   c                 .   t           D ]}t                      }|                     |j        d            |                     ||          }|                     |j        |           |                     |          }|                     |j        |           d S r$   )r  REX_fourr   r  r  r  r  s        r   test_reduce_ex_calls_basez-AbstractPickleTests.test_reduce_ex_calls_baseY	  s     	. 	.E

AQXt,,,

1e$$AQXu---

1AQXu----	. 	.r   c                 .   t           D ]}t                      }|                     |j        d           |                     ||          }|                     |j        d           |                     |          }|                     |j        d           d S rM   )r  REX_fiver   r  r  r  r  s        r   test_reduce_calls_basez*AbstractPickleTests.test_reduce_calls_baseb	  s     	2 	2E

AQ-q111

1e$$AQ-q111

1AQ-q1111	2 	2r   c                 L   t                      }t          d          D ]O}t          j                    5  |                     t
          | j        ||           d d d            n# 1 swxY w Y   Pt          dt          j        dz             D ]}|                     ||          }d S )Nr   r   )	
BadGetattrr7  r   infinite_recursionr  RuntimeErrorr  r   r-  )r.   r'   r  r  s       r   test_bad_getattrz$AbstractPickleTests.test_bad_getattrk	  s     LL1XX 	F 	FE+-- F F!!,
AuEEEF F F F F F F F F F F F F F F1f59:: 	% 	%E

1e$$AA	% 	%s   #A""A&	)A&	c                 8    G d dt                     } G d dt                     }t          D ]k}	 |                      |            |           n# t          j        $ r Y nw xY w	 |                      |            |           W# t          j        $ r Y hw xY wd S )Nc                       e Zd Zd ZdS )7AbstractPickleTests.test_reduce_bad_iterator.<locals>.Cc                     t           dd g d fS rg   )r   r2   s    r   rs   zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__y	  s    Rr4//r   Nr<   r=   r>   rs   r%   r   r   rX   r  x	  #        0 0 0 0 0r   rX   c                       e Zd Zd ZdS )7AbstractPickleTests.test_reduce_bad_iterator.<locals>.Dc                     t           dd d g fS rg   )r   r2   s    r   rs   zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__}	  s    RtR//r   Nr  r%   r   r   r_   r  |	  r  r   r_   )r?  r  r  r   PicklingError)r.   rX   r_   r  s       r   test_reduce_bad_iteratorz,AbstractPickleTests.test_reduce_bad_iteratoru	  s    	0 	0 	0 	0 	0 	0 	0 	0	0 	0 	0 	0 	0 	0 	0 	0  	 	E

1133&&&&'   

1133&&&&'   	 	s#   AA"!A"&BBBc                    d t          d          D             }t          d |D                       }t          |          t          |          t          |          g}t          D ]q}|                     |          5  |                     ||          }|                     |          }|                     ||           d d d            n# 1 swxY w Y   rd S )Nc              3   :   K   | ]}d t          |          z   V  dS )aaaNrx   r  s     r   	<genexpr>z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>	  s,      331A333333r   rm  c              3   "   K   | ]
}|g d fV  dS ))r  r   r  Nr%   )r  ks     r   r  z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>	  s*      77Q1iii.777777r   rx  )r7  r   r  r  r  r  r   )r.   r9  
large_dictr   r  r]  rD  s          r   test_many_puts_and_getsz+AbstractPickleTests.test_many_puts_and_gets	  s    43c

33377$77777
Jj!1!14
3C3CD 	1 	1EE** 1 1C//F++##C0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1s   >ACC	C	c                 P   t           D ]}t                      }d|_        d|_        |                     ||          }|                     |          }t          |j                  }t          |j                  }t          ||          D ]\  }}| 	                    ||           d S )Nr  r9  )
r  rX   r   r   r  r  sortedrZ   zipr   )	r.   r  r'   r  r   x_keysy_keysx_keyy_keys	            r   test_attribute_name_interningz1AbstractPickleTests.test_attribute_name_interning	  s      		, 		,EAAEAE

1e$$A

1AAJ''FAJ''F #FF 3 3 , ,ueU++++,		, 		,r   c                     |                      t          d          d          }|                     |t                     |                      t	          dg          d          }|                     |t
                     d S )Nr   r   r  )r  r7  r   r6  r5  	DATA_SET2r\  s     r   test_pickle_to_2xz%AbstractPickleTests.test_pickle_to_2x	  sj    
 E!HHa((---CHHa((+++++r   c                 "   t           D ]}dt          ddz  t          f}|                     ||          }|                     |          }|                     t          |          t          |                     |                     ||           d S )Nr   s   xyi x  )r  r.  r/  r  r  r   )r.   r  r  r]  rD  s        r   test_large_picklesz&AbstractPickleTests.test_large_pickles	  s      	+ 	+EsEY/5DZZe,,FZZ''FS[[#d))444VT****	+ 	+r   c           	          t           D ]Ɋ                               5   fdt          d          D             }t          t	          t
          |                    }                     t          |          |           dk    r2|D ]/}                     t          t          j        |                     0d d d            n# 1 swxY w Y   d S )Nrx  c                 B    g | ]}                     d |z            S r   )r  )r  r!   r  r.   s     r   r  zDAbstractPickleTests.test_int_pickling_efficiency.<locals>.<listcomp>	  s+    FFFq4::adE22FFFr   F   r   )r  r  r7  r   mapr/  r   r  rS  r   r   LONG)r.   picklessizesr  r  s   `   @r   test_int_pickling_efficiencyz0AbstractPickleTests.test_int_pickling_efficiency	  s/    	K 	KEE** K KFFFFFE"IIFFFSg..//  666A::$ K K(()9&+q)I)IJJJJK K K K K K K K K K K K K K K	K 	Ks   BCC	C	c                     |                      ||          }|                     t          ||                     |                     |          }|                     ||           d S r$   )r  r  r   r  r   )r.   r   rV  r  r  r  s         r   _check_pickling_with_opcodez/AbstractPickleTests._check_pickling_with_opcode	  s_    **S%(((99:::JJw''	i(((((r   c                     t          g d          }t          D ]K}|dk    r"|                     |t          j        |           *|                     |t          j        |           Ld S )Nr(  r   )rA  r  r  r   APPENDri  r.   r   r  s      r   test_appends_on_non_listsz-AbstractPickleTests.test_appends_on_non_lists	  ss    iii   	M 	MEzz00fmUKKKK00fneLLLL		M 	Mr   c                     t          dddd          }t          D ]K}|dk    r"|                     |t          j        |           *|                     |t          j        |           Ld S )Nr   r(  r   )r_  r  r  r   SETITEMrm  r  s      r   test_setitems_on_non_dictsz.AbstractPickleTests.test_setitems_on_non_dicts	  sy    B2"--.. 	N 	NEzz00fneLLLL00fouMMMM		N 	Nr   r  rb  c                    dx}}h d}t          j        |          D ]\  }}}||                     ||           ||k    rd}|M|                     |j        d           |j        |v r(|                     t          |          | j                   n^|j        dk    s!|j        |v r;t          |          | j        k    r#| |                     ||z
  | j                   d}n||j        dk    r|}|j        dk    r#| 	                    || j                   |dz   |z   }t          |          }|| 
                    ||           dS | |                     ||z
  | j                   dS dS )a  
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.

        Note that binary objects that are larger than FRAME_SIZE_TARGET are not
        framed by default and are therefore considered a frame by themselves in
        the following consistency check.
        N>   BINBYTES	BINBYTES8
BINUNICODEr  BINUNICODE8FRAMEr  	   )r   r   assertLessEqualassertNotEqualr   r/  FRAME_SIZE_TARGET
assertLessFRAME_SIZE_MINrr  r   )r.   r  	frame_endframeless_startframeless_opcodesr   ra   poss           r   check_frame_opcodesz'AbstractPickleTests.check_frame_opcodes	  s    '+*	O: : :'.w77 	* 	*LBS$$$S)444)## $I$##BGW5557/// ((S43IJJJ Gw&&W 111XX 666&2o(=(,(;= = =*.$,G1C1C&)Ow'!!''T-@AAA!GcM	'll Y,,,,,(OOC/143FGGGGG )(r   c                 R   t          t          d                    }t          dt          j        dz             D ]}|                     |          5  |                     ||          }|                     |          }|                     ||           t          |          t          t          j
        |          z  }|                     || j        dz             |                     || j        dz             |                     |           d d d            n# 1 swxY w Y   d S )Ni r  r   rx  r   )r   r7  r   r-  r  r  r  r   r/  r"   r  assertGreaterr  r  r  )r.   r   r  r  r  bytes_per_frames         r   test_framing_many_objectsz-AbstractPickleTests.test_framing_many_objects
  se   5<<  1f59:: 	2 	2EE** 
2 
2**S%00 JJw//	  i000#&w<<#/g#F#F$G""?#'#9A#=? ? ?$$_%)%;a%?A A A((111
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2	2 	2s   B=DD	"D	c                 d   d}d t          d          D             }d|z  g|d|z  d|z  }t          dt          j        dz             D ]c}d	D ]\}|                     ||
          5  |s|                     ||          }nwt          | d          s	 d d d            Qt          j                    }|                     ||          }||_	        |
                    |           |                                }|                     |          }	|                     d |D             d |	D                        |                     ||	           t          t          j        |          }
|                     |
d           |                     |           d d d            n# 1 swxY w Y   ^ed S )Ni   c                     g | ]}|gS r%   r%   r  s     r   r  zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>$
  s    ...qs...r   rg     x   yzr  r   )FT)r  fastpicklerr   c                 ,    g | ]}t          |          S r%   r/  r  s     r   r  zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>8
  s    %:%:%:c!ff%:%:%:r   c                 ,    g | ]}t          |          S r%   r  r  s     r   r  zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>9
  s    %@%@%@c!ff%@%@%@r   )r7  r   r-  r  r  r   r6   rB   r  r  dumprD   r  r   r"   r  r  )r.   Nsmall_itemsr   r  r  r  bufr  r  n_framess              r   test_framing_large_objectsz.AbstractPickleTests.test_framing_large_objects"
  s2   ..E"II...ax9+9tax9q91f59:: 	6 	6E% 6 6\\D\99 6 6 1 #'**S%"8"8  'tY77 %$6 6 6 6 6 6 6 !jll"&,,sU,"C"C'+S)))"%,,.. $

7 3 3I$$%:%:c%:%:%:%@%@i%@%@%@B B B $$S)444+FL'BBH $$Xq111,,W55516 6 6 6 6 6 6 6 6 6 6 6 6 6 66	6 	6s   *+F!!C4F!!F%(F%c           	        	 t           j        dk     rd S dd}| j        	d}t          t          fD ]3	fdt          |          D             }t          dt           j        dz             D ]}|                     ||          } ||          }|                     t          t           j	        |          d           |                     || 
                    |                      ||d           }|                     t          t           j	        |          t          t           j	        |                     |                     || 
                    |                     5d S )	Nr  c                 (   g }d}t          j        |           D ]&\  }}}|j        dk    r|                    |           't	                      }d}t          |          D ]%\  }	}|r ||	          r|| ||         z  }||z   }&|| |d         z  }|S )z+Remove frame opcodes from the given pickle.r  r  r   N)r   r   r   r   rt  	enumerate)
r  
keep_frameframe_startsframe_opcode_sizerV  _r  	newpicklelast_frame_endr  s
             r   remove_framesz?AbstractPickleTests.test_optional_frames.<locals>.remove_framesF
  s    L !"-"4W"="= - -3;')) '',,,!IN#L11 9 93 **Q-- W^C%788	!$'8!811Ir      c                 0    i | ]}| |g          z  S r%   r%   )r  r  
bytes_type
frame_sizes     r   
<dictcomp>z<AbstractPickleTests.test_optional_frames.<locals>.<dictcomp>^
  s*    NNNq1jj!oo
2NNNr   r   r   c                     | dz  S r  r%   )r  s    r   r?  z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>g
  s
    a!e r   r$   )r   r-  r  r   rt  r7  r  r   r"   r  r  r  )
r.   r  
num_framesr   r  r  frameless_picklesome_frames_pickler  r  s
           @@r   test_optional_framesz(AbstractPickleTests.test_optional_framesB
  s   "Q&&F	 	 	 	& +

 !), 	F 	FJNNNNNE*<M<MNNNCq&"9A"=>> 
F 
F**S%00#0=#9#9   fl<L!M!MqQQQ  djj1A&B&BCCC%2]7OO%L%L"V\;M N N ,V\7 C CE E E  djj1C&D&DEEEE
F	F 	Fr   c                      G d d          }t          dt          j        dz             D ]6}d t          t          d                    D             }|                    d j        dz  dz   z              |            }                     ||                              |           |                                } 	                    |          } 
                    ||                                t          |j                  d           ~t          j                      
                    |                                |           t          |          dz
   j        z  dz   }                     t          |j                  |                                t          |j                  d	|z  d
z              d |j        D             } fd|D             }	 fd|D             }
d |D             }|	D ]!}                     |d	 j        z  |           "                     t          |          t          |	          t          |
          z   d
z   |           8d S )Nc                   $    e Zd ZdZd Zd Zd ZdS )YAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.c                     g | _         d S r$   )chunksr2   s    r   rH   zbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__p
  s     r   c                 :    | j                             |           d S r$   )r  r   )r.   chunks     r   rG   z_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writer
  s    ""5)))))r   c                 6    d                     | j                  S )Nr   )r  r  r2   s    r   concatenate_chunkszlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunkst
  s    xx,,,r   N)r<   r=   r>   rI   rH   rG   r  r%   r   r   ChunkAccumulatorr  n
  sG        DD! ! !* * *- - - - -r   r  r  r   c                 |    g | ]9}t          |                              d           |dz  dt          |          if:S )r  r  r  )ry   r   r  s     r   r  zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>x
  sO     1 1 1 Ag..Bc!ffF 1 1 1r   g     @0123456789abcdefr  r   r  c                 ,    g | ]}t          |          S r%   r  )r  r   s     r   r  zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>
  s    999a3q66999r   c                 *    g | ]}|j         k    |S r%   r  r  r  r.   s     r   r  zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>
  s0     ; ; ;4#999 999r   c                 >    g | ]}d |cxk     rj         k     n n|S r  r  r  s     r   r  zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>
  sG     > > >!!<<<<d&<<<<<< <<<r   c                     g | ]
}|d k    |S r  r%   )r  r  s     r   r  zSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>
  s    <<<Q!VV1VVVr   )r7  r   r-  r  r   r  r  r  r  r  r   r  r/  r  r   
gc_collectrr  r  r  )r.   r  r  objectswriterr  reconstructedr  chunk_sizeslarge_sizesmedium_sizessmall_sizes
chunk_sizes   `            r   +test_framed_write_sizes_with_delayed_writerz?AbstractPickleTests.test_framed_write_sizes_with_delayed_writerl
  s   	- 	- 	- 	- 	- 	- 	- 	- 1f59:: 5	. 5	.E1 1 %c#hh1 1 1G NN- 2b81<> ? ? ? &%''FLL'',,W555
 //11G JJw//M]G444s6=111555    V6688'BBBGq(T-CCaGH##C$6$6AAA
   V]!3!3Q\A5EFFF996=999K; ; ; ;k ; ; ;K> > > >{ > > >L<<k<<<K * - -

A0F,F +- - - -
   [!1!1!$[!1!1C4E4E!E!I!,. . . .g5	. 5	.r   c           	          G d d          a t          t          j        dz             D ]}t           j        t           j        j        t           j        j        j        fD ]p}|                     ||          5  |                     | 	                    ||                    }| 
                    ||           d d d            n# 1 swxY w Y   qd S )Nc                   (    e Zd Z G d d          ZdS )Nestedc                   (    e Zd Z G d d          ZdS )Nested.Ac                   (    e Zd Z G d d          ZdS )
Nested.A.Bc                       e Zd ZdS )Nested.A.B.CNrk   r%   r   r   rX   r2  
  s        r   rX   N)r<   r=   r>   rX   r%   r   r   rB  r0  
  s<                 r   rB  N)r<   r=   r>   rB  r%   r   r   Ar.  
  s<                 r   r3  N)r<   r=   r>   r3  r%   r   r   r,  r,  
  s<                 r   r,  r   )r  r   )r,  r7  r   r-  r3  rB  rX   r  r  r  r   )r.   r  r   r  s       r   test_nested_namesz%AbstractPickleTests.test_nested_names
  s   	 	 	 	 	 	 	 	
 62Q677 	2 	2E&(*fhjl; 2 2\\3\77 2 2 $

4::c5+A+A B BIMM#y1112 2 2 2 2 2 2 2 2 2 2 2 2 2 22	2 	2s   7A CC
Cc                     G d d          a t          j        t           j                 t           _        dt           _        t          t          j        dz             D ]y}| 	                    |          5  | 
                    |                     t           |                    }|                     |t                      d d d            n# 1 swxY w Y   zt           `d S )Nc                       e Zd ZdS )	RecursiveNrk   r%   r   r   r7  r7  
          Dr   r7  zRecursive.mod.Recursiver   rx  )r7  r  modulesr=   modr>   r7  r   r-  r  r  r  r   )r.   r  r  s      r   test_recursive_nested_namesz/AbstractPickleTests.test_recursive_nested_names
  s
   	 	 	 	 	 	 	 	I$89	!:	62Q677 	4 	4EE** 4 4 JJtzz)U'C'CDD	i3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 MMMs   4A
C

C	C	c           	          G d d          a t           j        t           j        t                      j        t           j        j        t           j        j        t                                           j        f}t           j        t           ft           j        j        t           j        ff}t          t          j
        dz             D ]}|D ]}|                     ||          5  |                     |                     ||                    }|                      |             |                       d d d            n# 1 swxY w Y   |D ]\  }} |            }|                     ||          5  |                     |                     ||                    }|                      ||           ||                     d d d            n# 1 swxY w Y   t           j        d         t           j        d         f}t          t          j
        dz             D ]X}|D ]S}	|                     ||	          5  |                     t"          | j        |	|           d d d            n# 1 swxY w Y   TYd S )Nc                   Z    e Zd Zed             Zed             Zd Z G d d          ZdS )PyMethodsTestc                      dS )Ncheeser%   r%   r   r   r@  zPyMethodsTest.cheese
  s    xr   c                     dS )Nwiner%   r   s    r   rB  zPyMethodsTest.wine
  s	     vr   c                     dS )Nbiscuitsr%   r2   s    r   rE  zPyMethodsTest.biscuits
  s    !zr   c                   D    e Zd ZdZed             Zed             Zd ZdS )PyMethodsTest.NestedzNested classc                      dS )Nketchupr%   r%   r   r   rI  zPyMethodsTest.Nested.ketchup
  s    $9r   c                     dS )Nmapler%   rC  s    r   rK  zPyMethodsTest.Nested.maple
  s	     #7r   c                     dS )Npier%   r2   s    r   rM  zPyMethodsTest.Nested.pie
  s     5r   N)	r<   r=   r>   rI   staticmethodrI  r   rK  rM  r%   r   r   r,  rG  
  sZ        % % %# # #! ! ! ! !r   r,  N)	r<   r=   r>   rN  r@  r   rB  rE  r,  r%   r   r   r>  r>  
  s}            \   [" " "! ! ! ! ! ! ! ! ! !r   r>  r   r  methodr@  rB  r  descr)r>  r@  rB  rE  r,  rI  rK  rM  r7  r   r-  r  r  r  r   rZ   r  r  )
r.   
py_methodspy_unbound_methodsr  rP  r  r   r   descriptorsrR  s
             r   test_py_methodsz#AbstractPickleTests.test_py_methods
  sZ   	! 	! 	! 	! 	! 	! 	! 	!2  OO$ ( &  ""&

 #]3!%}';<
 62Q677 		B 		BE$ < <\\f\== < < $

4::fe+D+D E EI$$VVXXyy{{;;;< < < < < < < < < < < < < < <  2 B Bcee\\f\== B B $

4::fe+D+D E EI$$VVC[[))C..AAAB B B B B B B B B B B B B B BB "8,"6*
 62Q677 	K 	KE$ K K\\U\;; K K%%iUEJJJK K K K K K K K K K K K K K KK	K 	Ks8   AD;;D?D?/AGGG8#I''I+.I+c                 b    G d dt                     adj        dft          j        dfg dj        dft
          j        g dffdd	hj        d
ft          j        dd	hd	fft          j	        dft          j        dft          g d          j        d
ft          j        t          g d          d	fft                              d          j        dft          j        j        t                              d          dfff}t          t          j        dz             D ]~}|D ]y\  }}|                     ||          5  |                     |                     ||                    }|                      ||  ||            d d d            n# 1 swxY w Y   zt          j        d         t          j        d         f}t          t          j        dz             D ]X}|D ]S}|                     ||          5  |                     t.          | j        ||           d d d            n# 1 swxY w Y   TYd S )Nc                   *    e Zd Z G d de          ZdS )Subclassc                       e Zd ZdS )Subclass.NestedNrk   r%   r   r   r,  r[    s        r   r,  N)r<   r=   r>   ry   r,  r%   r   r   rY  rY    s>                 r   rY  abcd)r   )r\  r   r(  r%   r   r   r  ))r~   r   )r   r   )s   abcr  )r   r   r   sweet)r0  r0  rO  	maketransr  rQ  )rD  rY  indexry   __len__r   __contains__r5  r   r  rt  r^  countr,  r7  r   r-  r  r  r  r   rZ   r  r  )r.   	c_methodsr  rP  r/   r  rU  rR  s           r   test_c_methodsz"AbstractPickleTests.test_c_methods  s   	 	 	 	 	u 	 	 	 \6"Y&YY#\III<(V $'A{+]01 "23ggg$d+^hwww//34__W%%+V4_"X__W%=%=s$CD+
	. 62Q677 	F 	FE ) F F\\f\== F F $

4::fe+D+D E EI$$VVT]IIt4DEEEF F F F F F F F F F F F F F FF {+M*%
 62Q677 	K 	KE$ K K\\U\;; K K%%iUEJJJK K K K K K K K K K K K K K KK	K 	Ks%   7AF		FF3#H""H&)H&c           
         t          dd          ddft          t          d          ddft          j        ddft
          j        d	d	ft                      d
dft          j	                    ddft          j
                    ddft          j                    ddfg}|D ]\  }}}t          d          D ]}|                     t          |          |          5  |                     ||          }|                     d|d|                                |           |                     t          |                     |                    t          |                     d d d            n# 1 swxY w Y   ƌd S )Nr   r  __builtin__xrange123	itertoolsimapr  r  
exceptionsr<  r  IterableUserDictUserListr  defaultdictr  )r   r  r   r  )r7  r  r  r  r  r  r  r<  r  r  rm  rn  r  r   r  r  r   r   r  )r.   testsvalr:  r   r  r  s          r   test_compat_picklez&AbstractPickleTests.test_compat_pickle-  s   1a[[-2e__k62}h7[)Y/[[,4!##Z1CD!##Z<$&&}E	
 $ 	H 	HNCdq H H\\tCyy\>> H H"jje44GMMMTT#:"B"B"D"DgNNNMM$tzz'':':";";T#YYGGGH H H H H H H H H H H H H H HH	H 	Hs   BE((E,/E,c                 L   d }t          dt          j        dz             D ]h}|                     t          t          j        f          5  t          j        |                     ||                     d d d            n# 1 swxY w Y   i|`	t          dt          j        dz             D ]h}|                     t          t          j        f          5  t          j        |                     ||                     d d d            n# 1 swxY w Y   i|j
        |_        t          dt          j        dz             D ]h}|                     t          t          j        f          5  t          j        |                     ||                     d d d            n# 1 swxY w Y   id S )Nc                      d S r$   r%   r%   r   r   r  z6AbstractPickleTests.test_local_lookup_error.<locals>.fB      Dr   r   r   )r7  r   r-  r  AttributeErrorr  r   r%  r  r=   r>   r<   r.   r  r  s      r   test_local_lookup_errorz+AbstractPickleTests.test_local_lookup_error?  sB   	 	 	 1f59:: 	6 	6E""NF4H#IJJ 6 6

1e 4 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 L1f59:: 	6 	6E""NF4H#IJJ 6 6

1e 4 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 ^
1f59:: 	6 	6E""NF4H#IJJ 6 6

1e 4 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6s6   	)A>>B	B	)DD
	D
	#)FF	F	c              #   ^  K   d}t          |          V  t          |          V  t          }t          |          }t                              |d          }dt          j        fD ]E}t          |dd|          V  t          |ddd	|
          V  t          |ddd|
          V  Dd S d S )N   abcdefghlittle)	byteorderr   rB  )r  )r   r   r   )r  r   r&  )r   r   r   r   r%  )r   r   r   r   r  
from_bytesr   r   )r.   
bytestringr   rp   r   s        r   buffer_like_objectsz'AbstractPickleTests.buffer_like_objectsX  s      
J'''''
+++++"$$ENN:NBBE[45 
4 
4&uS-24 4 4 4 4 4 'uS/5UD D D D D D 'uS-3V-24 4 4 4 4 4 4 #"
4 
4r   c                 v   |                                  D ]}t          dt          j        dz             D ]}|                     ||          }|j        r|dk    r|                     d|           |                     t          t          j	        |          d           |dk    r|                     t          t          j
        |          |j        rdnd           |                     t          t          j        |          |j        rdnd           d }|                     |||          }|                     ||           |                     |          }|                     ||           |                     t!          |          t!          |                     |                     ||           d S )Nr   r   r   ry  c                     dS NTr%   r   s    r   buffer_callbackzAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback|  s    #tr   r  )r~  r7  r   r-  r  r   r  r   r"   NEXT_BUFFERSHORT_BINBYTESr   r  r  r   r   r   )r.   r   r  r  r  data2r   s          r   test_in_band_buffersz(AbstractPickleTests.test_in_band_buffersl  s   ++-- 	+ 	+Cq&"9A"=>> + +zz#u--# 5

MM+t444  f.@$!G!GKKKA::$$\&2G%N%N*-,%=QQA? ? ?$$\&2CT%J%J*-,%=QQA? ? ?$ $ $ JJsE7F ' H HE$$UD111jj&&  c***d3iic333  c****/+	+ 	+r   c                 .   |                                  D ]}t          dd          D ]Q}|                     t                    5  |                     ||g j                   d d d            n# 1 swxY w Y   Rt          dt          j        dz             D ]y}g fd}|                     |||          }|                     d|           | 	                    t          t          j        |          d           | 	                    t          t          j        |          d           | 	                    t          t          j        |          d           | 	                    t          t          j        |          |j        rdnd           |j        r)| 	                    t#          d                   d           |                     t          j                  5  |                     |           d d d            n# 1 swxY w Y   |                     |          }|j        r|                     ||           nF|                     t-          |          t-          |                     | 	                    ||           |                     |t/                              }|j        r|                     ||           3|                     t-          |          t-          |                     | 	                    ||           {d S )Nr   r   r  r   c                 R                         |                                           S r$   )r   r   )r   bufferss    r   r?  z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>  s    W^^BFFHH-E-E r   ry  r  )r~  r7  r  r+  r  r   r   r-  r  r   r"   r  r  r  READONLY_BUFFERr   r   r   rc  r  r   r   r   iter)r.   r   r  r  r  r   r  s         @r   test_oob_buffersz$AbstractPickleTests.test_oob_buffers  sq   ++-- &	/ &	/Cq! : :&&z22 : :JJsE/1y  : : :: : : : : : : : : : : : : : : q&"9A"=>>  /  /"E"E"E"Ezz#u2A " C C  d333  f.CT!J!JANNN  f.?!F!FJJJ  f.@$!G!GKKK  f.Dd!K!K&)l!9; ; ; # E$$U71:%6%6DDD&&v'=>> % %JJt$$$% % % % % % % % % % % % % % % jjwj77, /MM#s++++MM$s))T#YY777$$S#...jjtG}}j==, /MM#s++++MM$s))T#YY777$$S#....A /&	/ &	/s$   A//A36A3 HH	Hc                    t          d          }t          dt          j        dz             D ]}g }|j        }|                     |||          }t          t          |          }|                     ||          }| 	                    t          |          t          |                     |                     ||           d S N   foobarr   r   r  r  )r   r7  r   r-  r   r  r  rt  r  r   r   r   )r.   r   r  r  r  r  r   s          r   %test_oob_buffers_writable_to_readonlyz9AbstractPickleTests.test_oob_buffers_writable_to_readonly  s    I&&1f59:: 	' 	'EG%nO::c5/:JJD)W--G**T7*33CMM$s))T#YY///S#&&&&	' 	'r   c                     t          j        d          }t          dd          D ]O}|                     t           j                  5  |                     ||           d d d            n# 1 swxY w Y   Pd S )Nr  r   r   )r   r   r7  r  PickleErrorr  )r.   r   r  s      r   test_picklebuffer_errorz+AbstractPickleTests.test_picklebuffer_error  s     ++1a[[ 	& 	&E""6#566 & &

2u%%%& & & & & & & & & & & & & & &	& 	&s   A))A-	0A-	c                     d }t          j        d          }|                     t                    5  |                     |d|           d d d            d S # 1 swxY w Y   d S )Nc                     ddz   d S r,  r%   r  s    r   r  zGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callback  s    aCCCCr   r  r   r  )r   r   r  ZeroDivisionErrorr  )r.   r  r   s      r   test_buffer_callback_errorz.AbstractPickleTests.test_buffer_callback_error  s    	 	 	 ++011 	? 	?JJr1oJ>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   AAAc                    t          j        d          }t          dt           j        dz             D ]}|                     ||g j                  }|                     t                    5  |                     |t                                 d d d            n# 1 swxY w Y   |                     t           j
                  5  |                     |g            d d d            n# 1 swxY w Y   d S r  )r   r   r7  r-  r  r   r  r  r  r?  rc  )r.   r   r  r  s       r   test_buffers_errorz&AbstractPickleTests.test_buffers_error  s^    ++1f59:: 	- 	-E::b%:CCD""9-- 3 3

4
2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ""6#9:: - -

4
,,,- - - - - - - - - - - - - - -	- 	-s$   +$BB	"B	C))C-	0C-	c                     t          dt          j        dz             D ]1}|                     d|d           }|                     |d           }2d S )Nr   r   r  r  )r7  r   r-  r  r  )r.   r  data_pickledr  s       r   +test_inband_accept_default_buffers_argumentz?AbstractPickleTests.test_inband_accept_default_buffers_argument  s[    1f59:: 	: 	:E::a:EEL::lD:99DD	: 	:r   NzTest needs Numpyc                 @     fd fd fd}t          j        d          } ||            ||d d d                    t          j        d                              d          } ||            ||j                    ||d d d                    d S )Nc                     t           j                            | |                               | j        j        |j        j                   d S r$   )nptestingassert_equalr   ctypesr  r'   r   r.   s     r   check_no_copyz=AbstractPickleTests.test_buffers_numpy.<locals>.check_no_copy  s?    J##Aq)))QX]AHM:::::r   c                     t           j                            | |                               | j        j        |j        j                   d S r$   )r  r  r  r  r  r  r  s     r   
check_copyz:AbstractPickleTests.test_buffers_numpy.<locals>.check_copy  s?    J##Aq)))qx}=====r   c                    t          dt          j        dz             D ]9}                    | |          }                    |          } | |           :t          dt          j        dz             D ]>}d }                    | ||          }                    |          } | |           ?t          dt          j        dz             D ]k}g }|j        }                    | ||          }                    ||          }| j        j        s| j        j        r | |           _ | |           ld S )Nr   r   r   c                     dS r  r%   )r  s    r   r?  zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>  s    D r   r  r  )	r7  r   r-  r  r  r   r   r   r   )	arrr  r  r   r  r  r  r  r.   s	         r   check_arrayz;AbstractPickleTests.test_buffers_numpy.<locals>.check_array  sh   q&"9A"=>> % %zz#u--jj&&
3$$$$q&"9A"=>> % %"0.zz#uozNNjj&&
3$$$$q&"9A"=>> ) )").zz#uozNNjjwj779) )SY-C )!M#s++++JsC(((() )r   r  r      r'  )r  arangereshapeT)r.   r  r  r  r  s   `  @@r   test_buffers_numpyz&AbstractPickleTests.test_buffers_numpy  s    	; 	; 	; 	; 	;	> 	> 	> 	> 	>	) 	) 	) 	) 	) 	) 	). illCC!Himm##F++CCEC!Hr   c           	        	 ddl m	  G 	fdd          at          D ]}t	          d          D ]}dd t	          d          D             D ]}||_        |_        d	 |                     |          }|                     |           _# t          $ r/}d	}| 
                    |t          |                     Y d }~d }~ww xY wd S )
Nr   )getrandbitsc                   ,    e Zd Z fdZd ZfdZdS )Badc                     S r$   r%   )r.   r\   ENABLEDs     r   r]   z
Bad.__eq__  s    r   c                     dS r>  r%   r2   s    r   __hash__zBad.__hash__  s    rr   c                 \     d          dk    r                                  t          dfS )Nr  r   r%   )clearr  )r.   
collectionr  s    r   rs   zBad.__reduce__  s2    ;q>>Q&&$$&&&Ry r   N)r<   r=   r>   r]   r  rs   )r  r  r  s   r   r  r    s[              ! ! ! ! ! ! ! !r   r  r  Fc                 D    i | ]}t                      t                      S r%   )r  )r  r  s     r   r  zEAbstractPickleTests.test_evil_class_mutating_dict.<locals>.<dictcomp>  s"    >>>qceeSUU>>>r   Tchanged size during iteration)randomr  r  r  r7  r3  r  r  r  r  r  ry   )
r.   r  r  r3  r  r0  r  r  r  r  s
          @@@r   test_evil_class_mutating_dictz1AbstractPickleTests.test_evil_class_mutating_dict  sD   &&&&&&	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!  	4 	4E2YY 4 4>>E"II>>>
% 0 0C!CG%/CNN4::j%88DJJt$$$$# 4 4 4>HMM(CFF3333333344	4 	4s   &+B
C%CCc                 n    t           d          s%                     t                      d           G d d          a fd}t          D ] |t                      g            |t                      t                      g            |t                      h            |t                      t                      h            |t                      di            |t                      dt                      di            |t                      t                      d           d S )	Nr  z has no associated pickler typec                       e Zd ZdS )ClearerNrk   r%   r   r   r  r  1  r8  r   r  c                      G  fddj                   } |t          j                              }	 |                                d S # t          $ r0}d}                    |t          |                     Y d }~d S d }~ww xY w)Nc                       e Zd Z fdZdS )]AbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPicklerc                 Z    t          |t                    r                                 d S r$   )r   r  r  )r.   r   r  s     r   persistent_idzkAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickler.persistent_id6  s,    !#w// +"((***4r   N)r<   r=   r>   r  )r  s   r   EvilPicklerr  5  s.                     r   r  r  )r  r6   rB   r  r  r  ry   )r  r  r  r0  r  r  r.   s   `    r   checkzHAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check4  s                 dl      
 "k"*,,66G0Z((((( 0 0 0:hA/////////0s   A 
B%BBr   r   r$  )r   skipTestr   r  r  )r.   r  r  s   ` @r   %test_evil_pickler_mutating_collectionz9AbstractPickleTests.test_evil_pickler_mutating_collection+  s[   tY'' 	P--4:: N N NOOO	 	 	 	 	 	 	 		0 	0 	0 	0 	0 	0  	0 	0EE799+E799gii()))E799+E799gii()))E799a.!!!E799aA.///EgiiGII..////	0 	0r   )r<   r=   r>   	optimizedr   r  r  r   r  r!  r*  r(   r3  r5  r:  rB  rE  rG  rJ  rN  rT  rV  rY  r`  rc  re  rg  rj  rl  rn  rp  rs  ru  rw  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r1  r6  r:  r<  rD  rJ  rM  rQ  rY  r\  r_  rd  rk  ro  rt  r}  r  r  r  r  r  r  r  r  r	   r  r  r  r  r  r  r  r  r  r  r  r  r  r   skip_if_pgo_taskr  r  r  r)  r4  r;  rV  rd  rq  rw  r~  r  r  r  r  r  r  r  unittestskipIfr  r  r  r  r%   r   r   r  r    sv        I%/I   +9N& & &(/ / /	, 	, 	, 08Q 
# 
# 
# 
#( ( (9 9 9E E E :Bq & & & &42 2 2C C CO O O 08Q 
# 
# 
# 
#( ( (9 9 9G G G :Bq & & & &42 2 2C C CQ Q Q 4< 6 6 6 6, , ,= = =K K K >FST 9 9 9 986 6 6G G GU U U/ / /,	% 	% 	%+ + +. . .27 7 78 8 8@ @ @6 6 6< < <9 9 9: : :B B B8 8 8> > >& & &) ) ),	+ 	+ 	+' ' '
6 
6 
6L L L&& & &  % % %.0 0 0 _Xw00: : 10:/ / /. . .7 7 7, , ,* * *&" " "- - -2 2 24 4 4, , ,4 4 4J J J&L L LL L L%? %? %?N? ? ?2& & && & &A A AA A A&	( 	( 	(
  
  
    89 9 99 9 9
9 9 9
2 2 2,3 3 3.9 9 92* * * * * *(* * *(" " "2 2 2- - -- - -. . .2 2 2 % % Z%  .1 1 1, , ,, , ,+ + +
K 
K 
K) ) )M M MN N N N!-H -H -H^ 2 2 26 6 6@(F (F (FT ?. ?. ?.B2 2 2
 
 
8K 8K 8Kt*K *K *KXH H H$6 6 624 4 4(+ + +>(/ (/ (/T' ' '& & &? ? ?	- 	- 	-: : :
 X_R4Z!344* * 54*X4 4 4<0 0 0 0 0r   r  c                       e Zd Z eedd          d             Z eedd          d             Z eedd          d             Z eedd          d	             Z	 eedd          d
             Z
dS )BigmemPickleTestsg@F)sizememusedry_runc                 J   dd|z  z  }	 t           D ]}|dk     r	|                     |          5  |                     t          t          f          5  |                     ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   	 d }d S # d }w xY w)Nr   r  r   rx  r  )r  r  r  r+  rd  r  )r.   r  r  r  s       r   test_huge_long_32bz$BigmemPickleTests.test_huge_long_32bO  s:   QX	" 9 9199\\\.. 9 9**J+FGG 9 9

4%
8889 9 9 9 9 9 9 9 9 9 9 9 9 9 99 9 9 9 9 9 9 9 9 9 9 9 9 9 99 DDD4DKKKKsR   &B "BA6*B6A::B=A:>BB B	B B	B B"g      @c           
         d|dz  z  }	 t           D ]}|dk     r	|                     |          5  	 |                     ||          }t          j        t          j        dt          |                    z   }|                    |          }| 	                    |||t          |          z
  |                    d }n# d }w xY w	 d d d            n# 1 swxY w Y   	 d }d S # d }w xY w)N   abcdr  r  rx  r  rM  )
r  r  r  r   r  rO  rP  r/  r_  r   r.   r  r  r  r  header
data_starts          r   test_huge_bytes_32bz%BigmemPickleTests.test_huge_bytes_32b`  sQ   $!)$	" ' '199\\\.. 
' 
'	'"&**TE*"B"B"(/"(+dCII">">#?%,]]4%8%8
(("#Js6{{$::$EFH H H #'$
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
'' DDD4DKKKKsF   &C# CB	B>;C>CCC# C	C# C	C# #C'c           
         d|dz  z  }	 t           D ]0}|dk     r
|                     |          5  |dk    r]|                     t          t          f          5  |                     ||           d d d            n# 1 swxY w Y   	 d d d            	 |                     ||          }t          j        t          j	        dt          |                    z   }|                    |          }|                     |||t          |          z
  |                    d }n# d }w xY w	 d d d            n# 1 swxY w Y   2	 d }d S # d }w xY w)Ns   acbdr  r  rx  r  <Q)r  r  r  r+  rd  r  r   r  rO  rP  r/  r_  r   r  s          r   test_huge_bytes_64bz%BigmemPickleTests.test_huge_bytes_64bu  s   $!)$	" ' '199\\\.. ' 'zz "..
M/JKK = = JJteJ<<<= = = = = = = = = = = = = = = ' ' ' ' ' ' '	'"&**TE*"B"B"("2"(+dCII">">#?%,]]4%8%8
(("#Js6{{$::$EFH H H #'$!' ' ' ' ' ' ' ' ' ' ' ' ' ' ''* DDD4DKKKKsq   'E (D6A=1D6=BD6BD6	E B	D"D6"D&&D6*E 6D:	:E =D:	>E Er  c           
         d|dz  z  }	 t           D ])}|dk    r
|                     |          5  	 |                     ||          }t          j        t          j        dt          |                    z   }|                    d          }| 	                    |||t          |          z
  |                    | 	                    |
                    d          t          d          z   |                    d          z
  t          |                     d }n# d }w xY w	 d d d            n# 1 swxY w Y   +	 d }d S # d }w xY w)Nr\  r  r   rx  r  rM  r  )r  r  r  r   r  rO  rP  r/  r_  r   rindexr  s          r   test_huge_str_32bz#BigmemPickleTests.test_huge_str_32b  s   #	" ' 'A::\\\.. ' ''"&**TE*"B"B"("3"(+dCII">">#?%,]]7%;%;
(("#Js6{{$::$EFH H H (('..*A*ACLL*P*1--*@*@+ACFt99N N N #'$' ' ' ' ' ' ' ' ' ' ' ' ' ' ''" DDD4DKKKKsF   'E D/C%DD/DD/#E /D3	3E 6D3	7E Ec           
      V   d|dz  z  }	 t           D ]}|dk    r
|                     |          5  |dk     r]|                     t          t          f          5  |                     ||           d d d            n# 1 swxY w Y   	 d d d            	 |                     ||          }t          j        t          j	        dt          |                    z   }|                    d          }|                     |||t          |          z
  |                    |                     |                    d          t          d          z   |                    d          z
  t          |                     d }n# d }w xY w	 d d d            n# 1 swxY w Y   	 d }d S # d }w xY w)Nr\  r  r   rx  r  r  r  )r  r  r  r+  rd  r  r   r  rO  rP  r/  r_  r   r  r  s          r   test_huge_str_64bz#BigmemPickleTests.test_huge_str_64b  sY   #	" ' 'A::\\\.. ' 'qyy!..
M/JKK = = JJteJ<<<= = = = = = = = = = = = = = = 	' ' ' ' ' ' '
'"&**TE*"B"B"("4"(+dCII">">#?%,]]7%;%;
(("#Js6{{$::$EFH H H (('..*A*ACLL*P*1--*@*@+ACFt99N N N #'$!' ' ' ' ' ' ' ' ' ' ' ' ' ' ''* DDD4DKKKKsq   'F$ (FA=1F=BFBF	F$ C%E>;F>FFF$ F	F$ F	F$ $F(N)r<   r=   r>   r   r
   r  r  r   r  r  r  r%   r   r   r  r  K  s         ZSe444
 
 54
  ZSe444  54( ZSe444  54: ZSE222  324 ZSE222  32  r   r  c                       e Zd ZdZdZd ZdS )r  z4No __reduce_ex__ here, but inheriting it from objectr   c                 "    d| _         t          dfS )Nr   r%   )r  r  r2   s    r   rs   zREX_one.__reduce__  s    {r   Nr<   r=   r>   rI   r  rs   r%   r   r   r  r    s.        >>N    r   r  c                       e Zd ZdZdZd ZdS )r  z1No __reduce__ here, but inheriting it from objectNc                 "    || _         t          dfS rg   r  r  r.   r  s     r   r   zREX_two.__reduce_ex__      {r   r<   r=   r>   rI   r  r   r%   r   r   r  r    s.        ;;F    r   r  c                       e Zd ZdZd Zd ZdS )r  Nc                 "    || _         t          dfS rg   r  r  s     r   r   zREX_three.__reduce_ex__  r  r   c                      t          d          )Nz#This __reduce__ shouldn't be called)r   r2   s    r   rs   zREX_three.__reduce__  s    >???r   )r<   r=   r>   r  r   rs   r%   r   r   r  r    s<        F  @ @ @ @ @r   r  c                       e Zd ZdZdZd ZdS )r  z(Calling base class method should succeedNc                 F    || _         t                              | |          S r$   )r  r?  r   r  s     r   r   zREX_four.__reduce_ex__  s    ##D%000r   r  r%   r   r   r  r    s.        22F1 1 1 1 1r   r  c                       e Zd ZdZdZd ZdS )r  z-This one used to fail with infinite recursionr   c                 D    d| _         t                              |           S rP  )r  r?  rs   r2   s    r   rs   zREX_five.__reduce__  s      &&&r   Nr  r%   r   r   r  r    s.        77N' ' ' ' 'r   r  c                   ,    e Zd ZdZddZd Zd Zd ZdS )rA  z]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    Nc                     ||ng | _         d S r$   r>  )r.   r   s     r   rH   zREX_six.__init__      #/UUR


r   c                 ^    t          |           t          |          u o| j        |j        k    S r$   )r   r   r[   s     r   r]   zREX_six.__eq__  '    DzzT%[[(FTZ5;-FFr   c                 :    | j                             |           d S r$   )r   r   )r.   items     r   r   zREX_six.append  s    
$r   c                 N    t          |           dd t          | j                  d fS rg   )r   r  r   r2   s    r   rs   zREX_six.__reduce__  s#    Dzz2tT$*%5%5t;;r   r$   )r<   r=   r>   rI   rH   r]   r   rs   r%   r   r   rA  rA    sb         8 8 8 8G G G     < < < < <r   rA  c                   ,    e Zd ZdZddZd Zd Zd ZdS )r_  z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    Nc                     ||ni | _         d S r$   r\  )r.   r]  s     r   rH   zREX_seven.__init__  r  r   c                 ^    t          |           t          |          u o| j        |j        k    S r$   )r   r]  r[   s     r   r]   zREX_seven.__eq__  r  r   c                     || j         |<   d S r$   r\  )r.   r0  rp   s      r   __setitem__zREX_seven.__setitem__  s    
3r   c                 r    t          |           dd d t          | j                                                  fS rg   )r   r  r]  r   r2   s    r   rs   zREX_seven.__reduce__  s/    Dzz2tT4
0@0@0B0B+C+CCCr   r$   )r<   r=   r>   rI   rH   r]   r  rs   r%   r   r   r_  r_    sg         8 8 8 8G G G     D D D D Dr   r_  c                   ,    e Zd ZdZddZd Zd Zd ZdS )r  zUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    Nc                     || _         d S r$   r  r.   r  s     r   rH   zREX_state.__init__  rq   r   c                 ^    t          |           t          |          u o| j        |j        k    S r$   r   r  r[   s     r   r]   zREX_state.__eq__  r  r   c                     || _         d S r$   r  r  s     r   __setstate__zREX_state.__setstate__  rq   r   c                 0    t          |           d| j        fS rg   r
  r2   s    r   rs   zREX_state.__reduce__  s    Dzz2tz))r   r$   )r<   r=   r>   rI   rH   r]   r  rs   r%   r   r   r  r  
  sb            G G G  * * * * *r   r  c                       e Zd ZdZdS )rF  r   Nr<   r=   r>   rA  r%   r   r   rF  rF    s        FFFr   rF  c                       e Zd ZdZdS )MyFloatg      ?Nr  r%   r   r   r  r    s        FFFr   r  c                       e Zd ZdZdS )	MyComplexy      ?        Nr  r%   r   r   r  r     s        FFFr   r  c                       e Zd ZdZdS )MyStrr9  Nr  r%   r   r   r  r  #  s        FFFr   r  c                       e Zd ZdZdS )	MyUnicodeu	   hello ሴNr  r%   r   r   r  r  &  s        FFFr   r  c                       e Zd ZdZdS )r  r(  Nr  r%   r   r   r  r  )  s        FFFr   r  c                       e Zd Zg dZdS )r9  r(  Nr  r%   r   r   r9  r9  ,  s        YYFFFr   r9  c                       e Zd ZdddZdS )rX  r   r   r}   Nr  r%   r   r   rX  rX  /  s        1FFFr   rX  c                       e Zd ZddhZdS )r  r~   r   Nr  r%   r   r   r  r  2  s        3ZFFFr   r  c                   (    e Zd Z eddh          ZdS )r  r~   r   N)r<   r=   r>   r  rA  r%   r   r   r  r  5  s!        YSz""FFFr   r  c                       e Zd Zd ZdS )MyIntWithNewc                     t           r$   )AssertionError)r   rp   s     r   r   zMyIntWithNew.__new__>  s    r   N)r<   r=   r>   r   r%   r   r   r  r  =  s#            r   r  c                       e Zd Zej        ZdS )rL  N)r<   r=   r>   r  r   r%   r   r   rL  rL  A  s        kGGGr   rL  c                       e Zd ZdgZdS )r  r   N)r<   r=   r>   r   r%   r   r   r  r  E  s        IIIr   r  c                       e Zd Zd Zd ZdS )rO  c                      t          d          )Nz3SimpleNewObj.__init__() didn't expect to get called)r  r   s      r   rH   zSimpleNewObj.__init__I  s    MNNNr   c                 b    t          |           t          |          k    o| j        |j        k    S r$   )r  rZ   r[   s     r   r]   zSimpleNewObj.__eq__L  s'    4yyCJJ&J4=EN+JJr   N)r<   r=   r>   rH   r]   r%   r   r   rO  rO  H  s:        O O OK K K K Kr   rO  c                       e Zd Zd ZdS )r  c                     d| z  dfS )N%Xr  r%   r2   s    r   __getnewargs__zComplexNewObj.__getnewargs__P  s    tR  r   N)r<   r=   r>   r)  r%   r   r   r  r  O  s#        ! ! ! ! !r   r  c                       e Zd Zd ZdS )r  c                     d| z  fddifS )Nr(  baser  r%   r2   s    r   __getnewargs_ex__z!ComplexNewObjEx.__getnewargs_ex__T  s    t~|++r   N)r<   r=   r>   r-  r%   r   r   r  r  S  s#        , , , , ,r   r  c                       e Zd Zd ZdS )r  c                     | j          d S r$   )r   )r.   r0  s     r   __getattr__zBadGetattr.__getattr__X  s    r   N)r<   r=   r>   r0  r%   r   r   r  r  W  s#            r   r  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )AbstractPickleModuleTestsc                    t          t          d          }	 |                                 |                     t          | j        d|           t          j        t                     d S # t          j        t                     w xY wNr  {   r  r   closer  r+  r  r   unlinkr.   r  s     r   test_dump_closed_filez/AbstractPickleModuleTests.test_dump_closed_file^  m    	%GGIIIj$)S!<<<V$$$$$IV$$$$   6A( (Bc                    t          t          d          }	 |                                 |                     t          | j        d|           t          j        t                     d S # t          j        t                     w xY wr4  r6  r9  s     r   test_load_closed_filez/AbstractPickleModuleTests.test_load_closed_filef  r;  r<  c                     t          j                    }di dg}|                     ||           |                    d           |                     |          }|                     ||           d S )Nr5  |   r   )r6   rB   r  r8   loadr   )r.   streamr  r  s       r   test_load_from_and_dump_to_filez9AbstractPickleModuleTests.test_load_from_and_dump_to_filen  sh    R~		$AIIf%%	D)))))r   c                 F    |                      t          j        d           d S r   )r   r   r-  r2   s    r   test_highest_protocolz/AbstractPickleModuleTests.test_highest_protocolv  s!    0!44444r   c                 >   t          j                    }|                     d|d           |                     d|d           |                     dd           |                     dd           |                     |d           |                     |d           d S )Nr5  r   )filer   r  )r6   rB   r  r  Picklerr9  s     r   test_callapiz&AbstractPickleModuleTests.test_callapiz  s    JLL		#q"		#A	+++

3

3
$$$QQ$$$$$r   c                 L   t          t          d          }	 t          D ]%}|                     t          | j        d||           &	 |                                 t          j        t                     d S # |                                 t          j        t                     w xY w)Nwr5  )	r  r   r  r  r  r  r7  r   r8  rv  s      r   test_dump_text_filez-AbstractPickleModuleTests.test_dump_text_file  s    	%" G G!!)TYQFFFFG GGIIIV$$$$$ GGIIIV$$$$s   -A4 4/B#c                     t          j        d          }|                     t          t          j        t          j        f| j        |           d S )Ns   X''.)	r6   rB   r  r  rO  r  r   rc  rA  )r.   r  s     r   test_incomplete_inputz/AbstractPickleModuleTests.test_incomplete_input  s>    Jw8V\63IJDIWXYYYYYr   c                     G d d| j                   } G d d| j                  }|                     t          j         |            j        d           |                     t          j         |            j                   d S )Nc                       e Zd Zd ZdS );AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklerc                     d S r$   r%   r2   s    r   rH   zDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__        r   Nrc   r%   r   r   
BadPicklerrQ            $$$$$r   rT  c                       e Zd Zd ZdS )=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklerc                     d S r$   r%   r2   s    r   rH   zFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__  rS  r   Nrc   r%   r   r   BadUnpicklerrW    rU  r   rY  r   )rH  	Unpicklerr  r   r  r  rc  rA  )r.   rT  rY  s      r   test_bad_initz'AbstractPickleModuleTests.test_bad_init  s    	% 	% 	% 	% 	% 	% 	% 	%	% 	% 	% 	% 	%4> 	% 	% 	% 	&.

0A1EEE&0,,..2EFFFFFr   c                    t          d          }t          dd          D ]G}|                     t                    5   |||g j                   d d d            n# 1 swxY w Y   Ht          dt
          j        dz             D ]}g }|j        } ||||          }|                     d|           |                     t          |d                   d           |                     t
          j
                  5   ||           d d d            n# 1 swxY w Y    |||          }|                     ||           d S )Ns   foor   r   )r   r  r   r  )r   r7  r  r+  r   r   r-  r  r   r   rc  r   )	r.   r  r  r   r  r  r  r  r   s	            r   check_dumps_loads_oob_buffersz7AbstractPickleModuleTests.check_dumps_loads_oob_buffers  s    F##1a[[ 	1 	1E"":.. 1 1cE&(i1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1f59:: 	$ 	$EG%nO5u)8: : :DVT***U71:..777""6#9::  d              %g...CMM#s####	$ 	$s#   AA 	#A 	<DD	D	c                 F    |                      | j        | j                   d S r$   )r]  r  r  r2   s    r   test_dumps_loads_oob_buffersz6AbstractPickleModuleTests.test_dumps_loads_oob_buffers  s"    **4:tzBBBBBr   c                 H      fd} fd}                      ||           d S )Nc                 p    t          j                    } j        | |fi | |                                S r$   )r6   rB   r  rD   )r   r   r  r.   s      r   r  zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumps  s8    
ADIc1'''''::<<r   c                 H    t          j        |           } j        |fi |S r$   )r6   rB   rA  )r  r   r  r.   s      r   r  zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads  s,    
4  A49Q))&)))r   )r]  )r.   r  r  s   `  r   test_dump_load_oob_buffersz4AbstractPickleModuleTests.test_dump_load_oob_buffers  sS    	  	  	  	  	 
	* 	* 	* 	* 	* 	**5%88888r   N)r<   r=   r>   r:  r>  rC  rE  rI  rL  rN  r[  r]  r_  rc  r%   r   r   r2  r2  \  s        % % %% % %* * *5 5 5% % %% % %Z Z Z
G 
G 
G$ $ $0C C C9 9 9 9 9r   r2  c                        e Zd Zd Zd Zd ZdS )AbstractPersistentPicklerTestsc                     t          |t                    r(|dz  dk    r| xj        dz  c_        t          |          S |dk    r| xj        dz  c_        dS d S )Nr   r   r   test_false_valuerW  )r   r  id_country   false_count)r.   r?  s     r   r  z,AbstractPersistentPicklerTests.persistent_id  sf    fc"" 	vzQMMQMMv;;)))!24r   c                 l    |s| xj         dz  c_         dS | xj        dz  c_        t          |          }|S )Nr   rg  )load_false_count
load_countr  )r.   oidr?  s      r   persistent_loadz.AbstractPersistentPicklerTests.persistent_load  sD     	!!Q&!!%%OOq OOXXFMr   c           	         t          t          d                    dgz   }t          D ]}d| _        d| _        d| _        d| _        |                     |                     | 	                    ||                    |           |                     | j        d           |                     | j        d           |                     | j        d           |                     | j        d           d S )Nrg  rg  r   r   r   )
r   r7  r  rh  ri  rk  rl  r   r  r  )r.   Lr  s      r   test_persistencez/AbstractPersistentPicklerTests.test_persistence  s    rOO122 		7 		7EDM D$%D!DOTZZ

1e(<(<==qAAAT]A...T-q111T_a000T2A6666		7 		7r   N)r<   r=   r>   r  rn  rq  r%   r   r   re  re    sA            7 7 7 7 7r   re  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )&AbstractIdentityPersistentPicklerTestsc                     |S r$   r%   )r.   r   s     r   r  z4AbstractIdentityPersistentPicklerTests.persistent_id      
r   c                     |S r$   r%   )r.   pids     r   rn  z6AbstractIdentityPersistentPicklerTests.persistent_load  ru  r   c                     |                      |                     ||                    }|                     |t          |                     |                     ||           d S r$   )r  r  r.  r   r   )r.   r   r  r  s       r   _check_return_correct_typezAAbstractIdentityPersistentPicklerTests._check_return_correct_type  sY    JJtzz#u5566	ic333C(((((r   c                     t           D ]D}|dk    r|                     dd           ddddt          fD ]}|                     ||           Ed S )Nr   r   s   abc
zabc
r   g*\()r  ry  ry   )r.   r  r   s      r   test_return_correct_typez?AbstractIdentityPersistentPicklerTests.test_return_correct_type  s|     	@ 	@Ezz//q9999$gr:sC @ @C33C????@	@ 	@r   c                     d}|                      t          j        | j        |d           t          j        |                    d          z   dz   }|                      t          j        | j        |           d S )Nu   ∅r   r  r*  )r  r   r  r  PERSIDr   rc  r  )r.   non_ascii_strr  s      r   test_protocol0_is_ascii_onlyzCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_only  sh    '&.
M1MMM--"6"6w"?"??&H&0$*gFFFFFr   N)r<   r=   r>   r  rn  ry  r{  r  r%   r   r   rs  rs    sg            ) ) )
@ @ @G G G G Gr   rs  c                   X    e Zd ZdZdZd Zd Zd Zd Zd Z	ddd	Z
d
 Zd Zd Zd ZdS )#AbstractPicklerUnpicklerObjectTestsNc                     d S r$   r%   r2   s    r   r  z)AbstractPicklerUnpicklerObjectTests.setUp  rS  r   c                    g d}t           D ]9}t          j                    }|                     ||          }|                    |           |                                }|                    d           |                                 |                    |           |                                }|                                 |                    d           |                                 |                    |           |                                }| 	                    ||           | 
                    ||           ;d S )Nabcdefgr  ,   r   )r  r6   rB   pickler_classr  rD   r8   truncate
clear_memor  r   )r.   r  r  r  r  first_pickledsecond_pickledthird_pickleds           r   test_clear_pickler_memoz;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memo  s"    *)) 	; 	;E
A((E22GLLJJLLM FF1IIIJJLLLLLZZ\\N    FF1IIIJJLLLLLJJLLM~>>>]M::::/	; 	;r   c                    g d}t          j                    }|                     |          }|                    |           |                                }t          j                    }|                     |          }|j        |_        |                    |           |                                }|                     ||           d S Nr  )r6   rB   r  r  rD   memor  )r.   r  r  r  r  primedprimed_pickleds          r   test_priming_pickler_memoz=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memo5  s    )))JLL$$Q''T

JLL##A&&lDM>:::::r   c                 &   g d}t          j                    }|                     |          }|                    |           |                                }t          j                    }|                     |          }|j        |_        |                    |           |                                }|                     t          j        |                    }|                                }|                     ||           |                     t          j        |                    }|j        |_        |                                }	|j        	                                 |                     |	|           | 
                    |	|u            d S r  )r6   rB   r  r  rD   r  unpickler_classrA  r   r  r  )
r.   r  r  r  r  r  r  	unpicklerunpickled_data1unpickled_data2s
             r   test_priming_unpickler_memoz?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memoG  sL   )))JLL$$Q''T

JLL##A&&lD((M)B)BCC	#..**$///%%bj&@&@AAn ++--$///?:;;;;;r   c                 D   g d}t          j                    }|                     |          }|                    |           |                                }g d}t          j                    }|                     |          }|                    |           |                                }t          j                    }|                    |           |                    d           |                     |          }|                     |	                                |           |                    d           |
                                 |                    |           |                    d           |                     |	                                |           d S )Nr  )r  r  r  r   )r6   rB   r  r  rD   rG   r8   r  r   rA  r  )r.   data1r  r  pickled1r  pickled2r  s           r   test_reusing_unpickler_objectszBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectse  sT   ***JLL$$Q''U::<<###JLL$$Q''U::<<JLL		q			((++	))5111	q				

		q			))511111r   Tr3   c          
         t           D ]m}|                     |          5  d t          d          D             dt          gz   } |            }|                     ||          }|                    |           |                                }d} |||z            }|                     |          }	t          |          D ]z}
|r|                                }| 	                    |	
                                |           |r8| 	                    |                                |t          |          z              {|                     t          |	j
                   d d d            n# 1 swxY w Y   od S )Nrx  c                 0    g | ]}|t          |          fS r%   rx   r  s     r   r  zSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings.<locals>.<listcomp>  s"    :::!SVV:::r   i  s   abcder  r   )r  r  r7  r/  r  r  rD   r  r;   r   rA  r  r  )r.   ioclassr3   r  r  r  r  r  r  r  r  r  s               r   _check_multiple_unpicklingsz?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings~  s    	< 	<EE** < <::eDkk:::h_LGII,,Q,??U###**,,GGaK(( 0033	q G GA 'ffhh$$Y^^%5%5u=== G((3W3EFFF!!(IN;;;!< < < < < < < < < < < < < < <	< 	<s   D=E**E.	1E.	c                 D    |                      t          j                   d S r$   )r  r6   rB   r2   s    r   "test_multiple_unpicklings_seekablezFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekable  s    ((44444r   c                 >    |                      t          d           d S NFr  )r  r*   r2   s    r   $test_multiple_unpicklings_unseekablezHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekable  s!    (((FFFFFr   c                 >    |                      t          d           d S r  )r  r@   r2   s    r   !test_multiple_unpicklings_minimalzEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimal  s#     	((U(CCCCCr   c                    t          t          d                    }t          D ]}t          dd          D ]}t          j        t          j                    |          }|                     ||          }|                    |           |                    d           | 	                    |          }| 
                    |                                |           d S )Nrg  r      )buffer_sizer  r   )r   r7  r  r6   BufferedRandomrB   r  r  r8   r  r   rA  )r.   r  r  buf_sizer  r  r  s          r   "test_unpickling_buffering_readlinezFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline  s     E"II 	9 	9E!!RLL 9 9%bjllIII,,Q,??T"""q			 0033	  !1!1488889	9 	9r   )r<   r=   r>   r  r  r  r  r  r  r  r  r  r  r  r  r%   r   r   r  r    s        MO$ $ $; ; ;@; ; ;$< < <<2 2 22 @D < < < < <(5 5 5G G GD D D
9 9 9 9 9r   r  reduce_Ac                       e Zd Zd ZdS )r  c                      t           t          ffS r$   )ry   r  r2   s    r   rs   zAAA.__reduce__  s    XKr   Nr  r%   r   r   r  r    s#                 r   r  c                       e Zd Zd Zd ZdS )BBBc                     d| _         d S )Nzsome attributer~   r2   s    r   rH   zBBB.__init__  s     "r   c                     d| _         d S )NBBB.__setstate__r  r  s     r   r  zBBB.__setstate__  s    #r   N)r<   r=   r>   rH   r  r%   r   r   r  r    s2        " " "
$ $ $ $ $r   r  c                     d| _         dS )at  Custom state setter for BBB objects

    Such callable may be created by other persons than the ones who created the
    BBB class. If passed as the state_setter item of a custom reducer, this
    allows for custom state setting behavior of BBB objects. One can think of
    it as the analogous of list_setitems or dict_setitems but for foreign
    classes/functions.
    custom state_setterNr  )r   r  s     r   setstate_bbbr    s     "CEEEr   c                       e Zd ZdZd ZdS )AbstractCustomPicklerClassz<Pickler implementing a reducing hook using reducer_override.c                     t          |dd           }|dk    r	t          dfS |dk    r	t          dfS |dk    rdS |dk    rt          d	          t          S )
Nr<   r  )r   MyClass)some strgFhThe reducer just failed)r   r  ry   r+  r   )r.   r   obj_names      r   reducer_overridez+AbstractCustomPicklerClass.reducer_override  sl    3
D11s??:y  %%__ 5__ 6777r   N)r<   r=   r>   rI   r  r%   r   r   r  r    s)        FF    r   r  c                   4    e Zd Zd Zej        d             ZdS )AbstractHookTestsc                 |   d }d }d } G d d          }t          dt          j        dz             D ]}|                     |          5  t	          j                    }|                     ||          }|                    ||t          j	        g           t          j
        |                                          \  }}	}
|                     |d	           |                     |	d
           |                     |
t          j	                   |                     t          j                  5  |                    |           d d d            n# 1 swxY w Y   |                     t"          d          5  |                    |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nc                      d S r$   r%   r%   r   r   r  z.AbstractHookTests.test_pickler_hook.<locals>.f  rt  r   c                      d S r$   r%   r%   r   r   r  z.AbstractHookTests.test_pickler_hook.<locals>.g  rt  r   c                      d S r$   r%   r%   r   r   r  z.AbstractHookTests.test_pickler_hook.<locals>.h  rt  r   c                       e Zd ZdS )4AbstractHookTests.test_pickler_hook.<locals>.MyClassNrk   r%   r   r   r  r    r8  r   r  r   r   rx  r   r  r  )r7  r   r-  r  r6   rB   r  r  mathlogr  rD   r   r   r  r  assertRaisesRegexr+  )r.   r  r  r  r  r  bior  new_fsome_strmath_logs              r   test_pickler_hookz#AbstractHookTests.test_pickler_hook  s   
	 	 		 	 		 	 		 	 	 	 	 	 	 	 1f59:: 	 	EE**  jll&&sE227DH-...,2L,H,H)x  ***  :666
 h111&&v';<<  FF1III               ++"$=? ?  FF1III              %              	 	s[   C!F/.EF/EF/EF/6FF/FF/F F//F3	6F3	c                    t          dt          j        dz             D ]}|                     |          5  d }t	          j        |          }t          j                    }|                     ||          }|	                    |           t          j
        |                                          }~~|                      |                       d d d            n# 1 swxY w Y   d S )Nr   r   rx  c                      d S r$   r%   r%   r   r   r  zEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.f  s    Dr   )r7  r   r-  r  rG  refr6   rB   r  r  r  rD   rT  )r.   r  r  wrr  r  r  s          r   (test_reducer_override_no_reference_cyclez:AbstractHookTests.test_reducer_override_no_reference_cycle  s    1f59:: 	( 	(EE** ( (   [^^jll&&sE22q			S\\^^44 !!""$$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	(s   BCC!	$C!	N)r<   r=   r>   r  r   cpython_onlyr  r%   r   r   r  r    sC        & & &P ( ( ( ( (r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )AbstractDispatchTableTestsc                    t          j                    }|                     |d          }|                     t                    5  |j         d d d            n# 1 swxY w Y   |                     t          |d                     d S )Nr   dispatch_table)r6   rB   r  r  ru  r  rS  r   )r.   r  r  s      r   test_default_dispatch_tablez6AbstractDispatchTableTests.test_default_dispatch_table&  s    JLLq!$$~.. 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	$45566666s   AAAc                                                         G fdd j                  d fd	}                     |           d S )Nc                       e Zd Z ZdS )GAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r<   r=   r>   r  )dts   r   	MyPicklerr  2  s        NNNr   r  c                     t          j                    } ||          }                    |j                   |                    |            |                                S r$   )r6   rB   r   r  r  rD   )r   r   r  r  r  r  r.   s       r   r  zCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumps5  sU    
A	!X&&AQ-r222FF3KKK::<<r   r$   )get_dispatch_tabler  _test_dispatch_table)r.   r  r  r  s   ` @@r   test_class_dispatch_tablez4AbstractDispatchTableTests.test_class_dispatch_table.  s    $$&&	  	  	  	  	  	  	 * 	  	  	 	  	  	  	  	  	  	  	  	!!%,,,,,r   c                 l                                       d fd	}                     |           d S )Nc                     t          j                    }                    ||          }|_                            |j                   |                    |            |                                S r$   )r6   rB   r  r  r   r  rD   )r   r   r  r  r  r.   s       r   r  zFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumpsB  sa    
A""1h//A!AQ-r222FF3KKK::<<r   r$   )r  r  )r.   r  r  s   ` @r   test_instance_dispatch_tablez7AbstractDispatchTableTests.test_instance_dispatch_table>  sV    $$&&	  	  	  	  	  	  	  	!!%,,,,,r   c                    fd}d }d}|                       ||          |           |                       ||          |           dfd}||t          <   |                       ||                     |                       ||          |           t                      }t                      }|                       ||          t                     |                      ||          t                     |                       ||          t                     |                      ||          t                     ||t          <   |                       ||          t                     |                       ||                     |                       ||          t                     |                      ||          t                     dfd}	|	|t          <   |t          = |                       ||                     |                      ||          t                     |                       ||          t                     |                      ||          t                     |                       ||          j        d           d	 }
|
|t          <   |                       ||          j        d
           d S )Nc                 @    t          j         | d                    S Nr   )r   r  )r   r  s    r   custom_load_dumpzIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpM  s    <c1...r   c                 P    t          j        t          j        | d                    S r  )r   r  r  r  s    r   default_load_dumpzJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpP  s    <S! 4 4555r   y      ?       @reduce_1c                     t           ffS r$   rx   )r   REDUCE_1s    r   r  zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1[      ##r   reduce_2c                     t           ffS r$   rx   )r   REDUCE_2s    r   r  zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2r  r  r   r  c                 0    t           d| j        d d t          fS rg   )r  rZ   r  r  s    r   
reduce_bbbzCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbb  s    CL$lBBr   r  )r   complexr  r  r  r.  r~   )r.   r  r  r  r  r  r  r~   r   r  r  r  r  s    `         @@r   r  z/AbstractDispatchTableTests._test_dispatch_tableL  sD   	/ 	/ 	/ 	/ 	/	6 	6 	6
 ))!,,a000**1--q111 	$ 	$ 	$ 	$ 	$"*w))!,,h777**1--q111 EEEE))!,,h777..q113777**1--x888//22C888 's))!,,h777))!,,h777**1--x888//22C888 	$ 	$ 	$ 	$ 	$&s3))!,,h777..q113777**1--x888//22C888 	**1--/1CDDD	C 	C 	C )s 	))!,,.0EFFFFFr   N)r<   r=   r>   r  r  r  r  r%   r   r   r  r  $  sZ        7 7 7- - - - - -@G @G @G @G @Gr   r  r$  zDATA{0} = (r  z	    {0!r}r   z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")r  r  rN   r  r6   r  r  r  r   r   r  rO  r  r	  r  r  rG  textwrapr   http.cookiesr   r   r
  testr   test.supportr   r   r   r	   r
   r   r   test.support.import_helperr   test.support.os_helperr   r   test.support.warnings_helperr   r   numpyr  
skipUnlessr  r  r7  r-  r  r   r"   r(   rB   r*   r?  r@   rK   rX   r_   re   rj   rn   rt   r=   r  rv   r{   r   r   r   r   r   r   r   rt  r   r   r  r'  r  r(  r  	DATA2_DISr  	DATA3_DISr  	DATA4_DISr4  r6  r8  r  ArithmeticErrorr   ru  r  BufferErrorBytesWarningDeprecationWarningr  EnvironmentErrorr<  FloatingPointErrorFutureWarningGeneratorExitIOErrorImportWarningIndentationError
IndexErrorKeyErrorKeyboardInterruptLookupErrorMemoryError	NameErrorr,   r  rd  PendingDeprecationWarningReferenceErrorr  RuntimeWarningStopIterationSyntaxErrorSyntaxWarningSystemError
SystemExitTabErrorr  UnboundLocalErrorUnicodeErrorUnicodeWarningUserWarningr+  Warningr  r:  r;  r=  r   r   r  r  r  r  r  r  r  rA  r_  r  rF  floatr  r  r  ry   r  r  rD  r  r   r9  r   rX  r5  r  r  r  r?  r  rL  r  rO  r  r  r  r2  re  rs  r  r  r  r  r  r  r  r  r<   r%  r'   r  r  r  r  r   r/  jr   r%   r   r   <module>r+     sG         



 				     				         



              % % % % % %   KKK       " " " " " "                . - - - - - ) ) ) ) ) ) ) ) ) ) ) ) F F F F F F      
	&	&	(	(                   	BBB #x"3;#6#MO O E&)A-..	      & & & & &2: & & &	% 	% 	% 	% 	% 	% 	% 	%,: : : : : : : :*/ / / / / / / /              
	 	 	 	 	 	 	 	                


    C       a   	 	 	 	 	 	 	 		 	 	 	 	Fi 	 	 	 	8 8 8 8 8 8 8 8           E      8         	      8 G( G( G( G( G( G( G( G(\ (P	f%  >	B	 7	t	
 7	t. @	F Q TQ L	.#.#.# .# 	.#
 .# .# .# .# .# .# .# .# .# .# .#  !.#" #.#$ %.#& '.#( ).#* +.#, -.#. /.#0 1.#2 3.#4 5.#6 7.#8 9.#: ;.#< =.#@ A.#B C.#D E.#F G.#H I.#J K.#L M.#N O.#P Q.#R S.#T U.#V W.#X Y.#Z [.# .# ` < ,

  *b	! b	! b	! b	! b	! b	! b	! b	!La0 a0 a0 a0 a0 a0 a0 a0H5| | | | | | | |B    f       f   @ @ @ @ @ @ @ @1 1 1 1 1v 1 1 1' ' ' ' 'v ' ' '< < < < <f < < <D D D D D D D D* * * * * * * *     C       e              C              e       T       T       C   # # # # #) # # # GIffe[:	
    3       L       v   K K K K K3 K K K! ! ! ! !L ! ! !, , , , ,l , , ,       
h9 h9 h9 h9 h9 h9 h9 h9V%7 %7 %7 %7 %7 %7 %7 %7PG G G G G G G G:\9 \9 \9 \9 \9 \9 \9 \9B          &      $ $ $ $ $& $ $ $	" 	" 	"       0?( ?( ?( ?( ?( ?( ?( ?(DhG hG hG hG hG hG hG hGV zAU6*1,--  FLAm""1%%&&&q##a&&"%% 	) 	)Aa!B$i  AE+$$Q''((((c


(//22333&--a00111Ah!  sH   A A! A!
C )B:.C :B>>C B>C CC