ó
mÜJ]c           @` s/  d  Z  d d l m Z m Z m Z m Z d d l Z e j e ƒ Z	 d d l
 m Z m Z d d l m Z m Z m Z m Z m Z m Z m Z m Z d d l m Z d d l Z d d l m Z d Z e d	 „ Z d
 „  Z e d „ Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% e d „ Z& e d „ Z' d S(   u>    Helper functions for downloading and accessing sample data.

i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   mkdirt   remove(   t   abspatht   dirnamet   existst
   expandusert   isdirt   isfilet   joint   splitext(   t   stdout(   t   urljoinu   downloadc         C` s  t  d t ƒ } t d | ƒ d } | d f | d f | d f | d f | d f | d	 f | d
 f | d f | d f | d f | d f | d f | d f | d f | d f | d f | d f | d f | d f | d f g } x* | D]" \ } } t | | | d |  ƒqä Wd S(   u<    Download larger data sets for various Bokeh examples.

    t   createu   Using data directory: %su   http://sampledata.bokeh.orgu   CGM.csvu   US_Counties.zipu   us_cities.jsonu   unemployment09.csvu   AAPL.csvu   FB.csvu   GOOG.csvu   IBM.csvu   MSFT.csvu+   WPP2012_SA_DB03_POPULATION_QUINQUENNIAL.zipu   gapminder_fertility.csvu   gapminder_population.csvu   gapminder_life_expectancy.csvu   gapminder_regions.csvu   world_cities.zipu   airports.jsonu   movies.db.zipu   airports.csvu
   routes.csvu#   haarcascade_frontalface_default.xmlt   progressN(   t   external_data_dirt   Truet   printt   _download_file(   R   t   data_dirt   s3t   filest   base_urlt   filename(    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyt   download1   s2    																			c         K` s9   d d l  m } | d d |  ƒ } | j t | ƒ |  S(   u   

    i   (   t   import_requiredu   pandasuI   %s sample data requires Pandas (http://pandas.pydata.org) to be installed(   t   dependenciesR   t   read_csvt   external_path(   t   modulet   namet   kwR   t   pd(    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyt   external_csvX   s    c         C` s!  y d d l  } Wn t k
 r/ t d ƒ ‚ n Xt d |  ƒ } t | d ƒ } y2 | j t t | d ƒ ƒ ƒ } t | d ƒ } Wn t t	 f k
 r™ n Xt
 | ƒ sþ |  s» t d ƒ ‚ n  t d	 | ƒ y t | ƒ Wqt k
 rú t d
 | ƒ ‚ qXn t | ƒ st d | ƒ ‚ n  | S(   u   

    i    NuB   'yaml' and 'pyyaml' are required to use bokeh.sampledata functionsR   u   datau   configu   sampledata_diruV   bokeh sample data directory does not exist, please execute bokeh.sampledata.download()u   Creating %s directoryu+   could not create bokeh data directory at %su    %s exists but is not a directory(   t   yamlt   ImportErrort   RuntimeErrort
   _bokeh_dirR   t	   safe_loadt   openR	   t   IOErrort	   TypeErrorR   R   R   t   OSErrorR
   (   R   R%   t	   bokeh_dirR   t   config(    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyR   `   s,    c         C` sH   t  ƒ  } t | |  ƒ } t | ƒ rD t | ƒ rD t d | ƒ ‚ n  | S(   NuR   Could not locate external data file %e. Please execute bokeh.sampledata.download()(   R   R   R   R   R'   (   R   R   t   fn(    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyR   €   s
    	c         K` s9   d d l  m } | d d |  ƒ } | j t | ƒ |  S(   u   

    i   (   R   u   pandasuI   %s sample data requires Pandas (http://pandas.pydata.org) to be installed(   R   R   R   t   package_path(   R    R!   R"   R   R#   (    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyt   package_csv‡   s    c           C` s   t  t t t ƒ d d d ƒ ƒ S(   u   

    u   ..u
   sampledatau   _data(   R   R   R   t   __file__(    (    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyt   package_dir   s    c         C` s   t  t ƒ  |  ƒ S(   u   

    (   R   R4   (   R   (    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyR1   –   s    c         C` s3   t  j r t |  d ƒ St |  d d d d d ƒSd S(   u   

    u   rbu   rt   newlineu    t   encodingu   utf8N(   t   sixt   PY2R*   (   R   (    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyt   open_csvœ   s    	c         C` s‘   t  t d ƒ d ƒ } t | ƒ sn |  s+ | St d | ƒ y t | ƒ Wq t k
 rj t d | ƒ ‚ q Xn t | ƒ s t d | ƒ ‚ n  | S(   u   

    u   ~u   .bokehu   Creating %s directoryu-   could not create bokeh config directory at %su    %s exists but is not a directory(   R   R	   R   R   R   R-   R'   R
   (   R   R.   (    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyR(   ª   s     c         C` s¢  d d l  m } d d l m } t |  | ƒ } t | | ƒ } | | ƒ } t | d ƒ µ }	 t | j d ƒ }
 t	 d | |
 f ƒ d } d } xx t
 r	| j | ƒ } | s± Pn  | t | ƒ 7} |	 j | ƒ | r’ d | | d	 |
 f } t j | ƒ t j ƒ  q’ q’ WWd
 QX| r t	 ƒ  n  t | ƒ \ } } | d k ržt | ƒ d s[| d 7} n  t	 d | ƒ | | d ƒ  } | j | | ƒ Wd
 QXt | ƒ n  d
 S(   u   

    i    (   t   urlopen(   t   ZipFileu   wbu   Content-Lengthu   Downloading: %s (%d bytes)i @  u   %10d [%6.2f%%]g      Y@Nu   .zipi   u   .csvu   Unpacking: %su   r(   t   six.moves.urllib.requestR:   t   zipfileR;   R   R   R*   t   intt   headersR   R   t   readt   lent   writeR   t   flushR   t   extractR   (   R   R   R   R   R:   R;   t   file_urlt	   file_patht   urlt   filet	   file_sizet
   fetch_sizet
   block_sizet   datat   statust	   real_namet   extt   zip_file(    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyR   »   s<    	
(   u   download((   t   __doc__t
   __future__R    R   R   R   t   loggingt	   getLoggert   __name__t   logt   osR   R   t   os.pathR   R   R   R	   R
   R   R   R   t   sysR   R7   t   six.moves.urllib_parseR   t   __all__R   R   R$   t   FalseR   R   R2   R4   R1   R9   R(   R   (    (    (    s4   lib/python2.7/site-packages/bokeh/util/sampledata.pyt   <module>	   s&   "
:	'	 						