403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_urllib2.cpython-313.opt-1.pyc
�

��irM��d�SSKrSSKJr SSKJr SSKJr SSKJr SSKJr SSKJ	r	 SSKJ
r
 SSKrSSKrSSK
r
SSKrSSKrSSKrSSKrSSKrSS	KJrJrJrJrJrJrJrJr SS
KJr SSKrSSKr \RB"SS9 "S
S\RD5r#"SS\RD5r$"SS5r%"SS5r&"SS\'5r("SS\RR5r*"SS5r+"SS5r,"SS\RZ5r."SS 5r/"S!S"5r0S#r1S$r2"S%S&\RfRh5r5"S'S(\RfRl5r7\8"\ RrS)5(a"S*S+\RfRt5r;"S,S-\RfRl5r<"S.S/5r="S0S1\RD5r>S2r?"S3S4\RD\5r@"S5S6\RD\5rA"S7S8\RD5rB\CS9:Xa\R�"5 gg):�N)�support)�	os_helper)�requires_subprocess)�warnings_helper)�ExtraAssertions)�test_urllib)�mock)�Request�OpenerDirector�HTTPBasicAuthHandler�HTTPPasswordMgrWithPriorAuth�_parse_proxy�_proxy_bypass_winreg_override�_proxy_bypass_macosx_sysconf�AbstractDigestAuthHandler)�urlparseT)�modulec�,�\rSrSrSrSrSrSrSrg)�TrivialTests�&c��SH�n0n[SU-U5 US	US:Xam[RS:XaYURS5URS5pCUR	UR
S5 UR	UR
S5 UR
5H:upVUR	UR
S	U-U<S
U<SUR
<35 M< M� g)N)�request�response�parse�error�robotparserzfrom urllib.%s import *�__builtins__r�nt�url2pathname�pathname2url�
nturl2pathz	urllib.%sz is exposed in 'urllib.z' but defined in )�exec�os�name�pop�assertEqual�
__module__�items)�selfr�context�u�p�k�vs       �&C:\Python313\\Lib\test\test_urllib2.py�test___all__�TrivialTests.test___all__(s���L�F��G��*�V�3�W�=���'���"�r�w�w�$���{�{�>�2�G�K�K��4O�1�� � ����|�<�� � ����|�<��
�
����� � ����{�V�/C������.�/�(�M�c�.�UR[RR5 UR	[
[RRS5 [RR[RR5R[RS5n[RS:XaSU-nOSU-n[RR
U5nUR5 SSS5 g!,(df   g=f)Nz	bogus url�/rz
file:///%s�	file://%s)�
addCleanup�urllibr�
urlcleanup�assertRaises�
ValueError�urlopenr#�path�abspath�__file__�replace�sepr$�read)r)�fname�file_url�fs    r/�test_trivial�TrivialTests.test_trivial7s���	
������1�1�2����*�f�n�n�&<�&<�k�J��������� 7� 7�8�@�@�����M��
�7�7�d�?�#�e�+�H�"�U�*�H�
�^�^�
#�
#�H�
-��
�F�F�H�.�
-�
-�s�,D�
Dc��S/SQ4SSS/4S/SQ4S/S	Q4/nUH4up#UR[RRU5U5 M6 g)
Nza,b,c)�a�b�czpath"o,l"og"i"cal, examplezpath"o,l"og"i"cal�exampleza, b, "c", "d", "e,f", g, h)rHrIz"c"z"d"z"e,f"�g�hza="b\"c", d="e\,f", g="h\\i")za="b"c"zd="e,f"zg="h\i")r&r7r�parse_http_list)r)�tests�string�lists    r/�test_parse_http_list�!TrivialTests.test_parse_http_listJsb��
�o�&�
)�,?��+K�L�
*�
8�
:�
/�
/�
1�2��"�L�F����V�^�^�;�;�F�C�T�J�"r2c��[RRS5nURUR[U55 g)N�reason)r7r�URLError�assertInrU�str)r)�errs  r/�test_URLError_reasonstr�$TrivialTests.test_URLError_reasonstrUs,���l�l�#�#�H�-���
�
�c�j�j�#�c�(�+r2�N)	�__name__r'�__qualname__�__firstlineno__r0rErRrZ�__static_attributes__r\r2r/rr&s��
/��&	K�,r2rc�,�\rSrSrSrSrSrSrSrg)�RequestHdrsTests�Zc��SnUR[USS0S9RSS5 UR[USS0S9RSS5 g)a�
The Request.headers dictionary is not a documented interface.  It
should stay that way, because the complete set of headers are only
accessible through the .get_header(), .has_header(), .header_items()
interface.  However, .headers pre-dates those methods, and so real code
will be using the dictionary.

The introduction in 2.4 of those methods was a mistake for the same
reason: code that previously saw all (urllib2 user)-provided headers in
.headers now sees only a subset.

�http://example.com�	Spam-eggs�blah��headersz	spam-EggSN)r&r
ri)r)�urls  r/�test_request_headers_dict�*RequestHdrsTests.test_request_headers_dict\si��#�������*5�v�)>�#�#*�7�;�8�9?�	A�	
�����*5�v�)>�#�#*�7�;�8�9?�	Ar2c��Sn[USS0S9nURURS55 URUR	5S/5 URSS5 UR[
UR	55SS/5 URURS	55 URURS	55 URURS	S
5S
5 URS5 URURS55 URSS5 URURS55 URS5 URURS55 g
)a�
Note the case normalization of header names here, to
.capitalize()-case.  This should be preserved for
backwards-compatibility.  (In the HTTP case, normalization to
.title()-case is done by urllib2 before sending headers to
http.client).

Note that e.g. r.has_header("spam-EggS") is currently False, and
r.get_header("spam-EggS") returns None, but that could be changed in
future.

Method r.remove_header should remove items both from r.headers and
r.unredirected_hdrs dictionaries
rerfrgrh)rfrgzFoo-Bar�baz)zFoo-barrnz	Not-there�defaultzUnredirected-spam�EggsN)r
�
assertTrue�
has_headerr&�header_items�
add_header�sorted�assertFalse�assertIsNone�
get_header�
remove_header�add_unredirected_header)r)rj�reqs   r/�test_request_headers_methods�-RequestHdrsTests.test_request_headers_methodsqs>��#���c�K��#8�9��������{�3�4�����)�)�+�.C�-D�E����y�%�(������ 0� 0� 2�3�,�.C�D�	F��������4�5����#�.�.��5�6��������Y�?��K����+�&��������4�5��#�#�$7��@�������':�;�<����-�.�������(;�<�=r2c��[RR5nURnURnU"SSSS5 U"SSSS5 U"SSSS	5 U"SS
SS5 U"SS
SS5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 U"S	SSS5 U"S	SSS5 U"S	SSS5 URU"S	S5S5 URU"S	S5S5 URU"S	S5S5 URU"S	S5S5 URU"S	S 5S5 URU"S	S!5S"5 U"S	S#S$S%5 URU"S	S&5S"5 URU"S	S#5S'5 URU"S	S(5S'5 U"S)SS*S+5 U"S)SS,S-5 URU"S)S5S.5 U"S/SS0S/5 URU"S/S5S15 URU"S/S25S"5 URU"SS35S"5 URU"SS45S55 URU"SS5S55 URU"SS
5S65 URU"SS
5S75 g)8Nz
Some Realm�http://example.com/�joe�passwordzhttp://example.com/ni�nizhttp://c.example.com:3128�3rJz
d.example.com�4�dze.example.com:3128�5�e�example.com)r�r�rezhttp://example.com/spamzhttp://example.com/spam/spamzhttp://example.com/foo�foozhttp://example.com/bar�bar�ninizhttp://example.com/foo/bar�foobar�nibar)r�r�)r�r�zhttp://example.com/foo/zhttp://example.com/foo/bazzhttp://example.com/foobar�NNzhttp://example.com/baz/rn�nininizhttp://example.com/baz)rnr�zhttp://example.com/baz/barrI�firstrg�second�spam)r�r�rH�1)r�rHzhttp://a.example.com/z
c.example.comzc.example.com:3128)r�rJ)r�r�)r�r��r7r�HTTPPasswordMgr�add_password�find_user_passwordr&�r)�mgr�add�find_user_passs    r/�test_password_manager�&RequestHdrsTests.test_password_manager�s`���n�n�,�,�.�������/�/���L�/��
�C��L�1�4��>��L�5�s�C�@��L�/�3��4��L�.��S�9�	
�����m�D�,�	.������6M�N�,�	.������6J�K�,�	.������6K�L�,�	.������(A�C�,�	.�	
�����(F�H�,�	.�	�C�)�5�$�7��C�)�5�&�9��C�-�x��A������-E�F�&�	(������-E�F�(�	*������-F�G�&�	(������-I�J�&�	(������-I�J�&�	(������-H�I�%�	'�	�C�*�E�8�<������-E�F�%�	'������-F�G�*�	,������-I�J�*�	,�
	�C�&���8��C�&��&�9������-B�C�+�	-�
	�C�%�s�C�0������-B�C�#�	%�	
�����-D�E�%�	'�
	
�����o�F�%�	'������6J�K�#�	%�����<�)D�E��	�	
�����o�F�#�	%������6J�K�#�	%r2c���[RR5nURnURnU"SSSS5 U"SSSS5 U"S	S
SS5 U"S
SSS5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"S	S5S5 URU"S	S
5S5 URU"S	S5S5 URU"S
S5S5 URU"S
S 5S5 URU"S
S!5S5 URU"S
S"5S5 g#)$z�
The point to note here is that we can't guess the default port if
there's no scheme.  This applies to both add_password and
find_user_password.
rDzhttp://g.example.com:80�10�jrLzhttp://h.example.com�11r-rMzi.example.com:80�12�l�iz
j.example.com�13�mzg.example.com:100r�zg.example.com:80)r�r�z
g.example.comzhttp://g.example.com:100zhttp://g.example.comz
h.example.com)r�r-zh.example.com:80zhttp://h.example.com:80z
i.example.com)r�r�zhttp://i.example.com:80)r�r�zj.example.com:80zhttp://j.example.comzhttp://j.example.com:80Nr�r�s    r/�"test_password_manager_default_port�3RequestHdrsTests.test_password_manager_default_port�s���n�n�,�,�.�������/�/���C�*�D�#�6��C�'��s�3��C�#�T�3�/��C��$��,������-@�A�%�	'������-?�@�$�	&������_�=�%�	'������-G�H�%�	'������-F�G�$�	&������-C�D�$�	&������_�=�{�K������-?�@�+�N������-F�G�$�	&������_�=�|�L������-?�@�+�N������-F�G�$�	&������_�=�{�K������-?�@�%�	'������-C�D�$�	&������-F�G�%�	'r2r\N)	r]r'r^r_rkr|r�r�r`r\r2r/rbrbZs��A�*">�HT%�l''r2rbc�@�\rSrSr/rS\R4SjrSrSr	g)�
MockOpeneriNc�.�XUsUlUlUlg�N)r{�data�timeout)r)r{r�r�s    r/�open�MockOpener.opens��,/�w�)���$�)�T�\r2c� �XsUlUlgr�)�proto�args)r)r�r�s   r/r�MockOpener.errors�� %���
�D�Ir2)r�r�r�r{r�)
r]r'r^r_�
addheaders�socket�_GLOBAL_DEFAULT_TIMEOUTr�rr`r\r2r/r�r�s���J�!�6�+I�+I�?�,r2r�c�.�\rSrSrSSjrSSjrSrSrg)�MockFileiNc��gr�r\�r)�counts  r/rA�
MockFile.read ���r2c��gr�r\r�s  r/�readline�MockFile.readline#r�r2c��gr�r\�r)s r/�close�MockFile.close&r�r2r\r�)r]r'r^r_rAr�r�r`r\r2r/r�r�s��
�
�
r2r�c��\rSrSrSrSrg)�MockHeadersi*c�4�[UR55$r�)rQ�values)r)r$s  r/�
getheaders�MockHeaders.getheaders+s���D�K�K�M�"�"r2r\N)r]r'r^r_r�r`r\r2r/r�r�*s��#r2r�c�*�\rSrSrSSjrSrSrSrg)�MockResponse�/Nc�|�[RRX5 XX54uUlUlUlUlgr�)�io�StringIO�__init__�code�msgrirj)r)r�r�rir�rjs      r/r��MockResponse.__init__0s/��
�����T�(�6:��6M�3��	�4�8�T�\�4�8r2c��UR$r�rhr�s r/�info�MockResponse.info4s���|�|�r2c��UR$r��rjr�s r/�geturl�MockResponse.geturl7����x�x�r2)r�rir�rjr�)r]r'r^r_r�r�r�r`r\r2r/r�r�/s��N��r2r�c� �\rSrSrSrSrSrg)�
MockCookieJari;c��Xlgr�)�ach_req)r)rs  r/�add_cookie_header�MockCookieJar.add_cookie_header<s���r2c� �X!sUlUlgr�)�ec_req�ec_r)r)rrs   r/�extract_cookies�MockCookieJar.extract_cookies?s��!(����T�Yr2)r�r�r�N)r]r'r^r_r�r�r`r\r2r/r�r�;s���3r2r�c� �\rSrSrSrSrSrg)�
FakeMethodiCc�(�XlX0lX lgr�)�	meth_name�handle�action)r)r�r�r�s    r/r��FakeMethod.__init__Ds��"�����r2c�R�UR"URUR/UQ76$r�)r�r�r�)r)r�s  r/�__call__�FakeMethod.__call__Is ���{�{�4�>�>�4�;�;�>��>�>r2)r�r�r�N)r]r'r^r_r�r�r`r\r2r/r�r�Cs���
?r2r�c�,�\rSrSrSrSrSrSrSrg)�MockHTTPResponseiMc�B�XlX lX0lX@lSUlg)N��)�fpr��statusrUr�)r)r�r�r�rUs     r/r��MockHTTPResponse.__init__Ns������������	r2c��g)N�r\r�s r/rA�MockHTTPResponse.readUs��r2c��0$r�r\r�s r/r��MockHTTPResponse.infoXs���	r2c��UR$r�r�r�s r/r��MockHTTPResponse.geturl[r�r2)r�r�r�rUr�N)	r]r'r^r_r�rAr�r�r`r\r2r/r�r�Ms�����r2r�c�h�\rSrSrSr\R4SjrSrS
Sjr	S
SS.S	jjr
S
rSrSr
g)�
MockHTTPClassi_c�X�SUl/UlSUlSUlSUl0Ulg)NrF)�level�req_headersr��raise_on_endheaders�sock�_tunnel_headersr�s r/r��MockHTTPClass.__init__`s/����
������	�#(�� ���	�!��r2c��XlX lU$r�)�hostr�)r)rr�s   r/r��MockHTTPClass.__call__hs���	����r2c��Xlgr�)r)r)rs  r/�set_debuglevel�MockHTTPClass.set_debuglevelms���
r2Nc�l�XlX lU(aX0lgURR5 gr�)�_tunnel_host�_tunnel_portr�clear)r)r�portris    r/�
set_tunnel�MockHTTPClass.set_tunnelps)�� �� ���#*� �� � �&�&�(r2F)�encode_chunkedc��XlX lUb#U=RUR5-
slURR	5 U(aX0lXPlUR(a
[5egr�)	�method�selectorrr(�sortr�rr�OSError)r)rrj�bodyrirs      r/r�MockHTTPClass.requestxs^�����
�������
�
��/����������I�,���#�#��)�O�$r2c�.�[[50SS5$)Nr��OK)r�r�r�s r/�getresponse�MockHTTPClass.getresponse�s����
�B��T�:�:r2c��gr�r\r�s r/r��MockHTTPClass.close�r�r2)
rrrr�rrrrrrrrr�r�)r]r'r^r_r�r�r�r�rrrr!r�r`r\r2r/rr_s8��"�&,�%C�%C��
�)��$��;�
r2rc�<�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�MockHandleri���c�&�URU5 gr�)�_define_methods)r)�methodss  r/r��MockHandler.__init__�s�����W�%r2c��UHFn[U5S:XaUup4OUSpC[X4UR5n[URX55 MH g)N�)�lenr�r��setattr�	__class__)r)r*�specr$r��meths      r/r)�MockHandler._define_methods�sE���D��4�y�A�~�#���f�#�T�f��d�D�K�K�8�D��D�N�N�D�/�
r2c���URRRXX445 UcgUS:XaU$US:Xa[SS0S5nU$US:Xa[	S5$URS5(aRX"R
S	5S
-Sn[U5n[SS0S5nURRSUSXVS05$US
:Xa[RRS5eg![a Nbf=f)N�return self�return responser�r r��return requestzhttp://blah/r� ��httpr�raiserg)�parent�calls�appendr�r
�
startswith�rfind�intr:rr7rV)r)�fn_namer�r��kwds�resr�s       r/r��MockHandler.handle�s������� � �$��!<�=��>��
�}�
$��K�
�(�
(��s�D�"�b�1�C��J�
�'�
'��>�*�*�
�
�
�w�
'�
'��,�,�s�+�A�-�.�/�D�
��4�y���s�D�"�b�1�C��;�;�$�$�V�T�!�W�c��R�H�H�
�w�
��,�,�'�'��/�/���	�
��
�s�C)�)
C6�5C6c��gr�r\r�s r/r��MockHandler.close�r�r2c�2�Xl/URlgr�)r<r=)r)r<s  r/�
add_parent�MockHandler.add_parent�s��������r2c�X�[US5(dgURUR:$)N�
handler_orderT)�hasattrrL)r)�others  r/�__lt__�MockHandler.__lt__�s)���u�o�.�.���!�!�E�$7�$7�7�7r2)r<N)r]r'r^r_rLr�r)r�r�rIrOr`r\r2r/r&r&�s'���M�&�0��.
��8r2r&c���/nSnUHgn"SS[5nU"U5nU=RU-
slURU5 US-nURU5 UR	U5 Mi U$)a�Create MockHandlers and add them to an OpenerDirector.

meth_spec: list of lists of tuples and strings defining methods to define
on handlers.  eg:

[["http_error", "ftp_open"], ["http_open"]]

defines methods .http_error() and .ftp_open() on one handler, and
.http_open() on another.  These methods just record their arguments and
return None.  Using a tuple instead of a string causes the method to
perform some action (see MockHandler.handle()), eg:

[["http_error"], [("http_open", "return request")]]

defines .http_error() on one handler (which simply returns None), and
.http_open() on another handler, which returns a Request object.

rc��\rSrSrSrg)�6add_ordered_mock_handlers.<locals>.MockHandlerSubclassi�r\N�r]r'r^r_r`r\r2r/�MockHandlerSubclassrS����r2rUr9)r&rLrIr>�add_handler)�opener�	meth_spec�handlersr��methsrUrMs       r/�add_ordered_mock_handlersr\�st��&�H�
�E���	�+�	�
 ��&��	���5� ��	���V����	����������1����Or2c�N�[5nUHnURU5 M U$r�)rrW)�handler_instancesrXrMs   r/�build_test_openerr_�s'��
�
�F�
�����1����Mr2c�2^�\rSrSrSU4SjjrSrSrU=r$)�MockHTTPHandleri�c�F>�[[U]US9 [5Ulg)N��
debuglevel)�superrar�r�httpconn)r)rdr0s  �r/r��MockHTTPHandler.__init__�s���
�o�t�-��-�D�%���
r2c�:�URURU5$r���do_openrf�r)r{s  r/�	http_open�MockHTTPHandler.http_open�s���|�|�D�M�M�3�/�/r2�rfr�)r]r'r^r_r�rlr`�
__classcell__�r0s@r/rara�s���(�0�0r2rac�&�\rSrSrSrSrSrSrg)�MockHTTPHandlerRedirect�c�<�XlX lUR5 gr�)r�ri�reset)r)r�ris   r/r�� MockHTTPHandlerRedirect.__init__�s���	����
�
�r2c� �SUl/Ulg)Nr)�_count�requestsr�s r/ru�MockHTTPHandlerRedirect.reset�s�������
r2c��SSKnSSKnURRUR	U55 UR
S:Xa�UR
S-Ul[RRURnURUR5nURRSU[5URXE5$XlURS5n[!SSUSUR#55$)Nrr9r:�

r�r r�)�email�copyryr>�deepcopyrxr:�client�	responsesr��message_from_stringrir<rr�r{r��get_full_url)r)r{r}r~r$r�s      r/rl�!MockHTTPHandlerRedirect.http_opens�����
�
���T�]�]�3�/�0��;�;�!���+�+��/�D�K��;�;�(�(����3�D��+�+�D�L�L�9�C��;�;�$�$���X�Z����D�?�
?��H��+�+�J�7�C���T�3��C�4D�4D�4F�G�Gr2)rxr�rir{ryN�r]r'r^r_r�rurlr`r\r2r/rrrr�s���
�Hr2rr�HTTPSConnectionc�2^�\rSrSrSU4SjjrSrSrU=r$)�MockHTTPSHandleric�L>�[[U]XU5 [5Ulgr�)rer�r�rrf)r)rdr*�check_hostnamer0s    �r/r��MockHTTPSHandler.__init__s����"�D�2�:��W�)�O�D�Mr2c�:�URURU5$r�rirks  r/�
https_open�MockHTTPSHandler.https_opens���<�<��
�
�s�3�3r2rn)NNN)r]r'r^r_r�r�r`rorps@r/r�r�s���	,�	4�	4r2r�c�&�\rSrSrSrSrSrSrg)�MockHTTPHandlerCheckAuthic��XlSUlg�NF�r��has_auth_header)r)r�s  r/r��!MockHTTPHandlerCheckAuth.__init__#s���	�$��r2c��SUlgr�)r�r�s r/ru�MockHTTPHandlerCheckAuth.reset's
��$��r2c���URS5(aSUl[RRUR
n[
UR
U[5SUR55$)N�
AuthorizationTr�)	rrr�r:r�r�r�r�r�r�)r)r{r$s   r/rl�"MockHTTPHandlerCheckAuth.http_open*sS���>�>�/�*�*�#'�D� ��{�{�$�$�T�Y�Y�/���D�I�I�t�X�Z��S�=M�=M�=O�P�Pr2r�Nr�r\r2r/r�r�s��%�%�Qr2r�c� �\rSrSrSrSrSrg)�MockPasswordManageri2c�4�XlX lX0lX@lgr�)�realmrj�userr�)r)r��urir�r�s     r/r�� MockPasswordManager.add_password3s���
����	� �
r2c�J�XlX lURUR4$r�)�target_realm�
target_urlr�r�)r)r��authuris   r/r��&MockPasswordManager.find_user_password9s ��!��!���y�y�$�-�-�'�'r2)r�r�r�r�rjr�N)r]r'r^r_r�r�r`r\r2r/r�r�2s��!�(r2r�c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�OpenerDirectorTestsi?c�~�"SS[5nUR[[5RU"55 g)Nc��\rSrSrSrg)�<OpenerDirectorTests.test_add_non_handler.<locals>.NonHandleriBr\NrTr\r2r/�
NonHandlerr�BrVr2r�)�objectr9�	TypeErrorrrW)r)r�s  r/�test_add_non_handler�(OpenerDirectorTests.test_add_non_handlerAs/��	��	����)�(�*�6�6�
��	Fr2c���SSKJn [5nSS/S//n[X#5 UR	[
RR55 SH"nURXRUS-5 M$ g)Nr)rV)rjr5)�
proxy_openr5)�redirect_requestr5)�do�proxy�redirectz://example.com/)
�urllib.errorrVrr\rWr7r�UnknownHandlerr9r�)r)rV�orY�schemes     r/�test_badly_named_methods�,OpenerDirectorTests.test_badly_named_methodsGsl��	*����
'�)F�G�
0�1��	�	"�!�/�	�
�
�f�n�n�3�3�5�6�/�F����h����7H�0H�I�0r2c�P�[5n/SQS/S/S//n[X5n[S5nURU5nUR	XSS5 USS4USS4/n[XaR5H/upxUup�p�UR	X�4U5 UR	X�45 M1 g)N)rl�ftp_open�http_error_302r��rlr5rr-rrl)rr\r
r�r&�zipr=)
r)r�rYrZr{�rr=�expected�got�handlerr$r�rCs
             r/�test_handled� OpenerDirectorTests.test_handled\s������7�
�L�
)�*�
)�*�	�	�-�Q�:���+�,��
�F�F�3�K��	
����Q�K�(��1�+�{�+�h�q�k�;�-G�H�� ����0�M�H�(+�%�G�4����g�_�h�7����T�6�*�1r2c�v�[5n/nS/S4S/S44HDup4"SS[5nU"U5nXFlURU5 UR	U5 MF URS5 UR
URSSUS5 UR
URSSUS5 g)	Nr�r'rlrc��\rSrSrSrg)�COpenerDirectorTests.test_handler_order.<locals>.MockHandlerSubclassi{r\NrTr\r2r/rUr�{s��r2rUrr9)rr&rLr>rWr�r&r=)r)r�rZr[rLrUrMs       r/�test_handler_order�&OpenerDirectorTests.test_handler_ordervs��������'C�&D�c�%J�'2�m�Q�%7�%9� �E�
�k�
�$�E�*�A�+�O��O�O�A��
�M�M�!��%9�	
���$�%���������A�����4���������A�����4r2c��[5nS/S//n[X5n[S5nUR[R
RURU5 URURUSSU404/5 g)N)rlr;r�rrrl)
rr\r
r9r7rrVr�r&r=)r)r�rYrZr{s     r/�
test_raise�OpenerDirectorTests.test_raise�sz�����
#�$�
)�*��	�-�Q�:���+�,�����&�,�,�/�/�����=�������H�Q�K��s�f�b�#I�"J�Kr2c�`�[5nS/SS//SQS//n[X5n[S5nURU5 USSU44USSU[R
S	S
044/n[
XQR5H4upgUup�n
URX�4USS5 URX�S5 M6 g)N)rlz	error 302)�http_error_400r;rl))r�r6�http_error_303�
http_errorr�rrr-�.r�)	rr\r
r�r�	ALWAYS_EQr�r=r&)r)r�rYrZr{r=r�r�r��method_namer�s           r/�test_http_error�#OpenerDirectorTests.test_http_error�s���
���
'�(�
(�+�6�
�� ��	�-�Q�:���+�,��	���s���1�+�{�S�F�3��1�+�/���)�)�3��B�7�9�:��!����0�M�H�)1�&�G�$����g�3�S��!�W�=����T�q�6�*�1r2c�d�[5nSS/SS//n[X5n[S5nURU5 USS4USS4USS4USS4/n[	UR
5H�unupxp�US:aKUR
Xx4XV5 UR
[U	5S5 URU	S[5 MZUR
Xx4XV5 UR
[U	5S5 URU	S[5 U	ScM�URU	S[5 M� g)	N)�http_requestr7)�
http_responser6rrr�r9r�r-)
rr\r
r��	enumerater=r&r.�assertIsInstancer�)r)r�rYrZr{r=r�r�r$r�rCs           r/�test_processors�#OpenerDirectorTests.test_processors�sB�����
/�
1�
3�
/�
1�
3��	�-�Q�:���+�,��	���s���a�[�.�)�H�Q�K��+H�
�a�[�/�*�X�a�[�/�,J�L��/8����.@�*�A�*��t��1�u�� � �'��%�(�;�� � ��T��A�.��%�%�d�1�g�w�7�� � �'��%�(�;�� � ��T��A�.��%�%�d�1�g�w�7���7�&��)�)�$�q�'�<�@�/Ar2r\N)r]r'r^r_r�r�r�r�r�r�r�r`r\r2r/r�r�?s)��F�J�*+�45�$L�+�.!Ar2r�c��[RRU5n[RS:XaURS5(aUSSnU$)Nrz///r-)r7rr r#r$r?)r<�urlpaths  r/�sanepathname2urlr��sA���n�n�)�)�$�/�G�	�w�w�$��7�-�-�e�4�4��!�"�+���Nr2c��\rSrSrSrSrSrSrSr\	"5S5r
SrS	rS
r
SrSr\R""\"\R(S
5S5S5r\R""\"\R(S
5S5S5rSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%S r&S!r'S"r(\R""\"\R(S
5S5S#5r)\R""\*RVS$:HS%5S&5r,\R""\-R\S':HS(5S)5r/S*r0S+r1S,r2S-r3S.r4S/r5S0r6S1r7S2r8S3r9S4r:S5r;g6)7�HandlerTestsi�c�^�"SS5m"U4SjS[RR5nSSKnSnU"U5n[	5UlSSURS	S	S
SS/S
S4	SSURSS	S
SS/S
S4	SSURSS	S
SS/S
S4	SSURSS	S
SS/S
S4	SSSS	S	SSS/S	S4	SSURS	S	S/SS4	4GH�u	pVpxp�p�n
[U5nSUlURU5nURURU5 URURU	5 URUR[R"U55 URUR U5 URUR"U5 URUR$R&U5 URUR$R(U
5 UR+5nURUR-S5U
5 UR[/US5[1U55 UR35 GM� g)Nc�&�\rSrSrSrSrSrSrg)�-HandlerTests.test_ftp.<locals>.MockFTPWrapperi�c��Xlgr��r��r)r�s  r/r��6HandlerTests.test_ftp.<locals>.MockFTPWrapper.__init__���� �	r2c��XsUlUl[R"UR5[UR54$r�)�filename�filetyper�r�r�r.)r)r�r�s   r/�retrfile�6HandlerTests.test_ftp.<locals>.MockFTPWrapper.retrfile�s0��/7�,��
�t�}��{�{�4�9�9�-�s�4�9�9�~�=�=r2c��gr�r\r�s r/r��3HandlerTests.test_ftp.<locals>.MockFTPWrapper.close����r2)r�r�r�N)r]r'r^r_r�r�r�r`r\r2r/�MockFTPWrapperr��s��
!�
>�
r2r�c�B>�\rSrSrSr\R4U4SjjrSrg)�-HandlerTests.test_ftp.<locals>.NullFTPHandleri�c��Xlgr�r�r�s  r/r��6HandlerTests.test_ftp.<locals>.NullFTPHandler.__init__�r�r2c�>�XsUlUlX4sUlUlXPlT"UR
5UlUR$r�)r��passwdrr�dirsr��
ftpwrapper)r)r�r�rrr�r�r�s       �r/�connect_ftp�9HandlerTests.test_ftp.<locals>.NullFTPHandler.connect_ftp�s>���)-�&��	�4�;�'+�$��	�4�9� �	�"0����";������&r2)r�r�r�rr�rr�N)	r]r'r^r_r�r�r�r�r`)r�s�r/�NullFTPHandlerr��s���
!�%+�$B�$B�
'�
'r2rrzrheum rhaponicumz ftp://localhost/foo/bar/baz.html�	localhostr��Ir�r�zbaz.htmlz	text/htmlz'ftp://parrot@localhost/foo/bar/baz.html�parrotz*ftp://%25parrot@localhost/foo/bar/baz.htmlz%parrotz,ftp://%2542parrot@localhost/foo/bar/baz.htmlz	%42parrotzftp://localhost:80/foo/bar/�P�Dzftp://localhost/baz.gif;type=a�Azbaz.gifz	image/gif�Content-type�Content-length)r7r�
FTPHandler�ftplibr�r<�FTP_PORTr
r�r�r&r�r�rr��
gethostbynamerr�r�r�r�r��getrAr.r�)r)rr
r�rMrjrrr�r��type_r�r��mimetyper{r�rir�s                 @r/�test_ftp�HandlerTests.test_ftp�s8���		�		�
	'�V�^�^�6�6�
	'�	�!���4� ���<���0�
�&�/�/�2�r�3��U�^�Z��
6�7�
�&�/�/�8�R���U�^�Z��
6�:�
�&�/�/�9�b�#��U�^�Z��
6�<�
�&�/�/�;��C��U�^�Z��
6�+�
�"�b�"�c��U�^�R��
'�.�
�&�/�/�2�r�3�
��K�
)�!O�J�C�t�6�$�(�(�#�,�C��C�K��
�
�3��A����Q�V�V�T�*����Q�X�X�v�.����Q�V�V�V�%9�%9�$�%?�@����Q�V�V�T�*����Q�V�V�T�*����Q�\�\�2�2�H�=����Q�\�\�2�2�E�:��f�f�h�G����W�[�[��8�(�C����S��)9�!:�;�S��Y�G�
�G�G�I�EOr2c	���SSKn[RR5n[	5=o2l[Rn[[RRU55nSnSU-SU-S[R"S5<U<3/n[R"[R"55nU(aUR!SU<U<35 UGH?n	[#US5n
U
R%U5 U
R'5 UR)[+U	55nUR-5nUR/5n
UR15nUR'5 [R2"U5nUR4R7UR8S	S
9n[R:"U5 UR=X�5 UR=U
SS5 UR=U
S
S5 UR=U
SU5 UR=X�5 GMB SU-SSS[R"S5<S[R>"5<SU<3S[R>"5<SU<34H�n	[#US5n
U
R%U5 U
R'5 URA[RBRDUR([+U	55 [R:"U5 M� [RR5n[	5=o2lSHzun	n[+U	5nUR)U5 URGURHU5 UR=URJS5 UR=URJS:HU5 M| g![Ra SnGNf=f!U
R'5 f=f!UR'5 f=f![R:"U5 f=f!U
R'5 f=f![R:"U5 f=f![RBRDa URMU5 N�f=f)Nrs
hello, world
zfile://localhost%sr5zfile://rr��wbT)�usegmtrz
text/plainrr�z
Last-modifiedzfile://localhost:80%szfile:///file_does_not_exist.txtz)file://not-a-local-host.com//dir/file.txtz:80r4z'file://somerandomhost.ontheinternet.com))zfile://ftp.example.com//foo.txtF)z file://ftp.example.com///foo.txtF)zfile://ftp.example.com/foo.txtF)z"file://somehost//foo/something.txtF)z#file://localhost//foo/something.txtF�ftp)'�email.utilsr7r�FileHandlerr�r<r�TESTFNr�r#r<r=r�r�gethostname�gaierrorr>r��writer��	file_openr
rAr�r��stat�utils�
formatdate�st_mtime�remover&�getcwdr9rrV�assertIsr{�typerv)r)r}rMr�rr��towrite�urls�	localaddrrjrDr�r�ri�respurl�stats�modifiedrr{s                   r/�	test_file�HandlerTests.test_filesn����N�N�&�&�(��!�|�#��H��!�!��"�2�7�7�?�?�6�#:�;��#�� �7�*��'�!�#�1�1�+�>��H���
	��,�,�V�-?�-?�-A�B�I���K�K��G�<�=��C��V�T�"�A�
"���G�G�G�$��G�G�I��K�K����-����6�6�8�D��f�f�h�G��h�h�j�G��G�G�I������� �;�;�1�1�%�.�.��1�N���	�	�&�!����T�+����W�^�4�l�C����W�%5�6��=����W�_�5�x�@����W�*�/�4
$�g�-�-�7�#)�#7�#7��#D�#%�9�9�;��
8��Y�Y�[�&�
"�
�C�

"����&����G�G�G�$��G�G�I��!�!�&�,�,�"7�"7�"#�+�+�w�s�|�=��	�	�&�!�'�*
�N�N�&�&�(��!�|�#��H��H�C���#�,�C�
2����C� ��
�
�a�e�e�S�)�� � ����5�1����S�X�X��.��4���y���	��I�	���G�G�I���G�G�I���	�	�&�!��*�G�G�I��
�	�	�&�!��*�<�<�(�(�
&�� � ��%�
&�s��)N3�0O�*O:�,0O%�A
O:�>P*�P�AP*�Q�3O
�O
�O"�"O:�%O7�7O:�:P�P'�'P*�*Q�/Q7�6Q7c���[RR5n[5=o!lSnSGH�upE[X5SS05nSUlURSS5 [5nURXv5nUR UR UR UR URURS:HS4 UR5n	U	R  U	R" UR%UR5U5 UR%UR&S	5 UR%UR(S
5 UR%UR*U5 UR%UR,S5 UR%UR./SQ5 UR%UR0U5 GM� S
WlUR5[R6R8URUW5 [SS5nUR5[:UR<U5 S/UlSGH�n[SU5n[ASS0S5nUR=U5n
Uc9URCSURD5 URCSURD5 O>UR%URDSS5 UR%URDSS5 UR%URDSS	5 UR%URDSS5 URSS5 URSS5 URSS5 URSS5 UR=U5n
UR%URDSS5 UR%URDSS5 UR%URDSS5 UR%URDSS5 GM� g)Nr))�GETN)�POSTsblah�Foor��Spam�eggsr�r r�rr4))�
Connectionr�)r0r��r1r2T�badpostr4)r2Nr�rr�0z!application/x-www-form-urlencoded�Hostr�rn)#r7r�AbstractHTTPHandlerr�r<r
r�rzrrjrAr�r�r�r�r�r
�__contains__r&rrrrrr�rr9rrVr��do_request_r�r��assertNotIn�unredirected_hdrs)r)rMr�rjrr�r{r:r��hdrs�newreqs           r/�	test_http�HandlerTests.test_httpwsG���N�N�.�.�0��!�|�#��H�#��>�L�F��#�e�U�^�4�C��C�K��'�'���7� �?�D��	�	�$�$�A�
�F�F�A�J�J�
�F�F�A�H�H�
�F�F�A�E�E�S�L�$�&��6�6�8�D��H�H�d�'�'����Q�X�X�Z��-����T�Y�Y�
�6����T�Z�Z��+����T�[�[�&�1����T�]�]�C�0����T�-�-�@�
A�
���T�Y�Y��-�-?�2$(�� ����&�,�,�/�/����D�#�F��+�I�6�����)�Q�]�]�C�8�)�)����D��/��6�C��S�$��B�/�A��]�]�3�'�F��|�� � �!1�3�3H�3H�I�� � ���1F�1F�G�� � ��!6�!6�7G�!H�#�N�� � ��!6�!6�~�!F�@�B�
���S�2�2�6�:�M�J����S�2�2�6�:�F�C�
�'�'�(8�%�@��'�'���>��'�'���6��'�'���6��]�]�3�'�F����S�2�2�3C�D�e�L����S�2�2�>�B�E�J����S�2�2�6�:�E�B����S�2�2�6�:�E�B�1r2c�0�[RR5n[5=o!l[
R"SSS9nURnUR5 UR[RU5 [US5n[SU05nURU5nURS5nUR!US5 UR#UR%S55 SSS5 [US5n[SUS	S
05nURU5nUR!['URS55S
5 UR#UR%S55 SSS5 g!,(df   N�=f!,(df   g=f)Nzw+bF)�mode�delete�rbr�Transfer-encoding�chunkedr�Content-Length�)r7rr8r�r<�tempfile�NamedTemporaryFiler$r�r6r#�unlinkr�r
r:rxr&rvrrrA)	r)rMr��file_obj�	file_pathrDr{r>�tes	         r/�test_http_body_file� HandlerTests.test_http_body_file�sH��
�N�N�.�.�0��!�|�#��H��.�.�E�%�H���M�M�	���������	�	�9�-�
�)�T�
"�a��/��B�7�C��]�]�3�'�F��"�"�#6�7�B����R��+����V�.�.�/?�@�A�#��)�T�
"�a��/��5E�r�4J�K�C��]�]�3�'�F����S��!2�!2�3C�!D�E�r�J����V�.�.�/B�C�D�	#�
"�#�
"��#�
"�s�A"E6�A+F�6
F�
Fc�>�[RR5n[5=o!l[
R"5n[SU05nURU5nURURS5S5 URURS55 SS0n[SX65nURU5nUR[URS55S5 URURS55 UR5 g)NrrErFrrGrH)r7rr8r�r<r��BytesIOr
r:r&rxrvrrrAr�)r)rMr�rLr{r>ris       r/�test_http_body_fileobj�#HandlerTests.test_http_body_fileobj�s���
�N�N�.�.�0��!�|�#��H��:�:�<���+�X�r�:�����s�#������*�*�+>�?��K�����*�*�+;�<�=�#�R�(���+�X�?�����s�#������V�.�.�/?�@�A�2�F�����*�*�+>�?�@����r2c	�T�[RR5n[5=o!l[
RSS/n0SS04H�n[R"U[RS9n[SURU5nURU5nU(dCURURS5S5 URURS5S	5 O*UR[URS55S5 SSS5 M� g!,(df   M�=f)
Nz-c�passrGrH)�stdoutrrrErF)r7rr8r�r<�sys�
executable�
subprocess�Popen�PIPEr
rWr:r&rxrA)r)rMr��cmdri�procr{r>s        r/�test_http_body_pipe� HandlerTests.test_http_body_pipe�s���
�N�N�.�.�0��!�|�#��H��~�~�t�W�-���,�b�1�1�G��!�!�#�j�o�o�>�$��3�T�[�[�'�J�����s�+����$�$�V�%6�%6�7G�%H�$�O��$�$�V�%6�%6�7J�%K�%.�0��$�$�S��):�):�;K�)L�%M�%'�)�?�>�2�>�>�s
�.BD�
D'	c��[RR5n[5=o!lSn0SS04H�n[SU"5U5nUR
U5nU(dDURURS5S5 URURS5S5 MqUR[URS55S5 M� g)Nc3�# �Sv� g7f)Nsoner\r\r2r/�
iterable_body�;HandlerTests.test_http_body_iterable.<locals>.iterable_bodys
����L�s�rG�rrrErF)
r7rr8r�r<r
r:r&rxrA)r)rMr�rcrir{r>s       r/�test_http_body_iterable�$HandlerTests.test_http_body_iterables���
�N�N�.�.�0��!�|�#��H�	��,�b�1�1�G��/���'�J�C��]�]�3�'�F��� � ��!2�!2�3C�!D�d�K�� � ��!2�!2�3F�!G�!*�,�� � ��V�%6�%6�7G�%H�!I�2�N�2r2c��[RR5n[5UlUR[
SS55nURURS5S5 URURS55 g)Nrr\rErFr)r7rr8r�r<r:r
r&rxrvrr)r)rMr{s   r/�test_http_body_empty_seq�%HandlerTests.test_http_body_empty_seqse���N�N�.�.�0���<����m�m�G�$9�2�>�?��������(;�<�i�H�������(8�9�:r2c�:�[RR5n[5=o!l[
R
"S/SQ5n0SS04HJn[
SX45nURU5nUR[URS55S5 ML g)Nr)r9r-��rG�rr)r7rr8r�r<�arrayr
r:r&rArx)r)rMr��iterable_arrayrir{r>s       r/�test_http_body_array�!HandlerTests.test_http_body_arrays���
�N�N�.�.�0��!�|�#��H����S��3���,�b�1�1�G��/��I�C��]�]�3�'�F����S��!2�!2�3C�!D�E�b�I�2r2c�N�[RR[RR
SS5 [
5n[5nURU5 URS5 URURS5 SSS5 g!,(df   g=f)Nrd��http://www.example.com)r	�patchr�r:r��HTTPConnectionrrarWr�r&�_debuglevel�r)r�rMs   r/�#test_http_handler_global_debuglevel�0HandlerTests.test_http_handler_global_debuglevel)sl��
�Z�Z�
�
�t�{�{�9�9�<��
K�� �A��!�A�
�M�M�!��
�F�F�+�,����Q�]�]�A�.�L�
K�
K���AB�
B$c��[5n[SS9nURU5 URS5 UR	UR
S5 g)N�rcru)rrarWr�r&rxrys   r/�"test_http_handler_local_debuglevel�/HandlerTests.test_http_handler_local_debuglevel1sA������q�)��	�
�
�a��	���'�(��������*r2r�z)HTTPSConnection required for HTTPS tests.c�N�[RR[RR
SS5 [
5n[5nURU5 URS5 URURS5 SSS5 g!,(df   g=f)Nrd��https://www.example.com)r	rvr�r:r�r�rr�rWr�r&rxrys   r/�$test_https_handler_global_debuglevel�1HandlerTests.test_https_handler_global_debuglevel8sl��
�Z�Z�
�
�t�{�{�:�:�L�!�
L�� �A� �"�A�
�M�M�!��
�F�F�,�-����Q�]�]�A�.�M�
L�
L�r|c��[5n[SS9nURU5 URS5 UR	UR
S5 g)Nrmrcr�)rr�rWr�r&rxrys   r/�#test_https_handler_local_debuglevel�0HandlerTests.test_https_handler_local_debuglevelAsA�������*��	�
�
�a��	���(�)��������*r2c�v�[RR5n[5UlSn/SQnUH�n[XB5nUR
U5nURURSS5 URSS5 UR
U5nURURSS5 M� g)Nr2)z#http://example.com/foo/bar/baz.htmlz$http://example.com//foo/bar/baz.htmlz$http://example.com/foo//bar/baz.htmlz$http://example.com/foo/bar//baz.htmlr7r�zsomeproxy:3128)
r7rr8r�r<r
r:r&r<�	set_proxy)r)rMr��ds_urls�ds_url�ds_req�	np_ds_req�p_ds_reqs        r/�test_http_doubleslash�"HandlerTests.test_http_doubleslashIs���
�N�N�.�.�0���<��������F��V�*�F��
�
�f�-�I����Y�8�8��@�-�P�
���-�t�4��}�}�V�,�H����X�7�7��?��O�r2c�n�/SQn[S5nUH�nX2l[U5nURUR	5U5 URUR
=(d SUR
5 UR[UR	55RUR5 M� g)N)zhttp://example.com?foo=bar#bazz)http://example.com?foo=bar&spam=eggs#bashrerer�)r
�full_urlrr&r��fragment�query)r)r&r�rj�parseds     r/�test_full_url_setter�!HandlerTests.test_full_url_setterds���
��
�(�)���C��J��c�]�F����Q�^�^�-�s�3�
���Q�Z�Z�-�2�v���?����X�a�n�n�&6�7�=�=�v�|�|�L�r2c���[S5nU?URUR5 URUR5 UR	UR
S5 g)Nrur�)r
r�rwr�r&r)r)r�s  r/�test_full_url_deleter�"HandlerTests.test_full_url_deleter{sJ���,�-��
�J����!�*�*�%����!�*�*�%�������R�(r2c��[RR5n[5UlSn[U5nUR
U5nURURS5 URURS5 Sn[U5nUR
U5nURURS5 URURS5 g)Nzhttp://www.python.org?getspam�www.python.orgz	/?getspam�http://www.python.orgr�)
r7rr8r�r<r
r:r&rr)r)rM�	weird_urlr{r>�url_without_paths      r/�test_fixpath_in_weirdurls�&HandlerTests.test_fixpath_in_weirdurls�s���
�N�N�.�.�0���<���3�	��i� �����s�#��������&6�7�������+�6�2���&�'�����s�#��������&6�7�������"�-r2c���[RR5n[5=o!lSn[U5n[
SS0SU5nURXE5nURXV5 URUS5 [
SS0SU5nURXE5nURXV5 URUS5 [
SS	0SU5nURXE5nURXV5 URUS5 [
S
S0SU5nURURXE55 URURS5 URURXES
S045 g)
Nrr�r r�r����Accepted��zPartial contentrszBad gatewayr:)r7r�HTTPErrorProcessorr�r<r
r�r�r#�assertNotHasAttrrwr&r�r�)r)rMr�rjr{r��newrs       r/�test_errors�HandlerTests.test_errors�s=���N�N�-�-�/��!�|�#��H�#���c�l����d�B��C�0�����s�&���
�
�a�����a��)���j�"�b�#�6�����s�&���
�
�a�����a��)���/��R��=�����s�&���
�
�a�����a��)���m�R��S�9�����!�/�/�#�1�2�������&�)�������#�#�}�b�!A�Br2c�Z�[5n[RRU5n[	5Ul[
S5n[SS0S5nURU5nURURU5 URURU5 URURS5 URUR5 URX45nURUR U5 URUR"U5 URXF5 g)Nrr�r r�r�)r�r7r�HTTPCookieProcessorr�r<r
r�r�r#r�r&�origin_req_hostrv�unverifiabler�r�r�)r)�cjrMr{r�r>r�s       r/�test_cookies�HandlerTests.test_cookies�s���
�_���N�N�.�.�r�2���<����+�,����d�B��+������$���
�
�b�j�j�#�&��
�
�b�j�j�&�)�����,�,�m�<�����)�)�*����s�&���
�
�b�i�i��%��
�
�b�g�g�q�!��
�
�a�r2c��SnSn[RR5n[5=oClSGH�nSGH�n[USU-5n[
X5n[RUl	URSS5 Ub$URS[[U555 URS	S
5 U"U[5US[SU055 UR+UR,R/5U5 UR+UR,R15S5 UR,R8V
s/sHo�R;5PM nn
UR=SU5 UR=SU5 UR+UR,R8SS5 UR=S	UR,R85 UR=S	UR,R>5 GM� GM� [
U5n[RUl	U4Sjn[
USS9nSn
[RUl	U"X8S5 U
S-n
M![R R"a>n	UR%US
5 UR'U5 U	R)5 Sn	A	GN�Sn	A	ff=f![2a) UR5UR,R65 GN�f=fs sn
f![R R"aNn	UR+U
[RRR@5 U	R)5 Sn	A	OSn	A	ff=f[
USS9nSn
[RUl	U"X8SU
-5 U
S-n
M![R R"aNn	UR+U
[RRRB5 U	R)5 Sn	A	gSn	A	ff=f)N�http://example.com/a.html�http://example.com/b.html)i-r�r��3�4)Nz
blah
blah
z
http_error_%s�Nonsensezviking=withholdrGr1r��Blah�location)r�r�r.zcontent-lengthzcontent-typec
�T�URU[5SS[SU055 g)Nr�r�r�)r�r�r�)rMr{rjs   r/r��,HandlerTests.test_redirect.<locals>.redirect�s'��
���S�(�*�c�6�(�*�c�):�;�
=r2r�)r�rr9rzhttp://example.com/%d)"r7r�HTTPRedirectHandlerr�r<�getattrr
r�r�r�rtrXr.rzr�r�r�	HTTPErrorrW�assertIsNotNoner�r&r{r��
get_method�AttributeErrorrvr�ri�lowerr;r<�max_repeats�max_redirections)r)�from_url�to_urlrMr�r�r�rr{rY�xrir�r�s              r/�
test_redirect�HandlerTests.test_redirect�sG��.��,���N�N�.�.�0��!�|�#��H�,�D�,�� ��O�d�$:�;���h�-��$�<�<������z�+<�=��#��N�N�#3�S��T��^�D��+�+�F�F�;� ��3��
�D�&�&�
�F�';�<�>�� � ����!3�!3�!5�v�>�1��$�$�Q�U�U�%5�%5�%7��?�/0�e�e�m�m�<�m��7�7�9�m��<�� � �!1�7�;�� � ���9�� � ������z�!:�!2�4�� � �������7�� � �����)@�)@�A�?-�,�F�h����4�4���!'�	=��h�
�>�����4�4���	����!6�7���	����K�|�|�-�-� ��M�M�$�
�3��(�(��.��I�I�K�K��	 ��&�1��$�$�Q�U�U�Z�Z�0�1��
=��6�|�|�%�%�	����U�F�N�N�$F�$F�$R�$R�S��I�I�K�K��	���h�
�>�����4�4���	����!8�5�!@�A���	�����|�|�%�%�	����U�#�^�^�?�?�P�P�
R��I�I�K�K��	�sb�:I�*J<�K2�K7�J9�;3J4�4J9�</K/�.K/�7M#�AM�M#�N�P�:AP�Pc��Sn/SQn/SQnSn[RR5n[5=oel[U5n[RUlUHnUS-U-n	UR[RR5n
URU[5SS[SU	055 SSS5 W
RR!5 M� UH]nUS-U-nURU[5SS	[SU055 UR#UR$R'5U5 M_ g!,(df   N�=f)
Nr�)r:�httpsr)�file�imap�ldapzexample.com/b.htmlz://r�zSecurity Loopholer��That's fine)r7rr�r�r<r
r�r�r�r9rr�r�r�r��	exceptionr�r&r{r�)r)r��
valid_schemes�invalid_schemes�schemeless_urlrMr�r{r��invalid_url�cm�	valid_urls            r/�test_invalid_redirect�"HandlerTests.test_invalid_redirects ��.��.�
�0��-���N�N�.�.�0��!�|�#��H��h����4�4���%�F� �5�.�>�9�K��"�"�6�<�<�#9�#9�:�b�� � ����S�*=���[� 9�:�<�;�
�L�L��� �
&�$�F�����7�I�
���S�(�*�c�=��Z��3�4�
6����Q�U�U�/�/�1�9�=�	$�
;�:�s�)E�
E	c
��SnSn[RR5n[5=oCl[U5n[RUl[RRX5nURU[5SS[SU055 URURR!5U5 g)Nr�z/b.htmlr�r�r�)r7rr�r�r<r
r�r�r�r�urljoinr�r�r�r&r{r�)r)r��relative_urlrMr�r{r�s       r/�test_relative_redirect�#HandlerTests.test_relative_redirect$s���.�� ���N�N�.�.�0��!�|�#��H��h����4�4����L�L�(�(��?�	�	����h�j�#�}���Y�/�0�	2�������+�+�-�y�9r2c��SSKJn SSKJn U"5nU"USS5 [	SS5n[
RR5n[
RR5n[
RRU5n[XEXg5nURS5 URURRS55 g)	Nr)�	CookieJar)�interact_netscapezhttp://www.example.com/z	spam=eggsr�z%Location: http://www.cracker.com/

�Cookie)�http.cookiejarr��test.test_http_cookiejarr�rrr7r�HTTPDefaultErrorHandlerr�r�r_r�rvr{rr)	r)r�r�r��hh�hdeh�hrh�cpr�s	         r/�test_cookie_redirect�!HandlerTests.test_cookie_redirect1s���,�>�
�[���"�7��E�
$�S�*U�
V���~�~�5�5�7���n�n�0�0�2��
�^�^�
/�
/��
3���b��0��	���(�)�������*�*�8�4�5r2c�4�Sn[SSU-5n[RR5n[RR	5n[X#U5nUR
S5nURUR5UR55 g)Nz(http://www.example.com/index.html#OK

r�z
Location: ru)
rrr7rr�r�r_r�r&r��strip)r)�redirected_urlr�r�r�r�r�s       r/�test_redirect_fragment�#HandlerTests.test_redirect_fragment@sv��G��
$�S�,��*G�
H���~�~�5�5�7���n�n�0�0�2���b��,��
�V�V�,�
-���������n�&:�&:�&<�=r2c�^^^�TR[RR5 [R
RmSn[R"U5[R
lTR[[R
ST5 [S5mUUU4SjnU[R
Rl[RRS5nTRUR5S5 g)Ns(HTTP/1.1 302 Found
Location: ?query

rw)z/pathz/path?queryc�>�TRU[T55 TR"XU/UQ70UD6 SURlg)NsHTTP/1.1 200 OK

Hello!)r&�nextrr0�fakedata)�connrrj�pos�kw�
real_classr)r&s     ���r/r�3HandlerTests.test_redirect_no_path.<locals>.requestTs=������S�$�t�*�-����t�S�=�3�=�"�=�&F�D�N�N�#r2zhttp://python.org/pathzhttp://python.org/path?query)r6r7rr8r:r�rwr�fakehttpr/�iterr;r&r�)r)�	response1rr�r�r&s`   @@r/�test_redirect_no_path�"HandlerTests.test_redirect_no_pathIs����	
������1�1�2��[�[�/�/�
�E�	�%0�%9�%9�)�%D����"��������.>�
�K��,�-��	G�
.5����"�"�*�
�^�^�
#�
#�$<�
=���������&D�Er2c���"SS[RR5nU"5n[RRU5nSnUHupVUR	[U55 [R"SU-S-5UlURS5nSU-S-nURn	URX�5 SSS5 M� g!,(df   M�=f)	Nc��\rSrSrSrSrg)�4HandlerTests.test_redirect_encoding.<locals>.Handleri`c��URURU5nURRUl[R
"S5UlU$)Ns)HTTP/1.1 200 OK
Content-Length: 3

123)rj�
connection�buf�last_bufrr�)r)r{�results   r/rl�>HandlerTests.test_redirect_encoding.<locals>.Handler.http_openasE�����d�o�o�s�;�� $��� 3� 3��
�"-�"6�"6��#����
r2)rrN)r]r'r^r_rlr`r\r2r/�Handlerr`s��

r2r))s/på-dansk/s/p%C3%A5-dansk/)�/spaced%20path/r	)s
/spaced path/r	)s/?på-dansks/?p%C3%A5-dansks!HTTP/1.1 302 Redirect
Location: s

rsGET � )r7r�HTTPHandler�build_opener�subTest�reprrr�rr�r�assertStartsWith)
r)rr�rXrOr�rrr�rs
          r/�test_redirect_encoding�#HandlerTests.test_redirect_encoding]s���	�f�n�n�0�0�	��)�����,�,�W�5��
��#(��X����d�8�n�-�%0�%9�%9�"�$,�-�0��&��"�
"�;�;�'<�=��"�V�+�d�2��!�*�*���%�%�g�8�.�-�#(�-�-�s
�-AC�
C!	c���SnSn[RR5n[USS9n[	5nURXESS0U5nUR
UR5S5 g)Nr�r��HEAD�rr��Found)r7rr�r
r�r�r&r�)r)r�r�rMr{r��new_reqs       r/�test_redirect_head_request�'HandlerTests.test_redirect_head_request�sb��.��,���N�N�.�.�0���h�v�.��
�Z���$�$�S�c�7�B��G������+�+�-�v�6r2c
���Sn[US9[US94H�n[5n[RR	U5nURU5 S//n[
X55n[S5nURURS5 URU5 URURU5 URUSS4/URVs/sHo�SS	PM	 sn5 M� gs snf)
N�proxy.example.com:3128�r:)�HTTP)rlr6zhttp://acme.example.com/zacme.example.comrrlr-)�dictrr7r�ProxyHandlerrWr\r
r&rr�r=)	r)r+r�r��phrYrZr{�tups	         r/�
test_proxy�HandlerTests.test_proxy�s���$���1��t��|�+�A�� �A����,�,�Q�/�B�
�M�M�"��1�2��I�1��>�H��4�5�C����S�X�X�'9�:�
�F�F�3�K����S�X�X�q�)����x��{�K�8�9�23�'�'�:�'�3�!�A�h�'�:�
<�,��;s�C/c�(�UR[R"55nSUS'[5n[R
R
[SS95nURU5 [S5nURURS5 URU5 URURS5 [S5nURURS5 URU5 URURS5 g)	Nz
python.org�no_proxy�proxy.example.comrzhttp://www.perl.org/�www.perl.orgr�r��
�enterContextr�EnvironmentVarGuardrr7rrrrWr
r&rr��r)�envr�rr{s     r/�test_proxy_no_proxy� HandlerTests.test_proxy_no_proxy�s������	� =� =� ?�@��&��J�����
�^�^�
(�
(��3F�)G�
H��	�
�
�b���,�-��������>�2�	���s��������#6�7��-�.��������#3�4�	���s��������#3�4r2c��UR[R"55nSUS'[5n[R
R
[SS95nURU5 [S5nURURS5 URU5 URURS5 g)N�*r$r%rr�r�r'r*s     r/�test_proxy_no_proxy_all�$HandlerTests.test_proxy_no_proxy_all�s������	� =� =� ?�@����J�����
�^�^�
(�
(��3F�)G�
H��	�
�
�b���-�.��������#3�4�	���s��������#3�4r2c	��[5n[RR[	SS95nURU5 S//n[
X5n[S5nURURS5 URU5 URURS5 URUSS4/URVs/sHofSSPM	 sn5 gs snf)	Nr�r�)r�r6�https://www.example.com/�www.example.comrr�r-)rr7rrrrWr\r
r&rr�r=)r)r�rrYrZr{r s       r/�test_proxy_https�HandlerTests.test_proxy_https�s������
�^�^�
(�
(��4L�)M�
N��	�
�
�b��
.�/�
�	�-�Q�:���0�1��������#4�5�	���s��������#;�<����8�A�;��5�6�./�g�g�6�g�s�a��(�g�6�	8��6s�C
c���[5n[RR[	SS95nURU5 [
5nURU5 [S5nURSS5 URSS5 URURS5 URUR5 URU5 URS	URR 5 UR#S
URR 5 UR%UR5 URURS5 URUR'S5S5 g)Nrr3r4�Proxy-Authorization�FooBar�
User-Agent�Grailr5)r9r:)r;r<�Proxy-authorization)rr7rrrrWr�r
rtr&rrwrr�r;rfrrWr�rx)r)r�r�
https_handlerr{s     r/�$test_proxy_https_proxy_authorization�1HandlerTests.test_proxy_https_proxy_authorization�s#�����
�^�^�
(�
(��4L�)M�
N��	�
�
�b��(�*�
�	�
�
�m�$��0�1�����,�h�7����|�W�-�������#4�5����#�*�*�+�	���s��	
���:�&�/�/�;�;�	=��
�
�-�#�,�,�8�8�	:����S�-�-�.�������#;�<�������(=�>��Ir2rzonly relevant for Windowsc�`�Sn[nSHnURU"X15SU-5 M  SHnURU"X15SU-5 M  SnURU"SU5SW-5 URU"SU5SU-5 S	HnURU"X15S
U-5 M  g)Nz*www.example.com;*.example.net; 192.168.0.1)r5zwww.example.netz192.168.0.1z expected bypass of %s to be true)r�zwww.example.org�example.netz192.168.0.2�!expected bypass of %s to be Falsezexample.com; <local>r�rB)�testrz.expect <local> to bypass intranet address '%s')rrqrv)r)�proxy_override�proxy_bypassrs    r/�test_winreg_proxy_bypass�%HandlerTests.test_winreg_proxy_bypass�s���E��4��I�D��O�O�L��>�>��E�
G�J�$�D����\�$�?�@�4�G�
I�$�0������]�N�C�:�T�A�	C�����m�^�D�<�t�C�	E�)�D��O�O�L��>�L�"�#�
$�*r2�darwinzonly relevant for OSXc�|�S/SQS.nSH!nUR[X!5SU-5 M# SH!nUR[X!5SU-5 M# S/S.nUR[S	U55 SS
S/S.nSnUR[X!5SU-5 S
nUR[X!5SU-5 g)NF)�foo.barz	*.bar.com�	127.0.0.1z10.10z10.0/16)�exclude_simple�
exceptions)rKzwww.bar.comrLz	10.10.0.1z10.0.0.1z expected bypass of %s to be True)zabc.foo.barzbar.comz	127.0.0.2z	10.11.0.1�notinbypassrCTrDz10.0.0.0/40z172.19.10.0/24z172.19.10.5z10.0.1.5)rqrrv)r)�bypassrs   r/�test_osx_proxy_bypass�"HandlerTests.test_osx_proxy_bypass�s���$�&�
��!�D��O�O�8��F�>��E�
G�!�
�D����9�$�G�@�4�G�
I��%)��;�����4�V�V�D�E�$�)�+;�=�
�������4�T�B�:�T�A�	C������5�d�C�;�d�B�	Dr2c�l�URX!S9 [5n[5n[RRU5nSR
U5S-n[SU5nURU5 URU5 URX5SX'USS5 SSS5 g!,(df   g=f)N)r�riz
r|�r��!http://acme.example.com/protected)
r
rr�r7rr�joinrrrW�_test_basic_auth)r)rir�rX�password_manager�auth_handlerr�http_handlers        r/�check_basic_auth�HandlerTests.check_basic_auths���
�\�\��\�
7�#�%�F�2�4��!�>�>�>�>�?O�P�L��;�;�w�'�*�4�D�2�3��=�L����|�,����|�,��!�!�&��"'�7G�"E�"E�
G�8�
7�
7�s�BB%�%
B3c
���SnSnSUS3nSUS3nSnSUS3nSUS3SUS3SUS	3US
U3US
U3US
U3US
U3US
U34HnSU3/nURX�5 M [R"S[45 S
U3/nURX�5 SSS5 X4/X6/Xc/4H)n	U	V
s/sHn
SU
3PM
 nn
URX�5 M+ g!,(df   ND=fs sn
f)Nzrealm2@example.comz
Basic realm="�"zOtherscheme xxxzDigest realm="zn", qop="auth, auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41"z
Basic realm='�'z", charset="UTF-8"z, zWWW-Authenticate: zBasic Auth Realm was unquotedzWWW-Authenticate: Basic realm=)r[r�check_warnings�UserWarning)r)r��realm2�basic�basic2�other_no_realm�digest�	realm_strri�
challenges�	challenges           r/�test_basic_auth�HandlerTests.test_basic_auth%s���$��%����w�a�(�� ����*��*��"�6�(�+>�?���E�7�!�$��E�7�!�$��E�7�"4�5��g�R��x� ��g�R��'�(���b���(��g�R��x� ��h�b��� �
�I�,�I�;�7�8�G��!�!�'�1�!
�&�
+�
+�-L�%0�-2�3�7��w�?�@�G��!�!�'�1�3���
��
�O�
�J�)3�4�(2�9�,�I�;�7�(2�
�4��!�!�'�1�
�3�3��4s�C�1C)�
C&c
�j�[5n[RR[	SS95nURU5 [
5n[RRU5nSn[SSU-5nURU5 URU5 URXSXVUSS5 g)Nrr�
ACME Networksi�z(Proxy-Authenticate: Basic realm="%s"

r=z&http://acme.example.com:3128/protected)
rr7rrrrWr��ProxyBasicAuthHandlerrrrW)r)rXrrXrYr�rZs       r/�test_proxy_basic_auth�"HandlerTests.test_proxy_basic_authRs����!��
�^�^�
(�
(��3K�)L�
M�����2��.�0���~�~�;�;�<L�M����.��?�%�G�I�����<�(����<�(����f�4I�#�3C�F�6�	 r2c
���"SS[5n"SS[RR5n"SS[RR5nU"5n[5nU"U5nU"U5nSn[
SS	U-5n	URU5 URU5 URU	5 URXGS
X�USS5 URURSS
/S-5 g)Nc� �\rSrSrSrSrSrg)�QHandlerTests.test_basic_and_digest_auth_handlers.<locals>.RecordingOpenerDirectorilc�>�[R"U5 /Ulgr�)rr��recordedr�s r/r��ZHandlerTests.test_basic_and_digest_auth_handlers.<locals>.RecordingOpenerDirector.__init__ms���'�'��-� "��
r2c�:�URRU5 gr�)rur>)r)r�s  r/�record�XHandlerTests.test_basic_and_digest_auth_handlers.<locals>.RecordingOpenerDirector.recordqs���
�
�$�$�T�*r2)ruN)r]r'r^r_r�rxr`r\r2r/�RecordingOpenerDirectorrsls��
#�
+r2rzc��\rSrSrSrSrg)�OHandlerTests.test_basic_and_digest_auth_handlers.<locals>.TestDigestAuthHandleritc��URRS5 [RRR
"U/UQ70UD6 g)Nrf)r<rxr7r�HTTPDigestAuthHandler�http_error_401�r)r�rCs   r/r�^HandlerTests.test_basic_and_digest_auth_handlers.<locals>.TestDigestAuthHandler.http_error_401usA�����"�"�8�,����4�4�C�C�D�L�>B�L�FJ�Lr2r\N�r]r'r^r_rr`r\r2r/�TestDigestAuthHandlerr|ts��
Lr2r�c��\rSrSrSrSrg)�NHandlerTests.test_basic_and_digest_auth_handlers.<locals>.TestBasicAuthHandlerizc��URRS5 [RRR
"U/UQ70UD6 g)Nrc)r<rxr7rrrr�s   r/r�]HandlerTests.test_basic_and_digest_auth_handlers.<locals>.TestBasicAuthHandler.http_error_401{sA�����"�"�7�+����3�3�B�B�4�K�=A�K�EI�Kr2r\Nr�r\r2r/�TestBasicAuthHandlerr�zs��
Kr2r�rmrT�&WWW-Authenticate: Basic realm="%s"

r�rUrfrcr-)rr7rr~rr�rrrWrWr&ru)
r)rzr�r�rXrX�digest_handler�
basic_handlerr�rZs
          r/�#test_basic_and_digest_auth_handlers�0HandlerTests.test_basic_and_digest_auth_handlerscs���	+�n�	+�	L�F�N�N�$H�$H�	L�	K�6�>�>�#F�#F�	K�)�*��.�0��.�/?�@��,�-=�>�
���.��=��E�G�����=�)����>�*����<�(�	
���f�_�#�3C�A�A�	 �	
������8�W�*=�a�*?�@r2c���[5n[RRS5n[	SS5nURU5 URU5 UR
[URS5 g)NrTzWWW-Authenticate: Kerberos

ru)	rr7rr~rrrWr9r:r�)r)rX�digest_auth_handlerrZs    r/�$test_unsupported_auth_digest_handler�1HandlerTests.test_unsupported_auth_digest_handler�sc���!��$�n�n�B�B�4�H��.��5�7�����.�/����<�(����*�f�k�k�3K�Lr2c���[5n[RRS5n[	SS5nURU5 URU5 UR
[URS5 g)NrTzWWW-Authenticate: NTLM

ru)	rr7rrrrrWr9r:r�)r)rX�basic_auth_handlerrZs    r/�#test_unsupported_auth_basic_handler�0HandlerTests.test_unsupported_auth_basic_handler�sc���!��#�^�^�@�@��F��.��1�3�����-�.����<�(����*�f�k�k�3K�Lr2c	��SSKn	Sup�URXGX�5 URXFR5 URXvR5 URX�R
5 URX�R5 URU5 URURU5 URURU5 UR[UR5S5 URURSRU55 [U
<SU<3S5nSU	RU5R!5R#5-n
URURSR%U5U
5 URURSR&UU
5 S=UlUlUR)5 URU5 UR[UR5S5 URURSRU55 g)Nr��wile�coyoter-�:�asciizBasic r9)�base64r�r&r�rjr�r�r�r�r�r.ryrvrr�bytes�encodebytesr��decoderxr<ru)r)rXrY�auth_headerr�rZrX�request_url�
protected_urlr�r�r��userpass�auth_hdr_values              r/rW�HandlerTests._test_basic_auth�s���	�)���	�!�!�%�d�E����� 6� 6�7�����&:�&:�;�����4�4�5�����#<�#<�=����K� �	
���)�6�6��>����)�4�4�m�D�	
����\�2�2�3�Q�7�����.�.�q�1�<�<�[�I�J��D�(�3�W�=��"����x�(�.�.�0�7�7�9�:������.�.�q�1�<�<�[�I�'�	)�����.�.�q�1�C�C�K�P�'�	)�=A�@��� 0� 9��������K� �����\�2�2�3�Q�7�����.�.�q�1�<�<�[�I�Jr2c���SupSn[S5n[5n[U5nURSX1USS9 UR	URU55 UR	URUS-55 UR
URUS-55 [5nURU5 URU5 URU5 UR	UR5 g)Nr�rUr�T)�is_authenticatedz/nested�plain)r�r
rr�rqr�rvrrWr�r�)r)r�r�r�rZ�pwd_manager�auth_prior_handlerrXs        r/�test_basic_prior_auth_auto_send�,HandlerTests.test_basic_prior_auth_auto_send�s���*���9��/��4��2�4��1�+�>���'�'��+�X��	(�	F�	
����4�4�[�A�B�����4�4�[�9�5L�M�N�����5�5�k�G�6K�L�M��!�����-�.����<�(����K� �	
����4�4�5r2c�~�SupSnSn[5n[U5nURXCX5 URU5nUR	U5 [5nUR
U5 [SSS-5n	UR
U	5 URU5 URU5nURU5 [S5n	UR	U	R5 [5nUR
U5 UR
U	5 URU5 URU	R5 g)Nr�rU�ACMErTr�r�)r
rr�r�rvrrWrrr�rqr�r�)
r)r�r�r�r�r�r��is_authrXrZs
          r/�.test_basic_prior_auth_send_after_first_success�;HandlerTests.test_basic_prior_auth_send_after_first_success�s��*���9����2�4��1�+�>���'�'��D�K��.�.�{�;������!��!�����-�.�.��=��D�F�����<�(����K� ��.�.�{�;������ �/��4������5�5�6��!�����-�.����<�(�	���K� �	
����4�4�5r2c���SH�upSRU5n[R"UR5U-5n[R
R
5n[S5nSUlURXF5nUR5 SSS5 URURRSRU55 M� g!,(df   NH=f)z=Test the connection is cleaned up when the response is closed))zConnection: close�data)zTransfer-Encoding: chunkeds4
data
0

)zContent-Length: 4r�zHTTP/1.1 200 OK
{}

�
http://dummy/NzConnection not closed with {!r})�formatrr��encoder7rr8r
r�rjrArq�fakesock�closed)r)�transferr��headerr�r�r{�resps        r/�test_http_closed�HandlerTests.test_http_closeds���!
��X�
5�;�;�H�E�F��'�'��
�
��$�(>�?�D��n�n�8�8�:�G��/�*�C��C�K�����+�t��	�	��,��O�O�D�M�M�0�0�1�8�8��B�
D�!
�,�+�s�C�
C"	c��[R"S5n[RR	5n[S5nSUlUR[RR5 URX5 SSS5 URURRS5 g!,(df   N5=f)z;Test the connection is cleaned up after an invalid responser2r�NzConnection not closed)rr�r7rr8r
r�r9r:r��
BadStatusLinerjrqr�r�)r)r�r�r{s    r/�test_invalid_closed� HandlerTests.test_invalid_closed"s����#�#�C�(���.�.�4�4�6���o�&�����
�
�
�t�{�{�8�8�
9��O�O�D�&�:�����
�
�,�,�.E�F�:�
9�s�0B1�1
B?r\N)<r]r'r^r_rr+r?rOrSrr_rfrirqrzr�unittest�
skipUnlessrMr:r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr!r,r0r6r?r#r$rGrX�platformrQr[rjror�r�r�rWr�r�r�r�r`r\r2r/r�r��s���?�BZ5�x@C�DE�2�.��)��)�,O�(;�J�/�+��������.?�@�Bm�n�/�o�/��������.?�@�Bm�n�+�o�+�P�6M�.)�.�&C�2�"K�Z>�0:�
6�>�F�(!9�F7�<�$
5�	5�8� �������.?�@�Bm�n�J�o�J�.������D��*E�F�$�G�$�.�������1�3J�K�D�L�D�BG�+2�Z �"0A�dM�M�#K�J6�6&6�PD�"Gr2r�c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�	MiscTestsi-c�b^�UR[U4SjUR555 g)Nc3�B># �UHnURT:Hv� M g7fr�rp)�.0rM�
handler_classs  �r/�	<genexpr>�/MiscTests.opener_has_handler.<locals>.<genexpr>0s!����6�%4���K�K�=�8�%4�s�)rq�anyrZ)r)rXr�s  `r/�opener_has_handler�MiscTests.opener_has_handler/s'�������6�%+�_�_�6�6�	7r2c��"SS[RR5n"SS[RR5n"SS[RR5n[RRnU"X#5nURXR5 URXS5 U"X#"55nURXR5 URXS5 U"U5nURXQ5 U"5nURU[RR5 U"[RR5nURU[RR5 U"[RR55nURU[RR5 "SS[RR5nU"X5nURXQ5 URXV5 g)	Nc��\rSrSrSrg)�2MiscTests.test_build_opener.<locals>.MyHTTPHandleri4r\NrTr\r2r/�
MyHTTPHandlerr�4rVr2r�c��\rSrSrSrSrg)�/MiscTests.test_build_opener.<locals>.FooHandleri7c��gr�r\r�s r/�foo_open�8MiscTests.test_build_opener.<locals>.FooHandler.foo_open8r�r2r\N)r]r'r^r_r�r`r\r2r/�
FooHandlerr�7���
r2r�c��\rSrSrSrSrg)�/MiscTests.test_build_opener.<locals>.BarHandleri;c��gr�r\r�s r/�bar_open�8MiscTests.test_build_opener.<locals>.BarHandler.bar_open<r�r2r\N)r]r'r^r_r�r`r\r2r/�
BarHandlerr�;r�r2r�c��\rSrSrSrg)�7MiscTests.test_build_opener.<locals>.MyOtherHTTPHandleriXr\NrTr\r2r/�MyOtherHTTPHandlerr�XrVr2r�)r7rr�BaseHandlerrr�)r)r�r�r�rr�r�s       r/�test_build_opener�MiscTests.test_build_opener3s���	�F�N�N�6�6�	�	����3�3�	�	����3�3�	��~�~�2�2����0������.�����.�
��Z�\�2������.�����.�
��'������1�
�N������6�>�>�#=�#=�>�����3�3�4������6�>�>�#=�#=�>�����3�3�5�6������6�>�>�#=�#=�>�	����!;�!;�	�
��;������1�����6r2c��SnS=n=p4Sn[RRX#XU5nURUS5 UR	UR
S5 URUS5 UR	URS5 SUR<SUR<3nUR	[U5U5 SUR<SUR<S	3nUR	[U5U5 UR5 g)
z}
Issue 13211 reveals that HTTPError didn't implement the URLError
interface even though HTTPError is a subclass of URLError.
zsomething bad happenedNzContent-Length: 42rUrizHTTP Error z: z<HTTPError �>)r7rr��
assertHasAttrr&rUrir�r�rXrr�)r)r�rjr�r�r=rY�expected_errmsgs        r/�test_HTTPError_interface�"MiscTests.test_HTTPError_interface_s���
'������d�#���l�l�$�$�S��2�>�����3��)�������%=�>����3�	�*�������&:�;�14���3�7�7�C������S��?�3�25�(�(�C�G�G�D������c��O�4��	�	�r2c��[RRSSSSS5nUR[	USS5S5 URURR5[5 UR5 g)Nrji�zMETHOD NOT ALLOWED�	__notes__r\)
r7rr�r&r�r�r�rAr�r�)r)r�s  r/�
test_gh_98778�MiscTests.test_gh_98778rs[���L�L�"�"�5�#�/C�T�4�P�������K��4�b�9����a�d�d�i�i�k�5�1�	���	r2c��/SQnUH up#UR[U5U5 M" UR[[S54 g)N)�r%)NNNr%�r)NNNrr�r�)zjoe:password@proxy.example.com)Nr�r�r%)z#joe:password@proxy.example.com:3128)Nr�r�r)zhttp://proxy.example.com/)r:NNr%)zhttp://proxy.example.com:3128/)r:NNr)z&http://joe:password@proxy.example.com/�r:r�r�r%)z*http://joe:password@proxy.example.com:3128)r:r�r�r)z1ftp://joe:password@proxy.example.com/rubbish:3128)rr�r�r%)z%http://joe:password@proxy.example.comr�)z&http://user/name:password@localhost:22)r:�	user/namer��localhost:22)z&http://username:pass/word@localhost:22)r:�username�	pass/wordr�)z'http://user/name:pass/word@localhost:22)r:r�r�r�zfile:/ftp.example.com)r&rr9r:)r)�parse_proxy_test_cases�tcr�s    r/�test_parse_proxy�MiscTests.test_parse_proxyxsF��$"
��N3�L�B����\�"�-�x�8�3�	
���*�l�4K�L�Mr2c���[5nUR[5nURS5 SSS5 UR	[WR5S5 g!,(df   N4=f)N�invalidz5Unsupported digest authentication algorithm 'invalid')rr9r:�get_algorithm_implsr&rXr�)r)r��excs   r/�test_unsupported_algorithm�$MiscTests.test_unsupported_algorithm�sS��+�-��
�
�
�z�
*�c��'�'�	�2�+������
�
��C�	
�+�
*�s�A � 
A.r\N)r]r'r^r_r�r�r�r�r�rr`r\r2r/r�r�-s#��7�*7�X�&�+N�Z
r2r�c�~�\rSrSr"SS\5rSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrg)�RequestTestsi�c��\rSrSrSrSrg)�RequestTests.PutRequesti��PUTr\N)r]r'r^r_rr`r\r2r/�
PutRequestr�s���r2rc��[S5Ul[SSSS0S9Ul[SSS9UlUR	S5UlUR	SSS9Ulg)	N�http://www.python.org/~jeremy/r�zX-TestrDrhrrr/)r
r
�post�headr�put�
force_postr�s r/�setUp�RequestTests.setUp�sf���;�<����<�"�%-�v�$6�8��	��<�V�L��	��?�?�#C�D����/�/�*J��*���r2c��URSURR55 URSURR55 URSURR55 URSUR
R55 URSURR55 g)Nr/r.rr)r&rr�r
rr
rr�s r/�test_method�RequestTests.test_method�s����������!5�!5�!7�8�������� 3� 3� 5�6��������!5�!5�!7�8�������� 3� 3� 5�6��������!;�!;�!=�>r2c�b�URURR5 URSURR	55 SURlURURR5 URSURR	55 g)Nr.r�r/)rvr
r�r&r�rqr�s r/�	test_data�RequestTests.test_data�sq����������'�������� 3� 3� 5�6�����
�������
�
�&��������!4�!4�!6�7r2c�H�URSURR5 URRSS5 UR	SURRS5 SURlURSURR5 g)Nr�*r�)r;r
r<rzr&r�r�s r/�.test_setting_data_should_remove_content_length�;RequestTests.test_setting_data_should_remove_content_length�sx�����)�4�8�8�+E�+E�F����(�(�)9�2�>�����T�X�X�7�7�8H�I�J�����
����)�4�8�8�+E�+E�Fr2c�`�URSURR5 SURlURR	SS5 URSURRS5 UR?URSURR5 g)Nrr�rl)r;r
r<r�rzr&r�s r/�/test_deleting_data_should_remove_content_length�<RequestTests.test_deleting_data_should_remove_content_length�s������)�4�8�8�+E�+E�F�����
����(�(�)9�1�=�����D�H�H�6�6�7G�H�I��H�H�M����)�4�8�8�+E�+E�Fr2c�X�URSURR55 g)Nr
)r&r
r�r�s r/�test_get_full_url�RequestTests.test_get_full_url�s#�����9����.�.�0�	2r2c��URSURR5 [S5nURSUR5 g)Nz	/~jeremy/zhttp://www.python.org/r4)r&r
rr
rks  r/�
test_selector�RequestTests.test_selector�s;������d�h�h�&7�&7�8��.�/������c�l�l�+r2c�P�URSURR5 g)Nr:)r&r
r$r�s r/�
test_get_type�RequestTests.test_get_type�s�����������/r2c�P�URSURR5 g)Nr�)r&r
rr�s r/�
test_get_host�RequestTests.test_get_host�s�����)�4�8�8�=�=�9r2c�R�[S5nURSUR5 g)Nzhttp://www.%70ython.org/r��r
r&rrks  r/�test_get_host_unquote�"RequestTests.test_get_host_unquote�s"���0�1�����)�3�8�8�4r2c�x�URURR55 URRSS5 UR	URR55 URSURR5 URSURR5 g)Nr&r:r�)rvr
�	has_proxyr�rqr&r�rr�s r/r!�RequestTests.test_proxy�s}��������+�+�-�.������>�6�2�������*�*�,�-����)�4�8�8�+C�+C�D����������7r2c�R�[S5nURSUR5 g)Nz<URL:http://www.python.org>r�r+rks  r/�test_wrapped_url�RequestTests.test_wrapped_url�s"���3�4�����)�3�8�8�4r2c��[S5nURSUR5 [S5nURSUR5 Sn[U5nURUR5U5 g)N�-http://www.python.org/?qs=query#fragment=truez
/?qs=queryzhttp://www.python.org/#fun=truer4�.http://docs.python.org/library/urllib2.html#OK)r
r&rr�)r)r{rjs   r/�test_url_fragment�RequestTests.test_url_fragment�si���E�F������s�|�|�4��7�8������c�l�l�+�?���c�l������)�)�+�S�1r2c��/SQnUH8n[U5nURUR5UR5 M: g)N)zhttp://docs.python.orgr6r5)r
r&r�r�)r)r&rjr{s    r/�test_url_fullurl_get_full_url�*RequestTests.test_url_fullurl_get_full_urls<��A���C��#�,�C����S�-�-�/����>�r2)rr
rrr
N)r]r'r^r_r
rrrrrrrr"r%r(r,r!r2r7r:r`r\r2r/rr�sV���W���?�8�G�G�2�,�
0�:�5�8�5�	2�?r2r�__main__)Er�rDr�test.supportrrr�test.support.testcaserrr	r#r�r�rorXrIrZ�urllib.requestr7r
rrr
rrrr�urllib.parserr��http.clientr:�requires_working_socket�TestCaserrbr�r�rr�r�r�r�r��IOBaser�rr&r\r_rrrar�rrrMr��HTTPSHandlerr�r�r�r�r�r�r�rr]�mainr\r2r/�<module>rGs�����"�,�(�1���	�	�
��
����7�7�7�
"������t�,�1,�8�$�$�1,�hx'�x�(�(�x'�v,�,�
�
�#�$�#�
	�2�;�;�	�3�3�?�?��r�y�y��$*
�*
�Z38�38�l�D�0�f�n�n�0�0�0�H�f�n�n�8�8�H�8�4�;�;�)�*�*�	4�6�>�>�6�6�	4�Q�v�~�~�9�9�Q�&
(�
(�NA�(�+�+�NA�b�RG�8�$�$�o�RG�j"
��!�!�?�
�D^?�8�$�$�^?�B�z���M�M�O�r2

Youez - 2016 - github.com/yon3zu
LinuXploit