o
    GXîhv4 ã                
   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ zd dlZW n eya   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 ƒZ0dd„ Z1dd„ Z2dd„ Z3G dd„ dej4ƒZ5G dd„ de6ƒZ7G dd„ dƒZ8G dd„ dƒZ9G dd„ de9ƒZ:G dd „ d e9ƒZ;G d!d"„ d"ƒZ<G d#d$„ d$ƒZ=d dl>Z>e9e>_9d%e9_?e:e>_:d%e:_?e;e>_;d%e;_?G d&d'„ d'e@ƒZAG d(d)„ d)e9ƒZBG d*d+„ d+eCƒZDG d,d-„ d-e6eDd.ZEG d/d0„ d0eCƒZFd1d2„ ZGG d3d4„ d4eHƒZIG d5d6„ d6eJƒZKedurzG d7d8„ d8ƒZLd9ZMd:ZNd;ZOd<ZPd=ZQd>ZRd?ZSd@ZTdAZUdBZVdCZWdDZXdEZYdFZZg e[‘e\‘e]‘e^‘e_‘e`‘ea‘eb‘ec‘ed‘ee‘ef‘eg‘eh‘e‘ei‘ej‘ek‘el‘em‘en‘eo‘ep‘eq‘er‘es‘et‘eu‘ev‘ew‘ex‘ey‘ez‘e{‘e|‘e}‘e~‘e‘e€‘e‘e‚‘eƒ‘e„‘e…‘R Z†dGZ‡dHZˆdIdJ„ Z‰G dKdL„ dLƒZŠG dMdN„ dNƒZ‹G dOdP„ dPƒZŒG dQdR„ dRe6ƒZG dSdT„ dTe6ƒZŽG dUdV„ dVe6ƒZG dWdX„ dXe6ƒZG dYdZ„ dZe6ƒZ‘G d[d\„ d\e6ƒZ’G d]d^„ d^e6ƒZ“G d_d`„ d`e6ƒZ”G dadb„ dbe@ƒZ•G dcdd„ dde–ƒZ—G dedf„ dfe˜ƒZ™G dgdh„ dhešƒZ›G didj„ dješƒZœG dkdl„ dleƒZžG dmdn„ dneŸƒZ G dodp„ dpe¡ƒZ¢G dqdr„ dre£ƒZ¤G dsdt„ dte¥ƒZ¦e•e—e™e›eœeže 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„ƒZ¯G d…d†„ d†ƒZ°G d‡dˆ„ dˆƒZ±G d‰dŠ„ dŠƒZ²d‹Z³G dŒd„ de6ƒZ´G dŽd„ de6ƒZµdd‘„ Z¶G d’d“„ d“ƒZ·G d”d•„ d•ƒZ¸G d–d—„ d—ƒ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ÃeHe¿eÃeÃdš … ƒZÄeÀd› ÁeÄ¡ƒ qTeÀdœƒ eÀƒ  eÀd Áe½¡ƒ eÀdž Áe½¡ƒ e»e¿ƒ eÀdŸƒ eÀƒ  q=d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   ú;/opt/python-3.10.19/usr/lib/python3.10/test/pickletester.pyÚopcode_in_pickle;   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_opcodeB   s   €r   c                 C   s   | S ©Nr   ©Úxr   r   r   ÚidentityJ   ó   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   ÚpeekO   r$   zUnseekableIO.peekc                 C   ó   dS )NFr   ©r*   r   r   r   ÚseekableR   r$   zUnseekableIO.seekablec                 G   ó   t j‚r    ©ÚioÚUnsupportedOperationr)   r   r   r   ÚseekU   ó   zUnseekableIO.seekc                 C   r0   r    r1   r.   r   r   r   ÚtellX   r5   zUnseekableIO.tellN)Ú__name__Ú
__module__Ú__qualname__r,   r/   r4   r6   r   r   r   r   r&   N   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;   \   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   u   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   r   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„   1  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   D  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_copyF  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_errorX  s   ÿ
ÿ€üÿPýz,AbstractUnpickleTests.check_unpickling_errorc                 C   ó   |   | j|  t¡¡ d S r    )rÎ   Ú	_testdatarÒ   ÚDATA0r.   r   r   r   Útest_load_from_data0c  ó   z*AbstractUnpickleTests.test_load_from_data0c                 C   rÙ   r    )rÎ   rÚ   rÒ   ÚDATA1r.   r   r   r   Útest_load_from_data1f  rÝ   z*AbstractUnpickleTests.test_load_from_data1c                 C   rÙ   r    )rÎ   rÚ   rÒ   ÚDATA2r.   r   r   r   Útest_load_from_data2i  rÝ   z*AbstractUnpickleTests.test_load_from_data2c                 C   rÙ   r    )rÎ   rÚ   rÒ   ÚDATA3r.   r   r   r   Útest_load_from_data3l  rÝ   z*AbstractUnpickleTests.test_load_from_data3c                 C   rÙ   r    )rÎ   rÚ   rÒ   ÚDATA4r.   r   r   r   Útest_load_from_data4o  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_instancer  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¿   Ú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_binunicode85  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_get;  ó   
zAbstractUnpickleTests.test_getc                 C   r2  )Ns   (]qÿhÿt.r¹   r   r   r3  r4  r   r   r   Útest_bingetA  r8  z!AbstractUnpickleTests.test_bingetc                 C   r2  )Ns   (]r   j   t.r¹   r   r   r3  r4  r   r   r   Útest_long_bingetG  r8  z&AbstractUnpickleTests.test_long_bingetc                 C   r2  )Ns   ((l2t.r¹   r   r   r3  r4  r   r   r   Útest_dupM  r8  zAbstractUnpickleTests.test_dupc                 C   ó   d}|   t|¡ d S )Ns   Va
p-1
.©rØ   rî   r  r   r   r   Útest_negative_putS  s   z'AbstractUnpickleTests.test_negative_putc                 C   r<  )Ns   €X   arÿÿÿÿ.r=  r  r   r   r   Útest_negative_32b_binputX  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_stringa  s   ÿz.AbstractUnpickleTests.test_badly_quoted_stringc                 C   s,   g d¢}|D ]\}}|   |  |¡|¡ qd S )N))s   S''
.r  )s   S""
.r  )s   S"\n"
.Ú
)s   S'\n'
.rE  r	  )r*   ZgoodpicklesrC  Úexpectedr   r   r   Útest_correctly_quoted_strings  s   ÿz2AbstractUnpickleTests.test_correctly_quoted_stringc                 C   r  )Ns   €•       I42
.é*   r	  )r*   r5  r   r   r   Útest_frame_readline{  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*   r5  r6  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!  rU  rÉ   rÒ   rØ   ©r*   Úerrorr   r   r   Útest_bad_newobj£  s   
z%AbstractUnpickleTests.test_bad_newobjc                 C   sD   t jtf}|  |  d¡d¡ |  |d¡ |  |d¡ |  |d¡ d S )Ns   cbuiltins
int
)}’.r   s   cbuiltins
len
)}’.s   cbuiltins
int
N}’.s   cbuiltins
int
)N’.rW  rX  r   r   r   Útest_bad_newobj_ex©  s
   
z(AbstractUnpickleTests.test_bad_newobj_exc                 C   ó$   g d¢}|D ]	}|   | j|¡ qd S )N),ó   .ó   0ó   1ó   2s   (2ó   Rs   )Ró   as   Naó   bs   Nbó   dó   es   (es   ibuiltins
list
ó   ló   os   (os   p1
s   q s   r    ó   ss   Nss   NNsó   tó   us   (us   }(Nuó   s   )ó   …ó   †s   N†ó   ‡s   N‡s   NN‡ó   s   (ó   ‘ó   ’s   )}’ó   “s   Vlist
“ó   ”©rØ   Zbad_stack_errorsrB  r   r   r   Útest_bad_stack°  s   .ÿz$AbstractUnpickleTests.test_bad_stackc                 C   r\  )N)s   N(.s   N(2s   cbuiltins
list
)(Rs   cbuiltins
list
()Rs   ]N(as   cbuiltins
ValueError
)R}(bs   cbuiltins
ValueError
)R(}bs   (Nds   N(p1
s   N(q s   N(r    s   }NN(ss   }N(Nss   }(NNss   }((us   cbuiltins
list
)(s   cbuiltins
list
()s   N(…s   NN(†s   N(N†s   NNN(‡s   NN(N‡s   N(NN‡s   ]((s   cbuiltins
list
)}(’s   cbuiltins
list
)(}’s   cbuiltins
list
()}’s   Vbuiltins
(Vlist
“s   Vbuiltins
Vlist
(“s   N(”rt  rB  r   r   r   Útest_bad_markâ  s   #ÿz#AbstractUnpickleTests.test_bad_markc                 C   s<   |   td¡ |   td¡ g d¢}|D ]	}|   | j|¡ qd S )Nó    ó   N)Uó   Bs   B  s   B   s   B   abó   Cs   Cs   Cabó   Fs   F0.0s   F0.00ó   Gs   G       rì   s   I0ó   Js   J   ó   Kó   Ls   L0s   L10s   L0Ls   L10Ló   Ms   M ó   Ss   S'abc'ó   Ts   T  s   T   s   T   abó   Us   Us   Uabó   Vs   Vabcrç   s   X  s   X   s   X   abs   (cs
   (cbuiltinss   (cbuiltins
s   (cbuiltins
lists   Ngs   Ng0s   (is
   (ibuiltinss   (ibuiltins
s   (ibuiltins
lists   Nhs   Njs   Nj   s   Nps   Np0s   Nqs   Nrs   Nr   ó   €ó   ‚ó   ƒs   „ó   „s   „  ó   Šó   ‹s   ‹   ó   Œs   Œs   Œabó   s         s	          s          abó   Žs   Ž      s	   Ž       s   Ž       abó   –s   –      s	   –       s   –       abó   •s   •      s	   •       s
   •       N)rØ   ÚEOFErrorZtruncated_errorsrB  r   r   r   Útest_truncated_data	  s   Yÿz)AbstractUnpickleTests.test_truncated_datac           	         s†  t dƒ}t dƒ}t t¡ |  tjt¡ tj 	dt¡ |  tjj
t¡ ttj td¡dƒ}| | d¡¡ W d   ƒ n1 s@w   Y  ttj td¡dƒ}| | d¡¡ W d   ƒ n1 sbw   Y  |  td¡ |  td	¡ dd l}d
‰g ‰t d¡‰ ‡ ‡‡fdd„}tj|d}tj|d}| ¡  | ¡  ˆ  ¡  |j ¡  | ¡  | ¡  ddlm} |  dd„ ˆD ƒ|gd ¡ d S )NzI
        import threading
        barrier = threading.Barrier(2)
        zs
        import locker
        locker.barrier.wait()
        class ToBeUnpickled(object):
            pass
        r   z	locker.pyÚwbúutf-8zlocking_import.pyÚlockerÚlocking_imports'   €clocking_import
ToBeUnpickled
q )q.rK  c                      s   ˆ   ¡  ˆ t ˆ¡¡ d S r    )ÚwaitrÂ   r   rÒ   r   ©ÚbarrierZpickle_bytesÚresultsr   r   Út  s   z:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t)Útarget)ÚToBeUnpickledc                 S   ó   g | ]}t |ƒ‘qS r   )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_raceh  sB   
ÿÿÿ

þz/AbstractUnpickleTests.test_unpickle_module_racer    )5r7   r8   r9   rÅ   rÚ   rÎ   rØ   rÜ   rß   rá   rã   rå   rë   rð   r  r
  r  r  r  r  r  r  Úrequires_32br#  r%  r'  r)  r*  r+  r-  r.  r0  r1  r7  r9  r:  r;  r>  r?  r@  rD  rG  rI  rT  rV  rZ  r[  ru  rv  r‘  r   Zreap_threadsr²  r   r   r   r   rÆ   A  sl    
9






2'_rÆ   c                   @   sL  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`d¶d·„ Zad¸d¹„ Zbdºd»„ Zcedd¼d½„ ƒZed¾d¿„ ZfdÀdÁ„ ZgdÂdÃ„ ZhdÄdÅ„ ZidÆdÇ„ ZjdÈdÉ„ ZkdÊdË„ ZldÌdÍ„ ZmdÎdÏ„ ZndÐZodÑZpdÒdÓ„ ZqerjsdÔdÕ„ ƒZtdÖd×„ ZudØdÙ„ ZverjsdÚ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‚dòdó„ Zƒdôdõ„ Z„död÷„ Z…e† ‡eˆdøu dù¡dúdû„ ƒZ‰düdý„ ZŠdþdÿ„ Z‹døS (   ÚAbstractPickleTestsFc                 C   rV   r    r   r.   r   r   r   ÚsetUp­  r$   zAbstractPickleTests.setUpc                 C   sŠ   t D ]@}tdƒ}|  ||¡}|  |¡}|  ||¡ d}|  ||¡}|  |¡}|  ||¡ td|ƒ}|  ||¡}|  |¡}|  ||¡ qd S )NrL  )r   r   r   )Ú	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*   rF  r¹  rº  rï   r   r   r   Útest_roundtrip_equalityÆ  s   
ýz+AbstractPickleTests.test_roundtrip_equalityc                 C   sj   ddl m} ddlm} dtfdtffD ]\}}|  | j|¡}|ƒ }|||d | ¡ }|  	||¡ qd S )Nr   )ÚStringIO©Údisr   )Úout)
r2   r½  r   r¿  Ú	DATA0_DISÚ	DATA1_DISr·  rÚ   r=   rÉ   )r*   r½  r¿  r¹  rF  rº  Zfilelikerï   r   r   r   Údont_test_disassemblyÓ  s   ûz)AbstractPickleTests.dont_test_disassemblyr   c           	      C   st   |ƒ }|  |¡ t|tjd ƒD ]'}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t|ƒd¡ |  	|d |¡ qd S ©Nr   r   )
rÂ   rø   r   ÚHIGHEST_PROTOCOLr·  rÒ   ÚassertIsInstancerÉ   ÚlenrÊ   )	r*   r’   ÚaslistÚminprotocolÚlr¹  rº  r"   rÄ   r   r   r   Ú_test_recursive_listÞ  s   

úz(AbstractPickleTests._test_recursive_listc                 C   ó   |   t¡ d S r    )rË  r¶   r.   r   r   r   Útest_recursive_listê  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_dictE  ri   z1AbstractPickleTests.test_recursive_tuple_and_dictc                 C   rÎ  rÏ  )rî  ræ  r.   r   r   r   Ú&test_recursive_tuple_and_dict_subclassH  rÒ  z:AbstractPickleTests.test_recursive_tuple_and_dict_subclassc                 C   rÓ  )Nc                 S   rÔ  r    rè  r!   r   r   r   rÖ  L  r×  zHAbstractPickleTests.test_recursive_tuple_and_dict_like.<locals>.<lambda>rê  )rî  rë  r.   r   r   r   Ú"test_recursive_tuple_and_dict_likeK  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_keyN  s   
ùz,AbstractPickleTests._test_recursive_dict_keyc                 C   rÌ  r    )rò  rv   r.   r   r   r   Útest_recursive_dict_key\  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Ö  c  r×  zBAbstractPickleTests.test_recursive_dict_like_key.<locals>.<lambda>rê  )rò  rë  r.   r   r   r   Útest_recursive_dict_like_keyb  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_keye  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 )NrL  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Ù  rA  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è  rA  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¹  ÚurC  Úu2r   r   r   Útest_unicode  s   
ýÿz AbstractPickleTests.test_unicodec                 C   s4   d}t D ]}|  ||¡}|  |¡}|  ||¡ qd S )Nu   ð’…r  )r*   rš  r¹  rC  r±  r   r   r   Útest_unicode_high_plane  s   
ýz+AbstractPickleTests.test_unicode_high_planec                 C   s¢   t D ]L}dD ]}|  ||¡}|  ||  |¡¡ qdd„ tdƒD ƒD ]}|  ||¡}|  ||  |¡¡ q!dd„ tdƒD ƒD ]}|  ||¡}|  ||  |¡¡ q<qd S )N©rw  ó   xyzs,  xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzc                 S   s   g | ]}t |gƒ‘qS r   ©r   ©rŸ  rÿ  r   r   r   r   (  ó    z2AbstractPickleTests.test_bytes.<locals>.<listcomp>é   c                 S   s   g | ]}t ||gƒ‘qS r   r   r!  r   r   r   r   +  ó    )r¶  r·  rÎ   rÒ   rø   )r*   r¹  rº  rC  r   r   r   Ú
test_bytes#  s   þùzAbstractPickleTests.test_bytesc                 C   sÄ   t D ]]}dD ]X}t|ƒ}|  ||¡}|  |¡}|  ||¡ |  ||¡ |dkr7|  d|¡ |  tt	j
|ƒ¡ q|dkrK|  d|¡ |  tt	j|ƒ¡ q|dkr^|  d|¡ |  tt	j|ƒ¡ qqd S )Nr  rK  s	   bytearrayrL  r}   )r¶  r,  r·  rÒ   rÌ   rÎ   ÚassertInÚ
assertTruer   r   ÚGLOBALÚSTACK_GLOBALÚassertNotInÚ
BYTEARRAY8)r*   r¹  rº  rm   rC  Zbbr   r   r   Útest_bytearray/  s&   
€ñÿz"AbstractPickleTests.test_bytearrayc                 C   sJ   t D ] }dD ]}t|ƒ}|  ||f|¡}|  |¡\}}|  ||¡ qqd S )Nr  )r¶  r,  r·  rÒ   rÊ   )r*   r¹  rº  rm   rC  Úb1Úb2r   r   r   Útest_bytearray_memoization_bugB  s   üÿz2AbstractPickleTests.test_bytearray_memoization_bugc                 C   sV   t D ]&}tj}|r(| |fD ]}|  ||¡}|  |¡}|  ||¡ q|d? }|s	qd S rà  )r¶  r¦  Úmaxsizer·  rÒ   rÎ   )r*   r¹  r   rF  rº  Zn2r   r   r   Ú	test_intsJ  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¹  ÚnbitsZnbaseZnposr   r   rï   rC  r   r   r   Ú	test_longT  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   n  ó    z2AbstractPickleTests.test_float.<locals>.<listcomp>r  )r*   Ztest_valuesr¹  ra   r   rï   r   r   r   Ú
test_floatk  s   
ýÿzAbstractPickleTests.test_floatÚLC_ALLÚde_DEÚfr_FRc                 C   s    |   |  dd¡dd… d¡ d S )Ng333333ó?r   rK  s   F1.)rÉ   r·  r.   r   r   r   Útest_float_formatu  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_reducez  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   rD  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Ë   rG  )r*   rH  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Ê   rN  r   r   r   Útest_notimplemented±  rP  z'AbstractPickleTests.test_notimplementedc                 C   sL   d dt g}|D ]}tD ]}|  t|ƒ|¡}|  |¡}|  t|ƒ|¡ qqd S rM  )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   sP   t j ¡ D ] }t|tƒr%t|tƒs%tD ]}|  ||¡}|  	|  
|¡|¡ qqd S r    )ÚbuiltinsrO   Úvaluesrª   rs   Ú
issubclassrÓ   r¶  r·  rÊ   rÒ   ©r*   rš  r¹  rº  r   r   r   Útest_builtin_typesÀ  s   €üz&AbstractPickleTests.test_builtin_typesc                 C   sœ   t j ¡ D ]F}t|tƒrKt|tƒrKtD ]7}|  ||¡}|  	|¡}|dkr4t|t
ƒr4|tur4|  |t
¡ q|dkrDt|tƒrD|  |t¡ q|  ||¡ qqd S ©Nr¹   )rS  rO   rT  rª   rs   rU  rÓ   r¶  r·  rÒ   ÚOSErrorÚBlockingIOErrorrÊ   ÚImportError)r*   rš  r¹  rº  r  r   r   r   Útest_builtin_exceptionsÇ  s   
€öz+AbstractPickleTests.test_builtin_exceptionsc                 C   sH   t j ¡ D ]}t|tjƒr!tD ]}|  ||¡}|  |  	|¡|¡ qqd S r    )
rS  rO   rT  rª   ÚtypesÚBuiltinFunctionTyper¶  r·  rÊ   rÒ   rV  r   r   r   Útest_builtin_functionsÔ  s   €üz*AbstractPickleTests.test_builtin_functionsc              
   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¹  r5  Zproto_headerZoobZ
build_noneZ	badpickleÚerrr   r   r   Ú
test_protoÝ  s    €ÿzAbstractPickleTests.test_protoc                 C   sL   d}t D ]}|  ||¡}|  |¡}|  ||¡ |  ttj|ƒ|dk¡ qd S )Nì   èUJ^w,3ƒ|	 r¹   )r¶  r·  rÒ   rÎ   rÉ   r   r   ÚLONG1©r*   r"   r¹  rº  rÄ   r   r   r   Ú
test_long1ð  s   
üzAbstractPickleTests.test_long1c                 C   sP   dd> }t D ]}|  ||¡}|  |¡}|  ||¡ |  ttj|ƒ|dk¡ qd S )Nre  r3  r¹   )r¶  r·  rÒ   rÎ   rÉ   r   r   ÚLONG4rg  r   r   r   Ú
test_long4ø  s   
üzAbstractPickleTests.test_long4c                 C   s  i dt j“dt j“dt j“dt j“dt j“dt j“dt j“dt j“d	t j“d
t j“dt j“dt j“dt j“dt j“dt j“dt j“dt j“t jt jt jdœ¥}d}d}d}d}d}tD ]0}|||||fD ]&}|  ||¡}	|  |	¡}
|  	||
¡ |t
|dƒt|ƒf }|  t||	ƒ¡ qdq[d S )N)r   r   )r   r   )r   r¹   )r   rK  )r   rL  )r   r   )r   r   ©r   r¹   )r   rK  ©r   rL  )r¹   r   ©r¹   r   )r¹   r¹   )r¹   rK  )r¹   rL  )rK  r   )rK  r   ))rK  r¹   )rK  rK  ©rK  rL  r   )r   ©r   r¹   rK  )r   r¹   rK  rL  rK  )r   ÚTUPLEÚEMPTY_TUPLEÚTUPLE1ÚTUPLE2ÚTUPLE3r¶  r·  rÒ   rÎ   ÚminrÇ  r'  r   )r*   Úexpected_opcoderl   rm   rÃ   rã  Úer¹  r"   rº  rÄ   rF  r   r   r   Útest_short_tuples   sf   
ÿþýüúùø	÷
öôóòñðîíê
ûÿz%AbstractPickleTests.test_short_tuplesc                 C   sž   t jt jt jt jt jt jt jt jt jt jt jt jdœ}tD ]/}dD ]*}|  ||¡}|  |¡}|  ||u ||||f¡ |t	|dƒ|f }|  t
||ƒ¡ q!qd S )N))r   N)r   N)r¹   N)rK  N)r   T)r   T)r¹   T)rK  T)r   F)r   F)r¹   F)rK  F)NFTrK  )r   rb  ÚINTÚNEWTRUEÚNEWFALSEr¶  r·  rÒ   r'  ru  r   )r*   rv  r¹  r"   rº  rÄ   rF  r   r   r   Útest_singletons'  s,   ó
ûÿz#AbstractPickleTests.test_singletonsc                 C   óH   t g d¢ƒ}d|_d|_tD ]}|  ||¡}|  |¡}|  ||¡ qd S ©Nro  rH  Úhello)r  r¿   rÀ   r¶  r·  rÒ   rÎ   rg  r   r   r   Útest_newobj_tuple@  ó   
ýz%AbstractPickleTests.test_newobj_tuplec                 C   r}  r~  )rÐ  r¿   rÀ   r¶  r·  rÒ   rÎ   rg  r   r   r   Útest_newobj_listI  r  z$AbstractPickleTests.test_newobj_listc              	   C   sŒ   t D ]A}tD ]<}|j}||jƒ}d|_|  ||¡}|  |¡}|||||t|ƒf}|  ||¡ |  	||ƒ||ƒ|¡ |  	|j
|j
|¡ qqd S ©NrH  )r¶  Ú	myclassesÚ__base__Úsampler¿   r·  rÒ   rs   rÎ   rÉ   rO   )r*   r¹  rN   ÚBr"   rº  rÄ   Údetailr   r   r   Útest_newobj_genericR  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 rƒ  )r„  ÚMyIntr  r©  r¶  r…  r†  r¿   ÚweakrefÚproxyr·  rÒ   rÉ   rs   rO   )r*   ZclassesrÃ   r¹  rN   r‡  r"   rC  rº  rÄ   rˆ  r   r   r   Útest_newobj_proxies_  s"   


öÿz'AbstractPickleTests.test_newobj_proxiesc                 C   s`   t D ]+}tdƒ}d|_|  ||¡}|  |¡}|  t|ƒt¡ |  t|ƒd¡ |  |jd¡ qd S )Nr   rH  )	r¶  ÚMyIntWithNew2r¿   r·  rÒ   rÊ   rs   rÉ   r5  r¸  r   r   r   Útest_newobj_overridden_newr  s   
ùz.AbstractPickleTests.test_newobj_overridden_newc                 C   sF   t }t  t ¡}|  |d¡}zda |  ttjf| j|¡ W |a d S |a w )NrL  rH  )ÚSimpleNewObjr¤   r·  rÑ   rU  r   r!  rÒ   )r*   Úsaver  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Ð  ro  rH  r  r   r“  s   MyListr¹   T)rD   rF   rK   r7   rÐ  r¿   rÀ   r·  r&  rè   ÚassertFalser   rÒ   rÎ   r*  rÉ   ÚreprrL   )r*   ZextcodeÚopcoderw  r"   Ús1rÄ   Ús2r   r   r   Úproduce_global_ext  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£  rL  r   r   r¤  r¹   )rö   rø   r¶  r·  rÒ   rÎ   r   r   ÚADDITEMSrÉ   ÚassertGreaterEqual)r*   r   r"   r¹  rº  rÄ   Znum_additemsr   r   r   Útest_set_chunkingä  s*   

øz%AbstractPickleTests.test_set_chunkingc              	   C   sº   t  t d¡}d|_tD ]O}| j|d? |  ||¡}|dk r%|  d|¡ n|  d|¡ |  tt	j
|ƒd|k¡ |  tt	j|ƒ¡ |  |¡}|  ||¡ W d   ƒ n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Î   rg  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   ƒ n1 skw   Y  qd S ©Nr¬  r­  r®  r   r¯  r¹   r°  rL  s	   X   FACEs   ŒFACE)ÚComplexNewObjr¤   r¾   r¶  rÐ   r·  r&  rÉ   r   r   r±  r“  r²  rÒ   rÎ   rg  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   ƒ n1 skw   Y  qd S r´  )ÚComplexNewObjExr¤   r¾   r¶  rÐ   r·  r&  r“  r   r   r±  rÉ   r²  rÒ   rÎ   rg  r   r   r   Útest_complex_newobj_ex!	  s*   ÿ
ò€ÿz*AbstractPickleTests.test_complex_newobj_exc                 C   s>   t g d¢ƒ}d|_d|_|  |d¡}|  |¡}|  ||¡ d S )Nro  rH  r  r¹   )ÚSlotListr¿   rÀ   r·  rÒ   rÎ   )r*   r"   rº  rÄ   r   r   r   Útest_newobj_list_slots5	  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_calledF	  r¾  z)AbstractPickleTests.test_reduce_ex_calledc                 C   r¿  r    )r¶  Ú	REX_threerÉ   rÁ  r·  rÒ   r¸  r   r   r   Útest_reduce_ex_overrides_reduceO	  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_baseX	  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_basea	  r¾  z*AbstractPickleTests.test_reduce_calls_basec              	   C   sN   t ƒ }tD ]}t ¡  |  t| j||¡ W d   ƒ n1 sw   Y  qd S r    )Ú
BadGetattrr¶  r   Zinfinite_recursionrÑ   ÚRuntimeErrorr·  )r*   r"   r¹  r   r   r   Útest_bad_getattrj	  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   v	  ó   zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N©r7   r8   r9   rc   r   r   r   r   rN   u	  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   z	  rÌ  zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.D.__reduce__NrÍ  r   r   r   r   rU   y	  rT   rU   )r   r¶  r·  r   ÚPicklingError)r*   rN   rU   r¹  r   r   r   Útest_reduce_bad_iteratorr	  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   ƒ n1 sCw   Y  qd S )Nc                 s   s    | ]	}d t |ƒ V  qdS )ZaaaNrg   r!  r   r   r   Ú	<genexpr>Œ	  ó   € z>AbstractPickleTests.test_many_puts_and_gets.<locals>.<genexpr>r(  c                 s   s    | ]	}|g d ¢fV  qdS ))rL  r}   rM  Nr   )rŸ  Úkr   r   r   rÐ  	  rÑ  r®  )rø   rv   r¶  rÐ   r·  rÒ   rÎ   )r*   rú   Z
large_dictr   r¹  r  r  r   r   r   Útest_many_puts_and_gets‰	  s   
ý€ÿz+AbstractPickleTests.test_many_puts_and_getsc           	      C   sj   t D ]0}tƒ }d|_d|_|  ||¡}|  |¡}t|jƒ}t|jƒ}t||ƒD ]
\}}|  	||¡ q'qd S )NrH  r  )
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_interning–	  s   


ÿøz1AbstractPickleTests.test_attribute_name_interningc                 C   s>   |   tdƒd¡}|  |t¡ |   tdgƒd¡}|  |t¡ d S )Nr}   r¹   rK  )r·  rø   rÉ   r÷   rö   Ú	DATA_SET2r  r   r   r   Útest_pickle_to_2x¤	  s   z%AbstractPickleTests.test_pickle_to_2xc                 C   sT   t D ]%}dtdd tf}|  ||¡}|  |¡}|  t|ƒt|ƒ¡ |  ||¡ qd S )Nr   s   xyi x  )r¶  ru  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   ƒ n1 sBw   Y  qd S )Nr®  c                    s   g | ]
}ˆ  d | ˆ ¡‘qS ©r¹   ©r·  )rŸ  r   ©r¹  r*   r   r   r   ¼	  ó    zDAbstractPickleTests.test_int_pickling_efficiency.<locals>.<listcomp>éF   r¹   )r¶  rÐ   rø   r¶   ÚmaprÇ  rÉ   rÔ  r“  r   r   ÚLONG)r*   ZpicklesZsizesrC  r   rÜ  r   Útest_int_pickling_efficiency¸	  s   €ù€ÿz0AbstractPickleTests.test_int_pickling_efficiencyc                 C   s6   |   ||¡}|  t||ƒ¡ |  |¡}|  ||¡ d S r    )r·  r'  r   rÒ   rÉ   )r*   r   r•  r¹  r5  r6  r   r   r   Ú_check_pickling_with_opcodeÄ	  s   
z/AbstractPickleTests._check_pickling_with_opcodec                 C   sD   t g d¢ƒ}tD ]}|dkr|  |tj|¡ q|  |tj|¡ qd S )Nro  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½   éþÿÿÿéýÿÿÿro  r   )rë  r¶  râ  r   ÚSETITEMr§  rä  r   r   r   Útest_setitems_on_non_dictsÓ	  s   üz.AbstractPickleTests.test_setitems_on_non_dictsrL  rŸ  c                 C   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>   Ú	BINBYTES8r+  ÚBINBYTESÚ
BINUNICODEÚBINUNICODE8ÚFRAMEr`  é	   )r   r   ÚassertLessEqualÚassertNotEqualrw   rÇ  ÚFRAME_SIZE_TARGETÚ
assertLessÚFRAME_SIZE_MINrª  rÉ   )r*   r5  Z	frame_endZframeless_startZframeless_opcodesr   rW   Úposr   r   r   Úcheck_frame_opcodesà	  sD   
€


ÿ€
€ÿ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   ƒ n1 sSw   Y  qd S )Ni † rL  r   r®  r¹   )r¶   rø   r   rÅ  rÐ   r·  rÒ   rÉ   rÇ  r   rî  ÚassertGreaterrò  rð  rö  )r*   r   r¹  r5  r6  Zbytes_per_framer   r   r   Útest_framing_many_objects
  s&   

ÿÿÿö€ÿz-AbstractPickleTests.test_framing_many_objectsc              
   C   s8  d}dd„ t dƒD ƒ}d| g|¢d| ‘d| ‘}t dtjd	 ƒD ]w}d
D ]r}| j||da |s9|  ||¡}n$t| dƒsF	 W d   ƒ q&t ¡ }| j||d}||_	| 
|¡ | ¡ }|  |¡}	|  dd„ |D ƒdd„ |	D ƒ¡ |  ||	¡ ttj|ƒ}
|  |
d	¡ |  |¡ W d   ƒ n1 s“w   Y  q&q"d S )Ni   c                 S   s   g | ]}|g‘qS r   r   r!  r   r   r   r   !
  r8  zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>r£  ó   xó   yÚzrL  r   )FT)r¹  ÚfastÚpickler©rƒ   c                 S   r  r   ©rÇ  rž  r   r   r   r   5
  r¡  c                 S   r  r   rÿ  rž  r   r   r   r   6
  r¡  )rø   r   rÅ  rÐ   r·  rË   r2   r<   rý  rü  Údumpr=   rÒ   rÉ   r   rî  rö  )r*   ÚNZsmall_itemsr   r¹  rü  r5  Úbufrý  r6  Ún_framesr   r   r   Útest_framing_large_objects
  s8   
ø	

ÿè€ÿÿz.AbstractPickleTests.test_framing_large_objectsc                    sØ   t jdk rd S ddd„}| j‰d}ttfD ]T‰ ‡ ‡fdd„t|ƒD ƒ}tdt jd ƒD ]=}|  ||¡}||ƒ}|  tt j	|ƒd¡ |  ||  
|¡¡ ||d	d
„ ƒ}|  tt j	|ƒtt j	|ƒ¡ |  ||  
|¡¡ q+qd S )NrL  c           
      S   sŠ   	 g }d}t  | ¡D ]\}}}|jdkr| |¡ q
tƒ }d}t|ƒD ]\}	}|r.||	ƒr.q#|| ||… 7 }|| }q#|| |d … 7 }|S )Nrï  rî  r   )r   r   rw   rÂ   r,  Ú	enumerate)
r5  Z
keep_frameZframe_startsZframe_opcode_sizer•  Ú_rõ  Z	newpickleZlast_frame_endrÿ  r   r   r   Úremove_framesC
  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 rX  r   )rÿ  r   r   r   rÖ  d
  s    z:AbstractPickleTests.test_optional_frames.<locals>.<lambda>r    )r   rÅ  rò  r   r,  rø   r·  rÉ   r   rî  rÒ   ró  )r*   r  Z
num_framesr   r¹  r5  Zframeless_pickleZsome_frames_pickler   r	  r   Útest_optional_frames?
  s&   


ÿöýz(AbstractPickleTests.test_optional_framesc                    s|  G dd„ dƒ}t dtjd ƒD ]¬}dd„ t tdƒƒD ƒ}| dˆ jd	 d  ¡ |ƒ }ˆ  ||¡ |¡ | ¡ }ˆ  	|¡}ˆ  
||¡ ˆ  t|jƒd¡ ~t ¡  ˆ  
| ¡ |¡ t|ƒd ˆ j d }ˆ  t|jƒ|¡ ˆ  t|jƒd
| d ¡ dd„ |jD ƒ}‡ fdd„|D ƒ}	‡ fdd„|D ƒ}
dd„ |D ƒ}|	D ]}ˆ  |d
ˆ j |¡ qˆ  t|ƒt|	ƒt|
ƒ d |¡ qd S )Nc                   @   s&   e Zd Z	 d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   m
  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@   o
  rA  z_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writec                 S   s   d  | j¡S )Nrw  )r«  r  r.   r   r   r   Úconcatenate_chunksq
  rS   zlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunksN)r7   r8   r9   rA   r@   r  r   r   r   r   ÚChunkAccumulatork
  s
    r  rL  r   c                 S   s,   g | ]}t |ƒ d ¡|d dt |ƒif‘qS )ræ   rH  rÿ  )rh   rè   r!  r   r   r   r   u
  s    $ÿzSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>g     ˆÃ@Z0123456789abcdefr4  r¹   rK  c                 S   r  r   rÿ  )rŸ  rÃ   r   r   r   r   ™
  r¡  c                    s   g | ]	}|ˆ j kr|‘qS r   ©rò  ©rŸ  rº  r.   r   r   r   š
  s    
ÿc                    s*   g | ]}d |  k rˆ j k rn n|‘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Å  r5  rÂ   rò  rý  r   r  rÒ   rÉ   r÷  rÇ  r  r   Ú
gc_collectrª  rð  ró  )r*   r  r¹  ZobjectsÚwriterr5  Zreconstructedr  Zchunk_sizesZlarge_sizesZmedium_sizesZsmall_sizesZ
chunk_sizer   r.   r   Ú+test_framed_write_sizes_with_delayed_writeri
  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   ƒ n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   r‡  ¯
  ó    r‡  N)r7   r8   r9   r‡  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  r‡  rN   rÐ   rÒ   r·  rÊ   )r*   r¹  r   r6  r   r   r   Útest_nested_names«
  s   þ€ÿÿz%AbstractPickleTests.test_nested_namesc              	   C   sˆ   G dd„ dƒa tjt j t _dt _ttjd ƒD ]'}| j	|d |  
|  t |¡¡}|  |t ¡ W d   ƒ n1 s:w   Y  qt `d S )Nc                   @   r[   )Ú	RecursiveNr]   r   r   r   r   r  º
  r^   r  zRecursive.mod.Recursiver   r®  )r  r¦  Úmodulesr8   Úmodr9   rø   r   rÅ  rÐ   rÒ   r·  rÊ   )r*   r¹  r6  r   r   r   Útest_recursive_nested_names¸
  s   þ€z/AbstractPickleTests.test_recursive_nested_namesc           
   
   C   s˜  G dd„ dƒa t jt jt ƒ jt jjt jjt  ¡ jf}t jt ft jjt jff}tt	j
d ƒD ]c}|D ]*}| j||d |  |  ||¡¡}|  |ƒ |ƒ ¡ W d   ƒ n1 sVw   Y  q1|D ]1\}}|ƒ }| j||d |  |  ||¡¡}|  ||ƒ||ƒ¡ W d   ƒ n1 sŠw   Y  q^q-t jd t jd f}tt	j
d ƒD ]'}|D ]"}	| j||	d |  t| j|	|¡ W d   ƒ n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¹  Úmethodr"  r$  ©r¹  Údescr)r!  r"  r$  r'  r  r(  r)  r*  rø   r   rÅ  rÐ   rÒ   r·  rÉ   rO   rÑ   rU  )
r*   Z
py_methodsZpy_unbound_methodsr¹  r-  r6  r’   r   Údescriptorsr/  r   r   r   Útest_py_methodsÄ
  sJ   ú	þþ€þ€þþÿ€ÿÿ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   ƒ n1 sŒw   Y  qcq_t
jd tjd f}ttjd ƒD ]'}|D ]"}| j||d |  t| j||¡ W d   ƒ n1 sÅw   Y  q¨q¤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   r2     s    r2  Úabcd)rÃ   )r3  rÃ   ro  r   r   r¹   rÚ  ))rl   r   )rm   r¹   )s   abcr  )r   r¹   r¹   Zsweet)rw  rw  r,  Ú	maketransr  r.  )rÛ  r2  Úindexrh   Ú__len__r¶   Ú__contains__rö   rv   r  r,  r4  Úcountr  rø   r   rÅ  rÐ   rÒ   r·  rÉ   rO   rÑ   rU  )r*   Z	c_methodsr¹  r-  r+   r6  r0  r/  r   r   r   Útest_c_methodsþ
  sB   ëþ€ÿþÿ€ÿÿ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   ƒ n1 sqw   Y  q<q3d S )Nr   rJ  Ú__builtin__ÚxrangeZ123Ú	itertoolsÚimaprO  rQ  Ú
exceptionsrý   rS  ÚIterableUserDictÚUserListrR  ÚdefaultdictrK  )rs   r¹  zc%s
%s)rø   rß  r5  rN  rO  rP  rQ  rý   rR  rS  r@  rA  rÐ   rs   r·  r&  rè   rÊ   rÒ   )r*   ZtestsÚvalr  rw   r¹  r5  r   r   r   Útest_compat_pickle*  s&   


ø
ý€ÿÿz&AbstractPickleTests.test_compat_picklec              	   C   s   dd„ }t dtjd ƒD ]#}|  ttjf¡ t |  ||¡¡ W d   ƒ n1 s*w   Y  q|`	t dtjd ƒD ]#}|  ttjf¡ t |  ||¡¡ W d   ƒ n1 sXw   Y  q:|j
|_t dtjd ƒD ]#}|  ttjf¡ t |  ||¡¡ W d   ƒ n1 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   r‡  )r2  )r‰   r¬   r±   )rL  r¹   rm  )r‰   r¬   r­   r±   rl  )rz   r   rŸ   r¶   r5  Ú
from_bytesr³   rž   )r*   Z
bytestringr·   ra   r±   r   r   r   Úbuffer_like_objectsU  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}   rG  c                 S   r-   ©NTr   ©r   r   r   r   Úbuffer_callbacky  r$   zAAbstractPickleTests.test_in_band_buffers.<locals>.buffer_callback©rN  )rK  rø   r   rÅ  r·  r—   r&  rÉ   r   ÚNEXT_BUFFERÚSHORT_BINBYTESr–   r+  rÒ   rÌ   rÊ   rs   )r*   r   r¹  rÏ   rN  Údata2r¦   r   r   r   Útest_in_band_buffersi  s0   ÿÿÿ
éÿz(AbstractPickleTests.test_in_band_buffersc              
      sÒ  |   ¡ D ]â}tddƒD ] }|  t¡ | j||g jd W d   ƒ n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}   rO  r   c                    s   ˆ   |  ¡ ¡S r    )rÂ   r´   )rµ   ©Úbuffersr   r   rÖ  ’  s    z6AbstractPickleTests.test_oob_buffers.<locals>.<lambda>rG  rT  )rK  rø   rÑ   rî   r·  rÂ   r   rÅ  r*  rÉ   r   rQ  r+  rP  ÚREADONLY_BUFFERr–   r—   r   r!  rÒ   r™   rÊ   rs   Úiter)r*   r   r¹  rN  rÏ   r¦   r   rT  r   Útest_oob_buffersˆ  sL   ÿÿ€ÿÿÿàú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   rO  rT  )rz   rø   r   rÅ  rÂ   r·  rß  r,  rÒ   rÊ   rs   rÉ   )r*   r   r¹  rU  rN  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   ƒ n1 s#w   Y  q
d S )NrZ  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   rT  r   r   r   rN  Ç  rS   zGAbstractPickleTests.test_buffer_callback_error.<locals>.buffer_callbackrZ  r}   rO  )r   r€   rÑ   ÚZeroDivisionErrorr·  )r*   rN  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   ƒ n1 sMw   Y  qd S rY  )r   r€   rø   rÅ  r·  rÂ   rÑ   rU  rÒ   r   r!  )r*   rµ   r¹  rÏ   r   r   r   Útest_buffers_errorÍ  s   
ÿÿ€úz&AbstractPickleTests.test_buffers_errorc                 C   s8   t dtjd ƒD ]}| jd|d d}| j|d d}qd S )Nr}   r   rO  rT  )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                    rb  r    )rc  rd  re  rñ  rf  rÏ   rg  r.   r   r   Ú
check_copyã  ri  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-   rL  r   )r  r   r   r   rÖ  î  ó    zMAbstractPickleTests.test_buffers_numpy.<locals>.check_array.<locals>.<lambda>rO  rT  )	rø   r   rÅ  r·  rÒ   rÂ   r±   r—   r˜   )Úarrr¹  rÏ   r¦   rN  rU  ©rj  rh  r*   r   r   Úcheck_arrayç  s$   

øz;AbstractPickleTests.test_buffers_numpy.<locals>.check_arrayrM  r¹   é   rn  )rc  ZarangeZreshapeÚT)r*   rn  rl  r   rm  r   Útest_buffers_numpyÝ  s   

z&AbstractPickleTests.test_buffers_numpyc                    sÀ   ddl m‰ G ‡ ‡‡fdd„dƒatD ]J}tdƒD ]C}d‰ dd„ tdƒD ƒ‰ˆD ]}||_ˆ|_q(d	‰ z|  ˆ|¡}|  |¡ W q t	y\ } zd
}|  
|t|ƒ¡ W Y d }~qd }~ww qd S )Nr   )Úgetrandbitsc                       s.   e Zd Z‡ fdd„Zdd„ Z‡‡fdd„ZdS )ÚBadc                    s   ˆ S r    r   rP   )ÚENABLEDr   r   rR     r$   z
Bad.__eq__c                 S   r-   rƒ  r   r.   r   r   r   Ú__hash__  r$   zBad.__hash__c                    s   ˆdƒdkr
ˆ   ¡  tdfS )NrM  r   r   )Úclearrs  r.   )Ú
collectionrr  r   r   rc     s   zBad.__reduce__N)r7   r8   r9   rR   ru  rc   r   ©rt  rw  rr  r   r   rs    s    rs  r  Fc                 S   s   i | ]}t ƒ t ƒ “qS r   )rs  )rŸ  r  r   r   r   r    r"  zEAbstractPickleTests.test_evil_class_mutating_dict.<locals>.<dictcomp>Túchanged size during iteration)Úrandomrr  rs  r¶  rø   rô   rw  r·  rÒ   rÊ  r&  rh   )r*   r¹  r  rô   rÏ   rw  rF  r   rx  r   Útest_evil_class_mutating_dict
  s(   
€þöÿz1AbstractPickleTests.test_evil_class_mutating_dictc                    s´   t ˆdƒsˆ tˆƒ› d¡‚G dd„ dƒa‡ ‡fdd„}tD ]8‰ |tƒ gƒ |tƒ tƒ gƒ |tƒ hƒ |tƒ tƒ hƒ |tƒ diƒ |tƒ dtƒ diƒ |tƒ tƒ d	œƒ qd S )
Nrý  z has no associated pickler typec                   @   r[   )ÚClearerNr]   r   r   r   r   r|  .  r^   r|  c              
      sp   G ‡ fdd„dˆj ƒ}|t ¡ ˆƒ}z| ˆ ¡ W d S  ty7 } zd}ˆ |t|ƒ¡ W Y d }~d S d }~ww )Nc                       s   e Zd Z‡ fdd„ZdS )z]AbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPicklerc                    s   t |tƒr	ˆ  ¡  d S r    )rª   r|  rv  ©r*   r   ©rw  r   r   Úpersistent_id3  s   
zkAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.check.<locals>.EvilPickler.persistent_idN)r7   r8   r9   r  r   r~  r   r   ÚEvilPickler2  ó    r€  ry  )rý  r2   r<   r   rÊ  r&  rh   )rw  r€  rý  rw  rF  rÜ  r~  r   Úcheck1  s   €þzHAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.checkr   r¹   rk  )rË   ZskipTestrs   r|  r¶  )r*   r‚  r   rÜ  r   Ú%test_evil_pickler_mutating_collection(  s   
ùz9AbstractPickleTests.test_evil_pickler_mutating_collection)Œ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/  r1  r7  r9  r   r=  rB  rC  rE  rF  rL  rO  rQ  rR  rW  r\  r_  rd  rh  rj  rx  r|  r€  r‚  r‰  r  r  r’  r˜  rš  r  r¡  r¦  r¨  r«  r³  r¶  r¸  rº  r½  rÂ  rÄ  rÆ  rÈ  r   rË  rÏ  rÓ  rÖ  rØ  rÙ  rá  râ  rå  ré  rô  rò  rö  r   Zskip_if_pgo_taskrø  r  r  r  r  r   r1  r9  rC  rF  rK  rS  rX  r[  r]  r_  r`  ra  ÚunittestZskipIfrc  rq  r{  rƒ  r   r   r   r   r´  ¦  s   




			'							


	
/
 *
A:,*
,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   ƒ n1 s?w   Y  q	W d }d S d }w )Nr   r2  r¹   r®  rþ  )r¶  rÐ   rÑ   rî   r"  r·  )r*   r†  rÏ   r¹  r   r   r   Útest_huge_long_32bL  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   ƒ n1 sNw   Y  q	W d }d S d }w )Nó   abcdrL  rK  r®  rþ  r  )
r¶  rÐ   r·  r   rë  r  r  rÇ  r5  rÉ   ©r*   r†  rÏ   r¹  r5  ÚheaderZ
data_startr   r   r   Útest_huge_bytes_32b]  s*   ÿ
þö€ýz%BigmemPickleTests.test_huge_bytes_32bc              
   C   s  d|d  }z|t D ]t}|dk rq	| j|d_ |dkrA|  ttf¡ | j||d W d   ƒ n1 s4w   Y  	 W d   ƒ q	z)| j||d}tjt 	dt
|ƒ¡ }| |¡}|  |||t
|ƒ |… ¡ W d }nd }w W d   ƒ n1 sxw   Y  q	W d }d S d }w )Ns   acbdrL  rK  r®  rþ  ú<Q)r¶  rÐ   rÑ   rî   r"  r·  r   rê  r  r  rÇ  r5  rÉ   rŠ  r   r   r   Útest_huge_bytes_64br  s6   ÿúÿ
þð€ýz%BigmemPickleTests.test_huge_bytes_64br2  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   ƒ n1 sbw   Y  q	W d }d S d }w )Nr3  rL  r   r®  rþ  r  r‰  )r¶  rÐ   r·  r   rì  r  r  rÇ  r5  rÉ   ÚrindexrŠ  r   r   r   Útest_huge_str_32b  s4   ÿ
þÿÿô€ý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   ƒ n1 sŒw   Y  q	W d }d S d }w )Nr3  rL  r   r®  rþ  r  r‰  )r¶  rÐ   rÑ   rî   r"  r·  r   rí  r  r  rÇ  r5  rÉ   r  rŠ  r   r   r   Útest_huge_str_64b«  s@   ÿüÿ
þÿÿð€ýz#BigmemPickleTests.test_huge_str_64bN)r7   r8   r9   r   r	   rˆ  rŒ  r
   rŽ  r  r‘  r   r   r   r   r…  H  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„   Ó  r“  zREX_two.__reduce_ex__©r7   r8   r9   rÁ  r„   r   r   r   r   rÀ  Ð  r•  rÀ  c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )rÃ  Nc                 C   r—  rY   r˜  r™  r   r   r   r„   Ù  r“  zREX_three.__reduce_ex__c                 C   ó   t dƒ‚)Nz#This __reduce__ shouldn't be called)r   r.   r   r   r   rc   Ü  s   zREX_three.__reduce__)r7   r8   r9   rÁ  r„   rc   r   r   r   r   rÃ  ×  s    rÃ  c                   @   r–  )rÅ  Nc                 C   s   || _ t | |¡S r    )rÁ  r   r„   r™  r   r   r   r„   â  s   zREX_four.__reduce_ex__rš  r   r   r   r   rÅ  ß  r•  rÅ  c                   @   r’  )rÇ  r   c                 C   s   d| _ t | ¡S rà  )r¼  r   rc   r.   r   r   r   rc   é  rn   zREX_five.__reduce__Nr”  r   r   r   r   rÇ  æ  r•  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   ó  r  zREX_six.__eq__c                 C   r  r    )r·   rÂ   )r*   Úitemr   r   r   rÂ   õ  rA  zREX_six.appendc                 C   s   t | ƒdd t| jƒd fS rY   )rs   rW  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                   @   rœ  )rë  Nc                 C   s   |d ur	|| _ d S i | _ d S r    rè  )r*   ré  r   r   r   rA   þ  r  zREX_seven.__init__c                 C   rž  r    )rs   ré  rP   r   r   r   rR      r  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   rW  ré  r·   r.   r   r   r   rc     r  zREX_seven.__reduce__r    )r7   r8   r9   rA   rR   r¡  rc   r   r   r   r   rë  ú  r   rë  c                   @   rœ  )r  Nc                 C   r`   r    ©r  ©r*   r  r   r   r   rA     rb   zREX_state.__init__c                 C   rž  r    ©rs   r  rP   r   r   r   rR     r  zREX_state.__eq__c                 C   r`   r    r¢  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     rA  zREX_state.__reduce__r    )r7   r8   r9   rA   rR   r¥  rc   r   r   r   r   r    r   r  c                   @   ó   e Zd ZdZdS )rŠ  r   N©r7   r8   r9   r†  r   r   r   r   rŠ    ó    rŠ  c                   @   r¦  )ÚMyFloatg      ð?Nr§  r   r   r   r   r©    r¨  r©  c                   @   r¦  )Ú	MyComplexy      ð?        Nr§  r   r   r   r   rª    r¨  rª  c                   @   r¦  )ÚMyStrr  Nr§  r   r   r   r   r«     r¨  r«  c                   @   r¦  )Ú	MyUnicodeu	   hello áˆ´Nr§  r   r   r   r   r¬  #  r¨  r¬  c                   @   r¦  )r  ro  Nr§  r   r   r   r   r  &  r¨  r  c                   @   s   e Zd Zg d¢ZdS )rÐ  ro  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  r†  r   r   r   r   r  2  r  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   r5  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¹  B  r¯  r¹  c                   @   rC   )r  c                 O   r›  )Nz3SimpleNewObj.__init__() didn't expect to get called)rU  r¡   r   r   r   rA   F  r©   zSimpleNewObj.__init__c                 C   rr   r    )r5  rO   rP   r   r   r   rR   I  r  zSimpleNewObj.__eq__N)r7   r8   r9   rA   rR   r   r   r   r   r  E  rd   r  c                   @   rM   )rµ  c                 C   s   d|  dfS )Nú%Xr4  r   r.   r   r   r   Ú__getnewargs__M  rS   zComplexNewObj.__getnewargs__N)r7   r8   r9   r±  r   r   r   r   rµ  L  rT   rµ  c                   @   rM   )r·  c                 C   s   d|  fddifS )Nr°  Úbaser4  r   r.   r   r   r   Ú__getnewargs_ex__Q  rÒ  z!ComplexNewObjEx.__getnewargs_ex__N)r7   r8   r9   r³  r   r   r   r   r·  P  rT   r·  c                   @   rM   )rÉ  c                 C   s
   | j  d S r    )r¿   )r*   rñ   r   r   r   Ú__getattr__U  rb   zBadGetattr.__getattr__N)r7   r8   r9   r´  r   r   r   r   rÉ  T  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_filec  r¾  z/AbstractPickleModuleTests.test_load_closed_filec                 C   sB   t  ¡ }di dg}|  ||¡ | d¡ |  |¡}|  ||¡ d S )Nr¸  é|   r   )r2   r<   r   r4   ÚloadrÉ   )r*   ÚstreamrÏ   r6  r   r   r   Útest_load_from_and_dump_to_filek  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_protocols  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_callapiw  s   z&AbstractPickleModuleTests.test_callapic              	   C   sV   t tdƒ}ztD ]}|  t| jd||¡ qW | ¡  t t¡ d S | ¡  t t¡ w )NÚwr¸  )	rª  r   r¶  rÑ   rU  r   rº  r   r»  rE  r   r   r   Útest_dump_text_file  s   
ÿÿz-AbstractPickleModuleTests.test_dump_text_filec                 C   s(   t  d¡}|  ttjtjf| j|¡ d S )Ns   X''.)	r2   r<   rÑ   r  r  rY  r   r!  rÁ  )r*   rº  r   r   r   Útest_incomplete_inputŠ  s   
z/AbstractPickleModuleTests.test_incomplete_inputc                 C   sN   G dd„ d| j ƒ}G dd„ d| jƒ}|  tj|ƒ jd¡ |  tj|ƒ j¡ d S )Nc                   @   rM   )z;AbstractPickleModuleTests.test_bad_init.<locals>.BadPicklerc                 S   rV   r    r   r.   r   r   r   rA   ’  rk  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   •  rk  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   ƒ n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ƒ   rN  r   rT  )rz   rø   rÑ   rî   rÂ   r   rÅ  r*  rÉ   r   r!  rÊ   )	r*   r·  rÒ   r   r¹  rU  rN  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_buffers²  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·  ¸  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Ò   ½  s   
zCAbstractPickleModuleTests.test_dump_load_oob_buffers.<locals>.loads)rÏ  )r*   r·  rÒ   r   r.   r   Útest_dump_load_oob_buffers¶  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µ  Y  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ª   r5  Úid_countrh   Úfalse_count)r*   r   r   r   r   r  Ê  s   z,AbstractPersistentPicklerTests.persistent_idc                 C   s0   |s|  j d7  _ dS |  jd7  _t|ƒ}|S )Nr   rÓ  )Úload_false_countÚ
load_countr5  )r*   Zoidr   r   r   r   Úpersistent_loadÔ  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_persistenceÞ  s   ÷z/AbstractPersistentPicklerTests.test_persistenceN)r7   r8   r9   r  rØ  rÚ  r   r   r   r   rÒ  Ä  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$   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¹  r6  r   r   r   Ú_check_return_correct_typeô  s   zAAbstractIdentityPersistentPicklerTests._check_return_correct_typec                 C   sD   t D ]}|dkr|  dd¡ qddddtfD ]}|  ||¡ qqd S )Nr   r¾   s   abc
zabc
r½   g*\Âõ(¼¿)r¶  rÞ  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_strr5  r   r   r   Útest_protocol0_is_ascii_only  s   zCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_onlyN)r7   r8   r9   r  rØ  rÞ  rß  rá  r   r   r   r   rÛ  ì  s    	rÛ  c                   @   sj   e Zd ZdZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	ddœdd„Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )Ú#AbstractPicklerUnpicklerObjectTestsNc                 C   rV   r    r   r.   r   r   r   rµ    rk  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_memo2  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É   rv  r'  )
r*   rÏ   r¯  rý  ré  rí  rî  Ú	unpicklerZunpickled_data1Zunpickled_data2r   r   r   Útest_priming_unpickler_memoD  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pickled1rR  Zpickled2rñ  r   r   r   Útest_reusing_unpickler_objectsb  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   ƒ n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ý  r5  r  rñ  rÿ  rõ  r   r   r   Ú_check_multiple_unpicklings{  s*   

€ð€ÿz?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklingsc                 C   r  r    )rö  r2   r<   r.   r   r   r   Ú"test_multiple_unpicklings_seekable  rA  zFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekablec                 C   rÎ  ©NFrõ  )rö  r&   r.   r   r   r   Ú$test_multiple_unpicklings_unseekable’  rÒ  zHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekablec                 C   rÎ  rø  )rö  r;   r.   r   r   r   Ú!test_multiple_unpicklings_minimal•  s   zEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimalc                 C   sx   t tdƒƒ}tD ]1}tddƒD ])}tjt ¡ |d}| j||d}| |¡ | d¡ |  	|¡}|  
| ¡ |¡ qqd S )Nr£  r   é   )Zbuffer_sizerþ  r   )r¶   rø   r¶  r2   ÚBufferedRandomr<   ræ  r   r4   rð  rÉ   rÁ  )r*   rÏ   r¹  Zbuf_sizer¯  rý  rñ  r   r   r   Ú"test_unpickling_buffering_readlineš  s   


úÿzFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline)r7   r8   r9   ræ  rð  rµ  rê  rï  rò  rô  rö  r÷  rù  rú  rý  r   r   r   r   râ  	  s     râ  Zreduce_Ac                   @   rM   )r>  c                 C   s
   t tffS r    )rh   r?  r.   r   r   r   rc   ­  rb   zAAA.__reduce__NrÍ  r   r   r   r   r>  ¬  rT   r>  c                   @   rC   )ÚBBBc                 C   ó
   d| _ d S )Nzsome attribute©rl   r.   r   r   r   rA   ±  s   
zBBB.__init__c                 C   rÿ  )NúBBB.__setstate__r   r£  r   r   r   r¥  ¶  rb   r  N)r7   r8   r9   rA   r¥  r   r   r   r   rþ  °  s    rþ  c                 C   s   	 d| _ d S )Núcustom state_setterr   )r   r  r   r   r   Úsetstate_bbbº  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Í   r5  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  Ç  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   ƒ n1 s”w   Y  qd S )Nc                   S   rV   r    r   r   r   r   r   r¯  å  r$   z.AbstractHookTests.test_pickler_hook.<locals>.fc                   S   rV   r    r   r   r   r   r   r  è  r$   z.AbstractHookTests.test_pickler_hook.<locals>.gc                   S   rV   r    r   r   r   r   r   r  ë  r$   z.AbstractHookTests.test_pickler_hook.<locals>.hc                   @   r[   )z4AbstractHookTests.test_pickler_hook.<locals>.MyClassNr]   r   r   r   r   r  î  r^   r  r   r   r®  r}   r  r	  )rø   r   rÅ  rÐ   r2   r<   ræ  r   ÚmathÚlogrÒ   r=   rÉ   rÊ   rÑ   rÎ  ZassertRaisesRegexrî   )r*   r¯  r  r  r  r¹  ÚbiorC  Únew_fZsome_strZmath_logr   r   r   Útest_pickler_hookà  s2   ÿÿþ€î€ÿz#AbstractHookTests.test_pickler_hookc              	   C   s”   t dtjd ƒD ]?}| j|d/ dd„ }t |¡}t ¡ }|  ||¡}| 	|¡ t 
| ¡ ¡}~~|  |ƒ ¡ W d   ƒ n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Ð   r‹  Úrefr2   r<   ræ  r   rÒ   r=   r  )r*   r¹  r¯  Úwrr  rC  r  r   r   r   Ú(test_reducer_override_no_reference_cycle  s   

ñ€ÿz:AbstractHookTests.test_reducer_override_no_reference_cycleN)r7   r8   r9   r  r   Zcpython_onlyr  r   r   r   r   r  ß  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Ñ   rD  r  r“  rË   )r*   r¯  rC  r   r   r   Útest_default_dispatch_table#  s   ÿz6AbstractDispatchTableTests.test_default_dispatch_tablec                    s@   ˆ  ¡ ‰G ‡fdd„dˆjƒ‰ d‡ ‡‡fdd„	}ˆ |ˆ¡ d S )Nc                       s   e Zd Z” ZdS )zGAbstractDispatchTableTests.test_class_dispatch_table.<locals>.MyPicklerN)r7   r8   r9   r  r   )Údtr   r   Ú	MyPickler/  r¨  r  c                    s2   t  ¡ }ˆ ||ƒ}ˆ |jˆ¡ | | ¡ | ¡ S r    )r2   r<   rÉ   r  r   r=   ©r   rƒ   r¯  rC  ©r  r  r*   r   r   r·  2  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Ò   rM  rÛ  r   r   Úcustom_load_dumpJ  rA  zIAbstractDispatchTableTests._test_dispatch_table.<locals>.custom_load_dumpc                 S   s   t  t  | d¡¡S r!  )r   rÒ   r·  rM  r   r   r   Údefault_load_dumpM  rÒ  zJAbstractDispatchTableTests._test_dispatch_table.<locals>.default_load_dumpy      ð?       @Úreduce_1c                    ó
   t ˆ ffS r    rg   rM  )ÚREDUCE_1r   r   r$  X  rb   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1Úreduce_2c                    r%  r    rg   rM  )ÚREDUCE_2r   r   r'  o  rb   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2r  c                 S   s   t d| jd d tfS rY   )rþ  rO   r  rM  r   r   r   Ú
reduce_bbb‚  rÒ  zCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbbr  )rÉ   Úcomplexr>  rþ  r?  rÆ  rl   )r*   r·  r  r"  r#  rû  r$  rl   rm   r'  r)  r   )r&  r(  r·  r   r  I  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""")ÅrS  rR  rF   rP  r2   rN  r¢  r  r   r   r¤  r  r¦  r¬  r]  r„  r‹  Útextwrapr   Zhttp.cookiesr   rŸ   r[  Ú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numpyrc  Z
skipUnlessr0  r³  rø   rÅ  r¶  r   r   r#   r<   r&   r   r;   rD   rN   rU   rX   r\   r_   re   r8   r5  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®  rD  rÓ   ÚBufferErrorÚBytesWarningÚDeprecationWarningr  ÚEnvironmentErrorrý   ÚFloatingPointErrorÚFutureWarningÚGeneratorExitÚIOErrorÚImportWarningÚIndentationErrorÚ
IndexErrorÚKeyErrorÚKeyboardInterruptÚLookupErrorÚMemoryErrorÚ	NameErrorr(   rY  r"  ÚPendingDeprecationWarningÚReferenceErrorrÊ  ÚRuntimeWarningÚStopIterationÚSyntaxErrorÚSyntaxWarningÚSystemErrorÚ
SystemExitÚTabErrorrU  ÚUnboundLocalErrorÚUnicodeErrorÚUnicodeWarningÚUserWarningrî   ÚWarningr^  rû   rü   rþ   rÅ   rÆ   r´  r…  r»  rÀ  rÃ  rÅ  rÇ  rÙ  rë  r  rŠ  Úfloatr©  r*  rª  rh   r«  r¬  rÛ  r  r¶   rÐ  rv   ræ  rö   r  r  r  r„  r­  rŽ  r¹  r  rµ  r·  rÉ  rµ  rÒ  rÛ  râ  r?  r>  rþ  r  r  r  r  r7   r¿  r"   rÿ  r·  rC  rÕ   r‰   rÇ  Újrm   r   r   r   r   Ú<module>   s   ÿ 
ÿ€ÿÿ	
NÿSÿAÿ:ÿ:ÿCÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâ à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó0    i             / 
ýk( "
B
k
ð