
    0                       S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSKrSSKrSSKJr  SSKrSSKJr  SSKJrJr  SSKJrJrJrJrJrJrJr  SSKJ r J!r!  SS	K"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/  SS
K"J0r1  SSK"JrJ2r2J3r3  SSK4J5r5  SSK6J7r7J8r8  SSK9J:r:  SSK;J<r<  SSK=J>r>  SSK?J@r@  SSKAJBrBJCrC  SSKDJErE  SrFSrG SSKHJIrI  CISrJ \R                    SrM " S S5      rO " S S5      rP " S S5      rQ " S  S!5      rR " S" S#5      rS\R                  " S$S%5      rU " S& S'\:5      rVS( rWS) rX\R                  R                  S*/ S+Q5      S, 5       r[\R                  R                  S-S.5      S/ 5       r\\R                  R                  S0SS1S2S3\5" 5       S4.S1S2S3\5" 5       S5S60S7.S1S8S9.45      S: 5       r]S; r^S< r_ " S= S>5      r`S? rag! \K a    SrJ GN
f = f! \N a    SrM GN
f = f)@zTests for Requests.    N)mock)Timeout)HTTPAdapter)HTTPDigestAuth_basic_auth_str)JSONDecodeErrorMorselMutableMappingbuiltin_str	cookielib
getproxiesurlparse)cookiejar_from_dictmorsel_to_cookie)ChunkedEncodingErrorConnectionErrorConnectTimeoutContentDecodingErrorInvalidHeaderInvalidProxyURLInvalidSchema
InvalidURLMissingSchema
ProxyErrorReadTimeoutRequestException
RetryError)SSLError)r   TooManyRedirectsUnrewindableBodyError)default_hooks)PreparedRequest	urlencode)SessionRedirectMixinCaseInsensitiveDict   )SNIMissingWarning)StringIO)	TLSServerconsume_socket_content)override_environzhttp://10.255.255.1http://localhost:1)
SSLContextTFc                      \ rS rSrSrS r\R                  R                  S\	S4\
S4\
S4\
S4\S	4\S
4\S445      S 5       rS r\R                  R                  SS5      S 5       r\R                  R                  SS5      S 5       r\R                  R                  SS5      S 5       rS rS r\R                  R                  SS5      S 5       rS rS rS rS r\R                  R                  SS5      S 5       rS  rS! rS" rS# rS$ rS% rS& rS' r S( r!S) r"S* r#S+ r$S, r%S- r&S. r'S/ r(S0 r)S1 r*S2 r+S3 r,S4 r-S5 r.S6 r/S7 r0S8 r1S9 r2S: r3S; r4S< r5S= r6S> r7\R                  R                  S?S@5      SA 5       r8SB r9SC r:SD r;\R                  R                  SESFSGRy                  5       SHRy                  5       4SISJ45      SK 5       r=SL r>\R                  R                  SMSN\?4SO\?4SP\445      SQ 5       r@SR rASS rBST rCSU rDSV rESW rFSX rGSY rH\R                  R                  SZS[5      S\ 5       rIS] rJS^ rKS_ rLS` rMSa rNSb rOSc rPSd rQSe rRSf rSSg rTSh rUSi rVSj rWSk rXSl rY\R                  R                  SmSnSoSp04SnSpSp04SnSpSp04SnSoSo04SqSoSo0445      Sr 5       rZSs r[St r\Su r]Sv r^\R                  R                  Sw0 Sx4SySz0Sz4SyS{0Sx4S|Sz0Sz4S|S{0Sx4S{S{S}.Sx4SzS~S}.Sz4S{S~S}.S~445      S 5       r_S r`\R                  R                  \bSL SS9S 5       rcS rdS reS rfS rg\R                  R                  SSS0SSRy                  5       0SS0SS045      S 5       rhS riS rjS rkS rlS rmS rnS roS rpS rqS rrS rsS rtS ruS rvS rwS rxS ryS rzS r{S r|S r}S r~S rS rS rS rS rS rS r\R                  R                  S\GR                  GR                  \" 5       \4\GR                  GR                  \" 5       \4\GR                  GR                  S\?4\GR                  GR                  \" 5       \445      S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R                  R                  SSoS0So4SSoS00S4SSoS/0S445      S 5       r\R                  R                  SSoS0SoS0SoS0SoS0SS0SS0SS0SS045      S 5       r\R                  R                  SSS0SS0SS0SoS0SoS0SoS0SS045      S 5       rS r\R                  R                  SSoS\" S5      45      S 5       rS rS rS rS rS rS rS rS rS rS rS r\R                  R                  SS5      S 5       rS rS rS rS rS rS rS rS rS r\R                  R                  SSSGRy                  5       SHRy                  5       S445      S 5       rS rS rS rS rS rS r\R                  GR                  S 5       rS rS rGS  rGS rGS rGS rGS rGS rGS rGSrg(  TestRequestsP   )MD5zSHA-256zSHA-512c                 L   [         R                    [         R                  " 5       R                    [         R                  " 5       R                    [         R                    [         R                    [         R                    [         R
                    [         R                    SSKJn  g )Nr   )PoolManager)	requestssessiongetheadputpatchpost%requests.packages.urllib3.poolmanagerr4   )selfr4   s     ;platform/gsutil/third_party/requests/tests/test_requests.pytest_entry_pointsTestRequests.test_entry_pointsS   sU    E    zexception, urlhiwpefhipowhefopwzlocalhost:3128zlocalhost.localdomain:3128/z10.122.1.1:3128/http://zhttp://*example.comzhttp://.example.comc                     [         R                  " U5         [        R                  " U5        S S S 5        g ! , (       d  f       g = fNpytestraisesr5   r7   )r=   	exceptionurls      r>   test_invalid_urlTestRequests.test_invalid_url_   s(     ]]9%LL &%%s	   7
Ac                     [         R                  " 5       nSUl        SS0Ul        UR	                  5       nUR                  UR                  :X  d   eUR
                  S:X  d   eg )Nzhttp://kennethreitz.org/life42zlife=42)r5   RequestrJ   datapreparebody)r=   reqprs      r>   test_basic_building TestRequests.test_basic_buildingo   sU     ,D>[[]vv   ww)###rA   method)GETHEADc                     [         R                  " X!" UR                  5       5      5      R                  5       nSUR                  ;  d   eg )NContent-Lengthr5   rP   lowerrR   headersr=   httpbinrX   rT   s       r>   test_no_content_length#TestRequests.test_no_content_lengthx   s:    vwv||~'>?GGIs{{222rA   )POSTPUTPATCHOPTIONSc                     [         R                  " X!" UR                  5       5      5      R                  5       nUR                  S   S:X  d   eg )Nr\   0r]   r`   s       r>   test_no_body_content_length(TestRequests.test_no_body_content_length}   s@    vwv||~'>?GGI{{+,333rA   c                     [         R                  " X!" UR                  5       5      SS9R                  5       nUR                  S   S:X  d   eg )N rQ   r\   ri   r]   r`   s       r>   test_empty_content_length&TestRequests.test_empty_content_length   sB    vwv||~'>RHPPR{{+,333rA   c                     SS0n[         R                  " SU" S5      US9R                  5       nSUR                  ;   d   eUR                  S   S:X  d   eg )Nr\   znot zerord   r;   r_   r5   rP   rR   r_   )r=   ra   r_   rs       r>   test_override_content_length)TestRequests.test_override_content_length   sW    #Z0VWV_gFNNP199,,,yy)*j888rA   c                 r    [         R                  " SS5      R                  5       nUR                  S:X  d   eg )NrY   zhttp://0.0.0.0/get/test casez/get/test%20case)r5   rP   rR   path_urlr=   requests     r>   test_path_is_not_double_encoded,TestRequests.test_path_is_not_double_encoded   s3    ""5*HIQQS#5555rA   zurl, expected))z http://example.com/path#fragmentz$http://example.com/path?a=b#fragment)z*http://example.com/path?key=value#fragmentz.http://example.com/path?key=value&a=b#fragmentc                 t    [         R                  " SUSS0S9R                  5       nUR                  U:X  d   eg )NrY   abparamsr5   rP   rR   rJ   )r=   rJ   expectedrz   s       r>   %test_params_are_added_before_fragment2TestRequests.test_params_are_added_before_fragment   s7     ""5#sCjAIIK{{h&&&rA   c                     [         R                  " S5      n[        R                  " 5       n[        R                  " SSUS9nUR                  U5      nUR                  S:X  d   eg )N))zr'   )r~   r'   )kr'   )dr'   rY   http://example.com/r   z#http://example.com/?z=1&a=1&k=1&d=1)collectionsOrderedDictr5   SessionrP   prepare_requestrJ   )r=   param_ordered_dictr6   rz   preps        r>   2test_params_original_order_is_preserved_by_default?TestRequests.test_params_original_order_is_preserved_by_default   sd    (444
 ""$""(1C
 &&w/xx@@@@rA   c                 p    [         R                  " SSSS9R                  5       nUR                  S:X  d   eg )NrY   http://example.coms   test=foor   zhttp://example.com/?test=foor   ry   s     r>   test_params_bytes_are_encoded*TestRequests.test_params_bytes_are_encoded   s9    ""'

') 	 {{<<<<rA   c                     [         R                  " SSSR                  5       S9R                  5       n[	        UR
                  [        5      (       d   eg )Nre   r   u   ööörn   )r5   rP   encoderR   
isinstancerS   bytesry   s     r>   test_binary_putTestRequests.test_binary_put   sD    ""'hoo.?

') 	 ',,....rA   c                 r    [         R                  " SS5      R                  5       nUR                  S:X  d   eg )NrY   z http://example.comr   r   ry   s     r>   %test_whitespaces_are_removed_from_url2TestRequests.test_whitespaces_are_removed_from_url   s1    ""5*?@HHJ{{3333rA   scheme)rC   HTTP://zhTTp://zHttP://c                 D   [         R                  " 5       n[        5       Ul        [	        U" S5      5      nX$R
                  -   UR                  -   n[         R                  " SU5      nUR                  UR                  5       5      nUR                  S:X  d
   SU 35       eg )Nr7   rY      zfailed for scheme )r5   r   r   proxiesr   netlocpathrP   sendrR   status_code)r=   ra   r   spartsrJ   rt   s          r>   !test_mixed_case_scheme_acceptable.TestRequests.test_mixed_case_scheme_acceptable   s    L	(||#ejj0UC(FF199;}}#B'9&%BB#rA   c                     [         R                  " SU" S5      5      n[         R                  " 5       n[        5       Ul        UR                  UR                  5       5      nUR                  S:X  d   eg NrY   r7   r   )r5   rP   r   r   r   r   rR   r   r=   ra   rt   r   s       r>    test_HTTP_200_OK_GET_ALTERNATIVE-TestRequests.test_HTTP_200_OK_GET_ALTERNATIVE   sU    UGEN3L	FF199;}}###rA   c                     [         R                  " U" SS5      5      nUR                  S:X  d   eUR                  S   R                  S:X  d   eUR                  S   R                  (       d   eg )Nredirect1r   r   .  )r5   r7   r   historyis_redirectr=   ra   rt   s      r>    test_HTTP_302_ALLOW_REDIRECT_GET-TestRequests.test_HTTP_302_ALLOW_REDIRECT_GET   s\    LLS12}}###yy|''3...yy|''''rA   c                    [         R                  " U" S5      SSSS.S9nUR                  S:X  d   eUR                  S   R                  S:X  d   eUR                  S   R                  (       d   eUR                  5       S	   S:X  d   eg )
Nredirect-totestr;   3  rJ   r   rQ   r   r   r   rQ   )r5   r;   r   r   r   jsonr   s      r>   !test_HTTP_307_ALLOW_REDIRECT_POST.TestRequests.test_HTTP_307_ALLOW_REDIRECT_POST   s    MMM"!#6

 }}###yy|''3...yy|''''vvx6)))rA   c                 `   Sn[         R                  " U" S5      [        R                  " U5      SSS.S9nUR                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  (       d   eUR                  5       S	   UR                  S
5      :X  d   eg )Ns   testr   r;   r   r   r   r   r   rQ   utf-8)	r5   r;   ioBytesIOr   r   r   r   decode)r=   ra   byte_strrt   s       r>   /test_HTTP_307_ALLOW_REDIRECT_POST_WITH_SEEKABLE<TestRequests.test_HTTP_307_ALLOW_REDIRECT_POST_WITH_SEEKABLE   s    MMM"H%!#6

 }}###yy|''3...yy|''''vvx8??7#;;;;rA   c                 f    [         R                  " U" SS5      5        [        R                  " S5        g ! [         ap  nU" SS5      nUR
                  R                  U:X  d   eUR                  R                  U:X  d   e[        UR                  R                  5      S:X  d   e S nAg S nAff = f)Nrelative-redirect50z:Expected redirect to raise TooManyRedirects but it did not20   )
r5   r7   rG   failr   rz   rJ   responselenr   )r=   ra   erJ   s       r>    test_HTTP_302_TOO_MANY_REDIRECTS-TestRequests.test_HTTP_302_TOO_MANY_REDIRECTS   s    	VLL!4d;< KKTU   	1-t4C99==C'''::>>S(((qzz))*b000		1s   6 
B0 A&B++B0c                    [         R                  " 5       nSUl         UR                  U" SS5      5        [        R
                  " S5        g ! [         ap  nU" SS5      nUR                  R                  U:X  d   eUR                  R                  U:X  d   e[        UR                  R                  5      S:X  d   e S nAg S nAff = f)N   r   r   zCExpected custom max number of redirects to be respected but was not45)r5   r6   max_redirectsr7   rG   r   r   rz   rJ   r   r   r   )r=   ra   r   r   rJ   s        r>   ,test_HTTP_302_TOO_MANY_REDIRECTS_WITH_PARAMS9TestRequests.test_HTTP_302_TOO_MANY_REDIRECTS_WITH_PARAMS   s    
	EE'-t45 KKU   	0-t4C99==C'''::>>S(((qzz))*a///		0s   A 
CA&CCc                    [         R                  " U" SS5      5      nUR                  S:X  d   eUR                  R                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  (       d   eg )Nstatus301r   rY   r   -  r5   r;   r   rz   rX   r   r   r   s      r>   !test_http_301_changes_post_to_get.TestRequests.test_http_301_changes_post_to_get	  t    MM'(E23}}###yy5(((yy|''3...yy|''''rA   c                 @   [         R                  " U" SS5      SS9n[        UR                  5        UR                  S:X  d   eUR
                  R                  S:X  d   eUR                  S   R                  S:X  d   eUR                  S   R                  (       d   eg )	Nr   r   Tallow_redirectsr   rZ   r   r   )	r5   r8   printcontentr   rz   rX   r   r   r   s      r>   'test_http_301_doesnt_change_head_to_get4TestRequests.test_http_301_doesnt_change_head_to_get  s    MM'(E2DIaii}}###yy6)))yy|''3...yy|''''rA   c                    [         R                  " U" SS5      5      nUR                  S:X  d   eUR                  R                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  (       d   eg )Nr   302r   rY   r   r   r   r   s      r>   !test_http_302_changes_post_to_get.TestRequests.test_http_302_changes_post_to_get  r   rA   c                    [         R                  " U" SS5      SS9nUR                  S:X  d   eUR                  R                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  (       d   eg )	Nr   r   Tr   r   rZ   r   r   r5   r8   r   rz   rX   r   r   r   s      r>   'test_http_302_doesnt_change_head_to_get4TestRequests.test_http_302_doesnt_change_head_to_get  v    MM'(E2DI}}###yy6)))yy|''3...yy|''''rA   c                    [         R                  " U" SS5      5      nUR                  S:X  d   eUR                  R                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  (       d   eg )Nr   303r   rY   r   /  r   r   s      r>   !test_http_303_changes_post_to_get.TestRequests.test_http_303_changes_post_to_get&  r   rA   c                    [         R                  " U" SS5      SS9nUR                  S:X  d   eUR                  R                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  (       d   eg )	Nr   r   Tr   r   rZ   r   r   r   r   s      r>   'test_http_303_doesnt_change_head_to_get4TestRequests.test_http_303_doesnt_change_head_to_get-  r   rA   c                    Sn[         R                  " 5       n[         R                  " SU" S5      SS0S9nUR                  U5      nUR	                  U5      nSUl        SUR                  S	'   [        UR                  Xe5      5      nUR                  R                  b   eU H  nXR                  R                  ;  a  M   e   g )
N)r\   Content-Typerd   r;   r   rQ   rn   r   r7   location)r5   r   rP   r   r   r   r_   nextresolve_redirectsrz   rS   	r=   ra   purged_headerssesrT   r   resp	next_respheaders	            r>   (test_header_and_body_removal_on_redirect5TestRequests.test_header_and_body_removal_on_redirect4  s    ; vwvff=MN""3'xx~ #(Z  ..t:;	  %%---$F!2!2!:!:::: %rA   c                 R   Sn[         R                  " 5       n[         R                  " SU" S5      S [        S5       5       S9nUR	                  U5      nSUR
                  ;   d   e[         R                  " 5       n[        R                  " S5      Ul	        XVl
        [        UR                  S	S
 5        SUl        U" S5      UR
                  S'   [        UR                  Xe5      5      nUR                  R                  b   eU H  nXR                  R
                  ;  a  M   e   g )N)Transfer-Encodingr   rd   r;   c              3   &   #    U  H  nS v   M	     g7f)   xN ).0xs     r>   	<genexpr>ETestRequests.test_transfer_enc_removal_on_redirect.<locals>.<genexpr>H  s     =UHqdHs   r'   rn   r     the contentrelease_connc                      U $ rE   r  argss    r>   <lambda>DTestRequests.test_transfer_enc_removal_on_redirect.<locals>.<lambda>P  s    rA   r   r7   r   )r5   r   rP   ranger   r_   Responser   r   rawrz   setattrr   r   r  rS   r  s	            r>   %test_transfer_enc_removal_on_redirect2TestRequests.test_transfer_enc_removal_on_redirectE  s    > vwv=UERSH=UV""3'"dll222   "::n-.*<= #*5>Z  ..t:;	  %%---$F!2!2!:!:::: %rA   c                    Sn[         R                  " U" S5      U-   5      n[        UR                  5      S:  d   eUR                  S   R                  R
                  U" S5      U-   :X  d   eUR
                  U" S5      U-   :X  d   eg )Nz#view=edit&token=hunter2zredirect-to?url=getr   r7   )r5   r7   r   r   rz   rJ   )r=   ra   fragmentrt   s       r>   $test_fragment_maintained_on_redirect1TestRequests.test_fragment_maintained_on_redirect\  s~    -LL!67(BC199~!!!yy|##''73H+IH+TTTTuu1111rA   c                     SS0n[         R                  " U" S5      US9nUS   UR                  ;   d   eUR                  S:X  d   eg )N
User-agentMozilla/5.0
user-agentrr   r   )r5   r7   textr   r=   ra   headsrt   s       r>    test_HTTP_200_OK_GET_WITH_PARAMS-TestRequests.test_HTTP_200_OK_GET_WITH_PARAMSd  sJ    }-LL.>\"aff,,,}}###rA   c                 r    SS0n[         R                  " U" S5      S-   SS0US9nUR                  S:X  d   eg )	Nr%  r&  r7   z
?test=trueqr   )r   r_   r   r5   r7   r   r)  s       r>   &test_HTTP_200_OK_GET_WITH_MIXED_PARAMS3TestRequests.test_HTTP_200_OK_GET_WITH_MIXED_PARAMSl  sB    }-LLEN\)3-
 }}###rA   c                     [         R                  " 5       nU" S5      nUR                  U5        UR                  S   S:X  d   eg )Ncookies/set?foo=barfoobarr5   r6   r7   cookiesr=   ra   r   rJ   s       r>   test_set_cookie_on_301#TestRequests.test_set_cookie_on_301t  s=    +,	c
yy5(((rA   c                     [         R                  " 5       nUR                  U" S5      5        UR                  U" S5      5      nSUR                  5       S   ;   d   eg )Nr3  
redirect/1Cookier_   )r5   r6   r7   r   r=   ra   r   rt   s       r>   test_cookie_sent_on_redirect)TestRequests.test_cookie_sent_on_redirectz  sN    	g+,-EE','(1668I....rA   c                     [         R                  " 5       nUR                  U" S5      5        UR                  S   S:X  d   eUR                  U" S5      SS0S9  SUR                  ;  d   eg )Nr3  r4  r5  zresponse-headersz
Set-Cookiez2foo=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMTr   r6  r=   ra   r   s      r>   test_cookie_removed_on_expire*TestRequests.test_cookie_removed_on_expire  sp    	g+,-yy5(((	&' "VW 	 	
 AII%%%rA   c                     [         R                  " 5       nUR                  U" S5      5        UR                  S   S:X  d   eg )Nzcookies/set?foo="bar:baz"r4  z	"bar:baz"r6  rB  s      r>   test_cookie_quote_wrapped&TestRequests.test_cookie_quote_wrapped  s9    	g123yy;...rA   c                     [         R                  " 5       nUR                  U" S5      SS0S9nSUR                  R                  S   ;   d   eSUR
                  S   R                  R                  S   ;   d   eg )Nr<  r4  r5  r7  r=  r   )r5   r6   r7   rz   r_   r   r>  s       r>   test_cookie_persists_via_api)TestRequests.test_cookie_persists_via_api  so    EE','%E@		))(3333		!,,44X>>>>rA   c                     [         R                  " 5       nSUR                  S'   UR                  U" S5      SS0S9nUR	                  5       S   S   S:X  d   eUR                  S   S:X  d   eg )Nr5  r4  r7  bazrI  )r5   r6   r7  r7   r   r>  s       r>   ,test_request_cookie_overrides_session_cookie9TestRequests.test_request_cookie_overrides_session_cookie  sn     		%EE')$uenE=vvx	"5)U222yy5(((rA   c                     [         R                  " 5       nUR                  U" S5      SS0S9  UR                  (       a   eg )Nr7  r4  rM  rI  r6  rB  s      r>   "test_request_cookies_not_persisted/TestRequests.test_request_cookies_not_persisted  s7    	gi 5%.999}9rA   c                    [         R                  " 5       n[        SS0U5        [        R                  " 5       nX#l        UR                  U" S5      5      nUR                  5       S   S   S:X  d   eUR
                  UL d   eg )Nr4  r5  r7  )r   	CookieJarr   r5   r6   r7  r7   r   r=   ra   cjr   rt   s        r>   test_generic_cookiejar_works)TestRequests.test_generic_cookiejar_works  sr      "UENB/	EE')$%vvx	"5)U222yyBrA   c                     [         R                  " 5       n[        SS0U5        [        R                  " 5       nUR                  U" S5      US9nUR                  5       S   S   S:X  d   eg )Nr4  r5  r7  rI  )r   rT  r   r5   r6   r7   r   rU  s        r>   test_param_cookiejar_works'TestRequests.test_param_cookiejar_works  sa      "UENB/EE')$bE1vvx	"5)U222rA   c                 V   [        SS0[        R                  " 5       5      n[        R                  " 5       n[        SS05      Ul        [        R                  " SU" S5      US9nUR                  5       nUR                  U5      nSUl	        U" S	5      UR                  S
'   UR                  Xe5      n[        U5      n[        UR                  [        R                  5      (       d   e[        UR                  R                  [        R                  5      (       d   e[        UR                  R                  [        R
                  R                   5      (       a   e0 nUR                  R                   H  n	U	R"                  XR$                  '   M     US   S:X  d   eUS   S:X  d   eg)zmTests resolve_redirect doesn't fail when merging cookies
with non-RequestsCookieJar cookiejar.

See GH #3579
r4  r5  cookietastyrY   r_   rI  r   r7   r   N)r   r   rT  r5   r   r7  rP   rR   r   r   r_   r  r   r   _cookiesrz   RequestsCookieJarvaluename)
r=   ra   rV  r   rT   prep_reqr  	redirectsr7  cs
             r>   $test_cookielib_cookiejar_on_redirect1TestRequests.test_cookielib_cookiejar_on_redirect  s_    !%1D1D1FG'7(;<	 ugi&8"E;;= vvh#*5>Z ''7	I (++Y-@-@AAAA$,,//1D1DEEEEdll33X5E5E5W5WXXXX&&AggGFFO 'u~&&&x G+++rA   c                    [         R                  " U" S5      5      nUR                   Vs/ s H  o3R                  PM     nnUR                   Vs/ s H  o3R                  R                  PM     nnXE:X  d   eg s  snf s  snf )Nz
redirect/3)r5   r7   r   rJ   rz   )r=   ra   r  rt   urlsreq_urlss         r>   +test_requests_in_history_are_not_overridden8TestRequests.test_requests_in_history_are_not_overridden  sa    ||GL12#||,|!|,+/<<8<aIIMM<8 -8s   A9A>c                 :   [         R                  " U" S5      5      n[        UR                  [        5      (       d   e[         R                  " U" S5      5      n[        UR                  [        5      (       d   e[        UR                  [
        5      (       a   eg)zAShow that even with redirects, Response.history is always a list.r7   r<  N)r5   r7   r   r   listtuple)r=   ra   r  s      r>   test_history_is_always_a_list*TestRequests.test_history_is_always_a_list  so    ||GEN+$,,----||GL12$,,----dllE22222rA   c                     [         R                  " 5       nSUR                  S'   [         R                  " SU" S5      5      nUR	                  U5      nSUR                  ;  d   eg)z8Do not send headers in Session.headers with None values.NAccept-EncodingrY   r7   )r5   r   r_   rP   r   )r=   ra   r  rT   r   s        r>   .test_headers_on_session_with_None_are_not_sent;TestRequests.test_headers_on_session_with_None_are_not_sent  sW     )-%&ugen5""3' 444rA   c                 $   [         R                  " 5       n[        R                  " 5       Ul        SUR                  S'   SUR                  S'   SUR                  S'   [        R                  " SS/5      nS	US
'   SUS'   [         R
                  " SU" S5      US9nUR                  U5      n[        UR                  R                  5       5      nUS   S:X  d   eUS   S:X  d   eUS   S:X  d   eUS   S:X  d   eUS   S:X  d   eUS   S:X  d   eg)z4Preserve order when headers provided as OrderedDict.identityrs  r   First2Second)Third3)Fourth45Fifth222rY   r7   rr   r   )rs  rw  r'   )rx  r      )rz  r        r   )r  r  N)	r5   r   r   r   r_   rP   r   rn  items)r=   ra   r  r_   rT   r   r  s          r>   test_headers_preserve_order(TestRequests.test_headers_preserve_order  s!    !--/)3%&"G #H))>?*KL!ugengF""3'T\\'')*Qx::::Qx>)))Qx,,,,Qx>)))Qx?***Qx>)))rA   key)r%  r'  c                 j    US0n[         R                  " U" S5      US9nX2   UR                  ;   d   eg )Nz%Mozilla/5.0 (github.com/psf/requests)r'  rr   )r5   r7   r(  )r=   ra   r  r*  rt   s        r>   test_user_agent_transfers&TestRequests.test_user_agent_transfers   s6    =>LL.>zQVV###rA   c                 `    [         R                  " U" S5      5      nUR                  S:X  d   eg )Nr7   r   )r5   r8   r   r   s      r>   test_HTTP_200_OK_HEAD"TestRequests.test_HTTP_200_OK_HEAD  s&    MM'%.)}}###rA   c                 `    [         R                  " U" S5      5      nUR                  S:X  d   eg )Nr9   r   )r5   r9   r   r   s      r>   test_HTTP_200_OK_PUT!TestRequests.test_HTTP_200_OK_PUT  s&    LL(}}###rA   c                 4   SnU" SSS5      n[         R                  " X2S9nUR                  S:X  d   e[         R                  " U5      nUR                  S:X  d   e[         R                  " 5       nX%l        UR                  U5      nUR                  S:X  d   eg )Nuserpass
basic-authr  r  authr     )r5   r7   r   r6   r  )r=   ra   r  rJ   rt   r   s         r>   $test_BASICAUTH_TUPLE_HTTP_200_OK_GET1TestRequests.test_BASICAUTH_TUPLE_HTTP_200_OK_GET  s    lFF3LL(}}###LL}}###EE#J}}###rA   zusername, passwordr  u   имяu   пароль)*   r  )NNc                     X#4nU" S5      n[         R                  " SXTS9nUR                  5       nUR                  S   [	        X#5      :X  d   eg )Nr7   rY   r  Authorization)r5   rP   rR   r_   r   )r=   ra   usernamepasswordr  rJ   rt   ps           r>   test_set_basicauthTestRequests.test_set_basicauth  sN     #enUC3IIKyy)_X-PPPPrA   c                 ~    Sn[         R                  " SSUS9nUR                  5       nUR                  S   S:X  d   eg)zgEnsure b'test' formats as the byte string "test" rather
than the unicode string "b'test'" in Python 3.
)s	   ůsernames   testƶrY   zhttp://localhostr  r  zBasic xa9zZXJuYW1lOnRlc3TGtg==Nrs   )r=   r  rt   r  s       r>   #test_basicauth_encodes_byte_strings0TestRequests.test_basicauth_encodes_byte_strings0  sA     5U$6TBIIKyy)-MMMMrA   url, exceptionzhttp://doesnotexist.google.comr-   zhttp://fe80::5054:ff:fe5a:fc0c                     [         R                  " U5         [        R                  " USS9  S S S 5        g ! , (       d  f       g = f)Nr'   timeoutrF   )r=   rJ   rI   s      r>   test_errorsTestRequests.test_errors:  s*     ]]9%LLa( &%%s	   6
Ac                     [         R                  " [        5         [        R                  " SSS0S9  S S S 5        g ! , (       d  f       g = f)Nr-   httpznon-resolvable-addressr   )rG   rH   r   r5   r7   r=   s    r>   test_proxy_errorTestRequests.test_proxy_errorI  s1    ]]:&LL$v7O.P '&&s	   <
A
c                    [         R                  " [        5         [        R                  " U" 5       SS0S9  S S S 5        [         R                  " [        5         [        R                  " U" 5       SS0S9  S S S 5        [         R                  " [        5         [        R                  " U" 5       SS0S9  S S S 5        [         R                  " [        5         [        R                  " U" 5       SS0S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Np= f! , (       d  f       g = f)Nhttpszhttp:/badproxyurl:3128r  r  zhttp://:8080https://zhttp:///example.com:8080)rG   rH   r   r5   r7   )r=   ra   httpbin_secures      r>   test_proxy_error_on_bad_url(TestRequests.test_proxy_error_on_bad_urlP  s    ]]?+LL)G=U3VW , ]]?+LLV^,DE , ]]?+LL)GZ3HI , ]]?+LLV5O,PQ ,+ ,+ ,+ ,+ ,+s/   C>DD D1>
D
D 
D.1
D?c                 Z   [        [        S9   [        R                  " [        5         [
        R                  " 5       n[
        R                  " SU" 5       5      nUR                  UR                  5       5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fN
http_proxyrY   )
r,   INVALID_PROXYrG   rH   r   r5   r   rP   r   rR   )r=   ra   r6   rz   s       r>   4test_respect_proxy_env_on_send_self_prepared_requestATestRequests.test_respect_proxy_env_on_send_self_prepared_request]  sh    7z*"**,"**5')<W__./ + 87** 87s#   BAB:B
B	B
B*c                 `   [        [        S9   [        R                  " [        5         [
        R                  " 5       n[
        R                  " SU" 5       5      nUR                  U5      nUR                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr  )
r,   r  rG   rH   r   r5   r   rP   r   r   )r=   ra   r6   rz   prepareds        r>   7test_respect_proxy_env_on_send_session_prepared_requestDTestRequests.test_respect_proxy_env_on_send_session_prepared_requestd  sq    7z*"**,"**5')<"227;X&	 + 87** 87s#   BAB=B
B	B
B-c                 v   [        [        S9   [        R                  " [        5         [
        R                  " 5       nU" S5      n[        U5        [
        R                  " SU5      nUR                  UR                  5       5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  r<  rY   )r,   r  rG   rH   r   r5   r   r   rP   r   rR   )r=   ra   r6   rJ   rz   s        r>   -test_respect_proxy_env_on_send_with_redirects:TestRequests.test_respect_proxy_env_on_send_with_redirectsl  sw    7z*"**,l+c
"**5#6W__./ + 87** 87s#   B*ABB*
B'	#B**
B8c                    [        [        S9   [        R                  " [        5         [
        R                  " 5       nUR                  U" 5       5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  )r,   r  rG   rH   r   r5   r   r7   r=   ra   r6   s      r>   test_respect_proxy_env_on_get*TestRequests.test_respect_proxy_env_on_getu  sO    7z*"**,GI& + 87** 87s"   A7,A&A7&
A4	0A77
Bc                    [        [        S9   [        R                  " [        5         [
        R                  " 5       nUR                  SU" 5       S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  rY   rX   rJ   )r,   r  rG   rH   r   r5   r   rz   r  s      r>   !test_respect_proxy_env_on_request.TestRequests.test_respect_proxy_env_on_request{  sS    7z*"**,u')< + 87** 87s"   A6+A%A6%
A3	/A66
Bc                    Sn[         R                  " 5       nUR                  R                  SU05        UR	                  SU" S5      S9nUR                  5       R                  S0 5      nUR                  S5      U:X  d   eg )Nz
Bearer XXXProxy-AuthorizationrY   r7   r  r_   )r5   r   r_   updaterz   r   r7   )r=   ra   proxy_auth_valuer6   r  sent_headerss         r>   -test_proxy_authorization_preserved_on_request:TestRequests.test_proxy_authorization_preserved_on_request  sv    '""$ 57GHIe@yy{y"5 56:JJJJrA   zurl,has_proxy_auth))r   T)https://example.comFc                     [         R                  " 5       nSSS.n[         R                  " SU5      nUR                  5       nUR	                  Xd5        SUR
                  ;   UL d   eg )Nzhttp://test:pass@localhost:8080zhttp://test:pass@localhost:8090)r  r  rY   r  )r5   r   rP   rR   rebuild_proxiesr_   )r=   rJ   has_proxy_authr6   r   rT   r   s          r>   6test_proxy_authorization_not_appended_to_https_requestCTestRequests.test_proxy_authorization_not_appended_to_https_request  sc     ""$56
 uc*{{}.%5.HHHrA   c                 L  ^ SmSnU" SSS5      n[         R                  R                  n U4S jnU[         R                  l        [         R                  " U5      nUR                  S:X  d   e[         R                  " X2S9nUR                  S	:X  d   e[         R
                  " 5       nUR                  U5      nUR                  S:X  d   eX'l        UR                  U5      nUR                  S	:X  d   e U[         R                  l        g ! U[         R                  l        f = f)
Nr  )	wronguser	wrongpassr  r  r  c                    > T$ rE   r  )rJ   r  s    r>   get_netrc_auth_mockCTestRequests.test_basicauth_with_netrc.<locals>.get_netrc_auth_mock  s    rA   r   r  r  )r5   sessionsget_netrc_authr7   r   r6   r  )	r=   ra   
wrong_authrJ   old_authr  rt   r   r  s	           @r>   test_basicauth_with_netrc&TestRequests.test_basicauth_with_netrc  s    /
lFF3$$33	8 0CH, S!A==C''' S2A==C'''  "A c
A==C'''  Fc
A==C'''/7H,xH,s   C
D D#c           	         U R                    H  n[        SS5      nU" SSSSUS5      n[        R                  " XCS9nUR                  S:X  d   e[        R                  " U5      nUR                  S:X  d   e[        UR                  S	   5        [        R                  " 5       n[        SS5      Ul        UR                  U5      nUR                  S:X  a  M   e   g )
Nr  r  digest-authr  neverr  r   r  zWWW-Authenticate)	digest_auth_algor   r5   r7   r   r   r_   r6   r  r=   ra   authtyper  rJ   rt   r   s          r>   test_DIGEST_HTTP_200_OK_GET(TestRequests.test_DIGEST_HTTP_200_OK_GET  s    --H!&&1D-7SCS,A==C'''S!A==C'''!))./0  "A#FF3AFc
A==C''' .rA   c                     U R                    Hl  nU" SSSSU5      n[        SS5      n[        R                  " U5      nUR                  S   S:X  d   e[        R                  " X4S9nUR
                  S:X  a  Ml   e   g )	Nr  r  r  r  fake
fake_valuer  r   )r  r   r5   r7   r7  r   )r=   ra   r  rJ   r  rt   s         r>   test_DIGEST_AUTH_RETURNS_COOKIE,TestRequests.test_DIGEST_AUTH_RETURNS_COOKIE  su    --H-JC!&&1DS!A99V$444S,A==C''' .rA   c                     U R                    HT  nU" SSSSU5      n[        SS5      n[        R                  " 5       nUR	                  X4S9  UR
                  S   S:X  a  MT   e   g )Nr  r  r  r  r  r  r  )r  r   r5   r   r7   r7  )r=   ra   r  rJ   r  r   s         r>   %test_DIGEST_AUTH_SETS_SESSION_COOKIES2TestRequests.test_DIGEST_AUTH_SETS_SESSION_COOKIES  sc    --H-JC!&&1D  "AEE#E!99V$444 .rA   c                 .   U R                    H  n[        SS5      nU" SSSSU5      n[        R                  " XCSS9nUR                  R                  5       S:w  d   e[        R                  " XCSS9nUR                  R                  5       S:X  a  M   e   g )	Nr  r  r  r  T)r  streamrA   F)r  r   r5   r7   r  readr=   ra   r  r  rJ   rt   s         r>   test_DIGEST_STREAMTestRequests.test_DIGEST_STREAM  s    --H!&&1D-JCSD9A55::<3&&&SE:A55::<3&&& .rA   c                 r   U R                    H  n[        SS5      nU" SSSSU5      n[        R                  " XCS9nUR                  S:X  d   e[        R                  " U5      nUR                  S:X  d   e[        R
                  " 5       nX6l        UR                  U5      nUR                  S:X  a  M   e   g )Nr  r  r  r  r  r  r  )r  r   r5   r7   r   r6   r  r  s          r>   "test_DIGESTAUTH_WRONG_HTTP_401_GET/TestRequests.test_DIGESTAUTH_WRONG_HTTP_401_GET  s    --H!&+6D-JCS,A==C'''S!A==C'''  "AFc
A==C''' .rA   c                     U R                    HN  n[        SS5      nU" SSSSU5      n[        R                  " XCS9nSUR                  R
                  S   ;   a  MN   e   g )Nr  r  r  r  r  z"auth"r  )r  r   r5   r7   rz   r_   r  s         r>    test_DIGESTAUTH_QUOTES_QOP_VALUE-TestRequests.test_DIGESTAUTH_QUOTES_QOP_VALUE   s[    --H!&&1D-JCS,Aqyy00AAAA .rA   c                 ,   U" S5      n[         R                  " U5      R                  5         [         R                  " USS0S9nUR                  S:X  d   e[	        S5       n[         R                  " USU0S9nS S S 5        WR                  S:X  d   e[         R                  " USS9nUR                  S:X  d   e[
        R                  " [        5         [         R                  " US	/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nr;   somerQ   rn   r   requirements-dev.txtfiles[{"some": "json"}]bad file datar5   r;   raise_for_statusr   openrG   rH   
ValueErrorr=   ra   rJ   post1fpost2post4s          r>   test_POSTBIN_GET_POST_FILES(TestRequests.test_POSTBIN_GET_POST_FILES  s    foc++-c(89  C'''()QMM#fa[9E *  C'''c(<=  C''']]:&MM#o%67 '& *) '&s   !C4D4
D
Dc                     U" S5      n[         R                  " US SS.S9nSUR                  R                  ;  d   eSUR                  R                  ;   d   eg )Nr;   r'   )zrandom-file-1zrandom-file-2r  s   name="random-file-1"s   name="random-file-2")r5   r;   rz   rS   )r=   ra   rJ   r;   s       r>   test_invalid_files_input%TestRequests.test_invalid_files_input  sQ    fo}}S$QR(ST&dll.?.????&$,,*;*;;;;rA   c                 r    " S S5      nU" S5      n[         R                  " U" S5      US9nUR                  S:X  d   eUR                  5       S   S:X  d   eU" S5      nUR	                  S5        [         R                  " U" S5      US9nUR                  S:X  d   eUR                  5       S   S	:X  d   eg )
Nc                   :    \ rS rSrS rS rS	S jrS rS
S jrSr	g)HTestRequests.test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER.<locals>.TestStreami   c                 p    UR                  5       U l        [        U R                  5      U l        SU l        g Nr   )r   rQ   r   lengthindexr=   rQ   s     r>   __init__QTestRequests.test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER.<locals>.TestStream.__init__!  s%     KKM	!$))n
rA   c                     U R                   $ rE   )r  r  s    r>   __len__PTestRequests.test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER.<locals>.TestStream.__len__&  s    {{"rA   Nc                     U(       a=  U R                   U R                  U R                  U-    nU =R                  U-  sl        U$ U R                   U R                  S  nU R                  U l        U$ rE   rQ   r  r  )r=   sizerets      r>   r  MTestRequests.test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER.<locals>.TestStream.read)  s]    ))DJJd1BCCJJ$&J 
 ))DJJL1C!%DJ
rA   c                     U R                   $ rE   )r  r  s    r>   tellMTestRequests.test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER.<locals>.TestStream.tell2  s    zz!rA   c                     US:X  a  Xl         g US:X  a  U =R                   U-  sl         g US:X  a  U R                  U-   U l         g g )Nr   r'   r  )r  r  )r=   offsetwheres      r>   seekMTestRequests.test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER.<locals>.TestStream.seek5  s?    A:!'JaZJJ&(JaZ!%v!5DJ  rA   r'  rE   r   )
__name__
__module____qualname____firstlineno__r!  r$  r  r,  r1  __static_attributes__r  rA   r>   
TestStreamr     s    
#"6rA   r9  r   r;   rn   r   rQ   r  st)r5   r;   r   r   r1  )r=   ra   r9  r   r  r  s         r>   'test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER4TestRequests.test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER  s    	6 	6: &!gfoD9  C'''zz|F#v---&!		!gfoD9  C'''zz|F#t+++rA   c                 2   U" S5      n[         R                  " U5      R                  5         [         R                  " USS0S9nUR                  S:X  d   e[	        S5       n[         R                  " USS0SU0S9nS S S 5        WR                  S:X  d   e[         R                  " USS9nUR                  S:X  d   e[
        R                  " [        5         [         R                  " US	/S
9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr;   r  rQ   rn   r   r  rQ   r  r	  r
  r  r  r  s          r>   %test_POSTBIN_GET_POST_FILES_WITH_DATA2TestRequests.test_POSTBIN_GET_POST_FILES_WITH_DATAH  s    foc++-c(89  C'''()QMM#VV,<VQKPE *  C'''c(<=  C''']]:&MM#o%67 '& *) '&s   !C7D7
D
Dc                      " S S[         5      nU" SS05      nU" S5      n[        R                  " XCS9R                  5       R	                  S5      nUSS0:X  d   eg )Nc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
ATestRequests.test_post_with_custom_mapping.<locals>.CustomMappingiZ  c                 $    [        U0 UD6U l        g rE   )dictrQ   r=   r  kwargss      r>   r!  JTestRequests.test_post_with_custom_mapping.<locals>.CustomMapping.__init__[  s     $1&1	rA   c                     U R                   U	 g rE   rn   r=   r  s     r>   __delitem__MTestRequests.test_post_with_custom_mapping.<locals>.CustomMapping.__delitem__^  s    IIcNrA   c                      U R                   U   $ rE   rn   rJ  s     r>   __getitem__MTestRequests.test_post_with_custom_mapping.<locals>.CustomMapping.__getitem__a  s    yy~%rA   c                      X R                   U'   g rE   rn   )r=   r  ra  s      r>   __setitem__MTestRequests.test_post_with_custom_mapping.<locals>.CustomMapping.__setitem__d  s    !&		#rA   c                 ,    [        U R                  5      $ rE   )iterrQ   r  s    r>   __iter__JTestRequests.test_post_with_custom_mapping.<locals>.CustomMapping.__iter__g  s    DII&rA   c                 ,    [        U R                  5      $ rE   )r   rQ   r  s    r>   r$  ITestRequests.test_post_with_custom_mapping.<locals>.CustomMapping.__len__j  s    499~%rA   rn   N)r4  r5  r6  r7  r!  rK  rN  rQ  rU  r$  r8  r  rA   r>   CustomMappingrC  Z  s     2#&''&rA   rY  r  rQ   r;   rn   form)r
   r5   r;   r   r7   )r=   ra   rY  rQ   rJ   
found_jsons         r>   test_post_with_custom_mapping*TestRequests.test_post_with_custom_mappingY  s]    	&N 	&& ff-.fo]]32779==fE
ff----rA   c                     U" S5      n[        S5       n[        R                  " [        5         [        R
                  " USSU0S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr;   r  z[{"some": "data"}]r  r>  )r  rG   rH   r  r5   r;   )r=   ra   rJ   r  s       r>   test_conflicting_post_params)TestRequests.test_conflicting_post_paramsr  sT    fo()Qz*c(<VQKP + *)** *)s"   A*AA*
A'	#A**
A8c                 d    [         R                  " U" SS5      5      nUR                  (       a   eg )Nr   404)r5   r7   okr   s      r>   test_request_ok_set TestRequests.test_request_ok_setx  s$    LL51244x4rA   c                 N   [         R                  " U" SS5      5      n[        R                  " [         R                  R
                  5         UR                  5         S S S 5        [         R                  " U" SS5      5      nUR                  (       a   eg ! , (       d  f       N?= f)Nr   rb  500)r5   r7   rG   rH   
exceptions	HTTPErrorr  rc  r   s      r>   test_status_raising TestRequests.test_status_raising|  sm    LL512]]8..889  : LL51244x4	 :9s   B
B$c                 r    [         R                  " U" S5      5      nUR                  R                  S5        g )Ngzipascii)r5   r7   r   r   r   s      r>   test_decompress_gzip!TestRequests.test_decompress_gzip  s&    LL)			!rA   zurl, paramsz/getr4  u   føø   øc                 :    [         R                  " U" U5      US9  g )Nr   r5   r7   )r=   ra   rJ   r   s       r>   test_unicode_getTestRequests.test_unicode_get  s     	WS\&1rA   c                 @    [         R                  " U" S5      SS0SS9  g )Nr9   r   zapplication/octet-stream   ÿ)r_   rQ   )r5   r9   )r=   ra   s     r>   test_unicode_header_name%TestRequests.test_unicode_header_name  s!    EN#%?@	
rA   c                 <    [         R                  " U" SS5      US9  g )Nr   r   verifyrs  )r=   r  httpbin_ca_bundles      r>   test_pyopenssl_redirect$TestRequests.test_pyopenssl_redirect  s    ^He4=NOrA   c                     Sn[         R                  " [        5       n[        R                  " U" 5       US9  S S S 5        [        WR                  5      SR                  U5      :X  d   eg ! , (       d  f       N9= f)N/garbager{  zECould not find a suitable TLS CA certificate bundle, invalid path: {}rG   rH   IOErrorr5   r7   strra  formatr=   r  INVALID_PATHr   s       r>    test_invalid_ca_certificate_path-TestRequests.test_invalid_ca_certificate_path  sc    !]]7#qLL),? $GG
T[[

 	
 
 $#s   A++
A9c                    Sn[         R                  " [        5       n[        R                  " U" 5       US9  S S S 5        [        WR                  5      SR                  U5      :X  d   e[         R                  " [        5       n[        R                  " U" 5       SU4S9  S S S 5        [        UR                  5      SU 3:X  d   eg ! , (       d  f       N= f! , (       d  f       N>= f)Nr  certz9Could not find the TLS certificate file, invalid path: {}.z/Could not find the TLS key file, invalid path: r  r  s       r>   "test_invalid_ssl_certificate_files/TestRequests.test_invalid_ssl_certificate_files  s    !]]7#qLL)= $GG
HOO

 	
 
 ]]7#qLL)l0CD $177|=l^L
 	
 
 $# $#s   CC
C
C'zenv, expectedTREQUESTS_CA_BUNDLE
/some/pathrm   CURL_CA_BUNDLE)r  r  z
/curl/pathc           	          [         R                  " 5       n[        R                  " SU5         UR	                  U" S5      0 SSS S9nS S S 5        WS   U:X  d   eg ! , (       d  f       N= f)Nz
os.environr7   FT)rJ   r   r  r|  r  r|  )r5   r   r   r:   merge_environment_settings)r=   ra   envr   r   settingss         r>   test_env_cert_bundles"TestRequests.test_env_cert_bundles  sh    4 ZZc*33ENBuTPT 4 H + !X---	 +*s   A
A)c                 \    [         R                  " U" 5       SS9nUR                  S:X  d   eg )Nr  r  r   r/  r   s      r>   test_http_with_certificate'TestRequests.test_http_with_certificate  s&    LL-}}###rA   Nz7urllib3 2.0 removed that warning and errors out instead)reasonc                    Uu  p#n[         (       d  [        (       a  SnOSn[        R                  " 5        n[        R
                  " S5        [        R                  " SU S3US9  SSS5        W Vs/ s H!  nUR                  R                  S:w  d  M  UPM#     nn[        S	 U 5       5      nX:X  d   eg! , (       d  f       NV= fs  snf )
z&warnings are emitted with requests.get)SubjectAltNameWarning)r(   InsecurePlatformWarningr  alwayszhttps://localhost:/r{  NResourceWarningc              3   L   #    U  H  oR                   R                  v   M     g 7frE   )categoryr4  )r  items     r>   r  3TestRequests.test_https_warnings.<locals>.<genexpr>  s     !U_T--"8"8_s   "$)HAS_MODERN_SSLHAS_PYOPENSSLrG   warnswarningssimplefilterr5   r7   r  r4  ro  )	r=   nosan_serverhostport	ca_bundlewarnings_expectedwarning_recordsr  warnings_categorys	            r>   test_https_warnings TestRequests.test_https_warnings  s     !-I>]] :! \\^!!(+LL-dV15iH  (
'}}%%):: ' 	 
 "!U_!UU 555 ^
s   0B62CC6
Cc                     [         R                  " [        5         [        R                  " U" SS5      5        SSS5        g! , (       d  f       g= f)z<
When underlying SSL problems occur, an SSLError is raised.
r   200N)rG   rH   RequestsSSLErrorr5   r7   )r=   r  s     r>   test_certificate_failure%TestRequests.test_certificate_failure  s2     ]]+, LL%89 -,,s   A
Ac                     [         R                  " U" S5      SSS/0S9nUR                  S:X  d   eUR                  U" S5      :X  d   eg )Nr7   r   r4  rM  r   r   zget?test=foo&test=baz)r5   r7   r   rJ   r   s      r>   +test_urlencoded_get_query_multivalued_param8TestRequests.test_urlencoded_get_query_multivalued_param  sI    LL%0HI}}###uu 78888rA   c                     [         R                  " SU" S5      [        SS/S9S9nUR                  5       nUR                  S:X  d   eg )Nrd   r;   r4  rM  )r   )rX   rJ   rQ   ztest=foo&test=baz)r5   rP   rE  rR   rS   r=   ra   rt   r   s       r>   0test_form_encoded_post_query_multivalued_element=TestRequests.test_form_encoded_post_query_multivalued_element	  sF    wvTu~5N
 yy{yy////rA   c           	          [        [        S5       n[        R                  " U" S5      S[        R
                  " SS05      0SS0SS	U40S
9nS S S 5        WR                  S:X  d   eg ! , (       d  f       N!= f)Nrbr;   stuffr~   {   blahasdf1234filetest_requests.py)rQ   r   r  r   )r  __file__r5   r;   r   dumpsr   )r=   ra   r  rt   s       r>   (test_different_encodings_dont_break_post5TestRequests.test_different_encodings_dont_break_post  sp    (D!Qtzz3*56
+ 2A67	A " }}### "!s   <A((
A6rQ   r  u   ëlïxrelixrs   elixrc                     [        [        S5       n[        R                  " U" S5      USSU40S9nS S S 5        WR                  S:X  d   eg ! , (       d  f       N!= f)Nr  r;   r  r  r>  r   )r  r  r5   r;   r   )r=   ra   rQ   r  rt   s        r>   test_unicode_multipart_post(TestRequests.test_unicode_multipart_post  sX     (D!Q 2A67A " }}### "!   !A
Ac           	      P   [         R                  R                  [        5      S   S-   n[	        US5       n[
        R                  " SU" S5      SS0SS	U40S
9nUR                  5       nS S S 5        SWR                  ;   d   eSUR                  ;  d   eg ! , (       d  f       N3= f)Nr   z.pyr  rd   r;   s   stuffr  r  r  )rX   rJ   rQ   r  s   name="stuff"s   name="b'stuff'")	osr   splitextr  r  r5   rP   rR   rS   )r=   ra   filenamer  rt   r   s         r>   &test_unicode_multipart_post_fieldnames3TestRequests.test_unicode_multipart_post_fieldnames,  s    77##H-a058(D!Q  FO( 2A67	A 99;D " $))+++#499444 "!s   4B
B%c                     [        [        S5       nSU0n[        R                  " SU" S5      US9nS S S 5        WR                  S:X  d   eg ! , (       d  f       N!= f)Nr  r  rd   r;   )rX   rJ   r  r   )r  r  r5   rz   r   )r=   ra   r  r  rt   s        r>   test_unicode_method_name%TestRequests.test_unicode_method_name:  sV    (D!QQKE  FOA " }}### "!r  c                    [         R                  " 5       n[        [        S5       nSU0n[         R                  " SU" S5      US9nUR                  U5      nS S S 5        [        WR                  [        5      (       d   eUR                  S:X  d   eUR                  U5      nUR                  S:X  d   eg ! , (       d  f       Ne= f)Nr  r  rd   r;   r  r   )r5   r   r  r  rP   r   r   rX   r   r   r   )r=   ra   r   r  r  rT   r   r  s           r>   ,test_unicode_method_name_with_request_object9TestRequests.test_unicode_method_name_with_request_objectD  s    (D!QQKE""676?%HC$$S)D " $++{3333{{f$$$vvd|3&&& "!s   2B77
Cc                    [         R                  " 5       n[         R                  " SS5      n[        R                  " [
        5       nUR                  U5        S S S 5        [        WR                  5      S:X  d   eg ! , (       d  f       N*= f)Nrd   r  z#You can only send PreparedRequests.)	r5   r   rP   rG   rH   r  r   r  ra  )r=   r   rT   r   s       r>   test_non_prepared_request_error,TestRequests.test_non_prepared_request_errorP  s`    vs+]]:&!FF3K '177|DDDD '&s   A==
Bc                    [        [        S5       n[        [        S5       nS[        R                  " SS05      0nSU4SUS4S.n[        R
                  " U" S	5      XES
9nS S S 5        S S S 5        WR                  S:X  d   eSUR                  R                  ;   d   eg ! , (       d  f       NE= f! , (       d  f       NN= f)Nr  r  r~   r  r  test_requestsztext/py-content-type)file1file2r;   r>  r   s   text/py-content-type)	r  r  r   r  r5   r;   r   rz   rS   )r=   ra   f1f2rQ   r  rt   s          r>   test_custom_content_type%TestRequests.test_custom_content_typeX  s    (D!Rh%S#J!780"5-r3IJ MM'&/J & " }}###&!))..888 &% "!s#   B2A B!"B2!
B/	+B22
C c                     S n[         R                  " 5       n[         R                  " SU" 5       SU0S9nUR                  U5      nUR	                  U5        g )Nc                     U c   eU0 :w  d   eg rE   r  r  rG  s     r>   hook?TestRequests.test_hook_receives_request_arguments.<locals>.hooke  s    ###R<<rA   rY   r   hooks)r5   r   rP   r   r   r=   ra   r  r   rt   r   s         r>   $test_hook_receives_request_arguments1TestRequests.test_hook_receives_request_argumentsd  sM    	  UGIj$5GH  #	trA   c                     S n[         R                  " 5       nUR                  S   R                  U5        [         R                  " SU" 5       5      nUR                  U5      nUR                  S   / :w  d   eUR                  S   U/:X  d   eg )Nc                      g rE   r  r  rG  s     r>   r  LTestRequests.test_session_hooks_are_used_with_no_request_hooks.<locals>.hooko      rA   r   rY   r5   r   r  appendrP   r   r  s         r>   1test_session_hooks_are_used_with_no_request_hooks>TestRequests.test_session_hooks_are_used_with_no_request_hooksn  s    	 	
""4(UGI.  #zz*%+++zz*%$///rA   c                    S nS nX#Ld   e[         R                  " 5       nUR                  S   R                  U5        [         R                  " SU" 5       SU/0S9nUR                  U5      nUR                  S   U/:X  d   eg )Nc                      g rE   r  r  s     r>   hook1NTestRequests.test_session_hooks_are_overridden_by_request_hooks.<locals>.hook1z  r  rA   c                      g rE   r  r  s     r>   hook2NTestRequests.test_session_hooks_are_overridden_by_request_hooks.<locals>.hook2}  r  rA   r   rY   r  r  )r=   ra   r  r  r   rt   r   s          r>   2test_session_hooks_are_overridden_by_request_hooks?TestRequests.test_session_hooks_are_overridden_by_request_hooksy  s    		 !!!	
""5)UGIj5'5JK  #zz*%%000rA   c                     S n[         R                  " SU" 5       SU0S9nUR                  5       n[         R                  " 5       n[	        5       Ul        UR                  U5      n[        US5      (       d   eg )Nc                     SU l         U $ )NT)hook_workingr  s     r>   r  5TestRequests.test_prepared_request_hook.<locals>.hook  s     $DKrA   rY   r   r  r  )r5   rP   rR   r   r   r   r   hasattr)r=   ra   r  rT   r   r   r  s          r>   test_prepared_request_hook'TestRequests.test_prepared_request_hook  sf    	 ugi
D7IJ{{}L	vvd|t^,,,,rA   c                 h    " S S[         R                  R                  5      n[         R                  " SU" S5      5      nUR                  (       a   e[         R                  " 5       nU" 5       Ul        UR                  U5      nUR                  U5      nUR                  5       S   S   S:X  d   eg )Nc                       \ rS rSrS rSrg):TestRequests.test_prepared_from_session.<locals>.DummyAuthi  c                 $    SUR                   S'   U$ )Ndummy-auth-test-okDummy-Auth-Testrr   r=   rt   s     r>   __call__CTestRequests.test_prepared_from_session.<locals>.DummyAuth.__call__  s    /C		+,rA   r  N)r4  r5  r6  r7  r  r8  r  rA   r>   	DummyAuthr    s    rA   r  rY   r_   r  r  )r5   r  AuthBaserP   r   r   r   r   )r=   ra   r  rT   r   r   r  s          r>   test_prepared_from_session'TestRequests.test_prepared_from_session  s    	.. 	
 ugi&8988|  %vvd|yy{9%&78<PPPPrA   c                     [         R                  " SS5      n[         R                  " 5       nUR                  U5      nUR                  S:X  d   eg )NrY   s   https://httpbin.org/zhttps://httpbin.org/)r5   rP   r   r   rJ   )r=   rT   r   r   s       r>   (test_prepare_request_with_bytestring_url5TestRequests.test_prepare_request_with_bytestring_url  sF    u&=>  %xx1111rA   c                     [         R                  " 5       nUR                  SU" S5      SSS0S9nUR                  R	                  S5      S:X  d   eg )	NrY   zcookies/set?cookie=valueFHosts   httpbin.org)r   r_   r]  ra  )r5   r   rz   r7  r7   )r=   ra   r   r  s       r>   !test_request_with_bytestring_host.TestRequests.test_request_with_bytestring_host  sY    yy./!^,	  
 ||)W444rA   c                     [         R                  " 5       nSSSSSSSSS	S
SSSSSS.Ul        UR                  S   S   S:X  d   eg )Nzpublic, max-age=60, s-maxage=60z
keep-aliverm  zapplication/json; charset=utf-8zSat, 26 Jan 2013 16:47:56 GMTz""6ff6a73c0e446c1f61614769e3ceb778"zSat, 26 Jan 2013 16:22:39 GMTz<https://api.github.com/users/kennethreitz/repos?page=2&per_page=10>; rel="next", <https://api.github.com/users/kennethreitz/repos?page=7&per_page=10>;  rel="last"z
GitHub.comz200 OKAcceptnosniffzgithub.beta6057)zcache-control
connectioncontent-encodingzcontent-typedateetagzlast-modifiedlinkserverr   varyzx-content-type-optionszx-github-media-typezx-ratelimit-limitzx-ratelimit-remainingr   rel)r5   r  r_   linksr  s     r>   
test_linksTestRequests.test_links  sg    >& &=38<
 #&/#0!%%))
	, wwvu%///rA   c                 @   SnSnSnSnSS0n[         R                  R                  5       nUR                  XX4US9  [	        U5      S:X  d   eSU;   d   e[        U5      S   nUR                  U:X  d   eUR                  U:X  d   eUR                  S   US   :X  d   eg )	Nsome_cookie
some_valueTztest.comHttpOnly)securedomainrestr'   r   )	r5   r7  r`  setr   rn  r4  r5  _rest)r=   r  ra  r4  r5  r6  jarr]  s           r>   test_cookie_parameters#TestRequests.test_cookie_parameters  s    D!0026tD3x1}}###c1}}&&&}}&&&||J'4
+;;;;rA   c                    SnSnSnSn[         R                  R                  5       nUR                  X5        UR                  X45        [	        U5      n[	        UR                  5       5      n[	        UR                  5       5      n[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   eg )Nr1  r2  some_cookie1some_value1r  )r5   r7  r`  r7  rE  	iteritemsr  r   	r=   r  ra  key1value1r9  d1d2d3s	            r>   test_cookie_as_dict_keeps_len*TestRequests.test_cookie_as_dict_keeps_len  s    002#Y#--/"#))+3x1}}2w!||2w!||2w!||rA   c                 P   SnSnSnSn[         R                  R                  5       nUR                  X5        UR                  X45        [	        U5      n[	        UR                  5       5      n[	        UR                  5       5      nUS   S:X  d   eUS   S:X  d   eUS   S:X  d   eg Nr1  r2  r=  r>  )r5   r7  r`  r7  rE  r?  r  r@  s	            r>   test_cookie_as_dict_keeps_items,TestRequests.test_cookie_as_dict_keeps_items  s    002#Y#--/"#))+- L000- L000.!]222rA   c                 
   SnSnSnSn[         R                  R                  5       nUR                  X5        UR                  X45        UR	                  5       nU[        U5      :X  d   e[        U5      [        U5      :X  d   eg rI  )r5   r7  r`  r7  keysrn  )r=   r  ra  rA  rB  r9  rM  s          r>   test_cookie_as_dict_keys%TestRequests.test_cookie_as_dict_keys	  su    002xxztDz!!!DzT$Z'''rA   c                 
   SnSnSnSn[         R                  R                  5       nUR                  X5        UR                  X45        UR	                  5       nU[        U5      :X  d   e[        U5      [        U5      :X  d   eg rI  )r5   r7  r`  r7  valuesrn  )r=   r  ra  rA  rB  r9  rQ  s          r>   test_cookie_as_dict_values'TestRequests.test_cookie_as_dict_values  su    002f%%%F|tF|+++rA   c                 
   SnSnSnSn[         R                  R                  5       nUR                  X5        UR                  X45        UR	                  5       nU[        U5      :X  d   e[        U5      [        U5      :X  d   eg rI  )r5   r7  r`  r7  r  rn  )r=   r  ra  rA  rB  r9  r  s          r>   test_cookie_as_dict_items&TestRequests.test_cookie_as_dict_items)  su    002		U###E{d5k)))rA   c                    SnSnSnSn[         R                  R                  5       nUR                  XUS9  UR                  XUS9  X;   d   eUR	                  5       n[        U5      S:X  d   e[        R                  " [         R                  R                  5         UR                  U5        S S S 5        UR                  XS9nXr:X  d   eg ! , (       d  f       N%= f)Nr1  r2  z	test1.comz	test2.com)r5  r  )
r5   r7  r`  r7  r  r   rG   rH   CookieConflictErrorr7   )r=   r  ra  domain1domain2r9  r  r]  s           r>   -test_cookie_duplicate_names_different_domains:TestRequests.test_cookie_duplicate_names_different_domains9  s    0027+7+zz		5zQ ]]8++??@GGCL A - A@s   C
Cc                 @   SnSnSn[         R                  R                  5       nUR                  XUS9  UR                  X5        [        R
                  " [         R                  R                  5         UR                  U5        S S S 5        g ! , (       d  f       g = f)Nr1  r2  	some_path)r   )r5   r7  r`  r7  rG   rH   rX  r7   )r=   r  ra  r   r9  s        r>   8test_cookie_duplicate_names_raises_cookie_conflict_errorETestRequests.test_cookie_duplicate_names_raises_cookie_conflict_errorN  sq    002&]]8++??@GGCL A@@s   4B
Bc                      " S S[         R                  5      n[        R                  R	                  5       nUR                  U" 5       5        [        UR                  5       R                  5       U5      (       d   eg )Nc                       \ rS rSrSrg)<TestRequests.test_cookie_policy_copy.<locals>.MyCookiePolicyiZ  r  Nr4  r5  r6  r7  r8  r  rA   r>   MyCookiePolicyrc  Z      rA   re  )	r   DefaultCookiePolicyr5   r7  r`  
set_policyr   copy
get_policy)r=   re  r9  s      r>   test_cookie_policy_copy$TestRequests.test_cookie_policy_copyY  s[    	Y:: 	 002~'(#((*//1>BBBBrA   c                     [         R                  " U" S5      5      nUR                  nUR                  UR                  UR
                  S-  S-  -   S-  -   S-  nUS:  d   eg )Nr7      i  i@B g        )r5   r7   elapsedmicrosecondssecondsdays)r=   ra   rt   tdtotal_secondss        r>   test_time_elapsed_blank$TestRequests.test_time_elapsed_blanka  s^    LL(YYOOrzzBGGbL4,??5HH s"""rA   c                 L    [         R                  " 5       nUR                  b   eg rE   )r5   r  r   r  s     r>   $test_empty_response_has_content_none1TestRequests.test_empty_response_has_content_nonei  s     yy   rA   c                   ^ [         R                  " 5       n[        R                  " S5      nUR                  mSU4S jjn[	        USU5        X!l        [        [        U5      5      (       d   eUR                  " 5         g )Nabcc                    > T" U 5      $ rE   r  )amtdecode_contentread_s     r>   	read_mock9TestRequests.test_response_is_iterable.<locals>.read_mockr  s    :rA   r  rE   )	r5   r  r)   r  r  r  r   rT  close)r=   rt   r   r  r  s       @r>   test_response_is_iterable&TestRequests.test_response_is_iterablem  s]    u%	 	FI&DG}}}

rA   c                 f   [         R                  " 5       nSUl        SUl        SUl        UR                  SS9n[        S U 5       5      (       d   e[         R                  " 5       n[        R                  " S5      Ul	        SUl        UR                  SS9n[        S U 5       5      (       d   eg)zUWhen called with decode_unicode, Response.iter_content should always
return unicode.
Tr  rn  )decode_unicodec              3   B   #    U  H  n[        U[        5      v   M     g 7frE   r   r  r  chunks     r>   r  <TestRequests.test_response_decode_unicode.<locals>.<genexpr>       >ve:eS))v   c              3   B   #    U  H  n[        U[        5      v   M     g 7frE   r  r  s     r>   r  r    r  r  N)
r5   r  _content_consumed_contentencodingiter_contentallr   r   r  r=   rt   chunkss      r>   test_response_decode_unicode)TestRequests.test_response_decode_unicodez  s     "#

t4>v>>>>> 

>*
t4>v>>>>>rA   c                     [         R                  " 5       nSUl        SR                  5       Ul        SUl        S Ul        UR                  (       a   eg )Nzunicode URL   Komponenttia ei löydyi  )r5   r  rJ   r   r  r   r  rc  r  s     r>   test_response_reason_unicode)TestRequests.test_response_reason_unicode  sB    +224
44x4rA   c                 v   [         R                  " 5       nSUl        SnUR                  S5      Ul        SUl        S Ul        [        R                  " [         R                  R                  5       nUR                  5         S S S 5        UWR                  R                  S   ;   d   eg ! , (       d  f       N.= f)Nzsome urlr  zlatin-1  r   )r5   r  rJ   r   r  r   r  rG   rH   rh  ri  r  ra  r  )r=   rt   r  r   s       r>   %test_response_reason_unicode_fallback2TestRequests.test_response_reason_unicode_fallback  s    )==+
]]8..889Q  :a((( :9s   1B**
B8c                 H   [         R                  " 5       n[        R                  " S5      Ul        UR                  S5      n[        S U 5       5      (       d   e[         R                  " 5       n[        R                  " S5      Ul        UR                  S5      n[        U5      S/:X  d   e[         R                  " 5       n[        R                  " S5      Ul        [        R                  " [        5         UR                  S5      nSSS5        g! , (       d  f       g= f)zUEnsure that chunk_size is passed as None or an integer, otherwise
raise a TypeError.
r  r'   c              3   >   #    U  H  n[        U5      S :H  v   M     g7f)r'   Nr   r  s     r>   r  =TestRequests.test_response_chunk_size_type.<locals>.<genexpr>  s     7u3u:?s   N1024)r5   r  r   r   r  r  r  rn  rG   rH   	TypeErrorr  s      r>   test_response_chunk_size_type*TestRequests.test_response_chunk_size_type  s     

>*"777777

>*%F|////

>*]]9%^^F+F &%%s   8D
D!zexception, args, expected)Nrm   rm   c                 2   [         R                  " 5       n[        R                  " 5       Ul        U" U6 UR                  R
                  l        [        R                  " U5         [        UR                  S5      5        S S S 5        g ! , (       d  f       g = f)Ni   )r5   r  r   Mockr  r  side_effectrG   rH   r   r  )r=   ra   rI   r  r   rt   s         r>   "test_iter_content_wraps_exceptions/TestRequests.test_iter_content_wraps_exceptions  s_     		 $-d#3 ]]8$%& %$$s   $B
Bc                    [         R                  " U" S5      5      n[        R                  " [        R                  " UR
                  5      5      (       d   e[        R                  " [        R                  " U5      5      nUR
                  R                  UR
                  R                  :X  d   eUR
                  R                  UR
                  R                  :X  d   eg )Nr7   )r5   r7   pickleloadsr  rz   rJ   r_   )r=   ra   rt   rU   s       r>   (test_request_and_response_are_pickleable5TestRequests.test_request_and_response_are_pickleable  s    LL( ||FLL34444 \\&,,q/*yy}}

...yy  BJJ$6$6666rA   c                    [         R                  " SU" S5      5      R                  5       n[        R                  " [        R
                  " U5      5      nUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   e[         R                  " 5       nUR                  U5      nUR                  S:X  d   eg r   )r5   rP   rR   r  r  r  rJ   r_   rS   r   r   r   )r=   ra   r  rt   r   r  s         r>   #test_prepared_request_is_pickleable0TestRequests.test_prepared_request_is_pickleable  s    UGEN3;;= LLa)uu~~yyAII%%%vv vvay3&&&rA   c                     [        [        S5       n[        R                  " SU" S5      SU0S9nUR	                  5       nS S S 5        [
        R                  " [
        R                  " W5      5      nUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   e[        R                  " 5       nUR                  U5      nUR                  S:X  d   eg ! , (       d  f       N= f)Nr  rd   r;   r  r  r   )r  r  r5   rP   rR   r  r  r  rJ   r_   rS   r   r   r   )r=   ra   r  rt   r  r   r  s          r>   -test_prepared_request_with_file_is_pickleable:TestRequests.test_prepared_request_with_file_is_pickleable  s    (D!Q  LA		A "
 LLa)uu~~yyAII%%%vv vvay3&&& "!s   /C??
Dc                    [         R                  " SU" S5      [        5       S9nUR                  5       n[        R
                  " [        R                  " U5      5      nUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   e[         R                  " 5       nUR                  U5      nUR                  S:X  d   eg )NrY   r7   r  r   )r5   rP   r!   rR   r  r  r  rJ   r_   rS   r  r   r   r   )r=   ra   rt   r  r   r  s         r>   -test_prepared_request_with_hook_is_pickleable:TestRequests.test_prepared_request_with_hook_is_pickleable  s    UGEN-/JIIK LLa)uu~~yyAII%%%vvww!''!!! vvay3&&&rA   c                     [         R                  " U" 5       S9n[        R                  " [        5         [         R
                  " 5       R                  U5        S S S 5        g ! , (       d  f       g = f)NrJ   )r5   rP   rG   rH   r  r   r   r   s      r>   $test_cannot_send_unprepared_requests1TestRequests.test_cannot_send_unprepared_requests  sC    +]]:&##A& '&&s   %A""
A0c                 p   [         R                  R                  5       nUR                  (       a   e[         R                  " 5       n[         R                  R                  US9nUR                  U:X  d   e[         R                  R                  SUS9n[        U5      S:X  d   eUR                  U:X  d   eg )N)r   message)r5   rh  ri  r   r  r  )r=   errorr   s      r>   test_http_errorTestRequests.test_http_error  s    ##--/>>!!$$&##--x-@~~)))##--i(-K5zY&&&~~)))rA   c                 <   [         R                  " SU" S5      5      n[         R                  " 5       n[        R                  " [        R
                  " U5      5      n[        5       Ul        UR                  UR                  5       5      nUR                  S:X  d   eg r   )r5   rP   r   r  r  r  r   r   r   rR   r   r   s       r>   test_session_pickling"TestRequests.test_session_pickling  sk    UGEN3LLa)L	FF199;}}###rA   c                 >   [         R                  " 5       nUR                  R                  SS05        UR                  R                  SS05        UR	                  U" S5      5      nUR
                  R                  nUS   S:X  d   eUS   S:X  d   eUS   S:X  d   eg)z7Ensure that header updates are done case-insensitively.ACCEPTBOGUSacceptapplication/jsonr7   r!  N)r5   r   r_   r  r7   rz   )r=   ra   r   rt   r_   s        r>   test_fixes_1329TestRequests.test_fixes_1329  s    			(G,-			($678EE'%.!))##x $6666x $6666x $6666rA   c                    [        U" S5      5      nSUR                  -   UR                  -   n[        R                  " U" S5      SU0S9nUR
                  S:X  d   eUR                  R                  5       UR                  5       :X  d   eg )Nhtmlr   r   rJ   r   r   )r   r   r   r5   r7   r   rJ   r^   )r=   ra   r   rJ   rt   s        r>   test_uppercase_scheme_redirect+TestRequests.test_uppercase_scheme_redirect&  sp    )%,,&3LL/E}}###uu{{}		+++rA   c                    [         R                  " 5       nSS/nU[        UR                  5      :X  d   eUR	                  S[        5       5        UR	                  S[        5       5        UR	                  S[        5       5        UR	                  S[        5       5        / SQnU[        UR                  5      :X  d   eUR	                  S[        5       5        UR	                  S	[        5       5        UR	                  S
[        5       5        / SQnU[        UR                  5      :X  d   e[         R                  " 5       nS[        5       0Ul        UR	                  S[        5       5        SUR                  ;   d   eSUR                  ;   d   eg )Nr  rC   
http://githttp://githubhttp://github.comhttp://github.com/about/)r  r  r  r  r  rC   http://gittiphttp://gittip.comhttp://gittip.com/about/)	r  r  r  r  r  r  r  r  rC   )r5   r   rn  adaptersmountr   )r=   r   orders2s       r>   test_transport_adapter_ordering,TestRequests.test_transport_adapter_ordering-  s5   Y'QZZ((((	km,	/	#[]3	*KM:
 QZZ((((	/	#[]3	*KM:

 QZZ(((( +-0
[]+BKK'''R[[(((rA   c                 J   SnUS-   nUS-   nUS-   nSn[         R                  " 5       n[        5       n[        5       nUR                  X5        UR                  X(5        UR	                  U5      UL d   eUR	                  U5      UL d   eUR	                  U5      UU4;  d   eg )Nr  r  z/another/pathz/longer/pathzhttps://another.example.com/r5   r   r   r  get_adapter)	r=   prefixmore_specific_prefixurl_matching_only_prefix!url_matching_more_specific_prefixurl_not_matching_prefixr   prefix_adaptermore_specific_prefix_adapters	            r>   (test_session_get_adapter_prefix_matching5TestRequests.test_session_get_adapter_prefix_matchingS  s    &%4#)O#; ,@>,Q)"@$'2}$	'	$C}}56.HHHMM;<+,	
, }}45(>
 
 	
 
rA   c                     SnUS-   n[         R                  " 5       n[        5       nUR                  X5        UR	                  U5      UL d   eg )N%hTtPs://eXamPle.CoM/MixEd_CAse_PREfixz	/full_urlr  )r=   mixed_case_prefixurl_matching_prefixr   
my_adapters        r>   3test_session_get_adapter_prefix_matching_mixed_case@TestRequests.test_session_get_adapter_prefix_matching_mixed_casek  sM    C/+= ]
	!.}}01Z???rA   c                     SnSn[         R                  " 5       n[        5       nUR                  X5        UR	                  U5      UL d   eg )Nr  z1HtTpS://exaMPLe.cOm/MiXeD_caSE_preFIX/another_urlr  )r=   r  'url_matching_prefix_with_different_caser   r  s        r>   <test_session_get_adapter_prefix_matching_is_case_insensitiveITestRequests.test_session_get_adapter_prefix_matching_is_case_insensitiveu  sL    C? 	0  ]
	!.}}DESSSrA   c                     [         R                  " 5       nSUR                  S'   UR                  U" S5      SS 0S9nSUR                  R                  ;  d   eg )Nr5  r4  r7   FOOrr   )r5   r   r_   r7   rz   r>  s       r>   &test_header_remove_is_case_insensitive3TestRequests.test_header_remove_is_case_insensitive  sP     		%EE'%.5$-E8AII-----rA   c                     [         R                  " 5       nSUR                  S'   UR                  U" S5      SS0S9nUR	                  5       S   SSS.:X  d   eg )Nr5  r4  r7   r  r   r  )r4  r  )r5   r   r   r7   r   r>  s       r>   %test_params_are_merged_case_sensitive2TestRequests.test_params_are_merged_case_sensitive  sU    EE'%.%E8vvx5#????rA   c                     SR                  SSS5      n[        R                  " SU5      R                  5       nUR                  U:X  d   eg )Nz$http://{}:{}@{}:9000/path?query#fragz$E8A3BE87-9E3F-4620-8858-95478E385B5Bz$EA770032-DA4D-4D84-8CE9-29C6D910BF1Ez?exactly-------------sixty-----------three------------charactersrY   )r  r5   rP   rR   rJ   r=   rJ   rt   s      r>   test_long_authinfo_in_url&TestRequests.test_long_authinfo_in_url  sH    4;;22M

 UC(002uu||rA   c                     SSS.n[         R                  " SU" S5      US9nUR                  5       nSUR                  R	                  5       ;   d   eSUR                  R	                  5       ;   d   eg )Nr  )unicodes   byterY   r7   rr   r  byte)r5   rP   rR   r_   rM  )r=   ra   r_   rt   r  s        r>   test_header_keys_are_native(TestRequests.test_header_keys_are_native  sc    $v6UGENGDIIK AIINN,,,,))))rA   c                     SSSSS.n[         R                  " U" S5      US9nUR                  5        H$  nX$   UR                  R                  U   :X  a  M$   e   g)	zBEnsure prepare_headers regex isn't flagging valid header contents.zbar baz quxs   fbbqrm   r   )r4  r5  rM  quxr7   rr   N)r5   r7   rM  rz   r_   )r=   ra   valid_headersrt   r  s        r>   test_header_validation#TestRequests.test_header_validation  s`     !	
 LL? %%'C %):):3)???? (rA   zinvalid_header, keyr  r5  rM  c                     [         R                  " [        5       n[        R                  " U" S5      US9  SSS5        U[        WR                  5      ;   d   eg! , (       d  f       N*= f)zWEnsure the header value is of type string or bytes as
per discussion in GH issue #3386
r7   rr   N)rG   rH   r   r5   r7   r  ra  )r=   ra   invalid_headerr  excinfos        r>   test_header_value_not_str&TestRequests.test_header_value_not_str  sI     ]]=)WLL@ *c'--(((( *)s   A
A)r  zbar
baz: quxzbar
baz: quxzbar
baz: quxzbarbaz: quxzfoozfo
ozfo
ozfo
oc                     [         R                  " [        5         [        R                  " U" S5      US9  SSS5        g! , (       d  f       g= f)zEnsure that a header containing return character sequences raise an
exception. Otherwise, multiple headers are created from single string.
r7   rr   NrG   rH   r   r5   r7   r=   ra   r  s      r>   test_header_no_return_chars(TestRequests.test_header_no_return_chars  s.    " ]]=)LL@ *))   A  
Az fooz	fooz    fooz barz    barz	bar c                     [         R                  " [        5         [        R                  " U" S5      US9  SSS5        g! , (       d  f       g= f)zWEnsure headers containing leading whitespace raise
InvalidHeader Error before sending.
r7   rr   Nr  r  s      r>   test_header_no_leading_space)TestRequests.test_header_no_leading_space  s.      ]]=)LL@ *))r  c                     " S S[         5      n " S S[        5      n[        R                  " U" S5      U" S5      S0S9nUR                  R
                  S   S:X  d   e[        R                  " U" S5      U" S	5      S
0S9nUR                  R
                  S   S
:X  d   e[        R                  " U" S5      U" S5      U" S
5      0S9nUR                  R
                  S   S
:X  d   eg)zIf the subclasses does not behave *exactly* like
the base bytes/str classes, this is not supported.
This test is for backwards compatibility.
c                       \ rS rSrSrg)>TestRequests.test_header_with_subclass_types.<locals>.MyStringi  r  Nrd  r  rA   r>   MyStringr    rf  rA   r  c                       \ rS rSrSrg)=TestRequests.test_header_with_subclass_types.<locals>.MyBytesi  r  Nrd  r  rA   r>   MyBytesr     rf  rA   r!  r7   zx-custommyheaderrr   s   x-customs   myheaderN)r  r   r5   r7   rz   r_   )r=   ra   r  r!  r_strr_bytesr_mixeds          r>   test_header_with_subclass_types,TestRequests.test_header_with_subclass_types  s    	s 		e 	 WU^hz6JJ5WX}}$$Z0J>>>,,ENW[%9;$G
 &&z2kAAA,,ENXj%97;;O$P
 &&z2kAAArA   r  s   fooc                     SS0nSU0n[         R                  " SU" S5      X2S9nUR                  5       nSUR                  S   ;   d   eg )	Nr~   this is a stringr   rd   r;   r>  multipart/form-datar   rs   )r=   ra   r  rQ   rt   r  s         r>    test_can_send_objects_with_files-TestRequests.test_can_send_objects_with_files  sP    '(eVWV_4MIIK$		.(AAAArA   c                     [         R                  " 5       nSUl        [        R                  " SU" S5      SU0S9nUR                  5       nSUR                  S   ;   d   eg )Nr  rd   r;   r  r  r*  r   )r   r   rb  r5   rP   rR   r_   )r=   ra   r  rt   r  s        r>   2test_can_send_file_object_with_non_string_filename?TestRequests.test_can_send_file_object_with_non_string_filename  sR    JJLVWV_S!HEIIK$		.(AAAArA   c                     SnSn[         R                  " SU" S5      US9nUR                  5       nUR                  S   U:X  d   eg )Nr)  16rd   r;   rn   r\   rs   r=   ra   rQ   r  rT   r  s         r>   %test_autoset_header_values_are_native2TestRequests.test_autoset_header_values_are_native  sG    !vwvTBKKMyy)*f444rA   c                     SnUR                  S5      n[        [        U5      5      n[        R                  " SU" S5      US9nUR                  5       nUR                  S   U:X  d   eg Nu3   This is a string containing multi-byte UTF-8 ☃️r   rd   r;   rn   r\   )r   r  r   r5   rP   rR   r_   )r=   ra   rQ   encoded_datar  rT   r  s          r>   "test_content_length_for_bytes_data/TestRequests.test_content_length_for_bytes_data  s_    D{{7+S&'vwv\JKKMyy)*f444rA   c                     Sn[        [        UR                  S5      5      5      n[        R                  " SU" S5      US9nUR                  5       nUR                  S   U:X  d   eg r6  )r  r   r   r5   rP   rR   r_   r2  s         r>   0test_content_length_for_string_data_counts_bytes=TestRequests.test_content_length_for_string_data_counts_bytes  sZ    DSW-./vwvTBKKMyy)*f444rA   c                     SnU H;  n[         R                  " SU5      nUR                  5       nX$R                  :X  a  M;   e   g )N)zJdata:image/gif;base64,R0lGODlhAQABAHAAACH5BAUAAAAALAAAAAABAAEAAAICRAEAOw==zfile:///etc/passwdz<magnet:?xt=urn:btih:be08f00302bc2d1d3cfa3af02024fa647a271431rY   r   )r=   	test_urlstest_urlrT   preqs        r>   $test_nonhttp_schemes_dont_check_URLs1TestRequests.test_nonhttp_schemes_dont_check_URLs&  sB    
	
 "H""5(3C;;=Dxx''' "rA   c                     [         R                  " U" S5      SU" S5      0SUS9nUR                  S   R                  R                  S   (       d   eSUR                  R                  ;  d   eg )Nr   rJ   r7   r  )r   r  r|  r   r  r5   r7   r   rz   r_   )r=   ra   r  r}  rt   s        r>   'test_auth_is_stripped_on_http_downgrade4TestRequests.test_auth_is_stripped_on_http_downgrade1  sh     LL=)75>*!$	
 yy|##++O<<<aii&7&7777rA   c                     [         R                  " U" S5      SS9nUR                  S   R                  R                  S   nUR                  R                  S   nX4:X  d   eg )Nr<  r  r  r   r  rD  )r=   ra   rt   h1h2s        r>   *test_auth_is_retained_for_redirect_on_host7TestRequests.test_auth_is_retained_for_redirect_on_host=  sS    LL.5EFYYq\!!))/:YY/xxrA   c                 `    [         R                  " 5       nUR                  SS5      (       d   eg )Nhttp://example.com/foozhttp://another.example.com/r5   r   should_strip_authr=   r   s     r>   "test_should_strip_auth_host_change/TestRequests.test_should_strip_auth_host_changeD  s3    ""$&C
 
 	
 
rA   c                 `    [         R                  " 5       nUR                  SS5      (       d   eg )Nhttps://example.com/foohttp://example.com/barrN  rP  s     r>   %test_should_strip_auth_http_downgrade2TestRequests.test_should_strip_auth_http_downgradeJ  s+    ""#<>VWWWWrA   c                 (   [         R                  " 5       nUR                  SS5      (       a   eUR                  SS5      (       a   eUR                  SS5      (       a   eUR                  SS5      (       d   eUR                  SS5      (       d   eg )NrM  https://example.com/barhttp://example.com:80/foohttps://example.com:443/barzhttp://example.com:8080/foozhttps://example.com:8443/barrN  rP  s     r>   $test_should_strip_auth_https_upgrade1TestRequests.test_should_strip_auth_https_upgradeN  s    &&$&?
 
 	
 
 &&')B
 
 	
 
 &&$&C
 
 	
 
 "")+D
 
 	
 
 ""$&D
 
 	
 
rA   c                 `    [         R                  " 5       nUR                  SS5      (       d   eg )Nzhttp://example.com:1234/foozhttps://example.com:4321/barrN  rP  s     r>   "test_should_strip_auth_port_change/TestRequests.test_should_strip_auth_port_changea  s3    "")+I
 
 	
 
rA   zold_uri, new_uri))zhttps://example.com:443/foorY  )rZ  rU  )rT  r[  )rM  zhttp://example.com:80/barc                 ^    [         R                  " 5       nUR                  X5      (       a   eg rE   rN  )r=   old_urinew_urir   s       r>   #test_should_strip_auth_default_port0TestRequests.test_should_strip_auth_default_portg  s,     &&w88888rA   c                 ~   [         R                  " 5       nUR                  U" S5      SSS9nUR                  (       d   eUR	                  X3R
                  SS9nUR                  S5        [        U5      nUR                  (       d   eUR                  5        H  nM     [        U5      nUR                  (       a   eg )Nz
redirect/2FT)r   r  r     )r5   r   r7   r   r  rz   r  r   )r=   ra   r   r1rgr2_r3s           r>   +test_manual_redirect_with_partial_body_read8TestRequests.test_manual_redirect_with_partial_body_readt  s    UU7<(%UM~~~  ZZ = 	"X~~~ "A #"X>>!!>rA   c                 n    Sn[         R                  " SSUS9R                  5       nUR                  b   eg )N   the datarY   r   rn   )r5   rP   rR   _body_positionr=   rQ   r   s      r>   %test_prepare_body_position_non_stream2TestRequests.test_prepare_body_position_non_stream  s7    ';$GOOQ""***rA   c                    [         R                  " S5      n[        R                  " SSUS9R	                  5       nUR
                  S:X  d   eUR                  R                  5       S:X  d   eUR                  R                  5       S:X  d   e[        R                  R                  U5        UR                  R                  5       S:X  d   eg )Nrq  rY   r   rn   r   rA   )
r   r   r5   rP   rR   rr  rS   r  utilsrewind_bodyrs  s      r>   test_rewind_bodyTestRequests.test_rewind_body  s    zz+&';$GOOQ""a'''yy~~;... yy~~3&&& 	""4(yy~~;...rA   c                    [         R                  " S5      nUR                  S5        [        R                  " SSUS9R                  5       nUR                  S:X  d   eUR                  R                  5       S:X  d   eUR                  R                  5       S:X  d   e[        R                  R                  U5        UR                  R                  5       S:X  d   eg )Nrq  r  rY   r   rn   s   datarA   )
r   r   r  r5   rP   rR   rr  rS   rw  rx  rs  s      r>   test_rewind_partially_read_body,TestRequests.test_rewind_partially_read_body  s    zz+&		!';$GOOQ""a'''yy~~7*** yy~~3&&& 	""4(yy~~7***rA   c                 \    " S S5      nU" S5      n[         R                  " SSUS9R                  5       nUR                  S:X  d   e[        R
                  " [        5       n[         R                  R                  U5        S S S 5        S[        W5      ;   d   eg ! , (       d  f       N = f)	Nc                   &    \ rS rSrS rS rS rSrg)9TestRequests.test_rewind_body_no_seek.<locals>.BadFileObji  c                     Xl         g rE   rn   r   s     r>   r!  BTestRequests.test_rewind_body_no_seek.<locals>.BadFileObj.__init__       	rA   c                     gr  r  r  s    r>   r,  >TestRequests.test_rewind_body_no_seek.<locals>.BadFileObj.tell      rA   c                     g rE   r  r  s    r>   rU  BTestRequests.test_rewind_body_no_seek.<locals>.BadFileObj.__iter__      rA   rn   Nr4  r5  r6  r7  r!  r,  rU  r8  r  rA   r>   
BadFileObjr    s    !rA   r  the datarY   r   rn   r   Unable to rewind request body
r5   rP   rR   rr  rG   rH   r    rw  rx  r  r=   r  rQ   r   r   s        r>   test_rewind_body_no_seek%TestRequests.test_rewind_body_no_seek  s    	 	 *%';$GOOQ""a''']]01QNN&&t, 2 /#a&888 21   # B
B+c                 \    " S S5      nU" S5      n[         R                  " SSUS9R                  5       nUR                  S:X  d   e[        R
                  " [        5       n[         R                  R                  U5        S S S 5        S[        W5      ;   d   eg ! , (       d  f       N = f)	Nc                   0    \ rS rSrS rS rSS jrS rSrg)	=TestRequests.test_rewind_body_failed_seek.<locals>.BadFileObji  c                     Xl         g rE   rn   r   s     r>   r!  FTestRequests.test_rewind_body_failed_seek.<locals>.BadFileObj.__init__  r  rA   c                     gr  r  r  s    r>   r,  BTestRequests.test_rewind_body_failed_seek.<locals>.BadFileObj.tell  r  rA   c                     [        5       erE   OSError)r=   poswhences      r>   r1  BTestRequests.test_rewind_body_failed_seek.<locals>.BadFileObj.seek  	    irA   c                     g rE   r  r  s    r>   rU  FTestRequests.test_rewind_body_failed_seek.<locals>.BadFileObj.__iter__  r  rA   rn   Nr3  )	r4  r5  r6  r7  r!  r,  r1  rU  r8  r  rA   r>   r  r    s    ! rA   r  r  rY   r   rn   r   z*error occurred when rewinding request bodyr  r  s        r>   test_rewind_body_failed_seek)TestRequests.test_rewind_body_failed_seek  s    	 	 *%';$GOOQ""a''']]01QNN&&t, 2 <s1vEEE 21r  c                 V    " S S5      nU" S5      n[         R                  " SSUS9R                  5       nUR                  c   e[        R
                  " [        5       n[         R                  R                  U5        S S S 5        S[        W5      ;   d   eg ! , (       d  f       N = f)Nc                   &    \ rS rSrS rS rS rSrg)=TestRequests.test_rewind_body_failed_tell.<locals>.BadFileObji  c                     Xl         g rE   rn   r   s     r>   r!  FTestRequests.test_rewind_body_failed_tell.<locals>.BadFileObj.__init__  r  rA   c                     [        5       erE   r  r  s    r>   r,  BTestRequests.test_rewind_body_failed_tell.<locals>.BadFileObj.tell  r  rA   c                     g rE   r  r  s    r>   rU  FTestRequests.test_rewind_body_failed_tell.<locals>.BadFileObj.__iter__  r  rA   rn   Nr  r  rA   r>   r  r    s    ! rA   r  r  rY   r   rn   r  r  r  s        r>   test_rewind_body_failed_tell)TestRequests.test_rewind_body_failed_tell  s    	 	 *%';$GOOQ""...]]01QNN&&t, 2 /#a&888 21s     B
B(c                 f   ^ ^ UR                  US9nUR                  mST l        UU 4S jnXCl        g )Nr  Fc                  z   > T" U 0 UD6nTR                   (       d   SUR                  R                  S'   STl         U$ )Nrm  r&  T)_patched_responser  r_   )r  rG  r  org_build_responser=   s      r>   build_responseDTestRequests._patch_adapter_gzipped_redirect.<locals>.build_response  s=    %t6v6D))7=  !34)-&KrA   )r  r  r  )r=   r6   rJ   adapterr  r  s   `    @r>   _patch_adapter_gzipped_redirect,TestRequests._patch_adapter_gzipped_redirect  s7    %%#%.$33!&	 "0rA   c                     [         R                  " 5       nU" S5      nU R                  X#5        UR                  U5        g )Nr<  )r5   r   r  r7   r8  s       r>   'test_redirect_with_wrong_gzipped_header4TestRequests.test_redirect_with_wrong_gzipped_header  s3    l#,,Q4	c
rA   zusername, password, auth_str)r   r   zBasic dGVzdDp0ZXN0z"Basic 0LjQvNGPOtC/0LDRgNC+0LvRjA==c                 V    [        X5      n[        U[        5      (       d   eXC:X  d   eg rE   )r   r   r   )r=   r  r  auth_strr   s        r>   $test_basic_auth_str_is_always_native1TestRequests.test_basic_auth_str_is_always_native  s+     H/![))))}}rA   c                     [         R                  " U" S5      5      nUR                  S   R                  nSnUR                   H  nUR                  USU :X  d   eUS-  nM     g )Nz
redirect/5r   r'   )r5   r7   r   )r=   ra   rt   totalir  s         r>   test_requests_history_is_saved+TestRequests.test_requests_history_is_saved
  s\    LL./		"%%IID<<51:---FA rA   c                     [         R                  " U" S5      SS0S9nUR                  S:X  d   eSUR                  R                  S   ;   d   eSS0UR                  5       S   :X  d   eg )	Nr;   rN   r  r   r   r  r   r   )r5   r;   r   rz   r_   r   r   s      r>   'test_json_param_post_content_type_works4TestRequests.test_json_param_post_content_type_works  sf    MM'&/=}}###!QYY%6%6~%FFFF|qvvx////rA   c                     [         R                  " SU" S5      SS0SS0S9nUR                  5       nSUR                  :X  d   eg )	Nrd   r;   r  r  musicflute)rX   rJ   rQ   r   zstuff=elixr)r5   rP   rR   rS   r  s       r>   3test_json_param_post_should_not_override_data_param@TestRequests.test_json_param_post_should_not_override_data_param  sK    7#7#	
 yy{		)))rA   c                     [         R                  " U" S5      SS9nUR                  S:X  d   eUR                  5       n[	        U5        [        [        U5      5      S:X  d   eg )Nstream/4Trg  r   r  )r5   r7   r   
iter_linesr   r   rn  )r=   ra   rt   its       r>   test_response_iter_lines%TestRequests.test_response_iter_lines"  sQ    LL,T:}}###\\^R48}!!!rA   c                     [         R                  " U" S5      SS9 n[        U[         R                  5      (       d   e S S S 5        WR                  R
                  (       d   eg ! , (       d  f       N,= f)Nr  Trg  )r5   r7   r   r  r  closed)r=   ra   r   s      r>   test_response_context_manager*TestRequests.test_response_context_manager*  sS    \\'*-d;xh(9(9:::: < ||"""" <;s   "A%%
A3c                    [         R                  " 5       n[        R                  " UR	                  U" S5      SS95       n S S S 5        WR
                  SL d   eUR                  R                  (       d   eg ! , (       d  f       N== f)Nr  Trg  F)r5   r6   
contextlibclosingr7   r  r  r  )r=   ra   r   r   s       r>   2test_unconsumed_session_response_closes_connection?TestRequests.test_unconsumed_session_response_closes_connection0  sn    gj&9$ GHH I ))U222||""""	 IHs    A99
Bc                     [         R                  " U" S5      SS9nUR                  S:X  d   e[        UR	                  5       5        [        [        UR	                  5       5      5      S:X  d   eg)z+Response.iter_lines() is not reentrant safer  Trg  r   r  N)r5   r7   r   r   r  r   rn  r   s      r>   "test_response_iter_lines_reentrant/TestRequests.test_response_iter_lines_reentrant9  sW     LL,T:}}###Q\\^4'(A---rA   c                    [         R                  " 5       [         R                  " 5       S.n[        R                  " 5       n[         R                  R                  UR                  S   R                  U5         UR                  5         US   R                  R                  5         US   R                  R                  5         S S S 5        g ! , (       d  f       g = f)N)onetworC   r  r  )r   r  r5   r   r:   rE  r  proxy_managerr  clearassert_called_once_with)r=   r   r6   s      r>   test_session_close_proxy_clear+TestRequests.test_session_close_proxy_clearB  s    99;99;
 ""$ZZ__W--i8FFPMMOEN  88:EN  88: QPPs   8AC
Cc                 N    [        5       nUR                  S5      nUSS0:X  d   eg )Nzhttp://user:pass@httpbin.orgr  zBasic dXNlcjpwYXNzr   proxy_headersr=   r  r_   s      r>   test_proxy_authTestRequests.test_proxy_authM  s/    -''(FG02FGGGGrA   c                 N    [        5       nUR                  S5      nUSS0:X  d   eg )Nzhttp://user:@httpbin.orgr  zBasic dXNlcjo=r  r  s      r>   test_proxy_auth_empty_pass'TestRequests.test_proxy_auth_empty_passR  s/    -''(BC02BCCCCrA   c                    [         R                  " U" S5      5      nSUl        SUl        SUl        UR
                  b   e[        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nz/status/204r   F)
r5   r7   r   r  r  r   rG   rH   r  r   r   s      r>   'test_response_json_when_content_is_None4TestRequests.test_response_json_when_content_is_NoneW  s\    LL/0
#yy   ]]:&FFH '&&s   A55
Bc                     [         R                  " 5       n[        R                  " S5      Ul        UR                  R                  (       a   eUR                  5         UR                  R                  (       d   eg)zzTest `close` call for non-urllib3-like raw objects.
Should work when `release_conn` attr doesn't exist on `response.raw`.
r   N)r5   r  r)   r  r  r  )r=   r  s     r>   "test_response_without_release_conn/TestRequests.test_response_without_release_connb  sN       "$$V,88??""

xxrA   c                     SnU" S5      n[         R                  " S5      n[        R                  " SX2US9nUR	                  5       nSUR
                  ;   d   eSUR
                  ;  d   eg)	zgEnsure that a byte stream with size 0 will not set both a Content-Length
and Transfer-Encoding header.
r  r;   rA   rd   r  rQ   r  r\   Nr   r   r5   rP   rR   r_   r=   ra   r  rJ   file_objrt   prepared_requests          r>   >test_empty_stream_with_auth_does_not_set_content_length_headerKTestRequests.test_empty_stream_with_auth_does_not_set_content_length_headerl  si      fo::c?VS(C99;"&6&>&>>>>'7'?'????rA   c                     SnU" S5      n[         R                  " S5      n[        R                  " SX2US9nUR	                  5       nSUR
                  ;  d   eSUR
                  ;   d   eg)	ziEnsure that a byte stream with size > 0 will not set both a Content-Length
and Transfer-Encoding header.
r  r;   s	   test datard   r  r  r\   Nr  r  s          r>   ;test_stream_with_auth_does_not_set_transfer_encoding_headerHTestRequests.test_stream_with_auth_does_not_set_transfer_encoding_headerx  sj      fo::l+VS(C99;"*:*B*BBBB#3#;#;;;;rA   c                     S S 5       nU" S5      n[         R                  " SX2S9nUR                  5       nSUR                  ;   d   eSUR                  ;  d   eg)	zqEnsure that requests with a generator body stream using
Transfer-Encoding: chunked, not a Content-Length header.
c              3   $   #    U  H  ov   M     g 7frE   r  r  r  s     r>   r  VTestRequests.test_chunked_upload_does_not_set_content_length_header.<locals>.<genexpr>  s     .-a-s   )   a   b   cr;   rd   rn   r  r\   Nrs   )r=   ra   rQ   rJ   rt   r  s         r>   6test_chunked_upload_does_not_set_content_length_headerCTestRequests.test_chunked_upload_does_not_set_content_length_header  s`     /-.foVS499;"&6&>&>>>>'7'?'????rA   c                 f   U" S5      n[        SU05      nU" SU-  5      n[        SU05      nU" SU-  5      nUUU/n " S S[        R                  5      nU" 5       n	U	R                  US   5      n
[	        U
R
                  5      S	:X  d   eU
R                  S
:X  d   eU
R
                  S   R                  S:X  d   eU
R
                  S   R                  (       d   eU
R
                  S   R                  S
:X  d   eU
R
                  S   R                  (       a   eU
R                  US	   :X  d   eg)a  Tests a custom mixin to overwrite ``get_redirect_target``.

Ensures a subclassed ``requests.Session`` can handle a certain type of
malformed redirect responses.

1. original request receives a proper response: 302 redirect
2. following the redirect, a malformed response is given:
    status code = HTTP 200
    location = alternate url
3. the custom session catches the edge case and follows the redirect
r  r   zresponse-headers?%srJ   zredirect-to?%sc                       \ rS rSrS rSrg)FTestRequests.test_custom_redirect_mixin.<locals>.CustomRedirectSessioni  c                     UR                   (       a  UR                  S   $ UR                  R                  S5      nU(       a  X!R                  :w  a  U$ g )Nr   )r   r_   r7   rJ   )r=   r  r   s      r>   get_redirect_targetZTestRequests.test_custom_redirect_mixin.<locals>.CustomRedirectSession.get_redirect_target  sB    ##<<
33<<++J7XX!5#OrA   r  N)r4  r5  r6  r7  r  r8  r  rA   r>   CustomRedirectSessionr    s    rA   r  r   r  r   r   r'   N)	r#   r5   r   r7   r   r   r   r   rJ   )r=   ra   	url_finalquerystring_malformedurl_redirect_malformedquerystring_redirecturl_redirect	urls_testr  r6   rt   s              r>   test_custom_redirect_mixin'TestRequests.test_custom_redirect_mixin  s3    FO	 ):y*A B!()>AV)V!W(%1G)HI/2FFG"
			H$4$4 		 ()KK	!%199~"""}}###yy|''3...yy|''''yy|''3...99Q<++++uu	!$$$rA   )r  )r4  r5  r6  r7  r  r?   rG   markparametrizer   r   r   rK   rV   rb   rj   ro   ru   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r"  r+  r0  r9  r?  rC  rF  rJ  rN  rQ  rW  rZ  rf  rk  rp  rt  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_  rd  rj  ro  rt  rx  r~  r  r  r  r  skipifr(   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r.  r:  rF  rJ  rN  rR  rU  r[  r_  rk  ru  rx  r  r  r  r  r  urllib3rh  ProtocolErrorro  r   DecodeErrorr   ReadTimeoutErrorr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r
  r  r  r  r&  	bytearrayr+  r.  r3  r8  r;  rA  rE  rJ  rQ  rV  r\  r_  rd  rn  rt  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  xfailr  r  r  r  r  r  r  r  r
  r  r8  r  rA   r>   r0   r0   P   sg	   4
F [[/0,-9:./#././	
$ [[X73 83 [[X'JK4 L4 [[X'JK4 L496
 [[		
''	A=/4
 [[X'STC UC$(	*
<	V((((((;";.2$$)/&/
?)	3,@ 35*( [[U$@A$ B$$$$ [[__ 5 5 78		
QQN [[ .?!?3,j9	

)
)R0'0'=K [[	
II!8F("(5	'( B8"<',R8".2Q" [[eW%&gw'(gw'(eU^$E5>"	
	2	2
P

  [[J"L1<@"B'.-|<#T*$&"=tD +7&2  +-&2 	
2.32.$ [[T!H  6	62:9
0$ [[i i&&()gh		
$$5$
'E
9	01-Q"2504<$(3&( , * *	C#!?&
),& [[#--uw8LM++UW6JK00./R((%'3CD		
''
7'' ' '
*$	7,$)L
0@
T.@*
@ [[QZeU^$e,eU^$e,	
)) [[%&%&O$O$ee		
AA [[UOeFOIG%L	
AAB2 [[Wufi6G&HIB JBB555	(
8
X
&
 [[	
99"&+
/+9(F.9(0 [[&2!%%'4	



0*"## [[. .	;H
D
	
@
<	@*%rA   r0   c            
           \ rS rSr\R
                  R                  S\" SSS.5      \" SS/5      \" SSS945      S	 5       rS
 r	S r
S rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestCaseInsensitiveDicti  cidr4  r5  FooBAr)r(  r4  )r)  r5  )r  r)  c                 F    [        U5      S:X  d   eSU;   d   eSU;   d   eg )Nr  r4  r5  r  r=   r&  s     r>   	test_init!TestCaseInsensitiveDict.test_init  s,     3x1}}||||rA   c                 \    [        5       nSUS'   US   S:X  d   e[        U5      S/:X  d   eg )Nr  r!  aCCEPT)r&   rn  r+  s     r>   test_docstring_example.TestCaseInsensitiveDict.test_docstring_example  s:    !#*H8} 2222CyXJ&&&rA   c                 L    [        SSS.5      nSUS'   [        U5      S:X  d   eg )Nr~   r   r~   r   Ar  r&   r   r+  s     r>   test_len TestCaseInsensitiveDict.test_len  s*    !#"67C3x1}}rA   c                 J    [        SS05      nUS   S:X  d   eUS   S:X  d   eg )NSpambluevalspamSPAMr%   r+  s     r>   test_getitem$TestCaseInsensitiveDict.test_getitem  s5    !69"566{i'''6{i'''rA   c                     [        5       nSUS'   SUS'   SUS'   SUS'   US   S:X  d   eUS   S:X  d   e[        UR                  5       5      S/:X  d   eg	)
z-__setitem__ should behave case-insensitively.onevalr;  twovalr9  redvalsPAMr:  r<  N)r&   rn  rM  r+  s     r>   test_fixes_649&TestCaseInsensitiveDict.test_fixes_649  sm    !#FFFF6{i'''6{i'''CHHJF8+++rA   c                 Z    [        5       nSUS'   US	 SU;  d   e[        U5      S:X  d   eg )Nsomevalr9  sPamr;  r   r5  r+  s     r>   test_delitem$TestCaseInsensitiveDict.test_delitem  s8    !#FKS   3x1}}rA   c                 r    [        5       nSUS'   SU;   d   eSU;   d   eSU;   d   eSU;   d   eSU;  d   eg )NrG  r9  r;  r<  rH  notspamr%   r+  s     r>   test_contains%TestCaseInsensitiveDict.test_contains  sQ    !#F}}}}}}}}###rA   c                     [        5       nSUS'   SUS'   UR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  SS5      S:X  d   eg )Nr@  r;  r:  r<  rH  rL  default)r&   r7   r+  s     r>   test_get TestCaseInsensitiveDict.test_get  sw    !#FFwwv)+++wwv)+++wwv)+++wwy),	999rA   c                     [        5       nSUS'   UR                  SS05        US   S:X  d   e[        SSS.5      nUR                  SS	S
.5        [        U5      S:X  d   eUS   S:X  d   eUS   S	:X  d   eg )Nr:  r;  rH  
notbluevalr4  r5  r'  
anotherfoo
anotherbar)fOObARr  )r&   r  r   r+  s     r>   test_update#TestCaseInsensitiveDict.test_update  s    !#F

FL)*6{l***!%">?

<=>3x1}}5z\)))5z\)))rA   c                 \    [        SSS.5      nUR                  SS05        US   S:X  d   eg )Nr4  r5  )r4  r5  newfoo)r&   r  r+  s     r>   test_update_retains_unchanged5TestCaseInsensitiveDict.test_update_retains_unchanged		  s4    !%">?

E8$%5zU"""rA   c                 n    [        SSS.5      n[        SS/5      n[        [        U5      5      U:X  d   eg )Nr;  eggs)r9  Eggsr9  ra  )r&   	frozensetrT  )r=   r&  rM  s      r>   	test_iter!TestCaseInsensitiveDict.test_iter	  s7    !66"BC&&)*c#t+++rA   c                     [        SSS.5      n[        SSS.5      nX:X  d   eUS	 X:w  d   eUSSS.:X  d   eU[        5       :w  d   eg )Nr:  rB  )r<  ra  )r;  r`  r;  )r&   object)r=   r&  othercids      r>   test_equality%TestCaseInsensitiveDict.test_equality	  s]    !9h"GH&	8'LMVy(;;;;fhrA   c                 ~    [        SS05      nUR                  SS5      S:X  d   eUR                  SS5      S:X  d   eg )Nr9  r:  r;  rT  rL  )r&   
setdefaultr+  s     r>   test_setdefault'TestCaseInsensitiveDict.test_setdefault	  sC    !69"56~~fl3y@@@~~i6,FFFrA   c                     [        SSS.5      n[        S UR                  5        5       5      n[        SS/5      nX#:X  d   eg )Nr  r5   r!  
user-Agentc              3   *   #    U  H	  u  pUv   M     g 7frE   r  )r  lowerkeyvs      r>   r  ;TestCaseInsensitiveDict.test_lower_items.<locals>.<genexpr>(	  s     I7H87H   r  r'  )r&   rb  lower_items)r=   r&  keysetlowerkeysets       r>   test_lower_items(TestCaseInsensitiveDict.test_lower_items!	  sK    !,(
 Is7HII< 89$$$rA   c                     [        SSS.5      n[        SS/5      n[        S UR                  5        5       5      U:X  d   e[        UR                  5       5      U:X  d   e[        U5      U:X  d   eg )Nr  r5   ro  r!  rp  c              3   *   #    U  H	  oS    v   M     g7fr   Nr  r  s     r>   r  ATestCaseInsensitiveDict.test_preserve_key_case.<locals>.<genexpr>4	       3{!1{ru  )r&   rb  r  rM  r=   r&  rw  s      r>   test_preserve_key_case.TestCaseInsensitiveDict.test_preserve_key_case,	  sr    !,(
 Hl343syy{33v===$...~'''rA   c                    [        SSS.5      nUR                  SS05        SUS'   [        SS/5      n[        S UR                  5        5       5      U:X  d   e[        UR	                  5       5      U:X  d   e[        U5      U:X  d   eg )Nr  r5   ro  r  z
USER-AGENTc              3   *   #    U  H	  oS    v   M     g7fr}  r  r  s     r>   r  FTestCaseInsensitiveDict.test_preserve_last_key_case.<locals>.<genexpr>B	  r  ru  )r&   r  rb  r  rM  r  s      r>   test_preserve_last_key_case3TestCaseInsensitiveDict.test_preserve_last_key_case8	  s    !,(
 	

H012&LHl343syy{33v===$...~'''rA   c                 f    [        SSS.5      nUR                  5       nX:X  d   eSUS'   X:w  d   eg )Nr  r5   ro  Tchanged)r&   ri  )r=   r&  cid_copys      r>   	test_copy!TestCaseInsensitiveDict.test_copyF	  sA    !,(
 88:IrA   r  N)r4  r5  r6  r7  rG   r  r  r&   r,  r0  r6  r=  rD  rI  rM  rQ  rY  r]  rc  rh  rl  ry  r  r  r  r8  r  rA   r>   r%  r%    s    [[e <= @AEu5	

'
(
	,$:	*#
,
G
	%
((
rA   r%  c                   t    \ rS rSrSrS r\R                  R                  SS\	4S\
445      S 5       rS rS	rg
)TestMorselToCookieExpiresiS	  z8Tests for morsel_to_cookie when morsel contains expires.c                 \    [        5       nSUS'   [        U5      nUR                  S:X  d   eg)z4Test case where we convert expires from string time.zThu, 01-Jan-1970 00:00:01 GMTexpiresr'   Nr	   r   r  r=   morselr]  s      r>   test_expires_valid_str0TestMorselToCookieExpires.test_expires_valid_strV	  s1     ;y!&)~~"""rA   zvalue, exceptiond   woopsc                     [        5       nXS'   [        R                  " U5         [        U5        SSS5        g! , (       d  f       g= f)z6Test case where an invalid type is passed for expires.r  N)r	   rG   rH   r   )r=   ra  rI   r  s       r>   test_expires_invalid_int2TestMorselToCookieExpires.test_expires_invalid_int^	  s3     !y]]9%V$ &%%s	   :
Ac                 V    [        5       nSUS'   [        U5      nUR                  b   eg)z Test case where expires is None.Nr  r  r  s      r>   test_expires_none+TestMorselToCookieExpires.test_expires_nonel	  s/      y!&)~~%%%rA   r  N)r4  r5  r6  r7  __doc__r  rG   r  r  r  r  r  r  r8  r  rA   r>   r  r  S	  sJ    B# [[)j!	
%%&rA   r  c                   $    \ rS rSrSrS rS rSrg)TestMorselToCookieMaxAgeiu	  z8Tests for morsel_to_cookie when morsel contains max-age.c                 z    [        5       nSUS'   [        U5      n[        UR                  [        5      (       d   eg)z5Test case where a valid max age in seconds is passed.<   max-ageN)r	   r   r   r  intr  s      r>   test_max_age_valid_int/TestMorselToCookieMaxAge.test_max_age_valid_inty	  s6     y!&)&..#....rA   c                     [        5       nSUS'   [        R                  " [        5         [	        U5        SSS5        g! , (       d  f       g= f)z,Test case where a invalid max age is passed.r  r  N)r	   rG   rH   r  r   )r=   r  s     r>   test_max_age_invalid_str1TestMorselToCookieMaxAge.test_max_age_invalid_str	  s5     #y]]9%V$ &%%s	   ?
Ar  N)r4  r5  r6  r7  r  r  r  r8  r  rA   r>   r  r  u	  s    B/%rA   r  c            	          \ rS rSrS r\R                  R                  SS5      S 5       r\R                  R                  SS\	" SSS945      S	 5       r
\R                  R                  SS
\	" SSS945      S 5       r\R                  R                  SS\	" SSS945      S 5       r\R                  R                  SS\	" SSS945      S 5       rS rSrg)TestTimeouti	  c                      [         R                  " U" S5      SS9  g ! [         R                  R                   a,  nSUR                  S   R                  S   ;   d   e S nAg S nAff = f)Ndelay/10g       @r  zRead timed outr   )r5   r7   rh  r   r  )r=   ra   r   s      r>   test_stream_timeoutTestTimeout.test_stream_timeout	  sU    	9LL,c:""** 	9#qvvay~~a'8888	9s    A("A##A(ztimeout, error_text)))r  r  r   z(connect, read))r4  zmust be an int, float or Nonec                     [         R                  " [        5       n[        R                  " U" S5      US9  S S S 5        U[        W5      ;   d   eg ! , (       d  f       N = f)Nr7   r  )rG   rH   r  r5   r7   r  )r=   ra   r  
error_textr   s        r>   test_invalid_timeout TestTimeout.test_invalid_timeout	  sD     ]]:&!LL9 'SV### '&s   A
Ar  N)connectr  c                 ^    [         R                  " U" S5      US9nUR                  S:X  d   eg)af  Check that you can set None as a valid timeout value.

To actually test this behavior, we'd want to check that setting the
timeout to None actually lets the request block past the system default
timeout. However, this would make the test suite unbearably slow.
Instead we verify that setting the timeout to None does not prevent the
request from succeeding.
r7   r  r   Nr/  )r=   ra   r  rt   s       r>   test_none_timeoutTestTimeout.test_none_timeout	  s*     LL9}}###rA   )N皙?r  c                      [         R                  " U" S5      US9  [        R                  " S5        g ! [         a     g f = f)Nr  r  z#The recv() request should time out.)r5   r7   rG   r   r   )r=   ra   r  s      r>   test_read_timeoutTestTimeout.test_read_timeout	  s9    	LL,g>KK=> 		s   14 
A A)r  Nc                      [         R                  " [        US9  [        R                  " S5        g ! [
         a8  n[        U[        5      (       d   e[        U[        5      (       d   e S nAg S nAff = fNr  z&The connect() request should time out.)	r5   r7   TARPITrG   r   r   r   r   r   )r=   r  r   s      r>   test_connect_timeout TestTimeout.test_connect_timeout	  sX    	*LL1KK@A 	*a1111a))))	*s   /2 
A4.A//A4)r  r  c                      [         R                  " [        US9  [        R                  " S5        g ! [
         a     g f = fr  )r5   r7   r  rG   r   r   )r=   r  s     r>   test_total_timeout_connect&TestTimeout.test_total_timeout_connect	  s4    	LL1KK@A 		s   /2 
??c                 d    [         R                  " SU" S5      5      nUR                  (       d   eg)z0See: https://github.com/psf/requests/issues/2316s   GETr7   N)r5   rz   rc  r   s      r>   test_encoded_methods TestTimeout.test_encoded_methods	  s#    VWU^4tttrA   r  )r4  r5  r6  r7  r  rG   r  r  r  Urllib3Timeoutr  r  r  r  r  r8  r  rA   r>   r  r  	  s   9 [[	
$$
 [[Y~dQU/V(WX
$ Y
$ [[K3!GH [[K$!GH** [[Js EFrA   r  SendCallr  c                   ,    \ rS rSrS rS rS rS rSrg)RedirectSessioni	  c                 H    Xl         / U l        SU l        0 U l        SU l        g )Nr   F)rd  callsr   r7  	trust_env)r=   order_of_redirectss     r>   r!  RedirectSession.__init__	  s$    +
rA   c                 j    U R                   R                  [        X5      5        U R                  5       $ rE   )r  r  r  r  rF  s      r>   r   RedirectSession.send	  s(    

(401""$$rA   c                 D   U R                   S   R                  S   n[        R                  " 5       n [	        U R
                  R                  S5      5      Ul        [        SS05      Ul
        U R                  5       Ul        Xl        U$ ! [         a
    SUl         NBf = f)Nr  r   r   Locationr  )r  r  r5   r  r  rd  popr   
IndexErrorr&   r_   
_build_rawr  rz   )r=   rz   rt   s      r>   r  RedirectSession.build_response	  s    **R.%%a(	  2 21 56AM (S(9:	!	  	 AM	 s   )B BBc                 N    [         R                   " S5      n[        USS 5        U$ )Nrm   r  c                      U $ rE   r  r  s    r>   r  ,RedirectSession._build_raw.<locals>.<lambda>	  s    drA   )r)   r  )r=   strings     r>   r  RedirectSession._build_raw	  s$    ""2&(:;rA   )r  r7  r   rd  r  N)	r4  r5  r6  r7  r!  r   r  r  r8  r  rA   r>   r  r  	  s    %rA   r  c                      SS0n [        5       nUR                  SSU S9  [        UR                  [        5      (       d   eg )Nr  ra  rY   zhttps://www.example.com/)rX   rJ   r   )r"   rR   r   rS   r   )rS   r  s     r>   test_json_encodes_as_bytesr  	  s>    7DAIIU :IFaffe$$$$rA   c                    [        SS/5      n[        R                  " SU " S5      5      R                  5       nUR	                  U5      nUR
                  R                  S:X  d   eUR                  S   [        UR
                  40 5      :X  d   eUR                  X25      nSSS S S0 S.nU HK  nUR
                  R                  S	:X  d   e[        UR
                  4U5      nUR                  S   U:X  a  MK   e   g )
Nr   r   rd   r;   r  FT)r  r|  r  r  r   r   rY   )
r  r5   rP   rR   r   rz   rX   r  r  r  )ra   r6   r   r0redirect_generatordefault_keyword_argsr   	send_calls           r>   #test_requests_are_updated_each_timer  	  s    sCj)GFGFO4<<>D	d	B::&&&=="** ;;;; 222<  '&&%///h..02FG	}}R I--- 'rA   zvar,url,proxy))r  r   socks5://proxy.com:9876)https_proxyr  r  )	all_proxyr   r  )r  r  r  c                 $   [         R                  " 5       n[        5       nUR                  SUS9  X0n[	        U5      R
                  n[        S0 UD6   UR                  U0 5      nXg;   d   eXv   U:X  d   e S S S 5        g ! , (       d  f       g = f)NrY   r  r  )r5   r   r"   rR   r   r   r,   r  )varrJ   proxyr6   r   rG  r   r   s           r>   $test_proxy_env_vars_override_defaultr  
  s      GDLL3L'\Fc]!!F		#F	#))$3   %''' 
$	#	#s   $B
BrQ   ))r3  re  r   )r  r3  )r3  r  )r   r  c                     [        5       nUR                  SSU [        5       S9  UR                  [	        U 5      :X  d   eg)zVEnsure that the data argument will accept tuples of strings
and properly encode them.
rY   http://www.example.comrX   rJ   rQ   r  N)r"   rR   r!   rS   r#   )rQ   r  s     r>   !test_data_argument_accepts_tuplesr  %
  sA     	AII2]_   66Yt_$$$rA   rG  rY   r  zfoo=barr  r4  r5  )rX   rJ   rQ   r  r7  u$   http://www.example.com/üniçø∂ér  c                     [        5       nU (       a  UR                  " S0 U D6  UR                  5       nS H  n[        X5      [        X#5      :X  a  M   e   g )N)rX   rJ   r_   r_  rS   r  r  )r"   rR   ri  getattr)rG  r  ri  attrs       r>   test_prepared_copyr  8
  sL    * 	A			F668DIq74#6666 JrA   c           
         SSK Jn  [        R                  " 5       nUR	                  S[        U" SS/S9S95        [        R                  " [        5         UR                  U " S5      5        S S S 5        g ! , (       d  f       g = f)	Nr   )RetryrC   r  r  )r  status_forcelist)max_retriesz
status/500)
urllib3.utilr  r5   r   r  r   rG   rH   r   r7   )ra   r  r   s      r>   test_urllib3_retriesr  U
  sY    "AGGI{u1PSu/UVW	z	"	gl#$ 
#	"	"s   A66
Bc                     [         R                  " 5       nUR                  S[        SSS95         UR	                  U " S5      5        g ! [
         a  nS[        U5      ;   d   e S nAg S nAff = f)NrC   r   )pool_connectionspool_maxsizez
status/200zPool is closed.)r5   r   r  r   r7   r   r  )ra   r   r   s      r>   #test_urllib3_pool_connection_closedr  _
  s]    AGGI{AAFG+	gl#$ + CF***+s   A	 	
A.A))A.c                   D   \ rS rSr\R
                  R                  SSSSSR                  5       S4SS	R                  5       S
4SSR                  5       S4SSS45      S 5       r\R
                  R                  SS5      S 5       r	\R
                  R                  SS\
445      S 5       r\R
                  R                  SS5      S 5       r\R
                  R                  SSSS0S4S SS0S4S!SS0S"4S"SS0S"445      S# 5       rS$ rS% rS& rS' rS( rS) rS* rS+ rS,rg-).TestPreparingURLsii
  zurl,expected)zhttp://google.comzhttp://google.com/)"   http://ジェーピーニック.jphttp://xn--hckqz9bzb1cyrb.jp/)http://xn--n3h.net/r  r  r  )   http://straße.de/straße#http://xn--strae-oqa.de/stra%C3%9Fer  r  )"   http://Königsgäßchen.de/straße,http://xn--knigsgchen-b4a3dun.de/stra%C3%9Fer  r  )s   http://xn--n3h.net/r  )s7   http://[1200:0000:ab00:1234:0000:2552:7777:1313]:12345/7http://[1200:0000:ab00:1234:0000:2552:7777:1313]:12345/)r  r  c                     S n[         R                  " SUS9nUR                  5       nU" UR                  5      U:X  d   eg )Nc                     [         R                  " SU 5       H"  nU R                  XR                  5       5      n M$     U $ )Nz%[a-fA-F0-9]{2})refindallreplaceupper)r  re  s     r>   normalize_percent_encodeFTestPreparingURLs.test_preparing_url.<locals>.normalize_percent_encode
  s3     ZZ 2A6IIa+ 7HrA   rY   r  r   )r=   rJ   r   r  rt   r  s         r>   test_preparing_url$TestPreparingURLs.test_preparing_urlj
  s>    @	 U,IIK'.(:::rA   rJ   )s   http://*.google.coms   http://*zhttp://*.google.comzhttp://*u   http://☃.net/c                     [         R                  " SUS9n[        R                  " [         R                  R
                  5         UR                  5         S S S 5        g ! , (       d  f       g = f)NrY   r  )r5   rP   rG   rH   rh  r   rR   r  s      r>   test_preparing_bad_url(TestPreparingURLs.test_preparing_bad_url
  sC     U,]]8..99:IIK ;::s   A
A,r  z	http://:1c                     [         R                  " U5         [        R                  " U" S5      SU0S9  S S S 5        g ! , (       d  f       g = f)Nr   rJ   r   rF   )r=   ra   rJ   rI   s       r>   test_redirecting_to_bad_url-TestPreparingURLs.test_redirecting_to_bad_url
  s1    ]]9%LL/E &%%s	   >
Azinput, expected))s)   http+unix://%2Fvar%2Frun%2Fsocket/path%7E'http+unix://%2Fvar%2Frun%2Fsocket/path~)z)http+unix://%2Fvar%2Frun%2Fsocket/path%7Er  )   mailto:user@example.orgmailto:user@example.org)r  r  )s   data:SSDimaUgUHl0aG9uIQ==zdata:SSDimaUgUHl0aG9uIQ==c                 r    [         R                  " SUS9nUR                  5       nUR                  U:X  d   eg)z
This test validates that we correctly exclude some URLs from
preparation, and that we handle others. Specifically, it tests that
any URL whose scheme doesn't begin with "http" is left alone, and
those whose scheme *does* begin with "http" are mutated.
rY   r  Nr   )r=   inputr   rt   r  s        r>   test_url_mutation#TestPreparingURLs.test_url_mutation
  s4    @ U.IIKuu   rA   zinput, params, expecteds&   http+unix://%2Fvar%2Frun%2Fsocket/pathr  ra  z0http+unix://%2Fvar%2Frun%2Fsocket/path?key=valuez&http+unix://%2Fvar%2Frun%2Fsocket/pathr  r  c                 r    [         R                  " SXS9nUR                  5       nUR                  U:X  d   eg)zw
Setting parameters for nonstandard schemes is allowed if those schemes
begin with "http", and is forbidden otherwise.
rY   )rJ   r   Nr   )r=   r  r   r   rt   r  s         r>   'test_parameters_for_nonstandard_schemes9TestPreparingURLs.test_parameters_for_nonstandard_schemes
  s3    < U=IIKuu   rA   c                     S[        S5      0n[        R                  " [        R                  R
                  5         [        R                  " U" S5      US9  S S S 5        g ! , (       d  f       g = f)Nr4  nanr;   r  )floatrG   rH   r5   rh  InvalidJSONErrorr;   )r=   ra   rQ   s      r>   test_post_json_nan$TestPreparingURLs.test_post_json_nan
  sG    uU|$]]8..??@MM'&/5 A@@s   A!!
A/c                    [         R                  " U" S5      5      n[        R                  " [         R                  R
                  5       nUR                  5         S S S 5        [        WR                  [        5      (       d   e[        UR                  [
        5      (       d   eUR                  [        UR                  5      ;  d   eg ! , (       d  f       Nv= fNzbytes/20)r5   r7   rG   rH   rh  r   r   r   ra  r   r(  r  r=   ra   rt   r  s       r>   test_json_decode_compatibility0TestPreparingURLs.test_json_decode_compatibility
  s    LL,-]]8..>>?7FFH @'--)9::::'--9999vvS////	 @?s   C
Cc                 8   [         R                  " U" S5      5      n[        R                  " [         R                  R
                  5       nUR                  5         S S S 5        WR                  R                  UR                  :X  d   eg ! , (       d  f       N5= fr*  )
r5   r7   rG   rH   rh  r   r   ra  docr(  r+  s       r>   "test_json_decode_persists_doc_attr4TestPreparingURLs.test_json_decode_persists_doc_attr
  sd    LL,-]]8..>>?7FFH @}}  AFF*** @?s   B
Bc                    [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      nUS:X  d   eUS:X  d   eUS:X  d   eUS:X  d   eUS:X  d   eUS:X  d   eg )N	TOO_EARLY	too_early	UNORDERED	unorderedUNORDERED_COLLECTIONunordered_collectioni  )r5   codesr7   )r=   ri  rk  rm  r4r5r6s          r>   test_status_code_425&TestPreparingURLs.test_status_code_425  s    ^^,^^,^^,^^,^^ 67^^ 67SyySyySyySyySyySyyrA   c                 >   S n[         R                  " 5       n[        R                  " 5       n[	        UUSSSS9nU u  pVSU SU 3nUR                  USS	9nUR                  S
:X  d   e[        R                  " [         R                  R                  5         UR                  U5        S S S 5        UR                  5         S S S 5        S[        UR                  S   R                  R                  5      :X  d   eg ! , (       d  f       NY= f! , (       d  f       NR= f)Nc                 :    [        U SS9  U R                  S5        g Ng      ?r  s;   HTTP/1.1 200 OK
Content-Length: 18

{ " K0" = " 0" 
r+   r   socks    r>   response_handlergTestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_True.<locals>.response_handler      "45IIErA   r  %tests/certs/expired/server/server.pem%tests/certs/expired/server/server.keyhandlerwait_to_close_eventrequests_to_handle
cert_chainkeyfiler  :Fr{  r   r  r5   r   	threadingEventr*   r7   r   rG   rH   rh  r   r7  r   r  poolmanagerpools	r=   rE  r   close_serverr*  r  r  rJ   ri  s	            r>   ;test_different_connection_pool_for_tls_settings_verify_TrueMTestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_True  s    	  ($ , >;
 |TF!D6*Cs5)B>>S((( x22;;<c
 =   C

:.::@@AAAA	 =< Vs$   ADC=*D=
D	D
Dc                 <   S n[         R                  " 5       n[        R                  " 5       n[	        UUSSSS9nU u  pVSU SU 3nUR                  USS	9nUR                  S
:X  d   e[        R                  " [         R                  R                  5         UR                  USS	9  S S S 5        UR                  5         S S S 5        S[        UR                  S   R                  R                  5      :X  d   eg ! , (       d  f       NY= f! , (       d  f       NR= f)Nc                 :    [        U SS9  U R                  S5        g rA  rB  rC  s    r>   rE  vTestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_bundle_expired_cert.<locals>.response_handler3  rG  rA   r  rH  rI  rJ  r  rP  Fr{  r   tests/certs/expired/ca/ca.crtr  rQ  rV  s	            r>   Jtest_different_connection_pool_for_tls_settings_verify_bundle_expired_cert\TestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_bundle_expired_cert0  s    	  ($ , >;
 |TF!D6*Cs5)B>>S((( x22;;<c"AB =   C

:.::@@AAAA	 =< Vs$   ADC<)D<
D
	D
Dc                    S n[         R                  " 5       n[        R                  " 5       n[	        UUSSSS9nU u  pVSU SU 3nUR                  USS	9nUR                  S
:X  d   eUR                  USS	9n	U	R                  S
:X  d   eUR                  5         S S S 5        S[        UR                  S   R                  R                  5      :X  d   eg ! , (       d  f       NA= f)Nc                 :    [        U SS9  U R                  S5        g rA  rB  rC  s    r>   rE  xTestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_bundle_unexpired_cert.<locals>.response_handlerT  rG  rA   r  z#tests/certs/valid/server/server.pemz#tests/certs/valid/server/server.keyrJ  r  rP  Fr{  r   ztests/certs/valid/ca/ca.crtr  )r5   r   rR  rS  r*   r7   r   r7  r   r  rT  rU  )
r=   rE  r   rW  r*  r  r  rJ   ri  rk  s
             r>   Ltest_different_connection_pool_for_tls_settings_verify_bundle_unexpired_cert^TestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_bundle_unexpired_certQ  s    	  ($ , <9
 |TF!D6*Cs5)B>>S(((s#@AB>>S(((  C

:.::@@AAAA Vs   AC
C%c           
        ^
 S m
U
4S jn[         R                  " 5       n[        R                  " 5       n[	        UUSSSSSS9nSnU u  pgS	U S
U 3nUR                  USUS9n	U	R                  S:X  d   e[        R                  " [         R                  R                  5         UR                  XS9  S S S 5        UR                  5         S S S 5        T
c   eg ! , (       d  f       N,= f! , (       d  f       N%= f)Nc                 \   > U R                  5       m[        U SS9  U R                  S5        g rA  )getpeercertr+   r   )rD  client_certs    r>   rE  \TestPreparingURLs.test_different_connection_pool_for_mtls_settings.<locals>.response_handlert  s-    **,K"45IIErA   r  rH  rI  Tr]  )rK  rL  rM  rN  rO  
mutual_tlscacert)z"tests/certs/mtls/client/client.pemz"tests/certs/mtls/client/client.keyr  rP  F)r|  r  r   r  )r5   r   rR  rS  r*   r7   r   rG   rH   rh  r   r7  )r=   rE  r   rW  r*  r  r  r  rJ   ri  rh  s             @r>   0test_different_connection_pool_for_mtls_settingsBTestPreparingURLs.test_different_connection_pool_for_mtls_settingsq  s    	  ($ , >;2

 |TF!D6*Cs5t4B>>S(((x22;;<c% =  &&&	 =<	 Vs%   AC*#C3C*
C'	#C**
C8r  N)r4  r5  r6  r7  rG   r  r  r   r  r  r   r  r  r!  r'  r,  r0  r=  rX  r^  rc  rl  r8  r  rA   r>   r   r   i
  s   [[7S:188:<[\P+2245
 5;;=> </	
>
;?>
; [[	
		
 [[-j0I/KLF MF [[	
2	!32	! [[! : B 9 B + ) * )!	
2!32!6
0+B>BBB@%'rA   r   c                      [         R                  R                  SSS5      n [        R                  " [        R
                  " U 5      5      n[        U 5      [        U5      :X  d   eg )Nz
Extra datazH{"responseCode":["706"],"data":null}{"responseCode":["706"],"data":null}$   )r5   rh  r   r  r  r  repr)json_decode_errordeserialized_errors     r>   7test_json_decode_errors_are_serializable_deserializablers    sW     ++;;R

  fll3D&EF!"d+=&>>>>rA   )br  r   r  r   r   r  r  r  rR  r  unittestr   rG   r  r  r   r  r5   requests.adaptersr   requests.authr   r   requests.compatr   r	   r
   r   r   r   r   requests.cookiesr   r   requests.exceptionsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r    requests.hooksr!   requests.modelsr"   r#   requests.sessionsr$   requests.structuresr&   rm   r(   compatr)   testserver.serverr*   r+   rw  r,   r  r  sslr.   r  ImportError	pyopensslr  AttributeErrorr0   r%  r  r  r  
namedtupler  r  r  r  r  r  r  r  r  r  r  r   rs  r  rA   r>   <module>r     s&      	  	  	      2  ) 9   C    = P P ( 6 2 3   @ # 
 %NM
i!% i!%XCT Tn& &D% %*B BJ !!*.@A* @%.* 
(
( 
%% +"_		
 +"_u~	
 !GH(7)(7%+m' m'`	?gZ  N  Ms$   	G G% G"!G"%G10G1