3 Re @ s d dl Z d dlmZmZmZmZmZmZ d dlm Z d dl mZ yd dlm Z W n ek rh eZ Y nX e rd dlmZ d dlmZ d dlmZ e jeZd d Zddd Zdd ZdS ) N)DIRECT_URL_METADATA_NAMEArchiveInfo DirectUrlDirectUrlValidationErrorDirInfoVcsInfo)MYPY_CHECK_RUNNING)vcs)JSONDecodeError)Optional)Link)Distributionc C s | j |d }g }t| jtr>|dj| jj| j| jj7 }nVt| jtrl|| j7 }| jj r|j | jj n(t| jts|t| jj st|| j7 }| jr|j d| j |r|ddj| 7 }|S )z0Convert a DirectUrl to a pip requirement string.z @ z{}+{}@{}z subdirectory=#&)validate isinstanceinfor formatr url commit_idr hashappendr AssertionErroreditablesubdirectoryjoin) direct_urlnamerequirement fragments r /builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el9.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/utils/direct_url_helpers.py%direct_url_as_pep440_direct_reference s$ r" Fc C s | j rltj| j}|st|j| j\}}}|r>|s8t|}n|sFt|j|}t|t |j ||d| jdS | j rt| jt | jdS d }| j} | rdj| | j}t| jt|d| jdS d S )N)r r requested_revision)r r r z{}={})r )is_vcsr get_backend_for_schemeschemer get_url_rev_and_authurl_without_fragmentget_revisionr r r subdirectory_fragmentis_existing_dirr hash_namer r r ) link source_dirlink_is_in_wheel_cachevcs_backendr r# _r r r, r r r! direct_url_from_link: s: r2 c C s\ | j tsdS ytj| jtS tttfk rV } ztj dt| j | dS d}~X nX dS )zObtain a DirectUrl from a pkg_resource.Distribution. Returns None if the distribution has no `direct_url.json` metadata, or if `direct_url.json` is invalid. NzError parsing %s for %s: %s)has_metadatar r from_jsonget_metadatar r UnicodeDecodeErrorloggerwarningproject_name)dister r r! dist_get_direct_urll s r<