ó
>ò†[c           @@ s†  d  d l  m Z m Z m Z d  d l Z d  d l Z 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 m Z m Z m 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  d  d l! m" Z" e j# d	 ƒ Z$ d
 „  Z% d d e d „ Z' d e( f d „  ƒ  YZ) d „  Z* d e( f d „  ƒ  YZ+ e, d „ Z- d Z. d „  Z/ d S(   i    (   t   print_functiont   absolute_importt   unicode_literalsN(   t   md5(   t   parse_versioni   (   t   PackageSpect   package_specst   parse_specs(   t   get_server_apit   dirst
   load_tokent   store_tokent   remove_tokent
   get_configt
   set_configt   load_configt   get_binstart   USER_CONFIGt   USER_LOGDIRt   SITE_CONFIGt   DEFAULT_CONFIG(   t   inputu   binstarc          O@ s)   t  |  | Ž  } t j | ƒ i d d 6f S(   Nu   application/jsonu   Content-Type(   t   dictt   jsont   dumps(   t   Et   Ft   payload(    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   jencode   s    i    c         C@ s;  | ƒ  } |  j  ƒ  } | r9 | | k  r9 |  j | ƒ } n |  j | ƒ } xs | r½ | j | ƒ | r‡ | t | ƒ 8} | d k r‡ Pq‡ n  | r« | | k  r« |  j | ƒ } qK |  j | ƒ } qK W| j ƒ  } t t d t j ƒ } | | j ƒ  ƒ }	 |	 d d k r|	 d d !}	 n  |  j  ƒ  | }
 |  j	 | ƒ | |	 |
 f S(   Ni    u   encodebytesiÿÿÿÿu   
(
   t   tellt   readt   updatet   lent	   hexdigestt   getattrt   base64t   encodestringt   digestt   seek(   t   fpt   buf_sizet   sizet   hash_algorithmt   hash_objt   spost   st
   hex_digestt	   b64encodet   base64_digestt	   data_size(    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   compute_hash!   s,    		t   upload_in_chunksc           B@ s&   e  Z d d „ Z d „  Z d „  Z RS(   i   i   c         C@ s:   | |  _  | |  _ t j | j ƒ  ƒ j |  _ d |  _ d  S(   Ni    (   t   fdt	   chunksizet   ost   fstatt   filenot   st_sizet	   totalsizet	   readsofar(   t   selfR4   R5   (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   __init__?   s    		c         c@ sš   t  j j d ƒ xƒ t r• |  j j |  j ƒ } | sH t  j j d ƒ Pn  |  j t | ƒ 7_ |  j d |  j	 } t  j j d j
 d | ƒ ƒ | Vq Wd  S(   Nu
   Progress:
u   
g      Y@u   {percent:3.0f}%t   percent(   t   syst   stderrt   writet   TrueR4   R   R5   R;   R    R:   t   format(   R<   t   dataR>   (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   __iter__E   s    	c         C@ s   |  j  S(   N(   R:   (   R<   (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   __len__Q   s    i    (   t   __name__t
   __module__R=   RE   RF   (    (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyR3   >   s   	c         C@ s   t  |  ƒ } t | ƒ d  S(   N(   R3   t   IterableToFileAdapter(   R4   t   it(    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   upload_with_progressU   s    RI   c           B@ s&   e  Z d  „  Z d d „ Z d „  Z RS(   c         C@ s"   t  | ƒ |  _ t | ƒ |  _ d  S(   N(   t   itert   iteratorR    t   length(   R<   t   iterable(    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyR=   [   s    iÿÿÿÿc         C@ s   t  |  j d ƒ S(   Nt    (   t   nextRM   (   R<   R)   (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyR   _   s    c         C@ s   |  j  S(   N(   RN   (   R<   (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyRF   b   s    (   RG   RH   R=   R   RF   (    (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyRI   Z   s   	c         C@ s©   | r d n d } x t  d |  | f ƒ } | j ƒ  d
 k rH | rH t S| j ƒ  d k re | re t S| j ƒ  d k r{ t S| j ƒ  d k r‘ t St j j d	 ƒ q Wd  S(   Nu   [Y|n]u   [y|N]u   %s %s: u   yu   yesu    u   nu   nou   please enter yes or no
(   u   yu   yes(   u    u   nu   no(   u    u   yu   yes(   u   nu   no(   R   t   lowerRB   t   FalseR?   R@   RA   (   t   promptt   defaultt   default_strt   inpt(    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt
   bool_inputf   s    i   c         @ s\   t  j  ƒ  ‰ |  j s' |  j t j k rI ‡  f d †  ‰  t  j  ƒ  ˆ  _ ˆ  S‡ f d †  ‰  ˆ  S(   Nc         @ sj   | r d |  | n d } t  j  ƒ  ˆ  j t k rf t d | d d ƒt j j ƒ  t  j  ƒ  ˆ  _ n  d  S(   Ng      Y@i    u	   | %.2f%% t   endu    (   t   timet   last_outputt   WAIT_SECONDSt   printR?   t   stdoutt   flush(   t   currt   totalt   perc(   t   callback(    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyRc   }   s
    c   
      @ sÆ   t  j  ƒ  } | ˆ  } | |  } |  rE | rE d | |  | d } n d } |  d } | d } | rs d |  | n d } d }	 t j j |	 t ƒ  ƒ t j j ƒ  |  | k rÂ t j j d ƒ n  d  S(   Ng      ð?g      N@i    i   g      Y@uM    uploaded %(curr_kb)i of %(total_kb)iKb: %(perc).2f%% ETA: %(eta).1f minutesu   
(   RZ   R?   R@   RA   t   localsR_   (
   R`   Ra   t	   curr_timet
   time_deltat   remaint   etat   curr_kbt   total_kbRb   t   msg(   t
   start_time(    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyRc   ‰   s    



(   RZ   t   no_progresst	   log_levelt   loggingt   INFOR[   (   t   args(    (   Rc   Rl   s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   upload_print_callbacky   s    (0   t
   __future__R    R   R   R#   R   Ro   R6   R?   RZ   t   hashlibR   t   pkg_resourcesR   t   pvt   specR   R   R   t   configR   R	   R
   R   R   R   R   R   R   R   R   R   R   t	   six.movesR   t	   getLoggert   loggerR   t   NoneR2   t   objectR3   RK   RI   RB   RX   R\   Rr   (    (    (    s\   lib/python2.7/site-packages/anaconda_client-1.7.2-py2.7.egg/binstar_client/utils/__init__.pyt   <module>   s(   X		