python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_urlparse.cpython-311.opt-2.pyc

eAddlZddlZddlZddlZdZdZdZdZdgfdgfdgfdd	gfd
dgfdd
gfdd
gfddgfdddgfdddgfdgfdgfdgfddgfddgfddgfd dgfd!d"gfd#d$d%gfd&d'd(gfd)d*gfd+d,gfd-d.gfd/d0gfgZ	difdifdifdddgifd
ddgifdddgifdddgifddd1gifdd2gd3gdfddd4d5gifdifdifdifdddgifdddgifdddgifd ddgifd!dd6gifd#d7gd8gd"fd&dd9d:gifd)d;d1gifd+dd<gifd-d=d6gifd/dd>gifgZ
Gd?d@ejZGdAdBejZ
GdCdDejZedEkrejdSdS)FNhttp://a/b/c/d;p?q#fhttp://a/b/c/d;p?qhttp://a/b/c/d&z&&=)rrz=a)rar	)r	rza=z&a=br	bza=a+b&b=b+cr	a brb cza=1&a=2r	1r	2&s&&=)rrs=a)rar)rrsa=s&a=brbsa=a+b&b=b+cra brb csa=1&a=2r1r2;a=b);ara=a+b;b=b+c)r		a b;b=b c;a=b);ara=a+b;b=b+c)r	a b;b=b crr
rrrrrrrr!r#r%r'r)c@eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4S)5UrlParseTestCasec	tj|}||||j|j|j|j|j|j	f}|||tj
|}||||||tj|}||||||||j|j||j|j||j|j||j|j||j|j||j	|j	||j|j||j
|j
||j|j||j|jtj|}||||j|j|j|j|j	f}|||tj|}||||||tj|}||||||||j|j||j|j||j|j||j|j||j	|j	||j|j||j
|j
||j|j||j|jdSN)urllibparseurlparseassertEqualschemenetlocpathparamsqueryfragment
urlunparsegeturlusernamepasswordhostnameporturlsplit
urlunsplit)selfurlparsedsplitresulttresult2result3s        F/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_urlparse.pycheckRoundtripsz UrlParseTestCase.checkRoundtripsIs&&s++(((
]FM6;
]FL&/
;F###,))&11#&&&&--//222,''

88))6==??;;;62226=9996=9996;7776=9996<888)6?;;;)6?;;;)6?;;;)6?;;;6;777&&s++'''
]FM6;
\6?
,E""",))&11#&&&&--//222,''

88))6==??;;;62226=9996=9996;7776<888)6?;;;)6?;;;)6?;;;)6?;;;6;77777rc$tD]\}}tj|d}|||d|zd|D}tj|d}|||d|zdS)NTkeep_blank_valuesError parsing %rc<g|]}t|d|S)len).0vs  rH
<listcomp>z-UrlParseTestCase.test_qsl.<locals>.<listcomp>s'$D$D$D1#ad))$DQ$D$D$DrF)parse_qsl_test_casesr.r/	parse_qslr1)r@origexpectrDexpect_without_blankss     rHtest_qslzUrlParseTestCase.test_qsl|s0	7	7LD&\++DD+IIFVV-?$-FGGG$D$D$D$D$D!\++DE+JJFV%:.5
7
7
7
7	7	7rc*tD]\}tj|d}||d|zfdD}tj|d}|||d|zdS)NTrKrMcXi|]&}t|d||'S)rrP)rRrSrXs  rH
<dictcomp>z,UrlParseTestCase.test_qs.<locals>.<dictcomp>sJ%K%K%K)*F1IaL8I8I%KQq	%K%K%KrF)parse_qs_test_casesr.r/parse_qsr1)r@rWrDrYrXs    @rHtest_qszUrlParseTestCase.test_qss/	7	7LD&\**44*HHFVV-?$-FGGG%K%K%K%K.4%K%K%K!\**45*IIFV%:.5
7
7
7
7
	7	7rcxgd}dfd|D}||zD]\}}}||||dS)N))zfile:///tmp/junk.txt)filer
/tmp/junk.txtrrr)rbrrcrr)zimap://mail.python.org/mbox1)imapmail.python.org/mbox1rrr)rdrerfrr)z1mms://wms.sys.hinet.net/cts/Drama/09006251100.asf)mmswms.sys.hinet.net/cts/Drama/09006251100.asfrrr)rgrhrirr)znfs://server/path/to/file.txt)nfsserver/path/to/file.txtrrr)rjrkrlrr)z0svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/)svn+sshsvn.zope.org/repos/main/ZConfig/trunk/rrr)rmrnrorr)z)git+ssh://git@github.com/user/project.git)git+sshgit@github.com/user/project.gitrrr)rprqrrrrc|ddtd|dDtd|dDfS)Nrasciic3@K|]}|dVdSrtNencoderRxs  rH	<genexpr>zDUrlParseTestCase.test_roundtrips.<locals>._encode.<locals>.<genexpr>.::!((7++::::::rrOc3@K|]}|dVdSrvrwrys  rHr{zDUrlParseTestCase.test_roundtrips.<locals>._encode.<locals>.<genexpr>r|rrxtuplerEs rH_encodez1UrlParseTestCase.test_roundtrips.<locals>._encode[aDKK((::QqT:::::::QqT:::::<
<rc&g|]
}|SrrRrzrs  rHrTz4UrlParseTestCase.test_roundtrips.<locals>.<listcomp>!555awwqzz555rrI)r@	str_casesbytes_casesrArBrCrs      @rHtest_roundtripsz UrlParseTestCase.test_roundtripss~	4	<	<	<65559555"+k"9	5	5C  fe4444	5	5rc
gd}d

fd|D}d}d}||f}||f}||fD];\}}|D]3}	|D].\}
}}|	|
z}
|	f|z}|	f|z}||
||/4<dS)N))z://www.python.org)www.python.orgrrrr)rrrr)z://www.python.org#abc)rrrrabc)rrrr)z://www.python.org?q=abc)rrrq=abcr)rrrr)z://www.python.org/#abc)r/rrr)rrrr)z://a/b/c/d;p?q#f)r	z/b/c/dpqf)r	z/b/c/d;prrc|ddtd|dDtd|dDfS)Nrrtc3@K|]}|dVdSrvrwrys  rHr{zIUrlParseTestCase.test_http_roundtrips.<locals>._encode.<locals>.<genexpr>r|rrOc3@K|]}|dVdSrvrwrys  rHr{zIUrlParseTestCase.test_http_roundtrips.<locals>._encode.<locals>.<genexpr>r|rr~rrs rHrz6UrlParseTestCase.test_http_roundtrips.<locals>._encoderrc&g|]
}|Srrrs  rHrTz9UrlParseTestCase.test_http_roundtrips.<locals>.<listcomp>rr)httphttps)httphttpsr)r@rrstr_schemes
bytes_schemes	str_testsbytes_testsschemes
test_casesr2rArBrCrs             @rHtest_http_roundtripsz%UrlParseTestCase.test_http_roundtripss	"	<	<	<65559555'+
*	#[0$-{#;	=	=GZ!
=
=*4==&C 3,C$Y/F#I-E((fe<<<<	=
=	=	=rc|||f}|tj|||d|Dx}\}}}|tj|||dS)Nc8g|]}|dSrtrwrys  rHrTz.UrlParseTestCase.checkJoin.<locals>.<listcomp>s78G8G8G23AHHW--8G8G8Gr)r1r.r/urljoin)	r@baserelurlexpectedstr_componentsbytes_componentsbasebrelurlb	expectedbs	         rH	checkJoinzUrlParseTestCase.checkJoins1--dF;;XFFF8G8G7E8G8G8G	G45'9--eW==yIIIIIrcvgd}d|D}||zD]}|tjtj|||tjtj||dS)N)Pythonz./Pythonx-newscheme://foo.com/stuffzx://yzx:/yzx:/rc8g|]}|dSrrwrys  rHrTz7UrlParseTestCase.test_unparse_parse.<locals>.<listcomp>$<<<Qqxx((<<<r)r1r.r/r?r>r8r0)r@rrus    rHtest_unparse_parsez#UrlParseTestCase.test_unparse_parsesbbb	<<)<<<[(	S	SAV\44V\5J5J15M5MNNPQRRRV\44V\5J5J15M5MNNPQRRRR	S	Src|tdd|tdd|tdd|tdd|tdd|td	d
|tdd|td
d|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|td d|td!d"|td#d$|td%d$|td&d|td'd(|td)d*|td+d,|td-d.|td/d0|td1d"|td2d|td3d4|td5d6dS)7Ng:hghttp://a/b/c/g./gg/http://a/b/c/g//g
http://a/g//ghttp://gg?yhttp://a/b/c/g?yg?y/./xhttp://a/b/c/g?y/./x#shttp://a/b/c/d;p?q#sg#shttp://a/b/c/g#sg#s/./xhttp://a/b/c/g#s/./xg?y#shttp://a/b/c/g?y#sg;xhttp://a/b/c/g;xg;x?y#shttp://a/b/c/g;x?y#s.
http://a/b/c/./..http://a/b/../../ghttp://a/b/g../..	http://a/../../../../grrg.http://a/b/c/g..ghttp://a/b/c/.gg..http://a/b/c/g....ghttp://a/b/c/..g./../g./g/.g/./hhttp://a/b/c/g/hg/../hhttp://a/b/c/h)rRFC1808_BASEr@s rHtest_RFC1808zUrlParseTestCase.test_RFC1808s|UE222|S*:;;;|U,<===|T+<===|T<888|UJ777|U,>???|Y0FGGG|T+ABBB|U,>???|Y0FGGG|W.BCCC|U,>???|Y0FGGG|S/:::|T?;;;|T=999|UM:::|V^<<<|Wk:::|X{;;;|Y===	
|R)?@@@|T+<===|T+<===|U,>???|U,>???|X~>>>|W.?@@@|W.@AAA|X/?@@@@@rcl|tjdddS)Nzmailto:1337@example.org)mailtorz1337@example.orgrrrr1r.r/r0rs rHtest_RFC2368zUrlParseTestCase.test_RFC2368s?../HII>	@	@	@	@	@rc|tdd|tdd|tdd|tdd|tdd|td	d
|tdd|td
d|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd |td!d |td"d|td#t|td$d%|td&d'|td(d)|td*d+|td,d|td-d|td.d/|td0d1|td2d3|td4d5|td6d7|td8d9|td:d;|td<d=dS)>Nrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr	g;x=1/./yhttp://a/b/c/g;x=1/y
g;x=1/../yhttp://a/b/c/yrrg?y/../xhttp://a/b/c/g?y/../xrrg#s/../xhttp://a/b/c/g#s/../x)rRFC2396_BASErs rHtest_RFC2396zUrlParseTestCase.test_RFC2396s"	
|UE222|S*:;;;|U,<===|T+<===|T<888|UJ777|U,>???|T+ABBB|U,>???|W.BCCC|U,>???|Y0FGGG|S/:::|T?;;;|T=999|UM:::|V^<<<|Wk:::|X{;;;|Y===|R666|T+<===|T+<===|U,>???|U,>???|X~>>>|W.?@@@|W.@AAA|X/?@@@|[2HIII|\3CDDD|Y0FGGG|Z1HIII|Y0FGGG|Z1HIIIIIrc
|tdd|tdd|tdd|tdd|tdd|td	d
|tdd|td
d|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|td d!|td"d!|td#d$|td%d&|td'd&|td(d|td)d|td)d|td*d|td+d|td,d|td-d.|td/d0|td1d2|td3d4|td5d$|td6d
|td7d8|td9d:|td;d<|td=d>|td?d@|tdAdB|tdCdD|tdEdF|tdGd|dHdddS)IN?yzhttp://a/b/c/d;p?yz;xzhttp://a/b/c/;xrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrz
../../../gz
../../../../gz/./gz/../grrrrrrrrrrrrrrrrrrrrrrrrrrhttp:gzhttp://a/b/c/de)rRFC3986_BASErs rHtest_RFC3986zUrlParseTestCase.test_RFC3986Hs|T*>???|T+<===|U5111|S)9:::|U+;<<<|T*;<<<|T,777|U:666|T*>???|U+=>>>|T*@AAA|U+=>>>|W-ABBB|T*;<<<|U+=>>>|Y/EFFF|R(<===|S999|T/:::|T-888|U=999|VN;;;|W[999|Xk:::|Y|<<<|\<@@@	
|\,???|_\BBB|VL999|W\:::|T*;<<<|T*;<<<|U+=>>>|U+=>>>|Xn===|W->???|W-?@@@|X.>???|[1GHHH|\2BCCC|Y/EFFF|Z0GHHH|Y/EFFF|Z0GHHH|X.>???	
($/@AAAAArc|tdd|tdd|tdd|tdd|tdd|tdd	|td
d|tdd
|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|td d	|td!d"|td#d$|tdd|tdd|td%d|td&d|td'd|d(dd(|d)dd|d)d*d*|d+d,d-|d.d,d/|d0dd1|d2dd3|td4zd5td6z|d7d8d9|d:d8d;|d7d<d=|d:d<d=|d7d>d?|dd8d=|d@dAdAdS)BNrrrhttp:rrrrrrrrrrzhttp://a/b/c/d?yrrrrrrrrrrrrrrrrrrrrrzhttp:?yzhttp:g?yzhttp:g?y/./xzhttp:///rzhttp://a/./gzsvn://pathtorepo/dir1dir2zsvn://pathtorepo/dir2zsvn+ssh://pathtorepo/dir1zsvn+ssh://pathtorepo/dir2zws://a/bzws://a/gz	wss://a/bz	wss://a/grfooz/foozhttp://a/b/c/d/e/z
../../f/g/zhttp://a/b/c/f/g/zhttp://a/b/c/d/ezhttp://a/b/f/g/z/../../f/g/z
http://a/f/g/z	../../f/gzhttp://a/b/c/f/gr	r)rSIMPLE_BASErs rH
test_urljoinszUrlParseTestCase.test_urljoinss{E%000{H-=>>>{G,<==={C(8999{E*:;;;{D):;;;{D666{E*555{D);<<<{E*<==={I.DEEE{C888{D999{D777{E-888{F>:::{GK888{Il;;;{H^<<<{G,=>>>{G,>???{H-=>>>{H-=>>>{G,<==={I.@AAA{J/ABBB{N3IJJJz4
333r12HIIIr>>:::.8OPPP2F<WXXXz#j111{3{333	
{S(%v1EFFF	
*L:MNNN)<9JKKK*M?KKK)=/JJJ*K9KLLL}lODDD	
sC%%%%%rcVgd}dfd|D}||zD]I\}}}tj|}||j|jf||fJgd}d|D}||zD]-}|ttjj|.dS)N))z http://Test.python.org:5432/foo/test.python.org8)zhttp://12.34.56.78:5432/foo/12.34.56.78r)zhttp://[::1]:5432/foo/::1r)zhttp://[dead:beef::1]:5432/foo/dead:beef::1r)zhttp://[dead:beef::]:5432/foo/dead:beef::r)z:http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/'dead:beef:cafe:5417:affe:8fa3:deaf:feedr)z http://[::12.34.56.78]:5432/foo/
::12.34.56.78r)z%http://[::ffff:12.34.56.78]:5432/foo/::ffff:12.34.56.78r)zhttp://Test.python.org/foo/r
N)zhttp://12.34.56.78/foo/rN)zhttp://[::1]/foo/r
N)zhttp://[dead:beef::1]/foo/rN)zhttp://[dead:beef::]/foo/rN)z5http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/rN)zhttp://[::12.34.56.78]/foo/rN)z http://[::ffff:12.34.56.78]/foo/rN)zhttp://Test.python.org:/foo/r
N)zhttp://12.34.56.78:/foo/rN)zhttp://[::1]:/foo/r
N)zhttp://[dead:beef::1]:/foo/rN)zhttp://[dead:beef::]:/foo/rN)z6http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:/foo/rN)zhttp://[::12.34.56.78]:/foo/rN)z!http://[::ffff:12.34.56.78]:/foo/rNc||dd|dd|dfS)NrrtrOr~rwrs rHrz.UrlParseTestCase.test_RFC2732.<locals>._encodes3Q4;;w''1W)=)=qtCCrc&g|]
}|Srrrs  rHrTz1UrlParseTestCase.test_RFC2732.<locals>.<listcomp>rr)zhttp://::12.34.56.78]/zhttp://[::1/foo/zftp://[::1/foo/bad]/badzhttp://[::1/foo/bad]/badzhttp://[::ffff:12.34.56.78c8g|]}|dSrrwrys  rHrTz1UrlParseTestCase.test_RFC2732.<locals>.<listcomp>rr)r.r/r0r1r<r=assertRaises
ValueError)	r@rrrAr<r=	urlparsedinvalid_urlrs	        @rHtest_RFC2732zUrlParseTestCase.test_RFC2732s	@	D	D	D55559555#,{#:	V	VC4--c22Ii0).AXtDTUUUU...	=<)<<<${2	N	NKj&,*?MMMM	N	Nrcddddddddtd	d
ftd	dfg
}dfd
|D}||zD]\}}}tj|}|||||||f||j|||j|dS)N)zhttp://python.org#fraghttp://python.orgfrag)rrr)zhttp://python.org/#fraghttp://python.org/r)rrr)zhttp://python.org/?q#fraghttp://python.org/?qr)rrr)zhttp://python.org/p#fragzhttp://python.org/pr)http://python.org/p?qr rrrrcFt|d|DS)Nc3@K|]}|dVdSrvrwrys  rHr{zCUrlParseTestCase.test_urldefrag.<locals>._encode.<locals>.<genexpr>s.88188G,,888888r)typers rHrz0UrlParseTestCase.test_urldefrag.<locals>._encodes'47788a888888rc&g|]
}|Srrrs  rHrTz3UrlParseTestCase.test_urldefrag.<locals>.<listcomp>rr)	rrr.r/	urldefragr1r9rAr7)r@rrrAdefragrrDrs       @rHtest_urldefragzUrlParseTestCase.test_urldefragsC:E<I@GB
/5
/4
		9	9	955559555!*[!8	4	4C\++C00FV]]__c222Vfd^444VZ000V_d3333	4	4rcZtjd}||jd||jdtjd}||jd||jddS)Nz,http://[FE80::822a:a8ff:fe49:470c%tESt]:1234zfe80::822a:a8ff:fe49:470c%tEStz%[FE80::822a:a8ff:fe49:470c%tESt]:1234s,http://[FE80::822a:a8ff:fe49:470c%tESt]:1234sfe80::822a:a8ff:fe49:470c%tESts%[FE80::822a:a8ff:fe49:470c%tESt]:1234)r.r/r>r1r<r3)r@rs  rHtest_urlsplit_scoped_IPv6z*UrlParseTestCase.test_urlsplit_scoped_IPv6sL!!"PQQ%EFFF#JKKKL!!"QRR%FGGG#KLLLLLrcd}tj|}||jd||jd||jd||jd||jd||j	d||j
d||jd||jd||
dd|ddd	}tj|}||jd||jd
||jd||jd||jd||j	d||j
d
||jd||jd||
|d}tj|}||jd||jd||jd||jd||jd||j	d||j
d
||jd||jd||
|d}tj|}||jd||jd||jd||jd||jd||j	d||j
d||jd||jd||
dd|ddd}tj|}||jd||jd||jd||jd||jd||j	d||j
d||jd||jd||
|d}tj|}||jd||jd||jd||jd||jd||j	d ||j
d||jd||jd||
|d!}tj|}|td"5|jddddS#1swxYwYdS)#NzHTTP://WWW.PYTHON.ORG/doc/#fragrzWWW.PYTHON.ORG/doc/rrr7http://User:Pass@www.python.org:080/doc/?query=yes#fragUser:Pass@www.python.org:080	query=yesUserPassPzChttp://User@example.com:Pass@www.python.org:080/doc/?query=yes#frag(User@example.com:Pass@www.python.org:080zUser@example.comsHTTP://WWW.PYTHON.ORG/doc/#fragrsWWW.PYTHON.ORG/doc/rfragwww.python.orgs7http://User:Pass@www.python.org:080/doc/?query=yes#fragUser:Pass@www.python.org:080	query=yesUserPasssChttp://User@example.com:Pass@www.python.org:080/doc/?query=yes#frags(User@example.com:Pass@www.python.org:080sUser@example.coms%HTTP://WWW.PYTHON.ORG:65536/doc/#fragzout of range)r.r/r>r1r2r3r4r6r7r:r;r<r=r9assertRaisesRegexr)r@rArs   rHtest_urlsplit_attributesz)UrlParseTestCase.test_urlsplit_attributes
s4/L!!#&&6***#3444)))"%%%V,,,T***T***%5666&&&	
ABBQRR111GL!!#&&6***#ABBB)))+...V,,,V,,,V,,,%5666$$$S)))TL!!#&&6***#MNNN)))+...V,,,%7888V,,,%5666$$$S)))1L!!#&&7+++#4555***#&&&W---T***T***%6777&&&ABBQRR111HL!!#&&7+++#BCCC***,///W---W---W---%6777$$$S)))TL!!#&&7+++#NOOO***,///W---%8999W---%6777$$$S)))7L!!#&&

#
#J
?
?		
FF																		s__!_cd}tj|}||jd||jd||jd||jd||jd||j	d||j
d||jd||jd||
dd}tj|}||jd	||jd
||jd||jd||jd
||j	d||j
d||jd
||jd||
dd}d}tdD]f}tj||}||jd||
dgdS)NzQhttp	://www.python
.org	/java
script:	alert('msg
')/?query
=	something#frag
mentrrz/javascript:alert('msg')/zquery=somethingr7zGhttp://www.python.org/javascript:alert('msg')/?query=something#fragmentsQhttp	://www.python
.org	/java
script:	alert('msg
')/?query
=	something#frag
mentrr6s/javascript:alert('msg')/squery=somethingfragmentsGhttp://www.python.org/javascript:alert('msg')/?query=something#fragmentzNhttp://www.python.org/java
script:	alert('msg
')/?query
=	something#frag
mentzht
tpr~r2)r.r/r>r1r2r3r4r6r7r:r;r<r=r9range)r@rArr2_s     rH!test_urlsplit_remove_unsafe_bytesz2UrlParseTestCase.test_urlsplit_remove_unsafe_bytesgskL!!#&&6***#3444!<==="3444Z000T***T***%5666&&&%nooomL!!#&&7+++#4555!=>>>"4555[111T***T***%6777&&&%opppfq	t	tA%%c&%99AQXv...QXXZZ)rssss	t	trcn	ttdd}d}|d|z}tj|}||jd||jd||j	d||j
d||jd	||jd
||j
d||jd||jd
|||||dz}tj|}||jd||jd||j	d||j
d||jd||jd||j
d||jd||jd
|||dd}tj|d|z}||jd||jd||j	d||j
d||jd|||tjd}|tj|dd}|ddz|dz}tdD]f}tj||}||jd||dgdS) Nr!r-utf-8rr.r+r/rr0r1rr2rr7r4r8r5r9r:r6z)https://www.python.org:88/doc/?query=    rzwww.python.org:88z
query=    Xz
www.pypi.org z//www.python.org/r~r?zhttps://www.python.org/)bytesr@decoder.r/r>r1r2r3r4r6r7r:r;r<r=r9rxr?)r@noisebase_urlrArquery_spaces_urlr2rAs        rHtest_urlsplit_strip_urlz(UrlParseTestCase.test_urlsplit_strip_urlseAx(())Lll7##h.L!!#&&6***#ABBB)))+...V,,,V,,,V,,,%5666$$$X...hoog...L!!#&&7+++#BCCC***,///W---W---W---%6777$$$X__W%=%=>>>GL!!%,,w"7"7:J"JKK7+++#6777))),///$$$%5666L!!/22	
0033_EEE"g&&05<<3H3HHq	D	DA%%c&%99AQXw///QXXZZ)BCCCC	D	Drc
n	dD]/}tjjtjjfD]}dD]}||||5d|z}d|zdz}|r`|r?|r+|d}|d}n
	ddd||}||j||	t5|jdddn#1swxYwYdddn#1swxYwY
1dS)NFT)	rz1.5z-10x10z-01_1z 1z1 u६)rGr/r=zwww.example.net:zhttp://rrt)r.r/r>r0subTestisasciirxr1r3rrr=)r@rGr/r=r3rArs       rHtest_attributes_bad_portz)UrlParseTestCase.test_attributes_bad_ports."	#	#E ,/1FG
#
#X
#
#DETJJ##!3d!:'&036 )%~~//)DLLNN))/w)?)?&)jj&9&9 (#######"E#JJ((6:::!..z::##FF##############################
#
#	#	#s>	A$D$	9AD$	9D
D$	
DD$	DD$	$D(
+D(
c		dD]}tjjtjjfD]}dD]}||||5|dz}|r7|r|d}n
	dddY||}|r||jdn||jddddn#1swxYwYdS)NrN)r+-0zhttp&u६http)rGr/r2z://www.example.netrtrr)	r.r/r>r0rQrRrxr1r2)r@rGr/r2rArs      rHtest_attributes_bad_schemez+UrlParseTestCase.test_attributes_bad_schemesi0"	;	;E ,/1FG

;

;F;;FEvNN;;$';; )"{{}})&)jj&9&9 (
;;;;;;;"E#JJ ; ,,QXs;;;; ,,QXr:::;;;;;;;;;;;;;;;;

;	;	;s3C	AC	C
C
c~d}tj|}||jd||jd||jd||jd||jd||	|tj
|}||jd||jd||jd||jd||jd||	|d}tj|}||jd||jd||jd||jd||jd||	|tj
|}||jd||jd||jd||jd||jd||	|dS)Nz0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15rs0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15r)r.r/r>r1r3r:r;r<r=r9r0)r@urirs   rHtest_attributes_without_netlocz/UrlParseTestCase.test_attributes_without_netlocsAL!!#&&2&&&T***T***T***&&&S)))L!!#&&2&&&T***T***T***&&&S)))BL!!#&&3'''T***T***T***&&&S)))L!!#&&3'''T***T***T***&&&S)))))rc|tjdd|tjdddS)Nz http://example.com?blahblah=/foo)rzexample.comrrz
blahblah=/foors http://example.com?blahblah=/foo)rsexample.comrrs
blahblah=/foorrrs rHtest_noslashzUrlParseTestCase.test_noslashsp../QRRM	O	O	O../RSSS	U	U	U	U	Urcj|tjdd|tjdd|tjdd|tjdd|tjd	d
|tjdddS)
Nr4)rrr4rrrz//www.python.org:80)rwww.python.org:80rrrrhttp://www.python.org:80rr_rrrrpath)rrrbrrrs//www.python.org:80)rwww.python.org:80rrrrhttp://www.python.org:80rrcrrrrrrs rHtest_withoutschemez#UrlParseTestCase.test_withoutschemes'
	
..v66'	)	)	)../DEE4	6	6	6../IJJ8	:	:	:	
..w77-	/	/	/../EFF:	<	<	<../JKK>	@	@	@	@	@rc|tjdd|tjdd|tjdd|tjdd|tjd	d
|tjdd|tjd
d|tjdd|tjdd|tjdd|tjdd|tjdddS)Nzhttp:80)rr80rrrzhttps:80)rrrhrrrzpath:80)r4rrhrrrr)rrrrrrzhttps:)rrrrrrr`rashttp:80)rr80rrrshttps:80)rrrirrrspath:80)rbrrirrrshttp:)rrrrrrshttps:)rrrrrrrdrerrs rHtest_portseparatorz#UrlParseTestCase.test_portseparator/s..y99;TUUU..z::<VWWW..y99;TUUU..w778OPPP..x889QRRR../IJJ8	:	:	:	
..z::<[\\\..{;;=]^^^..z::<[\\\..x889VWWW..y99:XYYY../JKK>	@	@	@	@	@rc\|ttjjddS)Nr)r	TypeErrorr.r/	urlencoders rH
test_usingsyszUrlParseTestCase.test_usingsysAs%)V\%;UCCCCCrc6|tjdd|tjdd|tjdd|tjdd|tjd	d
|tjdd|tjd
d|tjdddS)Nzs3://foo.com/stuff)s3foo.com/stuffrrrr)x-newschemerqrrrrrz*x-newscheme://foo.com/stuff?query#fragment)rsrqrrrr6r7z!x-newscheme://foo.com/stuff?query)rsrqrrrr6rss3://foo.com/stuff)ss3foo.com/stuffrrrsx-newscheme://foo.com/stuff)x-newschemertrurrrs*x-newscheme://foo.com/stuff?query#fragment)rvrtrurqueryr>s!x-newscheme://foo.com/stuff?query)rvrtrurrwrrrs rHtest_anyschemezUrlParseTestCase.test_anyschemeEs../CDD@	B	B	B../LMMI	K	K	K../[\\V	X	X	X../RSSN	P	P	P	
../DEEF	H	H	H../MNNO	Q	Q	Q../\]]\	^	^	^../STTT	V	V	V	V	VrctjjtjjfD]]}||5|dd}||jd|dd}||jd||ddjd||dd	jd||d
d	jd||djd||d
jd||d
djddddn#1swxYwY_dS)
N)functionzhttp://example.net/ftprshttp://example.net/sftprr4r?rbrr)r.r/r0r>rQr1r2)r@funcrDs   rHtest_default_schemez$UrlParseTestCase.test_default_schemeZs\*FL,AB	@	@Dt,,

@

@3U;;  7774f==  888  fe!4!4!;UCCC  fU!;!;!;!BEJJJ  gf!=!=!=!DfMMM  f!4b999  g!5s;;;  gr!2!2!93???

@

@

@

@

@

@

@

@

@

@

@

@

@

@

@	@	@sD-E55E9	<E9	c
`d}|D]\}}}tjjtjjfD]|}|dkr|tjjurd}|||5||d}||jd|t||	d|z|||ddjd||d	}||j||
t||	||||dd	j||||j|dddn#1swxYwY~dS)
N)
)z
http:#fragr4r)z//example.net#fragr4r)zindex.html#fragr4r)z	;a=b#fragr5r)z	?a=b#fragr6r)z#fragr4r)z	abc#@fragr4@frag)z//abc#@fragr4r)z//abc:80#@fragr4r)z//abc#@frag:80r4z@frag:80r5r4)rArzF)allow_fragmentsr#T)r.r/r0r>rQr1r7
assertTruegetattrendswithassertFalse)r@testsrAattr
expected_fragr|rDs       rHtest_parse_fragmentsz%UrlParseTestCase.test_parse_fragmentsis.
).	H	H$C}.0EF
H
H8##0E(E(E!D\\cD\99
H
H!T#u===F$$V_b999OO#FD11::3;NOOQQQ$$TT#r5%9%9%BBGGG!T#t<<<F$$V_mDDD$$#FD11::=IIKKK$$TT#r4%8%8%A%2444$$TT#YY%7GGG
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H	H	Hs#D0FF#&F#c||td5tjdddddn#1swxYwY|td5tjdddddn#1swxYwY|td5tjdddddn#1swxYwY|td5tjdddddn#1swxYwY|td5tjddddn#1swxYwY|td5tjddddn#1swxYwY|td5tjddddn#1swxYwY|td5tjd	dddn#1swxYwY|td5tjd
ddddn#1swxYwY|td5tjdd
ddddS#1swxYwYdS)NzCannot mix strrrr6r)rrrrrr)rr6rrrr)rrrrr)rr6rrrrshttp://python.org)	r;rlr.r/r0r>r8r?rrs rHtest_mixed_types_rejectedz*UrlParseTestCase.test_mixed_types_rejecteds
#
#I/?
@
@	=	=L!!"2G<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=

#
#I/?
@
@	=	=L!!"3V<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=

#
#I/?
@
@	=	=L!!"2G<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=

#
#I/?
@
@	=	=L!!"3V<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=

#
#I/?
@
@	N	NL##$LMMM	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N

#
#I/?
@
@	M	ML##$KLLL	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M

#
#I/?
@
@	J	JL##$HIII	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J

#
#I/?
@
@	J	JL##$HIII	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J

#
#I/?
@
@	L	LL  !46JKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L

#
#I/?
@
@	L	LL  !57JKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Ls!A		A
A
/!BB #B !C//C36C3!EE	E( FFF: G&&G*-G* H88H<?H< J

JJ0!KK!$K!!L11L58L5ct|j}|j}||j|d|z}d|z}||}||}d}d}	|||||||||||||||||||||	|||||	||||||||||||||||||||||	|||||	|dS)N)r)rrtstrict)rQ_fields_encoded_counterpartassertIs_decoded_counterpartr1rHrx)
r@str_typenum_args
bytes_typestr_args
bytes_args
str_resultbytes_resultencodingerrorss
          rH_check_result_typez#UrlParseTestCase._check_result_typesIx'((2


j5x@@@8#h&
Xx(
!z:.X...,,..999,,..
;;;,,X66AAA,,X66
CCC,,Xv>>III,,Xv>>
KKKz222**,,j999**,,l;;;**844jAAA**844lCCC**8V<<jIII**8V<<lKKKKKrctjjtjjtjjg}|D]}||dSr-)r.r/DefragResultSplitResultParseResultr)r@result_typesresult_types   rHtest_result_pairsz"UrlParseTestCase.test_result_pairssU,
#
,
"
,
"

(	1	1K##K0000	1	1rcLtjdd}||ddgitjdd}||ddgitjdd}||dd	gitjd
d}||ddgitjd
dd
}||ddgidS)N	key=Ł%E9latin-1rkeyŁékey=Ł%C3%A9rErtŁ��
key=Ł%E9-Ł�-ignorerrŁ-)r.r/r_r1r@rDs  rHtest_parse_qs_encodingz'UrlParseTestCase.test_parse_qs_encodings-&&&KK%,!8999&&'9G&LL%,!8999&&'9G&LL%*>)?!@AAA&&'7'&JJ%/):!;<<<&&'7'AI'KK%)!566666rc8tjdd}||dgtjdd}||dgtjdd}||dgtjd	d}||d
gtjd	dd}||d
gdS)Nrrr)rrrrErt)rrr)rrrr)rr)r.r/rVr1rs  rHtest_parse_qsl_encodingz(UrlParseTestCase.test_parse_qsl_encodings'')'LL"7!8999''(:W'MM"7!8999''(:W'MM"?!@AAA''(87'KK":!;<<<''(87AI(KK"4!566666rcJ|t5tjddgdzddddn#1swxYwYtjddgdzddS)Nrza=a
)max_num_fields)rrr.r/r_joinrs rHtest_parse_qsl_max_num_fieldsz.UrlParseTestCase.test_parse_qsl_max_num_fieldss


z
*
*	K	KL!!#((E72:"6"6r!JJJ	K	K	K	K	K	K	K	K	K	K	K	K	K	K	Kchhwrz222FFFFFs9A  A$'A$c
difdifdddgifddgdgd	fd
dddgifd
ifdifdddgifddgdgdfddddgifg
}|D]\}}|d|d|5tj|d}|||d|ztj|d
}|||d|zdddn#1swxYwYdS)N;;;r"r	rr$r
rr
a=1;a=2rr;;;r&rrr(rrra=1;a=2rr!
Original: , Expected: 	separatorrM)rQr.r/r_r1)r@parse_qs_semicolon_casesrWrXrDresult_bytess      rHtest_parse_qs_separatorz(UrlParseTestCase.test_parse_qs_separators
"I
2J
cC5\"
5'889
sCj)*
2J
BK
tdVn%
VHVH==>
$t-.$
 5	R	RLD&I4IIvIIJJ
R
R..ts.CC  1Cd1JKKK%|44TT4JJ  v7ID7PQQQ	
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R	R	RsA7CC"	%C"	cdgfdgfddgfdddgfdd	d
gfdgfdgfd
dgfdddgfdddgfg
}|D]\}}|d|d|5tj|d}|||d|ztj|d}|||d|zdddn#1swxYwYdS)Nrrr"r
r$rrrrrrrr&rr(rrrrr rrrrM)rQr.r/rVr1)r@parse_qsl_semicolon_casesrWrXrDrs      rHtest_parse_qsl_separatorz)UrlParseTestCase.test_parse_qsl_separators
"I
2J
j\"
\<89
Z01
2J
BK
|n%
nn=>
,56%
!6	R	RLD&I4IIvIIJJ
R
R///DD  1Cd1JKKK%|55dd5KK  v7ID7PQQQ	
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R	R	Rs
A7CC	C	ctjddgddd}Gdd}tjd|id}||d	dS)
NrOr~)r,r
TceZdZdZdS):UrlParseTestCase.test_urlencode_sequences.<locals>.TrivialcdS)Ntrivialrrs rH__str__zBUrlParseTestCase.test_urlencode_sequences.<locals>.Trivial.__str__s yrN)__name__
__module____qualname__rrrrHTrivialrs#
!
!
!
!
!rrr	z	a=trivial)r.r/rmr1)r@rDrs   rHtest_urlencode_sequencesz)UrlParseTestCase.test_urlencode_sequencess''q!f9(E(EtLL	!	!	!	!	!	!	!	!''ggii(8$??-----rctjddi}||dtjdditjj}||dtjddidtjj}||d	dS)
Nr	z
some valueza=some+valuezsome value/another)	quote_viaza=some%20value%2Fanotherr)saferza=some%20value/another)r.r/rmr1quoters  rHtest_urlencode_quote_viaz)UrlParseTestCase.test_urlencode_quote_vias''l(;<<000''.B(C28,2D(FF!;<<<''.B(C-0FL<N(PP!9:::::rc0|ttjjdtjd}||dtjd}||ddS)Nrsarchaeological arcanazarchaeological%20arcanarr)rrlr.r/quote_from_bytesr1rs  rHtest_quote_from_bytesz&UrlParseTestCase.test_quote_from_bytes&s})V\%BEJJJ../GHH!:;;;..s33$$$$$rctjd}||dtjd}||ddS)Nz	abc%20defsabc defrr)r.r/unquote_to_bytesr1rs  rHtest_unquote_to_bytesz&UrlParseTestCase.test_unquote_to_bytes-s^..{;;,,,..r22%%%%%rc|ttjjdd|ttjjdddS)NsfoorErr)r)rrlr.r/rrs rHtest_quote_errorsz"UrlParseTestCase.test_quote_errors3sU)V\%7#*		,	,	,)V\%7QQQQQrctjd}||jd||jdtjd}||jd||jdtjd}||jd||jdtjd}||jd||jddS)Nztel:+31-641044153telz
+31-641044153ztel:+31641044153z+31641044153)r.r/r>r1r2r4r0)r@p1p2s   rHtest_issue14072z UrlParseTestCase.test_issue140728s 
\
"
"#6
7
7E***/222
\
"
"#5
6
6E***.111
\
"
"#6
7
7E***/222
\
"
"#5
6
6E***.11111rcb|ttjjd|ttjjd|ttjjd|ttjjd|ttjjd|ttjjd|ttjjd|ttjjd|ttjjd	|ttjjd
dS)Nz&Scheme://user@[192.0.2.146]/Path?Queryz-Scheme://user@[important.com:8000]/Path?Queryz#Scheme://user@[v123r.IP]/Path?Queryz Scheme://user@[v12ae]/Path?QueryzScheme://user@[v.IP]/Path?Queryz Scheme://user@[v123.]/Path?QueryzScheme://user@[v]/Path?Queryz5Scheme://user@[0439:23af::2309::fae7:1234]/Path?QueryzJScheme://user@[0439:23af:2309::fae7:1234:2342:438e:192.0.2.146]/Path?QueryzScheme://user@]v6a.ip[/Path)rrr.r/r>rs rHtest_invalid_bracketed_hostsz-UrlParseTestCase.test_invalid_bracketed_hostsGs@*fl&;=efff*fl&;=lmmm*fl&;=bccc*fl&;=_```*fl&;=^___*fl&;=_```*fl&;=[\\\*fl&;=tuuu*fl&;>J	K	K	K*fl&;=Z[[[[[rctjd}||jd||jd||jdtjd}||jd||jd||jdtjd}||jd||jd||jddS)	Nz!scheme://user@[v6a.ip]/path?queryzv6a.ipuser/pathz4scheme://user@[0439:23af:2309::fae7%test]/path?queryz0439:23af:2309::fae7%testzEscheme://user@[0439:23af:2309::fae7:1234:192.0.2.146%test]/path?queryz*0439:23af:2309::fae7:1234:192.0.2.146%test)r.r/r>r1r<r:r4)r@rrp3s    rHtest_splitting_bracketed_hostsz/UrlParseTestCase.test_splitting_bracketed_hostsSs$
\
"
"#F
G
Gh///f---'***
\
"
"#Y
Z
Z&ABBBf---'***
\
"
"#j
k
k&RSSSf---'*****rcpd}tjd}|t|5|jdddn#1swxYwYtjd}|t|5|jddddS#1swxYwYdS)Nz3Port could not be cast to integer value as 'oracle'z%http://Server=sde; Service=sde:oracle)r.r/r0r;rr=r>)r@messagerrs    rH!test_port_casting_failure_messagez2UrlParseTestCase.test_port_casting_failure_messageas(G
\
"
"#J
K
K

#
#J
8
8		GG															\
"
"#J
K
K

#
#J
8
8		GG																		s#AAAB++B/2B/ctjd}||jd||jd||jdtjd}||jd||jd||jdtjd}||jd||jd	||jd
tjd}||jd||jd||jd
dS)Nz"tel:123-4;phone-context=+1-650-516rz123-4zphone-context=+1-650-516ztel:+1-201-555-0123z+1-201-555-0123rz"tel:7042;phone-context=example.com7042zphone-context=example.comz%tel:863-1234;phone-context=+1-914-555z863-1234zphone-context=+1-914-555)r.r/r0r1r2r4r5)r@rs  rHtest_telurl_paramsz#UrlParseTestCase.test_telurl_paramsks
\
"
"#G
H
HE***'***$>???
\
"
"#8
9
9E***"3444B'''
\
"
"#G
H
HE***&)))$?@@@
\
"
"#J
K
KE****---$>?????rctjtjj}|dt|dS)NQuoter)r.r/_Quoter_ALWAYS_SAFEassertInrepr)r@quoters  rHtest_Quoter_reprz!UrlParseTestCase.test_Quoter_reprs<%%fl&?@@

hV-----rcBtjdSr-)r.r/clear_cachers rH"test_clear_cache_for_code_coveragez3UrlParseTestCase.test_clear_cache_for_code_coverages  """""rc	|t5tjj}ddddS#1swxYwYdSr-)rAttributeErrorr.r/this_does_not_exist)r@unuseds  rH!test_urllib_parse_getattr_failurez2UrlParseTestCase.test_urllib_parse_getattr_failuresC


~
.
.	6	6\5F	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6s
;??cPg}hd}ttjD]`}|ds||vrt	tj|}t	|dddkr||a|tjj|dS)N>unwrapsplittagto_bytes	splitattr	splithost	splitport	splittype	splituser
ResultBase
splitnport
splitquery
splitvaluersplitpasswdrArzurllib.parse)dirr.r/
startswithrappendassertCountEqual__all__)r@rundocumentednameobjects     rHtest_allzUrlParseTestCase.test_alls


%%	&	&Ds##
t|';';V\400Fv|T22nDD%%%fl2H=====rcddDfdtttdtjD}|d||d|tjd|	t5tjddddn#1swxYwYd	D]}d
D]}|D]}d|||}||dt|
5|	t5tj|dddn#1swxYwYdddn#1swxYwY̌ьdS)Nz/:#?@cRh|]$}dt|%S){:04X})formatord)rRcs  rH	<setcomp>z?UrlParseTestCase.test_urlsplit_normalization.<locals>.<setcomp>s*DDDX__SVV,,DDDrcg|]R}tj|r<ttj|zr|vP|SSr)unicodedata
decompositionsetrC)rRr#	hex_chars
illegal_charss  rHrTz@UrlParseTestCase.test_urlsplit_normalization.<locals>.<listcomp>ss


(++
S!:1!=!=!C!C!E!EFFF
&&
'&&ru℀u#uhttp://プ:80uhttp://プ︓80)rrr{)znetloc{}false.netloczn{}user@netlocz{}://{}/pathr )rAchar)mapchrr@sys
maxunicoderr.r/r>rrr!rQr")r@denorm_charsr2r3r#rAr)r*s      @@rHtest_urlsplit_normalizationz,UrlParseTestCase.test_urlsplit_normalizations 
DDmDDD	




3c3> : :;;


	


h---

h---	6777


z
*
*	A	AL!!"?@@@	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A/	7	7FD
7
7%77A(//

a8H8HIIC#HOOCFF4K4KLL77!..z::77"L11#6667777777777777777777777777777777
7	7	7sH0 CC #C F1	. FF1	FF1	!F"F1	1F5
8F5
N)6rrrrIrZr`rrrrrrrrrrr'r)r<rBrLrSrXr[r]rfrjrnrxr}rrrrrrrrrrrrrrrrrrrrrrrr2rrrHr+r+Gsl181818f777777!5!5!5F$=$=$=LJJJSSS"A"A"A`@@@
%J%J%JZ7B7B7Br5&5&5&n0N0N0Nd444.MMM[[[z#t#t#tJ9D9D9Dv###&;;;$'*'*'*RUUU@@@&@@@$DDDVVV*
@
@
@HHHBLLL0LLL2111777777GGG
RRR*RRR*...;;;%%%&&&RRR

2
2
2
\
\
\+++@@@*...###666
>>> 77777rr+cXeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
S)
Utility_Testsc^tjj}||dd||dd||dd||dd||d	d
dS)Nztype:opaquestring)r#opaquestringr6)Nr6
:opaquestring)Nr7ztype:)r#rztype:opaque:string)r#z
opaque:string)r.r/
_splittyper1)r@rs  rHtest_splittypezUtility_Tests.test_splittypesL+	#6779QRRR>224JKKK?335LMMM7++\:::#788:STTTTTrctjj}||dd||dd||dd||dd||d	d
||dd||d
d||dd||dd||dddS)Nz%//www.example.org:80/foo/bar/baz.html)www.example.org:80/foo/bar/baz.htmlz//www.example.org:80)r;rr<)Nr<z//127.0.0.1#@host.com)	127.0.0.1/#@host.comz//127.0.0.1#@host.com:80)r=z/#@host.com:80z//127.0.0.1:80#@host.com)z127.0.0.1:80r>z///file)rz/filez//example.net/file;)example.netz/file;z//example.net/file?)r?z/file?z//example.net/file#)r?z/file#)r.r/
_splithostr1)r@rs  rHtest_splithostzUtility_Tests.test_splithostsL+	#JKKD	F	F	F#9::3	5	5	5#6774	6	6	6	
#:;;5	7	7	7#=>>8	:	:	:#=>>8	:	:	:	
9--&	(	(	(	
#8992	4	4	4#8992	4	4	4#8992	4	4	4	4	4rc^tjj}||dd||dd||dd||dd||d	d
dS)Nr.)	User:Passwww.python.org:080z@www.python.org:080)rrDrD)NrDz
User:Pass@)rCrr3)zUser@example.com:PassrD)r.r/
_splituserr1)r@rs  rHtest_splituserzUtility_Tests.test_splitusersL+	#ABB<	>	>	>#8993	5	5	5#7885	7	7	7<00*	,	,	,#MNNH	J	J	J	J	JrcNtjj}||dd||dd||dd||dd||d	d
||dd||d
d||dd||dd||dd||dd||dd||dddS)Nzuser:ab)rabzuser:a
b)rza
bzuser:a	b)rza	bzuser:a
b)rza
bzuser:ab)rzabzuser:ab)rzabzuser:a:b)rza:bzuser:a b)rr
z	user 2:ab)zuser 2rHz
user+1:a+b)zuser+1za+bzuser:)rrr)rNz:ab)rrH)r.r/_splitpasswdr1)r@rs  rHtest_splitpasswdzUtility_Tests.test_splitpasswdsl/Y//@@@[113CDDD[113CDDD[113CDDD[113CDDD[113CDDDZ00/BBBZ00/BBB[113CDDD\224EFFFW--|<<<V,,n===U++Z88888rctjj}||dd||dd||dd||dd||dd	||d
d||dd
||dddS)N	parrot:88)parrot88rMrMNparrot:r=)r=N
parrot:cheese)rQNz[::1]:88)[::1]rNrR)rRNz:88)rrN)r.r/
_splitportr1)r@r
s  rHtest_splitportzUtility_Tests.test_splitportsL+	;//1ABBB8,,.>???9--/?@@@;//1DEEE?335LMMM:..@@@7++_===5)):66666rctjj}||dd||dd||ddd||dd||ddd||dd	||ddd
||dd||ddd||d
ddS)NrL)rMrFrM)rM7)rMrWrPr=)r=rV)r=rWrQrOz
parrot: +1_0 )r.r/_splitnportr1)r@rs  rHtest_splitnportzUtility_Tests.test_splitnport
s_\-
K00.AAAH--~>>>Hb11>BBBI..???Ir22NCCCK002CDDDK446GHHHO446FGGGOR88:JKKKO446FGGGGGrc tjj}||dd||dd||dd||dddS)	Nhttp://python.org/fake?foo=bar)http://python.org/fakefoo=barzhttp://python.org/fake?foo=bar?)r[rr\)r\Nz?foo=bar)rr])r.r/_splitqueryr1)r@rs  rHtest_splitqueryzUtility_Tests.test_splitquerys\-
$DEE>	@	@	@$EFF?	A	A	A$<==9	;	;	;J//AAAAArc^tjj}||dd||dd||dd||dd||d	d
dS)Nhttp://example.com?foo=bar#baz)http://example.com?foo=barbazzhttp://example.com?foo=bar#)rbrz#baz)rrcrb)rbNz"http://example.com?foo=bar#baz#boo)raboo)r.r/	_splittagr1)r@r	s  rH
test_splittagzUtility_Tests.test_splittag&s<)"BCC>	@	@	@"?@@;	=	=	=&));777">??=	?	?	?"FGGB	D	D	D	D	Drc:tjj}||ddddgf||dddgf||ddddgf||ddgfdS)Nz/path;attr1=value1;attr2=value2rzattr1=value1zattr2=value2z/path;rz;attr1=value1;attr2=value2)r.r/
_splitattrr1)r@rs  rHtest_splitattrzUtility_Tests.test_splitattr2sL+	#DEE!NN#CD	F	F	F8,,wo>>>#?@@~~>?	A	A	A7++gr];;;;;rc^tjj}||dd||dd||dd||dd||d	d
dS)Nr])rbarzfoo=)rrz=bar)rrkfoobar)rlNzfoo=bar=baz)rzbar=baz)r.r/_splitvaluer1)r@rs  rHtest_splitvaluezUtility_Tests.test_splitvalue;s\-
I..???F++[999F++[999H--/?@@@M224FGGGGGrctjd}||d|t
tjjddS)Nzhttp://www.python.orguhttp://www.python.org/mediæval)r.r/	_to_bytesr1rUnicodeErrorrs  rH
test_to_byteszUtility_Tests.test_to_bytesEsb''(?@@!8999,(>?	A	A	A	A	ArczdD]7}tj|}||d8dS)N)z<URL:scheme://host/path>z<scheme://host/path>zURL:scheme://host/pathscheme://host/pathrt)r.r/rr1)r@wrapped_urlrAs   rHtest_unwrapzUtility_Tests.test_unwrapKsML	8	8K,%%k22CS"67777	8	8rN)rrrr9rArFrJrTrYr_rfrirnrrrvrrrHr4r4sGUUU444:JJJ999$	7	7	7HHH
B
B
B
D
D
D<<<HHHAAA88888rr4cVeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
S)DeprecationTestc&|t5}tjj}||tjjdddn#1swxYwY|dt|j	dS)NzQuoter will be removed)
assertWarnsDeprecationWarningr.r/rrrrstrwarning)r@cm	old_classs   rHtest_Quoter_deprecationz'DeprecationTest.test_Quoter_deprecationTs


0
1
1	;R+IMM)V\%9:::	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	


.BJ@@@@@s7AA"%A"c|t5}tjddddn#1swxYwY|t
|jddS)NrzUurllib.parse.splittype() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/rr1r|r}r@r~s  rHtest_splittype_deprecationz*DeprecationTest.test_splittype_deprecationZ


0
1
1	'RL""2&&&	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'RZ?	@	@	@	@	@ AAAc|t5}tjddddn#1swxYwY|t
|jddS)NrzUurllib.parse.splithost() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/rr1r|r}rs  rHtest_splithost_deprecationz*DeprecationTest.test_splithost_deprecationarrc|t5}tjddddn#1swxYwY|t
|jddS)NrzUurllib.parse.splituser() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/rr1r|r}rs  rHtest_splituser_deprecationz*DeprecationTest.test_splituser_deprecationhrrc|t5}tjddddn#1swxYwY|t
|jddS)NrzWurllib.parse.splitpasswd() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/rr1r|r}rs  rHtest_splitpasswd_deprecationz,DeprecationTest.test_splitpasswd_deprecationos


0
1
1	)RL$$R(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)RZ?	@	@	@	@	@rc|t5}tjddddn#1swxYwY|t
|jddS)NrzUurllib.parse.splitport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/r
r1r|r}rs  rHtest_splitport_deprecationz*DeprecationTest.test_splitport_deprecationvrrc|t5}tjddddn#1swxYwY|t
|jddS)NrzVurllib.parse.splitnport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/rr1r|r}rs  rHtest_splitnport_deprecationz+DeprecationTest.test_splitnport_deprecation}


0
1
1	(RL##B'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(RZ?	@	@	@	@	@rc|t5}tjddddn#1swxYwY|t
|jddS)NrzVurllib.parse.splitquery() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/rr1r|r}rs  rHtest_splitquery_deprecationz+DeprecationTest.test_splitquery_deprecationrrc|t5}tjddddn#1swxYwY|t
|jddS)NrzTurllib.parse.splittag() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/r	r1r|r}rs  rHtest_splittag_deprecationz)DeprecationTest.test_splittag_deprecations


0
1
1	&RL!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&RZ?	@	@	@	@	@rc|t5}tjddddn#1swxYwY|t
|jddS)NrzUurllib.parse.splitattr() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rzr{r.r/rr1r|r}rs  rHtest_splitattr_deprecationz*DeprecationTest.test_splitattr_deprecationrrc|t5}tjddddn#1swxYwY|t
|jddS)NrzWurllib.parse.splitvalue() is deprecated as of 3.8, use urllib.parse.parse_qsl() instead)rzr{r.r/rr1r|r}rs  rHtest_splitvalue_deprecationz+DeprecationTest.test_splitvalue_deprecations


0
1
1	(RL##B'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(RZ@	A	A	A	A	Arc|t5}tjddddn#1swxYwY|t
|jddS)Nrz/urllib.parse.to_bytes() is deprecated as of 3.8)rzr{r.r/r
r1r|r}rs  rHtest_to_bytes_deprecationz)DeprecationTest.test_to_bytes_deprecations


0
1
1	&RL!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&RZJ	L	L	L	L	LrN)rrrrrrrrrrrrrrrrrrHrxrxRsAAA@@@@@@@@@@@@@@@@@@@@@@@@@@@AAALLLLLrrx__main__)r/r&unittesturllib.parser.rrrrrUr^TestCaser+r4rxrmainrrrH<module>rsO



%##H"I	2J8*	I;9+	I;j\\<01Z()"I	2J
BK	J<
[M	K=
[M|nnn56,-.k]'()}o*+,1>H"I	2J2t*	B;3+	C";cC5\5'001sCj!""I	2J
BK	C#<
S4&M	D3%=
TC5MtdVnVHVH556$t%&dSE]S;-()utfod\?+,16q7q7q7q7q7x(q7q7q7f#U8U8U8U8U8H%U8U8U8pRLRLRLRLRLh'RLRLRLjzHMOOOOOr