ó
Ð²Ebc           @   sõ   d  d l  Z  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 y d  d l m Z Wn e k
 r‡ e Z n Xe	 rÁ d  d l m Z d  d l m Z d  d l m Z n  e  j e ƒ Z d	 „  Z d e d
 „ Z d „  Z d S(   iÿÿÿÿN(   t   DIRECT_URL_METADATA_NAMEt   ArchiveInfot	   DirectUrlt   DirectUrlValidationErrort   DirInfot   VcsInfo(   t   MYPY_CHECK_RUNNING(   t   vcs(   t   JSONDecodeError(   t   Optional(   t   Distribution(   t   Linkc         C   s  |  j  ƒ  | d } g  } t |  j t ƒ rW | d j |  j j |  j |  j j ƒ 7} ni t |  j t ƒ r› | |  j 7} |  j j	 rÀ | j
 |  j j	 ƒ qÀ n% t |  j t ƒ s³ t ‚ | |  j 7} |  j rà | j
 d |  j ƒ n  | r | d d j | ƒ 7} n  | S(   s0   Convert a DirectUrl to a pip requirement string.s    @ s   {}+{}@{}s   subdirectory=t   #t   &(   t   validatet
   isinstancet   infoR   t   formatR   t   urlt	   commit_idR   t   hasht   appendR   t   AssertionErrort   subdirectoryt   join(   t
   direct_urlt   namet   requirementt	   fragments(    (    sC   /tmp/pip-build-UPPWic/pip/pip/_internal/utils/direct_url_helpers.pyt%   direct_url_as_pep440_direct_reference   s"    

	"	c   
      C   s3  |  j  r¬ t j |  j ƒ } | s' t ‚ | j |  j ƒ \ } } } | r] | sT t ‚ | } n | si t ‚ | j | ƒ } t d | d t	 d | j
 d | d | ƒ d |  j ƒ S|  j ƒ  rÚ t d |  j d t ƒ  d |  j ƒ Sd  } |  j }	 |	 rd j |	 |  j ƒ } n  t d |  j d t d | ƒ d |  j ƒ Sd  S(	   NR   R   R   R   t   requested_revisionR   s   {}={}R   (   t   is_vcsR   t   get_backend_for_schemet   schemeR   t   get_url_rev_and_autht   url_without_fragmentt   get_revisionR   R   R   t   subdirectory_fragmentt   is_existing_dirR   t   Nonet	   hash_nameR   R   R   (
   t   linkt
   source_dirt   link_is_in_wheel_cachet   vcs_backendR   R   t   _R   R   R(   (    (    sC   /tmp/pip-build-UPPWic/pip/pip/_internal/utils/direct_url_helpers.pyt   direct_url_from_link6   s:    				
		
		c         C   sj   |  j  t ƒ s d Sy t j |  j t ƒ ƒ SWn6 t t t f k
 re } t	 j
 d t |  j | ƒ d SXd S(   sª   Obtain a DirectUrl from a pkg_resource.Distribution.

    Returns None if the distribution has no `direct_url.json` metadata,
    or if `direct_url.json` is invalid.
    s   Error parsing %s for %s: %sN(   t   has_metadataR    R'   R   t	   from_jsont   get_metadataR   R   t   UnicodeDecodeErrort   loggert   warningt   project_name(   t   distt   e(    (    sC   /tmp/pip-build-UPPWic/pip/pip/_internal/utils/direct_url_helpers.pyt   dist_get_direct_urlh   s    (   t   loggingt   pip._internal.models.direct_urlR    R   R   R   R   R   t   pip._internal.utils.typingR   t   pip._internal.vcsR   t   jsonR   t   ImportErrort
   ValueErrort   typingR	   t   pip._vendor.pkg_resourcesR
   t   pip._internal.models.linkR   t	   getLoggert   __name__R3   R   R'   t   FalseR.   R8   (    (    (    sC   /tmp/pip-build-UPPWic/pip/pip/_internal/utils/direct_url_helpers.pyt   <module>   s   .
	2