+
    Bi\                       ^ RI t ^ RIt^ RIt^ RIt^ RIHt RtRtRt	Rt
. R. 3NR. 3NR. 3NR	RW.3NR
RX.3NRRY.3NRRY.3NRRZ.3NRR[.3NRR\R].3NRR^.3NRR\.3NRR_R`.3NRRaRb.3NR. 3NR. 3NR . 3NR!Rc.3NR"Rd.3NR#Re.3NR$Re.3NR%Rf.3NR'Rg.3NR*RhRi.3NR-Rj.3NR/Rh.3NR0RkRl.3NR3RmRn.3NR6Ro.3NR8Rp.3NR:Rq.3NR<Rr.3NR>Rs.3NRARs.3NRBRt.3NRDRu.3NRGRu.3NRHRv.3NRKRv.3Nt. R/ 3NR/ 3NR/ 3NR	RR./3NR
RR./3NRRR./3NRRR./3NRRR./3NRRR./3NRRR.RR./3NRRR./3NRRR./3NRRR.RR./3NRRRR./3NR/ 3NR/ 3NR / 3NR!RR./3NR"RR#./3NR#R#R./3NR$R#R./3NR%R#R&./3NR'R(R)./3NR*R#R+.R)R,./3NR-R#R../3NR/R#R+./3NR0R#R1.R+R2./3NR3R#R4R5./3NR6R7R./3NR8RR9./3NR:R;R+./3NR<R#R=./3NRLR#RM./3NR>R?R@./3NRAR?R@./3NRBRCRC./3NRDRERF./3NRGRERF./3NRHRIRJ./3NRKRIRJ./3Nt ! RN RO]P                  4      t ! RP RQ]P                  4      t ! RR RS]P                  4      tRT tRU t]RV8X  d   ]P(                  ! 4        R# R# )w    N)supporthttp://a/b/c/d;p?q#fhttp://a/b/c/d;p?qzhttp://a/b/c/d &z&&=z=aaza=za=b=cb=cza%3Db=ca=bcza=b&c=dbdz	a=b%26c=db&c=dz&a=bza=a+b&b=b+ca bb cza=1&a=212       &s   &&   =s   =a   as   a=s   a=b=c   b=cs   a%3Db=c   a=b   cs   a=b&c=d   b   ds	   a=b%26c=d   b&c=ds   &a=bs   a=a+b&b=b+c   a b   b cs   a=1&a=2   1   2;a=b;aa=a+b;b=b+c	a b;b=b c   ;a=b   ;a   a=a+b;b=b+c	   a b;b=b cu   Ł=é   Ł   éz%C5%81=%C3%A9z%81=%A9   �s   Ł=é   Ł   és   %C5%81=%C3%A9s   =      s   %81=%A9s   a=a%E2%80%99bs   a’bc                   X	  a  ] tR t^it o RdR lt]P                  ! R]4      R 4       t]P                  ! R]	4      R 4       t
]P                  ! RRe4      ]P                  ! R. RfO4      R 4       4       t]P                  ! RRe4      ]P                  ! R. RgO4      R 4       4       t]P                  ! RRe4      ]P                  ! R
Rh4      ]P                  ! R. RiO4      R 4       4       4       tRR/R lt]P                  ! RRe4      ]P                  ! R. RjO4      R 4       4       tR tR tR tR tR tR t]P                  ! RRe4      ]P                  ! R. RkO4      R 4       4       t]P                  ! RRe4      ]P                  ! R. RlO4      R 4       4       t]P                  ! RRe4      ]P                  ! RRmRnRoRpRqRrRsRt]R R3]R R	3RuRvRwRxRyRzR{R|R}R~RRR.4      R! 4       4       tR" tR# tR$ tR% t]P                  ! RRe4      ]P                  ! R&]P@                  PB                  ]P@                  PD                  34      ]P                  ! R'R4      R( 4       4       4       t#]P                  ! RRe4      ]P                  ! R&]P@                  PB                  ]P@                  PD                  34      ]P                  ! R
R4      R) 4       4       4       t$R* t%R+ t&R, t'R- t(R. t)R/ t*]P                  ! R0]P@                  PD                  ]P@                  PB                  34      R1 4       t+]P                  ! R2R4      ]P                  ! R0]P@                  PD                  ]P@                  PB                  34      R3 4       4       t,R4 t-]P                  ! R5]P@                  P\                  ]P@                  P^                  ]P@                  P`                  .4      R6 4       t1R7 t2R8 t3R9 t4]P                  ! RR:/ 3R;/ 3R<RR=./3R>RR?.R=R@./3RARRBRC./3RD/ 3RE/ 3RFRGRH./3RIRGRJ.RHRK./3RLRGRMRN./3.
4      RO 4       t5]P                  ! RR:. 3R;. 3R<R.3R>RR.3RARR.3RD. 3RE. 3RFR.3RIRR.3RLRR.3.
4      RP 4       t6RQ t7RR t8RS t9RT t:RU t;RV t<RW t=RX t>RY t?RZ t@R[ tAR\ tBR] tCR^ tDR_ tER` tFRa tGRb tHRctIV tJR# )UrlParseTestCaseNc                
   Vf   Tp\         P                  P                  V4      pV P                  WR4       VP                  VP
                  VP                  VP                  VP                  VP                  3pV P                  Wb4       \         P                  P                  V4      pV P                  Wt4       V P                  WuP                  4       4       \         P                  P                  VP                  4       4      pV P                  VP                  4       VP                  4       4       V P                  W4       V P                  VP                  VP                  4       V P                  VP
                  VP
                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                   VP                   4       \         P                  P#                  V4      pV P                  WS4       VP                  VP
                  VP                  VP                  VP                  3pV P                  Wc4       \         P                  P%                  V4      pV P                  Wt4       V P                  WuP                  4       4       \         P                  P#                  VP                  4       4      pV P                  VP                  4       VP                  4       4       V P                  W4       V P                  VP                  VP                  4       V P                  VP
                  VP
                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       V P                  VP                   VP                   4       R # N)urllibparseurlparseassertSequenceEqualschemenetlocpathparamsqueryfragment
urlunparsegeturlassertEqualusernamepasswordhostnameporturlsplit
urlunsplit)	selfurlparsedspliturl2resulttresult2result3s	   &&&&&    )/usr/lib/python3.14/test/test_urlparse.pycheckRoundtrips UrlParseTestCase.checkRoundtripsk   s   <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;;7r   zorig,expectc                .   \         P                  P                  VR R7      pV P                  W24       V Uu. uF  p\	        V^,          4      '       g   K  VNK!  	  pp\         P                  P                  VRR7      pV P                  W54       R# u upi T)keep_blank_valuesFN)r5   r6   	parse_qslrA   lenrH   origexpectrM   vexpect_without_blankss   &&&   rQ   test_qslUrlParseTestCase.test_qsl   sw    '''E(,2 @Fqc!A$iF @'''F7 !As   BBc                H   \         P                  P                  VR R7      pV P                  W24       V Uu/ uF,  p\	        W$,          ^ ,          4      '       g   K#  WBV,          bK.  	  pp\         P                  P                  VRR7      pV P                  W54       R# u upi rU   )r5   r6   parse_qsrA   rX   rY   s   &&&   rQ   test_qsUrlParseTestCase.test_qs   s    &&tt&D(*0!G*0QC	!4E ".1I*0 	 !G&&tu&E7!Gs    BBbytesTzurl,parsed,splitr   r9   c                    V'       dI   VP                  4       '       g   V P                  R 4       \        V4      p\        V4      p\        V4      pV P	                  W#V4       R# )non-ASCII bytesN)isasciiskipTest
str_encodetuple_encoderR   )rH   rd   rI   rJ   rK   s   &&&&&rQ   test_roundtrips UrlParseTestCase.test_roundtrips   sM    z ;;==/0S/C!&)F 'ES%0r   zurl,url2,parsed,splitc                    V'       d-   \        V4      p\        V4      p\        V4      p\        V4      pV P                  W$WS4       R # r4   ri   rj   rR   )rH   rd   rI   rL   rJ   rK   s   &&&&&&rQ   test_roundtrips_normalization.UrlParseTestCase.test_roundtrips_normalization  s>    0 S/Cd#D!&)F 'ES%6r   r	   fc                    V'       d-   \        V4      p\        V4      p\        V4      p\        V4      pW#,           pV3V,           pV3V,           pV P                  W4V4       R # r4   rn   )rH   rd   r9   rI   rJ   rK   s   &&&&&&rQ   test_http_roundtrips%UrlParseTestCase.test_http_roundtrips5  s]    . 'FS/C!&)F 'ElV#	E!S%0r   relroundtripc               R   V P                  WR 7      ;_uu_ 4        V P                  \        P                  P	                  W4      V4       VP                  R4      pVP                  R4      pVP                  R4      pV P                  \        P                  P	                  WV4      V4       V'       d   \        P                  P                  \        P                  P                  V4      4      pV P                  \        P                  P	                  W4      V4       \        P                  P                  \        P                  P                  V4      4      pV P                  \        P                  P	                  WV4      V4       RRR4       R#   + '       g   i     R# ; i))baserelurlasciiN)subTestrA   r5   r6   urljoinencoderG   rF   )rH   rw   rx   expectedru   basebrelurlb	expectedbs   &&&&$   rQ   	checkJoinUrlParseTestCase.checkJoinV  s   \\t\33V\\11$?JKK(EmmG,G 0IV\\11%A9M001F1Fv1NO  !5!5d!CXN ,,11&,,2G2G2PQ  !5!5e!EyQ 4333s   E0FF&	uc                \   V'       d   \        V4      pV P                  \        P                  P	                  \        P                  P                  V4      4      V4       V P                  \        P                  P                  \        P                  P                  V4      4      V4       R # r4   )ri   rA   r5   r6   rG   rF   r?   r7   )rH   rd   r   s   &&&rQ   test_unparse_parse#UrlParseTestCase.test_unparse_parsed  sl     1A001F1Fq1IJAN001F1Fq1IJANr   c                   V P                  \        R R 4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR	4       V P                  \        R
R4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        R R!4       V P                  \        R"R#4       V P                  \        R$R#4       V P                  \        R%R4       V P                  \        R&R'4       V P                  \        R(R)4       V P                  \        R*R+4       V P                  \        R,R-4       V P                  \        R.R/4       V P                  \        R0R!4       V P                  \        R1R4       V P                  \        R2R34       V P                  \        R4R54       R6# )7g:hghttp://a/b/c/g./gg/http://a/b/c/g//g
http://a/g//ghttp://gg?yhttp://a/b/c/g?yg?y/./xhttp://a/b/c/g?y/./x#shttp://a/b/c/d;p?q#sg#shttp://a/b/c/g#sg#s/./xhttp://a/b/c/g#s/./xg?y#shttp://a/b/c/g?y#sg;xhttp://a/b/c/g;xg;x?y#shttp://a/b/c/g;x?y#s.http://a/b/c/./..http://a/b/../../ghttp://a/b/g../..	http://a/../../../../gr   r   g.http://a/b/c/g..ghttp://a/b/c/.gg..http://a/b/c/g....ghttp://a/b/c/..g./../g./g/.g/./hhttp://a/b/c/g/hg/../hhttp://a/b/c/hN)r   RFC1808_BASErH   s   &rQ   test_RFC1808UrlParseTestCase.test_RFC1808l  s   |UE2|S*:;|U,<=|T+<=|T<8|UJ7|U,>?|Y0FG|T+AB|U,>?|Y0FG|W.BC|U,>?|Y0FG|S/:|T?;|T=9|UM:|V^<|Wk:|X{;|Y= 	|R)?@|T+<=|T+<=|U,>?|U,>?|X~>|W.?@|W.@A|X/?@r   c                d    V P                  \        P                  P                  R 4      R4       R# )zmailto:1337@example.orgN)mailtor   z1337@example.orgr   r   r   rA   r5   r6   r7   r   s   &rQ   test_RFC2368UrlParseTestCase.test_RFC2368  s&    ../HI>	@r   c                X   V P                  \        R R 4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR	4       V P                  \        R
R4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        R R4       V P                  \        R!R4       V P                  \        R"\        4       V P                  \        R#R$4       V P                  \        R%R&4       V P                  \        R'R(4       V P                  \        R)R*4       V P                  \        R+R4       V P                  \        R,R4       V P                  \        R-R.4       V P                  \        R/R04       V P                  \        R1R24       V P                  \        R3R44       V P                  \        R5R64       V P                  \        R7R84       V P                  \        R9R:4       V P                  \        R;R<4       R=# )>r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	g;x=1/./yhttp://a/b/c/g;x=1/y
g;x=1/../yhttp://a/b/c/yr   r   g?y/../xhttp://a/b/c/g?y/../xr   r   g#s/../xhttp://a/b/c/g#s/../xN)r   RFC2396_BASEr   s   &rQ   test_RFC2396UrlParseTestCase.test_RFC2396  sJ    	|UE2|S*:;|U,<=|T+<=|T<8|UJ7|U,>?|T+AB|U,>?|W.BC|U,>?|Y0FG|S/:|T?;|T=9|UM:|V^<|Wk:|X{;|Y=|R6|T+<=|T+<=|U,>?|U,>?|X~>|W.?@|W.@A|X/?@|[2HI|\3CD|Y0FG|Z1HI|Y0FG|Z1HIr   c                B   V P                  \        R R4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR	4       V P                  \        R
R4       V P                  \        RR4       V P                  \        R R4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR 4       V P                  \        R!R 4       V P                  \        R"R#4       V P                  \        R$R%4       V P                  \        R&R%4       V P                  \        R'R4       V P                  \        R(R4       V P                  \        R(R4       V P                  \        R)R4       V P                  \        R*R4       V P                  \        R+R4       V P                  \        R,R-4       V P                  \        R.R/4       V P                  \        R0R14       V P                  \        R2R34       V P                  \        R4R#4       V P                  \        R5R	4       V P                  \        R6R74       V P                  \        R8R94       V P                  \        R:R;4       V P                  \        R<R=4       V P                  \        R>R?4       V P                  \        R@RA4       V P                  \        RBRC4       V P                  \        RDRE4       V P                  \        RFR4       V P                  RGRR4       RH# )I?yhttp://a/b/c/d;p?y;xhttp://a/b/c/;xr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z
../../../gz../../../../gz/./gz/../gr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   http:gzhttp://a/b/c/deN)r   RFC3986_BASEr   s   &rQ   test_RFC3986UrlParseTestCase.test_RFC3986  s   |T*>?|T+<=|U51|S)9:|U+;<|T*;<|T,7|U:6|T*>?|U+=>|T*@A|U+=>|W-AB|T*;<|U+=>|Y/EF|R(<=|S9|T/:|T-8|U=9|VN;|W[9|Xk:|Y|<|\<@ 	|\,?|_\B|VL9|W\:|T*;<|T*;<|U+=>|U+=>|Xn=|W->?|W-?@|X.>?|[1GH|\2BC|Y/EF|Z0GH|Y/EF|Z0GH|X.>? 	($/@Ar   c                   V P                  \        R R 4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR	4       V P                  \        R
R4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR4       V P                  \        RR 4       V P                  \        R!R4       V P                  \        R"R4       V P                  \        R#R4       V P                  R$RR$4       V P                  R%RR4       V P                  R%R&R&4       V P                  R'R(R)4       V P                  R*R(R+4       V P                  R,RR-4       V P                  R.RR/4       V P                  \        R0,           R1\        R2,           4       V P                  R3R4R54       V P                  R6R4R74       V P                  R3R8R94       V P                  R6R8R94       V P                  R3R:R;4       V P                  RR4R94       V P                  R<R=R=4       V P                  \        R%R>4       V P                  \        R?R@RARB7       V P                  \        RCRD4       V P                  \        RERFRARB7       V P                  \        RGRHRARB7       V P                  \        R
RI4       V P                  \        RJRK4       V P                  \        RLRM4       V P                  \        RNRO4       V P                  \        RPRQ4       V P                  \        RRRS4       V P                  \        RTR>4       V P                  \        RURD4       V P                  \        RVRI4       V P                  \        RWRX4       V P                  \        RYRS4       V P                  \        RZR[4       V P                  \        R\R>4       V P                  \        R]R@RARB7       V P                  \        R^RD4       V P                  \        R_RFRARB7       V P                  \        R`RHRARB7       V P                  \        RaRI4       V P                  \        RbRK4       V P                  \        RcRM4       V P                  \        RdRO4       V P                  \        ReRQ4       V P                  \        RfRS4       V P                  \        RgR>4       V P                  \        RhRD4       V P                  \        RiRI4       V P                  \        RXRX4       V P                  \        RjRS4       V P                  \        R[R[4       V P                  \        RkRkRARB7       V P                  \        RlRlRARB7       V P                  \        RmRmRARB7       V P                  \        RnRnRARB7       V P                  \        RoRoRARB7       V P                  \        RpRp4       V P                  \        RqRq4       Rr# )sr   r   r   r   r   r   r   r   r   r   r   zhttp://a/b/c/d?yr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zhttp:g?yzhttp:g?y/./xzhttp:///r   zhttp://a/./gzsvn://pathtorepo/dir1dir2zsvn://pathtorepo/dir2zsvn+ssh://pathtorepo/dir1zsvn+ssh://pathtorepo/dir2zws://a/bzws://a/gz	wss://a/bz	wss://a/g/fooz/foozhttp://a/b/c/d/e/z
../../f/g/zhttp://a/b/c/f/g/zhttp://a/b/c/d/ezhttp://a/b/f/g/z/../../f/g/zhttp://a/f/g/z	../../f/gzhttp://a/b/c/f/gr	   r   r   #zhttp://a/b/c/d;p?q#Fru   z#zzhttp://a/b/c/d;p?q#z?zhttp://a/b/c/d;p?z?#zzhttp://a/b/c/d;p?#zr   ;zhttp://a/b/c/;z;?yzhttp://a/b/c/;?yz;#zzhttp://a/b/c/;#zr   r   /w
http://a/w//z//#zz//?yz//;xz	http://;x///w//vhttp://vhttp:zhttp:#zhttp:#zzhttp:?zhttp:?#zzhttp:?yzhttp:;zhttp:;?yzhttp:;#zzhttp:;xhttp:/whttp://z	http://#zz	http://?y	http:///whttps:zhttps:#zhttps:#zzhttps:?zhttps:?yzhttps:;zhttps:;xN)r   SIMPLE_BASEr   r   s   &rQ   test_urljoinsUrlParseTestCase.test_urljoins  sj   {E%0{C(89{E*:;{D):;{D6{E*5{D);<{E*<={I.DE{C8{D9{D7{E-8{F>:{GK8{Il;{H^<{G,=>{G,>?{H-=>{H-=>{J/AB{N3IJz4
3r12HIr>>:.8OP2F<WXz#j1{3{3 	{S(%v1EF 	*L:MN)<9JK*M?K)=/J*K9KL}lOD 	sC% 	|R)?@|S*?eT|T+AB|S*=ER|U,APUV|T+?@|S*:;|U,>?|U,>?|T+<=|T<8|T+AB|V-CD|V-AB|V[9|V\:|UJ7 	|W.DE|X/DSXY|Y0FG|X/BQVW|Z1FUZ[|Y0DE|X/?@|Z1CD|Z1CD|Y0AB|Y=|Y0FG|[2HI|[2FG|[+>|[,?|Z<|XxeL|Y	N|Z%P|Y	N|Z%P|Y	:|Z<r   c                	   V P                  R R R 4       V P                  R RRRR7       V P                  R RR4       V P                  R RR4       V P                  R RR4       V P                  R RRRR7       V P                  R RR4       V P                  RR R4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  R	R R	4       V P                  R	RR	4       V P                  R	RR4       V P                  R	RR4       V P                  R	RR
4       V P                  R	RR
4       V P                  R	RR
4       R EF&  pV P                  RVR ,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR ,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR ,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       V P                  RVR,           R4       EK)  	  V P                  RR R4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RR R4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       R# )r   r   Fr   r   z//v/wr   r   wz//az//a/wr   r   z
http://v/wr   r   r   zhttp://ar   z/b/cz/b/wz///b/cz///b/wN)r   r   )r   )rH   r9   s   & rQ   test_urljoins_relative_base,UrlParseTestCase.test_urljoins_relative_basei  s    	r2r"r4E:r5%(r7G,r4&r66>r3$tR&tT4(tUE*tWg.tT6*tVV,tS&)ub%(udE*ueU+ugw/udG,ufg.uc7+!FNN7FRK9NN7FTM7;NN7FUNJ?NN7FW$4lCNN7FTM9=NN7FVOY?NN7FSL)<NN9frk9=NN9ftmY?NN9funjANN9fw&6ENN9ftm[ANN9fvo{CNN9fslK@NN:v{J?NN:v}jANN:v~zBNN:v'7FNN:v}lCNN:vENN:v|\B/ "2 	vr6*vtV,vue,vw0vtT*vvt,vsF+xX.xx0x.x'2xv.x0xh/r   zurl,hostname,portc                    V'       d   \        V4      p\        V4      p\        P                  P                  V4      pV P	                  VP
                  VP                  3W434       R # r4   )ri   r5   r6   r7   rA   rD   rE   )rH   rd   rI   rD   rE   	urlparseds   &&&&& rQ   test_RFC2732UrlParseTestCase.test_RFC2732  sQ    D S/C!(+HLL))#.	),,inn=?OPr   invalid_urlc                    V'       d   \        V4      pV P                  \        \        P                  P
                  V4       R # r4   )ri   assertRaises
ValueErrorr5   r6   r7   )rH   rd   r   s   &&&rQ   test_RFC2732_invalid%UrlParseTestCase.test_RFC2732_invalid  s-     $[1K*fll&;&;[Ir   zurl,defrag,fragr   c                   V'       d"   \        V4      p\        V4      p\        V4      p\        P                  P                  V4      p\	        V\
        4      '       d   R MRpV P                  VP                  4       VP                  V4      4       V P                  WSV34       V P                  VP                  V4       V P                  VP                  V4       R# )r      #N)ri   r5   r6   	urldefrag
isinstancestrrA   r@   rstriprI   r>   )rH   rd   rI   defragfragrM   hashs   &&&&&  rQ   test_urldefragUrlParseTestCase.test_urldefrag  s    6 S/C'Fd#D'', c**s#**T*:;$0V,$/r   c                b   \         P                  P                  R 4      pV P                  VP                  R4       V P                  VP
                  R4       \         P                  P                  R4      pV P                  VP                  R4       V P                  VP
                  R4       R# )z,http://[FE80::822a:a8ff:fe49:470c%tESt]:1234zfe80::822a:a8ff:fe49:470c%tEStz%[FE80::822a:a8ff:fe49:470c%tESt]:1234s,   http://[FE80::822a:a8ff:fe49:470c%tESt]:1234s   fe80::822a:a8ff:fe49:470c%tESts%   [FE80::822a:a8ff:fe49:470c%tESt]:1234N)r5   r6   rF   rA   rD   r:   )rH   ps   & rQ   test_urlsplit_scoped_IPv6*UrlParseTestCase.test_urlsplit_scoped_IPv6  s    LL!!"PQ%EF#JKLL!!"QR%FG#KLr   c                   R p\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  4       R,          VR,          4       R	p\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R
4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^P4       V P                  VP                  4       V4       Rp\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^P4       V P                  VP                  4       V4       Rp\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  4       R,          VR,          4       Rp\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^P4       V P                  VP                  4       V4       Rp\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^P4       V P                  VP                  4       V4       R p\         P                  P                  V4      pV P                  \        R!4      ;_uu_ 4        VP                   RRR4       R#   + '       g   i     R# ; i)"zHTTP://WWW.PYTHON.ORG/doc/#fraghttpzWWW.PYTHON.ORG/doc/r   r  Nwww.python.org:   NN7http://User:Pass@www.python.org:080/doc/?query=yes#fragUser:Pass@www.python.org:080	query=yesUserPasszChttp://User@example.com:Pass@www.python.org:080/doc/?query=yes#frag(User@example.com:Pass@www.python.org:080zUser@example.coms   HTTP://WWW.PYTHON.ORG/doc/#frag   https   WWW.PYTHON.ORG   /doc/r      frag   www.python.orgs7   http://User:Pass@www.python.org:080/doc/?query=yes#frag   User:Pass@www.python.org:080	   query=yes   User   PasssC   http://User@example.com:Pass@www.python.org:080/doc/?query=yes#frags(   User@example.com:Pass@www.python.org:080s   User@example.coms%   HTTP://WWW.PYTHON.ORG:65536/doc/#fragzout of range)r5   r6   rF   rA   r9   r:   r;   r=   r>   rB   rC   rD   rE   r@   assertRaisesRegexr   )rH   rI   r
  s   &  rQ   test_urlsplit_attributes)UrlParseTestCase.test_urlsplit_attributes  s   /LL!!#&6*#34)"%V,T*T*%56& 	BR1GLL!!#&6*#AB)+.V,V,V,%56$S) TLL!!#&6*#MN)+.V,%78V,%56$S) 1LL!!#&7+#45*#&W-T*T*%67&BR1HLL!!#&7+#BC*,/W-W-W-%67$S)TLL!!#&7+#NO*,/W-%89W-%67$S) 7LL!!#&##J??FF @???s   
_!!_2	c                   R p\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  4       R4       Rp\         P                  P                  V4      pV P                  VP                  R	4       V P                  VP
                  R
4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R
4       V P                  VP                  R4       V P                  VP                  4       R4       RpRp\        ^4       F_  p\         P                  P                  WR7      pV P                  VP                  R4       V P                  VP                  4       R4       Ka  	  R# )zQhttp	://www.python
.org	/java
script:	alert('msg
')/?query
=	something#frag
mentr  r  z/javascript:alert('msg')/zquery=somethingr>   NzGhttp://www.python.org/javascript:alert('msg')/?query=something#fragmentsQ   http	://www.python
.org	/java
script:	alert('msg
')/?query
=	something#frag
mentr  r  s   /javascript:alert('msg')/s   query=something   fragmentsG   http://www.python.org/javascript:alert('msg')/?query=something#fragmentzNhttp://www.python.org/java
script:	alert('msg
')/?query
=	something#frag
mentzht
tpr9   )r5   r6   rF   rA   r9   r:   r;   r=   r>   rB   rC   rD   rE   r@   range)rH   rI   r
  r9   _s   &    rQ   !test_urlsplit_remove_unsafe_bytes2UrlParseTestCase.test_urlsplit_remove_unsafe_bytesq  s2   kLL!!#&6*#34!<="34Z0T*T*%56&%no mLL!!#&7+#45!=>"45[1T*T*%67&%op fqA%%c%9AQXXv.QXXZ)rs r   c                :	   \        \        ^ ^!4      4      pRpVP                  R4      V,           p\        P                  P                  V4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R	4       V P                  VP                  R
4       V P                  VP                  ^P4       V P                  VP!                  4       V4       WP#                  R4      ,           p\        P                  P                  V4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^P4       V P                  VP!                  4       VP#                  R4      4       Rp\        P                  P                  VP                  R4      V,           4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^X4       V P                  VP!                  4       V4       \        P                  P                  R4      pV P                  \        P                  P%                  V4      R4       RpVP                  R4      R,           VP                  R4      ,           p\        ^4       F_  p\        P                  P                  W6R7      pV P                  VP                  R4       V P                  VP!                  4       R4       Ka  	  R# )r   r  utf-8r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z)https://www.python.org:88/doc/?query=    httpszwww.python.org:88z
query=    zwww.pypi.org z//www.python.org/r%  zhttps://www.python.org/N)rd   r&  decoder5   r6   rF   rA   r9   r:   r;   r=   r>   rB   rC   rD   rE   r@   r|   rG   )rH   noisebase_urlrI   r
  query_spaces_urlr9   r'  s   &       rQ   test_urlsplit_strip_url(UrlParseTestCase.test_urlsplit_strip_url  sZ   eAx()Lll7#h.LL!!#&6*#AB)+.V,V,V,%56$X.oog..LL!!#&7+#BC*,/W-W-W-%67$X__W%=> GLL!!%,,w"7:J"JK7+#67),/$%56LL!!/2 	003_E "g&05<<3HHqA%%c%9AQXXw/QXXZ)BC r   r6   rE   c                   R V,           pRV,           R,           pV'       dT   VP                  4       '       d   VP                  4       '       g   V P                  R4       \        V4      p\        V4      pV! V4      pV P                  VP                  V4       V P                  \        4      ;_uu_ 4        VP                   RRR4       R#   + '       g   i     R# ; i)zwww.example.net:r   r   rf   N)rg   rh   ri   rA   r:   r   r   rE   )rH   rd   r6   rE   r:   rI   r
  s   &&&&   rQ   test_attributes_bad_port)UrlParseTestCase.test_attributes_bad_port  s    
 $d*& 3&NN$$/0'FS/C#J6*z**FF +***s   6CC	c                    VR ,           pV'       d9   VP                  4       '       g   V P                  R4       VP                  R4      pV! V4      pT P                  VP                  V'       d	   R4       R# R4       R# )z://www.example.netrf   ry   r   r   N)rg   rh   r|   rA   r9   )rH   rd   r6   r9   rI   r
  s   &&&&  rQ   test_attributes_bad_scheme+UrlParseTestCase.test_attributes_bad_scheme  s\    
 ++;;==/0**W%C#J%38R8r   c                f   R p\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  4       V4       \         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  4       V4       Rp\         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  4       V4       \         P                  P                  V4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  R4       V P                  VP                  4       V4       R# )z0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15r   Ns0   sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15r   )r5   r6   rF   rA   r:   rB   rC   rD   rE   r@   r7   )rH   urir
  s   &  rQ   test_attributes_without_netloc/UrlParseTestCase.test_attributes_without_netloc  sJ    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)r   c                    V P                  \        P                  P                  R 4      R4       V P                  \        P                  P                  R4      R4       R# )z http://example.com?blahblah=/foos    http://example.com?blahblah=/fooN)r  example.comr   r   zblahblah=/foor   )r  s   example.comr   r   s   blahblah=/foor   r   r   s   &rQ   test_noslashUrlParseTestCase.test_noslash  sJ    ../QRM	O../RSS	Ur   c                :   V P                  \        P                  P                  R 4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R	4       V P                  \        P                  P                  R4      R
4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       R# )r;   z//www.python.org:80http://www.python.org:80   paths   //www.python.org:80   http://www.python.org:80N)r   r   r;   r   r   r   )r   www.python.org:80r   r   r   r   r  rE  r   r   r   r   )r   r   rC  r   r   r   )r      www.python.org:80r   r   r   r   r  rG  r   r   r   r   r   r   s   &rQ   test_withoutscheme#UrlParseTestCase.test_withoutscheme  s    
 	..v6'	)../DE4	6../IJ8	: 	..w7-	/../EF:	<../JK>	@r   c                n   V P                  \        P                  P                  R 4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R	4      R4       V P                  \        P                  P                  R
4      R4       V P                  \        P                  P                  R4      R4       R# )zhttp:80zhttps:80zpath:80r   r   rB  s   http:80s   https:80s   path:80s   http:s   https:rD  N)r  r   80r   r   r   )r,  r   rL  r   r   r   )r;   r   rL  r   r   r   )r  r   r   r   r   r   )r,  r   r   r   r   r   rF  )r  r      80r   r   r   )   httpsr   rM  r   r   r   )rC  r   rM  r   r   r   )r  r   r   r   r   r   )rN  r   r   r   r   r   rH  r   r   s   &rQ   test_portseparator#UrlParseTestCase.test_portseparator2  s   ..y9;TU..z:<VW..y9;TU..w78OP..x89QR../IJ8	: 	..z:<[\..{;=]^..z:<[\..x89VW..y9:XY../JK>	@r   c                d    V P                  \        \        P                  P                  R 4       R# )r   N)r   	TypeErrorr5   r6   	urlencoder   s   &rQ   test_usingsysUrlParseTestCase.test_usingsysD  s    )V\\%;%;UCr   c                   V P                  \        P                  P                  R 4      R	4       V P                  \        P                  P                  R4      R
4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       V P                  \        P                  P                  R4      R4       R# )zs3://foo.com/stuffx-newscheme://foo.com/stuffz*x-newscheme://foo.com/stuff?query#fragmentz!x-newscheme://foo.com/stuff?querys   s3://foo.com/stuffs   x-newscheme://foo.com/stuffs*   x-newscheme://foo.com/stuff?query#fragments!   x-newscheme://foo.com/stuff?queryN)s3foo.com/stuffr   r   r   )x-newschemerY  rZ  r   r   r   )r[  rY  rZ  r   r=   r>   )r[  rY  rZ  r   r=   r   )s   s3   foo.com   /stuffr   r   r   )   x-newschemer\  r]  r   r   r   )r^  r\  r]  r      queryr$  )r^  r\  r]  r   r_  r   r   r   s   &rQ   test_anyschemeUrlParseTestCase.test_anyschemeH  s$   ../CD@	B../LMI	K../[\V	X../RSN	P 	../DEF	H../MNO	Q../\]\	^../STT	Vr   funcc                >   V! R R4      pV P                  VP                  R4       V! RR4      pV P                  VP                  R4       V P                  V! RR4      P                  R4       V P                  V! RRR7      P                  R4       V P                  V! RRR7      P                  R4       V P                  V! R4      P                  R	4       V P                  V! R4      P                  R
4       V P                  V! RR	4      P                  R
4       R# )zhttp://example.net/ftpr  s   http://example.net/s   ftpr  r;   r%  rC  r   r   N)rA   r9   )rH   rb  rM   s   && rQ   test_default_scheme$UrlParseTestCase.test_default_scheme]  s     +U3/,f50fe,33U;fU3::EBgf5<<fEf,,b1g--s3gr*1137r   zurl,attr,expected_fragc                :   VR 8X  d!   V\         P                  P                  J d   RpV! VRR7      pV P                  VP                  R4       V P                  \        WR4      RV,           4       V P                  V! VRR4      P                  R4       V! VRR7      pV P                  VP                  V4       V P                  \        WR4      V4       V P                  V! VRR4      P                  V4       V P                  V! V4      P                  V4       R# )r<   r;   F)allow_fragmentsr   r   TN)r5   r6   rF   rA   r>   assertEndsWithgetattrassertNotEndsWith)rH   rI   attrexpected_fragrb  rM   s   &&&&& rQ   test_parse_fragments%UrlParseTestCase.test_parse_fragmentsk  s     8(=(= =Dc51"-GF1-/	1c2u-66;c40-8wv4mDc2t,55)	+c++];r   c                   V P                  \        R 4      ;_uu_ 4        \        P                  P	                  RR4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P	                  RR4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  RR4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  RR4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  R4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  R	4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  R
4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  R4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  RR4       RRR4       V P                  \        R 4      ;_uu_ 4        \        P                  P                  RR4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL[; i  + '       g   i     EL(; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL_; i  + '       g   i     EL-; i  + '       g   i     L; i  + '       g   i     R# ; i)zCannot mix strr  r  Nr  r  http://python.orgs   http://python.org)r  r  r   r   r   r   )r  r  r   r   r   r   )r  r  r   r   r   )r  r  r   r   r   )	r   rR  r5   r6   r7   rF   r?   rG   r{   r   s   &rQ   test_mixed_types_rejected*UrlParseTestCase.test_mixed_types_rejected  s;    ##I/?@@LL!!"2G< A##I/?@@LL!!"3V< A##I/?@@LL!!"2G< A##I/?@@LL!!"3V< A##I/?@@LL##$LM A##I/?@@LL##$KL A##I/?@@LL##$HI A##I/?@@LL##$HI A##I/?@@LL  !46JK A##I/?@@LL  !57JK A@% A@@@@@@@@@@@@@@@@@@@@@@@@@@@@sw   !K&!K-!K-4!L; L L) L= M!M%!M8K	K*	-K>	L	L&	)L:	=M	M"	%M5	8N		result_typec                   Tp\        VP                  4      pVP                  pV P                  VP                  V4       RV,          pRV,          pV! V!  pV! V!  pRp	Rp
V P                  Wu4       V P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  V	4      V4       V P                  VP                  V	4      V4       V P                  VP                  W4      V4       V P                  VP                  W4      V4       V P                  W4       V P                  VP                  4       V4       V P                  VP                  4       V4       V P                  VP                  V	4      V4       V P                  VP                  V	4      V4       V P                  VP                  W4      V4       V P                  VP                  W4      V4       R# )r   ry   strictN)r   )r   )rX   _fields_encoded_counterpartassertIs_decoded_counterpartrA   r-  r|   )rH   rt  str_typenum_args
bytes_typestr_args
bytes_args
str_resultbytes_resultencodingerrorss   &&         rQ   test_result_pairs"UrlParseTestCase.test_result_pairs  s    x''(22
j55x@8#h&
x(
!:..,,.9,,.
;,,X6A,,X6
C,,X>I,,X>
K2**,j9**,l;**84jA**84lC**8<jI**8<lKr   c                $   \         P                  P                  R RR7      pV P                  VRR./4       \         P                  P                  RRR7      pV P                  VRR./4       \         P                  P                  RRR7      pV P                  VRR./4       \         P                  P                  R	RR7      pV P                  VRR
./4       \         P                  P                  R	RRR7      pV P                  VRR./4       R# )	   key=Ł%E9latin-1r  key   Łé   key=Ł%C3%A9r+  ry      Ł��
   key=Ł%E9-   Ł�-ignorer  r     Ł-Nr5   r6   ra   rA   rH   rM   s   & rQ   test_parse_qs_encoding'UrlParseTestCase.test_parse_qs_encoding  s   &&&K%,!89&&'9G&L%,!89&&'9G&L%*>)?!@A&&'7'&J%/):!;<&&'7'AI ' K%)!56r   c                   \         P                  P                  R RR7      pV P                  VR
.4       \         P                  P                  RRR7      pV P                  VR
.4       \         P                  P                  RRR7      pV P                  VR.4       \         P                  P                  RRR7      pV P                  VR.4       \         P                  P                  RRRR7      pV P                  VR.4       R	# )r  r  r  r  r+  ry   r  r  r  N)r  r  )r  r  )r  r  )r  r  r5   r6   rW   rA   r  s   & rQ   test_parse_qsl_encoding(UrlParseTestCase.test_parse_qsl_encoding  s    '')'L"7!89''(:W'M"7!89''(:W'M"?!@A''(87'K":!;<''(87AI ( K"4!56r   c                X   V P                  \        4      ;_uu_ 4        \        P                  P	                  R P                  R.^,          4      ^
R7       RRR4       \        P                  P	                  R P                  R.^
,          4      ^
R7       R#   + '       g   i     LJ; i)r   za=a)max_num_fieldsN)r   r   r5   r6   rW   joinr   s   &rQ   test_parse_qsl_max_num_fields.UrlParseTestCase.test_parse_qsl_max_num_fields  sm    z**LL""388UGBJ#7"K +sxx
3BG +*s   9BB)	r   z;;r"   r   r$   r   r   za=1;a=2r   r      ;s   ;;r&   r   r   r(   r   r   s   a=1;a=2r    r!   c                    \         P                  P                  VR R7      pV P                  W24       \         P                  P                  VRR7      pV P                  WB4       R# r   	separatorr  Nr  rH   rZ   r[   rM   result_bytess   &&&  rQ   test_parse_qs_separator(UrlParseTestCase.test_parse_qs_separator  sR     &&ts&;(||,,TT,B.r   c                    \         P                  P                  VR R7      pV P                  W24       \         P                  P                  VRR7      pV P                  WB4       R# r  r  r  s   &&&  rQ   test_parse_qsl_separator)UrlParseTestCase.test_parse_qsl_separator  sR     '''<(||--dd-C.r   c                J   V P                  \        P                  P                  R 4      R.4       V P                  \        P                  P                  \	        R 4      4      R.4       V P                  \        P                  P                  \        R 4      4      R.4       R# )r   Nr   r   )rA   r5   r6   rW   	bytearray
memoryviewr   s   &rQ   test_parse_qsl_bytes%UrlParseTestCase.test_parse_qsl_bytes  so    //7,H//	&0AB\NS//
60BCl^Tr   c           
        \        R R R7      pRRR\        R4      3 Fe  pV P                  \        P                  P
                  ! V3/ VB . 4       V P                  \        \        P                  P
                  V^R7       Kg  	  ^ R. / 3 EF#  pV P                  \        4      ;_uu_ 4       pV P                  \        P                  P
                  ! V3/ VB . 4       RRR4       V P                  XP                  \        4       V P                  \        4      ;_uu_ 4       pV P                  \        P                  P                  ! V3/ VB / 4       RRR4       V P                  VP                  \        4       V P                  \        \        P                  P
                  V^R7       EK&  	  R#   + '       g   i     L; i  + '       g   i     L{; i)T)rV   strict_parsingr   r   Nr          )dictr  rA   r5   r6   rW   r   r   assertWarnsDeprecationWarningfilename__file__ra   )rH   kwargsxcms   &   rQ   test_parse_qsl_false_value+UrlParseTestCase.test_parse_qsl_false_value	  sQ   TBS$
3/AV\\33A@@"Ej&,,*@*@!qQ 0 CRA!!"455  !7!7!DV!DbI 6R[[(3!!"455  !6!6q!CF!CRH 6R[[(3j&,,*@*@!qQ  55 65s   -2F6$2G	6G	Gc                   V P                  \        \        P                  P                  \        R 4      4       V P                  \        \        P                  P                  \        R 4      4       V P                  \        \        P                  P                  ^4       V P                  \        \        P                  P                  \        4       4       R FJ  pV P                  \        4      ;_uu_ 4        \        P                  P	                  RVR7       RRR4       KL  	  V P                  \        4      ;_uu_ 4        \        P                  P	                  R RR7       RRR4       V P                  \        4      ;_uu_ 4        \        P                  P	                  RRR7       RRR4       R#   + '       g   i     K  ; i  + '       g   i     Lm; i  + '       g   i     R# ; i)r   Nr   r     ¦   )r   r   Nr      r  g      ?)r   rR  r5   r6   rW   listiterobjectr   UnicodeEncodeErrorUnicodeDecodeError)rH   r  s   & rQ   test_parse_qsl_errors&UrlParseTestCase.test_parse_qsl_errors  s4   )V\\%;%;T&\J)V\\%;%;T&\J)V\\%;%;Q?)V\\%;%;VXF6I"":..&&u	&B /. 7 122LL""6V"< 3122LL""5G"< 32	 /..22222s$   9"F7"G"G7GG	G/	c                    \         P                  P                  R ^^.RR/R4      p ! R R4      p\         P                  P                  R V! 4       /R4      pV P                  VR4       R# )r	   r   Tc                   &   a  ] tR tRt o R tRtV tR# ):UrlParseTestCase.test_urlencode_sequences.<locals>.Triviali,  c                    R # )trivial r   s   &rQ   __str__BUrlParseTestCase.test_urlencode_sequences.<locals>.Trivial.__str__-  s     r   r  N)__name__
__module____qualname____firstlineno__r  __static_attributes____classdictcell____classdict__s   @rQ   Trivialr  ,  s     ! !r   r  z	a=trivialN)   r     )r5   r6   rS  rA   )rH   rM   r  s   &  rQ   test_urlencode_sequences)UrlParseTestCase.test_urlencode_sequences%  s`     ''q!fc9(EtL	! 	! ''gi(8$?-r   c                   \         P                  P                  R R/4      pV P                  VR4       \         P                  P                  R R/\         P                  P                  R7      pV P                  VR4       \         P                  P                  R R/R\         P                  P                  R7      pV P                  VR4       R	# )
r	   z
some valueza=some+valuezsome value/another)	quote_viaza=some%20value%2Fanotherr   )safer  za=some%20value/anotherN)r5   r6   rS  rA   quoter  s   & rQ   test_urlencode_quote_via)UrlParseTestCase.test_urlencode_quote_via3  s    ''l(;<0''.B(C28,,2D2D ( F!;<''.B(C-0FLL<N<N ( P!9:r   c                $   V P                  \        \        P                  P                  R 4       \        P                  P	                  R4      pV P                  VR4       \        P                  P	                  R4      pV P                  VR4       \        P                  P	                  RR,          4      pV P                  VRR,          4       \        P                  P	                  RR	,          4      pV P                  VR
R	,          4       R# )r   s   archaeological arcanazarchaeological%20arcanar   r      Ai'  As   z/ i zz%01/%20N)r   rR  r5   r6   quote_from_bytesrA   r  s   & rQ   test_quote_from_bytes&UrlParseTestCase.test_quote_from_bytes=  s    )V\\%B%BEJ../GH!:;..s3$..tF{;V,..z'/ABG!34r   c                    \         P                  P                  R 4      pV P                  VR4       \         P                  P                  R4      pV P                  VR4       R# )z	abc%20defs   abc defr   r   N)r5   r6   unquote_to_bytesrA   r  s   & rQ   test_unquote_to_bytes&UrlParseTestCase.test_unquote_to_bytesH  sJ    ..{;,..r2%r   c                    V P                  \        \        P                  P                  R RR7       V P                  \        \        P                  P                  R RR7       R# )s   foor+  r  rv  )r  N)r   rR  r5   r6   r  r   s   &rQ   test_quote_errors"UrlParseTestCase.test_quote_errorsN  sI    )V\\%7%7#* 	 	,)V\\%7%7Qr   c                   \         P                  P                  R 4      pV P                  VP                  R4       V P                  VP
                  R4       \         P                  P                  R4      pV P                  VP                  R4       V P                  VP
                  R4       \         P                  P                  R 4      pV P                  VP                  R4       V P                  VP
                  R4       \         P                  P                  R4      pV P                  VP                  R4       V P                  VP
                  R4       R# )ztel:+31-641044153telz+31-641044153ztel:+31641044153z+31641044153N)r5   r6   rF   rA   r9   r;   r7   )rH   p1p2s   &  rQ   test_issue14072 UrlParseTestCase.test_issue14072S  s    \\""#67E*/2\\""#56E*.1\\""#67E*/2\\""#56E*.1r   c                   V P                  \        \        P                  P                  R 4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R	4       V P                  \        \        P                  P                  R
4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R4       V P                  \        \        P                  P                  R 4       V P                  \        \        P                  P                  R!4       V P                  \        \        P                  P                  R"4       V P                  \        \        P                  P                  R#4       V P                  \        \        P                  P                  R$4       V P                  \        \        P                  P                  R%4       V P                  \        \        P                  P                  R&4       V P                  \        \        P                  P                  R'4       V P                  \        \        P                  P                  R(4       V P                  \        \        P                  P                  R)4       V P                  \        \        P                  P                  R*4       R+# ),z&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?QueryzScheme://user@[v.IP]/Path?Queryz Scheme://user@[v123.]/Path?QueryzScheme://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?QueryzScheme://user@]v6a.ip[/Pathzscheme://prefix.[v6a.ip]zscheme://[v6a.ip].suffixzscheme://prefix.[v6a.ip]/zscheme://[v6a.ip].suffix/zscheme://prefix.[v6a.ip]?zscheme://[v6a.ip].suffix?zscheme://prefix.[::1]zscheme://[::1].suffixzscheme://prefix.[::1]/zscheme://[::1].suffix/zscheme://prefix.[::1]?zscheme://[::1].suffix?zscheme://prefix.[::1]:azscheme://[::1].suffix:azscheme://prefix.[::1]:a1zscheme://[::1].suffix:a1zscheme://prefix.[::1]:1azscheme://[::1].suffix:1azscheme://prefix.[::1]:zscheme://[::1].suffix:/zscheme://prefix.[::1]:?zscheme://user@prefix.[v6a.ip]zscheme://user@[v6a.ip].suffixzscheme://[v6a.ipzscheme://v6a.ip]zscheme://]v6a.ip[zscheme://]v6a.ipzscheme://v6a.ip[zscheme://prefix.[v6a.ipzscheme://v6a.ip].suffixzscheme://prefix]v6a.ip[suffixzscheme://prefix]v6a.ipzscheme://v6a.ip[suffixN)r   r   r5   r6   rF   r   s   &rQ   test_invalid_bracketed_hosts-UrlParseTestCase.test_invalid_bracketed_hostsb  s   *fll&;&;=ef*fll&;&;=lm*fll&;&;=bc*fll&;&;=_`*fll&;&;=^_*fll&;&;=_`*fll&;&;=[\*fll&;&;=tu*fll&;&;  >J  	K*fll&;&;=Z[*fll&;&;=WX*fll&;&;=WX*fll&;&;=XY*fll&;&;=XY*fll&;&;=XY*fll&;&;=XY*fll&;&;=TU*fll&;&;=TU*fll&;&;=UV*fll&;&;=UV*fll&;&;=UV*fll&;&;=UV*fll&;&;=VW*fll&;&;=VW*fll&;&;=WX*fll&;&;=WX*fll&;&;=WX*fll&;&;=WX*fll&;&;=UV*fll&;&;=VW*fll&;&;=VW*fll&;&;=\]*fll&;&;=\]*fll&;&;=OP*fll&;&;=OP*fll&;&;=PQ*fll&;&;=OP*fll&;&;=OP*fll&;&;=VW*fll&;&;=VW*fll&;&;=\]*fll&;&;=UV*fll&;&;=UVr   c                (   \         P                  P                  R 4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       \         P                  P                  R4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  R4       \         P                  P                  R4      pV P                  VP                  R	4       V P                  VP
                  R4       V P                  VP                  R4       R# )
z&scheme://user@[v6a.ip]:1234/path?queryzv6a.ipuser/pathi  z4scheme://user@[0439:23af:2309::fae7%test]/path?queryz0439:23af:2309::fae7%testNzEscheme://user@[0439:23af:2309::fae7:1234:192.0.2.146%test]/path?queryz*0439:23af:2309::fae7:1234:192.0.2.146%test)	r5   r6   rF   rA   rD   rB   r;   rE   ry  )rH   r  r  p3s   &   rQ   test_splitting_bracketed_hosts/UrlParseTestCase.test_splitting_bracketed_hosts  s   \\""#KLh/f-'*$'\\""#YZ&ABf-'*bggt$\\""#jk&RSf-'*r   c                   R p\         P                  P                  R4      pV P                  \        V4      ;_uu_ 4        VP
                   RRR4       \         P                  P                  R4      pV P                  \        V4      ;_uu_ 4        VP
                   RRR4       R#   + '       g   i     Ld; i  + '       g   i     R# ; i)z3Port could not be cast to integer value as 'oracle'z%http://Server=sde; Service=sde:oracleN)r5   r6   r7   r   r   rE   rF   )rH   messager  r  s   &   rQ   !test_port_casting_failure_message2UrlParseTestCase.test_port_casting_failure_message  s    G\\""#JK##J88GG 9 \\""#JK##J88GG 98	 98 988s    B)B<)B9	<C	c                   \         P                  P                  R 4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       \         P                  P                  R4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       \         P                  P                  R4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R	4       \         P                  P                  R
4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       R# )z"tel:123-4;phone-context=+1-650-516r  z123-4zphone-context=+1-650-516ztel:+1-201-555-0123z+1-201-555-0123r   z"tel:7042;phone-context=example.com7042zphone-context=example.comz%tel:863-1234;phone-context=+1-914-555z863-1234zphone-context=+1-914-555N)r5   r6   r7   rA   r9   r;   r<   )rH   r  s   & rQ   test_telurl_params#UrlParseTestCase.test_telurl_params  sJ   \\""#GHE*'*$>?\\""#89E*"34B'\\""#GHE*&)$?@\\""#JKE**-$>?r   c                    \         P                  P                  \         P                  P                  4      pV P	                  R \        V4      4       R# )QuoterN)r5   r6   _Quoter_ALWAYS_SAFEassertInrepr)rH   quoters   & rQ   test_Quoter_repr!UrlParseTestCase.test_Quoter_repr  s2    %%fll&?&?@hV-r   c                B    \         P                  P                  4        R # r4   )r5   r6   clear_cacher   s   &rQ   "test_clear_cache_for_code_coverage3UrlParseTestCase.test_clear_cache_for_code_coverage  s      "r   c                    V P                  \        4      ;_uu_ 4        \        P                  P                  pR R R 4       R #   + '       g   i     R # ; ir4   )r   AttributeErrorr5   r6   this_does_not_exist)rH   unuseds   & rQ   !test_urllib_parse_getattr_failure2UrlParseTestCase.test_urllib_parse_getattr_failure  s1    ~..\\55F /...s   AA	c                b   . p0 Rmp\        \        P                  4       Fa  pVP                  R4      '       g   W29   d   K"  \	        \        P                  V4      p\	        VRR4      R8X  g   KP  VP                  V4       Kc  	  V P                  \        P                  P                  V4       R# )	splitattrr'  r  Nzurllib.parse>   unwrapsplittagto_bytesr  	splithost	splitport	splittype	splituser
ResultBase
splitnport
splitquery
splitvaluer  splitpasswd)dirr5   r6   
startswithrj  appendassertCountEqual__all__)rH   r}   undocumentednamer  s   &    rQ   test_allUrlParseTestCase.test_all  s    
 %Ds##t';V\\40Fv|T2nD% & 	fll22H=r   c                   R pV Uu0 uF  pRP                  \        V4      4      kK  	  pp\        \        \	        ^\
        P                  4      4       Uu. uFg  p\        P                  ! V4      '       g   K!  V\        \        P                  ! V4      P                  4       4      ,          '       g   K]  W!9  g   Ke  VNKi  	  ppV P                  RV4       V P                  RV4       \        P                  P                  R4       V P                  \         4      ;_uu_ 4        \        P                  P                  R4       RRR4       R	 F  pR
 F  pV F  pRP                  WVP                  V4      4      pV P#                  VRP                  \        V4      4      R7      ;_uu_ 4        V P                  \         4      ;_uu_ 4        \        P                  P                  V4       RRR4       RRR4       K  	  K  	  K  	  R# u upi u upi   + '       g   i     L; i  + '       g   i     LC; i  + '       g   i     K  ; i)z/:#?@z{:04X}u   ℀u   ＃u   http://プ:80u   http://プ︓80Nz{}://{}/path)rI   char)r  r,  rd  )znetloc{}false.netloczn{}user@netloc)formatordmapchrr&  sys
maxunicodeunicodedatadecompositionsetrK   r  r5   r6   rF   r   r   rz   )rH   illegal_charsr   	hex_charsdenorm_charsr9   r:   rI   s   &       rQ   test_urlsplit_normalization,UrlParseTestCase.test_urlsplit_normalization  s     6CDmX__SV,m	D3c3>> :;
;!((+ S!:!:1!=!C!C!EFFF  & A; 	 
 	h-h- 	67z**LL!!"?@ + /FD%A(//a8HIC#HOOCF4KLL!..z::"LL11#6 ; ML & E /# E
 +* ;: MLLsM   #HH97H5H=H% H/H; H(-H;H%	(H83H;;Ir  r4   )FT))path/to/file)r   r   rC  r   r   r   )r   r   rC  r   r   )/path/to/filer   r   rD  r   r   r   r   r   rD  r   r   )//path/to/file)r   r;   /to/filer   r   r   )r   r;   rH  r   r   )z////path/to/file)r   r   rG  r   r   r   )r   r   rG  r   r   )z/////path/to/file)r   r   ///path/to/filer   r   r   )r   r   rI  r   r   )zscheme:path/to/file)r9   r   rC  r   r   r   )r9   r   rC  r   r   )scheme:/path/to/filer9   r   rD  r   r   r   r9   r   rD  r   r   )zscheme://path/to/file)r9   r;   rH  r   r   r   )r9   r;   rH  r   r   )zscheme:////path/to/file)r9   r   rG  r   r   r   )r9   r   rG  r   r   )zscheme://///path/to/file)r9   r   rI  r   r   r   )r9   r   rI  r   r   )zfile:tmp/junk.txt)filer   tmp/junk.txtr   r   r   )rM  r   rN  r   r   )file:///tmp/junk.txtrM  r   /tmp/junk.txtr   r   r   rM  r   rQ  r   r   )zfile:////tmp/junk.txt)rM  r   //tmp/junk.txtr   r   r   )rM  r   rS  r   r   )zfile://///tmp/junk.txt)rM  r   ///tmp/junk.txtr   r   r   )rM  r   rT  r   r   )zhttp:tmp/junk.txt)r  r   rN  r   r   r   )r  r   rN  r   r   )zhttp://example.com/tmp/junk.txt)r  r>  rQ  r   r   r   )r  r>  rQ  r   r   )z http:///example.com/tmp/junk.txt)r  r   /example.com/tmp/junk.txtr   r   r   )r  r   rU  r   r   )z!http:////example.com/tmp/junk.txt)r  r   //example.com/tmp/junk.txtr   r   r   )r  r   rV  r   r   )zimap://mail.python.org/mbox1)imapmail.python.org/mbox1r   r   r   )rW  rX  rY  r   r   )z1mms://wms.sys.hinet.net/cts/Drama/09006251100.asf)mmswms.sys.hinet.net/cts/Drama/09006251100.asfr   r   r   )rZ  r[  r\  r   r   )znfs://server/path/to/file.txt)nfsserver/path/to/file.txtr   r   r   )r]  r^  r_  r   r   )z0svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/)svn+sshsvn.zope.org/repos/main/ZConfig/trunk/r   r   r   )r`  ra  rb  r   r   )z)git+ssh://git@github.com/user/project.git)git+sshgit@github.com/user/project.gitr   r   r   )rc  rd  re  r   r   )zEitms-services://?action=download-manifest&url=https://example.com/app)itms-servicesr   r   r   4action=download-manifest&url=https://example.com/appr   )rf  r   r   rg  r   )+scheme:path/to/file)r   r   rh  r   r   r   )r   r   rh  r   r   )sch_me:path/to/file)r   r   ri  r   r   r   )r   r   ri  r   r   )   schème:path/to/file)r   r   rj  r   r   r   )r   r   rj  r   r   ))rI  rD  rE  rF  )zscheme:///path/to/filerJ  rK  rL  )zfile:/tmp/junk.txtrO  rP  rR  )zhttp:/tmp/junk.txtzhttp:///tmp/junk.txt)r  r   rQ  r   r   r   )r  r   rQ  r   r   )zhttps:/tmp/junk.txtzhttps:///tmp/junk.txt)r,  r   rQ  r   r   r   )r,  r   rQ  r   r   )r  r,  ))z://www.python.org)r  r   r   r   r   )r  r   r   r   )z://www.python.org#abc)r  r   r   r   abc)r  r   r   rk  )z://www.python.org?q=abc)r  r   r   q=abcr   )r  r   rl  r   )z://www.python.org/#abc)r  r   r   r   rk  )r  r   r   rk  )z://a/b/c/d;p?q#f)r	   z/b/c/dr
  qrq   )r	   z/b/c/d;prm  rq   )Pythonz./PythonrW  zx://yzx:/yzx:/r   ))z http://Test.python.org:5432/foo/test.python.org8  )zhttp://12.34.56.78:5432/foo/12.34.56.78rp  )zhttp://[::1]:5432/foo/::1rp  )zhttp://[dead:beef::1]:5432/foo/dead:beef::1rp  )zhttp://[dead:beef::]:5432/foo/dead:beef::rp  )z:http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/'dead:beef:cafe:5417:affe:8fa3:deaf:feedrp  )z http://[::12.34.56.78]:5432/foo/::12.34.56.78rp  )z%http://[::ffff:12.34.56.78]:5432/foo/::ffff:12.34.56.78rp  )zhttp://Test.python.org/foo/ro  N)zhttp://12.34.56.78/foo/rq  N)zhttp://[::1]/foo/rr  N)zhttp://[dead:beef::1]/foo/rs  N)zhttp://[dead:beef::]/foo/rt  N)z5http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/ru  N)zhttp://[::12.34.56.78]/foo/rv  N)z http://[::ffff:12.34.56.78]/foo/rw  N)zhttp://Test.python.org:/foo/ro  N)zhttp://12.34.56.78:/foo/rq  N)zhttp://[::1]:/foo/rr  N)zhttp://[dead:beef::1]:/foo/rs  N)zhttp://[dead:beef::]:/foo/rt  N)z6http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:/foo/ru  N)zhttp://[::12.34.56.78]:/foo/rv  N)z!http://[::ffff:12.34.56.78]:/foo/rw  N)zhttp://::12.34.56.78]/zhttp://[::1/foo/zftp://[::1/foo/bad]/badzhttp://[::1/foo/bad]/badzhttp://[::ffff:12.34.56.78)zhttp://python.org#fragrq  r  )rq  rq  r   )zhttp://python.org/#fraghttp://python.org/r  )rx  rx  r   )zhttp://python.org/?q#fraghttp://python.org/?qr  )ry  ry  r   )zhttp://python.org/p#fragzhttp://python.org/pr  )http://python.org/p?qrz  r   )zhttp://a/b/c;p?q#fhttp://a/b/c;p?qrq   )zhttp://a/b/c;p?q#r{  r   )r{  r{  r   )zhttp://a/b/c;p?#fzhttp://a/b/c;p?rq   )zhttp://a/b/c;p#fzhttp://a/b/c;prq   )zhttp://a/b/c;?q#fzhttp://a/b/c;?qrq   )zhttp://a/b/c?q#fzhttp://a/b/c?qrq   )zhttp:///b/c;p?q#fzhttp:///b/c;p?qrq   )zhttp:b/c;p?q#fzhttp:b/c;p?qrq   )z
http:;?q#fzhttp:;?qrq   )z	http:?q#fzhttp:?qrq   )z//a/b/c;p?q#fz//a/b/c;p?qrq   )z://a/b/c;p?q#fz://a/b/c;p?qrq   )	r   z1.5z-10x10z-01_1z 1z1 u   ६)r   +-0zhttp&u   ६http)
)z
http:#fragr;   r  )z//example.net#fragr;   r  )zindex.html#fragr;   r  )z	;a=b#fragr<   r  )z	?a=b#fragr=   r  )z#fragr;   r  )z	abc#@fragr;   @frag)z//abc#@fragr;   r  )z//abc:80#@fragr;   r  )z//abc#@frag:80r;   z@frag:80r	   r   r	   r   r   r   r	   r   r	   r   r  r   r   r   r   r   r    r   r!   )Kr  r  r  r  rR   r   subTestsparse_qsl_test_casesr^   parse_qs_test_casesrb   rk   ro   rs   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r!  r(  r1  r5   r6   rF   r7   r4  r7  r;  r?  rI  rO  rT  r`  re  rn  rr  DefragResultSplitResultParseResultr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1  rA  r  r  r  s   @rQ   r2   r2   i   s=    38j m%9:8 ;8 m%898 :8 g}-( Z+ Zv1wZ .x1 g}-- 0
 ,7- ..7 g}-h 12( + "1# 3 .&1R R g}-cijO k .O"A`@
%JZ7Br`=DF0P g}-) , @QA .BQ g}-m &. /J/ .J
 g}-'C:E<I@GB/5/4;98979793+)13/*
 2
03 .4
0M[z#tJ9Dv g}-g 5 5v||7L7LMNfZ[ \ O . g}-g 5 5v||7L7LMNh HI9 J O .9'*RU@&@$DV* fv||44fll6K6KLM8 N8 . 1
  fv||44fll6K6KLM< N<"L0 m
,,
#
#
,,
"
"
,,
"
"&
 
L
L677H
 m"I2JcC5\"S5'389sCj)*2JBKtdVn%dVHdVH=>$t-.&
 // m"I2Jj\"\<89Z012JBK|n%nn=>,56&
 //U
R=.;	5&R
2+WZ+ @*.#6
> 7 7r   r2   c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR t]P                   ! RR4      R 4       tRtV tR# )Utility_Testsi  c                *   \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R	4       V P                  V! R4      R
4       R# )ztype:opaquestringopaquestringN:opaquestringztype:ztype:opaque:string)typer  )Nr  )Nr  )r  r   )r  zopaque:string)r5   r6   
_splittyperA   )rH   r#  s   & rQ   test_splittypeUtility_Tests.test_splittype  s    LL++	#679QR>24JK?35LM7+\:#78:STr   c                   \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R	4      R4       V P                  V! R
4      R4       R# )z%//www.example.org:80/foo/bar/baz.html/foo/bar/baz.htmlz//www.example.org:80Nz//127.0.0.1#@host.comz//127.0.0.1#@host.com:80z//127.0.0.1:80#@host.comz///filez//example.net/file;z//example.net/file?z//example.net/file#)www.example.org:80r  )r  r   )Nr  )	127.0.0.1/#@host.com)r  z/#@host.com:80)z127.0.0.1:80r  )r   z/file)example.netz/file;)r  z/file?)r  z/file#)r5   r6   
_splithostrA   )rH   r!  s   & rQ   test_splithostUtility_Tests.test_splithost  s   LL++	#JKD	F#9:3	5#674	6 	#:;5	7#=>8	:#=>8	: 	9-&	( 	#892	4#892	4#892	4r   c                *   \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R	4       V P                  V! R4      R
4       R# )r  www.python.org:080z@www.python.org:080Nz
User:Pass@r  )	User:Passr  )r   r  )Nr  )r  r   )zUser@example.com:Passr  )r5   r6   
_splituserrA   )rH   r$  s   & rQ   test_splituserUtility_Tests.test_splituser!  s    LL++	#AB<	>#893	5#785	7<0*	,#MNH	Jr   c                   \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R	4      R4       V P                  V! R
4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       R# )zuser:abr  zuser:a
bzuser:a	bzuser:abzuser:abzuser:abzuser:a:bzuser:a bz	user 2:abz
user+1:a+bzuser:Nz:ab)r  ab)r  za
b)r  za	b)r  zab)r  zab)r  zab)r  za:b)r  r   )zuser 2r  )zuser+1za+b)r  r   )r  N)r   r  )r5   r6   _splitpasswdrA   )rH   r)  s   & rQ   test_splitpasswdUtility_Tests.test_splitpasswd.  s+    ll//Y/@[13CD[13CD[13CD[13CD[13CDZ0/BZ0/B[13CD\24EFW-|<V,n=U+Z8r   c                   \         P                  P                  pV P                  V! R 4      R	4       V P                  V! R4      R
4       V P                  V! R4      R
4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       R# )	parrot:88parrotNparrot:r  parrot:cheesez[::1]:88[::1]z:88)r  88r  N)r  N)r  N)r  r  )r  N)r   r  )r5   r6   
_splitportrA   )rH   r"  s   & rQ   test_splitportUtility_Tests.test_splitport@  s    LL++	;/1AB8,.>?9-/?@;/1DE?35LM:.@7+_=5):6r   c                "   \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R^74      R	4       V P                  V! R4      R4       V P                  V! R^74      R	4       V P                  V! R4      R
4       V P                  V! R^74      R4       V P                  V! R4      R4       V P                  V! R^74      R4       V P                  V! R4      R4       R# )r  r  r  r  r  Nzparrot: +1_0 )r  X   )r  )r  7   )r  r  )r  r  r  )r5   r6   _splitnportrA   )rH   r&  s   & rQ   test_splitnportUtility_Tests.test_splitnportK  s    \\--
K0.AH-~>Hb1>BI.?Ir2NCK02CDK46GHO46FGOR8:JKO46FGr   c                    \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       R# )	http://python.org/fake?foo=barhttp://python.org/fakezhttp://python.org/fake?foo=bar?Nz?foo=bar)r  foo=bar)r  r   )r  N)r   r  )r5   r6   _splitqueryrA   )rH   r'  s   & rQ   test_splitqueryUtility_Tests.test_splitqueryX  su     \\--
$DE>	@$EF?	A$<=9	;J/Ar   c                *   \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R	4       V P                  V! R4      R
4       R# )http://example.com?foo=bar#bazhttp://example.com?foo=barzhttp://example.com?foo=bar#z#bazNz"http://example.com?foo=bar#baz#boo)r  baz)r  r   )r   r  )r  N)r  boo)r5   r6   	_splittagrA   )rH   r  s   & rQ   test_splittagUtility_Tests.test_splittagd  s    <<))"BC>	@"?@;	=&);7">?=	?"FGB	Dr   c                   \         P                  P                  pV P                  V! R 4      RRR.34       V P                  V! R4      RR.34       V P                  V! R4      RRR.34       V P                  V! R4      R. 34       R# )z/path;attr1=value1;attr2=value2r  zattr1=value1zattr2=value2z/path;r   z;attr1=value1;attr2=value2N)r5   r6   
_splitattrrA   )rH   r  s   & rQ   test_splitattrUtility_Tests.test_splitattrp  s    LL++	#DE!NN#CD	F8,wo>#?@~~>?	A7+gr];r   c                *   \         P                  P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R	4       V P                  V! R4      R
4       R# )r  zfoo=z=barfoobarNzfoo=bar=baz)r   bar)r   r   )r   r  )r  N)r   zbar=baz)r5   r6   _splitvaluerA   )rH   r(  s   & rQ   test_splitvalueUtility_Tests.test_splitvaluey  s~     \\--
I.?F+[9F+[9H-/?@M24FGr   c                    \         P                  P                  R 4      pV P                  VR 4       V P	                  \
        \         P                  P                  R4       R# )zhttp://www.python.orgu   http://www.python.org/mediævalN)r5   r6   	_to_bytesrA   r   UnicodeErrorr  s   & rQ   test_to_bytesUtility_Tests.test_to_bytes  sH    ''(?@!89,(>(>?	Ar   wrapped_urlc                h    \         P                  P                  V4      pV P                  VR 4       R# )scheme://host/pathN)r5   r6   r  rA   )rH   r  rI   s   && rQ   test_unwrapUtility_Tests.test_unwrap  s)     ll!!+.23r   r  N)z<URL:scheme://host/path>z<scheme://host/path>zURL:scheme://host/pathr  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  s   @rQ   r  r    sl     U4:J9$	7H
B
D<HA mKL4L4r   r  c                   b   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )DeprecationTesti  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzUurllib.parse.splittype() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r#  rA   r  warningrH   r  s   & rQ   test_splittype_deprecation*DeprecationTest.test_splittype_deprecation  T    011RLL""2& 2RZZ?	@ 21    A--A=	c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzUurllib.parse.splithost() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r!  rA   r  r  r  s   & rQ   test_splithost_deprecation*DeprecationTest.test_splithost_deprecation  r  r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzUurllib.parse.splituser() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r$  rA   r  r  r  s   & rQ   test_splituser_deprecation*DeprecationTest.test_splituser_deprecation  r  r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzWurllib.parse.splitpasswd() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r)  rA   r  r  r  s   & rQ   test_splitpasswd_deprecation,DeprecationTest.test_splitpasswd_deprecation  sT    011RLL$$R( 2RZZ?	@ 21r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzUurllib.parse.splitport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r"  rA   r  r  r  s   & rQ   test_splitport_deprecation*DeprecationTest.test_splitport_deprecation  r  r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzVurllib.parse.splitnport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r&  rA   r  r  r  s   & rQ   test_splitnport_deprecation+DeprecationTest.test_splitnport_deprecation  T    011RLL##B' 2RZZ?	@ 21r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzVurllib.parse.splitquery() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r'  rA   r  r  r  s   & rQ   test_splitquery_deprecation+DeprecationTest.test_splitquery_deprecation  r  r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzTurllib.parse.splittag() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r  rA   r  r  r  s   & rQ   test_splittag_deprecation)DeprecationTest.test_splittag_deprecation  sT    011RLL!!"% 2RZZ?	@ 21r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzUurllib.parse.splitattr() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r  r  r5   r6   r  rA   r  r  r  s   & rQ   test_splitattr_deprecation*DeprecationTest.test_splitattr_deprecation  r  r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   NzWurllib.parse.splitvalue() is deprecated as of 3.8, use urllib.parse.parse_qsl() instead)r  r  r5   r6   r(  rA   r  r  r  s   & rQ   test_splitvalue_deprecation+DeprecationTest.test_splitvalue_deprecation  sU    011RLL##B' 2RZZ@	A 21r  c                    V P                  \        4      ;_uu_ 4       p\        P                  P	                  R 4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r   Nz/urllib.parse.to_bytes() is deprecated as of 3.8)r  r  r5   r6   r   rA   r  r  r  s   & rQ   test_to_bytes_deprecation)DeprecationTest.test_to_bytes_deprecation  sR    011RLL!!"% 2RZZJ	L 21r  r  N)r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  s   @rQ   r  r    sM     @@@@@@@@@AL Lr   r  c                 $    V P                  R 4      # )ry   )r|   )ss   &rQ   ri   ri     s    88Gr   c                 Z    \         ;QJ d    . R  V  4       F  NK  	  5# ! R  V  4       4      # )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir4   )ri   ).0r  s   & rQ   	<genexpr>tuple_encode.<locals>.<genexpr>  s     *1As   )tuple)rN   s   &rQ   rj   rj     s$    5**5*5****r   __main__)r   r   )r   r	   )r	   r   )r	   r
   )r   r   r  )r   r   )r	   r   r  r  r  r  )r   r   )r   r   )r   r   )r   r   )r   r   r  )r   r   )r   r   r  r  r  r  )r#   r   )r	   r%   )r'   r   )r   r)   )r*   r+   )r,   r,   )r-   r.   )r/   r0   )r9  r;  unittesturllib.parser5   testr   r   r   r   r   r  r  TestCaser2   r  r  ri   rj   r  mainr  r   rQ   <module>r     s   
    %##
)H)"I) 
2J) 	8*	)
 
I;) 	9+) 
I;) |n) ) Z()) >"#) j\) \<01) Z()) 	"I)  
2J!)" BK#)$ 
J<%)& [M')( 
K=))* [M+),  -). .!"/)0 ,-.1)2 $%&3)4 |n5)6 nn567)8 ,-.9): k];)< '()=)> }o?)@ *+,A)D '()E)F )*+G)H %&'I)J 678K)L 234M)N &'(O)P $%&Q) \*H*"I* 
2J* 	2t*	*
 
B;* 	3+* 
C";* sUGn* * seS3%()* 3	"#* cC5\* S5'301* sCj!"* 	"I*  
2J!*" BK#*$ 
C#<%*& S4&M'*( 
D3%=)** TC5M+*, vh -*. &4&!"/*0 $tf-.1*2 D8*%&3*4 tdVn5*6 dVHdVH567*8 $t%&9*: dSE];*< S;-()=*> utfo?*@ d\?+,A*B 0123C*F Xx()G*H x&*+I*J H:&'K*L K+78M*N k]34O*P GgY'(Q*R 'G9%&S* XM7x(( M7^,V4H%% V4rKLh'' KL\+ zMMO r   