a
    hbòf†  ã                   @   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¶   |   ¡  |d }g }t| jtƒr>|d | jj| j| jj¡7 }nHt| jtƒrl|| j7 }| jj	r†| 
| jj	¡ nt| jtƒs|J ‚|| j7 }| jrœ| 
d| j ¡ |r²|dd |¡ 7 }|S )z0Convert a DirectUrl to a pip requirement string.z @ z{}+{}@{}zsubdirectory=ú#ú&)ÚvalidateÚ
isinstanceÚinfor   Úformatr	   ÚurlÚ	commit_idr   ÚhashÚappendr   ÚsubdirectoryÚjoin)r
   r   ÚrequirementÚ	fragments© r   úc/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/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¡}|sJ ‚| | j¡\}}}|r>|s8J ‚|}n|sFJ ‚| |¡}t|t|j	||d�| j
d�S |  ¡ 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   )Ú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   r-   r   r   r   Údirect_url_from_link'   sF    ÿ

ýù	ýýr0   )NF)Útypingr   Úpip._internal.models.direct_urlr   r   r   r   Úpip._internal.models.linkr   Úpip._internal.utils.urlsr   Úpip._internal.vcsr	   Ústrr   r    Úboolr0   r   r   r   r   Ú<module>   s    ÿ
þ