o
    h                     @  sn   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 dddZdddZ	ddddZdS )    )annotations)ArchiveInfo	DirectUrlDirInfoVcsInfo)Link)path_to_url)vcs
direct_urlr   namestrreturnc                 C  s   |    |d }g }t| jtr"|| jj d| j d| jj 7 }n$t| jtr9|| j7 }| jjr8|	| jj nt| jt
sAJ || j7 }| jrQ|	d| j  |r\|dd| 7 }|S )z0Convert a DirectUrl to a pip requirement string.z @ +@zsubdirectory=#&)validate
isinstanceinfor   r	   url	commit_idr   hashappendr   subdirectoryjoin)r
   r   requirement	fragments r   Y/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py%direct_url_as_pep440_direct_reference	   s&   

r   
source_dirc                 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   
str | Nonelink_is_in_wheel_cacheboolc           
      C  s   | j r6t| j}|sJ || j\}}}|r|sJ |}n	|s#J ||}t|t|j	||d| j
dS |  rDt| jt | j
dS d }| j}	|	rS|	 d| j }t| jt|d| j
dS )N)r	   r   requested_revision)r   r   r   =)r   )is_vcsr	   get_backend_for_schemeschemeget_url_rev_and_authurl_without_fragmentget_revisionr   r   r   subdirectory_fragmentis_existing_dirr   	hash_namer   r   )
r#   r    r%   vcs_backendr   r'   _r   r   r1   r   r   r   direct_url_from_link'   sF   

	r4   )r
   r   r   r   r   r   )r    r   r   r   )NF)r#   r   r    r$   r%   r&   r   r   )
__future__r   pip._internal.models.direct_urlr   r   r   r   pip._internal.models.linkr   pip._internal.utils.urlsr   pip._internal.vcsr	   r   r"   r4   r   r   r   r   <module>   s    

