a
lj @ s d dl mZ d dlmZmZmZmZ d dlmZ d dl m
Z
d dlmZ ee
e
dddZe
ed d
dZdeee
eedddZdS ) )Optional)ArchiveInfo DirectUrlDirInfoVcsInfo)Link)path_to_url)vcs)
direct_urlnamereturnc C s | |d }g }t| jtr>|d| jj| j| jj7 }nHt| jtrl|| j7 }| jj r|
| jj nt| jts|J || j7 }| jr|
d| j |r|dd
| 7 }|S )z0Convert a DirectUrl to a pip requirement string.z @ z{}+{}@{}z
subdirectory=#&)Zvalidate
isinstanceinfor formatr url commit_idr hashappendr subdirectoryjoin)r
r ZrequirementZ fragments r J/usr/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| tdddS )NT)Zeditable)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}|sJ || j\}}}|r>|s8J |}n|sFJ ||}t|t|j ||d| j
dS | rt| jt | j
dS d }| j
} | r| d| j }t| jt|d| j
dS d S )N)r r requested_revision)r r r =)r )Zis_vcsr Zget_backend_for_schemeschemeZget_url_rev_and_authZurl_without_fragmentZget_revisionr r r Zsubdirectory_fragmentZis_existing_dirr hash_namer r )
r r r Zvcs_backendr r _r r r" r r r direct_url_from_link' sF
r$ )NF)typingr Zpip._internal.models.direct_urlr r r r Zpip._internal.models.linkr Zpip._internal.utils.urlsr Zpip._internal.vcsr strr r boolr$ r r r r