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Zdd„ ZdS )Ú	MinimalIOz=
    A file-like object that doesn't support readinto().
    c                 G   s8   t j|Ž | _| jj| _| jj| _| jj| _| jj| _d S r    )r2   ÚBytesIOZ_bioÚgetvalueÚreadÚreadlineÚwriter)   r   r   r   Ú__init__`   s
   


zMinimalIO.__init__N)r7   r8   r9   Ú__doc__rA   r   r   r   r   r;   \   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__N©r7   r8   r9   rA   r   r   r   r   rU   ‹   rT   rU   c                   @   rM   )ÚEc                 C   r-   ©Nr   r   r.   r   r   r   Ú__getinitargs__   r$   zE.__getinitargs__N)r7   r8   r9   r[   r   r   r   r   rY      rT   rY   c                   @   ó   e Zd ZdS )ÚObjectN©r7   r8   r9   r   r   r   r   r]   ”   ó    r]   c                   @   rC   )ÚKc                 C   ó
   || _ d S r    )Úvalue)r*   rb   r   r   r   rA   ™   ó   
z
K.__init__c                 C   s   t | jffS r    )r`   rb   r.   r   r   r   Ú
__reduce__œ   s   zK.__reduce__N)r7   r8   r9   rA   rd   r   r   r   r   r`   ˜   ó    r`   Ú__main__c                   @   rM   )Úmyintc                 C   s   t |ƒ| _ d S r    ©Ústr)r*   r"   r   r   r   rA   ©   ó   zmyint.__init__NrX   r   r   r   r   rg   ¨   rT   rg   c                   @   rC   )Úinitargc                 C   s   || _ || _d S r    ©ÚaÚb)r*   rm   rn   r   r   r   rA   ®   ó   
zinitarg.__init__c                 C   s   | j | jfS r    rl   r.   r   r   r   r[   ²   rS   zinitarg.__getinitargs__N)r7   r8   r9   rA   r[   r   r   r   r   rk   ¬   s    rk   c                   @   r\   )Ú	metaclassNr^   r   r   r   r   rp   µ   r_   rp   c                   @   r\   )Úuse_metaclassNr^   r   r   r   r   rq   ¸   r_   rq   )rp   c                   @   rC   )Úpickling_metaclassc                 C   ó   t | ƒt |ƒko| j|jkS r    )ÚtypeÚreduce_argsrP   r   r   r   rR   ¼   s   
ÿzpickling_metaclass.__eq__c                 C   s
   t | jfS r    )Úcreate_dynamic_classru   r.   r   r   r   rd   À   rc   zpickling_metaclass.__reduce__N)r7   r8   r9   rR   rd   r   r   r   r   rr   »   s    rr   c                 C   s   t | |tƒ ƒ}| |f|_|S r    )rr   Údictru   )ÚnameÚbasesÚresultr   r   r   rv   Ã   s   
rv   c                   @   s<   e Zd ZdZdZdZdZdd„ Zdd„ ZeZ	e
dd„ ƒZdS )	ÚZeroCopyBytesTc                 C   ó4   |dkrt | ƒjt | ¡fd fS t | ƒjt| ƒffS ©Né   ©rt   Ú_reconstructr   ÚPickleBufferÚbytes©r*   Úprotocolr   r   r   Ú__reduce_ex__Ï   ó   zZeroCopyBytes.__reduce_ex__c                 C   ó   d  | jjt| ƒ¡S ©Nz{}({!r})©ÚformatÚ	__class__r7   r‚   r.   r   r   r   Ú__repr__Õ   ó   zZeroCopyBytes.__repr__c                 C   óX   t |ƒ}|j}t|ƒ| u r|W  d   ƒ S | |ƒW  d   ƒ S 1 s%w   Y  d S r    ©Ú
memoryviewÚobjrt   ©Úclsr‘   Úmr   r   r   r€   Ú   ó   
ü$úzZeroCopyBytes._reconstructN©r7   r8   r9   ÚreadonlyÚc_contiguousÚf_contiguousÚzero_copy_reconstructr…   rŒ   Ú__str__Úclassmethodr€   r   r   r   r   r{   É   ó    r{   c                   @   s<   e Zd ZdZdZdZdZdd„ Zdd„ ZeZ	e
dd„ ƒZd	S )
ÚZeroCopyBytearrayFTc                 C   r|   r}   r   rƒ   r   r   r   r…   ë   r†   zZeroCopyBytearray.__reduce_ex__c                 C   r‡   rˆ   r‰   r.   r   r   r   rŒ   ñ   r   zZeroCopyBytearray.__repr__c                 C   rŽ   r    r   r’   r   r   r   r€   ö   r•   zZeroCopyBytearray._reconstructNr–   r   r   r   r   rž   å   r   rž   c                   @   sp   e Zd ZdZdd„ Zdd„ Zedd„ ƒZedd	„ ƒZed
d„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZdS )ÚPicklableNDArrayFc                 O   s   t j|i |¤Ž| _d S r    )Ú_testbufferZndarrayÚarray©r*   r+   Úkwargsr   r   r   rA   	  ó   zPicklableNDArray.__init__c                 C   s"   t | ƒ}| |¡}| j| |_|S r    )rt   Ú__new__r¡   )r*   Úidxr“   Únewr   r   r   Ú__getitem__  s   
zPicklableNDArray.__getitem__c                 C   ó   | j jS r    )r¡   r—   r.   r   r   r   r—     ó   zPicklableNDArray.readonlyc                 C   r©   r    )r¡   r˜   r.   r   r   r   r˜     rª   zPicklableNDArray.c_contiguousc                 C   r©   r    )r¡   r™   r.   r   r   r   r™     rª   zPicklableNDArray.f_contiguousc                 C   sb   t |tƒstS |jj| jjko0|jj| jjko0|jj| jjko0|jj| jjko0|j ¡ | j ¡ kS r    )	Ú
isinstancerŸ   ÚNotImplementedr¡   rŠ   ÚshapeÚstridesr—   ÚtobytesrP   r   r   r   rR     s   
ÿþýüzPicklableNDArray.__eq__c                 C   s   t |tƒstS | |k S r    )r«   rŸ   r¬   rP   r   r   r   Ú__ne__'  s   

zPicklableNDArray.__ne__c                 C   s.   t | ƒ› d| jj› d| jj› d| j ¡ › dS )Nz(shape=z	,strides=z, bytes=ú))rt   r¡   r­   r®   r¯   r.   r   r   r   rŒ   ,  s
   ÿþzPicklableNDArray.__repr__c                 C   sž   | j jstdƒ‚| j j| j j| j j| jrdntjdœ}t	 
| j ¡}|dkr.t| ƒj||ffS | ¡ }t| ƒj| ¡ |ffW  d   ƒ S 1 sHw   Y  d S )Nz>Reconstructing a non-contiguous ndarray does not seem possibler   )r­   r®   rŠ   Úflagsr~   )r¡   Ú
contiguousr(   r­   r®   rŠ   r—   r    ÚND_WRITABLEr   r   rt   r€   Úrawr¯   )r*   r„   Zndarray_kwargsÚpbr”   r   r   r   r…   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ƒr7| j|j|j|d | j|j|j|d t|dƒrj| j|j	|j	|d |j	D ]"}| jt||ƒt||ƒ|d | jt
||dƒt
||dƒ|d qIdS dS )zKUtility method to verify if two objects are copies of each others.
        Nz{!r} is not a copy of {!r})ÚmsgrO   Ú	__slots__)rŠ   ÚassertEqualÚassertIsrt   ÚhasattrZassertDictEqualrO   ÚassertIsNotZassertListEqualrÉ   Úgetattr)r*   r‘   ZobjcopyrÈ   Zslotr   r   r   Úassert_is_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   rY   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
.)ri   ré   rÓ   rÏ   rÙ   Ú
ValueError)r*   Zmaxint64rÐ   Úgotr   r   r   Útest_maxint64«  s   
z#AbstractUnpickleTests.test_maxint64c                 C   sX  |   t¡}|  |tddgƒ¡ |   t¡}|  t|ƒttdƒƒ¡ |  t|ƒttdƒƒ¡ |   t¡}|  t|ƒt	¡ |  t| 
¡ ƒdg¡ |  |d jd¡ tD ]}t d|j d¡¡}|   |¡}|  t|ƒ|¡ qO|   t dd	¡¡}|  t|ƒt¡ |   t¡}|  t|ƒt¡ |  |jd
¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ d S )Nr   rº   r   r~   Úkeyrb   ó   ?rç   ó   StandardErrorrÀ   Úbad)rÓ   ÚDATA_SETrÊ   ÚsetÚDATA_XRANGErt   Úranger·   ÚDATA_COOKIEr   Úkeysrb   Úpython2_exceptions_without_argsÚexception_picklerê   r7   ré   rË   Ú	ExceptionÚ
DATA_UEERRÚUnicodeEncodeErrorÚobjectÚencodingÚstartÚendÚreason)r*   ÚloadedrØ   rÐ   r   r   r   Útest_unpickle_from_2xµ  s,   




z+AbstractUnpickleTests.test_unpickle_from_2xc                 C   óF   |   | jdddd¡ |   | jdddd¡ |   | jdddd¡ d S )Ns   S'a\x00\xa0'
.r‚   ©r  s   a  s   Ua  .s   €Ua  .©rÊ   rÓ   r.   r   r   r   Útest_load_python2_str_as_bytesÓ  ó   
ÿÿ
ÿÿ
ÿÿz4AbstractUnpickleTests.test_load_python2_str_as_bytesc                 C   r  )Ns	   V\u03c0
.r‚   r	  u   Ï€s   X   Ï€.s
   €X   Ï€.r
  r.   r   r   r   Ú test_load_python2_unicode_as_strÞ  r  z6AbstractUnpickleTests.test_load_python2_unicode_as_strc                 C   s2   |   | jtjt dd¡ d tj ddd¡ d S )Nú<Ii,  s,  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr‚   r	  )rÊ   rÓ   r   Ú	BINSTRINGÚstructÚpackÚSTOPr.   r   r   r   Ú#test_load_long_python2_str_as_bytesé  s   
ÿþþýýz9AbstractUnpickleTests.test_load_long_python2_str_as_bytesc                 C   s\   |   |  d¡¡ |  |  d¡d¡ |  |  d¡d¡ |  |  d¡d¡ |  |  d¡d¡ d S )Ns   N.s   ˆ.Ts   ‰.Fs   I01
.s   I00
.)ÚassertIsNonerÓ   rË   r.   r   r   r   Útest_constantsð  s
   z$AbstractUnpickleTests.test_constantsc                 C   s   | j ddd}|  |d¡ d S )Ns   €U q .zkoi8-rr	  Ú )rÓ   rÊ   )r*   Úemptyr   r   r   Útest_empty_bytestring÷  s   z+AbstractUnpickleTests.test_empty_bytestringc                 C   ó   d}|   |  |¡d¡ d S )Ns	   €Câ‚¬ .ó   â‚¬ r
  ©r*   Údumpedr   r   r   Útest_short_binbytesü  ó   z)AbstractUnpickleTests.test_short_binbytesc                 C   r  )Ns   €B   â‚¬ .r  r
  r  r   r   r   Útest_binbytes   r  z#AbstractUnpickleTests.test_binbytesc                 C   ó   d}|   tjtf|¡ d S )Ns   €Bÿÿÿÿxyzq .©rÙ   r   ÚUnpicklingErrorÚOverflowErrorr  r   r   r   Útest_negative_32b_binbytes  ó   ÿz0AbstractUnpickleTests.test_negative_32b_binbytesc                 C   r   )Ns   €Xÿÿÿÿxyzq .r!  r  r   r   r   Útest_negative_32b_binunicode  r%  z2AbstractUnpickleTests.test_negative_32b_binunicodec                 C   r  )Ns	   €Œâ‚¬ .õ   â‚¬ r
  r  r   r   r   Útest_short_binunicode  r  z+AbstractUnpickleTests.test_short_binunicodec                 C   sD   |   tjd¡ |   tjd¡ |   tjd¡ |  ddg|  d¡¡ d S )Ns   g0
p0s   jens:s   hens:)éd   s   ((Kdtp0
h l.)))rÙ   r   r"  rÏ   rÓ   r.   r   r   r   Útest_misc_get  s   
ÿz#AbstractUnpickleTests.test_misc_getc                 C   r  )Ns   €Ž       â‚¬ .r  r
  r  r   r   r   Útest_binbytes8  r  z$AbstractUnpickleTests.test_binbytes8c                 C   r  )Ns   €       â‚¬ .r'  r
  r  r   r   r   Útest_binunicode8!  r  z&AbstractUnpickleTests.test_binunicode8c                 C   s   d}|   |  |¡tdƒ¡ d S )Ns   €–       xxx.s   xxx)rÊ   rÓ   Ú	bytearrayr  r   r   r   Útest_bytearray8%  s   z%AbstractUnpickleTests.test_bytearray8c                 C   r   )Ns   €Ž      â‚¬ .r!  r  r   r   r   Útest_large_32b_binbytes8)  ó   ÿz.AbstractUnpickleTests.test_large_32b_binbytes8c                 C   r   )Ns   €–      â‚¬ .r!  r  r   r   r   Útest_large_32b_bytearray8/  r0  z/AbstractUnpickleTests.test_large_32b_bytearray8c                 C   r   )Ns   €      â‚¬ .r!  r  r   r   r   Útest_large_32b_binunicode85  r0  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   r3  )Ns   (]qÿhÿt.rº   r   r   r4  r5  r   r   r   Útest_bingetA  r9  z!AbstractUnpickleTests.test_bingetc                 C   r3  )Ns   (]r   j   t.rº   r   r   r4  r5  r   r   r   Útest_long_bingetG  r9  z&AbstractUnpickleTests.test_long_bingetc                 C   r3  )Ns   ((l2t.rº   r   r   r4  r5  r   r   r   Útest_dupM  r9  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'
.rF  r
  )r*   ZgoodpicklesrD  Úexpectedr   r   r   Útest_correctly_quoted_strings  s   ÿz2AbstractUnpickleTests.test_correctly_quoted_stringc                 C   r  )Ns   €•       I42
.é*   r
  )r*   r6  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Ë   rt   rù   rÊ   r·   Ú	functoolsÚreduceÚdbmÚwhichdbrþ   ri   ÚcollectionsÚUserDict)r*   r6  r7  rx   r   r   r   Útest_compat_unpickleƒ  s,   

ÿ
ûz*AbstractUnpickleTests.test_compat_unpicklec                 C   s.   |   |  d¡d¡ |  td¡ |  td¡ d S )Ns   cbuiltins
int
)R.r   s   N)R.s   cbuiltins
int
NR.)rÊ   rÓ   rÙ   Ú	TypeErrorr.   r   r   r   Útest_bad_reducež  s   z%AbstractUnpickleTests.test_bad_reducec                 C   s8   t jtf}|  |  d¡d¡ |  |d¡ |  |d¡ d S )Ns   cbuiltins
int
).r   s   cbuiltins
len
).s   cbuiltins
int
N.©r   r"  rV  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’.rX  rY  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_errorsrC  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(”ru  rC  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_errorsrC  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.rL  c                      s   ˆ   ¡  ˆ t ˆ¡¡ d S r    )ÚwaitrÃ   r   rÓ   r   ©ÚbarrierZpickle_bytesÚresultsr   r   Út  s   z:AbstractUnpickleTests.test_unpickle_module_race.<locals>.t)Útarget)ÚToBeUnpickledc                 S   ó   g | ]}t |ƒ‘qS r   )rt   ©Ú.0r"   r   r   r   Ú
<listcomp>¡  ó    zCAbstractUnpickleTests.test_unpickle_module_race.<locals>.<listcomp>rº   )r   ÚosÚmkdirr   Z
addCleanupÚshutilÚrmtreeÚsysÚpathÚinsertÚremoveÚopenÚjoinr@   ré   r   r•  Ú	threadingÚBarrierÚThreadr  r—  r™  r–  r  rÊ   )	r*   Zlocker_moduleZlocking_import_moduleÚfr•  r›  Út1Út2r  r   r˜  r   Útest_unpickle_module_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/  r1  r2  r8  r:  r;  r<  r?  r@  rA  rE  rH  rJ  rU  rW  r[  r\  rv  rw  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 )NrM  )r   r   r   )Ú	protocolsrg   ÚdumpsrÓ   rÏ   rk   ©r*   Úprotor"   ÚsrÅ   r   r   r   Ú	test_misc²  s   



òzAbstractPickleTests.test_miscc                 C   s6   | j }tD ]}|  ||¡}|  |¡}|  ||¡ qd S r    )rÛ   r·  r¸  rÓ   rÏ   )r*   rG  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º  rG  r»  Zfilelikerð   r   r   r   Údont_test_disassemblyÓ  s   ûz)AbstractPickleTests.dont_test_disassemblyr   c           	      C   st   |ƒ }|  |¡ t|tjd ƒD ]'}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t|ƒd¡ |  	|d |¡ qd S ©Nr   r   )
rÃ   rù   r   ÚHIGHEST_PROTOCOLr¸  rÓ   ÚassertIsInstancerÊ   ÚlenrË   )	r*   r“   ÚaslistÚminprotocolÚlrº  r»  r"   rÅ   r   r   r   Ú_test_recursive_listÞ  s   

úz(AbstractPickleTests._test_recursive_listc                 C   ó   |   t¡ d S r    )rÌ  r·   r.   r   r   r   Útest_recursive_listê  rj   z'AbstractPickleTests.test_recursive_listc                 C   ó   | j tdd d S ©Nrº   )rÊ  )rÌ  ÚMyListr.   r   r   r   Útest_recursive_list_subclassí  ó   z0AbstractPickleTests.test_recursive_list_subclassc                 C   ó   | j tdd„ d d S )Nc                 S   ó   | j S r    ©r¸   r!   r   r   r   Ú<lambda>ñ  ó    z>AbstractPickleTests.test_recursive_list_like.<locals>.<lambda>©rÉ  )rÌ  ÚREX_sixr.   r   r   r   Útest_recursive_list_likeð  r¤   z,AbstractPickleTests.test_recursive_list_likec           	      C   s,  |ƒ f}|d   |¡ t|tjd ƒD ]9}|  ||¡}|  |¡}|  |t¡ |  t	|ƒd¡ |  |d |¡ ||d ƒ}|  t	|ƒd¡ |  
|d |¡ q|\}t|tjd ƒD ];}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t	|ƒd¡ |  |d t¡ |  t	|d ƒd¡ |  
|d d |¡ qXd S rE   )rÃ   rù   r   rÆ  r¸  rÓ   rÇ  ÚtuplerÊ   rÈ  rË   )	r*   r“   rÉ  rÊ  r›  rº  r»  r"   rÅ   r   r   r   Ú_test_recursive_tuple_and_listó  s,   

øz2AbstractPickleTests._test_recursive_tuple_and_listc                 C   rÍ  r    )rÝ  r·   r.   r   r   r   Útest_recursive_tuple_and_list  rj   z1AbstractPickleTests.test_recursive_tuple_and_listc                 C   rÏ  rÐ  )rÝ  rÑ  r.   r   r   r   Ú&test_recursive_tuple_and_list_subclass  rÓ  z:AbstractPickleTests.test_recursive_tuple_and_list_subclassc                 C   rÔ  )Nc                 S   rÕ  r    rÖ  r!   r   r   r   r×    rØ  zHAbstractPickleTests.test_recursive_tuple_and_list_like.<locals>.<lambda>rÙ  )rÝ  rÚ  r.   r   r   r   Ú"test_recursive_tuple_and_list_like  r¤   z6AbstractPickleTests.test_recursive_tuple_and_list_likec           	      C   sx   |ƒ }||d< t |tjd ƒD ]*}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t| ¡ ƒdg¡ |  	|d |¡ qd S ©Nr   )
rù   r   rÆ  r¸  rÓ   rÇ  rÊ   r·   rû   rË   ©	r*   r“   ÚasdictrÊ  Údrº  r»  r"   rÅ   r   r   r   Ú_test_recursive_dict  s   
úz(AbstractPickleTests._test_recursive_dictc                 C   rÍ  r    )rå  rw   r.   r   r   r   Útest_recursive_dict"  rj   z'AbstractPickleTests.test_recursive_dictc                 C   rÏ  rÐ  )rå  ÚMyDictr.   r   r   r   Útest_recursive_dict_subclass%  rÓ  z0AbstractPickleTests.test_recursive_dict_subclassc                 C   rÔ  )Nc                 S   rÕ  r    ©Útabler!   r   r   r   r×  )  rØ  z>AbstractPickleTests.test_recursive_dict_like.<locals>.<lambda>©rã  )rå  Ú	REX_sevenr.   r   r   r   Útest_recursive_dict_like(  r¤   z,AbstractPickleTests.test_recursive_dict_likec           	      C   s.  |ƒ f}||d d< t |tjd ƒD ]:}|  ||¡}|  |¡}|  |t¡ |  t|ƒd¡ |  |d |¡ ||d ƒ}|  t	|ƒdg¡ |  
|d |¡ q|\}t |tjd ƒD ]<}|  ||¡}|  |¡}|  ||¡ ||ƒ}|  t	|ƒdg¡ |  |d t¡ |  t|d ƒd¡ |  
|d d |¡ qXd S rE   )rù   r   rÆ  r¸  rÓ   rÇ  rÜ  rÊ   rÈ  r·   rË   ©	r*   r“   rã  rÊ  r›  rº  r»  r"   rÅ   r   r   r   Ú_test_recursive_tuple_and_dict+  s,   

øz2AbstractPickleTests._test_recursive_tuple_and_dictc                 C   rÍ  r    )rï  rw   r.   r   r   r   Útest_recursive_tuple_and_dictE  rj   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Ë   rb   râ  r   r   r   Ú_test_recursive_dict_keyN  s   
ùz,AbstractPickleTests._test_recursive_dict_keyc                 C   rÍ  r    )ró  rw   r.   r   r   r   Útest_recursive_dict_key\  rj   z+AbstractPickleTests.test_recursive_dict_keyc                 C   rÏ  rÐ  )ró  rç  r.   r   r   r   Ú test_recursive_dict_subclass_key_  rÓ  z4AbstractPickleTests.test_recursive_dict_subclass_keyc                 C   rÔ  )Nc                 S   rÕ  r    ré  r!   r   r   r   r×  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Ë   rb   rî  r   r   r   Ú"_test_recursive_tuple_and_dict_keye  s,   

 ùz6AbstractPickleTests._test_recursive_tuple_and_dict_keyc                 C   rÍ  r    )r÷  rw   r.   r   r   r   Ú!test_recursive_tuple_and_dict_key  rj   z5AbstractPickleTests.test_recursive_tuple_and_dict_keyc                 C   rÏ  rÐ  )r÷  rç  r.   r   r   r   Ú*test_recursive_tuple_and_dict_subclass_key„  rÓ  z>AbstractPickleTests.test_recursive_tuple_and_dict_subclass_keyc                 C   rÔ  )Nc                 S   rÕ  r    ré  r!   r   r   r   r×  ˆ  rØ  zLAbstractPickleTests.test_recursive_tuple_and_dict_like_key.<locals>.<lambda>rë  )r÷  rì  r.   r   r   r   Ú&test_recursive_tuple_and_dict_like_key‡  r¤   z:AbstractPickleTests.test_recursive_tuple_and_dict_like_keyc                 C   sþ   t ƒ }| t|ƒ¡ tdtjd ƒD ]0}|  ||¡}|  |¡}|  |t ¡ |  	t
|ƒd¡ |  t|ƒd t¡ |  t|ƒd j|¡ q|\}tdtjd ƒD ].}|  ||¡}|  |¡}|  |t¡ |  |jt ¡ |  	t
|jƒd¡ |  t|jƒd |¡ qNd S )NrM  r   r   )r÷   Úaddr`   rù   r   rÆ  r¸  rÓ   rÇ  rÊ   rÈ  r·   rË   rb   ©r*   rÅ   rº  r»  r"   r   r   r   Útest_recursive_setŠ  s$   

úz&AbstractPickleTests.test_recursive_setc                 C   s^   t ƒ }||_tD ]$}|  ||¡}|  |¡}|  |t ¡ |  t|ƒt|ƒ¡ |  |j|¡ qd S r    )	r]   Úattrr·  r¸  rÓ   rÇ  rÊ   ÚdirrË   )r*   Úirº  r»  r"   r   r   r   Útest_recursive_inst   s   
ûz'AbstractPickleTests.test_recursive_instc                 C   s¬   g }d|i}t ƒ }||_| |¡ tD ]@}|  ||¡}|  |¡}|  |t¡ |  t	|ƒd¡ |  t
|d ƒt
|ƒ¡ |  t|d j ¡ ƒdg¡ |  |d jd |¡ qd S rÅ  )r]   rþ  rÃ   r·  r¸  rÓ   rÇ  r·   rÊ   rÈ  rÿ  rû   rË   )r*   rË  rä  r   rº  r»  r"   r   r   r   Útest_recursive_multi«  s   

ùz(AbstractPickleTests.test_recursive_multic                 C   sø   t ƒ }||gƒ|_t|jƒ}tD ]3}|  ||¡}|  |¡}|  |j|¡ |  t|jƒd¡ |  t	|jƒd t ¡ |  
t	|jƒd |¡ q|j}tD ]0}|  ||¡}|  |¡}|  ||¡ |  t|ƒd¡ |  t	|ƒd t ¡ |  
t	|ƒd j|¡ qId S rÅ  )r]   rþ  rt   r·  r¸  rÓ   rÇ  rÊ   rÈ  r·   rË   )r*   ÚfactoryÚor›  rº  r»  r"   r   r   r   Ú#_test_recursive_collection_and_instº  s&   


úz7AbstractPickleTests._test_recursive_collection_and_instc                 C   rÍ  r    )r  r·   r.   r   r   r   Útest_recursive_list_and_instÓ  rj   z0AbstractPickleTests.test_recursive_list_and_instc                 C   rÍ  r    )r  rÜ  r.   r   r   r   Útest_recursive_tuple_and_instÖ  rj   z1AbstractPickleTests.test_recursive_tuple_and_instc                 C   ó   |   tj¡ d S r    )r  rw   Úfromkeysr.   r   r   r   Útest_recursive_dict_and_instÙ  rB  z0AbstractPickleTests.test_recursive_dict_and_instc                 C   rÍ  r    )r  r÷   r.   r   r   r   Útest_recursive_set_and_instÜ  rj   z/AbstractPickleTests.test_recursive_set_and_instc                 C   rÍ  r    )r  Ú	frozensetr.   r   r   r   Ú!test_recursive_frozenset_and_instß  rj   z5AbstractPickleTests.test_recursive_frozenset_and_instc                 C   rÍ  r    )r  rÑ  r.   r   r   r   Ú%test_recursive_list_subclass_and_instâ  rj   z9AbstractPickleTests.test_recursive_list_subclass_and_instc                 C   rÍ  r    )r  ÚMyTupler.   r   r   r   Ú&test_recursive_tuple_subclass_and_instå  rj   z:AbstractPickleTests.test_recursive_tuple_subclass_and_instc                 C   r  r    )r  rç  r	  r.   r   r   r   Ú%test_recursive_dict_subclass_and_instè  rB  z9AbstractPickleTests.test_recursive_dict_subclass_and_instc                 C   rÍ  r    )r  ÚMySetr.   r   r   r   Ú$test_recursive_set_subclass_and_instë  rj   z8AbstractPickleTests.test_recursive_set_subclass_and_instc                 C   rÍ  r    )r  ÚMyFrozenSetr.   r   r   r   Ú*test_recursive_frozenset_subclass_and_instî  rj   z>AbstractPickleTests.test_recursive_frozenset_subclass_and_instc                 C   sJ   t ƒ }||_tD ]}|  ||¡}|  |¡}|  |t ¡ |  |j|¡ qd S r    )Ú	REX_stateÚstater·  r¸  rÓ   rÇ  rË   rü  r   r   r   Útest_recursive_inst_stateñ  s   
üz-AbstractPickleTests.test_recursive_inst_statec                 C   sØ   t ƒ f}||d _tD ],}|  ||¡}|  |¡}|  |t¡ |  t|ƒd¡ |  |d t ¡ |  	|d j|¡ q|\}tD ],}|  ||¡}|  |¡}|  |t ¡ |  |jt¡ |  t|jƒd¡ |  	|jd |¡ q=d S rE   )
r  r  r·  r¸  rÓ   rÇ  rÜ  rÊ   rÈ  rË   )r*   r›  rº  r»  r"   r   r   r   Ú#test_recursive_tuple_and_inst_stateû  s$   


úz7AbstractPickleTests.test_recursive_tuple_and_inst_statec                 C   sB   g d¢}t D ]}|D ]}|  ||¡}|  |¡}|  ||¡ q
qd S )N)r  z<\u>u   <\áˆ´>z<
>z<\>u   <\ð’…>u   <í²€>©r·  r¸  rÓ   rÏ   )r*   Zendcasesrº  ÚurD  Úu2r   r   r   Útest_unicode  s   
ýÿz AbstractPickleTests.test_unicodec                 C   s4   d}t D ]}|  ||¡}|  |¡}|  ||¡ qd S )Nu   ð’…r  )r*   r›  rº  rD  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©rx  ó   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»  rD  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  rL  s	   bytearrayrM  r~   )r·  r-  r¸  rÓ   rÍ   rÏ   ÚassertInÚ
assertTruer   r   ÚGLOBALÚSTACK_GLOBALÚassertNotInÚ
BYTEARRAY8)r*   rº  r»  rn   rD  Zbbr   r   r   Útest_bytearray/  s&   
€ñÿz"AbstractPickleTests.test_bytearrayc                 C   sJ   t D ] }dD ]}t|ƒ}|  ||f|¡}|  |¡\}}|  ||¡ qqd S )Nr  )r·  r-  r¸  rÓ   rË   )r*   rº  r»  rn   rD  Ú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   rG  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Ë   rt   rÊ   )	r*   rº  ÚnbitsZnbaseZnposr   r   rð   rD  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º  rb   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   rL  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·  rk   r¸  rÓ   rÏ   rA  r   r   r   Útest_getinitargs  s   

üz$AbstractPickleTests.test_getinitargsc                 C   s:   t ƒ }tD ]}|  ||¡}|  |¡}|  |j|j¡ qd S r    )rq   r·  r¸  rÓ   rÊ   r‹   ©r*   rm   rº  r»  rn   r   r   r   Útest_metaclassˆ  s   
ýz"AbstractPickleTests.test_metaclassc                 C   s^   t dtfƒ}t ttj¡ tD ]}|  ||¡}|  |¡}|  	||¡ |  
t|ƒt|ƒ¡ qd S )NZmy_dynamic_class)rv   r  rF   r   rr   rd   r·  r¸  rÓ   rÊ   rË   rt   rE  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Ì   rH  )r*   rI  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Ë   rO  r   r   r   Útest_notimplemented±  rQ  z'AbstractPickleTests.test_notimplementedc                 C   sL   d dt g}|D ]}tD ]}|  t|ƒ|¡}|  |¡}|  t|ƒ|¡ qqd S rN  )r¬   r·  r¸  rt   rÓ   rË   )r*   Z
singletonsZ	singletonrº  r»  r  r   r   r   Útest_singleton_types·  s   

ýÿz(AbstractPickleTests.test_singleton_typesc                 C   sP   t j ¡ D ] }t|tƒr%t|tƒs%tD ]}|  ||¡}|  	|  
|¡|¡ qqd S r    )ÚbuiltinsrO   Úvaluesr«   rt   Ú
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º   )rT  rO   rU  r«   rt   rV  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    )
rT  rO   rU  r«   ÚtypesÚBuiltinFunctionTyper·  r¸  rË   rÓ   rW  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'  ri   Zfail)r*   rº  r6  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 )Nrf  r4  rº   )r·  r¸  rÓ   rÏ   rÊ   r   r   ÚLONG4rh  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   rL  )r   rM  )r   r   )r   r   ©r   rº   )r   rL  ©r   rM  )rº   r   ©rº   r   )rº   rº   )rº   rL  )rº   rM  )rL  r   )rL  r   ))rL  rº   )rL  rL  ©rL  rM  r   )r   ©r   rº   rL  )r   rº   rL  rM  rL  )r   ÚTUPLEÚEMPTY_TUPLEÚTUPLE1ÚTUPLE2ÚTUPLE3r·  r¸  rÓ   rÏ   ÚminrÈ  r(  r   )r*   Úexpected_opcoderm   rn   rÄ   rä  Úerº  r"   r»  rÅ   rG  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)rL  N)r   T)r   T)rº   T)rL  T)r   F)r   F)rº   F)rL  F)NFTrL  )r   rc  ÚINTÚNEWTRUEÚNEWFALSEr·  r¸  rÓ   r(  rv  r   )r*   rw  rº  r"   r»  rÅ   rG  r   r   r   Útest_singletons'  s,   ó
ûÿz#AbstractPickleTests.test_singletonsc                 C   óH   t g d¢ƒ}d|_d|_tD ]}|  ||¡}|  |¡}|  ||¡ qd S ©Nrp  rI  Úhello)r  rÀ   rÁ   r·  r¸  rÓ   rÏ   rh  r   r   r   Útest_newobj_tuple@  ó   
ýz%AbstractPickleTests.test_newobj_tuplec                 C   r~  r  )rÑ  rÀ   rÁ   r·  r¸  rÓ   rÏ   rh  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 ©NrI  )r·  Ú	myclassesÚ__base__ÚsamplerÀ   r¸  rÓ   rt   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Ê   rt   rO   )r*   ZclassesrÄ   rº  rN   rˆ  r"   rD  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   rI  )	r·  ÚMyIntWithNew2rÀ   r¸  rÓ   rË   rt   rÊ   r6  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 )NrM  rI  )ÚSimpleNewObjr¥   r¸  rÒ   rV  r   r"  rÓ   )r*   Úsaver  rn   r   r   r   Útest_newobj_not_class}  s   
z)AbstractPickleTests.test_newobj_not_classc                 C   sð   t |ƒ}znt td|¡ tg d¢ƒ}d|_d|_|  |d¡}|  t 	d¡|¡ |  d|¡ |  
t||ƒ¡ |  |¡}|  ||¡ |  |d¡}|  t 	d¡|¡ |  d|¡ |  t||ƒd	t|ƒ¡ |  |¡}|  ||¡ W | ¡  d S | ¡  w )
NrÑ  rp  rI  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Úopcoderx  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£  )rw   r	  rù   r·  r¸  rÇ  r   rÓ   rÏ   r   r   ÚSETITEMSrÊ   r(  )r*   r   r"   rº  r»  rÅ   Znum_setitemsr   r   r   Útest_dict_chunkingÍ  s(   

øz&AbstractPickleTests.test_dict_chunkingc                 C   sØ   d}t t|ƒƒ}tD ]*}|  ||¡}|  |¡}|  ||¡ ttj|ƒ}|dk r.|  	|d¡ q
|  	|d¡ q
d}t t|ƒƒ}tD ]*}|  ||¡}|  |¡}|  ||¡ ttj|ƒ}|dk rc|  	|d¡ q?|  
|d¡ q?d S )Nr¤  rM  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Ï   rh  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±  rM  s	   X   FACEs   ŒFACE)ÚComplexNewObjr¥   r¿   r·  rÑ   r¸  r'  rÊ   r   r   r²  r”  r³  rÓ   rÏ   rh  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Ï   rh  r   r   r   Útest_complex_newobj_ex!	  s*   ÿ
ò€ÿz*AbstractPickleTests.test_complex_newobj_exc                 C   s>   t g d¢ƒ}d|_d|_|  |d¡}|  |¡}|  ||¡ d S )Nrp  rI  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 rZ   )r·   r.   r   r   r   rd   v	  ó   zBAbstractPickleTests.test_reduce_bad_iterator.<locals>.C.__reduce__N©r7   r8   r9   rd   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 rZ   )rw   r.   r   r   r   rd   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aaaNrh   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 ))rM  r~   rN  Nr   )r   Úkr   r   r   rÑ  	  rÒ  r¯  )rù   rw   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 )NrI  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º   rL  )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·  rv  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sizesrD  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º  r6  r7  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 )Nrp  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¾   éþÿÿÿéýÿÿÿrp  r   )rì  r·  rã  r   ÚSETITEMr¨  rå  r   r   r   Útest_setitems_on_non_dictsÓ	  s   üz.AbstractPickleTests.test_setitems_on_non_dictsrM  r   c                 C   s8  d }}h d£}t  |¡D ]m\}}}|dur"|  ||¡ ||kr"d}|dur<|  |jd¡ |j|v r;|  t|ƒ| j¡ n,|jdksM|j|v r]t|ƒ| jkr]|dur\|  || | j¡ d}n|du rh|jdkrh|}|jdkrz|  	|| j¡ |d | }qt|ƒ}|dur‹|  
||¡ dS |durš|  || | j¡ dS dS )a  
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.

        Note that binary objects that are larger than FRAME_SIZE_TARGET are not
        framed by default and are therefore considered a frame by themselves in
        the following consistency check.
        N>   r,  ÚBINUNICODE8ÚBINBYTESÚ	BINBYTES8Ú
BINUNICODEÚFRAMEra  é	   )r   r   ÚassertLessEqualÚassertNotEqualrx   rÈ  ÚFRAME_SIZE_TARGETÚ
assertLessÚFRAME_SIZE_MINr«  rÊ   )r*   r6  Z	frame_endZframeless_startZframeless_opcodesr   rW   Úposr   r   r   Úcheck_frame_opcodesà	  sB   
€


ÿ€
€ÿ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 † rM  r   r¯  rº   )r·   rù   r   rÆ  rÑ   r¸  rÓ   rÊ   rÈ  r   rï  ÚassertGreaterró  rñ  r÷  )r*   r‘   rº  r6  r7  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¡  !
  r9  zBAbstractPickleTests.test_framing_large_objects.<locals>.<listcomp>r¤  ó   xó   yÚzrM  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ý  r6  Úbufrþ  r7  Ú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 )NrM  c           
      S   sˆ   g }d}t  | ¡D ]\}}}|jdkr| |¡ q	tƒ }d}t|ƒD ]\}	}|r-||	ƒr-q"|| ||… 7 }|| }q"|| |d… 7 }|S )z+Remove frame opcodes from the given pickle.rð  rï  r   N)r   r   rx   rÃ   r-  Ú	enumerate)
r6  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 rY  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º  r6  Zframeless_pickleZsome_frames_pickler   r
  r   Útest_optional_frames?
  s&   


ÿöýz(AbstractPickleTests.test_optional_framesc                    s|  G dd„ dƒ}t dtjd ƒD ]¬}dd„ t tdƒƒD ƒ}| dˆ jd	 d  ¡ |ƒ }ˆ  ||¡ |¡ | ¡ }ˆ  	|¡}ˆ  
||¡ ˆ  t|jƒd¡ ~t ¡  ˆ  
| ¡ |¡ t|ƒd ˆ j d }ˆ  t|jƒ|¡ ˆ  t|jƒd
| d ¡ dd„ |jD ƒ}‡ fdd„|D ƒ}	‡ fdd„|D ƒ}
dd„ |D ƒ}|	D ]}ˆ  |d
ˆ j |¡ qˆ  t|ƒt|	ƒt|
ƒ d |¡ qd S )Nc                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	zYAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.c                 S   s
   g | _ d S r    )Úchunksr.   r   r   r   rA   m
  rc   zbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.__init__c                 S   ó   | j  |¡ d S r    )r  rÃ   )r*   Úchunkr   r   r   r@   o
  rB  z_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.writec                 S   s   d  | j¡S )Nrx  )r¬  r  r.   r   r   r   Úconcatenate_chunksq
  rS   zlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.ChunkAccumulator.concatenate_chunksN)r7   r8   r9   rB   rA   r@   r  r   r   r   r   ÚChunkAccumulatork
  s
    r  rM  r   c                 S   s,   g | ]}t |ƒ d ¡|d dt |ƒif‘qS )rç   rI  r   )ri   ré   r"  r   r   r   r¡  u
  s    $ÿzSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer.<locals>.<listcomp>g     ˆÃ@Z0123456789abcdefr5  rº   rL  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Æ  r6  rÃ   ró  rþ  r  r  rÓ   rÊ   rø  rÈ  r  r   Ú
gc_collectr«  rñ  rô  )r*   r  rº  ZobjectsÚwriterr6  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‘   r7  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º  r7  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   s   | t u sJ ‚dS )NÚwine)r"  ©r“   r   r   r   r%  Ê
  s   zPyMethodsTest.winec                 S   s   t | tƒsJ ‚dS )NÚbiscuits)r«   r"  r.   r   r   r   r'  Î
  s   zPyMethodsTest.biscuitsc                   @   s0   e Zd ZdZedd„ ƒZedd„ ƒZdd„ ZdS )	zPyMethodsTest.NestedzNested classc                   S   r-   )NÚketchupr   r   r   r   r   r(  Ó
  r$  zPyMethodsTest.Nested.ketchupc                 S   s   | t ju sJ ‚dS )NÚmaple)r"  r  r&  r   r   r   r)  Ö
  s   zPyMethodsTest.Nested.maplec                 S   s   t | tjƒsJ ‚dS )NÚpie)r«   r"  r  r.   r   r   r   r*  Ú
  s   zPyMethodsTest.Nested.pieN)	r7   r8   r9   rB   Ústaticmethodr(  rœ   r)  r*  r   r   r   r   r  Ñ
  s    

r  N)	r7   r8   r9   r+  r#  rœ   r%  r'  r  r   r   r   r   r"  Æ
  s    

r"  r   ©rº  Úmethodr#  r%  ©rº  Údescr)r"  r#  r%  r'  r  r(  r)  r*  rù   r   rÆ  rÑ   rÓ   r¸  rÊ   rO   rÒ   rV  )
r*   Z
py_methodsZpy_unbound_methodsrº  r-  r7  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   ri   r  r   r   r   r   r2     s    r2  Úabcd)rÄ   )r3  rÄ   rp  r   r   rº   rÛ  ))rm   r   )rn   rº   )s   abcr   )r   rº   rº   Zsweet)rx  rx  r,  Ú	maketransr	  r.  )rÜ  r2  Úindexri   Ú__len__r·   Ú__contains__r÷   rw   r	  r-  r4  Úcountr  rù   r   rÆ  rÑ   rÓ   r¸  rÊ   rO   rÒ   rV  )r*   Z	c_methodsrº  r-  r+   r7  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   rK  Ú__builtin__ÚxrangeZ123Ú	itertoolsÚimaprP  rR  Ú
exceptionsrþ   rT  ÚIterableUserDictÚUserListrS  ÚdefaultdictrL  )rt   rº  zc%s
%s)rù   rà  r6  rO  rP  rQ  rR  rþ   rS  rT  r@  rA  rÑ   rt   r¸  r'  ré   rË   rÓ   )r*   ZtestsÚvalr   rx   rº  r6  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ˆ  )r3  )rŠ   r­   r²   )rM  rº   rn  )rŠ   r­   r®   r²   rm  )r{   rž   r    r·   r6  Ú
from_bytesr´   rŸ   )r*   Z
bytestringr¸   rb   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Ë   rt   )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Ë   rt   Ú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  )r{   rù   r   rÆ  rÃ   r¸  rà  r-  rÓ   rË   rt   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Ò   rV  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_arrayrN  rº   é   ro  )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 )NrN  r   r   )Úclearrs  r.   )Ú
collectionrr  r   r   rd     s   zBad.__reduce__N)r7   r8   r9   rR   ru  rd   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'  ri   )r*   rº  r  rõ   rÐ   rx  rG  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'  ri   )rw  r€  rþ  rx  rG  rÝ  r~  r   Úcheck1  s   €þzHAbstractPickleTests.test_evil_pickler_mutating_collection.<locals>.checkr   rº   rl  )rÌ   ZskipTestrt   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-  r0  r2  r8  r:  r   r>  rC  rD  rF  rG  rM  rP  rR  rS  rX  r]  r`  re  ri  rk  ry  r}  r  rƒ  rŠ  rŽ  r  r“  r™  r›  rž  r¢  r§  r©  r¬  r´  r·  r¹  r»  r¾  rÃ  rÅ  rÇ  rÉ  r   rÌ  rÐ  rÔ  r×  rÙ  rÚ  râ  rã  ræ  rê  rõ  ró  r÷  r   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   r3  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ó   abcdrM  rL  r¯  rÿ  r  )
r·  rÑ   r¸  r   rì  r  r  rÈ  r5  rÊ   ©r*   r†  rÐ   rº  r6  Ú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   acbdrM  rL  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_64br3  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  rM  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  rM  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Zdd„ ZdS )r¼  z4No __reduce_ex__ here, but inheriting it from objectr   c                 C   s   d| _ tdfS )Nr   r   )r½  r¼  r.   r   r   r   rd   Ì  ó   zREX_one.__reduce__N©r7   r8   r9   rB   r½  rd   r   r   r   r   r¼  É  ó    r¼  c                   @   ó   e Zd ZdZdZdd„ ZdS )rÁ  z1No __reduce__ here, but inheriting it from objectNc                 C   ó   || _ tdfS rZ   ©rÂ  rÁ  ©r*   rº  r   r   r   r…   Ó  r“  zREX_two.__reduce_ex__©r7   r8   r9   rB   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—  rZ   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   rd   Ü  s   zREX_three.__reduce__)r7   r8   r9   rÂ  r…   rd   r   r   r   r   rÄ  ×  s    rÄ  c                   @   r–  )rÆ  z(Calling base class method should succeedNc                 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È  z-This one used to fail with infinite recursionr   c                 C   s   d| _ t | ¡S rá  )r½  r  rd   r.   r   r   r   rd   é  ro   zREX_five.__reduce__Nr”  r   r   r   r   rÈ  æ  r•  rÈ  c                   @   ó2   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ ZdS )rÚ  z]This class is used to check the 4th argument (list iterator) of
    the reduce protocol.
    Nc                 C   s   |d ur	|| _ d S g | _ d S r    rÖ  )r*   r¸   r   r   r   rA   ñ  ó   zREX_six.__init__c                 C   ó   t | ƒt |ƒu o| j|jkS r    )rt   r¸   rP   r   r   r   rR   ó  r  zREX_six.__eq__c                 C   r  r    )r¸   rÃ   )r*   Úitemr   r   r   rÃ   õ  rB  zREX_six.appendc                 C   s   t | ƒdd t| jƒd fS rZ   )rt   rW  r¸   r.   r   r   r   rd   ÷  rÞ   zREX_six.__reduce__r    )r7   r8   r9   rB   rA   rR   rÃ   rd   r   r   r   r   rÚ  í  ó    
rÚ  c                   @   rœ  )rì  z]This class is used to check the 5th argument (dict iterator) of
    the reduce protocol.
    Nc                 C   s   |d ur	|| _ d S i | _ d S r    ré  )r*   rê  r   r   r   rA   þ  r  zREX_seven.__init__c                 C   rž  r    )rt   rê  rP   r   r   r   rR      r  zREX_seven.__eq__c                 C   s   || j |< d S r    ré  )r*   rò   rb   r   r   r   Ú__setitem__  rj   zREX_seven.__setitem__c                 C   s   t | ƒdd d t| j ¡ ƒfS rZ   )rt   rW  rê  r¸   r.   r   r   r   rd     r  zREX_seven.__reduce__r    )r7   r8   r9   rB   rA   rR   r¡  rd   r   r   r   r   rì  ú  r   rì  c                   @   rœ  )r  zUThis class is used to check the 3th argument (state) of
    the reduce protocol.
    Nc                 C   ra   r    ©r  ©r*   r  r   r   r   rA     rc   zREX_state.__init__c                 C   rž  r    ©rt   r  rP   r   r   r   rR     r  zREX_state.__eq__c                 C   ra   r    r¢  r£  r   r   r   Ú__setstate__  rc   zREX_state.__setstate__c                 C   s   t | ƒd| jfS rZ   r¤  r.   r   r   r   rd     rB  zREX_state.__reduce__r    )r7   r8   r9   rB   rA   rR   r¥  rd   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  rp  Nr§  r   r   r   r   r  &  r¨  r  c                   @   s   e Zd Zg d¢ZdS )rÑ  rp  Nr§  r   r   r   r   rÑ  )  rT   rÑ  c                   @   s   e Zd ZdddœZdS )rç  r   rº   rl   Nr§  r   r   r   r   rç  ,  s    rç  c                   @   s   e Zd ZddhZdS )r  rm   rn   Nr§  r   r   r   r   r  /  rT   r  c                   @   s   e Zd ZeddhƒZdS )r  rm   rn   N)r7   r8   r9   r  r‡  r   r   r   r   r  2  r  r  c                   @   rM   )ÚMyIntWithNewc                 C   r'   r    )ÚAssertionError)r“   rb   r   r   r   r¥   ;  r$   zMyIntWithNew.__new__N)r7   r8   r9   r¥   r   r   r   r   r­  :  rT   r­  c                   @   s   e Zd ZejZdS )r  N)r7   r8   r9   r6  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)rV  r¢   r   r   r   rA   F  rª   zSimpleNewObj.__init__c                 C   rs   r    )r6  rO   rP   r   r   r   rR   I  r  zSimpleNewObj.__eq__N)r7   r8   r9   rA   rR   r   r   r   r   r‘  E  re   r‘  c                   @   rM   )r¶  c                 C   s   d|  dfS )Nú%Xr5  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°  Úbaser5  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  rc   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Ð   r7  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Ò   rV  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  rZ  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__NrX   r   r   r   r   Ú
BadPickler‘  rT   rË  c                   @   rM   )z=AbstractPickleModuleTests.test_bad_init.<locals>.BadUnpicklerc                 S   rV   r    r   r.   r   r   r   rA   •  rk  zFAbstractPickleModuleTests.test_bad_init.<locals>.BadUnpickler.__init__NrX   r   r   r   r   ÚBadUnpickler”  rT   rÌ  r   )rÆ  Ú	UnpicklerrÒ   r   rÏ  r  r"  rÁ  )r*   rË  rÌ  r   r   r   Útest_bad_initŽ  s   z'AbstractPickleModuleTests.test_bad_initc           	   	   C   sð   t dƒ}tddƒD ]}|  t¡ |||g jd W d   ƒ 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  )r{   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«   r6  Úid_countri   Úfalse_count)r*   r  r   r   r   r  Ê  s   z,AbstractPersistentPicklerTests.persistent_idc                 C   s@   |s|  j d7  _ dS |  jd7  _t|ƒ}|d dksJ ‚|S )Nr   rÓ  rº   r   )Úload_false_countÚ
load_countr6  )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Ç  rt   rÊ   )r*   r‘   rº  r7  r   r   r   Ú_check_return_correct_typeô  s   zAAbstractIdentityPersistentPicklerTests._check_return_correct_typec                 C   sD   t D ]}|dkr|  dd¡ qddddtfD ]}|  ||¡ qqd S )Nr   r¿   s   abc
zabc
r¾   g*\Âõ(¼¿)r·  rÞ  ri   )r*   rº  r‘   r   r   r   Útest_return_correct_typeù  s   ÿûz?AbstractIdentityPersistentPicklerTests.test_return_correct_typec                 C   sB   d}|   tj| j|d¡ tj| d¡ d }|   tj| j|¡ d S )Nu   âˆ…r   r”  rî   )rÒ   r   rÏ  r¸  ÚPERSIDré   r"  rÓ   )r*   Znon_ascii_strr6  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   s   | j sJ ‚| js
J ‚d S r    )Úpickler_classÚunpickler_classr.   r   r   r   r¶    s   
z)AbstractPicklerUnpicklerObjectTests.setUpc                 C   s¤   g d¢}t D ]I}t ¡ }|  ||¡}| |¡ | ¡ }| d¡ | ¡  | |¡ | ¡ }| ¡  | d¡ | ¡  | |¡ | ¡ }|  	||¡ |  
||¡ qd S )N©Úabcdefgræ  é,   r   )r·  r2   r<   rã  r  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í  rä  rÁ  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   rh   rŸ  r   r   r   r¡  ~  r%  zSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings.<locals>.<listcomp>iÐ  s   abcderÿ  r~   )r·  rÑ   rù   rÈ  rã  r  r=   rä  r6   rÊ   rÁ  rÒ   r‘  )r*   Zioclassr/   rº  ró  r°  rþ  r6  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  rB  zFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekablec                 C   rÏ  ©NFrõ  )rö  r&   r.   r   r   r   Ú$test_multiple_unpicklings_unseekable’  rÓ  zHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekablec                 C   rÏ  rø  )rö  r;   r.   r   r   r   Ú!test_multiple_unpicklings_minimal•  s   zEAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_minimalc                 C   sx   t tdƒƒ}tD ]1}tddƒD ])}tjt ¡ |d}| j||d}| |¡ | d¡ |  	|¡}|  
| ¡ |¡ qqd S )Nr¤  r   é   )Zbuffer_sizerÿ  r   )r·   rù   r·  r2   ÚBufferedRandomr<   rã  r  r4   rä  rÊ   rÁ  )r*   rÐ   rº  Zbuf_sizer°  rþ  rñ  r   r   r   Ú"test_unpickling_buffering_readlineš  s   


úÿzFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline)r7   r8   r9   rã  rä  r¶  rë  rð  rò  rô  rö  r÷  rù  rú  rý  r   r   r   r   râ  	  s     râ  Zreduce_Ac                   @   rM   )r?  c                 C   s
   t tffS r    )ri   r@  r.   r   r   r   rd   ­  rc   zAAA.__reduce__NrÎ  r   r   r   r   r?  ¬  rT   r?  c                   @   rC   )ÚBBBc                 C   ó
   d| _ d S )Nzsome attribute©rm   r.   r   r   r   rA   ±  s   
zBBB.__init__c                 C   rÿ  )NúBBB.__setstate__r   r£  r   r   r   r¥  ¶  rc   r  N)r7   r8   r9   rA   r¥  r   r   r   r   rþ  °  s    rþ  c                 C   s
   d| _ dS )at  Custom state setter for BBB objects

    Such callable may be created by other persons than the ones who created the
    BBB class. If passed as the state_setter item of a custom reducer, this
    allows for custom state setting behavior of BBB objects. One can think of
    it as the analogous of list_setitems or dict_setitems but for foreign
    classes/functions.
    úcustom state_setterNr   )r‘   r  r   r   r   Úsetstate_bbbº  s   
	r  c                   @   r:   )ÚAbstractCustomPicklerClassz<Pickler implementing a reducing hook using reducer_override.c                 C   sL   t |dd ƒ}|dkrtdfS |dkrtdfS |dkrdS |dkr$td	ƒ‚tS )
Nr7   r°  )r~   ÚMyClass)úsome strÚgFÚhúThe reducer just failed)rÎ   r6  ri   rï   r¬   )r*   r‘   Zobj_namer   r   r   Úreducer_overrideÉ  s   z+AbstractCustomPicklerClass.reducer_overrideN)r7   r8   r9   rB   r
  r   r   r   r   r  Ç  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º  ÚbiorD  Ú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 ]E}| j|d5 dd„ }t |¡}t ¡ }|  ||¡}| 	|¡ t 
| ¡ ¡}|dks6J ‚~~|  |ƒ ¡ W d   ƒ n1 sHw   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>.fr~   )rù   r   rÆ  rÑ   rŒ  Úrefr2   r<   rã  r  rÓ   r=   r  )r*   rº  r°  Úwrr  rD  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°  rD  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°  rD  ©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  rB  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    rh   rM  )ÚREDUCE_1r   r   r$  X  rc   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_1Úreduce_2c                    r%  r    rh   rM  )ÚREDUCE_2r   r   r'  o  rc   zAAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_2r  c                 S   s   t d| jd d tfS rZ   )rþ  rO   r  rM  r   r   r   Ú
reduce_bbb‚  rÓ  zCAbstractDispatchTableTests._test_dispatch_table.<locals>.reduce_bbbr  )rÊ   Úcomplexr?  rþ  r@  rÇ  rm   )r*   r¸  r  r"  r#  rü  r$  rm   rn   r'  r)  r   )r&  r(  r¸  r   r  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""")ÅrT  rS  rF   rQ  r2   rO  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
skipUnlessr1  r´  rù   rÆ  r·  r   r   r#   r<   r&   r  r;   rD   rN   rU   rY   r]   r`   rf   r8   r6  rg   rk   rt   rp   rq   rr   rv   r‚   r{   r-  rž   rŸ   rÜ   rÂ  rß   rÃ  rá   Z	DATA2_DISrã   Z	DATA3_DISrå   Z	DATA4_DISrö   rø   rú   rØ  ÚArithmeticErrorr®  rD  rÔ   ÚBufferErrorÚBytesWarningÚDeprecationWarningr‘  ÚEnvironmentErrorrþ   ÚFloatingPointErrorÚFutureWarningÚGeneratorExitÚIOErrorÚImportWarningÚIndentationErrorÚ
IndexErrorÚKeyErrorÚKeyboardInterruptÚLookupErrorÚMemoryErrorÚ	NameErrorr(   rZ  r#  ÚPendingDeprecationWarningÚReferenceErrorrË  ÚRuntimeWarningÚStopIterationÚSyntaxErrorÚSyntaxWarningÚSystemErrorÚ
SystemExitÚTabErrorrV  ÚUnboundLocalErrorÚUnicodeErrorÚUnicodeWarningÚUserWarningrï   ÚWarningr^  rü   rý   rÿ   rÆ   rÇ   rµ  r…  r¼  rÁ  rÄ  rÆ  rÈ  rÚ  rì  r  r‹  Úfloatr©  r*  rª  ri   r«  r¬  rÜ  r  r·   rÑ  rw   rç  r÷   r  r  r  r…  r­  r  rº  r‘  r¶  r¸  rÊ  rµ  rÒ  rÛ  râ  r@  r?  rþ  r  r  r  r  r7   rÀ  r"   r   r¸  rD  rÖ   rŠ   rÈ  Újrn   r   r   r   r   Ú<module>   s   ÿ 
ÿ€ÿÿ	
NÿSÿAÿ:ÿ:ÿCÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâ à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó0    i             / 
ýk( "
B
k
ð