
    zi7              	       6   d dl Z d dlZd dlZd dl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ZddlmZ ej        rddlmZ ddd	Ze                    d
  ed          D                         ej        d                    d e                                D                                 Z	 d:dej        eef         dedej        e         defdZ	 d:dej        eef         dej        e         defdZ dddefdZ!dedefdZ"dededefdZ#dej        e         fdZ$dedej%        ej&        eef                  fdZ'dedej        e         fdZ(ddhZ)dej*        ej+        ej,        ej,        f                  dej-        ej+        ej,        ej,        f                  fd Z.d!d"dej        e/         fd#Z0d!d"d$d"defd%Z1d!d"d&d"defd'Z2dej&        eej        e         f         fd(Z3d;dej        eef         dedefd*Z4d;dej        eef         dedefd+Z5ded,ej,        dej,        fd-Z6dedefd.Z7d/ej        e         dej        e         fd0Z8d1ej9        dej        e/         fd2Z: G d3 d4          Z; G d5 d6          Z<d7edefd8Z=d7edefd9Z>dS )<    N)Path)
getproxies   )PrimitiveDataURLz%22z\\)"\c                 `    i | ]+}|d k    t          |          d                    |          ,S )   z%{:02X})chrformat.0cs     W/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/httpx/_utils.py
<dictcomp>r      s3    GGGQQ$YYSVVYa  YYY        |c                 6    g | ]}t          j        |          S  )reescaper   s     r   
<listcomp>r      s     NNNry||NNNr   valuelowerencodingreturnc                     t          | t                    r| }n|                     |pd          }|r|                                n|S )zE
    Coerce str/bytes into a strictly byte-wise HTTP header key.
    ascii)
isinstancebytesencoder   )r   r   r   bytes_values       r   normalize_header_keyr&      sO     % 8ll8#6w77"'8;[8r   c                 ^    t          | t                    r| S |                     |pd          S )zG
    Coerce str/bytes into a strictly byte-wise HTTP header value.
    r!   )r"   r#   r$   r   r   s     r   normalize_header_valuer)   -   s2     % <<+G,,,r   r   c                 @    | du rdS | du rdS | dS 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falseN )strr   s    r   primitive_value_to_strr0   8   s6     }}v	%w	ru::r   c                 T    	 t          j        |            n# t          $ r Y dS w xY wdS )z7
    Return `True` if `encoding` is a known codec.
    FT)codecslookupLookupError)r   s    r   is_known_encodingr5   G   sA    h   uu4s    
%%namec                     dt           j        t                   dt          fd}t                              ||          }|  d| d                                S )z;
    Encode a name/value pair within a multipart form.
    matchr   c                 B    t           |                     d                   S )Nr   )!_HTML5_FORM_ENCODING_REPLACEMENTSgroup)r8   s    r   replacerz#format_form_param.<locals>.replacerW   s    0Q@@r   z="r	   )typingMatchr.   _HTML5_FORM_ENCODING_REsubr$   )r6   r   r<   s      r   format_form_paramrA   R   sk    
AS) Ac A A A A $''%88Ee%%'''r   c                  F   dt           j        v rBt          t           j        d                   } |                                 rt	          |           S dt           j        v rBt          t           j        d                   }|                                rt	          |          S d S )NSSL_CERT_FILESSL_CERT_DIR)osenvironr   is_filer.   is_dir)ssl_filessl_paths     r   get_ca_bundle_from_envrK   ^   s    "*$$
?344 	!x== ##
>233?? 	!x== 4r   c                    g }d}|                      |          } | s|S t          j        d|           D ]}	 |                    dd          \  }}n# t          $ r |d}}Y nw xY wd|                     d          i}|                    d          D ]X}	 |                    d          \  }} n# t          $ r Y  n0w xY w|                      |          ||                     |          <   Y|                    |           |S )	a7  
    Returns a list of parsed link headers, for more info see:
    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Link
    The generic syntax of those is:
    Link: < uri-reference >; param1=value1; param2="value2"
    So for instance:
    Link; '<http:/.../front.jpeg>; type="image/jpeg",<http://.../back.jpeg>;'
    would return
        [
            {"url": "http:/.../front.jpeg", "type": "image/jpeg"},
            {"url": "http://.../back.jpeg"},
        ]
    :param value: HTTP Link entity-header field
    :return: list of parsed link headers
    z '"z, *<;r   r-   urlz<> '"=)stripr   split
ValueErrorappend)	r   linksreplace_charsvalrN   paramslinkparamkeys	            r   parse_header_linksr[   j   s=     13EMKK&&E x&&  	"))C++KC 	" 	" 	"rCCC	"syy**+\\#&& 	H 	HE"[[--
UU   -2[[-G-GD=))**TLs#   AA! A!B,,
B:9B:content_typec                 t    t           j                                        }| |d<   |                    d           S )Nzcontent-type)failobj)emailmessageMessageget_content_charset)r\   msgs     r   parse_content_type_charsetrd      s8     -


!
!C&C""4"000r   authorizationzproxy-authorizationitemsc              #      K   | D ]D\  }}t          |                                          t          v rt          d|          }||fV  Ed S )Nz[secure])match_type_of)to_strr   SENSITIVE_HEADERSto_bytes_or_str)rf   kvs      r   obfuscate_sensitive_headersrn      sb         1!'')) 111
!<<<Ad



 r   rN   r   c                 X    | j         | j         S ddd                    | j                  S )NP     )httphttps)portgetscheme)rN   s    r   port_or_defaultrw      s/    
xx%%))#*555r   otherc                     | j         |j         k    o/| j        |j        k    ot          |           t          |          k    S )z@
    Return 'True' if the given URLs share the same origin.
    )rv   hostrw   )rN   rx   s     r   same_originr{      sC    
 	
el" 	;H
"	;C  OE$:$::r   locationc                     | j         |j         k    rdS | j        dk    o0t          |           dk    o|j        dk    ot          |          dk    S )zA
    Return 'True' if 'location' is a HTTPS upgrade of 'url'
    Frr   rp   rs   rq   )rz   rv   rw   )rN   r|   s     r   is_https_redirectr~      sd     x8=  u 	
f 	-C  B&	-Ow&	- H%%,	r   c                     t                      } i }dD ]0}|                     |          r| |         }d|v r|nd| || d<   1d |                     dd                              d          D             }|D ]h}|dk    ri c S |rZt          |          r	d	|d
| <   &t	          |          r
d	|d| d<   ?|                                dk    r	d	|d
| <   `d	|d| <   i|S )z+Gets proxy information from the environment)rr   rs   allz://zhttp://c                 6    g | ]}|                                 S r   )rP   )r   rz   s     r   r   z+get_environment_proxies.<locals>.<listcomp>   s     SSStdjjllSSSr   nor-   ,*Nzall://zall://[]	localhostzall://*)r   ru   rQ   is_ipv4_hostnameis_ipv6_hostnamer   )
proxy_infomountsrv   hostnameno_proxy_hostss        r   get_environment_proxiesr      s^    J57F*  >>&!! 	!&)H!X--3GX3G3G f>>>" TSz~~dB/G/G/M/Mc/R/RSSSN" 4 4 s??
 III 	4  )) 4.2***++!(++ 404,,,,--!![00.2***++/3+++,Mr   utf-8c                 Z    t          | t                    r|                     |          n| S Nr"   r.   r$   r(   s     r   to_bytesr      s(    %/s%;%;F5<<!!!Fr   c                 Z    t          | t                    r| n|                     |          S r   )r"   r.   decoder(   s     r   ri   ri      s'    uc**F55X0F0FFr   rh   c                 X    t          |t                    r| n|                                 S r   r   )r   rh   s     r   rk   rk      s#    }c22F55Fr   c                 R    | d         | d         cxk    rdk    rn n
| dd         n| S )Nr   r	   r   r   r/   s    r   unquoter      s=    (eBi666636666652;;EAr   filenamec                 B    | rt          j        |           d         pdS d S )Nr   zapplication/octet-stream)	mimetypes
guess_type)r   s    r   guess_content_typer     s,     O#H--a0N4NN4r   streamc                 Z   	 |                                  }t          j        |          j        }n{# t          t
          f$ rg 	 |                                 }|                     dt          j                  }|                     |           n# t          t
          f$ r Y Y dS w xY wY nw xY w|S )zs
    Given a file-like stream object, return its length in number of bytes
    without reading it into memory.
    r   N)	filenorE   fstatst_sizeAttributeErrorOSErrortellseekSEEK_END)r   fdlengthoffsets       r   peek_filelike_lengthr     s    
]]__"%G$ 
 
 
	 [[]]F[[BK00FKK( 	 	 	444	  
 Ms4   -0 B(A	BB(B"B(!B""B('B(c                   B    e Zd ZdefdZddZddZdefdZdefdZdS )	Timerr   c                 4  K   t          j                    }|dk    rdd l}|                                S |dk    r6dd l}t          j        t          |                                 d {V           S dd l	}|
                                                                S )Ntrior   curio)sniffiocurrent_async_libraryr   current_timer   r=   castfloatclockasyncioget_event_looptime)selflibraryr   r   r   s        r   	_get_timezTimer._get_time"  s      /11fKKK$$&&&LLL;uEKKMM&9&9&9&9&9&9:::%%'',,...r   Nc                 6    t          j                    | _        d S r   r   perf_counterstartedr   s    r   
sync_startzTimer.sync_start1  s    (**r   c                 H   K   |                                   d {V | _        d S r   r   r   r   s    r   async_startzTimer.async_start4  s-      !^^--------r   c                 <    t          j                    }|| j        z
  S r   r   r   nows     r   sync_elapsedzTimer.sync_elapsed7  s    !!T\!!r   c                 N   K   |                                   d {V }|| j        z
  S r   r   r   s     r   async_elapsedzTimer.async_elapsed;  s4      NN$$$$$$$$T\!!r   )r   N)	__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   !  s        / / / / /+ + + +. . . ."e " " " ""U " " " " " "r   r   c                       e Zd ZdZdeddfdZdddefdZede	j
        eeef         fd	            Zdefd
Zdd defdZde	j        defdZdS )
URLPatterna  
    A utility class currently used for making lookups against proxy keys...

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

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

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

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

    # With port matching...
    >>> pattern = URLPattern("https://example.com:1234")
    >>> pattern.matches(httpx.URL("https://example.com:1234"))
    True
    >>> pattern.matches(httpx.URL("https://example.com"))
    False
    patternr   Nc                    ddl m} |rd|vrt          d| d| d           ||          }|| _        |j        dk    rdn|j        | _        |j        d	k    rdn|j        | _        |j        | _        |j        r|j        d	k    r	d | _        d S |j                            d
          r@t          j
        |j        dd                    }t          j        d| d          | _        d S |j                            d	          r@t          j
        |j        dd                    }t          j        d| d          | _        d S t          j
        |j                  }t          j        d| d          | _        d S )Nr   r   :zUProxy keys should use proper URL forms rather than plain scheme strings. Instead of "z", use "z://"r   r-   r   z*.   z^.+\.$z^(.+\.)?^)_urlsr   rR   r   rv   rz   rt   
host_regex
startswithr   r   compile)r   r   r   rN   domains        r   __init__zURLPattern.__init__j  s    	s'))>&> >07> > >   c'llJ%//bbSZ(c//BBsx	H	x 	838s??DHDOOOX  && 	8Ysx|,,F j);&);););<<DOOOX  %% 	8Ysx|,,F j)>V)>)>)>??DOOO Ysx((F jV77DOOOr   rx   r   c                     | j         r| j         |j         k    rdS | j        r(| j        !| j                            |j                  sdS | j        | j        |j        k    rdS dS )NFT)rv   rz   r   r8   rt   r   rx   s     r   matcheszURLPattern.matches  sr    ; 	4;%,665I	+O))%*55 , 59 TY%*%<%<5tr   c                 v    | j         dnd}t          | j                   }t          | j                   }|||fS )z
        The priority allows URLPattern instances to be sortable, so that
        we can match from most specific to least specific.
        Nr   r   )rt   lenrz   rv   )r   port_priorityhost_priorityscheme_prioritys       r   priorityzURLPattern.priority  sB     "Y2TYt{+++}o>>r   c                 *    t          | j                  S r   )hashr   r   s    r   __hash__zURLPattern.__hash__  s    DL!!!r   c                 "    | j         |j         k     S r   )r   r   s     r   __lt__zURLPattern.__lt__  s    }u~--r   c                 L    t          |t                    o| j        |j        k    S r   )r"   r   r   r   s     r   __eq__zURLPattern.__eq__  s     %,,N1NNr   )r   r   r   __doc__r.   r   boolr   propertyr=   Tupleintr   r   r   Anyr   r   r   r   r   r   @  s        ' 'R8 8 8 8 8 8<U t     ?&,sC}5 ? ? ? X?"# " " " ".L .T . . . .OFJ O4 O O O O O Or   r   r   c                     	 t          j        |                     d          d                    n# t          $ r Y dS w xY wdS N/r   FT)	ipaddressIPv4AddressrQ   	Exceptionr   s    r   r   r     S    hnnS11!45555   uu4   -0 
>>c                     	 t          j        |                     d          d                    n# t          $ r Y dS w xY wdS r   )r   IPv6AddressrQ   r   r   s    r   r   r     r   r   r   )r   )?r2   email.messager_   r   r   rE   r   r   r=   pathlibr   urllib.requestr   r   _typesr   TYPE_CHECKINGr   r   r:   updateranger   joinkeysr?   Unionr.   r#   r   Optionalr&   r)   r0   r5   rA   rK   ListDictr[   rd   rj   Iterabler   AnyStrIteratorrn   r   rw   r{   r~   r   r   ri   rk   r   r   r   r   r   r   r   r   r   r   r   <module>r     s                				 				         % % % % % %  ! ! ! ! ! !	  +0v$>$> ! ! ( (GG%%//GGG   %"*IINN%F%K%K%M%MNNNOO   &*9 9<U
#99 oc"9 	9 9 9 9" GK- -<U
#-/5s/C-
- - - -/ c         	(C 	( 	( 	( 	( 	( 	(	 4 	 	 	 	"c "fk&+c3h2G&H " " " "J1S 1V_S5I 1 1 1 1 %&;< ?6<v}(DEF_V\&-">?@   6 66?3#7 6 6 6 6U 5 T    5 E d    ,S&/#2F-F!G , , , ,^G GFLe, G G% G G G GG G&,sEz* Gc G G G G GG3 Gv} G G G G GB3 B3 B B B B!5 &/#:N     0D    2" " " " " " " ">jO jO jO jO jO jO jO jOZs t    s t      r   