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d„ ZdS )Ú	MinimalIOc                 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   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__NrB   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   rZ   r   r   r   r   rX      rT   rX   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*   ra   r   r   r   rA   —   ó   
z
K.__init__c                 C   s   t | jffS r    )r_   ra   r.   r   r   r   Ú
__reduce__š   s   zK.__reduce__N)r7   r8   r9   rA   rc   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__NrB   r   r   r   r   rf   ¦   rT   rf   c                   @   rC   )Úinitargc                 C   s   || _ || _d S r    ©ÚaÚb)r*   rl   rm   r   r   r   rA   ¬   ó   
zinitarg.__init__c                 C   s   | j | jfS r    rk   r.   r   r   r   rZ   °   rS   zinitarg.__getinitargs__N)r7   r8   r9   rA   rZ   r   r   r   r   rj   ª   s    rj   c                   @   r[   )Ú	metaclassNr]   r   r   r   r   ro   ³   r^   ro   c                   @   r[   )Úuse_metaclassNr]   r   r   r   r   rp   ¶   r^   rp   )ro   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_classrt   r.   r   r   r   rc   ¾   rb   zpickling_metaclass.__reduce__N)r7   r8   r9   rR   rc   r   r   r   r   rq   ¹   s    rq   c                 C   s   t | |tƒ ƒ}| |f|_|S r    )rq   Údictrt   )ÚnameÚbasesÚresultr   r   r   ru   Á   s   
ru   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é   ©rs   Ú_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Úobjrs   ©Ú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   rz   Ç   ó    rz   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    )rs   Ú__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=ú))rs   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€   rs   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ƒr8| j|j|j|d | j|j|j|d t|dƒrk| j|j	|j	|d |j	D ]"}| jt||ƒt||ƒ|d | jt
||d ƒt
||d ƒ|d qJd S d S )Nz{!r} is not a copy of {!r})ÚmsgrO   Ú	__slots__)r‰   ÚassertEqualÚassertIsrs   Ú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   rX   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
.)rh   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}   Úkeyra   ó   ?ræ   ó   StandardErrorr¿   Zbad)rÒ   ÚDATA_SETrÉ   ÚsetÚDATA_XRANGErs   Úranger¶   ÚDATA_COOKIEr   Úkeysra   Ú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   r1  )Ns   (]qÿhÿt.r¹   r   r   r2  r3  r   r   r   Útest_binget?  r7  z!AbstractUnpickleTests.test_bingetc                 C   r1  )Ns   (]r   j   t.r¹   r   r   r2  r3  r   r   r   Útest_long_bingetE  r7  z&AbstractUnpickleTests.test_long_bingetc                 C   r1  )Ns   ((l2t.r¹   r   r   r2  r3  r   r   r   Útest_dupK  r7  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'
.rD  r  )r*   ZgoodpicklesrB  Úexpectedr   r   r   Útest_correctly_quoted_stringq  s   ÿz2AbstractUnpickleTests.test_correctly_quoted_stringc                 C   r  )Ns   €•       I42
.é*   r  )r*   r4  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Ê   rs   r÷   rÉ   r¶   Ú	functoolsÚreduceÚdbmÚwhichdbrü   rh   ÚcollectionsÚUserDict)r*   r4  r5  rw   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   rT  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’.rV  rW  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_errorsrA  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(”rs  rA  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_errorsrA  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.rJ  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   )rs   ©Ú.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-  r/  r0  r6  r8  r9  r:  r=  r>  r?  rC  rF  rH  rS  rU  rY  rZ  rt  ru  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 )NrK  )r   r   r   )Ú	protocolsrf   ÚdumpsrÒ   rÎ   rj   ©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*   rE  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¸  rE  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è  ri   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  ri   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ã  rv   r.   r   r   r   Útest_recursive_dict   ri   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í  rv   r.   r   r   r   Útest_recursive_tuple_and_dictC  ri   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Ê   ra   rà  r   r   r   Ú_test_recursive_dict_keyL  s   
ùz,AbstractPickleTests._test_recursive_dict_keyc                 C   rË  r    )rñ  rv   r.   r   r   r   Útest_recursive_dict_keyZ  ri   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Ê   ra   rì  r   r   r   Ú"_test_recursive_tuple_and_dict_keyc  s,   

 ùz6AbstractPickleTests._test_recursive_tuple_and_dict_keyc                 C   rË  r    )rõ  rv   r.   r   r   r   Ú!test_recursive_tuple_and_dict_key  ri   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 )NrK  r   r   )rõ   Úaddr_   r÷   r   rÄ  r¶  rÒ   rÅ  rÉ   rÆ  r¶   rÊ   ra   ©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ü  rs   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Ñ  ri   z0AbstractPickleTests.test_recursive_list_and_instc                 C   rË  r    )r  rÚ  r.   r   r   r   Útest_recursive_tuple_and_instÔ  ri   z1AbstractPickleTests.test_recursive_tuple_and_instc                 C   ó   |   tj¡ d S r    )r  rv   Úfromkeysr.   r   r   r   Útest_recursive_dict_and_inst×  r@  z0AbstractPickleTests.test_recursive_dict_and_instc                 C   rË  r    )r  rõ   r.   r   r   r   Útest_recursive_set_and_instÚ  ri   z/AbstractPickleTests.test_recursive_set_and_instc                 C   rË  r    )r  Ú	frozensetr.   r   r   r   Ú!test_recursive_frozenset_and_instÝ  ri   z5AbstractPickleTests.test_recursive_frozenset_and_instc                 C   rË  r    )r  rÏ  r.   r   r   r   Ú%test_recursive_list_subclass_and_instà  ri   z9AbstractPickleTests.test_recursive_list_subclass_and_instc                 C   rË  r    )r  ÚMyTupler.   r   r   r   Ú&test_recursive_tuple_subclass_and_instã  ri   z:AbstractPickleTests.test_recursive_tuple_subclass_and_instc                 C   r  r    )r  rå  r  r.   r   r   r   Ú%test_recursive_dict_subclass_and_instæ  r@  z9AbstractPickleTests.test_recursive_dict_subclass_and_instc                 C   rË  r    )r  ÚMySetr.   r   r   r   Ú$test_recursive_set_subclass_and_insté  ri   z8AbstractPickleTests.test_recursive_set_subclass_and_instc                 C   rË  r    )r  ÚMyFrozenSetr.   r   r   r   Ú*test_recursive_frozenset_subclass_and_instì  ri   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¸  ÚurB  Úu2r   r   r   Útest_unicode  s   
ýÿz AbstractPickleTests.test_unicodec                 C   s4   d}t D ]}|  ||¡}|  |¡}|  ||¡ qd S )Nu   ð’…r  )r*   r™  r¸  rB  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©rv  ó   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¹  rB  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  rJ  s	   bytearrayrK  r}   )rµ  r+  r¶  rÒ   rÌ   rÎ   ÚassertInÚ
assertTruer   r   ÚGLOBALÚSTACK_GLOBALÚassertNotInÚ
BYTEARRAY8)r*   r¸  r¹  rm   rB  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¹  rm   rB  Ú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   rE  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Ê   rs   rÉ   )	r*   r¸  ZnbitsZnbaseZnposr   r   rï   rB  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¸  ra   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   rJ  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µ  rj   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    )rp   rµ  r¶  rÒ   rÉ   rŠ   ©r*   rl   r¸  r¹  rm   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)ru   rÿ   rF   r   rq   rc   rµ  r¶  rÒ   rÉ   rÊ   rs   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Ë   rB  )r*   rC  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Ê   rI  r   r   r   Útest_notimplemented¯  rK  z'AbstractPickleTests.test_notimplementedc                 C   sL   d dt g}|D ]}tD ]}|  t|ƒ|¡}|  |¡}|  t|ƒ|¡ qqd S rH  )r«   rµ  r¶  rs   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$  rh   Zfail)r*   r¸  r4  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 )NrS  r1  r¹   )rµ  r¶  rÒ   rÎ   rÉ   r   r   ÚLONG4rU  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   rJ  )r   rK  )r   r   )r   r   )r   r¹   )r   rJ  ©r   rK  )r¹   r   ©r¹   r   )r¹   r¹   )r¹   rJ  )r¹   rK  )rJ  r   )rJ  r   ))rJ  r¹   )rJ  rJ  ©rJ  rK  r   )r   ©r   r¹   rJ  )r   r¹   rJ  rK  rJ  )r   ÚTUPLEÚEMPTY_TUPLEÚTUPLE1ÚTUPLE2ÚTUPLE3rµ  r¶  rÒ   rÎ   ÚminrÆ  r%  r   )r*   Úexpected_opcoderl   rm   rÃ   râ  Úer¸  r"   r¹  rÄ   rE  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)rJ  N)r   T)r   T)r¹   T)rJ  T)r   F)r   F)r¹   F)rJ  F)NFTrJ  )r   rP  ÚINTÚNEWTRUEÚNEWFALSErµ  r¶  rÒ   r%  rb  r   )r*   rc  r¸  r"   r¹  rÄ   rE  r   r   r   Útest_singletons
  s,   ó
ûÿz#AbstractPickleTests.test_singletonsc                 C   óH   t g d¢ƒ}d|_d|_tD ]}|  ||¡}|  |¡}|  ||¡ qd S ©Nr\  rG  Úhello)r  r¿   rÀ   rµ  r¶  rÒ   rÎ   rU  r   r   r   Útest_newobj_tuple#  ó   
ýz%AbstractPickleTests.test_newobj_tuplec                 C   rj  rk  )rÏ  r¿   rÀ   rµ  r¶  rÒ   rÎ   rU  r   r   r   Útest_newobj_list,  rn  z$AbstractPickleTests.test_newobj_listc              	   C   sŒ   t D ]A}tD ]<}|j}||jƒ}d|_|  ||¡}|  |¡}|||||t|ƒf}|  ||¡ |  	||ƒ||ƒ|¡ |  	|j
|j
|¡ qqd S ©NrG  )rµ  Ú	myclassesÚ__base__Úsampler¿   r¶  rÒ   rs   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 rp  )rq  ÚMyIntr  r¨  rµ  rr  rs  r¿   ÚweakrefÚproxyr¶  rÒ   rÉ   rs   rO   )r*   ZclassesrÃ   r¸  rN   rt  r"   rB  r¹  rÄ   ru  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   rG  )	rµ  ÚMyIntWithNew2r¿   r¶  rÒ   rÊ   rs   rÉ   r3  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 )NrK  rG  )ÚSimpleNewObjr¤   r¶  rÑ   rT  r   r   rÒ   )r*   Úsaver  rm   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\  rG  rl  r   r’  s   MyListr¹   T)rD   rF   rK   r7   rÏ  r¿   rÀ   r¶  r$  rè   ÚassertFalser   rÒ   rÎ   r(  rÉ   ÚreprrL   )r*   ZextcodeÚopcoderd  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  )rv   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  rK  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Î   rU  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  rK  s	   X   FACEs   ŒFACE)ÚComplexNewObjr¤   r¾   rµ  rÐ   r¶  r$  rÉ   r   r   rž  r€  rŸ  rÒ   rÎ   rU  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Î   rU  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\  rG  rl  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 rY   )r¶   r.   r   r   r   rc   X	  ó   zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N©r7   r8   r9   rc   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 rY   )rv   r.   r   r   r   rc   \	  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aaaNrg   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 ))rK  r}   rL  Nr   )rž  Úkr   r   r   r½  o	  r¾  r›  )r÷   rv   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 )NrG  rl  )
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¹   rJ  )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µ  rb  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sizesrB  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¸  r4  r5  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_dictsrK  rŒ  c                 C   s:  	 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sN|j|v r^t|ƒ| jkr^|d ur]|  || | j¡ d }n|d u ri|jdkri|}|jdkr{|  	|| j¡ |d | }qt|ƒ}|d urŒ|  
||¡ d S |d ur›|  || | j¡ d S d S )N>   Ú
BINUNICODEÚ	BINBYTES8r)  ÚBINBYTESÚBINUNICODE8ÚFRAMErN  é	   )r   r   ÚassertLessEqualÚassertNotEqualrw   rÆ  ÚFRAME_SIZE_TARGETÚ
assertLessÚFRAME_SIZE_MINr—  rÉ   )r*   r4  Z	frame_endZframeless_startZframeless_opcodesr   rW   Úposr   r   r   Úcheck_frame_opcodesÂ	  sH   
€
ÿþ
ÿ€
€ÿ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 † rK  r   r›  r¹   )r¶   r÷   r   rÄ  rÐ   r¶  rÒ   rÉ   rÆ  r   rÛ  ÚassertGreaterrß  rÝ  rã  )r*   r   r¸  r4  r5  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Ÿ  
  r5  zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>r  ó   xó   yÚzrK  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é  r4  Úbufrê  r5  Ú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 )NrK  c           
      S   sŠ   	 g }d}t  | ¡D ]\}}}|jdkr| |¡ q
tƒ }d}t|ƒD ]\}	}|r.||	ƒr.q#|| ||… 7 }|| }q#|| |d … 7 }|S )NrÜ  rÛ  r   )r   r   rw   rÂ   r+  Ú	enumerate)
r4  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¸  r4  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d„ Zdd„ Zdd„ ZdS )zYAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorc                 S   s
   g | _ d S r    )Úchunksr.   r   r   r   rA   O
  rb   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
  r@  z_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writec                 S   s   d  | j¡S )Nrv  )rª  rú  r.   r   r   r   Úconcatenate_chunksS
  rS   zlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunksN)r7   r8   r9   rA   r@   rý  r   r   r   r   ÚChunkAccumulatorM
  s
    rþ  rK  r   c                 S   s,   g | ]}t |ƒ d ¡|d dt |ƒif‘qS )ræ   rG  rþ  )rh   rè   r   r   r   r   rŸ  W
  s    $ÿzSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>g     ˆÃ@Z0123456789abcdefr2  r¹   rJ  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Ä  r3  rÂ   rß  rê  rí  rý  rÒ   rÉ   rä  rÆ  rú  r   Ú
gc_collectr—  rÝ  rà  )r*   rþ  r¸  ZobjectsÚwriterr4  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   rt  ‘
  ó    rt  N)r7   r8   r9   rt  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  rt  rN   rÐ   rÒ   r¶  rÊ   )r*   r¸  r   r5  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¸  r5  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                   @   s.   e Zd Z	 edd„ ƒZedd„ ƒZdd„ ZdS )zPyMethodsTest.Nestedc                   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   Ú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  r5  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   rh   r  r   r   r   r   r  Ù
  s    r  Úabcd)rÃ   )r  rÃ   r\  r   r   r¹   rÇ  ))rl   r   )rm   r¹   )s   abcr  )r   r¹   r¹   Zsweet)rd  rd  r  )rÚ  r  Úindexrh   Ú__len__r¶   Ú__contains__rõ   rv   r  r+  Ú	maketransÚcountr  r÷   r   rÄ  rÐ   rÒ   r¶  rÉ   )r*   Z	c_methodsr¸  r  r+   r5  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   rI  Ú__builtin__ÚxrangeZ123Ú	itertoolsÚimaprN  rP  Ú
exceptionsrü   rR  ÚIterableUserDictÚUserListrQ  ÚdefaultdictrJ  )rs   r¸  zc%s
%s)r÷   rÌ  r3  rM  rN  rO  rP  rü   rQ  rR  r*  r+  rÐ   rs   r¶  r$  rè   rÊ   rÒ   )r*   ZtestsÚvalr  rw   r¸  r4  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   rt  )r0  )r‰   r¬   r±   )rK  r¹   rZ  )r‰   r¬   r­   r±   rY  )rz   r   rŸ   r¶   r3  Ú
from_bytesr³   rž   )r*   Z
bytestringr·   ra   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}   r1  c                 S   r-   ©NTr   ©r   r   r   r   Úbuffer_callbackI  r$   zAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback©r8  )r5  r÷   r   rÄ  r¶  r—   r$  rÉ   r   ÚNEXT_BUFFERÚSHORT_BINBYTESr–   r)  rÒ   rÌ   rÊ   rs   )r*   r   r¸  rÏ   r8  Ú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}   r9  r   c                    s   ˆ   |  ¡ ¡S r    )rÂ   r´   )rµ   ©Úbuffersr   r   rÕ  b  s    z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>r1  r>  )r5  r÷   rÑ   rî   r¶  rÂ   r   rÄ  r(  rÉ   r   r;  r)  r:  ÚREADONLY_BUFFERr–   r—   r   r   rÒ   r™   rÊ   rs   Úiter)r*   r   r¸  r8  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   r9  r>  )rz   r÷   r   rÄ  rÂ   r¶  rÌ  r+  rÒ   rÊ   rs   rÉ   )r*   r   r¸  r?  r8  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 )NrD  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   r8  —  rS   zGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callbackrD  r}   r9  )r   r€   rÑ   ÚZeroDivisionErrorr¶  )r*   r8  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 rC  )r   r€   r÷   rÄ  r¶  rÂ   rÑ   rT  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   r9  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                    rL  r    )rM  rN  rO  rÞ  rP  rÏ   rQ  r.   r   r   Ú
check_copy³  rS  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-   r6  r   )ró  r   r   r   rÕ  ¾  ó    zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>r9  r>  )	r÷   r   rÄ  r¶  rÒ   rÂ   r±   r—   r˜   )Úarrr¸  rÏ   r¦   r8  r?  ©rT  rR  r*   r   r   Úcheck_array·  s$   

øz;AbstractPickleTests.test_buffers_numpy.<locals>.check_arrayrL  r¹   é   r[  )rM  ZarangeZreshapeÚT)r*   rX  rV  r   rW  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-  r/  r4  r6  r   r8  r=  r>  r@  rA  rG  rJ  rL  rM  rR  rV  rX  re  ri  rm  ro  rv  rz  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-  r0  r5  r=  rB  rE  rG  rI  rJ  rK  ÚunittestZskipIfrM  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   r0  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ó   abcdrK  rJ  r›  rë  r  )
rµ  rÐ   r¶  r   rÙ  r  r  rÆ  r  rÉ   ©r*   r^  rÏ   r¸  r4  Ú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   acbdrK  rJ  r›  rë  ú<Q)rµ  rÐ   rÑ   rî   r!  r¶  r   rØ  r  r  rÆ  r  rÉ   rb  r   r   r   Útest_huge_bytes_64b  s4   ÿúÿ
þðýz%BigmemPickleTests.test_huge_bytes_64br0  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  rK  r   r›  rë  r  ra  )rµ  rÐ   r¶  r   r×  r  r  rÆ  r  rÉ   Úrindexrb  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  rK  r   r›  rë  re  ra  )rµ  rÐ   rÑ   rî   r!  r¶  r   rÚ  r  r  rÆ  r  rÉ   rg  rb  r   r   r   Útest_huge_str_64b>  s>   ÿüÿ
þÿÿðýz#BigmemPickleTests.test_huge_str_64bN)r7   r8   r9   r   r	   r`  rd  r
   rf  rh  ri  r   r   r   r   r]  Û  s    



r]  c                   @   ó   e Zd Z	 dZdd„ ZdS )r¨  r   c                 C   s   d| _ tdfS )Nr   r   )r©  r¨  r.   r   r   r   rc   _  ó   zREX_one.__reduce__N©r7   r8   r9   r©  rc   r   r   r   r   r¨  \  ó    r¨  c                   @   ó   e Zd Z	 dZdd„ ZdS )r­  Nc                 C   ó   || _ tdfS rY   ©r®  r­  ©r*   r¸  r   r   r   r„   f  rk  zREX_two.__reduce_ex__©r7   r8   r9   r®  r„   r   r   r   r   r­  c  rm  r­  c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )r°  Nc                 C   ro  rY   rp  rq  r   r   r   r„   l  rk  zREX_three.__reduce_ex__c                 C   ó   t dƒ‚)Nz#This __reduce__ shouldn't be called)r   r.   r   r   r   rc   o  s   zREX_three.__reduce__)r7   r8   r9   r®  r„   rc   r   r   r   r   r°  j  s    r°  c                   @   rn  )r²  Nc                 C   s   || _ t | |¡S r    )r®  rÿ   r„   rq  r   r   r   r„   u  s   zREX_four.__reduce_ex__rr  r   r   r   r   r²  r  rm  r²  c                   @   rj  )r´  r   c                 C   s   d| _ t | ¡S rß  )r©  rÿ   rc   r.   r   r   r   rc   |  rn   zREX_five.__reduce__Nrl  r   r   r   r   r´  y  rm  r´  c                   @   ó0   e Zd Z	 d
dd„Zdd„ Zdd„ Zdd	„ ZdS )rØ  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    )rs   r·   rP   r   r   r   rR   †  ru  zREX_six.__eq__c                 C   rû  r    )r·   rÂ   )r*   Úitemr   r   r   rÂ   ˆ  r@  zREX_six.appendc                 C   s   t | ƒdd t| jƒd fS rY   )rs   rA  r·   r.   r   r   r   rc   Š  rÝ   zREX_six.__reduce__r    )r7   r8   r9   rA   rR   rÂ   rc   r   r   r   r   rØ  €  ó    
rØ  c                   @   rt  )rê  Nc                 C   s   |d ur	|| _ d S i | _ d S r    rç  )r*   rè  r   r   r   rA   ‘  ru  zREX_seven.__init__c                 C   rv  r    )rs   rè  rP   r   r   r   rR   “  ru  zREX_seven.__eq__c                 C   s   || j |< d S r    rç  )r*   rñ   ra   r   r   r   Ú__setitem__•  ri   zREX_seven.__setitem__c                 C   s   t | ƒdd d t| j ¡ ƒfS rY   )rs   rA  rè  r·   r.   r   r   r   rc   —  ru  zREX_seven.__reduce__r    )r7   r8   r9   rA   rR   ry  rc   r   r   r   r   rê    rx  rê  c                   @   rt  )r  Nc                 C   r`   r    ©r  ©r*   r  r   r   r   rA   ž  rb   zREX_state.__init__c                 C   rv  r    ©rs   r  rP   r   r   r   rR      ru  zREX_state.__eq__c                 C   r`   r    rz  r{  r   r   r   Ú__setstate__¢  rb   zREX_state.__setstate__c                 C   s   t | ƒd| jfS rY   r|  r.   r   r   r   rc   ¤  r@  zREX_state.__reduce__r    )r7   r8   r9   rA   rR   r}  rc   r   r   r   r   r  š  rx  r  c                   @   ó   e Zd ZdZdS )rw  r   N©r7   r8   r9   rs  r   r   r   r   rw  ª  ó    rw  c                   @   r~  )ÚMyFloatg      ð?Nr  r   r   r   r   r  ­  r€  r  c                   @   r~  )Ú	MyComplexy      ð?        Nr  r   r   r   r   r‚  °  r€  r‚  c                   @   r~  )ÚMyStrrl  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¹   rk   Nr  r   r   r   r   rå  ¿  s    rå  c                   @   s   e Zd ZddhZdS )r  rl   rm   Nr  r   r   r   r   r  Â  rT   r  c                   @   s   e Zd ZeddhƒZdS )r  rl   rm   N)r7   r8   r9   r
  rs  r   r   r   r   r  Å  s    r  c                   @   rM   )ÚMyIntWithNewc                 C   r'   r    )ÚAssertionError)r’   ra   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   r3  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   rs  )Nz3SimpleNewObj.__init__() didn't expect to get called)rT  r¡   r   r   r   rA   Ù  r©   zSimpleNewObj.__init__c                 C   rr   r    )r3  rO   rP   r   r   r   rR   Ü  ru  zSimpleNewObj.__eq__N)r7   r8   r9   rA   rR   r   r   r   r   r}  Ø  rd   r}  c                   @   rM   )r¢  c                 C   s   d|  dfS )Nú%Xr2  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ˆ  Úbaser2  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__è  rb   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Ï   r5  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Ñ   rT  rí  r’  r   r“  r/  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  rX  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   %  rU  zDAbstractPickleModuleTests.test_bad_init.<locals>.BadPickler.__init__NrB   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   (  rU  zFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__NrB   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ƒ   r8  r   r>  )rz   r÷   rÑ   rî   rÂ   r   rÄ  r(  rÉ   r   r   rÊ   )	r*   r¶  rÒ   r   r¸  r?  r8  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ª   r3  Úid_countrh   Ú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_countr3  )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Å  rs   rÉ   )r*   r   r¸  r5  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·  rh   )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_strr4  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´  ¡  rU  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   rg   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ê  r4  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"  r@  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   )r9  c                 C   s
   t tffS r    )rh   r:  r.   r   r   r   rc   @  rb   zAAA.__reduce__Nrº  r   r   r   r   r9  ?  rT   r9  c                   @   rC   )ÚBBBc                 C   ó
   d| _ d S )Nzsome attribute©rl   r.   r   r   r   rA   D  s   
zBBB.__init__c                 C   rÙ  )NúBBB.__setstate__rÚ  r{  r   r   r   r}  I  rb   rÛ  N)r7   r8   r9   rA   r}  r   r   r   r   rØ  C  s    rØ  c                 C   s   	 d| _ d S )Núcustom state_setterrÚ  )r   r  r   r   r   Úsetstate_bbbM  s   
rÝ  c                   @   r:   )ÚAbstractCustomPicklerClassc                 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Í   r3  rh   rî   r«   )r*   r   Zobj_namer   r   r   Úreducer_override\  s   z+AbstractCustomPicklerClass.reducer_overrideN)r7   r8   r9   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¸  ÚbiorB  Ú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Ð   rx  Úrefr2   r<   r¿  rí  rÒ   r=   r  )r*   r¸  r®  Úwrrè  rB  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®  rB  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®  rB  ©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Ò   r7  rÈ  r   r   Úcustom_load_dumpÝ  r@  zIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpc                 S   s   t  t  | d¡¡S rû  )r   rÒ   r¶  r7  r   r   r   Údefault_load_dumpà  rÑ  zJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpy      ð?       @Úreduce_1c                    ó
   t ˆ ffS r    rg   r7  )ÚREDUCE_1r   r   rþ  ë  rb   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1Úreduce_2c                    rÿ  r    rg   r7  )ÚREDUCE_2r   r   r    rb   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2rÛ  c                 S   s   t d| jd d tfS rY   )rØ  rO   rÝ  r7  r   r   r   Ú
reduce_bbb  rÑ  zCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbbrÜ  )rÉ   Úcomplexr9  rØ  r:  rÅ  rl   )r*   r¶  rï  rü  rý  rè  rþ  rl   rm   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""")ÄrQ  rF   rO  r2   rM  r¡  ræ  r   r   r£  r  r¥  r«  r\  rx  Ú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numpyrM  Z
skipUnlessr.  r²  r÷   rÄ  rµ  r   r   r#   r<   r&   rÿ   r;   rD   rN   rU   rX   r\   r_   re   r8   r3  rf   rj   rs   ro   rp   rq   ru   r   rz   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ÚTabErrorrT  ÚUnboundLocalErrorÚUnicodeErrorÚUnicodeWarningÚUserWarningrî   ÚWarningrH  rú   rû   rý   rÅ   ZTestCaserÆ   r³  r]  r¨  r­  r°  r²  r´  rØ  rê  r  rw  Úfloatr  r  r‚  rh   rƒ  r„  rÚ  r  r¶   rÏ  rv   rå  rõ   r  r
  r  rq  r…  r{  r¦  r}  r¢  r¤  r¶  r  rª  r´  r»  r:  r9  rØ  rÝ  rÞ  rå  rî  r7   r¾  r"   rþ  r¶  rB  rÕ   r‰   rÆ  Újrm   r   r   r   r   Ú<module>   s
   ÿ 
ÿ€ÿÿ	
NÿSÿAÿ:ÿ:ÿCÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâ à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó0    i            C 
ýk( "
B
k
ð