ó
ßüÚ\c           @   sý   d  d l  Z  d  d l Z d  d l Z e j d ƒ Z d  d l m Z m Z d  d l m	 Z	 m
 Z
 d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z d  d
 l m Z d  d l j Z e e d e ƒ d „  ƒ ƒ Z e d e ƒ d „  ƒ Z d S(   iÿÿÿÿNt   h5py(   t   deserializet	   serialize(   t   PY3t   tmpfilec            s"   t  j ˆ  ƒ ‡  f d †  ƒ } | S(   Nc             sŠ   t  r y ˆ  ƒ  Wq† t k
 r{ }  t |  ƒ d k r; ‚  n  t j |  j ƒ } | d \ } } } } | j d ƒ s| ‚  q| q† Xn ˆ  ƒ  d  S(   Ns(   dictionary changed size during iterationiÿÿÿÿs   h5py/_objects.pyx(   R   t   RuntimeErrort   strt	   tracebackt
   extract_tbt   __traceback__t   endswith(   t   et   tbt   filenamet   linenot   _(   t   func(    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt   wrapper   s    (   t	   functoolst   wraps(   R   R   (    (   R   sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt   silence_h5py_issue775   s    c          C   sÞ   t  ƒ  Ï }  t j |  d d ƒ  } | j d d d
 d d ƒWd  QXt j |  d d ƒz } t t | ƒ Œ  } | j | j k s… t ‚ t | t j ƒ s t ‚ | j	 | j	 k sµ t ‚ | d	 j
 d k sÎ t ‚ Wd  QXWd  QXd  S(   Nt   modet   as   /xt   shapei   t   dtypet   i4t   rt   x(   i   i   (   i   i   (   R   R    t   Filet   create_datasetR   R   R   t   AssertionErrort
   isinstanceR   R   (   t   fnt   ft   g(    (    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt   test_serialize_deserialize_file!   s    c          C   sÖ   t  ƒ  Ç }  t j |  d d ƒ  } | j d d d d d ƒWd  QXt j |  d d ƒr } | d	 } t t | ƒ Œ  } t | t j ƒ s t ‚ | j	 j
 | j	 j
 k s­ t ‚ | d
 j d k sÆ t ‚ Wd  QXWd  QXd  S(   NR   R   s   /group1/group2/xR   i   R   R   R   s   /group1/group2R   (   i   i   (   i   i   (   R   R    R   R   R   R   R   t   GroupR   t   fileR   R   (   R    R!   t   groupt   group2(    (    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt    test_serialize_deserialize_group/   s    
c          C   sñ   t  ƒ  â }  t j |  d d ƒ" } | j d d d
 d d ƒ} Wd  QXt j |  d d ƒ‹ } | d	 } t t | ƒ Œ  } t | t j ƒ s‘ t ‚ | j	 | j	 k s© t ‚ | j
 j | j
 j k sÇ t ‚ | | k j ƒ  sá t ‚ Wd  QXWd  QXd  S(   NR   R   s   /group1/group2/xR   i   R   R   R   s   group1/group2/x(   i   i   (   R   R    R   R   R   R   R   t   DatasetR   t   nameR%   R   t   all(   R    R!   R   t   y(    (    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt"   test_serialize_deserialize_dataset>   s    !
c          C   s¥   t  ƒ  – }  t j |  d d ƒx } | j d d d d d ƒ} | j ƒ  t j t ƒ  t t	 | ƒ Œ  Wd  QXt j t ƒ  t t	 | ƒ Œ  Wd  QXWd  QXWd  QXd  S(	   NR   R   s   /xR   i   R   R   (   i   i   (
   R   R    R   R   t   flusht   pytestt   raisest	   TypeErrorR   R   (   R    R!   R   (    (    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt/   test_raise_error_on_serialize_write_permissionsL   s    
(   t   gen_clustert   clientc         c   sú   d d l  m } | d ƒ } t ƒ  Ï } t j | d d ƒ; } | j d d d d	 d
 d d ƒ} d d d d g | (Wd  QXt j | d d ƒ_ } | d }	 t j |	 d |	 j d | ƒ} |  j	 | ƒ }
 |
 V}
 |
 |	 k j
 ƒ  sê t ‚ Wd  QXWd  QXd  S(   Niÿÿÿÿ(   t   SerializableLockt   hdf5R   R   s   /group/xR   i   R   R   t   chunksi   i   i   R   t   lock(   i   (   i   (   t
   dask.utilsR5   R   R    R   R   t   dat
   from_arrayR7   t   computeR+   R   (   t   ct   sR   t   bR5   R8   R    R!   R   t   dsetR,   (    (    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt   test_h5py_serialize^   s    !
c   	      c   s×   t  ƒ  È } t j | d d ƒ? } | j d d d d d d d ƒ} d
 d d d	 g d | (Wd  QXt j | d d ƒT } | d } t j | d d ƒ} |  j | j ƒ  ƒ } | V} | d k sÇ t ‚ Wd  QXWd  QXd  S(   NR   R   s   /group/xR   i   R   R   R7   i   i   i   i   R   (   i   (   i   (   i   i   i   i
   i   (	   R   R    R   R   R:   R;   R<   t   sumR   (	   R=   R>   R   R?   R    R!   R   R@   R,   (    (    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt   test_h5py_serialize_2p   s    !
(   R   R   R/   t   importorskipR    t   distributed.protocolR   R   t   distributed.utilsR   R   R   R#   R(   R-   R2   t   distributed.utils_testR3   t
   dask.arrayt   arrayR:   t   TrueRA   RC   (    (    (    sC   lib/python2.7/site-packages/distributed/protocol/tests/test_h5py.pyt   <module>   s   	