3
ûâde†  ã               @   sˆ   d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ eeedœdd„Zeed	œd
d„Zdeee eedœdd„ZdS )é    )ÚOptional)ÚArchiveInfoÚ	DirectUrlÚDirInfoÚVcsInfo)ÚLink)Úpath_to_url)Úvcs)Ú
direct_urlÚnameÚreturnc             C   s¶   | j ƒ  |d }g }t| jtƒr>|dj| jj| j| jjƒ7 }nHt| jtƒrl|| j7 }| jj	r†|j
| jj	ƒ nt| jtƒs|t‚|| j7 }| jrœ|j
d| j ƒ |r²|ddj|ƒ 7 }|S )z0Convert a DirectUrl to a pip requirement string.z @ z{}+{}@{}zsubdirectory=ú#ú&)ÚvalidateÚ
isinstanceÚinfor   Úformatr	   ÚurlÚ	commit_idr   ÚhashÚappendr   ÚAssertionErrorÚsubdirectoryÚjoin)r
   r   ÚrequirementZ	fragments© r   úE/tmp/pip-build-red6nood/pip/pip/_internal/utils/direct_url_helpers.pyÚ%direct_url_as_pep440_direct_reference	   s"    

r   )Ú
source_dirr   c             C   s   t t| ƒtdd�d�S )NT)Úeditable)r   r   )r   r   r   )r   r   r   r   Údirect_url_for_editable    s    r    NF)Úlinkr   Úlink_is_in_wheel_cacher   c       
      C   sÂ   | j rltj| jƒ}|st‚|j| jƒ\}}}|r>|s8t‚|}n|sFt‚|j|ƒ}t|t	|j
||d�| jd�S | jƒ rˆt| jtƒ | jd�S d }| j}	|	r¦|	› d| j› �}t| jt|d�| jd�S d S )N)r	   r   Úrequested_revision)r   r   r   ú=)r   )Zis_vcsr	   Zget_backend_for_schemeÚschemer   Zget_url_rev_and_authÚurl_without_fragmentÚget_revisionr   r   r   Úsubdirectory_fragmentZis_existing_dirr   Ú	hash_namer   r   )
r!   r   r"   Úvcs_backendr   r#   Ú_r   r   r)   r   r   r   Údirect_url_from_link'   s<    


r,   )NF)Útypingr   Zpip._internal.models.direct_urlr   r   r   r   Zpip._internal.models.linkr   Zpip._internal.utils.urlsr   Zpip._internal.vcsr	   Ústrr   r    Úboolr,   r   r   r   r   Ú<module>   s   