ó
Šw>]c           @   sØ   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 m Z d  d l m Z e r¯ d  d l m Z n  e j e  Z d	 e f d
     YZ d S(   iÿÿÿÿN(   t   canonicalize_name(   t   parse(   t   PyPI(   t   HAS_TLS(   t   normalize_patht   redact_password_from_url(   t   MYPY_CHECK_RUNNING(   t   Listt   SearchScopec           B   s8   e  Z d  Z e d    Z d   Z d   Z d   Z RS(   sF   
    Encapsulates the locations that pip is configured to search.
    c         C   sÅ   g  } xT | D]L } | j  d  rL t |  } t j j |  rL | } qL n  | j |  q Wt s² xL t j | |  D]5 } t	 j
 |  } | j d k rv t j d  Pqv qv Wn  |  d | d |  S(   sQ   
        Create a SearchScope object after normalizing the `find_links`.
        t   ~t   httpssi   pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.t
   find_linkst
   index_urls(   t
   startswithR   t   ost   patht   existst   appendR   t	   itertoolst   chaint   urllib_parset   urlparset   schemet   loggert   warning(   t   clsR   R   t   built_find_linkst   linkt   new_linkt   parsed(    (    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pyt   create   s"    c         C   s   | |  _  | |  _ d  S(   N(   R   R   (   t   selfR   R   (    (    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pyt   __init__D   s    	c         C   s   g  } |  j  rS |  j  t j g k rS | j d j d j d   |  j  D    n  |  j r | j d j d j d   |  j D    n  d j |  S(   Ns   Looking in indexes: {}s   , c         s   s   |  ] } t  |  Vq d  S(   N(   R   (   t   .0t   url(    (    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pys	   <genexpr>S   s    s   Looking in links: {}c         s   s   |  ] } t  |  Vq d  S(   N(   R   (   R!   R"   (    (    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pys	   <genexpr>X   s    s   
(   R   R   t
   simple_urlR   t   formatt   joinR   (   R   t   lines(    (    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pyt   get_formatted_locationsM   s    	c            s/     f d   } g  |  j  D] } | |  ^ q S(   s²   Returns the locations found via self.index_urls

        Checks the url_name on the main (first in the list) index and
        use this url_name to produce all locations
        c            sA   t  j |  t j t      } | j d  s= | d } n  | S(   Nt   /(   t	   posixpathR%   R   t   quoteR    t   endswith(   R"   t   loc(   t   project_name(    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pyt   mkurl_pypi_urld   s    (   R   (   R   R-   R.   R"   (    (   R-   s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pyt   get_index_urls_locations\   s    (   t   __name__t
   __module__t   __doc__t   classmethodR   R    R'   R/   (    (    (    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pyR      s
   )			(   R   t   loggingR   R)   t   pip._vendor.packaging.utilsR    t   pip._vendor.six.moves.urllibR   R   t   pip._internal.models.indexR   t   pip._internal.utils.compatR   t   pip._internal.utils.miscR   R   t   pip._internal.utils.typingR   t   typingR   t	   getLoggerR0   R   t   objectR   (    (    (    s@   lib/python2.7/site-packages/pip/_internal/models/search_scope.pyt   <module>   s   