Ë
    /æj)  ã                  óØ   — d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm	Z	 ddl
mZ ej                  rddlmZ dd„Zdd	„Zddd
„Zddd„Zdd„Zdd„Zdd„Z G d„ d«      Zdd„Zdd„Zy)é    )ÚannotationsN)Ú
getproxiesé   )Ú
InvalidURL)ÚPrimitiveData©ÚURLc                ó2   — | du ry| du ry| €yt        | «      S )z‡
    Coerce a primitive data type into a string value.

    Note that we prefer JSON-style 'true'/'false' for boolean values here.
    TÚtrueFÚfalseÚ )Ústr)Úvalues    úP/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/httpx2/_utils.pyÚprimitive_value_to_strr      s*   € ð ��}ØØ	�%‰ØØ	ˆØÜˆu‹:Ðó    c                 ó¶  — t        «       } i }dD ]*  }| j                  |«      sŒ| |   }d|v r|nd|› �||› d�<   Œ, | j                  dd«      j                  d«      D �cg c]  }|j                  «       ‘Œ }}|D ]©  }|dk(  ri c S |sŒd|v rd||<   Œt	        |«      r	d|d	|› �<   Œ-t        |«      r/d
|v r!|j                  d
«      \  }}}d|d|› d|› �<   Œ]d|d|› d�<   Œg|j                  «       dk(  r	d|d	|› �<   Œƒ|j                  d«      r	d|d	|› �<   Œ�d
|vsŒ¢d|d|› �<   Œ« t        |«      D ]  }		 t        |	«       Œ |S c c}w # t        $ r ||	= Y Œ&w xY w)z+Gets proxy information from the environment)ÚhttpÚhttpsÚallz://zhttp://Únor   ú,Ú*Nzall://ú/zall://[z]/ú]Ú	localhostú[zall://*)r   ÚgetÚsplitÚstripÚis_ipv4_hostnameÚis_ipv6_hostnameÚ	partitionÚlowerÚ
startswithÚlistÚ
URLPatternr   )
Ú
proxy_infoÚmountsÚschemeÚhostnameÚhostÚno_proxy_hostsÚaddrÚ_ÚsubnetÚpatterns
             r   Úget_environment_proxiesr2      sË  € ô “€JØ$&€Fà*ò ]ˆØ�>‰>˜&Õ!Ø! &Ñ)ˆHØ16¸(Ñ1B¡XÈ'ÐRZÐQ[ÐH\ˆF�f�X˜S�>Ò"ð]ð
 0:¯~©~¸dÀBÓ/G×/MÑ/MÈcÓ/RÖS t�d—j‘j•lÐS€NÐSØ"ò  4ˆð �sŠ?ð
 ŠIÚð ˜Ñ Ø#'��xÒ Ü! (Ô+Ø.2�˜ ˜zÐ*Ò+Ü! (Ô+Ø˜(‘?Ø&.×&8Ñ&8¸Ó&=‘O�D˜!˜VØ9=�F˜W T F¨"¨V¨HÐ5Ò6à48�F˜W X J¨aÐ0Ò1Ø—‘Ó! [Ò0Ø.2�˜ ˜zÐ*Ò+Ø×$Ñ$ SÔ)Ø.2�˜ ˜zÐ*Ò+Ø˜HÒ$Ø/3�˜  
Ð+Ò,ðA 4ôD ˜“<ò  ˆð	 Ü�wÕð ð €MùòS TøôL ò 	 Ø�w’ð	 ús   ÁEÄ5E	Å	EÅEc                óH   — t        | t        «      r| j                  |«      S | S ©N©Ú
isinstancer   Úencode©r   Úencodings     r   Úto_bytesr:   Z   s   € Ü%/°´sÔ%;ˆ5�<‰<˜Ó!ÐFÀÐFr   c                óH   — t        | t        «      r| S | j                  |«      S r4   )r6   r   Údecoder8   s     r   Úto_strr=   ^   s   € Ü˜u¤cÔ*ˆ5ÐF°·±¸XÓ0FÐFr   c                óF   — t        |t        «      r| S | j                  «       S r4   r5   )r   Úmatch_type_ofs     r   Úto_bytes_or_strr@   b   s   € Ü˜}¬cÔ2ˆ5ÐF¸¿¹»ÐFr   c                óB  — 	 | j                  «       }t        j                  |«      j                  }|S # t        t
        f$ r\ 	 | j                  «       }| j                  dt        j                  «      }| j                  |«       Y |S # t        t
        f$ r Y Y yw xY ww xY w)zs
    Given a file-like stream object, return its length in number of bytes
    without reading it into memory.
    r   N)	ÚfilenoÚosÚfstatÚst_sizeÚAttributeErrorÚOSErrorÚtellÚseekÚSEEK_END)ÚstreamÚfdÚlengthÚoffsets       r   Úpeek_filelike_lengthrO   f   s”   € ð
à�]‰]‹_ˆä—‘˜"“×%Ñ%ˆð €Møô œGÐ$ò 
ð	ð —[‘[“]ˆFØ—[‘[ ¤B§K¡KÓ0ˆFØ�K‰K˜Õð
 €Møô	 ¤Ð(ò 	âð	úð
ús(   ‚/3 ³BÁABÂBÂBÂBÂBc                óÎ   — 	 | j                  «       }| j                  dt        j                  «      }| j                  |«       t        d||z
  «      S # t        t
        f$ r Y yw xY w)zFReturn the remaining byte length without changing the stream position.r   N)rH   rI   rC   rJ   rF   rG   Úmax)rK   rN   rM   s      r   Úpeek_filelike_remaining_lengthrR      s^   € ðØ—k‘k“mˆØ—k‘k !¤R§[¡[Ó1ˆØ�‰�FÔô ˆq�&˜6‘/Ó"Ð"øô œGÐ$ò Ùðús   ‚AA ÁA$Á#A$c                  óJ   — e Zd ZdZd	d„Zd
d„Zedd„«       Zdd„Zdd„Z	dd„Z
y)r'   aÖ  
    A utility class currently used for making lookups against proxy keys...

    # Wildcard matching...
    >>> pattern = URLPattern("all://")
    >>> pattern.matches(httpx2.URL("http://example.com"))
    True

    # Witch scheme matching...
    >>> pattern = URLPattern("https://")
    >>> pattern.matches(httpx2.URL("https://example.com"))
    True
    >>> pattern.matches(httpx2.URL("http://example.com"))
    False

    # With domain matching...
    >>> pattern = URLPattern("https://example.com")
    >>> pattern.matches(httpx2.URL("https://example.com"))
    True
    >>> pattern.matches(httpx2.URL("http://example.com"))
    False
    >>> pattern.matches(httpx2.URL("https://other.com"))
    False

    # Wildcard scheme, with domain matching...
    >>> pattern = URLPattern("all://example.com")
    >>> pattern.matches(httpx2.URL("https://example.com"))
    True
    >>> pattern.matches(httpx2.URL("http://example.com"))
    True
    >>> pattern.matches(httpx2.URL("https://other.com"))
    False

    # With port matching...
    >>> pattern = URLPattern("https://example.com:1234")
    >>> pattern.matches(httpx2.URL("https://example.com:1234"))
    True
    >>> pattern.matches(httpx2.URL("https://example.com"))
    False
    c                ó`  — ddl m} |rd|vrt        d|› d|› d�«      ‚ ||«      }d | _        |j                  j                  d«      }|r¼t        |j                  «      st        |j                  «      r’d|j                  v rd|j                  › d	�n|j                  }d
|v s*d|v s&|j                  «       r|j                  |› d|› �«      st        d|›�«      ‚	 t        j                  |j                  › d|› �d¬«      | _        || _        |j                  dk(  rdn|j                  | _        |j                  dk(  rdn|j                  | _        |j                   | _        | j                  �d | _        y |j                  r|j                  dk(  rd | _        y |j                  j%                  d«      rAt'        j(                  |j                  dd  «      }t'        j*                  d|› d�«      | _        y |j                  j%                  d«      rAt'        j(                  |j                  dd  «      }t'        j*                  d|› d�«      | _        y t'        j(                  |j                  «      }t'        j*                  d|› d�«      | _        y # t        $ r}t        d|›�«      |‚d }~ww xY w)Nr   r   ú:zUProxy keys should use proper URL forms rather than plain scheme strings. Instead of "z", use "z://"r   r   r   ú@ú%zInvalid network in F)Ústrictr   r   r   z*.é   z^.+\.ú$z^(.+\.)?ú^)Ú_urlsr	   Ú
ValueErrorÚnetworkÚpathÚremoveprefixr!   r,   r"   ÚisdigitÚendswithr   Ú	ipaddressÚ
ip_networkr1   r*   ÚportÚ
host_regexr%   ÚreÚescapeÚcompile)Úselfr1   r	   ÚurlÚprefixr,   ÚexcÚdomains           r   Ú__init__zURLPattern.__init__µ   sL  € Ýá�s 'Ñ)Üðà&˜i x°¨y¸ð>óð ñ �'‹lˆØˆŒØ—‘×&Ñ& sÓ+ˆÙÔ'¨¯©Ô1Ô5EÀcÇhÁhÔ5Oà&)¨S¯X©X¡o�Q�s—x‘x�j ‘?¸3¿8¹8ˆDØ�g‰~ ¨¡°v·~±~Ô7GÈw×O_ÑO_ÐcgÐbhÐhiÐjpÐiqÐ`rÔOsÜ Ð#6°w°kÐ!BÓCÐCðMÜ(×3Ñ3°s·x±x°jÀÀ&ÀÐ4JÐSXÔY�”ð ˆŒØŸJ™J¨%Ò/‘b°S·Z±ZˆŒØŸ(™( cš/‘B¨s¯x©xˆŒ	Ø—H‘HˆŒ	Ø�<‰<Ð#Ø:>ˆD�OØ—’˜SŸX™X¨š_Ø"ˆD�OØ�X‰X× Ñ  Ô&ä—Y‘Y˜sŸx™x¨¨˜|Ó,ˆFÜ Ÿj™j¨6°&°¸Ð);Ó<ˆD�OØ�X‰X× Ñ  Ô%ä—Y‘Y˜sŸx™x¨¨˜|Ó,ˆFÜ Ÿj™j¨9°V°H¸AÐ)>Ó?ˆD�Oô —Y‘Y˜sŸx™xÓ(ˆFÜ Ÿj™j¨1¨V¨H°A¨Ó7ˆD�Oøô- ò MÜ Ð#6°w°kÐ!BÓCÈÐLûðMús   Ã+J Ê	J-ÊJ(Ê(J-c                ó¬  — | j                   r| j                   |j                   k7  ry| j                  �/	 t        j                  |j                  «      }|| j                  vr?y| j                  r2| j                  �&| j                  j                  |j                  «      sy| j                  �| j                  |j                  k7  ryy# t
        $ r Y yw xY w)NFT)	r*   r^   rc   Ú
ip_addressr,   r]   rf   Úmatchre   )rj   ÚotherÚother_addresss      r   ÚmatcheszURLPattern.matchesá   s­   € Ø�;Š;˜4Ÿ;™;¨%¯,©,Ò6ØØ�<‰<Ð#ðÜ )× 4Ñ 4°U·Z±ZÓ @�ð  D§L¡LÑ0ØØ�YŠY˜4Ÿ?™?Ð6¸t¿¹×?TÑ?TÐUZ×U_ÑU_Ô?`ØØ�9‰9Ð  T§Y¡Y°%·*±*Ò%<ØØøô ò Ùðús   ´C Ã	CÃCc                ó(  — | j                   �dnd}| j                  �dn| j                  rdnd}| j                  �| j                  j                  nd}| j                  €t	        | j                  «       nd}t	        | j
                  «       }|||||fS )z�
        The priority allows URLPattern instances to be sortable, so that
        we can match from most specific to least specific.
        r   r   rY   )re   r^   r,   Únum_addressesÚlenr*   )rj   Úport_priorityÚhost_kind_priorityÚnetwork_priorityÚhost_priorityÚscheme_prioritys         r   ÚpriorityzURLPattern.priorityñ   s‰   € ð "ŸY™YÐ2™¸ˆà"&§,¡,Ð":™QÀTÇYÂYÁÐTUÐà9=¿¹Ð9Q˜4Ÿ<™<×5Ò5ÐWXÐà+/¯<©<Ð+?œ˜TŸY™Y›™ÀQˆä˜tŸ{™{Ó+Ð+ˆØÐ1Ð3CÀ]ÐTcÐdÐdr   c                ó,   — t        | j                  «      S r4   )Úhashr1   )rj   s    r   Ú__hash__zURLPattern.__hash__  s   € Ü�D—L‘LÓ!Ð!r   c                ó4   — | j                   |j                   k  S r4   )r~   ©rj   rs   s     r   Ú__lt__zURLPattern.__lt__  s   € Ø�}‰}˜uŸ~™~Ñ-Ð-r   c                óX   — t        |t        «      xr | j                  |j                  k(  S r4   )r6   r'   r1   rƒ   s     r   Ú__eq__zURLPattern.__eq__	  s!   € Ü˜%¤Ó,ÒN°·±ÀÇÁÑ1NÐNr   N)r1   r   ÚreturnÚNone)rs   r	   r‡   Úbool)r‡   ztuple[int, int, int, int, int])r‡   Úint)rs   r'   r‡   r‰   )rs   ú
typing.Anyr‡   r‰   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ro   ru   Úpropertyr~   r�   r„   r†   © r   r   r'   r'   ‹   s9   „ ñ'óR*8óXð  òeó ðeó""ó.ôOr   r'   c                ór   — 	 t        j                  | j                  d«      d   «       y# t        $ r Y yw xY w©Nr   r   FT)rc   ÚIPv4Addressr   Ú	Exception©r+   s    r   r!   r!     ó<   € ðÜ×Ñ˜hŸn™n¨SÓ1°!Ñ4Ô5ð øô ò Ùðúó   ‚'* ª	6µ6c                ór   — 	 t        j                  | j                  d«      d   «       y# t        $ r Y yw xY wr“   )rc   ÚIPv6Addressr   r•   r–   s    r   r"   r"     r—   r˜   )r   r   r‡   r   )r‡   zdict[str, str | None])zutf-8)r   ústr | bytesr9   r   r‡   Úbytes)r   r›   r9   r   r‡   r   )r   r   r?   útyping.AnyStrr‡   r�   )rK   r‹   r‡   z
int | None)r+   r   r‡   r‰   )Ú
__future__r   rc   rC   rg   ÚtypingÚurllib.requestr   Ú_exceptionsr   Ú_typesr   ÚTYPE_CHECKINGr\   r	   r   r2   r:   r=   r@   rO   rR   r'   r!   r"   r‘   r   r   ú<module>r¤      si   ðÝ "ã Û 	Û 	Û Ý %å #Ý !à	×ÒÝóó8ôvGôGóGóó2	#÷Oñ OóDôr   