ó {G_Tc@s?ddlmZddlZddlZdZdZdZdZdgfdgfdgfd ddfgfd dd fgfd d dfgfd d dfgfd d dfgfd d dfgfdd dfddfgfdd dfd dfgfg Zdej fd„ƒYZ d„Z e dkr;e ƒndS(iÿÿÿÿ(t test_supportNshttp://a/b/c/d;p?q#fshttp://a/b/c/d;p?qshttp://a/b/c/dtt&s&&t=s=atasa=s&a=btbs a=a+b&b=b+csa bsb csa=1&a=2t1t2tUrlParseTestCasecBs×eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs>tj|ƒ}|j||ƒ|j|j|j|j|j|jf}|j||ƒtj|ƒ}|j||ƒ|j||j ƒƒtj|j ƒƒ}|j|j ƒ|j ƒƒ|j||ƒ|j|j|jƒ|j|j|jƒ|j|j|jƒ|j|j|jƒ|j|j|jƒ|j|j|jƒ|j|j |j ƒ|j|j |j ƒ|j|j |j ƒ|j|j |j ƒtj|ƒ}|j||ƒ|j|j|j|j|jf}|j||ƒtj|ƒ}|j||ƒ|j||j ƒƒtj|j ƒƒ}|j|j ƒ|j ƒƒ|j||ƒ|j|j|jƒ|j|j|jƒ|j|j|jƒ|j|j|jƒ|j|j|jƒ|j|j |j ƒ|j|j |j ƒ|j|j |j ƒ|j|j |j ƒdS(N(turlparset assertEqualtschemetnetloctpathtparamstquerytfragmentt urlunparsetgeturltusernametpasswordthostnametportturlsplitt urlunsplit(tselfturltparsedtsplittresulttttresult2tresult3((s./usr/local/lib/python2.7/test/test_urlparse.pytcheckRoundtripssRcCsœx•tD]\}}tj|dtƒ}|j||d|ƒg|D]}t|dƒrF|^qF}tj|dtƒ}|j||d|ƒqWdS(Ntkeep_blank_valuessError parsing %ri(tparse_qsl_test_casesR t parse_qsltTrueR tlentFalse(RtorigtexpectRtvtexpect_without_blanks((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_qslPs) c Csdddfdddfd ddfd dd fdd!d"fdd#d$fg}x*|D]"\}}}|j|||ƒqUWdS(%Nsfile:///tmp/junk.txttfileRs /tmp/junk.txtsimap://mail.python.org/mbox1timapsmail.python.orgs/mbox1s1mms://wms.sys.hinet.net/cts/Drama/09006251100.asftmmsswms.sys.hinet.nets/cts/Drama/09006251100.asfsnfs://server/path/to/file.txttnfstservers/path/to/file.txts0svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/ssvn+sshs svn.zope.orgs/repos/main/ZConfig/trunk/s)git+ssh://git@github.com/user/project.gitsgit+sshsgit@github.coms/user/project.git(sfileRs /tmp/junk.txtRRR(sfileRs /tmp/junk.txtRR(R.smail.python.orgs/mbox1RRR(R.smail.python.orgs/mbox1RR(R/swms.sys.hinet.nets/cts/Drama/09006251100.asfRRR(R/swms.sys.hinet.nets/cts/Drama/09006251100.asfRR(R0R1s/path/to/file.txtRRR(R0R1s/path/to/file.txtRR(ssvn+sshs svn.zope.orgs/repos/main/ZConfig/trunk/RRR(ssvn+sshs svn.zope.orgs/repos/main/ZConfig/trunk/RR(sgit+sshsgit@github.coms/user/project.gitRRR(sgit+sshsgit@github.coms/user/project.gitRR(R!(Rt testcasesRRR((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_roundtripsZs4 c Cs¨dddfdddfdddfdddfd ddfg}x_dD]W}xN|D]F\}}}||}|f|}|f|}|j|||ƒqVWqIWdS(Ns://www.python.orgswww.python.orgRs://www.python.org#abctabcs://www.python.org?q=abcsq=abcs://www.python.org/#abct/s://a/b/c/d;p?q#fRs/b/c/dtptqtfs/b/c/d;pthttpthttps(swww.python.orgRRRR(swww.python.orgRRR(swww.python.orgRRRsabc(swww.python.orgRRsabc(swww.python.orgRRsq=abcR(swww.python.orgRsq=abcR(swww.python.orgR5RRsabc(swww.python.orgR5Rsabc(Rs/b/c/dR6R7R8(Rs/b/c/d;pR7R8(R9R:(R!(RR2R RRR((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_http_roundtripsxs*     cCs,|jtj||ƒ||||fƒdS(N(R R turljoin(Rtbasetrelurltexpected((s./usr/local/lib/python2.7/test/test_urlparse.pyt checkJoin”scCsnxgdddddddgD]J}|jtjtj|ƒƒ|ƒ|jtjtj|ƒƒ|ƒqWdS(NtPythons./Pythonsx-newscheme://foo.com/stuffsx://ysx:/ysx:/R5(R R RRR(Rtu((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_unparse_parse˜s""cCs|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtd d ƒ|jtd d ƒ|jtd dƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtd dƒ|jtd!d"ƒ|jtd#d$ƒ|jtd%d$ƒ|jtd&dƒ|jtd'd(ƒ|jtd)d*ƒ|jtd+d,ƒ|jtd-d.ƒ|jtd/d*ƒ|jtd0d1ƒ|jtd2d3ƒ|jtd4d5ƒ|jtd6d7ƒ|jtd8d"ƒ|jtd9dƒ|jtd:d;ƒ|jtd<d=ƒdS(>Nsg:htgshttp://a/b/c/gs./gsg/shttp://a/b/c/g/s/gs http://a/gs//gshttp://gsg?yshttp://a/b/c/g?ysg?y/./xshttp://a/b/c/g?y/./xs#sshttp://a/b/c/d;p?q#ssg#sshttp://a/b/c/g#ssg#s/./xshttp://a/b/c/g#s/./xsg?y#sshttp://a/b/c/g?y#ssg;xshttp://a/b/c/g;xsg;x?y#sshttp://a/b/c/g;x?y#st.s http://a/b/c/s./s..s http://a/b/s../s../gs http://a/b/gs../..s http://a/s../../s../../gRshttp://a/b/c/d;p?q#fs ../../../gs http://a/../gs ../../../../gshttp://a/../../gs/./gs http://a/./gs/../gsg.shttp://a/b/c/g.s.gshttp://a/b/c/.gsg..shttp://a/b/c/g..s..gshttp://a/b/c/..gs./../gs./g/.sg/./hshttp://a/b/c/g/hsg/../hshttp://a/b/c/h(R@t RFC1808_BASE(R((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_RFC1808sFcCs|jtjdƒdƒdS(Nsmailto:1337@example.orgtmailtoRs1337@example.org(RHRs1337@example.orgRRR(R R (R((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_RFC2368ÊscCsé|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtd d ƒ|jtd d ƒ|jtd dƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtdd ƒ|jtd!d ƒ|jtd"dƒ|jtd#tƒ|jtd$d%ƒ|jtd&d'ƒ|jtd(d)ƒ|jtd*d%ƒ|jtd+d,ƒ|jtd-d.ƒ|jtd/d0ƒ|jtd1d2ƒ|jtd3dƒ|jtd4dƒ|jtd5d6ƒ|jtd7d8ƒ|jtd9d:ƒ|jtd;d<ƒ|jtd=d>ƒ|jtd?d@ƒ|jtdAdBƒ|jtdCdDƒdS(ENsg:hRDshttp://a/b/c/gs./gsg/shttp://a/b/c/g/s/gs http://a/gs//gshttp://gsg?yshttp://a/b/c/g?ys#sshttp://a/b/c/d;p?q#ssg#sshttp://a/b/c/g#ssg?y#sshttp://a/b/c/g?y#ssg;xshttp://a/b/c/g;xsg;x?y#sshttp://a/b/c/g;x?y#sREs http://a/b/c/s./s..s http://a/b/s../s../gs http://a/b/gs../..s http://a/s../../s../../gRs ../../../gs http://a/../gs ../../../../gshttp://a/../../gs/./gs http://a/./gs/../gsg.shttp://a/b/c/g.s.gshttp://a/b/c/.gsg..shttp://a/b/c/g..s..gshttp://a/b/c/..gs./../gs./g/.sg/./hshttp://a/b/c/g/hsg/../hshttp://a/b/c/hs g;x=1/./yshttp://a/b/c/g;x=1/ys g;x=1/../yshttp://a/b/c/ysg?y/./xshttp://a/b/c/g?y/./xsg?y/../xshttp://a/b/c/g?y/../xsg#s/./xshttp://a/b/c/g#s/./xsg#s/../xshttp://a/b/c/g#s/../x(R@t RFC2396_BASE(R((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_RFC2396ÏsNcCs|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtd d ƒ|jtd d ƒ|jtd dƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtd d!ƒ|jtd"d!ƒ|jtd#d$ƒ|jtd%d&ƒ|jtd'd&ƒ|jtd(d ƒ|jtd)d*ƒ|jtd+d,ƒ|jtd-d.ƒ|jtd/d0ƒ|jtd1d$ƒ|jtd2d ƒ|jtd3d4ƒ|jtd5d6ƒ|jtd7d8ƒ|jtd9d:ƒ|jtd;d<ƒ|jtd=d>ƒ|jtd?d@ƒ|jtdAdBƒ|jtdCdƒ|jdDddƒdS(ENs?yshttp://a/b/c/d;p?ys;xshttp://a/b/c/;xsg:hRDshttp://a/b/c/gs./gsg/shttp://a/b/c/g/s/gs http://a/gs//gshttp://gsg?yshttp://a/b/c/g?ys#sshttp://a/b/c/d;p?q#ssg#sshttp://a/b/c/g#ssg?y#sshttp://a/b/c/g?y#ssg;xshttp://a/b/c/g;xsg;x?y#sshttp://a/b/c/g;x?y#sRshttp://a/b/c/d;p?qREs http://a/b/c/s./s..s http://a/b/s../s../gs http://a/b/gs../..s http://a/s../../s../../gsg.shttp://a/b/c/g.s.gshttp://a/b/c/.gsg..shttp://a/b/c/g..s..gshttp://a/b/c/..gs./../gs./g/.sg/./hshttp://a/b/c/g/hsg/../hshttp://a/b/c/hs g;x=1/./yshttp://a/b/c/g;x=1/ys g;x=1/../yshttp://a/b/c/ysg?y/./xshttp://a/b/c/g?y/./xsg?y/../xshttp://a/b/c/g?y/../xsg#s/./xshttp://a/b/c/g#s/./xsg#s/../xshttp://a/b/c/g#s/../xshttp:gshttp://a/b/c/de(R@t RFC3986_BASERJ(R((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_RFC3986ùsR cCsŠ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtdd ƒ|jtd d ƒ|jtd d ƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtddƒ|jtdd ƒ|jtdd ƒ|jtd!dƒ|jtd"d ƒ|jtd#d$ƒ|jtd%d&ƒ|jtd'd(ƒ|jtddƒ|jtddƒ|jtd)dƒ|jtd*dƒ|jtd+dƒ|jd,dd,ƒ|jd-ddƒ|jd-d$d$ƒ|jd.d/d0ƒ|jd1d/d2ƒdS(3Nsg:hshttp:gshttp://a/b/c/gshttp:shttp://a/b/c/dRDs./gsg/shttp://a/b/c/g/s/gs http://a/gs//gshttp://gs?yshttp://a/b/c/d?ysg?yshttp://a/b/c/g?ysg?y/./xshttp://a/b/c/g?y/./xREs http://a/b/c/s./s..s http://a/b/s../s../gs http://a/b/gs../..s http://a/s../../gs ../../../gs http://a/../gs./../gs./g/.s/./gs http://a/./gsg/./hshttp://a/b/c/g/hsg/../hshttp://a/b/c/hshttp:?yshttp:g?ys http:g?y/./xshttp:///Rssvn://pathtorepo/dir1tdir2ssvn://pathtorepo/dir2ssvn+ssh://pathtorepo/dir1ssvn+ssh://pathtorepo/dir2(R@t SIMPLE_BASE(R((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_urljoins3sDcCsÍxd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>gD]@\}}}tj|ƒ}|j|j|jf||fƒqOWx3d"d#d$d%d&gD]}|jttj|ƒq©WdS(?Ns http://Test.python.org:5432/foo/stest.python.orgi8shttp://12.34.56.78:5432/foo/s 12.34.56.78shttp://[::1]:5432/foo/s::1shttp://[dead:beef::1]:5432/foo/s dead:beef::1shttp://[dead:beef::]:5432/foo/s dead:beef::s:http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/s'dead:beef:cafe:5417:affe:8fa3:deaf:feeds http://[::12.34.56.78]:5432/foo/s ::12.34.56.78s%http://[::ffff:12.34.56.78]:5432/foo/s::ffff:12.34.56.78shttp://Test.python.org/foo/shttp://12.34.56.78/foo/shttp://[::1]/foo/shttp://[dead:beef::1]/foo/shttp://[dead:beef::]/foo/s5http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/shttp://[::12.34.56.78]/foo/s http://[::ffff:12.34.56.78]/foo/shttp://Test.python.org:/foo/shttp://12.34.56.78:/foo/shttp://[::1]:/foo/shttp://[dead:beef::1]:/foo/shttp://[dead:beef::]:/foo/s6http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:/foo/shttp://[::12.34.56.78]:/foo/s!http://[::ffff:12.34.56.78]:/foo/shttp://::12.34.56.78]/shttp://[::1/foo/sftp://[::1/foo/bad]/badshttp://[::1/foo/bad]/badshttp://[::ffff:12.34.56.78(s http://Test.python.org:5432/foo/stest.python.orgi8(shttp://12.34.56.78:5432/foo/s 12.34.56.78i8(shttp://[::1]:5432/foo/s::1i8(shttp://[dead:beef::1]:5432/foo/s dead:beef::1i8(shttp://[dead:beef::]:5432/foo/s dead:beef::i8(s:http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/s'dead:beef:cafe:5417:affe:8fa3:deaf:feedi8(s http://[::12.34.56.78]:5432/foo/s ::12.34.56.78i8(s%http://[::ffff:12.34.56.78]:5432/foo/s::ffff:12.34.56.78i8(shttp://Test.python.org/foo/stest.python.orgN(shttp://12.34.56.78/foo/s 12.34.56.78N(shttp://[::1]/foo/s::1N(shttp://[dead:beef::1]/foo/s dead:beef::1N(shttp://[dead:beef::]/foo/s dead:beef::N(s5http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/s'dead:beef:cafe:5417:affe:8fa3:deaf:feedN(shttp://[::12.34.56.78]/foo/s ::12.34.56.78N(s http://[::ffff:12.34.56.78]/foo/s::ffff:12.34.56.78N(shttp://Test.python.org:/foo/stest.python.orgN(shttp://12.34.56.78:/foo/s 12.34.56.78N(shttp://[::1]:/foo/s::1N(shttp://[dead:beef::1]:/foo/s dead:beef::1N(shttp://[dead:beef::]:/foo/s dead:beef::N(s6http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:/foo/s'dead:beef:cafe:5417:affe:8fa3:deaf:feedN(shttp://[::12.34.56.78]:/foo/s ::12.34.56.78N(s!http://[::ffff:12.34.56.78]:/foo/s::ffff:12.34.56.78N(tNoneR R RRt assertRaisest ValueError(RRRRt urlparsedt invalid_url((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_RFC2732WsP& c Csmxfddddddddtd d ftd dfg D].\}}}|jtj|ƒ||fƒq7WdS(Nshttp://python.org#fragshttp://python.orgtfragRshttp://python.org/#fragshttp://python.org/shttp://python.org/?q#fragshttp://python.org/?qshttp://python.org/p#fragshttp://python.org/pshttp://python.org/p?qshttp://a/b/c/d;p?qR8(shttp://python.org#fragshttp://python.orgsfrag(shttp://python.orgshttp://python.orgR(shttp://python.org/#fragshttp://python.org/sfrag(shttp://python.org/shttp://python.org/R(shttp://python.org/?q#fragshttp://python.org/?qsfrag(shttp://python.org/?qshttp://python.org/?qR(shttp://python.org/p#fragshttp://python.org/psfrag(shttp://python.org/p?qshttp://python.org/p?qR(RFRJR R t urldefrag(RRtdefragRW((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_urldefragƒs cCs˜d}tj|ƒ}|j|jdƒ|j|jdƒ|j|jdƒ|j|jdƒ|j|jdƒ|j|jdƒ|j|j dƒ|j|j dƒ|j|j dƒd}tj|ƒ}|j|jdƒ|j|jd ƒ|j|jdƒ|j|jd ƒ|j|jdƒ|j|jd ƒ|j|j d ƒ|j|j dƒ|j|j d ƒ|j|j ƒ|ƒd}tj|ƒ}|j|jdƒ|j|jdƒ|j|jdƒ|j|jd ƒ|j|jdƒ|j|jdƒ|j|j d ƒ|j|j dƒ|j|j d ƒ|j|j ƒ|ƒd}tj|ƒ}|j|j dƒdS(NsHTTP://WWW.PYTHON.ORG/doc/#fragR9sWWW.PYTHON.ORGs/doc/RRWswww.python.orgs7http://User:Pass@www.python.org:080/doc/?query=yes#fragsUser:Pass@www.python.org:080s query=yestUsertPassiPsChttp://User@example.com:Pass@www.python.org:080/doc/?query=yes#frags(User@example.com:Pass@www.python.org:080sUser@example.comshttp://www.python.org:65536(R RR R R R RRRRQRRRR(RRR6((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_urlsplit_attributes’sLcCsØtjdƒ}|j|jdƒ|j|jdƒtjdƒ}|j|jdƒ|j|jdƒtjdƒ}|j|jdƒ|j|jdƒtjdƒ}|j|jdƒ|j|jdƒdS(Nstel:+31-641044153ttels +31-641044153stel:+31641044153s +31641044153(R RR R R (Rtp1tp2((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_issue14072ÅscCs$tjdƒ}|j|jdƒ|j|jdƒ|j|jdƒtjdƒ}|j|jdƒ|j|jdƒ|j|jdƒtjdƒ}|j|jdƒ|j|jd ƒ|j|jd ƒtjd ƒ}|j|jdƒ|j|jd ƒ|j|jd ƒdS(Ns"tel:123-4;phone-context=+1-650-516R^s123-4sphone-context=+1-650-516stel:+1-201-555-0123s+1-201-555-0123Rs"tel:7042;phone-context=example.comt7042sphone-context=example.coms%tel:863-1234;phone-context=+1-914-555s863-1234sphone-context=+1-914-555(R R R R R(RR_((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_telurl_paramsØs csztjdƒ‰|jˆjdƒ|jt‡fd†ƒtjdƒ‰|jˆjdƒ|jt‡fd†ƒdS(s$Check handling of non-integer ports.shttp://www.example.net:fooswww.example.net:foocsˆjS(N(R((R6(s./usr/local/lib/python2.7/test/test_urlparse.pytòscsˆjS(N(R((R6(s./usr/local/lib/python2.7/test/test_urlparse.pyRdösN(R RR R RRRS(R((R6s./usr/local/lib/python2.7/test/test_urlparse.pyttest_attributes_bad_portîs cCsd}tj|ƒ}|j|jdƒ|j|jdƒ|j|jdƒ|j|jdƒ|j|jdƒ|j|j ƒ|ƒtj|ƒ}|j|jdƒ|j|jdƒ|j|jdƒ|j|jdƒ|j|jdƒ|j|j ƒ|ƒdS(Ns0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15R( R RR R RRQRRRR(RturiR6((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_attributes_without_netlocøscCsd}t|ƒ}tj|ƒtj|ƒ}|jt|jƒt|ƒƒ|jt|jƒt|ƒƒ|jt|jƒt|ƒƒdS(Nshttp://example.com/doc/(tunicodeR R ttypeR RR (RRft unicode_uriR6((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_cachings  cCs|jtjdƒdƒdS(Ns http://example.com?blahblah=/fooR9s example.comRs blahblah=/foo(shttps example.comRRs blahblah=/fooR(R R (R((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_noslashscCsh|jtjdƒd ƒ|jtjdƒd ƒ|jtjdƒdƒ|jtjd ƒdƒdS(Nss3://foo.com/stuffts3sfoo.coms/stuffRsx-newscheme://foo.com/stuffs x-newschemes*x-newscheme://foo.com/stuff?query#fragmentRRs!x-newscheme://foo.com/stuff?query(Rmsfoo.coms/stuffRRR(s x-newschemesfoo.coms/stuffRRR(s x-newschemesfoo.coms/stuffRsquerysfragment(s x-newschemesfoo.coms/stuffRsqueryR(R R (R((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_anyschemescCsO|jtjdƒdƒ|jtjdƒdƒ|jtjdƒd ƒdS( NR Rs//www.python.org:80swww.python.org:80shttp://www.python.org:80R9(RRspathRRR(Rswww.python.org:80RRRR(shttpswww.python.org:80RRRR(R R (R((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_withoutscheme*s cCsh|jtjdƒd ƒ|jtjdƒd ƒ|jtjdƒd ƒ|jtjdƒd ƒdS( Nspath:80Rshttp:R9shttps:R:shttp://www.python.org:80swww.python.org:80(RRspath:80RRR(shttpRRRRR(shttpsRRRRR(shttpswww.python.org:80RRRR(R R (R((s./usr/local/lib/python2.7/test/test_urlparse.pyttest_portseparator6s (t__name__t __module__R!R,R3R;R@RCRGRIRKRMRPRVRZR]RaRcReRgRkRlRnRoRp(((s./usr/local/lib/python2.7/test/test_urlparse.pyRs. 3     -  * : $ ,  3     cCstjtƒdS(N(Rt run_unittestR(((s./usr/local/lib/python2.7/test/test_urlparse.pyt test_main?st__main__( ttestRtunittestR RFRJRLROR#tTestCaseRRtRq(((s./usr/local/lib/python2.7/test/test_urlparse.pyts.     !ÿÿ&