§ ]<ˆj¸!ãó—ddlZddlZddlZddlmZddlmZmZmZm Z m Z m Z ddl m Z mZmZmZmZddlmZddlmZddlmZmZddlmZeje¦«ZeeZeeZeegeefZ eege!fZ"Gd „d ¦«Z#d e$d e!fd „Z%Gd„d¦«Z&Gd„de#¦«Z'Gd„de#¦«Z(Gd„de#¦«Z)Gd„de#¦«Z*de$de de"de!de!de$d e e e$e e#ffd„Z+dS)éN)Ú defaultdict)ÚCallableÚDictÚIterableÚListÚOptionalÚTuple)ÚInvalidSdistFilenameÚInvalidWheelFilenameÚcanonicalize_nameÚparse_sdist_filenameÚparse_wheel_filename)ÚInstallationCandidate)ÚLink)Ú path_to_urlÚ url_to_path)Úis_urlcóN—eZdZedeefd„¦«Zdefd„Zde fd„Z dS)Ú LinkSourceÚreturncó—t¦«‚)z,Returns the underlying link, if there's one.©ÚNotImplementedError©Úselfs úm/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/pip/_internal/index/sources.pyÚlinkzLinkSource.links€õ"Ñ#Ô#Ð#ócó—t¦«‚)z9Candidates found by parsing an archive listing HTML file.rrs rÚpage_candidateszLinkSource.page_candidates"ó€å!Ñ#Ô#Ð#rcó—t¦«‚)z,Links found by specifying archives directly.rrs rÚ file_linkszLinkSource.file_links&r!rN) Ú__name__Ú __module__Ú __qualname__ÚpropertyrrrÚFoundCandidatesr Ú FoundLinksr#©rrrrss€€€€€Ø ð$�h˜t”nð$ð$ð$ñ„Xð$ð$ ð$ð$ð$ð$ð$˜Jð$ð$ð$ð$ð$ð$rrÚfile_urlrcóB—tj|d¬¦«ddkS)NF)Ústrictrz text/html)Ú mimetypesÚ guess_type)r+s rÚ _is_html_filer0+s"€Ý Ô  °Ð 7Ñ 7Ô 7¸Ô :¸kÒ IÐIrcóŠ—eZdZdZdeddfd„Zd d„Zedeefd„¦«Z ede eeeffd„¦«Z dS) Ú_FlatDirectoryToUrlsz"Scans directory and caches resultsÚpathrNcób—||_g|_tt¦«|_d|_dS)NF)Ú_pathÚ_page_candidatesrÚlistÚ_project_name_to_urlsÚ_scanned_directory)rr3s rÚ__init__z_FlatDirectoryToUrls.__init__2s/€ØˆŒ Ø+-ˆÔÝ;FÅtÑ;LÔ;LˆÔ"Ø"'ˆÔÐÐrcóº—tj|j¦«D]¹}t|j¦«}t |¦«r|j |¦«Œ@ t|j ¦«d}n=#t$r0 t|j ¦«d}n#t$rYYŒ�wxYwYnwxYw|j | |¦«Œºd|_dS)zrScans directory once and populates both page_candidates and project_name_to_urls at the same time rTN)ÚosÚscandirr5rr3r0r6ÚappendrÚnamer r r r8r9)rÚentryÚurlÚproject_filenames rÚ_scan_directoryz$_FlatDirectoryToUrls._scan_directory8s €õ”Z ¤ Ñ+Ô+ð Eð EˆEݘeœjÑ)Ô)ˆCݘSÑ!Ô!ð ØÔ%×,Ò,¨SÑ1Ô1Ð1Øð Ý#7¸¼ Ñ#CÔ#CÀAÔ#FÐ Ð øÝ'ð ð ð ðÝ';¸E¼JÑ'GÔ'GÈÔ'JÐ$Ð$øÝ+ðððØ�H�Hðøøøð%Ð$ð øøøð Ô &Ð'7Ô 8× ?Ò ?ÀÑ DÔ DÐ DÐ DØ"&ˆÔÐÐs6ÁA6Á6 B0ÂBÂB0 B*Â&B0Â)B*Â*B0Â/B0cóF—|js| ¦«|jS©N)r9rCr6rs rr z$_FlatDirectoryToUrls.page_candidatesOs(€àÔ&ð #Ø × Ò Ñ "Ô "Ð "àÔ$Ð$rcóF—|js| ¦«|jSrE)r9rCr8rs rÚproject_name_to_urlsz)_FlatDirectoryToUrls.project_name_to_urlsVs(€àÔ&ð #Ø × Ò Ñ "Ô "Ð "àÔ)Ð)r)rN) r$r%r&Ú__doc__Ústrr:rCr'rr rrGr*rrr2r2/s¯€€€€€Ø,Ð,ð(˜Sð( Tð(ð(ð(ð(ð 'ð'ð'ð'ð.ð%  c¤ð%ð%ð%ñ„Xð%ð ð* d¨3°°S´ ¨>Ô&:ð*ð*ð*ñ„Xð*ð*ð*rr2cóŠ—eZdZUdZiZeeefed<de dededdfd„Z e de e fd „¦«Zdefd „Zdefd „ZdS) Ú_FlatDirectorySourcezûLink source specified by ``--find-links=``. This looks the content of the directory, and returns: * ``page_candidates``: Links listed on each HTML file in the directory. * ``file_candidates``: Archives in the directory. Ú_paths_to_urlsÚcandidates_from_pager3Ú project_namerNcó¾—||_t|¦«|_||jvr|j||_dSt |¬¦«|_|j|j|<dS)N)r3)Ú_candidates_from_pager Ú _project_namerLÚ _path_to_urlsr2)rrMr3rNs rr:z_FlatDirectorySource.__init__isk€ð &:ˆÔ"Ý.¨|Ñ<Ô<ˆÔð �4Ô&Ð &Ð &Ø!%Ô!4°TÔ!:ˆDÔ Ð Ð å!5¸4Ð!@Ñ!@Ô!@ˆDÔ Ø(,Ô(:ˆDÔ  Ñ %Ð %Ð %rcó—dSrEr*rs rrz_FlatDirectorySource.linkys€àˆtrc#óxK—|jjD]*}| t|¦«¦«Ed{V—†Œ+dSrE)rRr rPr©rrAs rr z$_FlatDirectorySource.page_candidates}sTèè€ØÔ%Ô5ð =ð =ˆCØ×1Ò1µ$°s±)´)Ñ<Ô<Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð =ð =rc#ó`K—|jj|jD]}t|¦«V—ŒdSrE)rRrGrQrrUs rr#z_FlatDirectorySource.file_links�s>èè€ØÔ%Ô:¸4Ô;MÔNð ð ˆCÝ�s‘)”)ˆOˆOˆOˆOð ð r)r$r%r&rHrLrrIr2Ú__annotations__ÚCandidatesFromPager:r'rrrr(r r)r#r*rrrKrK^sØ€€€€€€ððð79€N�D˜Ð2Ð2Ô3Ð8Ð8Ñ8ð;à0ð;ðð;ðð ;ð ð ;ð;ð;ð;ð ð�h˜t”nðððñ„Xðð= ð=ð=ð=ð=ð˜JððððððrrKcóf—eZdZdZdededdfd„Zedeefd„¦«Z de fd„Z de fd „Z dS) Ú_LocalFileSourceaC``--find-links=`` or ``--[extra-]index-url=``. If a URL is supplied, it must be a ``file:`` URL. If a path is supplied to the option, it is converted to a URL first. This returns: * ``page_candidates``: Links listed on an HTML file. * ``file_candidates``: The non-HTML file. rMrrNcó"—||_||_dSrE©rPÚ_link©rrMrs rr:z_LocalFileSource.__init__�ó€ð &:ˆÔ"؈Œ ˆ ˆ rcó—|jSrE©r]rs rrz_LocalFileSource.link˜ó €àŒzÐrc#ó€K—t|jj¦«sdS| |j¦«Ed{V—†dSrE)r0r]rArPrs rr z _LocalFileSource.page_candidatesœsMèè€Ý˜TœZœ^Ñ,Ô,ð Ø ˆFØ×-Ò-¨d¬jÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9rc#óRK—t|jj¦«rdS|jV—dSrE)r0r]rArs rr#z_LocalFileSource.file_links¡s3èè€Ý ˜œœÑ (Ô (ð Ø ˆFØŒjÐÐÐÐÐr©r$r%r&rHrXrr:r'rrr(r r)r#r*rrrZrZ†s¯€€€€€ðððà0ðððð ð ððððð�h˜t”nðððñ„Xðð: ð:ð:ð:ð:ð ˜JððððððrrZcój—eZdZdZdedededdfd„Zede efd„¦«Z de fd „Z de fd „ZdS) Ú_RemoteFileSourcez¸``--find-links=`` or ``--[extra-]index-url=``. This returns: * ``page_candidates``: Links listed on an HTML file. * ``file_candidates``: The non-HTML file. rMÚpage_validatorrrNcó0—||_||_||_dSrE)rPÚ_page_validatorr])rrMrhrs rr:z_RemoteFileSource.__init__°s€ð &:ˆÔ"Ø-ˆÔ؈Œ ˆ ˆ rcó—|jSrErars rrz_RemoteFileSource.linkºrbrc#ó‚K—| |j¦«sdS| |j¦«Ed{V—†dSrE)rjr]rPrs rr z!_RemoteFileSource.page_candidates¾sQèè€Ø×#Ò# D¤JÑ/Ô/ð Ø ˆFØ×-Ò-¨d¬jÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9rc#óK—|jV—dSrErars rr#z_RemoteFileSource.file_linksÃsèè€ØŒjÐÐÐÐÐr)r$r%r&rHrXÚ PageValidatorrr:r'rrr(r r)r#r*rrrgrg§s¹€€€€€ðððà0ðð&ððð ð ð ððððð�h˜t”nðððñ„Xðð: ð:ð:ð:ð:ð ˜Jððððððrrgcóf—eZdZdZdededdfd„Zedeefd„¦«Z de fd„Z de fd „Z dS) Ú_IndexDirectorySourcez·``--[extra-]index-url=``. This is treated like a remote URL; ``candidates_from_page`` contains logic for this by appending ``index.html`` to the link. rMrrNcó"—||_||_dSrEr\r^s rr:z_IndexDirectorySource.__init__Îr_rcó—|jSrErars rrz_IndexDirectorySource.linkÖrbrc#óJK—| |j¦«Ed{V—†dSrEr\rs rr z%_IndexDirectorySource.page_candidatesÚs4èè€Ø×-Ò-¨d¬jÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9rcó—dS)Nr*r*rs rr#z _IndexDirectorySource.file_linksÝs€Øˆrrrer*rrrprpÇs¯€€€€€ððð à0ðððð ð ððððð�h˜t”nðððñ„Xðð: ð:ð:ð:ð:ð˜JððððððrrpÚlocationrMrhÚ expand_dirÚcache_link_parsingrNcóà—d}d}tj |¦«rt|¦«}|}n8| d¦«r|}t |¦«}nt |¦«r|}|€d}t ||¦«dS|€%t||t||¬¦«¬¦«} || fStj  |¦«r9|rt|||¬¦«} n t|t||¬¦«¬¦«} || fStj |¦«r$t|t||¬¦«¬¦«} || fSt d|¦«|dfS) Nzfile:zVLocation '%s' is ignored: it is either a non-existing path or lacks a specific scheme.)NN)rw)rMrhr)rMr3rN)rMrz?Location '%s' is ignored: it is neither a file nor a directory.)r<r3ÚexistsrÚ startswithrrÚloggerÚwarningrgrÚisdirrKrpÚisfilerZ) rurMrhrvrwrNr3rAÚmsgÚsources rÚ build_sourcer�ásÀð€DØ€CÝ „w‡~‚~�hÑÔðݘ(Ñ#Ô#ˆØˆˆØ × Ò ˜WÑ %Ô %ð؈ݘ8Ñ$Ô$ˆˆÝ �Ñ Ô ðØˆà €{ð Kð õ �Š�s˜HÑ%Ô%Ð%؈|à €|Ý.Ø!5Ø)Ý�cÐ.@ÐAÑAÔAð ñ ô ˆð �Vˆ}Ðå „w‡}‚}�TÑÔðØ ð Ý)Ø%9ØØ)ðñôˆFˆFõ +Ø%9ݘ#Ð2DÐEÑEÔEðñôˆFð�Vˆ}ÐÝ Œ�Š˜Ñ Ô ðÝ!Ø!5Ý�cÐ.@ÐAÑAÔAð ñ ô ˆð�Vˆ}ÐÝ ‡N‚NØIØñôðð �ˆ;Ðr),Úloggingr.r<Ú collectionsrÚtypingrrrrrr Úpip._vendor.packaging.utilsr r r r rÚpip._internal.models.candidaterÚpip._internal.models.linkrÚpip._internal.utils.urlsrrÚpip._internal.vcsrÚ getLoggerr$r{r(r)rXÚboolrnrrIr0r2rKrZrgrpr�r*rrúrŒsãðØ€€€ØÐÐÐØ € € € Ø#Ð#Ð#Ð#Ð#Ð#ØBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBðððððððððððððððAÐ@Ð@Ð@Ð@Ð@Ø*Ð*Ð*Ð*Ð*Ð*Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø$Ð$Ð$Ð$Ð$Ð$à ˆÔ ˜8Ñ $Ô $€àÐ0Ô1€Ø �dŒ^€ ؘt˜f hÐ/DÔ&EÐEÔFÐØ˜$˜ ˜Ô&€ ð $ð $ð $ð $ð $ñ $ô $ð $ðJ˜CðJ DðJðJðJðJð,*ð,*ð,*ð,*ð,*ñ,*ô,*ð,*ð^%ð%ð%ð%ð%˜:ñ%ô%ð%ðPðððð�zñôððBðððð˜ ñôðð@ðððð˜Jñôðð4;Øð;ð-ð;ð"ð ;ð ð ;ð ð ;ðð;ð ˆ8�CŒ=˜( :Ô.Ð .Ô/ð;ð;ð;ð;ð;ð;r