ó
ßüÚ\c           @` sV  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l Z d  d l	 m
 Z
 d  d l m Z m Z d  d l m Z m Z d „  Z e j j e d „  ƒ ƒ Z e j j e d	 „  ƒ ƒ Z e j j e d
 „  ƒ ƒ Z e j j e d „  ƒ ƒ Z e j j e d „  ƒ ƒ Z e j j e d „  ƒ ƒ Z e j j e d „  ƒ ƒ Z d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   first(   t   Client(   t   clustert   mock_ipython(   t   loopt   zmq_ctxc         C` sp   y d d  l  } d d  l } Wn$ t k
 rB t j j d ƒ |  ƒ SXt j d k rh t j j d ƒ |  ƒ S|  Sd  S(   Ni    s+   need ipykernel and jupyter_client installedi   s$   IPython kernel broken with Tornado 5(   i   (   t	   ipykernelt   jupyter_clientt   ImportErrort   pytestt   markt   skipt   tornadot   version_info(   t   funcR	   R
   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt   need_functional_ipython   s    c         C` s  d d l  m } t d ƒ í \ } \ } t | d d |  ƒÅ } | j ƒ  } t | j ƒ  ƒ } | j d ƒ } | |   }	 | |	 j _	 |	 j
 ƒ  |	 j d d ƒ |	 j d	 ƒ }
 |	 j d d ƒ } | d
 d |
 k sÛ t ‚ | d d d k sõ t ‚ |	 j ƒ  Wd  QXWd  QXd  S(   Ni    (   t   BlockingKernelClienti   t   addressR   t   keyt   timeouti
   t   workert   parent_headert   msg_idt   contentt   statust   ok(   R
   R   R   R   t   start_ipython_workersR   t   valuest   popt   sessionR   t   start_channelst   wait_for_readyt   executet   get_shell_msgt   AssertionErrort   stop_channels(   R   R   R   t   st   at   et	   info_dictt   infoR   t   kcR   t   reply(    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt   test_start_ipython_workers   s    
c         C` s¹   d d l  m } t d ƒ — \ } \ } t | d d |  ƒo } | j ƒ  } | j d ƒ } | |   } | | j _ | j ƒ  | j	 d ƒ }	 | j
 d d	 ƒ }
 | j ƒ  Wd  QXWd  QXd  S(
   Ni    (   R   i   R   R   R   t	   schedulerR   i
   (   R
   R   R   R   t   start_ipython_schedulerR   R    R   R!   R#   R$   R&   (   R   R   R   R'   R(   R)   R+   R   R,   R   R-   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt   test_start_ipython_scheduler0   s    
c         C` sé   t  d ƒ × \ } \ } t | d d |  ƒ% } t ƒ   } | j ƒ  } Wd  QXWd  QXi d d 6d d 6i d d 6d d 6g } g  | j j D] \ } }	 |	 ^ qŠ }
 |
 | k s´ t ‚ | j j d	 d	 d	 } | d d
 d d ƒ Wd  QXd  S(   Ni   R   R   t   linet
   magic_kindR/   t
   magic_namet   celli    t    (   R   R   R   R0   t   register_magic_functiont   call_args_listR%   (   R   R   R'   R(   R)   t   ipR+   t   expectedt   argst   kwargst   call_kwargs_listt   magic(    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt"   test_start_ipython_scheduler_magicA   s     %c         C` sÇ  t  d ƒ µ\ } \ } } t | d d |  ƒm } t ƒ  [ } t | j ƒ  ƒ d  } g  t t | ƒ ƒ D] } d | ^ qi }	 | j | d |	 ƒ}
 Wd  QXWd  QXi d d 6d d	 6i d
 d 6d d	 6i d d 6d d	 6i d
 d 6d d	 6i d d 6d d	 6i d
 d 6d d	 6g } g  | j j	 D] \ } } | ^ q} | | k sCt
 ‚ | j j d k s[t
 ‚ g  | j j	 d D] } | d d ^ ql} | d d d d
 d ƒ g  | D] } | j j ƒ  ^ q¤Wd  QXd  S(   Ni   R   R   s   magic%it   magic_namesR2   R3   t   remoteR4   R5   t   magic0t   magic1i   i    iÿÿÿÿR6   R   (   R   R   R   t   listt   ncorest   ranget   lenR   R7   R8   R%   t
   call_countt   clientR&   (   R   R   R'   R(   t   bR)   R9   t   workerst   it   namesR*   R:   R;   R<   R=   t   magicst   m(    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt    test_start_ipython_workers_magicU   s$     )!%+c         C` sž  t  d ƒ Œ\ } \ } } t | d d |  ƒD } t ƒ  2 } t | j ƒ  ƒ d  } | j | d d ƒ} Wd  QXWd  QXi d d 6d d	 6i d
 d 6d d	 6i d d 6d d	 6i d
 d 6d d	 6i d d 6d d	 6i d
 d 6d d	 6g }	 g  | j j D] \ }
 } | ^ qð } | |	 k st ‚ | j j	 d k s2t ‚ g  | j j d D] }
 |
 d d ^ qC} | d d d d
 d ƒ g  | D] } | j
 j ƒ  ^ q{Wd  QXd  S(   Ni   R   R   R@   s   magic_*R2   R3   RA   R4   R5   t   magic_0t   magic_1i   i    iÿÿÿÿR6   R   (   R   R   R   RD   RE   R   R7   R8   R%   RH   RI   R&   (   R   R   R'   R(   RJ   R)   R9   RK   R*   R:   R;   R<   R=   RN   RO   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt(   test_start_ipython_workers_magic_asterixq   s"     !%+c   	      C` s  d d l  m } t d ƒ î \ } \ } t | d d |  ƒ\ } t ƒ  J } t | j ƒ  ƒ } | j | ƒ | | j d <| d ƒ | d d ƒ Wd  QXWd  QX| f i d	 d
 6d d 6f | f i d d
 6d d 6f g } | j	 j
 | k sî t ‚ | j	 j d k st ‚ Wd  QXd  S(   Ni    (   t   remote_magici   R   R   R+   s   info 1R   R2   R3   RA   R4   R5   i   (   t   distributed._ipython_utilsRT   R   R   R   R   RE   R   t   user_nsR7   R8   R%   RH   (	   R   R   RT   R'   R(   R)   R9   R   R:   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt   test_start_ipython_remoteŒ   s     
 c   	      C` s   t  j ƒ  } t ƒ  Œ \ } \ } } t  j d | ƒ e t | d d |  ƒH } t | j ƒ  ƒ } | j | d t ƒ| j | d t d d g ƒWd  QXWd  QXWd  QX| j	 d k s¸ t
 ‚ | j d \ \ } } | d	  d
 d d g k sí t
 ‚ | j d \ \ } } | d d g k st
 ‚ d  S(   Ns    distributed._ipython_utils.PopenR   R   t	   qtconsolet   qtconsole_argss   --debugi   i    i   t   jupyters
   --existingi   iÿÿÿÿ(   t   mockt   MockR   t   patchR   R   RE   R   t   TrueRH   R%   R8   (	   R   t   PopenR'   R(   RJ   R)   R   t   cmdR<   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt   test_start_ipython_qtconsole    s     .(   t
   __future__R    R   R   R[   R   t   toolzR   R   t   distributedR   t   distributed.utils_testR   R   R   R   R   R   t   ipythonR.   R1   R?   RP   RS   RW   Ra   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_ipython.pyt   <module>   s,   								