o
    °ó®g$ ã                
   @   s2  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlmZ d dlmZ zd dlZW n eyY   dZY nw d dlmZ d dlmZ d dlmZmZmZmZmZmZ d dlm Z  d dl!m"Z" d d	lm#Z# d d
l$m%Z% d dlm&Z& ze%ƒ  d dl'Z(W d  ƒ n1 s§w   Y  W n ey¸   dZ(Y nw e )ej*dk d¡Z+e,ej-d ƒZ.dd„ Z/dd„ Z0dd„ Z1G dd„ dej2ƒZ3G dd„ de4ƒZ5G dd„ dƒZ6G dd„ dƒZ7G dd„ de7ƒZ8G dd „ d e7ƒZ9G d!d"„ d"ƒZ:G d#d$„ d$ƒZ;d dl<Z<e7e<_7d%e7_=e8e<_8d%e8_=e9e<_9d%e9_=G d&d'„ d'e>ƒZ?G d(d)„ d)e7ƒZ@G d*d+„ d+eAƒZBG d,d-„ d-e4eBd.ZCG d/d0„ d0eAƒZDd1d2„ ZEG d3d4„ d4eFƒZGG d5d6„ d6eHƒZIedurrG d7d8„ d8ƒZJd9ZKd:ZLd;ZMd<ZNd=ZOd>ZPd?ZQd@ZRdAZSdBZTdCZUdDZVdEZWdFZXg eY‘eZ‘e[‘e\‘e]‘e^‘e_‘e`‘ea‘eb‘ec‘ed‘ee‘ef‘e‘eg‘eh‘ei‘ej‘ek‘el‘em‘en‘eo‘ep‘eq‘er‘es‘et‘eu‘ev‘ew‘ex‘ey‘ez‘e{‘e|‘e}‘e~‘e‘e€‘e‘e‚‘eƒ‘R Z„dGZ…dHZ†dIdJ„ Z‡G dKdL„ dLejˆƒZ‰G dMdN„ dNejˆƒZŠG dOdP„ dPejˆƒZ‹G dQdR„ dRe4ƒZŒG dSdT„ dTe4ƒZG dUdV„ dVe4ƒZŽG dWdX„ dXe4ƒZG dYdZ„ dZe4ƒZG d[d\„ d\e4ƒZ‘G d]d^„ d^e4ƒZ’G d_d`„ d`e4ƒZ“G dadb„ dbe>ƒZ”G dcdd„ dde•ƒZ–G dedf„ dfe—ƒZ˜G dgdh„ dhe™ƒZšG didj„ dje™ƒZ›G dkdl„ dleœƒZG dmdn„ dnežƒZŸG dodp„ dpe ƒZ¡G dqdr„ dre¢ƒZ£G dsdt„ dte¤ƒZ¥e”e–e˜eše›eeŸe¡e£e¥g
Z¦G dudv„ dve>ƒZ§G dwdx„ dxe§ƒZ¨G dydz„ dzeŸƒZ©G d{d|„ d|e>ƒaªG d}d~„ d~tªƒZ«G dd€„ d€tªƒZ¬G dd‚„ d‚ƒZ­G dƒd„„ d„ejˆƒZ®G d…d†„ d†ejˆƒZ¯G d‡dˆ„ dˆejˆƒZ°G d‰dŠ„ dŠejˆƒZ±d‹Z²G dŒd„ de4ƒZ³G dŽd„ de4ƒZ´dd‘„ ZµG d’d“„ d“ƒZ¶G d”d•„ d•ejˆƒZ·G d–d—„ d—ejˆƒZ¸e¹d%kr•d d˜lmºZº e‡ƒ Z»e,ej-d ƒD ]OZ¼e ½e»e¼¡Z¾e¿d™ Àe¼¡ƒ e,d eÁe¾ƒdšƒD ]ZÂeFe¾eÂeÂdš … ƒZÃe¿d› ÀeÃ¡ƒ q^e¿dœƒ e¿ƒ  e¿d Àe¼¡ƒ e¿dž Àe¼¡ƒ eºe¾ƒ e¿dŸƒ e¿ƒ  qGdS dS ) é    N)Údedent)ÚSimpleCookie)Úsupport)Ú	os_helper)Ú
TestFailedÚrun_with_localeÚ
no_tracingÚ_2GÚ_4GÚ
bigmemtest)Úforget)ÚTESTFN)Úthreading_helper)Úsave_restore_warnings_filters)Úbytes_typesl        z(test is only meaningful on 32-bit buildsé   c                 C   s0   t  |¡D ]\}}}|j|  d¡kr dS qdS )Núlatin-1TF©ÚpickletoolsÚgenopsÚcodeÚdecode)r   ÚpickleÚopÚdummy© r   úG/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/pickletester.pyÚopcode_in_pickle9   s
   ÿr   c                 C   s6   d}t  |¡D ]\}}}|j|  d¡kr|d7 }q|S )Nr   r   r   r   )r   r   Únr   r   r   r   r   Úcount_opcode@   s   €r   c                 C   s   | S ©Nr   ©Úxr   r   r   ÚidentityH   ó   r#   c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚUnseekableIOc                 G   ó   t ‚r    )ÚNotImplementedError©ÚselfÚargsr   r   r   ÚpeekM   r$   zUnseekableIO.peekc                 C   ó   dS )NFr   ©r*   r   r   r   ÚseekableP   r$   zUnseekableIO.seekablec                 G   ó   t j‚r    ©ÚioÚUnsupportedOperationr)   r   r   r   ÚseekS   ó   zUnseekableIO.seekc                 C   r0   r    r1   r.   r   r   r   ÚtellV   r5   zUnseekableIO.tellN)Ú__name__Ú
__module__Ú__qualname__r,   r/   r4   r6   r   r   r   r   r&   L   s
    r&   c                   @   ó   e Zd ZdZdd„ ZdS )Ú	MinimalIOz=
    A file-like object that doesn't support readinto().
    c                 G   s8   t j|Ž | _| jj| _| jj| _| jj| _| jj| _d S r    )r2   ÚBytesIOZ_bioÚgetvalueÚreadÚreadlineÚwriter)   r   r   r   Ú__init__^   s
   


zMinimalIO.__init__N)r7   r8   r9   Ú__doc__rA   r   r   r   r   r;   Z   s    r;   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚExtensionSaverc                 C   sD   || _ |tjv rtj| | _t | jd | jd |¡ d S d | _d S ©Nr   r   )r   ÚcopyregÚ_inverted_registryÚpairÚremove_extension)r*   r   r   r   r   rA   s   s
   

zExtensionSaver.__init__c                 C   s\   | j }tj |¡}|d urt |d |d |¡ | j}|d ur,t |d |d |¡ d S d S rE   )r   rF   rG   ÚgetrI   rH   Úadd_extension)r*   r   ZcurpairrH   r   r   r   Úrestore|   s   ÿzExtensionSaver.restoreN)r7   r8   r9   rA   rL   r   r   r   r   rD   p   s    	rD   c                   @   ó   e Zd Zdd„ ZdS )ÚCc                 C   s   | j |j kS r    )Ú__dict__©r*   Úotherr   r   r   Ú__eq__†   ó   zC.__eq__N)r7   r8   r9   rR   r   r   r   r   rN   …   ó    rN   c                   @   rM   )ÚDc                 C   ó   d S r    r   )r*   Úargr   r   r   rA   Š   r$   z
D.__init__N©r7   r8   r9   rA   r   r   r   r   rU   ‰   rT   rU   c                   @   rM   )ÚEc                 C   r-   ©Nr   r   r.   r   r   r   Ú__getinitargs__Ž   r$   zE.__getinitargs__N)r7   r8   r9   r[   r   r   r   r   rY      rT   rY   c                   @   ó   e Zd ZdS )ÚObjectN©r7   r8   r9   r   r   r   r   r]   ’   ó    r]   c                   @   rC   )ÚKc                 C   ó
   || _ d S r    )Úvalue)r*   rb   r   r   r   rA   —   ó   
z
K.__init__c                 C   s   t | jffS r    )r`   rb   r.   r   r   r   Ú
__reduce__š   s   zK.__reduce__N)r7   r8   r9   rA   rd   r   r   r   r   r`   –   ó    r`   Ú__main__c                   @   rM   )Úmyintc                 C   s   t |ƒ| _ d S r    ©Ústr)r*   r"   r   r   r   rA   §   ó   zmyint.__init__NrX   r   r   r   r   rg   ¦   rT   rg   c                   @   rC   )Úinitargc                 C   s   || _ || _d S r    ©ÚaÚb)r*   rm   rn   r   r   r   rA   ¬   ó   
zinitarg.__init__c                 C   s   | j | jfS r    rl   r.   r   r   r   r[   °   rS   zinitarg.__getinitargs__N)r7   r8   r9   rA   r[   r   r   r   r   rk   ª   s    rk   c                   @   r\   )Ú	metaclassNr^   r   r   r   r   rp   ³   r_   rp   c                   @   r\   )Úuse_metaclassNr^   r   r   r   r   rq   ¶   r_   rq   )rp   c                   @   rC   )Úpickling_metaclassc                 C   ó   t | ƒt |ƒko| j|jkS r    )ÚtypeÚreduce_argsrP   r   r   r   rR   º   s   
ÿzpickling_metaclass.__eq__c                 C   s
   t | jfS r    )Úcreate_dynamic_classru   r.   r   r   r   rd   ¾   rc   zpickling_metaclass.__reduce__N)r7   r8   r9   rR   rd   r   r   r   r   rr   ¹   s    rr   c                 C   s   t | |tƒ ƒ}| |f|_|S r    )rr   Údictru   )ÚnameÚbasesÚresultr   r   r   rv   Á   s   
rv   c                   @   s<   e Zd ZdZdZdZdZdd„ Zdd„ ZeZ	e
dd„ ƒZdS )	ÚZeroCopyBytesTc                 C   ó4   |dkrt | ƒjt | ¡fd fS t | ƒjt| ƒffS ©Né   ©rt   Ú_reconstructr   ÚPickleBufferÚbytes©r*   Úprotocolr   r   r   Ú__reduce_ex__Í   ó   zZeroCopyBytes.__reduce_ex__c                 C   ó   d  | jjt| ƒ¡S ©Nz{}({!r})©ÚformatÚ	__class__r7   r‚   r.   r   r   r   Ú__repr__Ó   ó   zZeroCopyBytes.__repr__c                 C   óX   t |ƒ}|j}t|ƒ| u r|W  d   ƒ S | |ƒW  d   ƒ S 1 s%w   Y  d S r    ©Ú
memoryviewÚobjrt   ©Úclsr‘   Úmr   r   r   r€   Ø   ó   
ü$úzZeroCopyBytes._reconstructN©r7   r8   r9   ÚreadonlyÚc_contiguousÚf_contiguousÚzero_copy_reconstructr…   rŒ   Ú__str__Úclassmethodr€   r   r   r   r   r{   Ç   ó    r{   c                   @   s<   e Zd ZdZdZdZdZdd„ Zdd„ ZeZ	e
dd„ ƒZd	S )
ÚZeroCopyBytearrayFTc                 C   r|   r}   r   rƒ   r   r   r   r…   é   r†   zZeroCopyBytearray.__reduce_ex__c                 C   r‡   rˆ   r‰   r.   r   r   r   rŒ   ï   r   zZeroCopyBytearray.__repr__c                 C   rŽ   r    r   r’   r   r   r   r€   ô   r•   zZeroCopyBytearray._reconstructNr–   r   r   r   r   rž   ã   r   rž   c                   @   sp   e Zd ZdZdd„ Zdd„ Zedd„ ƒZedd	„ ƒZed
d„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZdS )ÚPicklableNDArrayFc                 O   s   t j|i |¤Ž| _d S r    )Ú_testbufferZndarrayÚarray©r*   r+   Úkwargsr   r   r   rA     ó   zPicklableNDArray.__init__c                 C   s"   t | ƒ}| |¡}| j| |_|S r    )rt   Ú__new__r¡   )r*   Úidxr“   Únewr   r   r   Ú__getitem__
  s   
zPicklableNDArray.__getitem__c                 C   ó   | j jS r    )r¡   r—   r.   r   r   r   r—     ó   zPicklableNDArray.readonlyc                 C   r©   r    )r¡   r˜   r.   r   r   r   r˜     rª   zPicklableNDArray.c_contiguousc                 C   r©   r    )r¡   r™   r.   r   r   r   r™     rª   zPicklableNDArray.f_contiguousc                 C   sb   t |tƒstS |jj| jjko0|jj| jjko0|jj| jjko0|jj| jjko0|j ¡ | j ¡ kS r    )	Ú
isinstancerŸ   ÚNotImplementedr¡   rŠ   ÚshapeÚstridesr—   ÚtobytesrP   r   r   r   rR     s   
ÿþýüzPicklableNDArray.__eq__c                 C   s   t |tƒstS | |k S r    )r«   rŸ   r¬   rP   r   r   r   Ú__ne__%  s   

zPicklableNDArray.__ne__c                 C   s.   t | ƒ› d| jj› d| jj› d| j ¡ › dS )Nz(shape=z	,strides=z, bytes=ú))rt   r¡   r­   r®   r¯   r.   r   r   r   rŒ   *  s
   ÿþzPicklableNDArray.__repr__c                 C   sž   | j jstdƒ‚| j j| j j| j j| jrdntjdœ}t	 
| j ¡}|dkr.t| ƒj||ffS | ¡ }t| ƒj| ¡ |ffW  d   ƒ S 1 sHw   Y  d S )Nz>Reconstructing a non-contiguous ndarray does not seem possibler   )r­   r®   rŠ   Úflagsr~   )r¡   Ú
contiguousr(   r­   r®   rŠ   r—   r    ÚND_WRITABLEr   r   rt   r€   Úrawr¯   )r*   r„   Zndarray_kwargsÚpbr”   r   r   r   r…   /  s$   
üÿ

ÿ$ÿzPicklableNDArray.__reduce_ex__c                 C   sD   t |ƒ}t| ¡ ƒ}W d   ƒ n1 sw   Y  | |fi |¤ŽS r    )r   Úlistr¯   )r“   r‘   r£   r”   Úitemsr   r   r   r€   B  s   
ýzPicklableNDArray._reconstructN)r7   r8   r9   rš   rA   r¨   Úpropertyr—   r˜   r™   rR   r°   rŒ   r…   rœ   r€   r   r   r   r   rŸ     s     


	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JÿÿÿÿKÿJÿÿÿJ ÿÿÿMÿÿJ ÿÿ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JÿÿÿÿKÿJÿÿÿJ ÿÿÿMÿÿJ ÿÿ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JÿÿÿÿKÿJÿÿÿJ ÿÿÿMÿÿJ ÿÿ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”Œcomplex”“”G@      G        †”R”KJÿÿÿÿKÿJÿÿÿJ ÿÿÿMÿÿJ ÿÿJ  ÿÿJÿÿÿJ  €J   €(Œabc”hŒ__main__”ŒC”“”)”}”(Œbar”KŒfoo”Kubh
t”h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e…q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a…qRq.s   €cexceptions
?
q )Rq.sI   €cexceptions
UnicodeEncodeError
q (UasciiqX   fooqK KUbadqtqRq.c                  C   sŒ   t ƒ } d| _d| _g d¢}d}d}d}| dd|| | d || | d || | d g¡ dd| | f}| |¡ | |¡ | d	¡ |S )
Nr   é   )r   r   g       @y      @        éÿ   éÿÿ  éÿÿÿéÿÿÿÿÚabcr~   )rN   ÚfooÚbarÚextendÚappend)Úcr"   Zuint1maxZuint2maxZint4maxÚyr   r   r   Úcreate_data*  s"   ý


rÆ   c                   @   sš  e Zd Zeƒ Zd\dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zed$d%„ ƒZed&d'„ ƒZd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zed2d3„ ƒZed4d5„ ƒZed6d7„ ƒZ d8d9„ Z!d:d;„ Z"d<d=„ Z#d>d?„ Z$d@dA„ Z%edBdC„ ƒZ&dDdE„ Z'dFdG„ Z(dHdI„ Z)dJdK„ Z*dLdM„ Z+dNdO„ Z,dPdQ„ Z-dRdS„ Z.dTdU„ Z/dVdW„ Z0dXdY„ Z1e2j3dZd[„ ƒZ4dS )]ÚAbstractUnpickleTestsNc                 C   sÜ   |du r
d  ||¡}| j|||d | jt|ƒt|ƒ|d t|dƒr7| j|j|j|d | j|j|j|d t|dƒrj| j|j	|j	|d |j	D ]"}| jt||ƒt||ƒ|d | jt
||dƒt
||dƒ|d qIdS dS )zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r})ÚmsgrO   Ú	__slots__)rŠ   ÚassertEqualÚassertIsrt   ÚhasattrZassertDictEqualrO   ÚassertIsNotZassertListEqualrÉ   Úgetattr)r*   r‘   ZobjcopyrÈ   Zslotr   r   r   Úassert_is_copyD  s$   


ÿÿûz$AbstractUnpickleTests.assert_is_copyc                 C   s¶   | j |dK |  |¡- z|  |¡ W n ty1 } ztjdkr,td||jj|f ƒ ‚ d }~ww W d   ƒ n1 s<w   Y  W d   ƒ d S W d   ƒ d S 1 sTw   Y  d S )N)Údatar   z%-32r - %s: %s)	ÚsubTestÚassertRaisesÚloadsÚBaseExceptionr   ÚverboseÚprintr‹   r7   )r*   ÚerrorsrÐ   Úexcr   r   r   Úcheck_unpickling_errorV  s   ÿ
ÿ€üÿPýz,AbstractUnpickleTests.check_unpickling_errorc                 C   ó   |   | j|  t¡¡ d S r    )rÏ   Ú	_testdatarÓ   ÚDATA0r.   r   r   r   Útest_load_from_data0a  ó   z*AbstractUnpickleTests.test_load_from_data0c                 C   rÚ   r    )rÏ   rÛ   rÓ   ÚDATA1r.   r   r   r   Útest_load_from_data1d  rÞ   z*AbstractUnpickleTests.test_load_from_data1c                 C   rÚ   r    )rÏ   rÛ   rÓ   ÚDATA2r.   r   r   r   Útest_load_from_data2g  rÞ   z*AbstractUnpickleTests.test_load_from_data2c                 C   rÚ   r    )rÏ   rÛ   rÓ   ÚDATA3r.   r   r   r   Útest_load_from_data3j  rÞ   z*AbstractUnpickleTests.test_load_from_data3c                 C   rÚ   r    )rÏ   rÛ   rÓ   ÚDATA4r.   r   r   r   Útest_load_from_data4m  rÞ   z*AbstractUnpickleTests.test_load_from_data4c                 C   sœ   t dftdftdffD ]@\}}|j d¡}	 d d|¡}|  ||Ž |  |¡¡ 	 d d|¡}|  ||Ž |  |¡¡ 	 d d|¡}|  ||Ž |  |¡¡ qd S )Nr   r!   Úasciis   (i__main__
X
p0
(dp1
b.ó   Xs   (c__main__
X
q oq}qb.s   €(c__main__
X
q oq}qb.)rN   rU   rY   r7   ÚencodeÚreplacerÏ   rÓ   )r*   ÚXr+   ZxnameZpickle0Zpickle1Zpickle2r   r   r   Útest_load_classic_instancep  s$   
ýþþÌz0AbstractUnpickleTests.test_load_classic_instancec                 C   sV   d}dt |ƒ d¡ d }|  |¡}|  ||¡ dt |ƒ d¡ d }|  t|¡ d S )Nl   ÿÿÿÿ ó   Irç   ó   
.s   JUNK
.)ri   ré   rÓ   rÏ   rÙ   Ú
ValueError)r*   Zmaxint64rÐ   Úgotr   r   r   Útest_maxint64©  s   
z#AbstractUnpickleTests.test_maxint64c                 C   sX  |   t¡}|  |tddgƒ¡ |   t¡}|  t|ƒttdƒƒ¡ |  t|ƒttdƒƒ¡ |   t¡}|  t|ƒt	¡ |  t| 
¡ ƒdg¡ |  |d jd¡ tD ]}t d|j d¡¡}|   |¡}|  t|ƒ|¡ qO|   t dd	¡¡}|  t|ƒt¡ |   t¡}|  t|ƒt¡ |  |jd
¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ d S )Nr   rº   r   r~   Úkeyrb   ó   ?rç   ó   StandardErrorrÀ   Zbad)rÓ   ÚDATA_SETrÊ   ÚsetÚDATA_XRANGErt   Úranger·   ÚDATA_COOKIEr   Úkeysrb   Úpython2_exceptions_without_argsÚexception_picklerê   r7   ré   rË   Ú	ExceptionÚ
DATA_UEERRÚUnicodeEncodeErrorÚobjectÚencodingÚstartÚendÚreason)r*   ÚloadedrØ   rÐ   r   r   r   Útest_unpickle_from_2x³  s,   




z+AbstractUnpickleTests.test_unpickle_from_2xc                 C   óF   |   | jdddd¡ |   | jdddd¡ |   | jdddd¡ d S )Ns   S'a\x00\xa0'
.r‚   ©r  s   a  s   Ua  .s   €Ua  .©rÊ   rÓ   r.   r   r   r   Útest_load_python2_str_as_bytesÑ  ó   
ÿÿ
ÿÿ
ÿÿz4AbstractUnpickleTests.test_load_python2_str_as_bytesc                 C   r  )Ns	   V\u03c0
.r‚   r  u   Ï€s   X   Ï€.s
   €X   Ï€.r	  r.   r   r   r   Ú test_load_python2_unicode_as_strÜ  r  z6AbstractUnpickleTests.test_load_python2_unicode_as_strc                 C   s2   |   | jtjt dd¡ d tj ddd¡ d S )Nú<Ii,  s,  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr‚   r  )rÊ   rÓ   r   Ú	BINSTRINGÚstructÚpackÚSTOPr.   r   r   r   Ú#test_load_long_python2_str_as_bytesç  s   
ÿþþýýz9AbstractUnpickleTests.test_load_long_python2_str_as_bytesc                 C   s\   |   |  d¡¡ |  |  d¡d¡ |  |  d¡d¡ |  |  d¡d¡ |  |  d¡d¡ d S )Ns   N.s   ˆ.Ts   ‰.Fs   I01
.s   I00
.)ÚassertIsNonerÓ   rË   r.   r   r   r   Útest_constantsî  s
   z$AbstractUnpickleTests.test_constantsc                 C   s   | j ddd}|  |d¡ d S )Ns   €U q .zkoi8-rr  Ú )rÓ   rÊ   )r*   Úemptyr   r   r   Útest_empty_bytestringõ  s   z+AbstractUnpickleTests.test_empty_bytestringc                 C   ó   d}|   |  |¡d¡ d S )Ns	   €Câ‚¬ .ó   â‚¬ r	  ©r*   Údumpedr   r   r   Útest_short_binbytesú  ó   z)AbstractUnpickleTests.test_short_binbytesc                 C   r  )Ns   €B   â‚¬ .r  r	  r  r   r   r   Útest_binbytesþ  r  z#AbstractUnpickleTests.test_binbytesc                 C   ó   d}|   tjtf|¡ d S )Ns   €Bÿÿÿÿxyzq .©rÙ   r   ÚUnpicklingErrorÚOverflowErrorr  r   r   r   Útest_negative_32b_binbytes  ó   ÿz0AbstractUnpickleTests.test_negative_32b_binbytesc                 C   r  )Ns   €Xÿÿÿÿxyzq .r   r  r   r   r   Útest_negative_32b_binunicode	  r$  z2AbstractUnpickleTests.test_negative_32b_binunicodec                 C   r  )Ns	   €Œâ‚¬ .õ   â‚¬ r	  r  r   r   r   Útest_short_binunicode  r  z+AbstractUnpickleTests.test_short_binunicodec                 C   sD   |   tjd¡ |   tjd¡ |   tjd¡ |  ddg|  d¡¡ d S )Ns   g0
p0s   jens:s   hens:)éd   s   ((Kdtp0
h l.)))rÙ   r   r!  rÏ   rÓ   r.   r   r   r   Útest_misc_get  s   
ÿz#AbstractUnpickleTests.test_misc_getc                 C   r  )Ns   €Ž       â‚¬ .r  r	  r  r   r   r   Útest_binbytes8  r  z$AbstractUnpickleTests.test_binbytes8c                 C   r  )Ns   €       â‚¬ .r&  r	  r  r   r   r   Útest_binunicode8  r  z&AbstractUnpickleTests.test_binunicode8c                 C   s   d}|   |  |¡tdƒ¡ d S )Ns   €–       xxx.s   xxx)rÊ   rÓ   Ú	bytearrayr  r   r   r   Útest_bytearray8#  s   z%AbstractUnpickleTests.test_bytearray8c                 C   r  )Ns   €Ž      â‚¬ .r   r  r   r   r   Útest_large_32b_binbytes8'  ó   ÿz.AbstractUnpickleTests.test_large_32b_binbytes8c                 C   r  )Ns   €–      â‚¬ .r   r  r   r   r   Útest_large_32b_bytearray8-  r/  z/AbstractUnpickleTests.test_large_32b_bytearray8c                 C   r  )Ns   €      â‚¬ .r   r  r   r   r   Útest_large_32b_binunicode83  r/  z0AbstractUnpickleTests.test_large_32b_binunicode8c                 C   ó8   d}|   |¡}|  |g fd ¡ |  |d |d ¡ d S )Ns   ((lp100000
g100000
t.rº   r   r   ©rÓ   rÊ   rË   ©r*   ÚpickledÚ	unpickledr   r   r   Útest_get9  ó   
zAbstractUnpickleTests.test_getc                 C   r2  )Ns   (]qÿhÿt.rº   r   r   r3  r4  r   r   r   Útest_binget?  r8  z!AbstractUnpickleTests.test_bingetc                 C   r2  )Ns   (]r   j   t.rº   r   r   r3  r4  r   r   r   Útest_long_bingetE  r8  z&AbstractUnpickleTests.test_long_bingetc                 C   r2  )Ns   ((l2t.rº   r   r   r3  r4  r   r   r   Útest_dupK  r8  zAbstractUnpickleTests.test_dupc                 C   ó   d}|   t|¡ d S )Ns   Va
p-1
.©rÙ   rï   r  r   r   r   Útest_negative_putQ  s   z'AbstractUnpickleTests.test_negative_putc                 C   r<  )Ns   €X   arÿÿÿÿ.r=  r  r   r   r   Útest_negative_32b_binputV  s   z.AbstractUnpickleTests.test_negative_32b_binputc                 C   s   |   td¡ d S )Ns   S'\'
.r=  r.   r   r   r   Útest_badly_escaped_string\  ó   z/AbstractUnpickleTests.test_badly_escaped_stringc                 C   s$   g d¢}|D ]	}|   tj|¡ qd S )N)s   S'
.s   S"
.s   S' 
.s   S" 
.s   S'"
.s   S"'
.s   S' ' 
.s   S" " 
.s   S ''
.s   S ""
.s   S 
.s   S
.s   S.)rÙ   r   r!  ©r*   Z
badpicklesÚpr   r   r   Útest_badly_quoted_string_  s   ÿz.AbstractUnpickleTests.test_badly_quoted_stringc                 C   s,   g d¢}|D ]\}}|   |  |¡|¡ qd S )N))s   S''
.r  )s   S""
.r  )s   S"\n"
.Ú
)s   S'\n'
.rE  r	  )r*   ZgoodpicklesrC  Úexpectedr   r   r   Útest_correctly_quoted_stringq  s   ÿz2AbstractUnpickleTests.test_correctly_quoted_stringc                 C   r  )Ns   €•       I42
.é*   r	  )r*   r5  r   r   r   Útest_frame_readliney  s   z)AbstractUnpickleTests.test_frame_readlinec                 C   s   d}|   |¡}|  t|ƒt¡ |  |tddƒ¡ |  t|ƒg d¢¡ d}|  |   |¡tj¡ d}|  |   |¡tj	¡ dD ]}d| d	 }|   |¡}|  t|ƒt
¡ |  t|ƒd
¡ q<dD ]!}d| d }|   |¡}|  t|ƒtj¡ |  |t ddi¡¡ q\d S )Ns   €c__builtin__
xrange
KKK‡R.r   é   )r   rº   é   é   r~   é   s   €c__builtin__
reduce
.s   €cwhichdb
whichdb
.)s	   Exceptionrô   s   €cexceptions
s	   
Uugh…R.Zugh)s   UserDicts   IterableUserDicts   €(cUserDict
s   
o}Udata}KKssb.rº   )rÓ   rË   rt   rø   rÊ   r·   Ú	functoolsÚreduceÚdbmÚwhichdbrý   ri   ÚcollectionsÚUserDict)r*   r5  r6  rx   r   r   r   Útest_compat_unpickle  s,   

ÿ
ûz*AbstractUnpickleTests.test_compat_unpicklec                 C   s.   |   |  d¡d¡ |  td¡ |  td¡ d S )Ns   cbuiltins
int
)R.r   s   N)R.s   cbuiltins
int
NR.)rÊ   rÓ   rÙ   Ú	TypeErrorr.   r   r   r   Útest_bad_reduceœ  s   z%AbstractUnpickleTests.test_bad_reducec                 C   s8   t jtf}|  |  d¡d¡ |  |d¡ |  |d¡ d S )Ns   cbuiltins
int
).r   s   cbuiltins
len
).s   cbuiltins
int
N.©r   r!  rU  rÊ   rÓ   rÙ   ©r*   Úerrorr   r   r   Útest_bad_newobj¡  s   
z%AbstractUnpickleTests.test_bad_newobjc                 C   sD   t jtf}|  |  d¡d¡ |  |d¡ |  |d¡ |  |d¡ d S )Ns   cbuiltins
int
)}’.r   s   cbuiltins
len
)}’.s   cbuiltins
int
N}’.s   cbuiltins
int
)N’.rW  rX  r   r   r   Útest_bad_newobj_ex§  s
   
z(AbstractUnpickleTests.test_bad_newobj_exc                 C   ó$   g d¢}|D ]	}|   | j|¡ qd S )N),ó   .ó   0ó   1ó   2s   (2ó   Rs   )Ró   as   Naó   bs   Nbó   dó   es   (es   ibuiltins
list
ó   ló   os   (os   p1
s   q s   r    ó   ss   Nss   NNsó   tó   us   (us   }(Nuó   s   )ó   …ó   †s   N†ó   ‡s   N‡s   NN‡ó   s   (ó   ‘ó   ’s   )}’ó   “s   Vlist
“ó   ”©rÙ   Zbad_stack_errorsrB  r   r   r   Útest_bad_stack®  s   .ÿz$AbstractUnpickleTests.test_bad_stackc                 C   r\  )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(N†s   NNN(‡s   NN(N‡s   N(NN‡s   ]((s   cbuiltins
list
)}(’s   cbuiltins
list
)(}’s   cbuiltins
list
()}’s   Vbuiltins
(Vlist
“s   Vbuiltins
Vlist
(“s   N(”rt  rB  r   r   r   Útest_bad_markà  s   #ÿz#AbstractUnpickleTests.test_bad_markc                 C   s<   |   td¡ |   td¡ g d¢}|D ]	}|   | j|¡ qd S )Nó    ó   N)Uó   Bs   B  s   B   s   B   abó   Cs   Cs   Cabó   Fs   F0.0s   F0.00ó   Gs   G       rí   s   I0ó   Js   J   ó   Kó   Ls   L0s   L10s   L0Ls   L10Ló   Ms   M ó   Ss   S'abc'ó   Ts   T  s   T   s   T   abó   Us   Us   Uabó   Vs   Vabcrè   s   X  s   X   s   X   abs   (cs
   (cbuiltinss   (cbuiltins
s   (cbuiltins
lists   Ngs   Ng0s   (is
   (ibuiltinss   (ibuiltins
s   (ibuiltins
lists   Nhs   Njs   Nj   s   Nps   Np0s   Nqs   Nrs   Nr   ó   €ó   ‚ó   ƒs   „ó   „s   „  ó   Šó   ‹s   ‹   ó   Œs   Œs   Œabó   s         s	          s          abó   Žs   Ž      s	   Ž       s   Ž       abó   –s   –      s	   –       s   –       abó   •s   •      s	   •       s
   •       N)rÙ   ÚEOFErrorZtruncated_errorsrB  r   r   r   Útest_truncated_data  s   Yÿz)AbstractUnpickleTests.test_truncated_datac           	         s†  t dƒ}t dƒ}t t¡ |  tjt¡ tj 	dt¡ |  tjj
t¡ ttj td¡dƒ}| | d¡¡ W d   ƒ n1 s@w   Y  ttj td¡dƒ}| | d¡¡ W d   ƒ n1 sbw   Y  |  td¡ |  td	¡ dd l}d
‰g ‰t d¡‰ ‡ ‡‡fdd„}tj|d}tj|d}| ¡  | ¡  ˆ  ¡  |j ¡  | ¡  | ¡  ddlm} |  dd„ ˆD ƒ|gd ¡ d S )NzI
        import threading
        barrier = threading.Barrier(2)
        zs
        import locker
        locker.barrier.wait()
        class ToBeUnpickled(object):
            pass
        r   z	locker.pyÚwbúutf-8zlocking_import.pyÚlockerÚlocking_imports'   €clocking_import
ToBeUnpickled
q )q.rK  c                      s   ˆ   ¡  ˆ t ˆ¡¡ d S r    )ÚwaitrÃ   r   rÓ   r   ©ÚbarrierZpickle_bytesÚresultsr   r   Út‹  s   z:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t)Útarget)ÚToBeUnpickledc                 S   ó   g | ]}t |ƒ‘qS r   )rt   ©Ú.0r"   r   r   r   Ú
<listcomp>Ÿ  ó    zCAbstractUnpickleTests.test_unpickle_module_race.<locals>.<listcomp>rº   )r   ÚosÚmkdirr   Z
addCleanupÚshutilÚrmtreeÚsysÚpathÚinsertÚremoveÚopenÚjoinr@   ré   r   r”  Ú	threadingÚBarrierÚThreadr  r–  r˜  r•  rœ  rÊ   )	r*   Zlocker_moduleZlocking_import_moduleÚfr”  rš  Út1Út2rœ  r   r—  r   Útest_unpickle_module_racef  sB   
ÿÿÿ

þz/AbstractUnpickleTests.test_unpickle_module_racer    )5r7   r8   r9   rÆ   rÛ   rÏ   rÙ   rÝ   rà   râ   rä   ræ   rì   rñ   r  r
  r  r  r  r  r  r  Úrequires_32br#  r%  r'  r)  r*  r+  r-  r.  r0  r1  r7  r9  r:  r;  r>  r?  r@  rD  rG  rI  rT  rV  rZ  r[  ru  rv  r‘  r   Zreap_threadsr²  r   r   r   r   rÇ   ?  sl    
9






2'_rÇ   c                   @   s$  e Zd ZdZejZdd„ ZejZdd„ Zdd„ Z	dd	„ Z
ed
fdd„Zdd„ Zdd„ Zdd„ Zed
fdd„Zdd„ Zdd„ Zdd„ Zed
fdd„Zdd„ Zdd „ Zd!d"„ Zed
fd#d$„Zd%d&„ Zd'd(„ Zd)d*„ Zed
fd+d,„Zd-d.„ Zd/d0„ Zd1d2„ Zed
fd3d4„Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%d?d@„ Z&dAdB„ Z'dCdD„ Z(dEdF„ Z)dGdH„ Z*dIdJ„ Z+dKdL„ Z,dMdN„ Z-dOdP„ Z.dQdR„ Z/dSdT„ Z0dUdV„ Z1dWdX„ Z2dYdZ„ Z3d[d\„ Z4d]d^„ Z5d_d`„ Z6dadb„ Z7dcdd„ Z8dedf„ Z9dgdh„ Z:didj„ Z;e<dkdldmƒdndo„ ƒZ=dpdq„ Z>drds„ Z?dtdu„ Z@dvdw„ ZAdxdy„ ZBdzd{„ ZCd|d}„ ZDd~d„ ZEd€d„ ZFd‚dƒ„ ZGd„d…„ ZHd†d‡„ ZIdˆd‰„ ZJdŠd‹„ ZKdŒd„ ZLdŽd„ ZMdd‘„ ZNd’d“„ ZOd”d•„ ZPd–d—„ ZQd˜d™„ ZRdšd›„ ZSdœd„ ZTdždŸ„ ZUd d¡„ ZVd¢d£„ ZWd¤d¥„ ZXd¦d§„ ZYd¨d©„ ZZdªd«„ Z[d¬d­„ Z\d®d¯„ Z]d°d±„ Z^d²d³„ Z_d´dµ„ Z`ead¶d·„ ƒZbd¸d¹„ Zcdºd»„ Zdd¼d½„ Zed¾d¿„ ZfdÀdÁ„ ZgdÂdÃ„ ZhdÄdÅ„ ZidÆdÇ„ ZjdÈdÉ„ ZkdÊZldËZmdÌdÍ„ ZneojpdÎdÏ„ ƒZqdÐdÑ„ ZrdÒdÓ„ ZseojpdÔdÕ„ ƒZtdÖd×„ ZudØdÙ„ ZvdÚdÛ„ ZwdÜdÝ„ ZxdÞdß„ Zydàdá„ Zzdâdã„ Z{dädå„ Z|dædç„ Z}dèdé„ Z~dêdë„ Zdìdí„ Z€dîdï„ Zdðdñ„ Z‚eƒ „e…dòu dó¡dôdõ„ ƒZ†dòS )öÚAbstractPickleTestsFc                 C   rV   r    r   r.   r   r   r   ÚsetUp«  r$   zAbstractPickleTests.setUpc                 C   sŠ   t D ]@}tdƒ}|  ||¡}|  |¡}|  ||¡ d}|  ||¡}|  |¡}|  ||¡ td|ƒ}|  ||¡}|  |¡}|  ||¡ qd S )NrL  )r   r   r   )Ú	protocolsrg   ÚdumpsrÓ   rÏ   rk   ©r*   Úprotor"   ÚsrÅ   r   r   r   Ú	test_misc°  s   



òzAbstractPickleTests.test_miscc                 C   s6   | j }tD ]}|  ||¡}|  |¡}|  ||¡ qd S r    )rÛ   r¶  r·  rÓ   rÏ   )r*   rF  r¹  rº  rð   r   r   r   Útest_roundtrip_equalityÄ  s   
ýz+AbstractPickleTests.test_roundtrip_equalityc                 C   sj   ddl m} ddlm} dtfdtffD ]\}}|  | j|¡}|ƒ }|||d | ¡ }|  	||¡ qd S )Nr   )ÚStringIO©Údisr   )Úout)
r2   r½  r   r¿  Ú	DATA0_DISÚ	DATA1_DISr·  rÛ   r=   rÊ   )r*   r½  r¿  r¹  rF  rº  Zfilelikerð   r   r   r   Údont_test_disassemblyÑ  s   ûz)AbstractPickleTests.dont_test_disassemblyr   c           	      C   st   |ƒ }|  |¡ t|tjd ƒD ]'}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t|ƒd¡ |  	|d |¡ qd S ©Nr   r   )
rÃ   rø   r   ÚHIGHEST_PROTOCOLr·  rÓ   ÚassertIsInstancerÊ   ÚlenrË   )	r*   r“   ÚaslistÚminprotocolÚlr¹  rº  r"   rÅ   r   r   r   Ú_test_recursive_listÜ  s   

úz(AbstractPickleTests._test_recursive_listc                 C   ó   |   t¡ d S r    )rË  r·   r.   r   r   r   Útest_recursive_listè  rj   z'AbstractPickleTests.test_recursive_listc                 C   ó   | j tdd d S ©Nrº   )rÉ  )rË  ÚMyListr.   r   r   r   Útest_recursive_list_subclassë  ó   z0AbstractPickleTests.test_recursive_list_subclassc                 C   ó   | j tdd„ d d S )Nc                 S   ó   | j S r    ©r¸   r!   r   r   r   Ú<lambda>ï  ó    z>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>©rÈ  )rË  ÚREX_sixr.   r   r   r   Útest_recursive_list_likeî  r¤   z,AbstractPickleTests.test_recursive_list_likec           	      C   s,  |ƒ f}|d   |¡ t|tjd ƒD ]9}|  ||¡}|  |¡}|  |t¡ |  t	|ƒd¡ |  |d |¡ ||d ƒ}|  t	|ƒd¡ |  
|d |¡ q|\}t|tjd ƒD ];}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t	|ƒd¡ |  |d t¡ |  t	|d ƒd¡ |  
|d d |¡ qXd S rE   )rÃ   rø   r   rÅ  r·  rÓ   rÆ  ÚtuplerÊ   rÇ  rË   )	r*   r“   rÈ  rÉ  rš  r¹  rº  r"   rÅ   r   r   r   Ú_test_recursive_tuple_and_listñ  s,   

øz2AbstractPickleTests._test_recursive_tuple_and_listc                 C   rÌ  r    )rÜ  r·   r.   r   r   r   Útest_recursive_tuple_and_list  rj   z1AbstractPickleTests.test_recursive_tuple_and_listc                 C   rÎ  rÏ  )rÜ  rÐ  r.   r   r   r   Ú&test_recursive_tuple_and_list_subclass  rÒ  z:AbstractPickleTests.test_recursive_tuple_and_list_subclassc                 C   rÓ  )Nc                 S   rÔ  r    rÕ  r!   r   r   r   rÖ    r×  zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>rØ  )rÜ  rÙ  r.   r   r   r   Ú"test_recursive_tuple_and_list_like  r¤   z6AbstractPickleTests.test_recursive_tuple_and_list_likec           	      C   sx   |ƒ }||d< t |tjd ƒD ]*}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t| ¡ ƒdg¡ |  	|d |¡ qd S ©Nr   )
rø   r   rÅ  r·  rÓ   rÆ  rÊ   r·   rú   rË   ©	r*   r“   ÚasdictrÉ  Údr¹  rº  r"   rÅ   r   r   r   Ú_test_recursive_dict  s   
úz(AbstractPickleTests._test_recursive_dictc                 C   rÌ  r    )rä  rw   r.   r   r   r   Útest_recursive_dict   rj   z'AbstractPickleTests.test_recursive_dictc                 C   rÎ  rÏ  )rä  ÚMyDictr.   r   r   r   Útest_recursive_dict_subclass#  rÒ  z0AbstractPickleTests.test_recursive_dict_subclassc                 C   rÓ  )Nc                 S   rÔ  r    ©Útabler!   r   r   r   rÖ  '  r×  z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>©râ  )rä  Ú	REX_sevenr.   r   r   r   Útest_recursive_dict_like&  r¤   z,AbstractPickleTests.test_recursive_dict_likec           	      C   s.  |ƒ f}||d d< t |tjd ƒD ]:}|  ||¡}|  |¡}|  |t¡ |  t|ƒd¡ |  |d |¡ ||d ƒ}|  t	|ƒdg¡ |  
|d |¡ q|\}t |tjd ƒD ]<}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t	|ƒdg¡ |  |d t¡ |  t|d ƒd¡ |  
|d d |¡ qXd S rE   )rø   r   rÅ  r·  rÓ   rÆ  rÛ  rÊ   rÇ  r·   rË   ©	r*   r“   râ  rÉ  rš  r¹  rº  r"   rÅ   r   r   r   Ú_test_recursive_tuple_and_dict)  s,   

øz2AbstractPickleTests._test_recursive_tuple_and_dictc                 C   rÌ  r    )rî  rw   r.   r   r   r   Útest_recursive_tuple_and_dictC  rj   z1AbstractPickleTests.test_recursive_tuple_and_dictc                 C   rÎ  rÏ  )rî  ræ  r.   r   r   r   Ú&test_recursive_tuple_and_dict_subclassF  rÒ  z:AbstractPickleTests.test_recursive_tuple_and_dict_subclassc                 C   rÓ  )Nc                 S   rÔ  r    rè  r!   r   r   r   rÖ  J  r×  zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>rê  )rî  rë  r.   r   r   r   Ú"test_recursive_tuple_and_dict_likeI  r¤   z6AbstractPickleTests.test_recursive_tuple_and_dict_likec           	      C   sœ   |ƒ }d|t |ƒ< t|tjd ƒD ]:}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t| 	¡ ƒd¡ |  t
| 	¡ ƒd t ¡ |  t
| 	¡ ƒd j|¡ qd S rÄ  )r`   rø   r   rÅ  r·  rÓ   rÆ  rÊ   rÇ  rú   r·   rË   rb   rá  r   r   r   Ú_test_recursive_dict_keyL  s   
ùz,AbstractPickleTests._test_recursive_dict_keyc                 C   rÌ  r    )rò  rw   r.   r   r   r   Útest_recursive_dict_keyZ  rj   z+AbstractPickleTests.test_recursive_dict_keyc                 C   rÎ  rÏ  )rò  ræ  r.   r   r   r   Ú test_recursive_dict_subclass_key]  rÒ  z4AbstractPickleTests.test_recursive_dict_subclass_keyc                 C   rÓ  )Nc                 S   rÔ  r    rè  r!   r   r   r   rÖ  a  r×  zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>rê  )rò  rë  r.   r   r   r   Útest_recursive_dict_like_key`  r¤   z0AbstractPickleTests.test_recursive_dict_like_keyc           	      C   sN  |ƒ f}d|d t |ƒ< t|tjd ƒD ]J}|  ||¡}|  |¡}|  |t¡ |  t	|ƒd¡ |  |d |¡ ||d ƒ}|  t	|ƒd¡ |  t
| ¡ ƒd t ¡ |  t
| ¡ ƒd j|¡ q|\}t|tjd ƒD ]:}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t	|ƒd¡ |  t
| ¡ ƒd t ¡ |  t
| ¡ ƒd jd |¡ qjd S rÄ  )r`   rø   r   rÅ  r·  rÓ   rÆ  rÛ  rÊ   rÇ  r·   rú   rË   rb   rí  r   r   r   Ú"_test_recursive_tuple_and_dict_keyc  s,   

 ùz6AbstractPickleTests._test_recursive_tuple_and_dict_keyc                 C   rÌ  r    )rö  rw   r.   r   r   r   Ú!test_recursive_tuple_and_dict_key  rj   z5AbstractPickleTests.test_recursive_tuple_and_dict_keyc                 C   rÎ  rÏ  )rö  ræ  r.   r   r   r   Ú*test_recursive_tuple_and_dict_subclass_key‚  rÒ  z>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_keyc                 C   rÓ  )Nc                 S   rÔ  r    rè  r!   r   r   r   rÖ  †  r×  zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>rê  )rö  rë  r.   r   r   r   Ú&test_recursive_tuple_and_dict_like_key…  r¤   z:AbstractPickleTests.test_recursive_tuple_and_dict_like_keyc                 C   sþ   t ƒ }| t|ƒ¡ tdtjd ƒD ]0}|  ||¡}|  |¡}|  |t ¡ |  	t
|ƒd¡ |  t|ƒd t¡ |  t|ƒd j|¡ q|\}tdtjd ƒD ].}|  ||¡}|  |¡}|  |t¡ |  |jt ¡ |  	t
|jƒd¡ |  t|jƒd |¡ qNd S )NrL  r   r   )rö   Úaddr`   rø   r   rÅ  r·  rÓ   rÆ  rÊ   rÇ  r·   rË   rb   ©r*   rÅ   r¹  rº  r"   r   r   r   Útest_recursive_setˆ  s$   

úz&AbstractPickleTests.test_recursive_setc                 C   s^   t ƒ }||_tD ]$}|  ||¡}|  |¡}|  |t ¡ |  t|ƒt|ƒ¡ |  |j|¡ qd S r    )	r]   Úattrr¶  r·  rÓ   rÆ  rÊ   ÚdirrË   )r*   Úir¹  rº  r"   r   r   r   Útest_recursive_instž  s   
ûz'AbstractPickleTests.test_recursive_instc                 C   s¬   g }d|i}t ƒ }||_| |¡ tD ]@}|  ||¡}|  |¡}|  |t¡ |  t	|ƒd¡ |  t
|d ƒt
|ƒ¡ |  t|d j ¡ ƒdg¡ |  |d jd |¡ qd S rÄ  )r]   rý  rÃ   r¶  r·  rÓ   rÆ  r·   rÊ   rÇ  rþ  rú   rË   )r*   rÊ  rã  rÿ  r¹  rº  r"   r   r   r   Útest_recursive_multi©  s   

ùz(AbstractPickleTests.test_recursive_multic                 C   sø   t ƒ }||gƒ|_t|jƒ}tD ]3}|  ||¡}|  |¡}|  |j|¡ |  t|jƒd¡ |  t	|jƒd t ¡ |  
t	|jƒd |¡ q|j}tD ]0}|  ||¡}|  |¡}|  ||¡ |  t|ƒd¡ |  t	|ƒd t ¡ |  
t	|ƒd j|¡ qId S rÄ  )r]   rý  rt   r¶  r·  rÓ   rÆ  rÊ   rÇ  r·   rË   )r*   ÚfactoryÚorš  r¹  rº  r"   r   r   r   Ú#_test_recursive_collection_and_inst¸  s&   


úz7AbstractPickleTests._test_recursive_collection_and_instc                 C   rÌ  r    )r  r·   r.   r   r   r   Útest_recursive_list_and_instÑ  rj   z0AbstractPickleTests.test_recursive_list_and_instc                 C   rÌ  r    )r  rÛ  r.   r   r   r   Útest_recursive_tuple_and_instÔ  rj   z1AbstractPickleTests.test_recursive_tuple_and_instc                 C   ó   |   tj¡ d S r    )r  rw   Úfromkeysr.   r   r   r   Útest_recursive_dict_and_inst×  rA  z0AbstractPickleTests.test_recursive_dict_and_instc                 C   rÌ  r    )r  rö   r.   r   r   r   Útest_recursive_set_and_instÚ  rj   z/AbstractPickleTests.test_recursive_set_and_instc                 C   rÌ  r    )r  Ú	frozensetr.   r   r   r   Ú!test_recursive_frozenset_and_instÝ  rj   z5AbstractPickleTests.test_recursive_frozenset_and_instc                 C   rÌ  r    )r  rÐ  r.   r   r   r   Ú%test_recursive_list_subclass_and_instà  rj   z9AbstractPickleTests.test_recursive_list_subclass_and_instc                 C   rÌ  r    )r  ÚMyTupler.   r   r   r   Ú&test_recursive_tuple_subclass_and_instã  rj   z:AbstractPickleTests.test_recursive_tuple_subclass_and_instc                 C   r  r    )r  ræ  r  r.   r   r   r   Ú%test_recursive_dict_subclass_and_instæ  rA  z9AbstractPickleTests.test_recursive_dict_subclass_and_instc                 C   rÌ  r    )r  ÚMySetr.   r   r   r   Ú$test_recursive_set_subclass_and_insté  rj   z8AbstractPickleTests.test_recursive_set_subclass_and_instc                 C   rÌ  r    )r  ÚMyFrozenSetr.   r   r   r   Ú*test_recursive_frozenset_subclass_and_instì  rj   z>AbstractPickleTests.test_recursive_frozenset_subclass_and_instc                 C   sJ   t ƒ }||_tD ]}|  ||¡}|  |¡}|  |t ¡ |  |j|¡ qd S r    )Ú	REX_stateÚstater¶  r·  rÓ   rÆ  rË   rû  r   r   r   Útest_recursive_inst_stateï  s   
üz-AbstractPickleTests.test_recursive_inst_statec                 C   sØ   t ƒ f}||d _tD ],}|  ||¡}|  |¡}|  |t¡ |  t|ƒd¡ |  |d t ¡ |  	|d j|¡ q|\}tD ],}|  ||¡}|  |¡}|  |t ¡ |  |jt¡ |  t|jƒd¡ |  	|jd |¡ q=d S rE   )
r  r  r¶  r·  rÓ   rÆ  rÛ  rÊ   rÇ  rË   )r*   rš  r¹  rº  r"   r   r   r   Ú#test_recursive_tuple_and_inst_stateù  s$   


úz7AbstractPickleTests.test_recursive_tuple_and_inst_statec                 C   sB   g d¢}t D ]}|D ]}|  ||¡}|  |¡}|  ||¡ q
qd S )N)r  z<\u>u   <\áˆ´>z<
>z<\>u   <\ð’…>u   <í²€>©r¶  r·  rÓ   rÏ   )r*   Zendcasesr¹  ÚurC  Úu2r   r   r   Útest_unicode  s   
ýÿz AbstractPickleTests.test_unicodec                 C   s4   d}t D ]}|  ||¡}|  |¡}|  ||¡ qd S )Nu   ð’…r  )r*   rš  r¹  rC  r±  r   r   r   Útest_unicode_high_plane  s   
ýz+AbstractPickleTests.test_unicode_high_planec                 C   s¢   t D ]L}dD ]}|  ||¡}|  ||  |¡¡ qdd„ tdƒD ƒD ]}|  ||¡}|  ||  |¡¡ q!dd„ tdƒD ƒD ]}|  ||¡}|  ||  |¡¡ q<qd S )N©rw  ó   xyzs,  xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzc                 S   s   g | ]}t |gƒ‘qS r   ©r‚   ©rŸ  rÿ  r   r   r   r   &  s    z2AbstractPickleTests.test_bytes.<locals>.<listcomp>é   c                 S   s   g | ]}t ||gƒ‘qS r   r   r!  r   r   r   r   )  ó    )r¶  r·  rÏ   rÓ   rø   )r*   r¹  rº  rC  r   r   r   Ú
test_bytes!  s   þùzAbstractPickleTests.test_bytesc                 C   sÄ   t D ]]}dD ]X}t|ƒ}|  ||¡}|  |¡}|  ||¡ |  ||¡ |dkr7|  d|¡ |  tt	j
|ƒ¡ q|dkrK|  d|¡ |  tt	j|ƒ¡ q|dkr^|  d|¡ |  tt	j|ƒ¡ qqd S )Nr  rK  s	   bytearrayrL  r~   )r¶  r,  r·  rÓ   rÍ   rÏ   ÚassertInÚ
assertTruer   r   ÚGLOBALÚSTACK_GLOBALÚassertNotInÚ
BYTEARRAY8)r*   r¹  rº  rn   rC  Zbbr   r   r   Útest_bytearray-  s&   
€ñÿz"AbstractPickleTests.test_bytearrayc                 C   sJ   t D ] }dD ]}t|ƒ}|  ||f|¡}|  |¡\}}|  ||¡ qqd S )Nr  )r¶  r,  r·  rÓ   rË   )r*   r¹  rº  rn   rC  Úb1Úb2r   r   r   Útest_bytearray_memoization_bug@  s   üÿz2AbstractPickleTests.test_bytearray_memoization_bugc                 C   sV   t D ]&}tj}|r(| |fD ]}|  ||¡}|  |¡}|  ||¡ q|d? }|s	qd S rà  )r¶  r¦  Úmaxsizer·  rÓ   rÏ   )r*   r¹  r   rF  rº  Zn2r   r   r   Ú	test_intsH  s   
û€þzAbstractPickleTests.test_intsc           	      C   sÂ   t D ]0}dD ]+}d|> }|d ||d fD ]}|| fD ]}|  ||¡}|  |¡}|  ||¡ qqqqtddƒ}||d> 7 }|| fD ]}|  |d¡}|  |¡}|  t|ƒt¡ |  ||¡ qCd S )N)r   é   ið  iø  é   i  r   Zdeadbeeffeedfaceé   i@B rº   )r¶  r·  rÓ   rÏ   ÚintrË   rt   rÊ   )	r*   r¹  ZnbitsZnbaseZnposr   r   rð   rC  r   r   r   Ú	test_longR  s&   
ýÿþ
	
ùzAbstractPickleTests.test_longc                 C   sT   g d¢}|dd„ |D ƒ }t D ]}|D ]}|  ||¡}|  |¡}|  ||¡ qqd S )N)g        g       g+æp‹h  gà®Z¤î*) g_DÅø…9gš™™™™™¹?g      à?g…ëQ¸	@g‘mÎ"wp@gêWôTáßDgêŒ 9Y>)Fc                 S   s   g | ]}| ‘qS r   r   rž  r   r   r   r   l  ó    z2AbstractPickleTests.test_float.<locals>.<listcomp>r  )r*   Ztest_valuesr¹  rb   r   rð   r   r   r   Ú
test_floati  s   
ýÿzAbstractPickleTests.test_floatÚLC_ALLZde_DEZfr_FRc                 C   s    |   |  dd¡dd… d¡ d S )Ng333333ó?r   rK  s   F1.)rÊ   r·  r.   r   r   r   Útest_float_formats  s    z%AbstractPickleTests.test_float_formatc                 C   s6   t D ]}tƒ }|  ||¡}|  |¡}|  |t¡ qd S r    )r¶  ÚAAAr·  rÓ   rÊ   ÚREDUCE_A©r*   r¹  Úinstr  r  r   r   r   Útest_reducex  s   
üzAbstractPickleTests.test_reducec                 C   s:   t D ]}tddƒ}|  ||¡}|  |¡}|  ||¡ qd S )Nr   rº   )r¶  rk   r·  rÓ   rÏ   r<  r   r   r   Útest_getinitargs  s   

üz$AbstractPickleTests.test_getinitargsc                 C   s:   t ƒ }tD ]}|  ||¡}|  |¡}|  |j|j¡ qd S r    )rq   r¶  r·  rÓ   rÊ   r‹   ©r*   rm   r¹  rº  rn   r   r   r   Útest_metaclass†  s   
ýz"AbstractPickleTests.test_metaclassc                 C   s^   t dtfƒ}t ttj¡ tD ]}|  ||¡}|  |¡}|  	||¡ |  
t|ƒt|ƒ¡ qd S )NZmy_dynamic_class)rv   r   rF   r   rr   rd   r¶  r·  rÓ   rÊ   rË   rt   r@  r   r   r   Útest_dynamic_class  s   
üz&AbstractPickleTests.test_dynamic_classc                 C   s®   dd l }dd l}| ¡ }tD ]F}|  ||¡}|  |¡}|  ||¡ | |j¡}|  ||¡}|  |¡}|  ||¡ t	|dƒrT| 
|j¡}|  ||¡}|  |¡}|  ||¡ qd S )Nr   Ústatvfs)Útimer¢  Ú	localtimer¶  r·  rÓ   rÏ   ÚstatÚcurdirrÌ   rC  )r*   rD  r¢  rš  r¹  rº  r  r   r   r   Útest_structseq–  s$   



€ôz"AbstractPickleTests.test_structseqc                 C   s0   t D ]}|  d|¡}|  |¡}|  d|¡ qd S ©N.)r¶  r·  rÓ   rË   ©r*   r¹  rº  r  r   r   r   Útest_ellipsis©  ó
   
ýz!AbstractPickleTests.test_ellipsisc                 C   s0   t D ]}|  t|¡}|  |¡}|  t|¡ qd S r    )r¶  r·  r¬   rÓ   rË   rJ  r   r   r   Útest_notimplemented¯  rL  z'AbstractPickleTests.test_notimplementedc                 C   sL   d dt g}|D ]}tD ]}|  t|ƒ|¡}|  |¡}|  t|ƒ|¡ qqd S rI  )r¬   r¶  r·  rt   rÓ   rË   )r*   Z
singletonsZ	singletonr¹  rº  r  r   r   r   Útest_singleton_typesµ  s   

ýÿz(AbstractPickleTests.test_singleton_typesc              
   C   sÔ   t D ]'}|  d |¡}|dkrtjt|gƒ }|  | |¡¡ q|  ttj|ƒd¡ qt d d }tj	tj
 }tjt|gƒ | }z|  |¡ W n tyb } z|  dt|ƒ¡ W Y d }~d S d }~ww |  d¡ d S )Nrº   r   r¾   r   zunsupported pickle protocolz0expected bad protocol number to raise ValueError)r¶  r·  r   ÚPROTOr‚   r&  Ú
startswithrÊ   r   ÚNONEr  rÓ   rï   r%  ri   Zfail)r*   r¹  r5  Zproto_headerZoobZ
build_noneZ	badpickleÚerrr   r   r   Ú
test_protoÀ  s    €ÿzAbstractPickleTests.test_protoc                 C   sL   d}t D ]}|  ||¡}|  |¡}|  ||¡ |  ttj|ƒ|dk¡ qd S )Nì   èUJ^w,3ƒ|	 rº   )r¶  r·  rÓ   rÏ   rÊ   r   r   ÚLONG1©r*   r"   r¹  rº  rÅ   r   r   r   Ú
test_long1Ó  s   
üzAbstractPickleTests.test_long1c                 C   sP   dd> }t D ]}|  ||¡}|  |¡}|  ||¡ |  ttj|ƒ|dk¡ qd S )NrT  r2  rº   )r¶  r·  rÓ   rÏ   rÊ   r   r   ÚLONG4rV  r   r   r   Ú
test_long4Û  s   
üzAbstractPickleTests.test_long4c                 C   s  i dt j“dt j“dt j“dt j“dt j“dt j“dt j“dt j“d	t j“d
t j“dt j“dt j“dt j“dt j“dt j“dt j“dt j“t jt jt jdœ¥}d}d}d}d}d}tD ]0}|||||fD ]&}|  ||¡}	|  |	¡}
|  	||
¡ |t
|dƒt|ƒf }|  t||	ƒ¡ qdq[d S )N)r   r   )r   r   )r   rº   )r   rK  )r   rL  )r   r   )r   r   )r   rº   )r   rK  ©r   rL  )rº   r   ©rº   r   )rº   rº   )rº   rK  )rº   rL  )rK  r   )rK  r   ))rK  rº   )rK  rK  ©rK  rL  r   )r   ©r   rº   rK  )r   rº   rK  rL  rK  )r   ÚTUPLEÚEMPTY_TUPLEÚTUPLE1ÚTUPLE2ÚTUPLE3r¶  r·  rÓ   rÏ   ÚminrÇ  r&  r   )r*   Úexpected_opcoderm   rn   rÄ   rã  Úer¹  r"   rº  rÅ   rF  r   r   r   Útest_short_tuplesã  sf   
ÿþýüúùø	÷
öôóòñðîíê
ûÿz%AbstractPickleTests.test_short_tuplesc                 C   sž   t jt jt jt jt jt jt jt jt jt jt jt jdœ}tD ]/}dD ]*}|  ||¡}|  |¡}|  ||u ||||f¡ |t	|dƒ|f }|  t
||ƒ¡ q!qd S )N))r   N)r   N)rº   N)rK  N)r   T)r   T)rº   T)rK  T)r   F)r   F)rº   F)rK  F)NFTrK  )r   rQ  ÚINTÚNEWTRUEÚNEWFALSEr¶  r·  rÓ   r&  rc  r   )r*   rd  r¹  r"   rº  rÅ   rF  r   r   r   Útest_singletons
  s,   ó
ûÿz#AbstractPickleTests.test_singletonsc                 C   óH   t g d¢ƒ}d|_d|_tD ]}|  ||¡}|  |¡}|  ||¡ qd S ©Nr]  rH  Úhello)r  rÀ   rÁ   r¶  r·  rÓ   rÏ   rV  r   r   r   Útest_newobj_tuple#  ó   
ýz%AbstractPickleTests.test_newobj_tuplec                 C   rk  rl  )rÐ  rÀ   rÁ   r¶  r·  rÓ   rÏ   rV  r   r   r   Útest_newobj_list,  ro  z$AbstractPickleTests.test_newobj_listc              	   C   sŒ   t D ]A}tD ]<}|j}||jƒ}d|_|  ||¡}|  |¡}|||||t|ƒf}|  ||¡ |  	||ƒ||ƒ|¡ |  	|j
|j
|¡ qqd S ©NrH  )r¶  Ú	myclassesÚ__base__ÚsamplerÀ   r·  rÓ   rt   rÏ   rÊ   rO   )r*   r¹  rN   ÚBr"   rº  rÅ   Údetailr   r   r   Útest_newobj_generic5  s   

÷ÿz'AbstractPickleTests.test_newobj_genericc              	   C   sÂ   t d d … }ttfD ]}| |¡ q
tD ]J}|D ]E}|j}||jƒ}d|_t 	|¡}|  
||¡}|  |¡}	|  t|	ƒt|ƒ¡ |||||	t|	ƒf}
|  ||ƒ||	ƒ|
¡ |  |j|	j|
¡ qqd S rq  )rr  ÚMyIntr  r©  r¶  rs  rt  rÀ   ÚweakrefÚproxyr·  rÓ   rÊ   rt   rO   )r*   ZclassesrÄ   r¹  rN   ru  r"   rC  rº  rÅ   rv  r   r   r   Útest_newobj_proxiesB  s"   


öÿz'AbstractPickleTests.test_newobj_proxiesc                 C   s`   t D ]+}tdƒ}d|_|  ||¡}|  |¡}|  t|ƒt¡ |  t|ƒd¡ |  |jd¡ qd S )Nr   rH  )	r¶  ÚMyIntWithNew2rÀ   r·  rÓ   rË   rt   rÊ   r4  r¸  r   r   r   Útest_newobj_overridden_newU  s   
ùz.AbstractPickleTests.test_newobj_overridden_newc                 C   sF   t }t  t ¡}|  |d¡}zda |  ttjf| j|¡ W |a d S |a w )NrL  rH  )ÚSimpleNewObjr¥   r·  rÒ   rU  r   r!  rÓ   )r*   Úsaver  rn   r   r   r   Útest_newobj_not_class`  s   
z)AbstractPickleTests.test_newobj_not_classc                 C   sð   t |ƒ}znt td|¡ tg d¢ƒ}d|_d|_|  |d¡}|  t 	d¡|¡ |  d|¡ |  
t||ƒ¡ |  |¡}|  ||¡ |  |d¡}|  t 	d¡|¡ |  d|¡ |  t||ƒd	t|ƒ¡ |  |¡}|  ||¡ W | ¡  d S | ¡  w )
NrÐ  r]  rH  rm  r   r“  s   MyListrº   T)rD   rF   rK   r7   rÐ  rÀ   rÁ   r·  r%  ré   ÚassertFalser   rÓ   rÏ   r)  rÊ   ÚreprrL   )r*   ZextcodeÚopcodere  r"   Ús1rÅ   Ús2r   r   r   Úproduce_global_extp  s&   

z&AbstractPickleTests.produce_global_extc                 C   s    |   dtj¡ |   dtj¡ d S )Nr   r»   )r†  r   ÚEXT1r.   r   r   r   Útest_global_ext1Œ  s   z$AbstractPickleTests.test_global_ext1c                 C   ó.   |   dtj¡ |   dtj¡ |   dtj¡ d S )Nr"  r¼   iÍ«  )r†  r   ÚEXT2r.   r   r   r   Útest_global_ext2  ó   z$AbstractPickleTests.test_global_ext2c                 C   r‰  )Né   r½   iïÍ«)r†  r   ÚEXT4r.   r   r   r   Útest_global_ext4•  rŒ  z$AbstractPickleTests.test_global_ext4c                 C   sÈ   d}t t|ƒƒ}tD ]!}|  ||¡}|  |¡}|  ||¡ ttj|ƒ}|  	||dk¡ q
d}t t|ƒƒ}tD ]+}|  ||¡}|  |¡}|  ||¡ ttj|ƒ}|dkrZ|  	|d¡ q6|  
|dk¡ q6d S ©Né
   r   éÄ	  rº   )r·   rø   r¶  r·  rÓ   rÏ   r   r   ÚAPPENDSrÊ   r&  )r*   r   r"   r¹  rº  rÅ   Znum_appendsr   r   r   Útest_list_chunkingš  s&   

øz&AbstractPickleTests.test_list_chunkingc                 C   sØ   d}t  t|ƒ¡}tD ]'}|  ||¡}|  |t¡ |  |¡}|  ||¡ t	t
j|ƒ}|  ||dk¡ qd}t  t|ƒ¡}tD ]+}|  ||¡}|  |¡}|  ||¡ t	t
j|ƒ}|dkrb|  |d¡ q>|  |dk¡ q>d S r  )rw   r  rø   r¶  r·  rÆ  r   rÓ   rÏ   r   r   ÚSETITEMSrÊ   r&  )r*   r   r"   r¹  rº  rÅ   Znum_setitemsr   r   r   Útest_dict_chunking°  s(   

øz&AbstractPickleTests.test_dict_chunkingc                 C   sØ   d}t t|ƒƒ}tD ]*}|  ||¡}|  |¡}|  ||¡ ttj|ƒ}|dk r.|  	|d¡ q
|  	|d¡ q
d}t t|ƒƒ}tD ]*}|  ||¡}|  |¡}|  ||¡ ttj|ƒ}|dk rc|  	|d¡ q?|  
|d¡ q?d S )Nr‘  rL  r   r   r’  rº   )rö   rø   r¶  r·  rÓ   rÏ   r   r   ÚADDITEMSrÊ   ÚassertGreaterEqual)r*   r   r"   r¹  rº  rÅ   Znum_additemsr   r   r   Útest_set_chunkingÇ  s*   

øz%AbstractPickleTests.test_set_chunkingc              	   C   sº   t  t d¡}d|_tD ]O}| j|d? |  ||¡}|dk r%|  d|¡ n|  d|¡ |  tt	j
|ƒd|k¡ |  tt	j|ƒ¡ |  |¡}|  ||¡ W d   ƒ q1 sUw   Y  qd S )NéÎú  éš  ©r¹  r   ó   
I64206ó   MÎúrº   )r~  r¥   r¿   r¶  rÑ   r·  r%  rÊ   r   r   ÚNEWOBJr  Ú	NEWOBJ_EXrÓ   rÏ   rV  r   r   r   Útest_simple_newobjà  s    ÿ
öÿz&AbstractPickleTests.test_simple_newobjc              	   C   sæ   t  t d¡}d|_tD ]e}| j|dU |  ||¡}|dk r%|  d|¡ n|dk r0|  d|¡ n|dk r;|  d	|¡ n|  d
|¡ |  tt	j
|ƒd|k¡ |  tt	j|ƒ¡ |  |¡}|  ||¡ W d   ƒ q1 skw   Y  qd S ©Nrš  r›  rœ  r   r  rº   rž  rL  s	   X   FACEs   ŒFACE)ÚComplexNewObjr¥   r¿   r¶  rÑ   r·  r%  rÊ   r   r   rŸ  r  r   rÓ   rÏ   rV  r   r   r   Útest_complex_newobjð  s(   ÿ
òÿz'AbstractPickleTests.test_complex_newobjc              	   C   sæ   t  t d¡}d|_tD ]e}| j|dU |  ||¡}|dk r%|  d|¡ n|dk r0|  d|¡ n|dk r;|  d	|¡ n|  d
|¡ |  tt	j
|ƒ¡ |  tt	j|ƒd|k¡ |  |¡}|  ||¡ W d   ƒ q1 skw   Y  qd S r¢  )ÚComplexNewObjExr¥   r¿   r¶  rÑ   r·  r%  r  r   r   rŸ  rÊ   r   rÓ   rÏ   rV  r   r   r   Útest_complex_newobj_ex	  s(   ÿ
òÿz*AbstractPickleTests.test_complex_newobj_exc                 C   s>   t g d¢ƒ}d|_d|_|  |d¡}|  |¡}|  ||¡ d S )Nr]  rH  rm  rº   )ÚSlotListrÀ   rÁ   r·  rÓ   rÏ   )r*   r"   rº  rÅ   r   r   r   Útest_newobj_list_slots	  s   
z*AbstractPickleTests.test_newobj_list_slotsc                 C   sT   t D ]%}tƒ }|  |jd¡ |  ||¡}|  |jd¡ |  |¡}|  |jd¡ qd S rE   )r¶  ÚREX_onerÊ   Ú_reduce_calledr·  rÓ   r¸  r   r   r   Ú'test_reduce_overrides_default_reduce_ex 	  ó   
úz;AbstractPickleTests.test_reduce_overrides_default_reduce_exc                 C   óT   t D ]%}tƒ }|  |jd ¡ |  ||¡}|  |j|¡ |  |¡}|  |jd ¡ qd S r    )r¶  ÚREX_tworÊ   Ú_protor·  rÓ   r¸  r   r   r   Útest_reduce_ex_called)	  r¬  z)AbstractPickleTests.test_reduce_ex_calledc                 C   r­  r    )r¶  Ú	REX_threerÊ   r¯  r·  rÓ   r¸  r   r   r   Útest_reduce_ex_overrides_reduce2	  r¬  z3AbstractPickleTests.test_reduce_ex_overrides_reducec                 C   sT   t D ]%}tƒ }|  |jd ¡ |  ||¡}|  |j|¡ |  |¡}|  |j|¡ qd S r    )r¶  ÚREX_fourrÊ   r¯  r·  rÓ   r¸  r   r   r   Útest_reduce_ex_calls_base;	  r¬  z-AbstractPickleTests.test_reduce_ex_calls_basec                 C   sT   t D ]%}tƒ }|  |jd¡ |  ||¡}|  |jd¡ |  |¡}|  |jd¡ qd S rE   )r¶  ÚREX_fiverÊ   rª  r·  rÓ   r¸  r   r   r   Útest_reduce_calls_baseD	  r¬  z*AbstractPickleTests.test_reduce_calls_basec                 C   s&   t ƒ }tD ]}|  t| j||¡ qd S r    )Ú
BadGetattrr¶  rÒ   ÚRuntimeErrorr·  )r*   r"   r¹  r   r   r   Útest_bad_getattrM	  s   ÿz$AbstractPickleTests.test_bad_getattrc              	   C   s|   G dd„ dt ƒ}G dd„ dt ƒ}tD ])}z	|  |ƒ |¡ W n
 tjy'   Y nw z	|  |ƒ |¡ W q tjy;   Y qw d S )Nc                   @   rM   )z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.Cc                 S   s   t dd g d fS rZ   )r·   r.   r   r   r   rd   X	  ó   zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N©r7   r8   r9   rd   r   r   r   r   rN   W	  rT   rN   c                   @   rM   )z7AbstractPickleTests.test_reduce_bad_iterator.<locals>.Dc                 S   s   t dd d g fS rZ   )rw   r.   r   r   r   rd   \	  rº  zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__Nr»  r   r   r   r   rU   [	  rT   rU   )r   r¶  r·  r   ÚPicklingError)r*   rN   rU   r¹  r   r   r   Útest_reduce_bad_iteratorT	  s   ÿÿùz,AbstractPickleTests.test_reduce_bad_iteratorc              	   C   s–   dd„ t dƒD ƒ}tdd„ |D ƒƒ}t|ƒt|ƒt|ƒg}tD ])}| j|d |  ||¡}|  |¡}|  ||¡ W d   ƒ q1 sCw   Y  qd S )Nc                 s   s    | ]	}d t |ƒ V  qdS )ZaaaNrh   r!  r   r   r   Ú	<genexpr>n	  ó   € z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>r(  c                 s   s    | ]	}|g d ¢fV  qdS ))rL  r~   rM  Nr   )rŸ  Úkr   r   r   r¾  o	  r¿  rœ  )rø   rw   r¶  rÑ   r·  rÓ   rÏ   )r*   rú   Z
large_dictr‘   r¹  r  r  r   r   r   Útest_many_puts_and_getsk	  s   
ýÿz+AbstractPickleTests.test_many_puts_and_getsc           	      C   sj   t D ]0}tƒ }d|_d|_|  ||¡}|  |¡}t|jƒ}t|jƒ}t||ƒD ]
\}}|  	||¡ q'qd S )NrH  rm  )
r¶  rN   rÀ   rÁ   r·  rÓ   ÚsortedrO   ÚziprË   )	r*   r¹  r"   rº  rÅ   Zx_keysZy_keysZx_keyZy_keyr   r   r   Útest_attribute_name_interningx	  s   


ÿøz1AbstractPickleTests.test_attribute_name_interningc                 C   s>   |   tdƒd¡}|  |t¡ |   tdgƒd¡}|  |t¡ d S )Nr~   rº   rK  )r·  rø   rÊ   r÷   rö   Ú	DATA_SET2r  r   r   r   Útest_pickle_to_2x†	  s   z%AbstractPickleTests.test_pickle_to_2xc                 C   sT   t D ]%}dtdd tf}|  ||¡}|  |¡}|  t|ƒt|ƒ¡ |  ||¡ qd S )Nr   s   xyi x  )r¶  rc  rÇ  r·  rÓ   rÊ   )r*   r¹  rÐ   r  r  r   r   r   Útest_large_pickles	  s   
ûz&AbstractPickleTests.test_large_picklesc              	      s”   t D ]E‰ ˆjˆ d5 ‡ ‡fdd„tdƒD ƒ}ttt|ƒƒ}ˆ t|ƒ|¡ ˆ dkr8|D ]}ˆ t	t
j|ƒ¡ q,W d   ƒ q1 sBw   Y  qd S )Nrœ  c                    s   g | ]
}ˆ  d | ˆ ¡‘qS ©rº   ©r·  )rŸ  r   ©r¹  r*   r   r   r   ž	  ó    zDAbstractPickleTests.test_int_pickling_efficiency.<locals>.<listcomp>éF   rº   )r¶  rÑ   rø   r·   ÚmaprÇ  rÊ   rÂ  r  r   r   ÚLONG)r*   ZpicklesZsizesrC  r   rÊ  r   Útest_int_pickling_efficiencyš	  s   €ùÿz0AbstractPickleTests.test_int_pickling_efficiencyc                 C   s6   |   ||¡}|  t||ƒ¡ |  |¡}|  ||¡ d S r    )r·  r&  r   rÓ   rÊ   )r*   r‘   rƒ  r¹  r5  r6  r   r   r   Ú_check_pickling_with_opcode¦	  s   
z/AbstractPickleTests._check_pickling_with_opcodec                 C   sD   t g d¢ƒ}tD ]}|dkr|  |tj|¡ q|  |tj|¡ qd S )Nr]  r   )rÙ  r¶  rÐ  r   ÚAPPENDr“  ©r*   r‘   r¹  r   r   r   Útest_appends_on_non_lists¬	  s   üz-AbstractPickleTests.test_appends_on_non_listsc                 C   sH   t ddddœƒ}tD ]}|dkr|  |tj|¡ q
|  |tj|¡ q
d S )Nr¾   éþÿÿÿéýÿÿÿr]  r   )rë  r¶  rÐ  r   ÚSETITEMr•  rÒ  r   r   r   Útest_setitems_on_non_dictsµ	  s   üz.AbstractPickleTests.test_setitems_on_non_dictsrL  r  c                 C   s8  d }}h d£}t  |¡D ]m\}}}|dur"|  ||¡ ||kr"d}|dur<|  |jd¡ |j|v r;|  t|ƒ| j¡ n,|jdksM|j|v r]t|ƒ| jkr]|dur\|  || | j¡ d}n|du rh|jdkrh|}|jdkrz|  	|| j¡ |d | }qt|ƒ}|dur‹|  
||¡ dS |durš|  || | j¡ dS dS )a  
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.

        Note that binary objects that are larger than FRAME_SIZE_TARGET are not
        framed by default and are therefore considered a frame by themselves in
        the following consistency check.
        N>   ÚBINUNICODE8Ú	BINBYTES8Ú
BINUNICODEÚBINBYTESr*  ÚFRAMErO  é	   )r   r   ÚassertLessEqualÚassertNotEqualrx   rÇ  ÚFRAME_SIZE_TARGETÚ
assertLessÚFRAME_SIZE_MINr˜  rÊ   )r*   r5  Z	frame_endZframeless_startZframeless_opcodesr   rW   Úposr   r   r   Úcheck_frame_opcodesÂ	  sF   
€
ÿþ
ÿ€
€ÿz'AbstractPickleTests.check_frame_opcodesc              	   C   s¶   t tdƒƒ}tdtjd ƒD ]J}| j|d: |  ||¡}|  |¡}|  ||¡ t|ƒt	tj
|ƒ }|  || jd ¡ |  || jd ¡ |  |¡ W d   ƒ q1 sSw   Y  qd S )Ni † rL  r   rœ  rº   )r·   rø   r   rÅ  rÑ   r·  rÓ   rÊ   rÇ  r   rÜ  ÚassertGreaterrà  rÞ  rä  )r*   r‘   r¹  r5  r6  Zbytes_per_framer   r   r   Útest_framing_many_objectsñ	  s$   

ÿÿÿöÿz-AbstractPickleTests.test_framing_many_objectsc              
   C   s8  d}dd„ t dƒD ƒ}d| g|¢d| ‘d| ‘}t dtjd	 ƒD ]w}d
D ]r}| j||da |s9|  ||¡}n$t| dƒsF	 W d   ƒ q&t ¡ }| j||d}||_	| 
|¡ | ¡ }|  |¡}	|  dd„ |D ƒdd„ |	D ƒ¡ |  ||	¡ ttj|ƒ}
|  |
d	¡ |  |¡ W d   ƒ q&1 s“w   Y  q&q"d S )Ni   c                 S   s   g | ]}|g‘qS r   r   r!  r   r   r   r   
  r6  zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>r‘  ó   xó   yÚzrL  r   )FT)r¹  ÚfastÚpickler©r„   c                 S   r  r   ©rÇ  rž  r   r   r   r   
  r¡  c                 S   r  r   rí  rž  r   r   r   r   
  r¡  )rø   r   rÅ  rÑ   r·  rÌ   r2   r<   rë  rê  Údumpr=   rÓ   rÊ   r   rÜ  rä  )r*   ÚNZsmall_itemsr‘   r¹  rê  r5  Úbufrë  r6  Ún_framesr   r   r   Útest_framing_large_objects
  s6   
ø	

ÿèÿÿz.AbstractPickleTests.test_framing_large_objectsc                    sØ   t jdk rd S ddd„}| j‰d}ttfD ]T‰ ‡ ‡fdd„t|ƒD ƒ}tdt jd ƒD ]=}|  ||¡}||ƒ}|  tt j	|ƒd¡ |  ||  
|¡¡ ||d	d
„ ƒ}|  tt j	|ƒtt j	|ƒ¡ |  ||  
|¡¡ q+qd S )NrL  c           
      S   sˆ   g }d}t  | ¡D ]\}}}|jdkr| |¡ q	tƒ }d}t|ƒD ]\}	}|r-||	ƒr-q"|| ||… 7 }|| }q"|| |d… 7 }|S )z+Remove frame opcodes from the given pickle.rÝ  rÜ  r   N)r   r   rx   rÃ   r,  Ú	enumerate)
r5  Z
keep_frameZframe_startsZframe_opcode_sizerƒ  Ú_rã  Z	newpickleZlast_frame_endrÿ  r   r   r   Úremove_frames%
  s   

€
z?AbstractPickleTests.test_optional_frames.<locals>.remove_framesé   c                    s   i | ]
}|ˆ |gƒˆ “qS r   r   r!  ©Z
bytes_typeÚ
frame_sizer   r   Ú
<dictcomp>=
  rË  z<AbstractPickleTests.test_optional_frames.<locals>.<dictcomp>r   r   c                 S   s   | d S )Nrº   r   )rÿ  r   r   r   rÖ  F
  s    z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>r    )r   rÅ  rà  r‚   r,  rø   r·  rÊ   r   rÜ  rÓ   rá  )r*   rõ  Z
num_framesr‘   r¹  r5  Zframeless_pickleZsome_frames_pickler   r÷  r   Útest_optional_frames!
  s&   


ÿöýz(AbstractPickleTests.test_optional_framesc                    s|  G dd„ dƒ}t dtjd ƒD ]¬}dd„ t tdƒƒD ƒ}| dˆ jd	 d  ¡ |ƒ }ˆ  ||¡ |¡ | ¡ }ˆ  	|¡}ˆ  
||¡ ˆ  t|jƒd¡ ~t ¡  ˆ  
| ¡ |¡ t|ƒd ˆ j d }ˆ  t|jƒ|¡ ˆ  t|jƒd
| d ¡ dd„ |jD ƒ}‡ fdd„|D ƒ}	‡ fdd„|D ƒ}
dd„ |D ƒ}|	D ]}ˆ  |d
ˆ j |¡ qˆ  t|ƒt|	ƒt|
ƒ d |¡ qd S )Nc                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	zYAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.c                 S   s
   g | _ d S r    )Úchunksr.   r   r   r   rA   O
  rc   zbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__c                 S   ó   | j  |¡ d S r    )rû  rÃ   )r*   Úchunkr   r   r   r@   Q
  rA  z_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writec                 S   s   d  | j¡S )Nrw  )r«  rû  r.   r   r   r   Úconcatenate_chunksS
  rS   zlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunksN)r7   r8   r9   rB   rA   r@   rþ  r   r   r   r   ÚChunkAccumulatorM
  s
    rÿ  rL  r   c                 S   s,   g | ]}t |ƒ d ¡|d dt |ƒif‘qS )rç   rH  rÿ  )ri   ré   r!  r   r   r   r   W
  s    $ÿzSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>g     ˆÃ@Z0123456789abcdefr3  rº   rK  c                 S   r  r   rí  )rŸ  rÄ   r   r   r   r   {
  r¡  c                    s   g | ]	}|ˆ j kr|‘qS r   ©rà  ©rŸ  rº  r.   r   r   r   |
  s    
ÿc                    s*   g | ]}d |  k rˆ j k rn q|‘qS ©rÝ  r   r  r.   r   r   r   ~
  s
    ÿÿc                 S   s   g | ]}|d kr|‘qS r  r   r  r   r   r   r   €
  r#  )rø   r   rÅ  r4  rÃ   rà  rë  rî  rþ  rÓ   rÊ   rå  rÇ  rû  r   Ú
gc_collectr˜  rÞ  rá  )r*   rÿ  r¹  ZobjectsÚwriterr5  Zreconstructedrñ  Zchunk_sizesZlarge_sizesZmedium_sizesZsmall_sizesZ
chunk_sizer   r.   r   Ú+test_framed_write_sizes_with_delayed_writerK
  sB   	
ÿÿ
ÿ
þÍz?AbstractPickleTests.test_framed_write_sizes_with_delayed_writerc              
   C   sŽ   G dd„ dƒa ttjd ƒD ]6}t jt jjt jjjfD ](}| j||d |  |  	||¡¡}|  
||¡ W d   ƒ q1 s>w   Y  qqd S )Nc                   @   ó   e Zd ZG dd„ dƒZdS )ÚNestedc                   @   r  )zNested.Ac                   @   r  )z
Nested.A.Bc                   @   r\   )zNested.A.B.CNr^   r   r   r   r   rN   ’
  r_   rN   N)r7   r8   r9   rN   r   r   r   r   ru  ‘
  ó    ru  N)r7   r8   r9   ru  r   r   r   r   ÚA
  r  r	  N)r7   r8   r9   r	  r   r   r   r   r  
  r  r  r   )r¹  r‘   )r  rø   r   rÅ  r	  ru  rN   rÑ   rÓ   r·  rË   )r*   r¹  r‘   r6  r   r   r   Útest_nested_names
  s   þÿÿz%AbstractPickleTests.test_nested_namesc              	   C   sˆ   G dd„ dƒa tjt j t _dt _ttjd ƒD ]'}| j	|d |  
|  t |¡¡}|  |t ¡ W d   ƒ q1 s:w   Y  qt `d S )Nc                   @   r\   )Ú	RecursiveNr^   r   r   r   r   r  œ
  r_   r  zRecursive.mod.Recursiver   rœ  )r  r¦  Úmodulesr8   Úmodr9   rø   r   rÅ  rÑ   rÓ   r·  rË   )r*   r¹  r6  r   r   r   Útest_recursive_nested_namesš
  s   þz/AbstractPickleTests.test_recursive_nested_namesc              
   C   s&  G dd„ dƒa t jt jt ƒ jt jjt jjt  ¡ jf}t jt ft jjt jff}tt	j
d ƒD ]c}|D ]*}| j||d |  |  ||¡¡}|  |ƒ |ƒ ¡ W d   ƒ q11 sVw   Y  q1|D ]1\}}|ƒ }| j||d |  |  ||¡¡}|  ||ƒ||ƒ¡ W d   ƒ q^1 sŠw   Y  q^q-d S )Nc                   @   s:   e Zd Zedd„ ƒZedd„ ƒZdd„ ZG dd„ dƒZd	S )
ÚPyMethodsTestc                   S   r-   )NÚcheeser   r   r   r   r   r  ©
  ó   zPyMethodsTest.cheesec                 S   r-   )NÚwiner   ©r“   r   r   r   r  ¬
  ó   zPyMethodsTest.winec                 S   r-   )NÚbiscuitsr   r.   r   r   r   r  °
  r  zPyMethodsTest.biscuitsc                   @   s0   e Zd ZdZedd„ ƒZedd„ ƒZdd„ ZdS )	zPyMethodsTest.NestedzNested classc                   S   r-   )NÚketchupr   r   r   r   r   r  µ
  r  zPyMethodsTest.Nested.ketchupc                 S   r-   )NÚmapler   r  r   r   r   r  ¸
  r  zPyMethodsTest.Nested.maplec                 S   r-   )NÚpier   r.   r   r   r   r  ¼
  r  zPyMethodsTest.Nested.pieN)	r7   r8   r9   rB   Ústaticmethodr  rœ   r  r  r   r   r   r   r  ³
  s    

r  N)	r7   r8   r9   r  r  rœ   r  r  r  r   r   r   r   r  ¨
  s    

r  r   ©r¹  Úmethod)r  r  r  r  r  r  r  r  rø   r   rÅ  rÑ   rÓ   r·  rÊ   )r*   Z
py_methodsZpy_unbound_methodsr¹  r  r6  r“   r‘   r   r   r   Útest_py_methods¦
  s2   ú	þþþþûz#AbstractPickleTests.test_py_methodsc                 C   s*  G dd„ dt ƒadjdftjdfg d¢jdftjg d¢ffdd	hjd
ftjdd	hd	fftj	dft
jdftg d¢ƒjd
ftjtg d¢ƒd	fft d¡jdftjjt d¡dfff}ttjd ƒD ]3}|D ].\}}| j||d |  |  ||¡¡}|  ||Ž ||Ž ¡ W d   ƒ qc1 sŒw   Y  qcq_d S )Nc                   @   s   e Zd ZG dd„ deƒZdS )ÚSubclassc                   @   r\   )zSubclass.NestedNr^   r   r   r   r   r  Ú
  r_   r  N)r7   r8   r9   ri   r  r   r   r   r   r  Ù
  s    r  Úabcd)rÄ   )r  rÄ   r]  r   r   rº   rÈ  ))rm   r   )rn   rº   )s   abcr  )r   rº   rº   Zsweet)re  re  r  )rÛ  r  Úindexri   Ú__len__r·   Ú__contains__rö   rw   r  r,  Ú	maketransÚcountr  rø   r   rÅ  rÑ   rÓ   r·  rÊ   )r*   Z	c_methodsr¹  r  r+   r6  r   r   r   Útest_c_methods×
  s,   ëþÿÿz"AbstractPickleTests.test_c_methodsc              
   C   sô   t ddƒddfttdƒddftjddftjd	d	ftƒ d
dft 	¡ ddft 
¡ ddft ¡ ddfg}|D ]D\}}}t dƒD ]:}| jt|ƒ|d' |  ||¡}|  d||f  ¡ |¡ |  t|  |¡ƒt|ƒ¡ W d   ƒ q<1 sqw   Y  q<q3d S )Nr   rJ  Ú__builtin__ÚxrangeZ123Ú	itertoolsÚimaprO  rQ  Ú
exceptionsrý   rS  ÚIterableUserDictÚUserListrR  ÚdefaultdictrK  )rt   r¹  zc%s
%s)rø   rÍ  r4  rN  rO  rP  rQ  rý   rR  rS  r+  r,  rÑ   rt   r·  r%  ré   rË   rÓ   )r*   ZtestsÚvalr  rx   r¹  r5  r   r   r   Útest_compat_pickleú
  s$   


ø
ýÿÿz&AbstractPickleTests.test_compat_picklec              	   C   s   dd„ }t dtjd ƒD ]#}|  ttjf¡ t |  ||¡¡ W d   ƒ q1 s*w   Y  q|`	t dtjd ƒD ]#}|  ttjf¡ t |  ||¡¡ W d   ƒ q:1 sXw   Y  q:|j
|_t dtjd ƒD ]#}|  ttjf¡ t |  ||¡¡ W d   ƒ qj1 sˆw   Y  qjd S )Nc                   S   rV   r    r   r   r   r   r   r¯    r$   z6AbstractPickleTests.test_local_lookup_error.<locals>.fr   r   )rø   r   rÅ  rÒ   ÚAttributeErrorr¼  r   r¿  r·  r8   r9   r7   ©r*   r¯  r¹  r   r   r   Útest_local_lookup_error  s    ÿÿÿÿz+AbstractPickleTests.test_local_lookup_errorc                 c   sŠ    d}t |ƒV  t|ƒV  td urAt|ƒ}tj|dd}dtjfD ]!}t|dd|dV  t|ddd	|d
V  t|ddd|d
V  q!d S d S )Nó   abcdefghÚlittle)Ú	byteorderr   ru  )r1  )rŠ   r­   r²   )rL  rº   r[  )rŠ   r­   r®   r²   rZ  )r{   rž   r    r·   r4  Ú
from_bytesr´   rŸ   )r*   Z
bytestringr¸   rb   r²   r   r   r   Úbuffer_like_objects%  s(   €

ÿÿ
þõz'AbstractPickleTests.buffer_like_objectsc                 C   s   |   ¡ D ]y}tdtjd ƒD ]n}|  ||¡}|jr#|dkr#|  d|¡ |  ttj	|ƒd¡ |dkra|  ttj
|ƒ|jr=dnd¡ |  ttj|ƒ|jrLdnd¡ dd„ }| j|||d}|  ||¡ |  |¡}|  ||¡ |  t|ƒt|ƒ¡ |  ||¡ qqd S )Nr   r   r~   r2  c                 S   r-   ©NTr   ©r‘   r   r   r   Úbuffer_callbackI  r$   zAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback©r9  )r6  rø   r   rÅ  r·  r˜   r%  rÊ   r   ÚNEXT_BUFFERÚSHORT_BINBYTESr—   r*  rÓ   rÍ   rË   rt   )r*   r‘   r¹  rÐ   r9  Údata2r§   r   r   r   Útest_in_band_buffers9  s0   ÿÿÿ
éÿz(AbstractPickleTests.test_in_band_buffersc              
      sÒ  |   ¡ D ]â}tddƒD ] }|  t¡ | j||g jd W d   ƒ q1 s&w   Y  qtdtjd ƒD ]±}g ‰ ‡ fdd„}| j|||d}|  d|¡ |  	t
tj|ƒd¡ |  	t
tj|ƒd¡ |  	t
tj|ƒd¡ |  	t
tj|ƒ|jrvdnd¡ |jr†|  	tˆ d ƒd¡ |  tj¡ |  |¡ W d   ƒ n1 sœw   Y  | j|ˆ d}|jr²|  ||¡ n|  t|ƒt|ƒ¡ |  	||¡ | j|tˆ ƒd}|jrÕ|  ||¡ q4|  t|ƒt|ƒ¡ |  	||¡ q4qd S )	Nr   r~   r:  r   c                    s   ˆ   |  ¡ ¡S r    )rÃ   rµ   )r¶   ©Úbuffersr   r   rÖ  b  s    z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>r2  r?  )r6  rø   rÒ   rï   r·  rÃ   r   rÅ  r)  rÊ   r   r<  r*  r;  ÚREADONLY_BUFFERr—   r˜   r‚   r!  rÓ   rš   rË   rt   Úiter)r*   r‘   r¹  r9  rÐ   r§   r   r?  r   Útest_oob_buffersX  sJ   ÿÿÿÿÿàúz$AbstractPickleTests.test_oob_buffersc                 C   st   t dƒ}tdtjd ƒD ]+}g }|j}| j|||d}tt|ƒ}| j||d}|  	t
|ƒt
|ƒ¡ |  ||¡ qd S ©Nó   foobarr~   r   r:  r?  )r{   rø   r   rÅ  rÃ   r·  rÍ  r,  rÓ   rË   rt   rÊ   )r*   r‘   r¹  r@  r9  rÐ   r§   r   r   r   Ú%test_oob_buffers_writable_to_readonly‚  s   
øz9AbstractPickleTests.test_oob_buffers_writable_to_readonlyc              	   C   sV   t  d¡}tddƒD ]}|  t j¡ |  ||¡ W d   ƒ q
1 s#w   Y  q
d S )NrE  r   r~   )r   r   rø   rÒ   ÚPickleErrorr·  )r*   r¶   r¹  r   r   r   Útest_picklebuffer_error  s   
ÿÿz+AbstractPickleTests.test_picklebuffer_errorc                 C   sR   dd„ }t  d¡}|  t¡ | j|d|d W d   ƒ d S 1 s"w   Y  d S )Nc                 S   s   dd  d S rÄ  r   r?  r   r   r   r9  —  rS   zGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callbackrE  r~   r:  )r   r   rÒ   ÚZeroDivisionErrorr·  )r*   r9  r¶   r   r   r   Útest_buffer_callback_error–  s
   
"ÿz.AbstractPickleTests.test_buffer_callback_errorc              	   C   sª   t  d¡}tdt jd ƒD ]E}| j||g jd}|  t¡ | j|t	ƒ d W d   ƒ n1 s0w   Y  |  t j
¡ | j|g d W d   ƒ q1 sMw   Y  qd S rD  )r   r   rø   rÅ  r·  rÃ   rÒ   rU  rÓ   r   r!  )r*   r¶   r¹  rÐ   r   r   r   Útest_buffers_error  s   
ÿÿúz&AbstractPickleTests.test_buffers_errorc                 C   s8   t dtjd ƒD ]}| jd|d d}| j|d d}qd S )Nr~   r   r:  r?  )rø   r   rÅ  r·  rÓ   )r*   r¹  Zdata_pickledrÐ   r   r   r   Ú+test_inband_accept_default_buffers_argument¨  s   þz?AbstractPickleTests.test_inband_accept_default_buffers_argumentNzTest needs Numpyc                    s„   ‡fdd„‰‡fdd„‰ ‡ ‡‡fdd„}t  d¡}||ƒ ||d d d… ƒ t  d	¡ d
¡}||ƒ ||jƒ ||d d d… ƒ d S )Nc                    ó&   t j | |¡ ˆ  | jj|jj¡ d S r    )ÚnpÚtestingÚassert_equalrÊ   ÚctypesrÐ   ©r"   rÅ   r.   r   r   Úcheck_no_copy¯  ó   z=AbstractPickleTests.test_buffers_numpy.<locals>.check_no_copyc                    rM  r    )rN  rO  rP  rß  rQ  rÐ   rR  r.   r   r   Ú
check_copy³  rT  z:AbstractPickleTests.test_buffers_numpy.<locals>.check_copyc                    sà   t dtjd ƒD ]}ˆ | |¡}ˆ |¡}ˆ | |ƒ qt dtjd ƒD ]}dd„ }ˆj| ||d}ˆ |¡}ˆ | |ƒ q#t dtjd ƒD ])}g }|j}ˆj| ||d}ˆj||d}| jjsb| jjrhˆ| |ƒ qDˆ | |ƒ qDd S )Nr   r   r~   c                 S   r-   r7  r   )rô  r   r   r   rÖ  ¾  ó    zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>r:  r?  )	rø   r   rÅ  r·  rÓ   rÃ   r²   r˜   r™   )Úarrr¹  rÐ   r§   r9  r@  ©rU  rS  r*   r   r   Úcheck_array·  s$   

øz;AbstractPickleTests.test_buffers_numpy.<locals>.check_arrayrM  rº   é   r\  )rN  ZarangeZreshapeÚT)r*   rY  rW  r   rX  r   Útest_buffers_numpy­  s   

z&AbstractPickleTests.test_buffers_numpy)‡r7   r8   r9   Z	optimizedrÇ   rÛ   rµ  rÏ   r»  r¼  rÃ  r#   rË  rÍ  rÑ  rÚ  rÜ  rÝ  rÞ  rß  rä  rå  rç  rì  rî  rï  rð  rñ  rò  ró  rô  rõ  rö  r÷  rø  rù  rü  r   r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r$  r+  r.  r0  r5  r7  r   r9  r>  r?  rA  rB  rH  rK  rM  rN  rS  rW  rY  rf  rj  rn  rp  rw  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   Zskip_if_pgo_taskræ  rò  rú  r  r
  r  r  r$  r.  r1  r6  r>  rC  rF  rH  rJ  rK  rL  ÚunittestZskipIfrN  r\  r   r   r   r   r´  ¤  s   




	'							


	
/
 *
A1#*r´  c                   @   sz   e Zd Zeeddddd„ ƒZeeddddd„ ƒZeedddd	d
„ ƒZeeddddd„ ƒZ	eeddddd„ ƒZ
dS )ÚBigmemPickleTestsgÍÌÌÌÌÌ@F)ÚsizeZmemuseÚdry_runc              
   C   sš   dd| > }zCt D ];}|dk rq	| j|d& |  ttf¡ | j||d W d   ƒ n1 s0w   Y  W d   ƒ q	1 s?w   Y  q	W d }d S d }w )Nr   r1  rº   rœ  rì  )r¶  rÑ   rÒ   rï   r"  r·  )r*   r_  rÐ   r¹  r   r   r   Útest_huge_long_32bß  s   ÿ€ÿýz$BigmemPickleTests.test_huge_long_32bg      @c              	   C   s¸   d|d  }zRt D ]J}|dk rq	| j|d5 z)| j||d}tjt dt|ƒ¡ }| |¡}|  	|||t|ƒ |… ¡ W d }nd }w W d   ƒ q	1 sNw   Y  q	W d }d S d }w )Nó   abcdrL  rK  rœ  rì  r  )
r¶  rÑ   r·  r   rÛ  r  r  rÇ  r  rÊ   ©r*   r_  rÐ   r¹  r5  ÚheaderZ
data_startr   r   r   Útest_huge_bytes_32bð  s(   ÿ
þöýz%BigmemPickleTests.test_huge_bytes_32bc              
   C   s  d|d  }z|t D ]t}|dk rq	| j|d_ |dkrA|  ttf¡ | j||d W d   ƒ n1 s4w   Y  	 W d   ƒ q	z)| j||d}tjt 	dt
|ƒ¡ }| |¡}|  |||t
|ƒ |… ¡ W d }nd }w W d   ƒ q	1 sxw   Y  q	W d }d S d }w )Ns   acbdrL  rK  rœ  rì  ú<Q)r¶  rÑ   rÒ   rï   r"  r·  r   rÙ  r  r  rÇ  r  rÊ   rc  r   r   r   Útest_huge_bytes_64b  s4   ÿúÿ
þðýz%BigmemPickleTests.test_huge_bytes_64br1  c              	   C   sà   d|d  }zft D ]^}|dkrq	| j|dI z=| j||d}tjt dt|ƒ¡ }| d¡}|  	|||t|ƒ |… ¡ |  	| 
d¡tdƒ | d¡ t|ƒ¡ W d }nd }w W d   ƒ q	1 sbw   Y  q	W d }d S d }w )Nr  rL  r   rœ  rì  r  rb  )r¶  rÑ   r·  r   rÚ  r  r  rÇ  r  rÊ   Úrindexrc  r   r   r   Útest_huge_str_32b#  s2   ÿ
þÿÿôýz#BigmemPickleTests.test_huge_str_32bc              
   C   s4  d|d  }zt D ]ˆ}|dkrq	| j|ds |dk rA|  ttf¡ | j||d W d   ƒ n1 s4w   Y  	 W d   ƒ q	z=| j||d}tjt 	dt
|ƒ¡ }| d¡}|  |||t
|ƒ |… ¡ |  | d¡t
dƒ | d¡ t
|ƒ¡ W d }nd }w W d   ƒ q	1 sŒw   Y  q	W d }d S d }w )Nr  rL  r   rœ  rì  rf  rb  )r¶  rÑ   rÒ   rï   r"  r·  r   rØ  r  r  rÇ  r  rÊ   rh  rc  r   r   r   Útest_huge_str_64b>  s>   ÿüÿ
þÿÿðýz#BigmemPickleTests.test_huge_str_64bN)r7   r8   r9   r   r	   ra  re  r
   rg  ri  rj  r   r   r   r   r^  Û  s    



r^  c                   @   ó   e Zd ZdZdZdd„ ZdS )r©  z4No __reduce_ex__ here, but inheriting it from objectr   c                 C   s   d| _ tdfS )Nr   r   )rª  r©  r.   r   r   r   rd   _  ó   zREX_one.__reduce__N©r7   r8   r9   rB   rª  rd   r   r   r   r   r©  \  ó    r©  c                   @   ó   e Zd ZdZdZdd„ ZdS )r®  z1No __reduce__ here, but inheriting it from objectNc                 C   ó   || _ tdfS rZ   ©r¯  r®  ©r*   r¹  r   r   r   r…   f  rl  zREX_two.__reduce_ex__©r7   r8   r9   rB   r¯  r…   r   r   r   r   r®  c  rn  r®  c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )r±  Nc                 C   rp  rZ   rq  rr  r   r   r   r…   l  rl  zREX_three.__reduce_ex__c                 C   ó   t dƒ‚)Nz#This __reduce__ shouldn't be called)r   r.   r   r   r   rd   o  s   zREX_three.__reduce__)r7   r8   r9   r¯  r…   rd   r   r   r   r   r±  j  s    r±  c                   @   ro  )r³  z(Calling base class method should succeedNc                 C   s   || _ t | |¡S r    )r¯  r   r…   rr  r   r   r   r…   u  s   zREX_four.__reduce_ex__rs  r   r   r   r   r³  r  rn  r³  c                   @   rk  )rµ  z-This one used to fail with infinite recursionr   c                 C   s   d| _ t | ¡S rà  )rª  r   rd   r.   r   r   r   rd   |  ro   zREX_five.__reduce__Nrm  r   r   r   r   rµ  y  rn  rµ  c                   @   ó2   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ ZdS )rÙ  z]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    Nc                 C   s   |d ur	|| _ d S g | _ d S r    rÕ  )r*   r¸   r   r   r   rA   „  ó   zREX_six.__init__c                 C   ó   t | ƒt |ƒu o| j|jkS r    )rt   r¸   rP   r   r   r   rR   †  rv  zREX_six.__eq__c                 C   rü  r    )r¸   rÃ   )r*   Úitemr   r   r   rÃ   ˆ  rA  zREX_six.appendc                 C   s   t | ƒdd t| jƒd fS rZ   )rt   rB  r¸   r.   r   r   r   rd   Š  rÞ   zREX_six.__reduce__r    )r7   r8   r9   rB   rA   rR   rÃ   rd   r   r   r   r   rÙ  €  ó    
rÙ  c                   @   ru  )rë  z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    Nc                 C   s   |d ur	|| _ d S i | _ d S r    rè  )r*   ré  r   r   r   rA   ‘  rv  zREX_seven.__init__c                 C   rw  r    )rt   ré  rP   r   r   r   rR   “  rv  zREX_seven.__eq__c                 C   s   || j |< d S r    rè  )r*   rò   rb   r   r   r   Ú__setitem__•  rj   zREX_seven.__setitem__c                 C   s   t | ƒdd d t| j ¡ ƒfS rZ   )rt   rB  ré  r¸   r.   r   r   r   rd   —  rv  zREX_seven.__reduce__r    )r7   r8   r9   rB   rA   rR   rz  rd   r   r   r   r   rë    ry  rë  c                   @   ru  )r  zUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    Nc                 C   ra   r    ©r  ©r*   r  r   r   r   rA   ž  rc   zREX_state.__init__c                 C   rw  r    ©rt   r  rP   r   r   r   rR      rv  zREX_state.__eq__c                 C   ra   r    r{  r|  r   r   r   Ú__setstate__¢  rc   zREX_state.__setstate__c                 C   s   t | ƒd| jfS rZ   r}  r.   r   r   r   rd   ¤  rA  zREX_state.__reduce__r    )r7   r8   r9   rB   rA   rR   r~  rd   r   r   r   r   r  š  ry  r  c                   @   ó   e Zd ZdZdS )rx  r   N©r7   r8   r9   rt  r   r   r   r   rx  ª  ó    rx  c                   @   r  )ÚMyFloatg      ð?Nr€  r   r   r   r   r‚  ­  r  r‚  c                   @   r  )Ú	MyComplexy      ð?        Nr€  r   r   r   r   rƒ  °  r  rƒ  c                   @   r  )ÚMyStrrm  Nr€  r   r   r   r   r„  ³  r  r„  c                   @   r  )Ú	MyUnicodeu	   hello áˆ´Nr€  r   r   r   r   r…  ¶  r  r…  c                   @   r  )r  r]  Nr€  r   r   r   r   r  ¹  r  r  c                   @   s   e Zd Zg d¢ZdS )rÐ  r]  Nr€  r   r   r   r   rÐ  ¼  rT   rÐ  c                   @   s   e Zd ZdddœZdS )ræ  r   rº   rl   Nr€  r   r   r   r   ræ  ¿  s    ræ  c                   @   s   e Zd ZddhZdS )r  rm   rn   Nr€  r   r   r   r   r  Â  rT   r  c                   @   s   e Zd ZeddhƒZdS )r  rm   rn   N)r7   r8   r9   r  rt  r   r   r   r   r  Å  s    r  c                   @   rM   )ÚMyIntWithNewc                 C   r'   r    )ÚAssertionError)r“   rb   r   r   r   r¥   Î  r$   zMyIntWithNew.__new__N)r7   r8   r9   r¥   r   r   r   r   r†  Í  rT   r†  c                   @   s   e Zd ZejZdS )r|  N)r7   r8   r9   r4  r¥   r   r   r   r   r|  Ñ  ó    
r|  c                   @   s   e Zd ZdgZdS )r§  rÀ   N)r7   r8   r9   rÉ   r   r   r   r   r§  Õ  rˆ  r§  c                   @   rC   )r~  c                 O   rt  )Nz3SimpleNewObj.__init__() didn't expect to get called)rU  r¢   r   r   r   rA   Ù  rª   zSimpleNewObj.__init__c                 C   rs   r    )r4  rO   rP   r   r   r   rR   Ü  rv  zSimpleNewObj.__eq__N)r7   r8   r9   rA   rR   r   r   r   r   r~  Ø  re   r~  c                   @   rM   )r£  c                 C   s   d|  dfS )Nú%Xr3  r   r.   r   r   r   Ú__getnewargs__à  rS   zComplexNewObj.__getnewargs__N)r7   r8   r9   rŠ  r   r   r   r   r£  ß  rT   r£  c                   @   rM   )r¥  c                 C   s   d|  fddifS )Nr‰  Úbaser3  r   r.   r   r   r   Ú__getnewargs_ex__ä  rÒ  z!ComplexNewObjEx.__getnewargs_ex__N)r7   r8   r9   rŒ  r   r   r   r   r¥  ã  rT   r¥  c                   @   rM   )r·  c                 C   s
   | j  d S r    )rÀ   )r*   rò   r   r   r   Ú__getattr__è  rc   zBadGetattr.__getattr__N)r7   r8   r9   r  r   r   r   r   r·  ç  rT   r·  c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚAbstractPickleModuleTestsc              	   C   óB   t tdƒ}z| ¡  |  t| jd|¡ W t t¡ d S t t¡ w ©Nr’  é{   ©rª  r   ÚcloserÒ   rï   rî  r   Úunlink©r*   r¯  r   r   r   Útest_dump_closed_fileî  ó
   
z/AbstractPickleModuleTests.test_dump_closed_filec              	   C   r  r  r’  r•  r   r   r   Útest_load_closed_fileö  r—  z/AbstractPickleModuleTests.test_load_closed_filec                 C   sB   t  ¡ }di dg}|  ||¡ | d¡ |  |¡}|  ||¡ d S )Nr‘  é|   r   )r2   r<   rî  r4   ÚloadrÊ   )r*   ÚstreamrÐ   r6  r   r   r   Útest_load_from_and_dump_to_fileþ  s   


z9AbstractPickleModuleTests.test_load_from_and_dump_to_filec                 C   s   |   tjd¡ d S r}   )rÊ   r   rÅ  r.   r   r   r   Útest_highest_protocol  s   z/AbstractPickleModuleTests.test_highest_protocolc                 C   s^   t  ¡ }|  d|d¡ | jd|dd |  dd¡ | jddd |  |d¡ | j|dd d S )Nr‘  r¾   )Úfiler„   rì  )r2   r<   rî  r·  ÚPicklerr•  r   r   r   Útest_callapi
  s   z&AbstractPickleModuleTests.test_callapic              	   C   sV   t tdƒ}ztD ]}|  t| jd||¡ qW | ¡  t t¡ d S | ¡  t t¡ w )NÚwr‘  )	rª  r   r¶  rÒ   rU  rî  r“  r   r”  r0  r   r   r   Útest_dump_text_file  s   
ÿÿz-AbstractPickleModuleTests.test_dump_text_filec                 C   s(   t  d¡}|  ttjtjf| j|¡ d S )Ns   X''.)	r2   r<   rÒ   r  r  rY  r   r!  rš  )r*   rº  r   r   r   Útest_incomplete_input  s   
z/AbstractPickleModuleTests.test_incomplete_inputc                 C   sN   G dd„ d| j ƒ}G dd„ d| jƒ}|  tj|ƒ jd¡ |  tj|ƒ j¡ d S )Nc                   @   rM   )z;AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklerc                 S   rV   r    r   r.   r   r   r   rA   %  rV  zDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__NrX   r   r   r   r   Ú
BadPickler$  rT   r¤  c                   @   rM   )z=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklerc                 S   rV   r    r   r.   r   r   r   rA   (  rV  zFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__NrX   r   r   r   r   ÚBadUnpickler'  rT   r¥  r   )rŸ  Ú	UnpicklerrÒ   r   r¼  rî  r!  rš  )r*   r¤  r¥  r   r   r   Útest_bad_init!  s   z'AbstractPickleModuleTests.test_bad_initc           	   	   C   sð   t dƒ}tddƒD ]}|  t¡ |||g jd W d   ƒ q	1 s#w   Y  q	tdtjd ƒD ]D}g }|j}||||d}|  d|¡ |  t	|d ƒd¡ |  tj
¡ ||ƒ W d   ƒ n1 sdw   Y  |||d}|  ||¡ q1d S )Ns   foor   r~   )r„   r9  r   r?  )r{   rø   rÒ   rï   rÃ   r   rÅ  r)  rÊ   r‚   r!  rË   )	r*   r·  rÓ   r‘   r¹  r@  r9  rÐ   r§   r   r   r   Úcheck_dumps_loads_oob_buffers-  s*   ÿÿÿ
ÿõz7AbstractPickleModuleTests.check_dumps_loads_oob_buffersc                 C   s   |   | j| j¡ d S r    )r¨  r·  rÓ   r.   r   r   r   Útest_dumps_loads_oob_buffersE  s   z6AbstractPickleModuleTests.test_dumps_loads_oob_buffersc                    s(   ‡ fdd„}‡ fdd„}ˆ   ||¡ d S )Nc                    s$   t  ¡ }ˆ j| |fi |¤Ž | ¡ S r    )r2   r<   rî  r=   )r‘   r£   r¯  r.   r   r   r·  K  s   zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.dumpsc                    s   t  | ¡}ˆ j|fi |¤ŽS r    )r2   r<   rš  )rÐ   r£   r¯  r.   r   r   rÓ   P  s   
zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads)r¨  )r*   r·  rÓ   r   r.   r   Útest_dump_load_oob_buffersI  s   z4AbstractPickleModuleTests.test_dump_load_oob_buffersN)r7   r8   r9   r–  r˜  rœ  r  r   r¢  r£  r§  r¨  r©  rª  r   r   r   r   rŽ  ì  s    
	rŽ  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚAbstractPersistentPicklerTestsc                 C   sJ   t |tƒr|d dkr|  jd7  _t|ƒS |dkr#|  jd7  _dS d S )Nrº   r   r   Útest_false_valuer  )r«   r4  Úid_countri   Úfalse_count)r*   r   r   r   r   Úpersistent_id]  s   z,AbstractPersistentPicklerTests.persistent_idc                 C   s0   |s|  j d7  _ dS |  jd7  _t|ƒ}|S )Nr   r¬  )Úload_false_countÚ
load_countr4  )r*   Zoidr   r   r   r   Úpersistent_loadg  s   z.AbstractPersistentPicklerTests.persistent_loadc              	   C   sŠ   t tdƒƒdg }tD ]7}d| _d| _d| _d| _|  |  |  	||¡¡|¡ |  | jd¡ |  | jd¡ |  | jd¡ |  | jd¡ qd S )Nr‘  r¬  r   r~   r   )
r·   rø   r¶  r­  r®  r°  r±  rÊ   rÓ   r·  )r*   ÚLr¹  r   r   r   Útest_persistenceq  s   ÷z/AbstractPersistentPicklerTests.test_persistenceN)r7   r8   r9   r¯  r²  r´  r   r   r   r   r«  W  s    

r«  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú&AbstractIdentityPersistentPicklerTestsc                 C   ó   |S r    r   )r*   r‘   r   r   r   r¯    r$   z4AbstractIdentityPersistentPicklerTests.persistent_idc                 C   r¶  r    r   )r*   Úpidr   r   r   r²  „  r$   z6AbstractIdentityPersistentPicklerTests.persistent_loadc                 C   s2   |   |  ||¡¡}|  |t|ƒ¡ |  ||¡ d S r    )rÓ   r·  rÆ  rt   rÊ   )r*   r‘   r¹  r6  r   r   r   Ú_check_return_correct_type‡  s   zAAbstractIdentityPersistentPicklerTests._check_return_correct_typec                 C   sD   t D ]}|dkr|  dd¡ qddddtfD ]}|  ||¡ qqd S )Nr   r¿   s   abc
zabc
r¾   g*\Âõ(¼¿)r¶  r¸  ri   )r*   r¹  r‘   r   r   r   Útest_return_correct_typeŒ  s   ÿûz?AbstractIdentityPersistentPicklerTests.test_return_correct_typec                 C   sB   d}|   tj| j|d¡ tj| d¡ d }|   tj| j|¡ d S )Nu   âˆ…r   r“  rî   )rÒ   r   r¼  r·  ÚPERSIDré   r!  rÓ   )r*   Znon_ascii_strr5  r   r   r   Útest_protocol0_is_ascii_only•  s   zCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_onlyN)r7   r8   r9   r¯  r²  r¸  r¹  r»  r   r   r   r   rµ    s    	rµ  c                   @   sj   e Zd ZdZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	ddœdd„Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )Ú#AbstractPicklerUnpicklerObjectTestsNc                 C   rV   r    r   r.   r   r   r   rµ  ¡  rV  z)AbstractPicklerUnpicklerObjectTests.setUpc                 C   s¤   g d¢}t D ]I}t ¡ }|  ||¡}| |¡ | ¡ }| d¡ | ¡  | |¡ | ¡ }| ¡  | d¡ | ¡  | |¡ | ¡ }|  	||¡ |  
||¡ qd S )N©Úabcdefgr¾  é,   r   )r¶  r2   r<   Úpickler_classrî  r=   r4   ÚtruncateÚ
clear_memorß  rÊ   )r*   rÐ   r¹  r¯  rë  Úfirst_pickledZsecond_pickledZthird_pickledr   r   r   Útest_clear_pickler_memo¥  s$   




éz;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memoc                 C   sh   g d¢}t  ¡ }|  |¡}| |¡ | ¡ }t  ¡ }|  |¡}|j|_| |¡ | ¡ }|  ||¡ d S ©Nr½  )r2   r<   rÀ  rî  r=   Úmemorß  )r*   rÐ   r¯  rë  rÃ  ÚprimedÚprimed_pickledr   r   r   Útest_priming_pickler_memoÅ  s   



z=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memoc           
      C   sÄ   g d¢}t  ¡ }|  |¡}| |¡ | ¡ }t  ¡ }|  |¡}|j|_| |¡ | ¡ }|  t  |¡¡}| ¡ }|  ||¡ |  t  |¡¡}|j|_| ¡ }	|j 	¡  |  |	|¡ |  
|	|u ¡ d S rÅ  )r2   r<   rÀ  rî  r=   rÆ  Úunpickler_classrš  rÊ   Úclearr&  )
r*   rÐ   r¯  rë  rÃ  rÇ  rÈ  Ú	unpicklerZunpickled_data1Zunpickled_data2r   r   r   Útest_priming_unpickler_memo×  s&   




z?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memoc                 C   sÈ   g d¢}t  ¡ }|  |¡}| |¡ | ¡ }g d¢}t  ¡ }|  |¡}| |¡ | ¡ }t  ¡ }| |¡ | d¡ |  |¡}|  | 	¡ |¡ | d¡ | 
¡  | |¡ | d¡ |  | 	¡ |¡ d S )Nr½  )r¾  r¿  r¿  r   )r2   r<   rÀ  rî  r=   r@   r4   rÊ  rÊ   rš  rÁ  )r*   Údata1r¯  rë  Zpickled1r=  Zpickled2rÌ  r   r   r   Útest_reusing_unpickler_objectsõ  s(   









zBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectsT©r/   c             	   C   sè   t D ]o}| j|d_ dd„ tdƒD ƒdtg }|ƒ }| j||d}| |¡ | ¡ }d}||| ƒ}|  |¡}	t|ƒD ]}
|rD| ¡ }|  	|	 
¡ |¡ |rZ|  	| ¡ |t|ƒ ¡ q<|  t|	j
¡ W d   ƒ q1 slw   Y  qd S )Nrœ  c                 S   s   g | ]}|t |ƒf‘qS r   rh   rž  r   r   r   r     r#  zSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings.<locals>.<listcomp>iÐ  s   abcderì  r~   )r¶  rÑ   rø   rÇ  rÀ  rî  r=   rÊ  r6   rÊ   rš  rÒ   r  )r*   Zioclassr/   r¹  rÎ  r¯  rë  r5  rï  rÌ  rÿ  rã  r   r   r   Ú_check_multiple_unpicklings  s(   

€ðÿz?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklingsc                 C   r  r    )rÑ  r2   r<   r.   r   r   r   Ú"test_multiple_unpicklings_seekable"  rA  zFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekablec                 C   rÎ  ©NFrÐ  )rÑ  r&   r.   r   r   r   Ú$test_multiple_unpicklings_unseekable%  rÒ  zHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekablec                 C   rÎ  rÓ  )rÑ  r;   r.   r   r   r   Ú!test_multiple_unpicklings_minimal(  s   zEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimalc                 C   sx   t tdƒƒ}tD ]1}tddƒD ])}tjt ¡ |d}| j||d}| |¡ | d¡ |  	|¡}|  
| ¡ |¡ qqd S )Nr‘  r   é   )Zbuffer_sizerì  r   )r·   rø   r¶  r2   ÚBufferedRandomr<   rÀ  rî  r4   rÊ  rÊ   rš  )r*   rÐ   r¹  Zbuf_sizer¯  rë  rÌ  r   r   r   Ú"test_unpickling_buffering_readline-  s   


úÿzFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline)r7   r8   r9   rÀ  rÊ  rµ  rÄ  rÉ  rÍ  rÏ  rÑ  rÒ  rÔ  rÕ  rØ  r   r   r   r   r¼  œ  s     r¼  Zreduce_Ac                   @   rM   )r:  c                 C   s
   t tffS r    )ri   r;  r.   r   r   r   rd   @  rc   zAAA.__reduce__Nr»  r   r   r   r   r:  ?  rT   r:  c                   @   rC   )ÚBBBc                 C   ó
   d| _ d S )Nzsome attribute©rm   r.   r   r   r   rA   D  s   
zBBB.__init__c                 C   rÚ  )NúBBB.__setstate__rÛ  r|  r   r   r   r~  I  rc   rÜ  N)r7   r8   r9   rA   r~  r   r   r   r   rÙ  C  s    rÙ  c                 C   s
   d| _ dS )at  Custom state setter for BBB objects

    Such callable may be created by other persons than the ones who created the
    BBB class. If passed as the state_setter item of a custom reducer, this
    allows for custom state setting behavior of BBB objects. One can think of
    it as the analogous of list_setitems or dict_setitems but for foreign
    classes/functions.
    úcustom state_setterNrÛ  )r‘   r  r   r   r   Úsetstate_bbbM  s   
	rÞ  c                   @   r:   )ÚAbstractCustomPicklerClassz<Pickler implementing a reducing hook using reducer_override.c                 C   sL   t |dd ƒ}|dkrtdfS |dkrtdfS |dkrdS |dkr$td	ƒ‚tS )
Nr7   r¯  )r~   ÚMyClass)úsome strÚgFÚhúThe reducer just failed)rÎ   r4  ri   rï   r¬   )r*   r‘   Zobj_namer   r   r   Úreducer_override\  s   z+AbstractCustomPicklerClass.reducer_overrideN)r7   r8   r9   rB   rå  r   r   r   r   rß  Z  s    rß  c                   @   s"   e Zd Zdd„ Zejdd„ ƒZdS )ÚAbstractHookTestsc              
   C   s8  dd„ }dd„ }dd„ }G dd„ dƒ}t d	tjd
 ƒD ]~}| j|dn t ¡ }|  ||¡}| ||tj	g¡ t 
| ¡ ¡\}}	}
|  |d¡ |  |	d¡ |  |
tj	¡ |  tj¡ | |¡ W d   ƒ n1 sjw   Y  |  td¡ | |¡ W d   ƒ n1 s…w   Y  W d   ƒ q1 s”w   Y  qd S )Nc                   S   rV   r    r   r   r   r   r   r¯  x  r$   z.AbstractHookTests.test_pickler_hook.<locals>.fc                   S   rV   r    r   r   r   r   r   râ  {  r$   z.AbstractHookTests.test_pickler_hook.<locals>.gc                   S   rV   r    r   r   r   r   r   rã  ~  r$   z.AbstractHookTests.test_pickler_hook.<locals>.hc                   @   r\   )z4AbstractHookTests.test_pickler_hook.<locals>.MyClassNr^   r   r   r   r   rà    r_   rà  r   r   rœ  r~   rá  rä  )rø   r   rÅ  rÑ   r2   r<   rÀ  rî  ÚmathÚlogrÓ   r=   rÊ   rË   rÒ   r¼  ZassertRaisesRegexrï   )r*   r¯  râ  rã  rà  r¹  ÚbiorC  Únew_fZsome_strZmath_logr   r   r   Útest_pickler_hooks  s0   ÿÿþ€îÿz#AbstractHookTests.test_pickler_hookc              	   C   s”   t dtjd ƒD ]?}| j|d/ dd„ }t |¡}t ¡ }|  ||¡}| 	|¡ t 
| ¡ ¡}~~|  |ƒ ¡ W d   ƒ q1 sBw   Y  qd S )Nr   r   rœ  c                   S   rV   r    r   r   r   r   r   r¯  £  r$   zEAbstractHookTests.test_reducer_override_no_reference_cycle.<locals>.f)rø   r   rÅ  rÑ   ry  Úrefr2   r<   rÀ  rî  rÓ   r=   r  )r*   r¹  r¯  Úwrré  rC  rê  r   r   r   Ú(test_reducer_override_no_reference_cycle›  s   

ñÿz:AbstractHookTests.test_reducer_override_no_reference_cycleN)r7   r8   r9   rë  r   Zcpython_onlyrî  r   r   r   r   ræ  r  s    (ræ  c                   @   r%   )
ÚAbstractDispatchTableTestsc                 C   sX   t  ¡ }|  |d¡}|  t¡ |j W d   ƒ n1 sw   Y  |  t|dƒ¡ d S )Nr   Údispatch_table)r2   r<   rÀ  rÒ   r/  rð  r  rÌ   )r*   r¯  rC  r   r   r   Útest_default_dispatch_table¶  s   ÿz6AbstractDispatchTableTests.test_default_dispatch_tablec                    s@   ˆ  ¡ ‰G ‡fdd„dˆjƒ‰ d‡ ‡‡fdd„	}ˆ |ˆ¡ d S )Nc                       s   e Zd Z” ZdS )zGAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r7   r8   r9   rð  r   )Údtr   r   Ú	MyPicklerÂ  r  ró  c                    s2   t  ¡ }ˆ ||ƒ}ˆ |jˆ¡ | | ¡ | ¡ S r    )r2   r<   rÊ   rð  rî  r=   ©r‘   r„   r¯  rC  ©ró  rò  r*   r   r   r·  Å  s
   

zCAbstractDispatchTableTests.test_class_dispatch_table.<locals>.dumpsr    )Úget_dispatch_tablerÀ  Ú_test_dispatch_table©r*   r·  r   rõ  r   Útest_class_dispatch_table¾  s   z4AbstractDispatchTableTests.test_class_dispatch_tablec                    s(   ˆ  ¡ ‰ d‡ ‡fdd„	}ˆ |ˆ ¡ d S )Nc                    s:   t  ¡ }ˆ ||¡}ˆ |_ˆ |jˆ ¡ | | ¡ | ¡ S r    )r2   r<   rÀ  rð  rÊ   rî  r=   rô  ©rò  r*   r   r   r·  Ò  s   
zFAbstractDispatchTableTests.test_instance_dispatch_table.<locals>.dumpsr    )rö  r÷  rø  r   rú  r   Útest_instance_dispatch_tableÎ  s   z7AbstractDispatchTableTests.test_instance_dispatch_tablec                    sš  ‡fdd„}dd„ }d}|   ||ƒ|¡ |   ||ƒ|¡ d‰ ‡ fdd„}||t< |   ||ƒˆ ¡ |   ||ƒ|¡ tƒ }tƒ }|   ||ƒt¡ |  ||ƒt¡ |   ||ƒt¡ |  ||ƒt¡ ||t< |   ||ƒt¡ |   ||ƒˆ ¡ |   ||ƒt¡ |  ||ƒt¡ d	‰‡fd
d„}	|	|t< |t= |   ||ƒˆ¡ |  ||ƒt¡ |   ||ƒt¡ |  ||ƒt¡ |   ||ƒjd¡ dd„ }
|
|t< |   ||ƒjd¡ d S )Nc                    s   t  ˆ | dƒ¡S ©Nr   )r   rÓ   r8  rÉ  r   r   Úcustom_load_dumpÝ  rA  zIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpc                 S   s   t  t  | d¡¡S rü  )r   rÓ   r·  r8  r   r   r   Údefault_load_dumpà  rÒ  zJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpy      ð?       @Úreduce_1c                    ó
   t ˆ ffS r    rh   r8  )ÚREDUCE_1r   r   rÿ  ë  rc   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1Úreduce_2c                    r   r    rh   r8  )ÚREDUCE_2r   r   r    rc   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2rÜ  c                 S   s   t d| jd d tfS rZ   )rÙ  rO   rÞ  r8  r   r   r   Ú
reduce_bbb  rÒ  zCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbbrÝ  )rÊ   Úcomplexr:  rÙ  r;  rÆ  rm   )r*   r·  rð  rý  rþ  ré  rÿ  rm   rn   r  r  r   )r  r  r·  r   r÷  Ü  sB   
z/AbstractDispatchTableTests._test_dispatch_tableN)r7   r8   r9   rñ  rù  rû  r÷  r   r   r   r   rï  ´  s
    rï  r¾  zDATA{0} = (rö  z	    {0!r}r±   z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")ÄrR  rF   rP  r2   rN  r¢  rç  r   r   r¤  r  r¦  r¬  r]  ry  Útextwrapr   Zhttp.cookiesr   r    ÚImportErrorÚtestr   Ztest.supportr   r   r   r   r	   r
   r   Ztest.support.import_helperr   Ztest.support.os_helperr   r   Ztest.support.warnings_helperr   r   ZnumpyrN  Z
skipUnlessr/  r³  rø   rÅ  r¶  r   r   r#   r<   r&   r   r;   rD   rN   rU   rY   r]   r`   rf   r8   r4  rg   rk   rt   rp   rq   rr   rv   r‚   r{   r,  rž   rŸ   rÜ   rÁ  rß   rÂ  rá   Z	DATA2_DISrã   Z	DATA3_DISrå   Z	DATA4_DISrõ   r÷   rù   rÅ  ÚArithmeticErrorr‡  r/  rÔ   ÚBufferErrorÚBytesWarningÚDeprecationWarningr  ÚEnvironmentErrorrý   ÚFloatingPointErrorÚFutureWarningÚGeneratorExitÚIOErrorÚImportWarningÚIndentationErrorÚ
IndexErrorÚKeyErrorÚKeyboardInterruptÚLookupErrorÚMemoryErrorÚ	NameErrorr(   ÚOSErrorr"  ÚPendingDeprecationWarningÚReferenceErrorr¸  ÚRuntimeWarningÚStopIterationÚSyntaxErrorÚSyntaxWarningÚSystemErrorÚ
SystemExitÚTabErrorrU  ÚUnboundLocalErrorÚUnicodeErrorÚUnicodeWarningÚUserWarningrï   ÚWarningrI  rû   rü   rþ   rÆ   ZTestCaserÇ   r´  r^  r©  r®  r±  r³  rµ  rÙ  rë  r  rx  Úfloatr‚  r  rƒ  ri   r„  r…  rÛ  r  r·   rÐ  rw   ræ  rö   r  r  r  rr  r†  r|  r§  r~  r£  r¥  r·  rŽ  r«  rµ  r¼  r;  r:  rÙ  rÞ  rß  ræ  rï  r7   r¿  r"   rÿ  r·  rC  rÖ   rŠ   rÇ  Újrn   r   r   r   r   Ú<module>   s
   ÿ 
ÿ€ÿÿ	
NÿSÿAÿ:ÿ:ÿCÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâ à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó0    i            C 
ýk( "
B
k
ð