Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/requests/__pycache__/utils.cpython-311.pyc



]jzdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z'ddl(m)Z)dd
l*m+Z+m,Z,m-Z-m.Z.dZ/ej0Z1dddZ2d3ej4deddZ5ej6dkrdZ7dZdZ8dZ9dIdZ:dZ;dZ<ej=d Z>d!Z?d"Z@d#ZAd$ZBdId%ZCd&ZDd'ZEd(ZFd)ZGd*ZHd+ZId,ZJd-ZKeLd.ZMd/ZNd0ZOd1ZPd2ZQd3ZRd4ZSej=d5ZTd6ZUdJd7ZVd8ZWdKd:ZXd;ZYd<ZZd=[d>Z\e\d?zZ]e\d@zZ^dAZ_dBZ`dCZaejbdDZcejbdEZddFZedGZfdHZgdS)Lz
requests.utils
~~~~~~~~~~~~~~

This module provides utility functions that are used within Requests
that are also useful for external consumption.
N)OrderedDict)make_headers__version__)certs)to_native_string)parse_http_list)quoteurlparsebytesstrunquote
getproxiesproxy_bypass
urlunparse
basestring
integer_typesis_py3proxy_bypass_environmentgetproxies_environmentMappingcookiejar_from_dict)CaseInsensitiveDict)
InvalidURL
InvalidHeaderFileModeWarningUnrewindableBodyError)z.netrc_netrcPi)httphttpsz, z,\s*T)accept_encodingzaccept-encodingwin32cV	trddl}nddl}n#t$rYdSwxYw	||jd}t
||dd}||dd}n#t$rYdSwxYw|r|sdS|	d}|D]t}|dkrd|vrd	S|
dd
}|
dd}|
d
d}tj||tj
rd	SudS)NrFz;Software\Microsoft\Windows\CurrentVersion\Internet SettingsProxyEnable
ProxyOverride;z<local>.Tz\.*z.*?)rwinreg_winregImportErrorOpenKeyHKEY_CURRENT_USERintQueryValueExOSErrorsplitreplacerematchI)hostr-internetSettingsproxyEnable
proxyOverridetests      n/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib/python3.11/site-packages/requests/utils.pyproxy_bypass_registryr@6s	
)



((((			55	
	%~~f.FN P Pf112B.;===>@AAK#//0@0?AAABDMM			55		-	5
&++C00
!		Dy  d??44<<U++D<<U++D<<T**DxdBD))
tt
us
!!A B
BBcZtrt|St|S)zReturn True, if the host should be bypassed.

        Checks proxy settings gathered from the environment, if specified,
        or the registry.
        )rrr@)r:s r?rr]s."##	/+D111(...cNt|dr|}|S)z/Returns an internal sequence dictionary update.items)hasattrrD)ds r?dict_to_sequencerGis(q'
GGIIHrBcd}d}t|drt|}nt|dr|j}nwt|drg	|}tj|j}d|jvrtjdtn#tj$rYnwxYwt|dr	|}t|dr^|\	|
dd	|}|
|pdn5#ttf$rd}Yn wxYwn#ttf$r||}YnwxYw|d}t!d||z
S)
Nr__len__lenfilenoba%Requests has determined the content-length for this request using the binary size of the file: however, the file has been opened in text mode (i.e. without the 'b' flag in the mode). This may lead to an incorrect content-length. In Requests 3.0, support will be removed for files in text mode.tellseek)rErJrKosfstatst_sizemodewarningswarnrioUnsupportedOperationrMrNr4IOErrormax)ototal_lengthcurrent_positionrKs    r?	super_lenr]rsLq)1vv	E		u	H			XXZZF8F++3L!&  
.$&			D	$q&%	% vvxxq&!!
%l&:	%FF1aLLL#$6688LFF+0q1111)%%%#$LLL%%!	0	0	0
'#/ 
	0*q,!11222s7BB10B1E,AD..EEE E Fctjd}||f}ndtD}	ddlm}m}d}|D]X}	tj|}n#t$rYdSwxYwtj	|r|}nY|dSt|}	d}
t|tr|

d}
|	j|
d}	|||}|r|drdnd}
||
|d	fSdS#|t"f$r|rYdSwxYw#t$t&f$rYdSwxYw)
z;Returns the Requests tuple auth for a given url from netrc.NETRCNc3@K|]}d|VdS)z~/{}N)format).0fs  r?	<genexpr>z!get_netrc_auth.<locals>.<genexpr>s.AA6==++AAAAAArBr)netrcNetrcParseError:asciirrO)rPenvirongetNETRC_FILESrerfpath
expanduserKeyErrorexistsr
isinstancerdecodenetlocr5authenticatorsrXr/AttributeError)urlraise_errors
netrc_filenetrc_locationsrerf
netrc_pathrclocrisplitstrr:r login_is              r?get_netrc_authr~s((J%-AA[AAA-
00000000
 		A
g((++


	
w~~c""
 


F
c]]c3	0w//Hyx((+
	U:&&55d;;F
4 &q	011qw33
4
4 )			



	
(



sZEA'&E'
A61E5A66)E!AE=;D;;E
E
EEE&%E&ct|dd}|rLt|tr9|ddkr/|ddkr%tj|SdSdSdSdS)z0Tries to guess the filename of the given object.nameNr<>)getattrrprrPrlbasename)objrs  r?guess_filenamersx3%%D&D*--&$q'S..HOOw%%%&&&&..OrBcztj|r|Stj|\}}|rytj|sZtj|\}}d||g}|rtj|Ztj|s|Stj|}||vr|Stj
}tj||dd}tj|sOt|5}||
|dddn#1swxYwY|S)zReplace nonexistent paths that look like they refer to a member of a zip
    archive with the location of an extracted copy of the target, or else
    just return the provided path unchanged.
    /rN)rPrlror5joinzipfile
is_zipfileZipFilenamelisttempfile
gettempdiratomic_openwriteread)rlarchivememberprefixzip_filetmpextracted_pathfile_handlers        r?extract_zipped_pathsrs

w~~dgmmD))OGV
,"'..11,'--0066*++,"'..11,g&&w''H
X&&((((


CW\\#v||C'8'8'<==N
7>>.))6

(
(	6Lx}}V44555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6s;)F00F47F4c#Ktjddkrtjntj}tjtj|\}}	tj	|d5}|Vdddn#1swxYwY|||dS#t$rtj|wxYw)z-Write a file to the disk in an atomic fashionrrO)dirwbN)sysversion_inforPrenamer6rmkstemprldirnamefdopen
BaseExceptionremove)filenamereplacertmp_descriptortmp_nametmp_handlers     r?rrs ,Q/144ryy"*H'/BGOOH4M4MNNNNH
Y~t
,
,																8$$$$$
	(
s0'B&<B
B&
BB&BB&& Cc|dSt|ttttfrtdt
|S)aTake an object and test to see if it can be represented as a
    dictionary. Unless it can not be represented as such, return an
    OrderedDict, e.g.,

    ::

        >>> from_key_val_list([('key', 'val')])
        OrderedDict([('key', 'val')])
        >>> from_key_val_list('string')
        Traceback (most recent call last):
        ...
        ValueError: cannot encode objects that are not 2-tuples
        >>> from_key_val_list({'key': 'val'})
        OrderedDict([('key', 'val')])

    :rtype: OrderedDict
    N+cannot encode objects that are not 2-tuples)rprr
boolr2
ValueErrorrvalues r?from_key_val_listrsG$
}t%#udC011HFGGGurBc|dSt|ttttfrtdt|tr|}t|S)aTake an object and test to see if it can be represented as a
    dictionary. If it can be, return a list of tuples, e.g.,

    ::

        >>> to_key_val_list([('key', 'val')])
        [('key', 'val')]
        >>> to_key_val_list({'key': 'val'})
        [('key', 'val')]
        >>> to_key_val_list('string')
        Traceback (most recent call last):
        ...
        ValueError: cannot encode objects that are not 2-tuples

    :rtype: list
    Nr)	rprr
rr2rrrDlistrs r?to_key_val_listr:sd"
}t%#udC011HFGGG%!!

;;rBcg}t|D]N}|dd|ddcxkrdkrnnt|dd}||O|S)aParse lists as described by RFC 2068 Section 2.

    In particular, parse comma-separated lists where the elements of
    the list may include quoted-strings.  A quoted-string could
    contain a comma.  A non-quoted string could have quotes in the
    middle.  Quotes are removed automatically after parsing.

    It basically works like :func:`parse_set_header` just that items
    may appear multiple times and case sensitivity is preserved.

    The return value is a standard :class:`list`:

    >>> parse_list_header('token, "quoted value"')
    ['token', 'quoted value']

    To create a header from the :class:`list` again, use the
    :func:`dump_header` function.

    :param value: a string with a list header.
    :return: :class:`list`
    :rtype: list
    Nrr")_parse_list_headerunquote_header_valueappend)rresultitems   r?parse_list_headerrXs.F"5))8tBCCy''''C''''''QrT
33D

dMrBci}t|D]a}d|vrd||<|dd\}}|dd|ddcxkrdkrnnt|dd}|||<b|S)a^Parse lists of key, value pairs as described by RFC 2068 Section 2 and
    convert them into a python dict:

    >>> d = parse_dict_header('foo="is a fish", bar="as well"')
    >>> type(d) is dict
    True
    >>> sorted(d.items())
    [('bar', 'as well'), ('foo', 'is a fish')]

    If there is no value for a key it will be `None`:

    >>> parse_dict_header('key_without_value')
    {'key_without_value': None}

    To create a header from the :class:`dict` again, use the
    :func:`dump_header` function.

    :param value: a string with a dict header.
    :return: :class:`dict`
    :rtype: dict
    =Nrrr)rr5r)rrrrs    r?parse_dict_headerrxs,F"5))d??F4Ljja((e!9bcc
))))c)))))(qt55EtMrBc|r`|d|dcxkrdkrGnnD|dd}|r|dddkr*|ddd	dS|S)
zUnquotes a header value.  (Reversal of :func:`quote_header_value`).
    This does not use the real unquoting but what browsers are actually
    using for quoting.

    :param value: the header value to unquote.
    :rtype: str
    rrrrNrOz\\\z\")r6)ris_filenames  r?rrs

CqU2Y----#-----
ad	CeBQBi611==..66ucBBBLrBc2i}|D]}|j||j<|S)zReturns a key/value dictionary from a CookieJar.

    :param cj: CookieJar object to extract cookies from.
    :rtype: dict
    )rr)cjcookie_dictcookies   r?dict_from_cookiejarrs/K00#)<FK  rBc"t||S)zReturns a CookieJar from a key/value dictionary.

    :param cj: CookieJar to insert cookies into.
    :param cookie_dict: Dict of key/values to insert into CookieJar.
    :rtype: CookieJar
    r)rrs  r?add_dict_to_cookiejarrs{B///rBc`tjdttjdtj}tjdtj}tjd}||||z||zS)zlReturns encodings from given content string.

    :param content: bytestring to extract encodings from.
    zIn requests 3.0, get_encodings_from_content will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)z!<meta.*?charset=["\']*(.+?)["\'>])flagsz+<meta.*?content=["\']*;?charset=(.+?)["\'>]z$^<\?xml.*?encoding=["\']*(.+?)["\'>])rTrUDeprecationWarningr7compiler9findall)content
charset_re	pragma_rexml_res    r?get_encodings_from_contentrs

M	-		@MMMJ
IQSQUVVVI
Z?
@
@Fw''g&&
'NN7##
$%rBc|d}|d|dd}}i}d}|D]}|}|rs|d}}|d}	|	dkr=|d|	|}||	dzd|}|||<||fS)	zReturns content type and parameters from given header

    :param header: string
    :return: tuple containing content type and dictionary of
         parameters
    r)rrNz"' Trr)r5stripfindlower)
headertokenscontent_typeparamsparams_dictitems_to_stripparamkeyrindex_of_equalss
          r?_parse_content_type_headerrs\\#

F!!9??,,fQRRj&LKN--

	-C#jjooO"$$,_,-33NCCo122399.II',K		$$$rBc|d}|sdSt|\}}d|vr|ddSd|vrdSd|vrdSdS)	z}Returns encodings from given HTTP Header Dict.

    :param headers: dictionary to extract encoding from.
    :rtype: str
    zcontent-typeNcharsetz'"textz
ISO-8859-1zapplication/jsonutf-8)rjrr)headersrrs   r?get_encoding_from_headersrs;;~..Lt5lCCL&Fi &&u---
|\))w*)rBc#K|j|D]}|VdStj|jd}|D]}||}|r|V|dd}|r|VdSdS)zStream decodes a iterator.Nr6errorsrBT)final)encodingcodecsgetincrementaldecoderrq)iteratorrrdecoderchunkrvs      r?stream_decode_response_unicoders	z		DJJJJ6f*1:66iHHHG
^^E
"
"
	HHH	4	(	(B	rBc#Kd}||dkrt|}|t|kr)||||zV||z
}|t|k'dSdS)z Iterate over slices of a string.rN)rJ)stringslice_lengthposs   r?iter_slicesr&s{
C|q006{{

F

S|++,,,,|F





rBc:tjdtg}t|j}|r;	t|j|S#t$r||YnwxYw	t|j|dS#t$r
|jcYSwxYw)zReturns the requested content back in unicode.

    :param r: Response object to get unicode content from.

    Tried:

    1. charset from content-type
    2. fall back and replace all unicode characters

    :rtype: str
    zIn requests 3.0, get_unicode_from_response will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)r6r)
rTrUrrrrrUnicodeErrorr	TypeError)rtried_encodingsrs   r?get_unicode_from_responser0s
M	-		O)33H-	-qy(+++	-	-	-""8,,,,,	-19hy9999ys#A		A+*A+/BBBzBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~c|d}tdt|D]}||dd}t|dkr|rn	t	t|d}n #t$rtd|zwxYw|tvr|||ddz||<d||z||<d||z||<d	|S)	zUn-escape any percent-escape sequences in a URI that are unreserved
    characters. This leaves all reserved, illegal and non-ASCII bytes encoded.

    :rtype: str
    %rrrOz%Invalid percent-escape sequence: '%s'N)
r5rangerJisalnumchrr2rrUNRESERVED_SETr)uripartsihcs     r?unquote_unreservedr
Ys
IIcNNE
1c%jj
!
!
&
&!HQqSMq66Q;;199;;;
NAr

OO
N
N
N !H1!LMMM
NN""uQx|+aq>aU1X~E!HH
775>>s-BB(cd}d}	tt||S#t$rt||cYSwxYw)zRe-quote the given URI.

    This function passes the given URI through an unquote/quote cycle to
    ensure that it is fully and consistently quoted.

    :rtype: str
    z!#$%&'()*+,/:;=?@[]~z!#$&'()*+,/:;=?@[]~)safe)rr
r)rsafe_with_percentsafe_without_percents   r?requote_urirqsk/0	5',,3DEEEE555S3444444	5s$AAc
tjdtj|d}|d\}}tjdtjtt
|d}tjdtj|d|z}||z||zkS)zThis function allows you to check if an IP belongs to a network subnet

    Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24
             returns False if ip = 192.168.1.1 and net = 192.168.100.0/24

    :rtype: bool
    z=Lrr)structunpacksocket	inet_atonr5dotted_netmaskr2)ipnetipaddrnetaddrbitsnetmasknetworks       r?address_in_networkr s]4!1"!5!5
6
6q
9FIIcNNMGTmD&"2>#d))3L3L"M"MNNqQGmD&"27";";<<Q?'IGW'G"344rBclddd|z
zdz
z}tjtjd|S)zConverts mask from /xx format to xxx.xxx.xxx.xxx

    Example: if mask is 24 function returns 255.255.255.0

    :rtype: str
    lr z>I)r	inet_ntoarpack)maskrs  r?rrs8b4i1,,DFKd33444rBc^	tj|n#tj$rYdSwxYwdS)z
    :rtype: bool
    FT)rrerror)	string_ips r?is_ipv4_addressr)sD####<uu4s**cX|ddkr	t|dd}n#t$rYdSwxYw|dks|dkrdS	t	j|ddn#tj$rYdSwxYwdSdS)zV
    Very simple check of the cidr format in no_proxy variable.

    :rtype: bool
    rrFr"rT)countr2r5rrrr')string_networkr%s  r?
is_valid_cidrr-sC  A%%	~++C00344DD			55	!88tbyy5	^11#66q9::::|			55	u4s#(A
AA$-BB%$B%c#K|du}|r.tj|}|tj|<	dV|r"|tj|=dS|tj|<dSdS#|r|tj|=n|tj|<wxYw)zSet the environment variable 'env_name' to 'value'

    Save previous value, yield, and then restore the previous value stored in
    the environment variable 'env_name'.

    If 'value' is None, do nothingN)rPrirj)env_namer
value_changed	old_values    r?set_environr2s%M%JNN8,,	$
81
	1 Jx((('0
8$$$		1	1=	1 Jx(('0
8$0000sA""#Bcd}|}||d}t|}|jdS|rd|dddD}t	|jr<|D]8}t|rt
|j|rdS*|j|krdS9nb|j}|jr|d	|jz
}|D]4}|j	|s|	|rdS5td|5	t|j}n#ttjf$rd
}YnwxYwdddn#1swxYwY|rdSd
S)zL
    Returns whether we should bypass proxies or not.

    :rtype: bool
    ctj|p0tj|SN)rPrirjupper)ks r?<lambda>z'should_bypass_proxies.<locals>.<lambda>s/"*..++Hrz~~aggii/H/HrBNno_proxyTc3K|]}||V	dSr5)rbr:s  r?rdz(should_bypass_proxies.<locals>.<genexpr>s;

T






rB r,z:{}F)rhostnamer6r5r)r-r portraendswithr2rrrgaierror)	rur9	get_proxyno_proxy_argparsedproxy_iphost_with_portr:bypasss	         r?should_bypass_proxiesrHs)IHIL9Z((
c]]F
t 

%--c266<<SAA


6?++	 $
 
  ** )&/8DD$#tt$_00 441	
 $_N{
<%,,v{";";; 
 
 ?++D11 ^5L5LT5R5R  44 

Z	.	.	!&/22FF6?+			FFF		t5s6"E#$D98E#9EE#EE##E'*E'cDt||riStS)zA
    Return a dict of environment proxies.

    :rtype: dict
    )r9)rHr)rur9s  r?get_environ_proxiesrJs(S8444	||rBc|pi}t|}|j.||j|dS|jdz|jz|jd|jzdg}d}|D]}||vr
||}n|S)zSelect a proxy for the url, if applicable.

    :param url: The url being for the request
    :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs
    Nallz://zall://)rr>rjscheme)ruproxiesurlparts
proxy_keysproxy	proxy_keys      r?select_proxyrS#smG}}H {{8?GKK,>,>???	%("338$$
	J
E	I&EE LrBpython-requestsc|dtS)zO
    Return a string representing the default user agent.

    :rtype: str
    rr)rs r?default_user_agentrV=sddKK((rBcLtttdddS)z9
    :rtype: requests.structures.CaseInsensitiveDict
    z*/*z
keep-alive)z
User-AgentzAccept-EncodingAccept
Connection)rrVDEFAULT_ACCEPT_ENCODINGr;rBr?default_headersr[Fs2(**2"	  rBcg}d}||}|s|Stjd|D]}	|dd\}}n#t$r|d}}YnwxYwd|di}|dD]X}	|d\}}n#t$rYn0wxYw|||||<Y|||S)	zReturn a list of parsed link headers proxies.

    i.e. Link: <http:/.../front.jpeg>; rel=front; type="image/jpeg",<http://.../back.jpeg>; rel=back;type="image/jpeg"

    :rtype: list
    z '"z, *<r)rrruz<> '"r)rr7r5rr)	rlinks
replace_charsvalrurlinkrrs	         r?parse_header_linksraRsA
EMKK
&&Ex&&	"))C++KC	"	"	"rCCC	"syy**+\\#&&	H	HE
"[[--
UU



.3[[-G-GD=))**
TLs#AA! A!B,,
B:9B:rhrOc|dd}|tjtjfvrdS|ddtjkrdS|ddtjtjfvrdS|t}|dkrd	S|dkr,|dddtkrd
S|dddtkrdS|dkr*|ddtkrd
S|ddtkrdSdS)z
    :rtype: str
    Nzutf-32rcz	utf-8-sigrOzutf-16rrz	utf-16-berz	utf-16-lez	utf-32-bez	utf-32-le)
rBOM_UTF32_LEBOM_UTF32_BEBOM_UTF8BOM_UTF16_LEBOM_UTF16_BEr+_null_null2_null3)datasample	nullcounts   r?guess_json_utfrq}s"1"XF
&%v':;;;x
bqbzV_$${
bqbzf)6+>???xU##IA~~wA~~##A#;&  ;!$Q$<6!!;A~~"1":;!"":;4rBcft||\}}}}}}|s||}}t||||||fS)zGiven a URL that may or may not have a scheme, prepend the given scheme.
    Does not replace a present scheme with the one provided as an argument.

    :rtype: str
    )rr)ru
new_schemerMrrrlrqueryfragments        r?prepend_scheme_if_neededrvsN5=S*4M4M1FFD&%
$VvvtVUHEFFFrBct|}	t|jt|jf}n#tt
f$rd}YnwxYw|S)z{Given a url with authentication components, extract them into a tuple of
    username,password.

    :rtype: (str,str)
    )rr)rrusernamepasswordrtr)rurDauths   r?get_auth_from_urlr{sdc]]F(('&/*B*BCI&Ks(:AAs^\S[^\r\n]*$|^$z^\S[^\r\n]*$|^$c|\}}t|trt}nt}	||std|zdS#t$r&td|d|dt|wxYw)zVerifies that header value is a string which doesn't contain
    leading whitespace or return characters. This prevents unintended
    header injection.

    :param header: tuple, in the format (name, value).
    z7Invalid return character or leading space in header: %szValue for header {z: z$} must be of type str or bytes, not N)rpr
_CLEAN_HEADER_REGEX_BYTE_CLEAN_HEADER_REGEX_STRr8rrtype)rrrpats    r?check_header_validityrsKD%%&&%Jyy	b Y\` `aaa	b	bJJJm/3ttUUUDKKKIJJ	JJs'A0Bct|\}}}}}}|s||}}|ddd}t|||||dfS)zW
    Given a url remove the fragment and the authentication part.

    :rtype: str
    @rrr)rrsplitr)rurMrrrlrrtrus       r?
urldefragauthrsb5=SMM1FFD&%$V
]]3
"
"2
&FvvtVUB?@@@rBct|jdd}|Qt|jtr7	||jdS#t
tf$rtdwxYwtd)zfMove file pointer back to its recorded starting position
    so it can be read again on redirect.
    rNNz;An error occurred when rewinding request body for redirect.z+Unable to rewind request body for redirect.)rbodyrp_body_positionrrXr4r)prepared_request	body_seeks  r?rewind_bodyrs(-vt<<I,<,K]![![	>I&566666!	>	>	>')=>>
>	>$$QRRRsA!A')Fr5)rT)h__doc__r
contextlibrVrPr7rrrrrTrcollectionsrurllib3.utilrrrr_internal_utilsr	compatr
rrrr
rrrrrrrrrrrcookiesr
structuresr
exceptionsrrrrrkwhereDEFAULT_CA_BUNDLE_PATH
DEFAULT_PORTSrr5rZplatformr@rGr]r~rrcontextmanagerrrrrrrrrrrrrrr	frozensetrr
rr rr)r-r2rHrJrSrVr[raencoderkrlrmrqrvr{rr}r~rrrr;rBr?<module>rso


												











######%%%%%%$$$$$$------999999????????????????????????????????)(((((++++++GGGGGGGGGGGG#$c**
))BHWll48889JKLL
<7%%%N	/	/	/


:3:3:3z6
6
6
6
r&&&B


6<@F2000%%%(%%%22$!!!JMOO0555,5555550111*:::z				4))))			"""L	

g		@GGG"


"&2:&;<<$"*%788JJJ*AAA"SSSSSrB
Back to Directory File Manager