ó
Ð²Ebc           @   s)  d  d l  Z  d  d l Z d  d l m Z m Z d  d l m Z d  d l m Z d  d l	 m
 Z
 m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d	 l m Z m Z d  d
 l m Z d  d l m Z d d l m Z m Z e rwd  d l m Z m Z m  Z  m! Z! m" Z" 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+ e# d# Z, n  e  j- e. ƒ Z/ d „  Z0 d „  Z1 d „  Z2 d e f d „  ƒ  YZ3 d e3 f d „  ƒ  YZ4 d e3 f d „  ƒ  YZ5 d e f d „  ƒ  YZ6 d e f d  „  ƒ  YZ7 d! e f d" „  ƒ  YZ8 d S($   iÿÿÿÿN(   t   InvalidSpecifiert   SpecifierSet(   t   canonicalize_name(   t   Version(   t	   HashErrort   MetadataInconsistent(   t   Wheel(   t   install_req_from_editablet   install_req_from_line(   t   InstallRequirement(   t   dist_is_editablet   normalize_version_info(   t   get_requires_python(   t   MYPY_CHECK_RUNNINGi   (   t	   Candidatet   format_name(   t   Anyt	   FrozenSett   Iterablet   Optionalt   Tuplet   Union(   t   _BaseVersion(   t   Distribution(   t   Link(   t   Requirement(   t   Factoryt   AlreadyInstalledCandidatet   EditableCandidatet   LinkCandidatec         C   s°   | j  s t d ƒ ‚ | j r1 t | j ƒ } n	 |  j } t | d | j d | j d | j d | j	 d | j
 d t d | j d	 | j d
 | j ƒ ƒ} | j | _ |  | _ | S(   Ns   template is editablet   user_suppliedt
   comes_fromt
   use_pep517t   isolatedt
   constraintt   optionst   install_optionst   global_optionst   hashes(   t   editablet   AssertionErrort   reqt   strt   urlR   R   R   R    R!   R"   t   dictR$   R%   t   hash_optionst   original_linkt   link(   R/   t   templatet   linet   ireq(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   make_install_req_from_link*   s$    										c         C   ss   | j  s t d ƒ ‚ t |  j d | j d | j d | j d | j d | j d t	 d | j
 d	 | j d
 | j ƒ ƒS(   Ns   template not editableR   R   R    R!   R"   R#   R$   R%   R&   (   R'   R(   R   R+   R   R   R    R!   R"   R,   R$   R%   R-   (   R/   R0   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   make_install_req_from_editableC   s    								c         C   sÍ   t  |  j ƒ } | j r* t | j ƒ } n9 | j rN d j | | j j ƒ } n d j | |  j ƒ } t | d | j	 d | j
 d | j d | j d | j d t d	 | j d
 | j d | j ƒ ƒ} |  | _ | S(   Ns   {} @ {}s   {}=={}R   R   R    R!   R"   R#   R$   R%   R&   (   R   t   project_nameR)   R*   R/   t   formatR+   t   parsed_versionR   R   R   R    R!   R"   R,   R$   R%   R-   t   satisfied_by(   t   distR0   R5   R1   R2   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   make_install_req_from_distU   s&    										t"   _InstallRequirementBackedCandidatec           B   sË   e  Z d  Z e Z d d d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s÷  A candidate backed by an ``InstallRequirement``.

    This represents a package request with the target not being already
    in the environment, and needs to be fetched and installed. The backing
    ``InstallRequirement`` is responsible for most of the leg work; this
    class exposes appropriate information to the resolver.

    :param link: The link passed to the ``InstallRequirement``. The backing
        ``InstallRequirement`` will use this link to fetch the distribution.
    :param source_link: The link this candidate "originates" from. This is
        different from ``link`` when the link is found in the wheel cache.
        ``link`` would point to the wheel cache, while this points to the
        found remote link (e.g. from pypi.org).
    c         C   sI   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ |  j ƒ  |  _ d  S(   N(   t   _linkt   _source_linkt   _factoryt   _ireqt   _namet   _versiont   _prepareR9   (   t   selfR/   t   source_linkR2   t   factoryt   namet   version(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   __init__€   s    
						c         C   s   d j  |  j |  j ƒ S(   Ns   {} {}(   R6   RF   RG   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   __str__’   s    c         C   s%   d j  d |  j j d t |  j ƒ ƒ S(   Ns   {class_name}({link!r})t
   class_nameR/   (   R6   t	   __class__t   __name__R*   R<   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   __repr__–   s    	c         C   s   t  |  j |  j f ƒ S(   N(   t   hashRK   R<   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   __hash__   s    c         C   s&   t  | |  j ƒ r" |  j | j k St S(   N(   t
   isinstanceRK   R<   t   False(   RC   t   other(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   __eq__¡   s    c         C   s   |  j  | ƒ S(   N(   RS   (   RC   RR   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   __ne__¨   s    c         C   s   |  j  S(   N(   R=   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRD   ¬   s    c         C   s.   |  j  d k r' t |  j j ƒ |  _  n  |  j  S(   s:   The normalised name of the project the candidate refers toN(   R@   t   NoneR   R9   R5   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR5   ±   s    c         C   s   |  j  S(   N(   R5   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRF   ¹   s    c         C   s(   |  j  d  k r! |  j j |  _  n  |  j  S(   N(   RA   RU   R9   R7   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRG   ¾   s    c         C   s4   d j  |  j |  j |  j j r* |  j j n |  j ƒ S(   Ns   {} {} (from {})(   R6   RF   RG   R<   t   is_filet	   file_path(   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   format_for_errorÅ   s    c         C   s   t  d ƒ ‚ d  S(   Ns   Override in subclass(   t   NotImplementedError(   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   _prepare_distributionÍ   s    c         C   sŽ   t  | j ƒ } |  j d k	 rH |  j | k rH t |  j d | j ƒ ‚ n  | j } |  j d k	 rŠ |  j | k rŠ t |  j d | j ƒ ‚ n  d S(   s:   Check for consistency of project name and version of dist.RF   RG   N(	   R   R5   R@   RU   R   R?   R7   RA   RG   (   RC   R9   RF   RG   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   _check_metadata_consistencyÑ   s    	c         C   sF   y |  j  ƒ  } Wn" t k
 r4 } |  j | _ ‚  n X|  j | ƒ | S(   N(   RZ   R   R?   R)   R[   (   RC   R9   t   e(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRB   Û   s    c         C   sr   t  |  j ƒ } | d  k r d  Sy t | ƒ } Wn0 t k
 ra } d } t j | |  j | ƒ d  SX|  j j	 | ƒ S(   Ns-   Package %r has an invalid Requires-Python: %s(
   R   R9   RU   R   R    t   loggert   warningRF   R>   t    make_requires_python_requirement(   RC   t   requires_pythont   specR\   t   message(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   _get_requires_python_dependencyè   s    c         c   sX   | r |  j  j ƒ  n d } x+ | D]# } |  j j t | ƒ |  j ƒ Vq" W|  j ƒ  Vd  S(   N(    (   R9   t   requiresR>   t   make_requirement_from_specR*   R?   Rc   (   RC   t   with_requiresRd   t   r(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   iter_dependenciesõ   s    !c         C   s   |  j  S(   N(   R?   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   get_install_requirementü   s    N(   RL   t
   __module__t   __doc__RQ   t   is_installedRU   RH   RI   RM   RO   RS   RT   t   propertyRD   R5   RF   RG   RX   RZ   R[   RB   Rc   Rh   Ri   (    (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR;   o   s(   								
			c           B   s&   e  Z e Z d d d  „ Z d „  Z RS(   c         C   s{  | } | j  | | ƒ } | d  k	 rC t j d | j ƒ | j } n  t | | ƒ } | j | k sg t ‚ | j j r| j j rt	 | j j
 ƒ }	 t |	 j ƒ }
 | |
 k sÅ t d j | |
 ƒ ƒ ‚ | d  k	 rt |	 j ƒ } | | k s
t d j | | | ƒ ƒ ‚ qn  | d  k	 r@| j r@| j | j k r@t | _ n  t t |  ƒ j d | d | d | d | d | d	 | ƒ d  S(
   Ns   Using cached wheel link: %ss   {!r} != {!r} for wheels   {!r} != {!r} for wheel {}R/   RD   R2   RE   RF   RG   (   t   get_wheel_cache_entryRU   R]   t   debugR/   R3   R(   t   is_wheelRV   R   t   filenameR   RF   R6   R   RG   t
   persistentR.   t   Truet   original_link_is_in_wheel_cachet   superR   RH   (   RC   R/   R0   RE   RF   RG   RD   t   cache_entryR2   t   wheelt
   wheel_namet   wheel_version(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRH     s8    		c         C   s   |  j  j j |  j d t ƒS(   Nt   parallel_builds(   R>   t   preparert   prepare_linked_requirementR?   Rs   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRZ   1  s    N(   RL   Rj   RQ   t   is_editableRU   RH   RZ   (    (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR     s   'c           B   s&   e  Z e Z d d d  „ Z d „  Z RS(   c         C   sD   t  t |  ƒ j d | d | d t | | ƒ d | d | d | ƒ d  S(   NR/   RD   R2   RE   RF   RG   (   Ru   R   RH   R4   (   RC   R/   R0   RE   RF   RG   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRH   ;  s    	c         C   s   |  j  j j |  j ƒ S(   N(   R>   R{   t   prepare_editable_requirementR?   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRZ   M  s    N(   RL   Rj   Rs   R}   RU   RH   RZ   (    (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR   8  s   c           B   s¡   e  Z e Z d Z d  „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z d
 „  Z d „  Z d „  Z RS(   c         C   sD   | |  _  t | | ƒ |  _ | |  _ d } | j j |  j | ƒ d  S(   Ns   already satisfied(   R9   R:   R?   R>   R{   t   prepare_installed_requirement(   RC   R9   R0   RE   t   skip_reason(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRH   V  s
    		c         C   s   t  |  j ƒ S(   N(   R*   R9   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRI   h  s    c         C   s   d j  d |  j j d |  j ƒ S(   Ns   {class_name}({distribution!r})RJ   t   distribution(   R6   RK   RL   R9   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRM   l  s    	c         C   s   t  |  j |  j |  j f ƒ S(   N(   RN   RK   RF   RG   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRO   s  s    c         C   s8   t  | |  j ƒ r4 |  j | j k o3 |  j | j k St S(   N(   RP   RK   RF   RG   RQ   (   RC   RR   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRS   w  s    "c         C   s   |  j  | ƒ S(   N(   RS   (   RC   RR   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRT   ~  s    c         C   s   t  |  j j ƒ S(   N(   R   R9   R5   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR5   ‚  s    c         C   s   |  j  S(   N(   R5   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRF   ‡  s    c         C   s
   |  j  j S(   N(   R9   R7   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRG   Œ  s    c         C   s   t  |  j ƒ S(   N(   R
   R9   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR}   ‘  s    c         C   s   d j  |  j |  j ƒ S(   Ns   {} {} (Installed)(   R6   RF   RG   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRX   –  s    c         c   sE   | s
 d  Sx4 |  j  j ƒ  D]# } |  j j t | ƒ |  j ƒ Vq Wd  S(   N(   R9   Rd   R>   Re   R*   R?   (   RC   Rf   Rg   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRh   š  s    c         C   s   d  S(   N(   RU   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRi   ¡  s    N(   RL   Rj   Rs   Rl   RU   RD   RH   RI   RM   RO   RS   RT   Rm   R5   RF   RG   R}   RX   Rh   Ri   (    (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR   R  s   								t   ExtrasCandidatec           B   s¹   e  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	 d „  ƒ Z e	 d „  ƒ Z d „  Z d „  Z RS(   sí  A candidate that has 'extras', indicating additional dependencies.

    Requirements can be for a project with dependencies, something like
    foo[extra].  The extras don't affect the project/version being installed
    directly, but indicate that we need additional dependencies. We model that
    by having an artificial ExtrasCandidate that wraps the "base" candidate.

    The ExtrasCandidate differs from the base in the following ways:

    1. It has a unique name, of the form foo[extra]. This causes the resolver
       to treat it as a separate node in the dependency graph.
    2. When we're getting the candidate's dependencies,
       a) We specify that we want the extra dependencies as well.
       b) We add a dependency on the base candidate.
          See below for why this is needed.
    3. We return None for the underlying InstallRequirement, as the base
       candidate will provide it, and we don't want to end up with duplicates.

    The dependency on the base candidate is needed so that the resolver can't
    decide that it should recommend foo[extra1] version 1.0 and foo[extra2]
    version 2.0. Having those candidates depend on foo=1.0 and foo=2.0
    respectively forces the resolver to recognise that this is a conflict.
    c         C   s   | |  _  | |  _ d  S(   N(   t   baset   extras(   RC   Rƒ   R„   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRH   ¾  s    	c         C   s@   t  |  j ƒ j d d ƒ \ } } d j | d j |  j ƒ | ƒ S(   Nt    i   s	   {}[{}] {}t   ,(   R*   Rƒ   t   splitR6   t   joinR„   (   RC   RF   t   rest(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRI   Ç  s    !c         C   s(   d j  d |  j j d |  j d |  j ƒ S(   Ns.   {class_name}(base={base!r}, extras={extras!r})RJ   Rƒ   R„   (   R6   RK   RL   Rƒ   R„   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRM   Ì  s    		c         C   s   t  |  j |  j f ƒ S(   N(   RN   Rƒ   R„   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRO   Ô  s    c         C   s8   t  | |  j ƒ r4 |  j | j k o3 |  j | j k St S(   N(   RP   RK   Rƒ   R„   RQ   (   RC   RR   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRS   Ø  s    "c         C   s   |  j  | ƒ S(   N(   RS   (   RC   RR   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRT   ß  s    c         C   s
   |  j  j S(   N(   Rƒ   R5   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR5   ã  s    c         C   s   t  |  j j |  j ƒ S(   s:   The normalised name of the project the candidate refers to(   R   Rƒ   R5   R„   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRF   è  s    c         C   s
   |  j  j S(   N(   Rƒ   RG   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRG   î  s    c         C   s+   d j  |  j j ƒ  d j t |  j ƒ ƒ ƒ S(   Ns   {} [{}]s   , (   R6   Rƒ   RX   Rˆ   t   sortedR„   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRX   ó  s    c         C   s
   |  j  j S(   N(   Rƒ   Rl   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRl   ú  s    c         C   s
   |  j  j S(   N(   Rƒ   R}   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR}   ÿ  s    c         C   s
   |  j  j S(   N(   Rƒ   RD   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRD     s    c         c   sæ   |  j  j } | j |  j  ƒ V| s' d  S|  j j |  j  j j ƒ } |  j j |  j  j j ƒ } x3 t | ƒ D]% } t j	 d |  j  j
 |  j | ƒ qj WxL |  j  j j | ƒ D]5 } | j t | ƒ |  j  j | ƒ } | r© | Vq© q© Wd  S(   Ns%   %s %s does not provide the extra '%s'(   Rƒ   R>   t   make_requirement_from_candidateR„   t   intersectionR9   t
   differenceRŠ   R]   R^   RF   RG   Rd   Re   R*   R?   (   RC   Rf   RE   t   valid_extrast   invalid_extrast   extraRg   t   requirement(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRh   	  s"    	c         C   s   d  S(   N(   RU   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRi   &  s    (   RL   Rj   Rk   RH   RI   RM   RO   RS   RT   Rm   R5   RF   RG   RX   Rl   R}   RD   Rh   Ri   (    (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR‚   ¦  s    									t   RequiresPythonCandidatec           B   sn   e  Z e Z d Z d  „  Z d „  Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z d „  Z d „  Z d „  Z RS(	   c         C   sN   | d  k	 r t | ƒ } n t j d  } t d j d „  | Dƒ ƒ ƒ |  _ d  S(   Ni   t   .c         s   s   |  ] } t  | ƒ Vq d  S(   N(   R*   (   t   .0t   c(    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pys	   <genexpr>8  s    (   RU   R   t   syst   version_infoR   Rˆ   RA   (   RC   t   py_version_infoR—   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRH   2  s    c         C   s   d j  |  j ƒ S(   Ns	   Python {}(   R6   RA   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRI   >  s    c         C   s   d S(   Ns   <Python from Requires-Python>(    (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR5   B  s    c         C   s   |  j  S(   N(   R5   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRF   H  s    c         C   s   |  j  S(   N(   RA   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRG   M  s    c         C   s   d j  |  j ƒ S(   Ns	   Python {}(   R6   RG   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRX   R  s    c         C   s   d S(   N(    (    (   RC   Rf   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRh   V  s    c         C   s   d  S(   N(   RU   (   RC   (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyRi   Z  s    N(   RL   Rj   RQ   Rl   RU   RD   RH   RI   Rm   R5   RF   RG   RX   Rh   Ri   (    (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyR’   .  s   				(   R   R   R   (9   t   loggingR–   t    pip._vendor.packaging.specifiersR    R   t   pip._vendor.packaging.utilsR   t   pip._vendor.packaging.versionR   t   pip._internal.exceptionsR   R   t   pip._internal.models.wheelR   t   pip._internal.req.constructorsR   R   t   pip._internal.req.req_installR	   t   pip._internal.utils.miscR
   R   t   pip._internal.utils.packagingR   t   pip._internal.utils.typingR   Rƒ   R   R   t   typingR   R   R   R   R   R   R   t   pip._vendor.pkg_resourcesR   t   pip._internal.models.linkR   R   RE   R   t   BaseCandidatet	   getLoggerRL   R]   R3   R4   R:   R;   R   R   R   R‚   R’   (    (    (    sK   /tmp/pip-build-UPPWic/pip/pip/_internal/resolution/resolvelib/candidates.pyt   <module>   sB   .  
			’7Tˆ