
    /hhT             
       
   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr   S SKrS SKJr  S SKJr  S SKJrJrJrJrJrJ r   S SK!J"r"  S SK#J$r$  S S	KJ%r%  S S
K&J'r'  S SKJ(r(   \'" 5          S SK)r*SSS5        \RV                  " \RX                  S:  S5      r-\." \R^                  S-   5      r0S r1S r2S r3 " S S\Rh                  5      r5 " S S\65      r7 " S S5      r8 " S S5      r9 " S S\95      r: " S S\95      r;S SK<r<\9\<l9        S\9l=        \:\<l:        S\:l=        \;\<l;        S\;l=         " S S 5      r> " S! S"5      r? " S# S$\@5      rA " S% S&\95      rB " S' S(\C5      rD " S) S*\6\DS+9rE " S, S-\C5      rFS. rG " S/ S0\H5      rI " S1 S2\J5      rK\b
   " S3 S45      rLS5rMS6rNS7rOS8rPS9rQS:rRS;rSS<rTS=rUS>rVS?rWS@rXSArYSBrZ/ \[P\\P\]P\^P\_P\`P\aP\bP\cP\dP\eP\fP\gP\hP\P\iP\jP\kP\lP\mP\nP\oP\pP\qP\rP\sP\tP\uP\vP\wP\xP\yP\zP\{P\|P\}P\~P\P\P\P\P\P\P\P7rSCrSDrSE r " SF SG5      r " SH SI5      r " SJ SK5      r " SL SM5      r " SN SO5      r " SP SQ5      r " SR SS\65      r " ST SU\65      r " SV SW\65      r " SX SY\65      r " SZ S[\65      r " S\ S]\65      r " S^ S_\65      r " S` Sa\65      r " Sb Sc5      r " Sd Se5      r " Sf Sg5      r " Sh Si\d5      r " Sj Sk5      r\" 5       r " Sl Sm\5      r " Sn So\@5      r " Sp Sq\5      r " Sr Ss\5      r " St Su\5      r " Sv Sw\5      r " Sx Sy\5      r " Sz S{\5      r " S| S}\5      r " S~ S\5      r " S S\5      r\\\\\\\\\\/
r " S S\@5      r " S S\5      r " S S\5      r " S S\@5      q " S SG[j        5      r " S SG[j        5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      rSr " S S\65      r " S S\65      rS r " S S5      r " S S5      r " S S5      r\S:X  a  S SK	Jr  \" 5       r\." \R^                  S-   5       H  r\GR                  " \\5      r\" SGR                  \5      5        \." S \" \5      S5       H)  r\H" \\\S-    5      r\" SGR                  \5      5        M+     \" S5        \" 5         \" SGR                  \5      5        \" SGR                  \5      5        \" \5        \" S5        \" 5         M     gg! \ a    Sr GNf = f! , (       d  f       GN= f! \ a    Sr* GNf = f)    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                     [         R                  " U5       H(  u  n  nUR                  U R                  S5      :X  d  M(    g   g)Nlatin-1TFpickletoolsgenopscodedecode)r   pickleopdummys       :/opt/python-3.13.8/usr/lib/python3.13/test/pickletester.pyopcode_in_pickler   ;   s;    '..v6E577dkk),, 7     c                     Sn[         R                  " U5       H-  u  n  nUR                  U R                  S5      :X  d  M(  US-  nM/     U$ )Nr   r   r   r   )r   r   nr   r   s        r   count_opcoder"   B   sH    	A'..v6E577dkk),,FA 7 Hr   c                     U $ N xs    r   identityr(   J   s    Hr   c                   ,    \ rS rSrS rS rS rS rSrg)UnseekableION   c                     [         er$   )NotImplementedErrorselfargss     r   peekUnseekableIO.peekO   s    !!r   c                     g)NFr%   r/   s    r   seekableUnseekableIO.seekableR   s    r   c                 "    [         R                  er$   ioUnsupportedOperationr.   s     r   seekUnseekableIO.seekU       %%%r   c                 "    [         R                  er$   r8   r4   s    r   tellUnseekableIO.tellX   r=   r   r%   N)	__name__
__module____qualname____firstlineno__r1   r5   r;   r?   __static_attributes__r%   r   r   r*   r*   N   s    "&&r   r*   c                       \ rS rSrSrS rSrg)	MinimalIO\   z5
A file-like object that doesn't support readinto().
c                    [         R                  " U6 U l        U R                  R                  U l        U R                  R                  U l        U R                  R
                  U l        U R                  R                  U l        g r$   )r9   BytesIO_biogetvaluereadreadlinewriter.   s     r   __init__MinimalIO.__init__`   sR    JJ%			**IINN			**YY__
r   )rK   rL   rM   rN   rO   N)rA   rB   rC   rD   __doc__rP   rE   r%   r   r   rG   rG   \   s    %r   rG   c                        \ rS rSrS rS rSrg)ExtensionSaverr   c                     Xl         U[        R                  ;   aK  [        R                  U   U l        [        R                  " U R                  S   U R                  S   U5        g S U l        g Nr   r   )r   copyreg_inverted_registrypairremove_extension)r/   r   s     r   rP   ExtensionSaver.__init__u   sP    	7---2248DI$$TYYq\499Q<FDIr   c                     U R                   n[        R                  R                  U5      nUb  [        R                  " US   US   U5        U R
                  nUb  [        R                  " US   US   U5        g g rW   )r   rX   rY   getr[   rZ   add_extension)r/   r   curpairrZ   s       r   restoreExtensionSaver.restore~   so    yy,,006$$WQZTByy!!$q'47D9 r   )r   rZ   N)rA   rB   rC   rD   rP   ra   rE   r%   r   r   rT   rT   r   s    :r   rT   c                       \ rS rSrS rSrg)C   c                 4    U R                   UR                   :H  $ r$   )__dict__r/   others     r   __eq__C.__eq__   s    }}..r   r%   N)rA   rB   rC   rD   rj   rE   r%   r   r   rd   rd      s    /r   rd   c                       \ rS rSrS rSrg)D   c                     g r$   r%   )r/   args     r   rP   
D.__init__       r   r%   NrA   rB   rC   rD   rP   rE   r%   r   r   rm   rm          r   rm   c                       \ rS rSrS rSrg)E   c                     gNr%   r%   r4   s    r   __getinitargs__E.__getinitargs__   s    r   r%   N)rA   rB   rC   rD   rz   rE   r%   r   r   rv   rv      s    r   rv   __main__c                       \ rS rSrSrg)Object   r%   NrA   rB   rC   rD   rE   r%   r   r   r~   r~          r   r~   c                        \ rS rSrS rS rSrg)K   c                     Xl         g r$   value)r/   r   s     r   rP   
K.__init__       
r   c                 (    [         U R                  44$ r$   )r   r   r4   s    r   
__reduce__K.__reduce__   s    4::-r   r   NrA   rB   rC   rD   rP   r   rE   r%   r   r   r   r      s     r   r   c                       \ rS rSrS rSrg)myint   c                 $    [        U5      U l         g r$   str)r/   r'   s     r   rP   myint.__init__   s    q6r   r   Nrs   r%   r   r   r   r          r   r   c                        \ rS rSrS rS rSrg)initarg   c                     Xl         X l        g r$   ab)r/   r   r   s      r   rP   initarg.__init__   s    r   c                 2    U R                   U R                  4$ r$   r   r4   s    r   rz   initarg.__getinitargs__   s    vvtvv~r   r   N)rA   rB   rC   rD   rP   rz   rE   r%   r   r   r   r      s    r   r   c                       \ rS rSrSrg)	metaclass   r%   Nr   r%   r   r   r   r      r   r   r   c                       \ rS rSrSrg)use_metaclass   r%   Nr   r%   r   r   r   r      r   r   r   )r   c                        \ rS rSrS rS rSrg)pickling_metaclass   c                 p    [        U 5      [        U5      :H  =(       a    U R                  UR                  :H  $ r$   )typereduce_argsrh   s     r   rj   pickling_metaclass.__eq__   s0    T
d5k) 6  E$5$55	7r   c                 &    [         U R                  4$ r$   )create_dynamic_classr   r4   s    r   r   pickling_metaclass.__reduce__   s    $d&6&677r   r%   N)rA   rB   rC   rD   rj   r   rE   r%   r   r   r   r      s    78r   r   c                 >    [        X[        5       5      nX4Ul        U$ r$   )r   dictr   )namebasesresults      r   r   r      s    TV4FFMr   c                   D    \ rS rSrSrSrSrSrS rS r	\	r
\S 5       rSrg)ZeroCopyBytes   Tc                     US:  a-  [        U 5      R                  [        R                  " U 5      4S 4$ [        U 5      R                  [	        U 5      44$ N   r   _reconstructr   PickleBufferbytesr/   protocols     r   __reduce_ex__ZeroCopyBytes.__reduce_ex__   I    q=:**V-@-@-F,H$NN:**U4[N::r   c                 `    SR                  U R                  R                  [        U 5      5      $ Nz{}({!r})format	__class__rA   r   r4   s    r   __repr__ZeroCopyBytes.__repr__   #      !8!8%+FFr   c                     [        U5       nUR                  n[        U5      U L a  UsS S S 5        $ U " U5      sS S S 5        $ ! , (       d  f       g = fr$   
memoryviewobjr   clsr   ms      r   r   ZeroCopyBytes._reconstruct   =    _%%CCyC	 _ 3x __   AA
Ar%   NrA   rB   rC   rD   readonlyc_contiguousf_contiguouszero_copy_reconstructr   r   __str__classmethodr   rE   r%   r   r   r   r      s;    HLL ;G G   r   r   c                   D    \ rS rSrSrSrSrSrS rS r	\	r
\S 5       rSrg)	ZeroCopyBytearray   FTc                     US:  a-  [        U 5      R                  [        R                  " U 5      4S 4$ [        U 5      R                  [	        U 5      44$ r   r   r   s     r   r   ZeroCopyBytearray.__reduce_ex__   r   r   c                 `    SR                  U R                  R                  [        U 5      5      $ r   r   r4   s    r   r   ZeroCopyBytearray.__repr__   r   r   c                     [        U5       nUR                  n[        U5      U L a  UsS S S 5        $ U " U5      sS S S 5        $ ! , (       d  f       g = fr$   r   r   s      r   r   ZeroCopyBytearray._reconstruct   r   r   r%   Nr   r%   r   r   r   r      s;    HLL ;G G   r   r   c                   |    \ rS rSrSrS rS r\S 5       r\S 5       r	\S 5       r
S rS	 rS
 rS r\S 5       rSrg)PicklableNDArrayi  Fc                 :    [         R                  " U0 UD6U l        g r$   )_testbufferndarrayarrayr/   r0   kwargss      r   rP   PicklableNDArray.__init__	  s    $,,d=f=DJr   c                 f    [        U 5      nUR                  U5      nU R                  U   Ul        U$ r$   )r   __new__r   )r/   idxr   news       r   __getitem__PicklableNDArray.__getitem__  s-    t*C++c"C

3CIJr   c                 .    U R                   R                  $ r$   )r   r   r4   s    r   r   PicklableNDArray.readonly  s    ::&&&r   c                 .    U R                   R                  $ r$   )r   r   r4   s    r   r   PicklableNDArray.c_contiguous      ::***r   c                 .    U R                   R                  $ r$   )r   r   r4   s    r   r   PicklableNDArray.f_contiguous  r   r   c                 B   [        U[        5      (       d  [        $ UR                  R                  U R                  R                  :H  =(       a    UR                  R
                  U R                  R
                  :H  =(       a    UR                  R                  U R                  R                  :H  =(       ai    UR                  R                  U R                  R                  :H  =(       a5    UR                  R                  5       U R                  R                  5       :H  $ r$   )	
isinstancer   NotImplementedr   r   shapestridesr   tobytesrh   s     r   rj   PicklableNDArray.__eq__  s    e%566%%KK&&$***;*;; BKK%%)9)99BKK''4::+=+==B KK((DJJ,?,??B KK'')TZZ-?-?-AA	Cr   c                 B    [        U[        5      (       d  [        $ X:X  + $ r$   )r   r   r   rh   s     r   __ne__PicklableNDArray.__ne__'  s    e%566%%&&r   c                     [        U 5       SU R                  R                   SU R                  R                   SU R                  R	                  5        S3$ )Nz(shape=z	,strides=z, bytes=))r   r   r   r   r  r4   s    r   r   PicklableNDArray.__repr__,  sU    Dzl'$***:*:); <#zz112 3!ZZ//12!5 6r   c                 6   U R                   R                  (       d  [        S5      eU R                   R                  U R                   R                  U R                   R
                  U R                  (       a  SO[        R                  S.n[        R                  " U R                   5      nUS:  a  [        U 5      R                  X244$ UR                  5        n[        U 5      R                  UR                  5       U44sS S S 5        $ ! , (       d  f       g = f)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   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   'D


Dc                     [        U5       n[        UR                  5       5      nS S S 5        U " W40 UD6$ ! , (       d  f       N= fr$   )r   listr  )r   r   r   r   itemss        r   r   PicklableNDArray._reconstructD  s<    CA QYY[) ! u'''	 !s	   7
A)r   N)rA   rB   rC   rD   r   rP   r   propertyr   r   r   rj   r  r   r   r   r   rE   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                  
   [        5       n SU l        SU l        / SQnSnSnSnUR                  SSX"* U* S-
  X3* U* S-
  XD* U* S-
  /5        SSX 4nUR	                  U5        UR	                  U5        UR	                  S	5        U$ )
Nr      )r   r   g       @y      @             abcr   )rd   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                      \ rS rSr\" 5       rS9S jrS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS r\S 5       r\S 5       rS rS rS rS rS r\S 5       r\S 5       r \S 5       r!S r"S r#S  r$S! r%S" r&S# r'\S$ 5       r(S% r)S& r*S' r+S( r,S) r-S* r.S+ r/S, r0S- r1S. r2\3Rh                  S/ 5       r5S0 r6S1 r7S2 r8S3 r9S4 r:S5 r;S6 r<\=R|                  \=R~                  " 5       S7 5       5       r@S8rAg):AbstractUnpickleTestsiA  Nc           	      l   Uc  SR                  X5      nU R                  XUS9  U R                  [        U5      [        U5      US9  [	        US5      (       aJ  U R                  UR                  UR                  US9  U R                  UR                  UR                  US9  [	        US5      (       a  U R                  UR                  UR                  US9  UR                   HK  nU R                  [	        X5      [	        X$5      US9  U R                  [        XS5      [        X$S5      US9  MM     gg)zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r})msgrg   	__slots__)r   assertEqualassertIsr   hasattrassertDictEqualrg   assertIsNotassertListEqualr+  getattr)r/   r   objcopyr*  slots        r   assert_is_copy$AbstractUnpickleTests.assert_is_copyF  s    ;.55cCC3/d3igC83
##  w/?/?S IS\\7+;+;E3$$  0A0As K  C&(>C ! I  D!9!(!=3 ! H & %r   c           
      v   U R                  US9   U R                  U5          U R                  U5         S S S 5        S S S 5        g ! [         aE  n[        R
                  S:  a+  [        U<S SUR                  R                  < SU< 35        e S nAff = f! , (       d  f       Ni= f! , (       d  f       g = f)N)datar   32z - z: )	subTestassertRaisesloadsBaseExceptionr   verboseprintr   rA   )r/   errorsr8  excs       r   check_unpickling_error,AbstractUnpickleTests.check_unpickling_errorX  s    \\t\$v&

4  ' %$ ! ??Q&!7!7> ?	 '& %$s?   B*BAB*
BA BBB
B'	#B**
B8c                 b    U R                  U R                  U R                  [        5      5        g r$   )r5  	_testdatar<  DATA0r4   s    r   test_load_from_data0*AbstractUnpickleTests.test_load_from_data0c      DNNDJJu,=>r   c                 b    U R                  U R                  U R                  [        5      5        g r$   )r5  rE  r<  DATA1r4   s    r   test_load_from_data1*AbstractUnpickleTests.test_load_from_data1f  rI  r   c                 b    U R                  U R                  U R                  [        5      5        g r$   )r5  rE  r<  DATA2r4   s    r   test_load_from_data2*AbstractUnpickleTests.test_load_from_data2i  rI  r   c                 b    U R                  U R                  U R                  [        5      5        g r$   )r5  rE  r<  DATA3r4   s    r   test_load_from_data3*AbstractUnpickleTests.test_load_from_data3l  rI  r   c                 b    U R                  U R                  U R                  [        5      5        g r$   )r5  rE  r<  DATA4r4   s    r   test_load_from_data4*AbstractUnpickleTests.test_load_from_data4o  rI  r   c                    [         S4[        S4[        S44 H  u  pUR                  R	                  S5      n SR                  SU5      nU R                  U" U6 U R                  U5      5         SR                  SU5      nU R                  U" U6 U R                  U5      5         SR                  SU5      nU R                  U" U6 U R                  U5      5        M     g )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.)rd   rm   rv   rA   encodereplacer5  r<  )r/   Xr0   xnamepickle0pickle1pickle2s          r   test_load_classic_instance0AbstractUnpickleTests.test_load_classic_instancer  s     B!Vq"g6GAJJ%%g.E	# %,GD%$8  4$**W*=>
./6wtU/C  4$**W*=>./6wtU/C  4$**W*=>i 7r   c                     SnS[        U5      R                  S5      -   S-   nU R                  U5      nU R                  X5        S[        U5      R                  S5      -   S-   nU R	                  [
        U5        g )Nl       Ir[     
.s   JUNK
.)r   r]  r<  r5  rB  
ValueError)r/   maxint64r8  gots       r   test_maxint64#AbstractUnpickleTests.test_maxint64  sq     c(m**733f<jjH* c(m**733j@##J5r   c                    U R                  [        5      nU R                  U[        SS/5      5        U R                  [        5      nU R                  [        U5      [        [        S5      5      5        U R                  [        U5      [        [        S5      5      5        U R                  [        5      nU R                  [        U5      [        5        U R                  [        UR                  5       5      S/5        U R                  US   R                  S5        [         H^  n[        R                  SUR                  R!                  S5      5      nU R                  U5      nU R#                  [        U5      U5        M`     U R                  [        R                  SS	5      5      nU R#                  [        U5      [$        5        U R                  [&        5      nU R#                  [        U5      [(        5        U R                  UR*                  S
5        U R                  UR,                  S5        U R                  UR.                  S5        U R                  UR0                  S5        U R                  UR2                  S5        g )Nr   r  r   r   keyr      ?r[     StandardErrorr  bad)r<  DATA_SETr,  setDATA_XRANGEr   ranger  DATA_COOKIEr   keysr   python2_exceptions_without_argsexception_pickler^  rA   r]  r-  	Exception
DATA_UEERRUnicodeEncodeErrorobjectencodingstartendreason)r/   loadedrA  r8  s       r   test_unpickle_from_2x+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                     U R                  U R                  SSS9S5        U R                  U R                  SSS9S5        U R                  U R                  SSS9S5        g )Ns   S'a\x00\xa0'
.r   r  s   a s   Ua .s   Ua .r,  r<  r4   s    r   test_load_python2_str_as_bytes4AbstractUnpickleTests.test_load_python2_str_as_bytes  s~    $8-4 $ 67C	E 	$6-4 $ 67C	E 	$>-4 $ 67C	Er   c                     U R                  U R                  SSS9S5        U R                  U R                  SSS9S5        U R                  U R                  SSS9S5        g )Ns	   V\u03c0
.r   r  u   πs   X   π.s
   X   π.r  r4   s    r    test_load_python2_unicode_as_str6AbstractUnpickleTests.test_load_python2_unicode_as_str  sz    N-4 $ 67;	= 	$A-4 $ 67;	= 	$I-4 $ 67;	=r   c           	          U R                  U R                  [        R                  [        R
                  " SS5      -   S-   [        R                  -   SS9S5        g )N<Ii,  s,  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   r  )r,  r<  r   	BINSTRINGstructpackSTOPr4   s    r   #test_load_long_python2_str_as_bytes9AbstractUnpickleTests.test_load_long_python2_str_as_bytes  s[    F$4$4$*KKc$:%;$.%/17%= .5 $ 6 8B	Cr   c                 L   U R                  U R                  S5      5        U R                  U R                  S5      S5        U R                  U R                  S5      S5        U R                  U R                  S5      S5        U R                  U R                  S5      S5        g )Ns   N.s   .Ts   .Fs   I01
.s   I00
.)assertIsNoner<  r-  r4   s    r   test_constants$AbstractUnpickleTests.test_constants  su    $**U+,djj*D1djj*E2djj+T2djj+U3r   c                 H    U R                  SSS9nU R                  US5        g )Ns   U q .zkoi8-rr   )r<  r,  )r/   emptys     r   test_empty_bytestring+AbstractUnpickleTests.test_empty_bytestring  s%    

1H
E#r   c                 J    SnU R                  U R                  U5      S5        g )Ns	   C€ .   € r  r/   dumpeds     r   test_short_binbytes)AbstractUnpickleTests.test_short_binbytes  s!    2F+-@Ar   c                 J    SnU R                  U R                  U5      S5        g )Ns   B   € .r  r  r  s     r   test_binbytes#AbstractUnpickleTests.test_binbytes   s!    >F+-@Ar   c                 T    SnU R                  [        R                  [        4U5        g )Ns   Bxyzq .rB  r   UnpicklingErrorOverflowErrorr  s     r   test_negative_32b_binbytes0AbstractUnpickleTests.test_negative_32b_binbytes  '     7##V%;%;]$K$*	,r   c                 T    SnU R                  [        R                  [        4U5        g )Ns   Xxyzq .r  r  s     r   test_negative_32b_binunicode2AbstractUnpickleTests.test_negative_32b_binunicode  r  r   c                 J    SnU R                  U R                  U5      S5        g )Ns	   € .   € r  r  s     r   test_short_binunicode+AbstractUnpickleTests.test_short_binunicode  s     5F+\:r   c                 
   U R                  [        R                  S5        U R                  [        R                  S5        U R                  [        R                  S5        U R                  SS/U R	                  S5      5        g )Ns   g0
p0s   jens:s   hens:)d   s   ((Kdtp0
h l.)))rB  r   r  r5  r<  r4   s    r   test_misc_get#AbstractUnpickleTests.test_misc_get  sf    ##F$:$:IF##F$:$:HE##F$:$:HEVV, JJ'<=	?r   c                 J    SnU R                  U R                  U5      S5        g )Ns          € .r  r  r  s     r   test_binbytes8$AbstractUnpickleTests.test_binbytes8  s!    AF+-@Ar   c                 J    SnU R                  U R                  U5      S5        g )Ns          € .r  r  r  s     r   test_binunicode8&AbstractUnpickleTests.test_binunicode8!  s     AF+\:r   c                 \    SnU R                  U R                  U5      [        S5      5        g )Ns          xxx.s   xxx)r,  r<  	bytearrayr  s     r   test_bytearray8%AbstractUnpickleTests.test_bytearray8%  s%    DF+Yv->?r   c                 T    SnU R                  [        R                  [        4U5        g )Ns         € .r  r  s     r   test_large_32b_binbytes8.AbstractUnpickleTests.test_large_32b_binbytes8)  %    A##V%;%;]$K$*	,r   c                 T    SnU R                  [        R                  [        4U5        g )Ns         € .r  r  s     r   test_large_32b_bytearray8/AbstractUnpickleTests.test_large_32b_bytearray8/  r  r   c                 T    SnU R                  [        R                  [        4U5        g )Ns         € .r  r  s     r   test_large_32b_binunicode80AbstractUnpickleTests.test_large_32b_binunicode85  r  r   c                     SnU R                  [        R                  U5         U R                  S5        S S S 5        g ! , (       d  f       g = f)Nz(BINSTRING pickle has negative byte counts   T   )assertRaisesRegexr   r  r<  )r/   errmsgs     r   test_large_binstring*AbstractUnpickleTests.test_large_binstring;  s6    ;##F$:$:FCJJ~& DCCs	   >
Ac                     SnU R                  U5      nU R                  U/ 4S-  5        U R                  US   US   5        g )Ns   ((lp100000
g100000
t.r  r   r   r<  r,  r-  r/   pickled	unpickleds      r   test_getAbstractUnpickleTests.test_get@  sA    ,JJw'	RE!G,ilIaL1r   c                     SnU R                  U5      nU R                  U/ 4S-  5        U R                  US   US   5        g )Ns   (]qht.r  r   r   r  r  s      r   test_binget!AbstractUnpickleTests.test_bingetF  sA    #JJw'	RE!G,ilIaL1r   c                     SnU R                  U5      nU R                  U/ 4S-  5        U R                  US   US   5        g )Ns   (]r   j   t.r  r   r   r  r  s      r   test_long_binget&AbstractUnpickleTests.test_long_bingetL  sA    ;JJw'	RE!G,ilIaL1r   c                     SnU R                  U5      nU R                  U/ 4S-  5        U R                  US   US   5        g )Ns   ((l2t.r  r   r   r  r  s      r   test_dupAbstractUnpickleTests.test_dupR  sA    JJw'	RE!G,ilIaL1r   c                 4    SnU R                  [        U5        g )Ns   Va
p-1
.rB  ri  r  s     r   test_negative_put'AbstractUnpickleTests.test_negative_putX  s    ##J7r   c                 4    SnU R                  [        U5        g )Ns   X   ar.r  r  s     r   test_negative_32b_binput.AbstractUnpickleTests.test_negative_32b_binput]  s     A##J7r   c                 0    U R                  [        S5        g )Ns   S'\'
.r  r4   s    r   test_badly_escaped_string/AbstractUnpickleTests.test_badly_escaped_stringc  s    ##J<r   c                 ^    / SQnU H#  nU R                  [        R                  U5        M%     g )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.)rB  r   r  r/   
badpicklesps      r   test_badly_quoted_string.AbstractUnpickleTests.test_badly_quoted_stringf  s+    
 A''(>(>B r   c                 d    / SQnU H&  u  p#U R                  U R                  U5      U5        M(     g )N))s   S''
.r  )s   S""
.r  )s   S"\n"
.
)s   S'\n'
.r  r  )r/   goodpicklesr  expecteds       r   test_correctly_quoted_string2AbstractUnpickleTests.test_correctly_quoted_stringx  s/    - 'KATZZ]H5 'r   c                 J    SnU R                  U R                  U5      S5        g )Ns          I42
.*   r  )r/   r  s     r   test_frame_readline)AbstractUnpickleTests.test_frame_readline  s"    G
 	G,b1r   c                 <   SnU R                  U5      nU R                  [        U5      [        5        U R	                  U[        SS5      5        U R	                  [        U5      / SQ5        SnU R                  U R                  U5      [        R                  5        SnU R                  U R                  U5      [        R                  5        S HV  nSU-   S	-   nU R                  U5      nU R                  [        U5      [        5        U R	                  [        U5      S
5        MX     S Hm  nSU-   S-   nU R                  U5      nU R                  [        U5      [        R                  5        U R	                  U[        R                  " SS05      5        Mo     g )Ns   c__builtin__
xrange
KKKR.r      )r   r        r      s   c__builtin__
reduce
.s   cwhichdb
whichdb
.)s	   Exceptionrq  s   cexceptions
s	   
UughR.ugh)s   UserDicts   IterableUserDicts   (cUserDict
s   
o}Udata}KKssb.r  )r<  r-  r   rv  r,  r  	functoolsreducedbmwhichdbr{  r   collectionsUserDict)r/   r  r  r   s       r   test_compat_unpickle*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                    U R                  U R                  S5      [        5        U R                  U R                  S5      [        R                  5        U R                  U R                  S5      [
        R                  R                  5        U R                  U R                  S5      [        R                  5        [        R                  " [        R                  S[        R                  " SS95         U R                  U R                  S5      S5        S S S 5        U R!                  ["        U R                  S	5        U R!                  ["        U R                  S
5        U R!                  U R$                  U R                  S5        U R!                  U R$                  U R                  S5        U R!                  U R$                  U R                  S5        g ! , (       d  f       N= f)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_errorsr4   s    r   test_load_global&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   5"G
G%c                    U R                  U R                  S5      [        5        U R                  U R                  S5      [        R                  5        U R                  U R                  S5      [
        R                  R                  5        U R                  U R                  S5      [        R                  5        [        R                  " [        R                  S[        R                  " SS95         U R                  U R                  S5      S5        S S S 5        U R!                  ["        U R                  S	5        U R!                  ["        U R                  S
5        U R!                  [$        U R                  S5        U R!                  [&        U R                  S5        U R!                  [&        U R                  S5        U R!                  [(        R*                  U R                  S5        U R!                  [(        R*                  U R                  S5        U R!                  [(        R*                  U R                  S5        g ! , (       d  f       GN6= f)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  ri  AttributeErrorr   r  r4   s    r   test_load_stack_global,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   5"I
Ic                 	   U R                  [        R                  " 5       5      nU R                  [        R                  " 5       SS9nU R                  [        R                  " S5      5      nUR                  5         U R	                  UR                  SS5      [        5        U R                  [        UR
                  SS5        U R	                  UR                  SS5      [        5        U R	                  UR                  SS5      [        5        U R	                  UR                  SS5      [        R                  5        U R	                  UR                  S	S
5      [        R                  R                  5        U R	                  UR                  S	S
5      [        R                  R                  5        U R	                  UR                  SS5      [        R                  5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        UR
                  SS5        U R                  [         UR
                  SS5        U R                  ["        UR
                  S S5        U R                  ["        UR
                  SS 5        U R                  ["        [        4UR
                  SS 5        g ! , (       d  f       GN@= f! , (       d  f       GN"= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNn= f! , (       d  f       GNP= f)NF)fix_importss   N.__builtin__r   builtinsr  r  zos.pathr  z	str.upperspamzlog.spamzlog.<locals>.spamr  )	unpicklerr9   rJ   loadr-  
find_classr   r;  ModuleNotFoundErrorr  r  r  r  r  r  r!  ri  	TypeError)r/   r)  unpickler_nofix
unpickler4s       r   test_find_class%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<:R*R R2
S:S
Q
Q'*
Q9<
R
R 
R/2
S
S
S%c                   ^  U 4S jnT R                  U" S5      S5        T R                  U" S5      S5        U 4S jnT R                  U" S5      S5        T R                  U" S5      S5        U 4S jnT R                  U" S5      S5        T R                  U" S5      S5        U 4S jnT R                  U" S5      S5        T R                  U" S5      S5        g )Nc                    >  " S STR                   5      nU" [        R                  " U 5      5      R                  5       $ )Nc                       \ rS rSrS rSrg)NAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickleri  c                     X4$ r$   r%   )r/   module_nameglobal_names      r   r+  YAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.Unpickler.find_class  s    '55r   r%   N)rA   rB   rC   rD   r+  rE   r%   r   r   	Unpicklerr5    s    6r   r:  r)  r9   rJ   r*  r8  r:  r/   s     r   r<  ;AbstractUnpickleTests.test_custom_find_class.<locals>.loads  s2    6DNN 6 RZZ-.3355r   r  )r  r  r   c                    >  " S STR                   5      nU" [        R                  " U 5      5      R                  5       $ )Nc                   $    \ rS rSr\S 5       rSrg)r5  i  c                     X4$ r$   r%   r7  r8  s     r   r+  r9        '55r   r%   N)rA   rB   rC   rD   staticmethodr+  rE   r%   r   r   r:  r5    s    6 6r   r:  r;  r<  s     r   r<  r=    2    6DNN 6 RZZ-.3355r   c                    >  " S STR                   5      nU" [        R                  " U 5      5      R                  5       $ )Nc                   $    \ rS rSr\S 5       rSrg)r5  i  c                     X4$ r$   r%   )r   r7  r8  s      r   r+  r9    rB  r   r%   N)rA   rB   rC   rD   r   r+  rE   r%   r   r   r:  r5    s    6 6r   r:  r;  r<  s     r   r<  r=    rD  r   c                    >  " S STR                   5      nS nU" [        R                  " U 5      5      nX#l        UR	                  5       $ )Nc                       \ rS rSrSrg)r5  i  r%   Nr   r%   r   r   r:  r5        r   r:  c                     X4$ r$   r%   rA  s     r   r+  OAbstractUnpickleTests.test_custom_find_class.<locals>.loads.<locals>.find_class  s    #11r   )r)  r9   rJ   r+  r*  )r8  r:  r+  r)  r/   s       r   r<  r=    s>    DNN 2!"**T"23I#- >>##r   )r,  )r/   r<  s   ` r   test_custom_find_class,AbstractUnpickleTests.test_custom_find_class  s    	6 	/0/B>?Q	6 	/0/B>?Q	6 	/0/B>?Q	$ 	/0/B>?Qr   c                 L   U R                  [        S5        U R                  [        S5        U R                  [        S5        U R                  [        S5        U R                  [        S5        U R                  [        S5        U R                  [        R                  S5        U R                  [        R                  S5        U R                  [        R                  S	5        U R                  [        R                  S
5        U R                  [        R                  S5        g )N   .s   .s    .s   .s      .s   .s    .s     .s       .s      .s   .)rB  ri  r   r  r4   s    r   test_bad_ext_code'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                 
  ^ ^ SmUU 4S jnU" S [         5        U" S[         5        U" [        4[        [         45        U" [        SS4[        [         45        U" [        S 4[        [         45        U" S[        [         45        g )Nr   c                    > [         R                  " [        R                  TU 5         TR	                  U5         TR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NrP  )r   r  rX   rY   r;  r<  )ro  rA  r   r/   s     r   checkCAbstractUnpickleTests.test_bad_ext_inverted_registry.<locals>.check+  sT    ""7#=#=tSI&&s+JJ|, , JI++ JIs"   A.AA.
A+	'A..
A<r%   MyListr'   )NrW  )ri  rA   r-  )r/   rU  r   s   ` @r   test_bad_ext_inverted_registry4AbstractUnpickleTests.test_bad_ext_inverted_registry(  sn    	- 	dJb*xkIz23x3')Z)@AxJ 78J 78r   c                     U R                  U R                  S5      S5        U R                  [        S5        U R                  [        S5        g )Ns   cbuiltins
int
)R.r   s   N)R.s   cbuiltins
int
NR.)r,  r<  rB  r-  r4   s    r   test_bad_reduce%AbstractUnpickleTests.test_bad_reduce6  s=    $:;Q?##Iw7##I/EFr   c                     [         R                  [        4nU R                  U R	                  S5      S5        U R                  US5        U R                  US5        g )Ns   cbuiltins
int
).r   s   cbuiltins
len
).s   cbuiltins
int
N.r   r  r-  r,  r<  rB  r/   errors     r   test_bad_newobj%AbstractUnpickleTests.test_bad_newobj;  sN    ''3$=>B##E+DE##E+DEr   c                     [         R                  [        4nU R                  U R	                  S5      S5        U R                  US5        U R                  US5        U R                  US5        g )Ns   cbuiltins
int
)}.r   s   cbuiltins
len
)}.s   cbuiltins
int
N}.s   cbuiltins
int
)N.r^  r_  s     r   test_bad_newobj_ex(AbstractUnpickleTests.test_bad_newobj_exA  s_    ''3$>?C##E+EF##E+EF##E+EFr   c                    [        5       nS Ul        SnU R                  U R                  US-   5      U5        U R                  U R                  US-   5      U5        U R	                  [
        US-   5        [        R                  [        4nU R	                  X2S-   5        U R	                  X2S-   5        U R	                  X2S-   5        U R	                  [
        US-   5        U R	                  [
        US	-   5        U R	                  X2S
-   5        U R	                  X2S-   5         " S S5      nU[        l
        U R	                  [        US-   5        g )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                       \ rS rSrSrS rSrg)5AbstractUnpickleTests.test_bad_state.<locals>.BadKey1i`  r   c                 \    U R                   (       d  [        eU =R                   S-  sl         gNr   r  )countCustomErrorr4   s    r   __hash__>AbstractUnpickleTests.test_bad_state.<locals>.BadKey1.__hash__b  s    zz%%

a
r   r%   N)rA   rB   rC   rD   rk  rm  rE   r%   r   r   BadKey1rh  `  s    Er   ro  s   }c__main__
BadKey1
)Nsb.)rd   r'   r,  r<  rB  r-  r   r  r!  r|   ro  rl  )r/   r!  baser`  ro  s        r   test_bad_state$AbstractUnpickleTests.test_bad_stateH  s+   C%D+E$EFJD+J$JKQO##Iti/?@''8##E*+<=##E*+<=##E,+>?##Itn/DE##Itn/DE##E.+@A##E.+@A	 	 ###K8Y1YZr   c                 V    / SQnU H  nU R                  U R                  U5        M!     g )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
   rB  bad_stack_errorsr  s      r   test_bad_stack$AbstractUnpickleTests.test_bad_stackk  s,    -

\ A''(=(=qA r   c                 V    / SQnU H  nU R                  U R                  U5        M!     g )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_mark#AbstractUnpickleTests.test_bad_mark  s,    "

F A''(=(=qA r   c                     U R                  [        S5        U R                  [        S5        / SQnU H  nU R                  U R                  U5        M!     g )Nr      N)U   Bs   B  s   B   s   B   ab   Cs   Cs   Cab   Fs   F0.0s   F0.00   Gs   G       rg  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)rB  EOFErrorr  r  s      r   test_truncated_data)AbstractUnpickleTests.test_truncated_data  sM    ##Hc2##Hd3X

r A''(=(=qA r   c                 8  ^
^^ [        S5      n[        S5      n[        R                  " [        5        U R	                  [
        R                  [        5        [        R                  R                  S[        5        U R	                  [        R                  R                  [        5        [        [        R                  R                  [        S5      S5       nUR                  UR                  S5      5        S S S 5        [        [        R                  R                  [        S5      S5       nUR                  UR                  S5      5        S S S 5        U R	                  [        S5        U R	                  [        S	5        SS KnS
m/ m["        R$                  " S5      m
U
UU4S jn["        R&                  " US9n["        R&                  " US9nUR)                  5         UR)                  5         T
R+                  5         UR,                  R+                  5         UR                  5         UR                  5         SSKJn  U R3                  T V	s/ s H  n	[5        U	5      PM     sn	U/S-  5        g ! , (       d  f       GN= f! , (       d  f       GN<= fs  sn	f )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                  p   > T R                  5         TR                  [        R                  " T5      5        g r$   )waitr   r   r<  )barrierpickle_bytesresultss   r   t:AbstractUnpickleTests.test_unpickle_module_race.<locals>.tI  s#     LLNNN6<<56r   )target)ToBeUnpickledr  )r   r  mkdirr   
addCleanupshutilrmtreer  r  insertremoveopenr  rO   r]  r   r  	threadingBarrierThreadr  r  r  r  r  r,  r   )r/   locker_modulelocking_import_modulefr  r  t1t2r  r'   r  r  r  s             @@@r   test_unpickle_module_race/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   !I3/!JJ3
J
Jr%   r$   )BrA   rB   rC   rD   r&  rE  r5  rB  rG  rL  rP  rT  rX  rd  rl  r  r  r  r  r  r  r  r  requires_32br  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r"  r0  rM  rQ  r   cpython_onlyrX  r[  ra  rd  rq  r  r  r  r   reap_threadsrequires_working_threadingr  rE   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29! 3 #9!r   r(  c                   >   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(\)S' 5       r*S( r+S) r,S* r-S+ r.\/R`                  S, 5       r1S-r2g.)/AbstractPicklingErrorTestsia  c           	      |   [        [        S/5      n[         HT  nU R                  US9   U R	                  [
        R                  5         U R                  X5        S S S 5        S S S 5        MV     [        [        45      n[         HT  nU R                  US9   U R	                  [
        R                  5         U R                  X5        S S S 5        S S S 5        MV     [        [        SS S S S S 45      n[         HT  nU R                  US9   U R	                  [
        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       GM\  = f! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       Nc= f! , (       d  f       M  = fNr%   protoREXr?  	protocolsr:  r;  r   PicklingErrordumpsr/   r   r  s      r   test_bad_reduce_result1AbstractPicklingErrorTests.test_bad_reduce_resultd  s=   5"+EE*&&v';';<JJs* = +* 
 5(mEE*&&v';';<JJs* = +* 
 5"dD$d;<EE*&&v';';<JJs* = +*  =< +* =< +* =< +*sk    E$
EE$ F8E7
F F,,F>F,
E!E$$
E4	7
FF
F	
F)%F,,
F;	c                    [        S5      n[         HT  nU R                  US9   U R                  [        R
                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       My  = f)N)r  r%   r  )r  r  r:  r;  r   r  r  r  s      r   test_bad_reconstructor1AbstractPicklingErrorTests.test_bad_reconstructorw  s`    (mEE*&&v';';<JJs* = +* << +*s#    A<A+A<+
A95A<<
B	c                    [        [        5       S45      n[         HJ  nU R                  US9   U R	                  [
        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  )r  UnpickleableCallabler  r:  r;  rl  r  r  s      r   test_unpickleable_reconstructor:AbstractPicklingErrorTests.test_unpickleable_reconstructor~  sd    ')2./EE*&&{3JJs* 4 +* 33 +*s#   A<A+A<+
A95A<<
B	c                 (   [        [        / 45      n[         HT  nU R                  US9   U R	                  [
        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       My  = fNr  r  r  s      r   test_bad_reconstructor_args6AbstractPicklingErrorTests.test_bad_reconstructor_args  se    5"+EE*&&v';';<JJs* = +* << +*s#    B
A1B1
A?;B
B	c                 "   [        [        SS[        445      n[         HJ  nU R	                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fNr   r  r  r  r?  UNPICKLEABLEr  r:  r;  rl  r  r  s      r   $test_unpickleable_reconstructor_args?AbstractPicklingErrorTests.test_unpickleable_reconstructor_args  sg    51a./0EE*&&{3JJs* 4 +* 33 +*s#   A?A.A?.
A<8A??
B	c                    [        [        R                  S45      n[        SS   HZ  nU R	                  US9   U R                  [        [        R                  45       nU R                  X5        S S S 5        S S S 5        M\     [        [        R                  [         /45      n[        SS   HZ  nU R	                  US9   U R                  [        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     g ! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       N?= f! , (       d  f       M  = fNr%   r  r  )
r  rX   
__newobj__r  r:  r;  
IndexErrorr   r  r  )r/   r   r  cms       r   test_bad_newobj_args/AbstractPicklingErrorTests.test_bad_newobj_args  s    7%%r*+qr]EE*&&
F4H4H'IJbJJs* K +* #
 7%%u-.qr]EE*&&
F4H4H'IJJJs* K +* #	 KJ +* KJ +*sG   &DD/D>&E $D/6E 
DD
D,	/
D=9E  
E	c                 T   [        [        R                  [        5       445      n[        SS   HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       My  = fNr  r  )
r  rX   r  NoNewr  r:  r;  r   r  r  r  s      r   test_bad_newobj_class0AbstractPicklingErrorTests.test_bad_newobj_class  sv    7%%z23qr]EE*&&v';';<JJs* = +* #<< +*s$     B B2B
BB
B'	c                 L   [        [        R                  [        445      n[        SS   HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       My  = fr  )
r  rX   r  r   r  r:  r;  r   r  r  r  s      r   test_wrong_newobj_class2AbstractPicklingErrorTests.test_wrong_newobj_class  st    7%%v./qr]EE*&&v';';<JJs* = +* #<< +*s#    BB.B
BB
B#	c                 b    " S S[         5      nU" [        R                  U445      n[         HZ  nU R	                  US9   U R                  [        R                  [        45         U R                  X#5        S S S 5        S S S 5        M\     g ! , (       d  f       N= f! , (       d  f       M  = f)Nc                       \ rS rSrSrg)KAbstractPicklingErrorTests.test_unpickleable_newobj_class.<locals>.LocalREXi  r%   Nr   r%   r   r   LocalREXr        Tr   r  r  )
r  rX   r  r  r:  r;  r   r  r!  r  r/   r  r   r  s       r   test_unpickleable_newobj_class9AbstractPicklingErrorTests.test_unpickleable_newobj_class  s|    !s!**XK89EE*&&(<(<n'MNJJs* O +* NN +*s$   &B'B9B
BB
B.	c                 @   [        [        R                  [         SS[        445      n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  )	r  rX   r  r  r  r:  r;  rl  r  r  s      r   test_unpickleable_newobj_args8AbstractPicklingErrorTests.test_unpickleable_newobj_args  so    7%%Q<'@ABEE*&&{3JJs* 4 +* 33 +*s$    BA=(B=
BB
B	c                    [        [        R                  S45      n[        SS   HZ  nU R	                  US9   U R                  [        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     [        [        R                  S45      n[        SS   HT  nU R	                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     [        [        R                  [         S0 445      nU R                  [        R                  L nU(       a	  [        SS O[        SS   HZ  nU R	                  US9   U R                  [        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     [        [        R                  [         S/ 445      nU(       a	  [        SS O[        SS   HZ  nU R	                  US9   U R                  [        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     g ! , (       d  f       GN= f! , (       d  f       GMK  = f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       GMc  = f! , (       d  f       N= f! , (       d  f       M  = f)Nr%   r  r  r  r   )r  rX   __newobj_ex__r  r:  r;  ri  r   r  r  pickler_Picklerr-  )r/   r   r  is_pys       r   test_bad_newobj_ex_args2AbstractPicklingErrorTests.test_bad_newobj_ex_args  s   7(("-.qr]EE*&&
F4H4H'IJJJs* K +* #
 7(("-.qr]EE*&&v';';<JJs* = +* #
 7((3B-89/',Yq^)AB-?EE*&&	63G3G'HIJJs* J +* @
 7((3B-89',Yq^)AB-?EE*&&	63G3G'HIJJs* J +* @# KJ +* =< +* JI +* JI +*s   &I I/I 9 JI3+J(&J)J J)&K'J<9K
II  
I0	3
J=J
J	
J&"J))
J9	<
K
K
K	c                 X   [        [        R                  [        5       S0 445      n[        SS   HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       My  = fr  )
r  rX   r  r  r  r:  r;  r   r  r  r  s      r   test_bad_newobj_ex__class4AbstractPicklingErrorTests.test_bad_newobj_ex__class  s{    7((57B*;<=qr]EE*&&v';';<JJs* = +* #<< +*s$    B"B	4B	
BB
B)	c                    U R                   [        R                  La  U R                  S5        [	        [
        R                  [        S0 445      n[        SS   HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       My  = f)Nz*only verified in the Python implementationr%   r  r  )r  r   r  skipTestr  rX   r  r   r  r:  r;  r  r  r  s      r   test_wrong_newobj_ex_class5AbstractPicklingErrorTests.test_wrong_newobj_ex_class  s    <<v.MMFG7((3B-89qr]EE*&&v';';<JJs* = +* #<< +*s$   , CB3C3
C=C
C	c                 f    " S S[         5      nU" [        R                  US0 445      n[         HZ  nU R	                  US9   U R                  [        R                  [        45         U R                  X#5        S S S 5        S S S 5        M\     g ! , (       d  f       N= f! , (       d  f       M  = f)Nc                       \ rS rSrSrg)NAbstractPicklingErrorTests.test_unpickleable_newobj_ex_class.<locals>.LocalREXi  r%   Nr   r%   r   r   r  r    r  r   r  r%   r  )
r  rX   r  r  r:  r;  r   r  r!  r  r  s       r   !test_unpickleable_newobj_ex_class<AbstractPicklingErrorTests.test_unpickleable_newobj_ex_class  s    !s!--"b/ABCEE*&&(<(<n'MNJJs* O +* NN +*s$   &B!)B;B!
BB!!
B0	c                 D   [        [        R                  [         SS[        40 445      n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  	r  rX   r  r  r  r:  r;  rl  r  r  s      r    test_unpickleable_newobj_ex_args;AbstractPicklingErrorTests.test_unpickleable_newobj_ex_args  st    7((3A|0Db*IJKEE*&&{3JJs* 4 +* 33 +*s$   BA?*B?
B	B
B	c                 B   [        [        R                  [         SS[        0445      n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = f)Nr%   r   r  r  r  s      r   "test_unpickleable_newobj_ex_kwargs=AbstractPicklingErrorTests.test_unpickleable_newobj_ex_kwargs  sr    7((3S,4G*HIJEE*&&{3JJs* 4 +* 33 +*s$   BA>)B>
BB
B	c                    [        [        5      n[         HJ  nU R                  US9   U R	                  [
        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  )	REX_stater  r  r:  r;  rl  r  r  s      r   test_unpickleable_state2AbstractPicklingErrorTests.test_unpickleable_state  s[    %EE*&&{3JJs* 4 +* 33 +*s"   A6A%A6%
A3/A66
B	c                    U R                   [        R                  L a  U R                  S5        [	        [
        SSS S S45      n[         HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       My  = f)Nz%only verified in the C implementationr%   stater  r  )r  r   r  r  r  r?  r  r:  r;  r  r  r  s      r   test_bad_state_setter0AbstractPicklingErrorTests.test_bad_state_setter  s    <<6??*MMAB5"gtT267EE*&&v';';<JJs* = +* << +*s$    B4<B#B4#
B1-B44
C	c           	      ,   [        [        SSS S [        5       45      n[         HJ  nU R	                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = f)Nr%   r)  r  )r  r?  r  r  r:  r;  rl  r  r  s      r   test_unpickleable_state_setter9AbstractPicklingErrorTests.test_unpickleable_state_setter  sl    5"gtT3G3IJKEE*&&{3JJs* 4 +* 33 +*#   BA3B3
B=B
B	c                 ,   [        [        S[        S S [        45      n[         HJ  nU R	                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  r  r  s      r   )test_unpickleable_state_with_state_setterDAbstractPicklingErrorTests.test_unpickleable_state_with_state_setter  sh    5"lD$>?EE*&&{3JJs* 4 +* 33 +*r/  c                    [        [        SS S45      n[         HZ  nU R                  US9   U R	                  [
        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     U R                  [        R                  Lax  [        [        SS / 45      n[         HZ  nU R                  US9   U R	                  [
        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     g g ! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       N@= f! , (       d  f       M  = f)Nr%   r  r  )r  r  r  r:  r;  r-  r   r  r  r  r  r  s      r   test_bad_object_list_items5AbstractPicklingErrorTests.test_bad_object_list_items  s     4T2&'EE*&&	63G3G'HIJJs* J +* 
 <<v.tRr*+C"\\\.**Iv7K7K+LM

3. N /. # / JI +* NM /.sG   &DD$D &E&D28E
DD
D/	2
E <E
E	c                    [        SS[        /5      n[         HJ  nU R                  US9   U R	                  [
        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  )REX_sixr  r  r:  r;  rl  r  r  s      r   #test_unpickleable_object_list_items>AbstractPicklingErrorTests.test_unpickleable_object_list_items,  sb    q!\*+EE*&&{3JJs* 4 +* 33 +*s#   A9A(A9(
A62A99
B	c           
         [        [        SS S S45      n[         HZ  nU R                  US9   U R	                  [
        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     [         Hn  n[        [        SS S [        S/5      45      nU R                  US9   U R	                  [        [
        45         U R                  X5        S S S 5        S S S 5        Mp     U R                  [        R                  Lay  [        [        SS S / 45      n[         HZ  nU R                  US9   U R	                  [
        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     g g ! , (       d  f       GN*= f! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       GMO  = f! , (       d  f       Ne= f! , (       d  f       M  = f)Nr%   r  r  r   )r  r   r  r:  r;  r-  r   r  r  iterri  r  r  r  s      r   test_bad_object_dict_items5AbstractPicklingErrorTests.test_bad_object_dict_items3  sv    4T4,-EE*&&	63G3G'HIJJs* J +* 
 EtRtT6(^<=CE*&&
I'>?JJs* @ +*  <<v.tRtR01C"\\\.**Iv7K7K+LM

3. N /. # / JI +* @? +* NM /.sk   &FF%F/F>F-F>:&G" G2G"
FF
F*	-
F;7F>>
G	
GG""
G1	c                    [        S[        05      n[         HJ  nU R                  US9   U R	                  [
        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = f)Nr   r  )	REX_sevenr  r  r:  r;  rl  r  r  s      r   #test_unpickleable_object_dict_items>AbstractPicklingErrorTests.test_unpickleable_object_dict_itemsJ  s`    l+,EE*&&{3JJs* 4 +* 33 +*s#   A8 A'A8'
A51A88
B	c           	      .   SSS[         //n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     S Hj  n/ [        U5      Q[         Pn[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     Ml     g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       NB= f! , (       d  f       M  = f)Nr   r  r  r  r   r     i  r  r  r:  r;  rl  r  rv  r/   r   r  r!   s       r   test_unpickleable_list_items7AbstractPicklingErrorTests.test_unpickleable_list_itemsQ  s    1a&'EE*&&{3JJs* 4 +*  $A+E!H+l+C"\\\.**;7

3. 8 /. # $ 43 +* 87 /.sF   C"CC"D&C4	8D
CC""
C1	4
D>D
Dc                    SSS[         44n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     / [        S5      Q[         P7n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       N>= f! , (       d  f       M  = f)Nr   r  r  r  
   rF  r  s      r   test_unpickleable_tuple_items8AbstractPicklingErrorTests.test_unpickleable_tuple_items^  s    1a&'EE*&&{3JJs* 4 +*  )b	(<(EE*&&{3JJs* 4 +*  43 +* 43 +*sF   CC	CC="C,4C=	
CC
C)	,
C:6C==
D	c           	      T   SS[         00n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     S H~  n[        R                  [        U5      5      n[         US'   [         HJ  nU R                  X#S9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     M     g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       NB= f! , (       d  f       M  = f)Nr   r   r  rD  )r  r!   )	r  r  r:  r;  rl  r  r   fromkeysrv  rG  s       r   test_unpickleable_dict_items7AbstractPicklingErrorTests.test_unpickleable_dict_itemsj  s    S,'(EE*&&{3JJs* 4 +*  $A--a)C#CH"\\\3**;7

3. 8 43 # $ 43 +* 87 43sF   C5C$C5#D9D	D$
C2.C55
D	
DD
D'c                     [         1n[         HJ  nU R                  US9   U R                  [        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  )r  r  r:  r;  rl  r  r  s      r   test_unpickleable_set_items6AbstractPicklingErrorTests.test_unpickleable_set_itemsx  sX    nEE*&&{3JJs* 4 +* 33 +*s"   A.AA.
A+'A..
A=	c                 &   [        [        [        15      15      n[         HJ  nU R                  US9   U R	                  [
        5         U R                  X5        S S S 5        S S S 5        ML     g ! , (       d  f       N= f! , (       d  f       Mo  = fr  )	frozensetr  r  r:  r;  rl  r  r  s      r   !test_unpickleable_frozenset_items<AbstractPicklingErrorTests.test_unpickleable_frozenset_items  se    L>234EE*&&{3JJs* 4 +* 33 +*s#   B	A0B0
A>:B
B	c                 x   [        S5      n[        Ul        [         HT  nU R	                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     SUl        [         HT  nU R	                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     SUl        [         HZ  nU R	                  US9   U R                  [        [        R                  45         U R                  X5        S S S 5        S S S 5        M\     S Ul        [         HT  nU R	                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       GNQ= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GMp  = f! , (       d  f       N= f! , (       d  f       GM/  = f! , (       d  f       N= f! , (       d  f       M  = f)Nr(  r  nonexistingr  )
r  rA   rB   r  r:  r;  r   r  r  ri  r  s      r   test_global_lookup_error3AbstractPicklingErrorTests.test_global_lookup_error  s   &k!EE*&&v';';<JJs* = +* 
 'EE*&&v';';<JJs* = +* 
 EE*&&
F4H4H'IJJJs* K +* 
 EE*&&v';';<JJs* = +* ! =< +* =< +* KJ +* =< +*s    F=F+!F= G"4GG"9&HG51H$ H*HH*+
F:5F==
G	
GG""
G2	5
H?H
H	
H'#H**
H9	c           	         [         S S  H  nU R                  US9   US:  a  SOSn[        U5      n[        Ul        [
        R                  " [        5       X#5         U R                  [        [        R                  45         U R                  X15        S S S 5        S S S 5        S S S 5        M     g ! , (       d  f       N#= f! , (       d  f       N,= f! , (       d  f       M  = f)Nr   r  r  
   nonasciiÿ   nonencodable)r  r:  r  rA   rB   r   r  globalsr;  r}  r   r  r  )r/   r  r   r   s       r   #test_nonencodable_global_name_error>AbstractPicklingErrorTests.test_nonencodable_global_name_error  s    r]EE*).~8L$i!)&&wy$<**,>@T@T+UV

3. W =	 +* # WV =<	 +*s<   A C&CB1	CC1
B?;C
CC
C"	c           	         [         S S  H  nU R                  US9   US:  a  SOSn[        S5      nX#l        [        R
                  " US9n[        R                  " [        R                  X$5         U R                  [        [        R                  45         U R                  X15        S S S 5        S S S 5        S S S 5        M     g ! , (       d  f       N#= f! , (       d  f       N,= f! , (       d  f       M  = f)Nr   r  r  r^  r_  test)rd  )r  r:  r  rB   r  r  r   r  r  r  r;  r}  r   r  r  )r/   r  r   r   mods        r   #test_nonencodable_module_name_error>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(1&CC	)C1C(
CC
C%!C((
C7	c                 V    " S S5      q [        S5      n[        Ul        [         HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     S Ul        [         HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       N>= f! , (       d  f       M  = f)Nc                   (    \ rS rSr " S S5      rSrg)
TestGlobali  c                       \ rS rSrSrg)TestGlobal.Ai  r%   Nr   r%   r   r   Arl    rJ  r   rm  r%   NrA   rB   rC   rD   rm  rE   r%   r   r   rj  rj    s     r   rj  zTestGlobal.A.B.Cr  
rj  r  rA   rB   r  r:  r;  r   r  r  r  s      r   test_nested_lookup_error3AbstractPicklingErrorTests.test_nested_lookup_error  s    	 	 $%!EE*&&v';';<JJs* = +* 
 EE*&&v';';<JJs* = +* 	 =< +* =< +*G    C6C%+C6 D>DD%
C3/C66
D	
DD
D(	c                 V    " S S5      q [        S5      n[        Ul        [         HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     S Ul        [         HT  nU R                  US9   U R                  [        R                  5         U R                  X5        S S S 5        S S S 5        MV     g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       N>= f! , (       d  f       M  = f)Nc                       \ rS rSrSrg)rj  i  r%   Nr   r%   r   r   rj  rj        r   rj  r  ro  r  s      r   test_wrong_object_lookup_error9AbstractPicklingErrorTests.test_wrong_object_lookup_error  s    	 	,!EE*&&v';';<JJs* = +* 
 EE*&&v';';<JJs* = +* 	 =< +* =< +*rr  c                 ^   S n[          HZ  nU R                  US9   U R                  [        [        R
                  45         U R                  X5        S S S 5        S S S 5        M\     U?[          HZ  nU R                  US9   U R                  [        [        R
                  45         U R                  X5        S S S 5        S S S 5        M\     UR                  Ul	        [          HZ  nU R                  US9   U R                  [        [        R
                  45         U R                  X5        S S S 5        S S S 5        M\     g ! , (       d  f       N= f! , (       d  f       GM[  = f! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       Nc= f! , (       d  f       M  = f)Nc                      g r$   r%   r%   r   r   r  =AbstractPicklingErrorTests.test_local_lookup_error.<locals>.f      r   r  )
r  r:  r;  r!  r   r  r  rB   rC   rA   r/   r  r  s      r   test_local_lookup_error2AbstractPicklingErrorTests.test_local_lookup_error  s7   	 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&E9(E(:E97&FF/F
EE
E%	(
E62E99
F		
FF
F,	c                     [        5       nU R                  [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fr$   )REX_Noner;  r-  r  r/   r!  s     r   test_reduce_ex_None.AbstractPicklingErrorTests.test_reduce_ex_None  s.    Jy)JJqM *))	   ;
A	c                     [        5       nU R                  [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fr$   )R_Noner;  r-  r  r  s     r   test_reduce_None+AbstractPicklingErrorTests.test_reduce_None  s.    Hy)JJqM *))r  c                 J   [        5       n[        S5       HC  n[        R                  " S5         U R	                  [
        U R                  X5        S S S 5        ME     [        S[        R                  S-   5       H  nU R                  X5      nM     g ! , (       d  f       M  = f)Nr     r   )	
BadGetattrrv  r   infinite_recursionr;  RuntimeErrorr  r   HIGHEST_PROTOCOL)r/   r'   r  ss       r   test_bad_getattr+AbstractPicklingErrorTests.test_bad_getattr  sz     L1XE++B/!!,

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

1$A ; 0/s   "B
B"	c                    [         R                  " S5      n[        SS5       Hy  nU R                  US9   U R	                  [         R
                  5       nU R                  X5        S S S 5        U R                  [        WR                  5      S5        S S S 5        M{     g ! , (       d  f       N@= f! , (       d  f       M  = f)N   foobarr   r   r  z3PickleBuffer can only be pickled with protocol >= 5)
r   r   rv  r:  r;  PickleErrorr  r,  r   	exception)r/   r  r  r  s       r   test_picklebuffer_error2AbstractPicklingErrorTests.test_picklebuffer_error  s      +1a[EE*&&v'9'9:bJJr) ;  R\\!2IK +* !:: +*s#    B2B!'-B2!
B/+B22
C	c                 b   [         SS   H  nU R                  US9   [        R                  " [	        S5      S S S2   5      nU R                  [        R                  [        45         U R                  X!5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr   r  r  r  )	r  r:  r   r   r   r;  r  BufferErrorr  )r/   r  r  s      r   test_non_continuous_buffer5AbstractPicklingErrorTests.test_non_continuous_buffer  s    qr]EE*((I)>ss)CD&&(<(<k'JKJJr) L +* # LK +*s$   AB'B9B
BB
B.	c                     S n[         R                  " S5      nU R                  [        5         U R	                  USUS9  S S S 5        g ! , (       d  f       g = f)Nc                     [         er$   rl  bufferss    r   buffer_callbackNAbstractPicklingErrorTests.test_buffer_callback_error.<locals>.buffer_callback  s    r   r  r   r  )r   r   r;  rl  r  )r/   r  r  s      r   test_buffer_callback_error5AbstractPicklingErrorTests.test_buffer_callback_error  sC    	  +{+JJr1oJ> ,++s   A


Ac                   ^ ^  " S S5      q UU 4S jn[         H  mU" [        5       /5        U" [        5       [        5       /5        U" [        5       15        U" [        5       [        5       15        U" [        5       S05        U" [        5       S[        5       S05        U" [        5       [        5       S.5        M     g )Nc                       \ rS rSrSrg)Cleareri"  r%   Nr   r%   r   r   r  r  "  ru  r   r  c                    >^   " U 4S jSTR                   5      nU" [        R                  " 5       T5      n UR                  T 5        g ! [         a'  nSnTR                  U[        U5      5         S nAg S nAff = f)Nc                   "   > \ rS rSrU 4S jrSrg)dAbstractPicklingErrorTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickleri&  c                 P   > [        U[        5      (       a  TR                  5         g r$   )r   r  clear)r/   r   
collections     r   persistent_idrAbstractPicklingErrorTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickler.persistent_id'  s    !#w//"((*r   r%   N)rA   rB   rC   rD   r  rE   )r  s   r   EvilPicklerr  &  s       r   r  changed size during iteration)r  r9   rJ   dumpr  assertInr   )r  r  r  er  r  r/   s   `    r   rU  OAbstractPicklingErrorTests.test_evil_pickler_mutating_collection.<locals>.check%  sb     dll  
 ""**,6G0Z( 0:hA//0s   A
 

A;A66A;r   r  r   r  )r  r  )r/   rU  r  s   ` @r   %test_evil_pickler_mutating_collection@AbstractPicklingErrorTests.test_evil_pickler_mutating_collection  s    	 		0 E79+79gi()79+79gi()79a.!79aA./giGI./ r   c                   ^ ^ [         S4mUU 4S jnU" [        5       [        5        U" S [        5        U" S[        [        R
                  45        U" S[        5        U" S[        [        [        R
                  45        U" SS-  [        [        R
                  45        U" SS-  * [        [        R
                  45        g )NrW  c           	        > T[         R                  ;  d   eU [         R                  ;  d   e[        R                  " [         R                  TU 5         [        R                  " [         R                  U T5         [
        SS   H3  nTR                  U5         TR                  [        U5        S S S 5        M5     S S S 5        S S S 5        g ! , (       d  f       MW  = f! , (       d  f       N)= f! , (       d  f       g = fNr  )	rX   _extension_registryrY   r   r  r  r;  r  rW  )r   rA  r  ro  r/   s      r   rU  ;AbstractPicklingErrorTests.test_bad_ext_code.<locals>.check@  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<   'C0;CC	0C<C0
CC
C-	)C00
C>r  r   l        r  rE  )rA   r~  r-  r  r  r`  r  )r/   rU  ro  s   ` @r   rQ  ,AbstractPicklingErrorTests.test_bad_ext_code;  s     "	2 	fh	"dIb<./aelM6<<@Aagv||45q$wh56r   r%   N)3rA   rB   rC   rD   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r*  r-  r1  r4  r8  r=  rA  rH  rL  rP  rS  rW  r[  ra  rf  rp  rv  r}  r  r  r	   r  r  r  r  r  r   r  rQ  rE   r%   r   r   r  r  a  s    +&++++++++++4+++++++++/"+/.+/
+/+++6/	/+&+$)0

 % %K*?08 7 7r   r  c                   
   \ rS rSrSr\R                  rS r\R                  rS r	S r
S r\S4S jrS	 rS
 rS r\S4S jrS rS rS r\S4S jrS rS rS r\S4S jrS rS rS r\S4S jrS rS rS r \S4S jr!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S% r*S& r+S' r,S( r-S) r.S* r/S+ r0S, r1S- r2S. r3S/ r4S0 r5S1 r6S2 r7S3 r8S4 r9S5 r:S6 r;S7 r<S8 r=S9 r>\?" S:S;S<S=5      S> 5       r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISH rJSI rKSJ rLSK rMSL rNSM rOSN rPSO rQSP rRSQ rSSR rTSS rUST rVSU rWSV rXSW rYSX rZSY r[SZ r\S[ r]S\ r^S] r_S^ r`S_ raS` rbSa rcSb rdSc reSd rfSe rgSf rhSg riSh rjSi rkSj rlSk rmSl rnSm roSnrpSorqSp rr\sR                  \sR                  " Sq5      Sr 5       5       rvSs rwSt rx\sR                  Su 5       rySv rzSw r{Sx r|Sy r}Sz r~S{ rS| rS} rS~ rS rS rS r\GR                  " \SL S5      S 5       rS rSrg)AbstractPickleTestsiR  Fc                     g r$   r%   r4   s    r   setUpAbstractPickleTests.setUpY  rr   r   c                    [          H  n[        S5      nU R                  X!5      nU R                  U5      nU R	                  X$5        SnU R                  X!5      nU R                  U5      nU R	                  X$5        [        SU5      nU R                  X!5      nU R                  U5      nU R	                  X$5        M     g )Nr   )r   r%   r   )r  r   r  r<  r5  r   r/   r  r'   r  r%  s        r   	test_miscAbstractPickleTests.test_misc^  s    EaA

1$A

1A%A

1$A

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

1$A

1A% r   c                     U R                   n[         H6  nU R                  X5      nU R                  U5      nU R	                  X5        M8     g r$   )rE  r  r  r<  r5  )r/   r  r  r  rk  s        r   test_roundtrip_equality+AbstractPickleTests.test_roundtrip_equalityr  s>    >>E

8+A**Q-C. r   c                     SSK Jn  SSKJn  S[        4S[
        44 HO  u  p4U R                  U R                  U5      nU" 5       nU" XVS9  UR                  5       nU R                  XG5        MQ     g )Nr   )StringIOdisr   )out)
r9   r  r   r  	DATA0_DIS	DATA1_DISr  rE  rL   r,  )r/   r  r  r  r  r  filelikerk  s           r   dont_test_disassembly)AbstractPickleTests.dont_test_disassembly  s`    # !9~9~=OE

4>>51AzH ##%CX+  >r   r   c                 R   U" 5       nUR                  U5        [        U[        R                  S-   5       Hn  nU R	                  XE5      nU R                  U5      nU R                  Xq5        U" U5      nU R                  [        U5      S5        U R                  US   U5        Mp     g Nr   r   )
r   rv  r   r  r  r<  assertIsInstancer,  lenr-  )	r/   r   aslistminprotocollr  r  r'   r%  s	            r   _test_recursive_list(AbstractPickleTests._test_recursive_list  s    E	;(?(?!(CDE

1$A

1A!!!)q	ASVQ'MM!A$" Er   c                 .    U R                  [        5        g r$   )r  r  r4   s    r   test_recursive_list'AbstractPickleTests.test_recursive_list      !!$'r   c                 ,    U R                  [        SS9  g Nr  )r  )r  rW  r4   s    r   test_recursive_list_subclass0AbstractPickleTests.test_recursive_list_subclass      !!&a!8r   c                 .    U R                  [        S S9  g )Nc                     U R                   $ r$   r  r&   s    r   <lambda>>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>  s    AGGr   r  )r  r7  r4   s    r   test_recursive_list_like,AbstractPickleTests.test_recursive_list_like  s    !!'2C!Dr   c                 d   U" 5       4nUS   R                  U5        [        U[        R                  S-   5       H  nU R	                  XE5      nU R                  U5      nU R                  U[        5        U R                  [        U5      S5        U R                  US   U5        U" US   5      nU R                  [        U5      S5        U R                  US   U5        M     Uu  n[        U[        R                  S-   5       H  nU R	                  XE5      nU R                  U5      nU R                  Xq5        U" U5      nU R                  [        U5      S5        U R                  US   [        5        U R                  [        US   5      S5        U R                  US   S   U5        M     g rW   )r   rv  r   r  r  r<  r  tupler,  r  r-  )	r/   r   r  r  r  r  r  r'   r%  s	            r   _test_recursive_tuple_and_list2AbstractPickleTests._test_recursive_tuple_and_list  sk   UH	!A;(?(?!(CDE

1$A

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

1$A

1A!!!)q	ASVQ'!!!A$.S1Y*MM!A$q'1% Er   c                 .    U R                  [        5        g r$   )r  r  r4   s    r   test_recursive_tuple_and_list1AbstractPickleTests.test_recursive_tuple_and_list      ++D1r   c                 ,    U R                  [        SS9  g r  )r  rW  r4   s    r   &test_recursive_tuple_and_list_subclass:AbstractPickleTests.test_recursive_tuple_and_list_subclass      ++F+Br   c                 .    U R                  [        S S9  g )Nc                     U R                   $ r$   r  r&   s    r   r  HAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>  s    aggr   r  )r  r7  r4   s    r   "test_recursive_tuple_and_list_like6AbstractPickleTests.test_recursive_tuple_and_list_like  s    ++G<M+Nr   c                 V   U" 5       nXDS'   [        U[        R                  S-   5       H}  nU R                  XE5      nU R	                  U5      nU R                  Xq5        U" U5      nU R                  [        UR                  5       5      S/5        U R                  US   U5        M     g Nr   )
rv  r   r  r  r<  r  r,  r  rx  r-  	r/   r   asdictr  dr  r  r'   r%  s	            r   _test_recursive_dict(AbstractPickleTests._test_recursive_dict  s    E!;(?(?!(CDE

1$A

1A!!!)q	AT!&&(^aS1MM!A$" Er   c                 .    U R                  [        5        g r$   )r  r   r4   s    r   test_recursive_dict'AbstractPickleTests.test_recursive_dict  r  r   c                 ,    U R                  [        SS9  g r  )r  MyDictr4   s    r   test_recursive_dict_subclass0AbstractPickleTests.test_recursive_dict_subclass  r  r   c                 .    U R                  [        S S9  g )Nc                     U R                   $ r$   tabler&   s    r   r  >AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>  s    aggr   r  )r  r@  r4   s    r   test_recursive_dict_like,AbstractPickleTests.test_recursive_dict_like  s    !!)4E!Fr   c                 N   U" 5       4nXDS   S'   [        U[        R                  S-   5       H  nU R                  XE5      nU R	                  U5      nU R                  U[        5        U R                  [        U5      S5        U R                  US   U5        U" US   5      nU R                  [        U5      S/5        U R                  US   U5        M     Uu  n[        U[        R                  S-   5       H  nU R                  XE5      nU R	                  U5      nU R                  Xq5        U" U5      nU R                  [        U5      S/5        U R                  US   [        5        U R                  [        US   5      S5        U R                  US   S   U5        M     g rW   )rv  r   r  r  r<  r  r  r,  r  r  r-  	r/   r   r  r  r  r  r  r'   r%  s	            r   _test_recursive_tuple_and_dict2AbstractPickleTests._test_recursive_tuple_and_dict  sk   UH!Q;(?(?!(CDE

1$A

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

1$A

1A!!!)q	AT!Wqc*!!!A$.S1Y*MM!A$q'1% Er   c                 .    U R                  [        5        g r$   )r  r   r4   s    r   test_recursive_tuple_and_dict1AbstractPickleTests.test_recursive_tuple_and_dict  r  r   c                 ,    U R                  [        SS9  g r  )r  r  r4   s    r   &test_recursive_tuple_and_dict_subclass:AbstractPickleTests.test_recursive_tuple_and_dict_subclass  r  r   c                 .    U R                  [        S S9  g )Nc                     U R                   $ r$   r  r&   s    r   r  HAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>  s    r   r  )r  r@  r4   s    r   "test_recursive_tuple_and_dict_like6AbstractPickleTests.test_recursive_tuple_and_dict_like  s    ++I>O+Pr   c                 
   U" 5       nSU[        U5      '   [        U[        R                  S-   5       H  nU R	                  XE5      nU R                  U5      nU R                  Xq5        U" U5      nU R                  [        UR                  5       5      S5        U R                  [        UR                  5       5      S   [         5        U R                  [        UR                  5       5      S   R                  U5        M     g r  )r   rv  r   r  r  r<  r  r,  r  rx  r  r-  r   r  s	            r   _test_recursive_dict_key,AbstractPickleTests._test_recursive_dict_key  s     E!A$;(?(?!(CDE

1$A

1A!!!)q	AS]A.!!$qvvx."3Q7MM$qvvx.+1115 Er   c                 .    U R                  [        5        g r$   )r'  r   r4   s    r   test_recursive_dict_key+AbstractPickleTests.test_recursive_dict_key	  s    %%d+r   c                 ,    U R                  [        SS9  g r  )r'  r  r4   s    r    test_recursive_dict_subclass_key4AbstractPickleTests.test_recursive_dict_subclass_key	  s    %%f!%<r   c                 .    U R                  [        S S9  g )Nc                     U R                   $ r$   r  r&   s    r   r  BAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>	  s    !''r   r  )r'  r@  r4   s    r   test_recursive_dict_like_key0AbstractPickleTests.test_recursive_dict_like_key	  s    %%i8I%Jr   c                 4   U" 5       4nSUS   [        U5      '   [        U[        R                  S-   5       H  nU R	                  XE5      nU R                  U5      nU R                  U[        5        U R                  [        U5      S5        U R                  US   U5        U" US   5      nU R                  [        U5      S5        U R                  [        UR                  5       5      S   [         5        U R                  [        UR                  5       5      S   R                  U5        M     Uu  n[        U[        R                  S-   5       H  nU R	                  XE5      nU R                  U5      nU R                  Xq5        U" U5      nU R                  [        U5      S5        U R                  [        UR                  5       5      S   [         5        U R                  [        UR                  5       5      S   R                  S   U5        M     g r  )r   rv  r   r  r  r<  r  r  r,  r  r  rx  r-  r   r  s	            r   "_test_recursive_tuple_and_dict_key6AbstractPickleTests._test_recursive_tuple_and_dict_key	  s    UH!QqT
;(?(?!(CDE

1$A

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

1$A

1A!!!)q	ASVQ'!!$qvvx."3Q7MM$qvvx.+11!4a8 Er   c                 .    U R                  [        5        g r$   )r5  r   r4   s    r   !test_recursive_tuple_and_dict_key5AbstractPickleTests.test_recursive_tuple_and_dict_key-	  s    //5r   c                 ,    U R                  [        SS9  g r  )r5  r  r4   s    r   *test_recursive_tuple_and_dict_subclass_key>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_key0	  s    //A/Fr   c                 .    U R                  [        S S9  g )Nc                     U R                   $ r$   r  r&   s    r   r  LAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>4	  s    AGGr   r  )r5  r@  r4   s    r   &test_recursive_tuple_and_dict_like_key:AbstractPickleTests.test_recursive_tuple_and_dict_like_key3	  s    //	BS/Tr   c                 h   [        5       nUR                  [        U5      5        [        S[        R
                  S-   5       H  nU R                  X5      nU R                  U5      nU R                  U[         5        U R                  [        U5      S5        U R                  [        U5      S   [        5        U R                  [        U5      S   R                  U5        M     Uu  n[        S[        R
                  S-   5       H  nU R                  X5      nU R                  U5      nU R                  U[        5        U R                  UR                  [         5        U R                  [        UR                  5      S5        U R                  [        UR                  5      S   U5        M     g )Nr   r   r   )rt  addr   rv  r   r  r  r<  r  r,  r  r  r-  r   r/   r%  r  r  r'   s        r   test_recursive_set&AbstractPickleTests.test_recursive_set6	  s>   E	ad1f559:E

1$A

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

1$A

1A!!!Q'!!!''3/S\1-MM$qww-*A. ;r   c                 .   [        5       nXl        [         H{  nU R                  X5      nU R	                  U5      nU R                  U[         5        U R                  [        U5      [        U5      5        U R                  UR                  U5        M}     g r$   )	r~   attrr  r  r<  r  r,  dirr-  )r/   ir  r  r'   s        r   test_recursive_inst'AbstractPickleTests.test_recursive_instL	  sm    HE

1$A

1A!!!V,SVSV,MM!&&!$ r   c                    / nSU0n[        5       nX#l        UR                  U5        [         H  nU R	                  X5      nU R                  U5      nU R                  U[        5        U R                  [        U5      S5        U R                  [        US   5      [        U5      5        U R                  [        US   R                  R                  5       5      S/5        U R                  US   R                  S   U5        M     g r  )r~   rH  r   r  r  r<  r  r  r,  r  rI  rx  r-  )r/   r  r  rJ  r  r  r'   s          r   test_recursive_multi(AbstractPickleTests.test_recursive_multiW	  s    qEH	E

1$A

1A!!!T*SVQ'S1YA/T!A$)).."23aS9MM!A$))A,* r   c                 H   [        5       nU" U/5      Ul        [        UR                  5      n[         H  nU R	                  X$5      nU R                  U5      nU R                  UR                  U5        U R                  [        UR                  5      S5        U R                  [        UR                  5      S   [         5        U R                  [        UR                  5      S   U5        M     UR                  n[         H  nU R	                  X$5      nU R                  U5      nU R                  Xc5        U R                  [        U5      S5        U R                  [        U5      S   [         5        U R                  [        U5      S   R                  U5        M     g r  )r~   rH  r   r  r  r<  r  r,  r  r  r-  )r/   factoryor  r  r  r'   s          r   #_test_recursive_collection_and_inst7AbstractPickleTests._test_recursive_collection_and_instf	  s0    H!LE

1$A

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

1$A

1A!!!'SVQ'!!$q'!*f5MM$q'!*//1- r   c                 .    U R                  [        5        g r$   )rS  r  r4   s    r   test_recursive_list_and_inst0AbstractPickleTests.test_recursive_list_and_inst	  s    006r   c                 .    U R                  [        5        g r$   )rS  r  r4   s    r   test_recursive_tuple_and_inst1AbstractPickleTests.test_recursive_tuple_and_inst	      007r   c                 B    U R                  [        R                  5        g r$   )rS  r   rO  r4   s    r   test_recursive_dict_and_inst0AbstractPickleTests.test_recursive_dict_and_inst	  s    00?r   c                 .    U R                  [        5        g r$   )rS  rt  r4   s    r   test_recursive_set_and_inst/AbstractPickleTests.test_recursive_set_and_inst	  s    005r   c                 .    U R                  [        5        g r$   )rS  rV  r4   s    r   !test_recursive_frozenset_and_inst5AbstractPickleTests.test_recursive_frozenset_and_inst	  s    00;r   c                 .    U R                  [        5        g r$   )rS  rW  r4   s    r   %test_recursive_list_subclass_and_inst9AbstractPickleTests.test_recursive_list_subclass_and_inst	  s    008r   c                 .    U R                  [        5        g r$   )rS  MyTupler4   s    r   &test_recursive_tuple_subclass_and_inst:AbstractPickleTests.test_recursive_tuple_subclass_and_inst	  s    009r   c                 B    U R                  [        R                  5        g r$   )rS  r  rO  r4   s    r   %test_recursive_dict_subclass_and_inst9AbstractPickleTests.test_recursive_dict_subclass_and_inst	  s    00Ar   c                 .    U R                  [        5        g r$   )rS  MySetr4   s    r   $test_recursive_set_subclass_and_inst8AbstractPickleTests.test_recursive_set_subclass_and_inst	  r[  r   c                 .    U R                  [        5        g r$   )rS  MyFrozenSetr4   s    r   *test_recursive_frozenset_subclass_and_inst>AbstractPickleTests.test_recursive_frozenset_subclass_and_inst	  s    00=r   c                     [        5       nXl        [         HW  nU R                  X5      nU R	                  U5      nU R                  U[         5        U R                  UR                  U5        MY     g r$   )r%  r)  r  r  r<  r  r-  rD  s        r   test_recursive_inst_state-AbstractPickleTests.test_recursive_inst_state	  sU    KE

1$A

1A!!!Y/MM!''1%	 r   c                    [        5       4nXS   l        [         H  nU R                  X5      nU R	                  U5      nU R                  U[        5        U R                  [        U5      S5        U R                  US   [         5        U R                  US   R                  U5        M     Uu  n[         H  nU R                  X5      nU R	                  U5      nU R                  U[         5        U R                  UR                  [        5        U R                  [        UR                  5      S5        U R                  UR                  S   U5        M     g rW   )
r%  r)  r  r  r<  r  r  r,  r  r-  )r/   r  r  r  r'   s        r   #test_recursive_tuple_and_inst_state7AbstractPickleTests.test_recursive_tuple_and_inst_state	  s   [N!
E

1$A

1A!!!U+SVQ'!!!A$	2MM!A$**a(  E

1$A

1A!!!Y/!!!''51S\1-MM!''!*a( r   c                     / SQn[          H?  nU H6  nU R                  X25      nU R                  U5      nU R                  X55        M8     MA     g )N)r  z<\u>u   <\ሴ>z<
>z<\>u   <\𒍅>u   <>r  r  r<  r5  )r/   endcasesr  ur  u2s         r   test_unicode AbstractPickleTests.test_unicode	  sH      EJJq(ZZ]##A*  r   c                     Sn[          H6  nU R                  X5      nU R                  U5      nU R                  X5        M8     g )Nu   𒍅r~  )r/   r  r  r  r  s        r   test_unicode_high_plane+AbstractPickleTests.test_unicode_high_plane	  s:    E

1$AAB& r   c                     [          HC  nS H:  nU R                  X"4U5      nU R                  U5      u  pEU R                  XE5        M<     ME     g )N)r  xyzzxyz
zx\yzu   x¡yzr  r  r<  r-  )r/   r  r  r  s1s2s         r   test_unicode_memoization,AbstractPickleTests.test_unicode_memoization	  sC    E=JJvu-Ab% > r   c                    [          H  nS H4  nU R                  X!5      nU R                  X R                  U5      5        M6     [	        S5       Vs/ s H  n[        U/5      PM     sn H4  nU R                  X!5      nU R                  X R                  U5      5        M6     [	        S5       Vs/ s H  n[        XD/5      PM     sn H4  nU R                  X!5      nU R                  X R                  U5      5        M6     M     g s  snf s  snf )Nr      xyzs,  xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz   )r  r  r5  r<  rv  r   )r/   r  r  r  rJ  s        r   
test_bytesAbstractPickleTests.test_bytes	  s    E,JJq(##Azz!}5 - +0*5*QeQCj*5JJq(##Azz!}5 6 .33Z8ZeQFmZ8JJq(##Azz!}5 9  6 9s   D/D
c           
      2   [          H  n[        [        4 H  nS H  nU R                  XUSS9   U" U5      nU R	                  XD4U5      nU R                  U5      u  pgU R                  Xg5        U R                  XD4Xg45        S S S 5        U R                  XUSS9   U" U5      U" U5      pU R	                  X4U5      nU R                  X4U R                  U5      5        S S S 5        M     M     M     g ! , (       d  f       Ny= f! , (       d  f       M  = fNr  F)r  
array_typer  independentT)r  r   r   r:  r  r<  r-  r5  )
r/   r  r  r  r   r  r'   r%  b1b2s
             r   test_bytes_memoization*AbstractPickleTests.test_bytes_memoization	  s    E$m4
0AEA[`a&qM JJvu5#zz!}a+++QFQF; b EA[_`!+A
1B JJx7 ++RHdjjmD a` 1 5  ba a`s   AC6	AD	6
D
Dc                 h   [          GH'  nS GH  n[        U5      nU R                  X15      nU R                  U5      nU R	                  XS5        U R                  X55        US::  a=  U R                  SU5        U R                  [        [        R                  U5      5        M  US:X  a=  U R                  SU5        U R                  [        [        R                  U5      5        M  US:X  d  M  U R                  SU5        U R                  [        [        R                  U5      5        GM     GM*     g )Nr  r  s	   bytearrayr   r   )r  r  r  r<  r0  r5  r  
assertTruer   r   GLOBALSTACK_GLOBALassertNotIn
BYTEARRAY8)r/   r  r  r   r  bbs         r   test_bytearray"AbstractPickleTests.test_bytearray	  s    YE,aLJJq(ZZ]  '##A*A:MM,2OO$4V]]A$FGaZMM,2OO$4V5H5H!$LMaZ$$\15OO$4V5F5F$JK - r   c           
         [          GH2  n[        [        4 GH  nS GH  nU R                  XUSS9   U" U5      nU R	                  XD4U5      nU R                  U5      u  pgU R                  Xg5        S S S 5        U R                  XUSS9   U" U5      U" U5      pU R                  X5        U R	                  X4U5      nU R                  U5      u  pU R                  X5        U R                  X5        U R                  X5        U R                  X5        U R                  X5        S S S 5        GM     GM      GM5     g ! , (       d  f       N= f! , (       d  f       GMC  = fr  )	r  r  r   r:  r  r<  r-  r0  r5  )r/   r  r  r  r   r  r  r  b1ab2ab1bb2bs               r   test_bytearray_memoization.AbstractPickleTests.test_bytearray_memoization	
  s/   YE(*;<
0AEA[`a&qM JJvu5!%Ab-	 b EA[_`#-a=*Q-S ((2 JJz59#'::a=((2((2++C5((2++C5 a` 1 =  ba a`s   A D?	BE	?
E
E c                     [          Hi  n[        R                  nU(       d  M  U* U4 H6  nU R                  X15      nU R	                  U5      nU R                  X55        M8     US-	  nU(       a  MM  Mk     g r  )r  r  maxsizer  r<  r5  )r/   r  r!   r  r  n2s         r   	test_intsAbstractPickleTests.test_ints#
  se    EA!"#QH

83AAB''5 !( F ! r   c                    [          H`  nS HW  nSU-  nUS-
  X3S-   4 HA  nXD* 4 H6  nU R                  XQ5      nU R                  U5      nU R                  XW5        M8     MC     MY     Mb     [	        SS5      nX3S-  -  nX3* 4 HV  nU R                  US5      nU R                  U5      nU R                  [        U5      [        5        U R                  XW5        MX     g )N)r      i  i     i  r   deadbeeffeedface   i@B r  )r  r  r<  r5  intr-  r   r,  )	r/   r  nbitsnbasenposr!   r   rk  r  s	            r   	test_longAbstractPickleTests.test_long-
  s    E9U
!!GU!G3D!5[!%A!5"jj0++A3 ) 4 :  &+'!!A

1a A**Q-C MM$s)S)Q$ r   c                     / SQnX Vs/ s H  o"* PM     sn-   n[          H?  nU H6  nU R                  XC5      nU R                  U5      nU R                  XF5        M8     MA     g s  snf )N)g        g       g+ph  gZ*) g_D9g?g      ?gQ	@gm"wp@gWTDgꌠ9Y>)Fr~  )r/   test_valuesr'   r  r   r   rk  s          r   
test_floatAbstractPickleTests.test_floatD
  sf    A!$=AR$==E$E1jj(##E/ %  %>s   A$LC_ALLde_DEfr_FRr  c                 N    U R                  U R                  SS5      SS S5        g )Ng333333?r   r  s   F1.)r,  r  r4   s    r   test_float_format%AbstractPickleTests.test_float_formatN
  s&     	C+Aa0&9r   c                     [          HE  n[        5       nU R                  X!5      nU R                  U5      nU R	                  U[
        5        MG     g r$   )r  AAAr  r<  r,  REDUCE_Ar/   r  instr  r  s        r   test_reduceAbstractPickleTests.test_reduceS
  s?    E5DZZ,FZZ'FVX.	 r   c                     [          HB  n[        SS5      nU R                  X!5      nU R                  U5      nU R	                  X$5        MD     g )Nr   r  )r  r   r  r<  r5  r  s        r   test_getinitargs$AbstractPickleTests.test_getinitargsZ
  sA    E1a=DZZ,FZZ'F-	 r   c                     [        5       n[         HK  nU R                  X5      nU R                  U5      nU R	                  UR
                  UR
                  5        MM     g r$   )r   r  r  r<  r,  r   r/   r   r  r  r   s        r   test_metaclass"AbstractPickleTests.test_metaclassa
  sF    OE

1$A

1AQ[[!++6 r   c                 @   [        S[        45      n[        R                  " [        [        R
                  5        [         HZ  nU R                  X5      nU R                  U5      nU R                  X5        U R                  [        U5      [        U5      5        M\     g )Nmy_dynamic_class)r   r~  rX   r   r   r   r  r  r<  r,  r-  r   r  s        r   test_dynamic_class&AbstractPickleTests.test_dynamic_classh
  sp     !3fY?)+=+H+HIE

1$A

1AQ"MM$q'47+	 r   c                    SS K nSS KnUR                  5       n[         H  nU R	                  X45      nU R                  U5      nU R                  X65        UR                  " UR                  5      nU R	                  X45      nU R                  U5      nU R                  X65        [        US5      (       d  M  UR                  " UR                  5      nU R	                  X45      nU R                  U5      nU R                  X65        M     g )Nr   statvfs)timer  	localtimer  r  r<  r5  statcurdirr.  r  )r/   r  r  r  r  r  r  s          r   test_structseq"AbstractPickleTests.test_structseqq
  s    NNE

1$A

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

1$A

1A%r9%%JJryy)JJq(JJqM##A) r   c                     [          H8  nU R                  SU5      nU R                  U5      nU R                  SU5        M:     g N.r  r/   r  r  r  s       r   test_ellipsis!AbstractPickleTests.test_ellipsis
  s7    E

3&A

1AMM#q! r   c                     [          H@  nU R                  [        U5      nU R                  U5      nU R	                  [        U5        MB     g r$   )r  r  r   r<  r-  r  s       r   test_notimplemented'AbstractPickleTests.test_notimplemented
  s7    E

>51A

1AMM.!, r   c                     S S[         /nU HW  n[         HJ  nU R                  [        U5      U5      nU R	                  U5      nU R                  [        U5      U5        ML     MY     g r  )r   r  r  r   r<  r-  )r/   
singletons	singletonr  r  r  s         r   test_singleton_types(AbstractPickleTests.test_singleton_types
  sU    C0
#I"JJtI6JJqMd9oq1 # $r   c                 (   [         R                  R                  5        Hp  n[        U[        5      (       d  M  [        U[        5      (       a  M1  [         H5  nU R                  X5      nU R                  U R                  U5      U5        M7     Mr     g r$   )r'  rg   valuesr   r   
issubclassr=  r  r  r-  r<  r/   r  r  r  s       r   test_builtin_types&AbstractPickleTests.test_builtin_types
  sb    ""))+A!T"":a+G+G&E

1,AMM$**Q-3 ' ,r   c                    [         R                  R                  5        H  n[        U[        5      (       d  M  [        U[        5      (       d  M1  [         H  nU R                  X5      nU R                  U5      nUS::  a6  [        U[        5      (       a!  U[        La  U R                  U[        5        Ma  US::  a-  [        U[        5      (       a  U R                  U[        5        M  U R                  XA5        M     M     g r  )r'  rg   r  r   r   r  r=  r  r  r<  OSErrorBlockingIOErrorr-  ImportError)r/   r  r  r  r  s        r   test_builtin_exceptions+AbstractPickleTests.test_builtin_exceptions
  s    ""))+A!T""z!]'C'C&E

1,A

1AzjG&<&</AYa1!
1k(B(Ba5a+ ' ,r   c                    [         R                  R                  5        Hc  n[        U[        R
                  5      (       d  M$  [         H5  nU R                  X5      nU R                  U R                  U5      U5        M7     Me     g r$   )
r'  rg   r  r   r  BuiltinFunctionTyper  r  r-  r<  r  s       r   test_builtin_functions*AbstractPickleTests.test_builtin_functions
  s\    ""))+A!U6677&E

1,AMM$**Q-3 ' ,r   c                 d   [          H  nU R                  S U5      nUS:  a?  [        R                  [	        U/5      -   nU R                  UR                  U5      5        MZ  U R                  [        [        R                  U5      S5        M     [         S   S-   n[        R                  [        R                  -   n[        R                  [	        U/5      -   U-   n U R                  U5        U R                  S5        g ! [         a%  nU R                  S[        U5      5         S nAg S nAff = f)Nr  r   r  r   z0expected bad protocol number to raise ValueErrorzunsupported pickle protocol)r  r  r   PROTOr   r  
startswithr,  r"   NONEr  r<  failri  r  r   )r/   r  r  proto_headeroob
build_none	badpickleerrs           r   
test_proto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   D   
D/
D**D/c                     Sn[          Hc  nU R                  X5      nU R                  U5      nU R                  X5        U R	                  [        [        R                  U5      US:  5        Me     g )N   UJ^w,3|	 r  )r  r  r<  r5  r,  r   r   LONG1r/   r'   r  r  r%  s        r   
test_long1AbstractPickleTests.test_long1
  sZ    )E

1$A

1A%-fllA>
K	 r   c                     SS-  n[          Hc  nU R                  X5      nU R                  U5      nU R                  X5        U R	                  [        [        R                  U5      US:  5        Me     g )Nr
  r  r  )r  r  r<  r5  r,  r   r   LONG4r  s        r   
test_long4AbstractPickleTests.test_long4
  s_    )e4E

1$A

1A%-fllA>
K	 r   c                    0 S[         R                  _S[         R                  _S[         R                  _S[         R                  _S[         R                  _S[         R                  _S[         R                  _S[         R                  _S	[         R                  _S
[         R                  _S[         R                  _S[         R                  _S[         R                  _S[         R
                  _S[         R                  _S[         R                  _S[         R                  _[         R                  [         R
                  [         R                  S.EnSnSnSnSnSn[         Hv  nX#XEU4 Hj  nU R                  X5      n	U R                  U	5      n
U R                  X5        U[        US5      [        U5      4   nU R                  [        X5      5        Ml     Mx     g )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TUPLE3r  r  r<  r5  minr  r  r   )r/   expected_opcoder   r   r!  r  r  r  r'   r  r%  r  s               r   test_short_tuples%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1]JJq(JJqM##A)*3ua=#a&+@A 0 => # r   c                 b   [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  S.n[
         Hn  nS He  nU R                  X25      nU R                  U5      nU R                  X5L X#XE45        U[        US5      U4   nU R                  [        Xd5      5        Mg     Mp     g )N))r   N)r   N)r  N)r  N)r   T)r   T)r  T)r  T)r   F)r   F)r  F)r  F)NFTr  )r   r   INTNEWTRUENEWFALSEr  r  r<  r  r  r   )r/   r  r  r'   r  r%  r  s          r   test_singletons#AbstractPickleTests.test_singletons   s    &,kk&,kk&,kk&,kk&,jj&,jj&,nn&,nn'-zz'-zz'-'- E&JJq(JJqM1(89*3ua=!+;< 0 => ' r   c                     [        / SQ5      nSUl        SUl        [         H6  nU R	                  X5      nU R                  U5      nU R                  X5        M8     g Nr  r  hello)ri  r  r  r  r  r<  r5  r  s        r   test_newobj_tuple%AbstractPickleTests.test_newobj_tuple  sM    IE

1$A

1A% r   c                     [        / SQ5      nSUl        SUl        [         H6  nU R	                  X5      nU R                  U5      nU R                  X5        M8     g r(  )rW  r  r  r  r  r<  r5  r  s        r   test_newobj_list$AbstractPickleTests.test_newobj_list"  sM    9E

1$A

1A% r   c           
         [          H  n[         H  nUR                  nU" UR                  5      nSUl        U R                  XA5      nU R                  U5      nXX4U[        U5      4nU R                  XF5        U R                  U" U5      U" U5      U5        U R                  UR                  UR                  U5        M     M     g Nr  )r  	myclasses__base__sampler  r  r<  r   r5  r,  rg   )r/   r  rd   Br'   r  r%  details           r   test_newobj_generic'AbstractPickleTests.test_newobj_generic+  s    EJJahhKJJq(JJqMA!T!W5##A)  1qtV4  QZZ@  r   c           
      6   [         S S  n[        [        4 H  nUR                  U5        M     [         H  nU H  nUR
                  nU" UR                  5      nSUl        [        R                  " U5      nU R                  Xs5      nU R                  U5      n	U R                  [        U	5      [        U5      5        X4XVU	[        U	5      4n
U R                  U" U5      U" U	5      U
5        U R                  UR                  U	R                  U
5        M     M     g r0  )r1  MyIntri  r  r  r2  r3  r  weakrefproxyr  r<  r,  r   rg   )r/   classesr!  r  rd   r4  r'   r  r  r%  r5  s              r   test_newobj_proxies'AbstractPickleTests.test_newobj_proxies8  s    A,!ANN1 "EJJahhKMM!$JJq(JJqM  a$q'2A!T!W5  1qtV4  QZZ@  r   c                 2   [          H  n[        S5      nSUl        U R                  X!5      nU R	                  U5      nU R                  [        U5      [        5        U R                  [        U5      S5        U R                  UR                  S5        M     g rj  )	r  MyIntWithNew2r  r  r<  r-  r   r,  r  r  s        r   test_newobj_overridden_new.AbstractPickleTests.test_newobj_overridden_newK  sr    Ea AAE

1$A

1AMM$q'=1SVQ'QUUB' r   c                     [         n[         R                  [         5      nU R                  US5      n Sq U R                  [        [
        R                  4U R                  U5        Uq g ! Uq f = f)Nr   r  )SimpleNewObjr   r  r;  r-  r   r  r<  )r/   saverR  r   s       r   test_newobj_not_class)AbstractPickleTests.test_newobj_not_classV  s_       .JJq!	 Ly&*@*@A4::qQL4Ls   3A) )A-c                    [        U5      n [        R                  " [        SU5        [	        / SQ5      nSUl        SUl        U R                  US5      nU R                  [        R                  S5      U5        U R                  SU5        U R                  [        X%5      5        U R                  U5      nU R                  XF5        U R                  US5      nU R                  [        R                  S5      U5        U R                  SU5        U R                  [        X'5      S	[!        U5      5        U R                  U5      nU R                  XF5        UR#                  5         g ! UR#                  5         f = f)
NrW  r  r  r)  r   r  s   MyListr  T)rT   rX   r_   rA   rW  r  r  r  r  r]  assertFalser   r<  r5  r  r,  reprra   )r/   extcodeopcoder  r'   r  r%  r  s           r   produce_global_ext&AbstractPickleTests.produce_global_extf  s&   7#	!!(Hg>y!AAEAE Aq!BMM(//'2B7MM)R(-f9:

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

2A%IIKAIIKs   EE* *E<c                     U R                  S[        R                  5        U R                  S[        R                  5        g )Nr   r  )rM  r   EXT1r4   s    r   test_global_ext1$AbstractPickleTests.test_global_ext1  s*    
FKK8
FKK8r   c                     U R                  S[        R                  5        U R                  S[        R                  5        U R                  S[        R                  5        g )Nr  r  iͫ  )rM  r   EXT2r4   s    r   test_global_ext2$AbstractPickleTests.test_global_ext2  >    
FKK8
FKK8
FKK8r   c                     U R                  S[        R                  5        U R                  S[        R                  5        U R                  S[        R                  5        g )N   r  iͫ)rM  r   EXT4r4   s    r   test_global_ext4$AbstractPickleTests.test_global_ext4  rW  r   c                 H   Sn[        [        U5      5      n[         Hd  nU R                  X#5      nU R	                  U5      nU R                  X%5        [        [        R                  U5      nU R                  XcS:  5        Mf     Sn[        [        U5      5      n[         H~  nU R                  X#5      nU R	                  U5      nU R                  X%5        [        [        R                  U5      nUS:X  a  U R                  US5        Mj  U R                  US:  5        M     g NrK  r   	  r  )r  rv  r  r  r<  r5  r"   r   APPENDSr,  r  )r/   r!   r'   r  r  r%  num_appendss          r   test_list_chunking&AbstractPickleTests.test_list_chunking  s    qNE

1$A

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

1$A

1A%&v~~q9Kz  a0q 01 r   c                    Sn[         R                  [        U5      5      n[         Hz  nU R	                  X#5      nU R                  U[        5        U R                  U5      nU R                  X%5        [        [        R                  U5      nU R                  XcS:  5        M|     Sn[         R                  [        U5      5      n[         H~  nU R	                  X#5      nU R                  U5      nU R                  X%5        [        [        R                  U5      nUS:X  a  U R                  US5        Mj  U R                  US:  5        M     g r^  )r   rO  rv  r  r  r  r   r<  r5  r"   r   SETITEMSr,  r  )r/   r!   r'   r  r  r%  num_setitemss          r   test_dict_chunking&AbstractPickleTests.test_dict_chunking  s   MM%(#E

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

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

1$A

1A%';Lz  q1 12 r   c                 t   Sn[        [        U5      5      n[         H|  nU R                  X#5      nU R	                  U5      nU R                  X%5        [        [        R                  U5      nUS:  a  U R                  US5        Mj  U R                  US5        M~     Sn[        [        U5      5      n[         H|  nU R                  X#5      nU R	                  U5      nU R                  X%5        [        [        R                  U5      nUS:  a  U R                  US5        Mj  U R                  US5        M~     g )NrK  r   r   r   r_  r  )rt  rv  r  r  r<  r5  r"   r   ADDITEMSr,  assertGreaterEqual)r/   r!   r'   r  r  r%  num_additemss          r   test_set_chunking%AbstractPickleTests.test_set_chunking  s    aME

1$A

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

1$A

1A%';Lqy  q1''a8 r   c                    [         R                  [         S5      nSUl        [         H  nU R	                  US9   U R                  X5      nUS:  a  U R                  SU5        OU R                  SU5        U R                  [        [        R                  U5      SU:*  5        U R                  [        [        R                  U5      5        U R                  U5      nU R                  X5        S S S 5        M     g ! , (       d  f       M  = f)N    r  r      
I64206   Mr  )rD  r   r  r  r:  r  r  r,  r   r   NEWOBJrI  	NEWOBJ_EXr<  r5  r  s        r   test_simple_newobj&AbstractPickleTests.test_simple_newobj  s      v6EE*JJq(19MM+q1MM,2  !1&--!C!"e-  !1&2B2BA!FGJJqM##A) +* **s   B5C<<
D	c                    [         R                  [         S5      nSUl        [         GH  nU R	                  US9   U R                  X5      nUS:  a  U R                  SU5        ODUS:  a  U R                  SU5        O+US:  a  U R                  S	U5        OU R                  S
U5        U R                  [        [        R                  U5      SU:*  5        U R                  [        [        R                  U5      5        U R                  U5      nU R                  X5        S S S 5        GM     g ! , (       d  f       GM  = fNrp  rq  r  r   rr  r  rs  r   s	   X   FACEs   FACE)ComplexNewObjr   r  r  r:  r  r  r,  r   r   rt  rI  ru  r<  r5  r  s        r   test_complex_newobj'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##A) +* **   C'D00
E 	c                    [         R                  [         S5      nSUl        [         GH  nU R	                  US9   U R                  X5      nUS:  a  U R                  SU5        ODUS:  a  U R                  SU5        O+US:  a  U R                  S	U5        OU R                  S
U5        U R                  [        [        R                  U5      5        U R                  [        [        R                  U5      SU:*  5        U R                  U5      nU R                  X5        S S S 5        GM     g ! , (       d  f       GM  = fry  )ComplexNewObjExr   r  r  r:  r  r  rI  r   r   rt  r,  ru  r<  r5  r  s        r   test_complex_newobj_ex*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##A) +* **r}  c                     [        / SQ5      nSUl        SUl        U R                  US5      nU R	                  U5      nU R                  X5        g )Nr  r  r)  r  )SlotListr  r  r  r<  r5  )r/   r'   r  r%  s       r   test_newobj_list_slots*AbstractPickleTests.test_newobj_list_slots  sE    YJJq!JJqMA!r   c                    [          H  n[        5       nU R                  UR                  S5        U R	                  X!5      nU R                  UR                  S5        U R                  U5      nU R                  UR                  S5        M     g rW   )r  REX_oner,  _reduce_calledr  r<  r  s        r   'test_reduce_overrides_default_reduce_ex;AbstractPickleTests.test_reduce_overrides_default_reduce_ex  sp    E	AQ--q1

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

1AQ--q1 r   c                    [          H  n[        5       nU R                  UR                  S 5        U R	                  X!5      nU R                  UR                  U5        U R                  U5      nU R                  UR                  S 5        M     g r$   )r  REX_twor,  _protor  r<  r  s        r   test_reduce_ex_called)AbstractPickleTests.test_reduce_ex_called  sj    E	AQXXt,

1$AQXXu-

1AQXXt, r   c                    [          H  n[        5       nU R                  UR                  S 5        U R	                  X!5      nU R                  UR                  U5        U R                  U5      nU R                  UR                  S 5        M     g r$   )r  	REX_threer,  r  r  r<  r  s        r   test_reduce_ex_overrides_reduce3AbstractPickleTests.test_reduce_ex_overrides_reduce(  sj    EAQXXt,

1$AQXXu-

1AQXXt, r   c                    [          H  n[        5       nU R                  UR                  S 5        U R	                  X!5      nU R                  UR                  U5        U R                  U5      nU R                  UR                  U5        M     g r$   )r  REX_fourr,  r  r  r<  r  s        r   test_reduce_ex_calls_base-AbstractPickleTests.test_reduce_ex_calls_base1  sj    E
AQXXt,

1$AQXXu-

1AQXXu- r   c                    [          H  n[        5       nU R                  UR                  S5        U R	                  X!5      nU R                  UR                  S5        U R                  U5      nU R                  UR                  S5        M     g rW   )r  REX_fiver,  r  r  r<  r  s        r   test_reduce_calls_base*AbstractPickleTests.test_reduce_calls_base:  sp    E
AQ--q1

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

1AQ--q1 r   c                     [        5       nU R                  U5      nU R                  [        5         U R	                  U5        S S S 5        g ! , (       d  f       g = fr$   )C_None_setstater  r;  r-  r<  )r/   r!  r  s      r   test_pickle_setstate_None-AbstractPickleTests.test_pickle_setstate_NoneC  s<    JJqMy)JJqM *))s   A
Ac                 `   S [        S5       5       n[        S U 5       5      n[        U5      [        U5      [        U5      /n[         HN  nU R                  US9   U R	                  X45      nU R                  U5      nU R                  X65        S S S 5        MP     g ! , (       d  f       Mb  = f)Nc              3   >   #    U  H  nS [        U5      -   v   M     g7f)aaaNr   ).0rJ  s     r   	<genexpr>>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>L  s     3
1A
s   r  c              3   ,   #    U  H
  o/ S Q4v   M     g7f))r   r   r  Nr%   )r  ks     r   r  r  M  s     7$Qi.$s   r  )rv  r   r  r:  r  r<  r5  )r/   rx  
large_dictr   r  r  r  s          r   test_many_puts_and_gets+AbstractPickleTests.test_many_puts_and_getsI  s     4c
37$77
Jj!14
3CDEE*C/F+##C0 +* **s   4B
B-	c                 0   [          H  n[        5       nSUl        SUl        U R	                  X!5      nU R                  U5      n[        UR                  5      n[        UR                  5      n[        XV5       H  u  pxU R                  Xx5        M     M     g )Nr  r)  )
r  rd   r  r  r  r<  sortedrg   zipr-  )	r/   r  r'   r  r%  x_keysy_keysx_keyy_keys	            r   test_attribute_name_interning1AbstractPickleTests.test_attribute_name_interningV  sw     EAAEAE

1$A

1AAJJ'FAJJ'F #F 3e+ !4 r   c                     U R                  [        S5      S5      nU R                  U[        5        U R                  [	        S/5      S5      nU R                  U[
        5        g )Nr   r  r  )r  rv  r,  ru  rt  	DATA_SET2r  s     r   test_pickle_to_2x%AbstractPickleTests.test_pickle_to_2xd  sN    
 E!Ha(-CHa(+r   c                     [          Hk  nS[        SS-  [        4nU R                  X!5      nU R	                  U5      nU R                  [        U5      [        U5      5        U R                  XB5        Mm     g )Nr   s   xyi x  )r  r  r  r  r<  r,  )r/   r  r8  r  r  s        r   test_large_pickles&AbstractPickleTests.test_large_picklesn  sc     EsEY/5DZZ,FZZ'FS[#d)4V* r   c           	         [          H  nU R                  US9   [        S5       Vs/ s H  o R                  SU-  U5      PM     nn[	        [        [        U5      5      nU R                  [        U5      U5        US:  a2  U H,  nU R                  [        [        R                  U5      5        M.     S S S 5        M     g s  snf ! , (       d  f       M  = f)Nr  F   r  )r  r:  rv  r  r  mapr  r,  r  rI  r   r   LONG)r/   r  r!   picklessizesr  s         r   test_int_pickling_efficiency0AbstractPickleTests.test_int_pickling_efficiencyx  s    EE*<A"IFIq::adE2IFSg./  6A:$(()9&++q)IJ % +* F +*s   CC A.C C
C	c                     U R                  X5      nU R                  [        X$5      5        U R                  U5      nU R	                  X5        g r$   )r  r  r   r<  r,  )r/   r   rL  r  r  r  s         r   _check_pickling_with_opcode/AbstractPickleTests._check_pickling_with_opcode  s>    **S((9:JJw'	(r   c                     [        / SQ5      n[         HM  nUS:X  a#  U R                  U[        R                  U5        M,  U R                  U[        R
                  U5        MO     g )Nr  r   )r7  r  r  r   APPENDr`  r  s      r   test_appends_on_non_lists-AbstractPickleTests.test_appends_on_non_lists  sI    i Ez00fmmUK00fnneL	 r   c                     [        SSSS.5      n[         HM  nUS:X  a#  U R                  U[        R                  U5        M,  U R                  U[        R
                  U5        MO     g )Nr  r  r   )r@  r  r  r   SETITEMre  r  s      r   test_setitems_on_non_dicts.AbstractPickleTests.test_setitems_on_non_dicts  sP    B2"-.Ez00fnneL00foouM	 r   r   rY  c                    S=p#1 Skn[         R                  " U5       GH  u  pVnUb  U R                  Xr5        Xr:X  a  SnUbR  U R                  UR                  S5        UR                  U;   a%  U R                  [        U5      U R                  5        OrUR                  S:X  d)  UR                  U;   a=  [        U5      U R                  :  a$  Ub   U R                  Xs-
  U R                  5        SnOUc  UR                  S:w  a  UnUR                  S:X  d  M  U R                  X`R                  5        US-   U-   nGM!     [        U5      nUb  U R                  X'5        gUb  U R                  Xs-
  U R                  5        gg)z
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_MINrk  r,  )r/   r  	frame_endframeless_startframeless_opcodesr   rp   poss           r   check_frame_opcodes'AbstractPickleTests.check_frame_opcodes  sg    '+*	:'..w7LBS$$$S4# $I$##BGGW577// ((S43I3IJ GGw&WW 11X 6 66&2(=(,(;(;=*.$,G1C&)Oww'!''-@-@A!GcM	9 8< 'l Y,(OOC143F3FG )r   cpuc                    [        [        S5      5      n[        S[        R                  S-   5       H  nU R	                  US9   U R                  X5      nU R                  U5      nU R                  X5        [        U5      [        [        R                  U5      -  nU R                  UU R                  S-  5        U R                  UU R                  S-  5        U R                  U5        S S S 5        M     g ! , (       d  f       M  = f)Ni r   r   r  r  )r  rv  r   r  r:  r  r<  r,  r  r"   r  assertGreaterr  r  r  )r/   r   r  r  r  bytes_per_frames         r   test_framing_many_objects-AbstractPickleTests.test_framing_many_objects  s     5< 1f559:EE***S0 JJw/	  0#&w<#/g#F$G""?#'#9#9A#=?$$_%)%;%;a%?A((1 +* ;**s   B)C::
D		c                    Sn[        S5       Vs/ s H  o"/PM     nnSU-  /UQSU-  PSU-  Pn[        S[        R                  S-   5       GHL  nS GHA  nU R                  XVS	9   U(       d  U R	                  XE5      nOg[        U S
5      (       d   S S S 5        MI  [        R                  " 5       nU R                  XS9n	Xil	        U	R                  U5        UR                  5       nU R                  U5      n
U R                  U Vs/ s H  n[        U5      PM     snU
 Vs/ s H  n[        U5      PM     sn5        U R                  XJ5        [        [        R                   U5      nU R                  US5        U R#                  U5        S S S 5        GMD     GMO     g s  snf s  snf s  snf ! , (       d  f       GMk  = f)Ni   rK     x   yzr   r   )FT)r  fastr  r   )rv  r   r  r:  r  r.  r9   rJ   r  r  r  rL   r<  r,  r  r"   r  r  )r/   NrJ  small_itemsr   r  r  r  bufr  r  r'   n_framess                r   test_framing_large_objects.AbstractPickleTests.test_framing_large_objects  s   $)"I.IqsI.ax9+9tax9q91f559:E%\\\9 #'**S"8  'tY77$ :9 !jjl"&,,s,"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)7AF.$
F..
F>c           	         [         R                  S:  a  g SS jnU R                  nSn[        [        4 GH  n[        U5       Vs0 s H  oUU" U/5      U-  _M     nn[        S[         R                  S-   5       H  nU R                  Xg5      nU" U5      n	U R                  [        [         R                  U	5      S5        U R                  X`R                  U	5      5        U" US 5      n
U R                  [        [         R                  U
5      [        [         R                  U5      5        U R                  X`R                  U
5      5        M     GM     g s  snf )Nr   c                 "   / nSn[         R                  " U 5       H)  u  pEnUR                  S:X  d  M  UR                  U5        M+     [	        5       nSn[        U5       H%  u  pU(       a  U" U	5      (       a  M  XpX -  nXc-   nM'     XpUS -  nU$ )z+Remove frame opcodes from the given pickle.r  r  r   N)r   r   r   r   r  	enumerate)
r  
keep_frameframe_startsframe_opcode_sizerL  _r  	newpicklelast_frame_endrJ  s
             r   remove_frames?AbstractPickleTests.test_optional_frames.<locals>.remove_frames  s    L !"-"4"4W"=3;;') '', #> "IN#L1*Q--^88	!$!8	 2
 11Ir      r   r   c                     U S-  $ r  r%   )rJ  s    r   r  :AbstractPickleTests.test_optional_frames.<locals>.<lambda>%  s    a!er   r$   )r   r  r  r   r  rv  r  r,  r"   r  r<  r  )r/   r  
frame_size
num_frames
bytes_typerJ  r   r  r  frameless_picklesome_frames_pickles              r   test_optional_frames(AbstractPickleTests.test_optional_frames   s   ""Q&	& ++

 !),J<A*<MN<Mqj!o
22<MCNq&"9"9A"=>**S0#0#9   fll<L!MqQ  jj1A&BC%27O%L"V\\;M N ,V\\7 CE  jj1C&DE ? -Ns   Ec           
          " S S5      n[        S[        R                  S-   5       GH  n[        [        S5      5       Vs/ s H.  n[	        U5      R                  S5      US-  S[	        U5      04PM0     nnUR                  S	U R                  S
-  S-   -  5        U" 5       nU R                  XR5      R                  U5        UR                  5       nU R                  U5      nU R                  Xt5        U R                  [        UR                  5      S5        A[         R"                  " 5         U R                  UR                  5       U5        [        U5      S-
  U R                  -  S-   nU R%                  [        UR                  5      U5        U R'                  [        UR                  5      SU-  S-   5        UR                   V	s/ s H  n	[        U	5      PM     n
n	U
 Vs/ s H  nXR                  :  d  M  UPM     nnU
 Vs/ s H"  nSUs=:  a  U R                  :  d  M  O  M   UPM$     nnU
 Vs/ s H  oS::  d  M
  UPM     nnU H#  nU R)                  USU R                  -  U
5        M%     U R'                  [        U5      [        U5      [        U5      -   S-   U
5        GM     g s  snf s  sn	f s  snf s  snf s  snf )Nc                   *    \ rS rSrSrS rS rS rSrg)YAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatori,  z2Accumulate pickler output in a list of raw chunks.c                     / U l         g r$   chunksr4   s    r   rP   bAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__.  s	     r   c                 :    U R                   R                  U5        g r$   )r  r   )r/   chunks     r   rO   _AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.write0  s    ""5)r   c                 8    SR                  U R                  5      $ )Nr   )r  r  r4   s    r   concatenate_chunkslAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunks2  s    xx,,r   r  N)	rA   rB   rC   rD   rR   rP   rO   r  rE   r%   r   r   ChunkAccumulatorr  ,  s    D!*-r   r  r   r   g     @r[  r  rJ  0123456789abcdefr  r  r  r  )rv  r   r  r  r   r]  r   r  r  r  r  r<  r,  r  r  r  r   
gc_collectrk  r  r  )r/   r  r  rJ  objectswriterr  reconstructedr  r!  chunk_sizesr  large_sizesmedium_sizessmall_sizes
chunk_sizes                   r   +test_framed_write_sizes_with_delayed_writer?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]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#9#99 kK ;'2 >{!!<d&<&<< < {L >&1<k!V1kK< *

A0F0F,F +- *   [!1!$[!1C4E!E!I!,.g ;1H :;><s6   5J2J7(J<?J<K*K.K:	KKc           	          " S S5      q [        [        R                  S-   5       H  n[         R                  [         R                  R
                  [         R                  R
                  R                  4 HL  nU R                  XS9   U R                  U R                  X!5      5      nU R                  X#5        S S S 5        MN     M     g ! , (       d  f       Md  = f)Nc                   (    \ rS rSr " S S5      rSrg)Nestedin  c                   (    \ rS rSr " S S5      rSrg)Nested.Aio  c                   (    \ rS rSr " S S5      rSrg)
Nested.A.Bip  c                       \ rS rSrSrg)Nested.A.B.Ciq  r%   Nr   r%   r   r   rd   r+  q  s    r   rd   r%   N)rA   rB   rC   rD   rd   rE   r%   r   r   r4  r)  p  s     r   r4  r%   N)rA   rB   rC   rD   r4  rE   r%   r   r   rm  r'  o  s     r   rm  r%   Nrn  r%   r   r   r%  r%  n  s     r   r%  r   )r  r   )r%  rv  r   r  rm  r4  rd   r:  r<  r  r-  )r/   r  r   r  s       r   test_nested_names%AbstractPickleTests.test_nested_namesl  s    	 	
 622Q67E&((**fhhjjll;\\\7 $

4::c+A BIMM#1 87 < 877s   	2C
Cc                     " S S5      q [        R                  [         R                     [         l        S[         l        [        [        R                  S-   5       HV  nU R                  US9   U R                  U R                  [         U5      5      nU R                  U[         5        S S S 5        MX     [         ?g ! , (       d  f       Mp  = f)Nc                       \ rS rSrSrg)	Recursivei{  r%   Nr   r%   r   r   r0  r0  {  ru  r   r0  zRecursive.mod.Recursiver   r  )r0  r  r  rB   re  rC   rv  r   r  r:  r<  r  r-  r/   r  r  s      r   test_recursive_nested_names/AbstractPickleTests.test_recursive_nested_namesy  s    	 	I$8$89	!:	622Q67EE* JJtzz)U'CD	i3 +* 8 M +*s   .<B==
C	c                 h    " S S5      q [         [         l        S[         l        [        [        R
                  S-   5       HV  nU R                  US9   U R                  U R                  [         U5      5      nU R                  U[         5        S S S 5        MX     [         ?g ! , (       d  f       Mp  = f)Nc                       \ rS rSrSrg)r0  i  r%   Nr   r%   r   r   r0  r0    ru  r   r0  zRecursive.refr   r  )
r0  refrC   rv  r   r  r:  r<  r  r-  r1  s      r   test_recursive_nested_names20AbstractPickleTests.test_recursive_nested_names2  s    	 	!	!0	622Q67EE* JJtzz)U'CD	i3 +* 8 M +*s   <B""
B1	c           	          " S S5      q [         R                  [         R                  [        5       R                  [         R                  R
                  [         R                  R                  [         R	                  5       R                  4n[         R                  [         4[         R                  R                  [         R                  44n[        [        R                  S-   5       H  nU HW  nU R                  X4S9   U R                  U R                  XC5      5      nU R                  U" 5       U" 5       5        S S S 5        MY     U Hb  u  pFU" 5       nU R                  X4S9   U R                  U R                  XC5      5      nU R                  U" U5      U" U5      5        S S S 5        Md     M     [         R                  S   [         R                  S   4n[        [        R                  S-   5       HE  nU H<  n	U R                  X9S9   U R!                  ["        U R                  X5        S S S 5        M>     MG     g ! , (       d  f       GMc  = f! , (       d  f       GM  = f! , (       d  f       Mz  = f)Nc                   N    \ rS rSr\S 5       r\S 5       rS r " S S5      r	Sr
g)	PyMethodsTesti  c                      g)Ncheeser%   r%   r   r   r=  PyMethodsTest.cheese  s    r   c                     U [         L d   eg)Nwine)r;  r   s    r   r@  PyMethodsTest.wine  s    m+++r   c                 2    [        U [        5      (       d   eg)Nbiscuits)r   r;  r4   s    r   rD  PyMethodsTest.biscuits  s    !$6666!r   c                   >    \ rS rSrSr\S 5       r\S 5       rS r	Sr
g)PyMethodsTest.Nestedi  zNested classc                      g)Nketchupr%   r%   r   r   rI  PyMethodsTest.Nested.ketchup  s    $r   c                 .    U [         R                  L d   eg)Nmaple)r;  r%  rA  s    r   rL  PyMethodsTest.Nested.maple  s    -"6"6666"r   c                 F    [        U [        R                  5      (       d   eg)Npie)r   r;  r%  r4   s    r   rO  PyMethodsTest.Nested.pie  s    %dM,@,@AAAA r   r%   N)rA   rB   rC   rD   rR   rC  rI  r   rL  rO  rE   r%   r   r   r%  rG    s.    % %# #!r   r%  r%   N)rA   rB   rC   rD   rC  r=  r   r@  rD  r%  rE   r%   r   r   r;  r;    s5        "! !r   r;  r   r  methodr=  r@  r  descr)r;  r=  r@  rD  r%  rI  rL  rO  rv  r   r  r:  r<  r  r,  rg   r;  r-  )
r/   
py_methodspy_unbound_methodsr  rR  r  r   r   descriptorsrT  s
             r   test_py_methods#AbstractPickleTests.test_py_methods  s   	! 	!2   O$$  ((  &&  "&&

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

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

4::f+D EI$$VC[)C.A >=  2 8 ""8,""6*
 622Q67E$\\\;%%iUJ <; % 8 >=
 >= <;s$    =I&?I"I'
I
I$'
I6c                     " S S[         5      qSR                  S4[        R                  S4/ SQR                  S4[
        R                  / SQ44SS	1R                  S
4[        R                  SS	1S	44[        R                  S4[        R                  S4[        / SQ5      R                  S
4[        R                  [        / SQ5      S	44[        R                  S5      R                  S4[        R                  R                  [        R                  S5      S444n[        [        R                   S-   5       H^  nU HU  u  p4U R#                  X#S9   U R%                  U R'                  X25      5      nU R)                  U" U6 U" U6 5        S S S 5        MW     M`     [        R*                  S   [        R*                  S   4n[        [        R                   S-   5       HE  nU H<  nU R#                  X'S9   U R-                  [.        U R&                  Xr5        S S S 5        M>     MG     g ! , (       d  f       M  = f! , (       d  f       Mf  = f)Nc                   *    \ rS rSr " S S\5      rSrg)Subclassi  c                       \ rS rSrSrg)Subclass.Nestedi  r%   Nr   r%   r   r   r%  r^    rJ  r   r%  r%   N)rA   rB   rC   rD   r   r%  rE   r%   r   r   r\  r\    s     r   r\  abcd)r!  )r_  r!  r  r%   r   r  )r  ))r   r   )r   r  )s   abcr  )r   r  r  sweet)r  r  rQ  	maketransrO  rS  )r  r\  indexr   __len__r  __contains__rt  r   rO  r  ra  rk  r%  rv  r   r  r:  r<  r  r,  rg   r;  r-  )r/   	c_methodsr  rR  r0   r  rW  rT  s           r   test_c_methods"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 )\\\= $

4::f+D EI$$VT]It4DE >= !* 8 {+MM*%
 622Q67E$\\\;%%iUJ <; % 8 >= <;s   9H)6"H;)
H8;
I
c           
         [        SS5      SS4[        [        S5      SS4[        R                  SS4[
        R                  S	S	4[        5       S
S4[        R                  " 5       SS4[        R                  " 5       SS4[        R                  " 5       SS4/nU H  u  p#n[        S5       H  nU R                  [        U5      US9   U R                  X%5      nU R                  SU< SU< 3R!                  5       U5        U R#                  [        U R%                  U5      5      [        U5      5        S S S 5        M     M     g ! , (       d  f       M  = f)Nr   r  r&  xrange123	itertoolsimapr  r  
exceptionsr{  r  IterableUserDictUserListr  defaultdictr  )r   r  r!  r  )rv  r  r  r  r  r  r  r{  r  r  ro  rp  r:  r   r  r  r]  r-  r<  )r/   testsvalre  r   r  r  s          r   test_compat_pickle&AbstractPickleTests.test_compat_pickle  s   1a[-2e_k62}h7[[)Y/[,4!!#Z1CD!!#Z<$$&}E	
 $NCdq\\tCy\>"jj4GMMT#:"B"B"DgNMM$tzz'':";T#YG ?> " $>>s   A-E
Ec           	   #     #    Sn[        U5      v   [        U5      v   [        be  [        U5      n[        R                  USS9nS[        R                  4 H/  n[        USSUS9v   [        USSS	US
9v   [        USSSUS
9v   M1     g g 7f)N   abcdefghlittle)	byteorderr   r4  )r  )r   r   r
  )r   r  r  )r   r   r   r
  r  )r   r   r   r  r  
from_bytesr  r   )r/   
bytestringr  r   r
  s        r   buffer_like_objects'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                 @   U R                  5        GH  n[        S[        R                  S-   5       GHc  nU R	                  X5      nUR
                  (       a  US:  a  U R                  SU5        U R                  [        [        R                  U5      S5        US:  a  U R                  [        [        R                  U5      UR                  (       a  SOS5        U R                  [        [        R                  U5      UR                  (       a  SOS5        S nU R	                  XUS9nU R                  XS5        U R                  U5      nU R                  Xa5        U R                  [!        U5      [!        U5      5        U R                  Xa5        GMf     GM     g )Nr   r   r   rv  c                     gNTr%   r   s    r   r  AAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback1  s    #r   r  )r{  rv  r   r  r  r   r  r,  r"   NEXT_BUFFERSHORT_BINBYTESr   r  r<  r0  r-  r   )r/   r   r  r8  r  data2r   s          r   test_in_band_buffers(AbstractPickleTests.test_in_band_buffers!  s<   ++-Cq&"9"9A"=>zz#-##
MM+t4  f.@.@$!GKA:$$\&2G2G%N*-,,QA?$$\&2C2CT%J*-,,QA?$ JJs7F ' HE$$U1jj&  *d3ic3  */ ? .r   c           	        ^ U R                  5        GH  n[        SS5       H;  nU R                  [        5         U R	                  X/ R
                  S9  S S S 5        M=     [        S[        R                  S-   5       GH,  n/ mU4S jnU R	                  XUS9nU R                  SU5        U R                  [        [        R                  U5      S5        U R                  [        [        R                  U5      S5        U R                  [        [        R                  U5      S5        U R                  [        [        R                  U5      UR                  (       a  SOS5        UR                   (       a  U R                  [#        TS   5      S5        U R                  [        R$                  5         U R'                  U5        S S S 5        U R'                  UTS9nUR(                  (       a  U R+                  XQ5        O5U R+                  [-        U5      [-        U5      5        U R                  XQ5        U R'                  U[/        T5      S9nUR(                  (       a  U R+                  XQ5        GM  U R+                  [-        U5      [-        U5      5        U R                  XQ5        GM/     GM     g ! , (       d  f       GM  = f! , (       d  f       GN= f)Nr   r   r  r   c                 B   > TR                  U R                  5       5      $ r$   )r   r  )r  r  s    r   r  6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>J  s    W^^BFFH-Er   rv  r  )r{  rv  r;  ri  r  r   r   r  r  r,  r"   r  r  r  READONLY_BUFFERr   r   r   r  r<  r   r-  r   r<  )r/   r   r  r  r8  r   r  s         @r   test_oob_buffers$AbstractPickleTests.test_oob_buffers@  s   ++-Cq!&&z2JJs/1yy  : 32 %
 q&"9"9A"=>"Ezz#2A " 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#+MM$s)T#Y7$$S.jjtG}j=,,MM#+MM$s)T#Y7$$S.A ? . 32$ ?>s   J55K5
K
Kc                 F   [        S5      n[        S[        R                  S-   5       Hu  n/ nUR                  nU R                  XUS9n[        [        U5      nU R                  XSS9nU R                  [        U5      [        U5      5        U R                  Xa5        Mw     g Nr  r   r   r  r  )r   rv  r   r  r   r  r  r  r<  r-  r   r,  )r/   r   r  r  r  r8  r   s          r   %test_oob_buffers_writable_to_readonly9AbstractPickleTests.test_oob_buffers_writable_to_readonlyj  s    I&1f559:EG%nnO::c/:JD)W-G**T*3CMM$s)T#Y/S& ;r   c                    [         R                  " S5      n[        S[         R                  S-   5       H  nU R	                  X/ R
                  S9nU R                  [        5         U R                  U[        5       S9  S S S 5        U R                  [         R                  5         U R                  U/ S9  S S S 5        M     g ! , (       d  f       NK= f! , (       d  f       M  = fr  )r   r   rv  r  r  r   r;  r-  r<  r~  r  )r/   r  r  r8  s       r   test_buffers_error&AbstractPickleTests.test_buffers_errorw  s      +1f559:E::b:CD""9-

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

4
, ;: ; .- ;:s   &C&C
C	
C$	c                     [        S[        R                  S-   5       H$  nU R                  SUS S9nU R	                  US S9nM&     g )Nr   r   r  r  )rv  r   r  r  r<  )r/   r  data_pickledr8  s       r   +test_inband_accept_default_buffers_argument?AbstractPickleTests.test_inband_accept_default_buffers_argument  sD    1f559:E::a:EL::lD:9D ;r   NzTest needs Numpyc                 $  ^ ^^ U 4S jmU 4S jmUUU 4S jn[         R                  " S5      nU" U5        U" US S S2   5        [         R                  " S5      R                  S5      nU" U5        U" UR                  5        U" US S S2   5        g )Nc                    > [         R                  R                  X5        TR                  U R                  R
                  UR                  R
                  5        g r$   )nptestingassert_equalr,  ctypesr8  r'   r%  r/   s     r   check_no_copy=AbstractPickleTests.test_buffers_numpy.<locals>.check_no_copy  s5    JJ##A)QXX]]AHHMM:r   c                    > [         R                  R                  X5        TR                  U R                  R
                  UR                  R
                  5        g r$   )r  r  r  r  r  r8  r  s     r   
check_copy:AbstractPickleTests.test_buffers_numpy.<locals>.check_copy  s5    JJ##A)qxx}}=r   c                 t  > [        S[        R                  S-   5       H-  nTR                  X5      nTR	                  U5      nT" X5        M/     [        S[        R                  S-   5       H/  nS nTR                  XUS9nTR	                  U5      nT" X5        M1     [        S[        R                  S-   5       Hx  n/ nUR
                  nTR                  XUS9nTR	                  X%S9nU R                  R                  (       d  U R                  R                  (       a
  T" X5        Mp  T" X5        Mz     g )Nr   r   r   c                     gr  r%   )r  s    r   r  MAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>  s    Dr   r  r  )	rv  r   r  r  r<  r   r
  r   r   )	arrr  r8  r   r  r  r  r  r/   s	         r   check_array;AbstractPickleTests.test_buffers_numpy.<locals>.check_array  s   q&"9"9A"=>zz#-jj&3$ ? q&"9"9A"=>"0zz#ozNjj&3$	 ? q&"9"9A"=>")..zz#ozNjjj799))SYY-C-C!#+s( ?r   r  r     r  )r  arangereshapeT)r/   r  r  r  r  s   `  @@r   test_buffers_numpy&AbstractPickleTests.test_buffers_numpy  su    	;	>	). iilCC!Hiim##F+CCEEC!Hr   c           	        ^^^	 SSK Jm	   " UUU	4S jS5      q[         H  n[	        S5       Hn  nSm[	        S5       Vs0 s H  n[        5       [        5       _M     snmT H  nX3l        TUl        M     Sm U R                  TU5      nU R                  U5        Mp     M     g s  snf ! [         a(  nSnU R                  U[        U5      5         S nAM  S nAff = f)	Nr   )getrandbitsc                   6   > \ rS rSrU 4S jrS rUU4S jrSrg)Badi  c                    > T$ r$   r%   )r/   ri   ENABLEDs     r   rj   
Bad.__eq__  s    r   c                     gr0  r%   r4   s    r   rm  Bad.__hash__  s    r   c                 L   > T" S5      S:X  a  TR                  5         [        S4$ )Nr  r   r%   )r  r  )r/   r  r  s    r   r   Bad.__reduce__  s%    q>Q&$$&Ry r   r%   N)rA   rB   rC   rD   rj   rm  r   rE   )r  r  r  s   r   r  r    s    ! !r   r  r  FTr  )randomr  r  r  rv  rr  r  r  r<  r  r  r   )
r/   r  r  rr  r8  r  r  r  r  r  s
          @@@r   test_evil_class_mutating_dict1AbstractPickleTests.test_evil_class_mutating_dict  s    &	! 	! E2Y49"I>IqceSUlI>
%C!G%/CN & 4::j%8DJJt$   ? $ 4>HMM(CF334s   B$8#B))
C3CCr%   )rA   rB   rC   rD   	optimizedr(  rE  r  r5  r  r  r  r(   r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r$  r'  r*  r-  r2  r5  r8  r;  r@  rE  rK  rN  rS  rV  rY  r]  r`  rc  rf  rj  rm  rq  ru  rx  r{  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r*  r-  r6  r=  rA  rF  rM  rQ  rU  r[  rb  rg  rm  rv  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   skip_if_pgo_taskrequires_resourcer  r  r  r!  r,  r2  r7  rX  rf  rs  r{  r  r  r  r  r  unittestskipIfr  r  r  rE   r%   r   r   r  r  R  sR    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^ u%2 & 26@(FT ?. ?.B2

8Kt*KXH,4(+>(/T'	-:
 __R4Z!34* 5*X4r   r  c                       \ rS rSr\" \SSS9S 5       r\" \SSS9S 5       r\" \SSS9S 5       r	\" \S	SS9S
 5       r
\" \S	SS9S 5       rSrg)BigmemPickleTestsi  g@F)sizememusedry_runc                 .   SSU-  -  n [          HV  nUS:  a  M  U R                  US9   U R                  [        [        45         U R                  X#S9  S S S 5        S S S 5        MX     S ng ! , (       d  f       N= f! , (       d  f       M}  = f! S nf = f)Nr   r  r  r  r  )r  r:  r;  ri  r  r  )r/   r  r8  r  s       r   test_huge_long_32b$BigmemPickleTests.test_huge_long_32b  s    QX	"19\\\.**J+FG

4
8 H /. # D HG /. Ds:    B A>A-A>B -
A;7A>>
B	B Bg      @c           
         SUS-  -  n [          H  nUS:  a  M  U R                  US9    U R                  X#S9n[        R                  [
        R                  " S[        U5      5      -   nUR                  U5      nU R                  UXF[        U5      -
  U 5        S n S S S 5        M     S ng ! S nf = f! , (       d  f       M  = f! S nf = f)N   abcdr   r  r  r  r  )
r  r:  r  r   r  r  r  r  rb  r,  r/   r  r8  r  r  header
data_starts          r   test_huge_bytes_32b%BigmemPickleTests.test_huge_bytes_32b  s    $!)$	"19\\\.	'"&**T*"B"(//"(++dCI">#?%,]]4%8
(("#s6{$::FH #' /. # D #' /. Ds:    C B6A1B/B6 C /B33B66
C	 C Cc           
      J   SUS-  -  n [          H  nUS:  a  M  U R                  US9   US:X  a>  U R                  [        [        45         U R                  X#S9  S S S 5         S S S 5        M_   U R                  X#S9n[        R                  [        R                  " S[        U5      5      -   nUR                  U5      nU R                  UXF[        U5      -
  U 5        S n S S S 5        M     S ng ! , (       d  f       N= f! S nf = f! , (       d  f       GM  = f! S nf = f)Ns   acbdr   r  r  r  <Q)r  r:  r;  ri  r  r  r   r  r  r  r  rb  r,  r  s          r   test_huge_bytes_64b%BigmemPickleTests.test_huge_bytes_64b  s   $!)$	"19\\\.z "..
M/JK JJtJ< L  /.	'"&**T*"B"("2"2"(++dCI">#?%,]]4%8
(("#s6{$::FH #'! /. #* D LK #'! /.$ DsY    D "DC3	D%
D 0A1D!D$D 3
D=DDD
D		D D"r  c           
      .   SUS-  -  n [          H  nUS:X  a  M  U R                  US9    U R                  X#S9n[        R                  [
        R                  " S[        U5      5      -   nUR                  S5      nU R                  UXF[        U5      -
  U 5        U R                  UR                  S5      [        S5      -   UR                  S5      -
  [        U5      5        S n S S S 5        M     S ng ! S nf = f! , (       d  f       M  = f! S nf = f)Nr_  r   r   r  r  r  r  )r  r:  r  r   r  r  r  r  rb  r,  rindexr  s          r   test_huge_str_32b#BigmemPickleTests.test_huge_str_32b  s   #	"A:\\\.'"&**T*"B"("3"3"(++dCI">#?%,]]7%;
(("#s6{$::FH (('..*ACL*P*1--*@+ACFt9N #' /. #" D #' /. Ds:    D C>B9C7%C>(D 7C;;C>>
D	D Dc           
         SUS-  -  n [          GH%  nUS:X  a  M  U R                  US9   US:  a>  U R                  [        [        45         U R                  X#S9  S S S 5         S S S 5        M`   U R                  X#S9n[        R                  [        R                  " S[        U5      5      -   nUR                  S5      nU R                  UXF[        U5      -
  U 5        U R                  UR                  S5      [        S5      -   UR                  S5      -
  [        U5      5        S n S S S 5        GM(     S ng ! , (       d  f       N= f! S nf = f! , (       d  f       GMU  = f! S nf = f)Nr_  r   r   r  r  r  r  )r  r:  r;  ri  r  r  r   r  r  r  r  rb  r,  r  r  s          r   test_huge_str_64b#BigmemPickleTests.test_huge_str_64b6  sQ   #	"A:\\\.qy!..
M/JK JJtJ< L 	 /.
'"&**T*"B"("4"4"(++dCI">#?%,]]7%;
(("#s6{$::FH (('..*ACL*P*1--*@+ACFt9N #'! /. #* D! LK #'! /.$ DsY   !E( "ED=	E&
E( 1B9E*E-E( =
EEEE
E%		E( (E,r%   N)rA   rB   rC   rD   r   r
   r  r  r   r  r  r  rE   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                   $    \ rS rSrSS jrS rSrg)RiT  Nc                     Xl         g r$   r  )r/   r  s     r   rP   
R.__init__U  s    r   c                     U R                   $ r$   r  r/   r  s     r   r   R.__reduce__W  s    {{r   r  r$   r   r%   r   r   r  r  T  s    r   r  c                   $    \ rS rSrSS jrS rSrg)r  iZ  Nc                     Xl         g r$   	reduce_ex)r/   r  s     r   rP   REX.__init__[  s    "r   c                     U R                   $ r$   r  r  s     r   r   REX.__reduce_ex__]  s    ~~r   r  r$   )rA   rB   rC   rD   rP   r   rE   r%   r   r   r  r  Z  s    #r   r  c                   "    \ rS rSrSrSrS rSrg)r  i`  z4No __reduce_ex__ here, but inheriting it from objectr   c                      SU l         [        S4$ )Nr   r%   )r  r  r4   s    r   r   REX_one.__reduce__c  s    {r   r  NrA   rB   rC   rD   rR   r  r   rE   r%   r   r   r  r  `  s    >Nr   r  c                   "    \ rS rSrSrSrS rSrg)r  ig  z1No __reduce__ here, but inheriting it from objectNc                     Xl         [        S4$ ry   r  r  r  s     r   r   REX_two.__reduce_ex__j      {r   r  rA   rB   rC   rD   rR   r  r   rE   r%   r   r   r  r  g  s    ;Fr   r  c                   $    \ rS rSrSrS rS rSrg)r  in  Nc                     Xl         [        S4$ ry   r  r  s     r   r   REX_three.__reduce_ex__p  r  r   c                     [        S5      e)Nz#This __reduce__ shouldn't be called)r   r4   s    r   r   REX_three.__reduce__s  s    >??r   r  )rA   rB   rC   rD   r  r   r   rE   r%   r   r   r  r  n  s    F@r   r  c                   "    \ rS rSrSrSrS rSrg)r  iv  z(Calling base class method should succeedNc                 8    Xl         [        R                  X5      $ r$   )r  r~  r   r  s     r   r   REX_four.__reduce_ex__y  s    ##D00r   r  r  r%   r   r   r  r  v  s    2F1r   r  c                   "    \ rS rSrSrSrS rSrg)r  i}  z-This one used to fail with infinite recursionr   c                 :    SU l         [        R                  U 5      $ r  )r  r~  r   r4   s    r   r   REX_five.__reduce__  s      &&r   r  Nr  r%   r   r   r  r  }  s    7N'r   r  c                   4    \ rS rSrSrS	S jrS rS rS rSr	g)
r7  i  zUThis class is used to check the 4th argument (list iterator) of
the reduce protocol.
Nc                 &    Ub  Xl         g / U l         g r$   r  )r/   r  s     r   rP   REX_six.__init__      #/U
R
r   c                 n    [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r$   )r   r  rh   s     r   rj   REX_six.__eq__  '    DzT%[(FTZZ5;;-FFr   c                 :    U R                   R                  U5        g r$   )r  r   )r/   items     r   r   REX_six.append  s    

$r   c                 H    [        U 5      SS [        U R                  5      S 4$ ry   )r   r<  r  r4   s    r   r   REX_six.__reduce__  s     Dz2tT$**%5t;;r   r  r$   )
rA   rB   rC   rD   rR   rP   rj   r   r   rE   r%   r   r   r7  r7    s    8G <r   r7  c                   4    \ rS rSrSrS	S jrS rS rS rSr	g)
r@  i  zUThis class is used to check the 5th argument (dict iterator) of
the reduce protocol.
Nc                 &    Ub  Xl         g 0 U l         g r$   r  )r/   r  s     r   rP   REX_seven.__init__  r  r   c                 n    [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r$   )r   r  rh   s     r   rj   REX_seven.__eq__  r	  r   c                      X R                   U'   g r$   r  )r/   ro  r   s      r   __setitem__REX_seven.__setitem__  s    

3r   c                 d    [        U 5      SS S [        U R                  R                  5       5      4$ ry   )r   r<  r  r  r4   s    r   r   REX_seven.__reduce__  s)    Dz2tT4

0@0@0B+CCCr   r  r$   )
rA   rB   rC   rD   rR   rP   rj   r  r   rE   r%   r   r   r@  r@    s    8G Dr   r@  c                   4    \ rS rSrSrS	S jrS rS rS rSr	g)
r%  i  zMThis class is used to check the 3th argument (state) of
the reduce protocol.
Nc                     Xl         g r$   r)  r/   r)  s     r   rP   REX_state.__init__  r   r   c                 n    [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r$   r   r)  rh   s     r   rj   REX_state.__eq__  r	  r   c                     Xl         g r$   r  r  s     r   __setstate__REX_state.__setstate__  r   r   c                 2    [        U 5      SU R                  4$ ry   r  r4   s    r   r   REX_state.__reduce__  s    Dz2tzz))r   r  r$   )
rA   rB   rC   rD   rR   rP   rj   r"  r   rE   r%   r   r   r%  r%    s    G*r   r%  c                       \ rS rSrSrSrSrg)r  i  z*Setting __reduce_ex__ to None should fail Nr%   )rA   rB   rC   rD   rR   r   rE   r%   r   r   r  r    s
    5Mr   r  c                       \ rS rSrSrSrSrg)r  i  z'Setting __reduce__ to None should fail Nr%   )rA   rB   rC   rD   rR   r   rE   r%   r   r   r  r    s
    2Jr   r  c                   "    \ rS rSrSrS rSrSrg)r  i  z)Setting __setstate__ to None should fail c                     gr  r%   r4   s    r   __getstate__C_None_setstate.__getstate__  s    r   Nr%   )rA   rB   rC   rD   rR   r*  r"  rE   r%   r   r   r  r    s    5 Lr   r  c                       \ rS rSrSrg)rl  i  r%   Nr   r%   r   r   rl  rl    r   r   rl  c                       \ rS rSrS rSrg)Unpickleablei  c                     [         er$   r  r4   s    r   r   Unpickleable.__reduce__  s    r   r%   NrA   rB   rC   rD   r   rE   r%   r   r   r.  r.    r   r   r.  c                       \ rS rSrS rSrg)r  i  c                     g r$   r%   r   s      r   __call__UnpickleableCallable.__call__  rr   r   r%   N)rA   rB   rC   rD   r4  rE   r%   r   r   r  r    rt   r   r  c                       \ rS rSrSrSrg)r9  i  r   r%   NrA   rB   rC   rD   r3  rE   r%   r   r   r9  r9    s    Fr   r9  c                       \ rS rSrSrSrg)MyFloati  g      ?r%   Nr7  r%   r   r   r9  r9    s    Fr   r9  c                       \ rS rSrSrSrg)	MyComplexi  y      ?        r%   Nr7  r%   r   r   r;  r;    s    Fr   r;  c                       \ rS rSrSrSrg)MyStri  r)  r%   Nr7  r%   r   r   r=  r=    s    Fr   r=  c                       \ rS rSrSrSrg)	MyUnicodei  u	   hello ሴr%   Nr7  r%   r   r   r?  r?    s    Fr   r?  c                       \ rS rSrSrSrg)ri  i  r  r%   Nr7  r%   r   r   ri  ri    s    Fr   ri  c                       \ rS rSr/ SQrSrg)rW  i  r  r%   Nr7  r%   r   r   rW  rW    s    Fr   rW  c                       \ rS rSrSSS.rSrg)r  i  r   r  r   r%   Nr7  r%   r   r   r  r    s    1Fr   r  c                       \ rS rSrSS1rSrg)rp  i  r   r   r%   Nr7  r%   r   r   rp  rp    s    3ZFr   rp  c                   (    \ rS rSr\" SS15      rSrg)rt  i  r   r   r%   N)rA   rB   rC   rD   rV  r3  rE   r%   r   r   rt  rt    s    Sz"Fr   rt  c                       \ rS rSrS rSrg)MyIntWithNewi  c                     [         er$   )AssertionError)r   r   s     r   r   MyIntWithNew.__new__  s    r   r%   N)rA   rB   rC   rD   r   rE   r%   r   r   rF  rF    s    r   rF  c                   ,    \ rS rSr\R
                  rSrg)r@  i  r%   N)rA   rB   rC   rD   r  r   rE   r%   r   r   r@  r@    s    kkGr   r@  c                       \ rS rSrS/rSrg)r  i  r  r%   N)rA   rB   rC   rD   r+  rE   r%   r   r   r  r    s	    Ir   r  c                        \ rS rSrS rS rSrg)rD  i  c                     [        S5      e)Nz3SimpleNewObj.__init__() didn't expect to get called)r-  r   s      r   rP   SimpleNewObj.__init__  s    MNNr   c                 p    [        U 5      [        U5      :H  =(       a    U R                  UR                  :H  $ r$   )r  rg   rh   s     r   rj   SimpleNewObj.__eq__  s'    4yCJ&J4==ENN+JJr   r%   N)rA   rB   rC   rD   rP   rj   rE   r%   r   r   rD  rD    s    OKr   rD  c                       \ rS rSrS rSrg)rz  i  c                     SU -  S4$ )N%Xr  r%   r4   s    r   __getnewargs__ComplexNewObj.__getnewargs__  s    tR  r   r%   N)rA   rB   rC   rD   rT  rE   r%   r   r   rz  rz    s    !r   rz  c                       \ rS rSrS rSrg)r  i  c                     SU -  4SS04$ )NrS  rp  r  r%   r4   s    r   __getnewargs_ex__!ComplexNewObjEx.__getnewargs_ex__  s    t~|++r   r%   N)rA   rB   rC   rD   rX  rE   r%   r   r   r  r    s    ,r   r  c                       \ rS rSrS rSrg)r  i	  c                     U R                     g r$   )r  )r/   ro  s     r   __getattr__BadGetattr.__getattr__
  s	    r   r%   N)rA   rB   rC   rD   r\  rE   r%   r   r   r  r  	  s    r   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )r  i  c                 :   > US:X  a  [         e[        TU ]	  U5      $ )Nr   )r!  super__getattribute__)r/   r   r   s     r   ra  NoNew.__getattribute__  s!    9  w'--r   r%   )rA   rB   rC   rD   ra  rE   __classcell__)r   s   @r   r  r    s    . .r   r  c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)AbstractPickleModuleTestsi  c                     [        [        S5      n UR                  5         U R                  [        U R
                  SU5        [        R                  " [        5        g ! [        R                  " [        5        f = fNr  {   r  r   closer;  ri  r  r   unlinkr/   r  s     r   test_dump_closed_file/AbstractPickleModuleTests.test_dump_closed_file  Q    	%GGIj$))S!<V$IV$   2A A;c                     [        [        S5      n UR                  5         U R                  [        U R
                  SU5        [        R                  " [        5        g ! [        R                  " [        5        f = frg  ri  rl  s     r   test_load_closed_file/AbstractPickleModuleTests.test_load_closed_file  ro  rp  c                     [         R                  " 5       nS0 S/nU R                  X!5        UR                  S5        U R	                  U5      nU R                  X25        g )Nrh  |   r   )r9   rJ   r  r;   r*  r,  )r/   streamr8  r  s       r   test_load_from_and_dump_to_file9AbstractPickleModuleTests.test_load_from_and_dump_to_file&  sK    R~		$AIIf%	)r   c                 D    U R                  [        R                  S5        g r   )r,  r   r  r4   s    r   test_highest_protocol/AbstractPickleModuleTests.test_highest_protocol.  s    00!4r   c                     [         R                  " 5       nU R                  SUS5        U R                  SUSS9  U R                  SS5        U R                  SSS9  U R	                  US5        U R	                  USS9  g )Nrh  r  )filer   r  )r9   rJ   r  r  Picklerrl  s     r   test_callapi&AbstractPickleModuleTests.test_callapi2  sk    JJL		#q"		#A	+

3

3
$QQ$r   c                 6   [        [        S5      n [         H%  nU R                  [        U R
                  SX5        M'     UR                  5         [        R                  " [        5        g ! UR                  5         [        R                  " [        5        f = f)Nwrh  )	r  r   r  r;  r-  r  rj  r   rk  r|  s      r   test_dump_text_file-AbstractPickleModuleTests.test_dump_text_file<  si    	%"!!)TYYQF # GGIV$ GGIV$s   /A, ,,Bc                     [         R                  " S5      nU R                  [        [        R
                  [        R                  4U R                  U5        g )Ns   X''.)	r9   rJ   r;  r  r  r`  r   r  r*  )r/   r  s     r   test_incomplete_input/AbstractPickleModuleTests.test_incomplete_inputE  s8    JJw8V\\63I3IJDIIWXYr   c                     " S SU R                   5      n " S SU R                  5      nU R                  [        R                  U" 5       R
                  S5        U R                  [        R                  U" 5       R                  5        g )Nc                       \ rS rSrS rSrg);AbstractPickleModuleTests.test_bad_init.<locals>.BadPickleriL  c                     g r$   r%   r4   s    r   rP   DAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__M      r   r%   Nrs   r%   r   r   
BadPicklerr  L      $r   r  c                       \ rS rSrS rSrg)=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickleriO  c                     g r$   r%   r4   s    r   rP   FAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__P  r  r   r%   Nrs   r%   r   r   BadUnpicklerr  O  r  r   r  r   )r~  r:  r;  r   r  r  r  r*  )r/   r  r  s      r   test_bad_init'AbstractPickleModuleTests.test_bad_initI  sb    	% 	%	%4>> 	% 	&..
0A0A1E&00,.2E2EFr   c                   ^^ S m[         S 5       m " S S5      nU R                  [        [        4U R                  U" 5       5         " U4S jS5      nU R                  [        [        4U R                  U" 5       5         " U4S jS5      nU R                  [        [        4U R                  U" 5       5         " UU4S jS5      nU R                  [
        U R                  U" 5       5         " UU4S jS5      nU R                  [
        U R                  U" 5       5         " U4S	 jS5      nU R                  [
        U R                  U" 5       5         " U4S
 jS5      nU R                  [        [
        4U R                  U" 5       5         " UU4S jS5      n U R	                  U" 5       5         " UU4S jS5      n U R	                  U" 5       5        g ! [
         a     N2f = f! [
         a     g f = f)Nc                     [         er$   )r  r   s      r   raises_oserrorIAbstractPickleModuleTests.test_unpickler_bad_file.<locals>.raises_oserrorW  s    Mr   c                     [         er$   r  r4   s    r   bad_propertyGAbstractPickleModuleTests.test_unpickler_bad_file.<locals>.bad_propertyY  s    r   c                       \ rS rSrSrg)<AbstractPickleModuleTests.test_unpickler_bad_file.<locals>.Fi^  r%   Nr   r%   r   r   Fr  ^  ru  r   r  c                      > \ rS rSr Y rSrg)r  ic  r%   NrA   rB   rC   rD   rN   rE   r  s   r   r  r  c  s    %Hr   c                      > \ rS rSr Y rSrg)r  ih  r%   NrA   rB   rC   rD   rM   rE   r  s   r   r  r  h  s    !Dr   c                   "   > \ rS rSr Y r YrSrg)r  im  r%   N)rA   rB   rC   rD   rM   rN   rE   r  r  s   r   r  r  m  s    D%Hr   c                   "   > \ rS rSr Y r YrSrg)r  is  r%   N)rA   rB   rC   rD   rN   rM   rE   r  s   r   r  r  s  s    #H!Dr   c                      > \ rS rSr Y rSrg)r  iy  r%   Nr  r  s   r   r  r  y  s    #Hr   c                      > \ rS rSr Y rSrg)r  i~  r%   Nr  r  s   r   r  r  ~  s    Dr   c                   (   > \ rS rSr Y r Yr YrSrg)r  i  r%   N)rA   rB   rC   rD   r1   rM   rN   rE   r  s   r   r  r    s    D!D%Hr   c                   (   > \ rS rSr Y r Yr YrSrg)r  i  r%   N)rA   rB   rC   rD   readintorM   rN   rE   r  s   r   r  r    s    #H!D%Hr   )r  r;  r!  r-  r:  rl  )r/   r  r  r  s     @@r   test_unpickler_bad_file1AbstractPickleModuleTests.test_unpickler_bad_fileU  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&)
G65G6c                      " S S5      nU R                  [        U R                  U" 5       5         " S S5      nU R                  [        U R                  U" 5       5        g )Nc                       \ rS rSrSrg):AbstractPickleModuleTests.test_pickler_bad_file.<locals>.Fi  r%   Nr   r%   r   r   r  r    ru  r   r  c                   $    \ rS rSr\S 5       rSrg)r  i  c                     [         er$   r  r4   s    r   rO   @AbstractPickleModuleTests.test_pickler_bad_file.<locals>.F.write  s    !!r   r%   N)rA   rB   rC   rD   r  rO   rE   r%   r   r   r  r    s    " "r   )r;  r-  r~  rl  )r/   r  s     r   test_pickler_bad_file/AbstractPickleModuleTests.test_pickler_bad_file  sH    	 	)T\\137	" 	" 	+t||QS9r   c                 D   [        S5      n[        SS5       H2  nU R                  [        5         U" X4/ R                  S9  S S S 5        M4     [        S[
        R                  S-   5       H  n/ nUR                  nU" X4US9nU R                  SU5        U R                  [        US   5      S5        U R                  [
        R                  5         U" U5        S S S 5        U" XuS9nU R                  X5        M     g ! , (       d  f       M  = f! , (       d  f       N<= f)Ns   foor   r   )r   r  r   r  )r   rv  r;  ri  r   r   r  r  r,  r   r  r-  )	r/   r  r<  r   r  r  r  r8  r   s	            r   check_dumps_loads_oob_buffers7AbstractPickleModuleTests.check_dumps_loads_oob_buffers  s     F#1a[E"":.c&(ii1 /. !
 1f559:EG%nnO)8:DVT*U71:.7""6#9#9:d ;.CMM## ; /. ;:s   C?	D?
D	
D	c                 P    U R                  U R                  U R                  5        g r$   )r  r  r<  r4   s    r   test_dumps_loads_oob_buffers6AbstractPickleModuleTests.test_dumps_loads_oob_buffers  s    **4::tzzBr   c                 @   ^  U 4S jnU 4S jnT R                  X5        g )Nc                 t   > [         R                  " 5       nTR                  " X40 UD6  UR                  5       $ r$   )r9   rJ   r  rL   )r   r   r  r/   s      r   r  CAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumps  s+    

AIIc''::<r   c                 V   > [         R                  " U 5      nTR                  " U40 UD6$ r$   )r9   rJ   r*  )r8  r   r  r/   s      r   r<  CAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads  s%    

4 A99Q)&))r   )r  )r/   r  r<  s   `  r   test_dump_load_oob_buffers4AbstractPickleModuleTests.test_dump_load_oob_buffers  s    	 
	* 	**58r   r%   N)rA   rB   rC   rD   rm  rr  rw  rz  r  r  r  r  r  r  r  r  r  rE   r%   r   r   re  re    sG    %%*5%%Z
G?B:$0C9r   re  c                   &    \ rS rSrS rS rS rSrg)AbstractPersistentPicklerTestsi  c                     [        U[        5      (       a)  US-  S:X  a   U =R                  S-  sl        [        U5      $ US:X  a  U =R                  S-  sl        gg )Nr  r   r   test_false_valuer  )r   r  id_countr   false_count)r/   r~  s     r   r  ,AbstractPersistentPicklerTests.persistent_id  sQ    fc""vzQMMQMv;))!r   c                     U(       d  U =R                   S-  sl         gU =R                  S-  sl        [        U5      nUS-  S:X  d   eU$ )Nr   r  r  r   )load_false_count
load_countr  )r/   oidr~  s      r   persistent_load.AbstractPersistentPicklerTests.persistent_load  sE    !!Q&!%OOq OXFA:?"?Mr   c           	         [        [        S5      5      S/-   n[         H  nSU l        SU l        SU l        SU l        U R                  U R                  U R                  X5      5      U5        U R                  U R                  S5        U R                  U R                  S5        U R                  U R                  S5        U R                  U R
                  S5        M     g )NrK  r  r   r   r   )
r  rv  r  r  r  r  r  r,  r<  r  )r/   Lr  s      r   test_persistence/AbstractPersistentPicklerTests.test_persistence  s    rO122EDM D$%D!DOTZZ

1(<=qAT]]A.T--q1T__a0T22A6 r   )r  r  r  r  N)rA   rB   rC   rD   r  r  r  rE   r%   r   r   r  r    s    7r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	&AbstractIdentityPersistentPicklerTestsi  c                     U$ r$   r%   )r/   r   s     r   r  4AbstractIdentityPersistentPicklerTests.persistent_id      
r   c                     U$ r$   r%   )r/   pids     r   r  6AbstractIdentityPersistentPicklerTests.persistent_load  r  r   c                     U R                  U R                  X5      5      nU R                  U[        U5      5        U R	                  X15        g r$   )r<  r  r  r   r,  )r/   r   r  r  s       r   _check_return_correct_typeAAbstractIdentityPersistentPicklerTests._check_return_correct_type  s;    JJtzz#56	ic3(r   c                     [          H@  nUS:X  a  U R                  SS5        M  SSSS[        4 H  nU R                  X!5        M     MB     g )Nr   r  s   abc
zabc
r  g*\()r  r  r   )r/   r  r   s      r   test_return_correct_type?AbstractIdentityPersistentPicklerTests.test_return_correct_type  sG    Ez//q9$gr:sCC33C? D r   c                    SnU R                  [        R                  5       nU R                  US5        S S S 5        U R	                  [        WR                  5      S5        [        R                  UR                  S5      -   S-   nU R                  [        R                  5       nU R                  U5        S S S 5        U R	                  [        UR                  5      S5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nu   ∅r   z2persistent IDs in protocol 0 must be ASCII stringsr  rh  )r;  r   r  r  r,  r   r  PERSIDr]  r  r<  )r/   non_ascii_strr  r  s       r   test_protocol0_is_ascii_onlyCAbstractIdentityPersistentPicklerTests.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&&C7&
C47
Dr%   N)
rA   rB   rC   rD   r  r  r  r  r  rE   r%   r   r   r  r    s    )
@
Or   r  c                   f    \ rS rSrSrSrS rS rS rS r	S r
SS	.S
 jrS rS rS rS rS rSrg)#AbstractPicklerUnpicklerObjectTestsi  Nc                 P    U R                   (       d   eU R                  (       d   eg r$   )pickler_classunpickler_classr4   s    r   r  )AbstractPicklerUnpicklerObjectTests.setUp  s     !!!!####r   c                 $   / SQn[          GH  n[        R                  " 5       nU R                  X25      nUR	                  U5        UR                  5       nUR                  S5        UR                  5         UR	                  U5        UR                  5       nUR                  5         UR                  S5        UR                  5         UR	                  U5        UR                  5       nU R                  XV5        U R                  XW5        GM     g )Nabcdefgr  ,   r   )r  r9   rJ   r  r  rL   r;   truncate
clear_memor  r,  )r/   r8  r  r  r  first_pickledsecond_pickledthird_pickleds           r   test_clear_pickler_memo;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memo!  s     *YE

A((2GLLJJLM FF1IJJLLLZZ\N  FF1IJJLLLJJLM>]:/ r   c                 l   / SQn[         R                  " 5       nU R                  U5      nUR                  U5        UR	                  5       n[         R                  " 5       nU R                  U5      nUR
                  Ul        UR                  U5        UR	                  5       nU R                  XF5        g Nr  )r9   rJ   r  r  rL   memor  )r/   r8  r  r  r  primedprimed_pickleds          r   test_priming_pickler_memo=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memoA  s    )JJL$$Q'T

JJL##A&llDM:r   c                    / SQn[         R                  " 5       nU R                  U5      nUR                  U5        UR	                  5       n[         R                  " 5       nU R                  U5      nUR
                  Ul        UR                  U5        UR	                  5       nU R                  [         R                  " U5      5      nUR                  5       nU R                  X5        U R                  [         R                  " U5      5      nUR
                  Ul        UR                  5       n	UR
                  R                  5         U R                  X5        U R                  XL 5        g r  )r9   rJ   r  r  rL   r  r  r*  r,  r  r  )
r/   r8  r  r  r  r  r  r)  unpickled_data1unpickled_data2s
             r   test_priming_unpickler_memo?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memoS  s   )JJL$$Q'T

JJL##A&llD((M)BC	#..*/%%bjj&@Ann ++-/:;r   c                    / SQn[         R                  " 5       nU R                  U5      nUR                  U5        UR	                  5       n/ SQn[         R                  " 5       nU R                  U5      nUR                  U5        UR	                  5       n[         R                  " 5       nUR                  U5        UR                  S5        U R                  U5      nU R                  UR                  5       U5        UR                  S5        UR                  5         UR                  U5        UR                  S5        U R                  UR                  5       U5        g )Nr  )r  r  r  r   )r9   rJ   r  r  rL   rO   r;   r  r,  r*  r  )r/   data1r  r  pickled1r  pickled2r)  s           r   test_reusing_unpickler_objectsBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectsq  s    *JJL$$Q'U::<#JJL$$Q'U::<JJL		q	((+	)51	q		

		q	)51r   Tr5   c          
         [          GH=  nU R                  US9   [        S5       Vs/ s H  oD[        U5      4PM     snS[        /-   nU" 5       nU R                  XcS9nUR                  U5        UR                  5       nSn	U" X-  5      nU R                  U5      n
[        U	5       Ho  nU(       a  UR                  5       nU R                  U
R                  5       U5        U(       d  MC  U R                  UR                  5       W[	        U5      -   5        Mq     U R                  [        U
R                  5        S S S 5        GM@     g s  snf ! , (       d  f       GMX  = f)Nr  i  s   abcder  r   )r  r:  rv  r   r  r  r  rL   r  r?   r,  r*  r;  r  )r/   ioclassr5   r  r'   r  r  r  r  r  r)  rJ  r  s                r   _check_multiple_unpicklings?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings  s   YEE*.3Dk:kSVk:h_LI,,Q,?U#**,GK( 003	qAffh$$Y^^%5u=x((3W3EF " !!(INN;! +* : +*s#   EE
B*E,AE
E
E	c                 B    U R                  [        R                  5        g r$   )r  r9   rJ   r4   s    r   "test_multiple_unpicklings_seekableFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekable  s    ((4r   c                 ,    U R                  [        SS9  g NFr  )r  r*   r4   s    r   $test_multiple_unpicklings_unseekableHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekable  s    (((Fr   c                 ,    U R                  [        SS9  g r  )r  rG   r4   s    r   !test_multiple_unpicklings_minimalEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimal  s     	((U(Cr   c                    [        [        S5      5      n[         H  n[        SS5       H  n[        R                  " [        R
                  " 5       US9nU R                  XBS9nUR                  U5        UR                  S5        U R                  U5      nU R                  UR                  5       U5        M     M     g )NrK  r      )buffer_sizer  r   )r  rv  r  r9   BufferedRandomrJ   r  r  r;   r  r,  r*  )r/   r8  r  buf_sizer  r  r)  s          r   "test_unpickling_buffering_readlineFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline  s     E"IE!!RL%%bjjlI,,Q,?T"q	 003	  !148 ) r   c                    [        5       n[        R                  " 5       n " S SU R                  5      nU" U5      nUR	                  U5        UR                  5         S Ul        U R                  [        5         UR	                  U5        S S S 5        UR                  5         SUl        U R                  [        5         UR	                  U5        S S S 5        g ! , (       d  f       NU= f! , (       d  f       g = f)Nc                       \ rS rSrSrg)[AbstractPicklerUnpicklerObjectTests.test_pickle_invalid_reducer_override.<locals>.MyPickleri  r%   Nr   r%   r   r   	MyPicklerr%    ru  r   r&  rK  )	r~  r9   rJ   r  r  r  reducer_overrider;  r-  )r/   r   r  r&  r  s        r   $test_pickle_invalid_reducer_overrideHAbstractPicklerUnpicklerObjectTests.test_pickle_invalid_reducer_override  s    hJJL	** 	A,S#' y)LL * 	#% y)LL *) *)
 *)s   :C C,
C),
C:r%   )rA   rB   rC   rD   r  r  r  r  r   r  r  r  r  r  r  r!  r(  rE   r%   r   r   r  r    sM    MO$;@;$<<22 @D <(5GD
9r   r  reduce_Ac                       \ rS rSrS rSrg)r  i  c                     [         [        44$ r$   )r   r  r4   s    r   r   AAA.__reduce__  s    XKr   r%   Nr1  r%   r   r   r  r    s     r   r  c                        \ rS rSrS rS rSrg)BBBi  c                     SU l         g )Nzsome attributer;  r4   s    r   rP   BBB.__init__  s     "r   c                     SU l         g )NBBB.__setstate__r;  r  s     r   r"  BBB.__setstate__  s	    #r   r;  N)rA   rB   rC   rD   rP   r"  rE   r%   r   r   r/  r/    s    "
$r   r/  c                     SU l         g)a\  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_bbbr7    s     "CEr   c                       \ rS rSrSrS rSrg)AbstractCustomPicklerClassi  z<Pickler implementing a reducing hook using reducer_override.c                     [        USS 5      nUS:X  a  [        S4$ US:X  a  [        S4$ US:X  a  gUS:X  a  [        S	5      e[        $ )
NrA   r  )r   MyClass)some strgFhThe reducer just failed)r2  r  r   ri  r   )r/   r   obj_names      r   r'  +AbstractCustomPicklerClass.reducer_override  s[    3
D1s?:y %%_ _ 677r   r%   N)rA   rB   rC   rD   rR   r'  rE   r%   r   r   r9  r9    s
    Fr   r9  c                   >    \ rS rSrS r\R                  S 5       rSrg)AbstractHookTestsi  c                 F   S nS nS n " S S5      n[        S[        R                  S-   5       GH7  nU R                  US9   [        R
                  " 5       nU R                  Xe5      nUR                  X[        R                  /5        [        R                  " UR                  5       5      u  pn
U R                  US	5        U R                  U	S
5        U R                  U
[        R                  5        U R                  [        R                  5         UR                  U5        S S S 5        U R!                  ["        S5         UR                  U5        S S S 5        S S S 5        GM:     g ! , (       d  f       NL= f! , (       d  f       N-= f! , (       d  f       GMo  = f)Nc                      g r$   r%   r%   r   r   r  .AbstractHookTests.test_pickler_hook.<locals>.f  r{  r   c                      g r$   r%   r%   r   r   r=  .AbstractHookTests.test_pickler_hook.<locals>.g
  r{  r   c                      g r$   r%   r%   r   r   r>  .AbstractHookTests.test_pickler_hook.<locals>.h  r{  r   c                       \ rS rSrSrg)4AbstractHookTests.test_pickler_hook.<locals>.MyClassi  r%   Nr   r%   r   r   r;  rL    ru  r   r;  r   r   r  r   r<  r?  )rv  r   r  r:  r9   rJ   r  r  r  r  r<  rL   r,  r-  r;  r  r  ri  )r/   r  r=  r>  r;  r  bior  new_fsome_strmath_logs              r   test_pickler_hook#AbstractHookTests.test_pickler_hook  s3   
				 	 1f559:EE*jjl&&s2DHH-.,2LL,H)  *  :6
 h1&&v';';<FF1I = ++"$=?FF1I?% +* ;  =<? ?% +*s=   CFE.(FE?F.
E<8F?
F	F
F 	c                    [        S[        R                  S-   5       H  nU R                  US9   S n[        R
                  " U5      n[        R                  " 5       nU R                  XA5      nUR                  U5        [        R                  " UR                  5       5      nUS:X  d   eAAU R                  U" 5       5        S S S 5        M     g ! , (       d  f       M  = f)Nr   r   r  c                      g r$   r%   r%   r   r   r  EAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.f2  s    r   r   )rv  r   r  r:  r:  r6  r9   rJ   r  r  r<  rL   r  )r/   r  r  wrrM  r  rN  s          r   (test_reducer_override_no_reference_cycle:AbstractHookTests.test_reducer_override_no_reference_cycle*  s     1f559:EE* [[^jjl&&s2q	S\\^4z!z!!"$' +* ;**s   BC
C!	r%   N)	rA   rB   rC   rD   rQ  r   r  rW  rE   r%   r   r   rC  rC    s"    &P ( (r   rC  c                   2    \ rS rSrS rS rS rS rS rSr	g)	AbstractDispatchTableTestsiC  c                     [         R                  " 5       nU R                  US5      nU R                  [        5         UR
                    S S S 5        U R                  [        US5      5        g ! , (       d  f       N*= f)Nr   dispatch_table)r9   rJ   r  r;  r!  r\  rI  r.  )r/   r  r  s      r   test_default_dispatch_table6AbstractDispatchTableTests.test_default_dispatch_tableE  sZ    JJLq!$~. /$456 /.s   A..
A<c                    ^ ^^ T R                  5       m " U4S jST R                  5      mSUUU 4S jjnT R                  UT5        g )Nc                      > \ rS rSr Y rSrg)GAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPickleriQ  r%   N)rA   rB   rC   rD   r\  rE   )dts   r   r&  ra  Q  s    Nr   r&  c                    > [         R                  " 5       nT" X!5      nTR                  UR                  T5        UR	                  U 5        UR                  5       $ r$   )r9   rJ   r,  r\  r  rL   )r   r   r  r  r&  rb  r/   s       r   r  CAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumpsT  sE    

A!&AQ--r2FF3K::<r   r$   )get_dispatch_tabler  _test_dispatch_table)r/   r  r&  rb  s   ` @@r   test_class_dispatch_table4AbstractDispatchTableTests.test_class_dispatch_tableM  s?    $$&	 ** 	 	  	  	!!%,r   c                 ^   ^ ^ T R                  5       mSUU 4S jjnT R                  UT5        g )Nc                    > [         R                  " 5       nTR                  X!5      nTUl        TR	                  UR                  T5        UR                  U 5        UR                  5       $ r$   )r9   rJ   r  r\  r,  r  rL   )r   r   r  r  rb  r/   s       r   r  FAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumpsa  sS    

A""1/A!AQ--r2FF3K::<r   r$   )re  rf  )r/   r  rb  s   ` @r   test_instance_dispatch_table7AbstractDispatchTableTests.test_instance_dispatch_table]  s-    $$&	  	  	!!%,r   c                    [        5       n[        R                  " 5       nU R                  U5      n[	        U5      S 0Ul        U R                  [        5         UR                  U5        S S S 5        g ! , (       d  f       g = fr$   )	r~  r9   rJ   r  r   r\  r;  r-  r  )r/   r   r  r  s       r   test_dispatch_table_None_item8AbstractDispatchTableTests.test_dispatch_table_None_itemk  s[    hJJL$$Q'"&s)T!2y)LL *))s   A33
Bc                   ^^^ U4S jnS nSnU R                  U" U5      U5        U R                  U" U5      U5        SmU4S jnXb[        '   U R                  U" U5      T5        U R                  U" U5      U5        [        5       n[        5       nU R                  U" U5      [        5        U R                  U" U5      [        5        U R                  U" U5      [        5        U R                  U" U5      [        5        Xb[        '   U R                  U" U5      [        5        U R                  U" U5      T5        U R                  U" U5      [        5        U R                  U" U5      [        5        SmU4S jn	X[        '   U[        	 U R                  U" U5      T5        U R                  U" U5      [        5        U R                  U" U5      [        5        U R                  U" U5      [        5        U R                  U" U5      R                  S5        S	 n
X[        '   U R                  U" U5      R                  S
5        g )Nc                 >   > [         R                  " T" U S5      5      $ Nr   )r   r<  )r   r  s    r   custom_load_dumpIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpu  s    <<c1..r   c                 X    [         R                  " [         R                  " U S5      5      $ rs  )r   r<  r  r  s    r   default_load_dumpJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpx  s    <<S! 455r   y      ?       @reduce_1c                    > [         T44$ r$   r   )r   REDUCE_1s    r   ry  AAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1      ##r   reduce_2c                    > [         T44$ r$   r   )r   REDUCE_2s    r   r~  AAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2  r}  r   r3  c                 6    [         SU R                  S S [        4$ ry   )r/  rg   r7  r  s    r   
reduce_bbbCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbb  s    CLL$lBBr   r6  )r,  complexr  r/  r  r  r   )r/   r  r\  rt  rw  r  ry  r   r   r~  r  r{  r  s    `         @@r   rf  /AbstractDispatchTableTests._test_dispatch_tablet  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   r%   N)
rA   rB   rC   rD   r]  rg  rl  ro  rf  rE   r%   r   r   rZ  rZ  C  s    7- -@Gr   rZ  r  zDATA{0} = (r  z	    {0!r}r  z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")r'  r  rX   r  r9   r  r  r  r   r   r  r  r  r  r  r  r:  textwrapr   http.cookiesr   r   r  rd  r   test.supportr   r   r   r	   r
   r   r   test.support.import_helperr   test.support.os_helperr   r   test.support.warnings_helperr   r   numpyr  
skipUnlessr  r  rv  r  r  r   r"   r(   rJ   r*   r~  rG   rT   rd   rm   rv   r|   rB   r~   r   r  r   r   r   r   r   r   r   r   r   r  r   r   rF  r  rK  r  rO  	DATA2_DISrS  	DATA3_DISrW  	DATA4_DISrs  ru  rw  r  ArithmeticErrorrH  r!  r=  r  BytesWarningDeprecationWarningr  EnvironmentErrorr{  FloatingPointErrorFutureWarningGeneratorExitIOErrorImportWarningIndentationErrorr  KeyErrorKeyboardInterruptLookupErrorMemoryError	NameErrorr-   r  r  PendingDeprecationWarningReferenceErrorr  RuntimeWarningStopIterationSyntaxErrorSyntaxWarningSystemError
SystemExitTabErrorr-  UnboundLocalErrorUnicodeErrorUnicodeWarningUserWarningri  WarningZeroDivisionErrorry  rz  r|  r&  r(  r  r  r  r  r  r  r  r  r  r  r7  r@  r%  r  r  r  rl  r.  r  r  r9  floatr9  r  r;  r   r=  r?  r  ri  r  rW  r   r  rt  rp  rV  rt  r1  rF  r@  r  rD  rz  r  r  r  re  r  r  r  r  r  r/  r7  r9  rC  rZ  rA   r  r'   rJ  r  r  r?  r   r  jr   r%   r   r   <module>r     s      
 	  	      
      %  "  . ) ) F 
	&	( 
) ""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 [.# ` < ,

*]! ]!@n7 n7b~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p ph  &  $& $	" 0?( ?(DqG qGh zA6**1,-LLAm""1%&q#a&"%Aa!B$i A+$$Q'( & 	c
(//23&--a01Ah .	 AU  K( 
)	( 	BsB   U U. UU. UU
U+&U. +U. .U:9U: