]U[5SSKrSSKrSSKrSSKrSSKJr SSKJr Sr Sr Sr Sr /S/4PS/4PS /4PS S /4PS S /4PSS/4PSS/4PSS/4PSS/4PSSS/4PSS/4PSS/4PSSS/4PSSS /4PS!/4PS"/4PS#/4PS$S%/4PS&S'/4PS(S)/4PS*S)/4PS+S,/4PS-S./4PS/S0S1/4PS2S3/4PS4S0/4PS5S6S7/4PS8S9S:/4PS;S/4PS?S@/4PSASB/4PSCSD/4PSESD/4PSFSG/4PSHSI/4PSJSI/4PSKSL/4PSMSL/4Pr /S04PS04PS 04PS SS/04PS SS/04PSSS/04PSSS/04PSSSN/04PSSOSP/04PSSQ/SR/SS.4PSSST/04PSSSQ/04PSSU/SV/S.4PSSSWSX/04PS!04PS"04PS#04PS$S!S!/04PS&S!S(/04PS(S(S!/04PS*S(S!/04PS+S(SY/04PS-SZS[/04PS/S\/S]/S^.4PS2S(S_/04PS4S(S\/04PS5S`/Sa/S0.4PS8S(SbSc/04PS;SdSQ/04PS=SSe/04PS?SfS\/04PSAS(Sg/04PShS(Si/04PSCSjSk/04PSESjSk/04PSFSlSl/04PSHSmSn/04PSJSmSn/04PSKSoSp/04PSMSoSp/04Pr"SqSr\R\5r"SsSt\R5r"SuSv\R5rSwrSxr\Sy:Xa\R,"5 gg)zN)support)ExtraAssertionshttp://a/b/c/d;p?q#fhttp://a/b/c/d;p?qhttp://a/b/c/d&z&&=)rrz=a)rar )r rza=za=b=c)r b=cza%3Db=c)a=bcza=b&c=dr b)rdz a=b%26c=d)r b&c=dz&a=bz a=a+b&b=b+cr a brb cza=1&a=2r 1r 2&s&&=)rrs=a)rar)rrsa=sa=b=c)rb=csa%3Db=c)a=bcsa=b&c=drb)r!ds a=b%26c=d)rb&c=ds&a=bs a=a+b&b=b+cra br#b csa=1&a=2r1r2;a=b);ar a=a+b;b=b+c)r a b;b=b c;a=b);ar# a=a+b;b=b+c)r a b;b=b cuŁ=é)Łéz %C5%81=%C3%A9z%81=%A9)�r8sŁ=é)Łés %C5%81=%C3%A9s=)s%81=%A9r r rrr)r rrrrrrrr r!r#r$)rr!r%r'r)r+r-r/r1r3r5s a=a%E2%80%99bsa’br6r7r8r9r:r;r<c \rSrSrSSjr\R "S\5S5r\R "S\ 5S5r \R "SS5\R "S /S Q5S 55r \R "SS5\R "S /S Q5S55r \R "SS5\R "SS5\R "S /SQ5S555r Sr\R "SS5\R "S/SQ5S55rSrSrSrSrSr\R "SS5\R "S/SQ5S55r\R "SS5\R "S/S Q5S!55r\R "SS5\R "S"S#S$S%S&S'S(S)S*\S+S,4\S+S-4/ 5S.55rS/rS0rS1rS2r\R "SS5\R "S3\R>R@\R>RB45\R "S4S55S6555r"\R "SS5\R "S3\R>R@\R>RB45\R "SS75S8555r#S9r$S:r%S;r&S<r'S=r(S>r)\R "S?\R>RB\R>R@45S@5r*\R "SASB5\R "S?\R>RB\R>R@45SC55r+SDr,\R "SE\R>RZ\R>R\\R>R^/5SF5r0SGr1SHr2SIr3\R "SSJ04SK04SLSMSN/04SOSP/SQ/SR.4SSSMSTSU/04SV04SW04SXSYSZ/04S[S\/S]/S^.4S_SYS`Sa/04/ 5Sb5r4\R "SSJ/4SK/4SLSR/4SOScSd/4SSSeSf/4SV/4SW/4SXS^/4S[SgSh/4S_SiSj/4/ 5Sk5r5Slr6Smr7Snr8Sor9Spr:Sqr;SrrSur?Svr@SwrASxrBSyrCSzrDS{rES|rFS}rGS~rHg)UrlParseTestCasejNc UcUn[RRU5nURXR5 URUR UR URURUR4nURXb5 [RRU5nURXt5 URXuR55 [RRUR55nURUR5UR55 URX5 URURUR5 URUR UR 5 URUR UR 5 URURUR5 URURUR5 URURUR5 URURUR5 URURUR5 URURUR5 URUR UR 5 [RR#U5nURXS5 URUR UR URUR4nURXc5 [RR%U5nURXt5 URXuR55 [RR#UR55nURUR5UR55 URX5 URURUR5 URUR UR 5 URUR UR 5 URURUR5 URURUR5 URURUR5 URURUR5 URURUR5 URUR UR 5 gN)urllibparseurlparseassertSequenceEqualschemenetlocpathparamsqueryfragment urlunparsegeturl assertEqualusernamepasswordhostnameporturlsplit urlunsplit) selfurlparsedspliturl2resulttresult2result3s 9/opt/alt/python313/lib64/python3.13/test/test_urlparse.pycheckRoundtrips UrlParseTestCase.checkRoundtripsls <D&&s+   0 ]]FMM6;; ]]FLL&// ;   +,,))&1   /   --/:,,'' 8 )6==?;   1 6==9 6==9 6;;7 6==9 6<<8 ))6??; ))6??; ))6??; ))6??; 6;;7&&s+   / ]]FMM6;; \\6?? ,   *,,))&1   /   --/:,,'' 8 )6==?;   1 6==9 6==9 6;;7 6<<8 ))6??; ))6??; ))6??; ))6??; 6;;7rz orig,expectc[RRUSS9nURX25 UVs/sHn[ US5(dMUPM nn[RRUSS9nURX55 gs snf)NTkeep_blank_valuesF)rBrC parse_qslrNlenrUorigexpectrZvexpect_without_blankss r^test_qslUrlParseTestCase.test_qslsu'''E (,2 @Fqc!A$iF @'''F 7!As BBc"[RRUSS9nURX25 UVs0sHn[ X$S5(dMXBU_M! nn[RRUSS9nURX55 gs snf)NTrbrF)rBrCparse_qsrNrfrgs r^test_qsUrlParseTestCase.test_qss&&tt&D (*0!G*0QC ! 4E".1I*0 !G&&tu&E 7!Gs B  B bytes)FTzurl,parsed,split)) path/to/file)rrrsrrr)rrrsrr) /path/to/filerrrtrrrrrrtrr)//path/to/file)rrH/to/filerrr)rrHrxrr)z////path/to/file)rrrwrrr)rrrwrr)z/////path/to/file)rr///path/to/filerrr)rrryrr)zscheme:path/to/file)rFrrsrrr)rFrrsrr)scheme:/path/to/filerFrrtrrrrFrrtrr)zscheme://path/to/file)rFrHrxrrr)rFrHrxrr)zscheme:////path/to/file)rFrrwrrr)rFrrwrr)zscheme://///path/to/file)rFrryrrr)rFrryrr)zfile:tmp/junk.txt)filer tmp/junk.txtrrr)r}rr~rr)file:///tmp/junk.txtr}r /tmp/junk.txtrrrr}rrrr)zfile:////tmp/junk.txt)r}r//tmp/junk.txtrrr)r}rrrr)zfile://///tmp/junk.txt)r}r///tmp/junk.txtrrr)r}rrrr)zhttp:tmp/junk.txt)httprr~rrr)rrr~rr)zhttp://example.com/tmp/junk.txt)r example.comrrrr)rrrrr)z http:///example.com/tmp/junk.txt)rr/example.com/tmp/junk.txtrrr)rrrrr)z!http:////example.com/tmp/junk.txt)rr//example.com/tmp/junk.txtrrr)rrrrr)zimap://mail.python.org/mbox1)imapmail.python.org/mbox1rrr)rrrrr)z1mms://wms.sys.hinet.net/cts/Drama/09006251100.asf)mmswms.sys.hinet.net/cts/Drama/09006251100.asfrrr)rrrrr)znfs://server/path/to/file.txt)nfsserver/path/to/file.txtrrr)rrrrr)z0svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/)svn+ssh svn.zope.org/repos/main/ZConfig/trunk/rrr)rrrrr)z)git+ssh://git@github.com/user/project.git)git+sshgit@github.com/user/project.gitrrr)rrrrr)zEitms-services://?action=download-manifest&url=https://example.com/app) itms-servicesrrr4action=download-manifest&url=https://example.com/appr)rrrrr)+scheme:path/to/file)rrrrrr)rrrrr)sch_me:path/to/file)rrrrrr)rrrrr)schème:path/to/file)rrrrrr)rrrrrcU(aGUR5(dURS5 [U5n[U5n[U5nUR X#U5 g)Nnon-ASCII bytes)isasciiskipTest str_encode tuple_encoder_)rUrrrVrWrXs r^test_roundtrips UrlParseTestCase.test_roundtripssMz ;;== /0S/C!&)F 'E S%0rzurl,url2,parsed,split))ryrtrurv)zscheme:///path/to/filerzr{r|)zfile:/tmp/junk.txtrrr)zhttp:/tmp/junk.txtzhttp:///tmp/junk.txt)rrrrrr)rrrrr)zhttps:/tmp/junk.txtzhttps:///tmp/junk.txt)httpsrrrrr)rrrrrcU(a,[U5n[U5n[U5n[U5nURX$XS5 grArrr_)rUrrrVrYrWrXs r^test_roundtrips_normalization.UrlParseTestCase.test_roundtrips_normalizations>0 S/Cd#D!&)F 'E S%6rrF)rr))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;prrcU(a,[U5n[U5n[U5n[U5nX#-nU4U-nU4U-nURX4U5 grAr)rUrrrFrVrWrXs r^test_http_roundtrips%UrlParseTestCase.test_http_roundtrips6s]. 'FS/C!&)F 'ElV# E! S%0rc$URXS9 UR[RR X5U5 UR S5nUR S5nUR S5nUR[RR XE5U5 [RR [RRU55nUR[RR X5U5 [RR [RRU55nUR[RR XE5U5 SSS5 g!,(df  g=f)N)baserelurlascii)subTestrNrBrCurljoinencoderTrS)rUrrexpectedbasebrelurlb expectedbs r^ checkJoinUrlParseTestCase.checkJoinWs \\t\ 3   V\\11$? JKK(EmmG,G 0I   V\\11%A9 M\\,,V\\-B-B6-JKF   V\\11$? Jll--fll.C.CG.LMG   V\\11%A9 M4 3 3s E(F Fu)Pythonz./Pythonx-newscheme://foo.com/stuffzx://yzx:/yzx:/rcXU(a [U5nUR[RR [RR U55U5 UR[RR [RRU55U5 grA)rrNrBrCrTrSrLrD)rUrrrs r^test_unparse_parse#UrlParseTestCase.test_unparse_parsedsl 1 A 001F1Fq1IJAN 001F1Fq1IJANrcUR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[S S 5 UR[S S 5 UR[S S5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[S S5 UR[S!S"5 UR[S#S$5 UR[S%S$5 UR[S&S5 UR[S'S(5 UR[S)S*5 UR[S+S,5 UR[S-S.5 UR[S/S05 UR[S1S"5 UR[S2S5 UR[S3S45 UR[S5S65 g)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_BASErUs r^ test_RFC1808UrlParseTestCase.test_RFC1808ls |UE2 |S*:; |U,<= |T+<= |T<8 |UJ7 |U,>? |Y0FG |T+AB |U,>? |Y0FG |W.BC |U,>? |Y0FG |S/: |T?; |T=9 |UM: |V^< |Wk: |X{; |Y = |R)?@ |T+<= |T+<= |U,>? |U,>? |X~> |W.?@ |W.@A |X/?@rcbUR[RRS5S5 g)Nzmailto:1337@example.org)mailtorz1337@example.orgrrrrNrBrCrDrs r^ test_RFC2368UrlParseTestCase.test_RFC2368s& ../HI> @rcVUR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[S S 5 UR[S S 5 UR[S S5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS 5 UR[S!S 5 UR[S"S5 UR[S#[5 UR[S$S%5 UR[S&S'5 UR[S(S)5 UR[S*S+5 UR[S,S5 UR[S-S5 UR[S.S/5 UR[S0S15 UR[S2S35 UR[S4S55 UR[S6S75 UR[S8S95 UR[S:S;5 UR[SNrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 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 r^ test_RFC2396UrlParseTestCase.test_RFC2396sJ |UE2 |S*:; |U,<= |T+<= |T<8 |UJ7 |U,>? |T+AB |U,>? |W.BC |U,>? |Y0FG |S/: |T?; |T=9 |UM: |V^< |Wk: |X{; |Y = |R6 |T+<= |T+<= |U,>? |U,>? |X~> |W.?@ |W.@A |X/?@ |[2HI |\3CD |Y0FG |Z1HI |Y0FG |Z1HIrc@UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[S S 5 UR[S S 5 UR[S S5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[S S!5 UR[S"S!5 UR[S#S$5 UR[S%S&5 UR[S'S&5 UR[S(S 5 UR[S)S 5 UR[S)S 5 UR[S*S 5 UR[S+S 5 UR[S,S 5 UR[S-S.5 UR[S/S05 UR[S1S25 UR[S3S45 UR[S5S$5 UR[S6S 5 UR[S7S85 UR[S9S:5 UR[S;S<5 UR[S=S>5 UR[S?S@5 UR[SASB5 UR[SCSD5 UR[SESF5 UR[SGS5 URSHSS5 g)IN?yzhttp://a/b/c/d;p?yz;xzhttp://a/b/c/;xrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrz ../../../gz ../../../../gz/./gz/../grrrrrrrrrrrrrrrrrr rrr r rrr r http:gzhttp://a/b/c/de)r RFC3986_BASErs r^ test_RFC3986UrlParseTestCase.test_RFC3986s |T*>? |T+<= |U51 |S)9: |U+;< |T*;< |T,7 |U:6 |T*>? |U+=> |T*@A |U+=> |W-AB |T*;< |U+=> |Y/EF |R(<= |S9 |T/: |T-8 |U=9 |VN; |W[9 |Xk: |Y|< |\<@ |\,? |_\B |VL9 |W\: |T*;< |T*;< |U+=> |U+=> |Xn= |W->? |W-?@ |X.>? |[1GH |\2BC |Y/EF |Z0GH |Y/EF |Z0GH |X.>? ($/@Arc4UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS 5 UR[S S 5 UR[S S 5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS5 UR[SS 5 UR[SS5 UR[S S 5 UR[S!S"5 UR[S#S$5 UR[SS5 UR[SS5 UR[S%S5 UR[S&S5 UR[S'S5 URS(SS(5 URS)SS5 URS)S*S*5 URS+S,S-5 URS.S,S/5 URS0SS15 URS2SS35 UR[S4-S5[S6-5 URS7S8S95 URS:S8S;5 URS7SS?5 URSS8S=5 URS@SASA5 g)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)r SIMPLE_BASErs r^ test_urljoinsUrlParseTestCase.test_urljoinss {E%0 {H-=> {G,<= {C(89 {E*:; {D):; {D6 {E*5 {D);< {E*<= {I.DE {C8 {D9 {D7 {E-8 {F>: {GK8 {Il; {H^< {G,=> {G,>? {H-=> {H-=> {G,<= {I.@A {J/AB {N3IJ z4 3 r12HI r>>: .8OP 2FsQD S/C!(+HLL))#.  ),,inn=?OPr invalid_url)zhttp://::12.34.56.78]/zhttp://[::1/foo/zftp://[::1/foo/bad]/badzhttp://[::1/foo/bad]/badzhttp://[::ffff:12.34.56.78cU(a [U5nUR[[RR U5 grA)r assertRaises ValueErrorrBrCrD)rUrrr+s r^test_RFC2732_invalid%UrlParseTestCase.test_RFC2732_invalidfs- $[1K *fll&;&;[Irzurl,defrag,frag)zhttp://python.org#fraghttp://python.orgfrag)r1r1r)zhttp://python.org/#fraghttp://python.org/r2)r3r3r)zhttp://python.org/?q#fraghttp://python.org/?qr2)r4r4r)zhttp://python.org/p#fragzhttp://python.org/pr2)http://python.org/p?qr5rrrrcU(a![U5n[U5n[U5n[RRU5n[ U[ 5(aSOSnUR UR5URU55 UR XSU45 UR URU5 UR URU5 g)N##) rrBrC urldefrag isinstancestrrNrMrstriprVrK)rUrrrVdefragr2rZhashs r^test_urldefragUrlParseTestCase.test_urldefragrs S/C'Fd#D'', c**s #**T*:; $0 V, $/rc`[RRS5nURURS5 URUR S5 [RRS5nURURS5 URUR S5 g)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)rBrCrSrNrQrG)rUrs r^test_urlsplit_scoped_IPv6*UrlParseTestCase.test_urlsplit_scoped_IPv6s LL ! !"P Q %EF #JK LL ! !"Q R %FG #KLrcSn[RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URURS5 URURS5 URURS5 URURS5 URUR5SSUSS5 S n[RRU5nURURS5 URUR S 5 URUR S5 URURS 5 URURS5 URURS 5 URURS 5 URURS5 URURS5 URUR5U5 Sn[RRU5nURURS5 URUR S5 URUR S5 URURS 5 URURS5 URURS5 URURS 5 URURS5 URURS5 URUR5U5 Sn[RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URURS5 URURS5 URURS5 URURS5 URUR5SSUSS5 Sn[RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URURS5 URURS5 URURS5 URURS5 URUR5U5 Sn[RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URURS 5 URURS5 URURS5 URURS5 URUR5U5 S!n[RRU5nUR[S"5 UR SSS5 g!,(df  g=f)#NzHTTP://WWW.PYTHON.ORG/doc/#fragrzWWW.PYTHON.ORG/doc/rr2r7http://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/#fraghttpsWWW.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)rBrCrSrNrFrGrHrJrKrOrPrQrRrMassertRaisesRegexr.)rUrVrs r^test_urlsplit_attributes)UrlParseTestCase.test_urlsplit_attributess/ LL ! !# & 6* #34 ) "% V, T* T* %56 & ABQR1G LL ! !# & 6* #AB ) +. V, V, V, %56 $ S) T LL ! !# & 6* #MN ) +. V, %78 V, %56 $ S)1 LL ! !# & 7+ #45 * #& W- T* T* %67 & ABQR1H LL ! !# & 7+ #BC * ,/ W- W- W- %67 $ S)T LL ! !# & 7+ #NO * ,/ W- %89 W- %67 $ S)7 LL ! !# &  # #J ? FF@ ? ?s 2 _ _cSn[RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URURS5 URURS5 URURS5 URURS5 URUR5S5 Sn[RRU5nURURS 5 URUR S 5 URUR S 5 URURS 5 URURS 5 URURS5 URURS5 URURS 5 URURS5 URUR5S5 SnSn[S5H\n[RRXS9nURURS5 URUR5S5 M^ g)NzQhttp ://www.python .org /java script: alert('msg ')/?query = something#frag mentrrz/javascript:alert('msg')/zquery=somethingrKzGhttp://www.python.org/javascript:alert('msg')/?query=something#fragmentsQhttp ://www.python .org /java script: alert('msg ')/?query = something#frag mentrNrQs/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 tprF)rBrCrSrNrFrGrHrJrKrOrPrQrRrMrange)rUrVrrF_s r^!test_urlsplit_remove_unsafe_bytes2UrlParseTestCase.test_urlsplit_remove_unsafe_bytess2k LL ! !# & 6* #34 !<= "34 Z0 T* T* %56 & %nom LL ! !# & 7+ #45 !=> "45 [1 T* T* %67 & %opfqA %%c%9A   QXXv .   QXXZ)r src [[SS55nSnURS5U-n[RR U5nUR URS5 UR URS5 UR URS5 UR URS5 UR URS 5 UR URS 5 UR URS 5 UR URS 5 UR URS 5 UR UR!5U5 XR#S5-n[RR U5nUR URS5 UR URS5 UR URS5 UR URS5 UR URS5 UR URS5 UR URS5 UR URS5 UR URS 5 UR UR!5UR#S55 Sn[RR URS5U-5nUR URS5 UR URS5 UR URS5 UR URS5 UR URS5 UR UR!5U5 [RR S5nUR [RR%U5S5 SnURS5S-URS5-n[S5H\n[RR X6S9nUR URS5 UR UR!5S5 M^ g) Nr!rGutf-8rrHrErIr2rJrKrrLrNrRrOrSrPrTrUrQz)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/)rrr]decoderBrCrSrNrFrGrHrJrKrOrPrQrRrMrrT)rUnoisebase_urlrVrquery_spaces_urlrFr^s r^test_urlsplit_strip_url(UrlParseTestCase.test_urlsplit_strip_urlsZeAx()Lll7#h. LL ! !# & 6* #AB ) +. V, V, V, %56 $ X.oog.. LL ! !# & 7+ #BC * ,/ W- W- W- %67 $ X__W%=>G LL ! !%,,w"7:J"J K 7+ #67 ) ,/ $ %56 LL ! !/ 2 003_E"g&05<<3HHqA %%c%9A   QXXw /   QXXZ)B CrrCrR) rz1.5z-10x10z-01_1z 1z1 u६cSU-nSU-S-nU(aQUR5(aUR5(dURS5 [U5n[U5nU"U5nURURU5 UR [ 5 UR SSS5 g!,(df  g=f)Nzwww.example.net:zhttp://rr)rrrrNrGr-r.rR)rUrrrCrRrGrVrs r^test_attributes_bad_port)UrlParseTestCase.test_attributes_bad_portQs $d*& 3& NN$$ /0'FS/C #J 6*   z * FF+ * *s  B55 C)r+-0zhttp&u६httpcUS-nU(a7UR5(dURS5 URS5nU"U5nURURU(aS5 gS5 g)Nz://www.example.netrrrr)rrrrNrF)rUrrrCrFrVrs r^test_attributes_bad_scheme+UrlParseTestCase.test_attributes_bad_schemebs\ ++ ;;== /0**W%C #J %38R8rcdSn[RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URUR5U5 [RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URUR5U5 Sn[RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URUR5U5 [RRU5nURURS5 URUR S5 URUR S5 URURS5 URURS5 URUR5U5 g)Nz0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15rs0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15r) rBrCrSrNrGrOrPrQrRrMrD)rUurirs r^test_attributes_without_netloc/UrlParseTestCase.test_attributes_without_netlocosJ A LL ! !# & 2& T* T* T* & S) LL ! !# & 2& T* T* T* & S)B LL ! !# & 3' T* T* T* & S) LL ! !# & 3' T* T* T* & S)rcUR[RRS5S5 UR[RRS5S5 g)Nz http://example.com?blahblah=/foo)rrrrz blahblah=/foors http://example.com?blahblah=/foo)rNs example.comrrs blahblah=/foorrrs r^ test_noslashUrlParseTestCase.test_noslashsJ ../QRM O ../RSS Urc8UR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS 5S 5 UR[RRS 5S 5 g) NrH)rrrHrrrz//www.python.org:80)rwww.python.org:80rrrrhttp://www.python.org:80rr~rrrrpath)rrrrrrs//www.python.org:80)rwww.python.org:80rrrrhttp://www.python.org:80rNrrrrrrrs r^test_withoutscheme#UrlParseTestCase.test_withoutschemes ..v6' ) ../DE4 6 ../IJ8 : ..w7- / ../EF: < ../JK> @rclUR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS 5S 5 UR[RRS 5S 5 UR[RRS 5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS5S5 g)Nzhttp:80)rr80rrrzhttps:80)rrrrrrzpath:80)rHrrrrrr)rrrrrrzhttps:)rrrrrrrrshttp:80)rNr80rrrshttps:80)httpsrrrrrspath:80)rrrrrrshttp:)rNrrrrrshttps:)rrrrrrrrrrs r^test_portseparator#UrlParseTestCase.test_portseparators ..y9;TU ..z: @rcbUR[[RRS5 g)Nr)r- TypeErrorrBrC urlencoders r^ test_usingsysUrlParseTestCase.test_usingsyss )V\\%;%;UCrcUR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS5S5 UR[RRS 5S 5 UR[RRS 5S 5 UR[RRS 5S5 UR[RRS5S5 g)Nzs3://foo.com/stuff)s3foo.com/stuffrrrr) x-newschemerrrrrz*x-newscheme://foo.com/stuff?query#fragment)rrrrrJrKz!x-newscheme://foo.com/stuff?query)rrrrrJrss3://foo.com/stuff)ss3foo.com/stuffrrrsx-newscheme://foo.com/stuff) x-newschemerrrrrs*x-newscheme://foo.com/stuff?query#fragment)rrrrqueryrZs!x-newscheme://foo.com/stuff?query)rrrrrrrrs r^test_anyschemeUrlParseTestCase.test_anyschemes$ ../CD@ B ../LMI K ../[\V X ../RSN P ../DEF H ../MNO Q ../\]\ ^ ../STT Vrfuncc0U"SS5nURURS5 U"SS5nURURS5 URU"SS5RS5 URU"SSS9RS5 URU"S SS9RS5 URU"S5RS 5 URU"S 5RS 5 URU"S S 5RS 5 g) Nzhttp://example.net/ftprshttp://example.net/sftprNrHr\rrr)rNrF)rUrrZs r^test_default_scheme$UrlParseTestCase.test_default_schemes+U3 /,f5 0 fe,33U; fU3::EB gf5<I ,,X> K 2 **,j9 **,l; **84jA **84lC **8)?!@A&&'7'&J %/):!;<&&'7'AI'K %)!56rc[RRSSS9nURUS/5 [RRSSS9nURUS/5 [RRSSS9nURUS/5 [RRS SS9nURUS /5 [RRS SS S 9nURUS /5 g)Nrrr)rrrrcr)rrr)rrrr)rrrBrCrerNrs r^test_parse_qsl_encoding(UrlParseTestCase.test_parse_qsl_encodingNs'')'L "7!89''(:W'M "7!89''(:W'M "?!@A''(87'K ":!;<''(87AI(K "4!56rc&UR[5 [RR SR S/S-5SS9 SSS5 [RR SR S/S-5SS9 g!,(df  N@=f)Nr za=a )max_num_fields)r-r.rBrCrejoinrs r^test_parse_qsl_max_num_fields.UrlParseTestCase.test_parse_qsl_max_num_fields[sj   z * LL " "388UGBJ#7 " K+ sxx 3BG+ *s 2B B;z;;r.r rr0rrrza=1;a=2rr;s;;r2rr#r4r'r)r"sa=1;a=2r+r-c[RRUSS9nURX25 [RRUSS9nURXB5 gNr separatorrrrUrhrirZ result_bytess r^test_parse_qs_separator(UrlParseTestCase.test_parse_qs_separator`sR&&ts&; (||,,TT,B  .rrrrrr&r(r*r,c[RRUSS9nURX25 [RRUSS9nURXB5 grrrs r^test_parse_qsl_separator)UrlParseTestCase.test_parse_qsl_separatorrsR'''< (||--dd-C  .rcHUR[RRS5S/5 UR[RR[ S55S/5 UR[RR[ S55S/5 g)Nr r")rNrBrCre bytearray memoryviewrs r^test_parse_qsl_bytes%UrlParseTestCase.test_parse_qsl_bytesso //7,H // &0AB\NS // 60BCl^Trc  [SSS9nSSSSS/0[S54HbnUR[RR "U40UD6/5 UR [[RR USS9 Md g) NT)rcstrict_parsingrrrrdr)dictrrNrBrCrer-r.)rUkwargsxs r^test_parse_qsl_false_value+UrlParseTestCase.test_parse_qsl_false_valuessTBS$3B 3?A   V\\33A@@" E   j&,,*@*@!q  Q@rcUR[[RR[ S55 UR[[RR[ S55 UR[[RRS5 UR[[RR[55 SH?nUR[5 [RR SUS9 SSS5 MA UR[5 [RR SSS9 SSS5 UR[5 [RR SSS9 SSS5 g!,(df  M=f!,(df  N]=f!,(df  g=f)Nr rd)rrNrrdrg?r r¦) r-rrBrCrelistiterobjectr.UnicodeEncodeErrorUnicodeDecodeError)rUrs r^test_parse_qsl_errors&UrlParseTestCase.test_parse_qsl_errorss% )V\\%;%;T&\J )V\\%;%;T&\J )V\\%;%;Q? )V\\%;%;VXF6I"":. &&u &B/.7  1 2 LL " "6V " <3   1 2 LL " "5G " <3 2 /. 2 2 2 2s$1F1F'-F8 F$ ' F58 Gc[RRSS/SS.S5n"SS5n[RRSU"50S5nURUS 5 g) Nrdr[)rFrTc\rSrSrSrSrg):UrlParseTestCase.test_urlencode_sequences..Trivialicg)Ntrivialrs r^__str__BUrlParseTestCase.test_urlencode_sequences..Trivial.__str__s rrN)__name__ __module__ __qualname____firstlineno__r __static_attributes__rrr^Trivialrs !rrr z a=trivial)rBrCrrN)rUrZrs r^test_urlencode_sequences)UrlParseTestCase.test_urlencode_sequencess\''q!f9(EtL ! !''gi(8$? -rc[RRSS05nURUS5 [RRSS0[RRS9nURUS5 [RRSS0S[RRS9nURUS 5 g) Nr z some valuez a=some+valuezsome value/another) quote_viaza=some%20value%2Fanotherr)saferza=some%20value/another)rBrCrrNquoters r^test_urlencode_quote_via)UrlParseTestCase.test_urlencode_quote_vias''l(;< 0''.B(C28,,2D2D(F !;<''.B(C-0FLLJ K *fll&;&;=Z[ *fll&;&;=WX *fll&;&;=WX *fll&;&;=XY *fll&;&;=XY *fll&;&;=XY *fll&;&;=XY *fll&;&;=TU *fll&;&;=TU *fll&;&;=UV *fll&;&;=UV *fll&;&;=UV *fll&;&;=UV *fll&;&;=VW *fll&;&;=VW *fll&;&;=WX *fll&;&;=WX *fll&;&;=WX *fll&;&;=WX *fll&;&;=UV *fll&;&;=VW *fll&;&;=VW *fll&;&;=\] *fll&;&;=\] *fll&;&;=OP *fll&;&;=OP *fll&;&;=PQ *fll&;&;=OP *fll&;&;=OP *fll&;&;=VW *fll&;&;=VW *fll&;&;=\] *fll&;&;=UV *fll&;&;=UVrc&[RRS5nURURS5 URUR S5 URUR S5 URURS5 [RRS5nURURS5 URUR S5 URUR S5 URURS5 [RRS5nURURS 5 URUR S5 URUR S5 g) Nz&scheme://user@[v6a.ip]:1234/path?queryzv6a.ipuser/pathiz4scheme://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) rBrCrSrNrQrOrHrRr)rUr(r)p3s r^test_splitting_bracketed_hosts/UrlParseTestCase.test_splitting_bracketed_hostss \\ " "#K L h/ f- '* $' \\ " "#Y Z &AB f- '* bggt$ \\ " "#j k &RS f- '*rctSn[RRS5nUR[U5 UR SSS5 [RR S5nUR[U5 UR SSS5 g!,(df  NY=f!,(df  g=f)Nz3Port could not be cast to integer value as 'oracle'z%http://Server=sde; Service=sde:oracle)rBrCrDrVr.rRrS)rUmessager(r)s r^!test_port_casting_failure_message2UrlParseTestCase.test_port_casting_failure_messagesG \\ " "#J K  # #J 8 GG9\\ " "#J K  # #J 8 GG9 8 9 89 8s B B) B&) B7c[RRS5nURURS5 URUR S5 URUR S5 [RRS5nURURS5 URUR S5 URUR S5 [RRS5nURURS5 URUR S 5 URUR S 5 [RRS 5nURURS5 URUR S 5 URUR S 5 g)Nz"tel:123-4;phone-context=+1-650-516r'z123-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)rBrCrDrNrFrHrI)rUr(s r^test_telurl_params#UrlParseTestCase.test_telurl_params!sJ \\ " "#G H E* '* $>? \\ " "#8 9 E* "34 B' \\ " "#G H E* &) $?@ \\ " "#J K E* *- $>?rc[RR[RR5nUR S[ U55 g)NQuoter)rBrC_Quoter _ALWAYS_SAFEassertInrepr)rUquoters r^test_Quoter_repr!UrlParseTestCase.test_Quoter_repr6s2%%fll&?&?@ hV -rc@[RR5 grA)rBrC clear_cachers r^"test_clear_cache_for_code_coverage3UrlParseTestCase.test_clear_cache_for_code_coverage:s   "rcUR[5 [RRnSSS5 g!,(df  g=frA)r-AttributeErrorrBrCthis_does_not_exist)rUunuseds r^!test_urllib_parse_getattr_failure2UrlParseTestCase.test_urllib_parse_getattr_failure=s+   ~ .\\55F/ . .s : AcZ/n1Skn[[R5H^nURS5(dX2;aM [ [RU5n[ USS5S:XdMMUR U5 M` UR [RRU5 g)N>unwrapsplittagto_bytes splitattr splithost splitport splittype splituser ResultBase splitnport splitquery splitvaluerG splitpasswdr^r z urllib.parse)dirrBrC startswithrappendassertCountEqual__all__)rUr undocumentednamers r^test_allUrlParseTestCase.test_allBs  %Ds##t';V\\40Fv|T2nD% & fll22H=rc PSnUVs1sHnSR[U55iM nn[[[ S[ R 55Vs/sH`n[R"U5(dM U[[R"U5R55-(dMWX!;dM^UPMb nnURSU5 URSU5 [RRS5 UR[ 5 [RRS5 SSS5 SHnS HnUHnS RXVRU55nUR#USR[U55S 9 UR[ 5 [RRU5 SSS5 SSS5 M M M gs snfs snf!,(df  N=f!,(df  N>=f!,(df  M=f) Nz/:#?@z{:04X}u℀u#uhttp://プ:80uhttp://プ︓80)rrr)znetloc{}false.netloczn{}user@netlocz {}://{}/path)rVchar)formatordmapchrr]sys maxunicode unicodedata decompositionsetrXrArBrCrSr-r.r)rU illegal_charsr hex_chars denorm_charsrFrGrVs r^test_urlsplit_normalization,UrlParseTestCase.test_urlsplit_normalizationRs 6CDmX__SV,m D3c3>> :; ;!((+ S!:!:1!=!C!C!EFF & ;   h - h -  67   z * LL ! !"? @+/FD%A(// a8HIC#HOOCF4KL!..z:"LL11#6;ML&E/#E + *;:MLsM$G*G/:3G/1G/8G/ G4H - H H 4 H HH  H% rrA)Ir r r rr_rsubTestsparse_qsl_test_casesrlparse_qs_test_casesrprrrrrrrrrrr)r/rrr?rBrWr_rirBrCrSrDrnrtrxr{rrrrrrr DefragResult SplitResult ParseResultrrrrrrrrrrrrr!r$r*r-r3r7r;rDrHrNrervrrrr^r>r>js38j m%9:8;8 m%898:8 g}- (Z+Zv1wZ.x1 g}- -0  ,7- ..7 g}- h 12 (+" 1#3.& 1 N g}- cijOk.O "A`@ %JZ7Br5&n g}- ),@QA.BQ g}- m&./ J /.J  g}- ' C : E < I @ G B / 5 / 4 *   0  . 0M[z#tJ9Dv g}- g 5 5v||7L7LMN fZ[ \O.  g}- g 5 5v||7L7LMN h HI9JO.9'*RU@&@$DV* fv||44fll6K6KLM 8N 8 . 1   fv||44fll6K6KLM<N  <"L0 m ,, # # ,, " " ,, " "&  L  L6 7 7H  m "I 2J cC5\ " 5'8 9 sCj) * 2J BK tdVn % VHVH= > $t - . &  /  /  m "I 2J j\ " \<8 9 Z0 1 2J BK |n % nn= > , 5 6 &  /  / U R = .; 5& R 2+WZ+ @*.#6 > 7rr>c\rSrSrSrSrSrSrSrSr Sr S r S r S r S r\R "S S5S5rSrg) Utility_Testsipc([RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S 5S 5 g) Nztype:opaquestring)type opaquestringr)Nr :opaquestring)Nrztype:)rrztype:opaque:string)rz opaque:string)rBrC _splittyperN)rUrWs r^test_splittypeUtility_Tests.test_splittypetsLL++  #679QR >24JK ?35LM 7+\: #78:STrc[RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S 5S 5 URU"S 5S 5 URU"S 5S5 URU"S5S5 URU"S5S5 URU"S5S5 g)Nz%//www.example.org:80/foo/bar/baz.html)www.example.org:80/foo/bar/baz.htmlz//www.example.org:80)rrr)Nrz//127.0.0.1#@host.com) 127.0.0.1 /#@host.comz//127.0.0.1#@host.com:80)rz/#@host.com:80z//127.0.0.1:80#@host.com)z 127.0.0.1:80rz///file)rz/filez//example.net/file;) example.netz/file;z//example.net/file?)rz/file?z//example.net/file#)rz/file#)rBrC _splithostrN)rUrUs r^test_splithostUtility_Tests.test_splithost|sLL++  #JKD F #9:3 5 #674 6 #:;5 7 #=>8 : #=>8 : 9-& ( #892 4 #892 4 #892 4rc([RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S 5S 5 g) NrH) User:Passwww.python.org:080z@www.python.org:080)rrr)Nrz User:Pass@)rrrM)zUser@example.com:Passr)rBrC _splituserrN)rUrXs r^test_splituserUtility_Tests.test_splitusersLL++  #AB< > #893 5 #785 7 <0* , #MNH Jrc[RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S 5S 5 URU"S 5S 5 URU"S 5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 g)Nzuser:ab)r0abzuser:a b)r0za bzuser:a b)r0za bzuser:a b)r0za bzuser:a b)r0za bzuser:a b)r0za bzuser:a:b)r0za:bzuser:a b)r0rz user 2:ab)zuser 2rz user+1:a+b)zuser+1za+bzuser:)r0rr0)r0Nz:ab)rr)rBrC _splitpasswdrN)rUr]s r^test_splitpasswdUtility_Tests.test_splitpasswds+ll//  Y/@ [13CD [13CD [13CD [13CD [13CD Z0/B Z0/B [13CD \24EF W-|< V,n= U+Z8rc[RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S5S 5 URU"S 5S 5 URU"S 5S 5 URU"S5S5 g)N parrot:88)parrot88rrNparrot:r)rN parrot:cheese)rNz[::1]:88)[::1]rr)rNz:88)rr)rBrC _splitportrN)rUrVs r^test_splitportUtility_Tests.test_splitportsLL++  ;/1AB 8,.>? 9-/?@ ;/1DE ?35LM :.@ 7+_= 5):6rc [RRnURU"S5S5 URU"S5S5 URU"SS5S5 URU"S5S5 URU"SS5S5 URU"S5S 5 URU"SS5S 5 URU"S 5S 5 URU"S S5S 5 URU"S 5S 5 g)Nr)rrdr)r7)rrrr)rr)rrrrz parrot: +1_0 )rBrC _splitnportrN)rUrZs r^test_splitnportUtility_Tests.test_splitnports\\--  K0.A H-~> Hb1>B I.? Ir2NC K02CD K46GH O46FG OR8:JK O46FGrc[RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 g) Nhttp://python.org/fake?foo=bar)http://python.org/fakefoo=barzhttp://python.org/fake?foo=bar?)rrr)rNz?foo=bar)rr)rBrC _splitqueryrN)rUr[s r^test_splitqueryUtility_Tests.test_splitquerysu\\--  $DE> @ $EF? A $<=9 ; J/Arc([RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S 5S 5 g) Nhttp://example.com?foo=bar#baz)http://example.com?foo=barbazzhttp://example.com?foo=bar#)rrz#baz)rrr)rNz"http://example.com?foo=bar#baz#boo)rboo)rBrC _splittagrN)rUrRs r^ test_splittagUtility_Tests.test_splittags<<)) "BC> @ "?@; = &);7 ">?= ? "FGB Drc[RRnURU"S5SSS/45 URU"S5SS/45 URU"S5SSS/45 URU"S5S/45 g)Nz/path;attr1=value1;attr2=value2r1z attr1=value1z attr2=value2z/path;rz;attr1=value1;attr2=value2)rBrC _splitattrrN)rUrTs r^test_splitattrUtility_Tests.test_splitattrsLL++  #DE!NN#CD F 8,wo> #?@~~>? A 7+gr];rc([RRnURU"S5S5 URU"S5S5 URU"S5S5 URU"S5S5 URU"S 5S 5 g) Nr)rbarzfoo=)rrz=bar)rrfoobar)rNz foo=bar=baz)rzbar=baz)rBrC _splitvaluerN)rUr\s r^test_splitvalueUtility_Tests.test_splitvalues~\\--  I.? F+[9 F+[9 H-/?@ M24FGrc[RRS5nURUS5 UR [ [RRS5 g)Nzhttp://www.python.orguhttp://www.python.org/mediæval)rBrC _to_bytesrNr- UnicodeErrorrs r^ test_to_bytesUtility_Tests.test_to_bytessH''(?@ !89 , (>(>? Ar wrapped_url)zzzURL:scheme://host/pathscheme://host/pathcf[RRU5nURUS5 g)Nr)rBrCrQrN)rUrrVs r^ test_unwrapUtility_Tests.test_unwraps)ll!!+. 23rrN)r r r rrrrrrrrrrrrrrxrrrrr^rrpsiU4: J9$ 7 H B D<HA  mKL4L4rrc\\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrg)DeprecationTesti c4UR[5n[RRnUR U[RR 5 SSS5 URS[WR55 g!,(df  N4=f)NzQuoter will be removed) assertWarnsDeprecationWarningrBrCr>rr?rAr;warning)rUcm old_classs r^test_Quoter_deprecation'DeprecationTest.test_Quoter_deprecation sa   0 1R ++I MM)V\\%9%9 :2 .BJJ@2 1s AB  BcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzUurllib.parse.splittype() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCrWrNr;rrUrs r^test_splittype_deprecation*DeprecationTest.test_splittype_deprecationQ   0 1R LL " "2 &2 RZZ? @2 1 A$$ A2cUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzUurllib.parse.splithost() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCrUrNr;rrs r^test_splithost_deprecation*DeprecationTest.test_splithost_deprecationrrcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzUurllib.parse.splituser() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCrXrNr;rrs r^test_splituser_deprecation*DeprecationTest.test_splituser_deprecationrrcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzWurllib.parse.splitpasswd() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCr]rNr;rrs r^test_splitpasswd_deprecation,DeprecationTest.test_splitpasswd_deprecation&sQ   0 1R LL $ $R (2 RZZ? @2 1rcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzUurllib.parse.splitport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCrVrNr;rrs r^test_splitport_deprecation*DeprecationTest.test_splitport_deprecation-rrcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzVurllib.parse.splitnport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCrZrNr;rrs r^test_splitnport_deprecation+DeprecationTest.test_splitnport_deprecation4Q   0 1R LL # #B '2 RZZ? @2 1rcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzVurllib.parse.splitquery() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCr[rNr;rrs r^test_splitquery_deprecation+DeprecationTest.test_splitquery_deprecation;rrcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzTurllib.parse.splittag() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCrRrNr;rrs r^test_splittag_deprecation)DeprecationTest.test_splittag_deprecationBsQ   0 1R LL ! !" %2 RZZ? @2 1rcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzUurllib.parse.splitattr() is deprecated as of 3.8, use urllib.parse.urlparse() instead)rrrBrCrTrNr;rrs r^test_splitattr_deprecation*DeprecationTest.test_splitattr_deprecationIrrcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)NrzWurllib.parse.splitvalue() is deprecated as of 3.8, use urllib.parse.parse_qsl() instead)rrrBrCr\rNr;rrs r^test_splitvalue_deprecation+DeprecationTest.test_splitvalue_deprecationPsR   0 1R LL # #B '2 RZZ@ A2 1rcUR[5n[RR S5 SSS5 UR [ WR5S5 g!,(df  N4=f)Nrz/urllib.parse.to_bytes() is deprecated as of 3.8)rrrBrCrSrNr;rrs r^test_to_bytes_deprecation)DeprecationTest.test_to_bytes_deprecationWsO   0 1R LL ! !" %2 RZZJ L2 1rrN)r r r rrrrrrrrrrrrrrrrr^rr sJA @@@@@@@@@ALrrc$URS5$)Nr)r)ss r^rr^s 88G rc&[SU55$)Nc38# UHn[U5v M g7frA)r).0rs r^ tuple_encode..bs*1As)tuple)r[s r^rras ** **r__main__)rnrpunittest urllib.parserBtestrtest.support.testcaserrrrrryrzTestCaser>rrrrr mainrrr^r s 1% # #  )H)"I) 2J) 8* )  I; )  9+ ) I;) |n))Z())>"#) j\)\<01)Z()) "I)  2J!)" BK#)$ J<%)& [M')( K=))* [M+), -)..!"/)0, -.1)2$%&3)4 |n5)6nn567)8, -.9): k];)<'()=)> }o?)@*+,A)D'()E)F)*+G)H%&'I)J678K)L234M)N&'(O)P$%&Q)\*H*"I* 2J* 2t* *  B; *  3+ * C";* sUGn**se3%()*3 "#* cC5\*5'01*sCj!"* "I*  2J!*" BK#*$ C#<%*& S4&M'*( D3%=)** TC5M+*,vh -*.&4&!"/*0tf-.1*2D8*%&3*4 tdVn5*6VHVH567*8$t %&9*: dSE];*<S;-()=*> utfo?*@d\?+,A*B0123C*FXx()G*Hx&*+I*JH:&'K*LK+78M*N k]34O*PGgY'(Q*R'G9%&S*XD7x((/D7L(V4H%%V4rRLh''RLj+ z MMOr