Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ÝPfW¢ã@sdZddlmZddlZddlZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZddlmZddlmZddlmZmZmZmZmZdd lmZdd lmZdd lm Z dd l!m"Z"m#Z#m$Z$m%Z%dd l&m'Z'm(Z(m)Z)m*Z*ddl+m,Z,m-Z-ddl.m/Z/ddl0m1Z1m2Z2m3Z3ddl4mZ5ddl6m7Z7ddl8m9Z9ddl:m;Z;ddld3d4d5d6d7d8gZ?ej@eAƒZBGdd „d eCƒZDGd!d„deCƒZEe jFd"e jGƒfd#d$„ZHGd%d&„d&eCƒZIGd'd(„d(eCƒZJedd)ƒZKd*d„ZLd+d,„ZMd-d.„ZNd/d0„ZOed1d2ƒZPdS)9z!Routines related to PyPI, indexesé)Úabsolute_importN)Ú namedtuple)Úparse)Úrequest)Ú ipaddress)Úcached_propertyÚsplitextÚnormalize_pathÚARCHIVE_EXTENSIONSÚSUPPORTED_EXTENSIONS)ÚRemovedInPip10Warning)Ú indent_log)Úcheck_requires_python)ÚDistributionNotFoundÚBestVersionAlreadyInstalledÚInvalidWheelFilenameÚUnsupportedWheel)ÚHAS_TLSÚis_urlÚ path_to_urlÚ url_to_path)ÚWheelÚ wheel_ext)Ú get_supported)Úhtml5libÚrequestsÚsix)Úcanonicalize_name)Ú specifiers)ÚSSLError)ÚunescapeÚ FormatControlÚfmt_ctl_handle_mutual_excludeÚ PackageFinderÚhttpsÚ*Ú localhostú 127.0.0.0/8ú::1/128ÚfileÚsshc@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚInstallationCandidatecCs,||_t|ƒ|_||_|j|j|jf|_dS)N)ÚprojectÚ parse_versionÚversionÚlocationÚ_key)Úselfr,r.r/©r2ú/usr/lib/python3.6/index.pyÚ__init__>s zInstallationCandidate.__init__cCsdj|j|j|jƒS)Nz,)Úformatr,r.r/)r1r2r2r3Ú__repr__DszInstallationCandidate.__repr__cCs t|jƒS)N)Úhashr0)r1r2r2r3Ú__hash__IszInstallationCandidate.__hash__cCs|j|dd„ƒS)NcSs||kS)Nr2)ÚsÚor2r2r3ÚMsz.InstallationCandidate.__lt__..)Ú_compare)r1Úotherr2r2r3Ú__lt__LszInstallationCandidate.__lt__cCs|j|dd„ƒS)NcSs||kS)Nr2)r9r:r2r2r3r;Psz.InstallationCandidate.__le__..)r<)r1r=r2r2r3Ú__le__OszInstallationCandidate.__le__cCs|j|dd„ƒS)NcSs||kS)Nr2)r9r:r2r2r3r;Ssz.InstallationCandidate.__eq__..)r<)r1r=r2r2r3Ú__eq__RszInstallationCandidate.__eq__cCs|j|dd„ƒS)NcSs||kS)Nr2)r9r:r2r2r3r;Vsz.InstallationCandidate.__ge__..)r<)r1r=r2r2r3Ú__ge__UszInstallationCandidate.__ge__cCs|j|dd„ƒS)NcSs||kS)Nr2)r9r:r2r2r3r;Ysz.InstallationCandidate.__gt__..)r<)r1r=r2r2r3Ú__gt__XszInstallationCandidate.__gt__cCs|j|dd„ƒS)NcSs||kS)Nr2)r9r:r2r2r3r;\sz.InstallationCandidate.__ne__..)r<)r1r=r2r2r3Ú__ne__[szInstallationCandidate.__ne__cCst|tƒstS||j|jƒS)N)Ú isinstancer+ÚNotImplementedr0)r1r=Úmethodr2r2r3r<^s zInstallationCandidate._compareN) Ú__name__Ú __module__Ú __qualname__r4r6r8r>r?r@rArBrCr<r2r2r2r3r+<sr+c @s’eZdZdZd!dd„Zdd„Zed"dd „ƒZd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z ejdƒZdd„Zdd„Zdd„Zdd„Zdd „ZdS)#r#z This finds packages. This is meant to match easy_install's technique for looking for packages, by reading pages and looking for appropriate links. FNc Csø|dkrtdƒ‚g|_x:|D]2} | jdƒrBt| ƒ} tjj| ƒrB| } |jj| ƒqW||_g|_ t ƒ|_ |pvt t ƒt ƒƒ|_ dd„|rˆ|ngDƒ|_||_||_||_t| || | d�|_tsôx8tj|j|jƒD]$} tj| ƒ}|jdkrÌtjdƒPqÌWdS) a¯Create a PackageFinder. :param format_control: A FormatControl object or None. Used to control the selection of source packages / binary packages when consulting the index and links. :param platform: A string or None. If None, searches for packages that are supported by the current system. Otherwise, will find packages that can be built on the platform passed in. These packages will only be downloaded for distribution: they will not be built locally. :param versions: A list of strings or None. This is passed directly to pep425tags.py in the get_supported() method. :param abi: A string or None. This is passed directly to pep425tags.py in the get_supported() method. :param implementation: A string or None. This is passed directly to pep425tags.py in the get_supported() method. Nz>PackageFinder() missing 1 required keyword argument: 'session'ú~cSsg|]}d|df‘qS)r%r2)Ú.0Úhostr2r2r3ú žsz*PackageFinder.__init__..)ÚversionsÚplatformÚabiÚimplr$zipip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.)Ú TypeErrorÚ find_linksÚ startswithr ÚosÚpathÚexistsÚappendÚ index_urlsÚdependency_linksÚsetÚ logged_linksr!Úformat_controlÚsecure_originsÚallow_all_prereleasesÚprocess_dependency_linksÚsessionrÚ valid_tagsrÚ itertoolsÚchainÚ urllib_parseÚurlparseÚschemeÚloggerÚwarning)r1rSrYr_Z trusted_hostsr`rar]rOrNrPÚimplementationÚlinkZnew_linkÚparsedr2r2r3r4ls>       zPackageFinder.__init__cCs"|jrtjdtƒ|jj|ƒdS)NzXDependency Links processing has been deprecated and will be removed in a future release.)r`ÚwarningsÚwarnr rZÚextend)r1Úlinksr2r2r3Úadd_dependency_linksÀs z"PackageFinder.add_dependency_linkscsôg‰g‰‡‡fdd„}xÔ|D]Ì}tjj|ƒ}|jdƒ}|s>|rÈ|rH|}nt|ƒ}tjj|ƒr¤|r”tjj|ƒ}x4tj|ƒD]}|tjj||ƒƒqxWqÆ|rƈj |ƒqètjj |ƒrº||ƒqèt j d|ƒqt |ƒr܈j |ƒqt j d|ƒqWˆˆfS)zt Sort locations into "files" (archives) and "urls", and return a pair of lists (files,urls) cs8t|ƒ}tj|dd�ddkr*ˆj|ƒn ˆj|ƒdS)NF)Ústrictrz text/html)rÚ mimetypesZ guess_typerX)rVÚurl)ÚfilesÚurlsr2r3Ú sort_path×s z0PackageFinder._sort_locations..sort_pathzfile:z:Url '%s' is ignored: it is neither a file nor a directory.zQUrl '%s' is ignored. It is either a non-existing path or lacks a specific scheme.)rUrVrWrTrÚisdirÚrealpathÚlistdirÚjoinrXÚisfilerhrir)Ú locationsÚ expand_dirrwrtZ is_local_pathZ is_file_urlrVÚitemr2)rurvr3Ú_sort_locationsÍs8          zPackageFinder._sort_locationscCsXt|jƒ}|jjrHt|jjƒ}|j|jƒs8td|jƒ‚|j|jƒ }n| }|j |fS)a[ Function used to generate link sort key for link tuples. The greater the return value, the more preferred it is. If not finding wheels, then sorted by version only. If finding wheels, then the sort order is by version, then: 1. existing installs 2. wheels ordered via Wheel.support_index_min(self.valid_tags) 3. source archives Note: it was considered to embed this logic into the Link comparison operators, but then different sdist links with the same version, would have to be considered equal zB%s is not a supported wheel for this platform. It can't be sorted.) Úlenrbr/Úis_wheelrÚfilenameÚ supportedrZsupport_index_minr.)r1Ú candidateZ support_numÚwheelZprir2r2r3Ú_candidate_sort_keyÿs    z!PackageFinder._candidate_sort_keyc Csltjt|ƒƒ}|j|j|jf}|djddƒd }�x t|jD�]}||dkr`|ddkr`q@yht j t |dt j ƒs‚|ddkrŠ|dn |djdƒƒ}t jt |dt j ƒr¶|dn |djdƒƒ}WnJtk �r|d�r|djƒ|djƒk�r|ddk�rw@YnX||k�r q@|d|dk�rP|ddk�rP|ddk �rPq@dSW|jd|j|jƒd S) Nrú+ér%Úutf8éTzúThe repository located at %s is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host %s'.Féÿÿÿÿ)rerfÚstrrgZhostnameZportÚrsplitÚSECURE_ORIGINSr^rZ ip_addressrDrZ text_typeÚdecodeZ ip_networkÚ ValueErrorÚlowerri) r1rhr/rlÚoriginZprotocolZ secure_originZaddrZnetworkr2r2r3Ú_validate_secure_origins>  z%PackageFinder._validate_secure_origincs ‡fdd„‰‡fdd„|jDƒS)z²Returns the locations found via self.index_urls Checks the url_name on the main (first in the list) index and use this url_name to produce all locations cs,tj|tjtˆƒƒƒ}|jdƒs(|d}|S)Nú/)Ú posixpathr{reZquoterÚendswith)rtÚloc)Ú project_namer2r3Úmkurl_pypi_urlhs  z?PackageFinder._get_index_urls_locations..mkurl_pypi_urlcsg|] }ˆ|ƒ‘qSr2r2)rKrt)ršr2r3rMusz;PackageFinder._get_index_urls_locations..)rY)r1r™r2)ršr™r3Ú_get_index_urls_locationsas z'PackageFinder._get_index_urls_locationsc sƈj|ƒ}ˆj|ƒ\}}ˆjˆjdd�\}}ˆjˆjƒ\}}dd„tj|||ƒDƒ} ‡fdd„tjdd„|Dƒdd„|Dƒd d„|DƒƒDƒ} tjd t| ƒ|ƒx| D]} tjd | ƒq¦Wt |ƒ} t ˆj | ƒ} t || | ƒ}ˆj d d„ˆjDƒ|ƒ}g}xJˆj| |ƒD]:}tjd |jƒtƒ�|jˆj |j|ƒƒWdQRX�qWˆj dd„ˆjDƒ|ƒ}|�r|tjddjdd„|Dƒƒƒˆj | |ƒ}|�r¶|jdd�tjddjdd„|Dƒƒƒ||||S)aFind all available InstallationCandidate for project_name This checks index_urls, find_links and dependency_links. All versions found are returned as an InstallationCandidate list. See _link_package_versions for details on which files are accepted T)r~css|]}t|ƒVqdS)N)ÚLink)rKrtr2r2r3ú †sz4PackageFinder.find_all_candidates..csg|]}ˆjt|ƒr|‘qSr2)r”rh)rKrk)r1r2r3rM�sz5PackageFinder.find_all_candidates..css|]}t|ƒVqdS)N)rœ)rKrtr2r2r3r��scss|]}t|ƒVqdS)N)rœ)rKrtr2r2r3r�‘scss|]}t|ƒVqdS)N)rœ)rKrtr2r2r3r�’sz,%d location(s) to search for versions of %s:z* %scss|]}t|dƒVqdS)z-fN)rœ)rKrtr2r2r3r�¢szAnalyzing links from page %sNcss|]}t|ƒVqdS)N)rœ)rKrtr2r2r3r�¯szdependency_links found: %sz, cSsg|] }|jj‘qSr2)r/rt)rKr.r2r2r3rMµs)ÚreversezLocal files found: %scSsg|]}t|jjƒ‘qSr2)rr/rt)rKr…r2r2r3rM¿s)r›r€rSrZrcrdrhÚdebugr�rÚfmt_ctl_formatsr]ÚSearchÚ_package_versionsÚ _get_pagesrtr rorpr{Úsort)r1r™Zindex_locationsZindex_file_locZ index_url_locZ fl_file_locZ fl_url_locZ dep_file_locZ dep_url_locZfile_locationsZ url_locationsr/Úcanonical_nameÚformatsÚsearchZfind_links_versionsZ page_versionsÚpageZdependency_versionsZ file_versionsr2)r1r3Úfind_all_candidateswsX             z!PackageFinder.find_all_candidatesc sÞ|j|jƒ}t|jjdd„|Dƒ|jr,|jndd�ƒ‰‡fdd„|Dƒ}|rÈt||jd�}t|j ddƒrÌd d„|Dƒ}t|ƒrŽt||jd�}qÌd j |j |j |j ƒ}|j j r¼|d j |j j ƒ7}tj|ƒnd}|jdk rät|jj ƒ}nd}|dkoö|dk�r0tjd |d jttdd„|Dƒƒtd�ƒƒtd|ƒ‚d} |�rT|dk�sP|j |k�rTd} | �rŽ|dk �rŽ| �rztjd|ƒntjd||j ƒdS| �rºtjd|d jtˆtd�ƒ�p²dƒt‚tjd|j d jtˆtd�ƒƒ|j S)zÙTry to find a Link matching req Expects req, an InstallRequirement and upgrade, a boolean Returns a Link if found, Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise cSsg|]}t|jƒ‘qSr2)r�r.)rKÚcr2r2r3rMÝsz2PackageFinder.find_requirement..N)Z prereleasescsg|]}t|jƒˆkr|‘qSr2)r�r.)rKrª)Úcompatible_versionsr2r3rMæs)ÚkeyÚyankedFcSsg|]}t|jddƒs|‘qS)r­F)Úgetattrr/)rKrªr2r2r3rMòsznWARNING: The candidate selected for download or install is a yanked version: '{}' candidate (version {} at {})z Reason for being yanked: {}zNCould not find a version that satisfies the requirement %s (from versions: %s)z, css|]}t|jƒVqdS)N)r�r.)rKrªr2r2r3r�sz1PackageFinder.find_requirement..z%No matching distribution found for %sTzLExisting installed version (%s) is most up-to-date and satisfies requirementzUExisting installed version (%s) satisfies requirement (most up-to-date version is %s)z=Installed version (%s) is most up-to-date (past versions: %s)Znonez)Using version %s (newest of versions: %s))r©Únamer[Z specifierÚfilterr_Úmaxr‡r®r/r5r,r.Ú yanked_reasonrhriZ satisfied_byr-Zcriticalr{ÚsortedrrŸr) r1ZreqZupgradeZall_candidatesZapplicable_candidatesZbest_candidateZnonyanked_candidatesZwarning_messageZinstalled_versionZbest_installedr2)r«r3Úfind_requirementÊsx          zPackageFinder.find_requirementccsFtƒ}x:|D]2}||krq |j|ƒ|j|ƒ}|dkr8q |Vq WdS)zp Yields (page, page_url) from the given locations, skipping locations that have errors. N)r[ÚaddÚ _get_page)r1r}r™Úseenr/r¨r2r2r3r£Bs   zPackageFinder._get_pagesz-py([123]\.?[0-9]?)$cCsTgg}}tƒ}x:|D]2}||kr|j|ƒ|jr>|j|ƒq|j|ƒqW||S)z� Returns elements of links in order, non-egg links first, egg links second, while eliminating duplicates )r[rµÚ egg_fragmentrX)r1rpZeggsZno_eggsr·rkr2r2r3Ú _sort_linksUs    zPackageFinder._sort_linkscCs:g}x0|j|ƒD]"}|j||ƒ}|dk r|j|ƒqW|S)N)r¹Ú_link_package_versionsrX)r1rpr§ÚresultrkÚvr2r2r3r¢es  zPackageFinder._package_versionscCs(||jkr$tjd||ƒ|jj|ƒdS)NzSkipping link %s; %s)r\rhrŸrµ)r1rkÚreasonr2r2r3Ú_log_skipped_linkms zPackageFinder._log_skipped_linkc CsJd}|jr|j}|j}�n |jƒ\}}|s:|j|dƒdS|tkrV|j|d|ƒdSd|jkr~|tkr~|j|d|jƒdSd|jkr |dkr |j|dƒdS|tk�r&yt |j ƒ}Wn t k rØ|j|d ƒdSXt |j ƒ|jk�r|j|d |jƒdS|j|jƒ�s |j|d ƒdS|j}d |jk�rR|tk�rR|j|d |jƒdS|�sft||j|ƒ}|dk�r†|j|d |jƒdS|jj|ƒ}|�rÖ|d|jƒ…}|jdƒ}|tjdd…k�rÖ|j|dƒdSyt|jƒ} Wn.tjk �rtjd|j |jƒd} YnX| �s.tjd||jƒdStjd||ƒt|j||ƒS)z'Return an InstallationCandidate or NoneNz not a filezunsupported archive format: %sÚbinaryzNo binaries permitted for %sZmacosx10z.zipz macosx10 onezinvalid wheel filenamezwrong project name (not %s)z%it is not compatible with this PythonÚsourcezNo sources permitted for %sr‰ézPython version is incorrectz3Package %s has an invalid Requires-Python entry: %sTz_The package %s is incompatible with the pythonversion in use. Acceptable python versions are:%szFound link %s, version: %s)r¸Úextrr¾r r¦rZsuppliedrVrrƒrrr¯Z canonicalr„rbr.Úegg_info_matchesÚ_py_version_rer§ÚstartÚgroupÚsysrÚrequires_pythonrZInvalidSpecifierrhrŸr+) r1rkr§r.Úegg_inforÂr†ÚmatchÚ py_versionZsupport_this_pythonr2r2r3rºrs€             z$PackageFinder._link_package_versionscCstj||jd�S)N)ra)ÚHTMLPageÚget_pagera)r1rkr2r2r3r¶¿szPackageFinder._get_page) FNFNNNNNN)F)rGrHrIÚ__doc__r4rqÚ staticmethodr€r‡r”r›r©r´r£ÚreÚcompilerÄr¹r¢r¾rºr¶r2r2r2r3r#es( Q  1GSx Mz([a-z0-9_.]+)-([a-z0-9_.!+-]+)cCs�|j|ƒ}|stjd|ƒdS|dkrB|jdƒ}||jdƒd…S|jdƒjƒ}|jddƒ}|jƒd}|j|ƒrˆ|jdƒt|ƒd…SdSdS)axPull the version part out of a string. :param egg_info: The string to parse. E.g. foo-2.1 :param search_name: The name of the package this belongs to. None to infer the name. Note that this cannot unambiguously parse strings like foo-2-2 which might be foo, 2-2 or foo-2, 2. :param link: The link the string came from, for logging on failure. z%Could not parse version from link: %sNrú-Ú_) r§rhrŸrÆÚindexr’ÚreplacerTr�)rÉZ search_namerkZ _egg_info_rerÊZ full_matchr¯Zlook_forr2r2r3rÃÃs      rÃc@sxeZdZdZddd„Zdd„Zeddd „ƒZedd d „ƒZ ed d „ƒZ e dd„ƒZ e dd„ƒZejdejƒZdd„ZdS)rÌz'Represents one page, along with its URLNcCs\d}|r2d|kr2tj|dƒ\}}d|kr2|d}||_tj|j|dd�|_||_||_dS)Nz Content-TypeÚcharsetF)Ztransport_encodingZnamespaceHTMLElements)ÚcgiZ parse_headerÚcontentrrrlrtÚheaders)r1rØrtrÙÚencodingÚ content_typeÚparamsr2r2r3r4ãs  zHTMLPage.__init__cCs|jS)N)rt)r1r2r2r3Ú__str__õszHTMLPage.__str__TcCsl|dkrtdƒ‚|j}|jddƒd}ddlm}x>|jD]4}|jƒj|ƒr:|t|ƒdkr:t j d||ƒdSq:W�y"|rÊ|j }xHt D]@}|j |ƒr†|j||d�} | jƒjd ƒr´Pq†t j d || ƒdSq†Wt j d |ƒtj|ƒ\}} } } } }|d k�r6tjjtj| ƒƒ�r6|j d ƒ�s|d 7}tj|dƒ}t j d|ƒ|j|d ddœd�}|jƒ|jjddƒ} | jƒjd ƒ�s‚t j d || ƒdS||j|j|jƒ}WnÌtjk �rÊ}z|j|||ƒWYdd}~Xnžtk �r}z"d|}|j|||t jd�WYdd}~Xn`tj k �r>}z|j|d||ƒWYdd}~Xn*tj!k �rb|j|d|ƒYnX|SdS)Nz9get_page() missing 1 required keyword argument: 'session'ú#r‰r)Ú VcsSupportz+:zCannot look at %s URL %s)raz text/htmlz,Skipping page %s because of Content-Type: %szGetting page %sr)r•z index.htmlz# file: URL is directory, getting %sz max-age=600)ZAcceptz Cache-Control)rÙz Content-TypeÚunknownz6There was a problem confirming the ssl certificate: %s)Úmethzconnection error: %sz timed out)"rRrtÚsplitÚpip.vcsrßZschemesr’rTr�rhrŸrƒr r—Ú_get_content_typererfrUrVrxÚurllib_requestZ url2pathnameÚurljoinÚgetÚraise_for_statusrÙrØrZ HTTPErrorÚ _handle_failrÚinfoÚConnectionErrorZTimeout)ÚclsrkZ skip_archivesrartrßrgrƒZbad_extrÛÚnetlocrVrÜÚqueryÚfragmentÚrespZinstÚexcr½r2r2r3rÍøsp           $"zHTMLPage.get_pagecCs|dkrtj}|d||ƒdS)Nz%Could not fetch URL %s: %s - skipping)rhrŸ)rkr½rtrár2r2r3réNszHTMLPage._handle_failcCsDtj|ƒ\}}}}}|dkr dS|j|dd�}|jƒ|jjddƒS)z;Get the Content-Type of the given url, using a HEAD requestÚhttpr$ÚT)Zallow_redirectsz Content-Type)ròr$)reÚurlsplitÚheadrèrÙrç)rtrargrírVrîrïrðr2r2r3räUs zHTMLPage._get_content_typecCs@dd„|jjdƒDƒ}|r6|djdƒr6|djdƒS|jSdS)NcSsg|]}|jdƒdk r|‘qS)ÚhrefN)rç)rKÚxr2r2r3rMfsz%HTMLPage.base_url..z.//baserrö)rlÚfindallrçrt)r1Úbasesr2r2r3Úbase_urlcszHTMLPage.base_urlccsŒx†|jjdƒD]v}|jdƒr|jdƒ}|jtj|j|ƒƒ}|jdƒ}|rPt|ƒnd}|jddd�}|dk rrt|ƒ}t||||d�VqWdS)zYields all links in the pagez.//arözdata-requires-pythonNz data-yanked)Údefault)rÈr²) rlrørçÚ clean_linkrerærúr rœ)r1ZanchorrörtZ pyrequirer²r2r2r3rpns   zHTMLPage.linksz[^a-z0-9$&+,/:;=?@.#%_\\|-]cCs|jjdd„|ƒS)z¨Makes sure a link is fully encoded. That is, if a ' ' shows up in the link, it will be rewritten to %20 (while not over-quoting % or other characters).cSsdt|jdƒƒS)Nz%%%2xr)ÚordrÆ)rÊr2r2r3r;†sz%HTMLPage.clean_link..)Ú _clean_reÚsub)r1rtr2r2r3rü�szHTMLPage.clean_link)N)TN)N)rGrHrIrÎr4rÝÚ classmethodrÍrÏrérärrúÚpropertyrprÐrÑÚIrþrür2r2r2r3rÌàs  U   rÌc@s eZdZd5dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z e dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZdd„Ze d d!„ƒZe d"d#„ƒZejd$ƒZe d%d&„ƒZejd'ƒZe d(d)„ƒZejd*ƒZe d+d,„ƒZe d-d.„ƒZe d/d0„ƒZe d1d2„ƒZe d3d4„ƒZ dS)6rœNcCs@|jdƒrt|ƒ}||_||_|r&|nd|_||_|dk |_dS)aó Object representing a parsed link from https://pypi.python.org/simple/* url: url of the resource pointed to (href of the link) comes_from: instance of HTMLPage where the link was found, or string. 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. z\\N)rTrrtÚ comes_fromrÈr²r­)r1rtrrÈr²r2r2r3r4‹s z Link.__init__cCs<|jrd|j}nd}|jr.d|j|j|fSt|jƒSdS)Nz (requires-python:%s)róz%s (from %s)%s)rÈrrtr�)r1Zrpr2r2r3rÝ£s  z Link.__str__cCsd|S)Nz r2)r1r2r2r3r6­sz Link.__repr__cCst|tƒstS|j|jkS)N)rDrœrErt)r1r=r2r2r3r@°s z Link.__eq__cCst|tƒstS|j|jkS)N)rDrœrErt)r1r=r2r2r3rCµs z Link.__ne__cCst|tƒstS|j|jkS)N)rDrœrErt)r1r=r2r2r3r>ºs z Link.__lt__cCst|tƒstS|j|jkS)N)rDrœrErt)r1r=r2r2r3r?¿s z Link.__le__cCst|tƒstS|j|jkS)N)rDrœrErt)r1r=r2r2r3rBÄs z Link.__gt__cCst|tƒstS|j|jkS)N)rDrœrErt)r1r=r2r2r3rAÉs z Link.__ge__cCs t|jƒS)N)r7rt)r1r2r2r3r8Îsz Link.__hash__cCs8tj|jƒ\}}}}}tj|jdƒƒp(|}tj|ƒ}|S)Nr•)rerôrtr–ÚbasenameÚrstripÚunquote)r1rÓrírVr¯r2r2r3rƒÑs z Link.filenamecCstj|jƒdS)Nr)rerôrt)r1r2r2r3rgÙsz Link.schemecCstj|jƒdS)Nr‰)rerôrt)r1r2r2r3ríÝsz Link.netloccCstjtj|jƒdƒS)Nr‹)rerrôrt)r1r2r2r3rVász Link.pathcCsttj|jjdƒƒƒS)Nr•)rr–rrVr)r1r2r2r3råsz Link.splitextcCs |jƒdS)Nr‰)r)r1r2r2r3rÂèszLink.extcCs*tj|jƒ\}}}}}tj||||dfƒS)N)rerôrtZ urlunsplit)r1rgrírVrîrïr2r2r3Úurl_without_fragmentìszLink.url_without_fragmentz[#&]egg=([^&]*)cCs |jj|jƒ}|sdS|jdƒS)Nr‰)Ú_egg_fragment_rer§rtrÆ)r1rÊr2r2r3r¸ószLink.egg_fragmentz[#&]subdirectory=([^&]*)cCs |jj|jƒ}|sdS|jdƒS)Nr‰)Ú_subdirectory_fragment_rer§rtrÆ)r1rÊr2r2r3Úsubdirectory_fragmentüszLink.subdirectory_fragmentz2(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)cCs |jj|jƒ}|r|jdƒSdS)Nr‹)Ú_hash_rer§rtrÆ)r1rÊr2r2r3r7s z Link.hashcCs |jj|jƒ}|r|jdƒSdS)Nr‰)r r§rtrÆ)r1rÊr2r2r3Ú hash_names zLink.hash_namecCs$tj|jjddƒdjddƒdƒS)NrÞr‰rú?)r–rrtrâ)r1r2r2r3Úshow_urlsz Link.show_urlcCs |jtkS)N)rÂr)r1r2r2r3r‚sz Link.is_wheelcCs ddlm}|j|jkrdSdS)z  Determines if this points to an actual artifact (e.g. a tarball) or if it points to an "abstract" thing like a path or a VCS location. r)ÚvcsFT)rãrrgZ all_schemes)r1rr2r2r3Ú is_artifacts  zLink.is_artifact)NNN)!rGrHrIr4rÝr6r@rCr>r?rBrAr8rrƒrgrírVrrÂrrÐrÑrr¸r r r r7r rr‚rr2r2r2r3rœ‰s8                rœzno_binary only_binarycCs’|jdƒ}xFd|krP|jƒ|jƒ|jdƒ|d|jdƒd…=d|kr dSq Wx:|D]2}|dkrn|jƒqXt|ƒ}|j|ƒ|j|ƒqXWdS)Nú,z:all:r‰z:none:)râÚclearrµrÔrÚdiscard)ÚvalueÚtargetr=Únewr¯r2r2r3r"5s     cCsjtddgƒ}||jkr"|jdƒn@||jkr8|jdƒn*d|jkrN|jdƒnd|jkrb|jdƒt|ƒS)Nr¿rÀz:all:)r[Ú only_binaryrÚ no_binaryÚ frozenset)Úfmt_ctlr¥r»r2r2r3r Hs         r cCstd|j|jƒdS)Nz:all:)r"rr)rr2r2r3Úfmt_ctl_no_binaryUsrcCst|ƒtjdtdd�dS)Nzf--no-use-wheel is deprecated and will be removed in the future. Please use --no-binary :all: instead.r‹)Ú stacklevel)rrmrnr )rr2r2r3Úfmt_ctl_no_use_wheelZs rr¡zsupplied canonical formats)r$r%r%)r%r&r%)r%r'r%)r%r(r%)r)r%N)r*r%r%)QrÎZ __future__rZloggingr×Ú collectionsrrcrÇrUrÐrsr–rmZpip._vendor.six.moves.urllibrrerråZ pip.compatrZ pip.utilsrrr r r Zpip.utils.deprecationr Zpip.utils.loggingr Zpip.utils.packagingrZpip.exceptionsrrrrZ pip.downloadrrrrZ pip.wheelrrZpip.pep425tagsrZ pip._vendorrrrZpip._vendor.packaging.versionr-Zpip._vendor.packaging.utilsrZpip._vendor.packagingrZpip._vendor.requests.exceptionsrZpip._vendor.distlib.compatr Ú__all__r�Z getLoggerrGrhÚobjectr+r#rÑrrÃrÌrœr!r"r rrr¡r2r2r2r3Úsl                )d*#