
    dafY?             
       
   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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        ejV                  ejX                  dk  d      Z- e.ej^                  dz         Z0d Z1d Z2d Z3 G d dejh                        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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(  rd dl	mZ  e       Z e.ej^                  dz         D ]  Z ej|                  ee      Z edj                  e              e.d  ee      d      D ](  Z eHeeedz          Z edj                  eī             *  ed        e         edj                  e              edj                  e              ee        ed        e         yy# e$ r dZY w xY w# 1 sw Y   PxY w# e$ r dZ*Y ]w xY w)    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                  | j                  d      k(  s& y y)Nlatin-1TFpickletoolsgenopscodedecode)r   pickleopdummys       ,/root/Python-3.12.4/Lib/test/pickletester.pyopcode_in_pickler   ;   s@    '..v6 E577dkk),,     c                     d}t        j                  |      D ]*  \  }}}|j                  | j                  d      k(  s&|dz  }, |S )Nr   r   r   r   )r   r   nr   r   s        r   count_opcoder"   B   sM    	A'..v6 E577dkk),,FA Hr   c                     | S N xs    r   identityr(   J   s    Hr   c                   $    e Zd Zd Zd Zd Zd Zy)UnseekableIOc                     t         r$   )NotImplementedErrorselfargss     r   peekzUnseekableIO.peekO   s    !!r   c                      y)NFr%   r.   s    r   seekablezUnseekableIO.seekableR   s    r   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   s    "&&r   r*   c                       e Zd ZdZd Zy)	MinimalIOz=
    A file-like object that doesn't support readinto().
    c                 
   t        j                  | | _        | j                  j                  | _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  | _        y r$   )r6   BytesIO_biogetvaluereadreadlinewriter-   s     r   __init__zMinimalIO.__init__`   sR    JJ%			**IINN			**YY__
r   N)r<   r=   r>   __doc__rH   r%   r   r   r@   r@   \   s    %r   r@   c                       e Zd Zd Zd Zy)ExtensionSaverc                     || _         |t        j                  v rJt        j                  |   | _        t        j                  | j                  d   | j                  d   |       y d | _        y Nr   r   )r   copyreg_inverted_registrypairremove_extension)r.   r   s     r   rH   zExtensionSaver.__init__u   sR    	7---2248DI$$TYYq\499Q<FDIr   c                     | j                   }t        j                  j                  |      }|t        j                  |d   |d   |       | j
                  }|t        j                  |d   |d   |       y y rM   )r   rN   rO   getrQ   rP   add_extension)r.   r   curpairrP   s       r   restorezExtensionSaver.restore~   so    yy,,006$$WQZTByy!!$q'47D9 r   N)r<   r=   r>   rH   rV   r%   r   r   rK   rK   r   s    :r   rK   c                       e Zd Zd Zy)Cc                 4    | 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y)Dc                      y 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y)Ec                      yNr%   r%   r2   s    r   __getinitargs__zE.__getinitargs__   s    r   N)r<   r=   r>   rh   r%   r   r   re   re      s    r   re   c                       e Zd Zy)ObjectNr<   r=   r>   r%   r   r   rj   rj          r   rj   c                       e Zd Zd Zd Zy)Kc                     || _         y 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      s     r   rn   __main__c                       e Zd Zd Zy)myintc                 $    t        |      | _         y r$   str)r.   r'   s     r   rH   zmyint.__init__   s    q6r   Nrc   r%   r   r   rv   rv      s    r   rv   c                       e Zd Zd Zd Zy)initargc                      || _         || _        y r$   ab)r.   r~   r   s      r   rH   zinitarg.__init__   s    r   c                 2    | j                   | j                  fS r$   r}   r2   s    r   rh   zinitarg.__getinitargs__   s    vvtvv~r   N)r<   r=   r>   rH   rh   r%   r   r   r{   r{      s    r   r{   c                       e Zd Zy)	metaclassNrk   r%   r   r   r   r      rl   r   r   c                       e Zd Zy)use_metaclassNrk   r%   r   r   r   r      rl   r   r   )r   c                       e Zd Zd Zd Zy)pickling_metaclassc                 f    t        |       t        |      k(  xr | j                  |j                  k(  S r$   )typereduce_argsr[   s     r   r]   zpickling_metaclass.__eq__   s0    T
d5k) 6  E$5$55	7r   c                 &    t         | j                  fS r$   )create_dynamic_classr   r2   s    r   rs   zpickling_metaclass.__reduce__   s    $d&6&677r   N)r<   r=   r>   r]   rs   r%   r   r   r   r      s    78r   r   c                 B    t        | |t                     }| |f|_        |S r$   )r   dictr   )namebasesresults      r   r   r      s#    eTV4FFMr   c                   <    e Zd ZdZdZdZdZd Zd ZeZ	e
d        Zy)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__   I    q=:**V-@-@-F,H$NN:**U4[N::r   c                 `    dj                  | j                  j                  t        |             S Nz{}({!r})format	__class__r<   r   r2   s    r   __repr__zZeroCopyBytes.__repr__   #      !8!8%+FFr   c                     t        |      5 }|j                  }t        |      | u r|cd d d        S  | |      cd d d        S # 1 sw Y   y xY wr$   
memoryviewobjr   clsr   ms      r   r   zZeroCopyBytes._reconstruct   K    _ 	 %%CCyC		  	  3x	  	  	    AAANr<   r=   r>   readonlyc_contiguousf_contiguouszero_copy_reconstructr   r   __str__classmethodr   r%   r   r   r   r      s;    HLL ;G G   r   r   c                   <    e Zd ZdZdZdZdZd Zd ZeZ	e
d        Zy)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                  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 Y   y xY wr$   r   r   s      r   r   zZeroCopyBytearray._reconstruct   r   r   Nr   r%   r   r   r   r      s;    HLL ;G G   r   r   c                   t    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y)PicklableNDArrayFc                 8    t        j                  |i || _        y r$   )_testbufferndarrayarrayr.   r/   kwargss      r   rH   zPicklableNDArray.__init__	  s    $,,d=f=DJr   c                 f    t        |       }|j                  |      }| j                  |   |_        |S r$   )r   __new__r   )r.   idxr   news       r   __getitem__zPicklableNDArray.__getitem__  s-    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                    t        |t              st        S |j                  j                  | j                  j                  k(  xr |j                  j
                  | j                  j
                  k(  xr |j                  j                  | j                  j                  k(  xrd |j                  j                  | j                  j                  k(  xr5 |j                  j                         | j                  j                         k(  S r$   )	
isinstancer   NotImplementedr   r   shapestridesr   tobytesr[   s     r   r]   zPicklableNDArray.__eq__  s    e%56%%KK&&$***;*;; BKK%%)9)99BKK''4::+=+==B KK((DJJ,?,??B KK'')TZZ-?-?-AA	Cr   c                 :    t        |t              st        S | |k(   S r$   )r   r   r   r[   s     r   __ne__zPicklableNDArray.__ne__'  s     e%56%%&&r   c                     t        |        d| j                  j                   d| j                  j                   d| j                  j	                          dS )Nz(shape=z	,strides=z, bytes=))r   r   r   r   r   r2   s    r   r   zPicklableNDArray.__repr__,  sU    Dzl'$***:*:); <#zz112 3!ZZ//12!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 |j                         5 }t        |       j                  |j                         |ffcd d d        S # 1 sw Y   y xY w)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  s    ::(() +K L L'+zz'7'7)-););(,

(9(9-1]]-8-D-D	GN
 $$TZZ0B1}T
//^,. . VVX ; J33YY[.9;; ; ;s   'C??Dc                     t        |      5 }t        |j                               }d d d         | fi |S # 1 sw Y   xY wr$   )r   listr   )r   r   r   r   itemss        r   r   zPicklableNDArray._reconstructD  sD    C *A QYY[)* u'''	* *s	   7A N)r<   r=   r>   r   rH   r   propertyr   r   r   r]   r   r   r   r   r   r%   r   r   r   r     sy     !&	>	 
	' 
	' 
	+ 
	+ 
	+ 
	+	C	'
	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}|j                  dd|| | dz
  || | dz
  || | dz
  g       dd| | f}|j	                  |       |j	                  |       |j	                  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 
q!AHHQKHHQKHHQK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- Z1e2jf                   e2jh                         d.               Z5y)0AbstractUnpickleTestsNc           	         |dj                  ||      }| j                  |||       | j                  t        |      t        |      |       t	        |d      rP| j                  |j                  |j                  |       | j                  |j                  |j                  |       t	        |d      r| j                  |j                  |j                  |       |j                  D ]T  }| j                  t	        ||      t	        ||      |       | j                  t        ||d      t        ||d      |       V yy)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CCg3/d3igC83
#  w/?/?S IS\\7+;+;E3$  0A0As K H  C&(>C ! I  dD!9!($!=3 ! HH %r   c           
      ^   | j                  |      5  | j                  |      5  	 | j                  |       	 d d d        d d d        y # t        $ rA}t        j
                  dkD  r(t        |dd|j                  j                  d|        d }~ww xY w# 1 sw Y   _xY w# 1 sw Y   y xY w)N)datar   32z - z: )	subTestassertRaisesloadsBaseExceptionr   verboseprintr   r<   )r.   errorsr  excs       r   check_unpickling_errorz,AbstractUnpickleTests.check_unpickling_errorX  s    \\t\$ 	v&	

4 	 	 	 ! ??Q&!7!7> ?			 	 	 	s>   B#BA
B#
	B<BBBB 	B##B,c                 b    | j                  | j                  | j                  t                     y r$   )r   	_testdatar  DATA0r2   s    r   test_load_from_data0z*AbstractUnpickleTests.test_load_from_data0c      DNNDJJu,=>r   c                 b    | j                  | j                  | j                  t                     y r$   )r   r  r  DATA1r2   s    r   test_load_from_data1z*AbstractUnpickleTests.test_load_from_data1f  r  r   c                 b    | j                  | j                  | j                  t                     y r$   )r   r  r  DATA2r2   s    r   test_load_from_data2z*AbstractUnpickleTests.test_load_from_data2i  r  r   c                 b    | j                  | j                  | j                  t                     y r$   )r   r  r  DATA3r2   s    r   test_load_from_data3z*AbstractUnpickleTests.test_load_from_data3l  r  r   c                 b    | j                  | j                  | j                  t                     y 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                  j	                  d      }	 dj                  d|      }| j                   || | j                  |             	 dj                  d|      }| j                   || | j                  |             	 dj                  d|      }| j                   || | j                  |              y )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	?GAtJJ%%g.E	# %,GD%$8  4$**W*=>
./6wtU/C  4$**W*=>./6wtU/C  4$**W*=>i4	?r   c                     d}dt        |      j                  d      z   dz   }| j                  |      }| j                  ||       dt        |      j                  d      z   dz   }| j	                  t
        |       y )Nl       Ir     
.s   JUNK
.)ry   r   r  r   r  
ValueError)r.   maxint64r  gots       r   test_maxint64z#AbstractUnpickleTests.test_maxint64  ss     c(m**733f<jjHc* c(m**733j@##J5r   c                    | j                  t              }| j                  |t        ddg             | j                  t              }| j                  t        |      t        t        d                   | j                  t        |      t        t        d                   | j                  t              }| j                  t        |      t               | j                  t        |j                               dg       | j                  |d   j                  d       t        D ]]  }t        j                  d|j                  j!                  d            }| j                  |      }| j#                  t        |      |       _ | j                  t        j                  dd	            }| j#                  t        |      t$               | j                  t&              }| j#                  t        |      t(               | j                  |j*                  d
       | j                  |j,                  d       | j                  |j.                  d       | j                  |j0                  d       | j                  |j2                  d       y )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  s   H%aV-K(ftE!H~6ftE!H~6K(f|4fkkm,ug6,,g6 3 	-C#++D#,,2E2Eg2NODZZ%FMM$v,,	- ,44T;KLMd6lI.J'd6l$67.'2q)Q'.r   c                     | j                  | j                  dd      d       | j                  | j                  dd      d       | j                  | j                  dd      d       y )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 $ 67C	E 	$6-4 $ 67C	E 	$>-4 $ 67C	Er   c                     | j                  | j                  dd      d       | j                  | j                  dd      d       | j                  | j                  dd      d       y )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  sz    N-4 $ 67;	= 	$A-4 $ 67;	= 	$I-4 $ 67;	=r   c           	          | j                  | j                  t        j                  t	        j
                  dd      z   dz   t        j                  z   d      d       y )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  s[    F$4$4$*KKc$:%;$.%/17%= .5 $ 6 8B	Cr   c                 L   | j                  | j                  d             | j                  | j                  d      d       | j                  | j                  d      d       | j                  | j                  d      d       | j                  | j                  d      d       y )Ns   N.s   .Ts   .Fs   I01
.s   I00
.)assertIsNoner  r   r2   s    r   test_constantsz$AbstractUnpickleTests.test_constants  su    $**U+,djj*D1djj*E2djj+T2djj+U3r   c                 N    | j                  dd      }| j                  |d       y )Ns   U q .zkoi8-rrG   )r  r   )r.   emptys     r   test_empty_bytestringz+AbstractUnpickleTests.test_empty_bytestring  s%    

1H
E#r   c                 J    d}| j                  | j                  |      d       y )Ns	   C€ .   € rH  r.   dumpeds     r   test_short_binbytesz)AbstractUnpickleTests.test_short_binbytes  s!    2F+-@Ar   c                 J    d}| j                  | j                  |      d       y )Ns   B   € .r[  rH  r\  s     r   test_binbytesz#AbstractUnpickleTests.test_binbytes   s!    >F+-@Ar   c                 T    d}| j                  t        j                  t        f|       y )Ns   Bxyzq .r  r   UnpicklingErrorOverflowErrorr\  s     r   test_negative_32b_binbytesz0AbstractUnpickleTests.test_negative_32b_binbytes  '     7##V%;%;]$K$*	,r   c                 T    d}| j                  t        j                  t        f|       y )Ns   Xxyzq .rb  r\  s     r   test_negative_32b_binunicodez2AbstractUnpickleTests.test_negative_32b_binunicode  rf  r   c                 J    d}| j                  | j                  |      d       y )Ns	   € .   € rH  r\  s     r   test_short_binunicodez+AbstractUnpickleTests.test_short_binunicode  s     5F+\:r   c                 
   | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  d       | j                  ddg| j	                  d             y )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  sf    ##F$:$:IF##F$:$:HE##F$:$:HEVV, JJ'<=	?r   c                 J    d}| j                  | j                  |      d       y )Ns          € .r[  rH  r\  s     r   test_binbytes8z$AbstractUnpickleTests.test_binbytes8  s!    AF+-@Ar   c                 J    d}| j                  | j                  |      d       y )Ns          € .rj  rH  r\  s     r   test_binunicode8z&AbstractUnpickleTests.test_binunicode8!  s     AF+\:r   c                 \    d}| j                  | j                  |      t        d             y )Ns          xxx.s   xxx)r   r  	bytearrayr\  s     r   test_bytearray8z%AbstractUnpickleTests.test_bytearray8%  s%    DF+Yv->?r   c                 T    d}| j                  t        j                  t        f|       y )Ns         € .rb  r\  s     r   test_large_32b_binbytes8z.AbstractUnpickleTests.test_large_32b_binbytes8)  %    A##V%;%;]$K$*	,r   c                 T    d}| j                  t        j                  t        f|       y )Ns         € .rb  r\  s     r   test_large_32b_bytearray8z/AbstractUnpickleTests.test_large_32b_bytearray8/  rx  r   c                 T    d}| j                  t        j                  t        f|       y )Ns         € .rb  r\  s     r   test_large_32b_binunicode8z0AbstractUnpickleTests.test_large_32b_binunicode85  rx  r   c                     d}| j                  |      }| j                  |g fdz         | j                  |d   |d          y )Ns   ((lp100000
g100000
t.r   r   r   r  r   r   r.   pickled	unpickleds      r   test_getzAbstractUnpickleTests.test_get;  sA    ,JJw'	RE!G,ilIaL1r   c                     d}| j                  |      }| j                  |g fdz         | j                  |d   |d          y )Ns   (]qht.r   r   r   r~  r  s      r   test_bingetz!AbstractUnpickleTests.test_bingetA  sA    #JJw'	RE!G,ilIaL1r   c                     d}| j                  |      }| j                  |g fdz         | j                  |d   |d          y )Ns   (]r   j   t.r   r   r   r~  r  s      r   test_long_bingetz&AbstractUnpickleTests.test_long_bingetG  sA    ;JJw'	RE!G,ilIaL1r   c                     d}| j                  |      }| j                  |g fdz         | j                  |d   |d          y )Ns   ((l2t.r   r   r   r~  r  s      r   test_dupzAbstractUnpickleTests.test_dupM  sA    JJw'	RE!G,ilIaL1r   c                 4    d}| j                  t        |       y )Ns   Va
p-1
.r  r+  r\  s     r   test_negative_putz'AbstractUnpickleTests.test_negative_putS  s    ##J7r   c                 4    d}| j                  t        |       y )Ns   X   ar.r  r\  s     r   test_negative_32b_binputz.AbstractUnpickleTests.test_negative_32b_binputX  s     A##J7r   c                 0    | j                  t        d       y )Ns   S'\'
.r  r2   s    r   test_badly_escaped_stringz/AbstractUnpickleTests.test_badly_escaped_string^  s    ##J<r   c                 Z    g d}|D ]"  }| j                  t        j                  |       $ y )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  s2    
  	CA''(>(>B	Cr   c                 b    g d}|D ]&  \  }}| j                  | j                  |      |       ( y )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  s6    - ' 	6KAxTZZ]H5	6r   c                 J    d}| j                  | j                  |      d       y )Ns          I42
.*   rH  )r.   r  s     r   test_frame_readlinez)AbstractUnpickleTests.test_frame_readline{  s"    G
 	G,b1r   c                 2   d}| j                  |      }| j                  t        |      t               | j	                  |t        dd             | j	                  t        |      g d       d}| j                  | j                  |      t        j                         d}| j                  | j                  |      t        j                         dD ]U  }d|z   d	z   }| j                  |      }| j                  t        |      t               | j	                  t        |      d
       W dD ]k  }d|z   dz   }| j                  |      }| j                  t        |      t        j                         | j	                  |t        j                  ddi             m y )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  sQ   HJJw'	d9ou-E!QK0i*<=4djj)9+;+;<1djj)3;;74 	4D/$69LLG

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

7+IMM$y/;+?+?@Y(<(<aV(DE	Fr   c                     | j                  | j                  d      d       | j                  t        d       | j                  t        d       y )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  s=    $:;Q?##Iw7##I/EFr   c                     t         j                  t        f}| j                  | j	                  d      d       | j                  |d       | j                  |d       y )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  sN    ''3$=>B##E+DE##E+DEr   c                     t         j                  t        f}| j                  | j	                  d      d       | j                  |d       | j                  |d       | j                  |d       y )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##E+EF##E+EF##E+EFr   c                 R    g d}|D ]  }| j                  | j                  |         y )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  s3    -

\  	BA''(=(=qA	Br   c                 R    g d}|D ]  }| j                  | j                  |         y )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  s3    "

F  	BA''(=(=qA	Br   c                     | j                  t        d       | j                  t        d       g d}|D ]  }| j                  | j                  |         y )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	  sT    ##Hc2##Hd3X

r  	BA''(=(=qA	Br   c                    
 t        d      }t        d      }t        j                  t               | j	                  t
        j                  t               t        j                  j                  dt               | j	                  t        j                  j                  t               t        t        j                  j                  t        d      d      5 }|j                  |j                  d             d d d        t        t        j                  j                  t        d      d      5 }|j                  |j                  d             d d d        | j	                  t        d       | j	                  t        d	       dd l}d
g t#        j$                  d      

fd}t#        j&                  |      }t#        j&                  |      }|j)                          |j)                          
j+                          |j,                  j+                          |j                          |j                          ddlm} | j3                  D 	cg c]  }	t5        |	       c}	|gdz         y # 1 sw Y   {xY w# 1 sw Y   1xY wc c}	w )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                  n     j                          j                  t        j                               y r$   )waitr   r   r  )barrierpickle_bytesresultss   r   tz:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t  s#     LLNNN6<<56r   )target)ToBeUnpickledr   )r   osmkdirr   
addCleanupshutilrmtreesyspathinsertremoveopenjoinrG   r   r   r  	threadingBarrierThreadrA  r  r  r  r  r   r   )r.   locker_modulelocking_import_modulefr  r  t1t2r  r'   r  r  r  s             @@@r   test_unpickle_module_racez/AbstractUnpickleTests.test_unpickle_module_raceh  s        !' ( ! 	v.6"0"'',,v{3T: 	3aGGM((12	3"'',,v':;TB 	;aGG)009:	;) 01 H 	 ##A&	7 Q'Q'




	
	0%&T!W&Oa	!M	3 	3	; 	;J 's   !I1.!I>J1I;>J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  s    IH$	?????7?r6/<	E	=C4$
BB , , , ,;?B;@ , ,
 , ,
 , ,
22228
 8 8
=C$62F6G
FG0Bd%BN]B~ ""00029! 3 #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;d7 Z< e=d8d9d:      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` Zcda Zdeedb        Zfdc Zgdd Zhde Zidf Zjdg Zkdh Zldi Zmdj Zndk ZodlZpdmZqdn Zresj                   esj                  do      dp               Zvdq Zwdr Zxesj                  ds        Zydt Zzdu Z{dv Z|dw Z}dx Z~dy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Z ej                  edu d      d        Zd Zd Zy)AbstractPickleTestsFc                      y r$   r%   r2   s    r   setUpzAbstractPickleTests.setUp  rb   r   c                    t         D ]  }t        d      }| j                  ||      }| j                  |      }| j	                  ||       d}| j                  ||      }| j                  |      }| j	                  ||       t        d|      }| j                  ||      }| j                  |      }| j	                  ||        y )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 ]7  }| j                  ||      }| j                  |      }| j	                  ||       9 y r$   )r  r  r  r  r   )r.   r  r  r  r-  s        r   test_roundtrip_equalityz+AbstractPickleTests.test_roundtrip_equality  sG    >> 	/E

8U+A**Q-C#.	/r   c                     ddl m} ddlm} dt        fdt
        ffD ]T  \  }}| j                  | j                  |      } |       } |||       |j                         }| j                  ||       V y )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  sk    # !9~9~= 	,OE8

4>>51AzHx ##%CXs+	,r   r   c                 R    |       }|j                  |       t        |t        j                  dz         D ]o  }| j	                  ||      }| j                  |      }| j                  ||        ||      }| j                  t        |      d       | j                  |d   |       q y 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    E	;(?(?!(CD 	#E

1e$A

1A!!!S)q	ASVQ'MM!A$"	#r   c                 .    | j                  t               y r$   )r/  r   r2   s    r   test_recursive_listz'AbstractPickleTests.test_recursive_list      !!$'r   c                 2    | j                  t        d       y Nr   )r-  )r/  MyListr2   s    r   test_recursive_list_subclassz0AbstractPickleTests.test_recursive_list_subclass      !!&a!8r   c                 4    | j                  t        d        y )Nc                     | j                   S r$   r   r&   s    r   <lambda>z>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>  s
    AGG r   r,  )r/  REX_sixr2   s    r   test_recursive_list_likez,AbstractPickleTests.test_recursive_list_like  s    !!'2C!Dr   c                 b    |       f}|d   j                  |       t        |t        j                  dz         D ]  }| j	                  ||      }| j                  |      }| j                  |t               | j                  t        |      d       | j                  |d   |        ||d         }| j                  t        |      d       | j                  |d   |        |\  }t        |t        j                  dz         D ]  }| j	                  ||      }| j                  |      }| j                  ||        ||      }| j                  t        |      d       | j                  |d   t               | j                  t        |d         d       | j                  |d   d   |        y rM   )r   r7  r   r)  r  r  r*  tupler   r+  r   )	r.   r   r,  r-  r  r  r  r'   r   s	            r   _test_recursive_tuple_and_listz2AbstractPickleTests._test_recursive_tuple_and_list  sy   UH	!A;(?(?!(CD 	#E

1e$A

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

1e$A

1A!!!S)q	ASVQ'!!!A$.S1Y*MM!A$q'1%	&r   c                 .    | j                  t               y r$   )rA  r   r2   s    r   test_recursive_tuple_and_listz1AbstractPickleTests.test_recursive_tuple_and_list      ++D1r   c                 2    | j                  t        d       y r4  )rA  r5  r2   s    r   &test_recursive_tuple_and_list_subclassz:AbstractPickleTests.test_recursive_tuple_and_list_subclass      ++F+Br   c                 4    | j                  t        d        y )Nc                     | j                   S r$   r:  r&   s    r   r;  zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>  s
    agg r   r<  )rA  r=  r2   s    r   "test_recursive_tuple_and_list_likez6AbstractPickleTests.test_recursive_tuple_and_list_like  s    ++G<M+Nr   c                 X    |       }||d<   t        |t        j                  dz         D ]~  }| j                  ||      }| j	                  |      }| j                  ||        ||      }| j                  t        |j                               dg       | j                  |d   |        y Nr   )
r7  r   r)  r  r  r*  r   r   r9  r   	r.   r   asdictr-  dr  r  r'   r   s	            r   _test_recursive_dictz(AbstractPickleTests._test_recursive_dict  s    E!;(?(?!(CD 	#E

1e$A

1A!!!S)q	AT!&&(^aS1MM!A$"	#r   c                 .    | j                  t               y r$   )rP  r   r2   s    r   test_recursive_dictz'AbstractPickleTests.test_recursive_dict#  r2  r   c                 2    | j                  t        d       y r4  )rP  MyDictr2   s    r   test_recursive_dict_subclassz0AbstractPickleTests.test_recursive_dict_subclass&  r7  r   c                 4    | j                  t        d        y )Nc                     | j                   S r$   tabler&   s    r   r;  z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>*  s
    agg r   rN  )rP  	REX_sevenr2   s    r   test_recursive_dict_likez,AbstractPickleTests.test_recursive_dict_like)  s    !!)4E!Fr   c                 N    |       f}||d   d<   t        |t        j                  dz         D ]  }| j                  ||      }| j	                  |      }| j                  |t               | j                  t        |      d       | j                  |d   |        ||d         }| j                  t        |      dg       | j                  |d   |        |\  }t        |t        j                  dz         D ]  }| j                  ||      }| j	                  |      }| j                  ||        ||      }| j                  t        |      dg       | j                  |d   t               | j                  t        |d         d       | j                  |d   d   |        y rM   )r7  r   r)  r  r  r*  r@  r   r+  r   r   	r.   r   rN  r-  r  r  r  r'   r   s	            r   _test_recursive_tuple_and_dictz2AbstractPickleTests._test_recursive_tuple_and_dict,  s{   UH!Q;(?(?!(CD 	#E

1e$A

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

1e$A

1A!!!S)q	AT!Wqc*!!!A$.S1Y*MM!A$q'1%	&r   c                 .    | j                  t               y r$   )r_  r   r2   s    r   test_recursive_tuple_and_dictz1AbstractPickleTests.test_recursive_tuple_and_dictF  rD  r   c                 2    | j                  t        d       y r4  )r_  rT  r2   s    r   &test_recursive_tuple_and_dict_subclassz:AbstractPickleTests.test_recursive_tuple_and_dict_subclassI  rG  r   c                 4    | j                  t        d        y )Nc                     | j                   S r$   rX  r&   s    r   r;  zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>M  s
     r   rZ  )r_  r[  r2   s    r   "test_recursive_tuple_and_dict_likez6AbstractPickleTests.test_recursive_tuple_and_dict_likeL  s    ++I>O+Pr   c                 
    |       }d|t        |      <   t        |t        j                  dz         D ]  }| j	                  ||      }| j                  |      }| j                  ||        ||      }| j                  t        |j                               d       | j                  t        |j                               d   t                | j                  t        |j                               d   j                  |        y r(  )rn   r7  r   r)  r  r  r*  r   r+  r9  r   r   rp   rM  s	            r   _test_recursive_dict_keyz,AbstractPickleTests._test_recursive_dict_keyO  s     E!A$;(?(?!(CD 	6E

1e$A

1A!!!S)q	AS]A.!!$qvvx."3Q7MM$qvvx.+1115	6r   c                 .    | j                  t               y r$   )rh  r   r2   s    r   test_recursive_dict_keyz+AbstractPickleTests.test_recursive_dict_key]  s    %%d+r   c                 2    | j                  t        d       y r4  )rh  rT  r2   s    r    test_recursive_dict_subclass_keyz4AbstractPickleTests.test_recursive_dict_subclass_key`  s    %%f!%<r   c                 4    | j                  t        d        y )Nc                     | j                   S r$   rX  r&   s    r   r;  zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>d  s
    !'' r   rZ  )rh  r[  r2   s    r   test_recursive_dict_like_keyz0AbstractPickleTests.test_recursive_dict_like_keyc  s    %%i8I%Jr   c                 2    |       f}d|d   t        |      <   t        |t        j                  dz         D ]  }| j	                  ||      }| j                  |      }| j                  |t               | j                  t        |      d       | j                  |d   |        ||d         }| j                  t        |      d       | j                  t        |j                               d   t                | j                  t        |j                               d   j                  |        |\  }t        |t        j                  dz         D ]  }| j	                  ||      }| j                  |      }| j                  ||        ||      }| j                  t        |      d       | j                  t        |j                               d   t                | j                  t        |j                               d   j                  d   |        y r(  )rn   r7  r   r)  r  r  r*  r@  r   r+  r   r9  r   rp   r^  s	            r   "_test_recursive_tuple_and_dict_keyz6AbstractPickleTests._test_recursive_tuple_and_dict_keyf  s    UH!QqT
;(?(?!(CD 		6E

1e$A

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

1e$A

1A!!!S)q	ASVQ'!!$qvvx."3Q7MM$qvvx.+11!4a8	9r   c                 .    | j                  t               y r$   )rq  r   r2   s    r   !test_recursive_tuple_and_dict_keyz5AbstractPickleTests.test_recursive_tuple_and_dict_key  s    //5r   c                 2    | j                  t        d       y r4  )rq  rT  r2   s    r   *test_recursive_tuple_and_dict_subclass_keyz>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_key  s    //A/Fr   c                 4    | j                  t        d        y )Nc                     | j                   S r$   rX  r&   s    r   r;  zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>  s
    AGG r   rZ  )rq  r[  r2   s    r   &test_recursive_tuple_and_dict_like_keyz:AbstractPickleTests.test_recursive_tuple_and_dict_like_key  s    //	BS/Tr   c                 d   t               }|j                  t        |             t        dt        j
                  dz         D ]  }| j                  ||      }| j                  |      }| j                  |t                | j                  t        |      d       | j                  t        |      d   t               | j                  t        |      d   j                  |        |\  }t        dt        j
                  dz         D ]  }| j                  ||      }| j                  |      }| j                  |t               | j                  |j                  t                | j                  t        |j                        d       | j                  t        |j                        d   |        y )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  sL   E	ad1f559: 	/E

1e$A

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

1e$A

1A!!!Q'!!!''3/S\1-MM$qww-*A.	/r   c                 .   t               }||_        t        D ]{  }| j                  ||      }| j	                  |      }| j                  |t                | j                  t        |      t        |             | j                  |j                  |       } y r$   )	rj   attrr  r  r  r*  r   dirr   )r.   ir  r  r'   s        r   test_recursive_instz'AbstractPickleTests.test_recursive_inst  sv    H 	%E

1e$A

1A!!!V,SVSV,MM!&&!$	%r   c                    g }d|i}t               }||_        |j                  |       t        D ]  }| j	                  ||      }| j                  |      }| j                  |t               | j                  t        |      d       | j                  t        |d         t        |             | j                  t        |d   j                  j                               dg       | j                  |d   j                  d   |        y r(  )rj   r~  r   r  r  r  r*  r   r   r+  r  r9  r   )r.   r.  rO  r  r  r  r'   s          r   test_recursive_multiz(AbstractPickleTests.test_recursive_multi  s    qEH	 	+E

1e$A

1A!!!T*SVQ'S1YA/T!A$)).."23aS9MM!A$))A,*	+r   c                 F   t               } ||g      |_        t        |j                        }t        D ]  }| j	                  ||      }| j                  |      }| j                  |j                  |       | j                  t        |j                        d       | j                  t        |j                        d   t                | j                  t        |j                        d   |        |j                  }t        D ]  }| j	                  ||      }| j                  |      }| j                  ||       | j                  t        |      d       | j                  t        |      d   t                | j                  t        |      d   j                  |        y 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@    H!L 	.E

1e$A

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

1e$A

1A!!!Q'SVQ'!!$q'!*f5MM$q'!*//1-	.r   c                 .    | j                  t               y r$   )r  r   r2   s    r   test_recursive_list_and_instz0AbstractPickleTests.test_recursive_list_and_inst  s    006r   c                 .    | j                  t               y r$   )r  r@  r2   s    r   test_recursive_tuple_and_instz1AbstractPickleTests.test_recursive_tuple_and_inst      007r   c                 B    | j                  t        j                         y r$   )r  r   fromkeysr2   s    r   test_recursive_dict_and_instz0AbstractPickleTests.test_recursive_dict_and_inst  s    00?r   c                 .    | j                  t               y r$   )r  r5  r2   s    r   test_recursive_set_and_instz/AbstractPickleTests.test_recursive_set_and_inst  s    005r   c                 .    | j                  t               y r$   )r  	frozensetr2   s    r   !test_recursive_frozenset_and_instz5AbstractPickleTests.test_recursive_frozenset_and_inst  s    00;r   c                 .    | j                  t               y r$   )r  r5  r2   s    r   %test_recursive_list_subclass_and_instz9AbstractPickleTests.test_recursive_list_subclass_and_inst  s    008r   c                 .    | j                  t               y r$   )r  MyTupler2   s    r   &test_recursive_tuple_subclass_and_instz:AbstractPickleTests.test_recursive_tuple_subclass_and_inst  s    009r   c                 B    | j                  t        j                         y r$   )r  rT  r  r2   s    r   %test_recursive_dict_subclass_and_instz9AbstractPickleTests.test_recursive_dict_subclass_and_inst  s    00Ar   c                 .    | j                  t               y r$   )r  MySetr2   s    r   $test_recursive_set_subclass_and_instz8AbstractPickleTests.test_recursive_set_subclass_and_inst  r  r   c                 .    | j                  t               y 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 ]W  }| j                  ||      }| j	                  |      }| j                  |t                | j                  |j                  |       Y y r$   )	REX_statestater  r  r  r*  r   r{  s        r   test_recursive_inst_statez-AbstractPickleTests.test_recursive_inst_state  s^    K 	&E

1e$A

1A!!!Y/MM!''1%		&r   c                    t               f}||d   _        t        D ]  }| j                  ||      }| j	                  |      }| j                  |t               | j                  t        |      d       | j                  |d   t                | j                  |d   j                  |        |\  }t        D ]  }| j                  ||      }| j	                  |      }| j                  |t                | j                  |j                  t               | j                  t        |j                        d       | j                  |j                  d   |        y rM   )
r  r  r  r  r  r*  r@  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VQ'!!!A$	2MM!A$**a(	)  	)E

1e$A

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

1e$AAB2&	'r   c                     t         D ]C  }dD ]<  }| j                  ||f|      }| j                  |      \  }}| j                  ||       > E y )N)rW  xyzzxyz
zx\yzu   x¡yzr  r  r  r   )r.   r  r  r  s1s2s         r   test_unicode_memoizationz,AbstractPickleTests.test_unicode_memoization$  sS     	&E= &JJ1vu-ABb"%&	&r   c                    t         D ]  }dD ]5  }| j                  ||      }| j                  || j                  |             7 t	        d      D cg c]  }t        |g       c}D ]5  }| j                  ||      }| j                  || j                  |             7 t	        d      D cg c]  }t        ||g       c}D ]5  }| j                  ||      }| j                  || j                  |             7  y c c}w c c}w )Nr      xyzs,  xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz   )r  r  r   r  r7  r   )r.   r  r  r  r  s        r   
test_byteszAbstractPickleTests.test_bytes,  s     		6E, 6JJq%(##Atzz!}56 +0*5QeQCj5 6JJq%(##Atzz!}56 .33Z8eQFm8 6JJq%(##Atzz!}56		6 6 9s   C>,Dc                 Z   t         D ]!  }dD ]  }t        |      }| j                  ||      }| j                  |      }| j	                  ||       | j                  ||       |dk  r<| j                  d|       | j                  t        t        j                  |             |dk(  r<| j                  d|       | j                  t        t        j                  |             |dk(  s| j                  d|       | j                  t        t        j                  |              $ y )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_bytearray8  s     	LE, LaLJJq%(ZZ]  Q'##Ar*A:MM,2OO$4V]]A$FGaZMM,2OO$4V5H5H!$LMaZ$$\15OO$4V5F5F$JKL	Lr   c                     t         D ]N  }dD ]G  }t        |      }| j                  ||f|      }| j                  |      \  }}| j	                  ||       I P y )Nr  )r  rt  r  r  r   )r.   r  r  r   r  b1b2s          r   test_bytearray_memoization_bugz2AbstractPickleTests.test_bytearray_memoization_bugK  s\     	&E, &aLJJ1vu-ABb"%	&	&r   c                     t         D ]\  }t        j                  }|s| |fD ]7  }| j                  ||      }| j	                  |      }| j                  ||       9 |dz	  }|rG^ y rL  )r  r  maxsizer  r  r   )r.   r  r!   r  r  n2s         r   	test_intszAbstractPickleTests.test_intsS  so     	EA"#Q 6H

8U3AAB''"56 F 	r   c                    t         D ]]  }dD ]V  }d|z  }|dz
  ||dz   fD ]A  }|| fD ]7  }| j                  ||      }| j                  |      }| j                  ||       9 C X _ t	        dd      }||dz  z  }|| fD ]V  }| j                  |d      }| j                  |      }| j                  t        |      t               | j                  ||       X y )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_long]  s     	4E9 4U
!!GUE!G3 4D!D5[ 4!%Au!5"jj0++As3444	4 &+'!! 	%A

1a A**Q-C MM$s)S)Q$	%r   c                     g d}||D cg c]  }|  c}z   }t         D ]>  }|D ]7  }| j                  ||      }| j                  |      }| j                  ||       9 @ y c c}w )N)g        g       g+ph  gZ*) g_D9g?g      ?gQ	@gm"wp@gWTDgꌠ9Y>)Fr  )r.   test_valuesr'   r  rp   r   r-  s          r   
test_floatzAbstractPickleTests.test_floatt  sr    A!$=AaR$== 	0E$ 0E51jj(##E3/0	0 %>s   
A!LC_ALLde_DEfr_FRc                 N    | j                  | j                  dd      dd d       y )Ng333333?r   r  s   F1.)r   r  r2   s    r   test_float_formatz%AbstractPickleTests.test_float_format~  s&     	C+Aa0&9r   c                     t         D ]E  }t               }| j                  ||      }| j                  |      }| j	                  |t
               G y r$   )r  AAAr  r  r   REDUCE_Ar.   r  instr]  rD  s        r   test_reducezAbstractPickleTests.test_reduce  sF     	/E5DZZe,FZZ'FVX.		/r   c                     t         D ]C  }t        dd      }| j                  ||      }| j                  |      }| j	                  ||       E y )Nr   r   )r  r{   r  r  r   r  s        r   test_getinitargsz$AbstractPickleTests.test_getinitargs  sJ     	.E1a=DZZe,FZZ'Ff-		.r   c                     t               }t        D ]K  }| j                  ||      }| j                  |      }| j	                  |j
                  |j
                         M y r$   )r   r  r  r  r   r   r.   r~   r  r  r   s        r   test_metaclassz"AbstractPickleTests.test_metaclass  sM    O 	7E

1e$A

1AQ[[!++6	7r   c                 >   t        dt        f      }t        j                  t        t        j
                         t        D ][  }| j                  ||      }| j                  |      }| j                  ||       | j                  t        |      t        |             ] y )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  sy     !3fY?)+=+H+HI 	,E

1e$A

1AQ"MM$q'47+		,r   c                    dd l }dd l}|j                         }t        D ]  }| j	                  ||      }| j                  |      }| j                  ||        |j                  |j                        }| j	                  ||      }| j                  |      }| j                  ||       t        |d      s |j                  |j                        }| j	                  ||      }| j                  |      }| j                  ||        y )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%BJJryy)JJq%(JJqM##Aq)	*r   c                     t         D ]7  }| j                  d|      }| j                  |      }| j                  d|       9 y N.r  r.   r  r  r  s       r   test_ellipsisz!AbstractPickleTests.test_ellipsis  s<     	"E

3&A

1AMM#q!	"r   c                     t         D ]?  }| j                  t        |      }| j                  |      }| j	                  t        |       A y r$   )r  r  r   r  r   r  s       r   test_notimplementedz'AbstractPickleTests.test_notimplemented  s<     	-E

>51A

1AMM.!,	-r   c                     d dt         g}|D ]T  }t        D ]I  }| j                  t        |      |      }| j	                  |      }| j                  t        |      |       K V y r  )r   r  r  r   r  r   )r.   
singletons	singletonr  r  r  s         r   test_singleton_typesz(AbstractPickleTests.test_singleton_types  s_    C0
# 	2I" 2JJtI6JJqMd9oq12	2r   c                 
   t         j                  j                         D ]b  }t        |t              st        |t              r%t        D ]5  }| j                  ||      }| j                  | j                  |      |       7 d y r$   )builtinsrZ   valuesr   r   
issubclassr  r  r  r   r  r.   r  r  r  s       r   test_builtin_typesz&AbstractPickleTests.test_builtin_types  sh    ""))+ 	4A!T":a+G& 4E

1e,AMM$**Q-34	4r   c                    t         j                  j                         D ]  }t        |t              st        |t              s%t        D ]  }| j                  ||      }| j                  |      }|dk  r/t        |t              r|t        ur| j                  |t               Z|dk  r't        |t              r| j                  |t               | j                  ||         y 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& ,E

1e,A

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

1e,AMM$**Q-34	4r   c                 Z   t         D ]  }| j                  d |      }|dk\  r>t        j                  t	        |g      z   }| j                  |j                  |             X| j                  t        t        j                  |      d        t         d   dz   }t        j                  t        j                  z   }t        j                  t	        |g      z   |z   }	 | j                  |       | j                  d       y # t        $ r%}| j                  dt        |             Y d }~y 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  s     	IEjju-Gz%||eUGn< 2 2< @A  fllG!DaH	I ma[[6;;.
LL5#</*<		JJJy! IIHI  	CMM7SBB	Cs   C< <	D*D%%D*c                     d}t         D ]d  }| j                  ||      }| j                  |      }| j                  ||       | j	                  t        t        j                  |      |dk\         f y )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  se    ) 	LE

1e$A

1A1%-fllA>
K		Lr   c                     ddz  }t         D ]d  }| j                  ||      }| j                  |      }| j                  ||       | j	                  t        t        j                  |      |dk\         f y )Nr  r  r   )r  r  r  r   r   r   r   LONG4r  s        r   
test_long4zAbstractPickleTests.test_long4  sj    )e4 	LE

1e$A

1A1%-fllA>
K		Lr   c                    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 ]x  }|||||fD ]l  }| j                  ||      }	| j                  |	      }
| j                  ||
       |t        |d      t        |      f   }| j                  t        ||	             n z y )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   rO  er  r'   r  r   r  s               r   test_short_tuplesz%AbstractPickleTests.test_short_tuples	  s   66<< !6<<!6<< "6<< "6<<	 "6#5#5 "6<< "6<< "6<< "6<< "6#5#5 "6== "6== "6==  "6<<!$ "6#5#5%& "6=='( $*==#)==#)<<-0  	?E1a] ?JJq%(JJqM##Aq)*3ua=#a&+@A 01 =>?	?r   c                 d   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 ]p  }dD ]i  }| j                  ||      }| j                  |      }| j                  ||u ||||f       |t        |d      |f   }| j                  t        ||             k r y )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_singletons0  s    &,kk&,kk&,kk&,kk&,jj&,jj&,nn&,nn'-zz'-zz'-'-  	?E& ?JJq%(JJqMQ1a(89*3ua=!+;< 01 =>?	?r   c                     t        g d      }d|_        d|_        t        D ]7  }| j	                  ||      }| j                  |      }| j                  ||       9 y Nr%  r  hello)r  r   r   r  r  r  r   r  s        r   test_newobj_tuplez%AbstractPickleTests.test_newobj_tupleI  sV    I 	&E

1e$A

1A1%	&r   c                     t        g d      }d|_        d|_        t        D ]7  }| j	                  ||      }| j                  |      }| j                  ||       9 y r5  )r5  r   r   r  r  r  r   r  s        r   test_newobj_listz$AbstractPickleTests.test_newobj_listR  sV    9 	&E

1e$A

1A1%	&r   c           
         t         D ]  }t        D ]  }|j                  } ||j                        }d|_        | j                  ||      }| j                  |      }|||||t        |      f}| j                  ||       | j                   ||       ||      |       | j                  |j                  |j                  |         y 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_generic[  s     
	AE 	AJJahhKJJq%(JJqMAq!T!W5##Aq)  1qtV4  QZZ@	A
	Ar   c           
      .   t         d d  }t        t        fD ]  }|j                  |        t        D ]  }|D ]  }|j
                  } ||j                        }d|_        t        j                  |      }| j                  ||      }| j                  |      }	| j                  t        |	      t        |             |||||	t        |	      f}
| j                   ||       ||	      |
       | j                  |j                  |	j                  |
         y r;  )r<  MyIntr  r  r  r=  r>  r   weakrefproxyr  r  r   r   rZ   )r.   classesr   r  rX   r?  r'   r  r  r   r@  s              r   test_newobj_proxiesz'AbstractPickleTests.test_newobj_proxiesh  s    A,! 	ANN1	 	AE 
AJJahhKMM!$JJq%(JJqM  a$q'2Aq!T!W5  1qtV4  QZZ@
A	Ar   c                 0   t         D ]  }t        d      }d|_        | j                  ||      }| j	                  |      }| j                  t        |      t               | j                  t        |      d       | j                  |j                  d        y )Nr   r  )	r  MyIntWithNew2r   r  r  r   r   r   r  r  s        r   test_newobj_overridden_newz.AbstractPickleTests.test_newobj_overridden_new{  sy     	(Ea AAE

1e$A

1AMM$q'=1SVQ'QUUB'	(r   c                     t         }t         j                  t               }| j                  |d      }	 da | j                  t        t
        j                  f| j                  |       |a y # |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  s_       .JJq!	 Ly&*@*@A4::qQL4Ls   3A) )A-c                    t        |      }	 t        j                  t        d|       t	        g d      }d|_        d|_        | j                  |d      }| j                  t        j                  d      |       | j                  d|       | j                  t        ||             | j                  |      }| j                  ||       | j                  |d      }| j                  t        j                  d      |       | j                  d|       | j                  t        ||      d	t!        |             | j                  |      }| j                  ||       |j#                          y # |j#                          w xY w)
Nr5  r%  r  r6  r   r  s   MyListr   T)rK   rN   rT   r<   r5  r   r   r  r  r   assertFalser   r  r   r  r   reprrV   )r.   extcodeopcoder-  r'   r  r   r  s           r   produce_global_extz&AbstractPickleTests.produce_global_ext  s.   7#	!!(Hg>y!AAEAE Aq!BMM(//'2B7MM)R(-fb9:

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

2A1%IIKAIIKs   EE- -E?c                     | j                  dt        j                         | j                  dt        j                         y )Nr   r   )rT  r   EXT1r2   s    r   test_global_ext1z$AbstractPickleTests.test_global_ext1  s*    
FKK8
FKK8r   c                     | j                  dt        j                         | j                  dt        j                         | j                  dt        j                         y )Nr  r   iͫ  )rT  r   EXT2r2   s    r   test_global_ext2z$AbstractPickleTests.test_global_ext2  >    
FKK8
FKK8
FKK8r   c                     | j                  dt        j                         | j                  dt        j                         | j                  dt        j                         y )N   r   iͫ)rT  r   EXT4r2   s    r   test_global_ext4z$AbstractPickleTests.test_global_ext4  r[  r   c                 F   d}t        t        |            }t        D ]f  }| j                  ||      }| j	                  |      }| j                  ||       t        t        j                  |      }| j                  ||dkD         h d}t        t        |            }t        D ]}  }| j                  ||      }| j	                  |      }| j                  ||       t        t        j                  |      }|dk(  r| j                  |d       j| j                  |dk\          y 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  s    qN 	5E

1e$A

1A1%&v~~q9K[%!)4	5 qN 	2E

1e$A

1A1%&v~~q9Kz  a0q 01	2r   c                    d}t         j                  t        |            }t        D ]|  }| j	                  ||      }| j                  |t               | j                  |      }| j                  ||       t        t        j                  |      }| j                  ||dkD         ~ d}t         j                  t        |            }t        D ]}  }| j	                  ||      }| j                  |      }| j                  ||       t        t        j                  |      }|dk(  r| j                  |d       j| j                  |dk\          y ra  )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  s   MM%(# 	6E

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

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

1e$A

1A1%';Lz  q1 12	3r   c                 l   d}t        t        |            }t        D ]{  }| j                  ||      }| j	                  |      }| j                  ||       t        t        j                  |      }|dk  r| j                  |d       j| j                  |d       } d}t        t        |            }t        D ]{  }| j                  ||      }| j	                  |      }| j                  ||       t        t        j                  |      }|dk  r| j                  |d       j| j                  |d       } y )Nrb  r  r   r   rc  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M 	2E

1e$A

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

1e$A

1A1%';Lqy  q1''a8	9r   c                    t         j                  t         d      }d|_        t        D ]  }| j	                  |      5  | j                  ||      }|dk  r| j                  d|       n| j                  d|       | j                  t        t        j                  |      d|k         | j                  t        t        j                  |             | j                  |      }| j                  ||       d d d         y # 1 sw Y   xY w)N    r  r      
I64206   Mr   )rL  r   r   r  r  r  r  r   r   r   NEWOBJrP  	NEWOBJ_EXr  r   r  s        r   test_simple_newobjz&AbstractPickleTests.test_simple_newobj	  s      v6 	*EE* 
*JJq%(19MM+q1MM,2  !1&--!C!"e-  !1&2B2BA!FGJJqM##Aq)
* 
*	*
* 
*s   B6C>>D	c                 z   t         j                  t         d      }d|_        t        D ]  }| j	                  |      5  | j                  ||      }|dk  r| j                  d|       nB|dk  r| j                  d|       n*|dk  r| j                  d	|       n| j                  d
|       | j                  t        t        j                  |      d|k         | j                  t        t        j                  |             | j                  |      }| j                  ||       d d d         y # 1 sw Y   xY wNrq  rr  rs  r   rt  r   ru  r  s	   X   FACEs   FACE)ComplexNewObjr   r   r  r  r  r  r   r   r   rv  rP  rw  r  r   r  s        r   test_complex_newobjz'AbstractPickleTests.test_complex_newobj	  s   !!-8 	*EE* *JJq%(19MM+q1QYMM,2QYMM":A>MM/15  !1&--!C!"e-  !1&2B2BA!FGJJqM##Aq)* *	** *   C&D00D:	c                 z   t         j                  t         d      }d|_        t        D ]  }| j	                  |      5  | j                  ||      }|dk  r| j                  d|       nB|dk  r| j                  d|       n*|dk  r| j                  d	|       n| j                  d
|       | j                  t        t        j                  |             | j                  t        t        j                  |      d|k         | j                  |      }| j                  ||       d d d         y # 1 sw Y   xY wrz  )ComplexNewObjExr   r   r  r  r  r  rP  r   r   rv  r   rw  r  r   r  s        r   test_complex_newobj_exz*AbstractPickleTests.test_complex_newobj_ex*	  s   ##OV< 	*EE* *JJq%(19MM+q1QYMM,2QYMM":A>MM/15  !1&--!CD  !1&2B2BA!F!"e-JJqM##Aq)* *	** *r}  c                     t        g d      }d|_        d|_        | j                  |d      }| j	                  |      }| j                  ||       y )Nr%  r  r6  r   )SlotListr   r   r  r  r   )r.   r'   r  r   s       r   test_newobj_list_slotsz*AbstractPickleTests.test_newobj_list_slots>	  sG    YJJq!JJqMAq!r   c                    t         D ]  }t               }| j                  |j                  d       | j	                  ||      }| j                  |j                  d       | j                  |      }| j                  |j                  d        y rM   )r  REX_oner   _reduce_calledr  r  r  s        r   'test_reduce_overrides_default_reduce_exz;AbstractPickleTests.test_reduce_overrides_default_reduce_exF	  sw     	2E	AQ--q1

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

1AQ--q1	2r   c                    t         D ]  }t               }| j                  |j                  d        | j	                  ||      }| j                  |j                  |       | j                  |      }| j                  |j                  d         y r$   )r  REX_twor   _protor  r  r  s        r   test_reduce_ex_calledz)AbstractPickleTests.test_reduce_ex_calledO	  sq     	-E	AQXXt,

1e$AQXXu-

1AQXXt,	-r   c                    t         D ]  }t               }| j                  |j                  d        | j	                  ||      }| j                  |j                  |       | j                  |      }| j                  |j                  d         y r$   )r  	REX_threer   r  r  r  r  s        r   test_reduce_ex_overrides_reducez3AbstractPickleTests.test_reduce_ex_overrides_reduceX	  sq     	-EAQXXt,

1e$AQXXu-

1AQXXt,	-r   c                    t         D ]  }t               }| j                  |j                  d        | j	                  ||      }| j                  |j                  |       | j                  |      }| j                  |j                  |        y r$   )r  REX_fourr   r  r  r  r  s        r   test_reduce_ex_calls_basez-AbstractPickleTests.test_reduce_ex_calls_basea	  sq     	.E
AQXXt,

1e$AQXXu-

1AQXXu-	.r   c                    t         D ]  }t               }| j                  |j                  d       | j	                  ||      }| j                  |j                  d       | j                  |      }| j                  |j                  d        y rM   )r  REX_fiver   r  r  r  r  s        r   test_reduce_calls_basez*AbstractPickleTests.test_reduce_calls_basej	  sw     	2E
AQ--q1

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

1AQ--q1	2r   c                 6   t               }t        d      D ]A  }t        j                         5  | j	                  t
        | j                  ||       d d d        C t        dt        j                  dz         D ]  }| j                  ||      } y # 1 sw Y   xY w)Nr   r   )	
BadGetattrr7  r   infinite_recursionr  RuntimeErrorr  r   r)  )r.   r'   r  r  s       r   test_bad_getattrz$AbstractPickleTests.test_bad_getattrs	  s     L1X 	FE++- F!!,

AuEF F	F 1f559: 	%E

1e$A	%F Fs   #BB	c                     G d dt               } G d dt               }t        D ]2  }	 | j                   |       |       	 | j                   |       |       4 y # t        j                  $ r Y 0w xY w# t        j                  $ r Y dw xY w)Nc                       e Zd Zd Zy)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__	  s    Rr4//r   Nr<   r=   r>   rs   r%   r   r   rX   r  	      0r   rX   c                       e Zd Zd Zy)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_iterator}	  s    	0 	0	0 	0  	E

13&

13&	 ''  '' s#   AA4A10A14B
	B
c                 Z   d t        d      D        }t        d |D              }t        |      t        |      t        |      g}t        D ]R  }| j                  |      5  | j	                  ||      }| j                  |      }| j                  ||       d d d        T y # 1 sw Y   _xY w)Nc              3   8   K   | ]  }d t        |      z     yw)aaaNrx   ).0r  s     r   	<genexpr>z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>	  s     31A3s   rm  c              3   (   K   | ]
  }|g d f  yw))r  r   r  Nr%   )r  ks     r   r  z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>	  s     7Q1i.7s   rs  )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c
37$77
Jj!14
3CD 	1EE* 1C/F+##C01 1	11 1s    6B!!B*	c                 0   t         D ]  }t               }d|_        d|_        | j	                  ||      }| j                  |      }t        |j                        }t        |j                        }t        ||      D ]  \  }}| j                  ||         y )Nr  r6  )
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AJJ'FAJJ'F #FF 3 ,ueU+,		,r   c                     | j                  t        d      d      }| j                  |t               | j                  t	        dg      d      }| j                  |t
               y )Nr   r   r  )r  r7  r   r6  r5  	DATA_SET2r\  s     r   test_pickle_to_2xz%AbstractPickleTests.test_pickle_to_2x	  sN    
 E!Ha(-CHa(+r   c                     t         D ]l  }dt        ddz  t        f}| j                  ||      }| j	                  |      }| j                  t        |      t        |             | j                  ||       n y )Nr   s   xyi x  )r  r+  r+  r  r  r   )r.   r  r  r]  rD  s        r   test_large_picklesz&AbstractPickleTests.test_large_pickles	  sl      	+EsEY/5DZZe,FZZ'FS[#d)4VT*	+r   c           	         t         D ]  }| j                  |      5  t        d      D cg c]  }| j                  d|z  |       }}t	        t        t        |            }| j                  t        |      |       |dk\  r0|D ]+  }| j                  t        t        j                  |             - d d d         y c c}w # 1 sw Y   xY w)Nrs  F   r   )r  r  r7  r  r   mapr+  r   r  rP  r   r   LONG)r.   r  r!   picklessizesr  s         r   test_int_pickling_efficiencyz0AbstractPickleTests.test_int_pickling_efficiency	  s     	KEE* K<A"IFq4::adE2FFSg./  6A:$ K(()9&++q)IJKK K	KFK Ks   CB<A+C<CC
	c                     | j                  ||      }| j                  t        ||             | j                  |      }| j	                  ||       y r$   )r  r  r   r  r   )r.   r   rS  r  r  r  s         r   _check_pickling_with_opcodez/AbstractPickleTests._check_pickling_with_opcode	  sD    **S%((9:JJw'	i(r   c                     t        g d      }t        D ]J  }|dk(  r"| j                  |t        j                  |       *| j                  |t        j
                  |       L y )Nr%  r   )r=  r  r  r   APPENDrd  r.   r   r  s      r   test_appends_on_non_listsz-AbstractPickleTests.test_appends_on_non_lists	  sP    i  	MEz00fmmUK00fnneL		Mr   c                     t        dddd      }t        D ]J  }|dk(  r"| j                  |t        j                  |       *| j                  |t        j
                  |       L y )Nr   r%  r   )r[  r  r  r   SETITEMrh  r  s      r   test_setitems_on_non_dictsz.AbstractPickleTests.test_setitems_on_non_dicts	  sW    B2"-. 	NEz00fnneL00foouM		Nr   r  r]  c                    dx}}h d}t        j                  |      D ]  \  }}}|| j                  ||       ||k(  rd}|P| j                  |j                  d       |j                  |v r| j                  t        |      | j                         nl|j                  dk(  s&|j                  |v r<t        |      | j                  kD  r$|5| j                  ||z
  | j                         d}n||j                  dk7  r|}|j                  dk(  s| j                  || j                         |dz   |z   } t        |      }|| j                  ||       y| | j                  ||z
  | j                         yy)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_MINrm  r   )r.   r  	frame_endframeless_startframeless_opcodesr   ra   poss           r   check_frame_opcodesz'AbstractPickleTests.check_frame_opcodes	  sz    '+*	O:'..w7 	*LBS$$$S)4)# $I$##BGGW577// ((S43I3IJ GGw&WW 11X 6 66&2o(=(,(;(;=*.$,G1C&)Oww'!''T-@-@A!GcM	9	*< 'l Y,(OOC/143F3FG )r   cpuc                    t        t        d            }t        dt        j                  dz         D ]  }| j	                  |      5  | j                  ||      }| j                  |      }| j                  ||       t        |      t        t        j                  |      z  }| j                  || j                  dz         | j                  || j                  dz         | j                  |       d d d         y # 1 sw Y   xY w)Ni r  r   rs  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
  s     5< 1f559: 	2EE* 
2**S%0 JJw/	  i0#&w<#/g#F$G""?#'#9#9A#=?$$_%)%;%;a%?A((1
2 
2	2
2 
2s   B+C==D	c                 \   d}t        d      D cg c]  }|g }}d|z  g|d|z  d|z  }t        dt        j                  dz         D ]B  }dD ]9  }| j                  ||	      5  |s| j	                  ||      }net        | d
      s
	 d d d        Ct        j                         }| j                  ||      }	||	_	        |	j                  |       |j                         }| j                  |      }
| j                  |D cg c]  }t        |       c}|
D cg c]  }t        |       c}       | j                  ||
       t        t        j                   |      }| j                  |d       | j#                  |       d d d        < E y c c}w c c}w c c}w # 1 sw Y   ZxY w)Ni   rb     x   yzr  r   )FT)r  fastpicklerr   )r7  r   r)  r  r  r   r6   rB   r  r  dumprD   r  r   r+  r"   r  r  )r.   Nr  small_itemsr   r  r  r  bufr  r  r'   n_framess                r   test_framing_large_objectsz.AbstractPickleTests.test_framing_large_objects+
  s   $)"I.qs..ax9+9tax9q91f559: 	6E% 6\\D\9 6 #'**S%"8  'tY7$6 6 !jjl"&,,sU,"C'+S)"%,,. $

7 3I$$c%:c!f%:6?%@c!f%@B $$S)4+FLL'BH $$Xq1,,W516 66	6 /( &;%@#6 6s7   
F(#F!A/F!FF!F-AF!
F!!F+c           	         t         j                  dk  ry dd}| j                  }d}t        t        fD ]  }t        |      D ci c]  }| ||g      |z   }}t        dt         j                  dz         D ]  }| j                  ||      } ||      }	| j                  t        t         j                  |	      d       | j                  || j                  |	              ||d       }
| j                  t        t         j                  |
      t        t         j                  |             | j                  || j                  |
               y c c}w )Nr  c                 
   g }d}t        j                  |       D ]'  \  }}}|j                  dk(  s|j                  |       ) 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_sizerS  _r  	newpicklelast_frame_endr  s
             r   remove_framesz?AbstractPickleTests.test_optional_frames.<locals>.remove_framesO
  s    L !"-"4"4W"= -3;;') '',- "IN#L1 93*Q-W^C88	!$'8!8	9
 11Ir      r   r   c                     | dz  S r  r%   )r  s    r   r;  z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>p
  s
    a!e r   r$   )r   r)  r  r   rt  r7  r  r   r"   r  r  r  )r.   r  
frame_size
num_frames
bytes_typer  r   r  r  frameless_picklesome_frames_pickles              r   test_optional_framesz(AbstractPickleTests.test_optional_framesK
  s1   ""Q&	& ++

 !), 	FJ<A*<MNq1j!o
22NCNq&"9"9A"=> 
F**S%0#0#9   fll<L!MqQ  djj1A&BC%27O%L"V\\;M N ,V\\7 CE  djj1C&DE
F	FNs   Ec           
      b    G d d      }t        dt        j                  dz         D ]k  }t        t        d            D cg c]-  }t	        |      j                  d      |dz  dt	        |      if/ }}|j                  d	| j                  d
z  dz   z          |       }| j                  ||      j                  |       |j                         }| j                  |      }| j                  ||       | j                  t        |j                        d       ~t!        j"                          | j                  |j                         |       t        |      dz
  | j                  z  dz   }| j%                  t        |j                        |       | j'                  t        |j                        d|z  dz          |j                  D 	cg c]  }	t        |	       }
}	|
D cg c]  }|| j                  k\  r| }}|
D cg c]  }d|cxk  r| j                  k  rn n| }}|
D cg c]
  }|dk  s	| }}|D ]"  }| j)                  |d| j                  z  |
       $ | j'                  t        |      t        |      t        |      z   dz   |
       n y c c}w c c}	w c c}w c c}w c c}w )Nc                   "    e Zd ZdZd Zd Zd Zy)YAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.c                     g | _         y r$   )chunksr2   s    r   rH   zbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__y
  s	     r   c                 :    | j                   j                  |       y r$   )r  r   )r.   chunks     r   rG   z_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.write{
  s    ""5)r   c                 8    dj                  | j                        S )Nr   )r  r  r2   s    r   concatenate_chunkszlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunks}
  s    xx,,r   N)r<   r=   r>   rI   rH   rG   r
  r%   r   r   ChunkAccumulatorr  w
  s    D!*-r   r  r  r   g     @r  r  r  0123456789abcdefr  r   r  r  )r7  r   r)  r  ry   r   r   r  r  r  r
  r  r   r  r+  r  r   
gc_collectrm  r  r  )r.   r  r  r  objectswriterr  reconstructedr  r   chunk_sizesr  large_sizesmedium_sizessmall_sizes
chunk_sizes                   r   +test_framed_write_sizes_with_delayed_writerz?AbstractPickleTests.test_framed_write_sizes_with_delayed_writeru
  s   	- 	- 1f559: 5	.E %c#h1 Ag.Bc!fF 1G 1 NN- 22b81<> ? &'FLL',,W5
 //1G JJw/M]G4s6==115  V668'BGq(T-C-CCaGH##C$6A
   V]]!3Q\A5EF+1==9a3q69K9&1 ;4#9#99  ;K ;'2 >!!<d&<&<<  >L >&1<Q!V1<K< * -

A0F0F,F +--   [!1!$[!1C4E!E!I!,.g5	.1H :;><s$   2JJ#J"!J'(
J,3J,c           	          G d d      a t        t        j                  dz         D ]  }t         j                  t         j                  j
                  t         j                  j
                  j                  fD ]Q  }| j                  ||      5  | j                  | j                  ||            }| j                  ||       d d d        S  y # 1 sw Y   `xY w)Nc                        e Zd Z G d d      Zy)Nestedc                        e Zd Z G d d      Zy)Nested.Ac                        e Zd Z G d d      Zy)
Nested.A.Bc                       e Zd Zy)Nested.A.B.CNrk   r%   r   r   rX   r  
  s    r   rX   N)r<   r=   r>   rX   r%   r   r   r?  r  
  s     r   r?  N)r<   r=   r>   r?  r%   r   r   Ar  
  s     r   r   N)r<   r=   r>   r   r%   r   r   r  r  
  s     r   r  r   )r  r   )r  r7  r   r)  r   r?  rX   r  r  r  r   )r.   r  r   r  s       r   test_nested_namesz%AbstractPickleTests.test_nested_names
  s    	 	
 622Q67 	2E&((**fhhjjll; 2\\3\7 2 $

4::c5+A BIMM#y12 22	22 2s   4CCc                     G d d      a t        j                  t         j                     t         _        dt         _        t        t        j                  dz         D ]X  }| j                  |      5  | j                  | j                  t         |            }| j                  |t                d d d        Z t         `y # 1 sw Y   kxY w)Nc                       e Zd Zy)	RecursiveNrk   r%   r   r   r$  r$  
      r   r$  zRecursive.mod.Recursiver   rs  )r$  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$89	!:	622Q67 	4EE* 4 JJtzz)U'CD	i34 4	4 M4 4s   1<B>>C	c           	          G d d      a t         j                  t         j                  t               j                  t         j                  j
                  t         j                  j                  t         j	                         j                  f}t         j                  t         ft         j                  j                  t         j                  ff}t        t        j                  dz         D ]  }|D ][  }| j                  ||      5  | j                  | j                  ||            }| j                   |        |              d d d        ] |D ]g  \  }} |       }| j                  ||      5  | j                  | j                  ||            }| j                   ||       ||             d d d        i  t         j                  d   t         j                  d   f}t        t        j                  dz         D ]G  }|D ]@  }	| j                  ||	      5  | j!                  t"        | j                  |	|       d d d        B I y # 1 sw Y   cxY w# 1 sw Y   xY w# 1 sw Y   ixY w)Nc                   F    e Zd Zed        Zed        Zd Z G d d      Zy)PyMethodsTestc                       y)Ncheeser%   r%   r   r   r-  zPyMethodsTest.cheese
  s    r   c                     | t         u sJ y)Nwine)r+  r   s    r   r/  zPyMethodsTest.wine
  s    m+++r   c                 (    t        | t              sJ y)Nbiscuits)r   r+  r2   s    r   r2  zPyMethodsTest.biscuits
  s    !$666!r   c                   6    e Zd ZdZed        Zed        Zd Zy)PyMethodsTest.NestedzNested classc                       y)Nketchupr%   r%   r   r   r6  zPyMethodsTest.Nested.ketchup
  s    $r   c                 ,    | t         j                  u sJ y)Nmaple)r+  r  r0  s    r   r8  zPyMethodsTest.Nested.maple
  s    -"6"6666"r   c                 <    t        | t        j                        sJ y)Npie)r   r+  r  r2   s    r   r:  zPyMethodsTest.Nested.pie
  s    %dM,@,@AAA r   N)	r<   r=   r>   rI   staticmethodr6  r   r8  r:  r%   r   r   r  r4  
  s.    % %# #!r   r  N)	r<   r=   r>   r;  r-  r   r/  r2  r  r%   r   r   r+  r+  
  s5        "! !r   r+  r   r  methodr-  r/  r  descr)r+  r-  r/  r2  r  r6  r8  r:  r7  r   r)  r  r  r  r   rZ   r  r  )
r.   
py_methodspy_unbound_methodsr  r=  r  r   r   descriptorsr?  s
             r   test_py_methodsz#AbstractPickleTests.test_py_methods
  s;   	! 	!2   O$$  ((  &&  "&&

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

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

4::fe+D EI$$VC[)C.AB BB		B ""8,""6*
 622Q67 	KE$ K\\U\; K%%iUEJK KK	K< <
B BK Ks%   >I.A I#I!II!I*c                     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        j                  d      j                  dft        j                  j                  t        j                  d      dfff}t        t        j                   dz         D ]a  }|D ]Z  \  }}| j#                  ||      5  | j%                  | j'                  ||            }| j)                   ||  ||        d d d        \ c t        j*                  d   t        j*                  d   f}t        t        j                   dz         D ]G  }|D ]@  }| j#                  ||      5  | j-                  t.        | j&                  ||       d d d        B I y # 1 sw Y   xY w# 1 sw Y   [xY w)Nc                   "    e Zd Z G d de      Zy)Subclassc                       e Zd Zy)Subclass.NestedNrk   r%   r   r   r  rH    s    r   r  N)r<   r=   r>   ry   r  r%   r   r   rF  rF    s     r   rF  abcd)r   )rI  r   r%  r%   r   r   )r   ))r~   r   )r   r   )s   abcr  )r   r   r   sweet)r-  r-  r<  	maketransr  r>  )r@  rF  indexry   __len__r   __contains__r5  r   r  rt  rK  countr  r7  r   r)  r  r  r  r   rZ   r  r  )r.   	c_methodsr  r=  r/   r  rB  r?  s           r   test_c_methodsz"AbstractPickleTests.test_c_methods
  s&   	u 	 \\6"YY&#\\I<(V  $'A{+]]01  "23g$$d+^^hw/34__W%++V4__""X__W%=s$CD+
	. 622Q67 	FE ) F\\f\= F $

4::fe+D EI$$VT]It4DEF FF	F {+MM*%
 622Q67 	KE$ K\\U\; K%%iUEJK KK	KF FK Ks   :H,<#H8,H58I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 ]  }| j                  t        |      |      5  | j                  ||      }| j                  d|d|j!                         |       | j#                  t        | j%                  |            t        |             d d d          y # 1 sw Y   xY w)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  rZ  r[  r  r   r  r  r   r   r  )r.   testsvalr'  r   r  r  s          r   test_compat_picklez&AbstractPickleTests.test_compat_pickle6  s:   1a[-2e_k62}h7[[)Y/[,4!!#Z1CD!!#Z<$$&}E	
 $ 	HNCdq H\\tCy\> H"jje4GMMT#:"B"B"DgNMM$tzz'':";T#YGH HH	HH Hs   A,EE
c                 8   d }t        dt        j                  dz         D ]U  }| j                  t        t        j
                  f      5  t        j                  | j                  ||             d d d        W |`	t        dt        j                  dz         D ]U  }| j                  t        t        j
                  f      5  t        j                  | j                  ||             d d d        W |j                  |_        t        dt        j                  dz         D ]U  }| j                  t        t        j
                  f      5  t        j                  | j                  ||             d d d        W y # 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   {xY w)Nc                       y r$   r%   r%   r   r   r
  z6AbstractPickleTests.test_local_lookup_error.<locals>.fK      r   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_errorH  s^   	 1f559: 	6E""NF4H4H#IJ 6

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

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

1e 456 6	66 66 6
6 6s$   	&E7 &F&F7F	F	F	c              #   .  K   d}t        |       t        |       t        ot        |      }t        j                  |d      }dt        j                  fD ]7  }t        |dd|       t        |ddd	|
       t        |ddd|
       9 y y w)N   abcdefghlittle)	byteorderr   r?  )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_objectsa  s      
J''
++"$ENN:NBE[445 
4&uS-24 4 'uS/5UD D 'uS-3V-24 4
4 #s   BBc                 &   | j                         D ]}  }t        dt        j                  dz         D ]Y  }| j	                  ||      }|j
                  r|dk\  r| j                  d|       | j                  t        t        j                  |      d       |dk\  r| j                  t        t        j                  |      |j                  rdnd       | j                  t        t        j                  |      |j                  rdnd       d }| j	                  |||      }| j                  ||       | j                  |      }| j                  ||       | j                  t!        |      t!        |             | j                  ||       \  y )Nr   r   r   rf  c                      yNTr%   r   s    r   buffer_callbackzAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback  s    #r   rp  )rk  r7  r   r)  r  r   r  r   r"   NEXT_BUFFERSHORT_BINBYTESr   r  r  r   r   r   )r.   r   r  r  rp  data2r   s          r   test_in_band_buffersz(AbstractPickleTests.test_in_band_buffersu  sP   ++- 	+Cq&"9"9A"=> +zz#u-##
MM+t4  f.@.@$!GKA:$$\&2G2G%N*-,,QA?$$\&2C2CT%J*-,,QA?$ JJsE7F ' HE$$UD1jj&  c*d3ic3  c*/+	+r   c                    | j                         D ]  }t        dd      D ]>  }| j                  t              5  | j	                  ||g j
                         d d d        @ t        dt        j                  dz         D ]#  }g fd}| j	                  |||      }| j                  d|       | j                  t        t        j                  |      d       | j                  t        t        j                  |      d       | j                  t        t        j                  |      d       | j                  t        t        j                  |      |j                  rdnd       |j                   r| j                  t#        d         d       | j                  t        j$                        5  | j'                  |       d d d        | j'                  |      }|j(                  r| j+                  ||       n6| j+                  t-        |      t-        |             | j                  ||       | j'                  |t/                    }|j(                  r| j+                  ||       | j+                  t-        |      t-        |             | j                  ||       &  y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   rq  r   c                 B    j                  | j                               S r$   )r   r   )r   bufferss    r   r;  z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>  s    W^^BFFH-E r   rf  rx  )rk  r7  r  r+  r  r   r   r)  r  r   r"   rs  r  rr  READONLY_BUFFERr   r   r   rc  r  r   r   r   iter)r.   r   r  rp  r  r   rx  s         @r   test_oob_buffersz$AbstractPickleTests.test_oob_buffers  sI   ++- &	/Cq! :&&z2 :JJsE/1yy  :: ::
 q&"9"9A"=>  /"Ezz#u2A " C  d3  f.C.CT!JAN  f.?.?!FJ  f.@.@$!GK  f.D.Dd!K&)ll; ##$$U71:%6D&&v'='=> %JJt$% jjwj7,,MM#s+MM$s)T#Y7$$S#.jjtG}j=,,MM#s+MM$s)T#Y7$$S#.A /&	/: :$% %s   J+0J8+J58Kc                 T   t        d      }t        dt        j                  dz         D ]}  }g }|j                  }| j                  |||      }t        t        |      }| j                  ||      }| j                  t        |      t        |             | j                  ||        y N   foobarr   r   rq  ry  )r   r7  r   r)  r   r  r  rt  r  r   r   r   )r.   r   r  rx  rp  r  r   s          r   %test_oob_buffers_writable_to_readonlyz9AbstractPickleTests.test_oob_buffers_writable_to_readonly  s    I&1f559: 	'EG%nnO::c5/:JD)W-G**T7*3CMM$s)T#Y/S#&	'r   c                     t        j                  d      }t        dd      D ]<  }| j                  t         j                        5  | j                  ||       d d d        > y # 1 sw Y   IxY w)Nr  r   r   )r   r   r7  r  PickleErrorr  )r.   r   r  s      r   test_picklebuffer_errorz+AbstractPickleTests.test_picklebuffer_error  sc      +1a[ 	&E""6#5#56 &

2u%& &	&& &s   A""A+	c                     d }t        j                  d      }| j                  t              5  | j	                  |d|       d d d        y # 1 sw Y   y xY w)Nc                     ddz   y r(  r%   ry  s    r   rp  zGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callback  s	    aCr   r  r   rq  )r   r   r  ZeroDivisionErrorr  )r.   rp  r   s      r   test_buffer_callback_errorz.AbstractPickleTests.test_buffer_callback_error  sM    	  +01 	?JJr1oJ>	? 	? 	?s   AAc                    t        j                  d      }t        dt         j                  dz         D ]  }| j	                  ||g j
                        }| j                  t              5  | j                  |t                      d d d        | j                  t         j                        5  | j                  |g        d d d         y # 1 sw Y   GxY w# 1 sw Y   xY w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59: 	-E::b%:CD""9- 3

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

4
,- -	-3 3- -s   )C,CC	C 	c                     t        dt        j                  dz         D ])  }| j                  d|d       }| j	                  |d       }+ y )Nr   r   rq  ry  )r7  r   r)  r  r  )r.   r  data_pickledr  s       r   +test_inband_accept_default_buffers_argumentz?AbstractPickleTests.test_inband_accept_default_buffers_argument  sI    1f559: 	:E::a:EL::lD:9D	:r   NzTest needs Numpyc                      fd fd fd}t        j                  d      } ||        ||d d d          t        j                  d      j                  d      } ||        ||j                          ||d d d          y )Nc                     t         j                  j                  | |       j                  | j                  j
                  |j                  j
                         y r$   )nptestingassert_equalr   ctypesr  r'   r   r.   s     r   check_no_copyz=AbstractPickleTests.test_buffers_numpy.<locals>.check_no_copy  s7    JJ##Aq)QXX]]AHHMM:r   c                     t         j                  j                  | |       j                  | j                  j
                  |j                  j
                         y r$   )r  r  r  r  r  r  r  s     r   
check_copyz:AbstractPickleTests.test_buffers_numpy.<locals>.check_copy  s7    JJ##Aq)qxx}}=r   c                 t   t        dt        j                  dz         D ].  }j                  | |      }j	                  |      } | |       0 t        dt        j                  dz         D ]3  }d }j                  | ||      }j	                  |      } | |       5 t        dt        j                  dz         D ]v  }g }|j
                  }j                  | ||      }j	                  ||      }| j                  j                  s| j                  j                  r
 | |       n | |       x y )Nr   r   r   c                      yrn  r%   )r  s    r   r;  zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>  s    r   rq  ry  )	r7  r   r)  r  r  r   r   r   r   )	arrr  r  r   rp  rx  r  r  r.   s	         r   check_arrayz;AbstractPickleTests.test_buffers_numpy.<locals>.check_array  s$   q&"9"9A"=> %zz#u-jj&3$% q&"9"9A"=> %"0zz#uozNjj&3$	% q&"9"9A"=> )")..zz#uozNjjwj799))SYY-C-C!#s+sC()r   r  r      r$  )r  arangereshapeT)r.   r  r  r  r  s   `  @@r   test_buffers_numpyz&AbstractPickleTests.test_buffers_numpy  su    	;	>	). iilCC!Hiim##F+CCEEC!Hr   c           	        	 ddl m	  G 	fdd      at        D ]y  }t	        d      D ]i  }dt	        d      D ci c]  }t               t                c}D ]  }||_        |_         d	 | j                  |      }| j                  |       k { y c c}w # t        $ r'}d}| j                  |t        |             Y d }~d }~ww xY w)	Nr   )getrandbitsc                   *    e Zd Z fdZd ZfdZy)Badc                     S r$   r%   )r.   r\   ENABLEDs     r   r]   z
Bad.__eq__  s    r   c                      yr;  r%   r2   s    r   __hash__zBad.__hash__  s    r   c                 J     d      dk(  rj                          t        dfS )Nr  r   r%   )clearr  )r.   
collectionr  s    r   rs   zBad.__reduce__   s%    q>Q&$$&Ry r   N)r<   r=   r>   r]   r  rs   )r  r  r  s   r   r  r    s    !r   r  r  FTchanged size during iteration)randomr  r  r  r7  r3  r  r  r  r  r  ry   )
r.   r  r  r3  r  r-  r  r  r  r  s
          @@@r   test_evil_class_mutating_dictz1AbstractPickleTests.test_evil_class_mutating_dict  s    &	! 	!  	4E2Y 449"I>qceSUl>
% 0C!CG%/CN0 4::j%8DJJt$4	4 ? $ 4>HMM(CF334s   B3#B  	C)CCc                     t         d      s j                  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        y )	Nr  z has no associated pickler typec                       e Zd Zy)ClearerNrk   r%   r   r   r  r  :  r%  r   r  c                       G  fddj                         } |t        j                               }	 |j                          y # t        $ r'}d}j                  |t        |             Y d }~y d }~ww xY w)Nc                       e Zd Z fdZy)]AbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPicklerc                 F    t        |t              rj                          y r$   )r   r  r  )r.   r   r  s     r   persistent_idzkAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickler.persistent_id?  s    !#w/"((*r   N)r<   r=   r>   r  )r  s   r   EvilPicklerr  >  s     r   r  r  )r  r6   rB   r  r  r  ry   )r  r  r  r-  r  r  r.   s   `    r   checkzHAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check=  sb     dll  
 ""**,6G0Z( 0:hA//0s   A 	A8A33A8r   r   r!  )r   skipTestr   r  r  )r.   r  r  s   ` @r   %test_evil_pickler_mutating_collectionz9AbstractPickleTests.test_evil_pickler_mutating_collection4  s    tY'--4:,.M NOO	 		0  	0E79+79gi()79+79gi()79a.!79aA./giGI./	0r   )r<   r=   r>   	optimizedr   r  r  r   r  r  r&  r(   r/  r1  r6  r>  rA  rC  rF  rJ  rP  rR  rU  r\  r_  ra  rc  rf  rh  rj  rl  ro  rq  rs  ru  rx  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.  r3  r7  r9  rA  rG  rJ  rN  rT  rW  rZ  r_  rf  rj  ro  rx  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_taskrequires_resourcer  r  r  r  r!  r(  rC  rQ  r^  rd  rk  ru  r|  r  r  r  r  r  unittestskipIfr  r  r  r  r%   r   r   r  r    sq    I%//I +99N&(/	, 08Q 
#(9E :Bq &42CO 08Q 
#(9G :Bq &42CQ 4< 6,=K >FST 986GU/,	%+.278@6<9:B8>&),	+'&
6L&&%.0 Xw0: 1:/.7,*&"-24,4J&LL%?N?2&&AA&	(
  899
9
2,3.92* *(*("2--.2 % %.1,,+
K)MN N!-H^ Wu%2 & 26@(FT ?. ?.B2
8Kt*KXH$624(+>(/T'&?	-:
 X__R4Z!34* 5*X4<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
y)BigmemPickleTestsg@F)sizememusedry_runc                     dd|z  z  }	 t         D ]Z  }|dk  r	| j                  |      5  | j                  t        t        f      5  | j                  ||       d d d        d d d        \ 	 d }y # 1 sw Y   xY w# 1 sw Y   vxY w# d }w xY w)Nr   r  r   rs  r  )r  r  r  r+  rd  r  )r.   r  r  r  s       r   test_huge_long_32bz$BigmemPickleTests.test_huge_long_32bX  s    QX	" 919\\\. 9**J+FG 9

4%
899 99 D9 99 9 Ds:   !B	 A=A1A=#
B	 1A:6A==B	B	 	Bg      @c           
         d|dz  z  }	 t         D ]  }|dk  r	| j                  |      5  	 | j                  ||      }t        j                  t        j                  dt        |            z   }|j                  |      }| j                  |||t        |      z
  |        d }	 d d d         	 d }y # d }w xY w# 1 sw Y   xY w# d }w xY w)N   abcdr  r  rs  r  rM  )
r  r  r  r   r  rO  rP  r+  rL  r   r.   r  r  r  r  header
data_starts          r   test_huge_bytes_32bz%BigmemPickleTests.test_huge_bytes_32bi  s    $!)$	" '19\\\. 
'	'"&**TE*"B"(//"(++dCI">#?%,]]4%8
(("#Js6{$::FH #'
' 
'' D #'
' 
' Ds:   !C B:A5B3"B:%
C 3B77B::C	?C C
c           
      @   d|dz  z  }	 t         D ]  }|dk  r	| j                  |      5  |dk(  rA| j                  t        t        f      5  | j                  ||       d d d        	 d d d        b	 | j                  ||      }t        j                  t        j                  dt        |            z   }|j                  |      }| j                  |||t        |      z
  |        d }	 d d d         	 d }y # 1 sw Y   xY w# d }w xY w# 1 sw Y   xY w# d }w xY w)Ns   acbdr  r  rs  r  <Q)r  r  r  r+  rd  r  r   r  rO  rP  r+  rL  r   r  s          r   test_huge_bytes_64bz%BigmemPickleTests.test_huge_bytes_64b~  s.   $!)$	" '19\\\. 'z "..
M/JK = JJteJ<= ' '	'"&**TE*"B"("2"2"(++dCI">#?%,]]4%8
(("#Js6{$::FH #'!' ''* D= = #'!' '$ DsY   !D !DC9 	D)	D 3A5D(D+
D 9D>DD		DD	D Dr  c           
      *   d|dz  z  }	 t         D ]  }|dk(  r	| j                  |      5  	 | j                  ||      }t        j                  t        j                  dt        |            z   }|j                  d      }| j                  |||t        |      z
  |        | j                  |j                  d      t        d      z   |j                  d      z
  t        |             d }	 d d d         	 d }y # d }w xY w# 1 sw Y   xY w# d }w xY w)NrI  r  r   rs  r  rM  r  )r  r  r  r   r  rO  rP  r+  rL  r   rindexr  s          r   test_huge_str_32bz#BigmemPickleTests.test_huge_str_32b  s   #	" 'A:\\\. ''"&**TE*"B"("3"3"(++dCI">#?%,]]7%;
(("#Js6{$::FH (('..*ACL*P*1--*@+ACFt9N #'' ''" D #'' ' Ds:   !D DB=C;*D-
D ;C??DD	D Dc           
         d|dz  z  }	 t         D ]+  }|dk(  r
| j                  |      5  |dk  rA| j                  t        t        f      5  | j                  ||       d d d        	 d d d        c	 | j                  ||      }t        j                  t        j                  dt        |            z   }|j                  d      }| j                  |||t        |      z
  |        | j                  |j                  d      t        d      z   |j                  d      z
  t        |             d }	 d d d        . 	 d }y # 1 sw Y   xY w# d }w xY w# 1 sw Y   PxY w# d }w xY w)NrI  r  r   rs  r  r  r  )r  r  r  r+  rd  r  r   r  rO  rP  r+  rL  r   r  r  s          r   test_huge_str_64bz#BigmemPickleTests.test_huge_str_64b  sj   #	" 'A:\\\. 'qy!..
M/JK = JJteJ<= 	' '
'"&**TE*"B"("4"4"(++dCI">#?%,]]7%;
(("#Js6{$::FH (('..*ACL*P*1--*@+ACFt9N #'!' ''* D!= = #'!' '$ DsY   "E# !EE!	E*	E# 4B=E1E4E# EEEEE 	E# #E'N)r<   r=   r>   r   r
   r  r  r   r  r  r  r%   r   r   r  r  T  s     Se4
 5
  Se4 5( Se4 5: SE2 34 SE2 3r   r  c                       e Zd ZdZdZd Zy)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y)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y)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y)r  z(Calling base class method should succeedNc                 <    || _         t        j                  | |      S r$   )r  r?  r   r  s     r   r   zREX_four.__reduce_ex__  s    ##D%00r   r  r%   r   r   r  r    s    2F1r   r  c                       e Zd ZdZdZd Zy)r  z-This one used to fail with infinite recursionr   c                 :    d| _         t        j                  |       S rL  )r  r?  rs   r2   s    r   rs   zREX_five.__reduce__  s      &&r   Nr  r%   r   r   r  r    s    7N'r   r  c                   *    e Zd ZdZddZd Zd Zd Zy)r=  z]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    Nc                 &    ||| _         y g | _         y r$   r:  )r.   r   s     r   rH   zREX_six.__init__      #/U
R
r   c                 d    t        |       t        |      u xr | j                  |j                  k(  S r$   )r   r   r[   s     r   r]   zREX_six.__eq__  '    DzT%[(FTZZ5;;-FFr   c                 :    | j                   j                  |       y r$   )r   r   )r.   items     r   r   zREX_six.append  s    

$r   c                 H    t        |       dd t        | j                        d fS rg   )r   r{  r   r2   s    r   rs   zREX_six.__reduce__  s     Dz2tT$**%5t;;r   r$   )r<   r=   r>   rI   rH   r]   r   rs   r%   r   r   r=  r=    s    8G <r   r=  c                   *    e Zd ZdZddZd Zd Zd Zy)r[  z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    Nc                 &    ||| _         y i | _         y r$   rX  )r.   rY  s     r   rH   zREX_seven.__init__
  r  r   c                 d    t        |       t        |      u xr | j                  |j                  k(  S r$   )r   rY  r[   s     r   r]   zREX_seven.__eq__  r  r   c                 "    || j                   |<   y r$   rX  )r.   r0  rp   s      r   __setitem__zREX_seven.__setitem__  s    

3r   c                 d    t        |       dd d t        | j                  j                               fS rg   )r   r{  rY  r   r2   s    r   rs   zREX_seven.__reduce__  s)    Dz2tT4

0@0@0B+CCCr   r$   )r<   r=   r>   rI   rH   r]   r  rs   r%   r   r   r[  r[    s    8G Dr   r[  c                   *    e Zd ZdZddZd Zd Zd Zy)r  zUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    Nc                     || _         y r$   r  r.   r  s     r   rH   zREX_state.__init__  rq   r   c                 d    t        |       t        |      u xr | j                  |j                  k(  S r$   r   r  r[   s     r   r]   zREX_state.__eq__  r  r   c                     || _         y r$   r  r  s     r   __setstate__zREX_state.__setstate__  rq   r   c                 2    t        |       d| j                  fS rg   r  r2   s    r   rs   zREX_state.__reduce__  s    Dz2tzz))r   r$   )r<   r=   r>   rI   rH   r]   r  rs   r%   r   r   r  r    s    G*r   r  c                       e Zd ZdZy)rC  r   Nr<   r=   r>   r>  r%   r   r   rC  rC  #  s    Fr   rC  c                       e Zd ZdZy)MyFloatg      ?Nr  r%   r   r   r  r  &  s    Fr   r  c                       e Zd ZdZy)	MyComplexy      ?        Nr  r%   r   r   r   r   )  s    Fr   r   c                       e Zd ZdZy)MyStrr6  Nr  r%   r   r   r  r  ,  s    Fr   r  c                       e Zd ZdZy)	MyUnicodeu	   hello ሴNr  r%   r   r   r  r  /  s    Fr   r  c                       e Zd ZdZy)r  r%  Nr  r%   r   r   r  r  2  s    Fr   r  c                       e Zd Zg dZy)r5  r%  Nr  r%   r   r   r5  r5  5  s    Fr   r5  c                       e Zd ZdddZy)rT  r   r   r}   Nr  r%   r   r   rT  rT  8  s    1Fr   rT  c                       e Zd ZddhZy)r  r~   r   Nr  r%   r   r   r  r  ;  s    3ZFr   r  c                        e Zd Z eddh      Zy)r  r~   r   N)r<   r=   r>   r  r>  r%   r   r   r  r  >  s    Sz"Fr   r  c                       e Zd Zd Zy)MyIntWithNewc                     t         r$   )AssertionError)r   rp   s     r   r   zMyIntWithNew.__new__G  s    r   N)r<   r=   r>   r   r%   r   r   r  r  F  s    r   r  c                   $    e Zd Zej                  Zy)rI  N)r<   r=   r>   r  r   r%   r   r   rI  rI  J  s    kkGr   rI  c                       e Zd ZdgZy)r  r   N)r<   r=   r>   r   r%   r   r   r  r  N  s	    Ir   r  c                       e Zd Zd Zd Zy)rL  c                     t        d      )Nz3SimpleNewObj.__init__() didn't expect to get called)r  r   s      r   rH   zSimpleNewObj.__init__R  s    MNNr   c                 f    t        |       t        |      k(  xr | j                  |j                  k(  S r$   )r  rZ   r[   s     r   r]   zSimpleNewObj.__eq__U  s'    4yCJ&J4==ENN+JJr   N)r<   r=   r>   rH   r]   r%   r   r   rL  rL  Q  s    OKr   rL  c                       e Zd Zd Zy)r{  c                     d| z  dfS )N%Xr  r%   r2   s    r   __getnewargs__zComplexNewObj.__getnewargs__Y  s    tR  r   N)r<   r=   r>   r  r%   r   r   r{  r{  X  s    !r   r{  c                       e Zd Zd Zy)r  c                     d| z  fddifS )Nr  baser  r%   r2   s    r   __getnewargs_ex__z!ComplexNewObjEx.__getnewargs_ex__]  s    t~|++r   N)r<   r=   r>   r  r%   r   r   r  r  \  s    ,r   r  c                       e Zd Zd Zy)r  c                     | j                    y r$   )r   )r.   r0  s     r   __getattr__zBadGetattr.__getattr__a  s	    r   N)r<   r=   r>   r  r%   r   r   r  r  `  s    r   r  c                   Z    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 Zd Zy)AbstractPickleModuleTestsc                     t        t        d      }	 |j                          | j                  t        | j
                  d|       t        j                  t               y # 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_fileg  Q    	%GGIj$))S!<V$IV$   2A A9c                     t        t        d      }	 |j                          | j                  t        | j
                  d|       t        j                  t               y # t        j                  t               w xY wr!  r#  r&  s     r   test_load_closed_filez/AbstractPickleModuleTests.test_load_closed_fileo  r(  r)  c                     t        j                         }di dg}| j                  ||       |j                  d       | j	                  |      }| j                  ||       y )Nr"  |   r   )r6   rB   r  r8   loadr   )r.   streamr  r  s       r   test_load_from_and_dump_to_filez9AbstractPickleModuleTests.test_load_from_and_dump_to_filew  sO    R~		$AIIf%	D)r   c                 D    | j                  t        j                  d       y r   )r   r   r)  r2   s    r   test_highest_protocolz/AbstractPickleModuleTests.test_highest_protocol  s    00!4r   c                    t        j                         }| j                  d|d       | j                  d|d       | j                  dd       | j                  dd       | j	                  |d       | j	                  |d       y )Nr"  r   )filer   r  )r6   rB   r  r  Picklerr&  s     r   test_callapiz&AbstractPickleModuleTests.test_callapi  sk    JJL		#q"		#A	+

3

3
$QQ$r   c                 2   t        t        d      }	 t        D ]%  }| j                  t        | j
                  d||       ' 	 |j                          t        j                  t               y # |j                          t        j                  t               w xY w)Nwr"  )	r  r   r  r  r  r  r$  r   r%  rc  s      r   test_dump_text_filez-AbstractPickleModuleTests.test_dump_text_file  sr    	%" G!!)TYYQFG GGIV$ GGIV$s   .A+ ++Bc                     t        j                  d      }| j                  t        t        j
                  t        j                  f| j                  |       y )Ns   X''.)	r6   rB   r  r  rO  r  r   rc  r.  )r.   r  s     r   test_incomplete_inputz/AbstractPickleModuleTests.test_incomplete_input  s8    JJw8V\\63I3IJDIIWXYr   c                     G d d| j                         } G d d| j                        }| j                  t        j                   |       j
                  d       | j                  t        j                   |       j                         y )Nc                       e Zd Zd Zy);AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklerc                      y r$   r%   r2   s    r   rH   zDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__      r   Nrc   r%   r   r   
BadPicklerr>        $r   rA  c                       e Zd Zd Zy)=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklerc                      y r$   r%   r2   s    r   rH   zFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__  r@  r   Nrc   r%   r   r   BadUnpicklerrD    rB  r   rF  r   )r5  	Unpicklerr  r   r  r  rc  r.  )r.   rA  rF  s      r   test_bad_initz'AbstractPickleModuleTests.test_bad_init  sb    	% 	%	%4>> 	% 	&..
0A0A1E&00,.2E2EFr   c                    d t         d         G d d      }| j                  t        t        f| j                   |               G fdd      }| j                  t        t        f| j                   |               G fdd      }| j                  t        t        f| j                   |               G fdd      }| j                  t
        | j                   |               G fdd      }| j                  t
        | j                   |               G fd	d      }| j                  t
        | j                   |               G fd
d      }| j                  t        t
        f| j                   |               G fdd      }	 | j	                   |               G fdd      }	 | j	                   |              y # t
        $ r Y 0w xY w# t
        $ r Y y w xY w)Nc                     t         r$   )r  r   s      r   raises_oserrorzIAbstractPickleModuleTests.test_unpickler_bad_file.<locals>.raises_oserror  s    Mr   c                     ddz   y r(  r%   r2   s    r   bad_propertyzGAbstractPickleModuleTests.test_unpickler_bad_file.<locals>.bad_property  s	    aCr   c                       e Zd Zy<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.FNrk   r%   r   r   FrP    r%  r   rQ  c                       e Zd ZW  ZyrO  r<   r=   r>   rF   rK  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    %Hr   c                       e Zd ZW  ZyrO  r<   r=   r>   rE   rT  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    !Dr   c                       e Zd ZW  ZW ZyrO  )r<   r=   r>   rE   rF   rM  rK  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    D%Hr   c                       e Zd ZW  ZW ZyrO  )r<   r=   r>   rF   rE   rX  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    #H!Dr   c                       e Zd ZW  ZyrO  rS  rM  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    #Hr   c                       e Zd ZW  ZyrO  rV  r[  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    Dr   c                        e Zd ZW  ZW ZW ZyrO  )r<   r=   r>   r0   rE   rF   rX  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    D!D%Hr   c                        e Zd ZW  ZW ZW ZyrO  )r<   r=   r>   readintorE   rF   rX  s   r   rQ  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    #H!D%Hr   )r   r  rb  r  rG  r  )r.   rQ  rM  rK  s     @@r   test_unpickler_bad_filez1AbstractPickleModuleTests.test_unpickler_bad_file  s   			 
		 	>95t~~qsK	& 	&>95t~~qsK	" 	">95t~~qsK	& 	& 	+T^^QSA	" 	" 	+T^^QSA	$ 	$+T^^QSA	  	 >+<=t~~qsS	& 	&	NN13
	& 	&	NN13 ! 		 ! 		s$   G :G  	GG 	G,+G,c                      G d d      }| j                  t        | j                   |               G d d      }| j                  t        | j                   |              y )Nc                       e Zd Zy):AbstractPickleModuleTests.test_pickler_bad_file.<locals>.FNrk   r%   r   r   rQ  rc    r%  r   rQ  c                       e Zd Zed        Zy)rc  c                     ddz   y r(  r%   r2   s    r   rG   z@AbstractPickleModuleTests.test_pickler_bad_file.<locals>.F.write  s	    !r   N)r<   r=   r>   r   rG   r%   r   r   rQ  z:AbstractPickleModuleTests.test_pickler_bad_file.<locals>.F  s     r   )r  r  r5  r  )r.   rQ  s     r   test_pickler_bad_filez/AbstractPickleModuleTests.test_pickler_bad_file  sI    	 	)T\\137	 	 	+T\\13?r   c                 @   t        d      }t        dd      D ]5  }| j                  t              5   |||g j                         d d d        7 t        dt
        j                  dz         D ]  }g }|j                  } ||||      }| j                  d|       | j                  t        |d         d       | j                  t
        j                        5   ||       d d d         |||      }| j                  ||        y # 1 sw Y   xY w# 1 sw Y   4xY w)Ns   foor   r   )r   rp  r   ry  )r   r7  r  r+  r   r   r)  r  r   r   rc  r   )	r.   r  r  r   r  rx  rp  r  r   s	            r   check_dumps_loads_oob_buffersz7AbstractPickleModuleTests.check_dumps_loads_oob_buffers  s    F#1a[ 	1E"":. 1cE&(ii11 1	1
 1f559: 	$EG%nnOu)8:DVT*U71:.7""6#9#9: dg.CMM#s#	$1 1 s   D	DD	D	c                 P    | j                  | j                  | j                         y r$   )rh  r  r  r2   s    r   test_dumps_loads_oob_buffersz6AbstractPickleModuleTests.test_dumps_loads_oob_buffers  s    **4::tzzBr   c                 >      fd} fd} j                  ||       y )Nc                 t    t        j                         } j                  | |fi | |j                         S r$   )r6   rB   r  rD   )r   r   r
  r.   s      r   r  zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumps  s/    

ADIIc1''::<r   c                 T    t        j                  |       } j                  |fi |S r$   )r6   rB   r.  )r  r   r
  r.   s      r   r  zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads  s'    

4 A499Q)&))r   )rh  )r.   r  r  s   `  r   test_dump_load_oob_buffersz4AbstractPickleModuleTests.test_dump_load_oob_buffers  s    	 
	* 	**5%8r   N)r<   r=   r>   r'  r+  r0  r2  r6  r9  r;  rH  r`  rf  rh  rj  rn  r%   r   r   r  r  e  sH    %%*5%%Z
G?B@$0C9r   r  c                       e Zd Zd Zd Zd Zy)AbstractPersistentPicklerTestsc                     t        |t              r(|dz  dk(  r | xj                  dz  c_        t        |      S |dk(  r| xj                  dz  c_        yy )Nr   r   r   test_false_valuerW  )r   r  id_country   false_count)r.   r?  s     r   r  z,AbstractPersistentPicklerTests.persistent_id$  sN    fc"vzQMMQMv;))!r   c                     |s| xj                   dz  c_         y| xj                  dz  c_        t        |      }|dz  dk(  sJ |S )Nr   rr  r   r   )load_false_count
load_countr  )r.   oidr?  s      r   persistent_loadz.AbstractPersistentPicklerTests.persistent_load.  sE    !!Q&!%OOq OXFA:?"?Mr   c           	         t        t        d            dgz   }t        D ]  }d| _        d| _        d| _        d| _        | j                  | j                  | j                  ||            |       | j                  | j                  d       | j                  | j                  d       | j                  | j                  d       | j                  | j
                  d        y )Nrb  rr  r   r   r   )
r   r7  r  rs  rt  rv  rw  r   r  r  )r.   Lr  s      r   test_persistencez/AbstractPersistentPicklerTests.test_persistence8  s    rO122 		7EDM D$%D!DOTZZ

1e(<=qAT]]A.T--q1T__a0T22A6		7r   N)r<   r=   r>   r  ry  r|  r%   r   r   rp  rp    s    7r   rp  c                   *    e Zd Zd Zd Zd Zd Zd Zy)&AbstractIdentityPersistentPicklerTestsc                     |S r$   r%   )r.   r   s     r   r  z4AbstractIdentityPersistentPicklerTests.persistent_idH      
r   c                     |S r$   r%   )r.   pids     r   ry  z6AbstractIdentityPersistentPicklerTests.persistent_loadK  r  r   c                     | j                  | j                  ||            }| j                  |t        |             | j	                  ||       y r$   )r  r  r*  r   r   )r.   r   r  r  s       r   _check_return_correct_typezAAbstractIdentityPersistentPicklerTests._check_return_correct_typeN  s?    JJtzz#u56	ic3C(r   c                     t         D ]<  }|dk(  r| j                  dd       ddddt        fD ]  }| j                  ||        > y )Nr   r   s   abc
zabc
r   g*\()r  r  ry   )r.   r  r   s      r   test_return_correct_typez?AbstractIdentityPersistentPicklerTests.test_return_correct_typeS  sV     	@Ez//q9$gr:sC @C33C?@	@r   c                     d}| j                  t        j                  | j                  |d       t        j                  |j                  d      z   dz   }| j                  t        j                  | j                  |       y )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\  s_    '&..

M1M---"6"6w"??&H&00$**gFr   N)r<   r=   r>   r  ry  r  r  r  r%   r   r   r~  r~  F  s    )
@Gr   r~  c                   V    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y)#AbstractPicklerUnpicklerObjectTestsNc                 <    | j                   sJ | j                  sJ y r$   )pickler_classunpickler_classr2   s    r   r  z)AbstractPicklerUnpicklerObjectTests.setUph  s     !!!!####r   c                 $   g d}t         D ]  }t        j                         }| j                  ||      }|j	                  |       |j                         }|j                  d       |j                          |j	                  |       |j                         }|j                          |j                  d       |j                          |j	                  |       |j                         }| j                  ||       | j                  ||        y )Nabcdefgr  ,   r   )r  r6   rB   r  r  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_memol  s     * 	;E

A((E2GLLJJLM FF1IJJLLLZZ\N  FF1IJJLLLJJLM~>]M:/	;r   c                 j   g d}t        j                         }| j                  |      }|j                  |       |j	                         }t        j                         }| j                  |      }|j
                  |_        |j                  |       |j	                         }| j                  ||       y Nr  )r6   rB   r  r  rD   memor  )r.   r  r
  r  r  primedprimed_pickleds          r   test_priming_pickler_memoz=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memo  s    )JJL$$Q'T

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

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

		q	)51r   Tr3   c          
         t         D ]5  }| j                  |      5  t        d      D cg c]  }|t        |      f c}dt        gz   } |       }| j                  ||      }|j                  |       |j                         }d}	 |||	z        }| j                  |      }
t        |	      D ]c  }|r|j                         }| j                  |
j                         |       |s8| j                  |j                         t	        |      z          e | j                  t        |
j                         d d d        8 y c c}w # 1 sw Y   IxY w)Nrs  i  s   abcder  r   )r  r  r7  ry   r+  r  r  rD   r  r;   r   r.  r  r  )r.   ioclassr3   r  r'   r  r
  r  r  r  r  r  r  s                r   _check_multiple_unpicklingsz?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings  s)    	<EE* <.3Dk:!SV:h_LI,,Q,?U#**,GaK( 003	q GAffh$$Y^^%5u=((3W3EFG !!(INN;!< <	<:< <s#   EEB'E'AEEE	c                 B    | j                  t        j                         y r$   )r  r6   rB   r2   s    r   "test_multiple_unpicklings_seekablezFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekable  s    ((4r   c                 2    | j                  t        d       y NFr  )r  r*   r2   s    r   $test_multiple_unpicklings_unseekablezHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekable  s    (((Fr   c                 2    | j                  t        d       y r  )r  r@   r2   s    r   !test_multiple_unpicklings_minimalzEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimal  s     	((U(Cr   c                    t        t        d            }t        D ]  }t        dd      D ]  }t        j                  t        j
                         |      }| j                  ||      }|j                  |       |j                  d       | j                  |      }| j                  |j                         |         y )Nrb  r      )buffer_sizer  r   )r   r7  r  r6   BufferedRandomrB   r  r  r8   r  r   r.  )r.   r  r  buf_sizer
  r  r  s          r   "test_unpickling_buffering_readlinezFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline  s     E"I 	9E!!RL 9%%bjjlI,,Q,?T"q	 003	  !1489	9r   )r<   r=   r>   r  r  r  r  r  r  r  r  r  r  r  r  r%   r   r   r  r  c  sH    MO$;@;$<<22 @D <(5GD
9r   r  reduce_Ac                       e Zd Zd Zy)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y)BBBc                     d| _         y )Nzsome attributer~   r2   s    r   rH   zBBB.__init__  s     "r   c                     d| _         y )NBBB.__setstate__r  r  s     r   r  zBBB.__setstate__  s	    #r   N)r<   r=   r>   rH   r  r%   r   r   r  r  
  s    "
$r   r  c                     d| _         y)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     "CEr   c                       e Zd ZdZd Zy)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y|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#  s[    3
D1s?:y %%_ _ 677r   N)r<   r=   r>   rI   r  r%   r   r   r  r  !  s
    Fr   r  c                   6    e Zd Zd Zej
                  d        Zy)AbstractHookTestsc                 *   d }d }d } G d d      }t        dt        j                  dz         D ]:  }| j                  |      5  t	        j
                         }| j                  ||      }|j                  ||t        j                  g       t        j                  |j                               \  }}	}
| j                  |d	       | j                  |	d
       | j                  |
t        j                         | j                  t        j                        5  |j                  |       d d d        | j!                  t"        d      5  |j                  |       d d d        d d d        = y # 1 sw Y   ExY w# 1 sw Y   !xY w# 1 sw Y   axY w)Nc                       y r$   r%   r%   r   r   r
  z.AbstractHookTests.test_pickler_hook.<locals>.f?  ra  r   c                       y r$   r%   r%   r   r   r  z.AbstractHookTests.test_pickler_hook.<locals>.gB  ra  r   c                       y r$   r%   r%   r   r   r  z.AbstractHookTests.test_pickler_hook.<locals>.hE  ra  r   c                       e Zd Zy)4AbstractHookTests.test_pickler_hook.<locals>.MyClassNrk   r%   r   r   r  r  H  r%  r   r  r   r   rs  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:  sS   
				 	 1f559: 	EE* jjl&&sE27DHH-.,2LL,H)x  *  :6
 h1&&v';';< FF1I ++"$=? FF1I% 	   % s=   CFE0,F
E<F0E95F<FFF	c                    t        dt        j                  dz         D ]  }| j                  |      5  d }t	        j
                  |      }t        j                         }| j                  ||      }|j                  |       t        j                  |j                               }|dk(  sJ ~~| j                   |              d d d         y # 1 sw Y   xY w)Nr   r   rs  c                       y r$   r%   r%   r   r   r
  zEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.fj  s    r   r   )r7  r   r)  r  rD  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_cycleb  s     1f559: 	(EE* ( [[^jjl&&sE2q	S\\^4z!z!!"$'( (	(( (s   BCC	N)r<   r=   r>   r  r   cpython_onlyr  r%   r   r   r  r  9  s"    &P ( (r   r  c                   $    e Zd Zd Zd Zd Zd Zy)AbstractDispatchTableTestsc                     t        j                         }| j                  |d      }| j                  t              5  |j
                   d d d        | j                  t        |d             y # 1 sw Y   %xY w)Nr   dispatch_table)r6   rB   r  r  rb  r  rP  r   )r.   r
  r  s      r   test_default_dispatch_tablez6AbstractDispatchTableTests.test_default_dispatch_table}  sa    JJLq!$~. 		$456	 	s   A--A6c                       j                          G fdd j                        d fd	} j                  |       y )Nc                       e Zd ZW  Zy)GAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r<   r=   r>   r  )dts   r   	MyPicklerr    s    Nr   r  c                     t        j                         } ||      }j                  |j                         |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>.dumps  sG    

A!X&AQ--r2FF3K::<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                 Z      j                         d fd	} j                  |       y )Nc                     t        j                         }j                  ||      }|_        j	                  |j                         |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>.dumps  sU    

A""1h/A!AQ--r2FF3K::<r   r$   )r  r  )r.   r  r  s   ` @r   test_instance_dispatch_tablez7AbstractDispatchTableTests.test_instance_dispatch_table  s(    $$&	  	!!%,r   c                    fd}d }d}| j                   ||      |       | j                   ||      |       dfd}||t        <   | j                   ||             | j                   ||      |       t               }t               }| j                   ||      t               | j                   ||      t               | j                   ||      t               | j                   ||      t               ||t        <   | j                   ||      t               | j                   ||             | j                   ||      t               | j                   ||      t               dfd}	|	|t        <   |t        = | j                   ||             | j                   ||      t               | j                   ||      t               | j                   ||      t               | j                   ||      j                  d       d	 }
|
|t        <   | j                   ||      j                  d
       y )Nc                 <    t        j                   | d            S Nr   )r   r  )r   r  s    r   custom_load_dumpzIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dump  s    <<c1..r   c                 T    t        j                  t        j                  | d            S r  )r   r  r  ro  s    r   default_load_dumpzJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dump  s    <<S! 4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_2  r  r   r  c                 6    t         d| j                  d d t        fS rg   )r  rZ   r  ro  s    r   
reduce_bbbzCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbb  s    CLL$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_table  s   	/	6
 )!,a0*1-q1 	$"*w)!,h7*1-q1 EE)!,h7.q137*1-x8/2C8 's)!,h7)!,h7*1-x8/2C8 	$&s3)!,h7.q137*1-x8/2C8 	*1-//1CD	C )s 	)!,..0EFr   N)r<   r=   r>   r  r  r  r  r%   r   r   r  r  {  s    7- -@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  rD  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  rb  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  r=  r[  r  rC  floatr  r  r   ry   r  r  r@  r  r   r5  r   rT  r5  r  r  r  r<  r  rI  r  rL  r{  r  r  r  rp  r~  r  r  r  r  r  r  r  r  r<   r!  r'   r  r  r  r  r   r+  jr   r%   r   r   <module>r5     s>      
 	  	      
      %  "  . ) ) F 
	&	(  #x""3;;#6#MO &))A-.	&2:: &	% 	%,: :*/ /  
	 	    


C a 	 		Fi 	8 8 E  8 	  8 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	!Lj0 j0Z5| |Bf f @ @1v 1'v '<f <D D* * C e  C  e T T C #) # GIffe[:	
3 L v K3 K!L !,l , 
v9 v9r%7 %7PG G:\9 \9B  &  $& $	" 0?( ?(DhG hGV zA6**1,- FLLAm""1%&q#a&"% 	)Aa!B$i A+$$Q'(	) 	c
(//23&--a01Ah	 _~  K(  	Bs<   S S8 S+S8 S('S(+S50S8 8TT