<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
ž
7’ReÓ  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 m Z d d l m	 Z	 m
 Z
 m Z m Z d d l m Z m Z m Z m Z m Z d d l m Z 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  d d
 l! m" Z" m# Z# m$ Z$ d d l% m& Z& d g Z' d Z( i d g d 6Z) Gd d „  d e* ƒ Z+ Gd d „  d e* ƒ Z, Gd d „  d e* ƒ Z- Gd d „  d e* ƒ Z. e. e	 ƒ Z/ d d „  Z0 d d „  Z1 d S(   u!   Routines related to PyPI, indexesi    N(   u   logger(   u   Infu   normalize_nameu   splitextu   is_prerelease(   u   DistributionNotFoundu   BestVersionAlreadyInstalledu   InstallationErroru   InvalidWheelFilenameu   UnsupportedWheel(   u   urlparseu   url2pathname(   u
   PipSessionu   url_to_pathu   path_to_url(   u   Wheelu	   wheel_ext(   u   supported_tagsu   supported_tags_noarchu   get_platform(   u   html5libu   requestsu   pkg_resources(   u   SSLErroru   PackageFinderu   last.pypi.python.orgu   httpsu   httpc          	   B   s
  |  Ee  Z d  Z d Z d" g  g  d# d# d# d! d d „ Z d d „  Z d d „  Z	 d d	 „  Z
 d
 d „  Z d d „  Z d d „  Z d d „  Z e j d ƒ Z e j d e j ƒ Z e j d ƒ Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d  „  Z d! S($   u   PackageFinderuŸ   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 ƒ  |  _ | |  _ t d d „  | Dƒ ƒ |  _ t d d „  | Dƒ ƒ |  _	 |  j |  j	 O_ | |  _
 d |  _ d |  _ | |  _ | |  _ d |  _ |	 pÈ t ƒ  |  _ d  S(   Nc             s   s   |  ] } t  | ƒ Vq d  S(   N(   u   normalize_name(   u   .0u   n(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu	   <genexpr>4   s    u)   PackageFinder.__init__.<locals>.<genexpr>c             s   s   |  ] } t  | ƒ Vq d  S(   N(   u   normalize_name(   u   .0u   n(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu	   <genexpr>8   s    F(   u
   find_linksu
   index_urlsu   dependency_linksu	   PageCacheu   cacheu   setu   logged_linksu	   use_wheelu   allow_externalu   allow_unverifiedu   allow_all_externalu   Falseu   need_warn_externalu   need_warn_unverifiedu   allow_all_prereleasesu   process_dependency_linksu   _have_warned_dependency_linksu
   PipSessionu   session(
   u   selfu
   find_linksu
   index_urlsu	   use_wheelu   allow_externalu   allow_unverifiedu   allow_all_externalu   allow_all_prereleasesu   process_dependency_linksu   session(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __init__&   s"    										u   PackageFinder.__init__c             C   sE   |  j  rA |  j s. t j d d ƒ d |  _ n  |  j j | ƒ n  d  S(   Nu   1.6up   Dependency Links processing has been deprecated with an accelerated time schedule and will be removed in pip 1.6T(   u   process_dependency_linksu   _have_warned_dependency_linksu   loggeru
   deprecatedu   Trueu   dependency_linksu   extend(   u   selfu   links(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   add_dependency_linksS   s    		u"   PackageFinder.add_dependency_linksc       	         sJ  g  ‰  g  ‰ ‡  ‡ f d d †  } x| D]} t  j j | ƒ } | j d ƒ } | |  j k } | sj | r/| ry | } n t | ƒ } | rå t  j j | ƒ rå t  j j | ƒ } xz t  j | ƒ D] } | t  j j	 | | ƒ ƒ q¿ Wq<| rt  j j | ƒ rˆ j
 | ƒ q<t  j j | ƒ r<| | ƒ q<q( ˆ j
 | ƒ q( Wˆ  ˆ f S(   ut   
        Sort locations into "files" (archives) and "urls", and return
        a pair of lists (files,urls)
        c                sL   t  |  ƒ } t j | d d ƒd d k r; ˆ j | ƒ n ˆ  j | ƒ d  S(   Nu   stricti    u	   text/htmlF(   u   path_to_urlu	   mimetypesu
   guess_typeu   Falseu   append(   u   pathu   url(   u   filesu   urls(    u"   /tmp/pip-zej_zi-build/pip/index.pyu	   sort_pathk   s    u0   PackageFinder._sort_locations.<locals>.sort_pathu   file:(   u   osu   pathu   existsu
   startswithu
   find_linksu   url_to_pathu   isdiru   realpathu   listdiru   joinu   appendu   isfile(	   u   selfu	   locationsu	   sort_pathu   urlu   is_local_pathu   is_file_urlu   is_find_linku   pathu   item(    (   u   filesu   urlsu"   /tmp/pip-zej_zi-build/pip/index.pyu   _sort_locationsb   s*    	 u   PackageFinder._sort_locationsc             C   s¢   | \ } } } |  j  rš t t ƒ } | t k r9 d } nW | j t k r‰ t | j ƒ } | j ƒ  sy t	 d | j ƒ ‚ n  | j
 ƒ  } n | } | | f S| Sd S(   uL  
        Function used to generate link sort key for link tuples.
        The greater the return value, the more preferred it is.
        If not finding wheels, then sorted by version only.
        If finding wheels, then the sort order is by version, then:
          1. existing installs
          2. wheels ordered via Wheel.support_index_min()
          3. source archives
        Note: it was considered to embed this logic into the Link
              comparison operators, but then different sdist links
              with the same version, would have to be considered equal
        i   uB   %s is not a supported wheel for this platform. It can't be sorted.N(   u	   use_wheelu   lenu   supported_tagsu   INSTALLED_VERSIONu   extu	   wheel_extu   Wheelu   filenameu	   supportedu   UnsupportedWheelu   support_index_min(   u   selfu
   link_tupleu   parsed_versionu   linku   _u   support_numu   priu   wheel(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _link_sort_keyŠ   s    		
u   PackageFinder._link_sort_keyc             C   s   t  | d |  j d d ƒS(   uí   
        Bring the latest version (and wheels) to the front, but maintain the existing ordering as secondary.
        See the docstring for `_link_sort_key` for details.
        This function is isolated for easier unit testing.
        u   keyu   reverseT(   u   sortedu   _link_sort_keyu   True(   u   selfu   applicable_versions(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _sort_versions§   s    u   PackageFinder._sort_versionsc                s  ‡ f d d †  ‰  | j  ‰ d  } |  j rž t ˆ  |  j d ƒ d d2 ƒ} |  j | | ƒ } | d  k rž |  j t |  j d d d2 ƒˆ | ƒ p• | j  ‰ qž n  ˆ d  k	 rÐ ‡  f d d †  |  j Dƒ |  j } n t |  j ƒ } xH | j	 D]= } ˆ d  k	 ré | d  k	 ré t
 j | j | ƒ g | } qé qé W|  j | ƒ \ } } |  j |  j ƒ \ }	 }
 | j |	 ƒ d d „  | Dƒ } | j d d „  |
 Dƒ ƒ t j d	 | ƒ xü | D]ô } t j d
 | ƒ t j t | ƒ ƒ } | j t k r©t | j } t | ƒ d k r3| | j | d | j f } t j d | ƒ qt | ƒ d k rz| | j d j | ƒ | j f } t j d | ƒ q| | j f } t j d | ƒ q©q©Wg  } | j |  j d d „  |  j Dƒ | 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 d d „  |  j Dƒ | j j ƒ  ƒ ƒ } | r¼t j d d j d d „  | Dƒ ƒ ƒ n  t |  j d d „  | Dƒ | j j ƒ  ƒ ƒ } | rj| rj| rj| rjt j  d | ƒ |  j! r7t j d | j ƒ n  |  j" rWt j d | j ƒ n  t# d | ƒ ‚ n  g  } | j$ d  k	 r | j$ j% t& | j$ j' f g } n  | rà| j( d d2 ƒ t j d d j d d „  | Dƒ ƒ ƒ n  | | | | | } g  } xÃ | D]» \ } } } | | j) k r]t j d | | d j d  d „  | j) j* Dƒ ƒ f ƒ qnK t+ | ƒ r¨|  j, px| j- r¨| t& k	 r¨t j d! | | f ƒ qq¨n  | j. | | | f ƒ qW|  j/ | ƒ } t0 d" d „  | Dƒ ƒ } | 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 d& d „  | Dƒ ƒ f ƒ |  j! ršt j d' ƒ n  |  j" rºt j d | j ƒ n  t# d( | ƒ ‚ n  | d d t& k r-t j d) | j$ j' d j d* d „  | d d  … Dƒ ƒ pd+ f ƒ t1 ‚ n  t | ƒ d k rwt j d, | d d d j d- d „  | Dƒ ƒ f ƒ n  | d d } | j2 d  k	 rµ| j2 rµt j d. | j ƒ n  | j3 d  k	 rå| j3 råt j d/ | j ƒ n  | j4 rt j5 d0 d1 | j ƒ n  | S(3   Nc                s2   t  j |  ˆ  ƒ } | j d ƒ s. | d } n  | S(   Nu   /(   u	   posixpathu   joinu   endswith(   u   urlu   loc(   u   url_name(    u"   /tmp/pip-zej_zi-build/pip/index.pyu   mkurl_pypi_url±   s    u6   PackageFinder.find_requirement.<locals>.mkurl_pypi_urli    u   trustedc                s   g  |  ] } ˆ  | ƒ ‘ q S(    (    (   u   .0u   url(   u   mkurl_pypi_url(    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>È   s   	u2   PackageFinder.find_requirement.<locals>.<listcomp>c             S   s"   g  |  ] } t  | d  d ƒ‘ q S(   u   trustedT(   u   Linku   True(   u   .0u   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>×   s   	 c             S   s   g  |  ] } t  | ƒ ‘ q S(    (   u   Link(   u   .0u   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>Ú   s   	 u#   URLs to search for versions for %s:u   * %si   uS   %s uses an insecure transport scheme (%s). Consider using %s if %s has it availableu   , uc   %s uses an insecure transport scheme (%s). Consider using one of %s if %s has any of them availableu*   %s uses an insecure transport scheme (%s).c             S   s%   g  |  ] } t  | d  d d ƒ‘ q S(   u   -fu   trustedT(   u   Linku   True(   u   .0u   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>ú   s   	 u   Analyzing links from page %si   c             S   s   g  |  ] } t  | ƒ ‘ q S(    (   u   Link(   u   .0u   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>  s   	 u   dependency_links found: %sc             S   s"   g  |  ] \ } } } | j  ‘ q S(    (   u   url(   u   .0u   parsedu   linku   version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>  s   	 c             S   s   g  |  ] } t  | ƒ ‘ q S(    (   u   Link(   u   .0u   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>  s   	 u<   Could not find any downloads that satisfy the requirement %suM   Some externally hosted files were ignored (use --allow-external %s to allow).uW   Some insecure and unverifiable files were ignored (use --allow-unverified %s to allow).u$   No distributions at all found for %su   reverseu   Local files found: %sc             S   s(   g  |  ] \ } } } t  | j ƒ ‘ q S(    (   u   url_to_pathu   url(   u   .0u   parsedu   linku   version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>  s   	 u-   Ignoring link %s, version %s doesn't match %su   ,c             S   s   g  |  ] } d  j  | ƒ ‘ q S(   u    (   u   join(   u   .0u   s(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>"  s   	 uC   Ignoring link %s, version %s is a pre-release (use --pre to allow).c             S   s+   g  |  ]! \ } } } | t  k r | ‘ q S(    (   u   INSTALLED_VERSION(   u   .0u   parsed_versionu   linku   version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>,  s   	 uL   Existing installed version (%s) is most up-to-date and satisfies requirementuU   Existing installed version (%s) satisfies requirement (most up-to-date version is %s)uN   Could not find a version that satisfies the requirement %s (from versions: %s)c             S   s   g  |  ] \ } } } | ‘ q S(    (    (   u   .0u   parsed_versionu   linku   version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>7  s   	 uJ   Some externally hosted files were ignored (use --allow-external to allow).u,   No distributions matching the version for %su=   Installed version (%s) is most up-to-date (past versions: %s)c             S   s   g  |  ] \ } } } | ‘ q S(    (    (   u   .0u   parsed_versionu   linku   version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>F  s   	 u   noneu)   Using version %s (newest of versions: %s)c             S   s   g  |  ] \ } } } | ‘ q S(    (    (   u   .0u   parsed_versionu   linku   version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>J  s   	 u2   %s an externally hosted file and may be unreliableu,   %s is potentially insecure and unverifiable.u   1.7ua   %s discovered using a deprecated method of parsing, in the future it will no longer be discoveredT(6   u   url_nameu   Noneu
   index_urlsu   Linku   Trueu	   _get_pageu   _find_url_nameu
   find_linksu   listu   absolute_versionsu	   posixpathu   joinu   urlu   _sort_locationsu   dependency_linksu   extendu   loggeru   debugu   urlparseu   stru   schemeu   INSECURE_SCHEMESu   lenu   netlocu   warnu   _package_versionsu   nameu   loweru
   _get_pagesu   indentu   linksu   infou   fatalu   need_warn_externalu   need_warn_unverifiedu   DistributionNotFoundu   satisfied_byu   parsed_versionu   INSTALLED_VERSIONu   versionu   sortu   requ   specsu   is_prereleaseu   allow_all_prereleasesu   prereleasesu   appendu   _sort_versionsu   boolu   BestVersionAlreadyInstalledu   internalu
   verifiableu   _deprecated_regexu
   deprecated(   u   selfu   requ   upgradeu   main_index_urlu   pageu	   locationsu   versionu   file_locationsu   url_locationsu   _flocationsu   _ulocationsu   locationu   parsedu   secure_schemesu   ctxu   found_versionsu   page_versionsu   dependency_versionsu   file_versionsu   installed_versionu   all_versionsu   applicable_versionsu   parsed_versionu   linku   existing_applicableu   selected_version(    (   u   mkurl_pypi_urlu   url_nameu"   /tmp/pip-zej_zi-build/pip/index.pyu   find_requirement¯   sö    
		7#			&)	(*	%				!*	-				$				:		/
	
		u   PackageFinder.find_requirementc             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(   uŒ   Finds the true URL name of a package, when the given name isn't quite correct.
        This is usually used to implement case-insensitivity.u   /u   Cannot fetch index base URL %sNu!   Real name of requirement %s is %s(   u   urlu   endswithu	   _get_pageu   Noneu   loggeru   fatalu   normalize_nameu   url_nameu   linksu	   posixpathu   basenameu   pathu   rstripu   notify(   u   selfu	   index_urlu   url_nameu   requ   pageu	   norm_nameu   linku   base(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _find_url_nameb  s    u   PackageFinder._find_url_namec       	      c   s7  t  | ƒ } t ƒ  } x| r2| j d ƒ } | | k r? q n  | j | ƒ |  j | | ƒ } | d k rp q n  | Vx· | j ƒ  D]© } t | j ƒ j	 ƒ  } | |  j
 k rÖ |  j rÖ d |  _ t j d | ƒ q‚ n  | j d k	 r| j r| |  j k rt j d | ƒ d |  _ q‚ n  | j | ƒ q‚ Wq Wd S(   u“   
        Yields (page, page_url) from the given locations, skipping
        locations that have errors, and adding download/homepage links
        i    u@   Not searching %s for files because external urls are disallowed.u_   Not searching %s for urls, it is an untrusted link and cannot produce safe or verifiable files.NT(   u   listu   setu   popu   addu	   _get_pageu   Noneu	   rel_linksu   normalize_nameu   nameu   loweru   allow_externalu   allow_all_externalu   Trueu   need_warn_externalu   loggeru   debugu   trustedu   allow_unverifiedu   need_warn_unverifiedu   append(	   u   selfu	   locationsu   requ   all_locationsu   seenu   locationu   pageu   linku
   normalized(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   _get_pagesu  s6    		
		
		u   PackageFinder._get_pagesu   #egg=([^&]*)u   ([a-z0-9_.]+)-([a-z0-9_.-]+)u   -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(   ug   Returns elements of links in order, non-egg links first, egg links second, while eliminating duplicates(   u   setu   addu   egg_fragmentu   append(   u   selfu   linksu   eggsu   no_eggsu   seenu   link(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _sort_links¢  s    		u   PackageFinder._sort_linksc             c   s@   x9 |  j  | ƒ D]( } x |  j | | ƒ D] } | Vq) Wq Wd  S(   N(   u   _sort_linksu   _link_package_versions(   u   selfu   linksu   search_nameu   linku   v(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _package_versions¯  s    u   PackageFinder._package_versionsc             C   s   d } |  j  r | t f S| S(   Nu   .tar.gzu   .tar.bz2u   .taru   .tgzu   .zip(   u   .tar.gzu   .tar.bz2u   .taru   .tgzu   .zip(   u	   use_wheelu	   wheel_ext(   u   selfu
   extensions(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _known_extensions´  s    	u   PackageFinder._known_extensionsc             C   s  t  ƒ  } d } | j r$ | j } nN| j ƒ  \ } } | ss | |  j k ro t j d | ƒ |  j j | ƒ n  g  S| j d ƒ rŸ | d d … } d | } n  | |  j	 ƒ  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| t k rry t | j ƒ } Wn' t k
 rˆt j d	 | ƒ g  SYn X| j j ƒ  | j ƒ  k r¿t j d
 | | f ƒ g  S| j ƒ  sàt j d | ƒ g  St | d d ƒ } | j d ƒ rf| j d ƒ rf| d k	 rft j | j ƒ j j d ƒ rf| j d t ƒ sft j d | ƒ g  Sn  | j } n  | s|  j | | | ƒ } n  | d k r·t j d
 | | f ƒ g  S| j d k	 r| j rt | ƒ j ƒ  |  j k r|  j rt j d | ƒ d |  _ g  S| j  d k	 re| j  ret | ƒ j ƒ  |  j! k ret j d | ƒ d |  _" g  S|  j# j$ | ƒ }	 |	 rÓ| d |	 j% ƒ  … } |	 j& d ƒ }
 |
 t' j d d … k rÓt j d | ƒ g  Sn  t j d | | f ƒ t( j) | ƒ | | f g S(   uâ   
        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.
        u   Skipping link %s; not a fileu   .tarNi   u,   Skipping link %s; unknown archive format: %su   macosx10u   .zipu   Skipping link %s; macosx10 oneu1   Skipping %s because the wheel filename is invalidu-   Skipping link %s; wrong project name (not %s)u9   Skipping %s because it is not compatible with this Pythonu
   comes_fromu   winu   macosxu   pypi.python.orgu   tagsuO   Skipping %s because it is a pypi-hosted binary Wheel on an unsupported platformu,   Skipping %s because it is externally hosted.u<   Skipping %s because it is an insecure and unverifiable file.i   i   u/   Skipping %s because Python version is incorrectu   Found link %s, version: %siüÿÿÿT(*   u   get_platformu   Noneu   egg_fragmentu   splitextu   logged_linksu   loggeru   debugu   addu   endswithu   _known_extensionsu   pathu	   wheel_extu   Wheelu   filenameu   InvalidWheelFilenameu   nameu   loweru	   supportedu   getattru
   startswithu   urlparseu   urlu   netlocu   supported_tags_noarchu   versionu   _egg_info_matchesu   internalu   normalize_nameu   allow_externalu   allow_all_externalu   Trueu   need_warn_externalu
   verifiableu   allow_unverifiedu   need_warn_unverifiedu   _py_version_reu   searchu   startu   groupu   sysu   pkg_resourcesu   parse_version(   u   selfu   linku   search_nameu   platformu   versionu   egg_infou   extu   wheelu
   comes_fromu   matchu
   py_version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _link_package_versionsº  sœ    				

	
		u$   PackageFinder._link_package_versionsc             C   s˜   |  j  j | ƒ } | s- t j d | ƒ d  S| j d ƒ j ƒ  } | j d d ƒ } | j ƒ  d } | j | ƒ r | j d ƒ t	 | ƒ d  … Sd  Sd  S(   Nu%   Could not parse version from link: %si    u   _u   -(
   u   _egg_info_reu   searchu   loggeru   debugu   Noneu   groupu   loweru   replaceu
   startswithu   len(   u   selfu   egg_infou   search_nameu   linku   matchu   nameu   look_for(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _egg_info_matches&  s    u   PackageFinder._egg_info_matchesc             C   s"   t  j | | d |  j d |  j ƒS(   Nu   cacheu   session(   u   HTMLPageu   get_pageu   cacheu   session(   u   selfu   linku   req(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu	   _get_page5  s    	u   PackageFinder._get_pageNTF(   u   __name__u
   __module__u   __qualname__u   __doc__u   Trueu   Falseu   Noneu   __init__u   add_dependency_linksu   _sort_locationsu   _link_sort_keyu   _sort_versionsu   find_requirementu   _find_url_nameu
   _get_pagesu   reu   compileu   _egg_fragment_reu   Iu   _egg_info_reu   _py_version_reu   _sort_linksu   _package_versionsu   _known_extensionsu   _link_package_versionsu   _egg_info_matchesu	   _get_page(   u
   __locals__(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   PackageFinder   s(   	*(³)lc             B   sw   |  Ee  Z d  Z d Z d Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d d „ Z
 d d „  Z d d „  Z d S(   u	   PageCacheu   Cache of HTML pagesi   c             C   s   i  |  _  i  |  _ i  |  _ d  S(   N(   u	   _failuresu   _pagesu	   _archives(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __init__A  s    		u   PageCache.__init__c             C   s   |  j  j | d ƒ |  j k S(   Ni    (   u	   _failuresu   getu   failure_limit(   u   selfu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   too_many_failuresF  s    u   PageCache.too_many_failuresc             C   s   |  j  j | ƒ S(   N(   u   _pagesu   get(   u   selfu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   get_pageI  s    u   PageCache.get_pagec             C   s   |  j  j | d ƒ S(   NF(   u	   _archivesu   getu   False(   u   selfu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   is_archiveL  s    u   PageCache.is_archivec             C   s   | |  j  | <d  S(   N(   u	   _archives(   u   selfu   urlu   value(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   set_is_archiveO  s    u   PageCache.set_is_archivec             C   s$   |  j  j | d ƒ | |  j  | <d  S(   Ni    (   u	   _failuresu   get(   u   selfu   urlu   level(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   add_page_failureR  s    u   PageCache.add_page_failurec             C   s"   x | D] } | |  j  | <q Wd  S(   N(   u   _pages(   u   selfu   urlsu   pageu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   add_pageU  s    u   PageCache.add_pageNT(   u   __name__u
   __module__u   __qualname__u   __doc__u   failure_limitu   __init__u   too_many_failuresu   get_pageu
   is_archiveu   Trueu   set_is_archiveu   add_page_failureu   add_page(   u
   __locals__(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu	   PageCache<  s   u	   PageCachec             B   sG  |  Ee  Z d  Z d Z e j d e j ƒ Z e j d e j ƒ Z e j d e j e j	 Bƒ Z
 d! d! d d „ Z d d „  Z e d! d" d! d	 d
 „ ƒ Z e d! d d! d d „ ƒ Z e d! d d „ ƒ Z e d d „  ƒ Z e d d „  ƒ Z e d d „  ƒ Z d d „  Z d# d d „ Z d d „  Z e j d e j ƒ Z d d  „  Z d! S($   u   HTMLPageu'   Represents one page, along with its URLu   <th>\s*home\s*pageu   <th>\s*download\s+urlu(   href=(?:"([^"]*)"|'([^']*)'|([^>\s\n]*))c             C   sC   | |  _  t j |  j  d d ƒ|  _ | |  _ | |  _ | |  _ d  S(   Nu   namespaceHTMLElementsF(   u   contentu   html5libu   parseu   Falseu   parsedu   urlu   headersu   trusted(   u   selfu   contentu   urlu   headersu   trusted(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __init__b  s
    			u   HTMLPage.__init__c             C   s   |  j  S(   N(   u   url(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __str__i  s    u   HTMLPage.__str__c             C   s\  | d  k r t ƒ  } n  | j } | j d d ƒ d } | j | ƒ rJ d  Sd d l m } xT | j D]I } | j ƒ  j	 | ƒ rd | t
 | ƒ d k rd t j d t ƒ  ƒ d  Sqd 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]} } |
 j | ƒ r)|  j | d | ƒ} | j ƒ  j	 d ƒ rlPq¦t j d | | f ƒ | d  k	 rŸ| j | ƒ n  d  Sq)q)Wn  t j d | ƒ t j | ƒ \ } } } } } } | d k rEt j j t | ƒ ƒ rE| j d ƒ s| d 7} n  t j | d ƒ } t j d | ƒ n  | j | d i d d 6ƒ} | j ƒ  | j j d d ƒ } | j ƒ  j	 d ƒ sÌt j d | | f ƒ | d  k	 rÈ| j | ƒ n  d  S|  | j | j | j d | j ƒ}	 Wn8t j  k
 r[} zE | j! j" d k r!d n d } |  j# | | | | d | d | ƒWYd  d  } ~ Xný t j$ k
 r¢} z% |  j# | | d | | d | ƒWYd  d  } ~ Xn¶ t j% k
 rÒ|  j# | | d | d | ƒYn† t& k
 r+} z: d | } |  j# | | | | d | d d d  t j' ƒWYd  d  } ~ Xn- X| d  k	 rT| j( | | j g |	 ƒ n  |	 Sd  S(!   Nu   #i   i    (   u
   VcsSupportu   +:u&   Cannot look at %(scheme)s URL %(link)su   .taru   .tar.gzu   .tar.bz2u   .tgzu   .zipu   sessionu	   text/htmlu,   Skipping page %s because of Content-Type: %su   Getting page %su   fileu   /u
   index.htmlu#    file: URL is directory, getting %su   headersu   Acceptu   Content-Typeu   unknownu   trustedi”  i   u   cacheu   levelu   connection error: %su	   timed outu6   There was a problem confirming the ssl certificate: %su   meth()   u   Noneu
   PipSessionu   urlu   splitu   too_many_failuresu   pip.vcsu
   VcsSupportu   schemesu   loweru
   startswithu   lenu   loggeru   debugu   localsu   get_pageu
   is_archiveu   filenameu   endswithu   _get_content_typeu   set_is_archiveu   urlparseu   osu   pathu   isdiru   url2pathnameu   urljoinu   getu   raise_for_statusu   headersu   textu   trustedu   requestsu	   HTTPErroru   responseu   status_codeu   _handle_failu   ConnectionErroru   Timeoutu   SSLErroru   notifyu   add_page(   u   clsu   linku   requ   cacheu   skip_archivesu   sessionu   urlu
   VcsSupportu   schemeu   instu   filenameu   bad_extu   content_typeu   netlocu   pathu   paramsu   queryu   fragmentu   respu   excu   levelu   reason(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   get_pagel  s†    	+		!$
		(4 u   HTMLPage.get_pagei   c             C   sb   | d  k r t j } n  | d | | ƒ | d | j |  f ƒ | d  k	 r^ | j | | ƒ n  d  S(   Nu   Could not fetch URL %s: %su7   Will skip URL %s when looking for download links for %s(   u   Noneu   loggeru   infou   urlu   add_page_failure(   u   requ   linku   reasonu   urlu   cacheu   levelu   meth(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _handle_failÈ  s    u   HTMLPage._handle_failc             C   sx   | d k r t ƒ  } n  t j |  ƒ \ } } } } } | d	 k rF d S| j |  d d
 ƒ} | j ƒ  | j j d d ƒ S(   u;   Get the Content-Type of the given url, using a HEAD requestu   httpu   httpsu   ftpu   ftpsu    u   allow_redirectsu   Content-TypeN(   u   httpu   httpsu   ftpu   ftpsT(	   u   Noneu
   PipSessionu   urlparseu   urlsplitu   headu   Trueu   raise_for_statusu   headersu   get(   u   urlu   sessionu   schemeu   netlocu   pathu   queryu   fragmentu   resp(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   _get_content_typeÔ  s    
u   HTMLPage._get_content_typec             C   s‘   t  |  d ƒ sŠ d  } d d „  |  j j d ƒ Dƒ } | r~ y  t | d j d d  ƒ ƒ } Wq~ t t f k
 rz d  } Yq~ Xn  | |  _ n  |  j S(   Nu   _api_versionc             S   s4   g  |  ]* } | j  d  d ƒ j ƒ  d k r | ‘ q S(   u   nameu    u   api-version(   u   getu   lower(   u   .0u   x(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   <listcomp>ê  s   	 u(   HTMLPage.api_version.<locals>.<listcomp>u   .//metai    u   value(	   u   hasattru   Noneu   parsedu   findallu   intu   getu	   TypeErroru
   ValueErroru   _api_version(   u   selfu   _api_versionu   metas(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   api_versionå  s     u   HTMLPage.api_versionc             C   sg   t  |  d ƒ s` |  j j d ƒ } | d  k	 rQ | j d ƒ rQ | j d ƒ |  _ q` |  j |  _ n  |  j S(   Nu	   _base_urlu   .//baseu   href(   u   hasattru   parsedu   findu   Noneu   getu	   _base_urlu   url(   u   selfu   base(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   base_urlô  s    u   HTMLPage.base_urlc             c   sÅ   x¾ |  j  j d ƒ D]ª } | j d ƒ r | j d ƒ } |  j t j |  j | ƒ ƒ } d } |  j r¦ |  j d k r¦ t	 | j d ƒ o d | j d ƒ j
 ƒ  k ƒ } n  t | |  d | ƒVq q Wd S(   u   Yields all links in the pageu   .//au   hrefi   u   relu   internalN(   u   parsedu   findallu   getu
   clean_linku   urlparseu   urljoinu   base_urlu   Noneu   api_versionu   boolu   splitu   Link(   u   selfu   anchoru   hrefu   urlu   internal(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   linksþ  s    !u   HTMLPage.linksc             c   s<   x |  j  ƒ  D] } | Vq Wx |  j ƒ  D] } | Vq) Wd  S(   N(   u   explicit_rel_linksu   scraped_rel_links(   u   selfu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu	   rel_links  s    	u   HTMLPage.rel_linksu   homepageu   downloadc             c   s·   t  | ƒ } x¤ |  j j d ƒ D] } | j d ƒ r | j d ƒ r t  | j d ƒ j ƒ  ƒ } | | @r¯ | j d ƒ } |  j t j |  j | ƒ ƒ } t	 | |  d d ƒVq¯ q q Wd S(   u)   Yields all links with the given relationsu   .//au   relu   hrefu   trustedNF(   u   setu   parsedu   findallu   getu   splitu
   clean_linku   urlparseu   urljoinu   base_urlu   Linku   False(   u   selfu   relsu   anchoru
   found_relsu   hrefu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   explicit_rel_links  s    
u   HTMLPage.explicit_rel_linksc          
   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 | |  d d d d ƒVq Wd  S(	   Nu   posi   i   i   u   trustedu   _deprecated_regexFT(   u   _homepage_reu   _download_reu   searchu   contentu   _href_reu   endu   groupu
   clean_linku   urlparseu   urljoinu   base_urlu   Linku   Falseu   True(   u   selfu   regexu   matchu
   href_matchu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   scraped_rel_links&  s    !-u   HTMLPage.scraped_rel_linksu   [^a-z0-9$&+,/:;=?@.#%_\\|-]c             C   s   |  j  j d d „  | ƒ S(   u¨   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(   Nu   %%%2xi    (   u   ordu   group(   u   match(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   <lambda><  s    u%   HTMLPage.clean_link.<locals>.<lambda>(   u	   _clean_reu   sub(   u   selfu   url(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   clean_link7  s    	u   HTMLPage.clean_linkNT(   u   homepageu   download(   u   __name__u
   __module__u   __qualname__u   __doc__u   reu   compileu   Iu   _homepage_reu   _download_reu   Su   _href_reu   Noneu   __init__u   __str__u   classmethodu   Trueu   get_pageu   staticmethodu   _handle_failu   _get_content_typeu   propertyu   api_versionu   base_urlu   linksu	   rel_linksu   explicit_rel_linksu   scraped_rel_linksu	   _clean_reu
   clean_link(   u
   __locals__(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   HTMLPageZ  s(   [
u   HTMLPagec             B   sv  |  Ee  Z d  Z d- d- d- d. d d „ Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z d d „  Z e d d „  ƒ Z e d d „  ƒ Z e d d „  ƒ Z d d „  Z e d d „  ƒ Z e d d  „  ƒ Z e j d! ƒ Z e d" d# „  ƒ Z e j d$ ƒ Z e d% d& „  ƒ Z e d' d( „  ƒ Z e d) d* „  ƒ Z e d+ d, „  ƒ Z d- S(/   u   Linkc             C   s1   | |  _  | |  _ | |  _ | |  _ | |  _ d  S(   N(   u   urlu
   comes_fromu   internalu   trustedu   _deprecated_regex(   u   selfu   urlu
   comes_fromu   internalu   trustedu   _deprecated_regex(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __init__A  s
    				u   Link.__init__c             C   s.   |  j  r d |  j |  j  f St |  j ƒ Sd  S(   Nu   %s (from %s)(   u
   comes_fromu   urlu   str(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __str__I  s    	u   Link.__str__c             C   s   d |  S(   Nu	   <Link %s>(    (   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __repr__O  s    u   Link.__repr__c             C   s   |  j  | j  k S(   N(   u   url(   u   selfu   other(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __eq__R  s    u   Link.__eq__c             C   s   |  j  | j  k S(   N(   u   url(   u   selfu   other(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __ne__U  s    u   Link.__ne__c             C   s   |  j  | j  k  S(   N(   u   url(   u   selfu   other(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __lt__X  s    u   Link.__lt__c             C   s   |  j  | j  k S(   N(   u   url(   u   selfu   other(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __le__[  s    u   Link.__le__c             C   s   |  j  | j  k S(   N(   u   url(   u   selfu   other(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __gt__^  s    u   Link.__gt__c             C   s   |  j  | j  k S(   N(   u   url(   u   selfu   other(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __ge__a  s    u   Link.__ge__c             C   s   t  |  j ƒ S(   N(   u   hashu   url(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   __hash__d  s    u   Link.__hash__c             C   s\   t  j |  j ƒ \ } } } } } t j | j d ƒ ƒ p< | } | sX t d |  j ƒ ‚ | S(   Nu   /u   URL %r produced no filename(   u   urlparseu   urlsplitu   urlu	   posixpathu   basenameu   rstripu   AssertionError(   u   selfu   _u   netlocu   pathu   name(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   filenameg  s    !u   Link.filenamec             C   s   t  j |  j ƒ d S(   Ni    (   u   urlparseu   urlsplitu   url(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   schemen  s    u   Link.schemec             C   s   t  j |  j ƒ d S(   Ni   (   u   urlparseu   urlsplitu   url(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   pathr  s    u	   Link.pathc             C   s   t  t j |  j j d ƒ ƒ ƒ S(   Nu   /(   u   splitextu	   posixpathu   basenameu   pathu   rstrip(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   splitextv  s    u   Link.splitextc             C   s   |  j  ƒ  d S(   Ni   (   u   splitext(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   exty  s    u   Link.extc             C   s=   t  j |  j ƒ \ } } } } } t  j | | | | d  f ƒ S(   N(   u   urlparseu   urlsplitu   urlu
   urlunsplitu   None(   u   selfu   schemeu   netlocu   pathu   queryu   fragment(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   url_without_fragment}  s    !u   Link.url_without_fragmentu   #egg=([^&]*)c             C   s,   |  j  j |  j ƒ } | s d  S| j d ƒ S(   Ni   (   u   _egg_fragment_reu   searchu   urlu   Noneu   group(   u   selfu   match(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   egg_fragment„  s    u   Link.egg_fragmentu2   (sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)c             C   s,   |  j  j |  j ƒ } | r( | j d ƒ Sd  S(   Ni   (   u   _hash_reu   searchu   urlu   groupu   None(   u   selfu   match(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   hash  s    u	   Link.hashc             C   s,   |  j  j |  j ƒ } | r( | j d ƒ Sd  S(   Ni   (   u   _hash_reu   searchu   urlu   groupu   None(   u   selfu   match(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu	   hash_name”  s    u   Link.hash_namec             C   s0   t  j |  j j d d ƒ d j d d ƒ d ƒ S(   Nu   #i   i    u   ?(   u	   posixpathu   basenameu   urlu   split(   u   self(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   show_url›  s    u   Link.show_urlc             C   sº   |  j  p t |  j d d ƒ } | d k	 r¦ | r¦ y% t |  j d d ƒ } t | ƒ } Wn t t f k
 ru d } Yn X| d k sŽ | d k r’ d S|  j rŸ d Sd Sn | d k	 r¶ d Sd S(   uˆ   
        Returns True if this link can be verified after download, False if it
        cannot, and None if we cannot determine.
        u   trustedu   api_versioni   NTF(
   u   trustedu   getattru
   comes_fromu   Noneu   intu
   ValueErroru	   TypeErroru   hashu   Trueu   False(   u   selfu   trustedu   api_version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu
   verifiableŸ  s    	u   Link.verifiableNF(   u   __name__u
   __module__u   __qualname__u   Noneu   Falseu   __init__u   __str__u   __repr__u   __eq__u   __ne__u   __lt__u   __le__u   __gt__u   __ge__u   __hash__u   propertyu   filenameu   schemeu   pathu   splitextu   extu   url_without_fragmentu   reu   compileu   _egg_fragment_reu   egg_fragmentu   _hash_reu   hashu	   hash_nameu   show_urlu
   verifiable(   u
   __locals__(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   Link?  s0   	u   Linkc             C   s;   t  |  ƒ } | j } | s1 t | j ƒ d } n  t | ƒ S(   uP   Get a requirement from the URL, if possible.  This looks for #egg
    in the URLi    (   u   Linku   egg_fragmentu   splitextu   filenameu   package_to_requirement(   u   urlu   linku   egg_info(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   get_requirement_from_urlÈ  s
    	u   get_requirement_from_urlc             C   sa   t  j d |  ƒ } | r9 | j d ƒ } | j d ƒ } n |  } d } | rY d | | f S| Sd S(   u)   Translate a name like Foo-1.2 to Foo==1.3u   ^(.*?)-(dev|\d.*)i   i   u    u   %s==%sN(   u   reu   searchu   group(   u   package_nameu   matchu   nameu   version(    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   package_to_requirementÒ  s    u   package_to_requirement(2   u   __doc__u   sysu   osu   reu	   mimetypesu	   posixpathu   pip.logu   loggeru   pip.utilu   Infu   normalize_nameu   splitextu   is_prereleaseu   pip.exceptionsu   DistributionNotFoundu   BestVersionAlreadyInstalledu   InstallationErroru   InvalidWheelFilenameu   UnsupportedWheelu   pip.backwardcompatu   urlparseu   url2pathnameu   pip.downloadu
   PipSessionu   url_to_pathu   path_to_urlu	   pip.wheelu   Wheelu	   wheel_extu   pip.pep425tagsu   supported_tagsu   supported_tags_noarchu   get_platformu   pip._vendoru   html5libu   requestsu   pkg_resourcesu   pip._vendor.requests.exceptionsu   SSLErroru   __all__u   DEFAULT_MIRROR_HOSTNAMEu   INSECURE_SCHEMESu   objectu   PackageFinderu	   PageCacheu   HTMLPageu   Linku   INSTALLED_VERSIONu   get_requirement_from_urlu   package_to_requirement(    (    (    u"   /tmp/pip-zej_zi-build/pip/index.pyu   <module>   s6   "(	ÿ ÿ å†
