ó
ßüÚ\c        	   @` sê  d  d l  m Z m Z m 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 d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z m Z d  d l  m! Z! m" Z" d	 e# f d
 „  ƒ  YZ$ d „  Z% d „  Z& e e$ e% e& ƒ d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d  d l m, Z, d  d l- m. Z. e, d e/ ƒ d „  ƒ Z0 e, d e/ ƒ d „  ƒ Z1 e, d e/ ƒ d „  ƒ Z2 d e# f d „  ƒ  YZ3 d „  Z4 d „  Z5 e e3 e4 e5 ƒ d „  Z6 d „  Z7 d „  Z8 d „  Z9 d  „  Z: d! „  Z; d" „  Z< e ƒ  d# „  ƒ Z= d$ e# f d% „  ƒ  YZ> d d& „ Z@ d' „  ZA e, d e/ d( i d) d* g d+ 6d, i d) d* g d+ 6ƒ d- „  ƒ ZB e, d e/ ƒ d. „  ƒ ZC d/ „  ZD d S(0   i    (   t   print_functiont   divisiont   absolute_importN(   t   identity(   t   wait(   t   register_serializationt	   serializet   deserializet   nested_deserializet	   Serializet
   Serializedt   to_serializet   serialize_bytest   deserialize_bytest   serialize_bytelistt   register_serialization_familyt   dask_serialize(   t   nbytes(   t   inct   gen_test(   t	   to_framest   from_framest   MyObjc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s   | |  _  d  S(   N(   t   data(   t   selfR   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   __init__    s    c         C` s   t  d ƒ ‚ d  S(   Ns   Not picklable(   t	   Exception(   R   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   __getstate__#   s    (   t   __name__t
   __module__R   R   (    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR      s   	c         C` s   i  t  j |  j ƒ g f S(   N(   t   picklet   dumpsR   (   t   x(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   serialize_myobj'   s    c         C` s   t  t j | d ƒ ƒ S(   Ni    (   R   R   t   loads(   t   headert   frames(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   deserialize_myobj+   s    c          C` sò   x~ d d d d g g D]g }  t  |  ƒ \ } } | d d k sD t ‚ t | ƒ d k s\ t ‚ t | | ƒ } | |  k s t ‚ q Wt d ƒ }  t  |  ƒ \ } } | d s¯ t ‚ t | ƒ d k sÇ t ‚ t | | ƒ } | j |  j k sî t ‚ d  S(   Ni{   i   i   i   t
   serializerR   t   type(   R   t   AssertionErrort   lenR   R   R   (   R    R#   R$   t   result(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_dumps_serialize2   s    c          C` sj   xc d t  d ƒ f D]O }  t |  ƒ \ } } | d |  k sA t ‚ t | | ƒ } | |  k s t ‚ q Wd  S(   Nt   123t   4567i    (   t	   bytearrayR   R(   R   (   t   bR#   R$   t   bb(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_serialize_bytestringsD   s
    c          C` sí   t  d ƒ }  d t |  ƒ k s$ t ‚ |  j d k s9 t ‚ t  d ƒ } t | ƒ sW t ‚ t  d ƒ } |  | k su t ‚ |  | k sˆ t ‚ |  | k sš t ‚ |  | k s­ t ‚ t |  ƒ t | ƒ k sË t ‚ t |  ƒ t | ƒ k sé t ‚ d  S(   Ni{   R,   i   i   (   i   i   (   R	   t   strR(   R   t   hash(   t   st   tt   u(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_SerializeL   s    c          C` s„   t  t d ƒ Œ  }  t  t d ƒ Œ  } t  t d ƒ Œ  } |  | k sH t ‚ |  | k s[ t ‚ |  | k sm t ‚ |  | k s€ t ‚ d  S(   Ni{   i   i   (   i   i   (   R
   R   R(   (   R4   R5   R6   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_Serialized]   s    c          C` s¿   i d d 6t  d ƒ t  d ƒ d g d 6i d t t d ƒ Œ  g d	 6d
 d 6d 6}  t j |  ƒ } t |  ƒ i d d 6d d d g d 6i d d g d	 6d
 d 6d 6k s© t ‚ |  | k s» t ‚ d  S(   Nt   updatet   opi{   iÈ  i  R    t   abct   deft   at   ghiR/   t   y(   R   R
   R   t   copyt   deepcopyR   R(   (   R    t   x_orig(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_nested_deserializeg   s    *'(   t   gen_cluster(   t   delayedt   clientc   	      c` sn   t  d ƒ } t | ƒ } t t ƒ | ƒ } |  j | ƒ } | V} t | t  ƒ sU t ‚ | j d k sj t ‚ d  S(   Ni{   (   R   RE   R   t   computet
   isinstanceR(   R   (	   t   cR4   R=   R/   t   ot   vt   v2t   futureR*   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_object_in_graph{   s    c         c` sn   t  d ƒ } |  j | g ƒ V\ } |  j | ƒ V|  j | ƒ V} t | t  ƒ sU t ‚ | j d k sj t ‚ d  S(   Ni{   (   R   t   _scattert
   _replicatet   _gatherRH   R(   R   (   RI   R4   R=   R/   RJ   RM   t   o2(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_scatterˆ   s    c         c` s„   t  d ƒ } |  j | g d | j ƒV\ } |  j t | d | j ƒ} |  j | ƒ V} t | t  ƒ sk t ‚ | j d k s€ t ‚ d  S(   Ni{   t   workers(	   R   RO   t   addresst   submitR   RQ   RH   R(   R   (   RI   R4   R=   R/   RJ   RM   t   future2RR   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_inter_worker_comms’   s    t   Emptyc           B` s   e  Z d  „  Z RS(   c         C` s   t  d ƒ ‚ d  S(   Ns   Not picklable(   R   (   R   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR      s    (   R   R   R   (    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyRY   œ   s   c         C` s
   i  g  f S(   N(    (   R    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   serialize_empty¡   s    c         C` s   t  ƒ  S(   N(   RY   (   R#   R$   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   deserialize_empty¥   s    c          C` s4   t  ƒ  }  t t |  ƒ Œ  } t | t  ƒ s0 t ‚ d  S(   N(   RY   R   R   RH   R(   (   t   et   e2(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt
   test_empty¬   s    	c          C` sW   d d l  m }  m } t ƒ  } |  | t | ƒ g ƒ ƒ } t | d t ƒ sS t ‚ d  S(   Ni    (   R"   R   (   t   distributed.protocolR"   R   RY   R   RH   R(   (   R"   R   R\   R]   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_empty_loads²   s    	c          C` se   d d l  m }  m } t ƒ  } |  | t | ƒ g g g ƒ ƒ } t | d d d t ƒ sa t ‚ d  S(   Ni    (   R"   R   (   R_   R"   R   RY   R   RH   R(   (   R"   R   R\   R]   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_empty_loads_deepº   s    	!c          C` s   xx d d t  j d ƒ d t d ƒ g D]Q }  t |  ƒ } t | t ƒ sM t ‚ t | ƒ } t |  ƒ t | ƒ k s& t ‚ q& Wd  S(   Ni   R;   i   t   abg    ÐƒA(	   t   npt   aranget   intR   RH   t   bytesR(   R   R2   (   R    R/   R?   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_serialize_bytesÂ   s
    ,c          C` s‡   t  j d ƒ t j d ƒ }  t |  ƒ } t t t | ƒ ƒ |  j d k  sP t ‚ d j	 | ƒ } t
 | ƒ } |  | k j ƒ  sƒ t ‚ d  S(   Nt   lz4i@B i   t    (   t   pytestt   importorskipRc   t   onesR   t   sumt   mapR   R(   t   joinR   t   all(   R    t   LR/   R?   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_serialize_list_compressÊ   s    (c          ` s(  d t  f d „  ƒ  Y‰  d t f ‡  f d †  ƒ  Y}  |  ƒ  } t | d g  ƒ\ } } t j t  ƒ  } t | | ƒ Wd  QXd t | j ƒ k s“ t ‚ d t | j ƒ k s® t ‚ t | d d g ƒ\ } } t j t  ƒ  } t | | ƒ Wd  QXd t | j ƒ k s	t ‚ d t | j ƒ k s$t ‚ d  S(   Nt   BadExceptionc           B` s   e  Z d  „  Z RS(   c         S` s
   t  d ƒ S(   Ns   Sneaky deserialization code(   R   (   R   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   __setstate__×   s    (   R   R   Rt   (    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyRs   Ö   s   t   MyClassc           ` s   e  Z ‡  f d  †  Z RS(   c         ` s   ˆ  ƒ  ‚ d  S(   N(    (   R   (   Rs   (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR   Û   s    (   R   R   R   (    (   Rs   (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyRu   Ú   s   t   serializerst   SneakyR   (	   R   t   objectR   Rj   t   raisesR   R2   t   valueR(   (   Ru   t   objR#   R$   t   info(    (   Rs   sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_malicious_exceptionÕ   s    	c       
   C` s²   i i t  t ƒ d 6d 6}  t |  d d d g ƒ\ } } | d d k sN t ‚ t |  d d g ƒ\ } } | d d k s t ‚ t j t ƒ  t |  d d g d d	 ƒWd  QXd  S(
   Nt   fooR   Rv   t   msgpackR   R&   t   errort   on_errort   raise(   R   R   R   R(   Rj   Ry   t	   TypeError(   t   msgR#   R$   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_errorsï   s    c          c` s…   t  i t d ƒ d 6d d g ƒV}  t |  d d d g ƒV} | i d d 6k sU t ‚ t j t ƒ  } t |  d d g ƒVWd  QXd  S(   NiÒ  R    Rv   R   t   deserializersR~   R   (   R   R   R   R(   Rj   Ry   Rƒ   (   R$   R*   R|   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_err_on_bad_deserializerü   s
    #t   MyObjectc           B` s   e  Z d  „  Z RS(   c         K` s   |  j  j | ƒ d  S(   N(   t   __dict__R9   (   R   t   kwargs(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR     s    (   R   R   R   (    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyRˆ     s   c         C` sf   t  |  ƒ j d k rY i d d 6} t j |  j d t ƒt j | d t ƒg } | | f St ƒ  ‚ d  S(   NRˆ   s   my-serR&   t   use_bin_type(   R'   R   R   R   R‰   t   Truet   NotImplementedError(   R{   t   contextR#   R$   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   my_dumps  s    
c         C` s?   t  t j | d d t ƒ  } t j | d d t ƒ| _ | S(   Ni    t   rawi   (   Rˆ   R   R"   t   FalseRŽ   (   R#   R$   R{   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   my_loads  s    t   client_kwargss   my-serR   Rv   t   worker_kwargsc         #` s5  t  d t t ƒ z|  j t d d d d d | j ƒ} |  j d „  | d | j ƒ} t | ƒ V| j ‰  ‡  f d †  } |  j | d | j g ƒV} i | j d	 6| j d
 6} | | j d	 | j k sÎ t	 ‚ | V}	 |	 j
 d k ró |	 j d k sù t	 ‚ |	 j d	 | j k st	 ‚ Wd  d d l m }
 |
 d =Xd  S(   Ns   my-serR    i   R?   i   RT   c         S` s   |  S(   N(    (   R    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   <lambda>,  Ri   c         ` s   |  j  ˆ  } | j S(   N(   R   RŽ   (   t   dask_workert   my_obj(   t   key(    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   check2  s    t   sendert	   recipienti    (   t   families(   R   R   R’   RV   Rˆ   RU   R   R˜   t   runR(   R    R?   RŽ   t   distributed.protocol.serializeRœ   (   RI   R4   R=   R/   R    R?   R™   R*   t   expectedt   zRœ   (    (   R˜   sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt#   test_context_specific_serialization!  s    $	 $ c   
      #` s  t  t t t ƒ |  j t d d d d d | j ƒ} |  j d „  | d | j ƒ} t | ƒ V| j ‰  ‡  f d †  } |  j | d | j g ƒV} i | j d 6| j d	 6} | | j d | j k sË t	 ‚ | V}	 |	 j
 d k rð |	 j d k sö t	 ‚ |	 j d | j k st	 ‚ d  S(
   NR    i   R?   i   RT   c         S` s   |  S(   N(    (   R    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR•   K  Ri   c         ` s   |  j  ˆ  } | j S(   N(   R   RŽ   (   R–   R—   (   R˜   (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR™   Q  s    Rš   R›   (   R   Rˆ   R   R’   RV   RU   R   R˜   R   R(   R    R?   RŽ   (
   RI   R4   R=   R/   R    R?   R™   R*   RŸ   R    (    (   R˜   sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt)   test_context_specific_serialization_classE  s    $	 $c          C` sx   d t  f d „  ƒ  Y}  t j |  ƒ d „  ƒ } t j t ƒ  } t t |  ƒ  ƒ Œ  Wd  QXd t | j	 ƒ k st t
 ‚ d  S(   Nt   Fooc           B` s   e  Z RS(    (   R   R   (    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR£   a  s   c         S` s   t  d ƒ ‚ d  S(   Ns	   Hello-123(   R   (   t   f(    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyR   d  s    s	   Hello-123(   Rx   R   t   registerRj   Ry   R   R   R   R2   Rz   R(   (   R£   R   R|   (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   test_serialize_raises`  s
    (E   t
   __future__R    R   R   R@   R   R   t   numpyRc   Rj   t   toolzR   t   distributedR   R_   R   R   R   R   R	   R
   R   R   R   R   R   R   t   distributed.utilsR   t   distributed.utils_testR   R   t   distributed.comm.utilsR   R   Rx   R   R!   R%   R+   R1   R7   R8   RC   RD   t   daskRE   RŒ   RN   RS   RX   RY   RZ   R[   R^   R`   Ra   Rg   Rr   R}   R…   R‡   Rˆ   t   NoneR   R’   R¡   R¢   R¦   (    (    (    sH   lib/python2.7/site-packages/distributed/protocol/tests/test_serialize.pyt   <module>   s\   R						
	

											!