a [f @sddlmZddlmZmZmZmZddlmZddl m Z ddl m Z ee e dddZe ed d d Zdeee eedddZd S))Optional) ArchiveInfo DirectUrlDirInfoVcsInfo)Link) path_to_url)vcs) direct_urlnamereturncCs||d}g}t|jtr>|d|jj|j|jj7}nHt|jtrl||j7}|jj r| |jj nt|jt s|J||j7}|j r| d|j |r|dd |7}|S)z0Convert a DirectUrl to a pip requirement string.z @ z{}+{}@{}z subdirectory=#&)Zvalidate isinstanceinforformatr url commit_idrhashappendr subdirectoryjoin)r r Z requirementZ fragmentsrJ/usr/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py%direct_url_as_pep440_direct_reference s$    r) source_dirr cCstt|tdddS)NT)Zeditable)rr)rrr)rrrrdirect_url_for_editable srNF)linkrlink_is_in_wheel_cacher c Cs|jrlt|j}|sJ||j\}}}|r>|s8J|}n|sFJ||}t|t|j ||d|j dS| rt|jt |j dSd}|j } | r| d|j}t|jt|d|j dSdS)N)r rrequested_revision)rrr=)r)Zis_vcsr Zget_backend_for_schemeschemeZget_url_rev_and_authZurl_without_fragmentZ get_revisionrrr Zsubdirectory_fragmentZis_existing_dirr hash_namerr) rrrZ vcs_backendrr_rrr"rrrdirect_url_from_link'sF    r$)NF)typingrZpip._internal.models.direct_urlrrrrZpip._internal.models.linkrZpip._internal.utils.urlsrZpip._internal.vcsr strrrboolr$rrrrs