ó
¦–Õ\c           @   sÒ  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 Z d  d l	 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 m Z m Z d  d l m Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z e d „  ƒ Z  e j! j" e j# d k d d ƒe j! j$ d d d g ƒ d „  ƒ ƒ Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- e j! j$ d e. e/ g ƒ d „  ƒ Z0 d „  Z1 d „  Z2 d „  Z3 e j! j$ d  d2 d3 d4 d" d# g d" d$ g f d5 d6 f d" d# h d" d$ h f i d# d% 6i d$ d% 6f i d& d% 6d" d' d# g d( 6i d& d% 6d" d' d$ g d( 6f g ƒ d) „  ƒ Z4 d* „  Z5 d+ „  Z6 e j! j$ d, d- d. g ƒ d/ „  ƒ Z7 d0 „  Z8 d1 „  Z9 d S(7   iÿÿÿÿN(   t   OrderedDict(   t   contextmanager(   t   updatet   merget   collectt   collect_yamlt   collect_envt   gett   ensure_filet   sett   configt   renamet   update_defaultst   refresht   expand_environment_variablest   canonical_name(   t   tmpfilec          C   sº   i d d 6d d 6}  t  d |  ƒ d k s/ t ‚ t  d |  ƒ d k sJ t ‚ t  d |  ƒ d k se t ‚ t  d |  ƒ d k s€ t ‚ t  d |  ƒ d k s› t ‚ t  d |  ƒ d k s¶ t ‚ d  S(	   Ni   s   foo-bari   t	   fizz_buzzt   foo_bars	   fizz-buzzs   new-keyt   new_key(   R   t   AssertionError(   t   c(    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_canonical_name   s    

c          C   s  i d d 6i d d 6d 6}  i d d 6d d 6t  i d d 6ƒ d 6} t | |  ƒ | i d d 6i d d 6d d 6d 6d d 6k s… t ‚ i d d 6i d d 6d 6}  i d d 6d d 6i d d 6d d 6d 6} t | |  d	 d
 ƒ| i d d 6i d d 6d d 6d 6d d 6k st ‚ d  S(   Ni   t   xt   at   yi   i   t   zt   bt   priorityt   old(   R    R   R   (   R   R   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_update   s    (5)c          C   s‹   i d d 6i d d 6d 6}  i d d 6d d 6i d d 6d 6} i d d 6i d d 6d d 6d 6d d 6} t  |  | ƒ } | | k s‡ t ‚ d  S(	   Ni   R   R   R   i   i   R   R   (   R   R   (   R   R   t   expectedR   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt
   test_merge*   s    "
c          C   s  i d d 6i d d 6d 6}  i d d 6d d 6i d d 6d 6} i d d 6i d d 6d d 6d 6d d 6} t  d	 d
 ƒ œ } t  d	 d
 ƒ „ } t | d ƒ  } t j |  | ƒ Wd  QXt | d ƒ  } t j | | ƒ Wd  QXt t d | | g ƒ Œ  } | | k st ‚ Wd  QXWd  QXd  S(   Ni   R   R   R   i   i   R   R   t	   extensiont   yamlt   wt   paths(   R   t   openR"   t   dumpR   R   R   (   R   R   R   t   fn1t   fn2t   fR
   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_collect_yaml_paths8   s    "
c          C   s'  i d d 6i d d 6d 6}  i d d 6d d 6i d d 6d 6} i d d 6i d d 6d d 6d 6d d 6} t  ƒ  ² } t j | ƒ t t j j | d	 ƒ d
 d ƒ } t j |  | ƒ Wd  QXt t j j | d ƒ d
 d ƒ } t j | | ƒ Wd  QXt t	 d | g ƒ Œ  } | | k st
 ‚ Wd  QXd  S(   Ni   R   R   R   i   i   R   R   s   a.yamlt   modeR#   s   b.yamlR$   (   R   t   ost   mkdirR%   t   patht   joinR"   R&   R   R   R   (   R   R   R   t   dirnameR)   R
   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_collect_yaml_dirM   s    "
$$c         c   sY   t  j t j  |  ƒ j ƒ } | t  j A} z t j |  | ƒ d  VWd  t j |  | ƒ Xd  S(   N(   t   statt   S_IMODER,   t   st_modet   S_IREADt   chmod(   R.   t	   perm_origt   perm_new(    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   no_read_permissionsb   s    	t   win32t   reasons$   Can't make writeonly file on windowst   kindt	   directoryt   filec      
   C   s  i d d 6d d 6} i d d 6d d 6} t  |  ƒ } t j j | d ƒ } t j j | d	 ƒ } t | d
 d ƒ } t j | | ƒ Wd  QXt | d
 d ƒ } t j | | ƒ Wd  QX| d k rÏ | } i  }	 n | } | }	 t | ƒ / t t	 d | g ƒ Œ  }
 |
 |	 k st
 ‚ Wd  QXd  S(   Ni   R   i   R   i   i   R   s   a.yamls   b.yamlR+   R#   R=   R$   (   t   strR,   R.   R/   R%   R"   R&   R9   R   R   R   (   t   tmpdirR<   R   R   t   dir_patht   a_patht   b_pathR)   t	   cant_readR   R
   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt#   test_collect_yaml_permission_errorsm   s"    	c          C   s§   i d d 6d d 6d d 6d d 6d d	 6d
 d 6d d 6d d 6}  i d d 6t  d 6d d 6i d d 6d d 6d 6d d d g d 6d d 6} t |  ƒ } | | k s£ t ‚ d  S(   Nt   123t   DASK_A_Bt   Truet   DASK_Ct   hellot   DASK_Dt	   DASK_E__Xt   456t	   DASK_E__Ys   [1, 2, "3"]t   DASK_Fs   /not/parsable/as/literalt   DASK_Gs   not includedt   FOOi{   t   a_bR   t   dR   iÈ  R   t   ei   i   t   3R)   t   g(   RH   R   R   (   t   envR   t   res(    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_env‰   s"    


c          C   s(  i d d 6i d d 6d 6}  i d d 6d d 6i d d 6d 6} i d	 d
 6} i d	 d 6d d 6i d d 6d d 6d 6d d 6} t  d d ƒ ™ } t  d d ƒ  } t | d ƒ  } t j |  | ƒ Wd  QXt | d ƒ  } t j | | ƒ Wd  QXt | | g d | ƒ} | | k st ‚ Wd  QXWd  QXd  S(   Ni   R   R   R   i   i   R   R   i   t   DASK_WR#   R!   R"   RW   (   R   R%   R"   R&   R   R   (   R   R   RW   R   R'   R(   R)   R
   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_collect¡   s     "
c          C   sH   d t  j d <z) t g  ƒ }  |  i d d 6k s5 t ‚ Wd  t  j d =Xd  S(   Nt   bart   DASK_FOOt   foo(   R,   t   environR   R   (   R
   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_collect_env_none¸   s
    c          C   s¢   i d d 6i d d 6d 6}  t  d d |  ƒd k s9 t ‚ t  d d |  ƒd k sW t ‚ t  d d	 d |  ƒd	 k sx t ‚ t j t ƒ  t  d d |  ƒWd  QXd  S(
   Ni   R   i   R   R   R
   s   y.as   y.bi{   (   R   R   t   pytestt   raisest   KeyError(   RS   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_getÁ   s    !c   	      C   sï  i d d 6i d d 6d 6} i d d 6} t  j j t |  ƒ d ƒ } t  j j t |  ƒ d ƒ } t  j j | d ƒ } t | d ƒ  } t j | | ƒ Wd  QXt d	 | d
 | d t ƒ t | ƒ  } t j	 | ƒ } Wd  QX| | k sê t
 ‚ t | d ƒ  } t j | | ƒ Wd  QXt d	 | d
 | d t ƒ t | ƒ  } t j	 | ƒ } Wd  QX| | k sat
 ‚ t  j | ƒ t d	 | d
 | d t ƒ t | ƒ  } | j ƒ  } Wd  QXd | k sºt
 ‚ t | ƒ  } t j	 | ƒ } Wd  QX| sët
 ‚ d  S(   Ni   R   R   R   i{   s   source.yamlt   destR#   t   sourcet   destinationt   commentRF   (   R,   R.   R/   R?   R%   R"   R&   R   t   Falset	   safe_loadR   t   removeRH   t   read(	   R@   R   R   Rf   Re   Rg   R)   t   resultt   text(    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_ensure_fileË   s2    c          C   si  t  d d ƒ ] t d d k s& t ‚ t  d d ƒ  t d d k sL t ‚ Wd  QXt d d k sh t ‚ Wd  QXd t k s€ t ‚ t  i d d 6ƒ  t d d k sª t ‚ Wd  QXd t k sÂ t ‚ t  i d d 6d d 6d d	 6ƒ 7 t d i d d
 6d d 6i d d 6d 6k st ‚ Wd  QXd t k s.t ‚ i  }  t  i d d 6d |  ƒ|  d d
 d k set ‚ d  S(   Nt   abci{   iÈ  i   s   abc.xi   s   abc.yi   s   abc.z.aR   R   R   R   R
   (   R	   R
   R   (   RS   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_setô   s    "8c           C   s¯   t  i i d d 6d 6ƒ } t d i d d 6k s8 t ‚ t  i d d 6ƒ ) t d i d d 6d d 6k sp t ‚ Wd  QXt d i d d 6k s“ t ‚ Wd  QXd t k s« t ‚ d  S(   Ni{   R   Rp   iÈ  s   abc.yR   (   R	   R
   R   (    (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_set_nested
  s    *#c       	   C   sB   d d  l  }  t d |  j ƒ  ƒ  t d d ƒ  Wd  QXWd  QXd  S(   NiÿÿÿÿR   R   i   (   t	   threadingR	   t   Lock(   Rs   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_set_hard_to_copyables  s    R-   c         C   så   i d d 6i d d 6d 6} t  j j t | ƒ d ƒ } t  j j t | ƒ d ƒ } t | d ƒ  } t j | | ƒ Wd  QX|  r t  j | ƒ n  t d | d	 | ƒ t  j j	 | ƒ sº t
 ‚ t  j j t  j j | d ƒ ƒ sá t
 ‚ d  S(
   Ni   R   R   R   s   source.yamlRe   R#   Rf   Rg   (   R,   R.   R/   R?   R%   R"   R&   R-   R   t   isdirR   t   exists(   R-   R@   R   Rf   Re   R)   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_ensure_file_directory  s    c         C   s  i d d 6i d d 6d 6} t  j j t |  ƒ d ƒ } t | d ƒ  } t j | | ƒ Wd  QXt  j j t |  ƒ d ƒ } t j j	 } z | t j _	 t
 d | ƒ Wd  | t j _	 Xt  j j | ƒ sÊ t ‚ t  j | ƒ \ } t  j j | ƒ d t  j j | ƒ d k st ‚ d  S(	   Ni   R   R   R   s   source.yamlR#   t   daskRf   (   R,   R.   R/   R?   R%   R"   R&   Ry   R
   t   PATHR   Rv   R   t   listdirt   split(   R@   R   Rf   R)   Rg   Rz   t   fn(    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt2   test_ensure_file_defaults_to_DASK_CONFIG_directory-  s    c          C   sN   i d d 6}  i d d 6} t  |  d | ƒ| i i d d 6d 6k sJ t ‚ d  S(   Ns   foo.bars   foo-bari{   R
   R\   R^   (   R   R   (   t   aliasesR
   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_rename@  s    c       	   C   sÒ   g  }  i  } t  i d d 6d | d |  ƒ| i d d 6k sB t ‚ t d g  d i d d 6d | d |  ƒ | i d d 6d	 d
 6k sˆ t ‚ t d g  d i d d 6d | d |  ƒ | i d d 6d d 6k sÎ t ‚ d  S(   Ni   R   R
   t   defaultsR$   RW   t   2t   DASK_Bi   R   RU   RI   i   R   (   R   R   R   (   R   R
   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_refreshG  s    & &s   inp,outt   1i   s   $FOOR^   R   t   AR‚   R   c         C   s;   z) d t  j d <t |  ƒ | k s( t ‚ Wd  t  j d =Xd  S(   NR^   RQ   (   R,   R_   R   R   (   t   inpt   out(    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt!   test_expand_environment_variablesU  s    c         C   su   d } |  j  d t | ƒ ƒ i  } t j j d | ƒ t d d | ƒ| k sS t ‚ t d d | ƒ| k sq t ‚ d  S(   Ni   RG   R
   RR   s   a-b(   t   setenvR?   Ry   R
   R   R   R   (   t   monkeypatcht   valueRS   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_env_var_canonical_nameg  s    c       	   C   sH  i i d d 6d 6}  d d d g } x2 | D]* } t  j j | d |  ƒd k s* t ‚ q* Wt  j j i i d d	 6d
 6d |  ƒ: x2 | D]* } t  j j | d |  ƒd k s† t ‚ q† WWd  QXt  j j i i i d d 6d	 6d d 6d
 6d |  ƒT t  j j d d |  ƒi d d 6k st ‚ t  j j d d |  ƒd k s>t ‚ Wd  QXd  S(   Ni{   RR   s   x-ys   x_y.a_bs   x-y.a-bs   x_y.a-bR
   iÈ  s   a-bt   x_yi   t   c_di   s   e-fs   x_y.e_f(   Ry   R
   R   R   R	   (   R   t   keyst   k(    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_get_set_canonical_namep  s    ('.5+t   keyt
   custom_keys
   custom-keyc         C   sf   d } t  j j i | |  6ƒ A t  j j d ƒ | k s> t ‚ t  j j d ƒ | k s\ t ‚ Wd  QXd  S(   Ni{   R”   s
   custom-key(   Ry   R
   R	   R   R   (   R“   RŒ   (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_get_set_roundtrip  s    c           C   sV   t  j j i d  d 6d d 6i i d d 6d 6ƒ i i d d 6d 6d d 6k sR t ‚ d  S(   NR   i    R   i   R   (   Ry   R
   R   t   NoneR   (    (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_merge_None_to_dict‰  s    c           C   s   d t  j j k s t ‚ d  S(   Ns   temporary-directory(   Ry   R
   R   (    (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   test_core_file  s    (   R…   R…   (   i   i   (   s   $FOOR^   (   i   s   $FOO(   i   R^   (:   R"   R,   R2   t   syst   collectionsR    t
   contextlibR   Ra   t   dask.configRy   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   t
   dask.utilsR   R   R   R    R*   R1   R9   t   markt   skipift   platformt   parametrizeRE   RY   R[   R`   Rd   Ro   Rq   Rr   Ru   RH   Ri   Rx   R~   R€   R„   R‰   R   R’   R•   R—   R˜   (    (    (    s5   lib/python2.7/site-packages/dask/tests/test_config.pyt   <module>   sX   ^					'					
	)				$				I
			$	