Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.10/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.10/test/__pycache__/test_urlparse.cpython-310.pyc
o

�9j/ �@sLddlZddlZddlZddlZdZdZdZdZdgfdgfdgfdd	gfd
dgfdd
gfdd
gfddgfdddgfdddgfdgfdgfdgfddgfddgfddgfd dgfd!d"gfd#d$d%gfd&d'd(gfd)d*gfd+d,gfd-d.gfd/d0gfgZ	difdifdifdddgifd
ddgifdddgifdddgifddd1gifdd2gd3gd�fddd4d5gifdifdifdifdddgifdddgifdddgifd ddgifd!dd6gifd#d7gd8gd"�fd&dd9d:gifd)d;d1gifd+dd<gifd-d=d6gifd/dd>gifgZ
Gd?d@�d@ej�ZGdAdB�dBej�Z
GdCdD�dDej�ZedEk�r$e��dSdS)F�N�http://a/b/c/d;p?q#f�http://a/b/c/d;p?q�http://a/b/c/d��&z&&�=)rrz=a)r�ar)rrza=z&a=b�r�bza=a+b&b=b+c�r�a b�r
�b cza=1&a=2�r�1�r�2��&s&&�=)rrs=a)r�ar)rrsa=s&a=b�r�bsa=a+b&b=b+c�r�a b�r�b csa=1&a=2�r�1�r�2�;a=b)�;ar
�a=a+b;b=b+c)r�	a b;b=b c�;a=b)�;ar�a=a+b;b=b+c)r�	a b;b=b cr
rrrrrrrrr r"r$r&r(c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2daS)b�UrlParseTestCasecCs`tj�|�}|�||�|j|j|j|j|j|j	f}|�||�tj�
|�}|�||�|�||���tj�|���}|�|��|���|�||�|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j	|j	�|�|j|j�|�|j
|j
�|�|j|j�|�|j|j�tj�|�}|�||�|j|j|j|j|j	f}|�||�tj�|�}|�||�|�||���tj�|���}|�|��|���|�||�|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j	|j	�|�|j|j�|�|j
|j
�|�|j|j�|�|j|j�dS�N)�urllib�parse�urlparse�assertEqual�scheme�netloc�path�params�query�fragment�
urlunparse�geturl�username�password�hostname�port�urlsplit�
urlunsplit)�self�url�parsed�split�result�t�result2�result3�rE�)/usr/lib/python3.10/test/test_urlparse.py�checkRoundtripsIsV��z UrlParseTestCase.checkRoundtripscCsdtD]-\}}tjj|dd�}|�||d|�dd�|D�}tjj|dd�}|�||d|�qdS)NT��keep_blank_values�Error parsing %rcSsg|]
}t|d�r|�qS)���len��.0�vrErErF�
<listcomp>�sz-UrlParseTestCase.test_qsl.<locals>.<listcomp>F)�parse_qsl_test_casesr+r,�	parse_qslr.)r=�orig�expectrA�expect_without_blanksrErErF�test_qsl|s��zUrlParseTestCase.test_qslcshtD]/\}�tjj|dd�}|�|�d|��fdd��D�}tjj|dd�}|�||d|�qdS)NTrHrJcs&i|]}t�|d�r|�|�qS)rrLrN�rUrErF�
<dictcomp>�s�z,UrlParseTestCase.test_qs.<locals>.<dictcomp>F)�parse_qs_test_casesr+r,�parse_qsr.)r=rTrArVrErXrF�test_qs�s
���zUrlParseTestCase.test_qscsHgd�}dd���fdd�|D�}||D]\}}}|�|||�qdS)N))zfile:///tmp/junk.txt)�filer�
/tmp/junk.txtrrr)r]rr^rr)zimap://mail.python.org/mbox1)�imap�mail.python.org�/mbox1rrr)r_r`rarr)z1mms://wms.sys.hinet.net/cts/Drama/09006251100.asf)�mms�wms.sys.hinet.net�/cts/Drama/09006251100.asfrrr)rbrcrdrr)znfs://server/path/to/file.txt)�nfs�server�/path/to/file.txtrrr)rerfrgrr)z0svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/)�svn+ssh�svn.zope.org�/repos/main/ZConfig/trunk/rrr)rhrirjrr)z)git+ssh://git@github.com/user/project.git)�git+ssh�git@github.com�/user/project.gitrrr)rkrlrmrrcS�8|d�d�tdd�|dD��tdd�|dD��fS)Nr�asciics��|]}|�d�VqdS�roN��encode�rO�xrErErF�	<genexpr>���zDUrlParseTestCase.test_roundtrips.<locals>._encode.<locals>.<genexpr>rKcsrprqrrrtrErErFrv�rw��rs�tuple�rBrErErF�_encode���z1UrlParseTestCase.test_roundtrips.<locals>._encodec�g|]}�|��qSrErErt�r|rErFrQ��z4UrlParseTestCase.test_roundtrips.<locals>.<listcomp>�rG)r=�	str_cases�bytes_casesr>r?r@rErrF�test_roundtrips�s�z UrlParseTestCase.test_roundtripsc
s�gd�}dd���fdd�|D�}d}d}||f}||f}||fD]&\}}|D]}	|D]\}
}}|	|
}
|	f|}|	f|}|�|
||�q+q'q!dS)N))z://www.python.org)�www.python.orgrrrr)r�rrr)z://www.python.org#abc)r�rrr�abc)r�rrr�)z://www.python.org?q=abc)r�rr�q=abcr)r�rr�r)z://www.python.org/#abc)r��/rrr�)r�r�rr�)z://a/b/c/d;p?q#f)rz/b/c/d�p�q�f)rz/b/c/d;pr�r�cSrn)NrrocsrprqrrrtrErErFrv�rwzIUrlParseTestCase.test_http_roundtrips.<locals>._encode.<locals>.<genexpr>rKcsrprqrrrtrErErFrv�rwrxryr{rErErFr|�r}z6UrlParseTestCase.test_http_roundtrips.<locals>._encodecr~rErErtrrErFrQ�r�z9UrlParseTestCase.test_http_roundtrips.<locals>.<listcomp>)�http�https)�http�httpsr�)
r=r�r��str_schemes�
bytes_schemes�	str_tests�bytes_tests�schemes�
test_casesr/r>r?r@rErrF�test_http_roundtrips�s"

���z%UrlParseTestCase.test_http_roundtripsc	CsR|||f}|�tj�||�|�dd�|D�}\}}}|�tj�||�|�dS)NcS�g|]}|�d��qS�rorrrtrErErFrQ�s
�z.UrlParseTestCase.checkJoin.<locals>.<listcomp>)r.r+r,�urljoin)	r=�base�relurl�expected�str_components�bytes_components�baseb�relurlb�	expectedbrErErF�	checkJoin�s
�zUrlParseTestCase.checkJoincCs`gd�}dd�|D�}||D]}|�tj�tj�|��|�|�tj�tj�|��|�qdS)N)�Pythonz./Python�x-newscheme://foo.com/stuffzx://yzx:/yzx:/r�cSr�r�rrrtrErErFrQ��z7UrlParseTestCase.test_unparse_parse.<locals>.<listcomp>)r.r+r,r<r;r5r-)r=r�r��urErErF�test_unparse_parse�s�z#UrlParseTestCase.test_unparse_parsecCs�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�td	d
�|�tdd�|�td
d�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�td d�|�td!d"�|�td#d$�|�td%d$�|�td&d�|�td'd(�|�td)d*�|�td+d,�|�td-d.�|�td/d0�|�td1d"�|�td2d�|�td3d4�|�td5d6�dS)7N�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/�../../�../../grr�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/h)r��RFC1808_BASE�r=rErErF�test_RFC1808�s>zUrlParseTestCase.test_RFC1808cCs|�tj�d�d�dS)Nzmailto:1337@example.org)�mailtorz1337@example.orgrrr�r.r+r,r-r�rErErF�test_RFC2368s�zUrlParseTestCase.test_RFC2368cCs�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�td	d
�|�tdd�|�td
d�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd �|�td!d �|�td"d�|�td#t�|�td$d%�|�td&d'�|�td(d)�|�td*d+�|�td,d�|�td-d�|�td.d/�|�td0d1�|�td2d3�|�td4d5�|�td6d7�|�td8d9�|�td:d;�|�td<d=�dS)>Nr�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�rr�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/../x)r��RFC2396_BASEr�rErErF�test_RFC2396sFzUrlParseTestCase.test_RFC2396cCs�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�td	d
�|�tdd�|�td
d�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�td d!�|�td"d!�|�td#d$�|�td%d&�|�td'd&�|�td(d�|�td)d�|�td)d�|�td*d�|�td+d�|�td,d�|�td-d.�|�td/d0�|�td1d2�|�td3d4�|�td5d$�|�td6d
�|�td7d8�|�td9d:�|�td;d<�|�td=d>�|�td?d@�|�tdAdB�|�tdCdD�|�tdEdF�|�tdGd�|�dHdd�dS)IN�?yzhttp://a/b/c/d;p?yz;xzhttp://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�rrr�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:gzhttp://a/b/c/de)r��RFC3986_BASEr�rErErF�test_RFC3986Hs\zUrlParseTestCase.test_RFC3986cCsX|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd	�|�td
d�|�tdd
�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�tdd�|�td d	�|�td!d"�|�td#d$�|�tdd�|�tdd�|�td%d�|�td&d�|�td'd�|�d(dd(�|�d)dd�|�d)d*d*�|�d+d,d-�|�d.d,d/�|�d0dd1�|�d2dd3�|�td4d5td6�|�d7d8d9�|�d:d8d;�|�d7d<d=�|�d:d<d=�|�d7d>d?�|�dd8d=�|�d@dAdA�dS)BNr�r�r��http:rr�r�r�r�r�r�r�r�r�zhttp://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�zhttp:?yzhttp:g?yzhttp:g?y/./xzhttp:///rzhttp://a/./gzsvn://pathtorepo/dir1�dir2zsvn://pathtorepo/dir2zsvn+ssh://pathtorepo/dir1zsvn+ssh://pathtorepo/dir2zws://a/bzws://a/gz	wss://a/bz	wss://a/gr��fooz/foozhttp://a/b/c/d/e/z
../../f/g/zhttp://a/b/c/f/g/zhttp://a/b/c/d/ezhttp://a/b/f/g/z/../../f/g/z
http://a/f/g/z	../../f/gzhttp://a/b/c/f/grr
)r��SIMPLE_BASEr�rErErF�
test_urljoins�sTzUrlParseTestCase.test_urljoinscs�gd�}dd���fdd�|D�}||D]\}}}tj�|�}|�|j|jf||f�qgd�}dd�|D�}||D]}|�ttjj|�q<dS)N))z http://Test.python.org:5432/foo/�test.python.org�8)zhttp://12.34.56.78:5432/foo/�12.34.56.78r�)zhttp://[::1]:5432/foo/�::1r�)zhttp://[dead:beef::1]:5432/foo/�dead:beef::1r�)zhttp://[dead:beef::]:5432/foo/�dead:beef::r�)z:http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/�'dead:beef:cafe:5417:affe:8fa3:deaf:feedr�)z http://[::12.34.56.78]:5432/foo/�
::12.34.56.78r�)z%http://[::ffff:12.34.56.78]:5432/foo/�::ffff:12.34.56.78r�)zhttp://Test.python.org/foo/r�N)zhttp://12.34.56.78/foo/r�N)zhttp://[::1]/foo/r�N)zhttp://[dead:beef::1]/foo/r�N)zhttp://[dead:beef::]/foo/r�N)z5http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/r�N)zhttp://[::12.34.56.78]/foo/r�N)z http://[::ffff:12.34.56.78]/foo/r�N)zhttp://Test.python.org:/foo/r�N)zhttp://12.34.56.78:/foo/r�N)zhttp://[::1]:/foo/r�N)zhttp://[dead:beef::1]:/foo/r�N)zhttp://[dead:beef::]:/foo/r�N)z6http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:/foo/r�N)zhttp://[::12.34.56.78]:/foo/r�N)z!http://[::ffff:12.34.56.78]:/foo/r�NcSs"|d�d�|d�d�|dfS)NrrorKrxrrr{rErErFr|�s"z.UrlParseTestCase.test_RFC2732.<locals>._encodecr~rErErtrrErFrQ�r�z1UrlParseTestCase.test_RFC2732.<locals>.<listcomp>)zhttp://::12.34.56.78]/zhttp://[::1/foo/zftp://[::1/foo/bad]/badzhttp://[::1/foo/bad]/badzhttp://[::ffff:12.34.56.78cSr�r�rrrtrErErFrQ�r�)r+r,r-r.r9r:�assertRaises�
ValueError)r=r�r�r>r9r:�	urlparsed�invalid_urlrErrF�test_RFC2732�s �zUrlParseTestCase.test_RFC2732cs�ddddddddtd	d
ftd	dfg
}dd
���fdd�|D�}||D])\}}}tj�|�}|�|��|�|�|||f�|�|j|�|�|j|�q#dS)N)zhttp://python.org#frag�http://python.org�frag)rrr)zhttp://python.org/#frag�http://python.org/r)rrr)zhttp://python.org/?q#frag�http://python.org/?qr)rrr)zhttp://python.org/p#fragzhttp://python.org/pr)�http://python.org/p?qrrrr�rcSst|�dd�|D��S)NcsrprqrrrtrErErFrv�rwzCUrlParseTestCase.test_urldefrag.<locals>._encode.<locals>.<genexpr>)�typer{rErErFr|�sz0UrlParseTestCase.test_urldefrag.<locals>._encodecr~rErErtrrErFrQ�r�z3UrlParseTestCase.test_urldefrag.<locals>.<listcomp>)	r�r�r+r,�	urldefragr.r6r>r4)r=r�r�r>�defragrrArErrF�test_urldefrag�s(��zUrlParseTestCase.test_urldefragcCsTtj�d�}|�|jd�|�|jd�tj�d�}|�|jd�|�|jd�dS)Nz,http://[FE80::822a:a8ff:fe49:470c%tESt]:1234zfe80::822a:a8ff:fe49:470c%tEStz%[FE80::822a:a8ff:fe49:470c%tESt]:1234s,http://[FE80::822a:a8ff:fe49:470c%tESt]:1234sfe80::822a:a8ff:fe49:470c%tESts%[FE80::822a:a8ff:fe49:470c%tESt]:1234)r+r,r;r.r9r0)r=r�rErErF�test_urlsplit_scoped_IPv6sz*UrlParseTestCase.test_urlsplit_scoped_IPv6cCsd}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|jd�|�|�
�dd�|dd��d	}tj�|�}|�|jd�|�|jd
�|�|jd�|�|jd�|�|jd�|�|j	d�|�|j
d
�|�|jd�|�|jd�|�|�
�|�d}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|j	d�|�|j
d
�|�|jd�|�|jd�|�|�
�|�d}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|jd�|�|�
�dd�|dd��d}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|jd�|�|�
�|�d}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|j	d �|�|j
d�|�|jd�|�|jd�|�|�
�|�d!}tj�|�}|�td"��|jWd�dS1�swYdS)#NzHTTP://WWW.PYTHON.ORG/doc/#fragr�zWWW.PYTHON.ORG�/doc/rrr���7http://User:Pass@www.python.org:080/doc/?query=yes#frag�User:Pass@www.python.org:080�	query=yes�User�Pass�PzChttp://User@example.com:Pass@www.python.org:080/doc/?query=yes#frag�(User@example.com:Pass@www.python.org:080zUser@example.comsHTTP://WWW.PYTHON.ORG/doc/#fragr�sWWW.PYTHON.ORG�/doc/r�frag�www.python.orgs7http://User:Pass@www.python.org:080/doc/?query=yes#frag�User:Pass@www.python.org:080�	query=yes�User�PasssChttp://User@example.com:Pass@www.python.org:080/doc/?query=yes#frags(User@example.com:Pass@www.python.org:080sUser@example.coms%HTTP://WWW.PYTHON.ORG:65536/doc/#fragzout of range)r+r,r;r.r/r0r1r3r4r7r8r9r:r6�assertRaisesRegexr�)r=r>r�rErErF�test_urlsplit_attributes
s�  $�z)UrlParseTestCase.test_urlsplit_attributescCs�d}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|jd�|�|�
�d�d}tj�|�}|�|jd	�|�|jd
�|�|jd�|�|jd�|�|jd
�|�|j	d�|�|j
d�|�|jd
�|�|jd�|�|�
�d�d}d}td�D]}tjj||d�}|�|jd�|�|�
�d�q�dS)NzQhttp	://www.python
.org	/java
script:	alert('msg
')/?query
=	something#frag
mentr�r�z/javascript:alert('msg')/zquery=somethingr4zGhttp://www.python.org/javascript:alert('msg')/?query=something#fragmentsQhttp	://www.python
.org	/java
script:	alert('msg
')/?query
=	something#frag
mentr�rs/javascript:alert('msg')/squery=something�fragmentsGhttp://www.python.org/javascript:alert('msg')/?query=something#fragmentzNhttp://www.python.org/java
script:	alert('msg
')/?query
=	something#frag
mentzht
tprx�r/)r+r,r;r.r/r0r1r3r4r7r8r9r:r6�range)r=r>r�r/�_rErErF�!test_urlsplit_remove_unsafe_bytesgs>�z2UrlParseTestCase.test_urlsplit_remove_unsafe_bytescCsVttdd��}d}|�d�|}tj�|�}|�|jd�|�|jd�|�|j	d�|�|j
d�|�|jd	�|�|jd
�|�|j
d�|�|jd�|�|jd
�|�|��|�||�d�}tj�|�}|�|jd�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|jd�|�|j
d�|�|jd�|�|jd
�|�|��|�d��d}tj�|�d�|�}|�|jd�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|��|�tj�d�}|�tj�|�d�d}|�d�d|�d�}td�D]}tjj||d�}|�|jd�|�|��d��qdS) Nr�!r�utf-8r�rr
rrrrr�rr�rrrrrrrz)https://www.python.org:88/doc/?query=    r�zwww.python.org:88z
query=    �Xz
www.pypi.org z//www.python.org/rxr zhttps://www.python.org/)�bytesr!�decoder+r,r;r.r/r0r1r3r4r7r8r9r:r6rsr<)r=�noise�base_urlr>r��query_spaces_urlr/r"rErErF�test_urlsplit_strip_url�sV�z(UrlParseTestCase.test_urlsplit_strip_urlcCs�dD]t}tjjtjjfD]i}dD]d}|j|||d��Rd|}d|d}|rB|��r:|��r:|�d�}|�d�}n	Wd�q||�}|�|j|�|�	t
��|jWd�n1s`wYWd�n1sowYqqqdS)	z Check handling of invalid ports.)FT)	r�z1.5z-1�0x10z-0�1_1z 1z1 u६)r'r,r:zwww.example.net:zhttp://r�roN)r+r,r;r-�subTest�isasciirsr.r0r�r�r:)r=r'r,r:r0r>r�rErErF�test_attributes_bad_port�s.
�	�������z)UrlParseTestCase.test_attributes_bad_portcCs�d}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|�	�|�tj�
|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|�	�|�d}tj�|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|�	�|�tj�
|�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|�	�|�dS)Nz0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15rs0sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15r)r+r,r;r.r0r7r8r9r:r6r-)r=�urir�rErErF�test_attributes_without_netloc�s<z/UrlParseTestCase.test_attributes_without_netloccCs,|�tj�d�d�|�tj�d�d�dS)Nz http://example.com?blahblah=/foo)r�zexample.comrrz
blahblah=/foors http://example.com?blahblah=/foo)r�sexample.comrrs
blahblah=/foorr�r�rErErF�test_noslashs��zUrlParseTestCase.test_noslashcCs||�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d	�d
�|�tj�d�d�dS)
Nr1)rrr1rrrz//www.python.org:80)r�www.python.org:80rrrr�http://www.python.org:80�r�r5rrrr�path)rrr8rrrs//www.python.org:80)r�www.python.org:80rrrr�http://www.python.org:80�r�r9rrrrr�r�rErErF�test_withoutscheme
s$������z#UrlParseTestCase.test_withoutschemecCs�|�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d	�d
�|�tj�d�d�|�tj�d
�d�|�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d�d�dS)Nzhttp:80)r�r�80rrrzhttps:80)r�rr=rrrzpath:80)r1rr=rrrr�)r�rrrrrzhttps:)r�rrrrrr6r7shttp:80)r�r�80rrrshttps:80)r�rr>rrrspath:80)r8rr>rrrshttp:)r�rrrrrshttps:)r�rrrrrr:r;r�r�rErErF�test_portseparators ��z#UrlParseTestCase.test_portseparatorcCs|�ttjjd�dS)Nr�)r��	TypeErrorr+r,�	urlencoder�rErErF�
test_usingsys/szUrlParseTestCase.test_usingsyscCs�|�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d�d�|�tj�d	�d
�|�tj�d�d�|�tj�d
�d�|�tj�d�d�dS)Nzs3://foo.com/stuff)�s3�foo.com�/stuffrrrr�)�x-newschemerDrErrrz*x-newscheme://foo.com/stuff?query#fragment)rFrDrErr3r4z!x-newscheme://foo.com/stuff?query)rFrDrErr3rss3://foo.com/stuff)ss3�foo.com�/stuffrrrsx-newscheme://foo.com/stuff)�x-newschemerGrHrrrs*x-newscheme://foo.com/stuff?query#fragment)rIrGrHr�queryrs!x-newscheme://foo.com/stuff?query)rIrGrHrrJrr�r�rErErF�test_anyscheme3s0��������zUrlParseTestCase.test_anyschemec	Cs�tjjtjjfD]l}|j|d��\|dd�}|�|jd�|dd�}|�|jd�|�|dd�jd�|�|ddd	�jd�|�|d
dd	�jd�|�|d�jd�|�|d
�jd�|�|d
d�jd�Wd�n1sowYqdS)
N)�functionzhttp://example.net/�ftpr�shttp://example.net/sftpr�r1r r8rr)r+r,r-r;r/r.r/)r=�funcrArErErF�test_default_schemeHs

���z$UrlParseTestCase.test_default_schemec
Csd}|D]�\}}}tjjtjjfD]v}|dkr|tjjurd}|j||d��Y||dd�}|�|jd�|�t||��	d|��|�||dd�jd�||d	d�}|�|j|�|�
t||��	|��|�||dd	�j|�|�||�j|�Wd�n1s�wYqqdS)
N)
)z
http:#fragr1r)z//example.net#fragr1r)zindex.html#fragr1r)z	;a=b#fragr2r)z	?a=b#fragr3r)z#fragr1r)z	abc#@fragr1�@frag)z//abc#@fragr1rP)z//abc:80#@fragr1rP)z//abc#@frag:80r1z@frag:80r2r1)r>rLF)�allow_fragmentsr�#T)r+r,r-r;r/r.r4�
assertTrue�getattr�endswith�assertFalse)r=�testsr>�attr�
expected_fragrNrArErErF�test_parse_fragmentsWs2�������z%UrlParseTestCase.test_parse_fragmentscCsD|�td��tj�dd�Wd�n1swY|�td��tj�dd�Wd�n1s5wY|�td��tj�dd�Wd�n1sRwY|�td��tj�dd�Wd�n1sowY|�td��tj�d�Wd�n1s�wY|�td��tj�d�Wd�n1s�wY|�td��tj�d�Wd�n1s�wY|�td��tj�d	�Wd�n1s�wY|�td��tj�d
d�Wd�n1s�wY|�td��tj�dd
�Wd�dS1�swYdS)NzCannot mix strr�r�rr�)r�r�rrrr)r�rrrrr)r�r�rrr)r�rrrrrshttp://python.org)	rr@r+r,r-r;r5r<r�r�rErErF�test_mixed_types_rejectedxs<���������$�z*UrlParseTestCase.test_mixed_types_rejectedc
Cs:t|j�}|j}|�|j|�d|}d|}||�}||�}d}d}	|�||�|�|��|�|�|��|�|�|�|�|�|�|�|�|�|�|�||	�|�|�|�||	�|�|�||�|�|��|�|�|��|�|�|�|�|�|�|�|�|�|�|�||	�|�|�|�||	�|�dS)N)r)rro�strict)rM�_fields�_encoded_counterpart�assertIs�_decoded_counterpartr.r(rs)
r=�str_type�num_args�
bytes_type�str_args�
bytes_args�
str_result�bytes_result�encoding�errorsrErErF�_check_result_type�s.
z#UrlParseTestCase._check_result_typecCs.tjjtjjtjjg}|D]}|�|�q
dSr*)r+r,�DefragResult�SplitResult�ParseResultrj)r=�result_types�result_typerErErF�test_result_pairs�s��z"UrlParseTestCase.test_result_pairscCs�tjjddd�}|�|ddgi�tjjddd�}|�|ddgi�tjjddd�}|�|dd	gi�tjjd
dd�}|�|ddgi�tjjd
ddd
�}|�|ddgi�dS)N�	key=Ł%E9�latin-1�rh�key�Łé�key=Ł%C3%A9r%ro�Ł���
key=Ł%E9-�Ł�-�ignore�rhri�Ł-)r+r,r[r.�r=rArErErF�test_parse_qs_encoding�s
�z'UrlParseTestCase.test_parse_qs_encodingcCs�tjjddd�}|�|dg�tjjddd�}|�|dg�tjjddd�}|�|dg�tjjd	dd�}|�|d
g�tjjd	ddd�}|�|d
g�dS)Nrqrrrs)rtrurvr%ro)rtrwrx)rtryrzr{)rtr|)r+r,rSr.r}rErErF�test_parse_qsl_encoding�s
�z(UrlParseTestCase.test_parse_qsl_encodingcCsf|�t��tjjd�dgd�dd�Wd�n1swYtjjd�dgd�dd�dS)Nrza=a��
)�max_num_fields)r�r�r+r,r[�joinr�rErErF�test_parse_qsl_max_num_fields�s� z.UrlParseTestCase.test_parse_qsl_max_num_fieldsc
Cs�difdifdddgifddgdgd	�fd
dddgifd
ifdifdddgifddgdgd�fddddgifg
}|D]A\}}|�d|�d|����*tjj|dd�}|�||d|�tjj|d
d�}|�||d|�Wd�n1svwYq:dS)N�;�;;r!rr
r#rrr	�a=1;a=2rr�;�;;r%rrr'rrr�a=1;a=2rr �
Original: �, Expected: ��	separatorrJ)r/r+r,r[r.)r=�parse_qs_semicolon_casesrTrUrA�result_bytesrErErF�test_parse_qs_separator�s(����z(UrlParseTestCase.test_parse_qs_separatorcCs�dgfdgfddgfdddgfdd	d
gfdgfdgfd
dgfdddgfdddgfg
}|D]A\}}|�d|�d|����*tjj|dd�}|�||d|�tjj|dd�}|�||d|�Wd�n1shwYq,dS)Nr�r�r!r	r#rr
r�rrr�r�r%rr'rrr�rrr�r�r�rJ)r/r+r,rSr.)r=�parse_qsl_semicolon_casesrTrUrAr�rErErF�test_parse_qsl_separator�s(



����z)UrlParseTestCase.test_parse_qsl_separatorcCsdtj�ddgdd�d�}t|�d��hd�ksJ�Gdd	�d	�}tj�d
|�id�}|�|d�dS)NrKrx)�r�r	Tr>�a=1�a=2�b=3�b=4�b=5c@seZdZdd�ZdS)z:UrlParseTestCase.test_urlencode_sequences.<locals>.TrivialcSsdS)N�trivialrEr�rErErF�__str__szBUrlParseTestCase.test_urlencode_sequences.<locals>.Trivial.__str__N)�__name__�
__module__�__qualname__r�rErErErF�Trivialsr�rz	a=trivial)r+r,rA�setr@r.)r=rAr�rErErF�test_urlencode_sequences�s
z)UrlParseTestCase.test_urlencode_sequencescCsjtj�ddi�}|�|d�tjjdditjjd�}|�|d�tjjddidtjjd�}|�|d	�dS)
Nrz
some valueza=some+valuezsome value/another)�	quote_viaza=some%20value%2Fanotherr�)�safer�za=some%20value/another)r+r,rAr.�quoter}rErErF�test_urlencode_quote_via
s��z)UrlParseTestCase.test_urlencode_quote_viacCsF|�ttjjd�tj�d�}|�|d�tj�d�}|�|d�dS)Nr�sarchaeological arcanazarchaeological%20arcanarr)r�r@r+r,�quote_from_bytesr.r}rErErF�test_quote_from_bytess
z&UrlParseTestCase.test_quote_from_bytescCs4tj�d�}|�|d�tj�d�}|�|d�dS)Nz	abc%20defsabc defrr)r+r,�unquote_to_bytesr.r}rErErF�test_unquote_to_bytessz&UrlParseTestCase.test_unquote_to_bytescCs0|jttjjddd�|jttjjddd�dS)Nsfoor%rsr\)ri)r�r@r+r,r�r�rErErF�test_quote_errors!s�z"UrlParseTestCase.test_quote_errorscCs�tj�d�}|�|jd�|�|jd�tj�d�}|�|jd�|�|jd�tj�d�}|�|jd�|�|jd�tj�d�}|�|jd�|�|jd�dS)Nztel:+31-641044153�telz
+31-641044153ztel:+31641044153z+31641044153)r+r,r;r.r/r1r-)r=�p1�p2rErErF�test_issue14072&sz UrlParseTestCase.test_issue14072cCs
|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd	�|�ttjjd
�|�ttjjd�|�ttjjd�|�ttjjd
�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd�|�ttjjd �|�ttjjd!�|�ttjjd"�|�ttjjd#�|�ttjjd$�|�ttjjd%�|�ttjjd&�|�ttjjd'�|�ttjjd(�|�ttjjd)�|�ttjjd*�|�ttjjd+�dS),Nz&Scheme://user@[192.0.2.146]/Path?Queryz-Scheme://user@[important.com:8000]/Path?Queryz#Scheme://user@[v123r.IP]/Path?Queryz Scheme://user@[v12ae]/Path?QueryzScheme://user@[v.IP]/Path?Queryz Scheme://user@[v123.]/Path?QueryzScheme://user@[v]/Path?Queryz5Scheme://user@[0439:23af::2309::fae7:1234]/Path?QueryzJScheme://user@[0439:23af:2309::fae7:1234:2342:438e:192.0.2.146]/Path?QueryzScheme://user@]v6a.ip[/Pathzscheme://prefix.[v6a.ip]zscheme://[v6a.ip].suffixzscheme://prefix.[v6a.ip]/zscheme://[v6a.ip].suffix/zscheme://prefix.[v6a.ip]?zscheme://[v6a.ip].suffix?zscheme://prefix.[::1]zscheme://[::1].suffixzscheme://prefix.[::1]/zscheme://[::1].suffix/zscheme://prefix.[::1]?zscheme://[::1].suffix?zscheme://prefix.[::1]:azscheme://[::1].suffix:azscheme://prefix.[::1]:a1zscheme://[::1].suffix:a1zscheme://prefix.[::1]:1azscheme://[::1].suffix:1azscheme://prefix.[::1]:zscheme://[::1].suffix:/zscheme://prefix.[::1]:?zscheme://user@prefix.[v6a.ip]zscheme://user@[v6a.ip].suffixzscheme://[v6a.ipzscheme://v6a.ip]zscheme://]v6a.ip[zscheme://]v6a.ipzscheme://v6a.ip[zscheme://prefix.[v6a.ipzscheme://v6a.ip].suffixzscheme://prefix]v6a.ip[suffixzscheme://prefix]v6a.ipzscheme://v6a.ip[suffix)r�r�r+r,r;r�rErErF�test_invalid_bracketed_hosts5sVz-UrlParseTestCase.test_invalid_bracketed_hostscCs�tj�d�}|�|jd�|�|jd�|�|jd�|�|jd�tj�d�}|�|jd�|�|jd�|�|jd�|�|jd�tj�d�}|�|jd	�|�|jd�|�|jd�dS)
Nz&scheme://user@[v6a.ip]:1234/path?queryzv6a.ip�user�/pathi�z4scheme://user@[0439:23af:2309::fae7%test]/path?queryz0439:23af:2309::fae7%testzEscheme://user@[0439:23af:2309::fae7:1234:192.0.2.146%test]/path?queryz*0439:23af:2309::fae7:1234:192.0.2.146%test)	r+r,r;r.r9r7r1r:r_)r=r�r��p3rErErF�test_splitting_bracketed_hostsbsz/UrlParseTestCase.test_splitting_bracketed_hostscCs�d}tj�d�}|�t|��|jWd�n1swYtj�d�}|�t|��|jWd�dS1s<wYdS)Nz3Port could not be cast to integer value as 'oracle'z%http://Server=sde; Service=sde:oracle)r+r,r-rr�r:r;)r=�messager�r�rErErF�!test_port_casting_failure_messagers�"�z2UrlParseTestCase.test_port_casting_failure_messagecCs�tj�d�}|�|jd�|�|jd�|�|jd�tj�d�}|�|jd�|�|jd�|�|jd�tj�d�}|�|jd�|�|jd	�|�|jd
�tj�d�}|�|jd�|�|jd�|�|jd
�dS)Nz"tel:123-4;phone-context=+1-650-516r�z123-4zphone-context=+1-650-516ztel:+1-201-555-0123z+1-201-555-0123rz"tel:7042;phone-context=example.com�7042zphone-context=example.comz%tel:863-1234;phone-context=+1-914-555z863-1234zphone-context=+1-914-555)r+r,r-r.r/r1r2)r=r�rErErF�test_telurl_params|s z#UrlParseTestCase.test_telurl_paramscCs$tj�tjj�}|�dt|��dS)N�Quoter)r+r,r��_ALWAYS_SAFE�assertIn�repr)r=�quoterrErErF�test_Quoter_repr�sz!UrlParseTestCase.test_Quoter_reprcCsjg}hd�}ttj�D]}|�d�s||vrqttj|�}t|dd�dkr*|�|�q|�tjj|�dS)N>r��unwrap�splittag�to_bytes�	splitattr�	splithost�	splitport�	splittype�	splituser�
ResultBase�
splitnport�
splitquery�
splitvalue�clear_cache�splitpasswdr"r�zurllib.parse)�dirr+r,�
startswithrT�append�assertCountEqual�__all__)r=r��undocumented�name�objectrErErF�test_all�s
�zUrlParseTestCase.test_allcs0d�dd��D����fdd�tttdtj��D�}|�d|�|�d|�tj�d	�|�	t
��tj�d
�Wd�n1sBwYdD]L}dD]G}|D]B}d
�||�|��}|j|d�t
|��d��#|�	t
��tj�|�Wd�n1swYWd�n1s�wYqQqMqIdS)Nz/:#?@cSsh|]	}d�t|���qS)�{:04X})�format�ord�rO�crErErF�	<setcomp>�sz?UrlParseTestCase.test_urlsplit_normalization.<locals>.<setcomp>cs.g|]}�tt�|����@r|�vr|�qSrE)r��unicodedata�
decompositionr@r���	hex_chars�
illegal_charsrErFrQ�s��z@UrlParseTestCase.test_urlsplit_normalization.<locals>.<listcomp>�u℀u#uhttp://プ:80uhttp://プ︓80)r�r�rM)znetloc{}false.netloczn{}user@netlocz{}://{}/pathr�)r>�char)�map�chrr!�sys�
maxunicoder�r+r,r;r�r�r�r/r�)r=�denorm_charsr/r0r�r>rEr�rF�test_urlsplit_normalization�s2���������z,UrlParseTestCase.test_urlsplit_normalizationN)3r�r�r�rGrWr\r�r�r�r�r�r�r�r�r�rrrrr#r,r1r3r4r<r?rBrKrOrZr[rjrpr~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rErErErFr)Gsb3	
#&0-972	]%;)!



-
r)c@speZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�
Utility_Testsz=Testcase to test the various utility functions in the urllib.cC�\tjj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d	�d
�dS)Nztype:opaquestring)r�opaquestringr�)Nr��
:opaquestring)Nr�ztype:)rrztype:opaque:string)rz
opaque:string)r+r,�
_splittyper.)r=r�rErErF�test_splittype�szUtility_Tests.test_splittypecCs�tjj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d	�d
�|�|d�d�|�|d
�d�|�|d�d�|�|d�d�|�|d�d�dS)Nz%//www.example.org:80/foo/bar/baz.html)�www.example.org:80�/foo/bar/baz.htmlz//www.example.org:80)r�rr�)Nr�z//127.0.0.1#@host.com)�	127.0.0.1�/#@host.comz//127.0.0.1#@host.com:80)r�z/#@host.com:80z//127.0.0.1:80#@host.com)z127.0.0.1:80r�z///file)rz/filez//example.net/file;)�example.netz/file;z//example.net/file?)r�z/file?z//example.net/file#)r�z/file#)r+r,�
_splithostr.)r=r�rErErF�test_splithost�s>
�
�
�
�
�
�
�
�
�
�zUtility_Tests.test_splithostcCr�)Nr)�	User:Pass�www.python.org:080z@www.python.org:080)rr�r�)Nr�z
User:Pass@)r�rr)zUser@example.com:Passr�)r+r,�
_splituserr.)r=r�rErErF�test_splituser�s 
�
�
�
�
�zUtility_Tests.test_splitusercCs�tjj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d	�d
�|�|d�d�|�|d
�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�dS)Nzuser:ab)r��abzuser:a
b)r�za
bzuser:a	b)r�za	bzuser:a
b)r�za
bzuser:ab)r�zabzuser:ab)r�zabzuser:a:b)r�za:bzuser:a b)r�rz	user 2:ab)zuser 2r�z
user+1:a+b)zuser+1za+bzuser:)r�rr�)r�Nz:ab)rr�)r+r,�_splitpasswdr.)r=r�rErErF�test_splitpasswd�szUtility_Tests.test_splitpasswdcCs�tjj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d	�|�|d
�d�|�|d�d
�|�|d�d�dS)N�	parrot:88)�parrot�88r��r�N�parrot:r�)r�N�
parrot:cheese)rNz[::1]:88)�[::1]r�r)rNz:88)rr�)r+r,�
_splitportr.)r=r�rErErF�test_splitport
szUtility_Tests.test_splitportcCs�tjj}|�|d�d�|�|d�d�|�|dd�d�|�|d�d�|�|dd�d�|�|d�d	�|�|dd�d
�|�|d�d�|�|dd�d�|�|d
�d�dS)Nr�)r�r&r�)r�����7)r�rrr�)r�r)r�rrrz
parrot: +1_0 )r+r,�_splitnportr.)r=r�rErErF�test_splitnportszUtility_Tests.test_splitnportcCsLtjj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�dS)	N�http://python.org/fake?foo=bar)�http://python.org/fake�foo=barzhttp://python.org/fake?foo=bar?)r
rr)rNz?foo=bar)rr)r+r,�_splitqueryr.)r=r�rErErF�test_splitquery"s
�
�
�zUtility_Tests.test_splitquerycCr�)N�http://example.com?foo=bar#baz)�http://example.com?foo=bar�bazzhttp://example.com?foo=bar#)rrz#baz)rrr)rNz"http://example.com?foo=bar#baz#boo)r�boo)r+r,�	_splittagr.)r=r�rErErF�
test_splittag.s
�
�
�
�zUtility_Tests.test_splittagcCsftjj}|�|d�dddgf�|�|d�ddgf�|�|d�dddgf�|�|d�dgf�dS)Nz/path;attr1=value1;attr2=value2r�zattr1=value1zattr2=value2z/path;rz;attr1=value1;attr2=value2)r+r,�
_splitattrr.)r=r�rErErF�test_splitattr:s

�

�zUtility_Tests.test_splitattrcCr�)Nr)r��barzfoo=)r�rz=bar)rr�foobar)rNzfoo=bar=baz)r�zbar=baz)r+r,�_splitvaluer.)r=r�rErErF�test_splitvalueCszUtility_Tests.test_splitvaluecCs.tj�d�}|�|d�|�ttjjd�dS)Nzhttp://www.python.orguhttp://www.python.org/mediæval)r+r,�	_to_bytesr.r��UnicodeErrorr}rErErF�
test_to_bytesMs
�zUtility_Tests.test_to_bytescCs&dD]}tj�|�}|�|d�qdS)N)z<URL:scheme://host/path>z<scheme://host/path>zURL:scheme://host/path�scheme://host/pathr)r+r,r�r.)r=�wrapped_urlr>rErErF�test_unwrapSs�zUtility_Tests.test_unwrapN)r�r�r��__doc__r�r�r�r�rr	rrrrrr rErErErFr��s

	
r�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�DeprecationTestcC�L|�t��}tj�d�Wd�n1swY|�t|j�d�dS)NrzUurllib.parse.splittype() is deprecated as of 3.8, use urllib.parse.urlparse() instead)�assertWarns�DeprecationWarningr+r,r�r.�str�warning�r=�cmrErErF�test_splittype_deprecation\���z*DeprecationTest.test_splittype_deprecationcCr#)NrzUurllib.parse.splithost() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splithost_deprecationcr+z*DeprecationTest.test_splithost_deprecationcCr#)NrzUurllib.parse.splituser() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splituser_deprecationjr+z*DeprecationTest.test_splituser_deprecationcCr#)NrzWurllib.parse.splitpasswd() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splitpasswd_deprecationqr+z,DeprecationTest.test_splitpasswd_deprecationcCr#)NrzUurllib.parse.splitport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splitport_deprecationxr+z*DeprecationTest.test_splitport_deprecationcCr#)NrzVurllib.parse.splitnport() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splitnport_deprecationr+z+DeprecationTest.test_splitnport_deprecationcCr#)NrzVurllib.parse.splitquery() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splitquery_deprecation�r+z+DeprecationTest.test_splitquery_deprecationcCr#)NrzTurllib.parse.splittag() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splittag_deprecation�r+z)DeprecationTest.test_splittag_deprecationcCr#)NrzUurllib.parse.splitattr() is deprecated as of 3.8, use urllib.parse.urlparse() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splitattr_deprecation�r+z*DeprecationTest.test_splitattr_deprecationcCr#)NrzWurllib.parse.splitvalue() is deprecated as of 3.8, use urllib.parse.parse_qsl() instead)r$r%r+r,r�r.r&r'r(rErErF�test_splitvalue_deprecation�r+z+DeprecationTest.test_splitvalue_deprecationcCr#)Nrz/urllib.parse.to_bytes() is deprecated as of 3.8)r$r%r+r,r�r.r&r'r(rErErF�test_to_bytes_deprecation�r+z)DeprecationTest.test_to_bytes_deprecationN)r�r�r�r*r,r-r.r/r0r1r2r3r4r5rErErErFr"Zsr"�__main__)r�r��unittest�urllib.parser+r�r�r�r�rRrZ�TestCaser)r�r"r��mainrErErErF�<module>s�



��
O�

Youez - 2016 - github.com/yon3zu
LinuXploit