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 r’d dlmZ d dlmZ d dlmZ e jeƒZd d „ Zddd „Zdd„ ZdS )é N)ÚDIRECT_URL_METADATA_NAMEÚArchiveInfoÚ DirectUrlÚDirectUrlValidationErrorÚDirInfoÚVcsInfo)ÚMYPY_CHECK_RUNNING)Úvcs)ÚJSONDecodeError)ÚOptional)ÚLink)ÚDistributionc C sÄ | j ƒ |d }g }t| jtƒr>|dj| jj| j| jjƒ7 }nVt| jtƒrl|| j7 }| jj r”|j | jj ƒ n(t| jtƒs|t‚| jj sŠt‚|| j7 }| jrª|j d| j ƒ |rÀ|ddj|ƒ 7 }|S )z0Convert a DirectUrl to a pip requirement string.z @ z{}+{}@{}z subdirectory=ú#ú&)ÚvalidateÚ isinstanceÚinfor Úformatr ÚurlÚ commit_idr ÚhashÚappendr ÚAssertionErrorÚeditableÚsubdirectoryÚjoin)Ú direct_urlÚnameÚrequirementÚ fragments© r ú•/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.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�| jd�S | jƒ rˆt| jt ƒ | jd�S d }| j} | r¤dj| | jƒ}t| jt|d�| jd�S d S )N)r r Úrequested_revision)r r r z{}={})r )Úis_vcsr Úget_backend_for_schemeÚschemer Úget_url_rev_and_authÚurl_without_fragmentÚget_revisionr r r Úsubdirectory_fragmentÚis_existing_dirr Ú hash_namer r r ) ÚlinkÚ source_dirÚlink_is_in_wheel_cacheÚvcs_backendr r# Ú_r r r, r r r! Údirect_url_from_link: s: r2 c C s\ | j tƒsdS ytj| jtƒƒS tttfk rV } ztj dt| j |ƒ dS d}~X nX dS )zªObtain 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_jsonÚget_metadatar r ÚUnicodeDecodeErrorÚloggerÚwarningÚproject_name)ÚdistÚer r r! Údist_get_direct_urll s r<