ó
¦–Õ\c           @` s  d  d l  m Z m Z m Z d  d l m Z d  d l m Z d  d l Z d  d l	 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 m Z d d
 l m Z d d l m Z d d l m Z m Z m Z m Z m Z d d l  m! Z! d d l" m# Z# m$ Z$ m% Z% d d l" m& Z& m' Z' e
 ƒ  Z( d d d „ Z* d d d „ Z+ d d e, d d „ Z- d e, d e( d „ Z. d d e( d „ Z/ d d d „ Z0 d „  Z1 e2 d „ Z3 e2 d „ Z4 d „  Z5 e# d d d d „ ƒ Z6 d d d „ Z7 e re5 j8 e j5 _8 e4 j8 e j4 _8 n  d S(   i    (   t   absolute_importt   divisiont   print_function(   t   ceil(   t   getitemN(   t   Lock(   t   mergei   (   t   tokenize(   t   unicodet   PY3(   t   array(   t   delayedi   (   t	   DataFramet   Seriest   Indext   new_dd_objectt   has_parallel_type(   t   set_partition(   t   insert_meta_param_descriptiont
   check_metat	   make_meta(   t   Mt   ensure_dictc         ` sÛ  ˆ  j  d k r( t d ˆ  j f ƒ ‚ n  | d k	 r^ t | t ƒ sR t d ƒ ‚ n  | j } n  t ˆ  j d d ƒ d k	 rU| d k rš t	 ˆ  j j
 ƒ } ny t j | ƒ r¸ t d ƒ ‚ n[ t ‡  f d †  | Dƒ ƒ st t | ƒ j ˆ  j j
 ƒ ƒ } t d j ˆ  j | ƒ ƒ ‚ n  ˆ  j j } g  | D]& } | | k rF| | d n d	 ^ q&} nTˆ  j  d
 k rít j | ƒ s| d k r¡t j g  d | d ˆ  j d | ƒSt | ƒ d
 k rÞt j t j g  d ˆ  j ƒd | d | ƒSt d ƒ ‚ n¼ t j ˆ  j d
 ƒ rt d ƒ ‚ n  | d k rRˆ  j  d k rFt	 t ˆ  j d
 ƒ ƒ n d g } nA t | ƒ ˆ  j d
 k r“t d j t | ƒ ˆ  j d
 ƒ ƒ ‚ n  ˆ  j g t | ƒ } d „  t | | ƒ Dƒ } t j | d | d | ƒS(   s@    Create empty pd.DataFrame or pd.Series which has correct dtype i   sE   from_array does not input more than 2D array, got array with shape %rs3   'index' must be an instance of dask.dataframe.Indext   namess+   For a struct dtype, columns must be a list.c         3` s!   |  ] } | ˆ  j  j k Vq d  S(   N(   t   dtypeR   (   t   .0t   i(   t   x(    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys	   <genexpr>,   s    s!   dtype {0} doesn't have fields {1}i    t   f8i   t   nameR   t   indext   columnss?   For a 1d array, columns must be a scalar or single element lists    Shape along axis 1 must be knownsS   Number of column names must match width of the array. Got {0} names for {1} columnsc         S` s.   i  |  ]$ \ } } t  j g  d  | ƒ| “ q S(   R   (   t   npR
   (   R   t   ct   dt(    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys
   <dictcomp>D   s   	 N(   t   ndimt
   ValueErrort   shapet   Nonet
   isinstanceR   t   _metat   getattrR   t   listR   R    t   isscalart   allt   sortedt   sett
   differencet   formatt   fieldst   pdR   t   lenR   R
   t   isnant   ranget   zip(   R   R   R   t   extraR1   t   nt   dtypest   data(    (   R   s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt   _meta_from_array   sD    !	6"+4	iPÃ  c   
      C` sN  t  |  t j ƒ r" t |  d | ƒSt |  | ƒ } t t d t |  ƒ | ƒ ƒ } | t |  ƒ d f } t |  | | ƒ } d | } i  } x° t d t	 t
 t |  ƒ | ƒ ƒ ƒ D]‰ } t |  t | | | d | ƒ f }	 t  | t j ƒ rt j |	 d | j | j f | | | f <q® t j |	 d | j f | | | f <q® Wt | | | | ƒ S(   sU   Read any slicable array into a Dask Dataframe

    Uses getitem syntax to pull slices out of the array.  The array need not be
    a NumPy array but must support slicing syntax

        x[50000:100000]

    and have 2 dimensions:

        x.ndim == 2

    or have a record dtype:

        x.dtype == [('name', 'O'), ('balance', 'i8')]

    R   i    i   s   from_array-N(   R'   t   dat   Arrayt   from_dask_arrayR;   t   tupleR5   R3   R   t   intR   R   t   sliceR2   R   R&   R   R   R   R   R   (
   R   t	   chunksizeR   t   metat	   divisionst   tokenR   t   dskR   R:   (    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt
   from_arrayH   s    
,$+&c   	      ` sÂ  t  t ˆ  d d ƒ t j ƒ r- t d ƒ ‚ n  t ˆ  ƒ sH t d ƒ ‚ n  | d k | d k k ro t d ƒ ‚ n  t	 ˆ  ƒ } | d k r  t
 t | | ƒ ƒ } n t
 t | | ƒ ƒ } ˆ pÌ d t ˆ  | ƒ ‰ | sû t i ˆ  ˆ d f 6ˆ ˆ  d d g ƒ S| r#ˆ  j j r#ˆ  j d t ƒ ‰  n  | rGt ˆ  j d | ƒ\ } } n8 t t d | | ƒ ƒ t	 ˆ  ƒ g } d g t	 | ƒ } ‡  ‡ f d	 †  t t | d
  | d ƒ ƒ Dƒ } t | ˆ ˆ  | ƒ S(   s'	  
    Construct a Dask DataFrame from a Pandas DataFrame

    This splits an in-memory Pandas dataframe into several parts and constructs
    a dask.dataframe from those parts on which Dask.dataframe can operate in
    parallel.

    Note that, despite parallelism, Dask.dataframe may not always be faster
    than Pandas.  We recommend that you stay with Pandas for as long as
    possible before switching to Dask.dataframe.

    Parameters
    ----------
    data : pandas.DataFrame or pandas.Series
        The DataFrame/Series with which to construct a Dask DataFrame/Series
    npartitions : int, optional
        The number of partitions of the index to create. Note that depending on
        the size and index of the dataframe, the output may have fewer
        partitions than requested.
    chunksize : int, optional
        The number of rows per index partition to use.
    sort: bool
        Sort input first to obtain cleanly divided partitions or don't sort and
        don't get cleanly divided partitions
    name: string, optional
        An optional keyname for the dataframe.  Defaults to hashing the input

    Returns
    -------
    dask.DataFrame or dask.Series
        A dask DataFrame/Series partitioned along the index

    Examples
    --------
    >>> df = pd.DataFrame(dict(a=list('aabbcc'), b=list(range(6))),
    ...                   index=pd.date_range(start='20100101', periods=6))
    >>> ddf = from_pandas(df, npartitions=3)
    >>> ddf.divisions  # doctest: +NORMALIZE_WHITESPACE
    (Timestamp('2010-01-01 00:00:00', freq='D'),
     Timestamp('2010-01-03 00:00:00', freq='D'),
     Timestamp('2010-01-05 00:00:00', freq='D'),
     Timestamp('2010-01-06 00:00:00', freq='D'))
    >>> ddf = from_pandas(df.a, npartitions=3)  # Works with Series too!
    >>> ddf.divisions  # doctest: +NORMALIZE_WHITESPACE
    (Timestamp('2010-01-01 00:00:00', freq='D'),
     Timestamp('2010-01-03 00:00:00', freq='D'),
     Timestamp('2010-01-05 00:00:00', freq='D'),
     Timestamp('2010-01-06 00:00:00', freq='D'))

    Raises
    ------
    TypeError
        If something other than a ``pandas.DataFrame`` or ``pandas.Series`` is
        passed in.

    See Also
    --------
    from_array : Construct a dask.DataFrame from an array that has record dtype
    read_csv : Construct a dask.DataFrame from a CSV file
    R   s,   Dask does not support MultiIndex Dataframes.s*   Input must be a pandas DataFrame or Seriess;   Exactly one of npartitions and chunksize must be specified.s   from_pandas-i    t	   ascendingRB   c         ` s5   i  |  ]+ \ } \ } } ˆ  j  | | !ˆ | f “ q S(    (   t   iloc(   R   R   t   startt   stop(   R:   R   (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys
   <dictcomp>È   s   	iÿÿÿÿi   N(   R'   R)   R&   R2   t
   MultiIndext   NotImplementedErrorR   t	   TypeErrorR$   R3   R@   R   R   R   R   t   is_monotonic_increasingt
   sort_indext   Truet   sorted_division_locationsR*   R5   t	   enumerateR6   (	   R:   t   npartitionsRB   t   sortR   t   nrowsRD   t	   locationsRF   (    (   R:   R   s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt   from_pandasm   s.    =&%!c         ` s6  ˆ t  k r t ƒ  ‰ n  d d l j } d d l } t ˆ t t f ƒ r] | j d ˆ ƒ ‰ n  t	 ‡ f d †  ˆ j
 Dƒ ƒ } ˆ d k r | d k r | ‰ n  t ƒ  ‰  | r\x­ ˆ j
 D]Ÿ }	 t j ˆ j |	 t j ƒ st j ˆ j |	 t j ƒ st j ˆ j |	 t j ƒ r¶ | j ˆ |	 d ˆ t ˆ j
 ƒ f ƒ}
 | j |
 ƒ j ƒ  ˆ  |	 <q¶ q¶ Wn  t ˆ j j
 ƒ ‰ t t d t ˆ ƒ ˆ ƒ ƒ } | t ˆ ƒ d f } ˆ j rßt ˆ j t j j ˆ j ƒ f ˆ | | | ƒ } n- t t ˆ ƒ ˆ j ˆ j f ˆ | | | ƒ } d | ‰ t ‡  ‡ ‡ ‡ ‡ ‡ f d	 †  t d t  t! t ˆ ƒ ˆ ƒ ƒ ƒ Dƒ ƒ } t" ˆ t# d d ƒ ˆ ˆ  ˆ ƒ } t$ | ˆ | | ƒ } | r.| ˆ j
 k s±t% ‚ | j ˆ | d ˆ t ˆ j
 ƒ f ƒ}
 t j& d d
 t ˆ ƒ ˆ d ƒ } t | j' |
 | ƒ j ƒ  ƒ } t( | | | |  S| Sd S(   s™   Read BColz CTable into a Dask Dataframe

    BColz is a fast on-disk compressed column store with careful attention
    given to compression.  https://bcolz.readthedocs.io/en/latest/

    Parameters
    ----------
    x : bcolz.ctable
    chunksize : int, optional
        The size(rows) of blocks to pull out from ctable.
    categorize : bool, defaults to True
        Automatically categorize all string dtypes
    index : string, optional
        Column to make the index
    lock: bool or Lock
        Lock to use when reading or False for no lock (not-thread-safe)

    See Also
    --------
    from_array: more generic function not optimized for bcolz
    i    Nt   rootdirc         3` s   |  ] } ˆ  | j  Vq d  S(   N(   t   chunklen(   R   R   (   R   (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys	   <genexpr>ì   s    i'  t   chunksi   s   from_bcolz-c         3` sK   |  ]A } ˆ | f t  ˆ t | ˆ | d  ˆ ƒ f ˆ ˆ  ˆ f f Vq d S(   i   N(   t   dataframe_from_ctableRA   (   R   R   (   t
   categoriesRB   R   t   lockt   new_nameR   (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys	   <genexpr>  s   id   i   ()   RQ   R   t
   dask.arrayR
   t   bcolzR'   t   strR   t   ctablet   maxR   R&   t   dictR    t
   issubdtypeR   t   string_t   unicode_t   object_RG   R3   t   uniquet   computeR?   R5   RY   R   t   ost   patht   getmtimet   idR%   R@   R   R\   RA   R   t   AssertionErrort   linspacet
   percentileR   (   R   RB   t
   categorizeR   R^   t   kwargsR<   Ra   t   bc_chunklenR   t   aRD   RE   RF   RC   t   resultt   q(    (   R]   RB   R   R^   R_   R   s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt
   from_bcolzÍ   sJ    		)#	!!
,!)#c         C` sv  d d l  } | d k r' |  j j } n  t | t ƒ rE t | ƒ } n  |  | }  t | ƒ t k r— | j	 } | j
 t |  ƒ k  rˆ | j
 n	 t |  ƒ } n? | d j	 } | d j
 t |  ƒ k  rÊ | d j
 n	 t |  ƒ } t j t | | ƒ ƒ } | r| j ƒ  n  zZt |  | j ƒ rÓg  | D] }	 |  |	 | ^ q}
 | d k	 r¦g  t | |
 ƒ D]J \ }	 } |	 | k r—t j j t j | |	 | ƒ | |	 t ƒ n | ^ qS}
 n  t j t t | |
 ƒ ƒ d | d | ƒ} n‡ t |  | j ƒ rZ|  | } | d k	 r<| r<| | k r<t j j t j | | | ƒ | | t ƒ } n  t j | d | d | ƒ} n  Wd | rq| j ƒ  n  X| S(   s   Get DataFrame from bcolz.ctable

    Parameters
    ----------
    x: bcolz.ctable
    slc: slice
    columns: list of column names or None

    >>> import bcolz
    >>> x = bcolz.ctable([[1, 2, 3, 4], [10, 20, 30, 40]], names=['a', 'b'])
    >>> dataframe_from_ctable(x, slice(1, 3))
       a   b
    1  2  20
    2  3  30

    >>> dataframe_from_ctable(x, slice(1, 3), columns=['b'])
        b
    1  20
    2  30

    >>> dataframe_from_ctable(x, slice(1, 3), columns='b')
    1    20
    2    30
    Name: b, dtype: int...

    i    NR   R   R   (   Ra   R&   R   R   R'   R?   R*   t   typeRA   RJ   RK   R3   R2   R   R5   t   acquireRc   R6   t   Categoricalt
   from_codesR    t   searchsortedRQ   R   Re   t   carrayR   t   release(   R   t   slcR   R]   R^   Ra   RJ   RK   t   idxR   R[   t   chunkRw   (    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyR\     s@    
	-2!`!
	"c         C` sÏ  t  |  | | ƒ } |  j d k rZ t |  j d ƒ d k rZ |  j i |  j d d 6ƒ }  n  d t |  | ƒ } g  } | d	 k	 rt | t	 ƒ s t
 d ƒ ‚ n  | j |  j d k rÞ d j | j |  j d ƒ } t
 | ƒ ‚ n  | j } | j t | j ƒ ƒ | j ƒ  } nÛ t j t |  j ƒ ƒ r_d	 g t |  j d ƒ d } d	 g t |  j d ƒ } nˆ d g } x* |  j d D] } | j | d | ƒ qvWg  t | d  | d ƒ D]$ \ }	 }
 t j |	 |
 d d f ^ q­} | d c d 8<i  } xª t t |  j ƒ  | ƒ ƒ D] \ } \ } } |  j d k r7| d } n  t | t j ƒ rtt j | | |  j | j f | | | f <q	t j | | | j f | | | f <q	W| j t |  j ƒ | g ƒ t  t! | Œ  | | | ƒ S(
   s   Create a Dask DataFrame from a Dask Array.

    Converts a 2d array into a DataFrame and a 1d array into a Series.

    Parameters
    ----------
    x : da.Array
    columns : list or string
        list of column names if DataFrame, single string if Series
    index : dask.dataframe.Index, optional
        An optional *dask* Index to use for the output Series or DataFrame.

        The default output index depends on whether `x` has any unknown
        chunks. If there are any unknown chunks, the output has ``None``
        for all the divisions (one per chunk). If all the chunks are known,
        a default index with known divsions is created.

        Specifying `index` can be useful if you're conforming a Dask Array
        to an existing dask Series or DataFrame, and you would like the
        indices to match.

    Examples
    --------
    >>> import dask.array as da
    >>> import dask.dataframe as dd
    >>> x = da.ones((4, 2), chunks=(2, 2))
    >>> df = dd.io.from_dask_array(x, columns=['a', 'b'])
    >>> df.compute()
         a    b
    0  1.0  1.0
    1  1.0  1.0
    2  1.0  1.0
    3  1.0  1.0

    See Also
    --------
    dask.bag.to_dataframe: from dask.bag
    dask.dataframe._Frame.values: Reverse conversion
    dask.dataframe._Frame.to_records: Reverse conversion
    i   i   s   from-dask-arrays3   'index' must be an instance of dask.dataframe.Indexi    s>   'index' must have the same number of blocks as 'x'. ({} != {})iÿÿÿÿt   i8N("   R;   R#   R3   R[   t   rechunkR%   R   R&   R'   R   R$   RT   t	   numblocksR0   RD   t   appendR   t   daskt   __dask_keys__R    R4   t   sumR6   t   arangeRS   R2   R   R   R   R   R   t   extendR   R   (   R   R   R   RC   R   t   to_merget   msgRD   R!   Rv   t   bRF   R   Rƒ   t   ind(    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyR>   ]  sB    )( 		?.+&c         C` s   d S(   s¹    A dummy function to link results together in a graph

    We use this to enforce an artificial sequential ordering on tasks that
    don't explicitly pass around a shared resource
    N(   R&   (   RE   Rw   (    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt   _link³  s    c         C` sd   t  |  t j ƒ r. t t t |  j | ƒ ƒ ƒ St  |  t j ƒ r` | rV t |  j ƒ  ƒ St |  ƒ Sd  S(   N(	   R'   R2   R   R*   t   mapR?   t
   itertuplesR   t	   iteritems(   t   dfR   (    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt
   _df_to_bag¼  s    c         ` sª   d d l  m } t |  t t f ƒ s4 t d ƒ ‚ n  d t |  ˆ  ƒ ‰ t ‡  ‡ f d †  t |  j	 ƒ  ƒ Dƒ ƒ } | j
 |  j |  j ƒ  |  j	 ƒ  ƒ ƒ | | ˆ |  j ƒ S(   s,  Create Dask Bag from a Dask DataFrame

    Parameters
    ----------
    index : bool, optional
        If True, the elements are tuples of ``(index, value)``, otherwise
        they're just the ``value``.  Default is False.

    Examples
    --------
    >>> bag = df.to_bag()  # doctest: +SKIP
    i   (   t   Bags%   df must be either DataFrame or Seriess   to_bag-c         3` s0   |  ]& \ } } ˆ | f t  | ˆ  f f Vq d  S(   N(   R–   (   R   R   t   block(   R   R   (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys	   <genexpr>Ô  s   (   t   bag.coreR—   R'   R   R   RN   R   Re   RS   R‰   t   updatet   __dask_optimize__t   __dask_graph__RT   (   R•   R   R—   RF   (    (   R   R   s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt   to_bagÃ  s    %c         C` s   |  j  t j ƒ S(   sì   Create Dask Array from a Dask Dataframe

    Warning: This creates a dask.array without precise shape information.
    Operations that depend on shape information, like slicing or reshaping,
    will not work.

    Examples
    --------
    >>> df.to_records()  # doctest: +SKIP
    dask.array<shape=(nan,), dtype=(numpy.record, [('ind', '<f8'), ('x', 'O'), ('y', '<i8')]), chunksize=(nan,)>

    See Also
    --------
    dask.dataframe._Frame.values
    dask.dataframe.from_dask_array
    (   t   map_partitionsR   t
   to_records(   R•   (    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyRŸ   Ú  s    s   from-delayedc   	      ` sÜ  d d l  m } t |  | ƒ r+ |  g }  n  g  |  D]7 } t | | ƒ rc t | d ƒ rc t | ƒ n | ^ q2 }  x9 |  D]1 } t | | ƒ sv t d t | ƒ j ƒ ‚ qv qv Wˆ  d k rÊ |  d j	 ƒ  ‰  n  t
 ˆ  ƒ ‰  | d t |  Œ  ‰ t d „  |  Dƒ ƒ } | j ‡  ‡ f d †  t |  ƒ Dƒ ƒ | d k s>| d k rXd g t |  ƒ d	 } n7 t | ƒ } t | ƒ t |  ƒ d	 k rt d
 ƒ ‚ n  t | ˆ ˆ  | ƒ } | d k rØd d l m } | | ƒ } | | _ n  | S(   sÖ   Create Dask DataFrame from many Dask Delayed objects

    Parameters
    ----------
    dfs : list of Delayed
        An iterable of ``dask.delayed.Delayed`` objects, such as come from
        ``dask.delayed`` These comprise the individual partitions of the
        resulting dataframe.
    $META
    divisions : tuple, str, optional
        Partition boundaries along the index.
        For tuple, see https://docs.dask.org/en/latest/dataframe-design.html#partitions
        For string 'sorted' will compute the delayed values to find index
        values.  Assumes that the indexes are mutually sorted.
        If None, then won't use index information
    prefix : str, optional
        Prefix to prepend to the keys.
    i    (   t   Delayedt   keys   Expected Delayed object, got %st   -c         s` s   |  ] } | j  Vq d  S(   N(   Rˆ   (   R   R•   (    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys	   <genexpr>  s    c         ` s4   i  |  ]* \ } } t  | j ˆ  d  f ˆ | f “ q S(   t   from_delayed(   R   R¡   (   R   R   R•   (   RC   R   (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pys
   <dictcomp>  s   	R-   i   s+   divisions should be a tuple of len(dfs) + 1i   (   t   compute_divisionsN(   t   dask.delayedR    R'   t   hasattrR   RN   Rz   t   __name__R&   Rk   R   R   R   Rš   RS   R3   R?   R$   R   t   shuffleR¤   RD   (	   t   dfsRC   RD   t   prefixR    R•   RF   t   divsR¤   (    (   RC   R   s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyR£   î  s6    Ac         C` sb  | d k | d k k r' t d ƒ ‚ n  | rF t t |  ƒ | ƒ } n  d g } |  d g } x¼ t t d t |  ƒ | ƒ ƒ D]œ } | | d k r— q{ n  x< | d t |  ƒ k  rÕ |  | d |  | k rÕ | d 7} qš W| j |  | ƒ | t |  ƒ d k r
| d 7} n  | j | ƒ q{ W| d t |  ƒ k rX| j t |  ƒ ƒ | j |  d ƒ n  | | f S(   sZ   Find division locations and values in sorted list

    Examples
    --------

    >>> L = ['A', 'B', 'C', 'D', 'E', 'F']
    >>> sorted_division_locations(L, chunksize=2)
    (['A', 'C', 'E', 'F'], [0, 2, 4, 6])

    >>> sorted_division_locations(L, chunksize=3)
    (['A', 'D', 'F'], [0, 3, 6])

    >>> L = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'C']
    >>> sorted_division_locations(L, chunksize=3)
    (['A', 'B', 'C'], [0, 4, 8])

    >>> sorted_division_locations(L, chunksize=2)
    (['A', 'B', 'C'], [0, 4, 8])

    >>> sorted_division_locations(['A'], chunksize=2)
    (['A', 'A'], [0, 1])
    s;   Exactly one of npartitions and chunksize must be specified.i    iÿÿÿÿi   N(   R&   R$   R   R3   R*   R5   R‡   (   t   seqRT   RB   t	   positionst   valuest   pos(    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyRR   (  s&    	%1(9   t
   __future__R    R   R   t   mathR   t   operatorR   Rl   t	   threadingR   t   pandasR2   t   numpyR    t   toolzR   t   baseR   t   compatibilityR   R	   t    R
   R<   R   t   coreR   R   R   R   R   R¨   R   t   utilsR   R   R   R   R   R^   R&   R;   RG   RQ   RX   Ry   R\   R>   R‘   t   FalseR–   R   RŸ   R£   RR   t   __doc__(    (    (    s3   lib/python2.7/site-packages/dask/dataframe/io/io.pyt   <module>   s@   (	.%`KEV			90