ó
¦–Õ\c           @` s~  d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l	 m
 Z
 d  d l m Z e j d ƒ Z e j d ƒ Z e j d ƒ e j d	 ƒ e j d
 ƒ Z d Z e j e j e ƒ d d ƒZ e j d „  ƒ Z d „  Z e j j d d ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d S(   i    (   t   print_functiont   divisiont   absolute_importt   unicode_literalsN(   t   read_sql_table(   t   tmpfile(   t	   assert_equ   pandasu   dask.dataframeu
   sqlalchemyu   sqlite3u   numpyuv   
name,number,age,negish
Alice,0,33,-5
Bob,1,40,-3
Chris,2,22,3
Dora,3,16,5
Edith,4,53,0
Francis,5,30,0
Garreth,6,20,0
t	   index_colu   numberc          c` sA   t  ƒ  2 }  d |  } t j d | d t d d ƒ| VWd  QXd  S(   Nu   sqlite:///%su   testt   indext	   if_existsu   replace(   R   t   dft   to_sqlt   True(   t   ft   uri(    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   db    s    
c         C` s  d d l  m } m } m } m } m } t ƒ  Ø } d | } | ƒ  } | | ƒ }	 | d | | d | d t ƒ| d | ƒ ƒ }
 | j |	 ƒ t	 |
 j
 | d d d	 d
 ƒ} | j j
 d k sÃ t ‚ | j j t j d ƒ k sä t ‚ | j ƒ  } | j t k st ‚ Wd  QXd  S(   Ni    (   t   create_enginet   MetaDatat   Tablet   Columnt   Integeru   sqlite:///%su   empty_tableu   idt   primary_keyu   col2R   t   npartitionsi   u   int64(   t
   sqlalchemyR   R   R   R   R   R   R   t
   create_allR   t   nameR   t   AssertionErrort   col2t   dtypet   npt   computet   empty(   R   R   R   R   R   R   R   R   t   metadatat   enginet   tablet   dask_dft   pd_dataframe(    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt
   test_empty(   s    (
		!t   reasonuE   Requires a postgres server. Sqlite does not support multiple schemas.c       	   C` s  d d l  m }  m } m } m } m } m } m } d } d } d }	 d }
 d } d |	 |
 | | | f } d	 } d
 } |  | ƒ } | ƒ  } | | | | d | d t ƒ| d | ƒ d | ƒ} | j	 | d | d | ƒ ƒ | j
 | ƒ t | j | d d d | j d d ƒ} | j j d k s(t ‚ | j j t j d ƒ k sIt ‚ | j ƒ  } | j t k sjt ‚ | j d | ƒ d  S(   Ni    (   R   R   R   R   R   t   eventt   DDLu	   localhostu   5432u   useru   passu   dbu   postgresql://%s:%s@%s:%s/%su   empty_tableu   other_schemau   idR   u   col2t   schemau   before_createu   CREATE SCHEMA IF NOT EXISTS %sR   R   i   u   int64u    DROP SCHEMA IF EXISTS %s CASCADE(   R   R   R   R   R   R   R'   R(   R   t   listenR   R   R   R)   R   R   R   R   R   R   R   t   execute(   R   R   R   R   R   R'   R(   t   pg_hostt   pg_portt   pg_usert   pg_passt   pg_dbt   db_urlt
   table_namet   schema_nameR!   R    R"   R#   R$   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_empty_other_schema:   s,    4		'!c         C` s™  d d  l  } | j  j ƒ  } | j d d ƒ } t j i t d ƒ d 6g  t d ƒ D] } | | | ^ qP d 6t t t t t g d 6ƒ } | j	 i d	 d 6| | d
 d 6d  d 6i d  d 6| | d d 6d  d 6g ƒ } t ƒ  ´} d | } | j d | d t d d ƒt d | d d d d ƒ} | j d ƒ }	 t | |	 j i t d 6ƒ ƒ t d | d d d d d d ƒ} | j d ƒ }	 t | |	 ƒ t d | d d d d ƒ} | j d ƒ j ƒ  }
 |
 j j ƒ  d t g k sÝt ‚ |
 j sìt ‚ | j d ƒ }	 t | |	 j i t d 6ƒ ƒ t d | d d d d d |	 d  ƒ} | j d ƒ j ƒ  }
 |
 j j ƒ  d d g k sst ‚ | j d ƒ }	 t | |	 ƒ Wd  QXd  S(   Ni    t   secondsi   u   ghjklu   ai   u   bu   cu   xiè  ié  u   sqlite:///%su   testR   R	   u   replaceR   i   R   t	   head_rowsi   i   u   Ot   meta(   t   datetimet   nowt	   timedeltat   pdt	   DataFramet   listt   rangeR   t   Falset   appendt   NoneR   R   R   t	   set_indexR   t   astypet   boolt   get_partitionR   t   dtypest   tolistR   R   (   R   R8   R9   t   dt   iR
   R   R   t   datat   df2t   part(    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_needs_rational^   s:    >&)
	!!c         C` sh   t  d |  d d d d ƒj ƒ  } | j t j k j ƒ  s? t ‚ | j j d k sW t ‚ t | t ƒ d  S(   Nu   testR   i   R   u   number(   R   R   R   R
   t   allR   R   R   (   R   RJ   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_simple†   s    !c      	   C` s  t  d |  d t t j ƒ d d d d ƒ} t | j ƒ d k sE t ‚ | j j ƒ  t j k j	 ƒ  si t ‚ t  d |  d d g d d	 d d ƒ} t
 | t d g ƒ t  d |  d t t j ƒ d
 d d d ƒ} | j d k sà t ‚ | j j ƒ  t j k j	 ƒ  st ‚ d  S(   Nu   testt   columnsR   i   R   u   numberi   u   namei   t   bytes_per_chunki   i   i   @(   R   R=   R
   RP   t   lent	   divisionsR   R   R   RN   R   R   (   R   RJ   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_npartitions   s    !	$		c      	   C` sˆ   t  d |  d d g d d d d g d d	 ƒ} | j d
 k sB t ‚ | j j ƒ  j ƒ  d k sc t ‚ t | t d g t j d k ƒ d  S(   Nu   testRP   u   nameRS   i    i   i   R   u   number(   i    i   i   (   R   RS   R   R   t   maxR   R   R
   (   R   RJ   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_divisionsž   s
    $	!c         C` sµ   t  j t ƒ 6 t d |  d d g d d d d d d	 g d
 d ƒWd  QXt d |  d d d d ƒ} | j d „  ƒ j ƒ  } d | k  j ƒ  rž | d k  j ƒ  s¤ t ‚ t | t	 ƒ d  S(   Nu   testRP   u   nameR   u   numberRS   i    i   i   R   i   RQ   id   c         S` s   |  j  d t d t ƒ j ƒ  S(   Nt   deepR   (   t   memory_usageR   t   sum(   RH   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   <lambda>¬   s   	i2   iÈ   (
   t   pytestt   raisest	   TypeErrorR   t   map_partitionsR   RN   R   R   R
   (   R   t   outt   m(    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_division_or_partition¦   s    *c      
   C` sm   t  d |  d d d d d d d g ƒ} | j j ƒ  j ƒ  d k sH t ‚ | j j ƒ  j ƒ  d k si t ‚ d  S(	   Nu   testR   i   R   u   numbert   limitsi   i   (   R   R   t   minR   R   RU   (   R   RJ   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt
   test_range²   s    !c    	      C` s9  d d  l  }  |  j  j ƒ  } |  j d d ƒ } t j i t d ƒ d 6g  t d d d ƒ D] } | | | ^ qV d	 6ƒ } t ƒ  ³ } d
 | } | j d | d t	 d d ƒt
 d | d d d d	 ƒ} | j j j d k sß t ‚ | j d | j j ƒ  k st ‚ | j d	 ƒ } t | j d „  ƒ | j ƒ  ƒ Wd  QXd  S(   Ni    R5   i   u   ghjklu   ai   iýÿÿÿiÿÿÿÿu   bu   sqlite:///%su   testR   R	   u   replaceR   R   u   Mc         S` s
   |  j  ƒ  S(   N(   t
   sort_index(   t   x(    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyRZ   Æ   t    (   R8   R9   R:   R;   R<   R=   R>   R   R   R?   R   R   R   t   kindR   RS   t   bRc   RB   R   R^   Re   (	   R8   R9   RH   RI   R
   R   R   RJ   RK   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_datetimes¹   s    1
"c         C` sZ  d d l  m } | j j | j d ƒ ƒ j d ƒ } t d |  d d d | ƒ} | j d d k sh t ‚ | j	 d ƒ j
 ƒ  } | j d k j ƒ  s˜ t ‚ t d |  d d d | d	 | | j d
 ƒ g ƒ} | j j
 ƒ  d k  j ƒ  sê t ‚ | j d ƒ j d ƒ } t d |  d d d | d	 d d
 g ƒ} | j
 ƒ  } | j | d k j ƒ  sVt ‚ d  S(   Ni    (   t   sqlu   negishu   absu   testR   i   R   RP   u   ageu   index(   R   Rk   t   funct   abst   columnt   labelR   RS   R   RE   R   R   RN   t   age(   R   Rk   R   RJ   RL   RH   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_with_funcÊ   s    $!c         C` s¬   d d l  m } | j d ƒ } t j t ƒ - t d |  d d d | d d d	 | g ƒWd  QX| j j | j d ƒ ƒ } t j t ƒ  t d |  d d d | ƒWd  QXd  S(
   Ni    (   Rk   u   negishu   testR   i   R   RP   u   age(	   R   Rk   Rn   R[   R\   t
   ValueErrorR   Rl   Rm   (   R   Rk   R   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_no_nameless_indexá   s    c         C` s|   d d l  m } | j | j d ƒ | j d ƒ g ƒ j | j d ƒ ƒ } t | |  d d d d ƒ} t | t d g ƒ d  S(	   Ni    (   Rk   u   numberu   nameu   testR   i   R   (	   R   Rk   t   selectRn   t   select_fromR"   R   R   R
   (   R   Rk   t   s1R_   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   test_select_from_selectï   s
    'c         C` sÂ   t  d | d d d d d i t d 6ƒj ƒ  } |  j ƒ  \ } } d | k sR t ‚ t | t ƒ t  d | d d d d d i t d 6ƒj ƒ  } |  j ƒ  \ } } d | k s± t ‚ t | t ƒ d  S(	   Nu   testR   i   R   u   numbert   engine_kwargsu   echou   SELECT(   R   R?   R   t
   readouterrR   R   R
   R   (   t   capsysR   RJ   R_   t   err(    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt%   test_extra_connection_engine_keywords÷   s    ..c         C` s9   t  j t ƒ $ t d |  d d d d d d  ƒWd  QXd  S(   Nu   testR   i   R   u   nameRS   (   R[   R\   R]   R   RA   (   R   (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt)   test_no_character_index_without_divisions  s    ('   t
   __future__R    R   R   R   t   ioR[   t   dask.dataframe.io.sqlR   t
   dask.utilsR   t   dask.dataframe.utilsR   t   importorskipR;   t   ddR   RJ   t   read_csvt   StringIOR
   t   yield_fixtureR   R%   t   markt   skipR4   RM   RO   RT   RV   Ra   Rd   Rj   Rq   Rs   Rw   R|   R}   (    (    (    s?   lib/python2.7/site-packages/dask/dataframe/io/tests/test_sql.pyt   <module>   s6   "	$	(											