o 7]h @sddlmZddlmZmZmZmZddlmZddl m Z ddl m Z dede de fd d Zd e defd d Z dded ee dedefddZdS))Optional) ArchiveInfo DirectUrlDirInfoVcsInfo)Link) path_to_url)vcs direct_urlnamereturncCs||d}g}t|jtr|d|jj|j|jj7}n$t|jtr6||j7}|jj r5| |jj n t|jt s>J||j7}|j rN| d|j |rY|dd |7}|S)z0Convert a DirectUrl to a pip requirement string.z @ z{}+{}@{}z subdirectory=#&)validate isinstanceinforformatr url commit_idrhashappendr subdirectoryjoin)r r requirement fragmentsrH/usr/lib/python3/dist-packages/pip/_internal/utils/direct_url_helpers.py%direct_url_as_pep440_direct_reference s&    r source_dircCstt|tdddS)NT)editable)rr)rrr)rrrrdirect_url_for_editable sr NFlinklink_is_in_wheel_cachec Cs|jr6t|j}|s J||j\}}}|r|sJ|}n |s#J||}t|t|j ||d|j dS| rDt|jt |j dSd}|j } | rS| d|j}t|jt|d|j dS)N)r rrequested_revision)rrr=)r)is_vcsr get_backend_for_schemeschemeget_url_rev_and_authurl_without_fragment get_revisionrrr subdirectory_fragmentis_existing_dirr hash_namerr) r!rr" vcs_backendrr#_rrr-rrrdirect_url_from_link'sF    r0)NF)typingrpip._internal.models.direct_urlrrrrpip._internal.models.linkrpip._internal.utils.urlsrpip._internal.vcsr strrr boolr0rrrrs"