3
”Re. ã @ s´ d dl Z d dlZd dlZd dlmZ d dlmZ d dlm Z m
Z
mZ d dlm
Z
d dlmZ d dlmZmZ er d dlmZmZmZmZ d d lmZ d d
lmZ G dd„ de
ƒZdS )
é N)Úparse)ÚWHEEL_EXTENSION)Úredact_auth_from_urlÚsplit_auth_from_netlocÚsplitext)ÚKeyBasedCompareMixin)ÚMYPY_CHECK_RUNNING)Úpath_to_urlÚurl_to_path)ÚOptionalÚTextÚTupleÚUnion)ÚHTMLPage)ÚHashesc sP e Zd ZdZddddddgZd=‡ fd
d„ Zdd
„ Zdd„ Zedd„ ƒZ edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZ
edd„ ƒZdd„ Zedd„ ƒZed d!„ ƒZejd"ƒZed#d$„ ƒZejd%ƒZed&d'„ ƒZejd(ƒZed)d*„ ƒZed+d,„ ƒZed-d.„ ƒZed/d0„ ƒZd1d2„ Zed3d4„ ƒZed5d6„ ƒZed7d8„ ƒZ ed9d:„ ƒZ!d;d<„ Z"‡ Z#S )>ÚLinkz?Represents a parsed link from a Package Index's simple URL
Ú_parsed_urlÚ_urlÚ
comes_fromÚrequires_pythonÚ
yanked_reasonÚcache_link_parsingNTc s\ |j dƒrt|ƒ}tj|ƒ| _|| _|| _|r2|nd| _|| _t t
| ƒj|t
d� || _dS )a½
:param url: url of the resource pointed to (href of the link)
:param comes_from: instance of HTMLPage where the link was found,
or string.
:param requires_python: String containing the `Requires-Python`
metadata field, specified in PEP 345. This may be specified by
a data-requires-python attribute in the HTML link tag, as
described in PEP 503.
:param yanked_reason: the reason the file has been yanked, if the
file has been yanked, or None if the file hasn't been yanked.
This is the value of the "data-yanked" attribute, if present, in
a simple repository HTML link. If the file has been yanked but
no reason was provided, this should be the empty string. See
PEP 592 for more information and the specification.
:param cache_link_parsing: A flag that is used elsewhere to determine
whether resources retrieved from this link
should be cached. PyPI index urls should
generally have this set to False, for
example.
z\\N)ÚkeyÚdefining_class)
Ú
startswithr Úurllib_parseÚurlsplitr r r r r Úsuperr Ú__init__r )ÚselfÚurlr r r r )Ú __class__© úˆ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/models/link.pyr $ s
z
Link.__init__c C sF | j rdj| j ƒ}nd}| jr4djt| jƒ| j|ƒS tt| jƒƒS d S )Nz (requires-python:{})Ú z{} (from {}){})r Úformatr r r Ústr)r Úrpr" r" r# Ú__str__S s zLink.__str__c C s
dj | ƒS )Nz )r% )r r" r" r# Ú__repr___ s z
Link.__repr__c C s | j S )N)r )r r" r" r# r c s zLink.urlc C sP | j jdƒ}tj|ƒ}|s,t| jƒ\}}|S tj|ƒ}|sLtdj f t
ƒ Žƒ‚|S )Nú/z&URL {self._url!r} produced no filename)ÚpathÚrstripÚ posixpathÚbasenamer Únetlocr ÚunquoteÚAssertionErrorr% Úlocals)r r+ Únamer/ Ú user_passr" r" r# Úfilenameh s
z
Link.filenamec C s
t | jƒS )N)r
r )r r" r" r# Ú file_pathx s zLink.file_pathc C s | j jS )N)r Úscheme)r r" r" r# r7 } s zLink.schemec C s | j jS )z4
This can contain auth information.
)r r/ )r r" r" r# r/ ‚ s zLink.netlocc C s t j| jjƒS )N)r r0 r r+ )r r" r" r# r+ Š s z Link.pathc C s t tj| jjdƒƒƒS )Nr* )r r- r. r+ r, )r r" r" r# r � s z
Link.splitextc C s | j ƒ d S )Né )r )r r" r" r# Úext“ s zLink.extc C s$ | j \}}}}}tj||||d fƒS )N)r r Ú
urlunsplit)r r7 r/ r+ ÚqueryÚfragmentr" r" r# Úurl_without_fragment˜ s zLink.url_without_fragmentz[#&]egg=([^&]*)c C s | j j| jƒ}|sd S |jdƒS )Nr8 )Ú_egg_fragment_reÚsearchr Úgroup)r Úmatchr" r" r# Úegg_fragment s zLink.egg_fragmentz[#&]subdirectory=([^&]*)c C s | j j| jƒ}|sd S |jdƒS )Nr8 )Ú_subdirectory_fragment_rer? r r@ )r rA r" r" r# Úsubdirectory_fragmentª s zLink.subdirectory_fragmentz2(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)c C s | j j| jƒ}|r|jdƒS d S )Né )Ú_hash_rer? r r@ )r rA r" r" r# Úhash¶ s
z Link.hashc C s | j j| jƒ}|r|jdƒS d S )Nr8 )rF r? r r@ )r rA r" r" r# Ú hash_name¾ s
zLink.hash_namec C s$ t j| jjddƒd jddƒd ƒS )Nú#r8 r ú?)r- r. r Úsplit)r r" r" r# Úshow_urlÆ s z
Link.show_urlc C s
| j dkS )NÚfile)r7 )r r" r" r# Úis_fileË s zLink.is_filec C s | j otjj| jƒS )N)rN Úosr+ Úisdirr6 )r r" r" r# Úis_existing_dirÐ s zLink.is_existing_dirc C s
| j tkS )N)r9 r )r r" r" r# Úis_wheelÔ s z
Link.is_wheelc C s ddl m} | j|jkS )Nr )Úvcs)Úpip._internal.vcsrS r7 Úall_schemes)r rS r" r" r# Úis_vcsÙ s zLink.is_vcsc C s
| j d k S )N)r )r r" r" r# Ú is_yankedà s zLink.is_yankedc C s
| j d k S )N)rH )r r" r" r# Úhas_hashå s z
Link.has_hashc C sB |dks| j rdS | jdk s"t‚| jdk s0t‚|j| j| jd�S )zG
Return True if the link has a hash and it is allowed.
NF)Ú
hex_digest)rX rH r1 rG Úis_hash_allowed)r Úhashesr" r" r# rZ ê s
zLink.is_hash_allowed)NNNT)$Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú __slots__r r( r) Úpropertyr r5 r6 r7 r/ r+ r r9 r= ÚreÚcompiler> rB rC rD rF rG rH rL rN rQ rR rV rW rX rZ Ú
__classcell__r" r" )r! r# r sL )
r )rO r- rb Zpip._vendor.six.moves.urllibr r Úpip._internal.utils.filetypesr Úpip._internal.utils.miscr r r Úpip._internal.utils.modelsr Úpip._internal.utils.typingr Úpip._internal.utils.urlsr r
Útypingr r r
r Úpip._internal.index.collectorr Úpip._internal.utils.hashesr r r" r" r" r# Ú