ó
{Udc           @   s˜  d  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
 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 d d
 l m Z e r#d d l m Z m Z m Z d d l m Z d d l m Z d d l  m! Z! n  e j" e# ƒ Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d e+ f d „  ƒ  YZ, d e+ f d „  ƒ  YZ- d S(   s)   Download files with progress indicators.
iÿÿÿÿN(   t   CONTENT_CHUNK_SIZE(   t   DownloadProgressProvider(   t   NetworkConnectionError(   t   PyPI(   t   is_from_cache(   t   HEADERSt   raise_for_statust   response_chunks(   t   format_sizet   redact_auth_from_urlt   splitext(   t   MYPY_CHECK_RUNNING(   t   Iterablet   Optionalt   Tuple(   t   Response(   t   Link(   t
   PipSessionc         C   s7   y t  |  j d ƒ SWn t t t f k
 r2 d  SXd  S(   Ns   content-length(   t   intt   headerst
   ValueErrort   KeyErrort	   TypeErrort   None(   t   resp(    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   _get_http_response_size   s    c         C   s  t  |  ƒ } | j t j k r* | j } n	 | j } t | ƒ } | r` d j | t | ƒ ƒ } n  t	 |  ƒ r t
 j d | ƒ n t
 j d | ƒ t
 j ƒ  t j k r­ t } n? t	 |  ƒ rÂ t } n* | sÑ t } n | d k ræ t } n t } t |  t ƒ } | s| St | d | ƒ| ƒ S(   Ns   {} ({})s   Using cached %ss   Downloading %si(   iè  t   maxi@œ  (   R   t   netlocR   t   file_storage_domaint   show_urlt   url_without_fragmentR	   t   formatR   R   t   loggert   infot   getEffectiveLevelt   loggingt   INFOt   Falset   TrueR   R    R   (   R   t   linkt   progress_bart   total_lengtht   urlt
   logged_urlt   show_progresst   chunks(    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   _prepare_download%   s2    					c         C   s   t  j j |  ƒ S(   sJ   
    Sanitize the "filename" value from a Content-Disposition header.
    (   t   ost   patht   basename(   t   filename(    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   sanitize_content_filenameQ   s    c         C   sC   t  j |  ƒ \ } } | j d ƒ } | r9 t | ƒ } n  | pB | S(   sƒ   
    Parse the "filename" value from a Content-Disposition header, and
    return the default filename if the result is empty.
    R2   (   t   cgit   parse_headert   getR3   (   t   content_dispositiont   default_filenamet   _typet   paramsR2   (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   parse_content_dispositionY   s
    c         C   sÉ   | j  } |  j j d ƒ } | r3 t | | ƒ } n  t | ƒ d } | s} t j |  j j d d ƒ ƒ } | r} | | 7} q} n  | rÅ | j |  j k rÅ t j	 j |  j ƒ d } | rÅ | | 7} qÅ n  | S(   so   Get an ideal filename from the given HTTP response, falling back to
    the link filename if not provided.
    s   content-dispositioni   s   content-typet    (
   R2   R   R6   R;   R
   t	   mimetypest   guess_extensionR*   R/   R0   (   R   R'   R2   R7   t   ext(    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   _get_http_response_filenameh   s    	c         C   sB   | j  j d d ƒ d } |  j | d t d t ƒ} t | ƒ | S(   Nt   #i   i    R   t   stream(   R*   t   splitR6   R   R&   R   (   t   sessionR'   t
   target_urlR   (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   _http_get_download€   s    
t
   Downloaderc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   _sessiont   _progress_bar(   t   selfRD   R(   (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   __init__‰   s    	c         C   së   y t  |  j | ƒ } WnD t k
 r\ } | j d k	 s= t ‚ t j d | j j | ƒ ‚  n Xt	 | | ƒ } t
 j j | | ƒ } t | | |  j ƒ } t | d ƒ % } x | D] }	 | j |	 ƒ q¯ WWd QX| j j d d ƒ }
 | |
 f S(   s.   Download the file given by link into location.s   HTTP error %s while getting %st   wbNs   Content-TypeR<   (   RF   RH   R   t   responseR   t   AssertionErrorR    t   criticalt   status_codeR@   R/   R0   t   joinR.   RI   t   opent   writeR   R6   (   RJ   R'   t   locationR   t   eR2   t   filepathR-   t   content_filet   chunkt   content_type(    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   __call__’   s    (   t   __name__t
   __module__RK   RZ   (    (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyRG   ˆ   s   		t   BatchDownloaderc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   RH   RI   (   RJ   RD   R(   (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyRK   «   s    	c         c   s
  x| D]û } y t  |  j | ƒ } WnD t k
 ri } | j d k	 sJ t ‚ t j d | j j | ƒ ‚  n Xt	 | | ƒ } t
 j j | | ƒ } t | | |  j ƒ } t | d ƒ % }	 x | D] }
 |	 j |
 ƒ q¼ WWd QX| j j d d ƒ } | j | | f f Vq Wd S(   s0   Download the files given by links into location.s   HTTP error %s while getting %sRL   Ns   Content-TypeR<   (   RF   RH   R   RM   R   RN   R    RO   RP   R@   R/   R0   RQ   R.   RI   RR   RS   R   R6   R*   (   RJ   t   linksRT   R'   R   RU   R2   RV   R-   RW   RX   RY   (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyRZ   ´   s"    (   R[   R\   RK   RZ   (    (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyR]   ©   s   		(.   t   __doc__R4   R#   R=   R/   t   pip._vendor.requests.modelsR    t   pip._internal.cli.progress_barsR   t   pip._internal.exceptionsR   t   pip._internal.models.indexR   t   pip._internal.network.cacheR   t   pip._internal.network.utilsR   R   R   t   pip._internal.utils.miscR   R	   R
   t   pip._internal.utils.typingR   t   typingR   R   R   R   t   pip._internal.models.linkR   t   pip._internal.network.sessionR   t	   getLoggerR[   R    R   R.   R3   R;   R@   RF   t   objectRG   R]   (    (    (    sl   /var/www/html/phendo-backend/phendo_python/env/lib/python2.7/site-packages/pip/_internal/network/download.pyt   <module>   s4   		,				!