

\c           @   s'  d  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 Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z y d d l Z Wn e k
 r d d l Z n Xd d l m Z d d l m Z m Z m 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  m! Z! m" Z" m# Z$ e" rad d l m% Z% n  d d l& m' Z' m( Z( m) Z) m* Z* m+ Z+ d	 g Z, d
 Z- d	 e. f d     YZ/ d e. f d     YZ0 d e. f d     YZ1 d e. f d     YZ2 e2 e  Z3 d   Z4 d   Z5 e6 d  Z7 d   Z8 d S(   s!   Routines related to PyPI, indexesiN(   t   logger(   t   Inft   normalize_namet   splitext(   t   DistributionNotFoundt   BestVersionAlreadyInstalled(   t   WindowsErrort   BytesIOt   Queuet   urlparset   URLErrort	   HTTPErrort   ut   productt   url2pathnamet   sslt   Empty(   t   CertificateError(   t   urlopent   path_to_url2t   url_to_patht   geturlt   Urllib2HeadRequestt   PackageFinders   last.pypi.python.orgc           B   s   e  Z d  Z e d d d  Z d   Z d   Z d   Z d   Z	 d   Z
 e j   Z d   Z e j d  Z e j d	 e j  Z e j d
  Z d   Z d   Z d   Z d   Z d   Z d d d  Z RS(   s   This finds packages.

    This is meant to match easy_install's technique for looking for
    packages, by reading pages and looking for appropriate links
    c         C   s{   | |  _  | |  _ g  |  _ t   |  _ t   |  _ | rn |  j | |  |  _ t	 j
 d d j |  j   n	 g  |  _ d  S(   Ns   Using PyPI mirrors: %ss   , (   t
   find_linkst
   index_urlst   dependency_linkst	   PageCachet   cachet   sett   logged_linkst   _get_mirror_urlst   mirror_urlsR    t   infot   join(   t   selfR   R   t   use_mirrorst   mirrorst   main_mirror_url(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __init__-   s    			 c         C   s   |  j  j |  d  S(   N(   R   t   extend(   R#   t   links(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   add_dependency_links;   s    c   	         sG  g    g      f d   } x| D]} t  j j |  } | j d  } | |  j k } | sg | r,| rv | } n t |  } | r t  j j |  r t  j j |  } xz t  j |  D] } | t  j j	 | |   q Wq9| r
t  j j |  r
 j
 |  q9t  j j |  r9| |  q9q%  j
 |  q% W   f S(   st   
        Sort locations into "files" (archives) and "urls", and return
        a pair of lists (files,urls)
        c            sL   t  |   } t j | d t d d k r;  j |  n   j |  d  S(   Nt   stricti    s	   text/html(   R   t	   mimetypest
   guess_typet   Falset   append(   t   patht   url(   t   filest   urls(    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt	   sort_pathK   s    s   file:(   t   osR0   t   existst
   startswithR   R   t   isdirt   realpatht   listdirR"   R/   t   isfile(	   R#   t	   locationsR4   R1   t   is_local_patht   is_file_urlt   is_find_linkR0   t   item(    (   R2   R3   sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   _sort_locationsB   s*    	 c            sq    f d   } | j    d  } |  j r t | |  j d   } |  j | |  } | d  k r |  j t |  j d    |  p | j    q n  |  j |  j }   d  k	 r g  | D] } | |  ^ q |  j } n t |  j  } | j	 |  j
  xH | j D]= }	   d  k	 r | d  k	 r t j | j |	  g | } q q W|  j |  \ }
 } g  | D] } t |  ^ qZ} t j d |  x | D] } t j d |  qWg  } | j	 |  j g  |  j D] } t | d  ^ q| j j     g  } xy |  j | |  D]e } t j d | j  t j d 7_ z) | j	 |  j | j | j j     Wd  t j d 8_ XqWt |  j g  |  j
 D] } t |  ^ q| j j     } | rt j d d	 j g  | D] \ } } }	 | j ^ q  n  t |  j g  |
 D] } t |  ^ q| j j     } | rg| rg| rg| rgt j d
 |  t d |   n  g  } | j d  k	 r| j j t | j j f g } n  | r| j d t   t j d d	 j g  | D] \ } } }	 t! | j  ^ q  n  | | | | | } g  } x | D] \ } } }	 |	 | j" k rt j d | |	 d j g  | j" j# D] } d j |  ^ qX f  qn  | j$ | | |	 f  qWt% | d d   d t  } t& g  | D]! \ } } }	 | t k r| ^ q } | rN| rN| d d t k r%t j d | j j  n% t j d | j j | d d f  d  S| st j d | d	 j g  | D] \ } } }	 |	 ^ qm f  t d |   n  | d d t k rt j d | j j d	 j g  | d D] \ } } }	 |	 ^ q pd f  t'  n  t( |  d k ret j d | d d d	 j g  | D] \ } } }	 |	 ^ q? f  n  | d d S(   Nc            s2   t  j |     } | j d  s. | d } n  | S(   Nt   /(   t	   posixpathR"   t   endswith(   R1   t   loc(   t   url_name(    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   mkurl_pypi_urll   s    i    s#   URLs to search for versions for %s:s   * %ss   -fs   Analyzing links from page %si   s   dependency_links found: %ss   , s<   Could not find any downloads that satisfy the requirement %ss$   No distributions at all found for %st   reverses   Local files found: %ss-   Ignoring link %s, version %s doesn't match %st   ,t    t   keyc         S   s   |  d S(   Ni    (    (   t   v(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   <lambda>   s    i   sL   Existing installed version (%s) is most up-to-date and satisfies requirementsU   Existing installed version (%s) satisfies requirement (most up-to-date version is %s)sN   Could not find a version that satisfies the requirement %s (from versions: %s)s,   No distributions matching the version for %ss=   Installed version (%s) is most up-to-date (past versions: %s)t   nones)   Using version %s (newest of versions: %s)()   RF   t   NoneR   t   Linkt	   _get_paget   _find_url_nameR    R   t   listR(   R   t   absolute_versionsRC   R"   R1   RA   R    t   debugt   _package_versionst   namet   lowert
   _get_pagest   indentR)   R!   t   fatalR   t   satisfied_byt   parsed_versiont   InfLinkt   versiont   sortt   TrueR   t   reqt   specsR/   t   sortedt   boolR   t   len(   R#   Rb   t   upgradeRG   t   main_index_urlt   paget   all_index_urlsR1   R<   R_   t   file_locationst   url_locationst   locationt   found_versionst   page_versionst   dependency_versionst   parsedt   linkt   file_versionst   installed_versiont   all_versionst   applicable_versionsR]   t   st   existing_applicable(    (   RF   sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   find_requirementj   s    
		1&#5)	4<	1!B	<4			3	C		>c         C   s   | j  j d  s$ | j  d 7_  n  |  j | |  } | d k rW t j d |  d St | j  } xY | j D]N } t	 j
 | j j d   } | t |  k rp t j d | | f  | Sqp Wd S(   s   Finds the true URL name of a package, when the given name isn't quite correct.
        This is usually used to implement case-insensitivity.RB   s   Cannot fetch index base URL %sNs!   Real name of requirement %s is %s(   R1   RD   RQ   RO   R    R[   R   RF   R)   RC   t   basenameR0   t   rstript   notify(   R#   t	   index_urlRF   Rb   Ri   t	   norm_nameRr   t   base(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyRR      s    c   
   	   C   s   t    } x | D] } | j |  q Wg  } t   } g  } xn t t d t |    D]Q } t j d |  j d | | | | f  }	 |	 j	 t
  | j |	  |	 j   qX Wx | D] }	 |	 j   q W| S(   sx   Yields (page, page_url) from the given locations, skipping
        locations that have errors, and adding homepage linksi
   t   targett   args(   R   t   putR   t   ranget   minRf   t	   threadingt   Threadt   _get_queued_paget	   setDaemonRa   R/   t   startR"   (
   R#   R<   Rb   t   pending_queueRm   t   donet   seent   threadst   it   t(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyRY      s    		"'c         C   s   x y | j  t  } Wn t k
 r* d  SX| | k r= q n  | j |  |  j | |  } | d  k rn q n  | j |  x' | j d d  D] } | j |  q Wq d  S(   Nt   relst   homepage(   s   homepage(	   t   getR.   t
   QueueEmptyt   addRQ   RO   R/   t	   rel_linksR   (   R#   Rb   R   R   R   Rm   Ri   Rr   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR      s    s   #egg=([^&]*)s   ([a-z0-9_.]+)-([a-z0-9_.-]+)s   -py([123]\.?[0-9]?)$c         C   sq   g  g  } } t    } xP | D]H } | | k r | j |  | j rU | j |  qe | j |  q q W| | S(   sg   Returns elements of links in order, non-egg links first, egg links second, while eliminating duplicates(   R   R   t   egg_fragmentR/   (   R#   R)   t   eggst   no_eggsR   Rr   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   _sort_links  s    		c         c   s@   x9 |  j  |  D]( } x |  j | |  D] } | Vq) Wq Wd  S(   N(   R   t   _link_package_versions(   R#   R)   t   search_nameRr   RL   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyRV     s    c         C   s  | j  r | j  } n| j   \ } } | sd | |  j k r` t j d |  |  j j |  n  g  S| j d  r | d  } d | } n  | d k r | |  j k r t j d | | f  |  j j |  n  g  Sd	 | j k r%| d k r%| |  j k r!t j d
 |  |  j j |  n  g  S|  j | | |  } | d k rat j d | | f  g  S|  j
 j |  } | r| | j    } | j d  } | t j d  k rt j d |  g  Sn  t j d | | f  t j |  | | f g S(   s   
        Return an iterable of triples (pkg_resources_version_key,
        link, python_version) that can be extracted from the given
        link.

        Meant to be overridden by subclasses, not called by clients.
        s   Skipping link %s; not a files   .taris   .tar.gzs   .tar.bz2s   .tgzs   .zips,   Skipping link %s; unknown archive format: %st   macosx10s   Skipping link %s; macosx10 ones-   Skipping link %s; wrong project name (not %s)i   i   s/   Skipping %s because Python version is incorrects   Found link %s, version: %s(   s   .tar.gzs   .tar.bz2s   .tars   .tgzs   .zipN(   R   R   R   R    RU   R   RD   R0   t   _egg_info_matchesRO   t   _py_version_ret   searchR   t   groupt   sysR_   t   pkg_resourcest   parse_version(   R#   Rr   R   t   egg_infot   extR_   t   matcht
   py_version(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   "  sH    	
c         C   s   |  j  j |  } | s- t j d |  d  S| j d  j   } | j d d  } | j   d } | j |  r | j d  t	 |  Sd  Sd  S(   Ns%   Could not parse version from link: %si    t   _t   -(
   t   _egg_info_reR   R    RU   RO   R   RX   t   replaceR7   Rf   (   R#   R   R   Rr   R   RW   t   look_for(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   Q  s    c         C   s   t  j | | d |  j S(   NR   (   t   HTMLPaget   get_pageR   (   R#   Rr   Rb   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyRQ   `  s    c         C   s   | s" t  |  } t j |  n  t   } x | D] } | j d  } t g  d d d g D] } | j |  ^ qZ  s d | } n  | j d  s d | } n  | j | d  q2 Wt	 |  S(   sq   Retrieves a list of URLs from the main mirror DNS entry
        unless a list of mirror URLs are passed.
        RB   s   http://s   https://s   file://s	   http://%ss   /simples	   %s/simple(
   t   get_mirrorst   randomt   shuffleR   R{   t   anyR7   RD   R   RS   (   R#   R%   R&   R    t
   mirror_urlt   scheme(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   c  s    	1N(   t   __name__t
   __module__t   __doc__R.   RO   R'   R*   RA   Ry   RR   RY   R   t   Lockt	   _log_lockR   t   ret   compilet   _egg_fragment_ret   IR   R   R   RV   R   R   RQ   R   (    (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   &   s$   		(	k						/		R   c           B   sV   e  Z d  Z d Z d   Z d   Z d   Z d   Z e d  Z	 d   Z
 d   Z RS(	   s   Cache of HTML pagesi   c         C   s   i  |  _  i  |  _ i  |  _ d  S(   N(   t	   _failurest   _pagest	   _archives(   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR'   ~  s    		c         C   s   |  j  j | d  |  j k S(   Ni    (   R   R   t   failure_limit(   R#   R1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   too_many_failures  s    c         C   s   |  j  j |  S(   N(   R   R   (   R#   R1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s    c         C   s   |  j  j | t  S(   N(   R   R   R.   (   R#   R1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt
   is_archive  s    c         C   s   | |  j  | <d  S(   N(   R   (   R#   R1   t   value(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   set_is_archive  s    c         C   s$   |  j  j | d  | |  j  | <d  S(   Ni    (   R   R   (   R#   R1   t   level(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   add_page_failure  s    c         C   s"   x | D] } | |  j  | <q Wd  S(   N(   R   (   R#   R3   Ri   R1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   add_page  s    (   R   R   R   R   R'   R   R   R   Ra   R   R   R   (    (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   y  s   					R   c           B   s  e  Z d  Z e j d e j  Z e j d e j  Z e j d e j  Z e j d e j e j	 B Z
 e j d e j  Z d d  Z d   Z e d e d   Z e d	    Z e d
    Z e d    Z d d  Z d d  Z d   Z e j d e j  Z d   Z RS(   s'   Represents one page, along with its URLs   <th>\s*home\s*pages   <th>\s*download\s+urls&   <[^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*>s(   href=(?:"([^"]*)"|'([^']*)'|([^>\s\n]*))s!   <base\s+href\s*=\s*['"]?([^'">]+)c         C   s   | |  _  | |  _ | |  _ d  S(   N(   t   contentR1   t   headers(   R#   R   R1   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR'     s    		c         C   s   |  j  S(   N(   R1   (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __str__  s    c      
   C   s  | j  } | j d d  d } | j |  r2 d  Sd d l m } xT | j D]I } | j   j |  rL | t	 |  d k rL t
 j d t    d  SqL W| d  k	 r | j |  } | d  k	 r | Sn  y| r| d  k	 r | j |  r d  Sn  | j }	 x d d	 d
 d d g D]w }
 |	 j |
  r|  j |  } | j   j d  rNPqt
 j d | | f  | d  k	 r| j |  n  d  SqqWn  t
 j d |  t j |  \ } } } } } } | d k r't j j t |   r'| j d  s| d 7} n  t j | d  } t
 j d |  n  t |  } t |  } | j   } | j   } | j d d   } | d  k	 r| d k rt j d t  |   j   } n  | d k rt! j" |  } qn  |  t# |  | |  } Wnt$ t% t& j' t& j( t) t* f k
 r}t+ j,   d } t- |  } t. | t& j'  rJt
 j } d } d } n t. | t%  rt/ rt0 | d  rt. | j1 t/ j2  st. | j1 t3  rd | } t
 j4 } n	 t
 j } t0 | d  rt. | j1 t& j'  rd } d } q/d } n? t. | t$  r | j5 d k r t
 j } d } n t
 j } d } | d | | f  | d | j  | f  | d  k	 ry| j6 | |  n  d  SX| d  k	 r| j7 | | g |  n  | S(   Nt   #i   i    i(   t
   VcsSupports   +:s&   Cannot look at %(scheme)s URL %(link)ss   .tars   .tar.gzs   .tar.bz2s   .tgzs   .zips	   text/htmls,   Skipping page %s because of Content-Type: %ss   Getting page %st   fileRB   s
   index.htmls#    file: URL is directory, getting %ss   Content-Encodingt   gzipt   fileobjt   deflates	   timed outt   reasons6   There was a problem confirming the ssl certificate: %si   i  s   Could not fetch URL %s: %ss7   Will skip URL %s when looking for download links for %s(8   R1   t   splitR   RO   t   pip.vcsR   t   schemesRX   R7   Rf   R    RU   t   localsR   R   t   filenameRD   t   _get_content_typeR   R	   R5   R0   R8   R   t   urljoinR   R   R!   t   readR   R   t   GzipFileR   t   zlibt
   decompressR   R   R
   t   sockett   timeoutt   errort   OSErrorR   R   t   exc_infot   strt
   isinstanceR   t   hasattrR   t   SSLErrorR   R|   t   codeR   R   (   t   clsRr   Rb   R   t   skip_archivesR1   R   R   t   instR   t   bad_extt   content_typet   netlocR0   t   paramst   queryt   fragmentt   respt   real_urlR   t   contentst   encodingt   et   desct   log_methR   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s    	+	!$!%		<
	$					c         C   s   t  j |   \ } } } } } | d k r. d St |  d i | d 6} t |  } zH t | d  r | j d	 k r | d k r d S| j   j d
 d  SWd | j   Xd S(   s;   Get the Content-Type of the given url, using a HEAD requestt   httpt   httpst   ftpt   ftpsRJ   R   t   HostR   i   s   content-typeN(   s   https   httpss   ftpR   (   s   ftpR   (	   R	   t   urlsplitR   R   R   R   R!   R   t   close(   R1   R   R   R0   R   R   Rb   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s    *c         C   sU   t  |  d  sN |  j j |  j  } | r? | j d  |  _ qN |  j |  _ n  |  j S(   Nt	   _base_urli   (   R   t   _base_reR   R   R   R   R1   (   R#   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   base_url  s    c         c   s}   xv |  j  j |  j  D]_ } | j d  pF | j d  pF | j d  } |  j t j |  j |   } t | |   Vq Wd S(   s   Yields all links in the pagei   i   i   N(	   t   _href_ret   finditerR   R   t
   clean_linkR	   R   R  RP   (   R#   R   R1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR)   #  s    -R   t   downloadc         c   s?   x |  j  |  D] } | Vq Wx |  j   D] } | Vq, Wd  S(   N(   t   explicit_rel_linkst   scraped_rel_links(   R#   R   R1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   +  s    	c         c   s   x |  j  j |  j  D] } | j d  j   j   } x! | D] } | | k r> Pq> q> Wq |  j j | j d   } | s q n  | j d  p | j d  p | j d  } |  j t	 j
 |  j |   } t | |   Vq Wd S(   s)   Yields all links with the given relationsi   i    i   i   N(   t   _rel_reR  R   R   RX   R   R  R   R  R	   R   R  RP   (   R#   R   R   t
   found_relst   relR1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR  1  s    -c         c   s   x |  j  |  j f D] } | j |  j  } | s7 q n  |  j j |  j d | j   } | sd q n  | j d  p | j d  p | j d  } | s q n  |  j t j	 |  j
 |   } t | |   Vq Wd  S(   Nt   posi   i   i   (   t   _homepage_ret   _download_reR   R   R  t   endR   R  R	   R   R  RP   (   R#   t   regexR   t
   href_matchR1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR  A  s    !-s   [^a-z0-9$&+,/:;=?@.#%_\\|-]c         C   s   |  j  j d   |  S(   s   Makes sure a link is fully encoded.  That is, if a ' ' shows up in
        the link, it will be rewritten to %20 (while not over-quoting
        % or other characters).c         S   s   d t  |  j d   S(   Ns   %%%2xi    (   t   ordR   (   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyRM   V  s    (   t	   _clean_ret   sub(   R#   R1   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR  Q  s    	N(   s   homepages   download(   s   homepages   download(   R   R   R   R   R   R   R  R  R  t   SR  R   RO   R'   R   t   classmethodRa   R   t   staticmethodR   t   propertyR  R)   R   R  R  R  R  (    (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s$   	\
	RP   c           B   s  e  Z d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z e d
    Z e d    Z e d    Z d   Z e d    Z e j d  Z e d    Z e j d  Z e d    Z e d    Z e d    Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   R1   t
   comes_from(   R#   R1   R  (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR'   [  s    	c         C   s.   |  j  r d |  j |  j  f St |  j  Sd  S(   Ns   %s (from %s)(   R  R1   R   (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   _  s    	c         C   s   d |  S(   Ns	   <Link %s>(    (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __repr__e  s    c         C   s   |  j  | j  k S(   N(   R1   (   R#   t   other(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __eq__h  s    c         C   s   |  j  | j  k S(   N(   R1   (   R#   R  (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __ne__k  s    c         C   s   |  j  | j  k  S(   N(   R1   (   R#   R  (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __lt__n  s    c         C   s   |  j  | j  k S(   N(   R1   (   R#   R  (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __le__q  s    c         C   s   |  j  | j  k S(   N(   R1   (   R#   R  (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __gt__t  s    c         C   s   |  j  | j  k S(   N(   R1   (   R#   R  (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __ge__w  s    c         C   s   t  |  j  S(   N(   t   hashR1   (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   __hash__z  s    c         C   s\   t  j |  j  \ } } } } } t j | j d   p< | } | sX t d |  j   | S(   NRB   s   URL %r produced no filename(   R	   R   R1   RC   Rz   R{   t   AssertionError(   R#   R   R   R0   RW   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR   }  s    !c         C   s   t  j |  j  d S(   Ni    (   R	   R   R1   (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s    c         C   s   t  j |  j  d S(   Ni   (   R	   R   R1   (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR0     s    c         C   s   t  t j |  j j d    S(   NRB   (   R   RC   Rz   R0   R{   (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s    c         C   s=   t  j |  j  \ } } } } } t  j | | | | d  f  S(   N(   R	   R   R1   t
   urlunsplitRO   (   R#   R   R   R0   R   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   url_without_fragment  s    !s   #egg=([^&]*)c         C   s,   |  j  j |  j  } | s d  S| j d  S(   Ni   (   R   R   R1   RO   R   (   R#   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s    s2   (sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)c         C   s,   |  j  j |  j  } | r( | j d  Sd  S(   Ni   (   t   _hash_reR   R1   R   RO   (   R#   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR!    s    c         C   s,   |  j  j |  j  } | r( | j d  Sd  S(   Ni   (   R&  R   R1   R   RO   (   R#   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt	   hash_name  s    c         C   s0   t  j |  j j d d  d j d d  d  S(   NR   i   i    t   ?(   RC   Rz   R1   R   (   R#   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   show_url  s    N(   R   R   RO   R'   R   R  R  R  R  R  R  R   R"  R  R   R   R0   R   R%  R   R   R   R   R&  R!  R'  R)  (    (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyRP   Y  s*   										c         C   s;   t  |   } | j } | s1 t | j  d } n  t |  S(   sP   Get a requirement from the URL, if possible.  This looks for #egg
    in the URLi    (   RP   R   R   R   t   package_to_requirement(   R1   Rr   R   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   get_requirement_from_url  s
    	c         C   sa   t  j d |   } | r9 | j d  } | j d  } n |  } d } | rY d | | f S| Sd S(   s)   Translate a name like Foo-1.2 to Foo==1.3s   ^(.*?)-(dev|\d.*)i   i   RJ   s   %s==%sN(   R   R   R   (   t   package_nameR   RW   R_   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR*    s    c         C   s   |  d k r t }  n  d } y t j |   d } Wn t j k
 rI g  SX| s] | t k rf d } n  | j d d  } g  t | d  D] } d | | d f ^ q S(   s7  Return the list of mirrors from the last record found on the DNS
    entry::

    >>> from pip.index import get_mirrors
    >>> get_mirrors()
    ['a.pypi.python.org', 'b.pypi.python.org', 'c.pypi.python.org',
    'd.pypi.python.org']

    Originally written for the distutils2 project by Alexis Metaireau.
    i    s   z.pypi.python.orgt   .i   s   %s.%sN(   RO   t   DEFAULT_MIRROR_HOSTNAMER   t   gethostbyname_ext   gaierrorR   t   string_range(   t   hostnamet   last_mirror_hostnamet
   end_letterRw   (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR     s    		c         c   si   xb t  t |    D]N } xE t t j d | d D]* } d j |  } | V| |  k r3 d Sq3 Wq Wd S(   s   Compute the range of string between "a" and last.

    This works for simple "a to z" lists, but also for "a to zz" lists.
    t   repeati   RJ   N(   R   Rf   R   t   stringt   ascii_lowercaseR"   (   t   lastt   kt   xt   result(    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyR1    s     (9   R   R   R5   R   R   R,   RC   R   R   R   R6  R   R   t   ImportErrort   dummy_threadingt   pip.logR    t   pip.utilR   R   R   t   pip.exceptionsR   R   t   pip.backwardcompatR   R   R   R	   R
   R   R   R   R   R   R   R   R   t   pip.downloadR   R   R   R   R   t   __all__R.  t   objectR   R   R   RP   R^   R+  R*  RO   R   R1  (    (    (    sP   /data/av2000/b2b/venv/lib/python2.7/site-packages/pip-1.3-py2.7.egg/pip/index.pyt   <module>   sD   L(	 TY	
	