
    6bhz             
       
   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;d dl<Z<e9e<_9        de9_=        e:e<_:        de:_=        e;e<_;        de;_=         G d d       Z> G d! d"      Z? 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 dM      Z G dN dO      Z G dP dQ      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]e6      Z G d^ d_e6      Z G d` dae6      Z G db dc      Z G dd de      Z G df dg      Z G dh died      Z G dj dk      Z e       Z G dl dme      Z G dn doe@      Z G dp dqe      Z G dr dse      Z G dt due      Z G dv dwe      Z G dx dye      Z G dz d{e      Z G d| d}e      Z G d~ de      Z G d de      Zeeeeeeeeeeg
Z G d de@      Z G d de      Z G d de      Z G d de@      a G d dtj              Z G d dtj              Z G d d      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   xY w# e$ r dZ*Y w xY w)    N)dedent)SimpleCookie)support)	os_helper)
TestFailedrun_with_locales
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       ;/opt/python-3.12.12/usr/lib/python3.12/test/pickletester.pyopcode_in_pickler   ;   s;    '..v6E577dkk),, 7     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   sH    	A'..v6E577dkk),,FA 7 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_          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>   ri   r%   r   r   rf   rf      s    r   rf   __main__c                       e Zd Zy)ObjectNr<   r=   r>   r%   r   r   rl   rl          r   rl   c                       e Zd Zd Zd Zy)Kc                     || _         y r$   )value)r.   rr   s     r   rH   z
K.__init__   	    
r   c                 (    t         | j                  ffS r$   )rp   rr   r2   s    r   
__reduce__zK.__reduce__   s    4::-r   Nr<   r=   r>   rH   ru   r%   r   r   rp   rp      s     r   rp   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   rx   rx          r   rx   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   ri   zinitarg.__getinitargs__   s    vvtvv~r   N)r<   r=   r>   rH   ri   r%   r   r   r~   r~      s    r   r~   c                       e Zd Zy)	metaclassNrm   r%   r   r   r   r      rn   r   r   c                       e Zd Zy)use_metaclassNrm   r%   r   r   r   r      rn   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   ru   zpickling_metaclass.__reduce__   s    $d&6&677r   N)r<   r=   r>   r]   ru   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   =    _%%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; XXs   '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  s<    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d6d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, Z0e1jd                  d-        Z3d. Z4d/ Z5d0 Z6d1 Z7d2 Z8d3 Z9d4 Z:e;jx                   e;jz                         d5               Z>y)7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  C&(>C ! I  dD!9!($!=3 ! 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_   rf   r<   encodereplacer  r  )r.   Xr/   xnamepickle0pickle1pickle2s          r   test_load_classic_instancez0AbstractUnpickleTests.test_load_classic_instancer  s     B!Vq"g6GAtJJ%%g.E	# %,GD%$8  4$**W*=>
./6wtU/C  4$**W*=>./6wtU/C  4$**W*=>i 7r   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
.)r{   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   keyrr      ?r!     StandardErrorr   bad)r  DATA_SETr   setDATA_XRANGEr   ranger   DATA_COOKIEr   keysrr   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 3C#++D#,,2E2Eg2NODZZ%FMM$v,, 3 ,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   rC  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   rJ  u   πs   X   π.s
   X   π.rK  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   rJ  )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-rrJ   )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€ .   € rK  r.   dumpeds     r   test_short_binbytesz)AbstractUnpickleTests.test_short_binbytes  s!    2F+-@Ar   c                 J    d}| j                  | j                  |      d       y )Ns   B   € .r^  rK  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 .re  r_  s     r   test_negative_32b_binunicodez2AbstractUnpickleTests.test_negative_32b_binunicode  ri  r   c                 J    d}| j                  | j                  |      d       y )Ns	   € .   € rK  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   rf  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^  rK  r_  s     r   test_binbytes8z$AbstractUnpickleTests.test_binbytes8  s!    AF+-@Ar   c                 J    d}| j                  | j                  |      d       y )Ns          € .rm  rK  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         € .re  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         € .re  r_  s     r   test_large_32b_bytearray8z/AbstractUnpickleTests.test_large_32b_bytearray8/  r{  r   c                 T    d}| j                  t        j                  t        f|       y )Ns         € .re  r_  s     r   test_large_32b_binunicode8z0AbstractUnpickleTests.test_large_32b_binunicode85  r{  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   rf  r.   
badpicklesps      r   test_badly_quoted_stringz.AbstractUnpickleTests.test_badly_quoted_stringa  s+    
 A''(>(>B r   c                 b    g d}|D ]&  \  }}| j                  | j                  |      |       ( y )N))s   S''
.rZ  )s   S""
.rZ  )s   S"\n"
.
)s   S'\n'
.r  rK  )r.   goodpicklesr  expecteds       r   test_correctly_quoted_stringz2AbstractUnpickleTests.test_correctly_quoted_strings  s1    - 'KAxTZZ]H5 'r   c                 J    d}| j                  | j                  |      d       y )Ns          I42
.*   rK  )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	   Exceptionr5  s   cexceptions
s	   
UughR.ugh)s   UserDicts   IterableUserDicts   (cUserDict
s   
o}Udata}KKssb.r   )r  r   r   r:  r   r   	functoolsreducedbmwhichdbr?  r{   collectionsUserDict)r.   r  r  r   s       r   test_compat_unpicklez*AbstractUnpickleTests.test_compat_unpickle  sE   HJJw'	d9ou-E!QK0i*<=4djj)9+;+;<1djj)3;;74D/$69LLG

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

7+IMM$y/;+?+?@Y(<(<aV(DE 7r   c                    | j                  | j                  d      t               | j                  | j                  d      t        j                         | j                  | j                  d      t
        j                  j                         | j                  | j                  d      t        j                         t        j                  t        j                  dt        j                  d            5  | j                  | j                  d      d       d d d        | j!                  t"        | j                  d	       | j!                  t"        | j                  d
       | j!                  | j$                  | j                  d       | j!                  | j$                  | j                  d       | j!                  | j$                  | j                  d       y # 1 sw Y   xY w)Ns   cbuiltins
str
.   cmath
log
.s   cos.path
join
.s   cbuiltins
str.upper
.   möduler     glöbals   cmödule
glöbal
.s   c
log
.s	   cmath

.s   c
log
.s   cmath

.s
   cmath

.)r   r  r{   mathlogospathjoinupperr   	swap_itemsysmodulestypesSimpleNamespacer   r  UnicodeDecodeErrortruncated_errorsr2   s    r   test_load_globalz&AbstractUnpickleTests.test_load_global  sF   djj!56<djj!12DHH=djj!56Edjj!CDciiPs{{Iu7L7LUW7XYTZZ(STVXY Z 	,djj:JK,djj:KL$//\J$//]K$//=RS ZYs   6"GG!c                    | j                  | j                  d      t               | j                  | j                  d      t        j                         | j                  | j                  d      t
        j                  j                         | j                  | j                  d      t        j                         t        j                  t        j                  dt        j                  d            5  | j                  | j                  d      d       d d d        | j!                  t"        | j                  d	       | j!                  t"        | j                  d
       | j!                  t$        | j                  d       | j!                  t&        | j                  d       | j!                  t&        | j                  d       | j!                  t(        j*                  | j                  d       | j!                  t(        j*                  | j                  d       | j!                  t(        j*                  | j                  d       y # 1 sw Y   1xY w)Ns   builtinsstr.   mathlog.s   os.pathjoin.s   builtins	str.upper.r  r  r  s   möduleglöbal.s
   log.s   math.s	    log.s
   math .s   math .s   Nlog.s	   mathN.s   mathN.)r   r  r{   r  r  r  r  r  r  r   r  r  r  r  r  r   r  r  r.  AttributeErrorr   rf  r2   s    r   test_load_stack_globalz,AbstractUnpickleTests.test_load_stack_global  s   djj!DEsKdjj!@A488Ldjj!DEggll	$djj!RSii	!s{{Iu7L7LUW7XYTZZ(bcegh Z 	,djj:YZ,djj:Z[*djj2MN.$**6RS.$**6Z[&00$**>RS&00$**>ST&00$**>[\ ZYs   6"IIc                 v	   | j                  t        j                               }| j                  t        j                         d      }| j                  t        j                  d            }|j                          | j	                  |j                  dd      t               | j                  t        |j
                  dd       | j	                  |j                  dd      t               | j	                  |j                  dd      t               | j	                  |j                  dd      t        j                         | j	                  |j                  d	d
      t        j                  j                         | j	                  |j                  d	d
      t        j                  j                         | j	                  |j                  dd      t        j                         | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t              5  |j                  dd       d d d        | j                  t        |j
                  dd       | j                  t         |j
                  dd       | j                  t"        |j
                  d d       | j                  t"        |j
                  dd        | j                  t"        t        f|j
                  dd        y # 1 sw Y   ;xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   FxY w# 1 sw Y   #xY w)NF)fix_importss   N.__builtin__r{   builtinsr  r  zos.pathr  z	str.upperspamzlog.spamzlog.<locals>.spamrZ  )	unpicklerr6   rB   loadr   
find_classr{   r  ModuleNotFoundErrorr  r  r  r  r  r  r  r.  	TypeError)r.   r  unpickler_nofix
unpickler4s       r   test_find_classz%AbstractUnpickleTests.test_find_class  sN   NN2::<0	..5.I^^BJJ}$=>
i**=%@#F-)44mU	Li**:u=sCo00UCSIi**659488Di**9f=rww||Li**9f=rww||Lj++JDciiP~.  [9 / ~.  0 /~.!!&&1 /~.  4 /~.!!&*5 /~.  )<= /~.!!&*=> /~.  , /~.!!&"- /-y/C/CVUS*i&:&:BF)Y%9%94G)Y%9%964H9n5z7L7LfVZ[1 /. /...............sl   :Q*QQ 
Q-:Q:*RR
R!:R.QQ Q*-Q7:RRR!R+.R8c                      fd} j                   |d      d        j                   |d      d        fd} j                   |d      d        j                   |d      d        fd} j                   |d      d        j                   |d      d        fd} j                   |d      d        j                   |d      d       y )Nc                      G d dj                         } |t        j                  |             j                         S )Nc                       e Zd Zd Zy)NAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpicklerc                 
    ||fS r$   r%   )r.   module_nameglobal_names      r   r  zYAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickler.find_class  s    '55r   N)r<   r=   r>   r  r%   r   r   	Unpicklerr    s    6r   r  r  r6   rB   r  r  r  r.   s     r   r  z;AbstractUnpickleTests.test_custom_find_class.<locals>.loads  s2    6DNN 6 RZZ-.3355r   r  )r  r  r  c                      G d dj                         } |t        j                  |             j                         S )Nc                       e Zd Zed        Zy)r  c                 
    | |fS r$   r%   r  r  s     r   r  zYAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickler.find_class      '55r   N)r<   r=   r>   staticmethodr  r%   r   r   r  zNAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickler  s    6 6r   r  r  r  s     r   r  z;AbstractUnpickleTests.test_custom_find_class.<locals>.loads  2    6DNN 6 RZZ-.3355r   c                      G d dj                         } |t        j                  |             j                         S )Nc                       e Zd Zed        Zy)r  c                 
    ||fS r$   r%   )r   r  r  s      r   r  zYAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickler.find_class   r  r   N)r<   r=   r>   r   r  r%   r   r   r  zNAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickler  s    6 6r   r  r  r  s     r   r  z;AbstractUnpickleTests.test_custom_find_class.<locals>.loads  r  r   c                      G d dj                         }d } |t        j                  |             }||_        |j	                         S )Nc                       e Zd Zy)r  Nrm   r%   r   r   r  zNAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickler	      r   r  c                 
    | |fS r$   r%   r  s     r   r  zOAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.find_class  s    #[11r   )r  r6   rB   r  r  )r  r  r  r  r.   s       r   r  z;AbstractUnpickleTests.test_custom_find_class.<locals>.loads  s@    DNN 2!"**T"23I#-I >>##r   )r   )r.   r  s   ` r   test_custom_find_classz,AbstractUnpickleTests.test_custom_find_class  s    	6 	/0/B>?Q	6 	/0/B>?Q	6 	/0/B>?Q	$ 	/0/B>?Qr   c                 L   | j                  t        d       | j                  t        d       | j                  t        d       | j                  t        d       | j                  t        d       | j                  t        d       | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  d	       | j                  t        j                  d
       | j                  t        j                  d       y )N   .s   .s    .s   .s      .s   .s    .s     .s       .s      .s   .)r  r.  r   rf  r2   s    r   test_bad_ext_codez'AbstractUnpickleTests.test_bad_ext_code  s    ##J=##J=##J0@A##J0@A##J0HI##J0HI##F$:$:LI##F$:$:<LM##F$:$:<TU##F$:$:<TU##F$:$:<TUr   c                     d fd} |d t                 |dt                 |t        ft        t         f        |t        ddft        t         f        |t        d ft        t         f        |dt        t         f       y )Nr   c                     t        j                  t        j                  |       5  j	                  |      5  j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  )r   r  rN   rO   r  r  )r3  r  r   r.   s     r   checkzCAbstractUnpickleTests.test_bad_ext_inverted_registry.<locals>.check&  sT    ""7#=#=tSI&&s+JJ|, , JI++ JIs"   A(AA(A%	!A((A1r%   MyListr'   )Nr  )r.  r<   r  )r.   r  r   s   ` @r   test_bad_ext_inverted_registryz4AbstractUnpickleTests.test_bad_ext_inverted_registry#  sn    	- 	dJb*xkIz23x3')Z)@AxJ 78J 78r   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  r  r2   s    r   test_bad_reducez%AbstractUnpickleTests.test_bad_reduce1  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   rf  r  r   r  r  r.   errors     r   test_bad_newobjz%AbstractUnpickleTests.test_bad_newobj6  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                    t               }d |_        d}| j                  | j                  |dz         |       | j                  | j                  |dz         |       | j	                  t
        |dz          t        j                  t        f}| j	                  ||dz          | j	                  ||dz          | j	                  ||dz          | j	                  t
        |dz          | j	                  t
        |d	z          | j	                  ||d
z          | j	                  ||dz           G d d      }|t        _
        | j	                  t        |dz          y )Ns   c__main__
C
)s   }X   xNsb.s   N}X   xNsb.s   }]Nsb.s   ](}}eb.s   }b.s   }}}b.s   }}]Nsb.s   }}NNsb.s   }b.s   }b.c                       e Zd ZdZd Zy)5AbstractUnpickleTests.test_bad_state.<locals>.BadKey1r   c                 R    | j                   st        | xj                   dz  c_         yNr   r  )countCustomErrorr2   s    r   __hash__z>AbstractUnpickleTests.test_bad_state.<locals>.BadKey1.__hash__]  s    zz%%

a
r   N)r<   r=   r>   r   r  r%   r   r   BadKey1r  [  s    Er   r  s   }c__main__
BadKey1
)Nsb.)rX   r'   r   r  r  r  r   rf  r  rj   r  r  )r.   r   baser  r  s        r   test_bad_statez$AbstractUnpickleTests.test_bad_stateC  s5   C%D+E$EFJD+J$JKQO##Iti/?@''8##E4*+<=##E4*+<=##E4,+>?##Itn/DE##Itn/DE##E4.+@A##E4.+@A	 	 ###K8Y1YZr   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_stackf  s,    -

\ A''(=(=qA 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  s,    "

F A''(=(=qA 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  EOFErrorr  r  s      r   test_truncated_dataz)AbstractUnpickleTests.test_truncated_data  sM    ##Hc2##Hd3X

r A''(=(=qA 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>.tD  s#     LLNNN6<<56r   )target)ToBeUnpickledr   )r   r  mkdirr   
addCleanupshutilrmtreer  r  insertremoveopenr  rG   r#  r   rA  	threadingBarrierThreadrD  rD  rE  rB  rJ  r   r   )r.   locker_modulelocking_import_modulefrA  rH  t1t2rJ  r'   rE  rF  rG  s             @@@r   test_unpickle_module_racez/AbstractUnpickleTests.test_unpickle_module_race  s        !' ( ! 	v.6"0"'',,v{3T:aGGM((12 ;"'',,v':;TBaGG)009: C) 01 H 	 ##A&	7 Q'Q'




	
	0%&gT!Wg&Oa	!M ;:BBJ 's   !I1.!I>J1I;>Jr$   )?r<   r=   r>   r   r  r  r  r  r  r  r  r  r*  r1  rH  rL  rN  rU  rX  r\  ra  rc  requires_32brh  rk  rn  rq  rs  ru  rx  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   cpython_onlyr  r  r  r  r  r   r"  r=  r   reap_threadsrequires_working_threadingrZ  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T]((\T(RTV 9 9G
FG![F0Bd%BN]B~ ""00029! 3 #9!r   r   c                   6   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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 d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'e(d&        Z)d' Z*d( Z+d) Z,d* Z-e.j^                  d+        Z0y,)-AbstractPicklingErrorTestsc           	      D   t        t        dg      }t        D ]W  }| j                  |      5  | j	                  t
        j                        5  | j                  ||       d d d        d d d        Y t        t        f      }t        D ]W  }| j                  |      5  | j	                  t
        j                        5  | j                  ||       d d d        d d d        Y t        t        dd d d d d f      }t        D ]W  }| j                  |      5  | j	                  t
        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   xY wNr%   protoREXr  	protocolsr  r  r   PicklingErrordumpsr.   r   rd  s      r   test_bad_reduce_resultz1AbstractPicklingErrorTests.test_bad_reduce_result_  sC   5"+EE*&&v';';<JJsE* = +* 
 5(mEE*&&v';';<JJsE* = +* 
 5"dD$d;<EE*&&v';';<JJsE* = +*  =< +* =< +* =< +*sk    E%E E% E>=E2E> F3F
FE"E%%E/	2E;7E>>F	
FFF	c                 
   t        d      }t        D ]W  }| j                  |      5  | j                  t        j
                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY w)N)r  r%   rc  )rf  rg  r  r  r   rh  ri  rj  s      r   test_bad_reconstructorz1AbstractPicklingErrorTests.test_bad_reconstructorr  sb    (mEE*&&v';';<JJsE* = +* << +*s#    A9A-A9-A62A99B	c                 
   t        t               df      }t        D ]M  }| j                  |      5  | j	                  t
              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wrb  )rf  UnpickleableCallablerg  r  r  r  ri  rj  s      r   test_unpickleable_reconstructorz:AbstractPicklingErrorTests.test_unpickleable_reconstructory  sf    ')2./EE*&&{3JJsE* 4 +* 33 +*s#   A9A-A9-A62A99B	c                    t        t        g f      }t        D ]W  }| j                  |      5  | j	                  t
        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY wNrc  re  rj  s      r   test_bad_reconstructor_argsz6AbstractPicklingErrorTests.test_bad_reconstructor_args  sg    5"+EE*&&v';';<JJsE* = +* << +*s#    A?A3 A?3A<8A??B	c                    t        t        ddt        ff      }t        D ]M  }| j	                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wNr   r   rc  rf  r  UNPICKLEABLErg  r  r  r  ri  rj  s      r   $test_unpickleable_reconstructor_argsz?AbstractPicklingErrorTests.test_unpickleable_reconstructor_args  si    51a./0EE*&&{3JJsE* 4 +* 33 +*s#   A<
A0A<0A95A<<B	c                 ~   t        t        j                  df      }t        dd  D ]]  }| j	                  |      5  | j                  t        t        j                  f      5 }| j                  ||       d d d        d d d        _ t        t        j                  t         gf      }t        dd  D ]]  }| j	                  |      5  | j                  t        t        j                  f      5  | j                  ||       d d d        d d d        _ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ,xY w# 1 sw Y   xY wNr%   r   rc  )
rf  rN   
__newobj__rg  r  r  
IndexErrorr   rh  ri  )r.   r   rd  cms       r   test_bad_newobj_argsz/AbstractPicklingErrorTests.test_bad_newobj_args  s    7%%r*+qr]EE*&&
F4H4H'IJbJJsE* K +* #
 7%%u-.qr]EE*&&
F4H4H'IJJJsE* K +* #	 KJ +* KJ +*sG   &D D3D&D3)D'<D3DDD$	'D0,D33D<	c                 B   t        t        j                  t               ff      }t        dd  D ]W  }| j                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY wNr   rc  )
rf  rN   r{  NoNewrg  r  r  r   rh  ri  rj  s      r   test_bad_newobj_classz0AbstractPicklingErrorTests.test_bad_newobj_class  sx    7%%z23qr]EE*&&v';';<JJsE* = +* #<< +*s$    B#B	6B	BBB	c                 :   t        t        j                  t        ff      }t        dd  D ]W  }| j                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY wr  )
rf  rN   r{  r{   rg  r  r  r   rh  ri  rj  s      r   test_wrong_newobj_classz2AbstractPicklingErrorTests.test_wrong_newobj_class  sv    7%%v./qr]EE*&&v';';<JJsE* = +* #<< +*s#    BB2BB
BB	c                 P    G d dt               } |t        j                  |ff      }t        D ]]  }| j	                  |      5  | j                  t        j                  t        f      5  | j                  ||       d d d        d d d        _ y # 1 sw Y   xY w# 1 sw Y   vxY w)Nc                       e Zd Zy)KAbstractPicklingErrorTests.test_unpickleable_newobj_class.<locals>.LocalREXNrm   r%   r   r   LocalREXr        r   r  rc  )
rf  rN   r{  rg  r  r  r   rh  r  ri  r.   r  r   rd  s       r   test_unpickleable_newobj_classz9AbstractPicklingErrorTests.test_unpickleable_newobj_class  s~    !s!**XK89EE*&&(<(<n'MNJJsE* O +* NN +*s$   &B*B=BBBB%	c                 .   t        t        j                  t         ddt        ff      }t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wru  )	rf  rN   r{  rw  rg  r  r  r  ri  rj  s      r   test_unpickleable_newobj_argsz8AbstractPicklingErrorTests.test_unpickleable_newobj_args  sq    7%%Q<'@ABEE*&&{3JJsE* 4 +* 33 +*s$   BA?,B?BBB	c                 b   t        t        j                  df      }t        dd  D ]]  }| j	                  |      5  | j                  t        t        j                  f      5  | j                  ||       d d d        d d d        _ t        t        j                  df      }t        dd  D ]W  }| j	                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y t        t        j                  t         di ff      }| j                  t        j                  u }|r	t        dd nt        dd  D ]]  }| j	                  |      5  | j                  t        t        j                  f      5  | j                  ||       d d d        d d d        _ t        t        j                  t         dg ff      }|r	t        dd nt        dd  D ]]  }| j	                  |      5  | j                  t        t        j                  f      5  | j                  ||       d d d        d d d        _ y # 1 sw Y   xY w# 1 sw Y   >xY w# 1 sw Y   wxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   AxY w# 1 sw Y   axY w# 1 sw Y   xY w)Nr%   r   rc  r  r  )rf  rN   __newobj_ex__rg  r  r  r.  r   rh  ri  pickler_Picklerr  )r.   r   rd  is_pys       r   test_bad_newobj_ex_argsz2AbstractPicklingErrorTests.test_bad_newobj_ex_args  s'   7(("-.qr]EE*&&
F4H4H'IJJJsE* K +* #
 7(("-.qr]EE*&&v';';<JJsE* = +* #
 7((3B-89/',Yq^)AB-?EE*&&	63G3G'HIJJsE* J +* @
 7((3B-89',Yq^)AB-?EE*&&	63G3G'HIJJsE* J +* @# KJ +* =< +* JI +* JI +*s   &I I3I> I3I&1I3*&JJ #J &J%&J9J%III#	&I0+I33I=	 J	JJ	J"J%%J.	c                 F   t        t        j                  t               di ff      }t        dd  D ]W  }| j                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY wrz  )
rf  rN   r  r  rg  r  r  r   rh  ri  rj  s      r   test_bad_newobj_ex__classz4AbstractPicklingErrorTests.test_bad_newobj_ex__class  s}    7((57B*;<=qr]EE*&&v';';<JJsE* = +* #<< +*s$    B%B8BBBB 	c                    | j                   t        j                  ur| j                  d       t	        t
        j                  t        di ff      }t        dd  D ]W  }| j                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY w)Nz*only verified in the Python implementationr%   r   rc  )r  r   r  skipTestrf  rN   r  r{   rg  r  r  rh  ri  rj  s      r   test_wrong_newobj_ex_classz5AbstractPicklingErrorTests.test_wrong_newobj_ex_class  s    <<v.MMFG7((3B-89qr]EE*&&v';';<JJsE* = +* #<< +*s$   . C B4!C 4B=9C  C		c                 T    G d dt               } |t        j                  |di ff      }t        D ]]  }| j	                  |      5  | j                  t        j                  t        f      5  | j                  ||       d d d        d d d        _ y # 1 sw Y   xY w# 1 sw Y   vxY w)Nc                       e Zd Zy)NAbstractPicklingErrorTests.test_unpickleable_newobj_ex_class.<locals>.LocalREXNrm   r%   r   r   r  r    r  r   r  r%   rc  )
rf  rN   r  rg  r  r  r   rh  r  ri  r  s       r   !test_unpickleable_newobj_ex_classz<AbstractPicklingErrorTests.test_unpickleable_newobj_ex_class  s    !s!--"b/ABCEE*&&(<(<n'MNJJsE* O +* NN +*s$   &B,B?BBBB'	c                 2   t        t        j                  t         ddt        fi ff      }t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wru  	rf  rN   r  rw  rg  r  r  r  ri  rj  s      r    test_unpickleable_newobj_ex_argsz;AbstractPicklingErrorTests.test_unpickleable_newobj_ex_args  sv    7((3A|0Db*IJKEE*&&{3JJsE* 4 +* 33 +*s$   BB.BB
BB	c                 0   t        t        j                  t         ddt        iff      }t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY w)Nr%   r   rc  r  rj  s      r   "test_unpickleable_newobj_ex_kwargsz=AbstractPicklingErrorTests.test_unpickleable_newobj_ex_kwargs  st    7((3S,4G*HIJEE*&&{3JJsE* 4 +* 33 +*s$   BB -B B	BB	c                     t        t              }t        D ]M  }| j                  |      5  | j	                  t
              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wrr  )	REX_staterw  rg  r  r  r  ri  rj  s      r   test_unpickleable_statez2AbstractPicklingErrorTests.test_unpickleable_state  s]    %EE*&&{3JJsE* 4 +* 33 +*s#   A3A'A3'A0,A33A<	c                 x   | j                   t        j                  u r| j                  d       t	        t
        ddd d df      }t        D ]W  }| j                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY w)N%only verified in the C implementationr%   stater  rc  )r  r   r  r  rf  r  rg  r  r  rh  ri  rj  s      r   test_bad_state_setterz0AbstractPicklingErrorTests.test_bad_state_setter  s    <<6??*MMAB5"gtT267EE*&&v';';<JJsE* = +* << +*s$    B0>B$B0$B-)B00B9	c           	         t        t        ddd d t               f      }t        D ]M  }| j	                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY w)Nr%   r  rc  )rf  r  ro  rg  r  r  r  ri  rj  s      r   test_unpickleable_state_setterz9AbstractPicklingErrorTests.test_unpickleable_state_setter  sn    5"gtT3G3IJKEE*&&{3JJsE* 4 +* 33 +*#   BA5"B5A>:BB
	c                    t        t        dt        d d t        f      }t        D ]M  }| j	                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wrb  rv  rj  s      r   )test_unpickleable_state_with_state_setterzDAbstractPicklingErrorTests.test_unpickleable_state_with_state_setter  sj    5"lD$>?EE*&&{3JJsE* 4 +* 33 +*r  c                    t        t        dd df      }t        D ]]  }| j                  |      5  | j	                  t
        t        j                  f      5  | j                  ||       d d d        d d d        _ | j                  t        j                  urzt        t        dd g f      }t        D ]]  }| j                  |      5  | j	                  t
        t        j                  f      5  | j                  ||       d d d        d d d        _ y y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   .xY w# 1 sw Y   xY w)Nr%   r  rc  )rf  r   rg  r  r  r  r   rh  ri  r  r  rj  s      r   test_bad_object_list_itemsz5AbstractPicklingErrorTests.test_bad_object_list_items  s    4T2&'EE*&&	63G3G'HIJJsE* J +* 
 <<v.tRr*+C"\\\.**Iv7K7K+LM

3. N /. # / JI +* NM /.sG   &DD(D&D6*D*=D6DDD'	*D3/D66D?	c                    t        ddt        g      }t        D ]M  }| j                  |      5  | j	                  t
              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wru  )REX_sixrw  rg  r  r  r  ri  rj  s      r   #test_unpickleable_object_list_itemsz>AbstractPicklingErrorTests.test_unpickleable_object_list_items'  sd    q!\*+EE*&&{3JJsE* 4 +* 33 +*s#   A6A*A6*A3/A66A?	c           
         t        t        dd d df      }t        D ]]  }| j                  |      5  | j	                  t
        t        j                  f      5  | j                  ||       d d d        d d d        _ t        D ]q  }t        t        dd d t        dg      f      }| j                  |      5  | j	                  t        t
        f      5  | j                  ||       d d d        d d d        s | j                  t        j                  ur{t        t        dd d g f      }t        D ]]  }| j                  |      5  | j	                  t
        t        j                  f      5  | j                  ||       d d d        d d d        _ y y # 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   <xY w# 1 sw Y   HxY w# 1 sw Y   xY w)Nr%   r  rc  r   )rf  r   rg  r  r  r  r   rh  ri  iterr.  r  r  rj  s      r   test_bad_object_dict_itemsz5AbstractPicklingErrorTests.test_bad_object_dict_items.  s|    4T4,-EE*&&	63G3G'HIJJsE* J +* 
 EtRtT6(^<=CE*&&
I'>?JJsE* @ +*  <<v.tRtR01C"\\\.**Iv7K7K+LM

3. N /. # / JI +* @? +* NM /.sk   &FF)F4F3F'#F3 &G&G 9GFFF$	'F0,F33F=	 G	GG	c                    t        dt        i      }t        D ]M  }| j                  |      5  | j	                  t
              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY w)Nr   rc  )	REX_sevenrw  rg  r  r  r  ri  rj  s      r   #test_unpickleable_object_dict_itemsz>AbstractPicklingErrorTests.test_unpickleable_object_dict_itemsE  sb    l+,EE*&&{3JJsE* 4 +* 33 +*s#   A5A)A5)A2.A55A>	c           	         dddt         gg}t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O dD ]k  }g t        |      t         }t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O m y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   .xY w# 1 sw Y   xY w)Nr   r   r  rc  r   r     i  rw  rg  r  r  r  ri  r:  r.   r   rd  r!   s       r   test_unpickleable_list_itemsz7AbstractPicklingErrorTests.test_unpickleable_list_itemsL  s    1a&'EE*&&{3JJsE* 4 +*  $A+E!H+l+C"\\\.**;7

3. 8 /. # $ 43 +* 87 /.sF   CCCC7+C+	>C7CCC(	+C40C77D c                    dddt         ff}t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O g t        d      t         }t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   ~xY w# 1 sw Y   xY w# 1 sw Y   ,xY w# 1 sw Y   ~xY w)Nr   r   r  rc  
   r  rj  s      r   test_unpickleable_tuple_itemsz8AbstractPicklingErrorTests.test_unpickleable_tuple_itemsY  s    1a&'EE*&&{3JJsE* 4 +*  )b	(<(EE*&&{3JJsE* 4 +*  43 +* 43 +*sF   CCCC1'C%:C1CCC"	%C.*C11C:	c           	      .   ddt         ii}t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O dD ]  }t        j                  t        |            }t         |d<   t        D ]N  }| j                  ||      5  | j                  t              5  | j                  ||       d d d        d d d        P  y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   .xY w# 1 sw Y   xY w)Nr   r   rc  r  )rd  r!   )	rw  rg  r  r  r  ri  r   fromkeysr:  r  s       r   test_unpickleable_dict_itemsz7AbstractPicklingErrorTests.test_unpickleable_dict_itemse  s    S,'(EE*&&{3JJsE* 4 +*  $A--a)C#CH"\\\3**;7

3. 8 43 # $ 43 +* 87 43sF   C3C'C3)D?C?	D'C0,C33C<	?DDDc                     t         h}t        D ]M  }| j                  |      5  | j                  t              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wrr  )rw  rg  r  r  r  ri  rj  s      r   test_unpickleable_set_itemsz6AbstractPicklingErrorTests.test_unpickleable_set_itemss  sZ    nEE*&&{3JJsE* 4 +* 33 +*s"   A+AA+A($A++A4	c                    t        t        t        h      h      }t        D ]M  }| j                  |      5  | j	                  t
              5  | j                  ||       d d d        d d d        O y # 1 sw Y   xY w# 1 sw Y   fxY wrr  )	frozensetrw  rg  r  r  r  ri  rj  s      r   !test_unpickleable_frozenset_itemsz<AbstractPicklingErrorTests.test_unpickleable_frozenset_itemsz  sg    L>234EE*&&{3JJsE* 4 +* 33 +*s#   A>A2A>2A;7A>>B	c                 0   t        d      }t        |_        t        D ]W  }| j	                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y d|_        t        D ]W  }| j	                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y d|_        t        D ]]  }| j	                  |      5  | j                  t        t        j                  f      5  | j                  ||       d d d        d d d        _ d |_        t        D ]W  }| j	                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   PxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   xY w)Nr  rc  nonexistingrZ  )
rf  r<   r=   rg  r  r  r   rh  ri  r.  rj  s      r   test_global_lookup_errorz3AbstractPicklingErrorTests.test_global_lookup_error  s   &k!EE*&&v';';<JJsE* = +* 
 'EE*&&v';';<JJsE* = +* 
 EE*&&
F4H4H'IJJJsE* K +* 
 EE*&&v';';<JJsE* = +* ! =< +* =< +* KJ +* =< +*s    G F3%G  G9GG &G3&G'9G3- HH  H3F=8G  G
	GGG$	'G0,G33G=	 H	HH	c           	         t         d d D ]  }| j                  |      5  |dk  rdnd}t        |      }t        |_        t        j                  t               ||      5  | j                  t        t        j                  f      5  | j                  ||       d d d        d d d        d d d         y # 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   xY w)Nr  rc  r  
   nonasciiÿ   nonencodable)rg  r  rf  r<   r=   r   r  globalsr  rA  r   rh  ri  )r.   rd  r   r   s       r   #test_nonencodable_global_name_errorz>AbstractPicklingErrorTests.test_nonencodable_global_name_error  s    r]EE*).~8L$i!)&&wy$<**,>@T@T+UV

3. W =	 +* # WV =<	 +*s;   ?C
&B>B2	B>C
2B;7B>>CC

C	c           	         t         d d D ]  }| j                  |      5  |dk  rdnd}t        d      }||_        t	        j
                  |      }t        j                  t        j                  ||      5  | j                  t        t        j                  f      5  | j                  ||       d d d        d d d        d d d         y # 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   xY w)Nr  rc  r  r  r  test)r  )rg  r  rf  r=   r  r  r   r  r  r  r  rA  r   rh  ri  )r.   rd  r   r   mods        r   #test_nonencodable_module_name_errorz>AbstractPicklingErrorTests.test_nonencodable_module_name_error  s    r]EE*).~8L&k!%++5&&s{{D#>**,>@T@T+UV

3. W ? +* # WV ?> +*s<   AC"6&CC
	/C7C"
CCCC""C+	c                    t        d      }t        |_        t        D ]W  }| j	                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y d |_        t        D ]W  }| j	                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   {xY w# 1 sw Y   xY w# 1 sw Y   ,xY w# 1 sw Y   xY w)NzAbstractPickleTests.spamrc  )	rf  r<   r=   rg  r  r  r   rh  ri  rj  s      r   test_nested_lookup_errorz3AbstractPicklingErrorTests.test_nested_lookup_error  s    ,-!EE*&&v';';<JJsE* = +* 
 EE*&&v';';<JJsE* = +* 	 =< +* =< +*sG    C+C%C+ D9C7DC($C++C4	7D <DD	c                 4   t        d      }t        |_        g t        _        t
        D ]W  }| j                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y d |_        t
        D ]W  }| j                  |      5  | j                  t        j                        5  | j                  ||       d d d        d d d        Y y # 1 sw Y   {xY w# 1 sw Y   xY w# 1 sw Y   ,xY w# 1 sw Y   xY w)NAbstractPickleTestsrc  )rf  r<   r=   r  hamrg  r  r  r   rh  ri  rj  s      r   test_wrong_object_lookup_errorz9AbstractPicklingErrorTests.test_wrong_object_lookup_error  s    '(!"$EE*&&v';';<JJsE* = +* 
 EE*&&v';';<JJsE* = +* 	 =< +* =< +*sG    C6C*0C6$ DDD*C3/C66C?	DDD	c                 (   d }t         D ]]  }| j                  |      5  | j                  t        t        j
                  f      5  | j                  ||       d d d        d d d        _ |`t         D ]]  }| j                  |      5  | j                  t        t        j
                  f      5  | j                  ||       d d d        d d d        _ |j                  |_	        t         D ]]  }| j                  |      5  | j                  t        t        j
                  f      5  | j                  ||       d d d        d d d        _ y # 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   FxY w# 1 sw Y   xY w)Nc                       y r$   r%   r%   r   r   rW  z=AbstractPicklingErrorTests.test_local_lookup_error.<locals>.f      r   rc  )
rg  r  r  r  r   rh  ri  r=   r>   r<   r.   rW  rd  s      r   test_local_lookup_errorz2AbstractPicklingErrorTests.test_local_lookup_error  s=   	 EE*&&8L8L'MNJJq%( O +*  LEE*&&8L8L'MNJJq%( O +* 
 ^^
EE*&&8L8L'MNJJq%( O +*  ON +* ON +* ON +*sk   &EE
E&E/-E# E/>&F$E<7F
EEE 	#E,(E//E9	<FFF	c                     | j                   t        j                  u r| j                  d       t	               }| j                  t              5  | j                  |       d d d        y # 1 sw Y   y xY w)Nr  )r  r   r  r  REX_Noner  r  ri  r.   r   s     r   test_reduce_ex_Nonez.AbstractPicklingErrorTests.test_reduce_ex_None  sK    <<6??*MMABJy)JJqM *))s   A((A1c                     t               }| j                  t              5  | j                  |       d d d        y # 1 sw Y   y xY wr$   )R_Noner  r  ri  r  s     r   test_reduce_Nonez+AbstractPicklingErrorTests.test_reduce_None  s.    Hy)JJqM *))s	   ;Ac                 8   t               }t        d      D ]B  }t        j                  d      5  | j	                  t
        | j                  ||       d d d        D t        dt        j                  dz         D ]  }| j                  ||      } y # 1 sw Y   xY w)Nr      r   )	
BadGetattrr:  r   infinite_recursionr  RuntimeErrorri  r   HIGHEST_PROTOCOL)r.   r'   rd  ss       r   test_bad_getattrz+AbstractPicklingErrorTests.test_bad_getattr  s~     L1XE++B/!!,

AuE 0/  1f559:E

1e$A ; 0/s   #BB	c                 t   t        j                  d      }t        dd      D ]|  }| j                  |      5  | j	                  t         j
                        5 }| j                  ||       d d d        | j                  t        j                        d       d d d        ~ y # 1 sw Y   9xY w# 1 sw Y   xY w)N   foobarr   r   rc  z3PickleBuffer can only be pickled with protocol >= 5)
r   r   r:  r  r  PickleErrorri  r   r{   	exception)r.   r   rd  r}  s       r   test_picklebuffer_errorz2AbstractPicklingErrorTests.test_picklebuffer_error  s      +1a[EE*&&v'9'9:bJJr5) ;  R\\!2IK +* !:: +*s#    B.B"*-B."B+'B..B7	c                 N   t         dd  D ]  }| j                  |      5  t        j                  t	        d      d d d         }| j                  t        j                  t        f      5  | j                  ||       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   rc  r  r   )	rg  r  r   r   r   r  rh  BufferErrorri  )r.   rd  r   s      r   test_non_continuous_bufferz5AbstractPicklingErrorTests.test_non_continuous_buffer  s    qr]EE*((I)>ss)CD&&(<(<k'JKJJr5) L +* # LK +*s$   A
B)B<BBBB$	c                     d }t        j                  d      }| j                  t              5  | j	                  |d|       d d d        y # 1 sw Y   y xY w)Nc                     t         r$   r  bufferss    r   buffer_callbackzNAbstractPicklingErrorTests.test_buffer_callback_error.<locals>.buffer_callback  s    r   r  r   r  )r   r   r  r  ri  )r.   r  r   s      r   test_buffer_callback_errorz5AbstractPicklingErrorTests.test_buffer_callback_error  sC    	  +{+JJr1oJ> ,++s   AAc                 |     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 )Nc                       e Zd Zy)ClearerNrm   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)dAbstractPicklingErrorTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPicklerc                 F    t        |t              rj                          y r$   )r   r  clear)r.   r   
collections     r   persistent_idzrAbstractPicklingErrorTests.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  changed size during iteration)r  r6   rB   dumpr  assertInr{   )r
  r  r  er  rd  r.   s   `    r   r  zOAbstractPicklingErrorTests.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   )r  rg  )r.   r  rd  s   ` @r   %test_evil_pickler_mutating_collectionz@AbstractPicklingErrorTests.test_evil_pickler_mutating_collection  s    	 		0 E79+79gi()79+79gi()79a.!79aA./giGI./ r   c                     t         df fd} |t               t                |d t                |dt        t        j
                  f        |dt                |dt        t        t        j
                  f        |ddz  t        t        j
                  f        |ddz   t        t        j
                  f       y )Nr  c           	         t         j                  vsJ | t         j                  vsJ t        j                  t         j                  |       5  t        j                  t         j                  |       5  t
        dd  D ]2  }j                  |      5  j                  t        |       d d d        4 	 d d d        d d d        y # 1 sw Y   PxY w# 1 sw Y   xY w# 1 sw Y   y xY wNr   )	rN   _extension_registryrO   r   r  rg  r  ri  r  )r   r  rd  r3  r.   s      r   r  z;AbstractPicklingErrorTests.test_bad_ext_code.<locals>.check7  s    g99999w99999##G$?$?dK##G$>$>cJ&qr]E**3/

651 0/ + K LK 0/ KJ LKs<   &C5CC	*
C5CCCC	CC'r   r   l        r   r  )r<   rB  r  r  rR  r  rg  )r.   r  r3  s   ` @r   r  z,AbstractPicklingErrorTests.test_bad_ext_code2  s     "	2 	fh	"dIb<./aelM6<<@Aagv||45q$wh56r   N)1r<   r=   r>   rk  rm  rp  rs  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%   r   r   r`  r`  \  s    +&++++++++++4+++++++++/"+/.+/
+/+++6/	/++ )0
 % %K*?08 7 7r   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<d8 Z= e>d9d:d;d<      d=        Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl ZndmZodnZpdo Zqerj                   erj                  dp      dq               Zudr Zvds Zwerj                  dt        Zxdu Zydv Zzdw Z{dx Z|dy Z}dz Z~d{ Zd| Zd} Zd~ Zd Zd Z ej                  edu d      d        Zd Zy)r  Fc                      y r$   r%   r2   s    r   setUpzAbstractPickleTests.setUpP  rb   r   c                    t         D ]  }t        d      }| j                  ||      }| j                  |      }| j	                  ||       d}| j                  ||      }| j                  |      }| j	                  ||       t        d|      }| j                  ||      }| j                  |      }| j	                  ||        y )Nr  )r   r%   r   )rg  rx   ri  r  r  r~   r.   rd  r'   r  r   s        r   	test_misczAbstractPickleTests.test_miscU  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  rg  ri  r  r  )r.   r  rd  r  r0  s        r   test_roundtrip_equalityz+AbstractPickleTests.test_roundtrip_equalityi  sB    >>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_DISri  r  rD   r   )r.   r   r"  rd  r  r  fileliker0  s           r   dont_test_disassemblyz)AbstractPickleTests.dont_test_disassemblyv  sf    # !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   r:  r   r  ri  r  assertIsInstancer   lenr   )	r.   r   aslistminprotocollrd  r  r'   r   s	            r   _test_recursive_listz(AbstractPickleTests._test_recursive_list  s    E	;(?(?!(CDE

1e$A

1A!!!S)q	ASVQ'MM!A$" E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/  r  r2   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    AGGr   r,  )r/  r  r2   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   r:  r   r  ri  r  r*  tupler   r+  r   )	r.   r   r,  r-  rH  rd  r  r'   r   s	            r   _test_recursive_tuple_and_listz2AbstractPickleTests._test_recursive_tuple_and_list  sq   UH	!A;(?(?!(CDE

1e$A

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

1e$A

1A!!!S)q	ASVQ'!!!A$.S1Y*MM!A$q'1% Er   c                 .    | j                  t               y r$   )r?  r   r2   s    r   test_recursive_tuple_and_listz1AbstractPickleTests.test_recursive_tuple_and_list      ++D1r   c                 2    | j                  t        d       y r4  )r?  r  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$   r9  r&   s    r   r:  zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>  s    aggr   r;  )r?  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   )
r:  r   r  ri  r  r*  r   r   r<  r   	r.   r   asdictr-  drd  r  r'   r   s	            r   _test_recursive_dictz(AbstractPickleTests._test_recursive_dict  s    E!;(?(?!(CDE

1e$A

1A!!!S)q	AT!&&(^aS1MM!A$" Er   c                 .    | j                  t               y r$   )rN  r   r2   s    r   test_recursive_dictz'AbstractPickleTests.test_recursive_dict  r2  r   c                 2    | j                  t        d       y r4  )rN  MyDictr2   s    r   test_recursive_dict_subclassz0AbstractPickleTests.test_recursive_dict_subclass  r6  r   c                 4    | j                  t        d        y )Nc                     | j                   S r$   tabler&   s    r   r:  z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>  s    aggr   rL  )rN  r  r2   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   )r:  r   r  ri  r  r*  r>  r   r+  r   r   	r.   r   rL  r-  rH  rd  r  r'   r   s	            r   _test_recursive_tuple_and_dictz2AbstractPickleTests._test_recursive_tuple_and_dict  ss   UH!Q;(?(?!(CDE

1e$A

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

1e$A

1A!!!S)q	AT!Wqc*!!!A$.S1Y*MM!A$q'1% Er   c                 .    | j                  t               y r$   )r\  r   r2   s    r   test_recursive_tuple_and_dictz1AbstractPickleTests.test_recursive_tuple_and_dict  rB  r   c                 2    | j                  t        d       y r4  )r\  rR  r2   s    r   &test_recursive_tuple_and_dict_subclassz:AbstractPickleTests.test_recursive_tuple_and_dict_subclass  rE  r   c                 4    | j                  t        d        y )Nc                     | j                   S r$   rV  r&   s    r   r:  zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>  s    r   rX  )r\  r  r2   s    r   "test_recursive_tuple_and_dict_likez6AbstractPickleTests.test_recursive_tuple_and_dict_like  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)  )rp   r:  r   r  ri  r  r*  r   r+  r<  r   r   rr   rK  s	            r   _test_recursive_dict_keyz,AbstractPickleTests._test_recursive_dict_key  s     E!A$;(?(?!(CDE

1e$A

1A!!!S)q	AS]A.!!$qvvx."3Q7MM$qvvx.+1115 Er   c                 .    | j                  t               y r$   )re  r   r2   s    r   test_recursive_dict_keyz+AbstractPickleTests.test_recursive_dict_key  s    %%d+r   c                 2    | j                  t        d       y r4  )re  rR  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$   rV  r&   s    r   r:  zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>	  s    !''r   rX  )re  r  r2   s    r   test_recursive_dict_like_keyz0AbstractPickleTests.test_recursive_dict_like_key	  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)  )rp   r:  r   r  ri  r  r*  r>  r   r+  r   r<  r   rr   r[  s	            r   "_test_recursive_tuple_and_dict_keyz6AbstractPickleTests._test_recursive_tuple_and_dict_key	  s    UH!QqT
;(?(?!(CDE

1e$A

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

1e$A

1A!!!S)q	ASVQ'!!$qvvx."3Q7MM$qvvx.+11!4a8 Er   c                 .    | j                  t               y r$   )rn  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  )rn  rR  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$   rV  r&   s    r   r:  zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>+	  s    AGGr   rX  )rn  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   )r8  addrp   r:  r   r  ri  r  r*  r   r+  r   r   rr   r.   r   rd  r  r'   s        r   test_recursive_setz&AbstractPickleTests.test_recursive_set-	  sB   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$   )	rl   attrrg  ri  r  r*  r   dirr   )r.   ird  r  r'   s        r   test_recursive_instz'AbstractPickleTests.test_recursive_instC	  sq    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)  )rl   r{  r   rg  ri  r  r*  r   r   r+  r|  r<  r   )r.   r.  rM  r}  rd  r  r'   s          r   test_recursive_multiz(AbstractPickleTests.test_recursive_multiN	  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)  )rl   r{  r   rg  ri  r  r*  r   r+  r   r   )r.   factoryorH  rd  r  r'   s          r   #_test_recursive_collection_and_instz7AbstractPickleTests._test_recursive_collection_and_inst]	  s6    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_instv	  s    006r   c                 .    | j                  t               y r$   )r  r>  r2   s    r   test_recursive_tuple_and_instz1AbstractPickleTests.test_recursive_tuple_and_insty	      007r   c                 B    | j                  t        j                         y r$   )r  r   r  r2   s    r   test_recursive_dict_and_instz0AbstractPickleTests.test_recursive_dict_and_inst|	  s    00?r   c                 .    | j                  t               y r$   )r  r8  r2   s    r   test_recursive_set_and_instz/AbstractPickleTests.test_recursive_set_and_inst	  s    005r   c                 .    | j                  t               y r$   )r  r  r2   s    r   !test_recursive_frozenset_and_instz5AbstractPickleTests.test_recursive_frozenset_and_inst	  s    00;r   c                 .    | j                  t               y r$   )r  r  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  rR  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$   )r  r  rg  ri  r  r*  r   rx  s        r   test_recursive_inst_statez-AbstractPickleTests.test_recursive_inst_state	  sY    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  rg  ri  r  r*  r>  r   r+  r   )r.   rH  rd  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)rZ  z<\u>u   <\ሴ>z<
>z<\>u   <\𒍅>u   <>rg  ri  r  r  )r.   endcasesrd  ur  u2s         r   test_unicodez AbstractPickleTests.test_unicode	  sL      EJJq%(ZZ]##Ar*  r   c                     d}t         D ]7  }| j                  ||      }| j                  |      }| j                  ||       9 y )Nu   𒍅r  )r.   rH  rd  r  rY  s        r   test_unicode_high_planez+AbstractPickleTests.test_unicode_high_plane	  s>    E

1e$AAB2& r   c                     t         D ]C  }dD ]<  }| j                  ||f|      }| j                  |      \  }}| j                  ||       > E y )N)rZ  xyzzxyz
zx\yzu   x¡yzrg  ri  r  r   )r.   rd  r  r  s1s2s         r   test_unicode_memoizationz,AbstractPickleTests.test_unicode_memoization	  sI    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   )rg  ri  r  r  r:  r   )r.   rd  r  r  r}  s        r   
test_byteszAbstractPickleTests.test_bytes	  s    E,JJq%(##Atzz!}5 - +0*5*QeQCj*5JJq%(##Atzz!}5 6 .33Z8ZeQFmZ8JJq%(##Atzz!}5 9  6 9s   C>,Dc           
      0   t         D ]  }t        t        fD ]  }dD ]  }| j                  |||d      5   ||      }| j	                  ||f|      }| j                  |      \  }}| j                  ||       | j                  ||f||f       d d d        | j                  |||d      5   ||       ||      }	}| j	                  ||	f|      }| j                  ||	f| j                  |             d d d           y # 1 sw Y   uxY w# 1 sw Y   xY wNr  F)rd  
array_typer  independentT)rg  r   r   r  ri  r  r   r  )
r.   rd  r  r  r   r  r'   r   b1b2s
             r   test_bytes_memoizationz*AbstractPickleTests.test_bytes_memoization	  s   E$m4
0AEjA[`a&qM JJ1vu5#zz!}1a+++QFQF; b EjA[_`!+A
1B JJBx7 ++RHdjjmD a` 1 5  ba a`s   AD 	)AD	 D	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   )rg  rw  ri  r  r   r  r  
assertTruer   r   GLOBALSTACK_GLOBALassertNotIn
BYTEARRAY8)r.   rd  r  r   r  bbs         r   test_bytearrayz"AbstractPickleTests.test_bytearray	  s    YE,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 - r   c           	         t         D ]A  }t        t        fD ].  }dD ]%  }| j                  |||d      5   ||      }| j	                  ||f|      }| j                  |      \  }}| j                  ||       d d d        | j                  |||d      5   ||       ||      }	}| j                  ||	       | j	                  ||	f|      }| j                  |      \  }
}| j                  |
|       | j                  ||
       | j                  ||
       | j                  |	|       | j                  |	|       d d d        ( 1 D y # 1 sw Y   xY w# 1 sw Y   FxY wr  )	rg  rw  r   r  ri  r  r   r   r  )r.   rd  r  r  r   r  r  r  b1ab2ab1bb2bs               r   test_bytearray_memoizationz.AbstractPickleTests.test_bytearray_memoization 
  sK   YE(*;<
0AEjA[`a&qM JJ1vu5!%ABb"-	 b EjA[_`#-a=*Q-S ((c2 JJSz59#'::a=S((c2((c2++C5((c2++C5 a` 1 =  ba a`s   AE	B%E	EE#c                     t         D ]\  }t        j                  }|s| |fD ]7  }| j                  ||      }| j	                  |      }| j                  ||       9 |dz	  }|rG^ y rJ  )rg  r  maxsizeri  r  r  )r.   rd  r!   r  r  n2s         r   	test_intszAbstractPickleTests.test_ints
  se    EA"#QH

8U3AAB''"5 !( 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   )rg  ri  r  r  intr   r   r   )	r.   rd  nbitsnbasenposr!   r   r0  r  s	            r   	test_longzAbstractPickleTests.test_long$
  s    E9U
!!GUE!G3D!D5[!%Au!5"jj0++As3 ) 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'   rd  rr   r   r0  s          r   
test_floatzAbstractPickleTests.test_float;
  sl    A!$=AaR$==E$E51jj(##E3/ %  %>s   
A!LC_ALLde_DEfr_FRrZ  c                 N    | j                  | j                  dd      dd d       y )Ng333333?r   r  s   F1.)r   ri  r2   s    r   test_float_formatz%AbstractPickleTests.test_float_formatE
  s&     	C+Aa0&9r   c                     t         D ]E  }t               }| j                  ||      }| j                  |      }| j	                  |t
               G y r$   )rg  AAAri  r  r   REDUCE_Ar.   rd  instr`  rG  s        r   test_reducezAbstractPickleTests.test_reduceJ
  sA    E5DZZe,FZZ'FVX.	 r   c                     t         D ]C  }t        dd      }| j                  ||      }| j                  |      }| j	                  ||       E y )Nr   r   )rg  r~   ri  r  r  r  s        r   test_getinitargsz$AbstractPickleTests.test_getinitargsQ
  sE    E1a=DZZe,FZZ'Ff-	 r   c                     t               }t        D ]K  }| j                  ||      }| j                  |      }| j	                  |j
                  |j
                         M y r$   )r   rg  ri  r  r   r   r.   r   rd  r  r   s        r   test_metaclassz"AbstractPickleTests.test_metaclassX
  sH    OE

1e$A

1AQ[[!++6 r   c                 >   t        dt        f      }t        j                  t        t        j
                         t        D ][  }| j                  ||      }| j                  |      }| j                  ||       | j                  t        |      t        |             ] y )Nmy_dynamic_class)r   rB  rN   r   r   ru   rg  ri  r  r   r   r   r  s        r   test_dynamic_classz&AbstractPickleTests.test_dynamic_class_
  st     !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  	localtimerg  ri  r  r  statcurdirr   r  )r.   r  r  rH  rd  r  r  s          r   test_structseqz"AbstractPickleTests.test_structseqh
  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.   rd  r  r  s       r   test_ellipsisz!AbstractPickleTests.test_ellipsis{
  s7    E

3&A

1AMM#q! r   c                     t         D ]?  }| j                  t        |      }| j                  |      }| j	                  t        |       A y r$   )rg  ri  r   r  r   r  s       r   test_notimplementedz'AbstractPickleTests.test_notimplemented
  s7    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   rg  ri  r   r  r   )r.   
singletons	singletonrd  r  r  s         r   test_singleton_typesz(AbstractPickleTests.test_singleton_types
  sU    C0
#I"JJtI6JJqMd9oq1 # $r   c                 
   t         j                  j                         D ]b  }t        |t              st        |t              r%t        D ]5  }| j                  ||      }| j                  | j                  |      |       7 d y r$   )r  rZ   valuesr   r   
issubclassr	  rg  ri  r   r  r.   rH  rd  r  s       r   test_builtin_typesz&AbstractPickleTests.test_builtin_types
  s^    ""))+A!T":a+G&E

1e,AMM$**Q-3 ' ,r   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 r  )r  rZ   r  r   r   r   r	  rg  ri  r  OSErrorBlockingIOErrorr   ImportError)r.   rH  rd  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   r  BuiltinFunctionTyperg  ri  r   r  r  s       r   test_builtin_functionsz*AbstractPickleTests.test_builtin_functions
  s[    ""))+A!U667&E

1e,AMM$**Q-3 ' ,r   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)rg  ri  r   PROTOr   r  
startswithr   r"   NONErT  r  failr.  r  r{   )r.   rd  r  proto_headeroob
build_none	badpickleerrs           r   
test_protozAbstractPickleTests.test_proto
  s    Ejju-Gz%||eUGn< 2 2< @A  fllG!DaH  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   )rg  ri  r  r  r   r   r   LONG1r.   r'   rd  r  r   s        r   
test_long1zAbstractPickleTests.test_long1
  s^    )E

1e$A

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

1e$A

1A1%-fllA>
K	 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   TUPLEEMPTY_TUPLETUPLE1TUPLE2TUPLE3rg  ri  r  r  minr+  r  r   )r.   expected_opcoder   r   r   rM  r  rd  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NEWFALSErg  ri  r  r  r(  r   )r.   r)  rd  r'   r  r   r  s          r   test_singletonsz#AbstractPickleTests.test_singletons
  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   rg  ri  r  r  r  s        r   test_newobj_tuplez%AbstractPickleTests.test_newobj_tuple  sQ    IE

1e$A

1A1% r   c                     t        g d      }d|_        d|_        t        D ]7  }| j	                  ||      }| j                  |      }| j                  ||       9 y r1  )r  r   r   rg  ri  r  r  r  s        r   test_newobj_listz$AbstractPickleTests.test_newobj_list  sQ    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  )rg  	myclasses__base__sampler   ri  r  r   r  r   rZ   )r.   rd  rX   Br'   r  r   details           r   test_newobj_genericz'AbstractPickleTests.test_newobj_generic"  s    EJJahhKJJq%(JJqMAq!T!W5##Aq)  1qtV4  QZZ@  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 r7  )r8  MyIntr  rP  rg  r9  r:  r   weakrefproxyri  r  r   r   rZ   )r.   classesr   rd  rX   r;  r'   r  r  r   r<  s              r   test_newobj_proxiesz'AbstractPickleTests.test_newobj_proxies/  s    A,!ANN1 "EJJahhKMM!$JJq%(JJqM  a$q'2Aq!T!W5  1qtV4  QZZ@  r   c                 0   t         D ]  }t        d      }d|_        | j                  ||      }| j	                  |      }| j                  t        |      t               | j                  t        |      d       | j                  |j                  d        y r  )	rg  MyIntWithNew2r   ri  r  r   r   r   r  r  s        r   test_newobj_overridden_newz.AbstractPickleTests.test_newobj_overridden_newB  st    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   ri  r  r  r   rf  r  )r.   saver  r   s       r   test_newobj_not_classz)AbstractPickleTests.test_newobj_not_classM  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)
Nr  r"  r  r2  r   r@  s   MyListr   T)rK   rN   rT   r<   r  r   r   ri  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   )rP  r   EXT1r2   s    r   test_global_ext1z$AbstractPickleTests.test_global_ext1y  s*    
FKK8
FKK8r   c                     | j                  dt        j                         | j                  dt        j                         | j                  dt        j                         y )Nr  r   iͫ  )rP  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ͫ)rP  r   EXT4r2   s    r   test_global_ext4z$AbstractPickleTests.test_global_ext4  rW  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 Nr  r   	  r   )r   r:  rg  ri  r  r  r"   r   APPENDSr   r  )r.   r!   r'   rd  r  r   num_appendss          r   test_list_chunkingz&AbstractPickleTests.test_list_chunking  s    qNE

1e$A

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

1e$A

1A1%&v~~q9Kz  a0q 01 r   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 r]  )r   r  r:  rg  ri  r*  r   r  r  r"   r   SETITEMSr   r  )r.   r!   r'   rd  r  r   num_setitemss          r   test_dict_chunkingz&AbstractPickleTests.test_dict_chunking  s   MM%(#E

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

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

1e$A

1A1%';Lz  q1 12 r   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 )Nr  r  r   r   r^  r   )r8  r:  rg  ri  r  r  r"   r   ADDITEMSr   assertGreaterEqual)r.   r!   r'   rd  r  r   num_additemss          r   test_set_chunkingz%AbstractPickleTests.test_set_chunking  s   aME

1e$A

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

1e$A

1A1%';Lqy  q1''a8 r   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    rc  r      
I64206   Mr   )rH  r   r   rg  r  ri  r  r   r   r   NEWOBJrL  	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Nrl  rm  rc  r   rn  r   ro  r  s	   X   FACEs   FACE)ComplexNewObjr   r   rg  r  ri  r  r   r   r   rp  rL  rq  r  r  r  s        r   test_complex_newobjz'AbstractPickleTests.test_complex_newobj  s    !!-8YE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rt  )ComplexNewObjExr   r   rg  r  ri  r  rL  r   r   rp  r   rq  r  r  r  s        r   test_complex_newobj_exz*AbstractPickleTests.test_complex_newobj_ex  s    ##OV<YEE*JJq%(19MM+q1QYMM,2QYMM":A>MM/15  !1&--!CD  !1&2B2BA!F!"e-JJqM##Aq) +* **rw  c                     t        g d      }d|_        d|_        | j                  |d      }| j	                  |      }| j                  ||       y )Nr"  r  r2  r   )SlotListr   r   ri  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   )rg  REX_oner   _reduce_calledri  r  r  s        r   'test_reduce_overrides_default_reduce_exz;AbstractPickleTests.test_reduce_overrides_default_reduce_ex  sr    E	AQ--q1

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

1AQ--q1 r   c                    t         D ]  }t               }| j                  |j                  d        | j	                  ||      }| j                  |j                  |       | j                  |      }| j                  |j                  d         y r$   )rg  REX_twor   _protori  r  r  s        r   test_reduce_ex_calledz)AbstractPickleTests.test_reduce_ex_called  sl    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$   )rg  	REX_threer   r  ri  r  r  s        r   test_reduce_ex_overrides_reducez3AbstractPickleTests.test_reduce_ex_overrides_reduce  sl    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$   )rg  REX_fourr   r  ri  r  r  s        r   test_reduce_ex_calls_basez-AbstractPickleTests.test_reduce_ex_calls_base(  sl    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   )rg  REX_fiver   r  ri  r  r  s        r   test_reduce_calls_basez*AbstractPickleTests.test_reduce_calls_base1  sr    E
AQ--q1

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

1AQ--q1 r   c                     t               }| j                  |      }| j                  t        t        f      5  | j                  |       d d d        y # 1 sw Y   y xY wr$   )C_None_setstateri  r  r  r  r  )r.   r   r  s      r   test_pickle_setstate_Nonez-AbstractPickleTests.test_pickle_setstate_None:  sA    JJqM	:;JJqM <;;s   AA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)aaaNrz   ).0r}  s     r   	<genexpr>z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>C  s     3
1A
s   rp  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>D  s     7$Q1i.$s   rc  )r:  r   rg  r  ri  r  r  )r.   r<  
large_dictr   rd  r`  rG  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EE*C/F+##C0 +* **s    6B!!B*	c                 0   t         D ]  }t               }d|_        d|_        | j	                  ||      }| j                  |      }t        |j                        }t        |j                        }t        ||      D ]  \  }}| j                  ||         y )Nr  r2  )
rg  rX   r   r   ri  r  sortedrZ   zipr   )	r.   rd  r'   r  r   x_keysy_keysx_keyy_keys	            r   test_attribute_name_interningz1AbstractPickleTests.test_attribute_name_interningM  s     EAAEAE

1e$A

1AAJJ'FAJJ'F #FF 3ueU+ !4 r   c                     | j                  t        d      d      }| j                  |t               | j                  t	        dg      d      }| j                  |t
               y )Nr   r   r  )ri  r:  r   r9  r8  	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  )rg  r(  r+  ri  r  r   )r.   rd  r  r`  rG  s        r   test_large_picklesz&AbstractPickleTests.test_large_picklese  sg     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)Nrc  F   r   )rg  r  r:  ri  r   mapr+  r   r  rL  r   r   LONG)r.   rd  r!   picklessizesr  s         r   test_int_pickling_efficiencyz0AbstractPickleTests.test_int_pickling_efficiencyo  s    EE*<A"IFIq4::adE2IFSg./  6A:$(()9&++q)IJ % +* F +*s   CB<A+C<CC
	c                     | j                  ||      }| j                  t        ||             | j                  |      }| j	                  ||       y r$   )ri  r  r   r  r   )r.   r   rO  rd  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  rg  r  r   APPENDr_  rj  s      r   test_appends_on_non_listsz-AbstractPickleTests.test_appends_on_non_lists  sI    i Ez00fmmUK00fnneL	 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  rg  r  r   SETITEMrc  rj  s      r   test_setitems_on_non_dictsz.AbstractPickleTests.test_setitems_on_non_dicts  sP    B2"-.Ez00fnneL00foouM	 r   r  rY  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_MINrh  r   )r.   r  	frame_endframeless_startframeless_opcodesr   ra   poss           r   check_frame_opcodesz'AbstractPickleTests.check_frame_opcodes  su    '+*	O:'..w7LB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 8< '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   rc  r   )r   r:  r   r  r  ri  r  r   r+  r"   r  assertGreaterr  r  r  )r.   r   rd  r  r  bytes_per_frames         r   test_framing_many_objectsz-AbstractPickleTests.test_framing_many_objects  s     5< 1f559:EE***S%0 JJw/	  i0#&w<#/g#F$G""?#'#9#9A#=?$$_%)%;%;a%?A((1 +* ;**s   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   r     x   yzr  r   )FT)rd  fastr  r   )r:  r   r  r  ri  r   r6   rB   r  r  r  rD   r  r   r+  r"   r  r  )r.   Nr}  small_itemsr   rd  r  r  bufr  r  r'   n_framess                r   test_framing_large_objectsz.AbstractPickleTests.test_framing_large_objects  s   $)"I.IqsI.ax9+9tax9q91f559:E%\\D\9 #'**S%"8  'tY7$ :9 !jjl"&,,sU,"C'+S)"%,,. $

7 3I$$c%:cc!fc%:6?%@ic!fi%@B $$S)4+FLL'BH $$Xq1,,W51 :9 & ; /( &;%@# :9s7   
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   rw  	enumerate)
r  
keep_frameframe_startsframe_opcode_sizerO  _r  	newpicklelast_frame_endr}  s
             r   remove_framesz?AbstractPickleTests.test_optional_frames.<locals>.remove_frames  s    L !"-"4"4W"=3;;') '', #> "IN#L13*Q-W^C88	!$'8!8	 2
 11Ir      r   r   c                     | dz  S r  r%   )r}  s    r   r:  z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>  s    a!er   r$   )r   r  r  r   rw  r:  ri  r   r"   r  r  r  )r.   r  
frame_size
num_frames
bytes_typer}  r   rd  r  frameless_picklesome_frames_pickles              r   test_optional_framesz(AbstractPickleTests.test_optional_frames  s&   ""Q&	& ++

 !),J<A*<MN<Mq1j!o
22<MCNq&"9"9A"=>**S%0#0#9   fll<L!MqQ  djj1A&BC%27O%L"V\\;M N ,V\\7 CE  djj1C&DE ? -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__%  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  #  s    D!*-r   r  r  r   g     @r!  r  r}  0123456789abcdefr  r   r  r  )r:  r   r  r  r{   r#  r   r  r  r  r  r  r   r  r+  r  r   
gc_collectrh  r  r  )r.   r  rd  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_writer!  s   	- 	- 1f559:E %c#h1 /1 Ag.Bc!fF /  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==9=a3q6=K9&1 ;k4#9#99 kK ;'2 >{!!<d&<&<< {L >&1<kQ!V1kK< *

A0F0F,F +- *   [!1!$[!1C4E!E!I!,.g ;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.CNrm   r%   r   r   rX   r	  h  s    r   rX   N)r<   r=   r>   rX   r%   r   r   r;  r  g  s     r   r;  N)r<   r=   r>   r;  r%   r   r   Ar  f  s     r   r
  N)r<   r=   r>   r
  r%   r   r   r  r  e  s     r   r  r   )rd  r   )r  r:  r   r  r
  r;  rX   r  r  ri  r   )r.   rd  r   r  s       r   test_nested_namesz%AbstractPickleTests.test_nested_namesc  s    	 	
 622Q67E&((**fhhjjll;\\3\7 $

4::c5+A BIMM#y1 87 < 877s   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	RecursiveNrm   r%   r   r   r  r  r  r  r   r  zRecursive.mod.Recursiver   rc  )r  r  r  r=   r  r>   r:  r   r  r  r  ri  r   r.   rd  r  s      r   test_recursive_nested_namesz/AbstractPickleTests.test_recursive_nested_namesp  s    	 	I$8$89	!:	622Q67EE* JJtzz)U'CD	i3 +* 8 M +*s   1<B>>C	c                 ^    G d d      a t         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r  rm   r%   r   r   r  r  ~  r  r   r  zRecursive.refr   rc  )
r  refr>   r:  r   r  r  r  ri  r   r  s      r   test_recursive_nested_names2z0AbstractPickleTests.test_recursive_nested_names2|  s    	 	!	!0	622Q67EE* JJtzz)U'CD	i3 +* 8 M +*s   <B##B,	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   r  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   r#  zPyMethodsTest.Nested.ketchup  s    $r   c                 ,    | t         j                  u sJ y)Nmaple)r  r  r  s    r   r%  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   r  r#  r   r%  r'  r%   r   r   r  r!    s.    % %# #!r   r  N)	r<   r=   r>   r  r  r   r  r  r  r%   r   r   r  r    s5        "! !r   r  r   rd  methodr  r  rd  descr)r  r  r  r  r  r#  r%  r'  r:  r   r  r  r  ri  r   rZ   r  r  )
r.   
py_methodspy_unbound_methodsrd  r)  r  r   r   descriptorsr+  s
             r   test_py_methodsz#AbstractPickleTests.test_py_methods  s   	! 	!2   O$$  ((  &&  "&&

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

4::fe+D EI$$VXy{; >= %  2e\\f\= $

4::fe+D EI$$VC[)C.A >=  2 8 ""8,""6*
 622Q67E$\\U\;%%iUEJ <; % 8 >=
 >= <;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.NestedNrm   r%   r   r   r  r4    r  r   r  N)r<   r=   r>   r{   r  r%   r   r   r2  r2    s     r   r2  abcd)r   )r5  r   r"  r%   r   r   )r   ))r   r   )r   r   )s   abcr  )r   r   r   sweet)r  r  r(  	maketransr  r*  )r>  r2  indexr{   __len__r   __contains__r8  r   r  rw  r7  r   r  r:  r   r  r  r  ri  r   rZ   r  r  )r.   	c_methodsrd  r)  r/   r  r.  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7E )\\f\= $

4::fe+D EI$$VT]It4DE >= !* 8 {+MM*%
 622Q67E$\\U\;%%iUEJ <; % 8 >= <;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  r  xrange123	itertoolsimapr  r  
exceptionsr?  r  IterableUserDictUserListr  defaultdictr  )r   rd  r   r  )r:  r  r  r  r  r  r  r?  r  r  rD  rE  r  r   ri  r  r#  r   r  )r.   testsvalr  r   rd  r  s          r   test_compat_picklez&AbstractPickleTests.test_compat_pickle  s   1a[-2e_k62}h7[[)Y/[,4!!#Z1CD!!#Z<$$&}E	
 $NCdq\\tCy\>"jje4GMMT#:"B"B"DgNMM$tzz'':";T#YG ?> " $>>s   A,EE
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   rr   r   s        r   buffer_like_objectsz'AbstractPickleTests.buffer_like_objects  s      
J''
++"$ENN:NBE[445&uS-24 4 'uS/5UD D 'uS-3V-24 4 6 #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   rJ  c                      yNTr%   r   s    r   r  zAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback(  s    #r   r  )rO  r:  r   r  ri  r   r  r   r"   NEXT_BUFFERSHORT_BINBYTESr   r  r  r   r   r   )r.   r   rd  r  r  data2r   s          r   test_in_band_buffersz(AbstractPickleTests.test_in_band_buffers  sF   ++-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   r  r   c                 B    j                  | j                               S r$   )r   r   )r   r  s    r   r:  z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>A  s    W^^BFFH-Er   rJ  r  )rO  r:  r  r.  ri  r   r   r  r  r   r"   rU  r  rT  READONLY_BUFFERr   r   r   rf  r  r   r   r   r  )r.   r   rd  r  r  r   r  s         @r   test_oob_buffersz$AbstractPickleTests.test_oob_buffers7  s*   ++-Cq!&&z2JJsE/1yy  : 32 %
 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 ? . 32$ ?>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 Nr  r   r   r  r  )r   r:  r   r  r   ri  r  rw  r  r   r   r   )r.   r   rd  r  r  r  r   s          r   %test_oob_buffers_writable_to_readonlyz9AbstractPickleTests.test_oob_buffers_writable_to_readonlya  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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   r:  r  ri  r   r  r  r  rB  rf  )r.   r   rd  r  s       r   test_buffers_errorz&AbstractPickleTests.test_buffers_errorn  s      +1f559:E::b%:CD""9-

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

4
, ;: ; .- ;:s   )C,CC	C 	c                     t        dt        j                  dz         D ])  }| j                  d|d       }| j	                  |d       }+ y )Nr   r   r  r  )r:  r   r  ri  r  )r.   rd  data_pickledr  s       r   +test_inband_accept_default_buffers_argumentz?AbstractPickleTests.test_inband_accept_default_buffers_argumenty  sD    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$   )rf  rg  rh  r  ri  r  rj  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rR  r%   )r  s    r   r:  zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>  s    Dr   r  r  )	r:  r   r  ri  r  r   r   r   r   )	arrrd  r  r   r  r  rm  rk  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!  )rf  arangereshapeT)r.   rq  rp  rm  rk  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r7  r%   r2   s    r   r  zBad.__hash__  s    r   c                 J     d      dk(  rj                          t        dfS )Nr  r   r%   )r	  rz  )r.   r
  rx  s    r   ru   zBad.__reduce__  s%    q>Q&$$&Ry r   N)r<   r=   r>   r]   r  ru   )r|  r
  rx  s   r   rz  rz    s    !r   rz  r  FTr  )randomrx  rz  rg  r:  r6  r
  ri  r  r  r  r{   )
r.   rd  r  r6  r  r  r  r|  r
  rx  s
          @@@r   test_evil_class_mutating_dictz1AbstractPickleTests.test_evil_class_mutating_dict  s    &	! 	! E2Y49"I>IqceSUlI>
%C!CG%/CN & 4::j%8DJJt$   ? $ 4>HMM(CF334s   B3#B  	C)CC)r<   r=   r>   	optimizedr   r  r  r  r  r  r'  r(   r/  r1  r5  r<  r?  rA  rD  rH  rN  rP  rS  rY  r\  r^  r`  rc  re  rg  ri  rl  rn  rp  rr  ru  ry  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r*  r/  r3  r5  r=  rC  rF  rJ  rP  rS  rV  r[  ra  re  rj  rr  rv  rz  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  r  r/  r<  rH  rO  rW  r[  r^  r`  rc  unittestskipIfrf  rv  r  r%   r   r   r  r  I  sV    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E&L&64%.0 h"5: 6:/.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,4(+>(/T'	-:
 X__R4Z!34* 5*X4r   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   rc  r  )rg  r  r  r.  rg  ri  )r.   r  r  rd  s       r   test_huge_long_32bz$BigmemPickleTests.test_huge_long_32b  s    QX	"19\\\.**J+FG

4%
8 H /. # D HG /. 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  rc  r  rP  )
rg  r  ri  r   r  rR  rS  r+  r8  r   r.   r  r  rd  r  header
data_starts          r   test_huge_bytes_32bz%BigmemPickleTests.test_huge_bytes_32b  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  rc  r  <Q)rg  r  r  r.  rg  ri  r   r  rR  rS  r+  r8  r   r  s          r   test_huge_bytes_64bz%BigmemPickleTests.test_huge_bytes_64b  s   $!)$	"19\\\.z "..
M/JK JJteJ< L  /.	'"&**TE*"B"("2"2"(++dCI">#?%,]]4%8
(("#Js6{$::FH #'! /. #* D LK #'! /.$ 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)Nr5  r  r   rc  r  rP  r  )rg  r  ri  r   r  rR  rS  r+  r8  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)Nr5  r  r   rc  r  r  r  )rg  r  r  r.  rg  ri  r   r  rR  rS  r+  r8  r   r  r  s          r   test_huge_str_64bz#BigmemPickleTests.test_huge_str_64b-  sW   #	"A:\\\.qy!..
M/JK JJteJ< L 	 /.
'"&**TE*"B"("4"4"(++dCI">#?%,]]7%;
(("#Js6{$::FH (('..*ACL*P*1--*@+ACFt9N #'! /. #* D! LK #'! /.$ 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    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dZd Zy)RNc                     || _         y r$   r  )r.   r  s     r   rH   z
R.__init__L  s	    r   c                     | j                   S r$   r  r.   rd  s     r   ru   zR.__reduce__N  s    {{r   r$   rv   r%   r   r   r  r  K  s    r   r  c                       e Zd ZddZd Zy)rf  Nc                     || _         y r$   	reduce_ex)r.   r  s     r   rH   zREX.__init__R  s	    "r   c                     | j                   S r$   r  r  s     r   r   zREX.__reduce_ex__T  s    ~~r   r$   )r<   r=   r>   rH   r   r%   r   r   rf  rf  Q  s    #r   rf  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   ru   zREX_one.__reduce__Z  s    {r   Nr<   r=   r>   rI   r  ru   r%   r   r   r  r  W  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 rh   r  r  r  s     r   r   zREX_two.__reduce_ex__a      {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 rh   r  r  s     r   r   zREX_three.__reduce_ex__g  r  r   c                     t        d      )Nz#This __reduce__ shouldn't be called)r   r2   s    r   ru   zREX_three.__reduce__j  s    >??r   )r<   r=   r>   r  r   ru   r%   r   r   r  r  e  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  rB  r   r  s     r   r   zREX_four.__reduce_ex__p  s    ##D%00r   r  r%   r   r   r  r  m  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 rJ  )r  rB  ru   r2   s    r   ru   zREX_five.__reduce__w  s      &&r   Nr  r%   r   r   r  r  t  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$   r9  )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 rh   )r   r  r   r2   s    r   ru   zREX_six.__reduce__  s     Dz2tT$**%5t;;r   r$   )r<   r=   r>   rI   rH   r]   r   ru   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$   rV  )r.   rW  s     r   rH   zREX_seven.__init__  r  r   c                 d    t        |       t        |      u xr | j                  |j                  k(  S r$   )r   rW  r[   s     r   r]   zREX_seven.__eq__  r  r   c                 "    || j                   |<   y r$   rV  )r.   r3  rr   s      r   __setitem__zREX_seven.__setitem__  s    

3r   c                 d    t        |       dd d t        | j                  j                               fS rh   )r   r  rW  r   r2   s    r   ru   zREX_seven.__reduce__  s)    Dz2tT4

0@0@0B+CCCr   r$   )r<   r=   r>   rI   rH   r]   r  ru   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__  rs   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__  rs   r   c                 2    t        |       d| j                  fS rh   r  r2   s    r   ru   zREX_state.__reduce__  s    Dz2tzz))r   r$   )r<   r=   r>   rI   rH   r]   r  ru   r%   r   r   r  r    s    G*r   r  c                       e Zd ZdZdZy)r  z+ Setting __reduce_ex__ to None should fail N)r<   r=   r>   rI   r   r%   r   r   r  r    s
    5Mr   r  c                       e Zd ZdZdZy)r  z( Setting __reduce__ to None should fail N)r<   r=   r>   rI   ru   r%   r   r   r  r    s
    2Jr   r  c                       e Zd ZdZd ZdZy)r  z+  Setting __setstate__ to None should fail c                      yrJ  r%   r2   s    r   __getstate__zC_None_setstate.__getstate__  s    r   N)r<   r=   r>   rI   r  r  r%   r   r   r  r    s    5 Lr   r  c                       e Zd Zy)r  Nrm   r%   r   r   r  r    rn   r   r  c                       e Zd Zd Zy)Unpickleablec                     t         r$   r  r2   s    r   ru   zUnpickleable.__reduce__  s    r   Nr<   r=   r>   ru   r%   r   r   r  r    r|   r   r  c                       e Zd Zd Zy)ro  c                      y r$   r%   r   s      r   __call__zUnpickleableCallable.__call__  rb   r   N)r<   r=   r>   r  r%   r   r   ro  ro    rd   r   ro  c                       e Zd ZdZy)r?  r   Nr<   r=   r>   r:  r%   r   r   r?  r?    s    Fr   r?  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)MyStrr2  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    s    Fr   r  c                       e Zd Zg dZy)r  r"  Nr  r%   r   r   r  r    s    Fr   r  c                       e Zd ZdddZy)rR  r   r   r   Nr  r%   r   r   rR  rR    s    1Fr   rR  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   rr   s     r   r   zMyIntWithNew.__new__  s    r   N)r<   r=   r>   r   r%   r   r   r  r    s    r   r  c                   $    e Zd Zej                  Zy)rE  N)r<   r=   r>   r  r   r%   r   r   rE  rE    s    kkGr   rE  c                       e Zd ZdgZy)r|  r   N)r<   r=   r>   r   r%   r   r   r|  r|    s	    Ir   r|  c                       e Zd Zd Zd Zy)rH  c                     t        d      )Nz3SimpleNewObj.__init__() didn't expect to get called)r  r   s      r   rH   zSimpleNewObj.__init__  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__  s'    4yCJ&J4==ENN+JJr   N)r<   r=   r>   rH   r]   r%   r   r   rH  rH    s    OKr   rH  c                       e Zd Zd Zy)ru  c                     d| z  dfS )N%Xr  r%   r2   s    r   __getnewargs__zComplexNewObj.__getnewargs__  s    tR  r   N)r<   r=   r>   r  r%   r   r   ru  ru    s    !r   ru  c                       e Zd Zd Zy)ry  c                     d| z  fddifS )Nr  r  r  r%   r2   s    r   __getnewargs_ex__z!ComplexNewObjEx.__getnewargs_ex__  s    t~|++r   N)r<   r=   r>   r  r%   r   r   ry  ry    s    ,r   ry  c                       e Zd Zd Zy)r  c                     | j                    y r$   )r   )r.   r3  s     r   __getattr__zBadGetattr.__getattr__  s	    r   N)r<   r=   r>   r  r%   r   r   r  r     s    r   r  c                        e Zd Z fdZ xZS )r  c                 8    |dk(  rt         t        | 	  |      S )Nr   )r  super__getattribute__)r.   r   r   s     r   r  zNoNew.__getattribute__  s!    9  w'--r   )r<   r=   r>   r  __classcell__)r   s   @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?  {   rQ  r   closer  r.  r  r   unlinkr.   rW  s     r   test_dump_closed_filez/AbstractPickleModuleTests.test_dump_closed_file  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_file  r
  r  c                     t        j                         }di dg}| j                  ||       |j                  d       | j	                  |      }| j                  ||       y )Nr  |   r   )r6   rB   r  r8   r  r   )r.   streamr  r  s       r   test_load_from_and_dump_to_filez9AbstractPickleModuleTests.test_load_from_and_dump_to_file  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  ri  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  )	rQ  r   rg  r  r  r  r  r   r  r  s      r   test_dump_text_filez-AbstractPickleModuleTests.test_dump_text_file3  sk    	%"!!)TYYQF # 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<  rR  r  r   rf  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__D      r   Nrc   r%   r   r   
BadPicklerr  C      $r   r"  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__G  r!  r   Nrc   r%   r   r   BadUnpicklerr%  F  r#  r   r'  r   )r  r  r  r   rh  r  rf  r  )r.   r"  r'  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_oserrorN  s    Mr   c                     t         r$   r  r2   s    r   bad_propertyzGAbstractPickleModuleTests.test_unpickler_bad_file.<locals>.bad_propertyP  s    r   c                       e Zd Zy<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.FNrm   r%   r   r   Fr0  U  r  r   r1  c                       e Zd ZW  Zyr/  r<   r=   r>   rF   r+  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.FZ  s    %Hr   c                       e Zd ZW  Zyr/  r<   r=   r>   rE   r4  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F_  s    !Dr   c                       e Zd ZW  ZW Zyr/  )r<   r=   r>   rE   rF   r-  r+  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.Fd  s    D%Hr   c                       e Zd ZW  ZW Zyr/  )r<   r=   r>   rF   rE   r8  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.Fj  s    #H!Dr   c                       e Zd ZW  Zyr/  r3  r-  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.Fp  s    #Hr   c                       e Zd ZW  Zyr/  r6  r;  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.Fu  s    Dr   c                        e Zd ZW  ZW ZW Zyr/  )r<   r=   r>   r0   rE   rF   r8  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.Fz  s    D!D%Hr   c                        e Zd ZW  ZW ZW Zyr/  )r<   r=   r>   readintorE   rF   r8  s   r   r1  z<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.F  s    #H!D%Hr   )r   r  r  r  r  r  )r.   r1  r-  r+  s     @@r   test_unpickler_bad_filez1AbstractPickleModuleTests.test_unpickler_bad_fileL  s   			 
		 	>95t~~qsK	& 	&>95t~~qsK	" 	">95t~~qsK	& 	& 	+t~~qs;	" 	" 	+t~~qs;	$ 	$+t~~qs;	  	 >;7M	& 	&	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>.FNrm   r%   r   r   r1  rC    r  r   r1  c                       e Zd Zed        Zy)rC  c                     t         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   r1  z:AbstractPickleModuleTests.test_pickler_bad_file.<locals>.F  s    " "r   )r  r  r  r  )r.   r1  s     r   test_pickler_bad_filez/AbstractPickleModuleTests.test_pickler_bad_file  sH    	 	)T\\137	" 	" 	+t||QS9r   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   r  r   r  )r   r:  r  r.  r   r   r  r  r   r   rf  r   )	r.   ri  r  r   rd  r  r  r  r   s	            r   check_dumps_loads_oob_buffersz7AbstractPickleModuleTests.check_dumps_loads_oob_buffers  s     F#1a[E"":.cE&(ii1 /. !
 1f559:EG%nnOu)8:DVT*U71:.7""6#9#9:d ;g.CMM#s# ; /. ;:s   D	DD	D	c                 P    | j                  | j                  | j                         y r$   )rH  ri  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   rW  r.   s      r   ri  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   rW  r.   s      r   r  zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads  s'    

4 A499Q)&))r   )rH  )r.   ri  r  s   `  r   test_dump_load_oob_buffersz4AbstractPickleModuleTests.test_dump_load_oob_buffers  s    	 
	* 	**5%8r   N)r<   r=   r>   r	  r  r  r  r  r  r  r(  r@  rF  rH  rJ  rN  r%   r   r   r  r    sG    %%*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_valuerZ  )r   r  id_countr{   false_count)r.   rB  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.   oidrB  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 )Nr  rR  r   r   r   )
r   r:  rg  rS  rT  rV  rW  r   r  ri  )r.   Lrd  s      r   test_persistencez/AbstractPersistentPicklerTests.test_persistence  s    rO122EDM D$%D!DOTZZ

1e(<=qAT]]A.T--q1T__a0T22A6 r   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_id      
r   c                     |S r$   r%   )r.   pids     r   rY  z6AbstractIdentityPersistentPicklerTests.persistent_load  r`  r   c                     | j                  | j                  ||            }| j                  |t        |             | j	                  ||       y r$   )r  ri  r*  r   r   )r.   r   rd  r  s       r   _check_return_correct_typezAAbstractIdentityPersistentPicklerTests._check_return_correct_type  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*\()rg  rd  r{   )r.   rd  r   s      r   test_return_correct_typez?AbstractIdentityPersistentPicklerTests.test_return_correct_type  sI    Ez//q9$gr:sCC33C? D r   c                    d}| j                  t        j                        5 }| j                  |d       d d d        | j	                  t        j                        d       t        j                  |j                  d      z   dz   }| j                  t        j                        5 }| j                  |       d d d        | j	                  t        |j                        d       y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nu   ∅r   z2persistent IDs in protocol 0 must be ASCII stringsr@  r-  )r  r   rh  ri  r   r{   r  PERSIDr#  rf  r  )r.   non_ascii_strr}  r  s       r   test_protocol0_is_ascii_onlyzCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_only  s    'v334JJ}a( 5R\\*M	O---"6"6w"??&Hv556"JJw 7R\\*M	O 54
 76s   C&&C2&C/2C;N)r<   r=   r>   r  rY  rd  rf  rj  r%   r   r   r^  r^    s    )
@
O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.setUp  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abcdefgrr  ,   r   )rg  r6   rB   rn  r  rD   r8   truncate
clear_memor  r   )r.   r  rd  rW  r  first_pickledsecond_pickledthird_pickleds           r   test_clear_pickler_memoz;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memo  s     *YE

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 Nrq  )r6   rB   rn  r  rD   memor  )r.   r  rW  r  rv  primedprimed_pickleds          r   test_priming_pickler_memoz=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memo8  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   rn  r  rD   r|  ro  r  r   r	  r  )
r.   r  rW  r  rv  r}  r~  r  unpickled_data1unpickled_data2s
             r   test_priming_unpickler_memoz?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memoJ  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 )Nrq  )rr  rs  rs  r   )r6   rB   rn  r  rD   rG   r8   ro  r   r  rt  )r.   data1rW  r  pickled1rV  pickled2r  s           r   test_reusing_unpickler_objectszBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectsh  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)Nrc  i  s   abcder  r   )rg  r  r:  r{   r+  rn  r  rD   ro  r;   r   r  r  r<  )r.   ioclassr3   rd  r'   r  rW  r  r  r  r  r}  r  s                r   _check_multiple_unpicklingsz?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings  s   YEE*.3Dk:k!SVk:h_LI,,Q,?U#**,GaK( 003	qAffh$$Y^^%5u=((3W3EF " !!(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 )Nr  r      )buffer_sizer  r   )r   r:  rg  r6   BufferedRandomrB   rn  r  r8   ro  r   r  )r.   r  rd  buf_sizerW  r  r  s          r   "test_unpickling_buffering_readlinezFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline  s     E"IE!!RL%%bjjlI,,Q,?T"q	 003	  !148 ) r   )r<   r=   r>   rn  ro  r  ry  r  r  r  r  r  r  r  r  r%   r   r   rl  rl    sH    MO$;@;$<<22 @D <(5GD
9r   rl  reduce_Ac                       e Zd Zd Zy)r  c                     t         t        ffS r$   )r{   r  r2   s    r   ru   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 attributer  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<   rW  )r   MyClass)some strgFhThe reducer just failed)r   r  r{   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   rW  z.AbstractHookTests.test_pickler_hook.<locals>.f  r  r   c                       y r$   r%   r%   r   r   r  z.AbstractHookTests.test_pickler_hook.<locals>.g  r  r   c                       y r$   r%   r%   r   r   r  z.AbstractHookTests.test_pickler_hook.<locals>.h  r  r   c                       e Zd Zy)4AbstractHookTests.test_pickler_hook.<locals>.MyClassNrm   r%   r   r   r  r    r  r   r  r   r   rc  r   r  r  )r:  r   r  r  r6   rB   rn  r  r  r  r  rD   r   r   r  rh  assertRaisesRegexr.  )r.   rW  r  r  r  rd  bior  new_fsome_strmath_logs              r   test_pickler_hookz#AbstractHookTests.test_pickler_hook  s9   
				 	 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   rc  c                       y r$   r%   r%   r   r   rW  zEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.f  s    r   r   )r:  r   r  r  r@  r  r6   rB   rn  r  r  rD   rW  )r.   rd  rW  wrr  r  r  s          r   (test_reducer_override_no_reference_cyclez:AbstractHookTests.test_reducer_override_no_reference_cycle  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   r\  r  r%   r   r   r  r    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   rn  r  r  r  rL  r   )r.   rW  r  s      r   test_default_dispatch_tablez6AbstractDispatchTableTests.test_default_dispatch_table)  sZ    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  5  s    Nr   r  c                     t        j                         } ||      }j                  |j                         |j	                  |        |j                         S r$   )r6   rB   r   r  r  rD   )r   r   rW  r  r  r  r.   s       r   ri  zCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumps8  sG    

A!X&AQ--r2FF3K::<r   r$   )get_dispatch_tablern  _test_dispatch_table)r.   ri  r  r  s   ` @@r   test_class_dispatch_tablez4AbstractDispatchTableTests.test_class_dispatch_table1  s:    $$&	 ** 	 	  	!!%,r   c                 Z      j                         d fd	} j                  |       y )Nc                     t        j                         }j                  ||      }|_        j	                  |j                         |j                  |        |j                         S r$   )r6   rB   rn  r  r   r  rD   )r   r   rW  r  r  r.   s       r   ri  zFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumpsE  sU    

A""1h/A!AQ--r2FF3K::<r   r$   )r  r  )r.   ri  r  s   ` @r   test_instance_dispatch_tablez7AbstractDispatchTableTests.test_instance_dispatch_tableA  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   ri  s    r   custom_load_dumpzIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpP  s    <<c1..r   c                 T    t        j                  t        j                  | d            S r  )r   r  ri  rS  s    r   default_load_dumpzJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpS  s    <<S! 455r   y      ?       @reduce_1c                     t         ffS r$   rz   )r   REDUCE_1s    r   r  zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1^      ##r   reduce_2c                     t         ffS r$   rz   )r   REDUCE_2s    r   r  zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2u  r  r   r  c                 6    t         d| j                  d d t        fS rh   )r  rZ   r  rS  s    r   
reduce_bbbzCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbb  s    CLL$lBBr   r  )r   complexr  r  r  r*  r   )r.   ri  r  r  r  r  r  r   r   r  r  r  r  s    `         @@r   r  z/AbstractDispatchTableTests._test_dispatch_tableO  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   rM  rR  r  rR  r  r  r@  textwrapr   http.cookiesr   r   r  r  r   test.supportr   r   r   r	   r
   r   r   test.support.import_helperr   test.support.os_helperr   r   test.support.warnings_helperr   r   numpyrf  
skipUnlessr  r[  r:  r  rg  r   r"   r(   rB   r*   rB  r@   rK   rX   r_   rf   rj   r=   rl   rp   r  rx   r~   r   r   r   r   r   r   r   rw  r   r   r  r$  r  r%  r  	DATA2_DISr  	DATA3_DISr  	DATA4_DISr7  r9  r;  r  ArithmeticErrorr  r  r	  r  BytesWarningDeprecationWarningr<  EnvironmentErrorr?  FloatingPointErrorFutureWarningGeneratorExitIOErrorImportWarningIndentationErrorr|  KeyErrorKeyboardInterruptLookupErrorMemoryError	NameErrorr,   r  rg  PendingDeprecationWarningReferenceErrorr  RuntimeWarningStopIterationSyntaxErrorSyntaxWarningSystemError
SystemExitTabErrorr  UnboundLocalErrorUnicodeErrorUnicodeWarningUserWarningr.  WarningZeroDivisionErrorr=  r>  r@  r   r   r`  r  r  r  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  rw  ro  r?  floatr  r  r  r{   r  r  r>  r  r   r  r   rR  r8  r  r  r  r8  r  rE  r|  rH  ru  ry  r  r  r  rP  r^  rl  r  r  r  r  r  r  r  r<   r"  r'   r}  ri  r  r  r   r+  jr   r%   r   r   <module>r     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 [.# ` < ,

*X! X!vj7 j7Z~4 ~4B4| |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 O  OF\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 .	 wS  K( 
)	( 	Bs<   U
 U% UU% 
UUU"U% %U0/U0