ó
    T=ŒjÂ@  ã                  ó  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKJrJrJrJr  SSKJr  SSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJ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)  SSK*J+r+  SSK,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9J:r:J;r;  \	Rx                  " \=5      r>\\?\?4   r@S5S jrA " S S\B5      rCS6S jrD " S S\B5      rES7S jrF S8       S9S jjrGS:S  jrH " S! S"5      rI " S# S$\5      rJS;S% jrK\KS<S' j5       rL\" S(S)9 " S* S&5      5       rM " S+ S,\5      rN S=       S>S- jjrO S?     S@S. jjrPSS/.       SAS0 jjrQ " S1 S2\5      rR " S3 S45      rSg)BzO
The main purpose of this module is to expose LinkCollector.collect_sources().
é    )ÚannotationsN)ÚCallableÚIterableÚMutableMappingÚSequence)Ú	dataclass)Ú
HTMLParser)ÚValues)Ú
NamedTupleÚProtocol)Úcanonicalize_name)ÚResponse)Ú
RetryError)ÚConnectionFailedErrorÚConnectionTimeoutErrorÚNetworkConnectionErrorÚProxyConnectionErrorÚSSLMissingErrorÚSSLVerificationError)ÚLink)ÚSearchScope)Ú
PipSession)Úraise_for_status)Úis_archive_file©Úredact_auth_from_url)Úurl_to_path)Úvcsé   )ÚCandidatesFromPageÚ
LinkSourceÚbuild_sourcec                óª   • [         R                   H?  nU R                  5       R                  U5      (       d  M)  U [	        U5         S;   d  M=  Us  $    g)z_Look for VCS schemes in the URL.

Returns the matched VCS scheme, or None if there's no match.
z+:N)r   ÚschemesÚlowerÚ
startswithÚlen)ÚurlÚschemes     Úa/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_internal/index/collector.pyÚ_match_vcs_schemer+   4   sC   € ô
 —+”+ˆØ�9‰9‹;×!Ñ! &×)Ó)¨c´#°f³+Ñ.>À$Õ.FØŠMñ ð ó    c                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )Ú_NotAPIContenté?   c                ó<   >• [         TU ]  X5        Xl        X l        g ©N)ÚsuperÚ__init__Úcontent_typeÚrequest_desc)Úselfr4   r5   Ú	__class__s      €r*   r3   Ú_NotAPIContent.__init__@   s   ø€ Ü‰Ñ˜Ô4Ø(ÔØ(Õr,   )r4   r5   )r4   Ústrr5   r9   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r3   Ú__static_attributes__Ú__classcell__©r7   s   @r*   r.   r.   ?   s   ø† ÷)õ )r,   r.   c                óÆ   • U R                   R                  SS5      nUR                  5       nUR                  S5      (       a  g[	        XR
                  R                  5      e)z 
Check the Content-Type header to ensure the response contains a Simple
API Response.

Raises `_NotAPIContent` if the content type is not a valid content-type.
úContent-TypeÚUnknown)z	text/htmlz#application/vnd.pypi.simple.v1+htmlú#application/vnd.pypi.simple.v1+jsonN)ÚheadersÚgetr%   r&   r.   ÚrequestÚmethod)Úresponser4   Úcontent_type_ls      r*   Ú_ensure_api_headerrM   F   s^   € ð ×#Ñ#×'Ñ'¨¸	ÓB€Là!×'Ñ'Ó)€NØ× Ñ ð	
÷ñ ð 	ä
˜×'7Ñ'7×'>Ñ'>Ó
?Ð?r,   c                  ó   • \ rS rSrSrg)Ú_NotHTTPé\   © N)r<   r=   r>   r?   r@   rQ   r,   r*   rO   rO   \   s   † Úr,   rO   c                ó¶   • [         R                  R                  U 5      u  p#pEnUS;  a
  [        5       eUR	                  U SS9n[        U5        [        U5        g)zá
Send a HEAD request to the URL, and ensure the response contains a simple
API Response.

Raises `_NotHTTP` if the URL is not available for a HEAD request, or
`_NotAPIContent` if the content type is not a valid content type.
>   ÚhttpÚhttpsT)Úallow_redirectsN)ÚurllibÚparseÚurlsplitrO   Úheadr   rM   )r(   Úsessionr)   ÚnetlocÚpathÚqueryÚfragmentÚresps           r*   Ú_ensure_api_responser`   `   sR   € ô -3¯L©L×,AÑ,AÀ#Ó,FÑ)€F�D ØÐ&Ó&Ü‹jÐà�<‰<˜¨Tˆ<Ð2€DÜ�TÔä�tÕr,   Fc                óÆ  • [        [        U 5      R                  5      (       a	  [        XS9  [        R                  S[        U 5      5        SSR                  / SQ5      0nU(       a  [        R                  S5        SUS'   UR                  XS	9n[        U5        [        U5        [        R                  S
[        U 5      UR                  R                  SS5      5        U$ )a5  Access an Simple API response with GET, and return the response.

This consists of three parts:

1. If the URL looks suspiciously like an archive, send a HEAD first to
   check the Content-Type is HTML or Simple API, to avoid downloading a
   large file. Raise `_NotHTTP` if the content type cannot be determined, or
   `_NotAPIContent` if it is not HTML or a Simple API.
2. Actually perform the request. Raise HTTP exceptions on network failures.
3. Check the Content-Type header to make sure we got a Simple API response,
   and raise `_NotAPIContent` otherwise.
)rZ   zGetting page %sÚAcceptz, )rF   z*application/vnd.pypi.simple.v1+html; q=0.1ztext/html; q=0.01z"Refreshing package index response.z	max-age=0zCache-Control)rG   zFetched page %s as %srD   rE   )r   r   Úfilenamer`   ÚloggerÚdebugr   ÚjoinrH   r   rM   rG   )r(   rZ   Úforce_revalidaterG   r_   s        r*   Ú_get_simple_responserh   r   sÄ   € ô" ”t˜C“y×)Ñ)×*Ñ*Ü˜SÒ2ä
‡L�LÐ"Ô$8¸Ó$=Ô>ð 	�$—)‘)òó
ð€Gö ô 	�‰Ð9Ô:Ø#.ˆ�Ñ à�;‰;�sˆ;Ð,€DÜ�TÔô �tÔä
‡L�LØÜ˜SÓ!Ø�‰×Ñ˜¨Ó3ôð €Kr,   c                ó°   • U (       aO  SU ;   aI  [         R                  R                  5       nU S   US'   UR                  S5      nU(       a  [	        U5      $ g)z=Determine if we have any encoding information in our headers.rD   zcontent-typeÚcharsetN)ÚemailÚmessageÚMessageÚ	get_paramr9   )rG   Úmrj   s      r*   Ú_get_encoding_from_headersrp   ­   sK   € æ�> WÓ,Ü�M‰M×!Ñ!Ó#ˆØ# NÑ3ˆˆ.ÑØ—+‘+˜iÓ(ˆÞÜ�w“<ÐØr,   c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚCacheablePageContenté¸   c                ó6   • UR                   (       d   eXl        g r1   )Úcache_link_parsingÚpage©r6   rv   s     r*   r3   ÚCacheablePageContent.__init__¹   s   € Ø×&×&Ð&Ð&Ø�	r,   c                ó”   • [        U[        U 5      5      =(       a-    U R                  R                  UR                  R                  :H  $ r1   )Ú
isinstanceÚtyperv   r(   )r6   Úothers     r*   Ú__eq__ÚCacheablePageContent.__eq__½   s-   € Ü˜%¤ d£Ó,×P°·±·±À%Ç*Á*Ç.Á.Ñ1PÐPr,   c                ó@   • [        U R                  R                  5      $ r1   )Úhashrv   r(   ©r6   s    r*   Ú__hash__ÚCacheablePageContent.__hash__À   s   € Ü�D—I‘I—M‘MÓ"Ð"r,   )rv   N)rv   ÚIndexContentr:   r;   )r|   Úobjectr:   Úbool)r:   Úint)r<   r=   r>   r?   r3   r}   r‚   r@   rQ   r,   r*   rr   rr   ¸   s   † ôôQ÷#r,   rr   c                  ó   • \ rS rSrSS jrSrg)Ú
ParseLinkséÄ   c                ó   • g r1   rQ   rw   s     r*   Ú__call__ÚParseLinks.__call__Å   s   € ¸cr,   rQ   N©rv   r„   r:   zIterable[Link])r<   r=   r>   r?   rŒ   r@   rQ   r,   r*   r‰   r‰   Ä   s   † ßAr,   r‰   c                ó„   ^ ^• [         R                  SU 4S jj5       m[         R                  " T 5      SU U4S jj5       nU$ )zÊ
Given a function that parses an Iterable[Link] from an IndexContent, cache the
function's result (keyed by CacheablePageContent), unless the IndexContent
`page` has `page.cache_link_parsing == False`.
c                ó:   >• [        T" U R                  5      5      $ r1   )Úlistrv   )Úcacheable_pageÚfns    €r*   ÚwrapperÚ*with_cached_index_content.<locals>.wrapperÏ   s   ø€ ä‘B�~×*Ñ*Ó+Ó,Ð,r,   c                ój   >• U R                   (       a  T" [        U 5      5      $ [        T" U 5      5      $ r1   )ru   rr   r‘   )rv   r“   r”   s    €€r*   Úwrapper_wrapperÚ2with_cached_index_content.<locals>.wrapper_wrapperÓ   s+   ø€ à×"×"ÙÔ/°Ó5Ó6Ð6Ü‘B�t“H‹~Ðr,   )r’   rr   r:   ú
list[Link])rv   r„   r:   r™   )Ú	functoolsÚcacheÚwraps)r“   r—   r”   s   ` @r*   Úwith_cached_index_contentr�   È   s@   ù€ ô ‡_�_ö-ó ð-ô ‡_‚_�RÓ÷ó ðð
 Ðr,   r„   c              #  ó~  #   • U R                   R                  5       nUR                  S5      (       ac  [        R                  " U R
                  5      nUR                  S/ 5       H,  n[        R                  " X0R                  5      nUc  M(  Uv •  M.     g[        U R                  5      nU R                  =(       d    SnUR                  U R
                  R                  U5      5        U R                  nUR                  =(       d    UnUR                   H!  n	[        R                   " X—US9nUc  M  Uv •  M#     g7f)zT
Parse a Simple API's Index Content, and yield its anchor elements as Link objects.
rF   ÚfilesNzutf-8)Úpage_urlÚbase_url)r4   r%   r&   ÚjsonÚloadsÚcontentrH   r   Ú	from_jsonr(   ÚHTMLLinkParserÚencodingÚfeedÚdecoder¡   ÚanchorsÚfrom_element)
rv   rL   ÚdataÚfileÚlinkÚparserr§   r(   r¡   Úanchors
             r*   Úparse_linksr±   Ü   só   é € ð ×&Ñ&×,Ñ,Ó.€NØ× Ñ Ð!F×GÑGÜ�zŠz˜$Ÿ,™,Ó'ˆØ—H‘H˜W bÖ)ˆDÜ—>’> $¯©Ó1ˆDØ‰|ÙØŒJñ	 *ð
 	ä˜DŸH™HÓ%€FØ�}‰}×' €HØ
‡K�K�—‘×#Ñ# HÓ-Ô.à
�(‰(€CØ�‰×% #€HØ—.”.ˆÜ× Ò  ÀÑIˆØ‰<ÙØŒ
ò	 !ùs   ‚D;D=T)Úfrozenc                  óZ   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
rS\S'   SS jrSrg)r„   éù   at  Represents one response (or page), along with its URL.

:param encoding: the encoding to decode the given content.
:param url: the URL from which the HTML was downloaded.
:param cache_link_parsing: whether links parsed from this page's url
                           should be cached. PyPI index urls should
                           have this set to False, for example.
Úbytesr¤   r9   r4   ú
str | Noner§   r(   Tr†   ru   c                ó,   • [        U R                  5      $ r1   )r   r(   r�   s    r*   Ú__str__ÚIndexContent.__str__
  s   € Ü# D§H¡HÓ-Ð-r,   rQ   N)r:   r9   )	r<   r=   r>   r?   Ú__doc__Ú__annotations__ru   r¸   r@   rQ   r,   r*   r„   r„   ù   s/   ‡ ñð ƒNØÓØÓØ	ƒHØ#Ð˜Ó#÷.r,   c                  óD   ^ • \ rS rSrSrSU 4S jjrSS jrS	S jrSrU =r	$ )
r¦   i  zZ
HTMLParser that keeps the first base HREF and a list of all anchor
elements' attributes.
c                óH   >• [         TU ]  SS9  Xl        S U l        / U l        g )NT)Úconvert_charrefs)r2   r3   r(   r¡   rª   )r6   r(   r7   s     €r*   r3   ÚHTMLLinkParser.__init__  s&   ø€ Ü‰Ñ¨$ÐÑ/àŒØ$(ˆŒØ46ˆ�r,   c                ó¸   • US:X  a)  U R                   c  U R                  U5      nUb  X0l         g g US:X  a%  U R                  R                  [	        U5      5        g g )NÚbaseÚa)r¡   Úget_hrefrª   ÚappendÚdict)r6   ÚtagÚattrsÚhrefs       r*   Úhandle_starttagÚHTMLLinkParser.handle_starttag  sR   € Ø�&‹=˜TŸ]™]Ñ2Ø—=‘= Ó'ˆDØÑØ $•ð  à�C‹ZØ�L‰L×Ñ¤ U£Õ,ð r,   c                ó.   • U H  u  p#US:X  d  M  Us  $    g )NrÈ   rQ   )r6   rÇ   ÚnameÚvalues       r*   rÃ   ÚHTMLLinkParser.get_href#  s   € Û ‰KˆDØ�v�~Ø’ñ !ð r,   )rª   r¡   r(   )r(   r9   r:   r;   )rÆ   r9   rÇ   úlist[tuple[str, str | None]]r:   r;   )rÇ   rÏ   r:   r¶   )
r<   r=   r>   r?   rº   r3   rÉ   rÃ   r@   rA   rB   s   @r*   r¦   r¦     s   ø† ñ÷
7ô-÷ò r,   r¦   c                ó<   • Uc  [         R                  nU" SX5        g )Nz%Could not fetch URL %s: %s - skipping)rd   re   )r®   ÚreasonÚmeths      r*   Ú_handle_get_simple_failrÓ   *  s   € ð
 �|Ü�|‰|ˆÙÐ	0°$Õ?r,   c                óˆ   • [        U R                  5      n[        U R                  U R                  S   UU R                  US9$ )NrD   )r§   r(   ru   )rp   rG   r„   r¤   r(   )rK   ru   r§   s      r*   Ú_make_index_contentrÕ   4  sE   € ô *¨(×*:Ñ*:Ó;€HÜØ×ÑØ×Ñ˜Ñ(ØØ�L‰LØ-ñð r,   )rg   c               ó’  • U R                   R                  SS5      S   n[        U5      nU(       a  [        R	                  SUU 5        g UR                  S5      (       a~  [        R                  R                  [        U5      5      (       aQ  UR                  S5      (       d  US-  n[        R                  R                  US5      n[        R                  SU5         [        X1US	9n[!        XPR"                  S
9$ ! [$         a    [        R	                  SU 5         g [&         a6  n[        R	                  SU UR(                  UR*                  5         S nAg S nAf[,        [.        4 a  n[1        X5         S nAg S nAf[2        [4        4 a1  nSUR6                   3n[1        X[        R8                  S9   S nAg S nAf[:         a#  n[1        U SUR6                   35         S nAg S nAf[<         a#  n[1        U SUR6                   35         S nAg S nAf[>         a)  n[1        U [A        UR6                  5      5         S nAg S nAff = f)NÚ#r   r   zICannot look at %s URL %s because it does not support lookup as web pages.zfile:Ú/z
index.htmlz# file: URL is directory, getting %s©rZ   rg   )ru   z`Skipping page %s because it looks like an archive, and cannot be checked by a HTTP HEAD request.zºSkipping page %s because the %s request got Content-Type: %s. The only supported Content-Types are application/vnd.pypi.simple.v1+json, application/vnd.pypi.simple.v1+html, and text/htmlz4There was a problem confirming the ssl certificate: )rÒ   zconnection error: zproxy connection error: )!r(   Úsplitr+   rd   Úwarningr&   Úosr\   Úisdirr   ÚendswithrV   rW   Úurljoinre   rh   rÕ   ru   rO   r.   r5   r4   r   r   rÓ   r   r   ÚcontextÚinfor   r   r   r9   )r®   rZ   rg   r(   Ú
vcs_schemer_   ÚexcrÑ   s           r*   Ú_get_index_contenträ   A  s  € ð �(‰(�.‰.˜˜aÓ
  Ñ
#€Cô # 3Ó'€JÞÜ�‰ØWØØô	
ð
 ð ‡~�~�g×Ñ¤2§7¡7§=¡=´¸SÓ1A×#BÑ#Bð �|‰|˜C× Ñ Ø�3‰JˆCô
 �l‰l×"Ñ" 3¨Ó5ˆÜ�‰Ð:¸CÔ@ðUÜ#ØÐ3Cñ
ˆô< # 4×<SÑ<SÑTÐTøô7 ó 
Ü�‰ð1àõ	
ð6 ô- ó 
Ü�‰ðAð Ø×ÑØ×Ñ÷	
ð 	
ð* ûô Ô.Ð/ó +Ü ×*Ð*ð ûô !¤/Ð2ó @ØGÈÏÉÀ}ÐUˆÜ ´6·;±;Ö?ð ûô !ó JÜ Ð(:¸3¿;¹;¸-Ð&H×IÐIð ûô  ó PÜ Ð(@ÀÇÁÀÐ&N×OÐOð
 ûô	 "ó 8Ü ¤c¨#¯+©+Ó&6×7Ð7ð ûð	8úsZ   Ã
C< Ã< IÄ	IÄ',EÅIÅ+E;Å;IÆ'F:Æ:IÇG%Ç%IÇ2HÈIÈIÉIc                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚCollectedSourcesiƒ  zSequence[LinkSource | None]Ú
find_linksÚ
index_urlsrQ   N)r<   r=   r>   r?   r»   r@   rQ   r,   r*   ræ   ræ   ƒ  s   ‡ Ø+Ó+Ø+Ö+r,   ræ   c                  óš   • \ rS rSrSr      S
S jr\ S       SS jj5       r\SS j5       r	 S     SS jjr
      SS jrS	rg)ÚLinkCollectoriˆ  z¥
Responsible for collecting Link objects from all configured locations,
making network requests as needed.

The class's main method is its collect_sources() method.
c                ó   • X l         Xl        g r1   ©Úsearch_scoperZ   )r6   rZ   rí   s      r*   r3   ÚLinkCollector.__init__�  s   € ð
 )ÔØ�r,   c                óD  • UR                   /UR                  -   nUR                  (       a5  U(       d.  [        R	                  SSR                  S U 5       5      5        / nUR                  =(       d    / n[        R                  " UUUR                  S9n[        UUS9nU$ )z¦
:param session: The Session to use to make requests.
:param suppress_no_index: Whether to ignore the --no-index option
    when constructing the SearchScope object.
zIgnoring indexes: %sÚ,c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr1   r   )Ú.0r(   s     r*   Ú	<genexpr>Ú'LinkCollector.create.<locals>.<genexpr>¨  s   é € ÐIºj°sÔ-¨c×2Ð2ºjùs   ‚)rç   rè   Úno_index)rZ   rí   )
Ú	index_urlÚextra_index_urlsrõ   rd   re   rf   rç   r   Úcreaterê   )ÚclsrZ   ÚoptionsÚsuppress_no_indexrè   rç   rí   Úlink_collectors           r*   rø   ÚLinkCollector.create˜  sœ   € ð ×'Ñ'Ð(¨7×+CÑ+CÑCˆ
Ø××Ö$5Ü�L‰LØ&Ø—‘ÑI¹jÓIÓIôð ˆJð ×'Ñ'×-¨2ˆ
ä"×)Ò)Ø!Ø!Ø×%Ñ%ñ
ˆô
 'ØØ%ñ
ˆð Ðr,   c                ó.   • U R                   R                  $ r1   )rí   rç   r�   s    r*   rç   ÚLinkCollector.find_linksº  s   € à× Ñ ×+Ñ+Ð+r,   Nc                ó¢   • U R                   R                  nSU;   =(       d    USL=(       a    [        U5      U;   n[        UU R                   US9$ )z.
Fetch an HTML page containing package links.
z:all:NrÙ   )rZ   Úrefresh_packager   rä   )r6   ÚlocationÚpackage_namerg   Úshould_force_revalidates        r*   Úfetch_responseÚLinkCollector.fetch_response¾  s_   € ð  Ÿ<™<×7Ñ7ÐØ")Ð-=Ñ"=÷ #
Ø Ð$÷ DÜ! ,Ó/Ð3CÑCð 	 ô "ØØ—L‘LØ4ñ
ð 	
r,   c                ó   ^ ^^• [         R                  " UUU 4S jT R                  R                  T5       5       5      R	                  5       n[         R                  " UUU 4S jT R
                   5       5      R	                  5       n[        R                  [        R                  5      (       a€  [        R                  " XC5       Vs/ s H&  nUc  M  UR                  c  M  SUR                   3PM(     nn[        U5       ST S3/U-   n[        R                  SR                  U5      5        [!        [#        U5      [#        U5      S9$ s  snf )Nc           
   3  óh   >#   • U  H'  n[        UTTR                  R                  S S TS9v •  M)     g7f)F©Úcandidates_from_pageÚpage_validatorÚ
expand_dirru   Úproject_nameN©r"   rZ   Úis_secure_origin©rò   Úlocr
  r  r6   s     €€€r*   ró   Ú0LinkCollector.collect_sources.<locals>.<genexpr>Ø  s?   øé € ð 
4
ò P�ô ØØ%9Ø#Ÿ|™|×<Ñ<Ø Ø#(Ø)öò Pùó   ƒ/2c           
   3  óh   >#   • U  H'  n[        UTTR                  R                  S S TS9v •  M)     g7f)Tr	  Nr  r  s     €€€r*   ró   r  ã  s=   øé € ð 
5
ò '�ô ØØ%9Ø#Ÿ|™|×<Ñ<ØØ#'Ø)öò 'ùr  z* z' location(s) to search for versions of Ú:Ú
)rç   rè   )ÚcollectionsÚOrderedDictrí   Úget_index_urls_locationsÚvaluesrç   rd   ÚisEnabledForÚloggingÚDEBUGÚ	itertoolsÚchainr®   r'   re   rf   ræ   r‘   )r6   r  r
  Úindex_url_sourcesÚfind_links_sourcesÚsÚliness   ```    r*   Úcollect_sourcesÚLinkCollector.collect_sourcesÒ  s8  ú€ ô (×3Ò3ö 
4
ð ×(Ñ(×AÑAÀ,ÔOó
4
ó 

÷ ‰&‹(ð 	ô )×4Ò4ö 
5
ð —’ó
5
ó 

÷ ‰&‹(ð 	ô ×ÑœwŸ}™}×-Ñ-ô #ŸšÐ);ÔOóâO�AØó à%&§V¡Vó �"�Q—V‘V�H“ÙOð ð ô �u“:�,ð #Ø#/ .°ð3ðð ñˆEô �L‰L˜Ÿ™ 5Ó)Ô*äÜÐ.Ó/ÜÐ-Ó.ñ
ð 	
ùòs   ÃEÃEÃ!Erì   )rZ   r   rí   r   r:   r;   ©F)rZ   r   rú   r
   rû   r†   r:   rê   )r:   z	list[str]r1   )r  r   r  r¶   r:   úIndexContent | None)r  r9   r
  r    r:   ræ   )r<   r=   r>   r?   rº   r3   Úclassmethodrø   Úpropertyrç   r  r$  r@   rQ   r,   r*   rê   rê   ˆ  s¿   † ñðàðð "ðð 
ô	ð ð
 #(ð	àðð ðð  ð	ð
 
ôó ððB ó,ó ð,ð :>ð
Øð
Ø,6ð
à	õ
ð(,
àð,
ð 1ð,
ð 
÷	,
r,   rê   )r(   r9   r:   r¶   )rK   r   r:   r;   )r(   r9   rZ   r   r:   r;   r&  )r(   r9   rZ   r   rg   r†   r:   r   )rG   ÚResponseHeadersr:   r¶   )r“   r‰   r:   r‰   rŽ   r1   )r®   r   rÑ   zstr | ExceptionrÒ   zCallable[..., None] | Noner:   r;   )T)rK   r   ru   r†   r:   r„   )r®   r   rZ   r   rg   r†   r:   r'  )Trº   Ú
__future__r   r  Úemail.messagerk   rš   r  r¢   r  rÜ   Úurllib.parserV   Úcollections.abcr   r   r   r   Údataclassesr   Úhtml.parserr	   Úoptparser
   Útypingr   r   Úpip._vendor.packaging.utilsr   Úpip._vendor.requestsr   Úpip._vendor.requests.exceptionsr   Úpip._internal.exceptionsr   r   r   r   r   r   Úpip._internal.models.linkr   Ú!pip._internal.models.search_scoper   Úpip._internal.network.sessionr   Úpip._internal.network.utilsr   Úpip._internal.utils.filetypesr   Úpip._internal.utils.miscr   Úpip._internal.utils.urlsr   Úpip._internal.vcsr   Úsourcesr    r!   r"   Ú	getLoggerr<   rd   r9   r*  r+   Ú	Exceptionr.   rM   rO   r`   rh   rp   rr   r‰   r�   r±   r„   r¦   rÓ   rÕ   rä   ræ   rê   rQ   r,   r*   Ú<module>rB     sã  ðñõ #ã Û Û Û Û Û Û 	Û ß HÓ HÝ !Ý "Ý ÷õ
 :Ý )Ý 6÷÷ õ +Ý 9Ý 4Ý 8Ý 9Ý 9Ý 0Ý !ç AÑ Aà	×	Ò	˜8Ó	$€à   c Ñ*€ôô)�Yô )ô@ô,	ˆyô 	ôð* #ð8Ø	ð8àð8ð ð8ð õ	8ôv÷	#ñ 	#ôB�ô Bôð( óó ðñ8 �$Ñ÷.ð .ó ð.ô(�Zô ð> (,ð@Ø
ð@àð@ð %ð@ð 
õ	@ð 48ð
Øð
Ø,0ð
àõ
ð" #ñ	?Ø
ð?ð ð?ð ð	?ð
 õ?ôD,�zô ,÷
v
ò v
r,   