ó
    Þ jð!  ã                   óÈ  • S SK r S SKrS SKrS SKJr  S SKJrJrJrJ	r	J
r
Jr  S SKJrJrJrJrJrJr  S SKJr  S SKJr  S SKJrJr  S SKJr  \ R8                  " \5      r\\   r\\   r \\/\\   4   r!\\/\"4   r# " S	 S
5      r$S\%S\"4S jr& " S S5      r' " S S\$5      r( " S S\$5      r) " S S\$5      r* " S S\$5      r+S\%S\!S\#S\"S\"S\%S\\
\%   \
\$   4   4S jr,g)é    N)Údefaultdict)ÚCallableÚDictÚIterableÚListÚOptionalÚTuple)ÚInvalidSdistFilenameÚInvalidVersionÚInvalidWheelFilenameÚcanonicalize_nameÚparse_sdist_filenameÚparse_wheel_filename)ÚInstallationCandidate)ÚLink)Úpath_to_urlÚurl_to_path)Úis_urlc                   óN   • \ rS rSr\S\\   4S j5       rS\4S jr	S\
4S jrSrg)Ú
LinkSourceé   Úreturnc                 ó   • [        5       e)z,Returns the underlying link, if there's one.©ÚNotImplementedError©Úselfs    ÚU/var/www/html/gaurav/venv/lib/python3.13/site-packages/pip/_internal/index/sources.pyÚlinkÚLinkSource.link   s   € ô "Ó#Ð#ó    c                 ó   • [        5       e)z9Candidates found by parsing an archive listing HTML file.r   r   s    r   Úpage_candidatesÚLinkSource.page_candidates#   ó   € ä!Ó#Ð#r!   c                 ó   • [        5       e)z,Links found by specifying archives directly.r   r   s    r   Ú
file_linksÚLinkSource.file_links'   r%   r!   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úpropertyr   r   r   ÚFoundCandidatesr#   Ú
FoundLinksr'   Ú__static_attributes__r)   r!   r   r   r      s7   † Øð$�h˜t‘nó $ó ð$ð$ ô $ð$˜J÷ $r!   r   Úfile_urlr   c                 ó8   • [         R                  " U SS9S   S:H  $ )NF)Ústrictr   z	text/html)Ú	mimetypesÚ
guess_type)r2   s    r   Ú_is_html_filer7   ,   s   € Ü×Ò °Ñ7¸Ñ:¸kÑIÐIr!   c                   óz   • \ rS rSrSrS\SS4S jrSS jr\S\	\   4S j5       r
\S\\\	\   4   4S	 j5       rS
rg)Ú_FlatDirectoryToUrlsé0   z"Scans directory and caches resultsÚpathr   Nc                 óT   • Xl         / U l        [        [        5      U l        SU l        g )NF)Ú_pathÚ_page_candidatesr   ÚlistÚ_project_name_to_urlsÚ_scanned_directory)r   r;   s     r   Ú__init__Ú_FlatDirectoryToUrls.__init__3   s$   € ØŒ
Ø+-ˆÔÜ;FÄtÓ;LˆÔ"Ø"'ˆÕr!   c                 óà  • [         R                  " U R                  5       H|  n[        UR                  5      n[        U5      (       a  U R                  R                  U5        ME   [        UR                  5      S   nU R                  U   R                  U5        M~     SU l        g! [        [        4 a4     [        UR                  5      S   n NU! [        [        4 a      MÇ  f = ff = f)zbScans directory once and populates both page_candidates
and project_name_to_urls at the same time
r   TN)ÚosÚscandirr=   r   r;   r7   r>   Úappendr   Únamer   r   r   r
   r@   rA   )r   ÚentryÚurlÚproject_filenames       r   Ú_scan_directoryÚ$_FlatDirectoryToUrls._scan_directory9   sÐ   € ô —Z’Z §
¡
Ö+ˆEÜ˜eŸj™jÓ)ˆCÜ˜S×!Ñ!Ø×%Ñ%×,Ñ,¨SÔ1ÙðÜ#7¸¿
¹
Ó#CÀAÑ#FÐ ð ×&Ñ&Ð'7Ñ8×?Ñ?ÀÖDñ! ,ð" #'ˆÕøô )¬.Ð9ó ðÜ';¸E¿J¹JÓ'GÈÑ'JÒ$øÜ,¬nÐ=ó Ûðúðús*   Á'B)Â)C-Â:CÃC)Ã$C-Ã(C)Ã)C-c                 ó\   • U R                   (       d  U R                  5         U R                  $ ©N)rA   rL   r>   r   s    r   r#   Ú$_FlatDirectoryToUrls.page_candidatesP   s#   € à×&×&Ø× Ñ Ô"à×$Ñ$Ð$r!   c                 ó\   • U R                   (       d  U R                  5         U R                  $ rO   )rA   rL   r@   r   s    r   Úproject_name_to_urlsÚ)_FlatDirectoryToUrls.project_name_to_urlsW   s#   € à×&×&Ø× Ñ Ô"à×)Ñ)Ð)r!   )r>   r=   r@   rA   )r   N)r*   r+   r,   r-   Ú__doc__ÚstrrB   rL   r.   r   r#   r   rR   r1   r)   r!   r   r9   r9   0   sd   † Ù,ð(˜Sð ( Tô (ô'ð. ð%  c¡ó %ó ð%ð ð* d¨3°°S±	¨>Ñ&:ó *ó ó*r!   r9   c                   ó†   • \ rS rSr% Sr0 r\\\4   \	S'   S\
S\S\SS4S	 jr\S\\   4S
 j5       rS\4S jrS\4S jrSrg)Ú_FlatDirectorySourceé_   zëLink source specified by ``--find-links=<path-to-dir>``.

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_pager;   Úproject_namer   Nc                 óÆ   • Xl         [        U5      U l        X R                  ;   a  U R                  U   U l        g [        US9U l        U R                  U R                  U'   g )N)r;   )Ú_candidates_from_pager   Ú_project_namerY   Ú_path_to_urlsr9   )r   rZ   r;   r[   s       r   rB   Ú_FlatDirectorySource.__init__j   s[   € ð &:Ô"Ü.¨|Ó<ˆÔð ×&Ñ&Ó&Ø!%×!4Ñ!4°TÑ!:ˆDÕä!5¸4Ñ!@ˆDÔØ(,×(:Ñ(:ˆD×Ñ Ò%r!   c                 ó   • g rO   r)   r   s    r   r   Ú_FlatDirectorySource.linkz   s   € àr!   c              #   óŽ   #   • U R                   R                   H%  nU R                  [        U5      5       S h  v•N   M'     g  N	7frO   )r_   r#   r]   r   ©r   rJ   s     r   r#   Ú$_FlatDirectorySource.page_candidates~   s6   é € Ø×%Ñ%×5Ô5ˆCØ×1Ñ1´$°s³)Ó<×<Ò<ò 6Ù<ùs   ‚7A¹Aº
Ac              #   óz   #   • U R                   R                  U R                      H  n[        U5      v •  M     g 7frO   )r_   rR   r^   r   rd   s     r   r'   Ú_FlatDirectorySource.file_links‚   s0   é € Ø×%Ñ%×:Ñ:¸4×;MÑ;MÔNˆCÜ�s“)ŒOò Oùs   ‚9;)r]   r_   r^   )r*   r+   r,   r-   rT   rY   r   rU   r9   Ú__annotations__ÚCandidatesFromPagerB   r.   r   r   r   r/   r#   r0   r'   r1   r)   r!   r   rW   rW   _   s€   ‡ ñð 79€N�D˜Ð2Ð2Ñ3Ó8ð;à0ð;ð ð;ð ð	;ð
 
ô;ð  ð�h˜t‘nó ó ðð= ô =ð˜J÷ r!   rW   c                   óh   • \ rS rSrSrS\S\SS4S jr\S\	\   4S j5       r
S\4S	 jrS\4S
 jrSrg)Ú_LocalFileSourceé‡   a/  ``--find-links=<path-or-url>`` or ``--[extra-]index-url=<path-or-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.
rZ   r   r   Nc                 ó   • Xl         X l        g rO   ©r]   Ú_link©r   rZ   r   s      r   rB   Ú_LocalFileSource.__init__‘   ó   € ð
 &:Ô"Ø�
r!   c                 ó   • U R                   $ rO   ©ro   r   s    r   r   Ú_LocalFileSource.link™   ó   € à�z‰zÐr!   c              #   ó    #   • [        U R                  R                  5      (       d  g U R                  U R                  5       S h  v•N   g  N7frO   )r7   ro   rJ   r]   r   s    r   r#   Ú _LocalFileSource.page_candidates�   s3   é € Ü˜TŸZ™ZŸ^™^×,Ñ,ØØ×-Ñ-¨d¯j©jÓ9×9Ó9ùs   ‚AAÁAÁAc              #   ór   #   • [        U R                  R                  5      (       a  g U R                  v •  g 7frO   )r7   ro   rJ   r   s    r   r'   Ú_LocalFileSource.file_links¢   s%   é € Ü˜Ÿ™Ÿ™×(Ñ(ØØ�j‰jÓùs   ‚57rn   ©r*   r+   r,   r-   rT   ri   r   rB   r.   r   r   r/   r#   r0   r'   r1   r)   r!   r   rk   rk   ‡   s_   † ñðà0ðð ðð 
ô	ð ð�h˜t‘nó ó ðð: ô :ð
˜J÷ r!   rk   c                   ól   • \ rS rSrSrS\S\S\SS4S jr\	S\
\   4S	 j5       rS\4S
 jrS\4S jrSrg)Ú_RemoteFileSourceé¨   z¨``--find-links=<url>`` or ``--[extra-]index-url=<url>``.

This returns:

* ``page_candidates``: Links listed on an HTML file.
* ``file_candidates``: The non-HTML file.
rZ   Úpage_validatorr   r   Nc                 ó(   • Xl         X l        X0l        g rO   )r]   Ú_page_validatorro   )r   rZ   r   r   s       r   rB   Ú_RemoteFileSource.__init__±   s   € ð &:Ô"Ø-ÔØ�
r!   c                 ó   • U R                   $ rO   rt   r   s    r   r   Ú_RemoteFileSource.link»   rv   r!   c              #   ó˜   #   • U R                  U R                  5      (       d  g U R                  U R                  5       S h  v•N   g  N7frO   )r�   ro   r]   r   s    r   r#   Ú!_RemoteFileSource.page_candidates¿   s5   é € Ø×#Ñ# D§J¡J×/Ñ/ØØ×-Ñ-¨d¯j©jÓ9×9Ó9ùs   ‚A A
ÁAÁA
c              #   ó(   #   • U R                   v •  g 7frO   rt   r   s    r   r'   Ú_RemoteFileSource.file_linksÄ   s   é € Ø�j‰jÓùs   ‚)r]   ro   r�   )r*   r+   r,   r-   rT   ri   ÚPageValidatorr   rB   r.   r   r   r/   r#   r0   r'   r1   r)   r!   r   r}   r}   ¨   si   † ñðà0ðð &ðð ð	ð
 
ôð ð�h˜t‘nó ó ðð: ô :ð
˜J÷ r!   r}   c                   óh   • \ rS rSrSrS\S\SS4S jr\S\	\   4S j5       r
S\4S	 jrS\4S
 jrSrg)Ú_IndexDirectorySourceéÈ   z«``--[extra-]index-url=<path-to-directory>``.

This is treated like a remote URL; ``candidates_from_page`` contains logic
for this by appending ``index.html`` to the link.
rZ   r   r   Nc                 ó   • Xl         X l        g rO   rn   rp   s      r   rB   Ú_IndexDirectorySource.__init__Ï   rr   r!   c                 ó   • U R                   $ rO   rt   r   s    r   r   Ú_IndexDirectorySource.link×   rv   r!   c              #   óV   #   • U R                  U R                  5       S h  v•N   g  N7frO   rn   r   s    r   r#   Ú%_IndexDirectorySource.page_candidatesÛ   s   é € Ø×-Ñ-¨d¯j©jÓ9×9Ó9ùs   ‚)¡'¢)c                 ó   • g)Nr)   r)   r   s    r   r'   Ú _IndexDirectorySource.file_linksÞ   s   € Ør!   rn   r{   r)   r!   r   r‹   r‹   È   s_   † ñðà0ðð ðð 
ô	ð ð�h˜t‘nó ó ðð: ô :ð˜J÷ r!   r‹   ÚlocationrZ   r   Ú
expand_dirÚcache_link_parsingr[   c          	      ó~  • S nS n[         R                  R                  U 5      (       a  [        U 5      nU nO6U R	                  S5      (       a  U n[        U 5      nO[        U 5      (       a  U nUc  Sn[        R                  X€5        gUc  [        UU[        XtS9S9n	Xy4$ [         R                  R                  U5      (       a)  U(       a  [        UUUS9n	Xy4$ [        U[        XtS9S9n	Xy4$ [         R                  R                  U5      (       a  [        U[        XtS9S9n	Xy4$ [        R                  SU 5        US 4$ )	Nzfile:zVLocation '%s' is ignored: it is either a non-existing path or lacks a specific scheme.)NN)r—   )rZ   r   r   )rZ   r;   r[   )rZ   r   z?Location '%s' is ignored: it is neither a file nor a directory.)rE   r;   Úexistsr   Ú
startswithr   r   ÚloggerÚwarningr}   r   ÚisdirrW   r‹   Úisfilerk   )
r•   rZ   r   r–   r—   r[   r;   rJ   ÚmsgÚsources
             r   Úbuild_sourcer¡   â   sL  € ð €DØ€CÜ	‡w�w‡~�~�h×ÑÜ˜(Ó#ˆØ‰Ø	×	Ñ	˜W×	%Ñ	%ØˆÜ˜8Ó$‰Ü	�×	Ñ	Øˆà
�{ðKð 	ô 	�‰�sÔ%Øà�|Ü.Ø!5Ø)Ü�cÑAñ
ˆð
 ˆ}Ðä	‡w�w‡}�}�T×ÑÞÜ)Ø%9ØØ)ñˆFð ˆ}Ðô	 +Ø%9Ü˜#ÑEñˆFð ˆ}ÐÜ	�‰�‰˜×	Ñ	Ü!Ø!5Ü�cÑAñ
ˆð ˆ}ÐÜ
‡N�NØIØôð �ˆ;Ðr!   )-Úloggingr5   rE   Úcollectionsr   Útypingr   r   r   r   r   r	   Úpip._vendor.packaging.utilsr
   r   r   r   r   r   Úpip._internal.models.candidater   Úpip._internal.models.linkr   Úpip._internal.utils.urlsr   r   Úpip._internal.vcsr   Ú	getLoggerr*   r›   r/   r0   ri   Úboolr‰   r   rU   r7   r9   rW   rk   r}   r‹   r¡   r)   r!   r   Ú<module>r¬      s6  ðÛ Û Û 	Ý #ß B× B÷÷ õ AÝ *ß =Ý $à	×	Ò	˜8Ó	$€àÐ0Ñ1€Ø�d‰^€
Ø˜t˜f hÐ/DÑ&EÐEÑFÐ Ø˜$˜ ˜Ñ&€÷$ñ $ðJ˜Cð J Dô J÷,*ñ ,*ô^%˜:ô %ôP�zô ôB˜
ô ô@˜Jô ð4;Øð;ð -ð;ð "ð	;ð
 ð;ð ð;ð ð;ð ˆ8�C‰=˜( :Ñ.Ð.Ñ/õ;r!   