
    {                       S SK Jr  S SKrS SKJ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Jr  S SKJrJrJr  S SKJrJr  S SKJr  S SKrS SKJr  S S	KJrJrJrJrJrJrJ r J!r!  S S
K"J#r#J$r$J%r%J&r&  S SK'J(r(  S SK)J*r*J+r+   " S S5      r,\" S5      r-\R\                  S#S j5       r/ " S S5      r0 " S S5      r1 " S S5      r2 " S S\25      r3 " S S\25      r4 " S S\25      r5 " S S\25      r6 " S S \25      r7 " S! S"5      r8g)$    )annotationsN)	b64decode)IncompleteRead)BufferedReaderBytesIOTextIOWrapper)
onlyBrotlionlyZstd)mock)HTTPHeaderDict)BodyNotHttplibCompatibleDecodeErrorr   InvalidChunkLengthInvalidHeaderProtocolErrorResponseNotChunkedSSLError)BaseHTTPResponseBytesQueueBufferHTTPResponsebrotli)is_fp_closed)RequestHistoryRetryc                  (   \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	\
R                  R                  SS	 S
 4SS9\
R                  R                  S5          SS j5       5       r\
R                  R                  S5      SS j5       rSrg)TestBytesQueueBuffer&   c                   [        5       n[        U5      S:X  d   e[        R                  " [        SS9   UR                  S5      (       d   e S S S 5        UR                  S5      S:X  d   eUR                  S5        [        R                  " [        SS9   UR                  S5        S S S 5        UR                  S	5      S
:X  d   eUR                  S5      S:X  d   e[        R                  " [        SS9   UR                  S5      (       d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   zbuffer is emptymatch
          foozn should be > 0      f      oo)r   lenpytestraisesRuntimeErrorgetput
ValueErrorselfbuffers     9platform/gsutil/third_party/urllib3/test/test_response.pytest_single_chunk&TestBytesQueueBuffer.test_single_chunk'   s    !#6{a]]</@A::b>>!> B zz!}###

6]]:->?JJrN @ zz!}$$$zz!}%%%]]</@A::b>>!> BA BA @?
 BAs#   DD-9D>
D*-
D;>
Ec                h    [        5       nUR                  S5        UR                  S5      S:X  d   eg )Nr#   d   )r   r.   r-   r0   s     r3   test_read_too_much'TestBytesQueueBuffer.test_read_too_much8   s,    !#

6zz#&(((r"   c                   [        5       nUR                  S5        UR                  S5        UR                  S5        [        U5      S:X  d   eUR                  S5      S:X  d   e[        U5      S:X  d   eUR                  S5      S	:X  d   e[        U5      S:X  d   eUR                  S5      S
:X  d   e[        U5      S:X  d   eg )Nr#      bar   baz	   r%   r&         s   oobas   rbazr   )r   r.   r)   r-   r0   s     r3   test_multiple_chunks)TestBytesQueueBuffer.test_multiple_chunks=   s    !#

6

6

66{azz!}$$$6{azz!}'''6{azz!}'''6{ar"   c                f    [        5       nUR                  5       S:X  d   e[        U5      S:X  d   eg )Nr"   r   )r   get_allr)   r1   qs     r3   test_get_all_empty'TestBytesQueueBuffer.test_get_all_emptyK   s.    yy{c!!!1v{{r"   c                    [        5       nUR                  S5        UR                  5       S:X  d   e[        U5      S:X  d   eg )N   ar   r   r.   rC   r)   rD   s     r3   test_get_all_single(TestBytesQueueBuffer.test_get_all_singleP   s9    	dyy{d"""1v{{r"   c                    [        5       nUR                  S5        UR                  S5        UR                  S5        UR                  5       S:X  d   e[        U5      S:X  d   eg )NrI      b   cs   abcr   rJ   rD   s     r3   test_get_all_many&TestBytesQueueBuffer.test_get_all_manyV   sO    	d	d	dyy{f$$$1v{{r"   get_funcc                6    U R                  [        U 5      5      $ N)r-   r)   bs    r3   <lambda>TestBytesQueueBuffer.<lambda>`   s    155Q=r"   c                "    U R                  5       $ rT   )rC   rU   s    r3   rW   rX   `   s
    AIIKr"   )r-   rC   )idsz12.5 MBc                    [        5       n[        S5       H  nUR                  [        S5      5        M     [	        U" U5      5      S:X  d   eg )Nr!   i      )r   ranger.   bytesr)   )r1   rR   r2   is       r3   test_memory_usage&TestBytesQueueBuffer.test_memory_usage^   sD     "#rAJJuU|$  8F#$
222r"   z10.01 MBc                z    [        5       n[        S5      nUR                  U5        UR                  5       UL d   eg )Nr\   )r   r^   r.   rC   )r1   r2   chunks      r3   &test_get_all_memory_usage_single_chunk;TestBytesQueueBuffer.test_get_all_memory_usage_single_chunko   s5    !#j!

5~~5(((r"    NreturnNone)rR   z(typing.Callable[[BytesQueueBuffer], str]rh   ri   )__name__
__module____qualname____firstlineno__r4   r8   r@   rF   rK   rP   r*   markparametrizelimit_memoryr`   rd   __static_attributes__rf   r"   r3   r   r   &   s    "")
 
 [[	 "78  
 [[i(	3@	3		3 )	3 [[j)) *)r"   r   st  eJwFweuaoQAAANDfineQhiKLUiaiCzvuTEmNNlJGiL5QhnGpZ99z8luQfe1AHoMioB+QSWHQu/L+
lzd7W5CipqYmeVTBjdgSATdg4l4Z2zhikbuF+EKn69Q0DTpdmNJz8S33odfJoVEexw/l2SS9nFdi
pis7KOwXzfSqarSo9uJYgbDGrs1VNnQpT9f8zAorhYCEZronZQF9DuDFfNK3Hecc+WHLnZLQptwk
nufw8S9I43sEwxsT71BiqedHo0QeIrFE01F/4atVFXuJs2yxIOak3bvtXjUKAA6OKnQJ/nNvDGKZ
Khe5TF36JbnKVjdcL1EUNpwrWVfQpFYJ/WWm2b74qNeSZeQv5/xBhRdOmKTJFYgO96PwrHBlsnLn
a3l0LwJsloWpMbzByU5WLbRE6X5INFqjQOtIwYz5BAlhkn+kVqJvWM5vBlfrwP42ifonM5yF4ciJ
auHVks62997mNGOsM7WXNG3P98dBHPo2NhbTvHleL0BI5dus2JY81MUOnK3SGWLH8HeWPa1t5KcW
S5moAj5HexY/g/F8TctpxwsvyZp38dXeLDjSQvEQIkF7XR3YXbeZgKk3V34KGCPOAeeuQDIgyVhV
nP4HF2uWHA==c               #  ^   #    [         R                   " 5       n U v   U R                  5         g 7frT   )socketclose)ss    r3   sockrv      s     A
GGGIs   +-c                  (    \ rS rSrSS jrSS jrSrg)TestLegacyResponse   c                    SS0n[        US9n[        R                  " [        SS9   UR	                  5       [        U5      :X  d   e S S S 5        g ! , (       d  f       g = f)Nhostexample.comheadersz)HTTPResponse.getheaders\(\) is deprecatedr   )r   r*   warnsDeprecationWarning
getheadersr   r1   r~   rs      r3   test_getheaders"TestLegacyResponse.test_getheaders   sS    =))\\>
 <<>^G%<<<<	
 
 
s    A
Ac                    SS0n[        US9n[        R                  " [        SS9   UR	                  S5      S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr{   r|   r}   z(HTTPResponse.getheader\(\) is deprecatedr   )r   r*   r   r   	getheaderr   s      r3   test_getheader!TestLegacyResponse.test_getheader   sQ    =))\\=
 ;;v&-777	
 
 
s   A		
Arf   Nrg   )rj   rk   rl   rm   r   r   rq   rf   r"   r3   rx   rx      s    =8r"   rx   c            
      	   \ rS rSrS|S jrS|S jrS|S jrS|S jrS|S jrS|S jr	S|S jr
S|S	 jr\R                  R                  S
S5      S}S j5       rS|S jr\R                  R                  SS5          S~S j5       rS|S jrS|S jrS|S jrS|S jrS|S jrS|S jr\R                  R                  SSS/5      SS j5       rS|S jrS|S jrS|S jrS|S jr\" 5       S|S j5       r\" 5       S|S j5       r\" 5       S|S  j5       r \!" 5       S|S! j5       r"\!" 5       S|S" j5       r#\!" 5       S|S# j5       r$S$S%/r%\!" 5       \R                  R                  S&\%5      SS' j5       5       r&\!" 5       \R                  R                  S&\%5      SS( j5       5       r'\!" 5       \R                  R                  S&\%5      SS) j5       5       r(\!" 5       \R                  R                  S&\%5      SS* j5       5       r)\!" 5       \R                  R                  S&\%5      SS+ j5       5       r*S|S, jr+S|S- jr,S|S. jr-S|S/ jr.S|S0 jr/\R                  Ra                  S15      S|S2 j5       r1SS3 jr2SS4 jr3\R                  R                  S5S65      \R                  R                  S7S85              SS9 j5       5       r4\R                  R                  S7S85            SS: j5       r5\R                  R                  S7S85            SS; j5       r6S|S< jr7S|S= jr8S|S> jr9S|S? jr:S|S@ jr;S|SA jr<S|SB jr=S|SC jr>S|SD jr?S|SE jr@S|SF jrAS|SG jrBS|SH jrCS|SI jrDS|SJ jrE\R                  R                  SK/ SLQ5      \R                  R                  SM5              SSN j5       5       rG\R                  R                  SK/ SLQ5      \R                  R                  SO5              SSP j5       5       rHS|SQ jrIS|SR jrJS|SS jrKS|ST jrLS|SU jrMS|SV jrNS|SW jrOS|SX jrPS|SY jrQS|SZ jrR\R                  R                  S[S5          SS\ j5       rSS|S] jrTS|S^ jrUS|S_ jrVS|S` jrWS|Sa jrXS|Sb jrYS|Sc jrZS|Sd jr[S|Se jr\S|Sf jr]S|Sg jr^S|Sh jr_S|Si jr`S|Sj jra\R                  R                  SkSl/Sm/ 4SnSn/4So/ SpQ4SqSrSs/4St/ SuQ4/5      SSv j5       rbS|Sw jrcS|Sx jrdS|Sy jreSzrfg{)TestResponse   c                    [        S5      nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg Nr#   )r   _bodydatar1   r   s     r3   test_cache_contentTestResponse.test_cache_content   sB     ww&   vvww&   r"   c                    [        S5      n[        USS9nUR                  (       a   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg Nr#   Fpreload_content)r   r   r   r   r1   fpr   s      r3    test_cache_content_preload_false-TestResponse.test_cache_content_preload_false   sY    V_U377{vvww&   vvr"   c                6    [        5       nUR                  b   eg rT   r   r   r   s     r3   test_defaultTestResponse.test_default   s    Nvv~~r"   c                8    [        S 5      nUR                  b   eg rT   r   r   s     r3   	test_noneTestResponse.test_none   s    vv~~r"   c                    [        S5      n[        USS9nUR                  5       [        S5      :X  d   eUR                  S:X  d   eg )Nr#   Tr   )r   r   tellr)   r   r   s      r3   test_preloadTestResponse.test_preload   sA    V_T2wwyCK'''vvr"   c                    [        S5      n[        USS9nUR                  5       S:X  d   eUR                  S:X  d   eUR                  5       [	        S5      :X  d   eg )Nr#   Fr   r   )r   r   r   r   r)   r   s      r3   test_no_preloadTestResponse.test_no_preload   sS    V_U3wwyA~~vvwwyCK'''r"   c                    [        S5      n[        R                  " [        5         [	        USS0S9  S S S 5        g ! , (       d  f       g = f)Ns
             content-encodingdeflater}   r   r*   r+   r   r   r1   r   s     r3   test_decode_bad_data!TestResponse.test_decode_bad_data   s4    \"]];'&8)%DE (''	   <
A
c                   [        S5      n[        USS9n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                  5       S:X  d   eUR                  5       S:X  d   eg )
Nr#   Fr   r   r"   r%   r&   r'   r(   r   r   readr   s      r3   test_reference_read TestResponse.test_reference_read   s}    V_U3vvayCvvayD   vvayE!!!vvx3vvx3r"   	read_args)rf   rT   r$   c                X    [        S5      n[        USS9nUR                  " U6 S:X  d   eg r   r   )r1   r   r   r   s       r3   test_reference_read_until_eof*TestResponse.test_reference_read_until_eof   s.    V_U3vvy!V+++r"   c                   [        S5      n[        USS9n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                  5       S
:X  d   eUR                  5       S:X  d   eg )N   foobarFr   r   r"   r%   r&   r'   r(   r;   r   r   read1r   s      r3   test_reference_read1!TestResponse.test_reference_read1   s    YU3wwqzS   wwqzT!!!wwqzU"""wwyF"""wwyCr"   
read1_argsc                X    [        S5      n[        USS9nUR                  " U6 S:X  d   eg r   r   )r1   r   r   r   s       r3   "test_reference_read1_without_limit/TestResponse.test_reference_read1_without_limit   s0     V_U3ww
#v---r"   c                   [        S5      n[        USSS9n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                  5       S
:X  d   eUR                  5       S:X  d   eg )Nr   Fr   decode_contentr   r"   r%   r&   r'   r(   r;   r   r   s      r3   test_reference_read1_nodecode*TestResponse.test_reference_read1_nodecode   s    YU5IwwqzS   wwqzT!!!wwqzU"""wwyF"""wwyCr"   c                   [         R                  " S5      n[        U5      n[        USS0SS9nUR	                  S5      S:X  d   eUR	                  S5      S	:X  d   eUR	                  5       S
:X  d   eUR	                  5       S:X  d   eg )Nr   r   r   Fr~   r   r%   r&   r'   r(   r;   r"   )zlibcompressr   r   r   r1   r   r   r   s       r3   test_decoding_read1 TestResponse.test_decoding_read1   s    }}Y'T]+Y7
 wwqzT!!!wwqzU"""wwyF"""wwyCr"   c                    [         R                  " S5      n[        U5      n[        USS0S9nUR                  S:X  d   eg )Nr#   r   r   r}   r   r   r   r   r   r   s       r3   test_decode_deflate TestResponse.test_decode_deflate  =    }}V$T]&8)%DEvvr"   c                    [         R                  " S5      n[        U5      n[        USS0S9nUR                  S:X  d   eg )Nr#   r   DeFlAtEr}   r   r   s       r3   #test_decode_deflate_case_insensitve0TestResponse.test_decode_deflate_case_insensitve  r   r"   c                   [         R                  " S5      n[        U5      n[        USS0SS9nUR	                  S5      S:X  d   eUR	                  S5      S	:X  d   eUR	                  5       S
:X  d   eUR	                  5       S
:X  d   eg )Nr#   r   r   Fr   r%   r&   r'   r(   r"   r   r   r   r   r   r   s       r3   test_chunked_decoding_deflate*TestResponse.test_chunked_decoding_deflate  s    }}V$T]+Y7
 vvayD   vvayE!!!vvx3vvx3r"   c                   [         R                  " S[         R                  [         R                  * 5      nUR	                  S5      nX!R                  5       -  n[        U5      n[        USS0SS9nUR                  S5      S:X  d   eUR                  S	5      S
:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   eg )N   r#   r   r   Fr   r%   r&   r'   r(   r"   	r   compressobjDEFLATED	MAX_WBITSr   flushr   r   r   r1   r   r   r   r   s        r3   test_chunked_decoding_deflate2+TestResponse.test_chunked_decoding_deflate2(  s    ##At}}t~~oF  (  T]+Y7
 vvayD   vvayE!!!vvx3vvx3r"   content_encodinggzipzx-gzipc                   [         R                  " S[         R                  S[         R                  -   5      nUR	                  S5      nX2R                  5       -  n[        U5      n[        USU0SS9nUR                  S5      S:X  d   eUR                  S	5      S
:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   eg )Nr      r#   r   Fr   r%   r&   r'   r(   r"   r   )r1   r   r   r   r   r   s         r3   test_chunked_decoding_gzip'TestResponse.test_chunked_decoding_gzip7  s    ##At}}b4>>6IJ  (  T]+-=>PU
 vvayD   vvayE!!!vvx3vvx3r"   c                   [         R                  " S[         R                  S[         R                  -   5      nUR	                  S5      nX!R                  5       -  nUS-  n[        U5      n[        USS0S9nUR                  S:X  d   eg 	Nr   r   r#      r   r   r}   	   foofoofoo	r   r   r   r   r   r   r   r   r   r   s        r3   test_decode_gzip_multi_member*TestResponse.test_decode_gzip_multi_memberG  sx    ##At}}b4>>6IJ  (  axT]&8&%ABvv%%%r"   c                    [        S5      n[        R                  " [        5         [	        USS0S9  S S S 5        g ! , (       d  f       g = f)Nr#   r   r   r}   r   r   s     r3   test_decode_gzip_error#TestResponse.test_decode_gzip_errorR  s3    V_]];'&8&%AB (''r   c                |   [         R                  " S[         R                  S[         R                  -   5      nUR	                  S5      nX!R                  5       -  nUS-  S-   n[        U5      n[        USS0SS9nS	n[        S
5       H)  nXTR                  S5      -  nUR                  (       d  M)    O   US:X  d   eg )Nr   r   r#   r   r   r   Fr   r"   r7   r%   r   )r   r   r   r   r   r   r   r   r]   r   closed)r1   r   r   r   r   ret_s          r3    test_decode_gzip_swallow_garbage-TestResponse.test_decode_gzip_swallow_garbageW  s     ##At}}b4>>6IJ  (  ax& T]+V4e
 sA66!9Cxxx 
 l"""r"   c                   [         R                  " S[         R                  S[         R                  -   5      nUR	                  S5      nX!R                  5       -  nUS-  S-   n[        U5      n[        USS0S9nUR                  S:X  d   eg r   r   r   s        r3   *test_chunked_decoding_gzip_swallow_garbage7TestResponse.test_chunked_decoding_gzip_swallow_garbagel  s}    ##At}}b4>>6IJ  (  ax& T]&8&%ABvv%%%r"   c                    [         R                  " S5      n[        U5      n[        USS0S9nUR                  S:X  d   eg Nr#   r   brr}   )r   r   r   r   r   r   s       r3   test_decode_brotliTestResponse.test_decode_brotliw  s=    v&T]&8$%?@vvr"   c                    [         R                  " S5      n[        U5      n[        USS0SS9nSn[	        S5       H)  nXCR                  S5      -  nUR                  (       d  M)    O   US:X  d   eg )	N	   foobarbazr   r  Fr   r"   r7   r%   )r   r   r   r   r]   r   r   )r1   r   r   r   r   r   s         r3   test_chunked_decoding_brotli)TestResponse.test_chunked_decoding_brotli  sm    |,T]&8$%?QVWsA66!9Cxxx  l"""r"   c                    [        S5      n[        R                  " [        5         [	        USS0S9  S S S 5        g ! , (       d  f       g = fr  r   r   s     r3   test_decode_brotli_error%TestResponse.test_decode_brotli_error  s3    V_]];'&8$%?@ (''r   c                    SS K nUR                  S5      n[        U5      n[        USS0S9nUR                  S:X  d   eg )Nr   r#   r   zstdr}   )	zstandardr   r   r   r   r1   r  r   r   r   s        r3   test_decode_zstdTestResponse.test_decode_zstd  s@     }}V$T]&8&%ABvvr"   c                    SS K nUR                  S5      [        R                  S5      -   UR                  S5      -   n[	        U5      n[        USS0S9nUR                  S:X  d   eg )	Nr   r#   z*50 2A 4D 1807 00 00 0000 00 00 00 00 00 00r;   r   r  r}   r   )r  r   r^   fromhexr   r   r   r  s        r3   test_decode_multiframe_zstd(TestResponse.test_decode_multiframe_zstd  sp      MM&!mm' mmF#$ 	 T]&8&%ABvv"""r"   c                    SS K nUR                  S5      n[        U5      n[        USS0SS9nSn[	        S5       H)  nXTR                  S	5      -  nUR                  (       d  M)    O   US:X  d   eg )
Nr   r  r   r  Fr   r"   r7   r%   )r  r   r   r   r]   r   r   )r1   r  r   r   r   r   r   s          r3   test_chunked_decoding_zstd'TestResponse.test_chunked_decoding_zstd  st     }}\*T]+V4e
 sA66!9Cxxx  l"""r"   r#   sd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   c                    [        U5      n[        R                  " [        5         [	        USS0S9  S S S 5        g ! , (       d  f       g = f)Nr   r  r}   r   )r1   r   r   s      r3   test_decode_zstd_error#TestResponse.test_decode_zstd_error  s5     T]]];'&8&%AB (''r   c                    SS K nUR                  U5      n[        US S 5      n[        R                  " [
        5         [        USS0S9  S S S 5        g ! , (       d  f       g = f)Nr   r$   r   r  r}   )r  r   r   r*   r+   r   r   )r1   r   r  r   s       r3   +test_decode_zstd_incomplete_preload_content8TestResponse.test_decode_zstd_incomplete_preload_content  sM     	!}}T"T#2Y]];'&8&%AB (''s   A
A"c                    SS K nUR                  U5      n[        US S 5      n[        USS0SS9n[        R
                  " [        5         UR                  SS9  S S S 5        g ! , (       d  f       g = f	Nr   r$   r   r  Fr   Tr   )r  r   r   r   r*   r+   r   r   )r1   r   r  r   r   s        r3    test_decode_zstd_incomplete_read-TestResponse.test_decode_zstd_incomplete_read  sf     	!}}T"T#2Y +V4e

 ]];'FF$F' (''s   A$$
A2c                J   SS K nUR                  U5      n[        US S 5      n[        USS0SS9n[        R
                  " [        5         SnU[        U5      :  a.  UR                  SS9nU[        U5      -  nU[        U5      :  a  M.  S S S 5        g ! , (       d  f       g = fr"  )	r  r   r   r   r*   r+   r   r)   r   )r1   r   r  r   r   amt_decodedparts          r3   !test_decode_zstd_incomplete_read1.TestResponse.test_decode_zstd_incomplete_read1  s     	!}}T"T#2Y+V4e

 ]];'KD	)wwdw3s4y( D	) (''s   >B
B"c                    SS K nUR                  U5      n[        U5      n[        USS0SS9nSnSnU[	        U5      :  a2  UR                  SS9nU[	        U5      -  nXx-  nU[	        U5      :  a  M2  Xq:X  d   eg )	Nr   r   r  Fr   r"   Tr#  )r  r   r   r   r)   r   )	r1   r   r  encoded_datar   r   r'  decoded_datar(  s	            r3   test_decode_zstd_read1#TestResponse.test_decode_zstd_read1  s     	!}}T*\"+V4e
 CI%77$7/D3t9$K L CI% ###r"   c                    [         R                  " [         R                  " S5      5      n[        U5      n[        USS0S9nUR                  S:X  d   eg )Nr#   r   deflate, deflater}   r   r   s       r3   #test_multi_decoding_deflate_deflate0TestResponse.test_multi_decoding_deflate_deflate  sG    }}T]]623T]&8:L%MNvvr"   c                2   [         R                  " S[         R                  S[         R                  -   5      nUR	                  [         R                  " S5      5      nX!R                  5       -  n[        U5      n[        USS0S9nUR                  S:X  d   eg )Nr   r   r#   r   zdeflate, gzipr}   r   r   s        r3    test_multi_decoding_deflate_gzip-TestResponse.test_multi_decoding_deflate_gzip  sx    ##At}}b4>>6IJ  v!67  T]&8/%JKvvr"   c                   [         R                  " S[         R                  S[         R                  -   5      nUR	                  S5      nX!R                  5       -  n[         R                  " S[         R                  S[         R                  -   5      nUR	                  U5      nX!R                  5       -  n[        U5      n[        USS0S9nUR                  S:X  d   eg )Nr   r   r#   r   z
gzip, gzipr}   r   r   s        r3   test_multi_decoding_gzip_gzip*TestResponse.test_multi_decoding_gzip_gzip)  s    ##At}}b4>>6IJ  (  ##At}}b4>>6IJ  &  T]&8,%GHvvr"   c                   Sn[         R                  " [         R                  " U5      5      n[        U5      n[        USS0SS9n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
5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  5       S:X  d   eg )Nsz  foobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazr   r1  Fr   r   r#   r;   r<   r=   r     s   foobarbazfoobarbazfoobarbaziM  sM  foobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazfoobarbazr"   r   )r1   msgr   r   r   s        r3   (test_read_multi_decoding_deflate_deflate5TestResponse.test_read_multi_decoding_deflate_deflate7  s    }}T]]3/0T]+-?@RW
 vvayF"""vvayF"""vvayF"""vvayL(((vve} 0000vvf~!2222vvx3r"   c                d    [        S5      nUR                  S:X  d   eUR                  (       d   eg r   )r   r   r   r1   resps     r3   test_body_blobTestResponse.test_body_blobH  s*    F#yyF"""{{{r"   z/ignore::pytest.PytestUnraisableExceptionWarningc           	        [        SSSS SS S9nUR                  (       a   eUR                  5       (       a   eUR                  5       (       a   e[        R
                  " [        5         UR                  5         S S S 5        [        R
                  " [        5         UR                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)N      zHTTP/1.1F)statusversionversion_stringreasonr   request_url)	r   r   readablewritabler*   r+   NotImplementedErrorr   rt   r@  s     r3   test_base_ioTestResponse.test_base_ioM  s    % 
 ;;==??""==??""]]./IIK 0]]./JJL 0/ 0///s   *B7C7
C
Cc                   [        S5      n[        USS9nUR                  (       a   eUR                  5       (       d   eUR	                  5       (       a   e[
        R                  " [        5         UR                  5         S S S 5        UR                  5         UR                  (       d   e [        R                  " U5      n[        USS9nUR                  (       a   eUR                  5         UR                  (       d   e UR                  5         [        S5      n[
        R                  " [        5         UR                  5         S S S 5        SUl        UR                  (       d   e[
        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       GN&= f! WR                  5         f = f! , (       d  f       N= f! , (       d  f       g = f)Nr#   Fr   foodatar'   )r   r   r   rL  rM  r*   r+   IOErrorfilenort   httplib_fp)r1   rv   r   rA  hlrresp2resp3s          r3   test_ioTestResponse.test_ioa  sB   V_B6;;}}==??""]]7#KKM $ 	

{{{	&&t,C e<E||##KKM<<<IIK Y']]7#LLN $ 	 |||]]7#LLN $#5 $# IIK $# $#s1   1F!.AF3 :GG!
F03G
G
G'c                    [         R                  " U5      n[        S5      Ul        SUl        SUl        [        USS9 nUR                  (       a   eUR                  c   eUR                  R                  5       (       a   e[        UR                  5      (       a   eUR                  5       (       a   eUR                  5         UR                  (       d   eUR                  R                  5       (       d   e[        UR                  5      (       d   eUR                  5       (       d   e S S S 5        UR                  5         g ! , (       d  f       N= f! WR                  5         f = fNr#   r   r   Fr   )rU  r   r   r   chunkedlengthr   rV  isclosedr   r   rt   )r1   rv   rW  rA  s       r3   #test_io_closed_consistently_by_read0TestResponse.test_io_closed_consistently_by_read  s   	&&t,CV_CFCKCJc59T;;&xx+++88,,....'1111==??**		{{"{xx((****#DHH----}}& : IIK :9 IIKs$   >E  C.E/E 
EE E+read_amt)Nr   length_known)TFc                   [         R                  " U5       n[        S5      Ul        SUl        U(       a  SOS Ul        [        USS9 nU(       a  SUl        UR                  (       a   eUR                  c   eUR                  R                  5       (       a   e[        UR                  5      (       a   eUR                  5       (       a   eUR                  U5        U(       d  UR                  (       a   eUR                  c   eUR                  R                  5       (       a   e[        UR                  5      (       a   eUR                  5       (       a   eUR                  U5        UR                  (       d   eUR                  R                  5       (       d   e[        UR                  5      (       d   eUR                  5       (       d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr]  )rU  r   r   r   r^  r_  length_remainingr   rV  r`  r   r   )r1   rv   rd  rc  rW  rA  s         r3   $test_io_closed_consistently_by_read11TestResponse.test_io_closed_consistently_by_read1  s   
 !!$'3V_CFCK*CJc59T,-D);;&xx+++88,,....'1111==??**

8$ $#{{*?88///#xx002222+DHH5555#}}..JJx({{"{xx((****#DHH----}}&+ :	 (' :9	 ('s$   2G7	FG&G7&
G4	0G77
Hc                   [         R                  " U5       n[        S5      Ul        SUl        SnU(       a  UOS Ul        [        USS9 nU(       a  XEl        U(       a  UR                  (       a   eUR                  c   eUR                  R                  5       (       a   e[        UR                  5      (       a   eUR                  5       (       a   eUR                  S5      n[        U5      S:X  d   eUS-  nU(       a  M  U(       d  UR                  (       a   eUR                  c   eUR                  R                  5       (       a   e[        UR                  5      (       a   eUR                  5       (       a   eUR                  S5      n[        U5      S:X  d   eUR                  (       d   eUR                  R                  5       (       d   e[        UR                  5      (       d   eUR                  5       (       d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr#   r   r   Fr   r%   )rU  r   r   r   r^  r_  rf  r   rV  r`  r   r   r)   r1   rv   rd  rW  rf  rA  r   s          r3   )test_io_not_closed_until_all_data_is_read6TestResponse.test_io_not_closed_until_all_data_is_read  s    !!$'3V_CFCK -9)tCJc59T,<)&#{{*?88///#xx002222+DHH5555#}}..99Q<Dt9>)>$)$ '& $#{{*?88///#xx002222+DHH5555#}}..99Q<Dt9>)>{{"{xx((****#DHH----}}&3 : ('
 :9 ('s+   4H/B9HDHH/
H,	(H//
H=c                $   [         R                  " U5       n[        S5      Ul        SUl        SnU(       a  UOS Ul        [        USS9 nU(       a  XEl        UR                  (       a   eUR                  c   eUR                  R                  5       (       a   e[        UR                  5      (       a   eUR                  5       (       a   eUR                  S5      nUS:X  d   eUR                  (       a   eUR                  c   eUR                  R                  5       (       a   e[        UR                  5      (       a   eUR                  5       (       a   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr#   r   r   Fr   r"   )rU  r   r   r   r^  r_  rf  r   rV  r`  r   r   rj  s          r3   +test_io_not_closed_after_requesting_0_bytes8TestResponse.test_io_not_closed_after_requesting_0_bytes  s=    !!$'3V_CFCK -9)tCJc59T,<);;&xx+++88,,....'1111==??**yy|s{"{;;&xx+++88,,....'1111==??**? : ('
 :9 ('s$   4FDE0F0
E>	:F
Fc                   [        S5      n[        USS9n[        U5      nUR                  5       S:X  d   eUR	                  5         UR
                  (       d   e[        S5      n[        USS9n[        R                  " [        SS9   [        [        U5      5        S S S 5        Sn[        U5      n[        USS9n[        US5      nUR                  S	5        [        UR                  5       5      [        U5      S-
  :X  d   eUR
                  (       d%  UR                  S5        UR
                  (       d  M$  g g ! , (       d  f       N= f)
Nr#   Fr      hello
worldreadline of closed filer   s   fooandahalf   r%   )r   r   r   r   rt   r   r*   r+   r/   listr)   )r1   r   rA  r  rV   s        r3   test_io_bufferedreader#TestResponse.test_io_bufferedreader  s    V_B6D!wwyF"""

{{{ _%B6]]:-FG%& H QZB6D!$

2779~#a&1*--- ))GGAJ ))) HGs   D;;
E	c                   [        S5      n[        USSS9n[        U5      n[        U5      SS/:X  d   eUR                  (       a   eUR                  (       a   e[
        R                  " [        5         [        U5        S S S 5        UR                  5         UR                  (       d   eUR                  (       d   e[
        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)Nrq  Fr   
auto_closes   hello
s   worldrr  r   )r   r   r   rt  r   r*   r+   StopIterationnextrt   r/   r1   r   rA  readers       r3   $test_io_not_autoclose_bufferedreader1TestResponse.test_io_not_autoclose_bufferedreader  s    _%B%H%F|
H5555==  ;;]]=)L * 	}}}{{{]]:-FGL HG *) HGs   5C-C>-
C;>
Dc                l   [        S5      n[        USS9n[        USS9nUR                  5       S:X  d   eUR	                  5         UR
                  (       d   e[        S5      n[        USS9n[        R                  " [        SS	9   [        [        U5      5        S S S 5        g ! , (       d  f       g = f)
Ns   äöüßFr   utf8encodingu   äöüß   äöüß
αβγδI/O operation on closed file.?r   )
r   r   r   r   rt   r   r*   r+   r/   rt  )r1   r   rA  r  s       r3   test_io_textiowrapper"TestResponse.test_io_textiowrapper%  s    89B64&1wwyJ&&&

{{{ Q
 B6]]:-MNt$% ONNs   B%%
B3c                   [        S5      n[        USSS9n[        USS9n[        U5      SS/:X  d   eUR                  (       a   eUR                  (       a   e[
        R                  " [        5         [        U5        S S S 5        UR                  5         UR                  (       d   eUR                  (       d   e[
        R                  " [        SS	9   [        U5        S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)
Nr  Frx  r  r  u	   äöüß
u   αβγδr  r   )r   r   r   rt  r   r*   r+   rz  r{  rt   r/   r|  s       r3   #test_io_not_autoclose_textiowrapper0TestResponse.test_io_not_autoclose_textiowrapper8  s    Q
 B%Htf5F|j9999==  ;;]]=)L * 	}}}{{{]]:-MNL ON *) ONs   4C,C=,
C:=
Dc                   [         R                  " S5      n[        U5      n[        USS0SS9nUR	                  S5      S:X  d   e[
        R                  " [        SS	9   UR	                  SSS
9  S S S 5        [
        R                  " [        SS	9   UR	                  SS
9  S S S 5        g ! , (       d  f       N@= f! , (       d  f       g = f)Nr#   r   r   Fr   r%   r&   zbCalling read\(decode_content=False\) is not supported after read\(decode_content=True\) was calledr   r#  )r   r   r   r   r   r*   r+   r,   r1   r   r   rA  s       r3   (test_read_with_illegal_mix_decode_toggle5TestResponse.test_read_with_illegal_mix_decode_toggleK  s    }}V$T]+Y7
 yy|t###]]:
 IIaI.
 ]]:
 IIUI+
 

 

 
   B*B;*
B8;
C	c                   [         R                  " S5      n[        U5      n[        USS0SS9nUR	                  S5      S:X  d   e[
        R                  " [        SS	9   UR	                  SSS
9  S S S 5        [
        R                  " [        SS	9   UR	                  SS
9  S S S 5        g ! , (       d  f       N@= f! , (       d  f       g = f)Nr#   r   r   Fr   r%   r&   zdCalling read1\(decode_content=False\) is not supported after read1\(decode_content=True\) was calledr   r#  )r   r   r   r   r   r*   r+   r,   r  s       r3   )test_read1_with_illegal_mix_decode_toggle6TestResponse.test_read1_with_illegal_mix_decode_toggleh  s    }}V$T]+Y7
 zz!}$$$]];
 JJqJ/
 ]];
 JJeJ,
 

 

 
r  c                    [         R                  " S5      n[        U5      n[        USS0SS9nUR	                  SSS9c   eUR	                  SS	S9S
:X  d   eg )Nr#   r   r   Fr   r'   r#  r%   Tr&   r   r  s       r3    test_read_with_mix_decode_toggle-TestResponse.test_read_with_mix_decode_toggle  sf    }}V$T]+Y7
 yy5y1===yy4y0D888r"   c                   [        S5      n[        USS9nUR                  SSS9n[        U5      S:X  d   e[        U5      S:X  d   e[        R
                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr#   Fr   r'   r#     fo   o)r   r   streamr{  r*   r+   rz  r1   r   rA  r  s       r3   test_streamingTestResponse.test_streaming  sl    V_B6Qu5F|u$$$F|t###]]=)L *))s   "A77
Bc                   [        S5      n[        USS9nUR                  SSS9nSnU[        [	        U5      5      -  nSU:X  d   eXBR                  5       :X  d   eU[        [	        U5      5      -  nSU:X  d   eXBR                  5       :X  d   e[        R                  " [        5         [	        U5        S S S 5        g ! , (       d  f       g = f)Nr#   Fr   r'   r#  r   r   )	r   r   r  r)   r{  r   r*   r+   rz  )r1   r   rA  r  positions        r3   test_streaming_tell TestResponse.test_streaming_tell  s    V_B6Qu5CV%%H}}99;&&&CV%%H}}99;&&&]]=)L *))s   *B??
Cc                   [         R                  " S[         R                  S[         R                  -   5      nUR	                  S5      nX!R                  5       -  n[        U5      n[        USS0SS9nUR                  S5      n[        U5      S	:X  d   e[        U5      S
:X  d   e[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr   r   r#   r   r   Fr   r'   r  r  r   r   r   r   r   r   r   r   r  r{  r*   r+   rz  r1   r   r   r   rA  r  s         r3   test_gzipped_streaming#TestResponse.test_gzipped_streaming  s    ##At}}b4>>6IJ  (  T]+V4e
 QF|u$$$F|t###]]=)L *))s    C
C#c                   [         R                  " S[         R                  S[         R                  -   5      nSnUR	                  U5      nX1R                  5       -  n[        U5      n[        USS0SS9nUR                  5       n[        U5      nXr:X  d   e[        U5      UR                  5       :X  d   e[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr   r   r#   r   r   Fr   )r   r   r   r   r   r   r   r   r  r{  r)   r   r*   r+   rz  )r1   r   uncompressed_datar   r   rA  r  payloads           r3   test_gzipped_streaming_tell(TestResponse.test_gzipped_streaming_tell  s    ##At}}b4>>6IJ"  !23  T]+V4e
  v,+++4yDIIK''']]=)L *))s   C%%
C3c                  ^ SmSn " U4S jS[         5      n[        R                  " [        5      n[	        [        5      T-  nU" [        U5      n[        USS0SS9nUR                  U5      nU Vs/ s H  oUR                  5       4PM     n	nUR                  5       n
[        R                  " [        5         [        U5        S S S 5        [        U	6 u  pS	R                  U5      nX=:X  d   eS
nX:X  d   e[	        [        5      U
:X  d   e[	        U5      U-  n[	        U5      U-  nUS:X  a  U/U-  nO
U/U-  U/-   nUU Vs/ s H  n[	        U5      PM     sn:X  d   eg s  snf ! , (       d  f       N= fs  snf )Nr!   @   c                  >   > \ rS rSrSrSU 4S jjrS	S jrS
S jrSrg)^TestResponse.test_deflate_streaming_tell_intermediate_point.<locals>.MockCompressedDataReadingi  zW
A BytesIO-like reader returning ``payload`` in ``NUMBER_OF_READS``
calls to ``read``.
c                   > [        TS-   5       Vs/ s H  nXU-  US-   U-   PM     snU l        SR                  U R                  5      U:X  d   eg s  snf )Nr%   r"   )r]   payloadsjoin)r1   r  payload_part_sizer_   NUMBER_OF_READSs       r3   __init__gTestResponse.test_deflate_streaming_tell_intermediate_point.<locals>.MockCompressedDataReading.__init__  se     #?Q#67!7  11QU>O4OP7!
 xx.'999!s   Ac                l    [        U R                  5      S:  a  U R                  R                  S5      $ g)Nr   r"   )r)   r  pop)r1   r   s     r3   r   cTestResponse.test_deflate_streaming_tell_intermediate_point.<locals>.MockCompressedDataReading.read  s+    t}}%)==,,Q//r"   c                $    U R                  U5      $ rT   r   r1   amts     r3   r   dTestResponse.test_deflate_streaming_tell_intermediate_point.<locals>.MockCompressedDataReading.read1  s    yy~%r"   )r  N)r  r^   r  intrh   ri   )r   r  rh   r^   r  r  rh   r^   )	rj   rk   rl   rm   __doc__r  r   r   rq   )r  s   r3   MockCompressedDataReadingr    s    
:&r"   r  r   r   Fr   r"   )\         i  iB  ip  i  i  r   )r   r   
decompressZLIB_PAYLOADr)   r   r  r   r*   r+   rz  r{  zipr  )r1   	PART_SIZEr  r  r  r   rA  r  r(  parts_positionsend_of_streamparts	positionsr  expectedexpected_last_part_sizewhole_partsexpected_lengthsr  s                     @r3   .test_deflate_streaming_tell_intermediate_point;TestResponse.test_deflate_streaming_tell_intermediate_point  s    		& 	&. !OOL9-@&|5FG+Y7
 Y';AB64$))+.6B		]]=)L * 0 ((5/ +++ ;$$$ < M111 #&&7"89"D+,	9"a' ){[8 ){[8<S;TT%#@%$CI%#@@@@C C *)< $As   3E$:E)E:)
E7c                D   [         R                  " S5      n[        U5      n[        USS0SS9nUR	                  S5      n[        U5      S:X  d   e[        U5      S:X  d   e[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)	Nr#   r   r   Fr   r'   r  r  )	r   r   r   r   r  r{  r*   r+   rz  )r1   r   r   rA  r  s        r3   test_deflate_streaming#TestResponse.test_deflate_streaming  s    }}V$T]+Y7
 QF|u$$$F|t###]]=)L *))s   <B
Bc                   [         R                  " S[         R                  [         R                  * 5      nUR	                  S5      nX!R                  5       -  n[        U5      n[        USS0SS9nUR                  S5      n[        U5      S:X  d   e[        U5      S	:X  d   e[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)
Nr   r#   r   r   Fr   r'   r  r  r  r  s         r3   test_deflate2_streaming$TestResponse.test_deflate2_streaming(  s    ##At}}t~~oF  (  T]+Y7
 QF|u$$$F|t###]]=)L *))s   >C
C!c                    [        S5      n[        USS9nUR                  SSS9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr"   Fr   r'   r#  )r   r   r  r*   r+   rz  r{  r  s       r3   test_empty_streamTestResponse.test_empty_stream8  sH    S\B6Qu5]]=)L *))    A
A#zpreload_content, amt, read_meth))TNr   )FNr   )Fr\   r   )FNr   )Fr\   r   z25 MBc                    Sn[        [        R                  " [        U5      5      5      n[	        UUSS0S9nU(       a  UR
                  O[        Xc5      " U5      n[        U5      U:X  d   eg )Nr\   r   r   r   r~   )r   r   r   r^   r   r   getattrr)   r1   r   r  	read_methcontent_lengthr   rA  r   s           r3   )test_buffer_memory_usage_decode_one_chunk6TestResponse.test_buffer_memory_usage_decode_one_chunk@  sd     $T]]5#89:+'3

 ,tyy1I#1N4yN***r"   z10.5 MBc                    Sn[        [        U5      5      n[        XQSS9nU(       a  UR                  O[	        Xc5      " U5      n[        U5      U:X  d   eg )Nr\   Fr   )r   r^   r   r   r  r)   r  s           r3   $test_buffer_memory_usage_no_decoding1TestResponse.test_buffer_memory_usage_no_decodingX  sN     $U>*+BPUV+tyy1I#1N4yN***r"   c                L    [        S5      n[        USS9nUR                  b   eg )N   12345Fr   r   r   rf  )r1   r   rA  s      r3   test_length_no_header"TestResponse.test_length_no_headerl  s*    XB6$$,,,r"   c                Z    SS0n[        S5      n[        X!SS9nUR                  S:X  d   eg )Ncontent-length5r  Fr   rs  r  r1   r~   r   rA  s       r3   test_length_w_valid_header'TestResponse.test_length_w_valid_headerq  s6    #S)XBG$$)))r"   c                    SS0n[        S5      n[        X!SS9nUR                  b   eSUS'   [        X!SS9nUR                  b   eg )Nr  foor  Fr   z-10r  )r1   garbager   rA  s       r3   test_length_w_bad_header%TestResponse.test_length_w_bad_headerx  s]    #U+XBG$$,,,$) !BG$$,,,r"   c                V    SSS.n[        S5      n[        X!SS9nUR                  b   eg )Nr  r^  )r  transfer-encodingr  Fr   r  r  s       r3   test_length_when_chunked%TestResponse.test_length_when_chunked  s6     &)yIXBG$$,,,r"   c                    SS0nSS0n[        S5      n[        X1SS9nUR                  S:X  d   e[        R                  " [
        5         [        X2SS9  S S S 5        g ! , (       d  f       g = f)Nr  z5, 5, 5z5, 42s   abcdeFr   rs  )r   r   rf  r*   r+   r   )r1   r~   r  r   rA  s        r3   )test_length_with_multiple_content_lengths6TestResponse.test_length_with_multiple_content_lengths  sb    #Y/#W-XBG$$)))]]=)eD *))s   
A
A,c                h   SS0n[        S5      n[        USS9nUR                  5         UR                  b   e[        S5      n[        X!SS9nUR                  5         UR                  S:X  d   e[        S5      n[        X!SS9nUR	                  S5      n[        U5        UR                  S	:X  d   eg )
Nr  r  r  Fr   r   r   r'   r   )r   r   r   rf  r  r{  )r1   r~   r   rA  r   s        r3   test_length_after_read#TestResponse.test_length_after_read  s    #S) XB6		$$,,, XBG		$$))) XBG{{1~T
$$)))r"   c                @    " S S5      n[        S5      nU" 5       nX#l        [        USS9nUR                  S5      n[	        U5      S:X  d   e[	        U5      S:X  d   e[
        R                  " [        5         [	        U5        S S S 5        g ! , (       d  f       g = f)	Nc                  <    \ rS rSrSS jrS	S jrS	S jrSS jrSrg)
CTestResponse.test_mock_httpresponse_stream.<locals>.MockHTTPRequesti  c                    S U l         g rT   r   r1   s    r3   r  LTestResponse.test_mock_httpresponse_stream.<locals>.MockHTTPRequest.__init__  s	    *.r"   c                v    U R                   c   eU R                   R                  U5      nU(       d  S U l         U$ rT   )r   r   )r1   r  r   s      r3   r   HTestResponse.test_mock_httpresponse_stream.<locals>.MockHTTPRequest.read  s3    ww***ww||C("DGr"   c                $    U R                  S5      $ )Nr%   r  r  s     r3   r   ITestResponse.test_mock_httpresponse_stream.<locals>.MockHTTPRequest.read1  s    yy|#r"   c                    S U l         g rT   r  r  s    r3   rt   ITestResponse.test_mock_httpresponse_stream.<locals>.MockHTTPRequest.close  s	    r"   r  Nrg   r  )	rj   rk   rl   rm   r  r   r   rt   rq   rf   r"   r3   MockHTTPRequestr    s    /$r"   r  r#   Fr   r'   r  r  )r   r   r   r  r{  r*   r+   rz  )r1   r  bior   rA  r  s         r3   test_mock_httpresponse_stream*TestResponse.test_mock_httpresponse_stream  s    	 	$ foB6QF|u$$$F|t###]]=)L *))s   :B
Bc                    / SQn[        U5      n[        R                  " [        5      nX#l        [        USSS0S9n[        UR                  5       5       H  u  pVXaU   :X  a  M   e   g )N)r  r  r;   Fr  r^  r  )MockChunkedEncodingResponserU  r   MockSockr   	enumerater  )r1   r  r   r   rA  r_   cs          r3   #test_mock_transfer_encoding_chunked0TestResponse.test_mock_transfer_encoding_chunked  sd    &(0  *u/BI.N
 dkkm,DAq	>!> -r"   c                    SS jn[        [        U" 5       5      5      n[        R                  " [        5      nX#l        SSS.n[        USUS9nSnUR                  SS	9 H  nXg-  nM	     S
U:X  d   eg)z5Show that we can decode the gzipped and chunked body.c               3    #    [         R                  " S[         R                  S[         R                  -   5      n U R	                  S5      nXR                  5       -  n[        S[        U5      S5       H  nXUS-    v   M     g 7f)Nr   r   r   r   r'   r   r   r   r   r   r   r]   r)   r   r   r_   s      r3   r  PTestResponse.test_mock_gzipped_transfer_encoding_chunked_decoded.<locals>.stream  sj     ''4=="t~~:MNH$$Y/DNN$$D1c$i+q1uo% ,   BBr^  r   r  r   Fr  r"   Tr#  r   Nrh   z#typing.Generator[bytes, None, None])r  rt  rU  r   r  r   r  r1   r  r   r   r~   rA  r   r  s           r3   3test_mock_gzipped_transfer_encoding_chunked_decoded@TestResponse.test_mock_gzipped_transfer_encoding_chunked_decoded  sw    	& )fh8  *(1vNAugFD1AID 2 D   r"   c                    SS/n[        U5      n[        R                  " [        5      nX#l        SUl        S Ul        [        USSS0S9n/ SQn[        UR                  S	5      5      nXV:X  d   eg )
N   foooo
   bbbbaaaaarTFr  r^  r  )r  r(   r     bbr(     aar)  s   arr'   	r  rU  r   r  r   r^  
chunk_leftrt  read_chunked)r1   r  r   r   rA  expected_responseresponses          r3   /test_mock_transfer_encoding_chunked_custom_read<TestResponse.test_mock_transfer_encoding_chunked_custom_read  sz    M*(0  *	u/BI.N
 T))!,- ,,,r"   read_chunked_argsc                    SS/n[        U5      n[        R                  " [        5      nX4l        SUl        S Ul        [        USSS0S9nU[        UR                  " U6 5      :X  d   eg )Nr&  r'  TFr  r^  r  r*  )r1   r1  r  r   r   rA  s         r3   /test_mock_transfer_encoding_chunked_unlmtd_read<TestResponse.test_mock_transfer_encoding_chunked_unlmtd_read   ss     M*(0  *	u/BI.N
 d//1BCDDDDr"   c                    [        S5      n[        USS9nUR                  5       n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = fr   )r   r   r,  r*   r+   r   r{  r1   r   rA  r   s       r3   (test_read_not_chunked_response_as_chunks5TestResponse.test_read_not_chunked_response_as_chunks  sE    V_B6]]-.G /..r  c                    [        S5      n[        USSS0S9nUR                  5       n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr#   Fr  r^  r  )r   r   r,  r*   r+   r   r{  r6  s       r3   test_read_chunked_not_supported,TestResponse.test_read_chunked_not_supported  sR    V_0CY/O
 ]]34G 544s   A
A&c                ~   Sn[        S5      n[        US[        U5      0SSS9n[        R                  " [
        5       nUR                  S5        S S S 5        WR                  R                  S   n[        U[        5      (       d   eUR                  S	:X  d   eUR                  U:X  d   eg ! , (       d  f       Nc= f)
Ni9  r"   r  FT)r~   r   enforce_content_lengthr   r%   r   )r   r   strr*   r+   r   r   valueargs
isinstancer   partialr  )r1   r  r   rA  ctxorig_exs         r3   test_buggy_incomplete_read'TestResponse.test_buggy_incomplete_read  s     S\%s>':;!#'	
 ]]=)SIIaL * ))..#'>2222!###>111 *)s   B..
B<c                   SS/n[        U5      n[        R                  " [        5      nX#l        SUl        S Ul        [        USSS0S9n[        R                  " [        5       n[        UR                  5       5        S S S 5        WR                  R                  S   n[        U[        5      (       d   eg ! , (       d  f       N?= f)	Nr&  r'  TFr  r^  r  r%   )MockChunkedIncompleteReadrU  r   r  r   r^  r+  r*   r+   r   r{  r,  r?  r@  rA  httplib_IncompleteRead)r1   r  r   r   rA  rC  rD  s          r3   test_incomplete_chunk"TestResponse.test_incomplete_chunk2  s    M*&v.  *	u/BI.N
 ]]=)S""$% * ))..#'#9::::	 *)s   %B88
Cc                    SS/n[        U5      n[        R                  " [        5      nX#l        SUl        S Ul        [        USSS0S9n[        R                  " [        5       n[        UR                  5       5        S S S 5        WR                  R                  S   nS	n[        UR                  5      U:X  d   e[        U[         5      (       d   eUR"                  UR$                  R'                  5       :X  d   eg ! , (       d  f       N= f)
Nr&  r'  TFr  r^  r  r%   z("Connection broken: InvalidChunkLength(got length b'ZZZ\\r\\n', 0 bytes read)", InvalidChunkLength(got length b'ZZZ\r\n', 0 bytes read)))MockChunkedInvalidChunkLengthrU  r   r  r   r^  r+  r*   r+   r   r{  r,  r?  r@  r>  rA  r   r_  BAD_LENGTH_LINEencode)r1   r  r   r   rA  rC  rD  r<  s           r3   test_invalid_chunk_length&TestResponse.test_invalid_chunk_lengthB  s    M**62  *	u/BI.N
 ]]=)S""$% * ))..#I 	 399~$$$'#56666~~!3!3!:!:!<<<< *)s   %C??
Dc                h   SS/n[        U5      n[        R                  " [        5      nX#l        SUl        S Ul        [        USSS0S9n[        R                  " [        5       n[        UR                  5       5        S S S 5        [        WR                  5      S:X  d   eg ! , (       d  f       N*= f)	Nr&  r'  TFr  r^  r  zResponse ended prematurely)MockChunkedNoChunksrU  r   r  r   r^  r+  r*   r+   r   r{  r,  r>  r?  )r1   r  r   r   rA  rC  s         r3   test_truncated_before_chunk(TestResponse.test_truncated_before_chunkX  s    M* (  *	u/BI.N
 ]]=)S""$% * 399~!==== *)s   %B##
B1c                    / SQn[        U5      n[        R                  " [        5      nX#l        SUl        S Ul        [        USSS0S9nU[        UR                  5       5      :X  d   eg )N)r#   r;   r<   TFr  r^  r  )	#MockChunkedEncodingWithoutCRLFOnEndrU  r   r  r   r^  r+  rt  r  r1   r  r   r   rA  s        r3   )test_chunked_response_without_crlf_on_end6TestResponse.test_chunked_response_without_crlf_on_endg  sf    )08  *	u/BI.N
 dkkm,,,,r"   c                    SS/n[        U5      n[        R                  " [        5      nX#l        SUl        S Ul        [        USSS0S9nU[        UR                  5       5      :X  d   eg )Nr#   r;   TFr  r^  r  )	!MockChunkedEncodingWithExtensionsrU  r   r  r   r^  r+  rt  r  rX  s        r3   %test_chunked_response_with_extensions2TestResponse.test_chunked_response_with_extensionss  sk    &!.v6  *	u/BI.N
 dkkm,,,,r"   c                N   [         R                  " [        SS9nSUl        S Ul        [        SSSS0US9nUR                  SL d   e[        US	S
 5        [        US[        R                  " 5       5        UR                  5        H  nM     UR                  R                  5         g )NHEAD)methodT Fr  r^  )r   r~   original_responsesupports_chunked_readsc                     gNTrf   rf   r"   r3   rW   9TestResponse.test_chunked_head_response.<locals>.<lambda>  s    r"   release_conn)rU  r   r  r^  r+  setattrr   Mockr  rh  assert_called_once_with)r1   r   rA  r   s       r3   test_chunked_head_response'TestResponse.test_chunked_head_response  s      &9	!()4	
 ||t###.=ndiik2A 113r"   c                    SS0n[        US9nUR                  R                  S5      S:X  d   eUR                  R                  S5      S:X  d   eg )Nr{   r|   r}   Host)r   r~   r-   r   s      r3   !test_get_case_insensitive_headers.TestResponse.test_get_case_insensitive_headers  sL    =))yy}}V$555yy}}V$555r"   c                    [        S5      n[        U5      nUR                  b   e[        5       n[        XS9nUR                  U:X  d   eg )Nr"   retries)r   r   rt  r   )r1   r   rA  retrys       r3   test_retriesTestResponse.test_retries  sH    S\B||###B.||u$$$r"   c                \    [        S5      nSn[        XS9nUR                  5       U:X  d   eg )Nr"   https://example.comrK  )r   r   geturlr1   r   rK  rA  s       r3   test_geturlTestResponse.test_geturl  s.    S\+B8{{}+++r"   c                    [        S5      nSn[        XS9nUR                  U:X  d   eSUl        UR                  S:X  d   eg )Nr"   ry  rz  zhttps://anotherurl.com)r   r   urlr|  s       r3   test_urlTestResponse.test_url  sF    S\+B8xx;&&&+xx3333r"   c           	         [        S5      n[        USS9n[        SSS SSS9[        SSS SSS94n[        US	9n[        XS
9nUR	                  5       S:X  d   eg )Nr"   zhttp://example.comrz  GETi-  zhttps://example.com/)ra  r  errorrG  redirect_locationzhttps://www.example.com)historyrs  )r   r   r   r   r{  )r1   r   rA  request_historiesru  s        r3   test_geturl_retries TestResponse.test_geturl_retries  s|    S\B,@A("8 *";
  /0B.{{} 9999r"   r  expected_streamr"      
s   


)r  r  r  s   abc
defs   abc
s   defs   Hello
world


!)s   Hello
s   world
r  r     !c                l    / n[        [        U5      SS9 H  nUR                  U5        M     X2:X  d   eg )NFr   )r   r   append)r1   r  r  actual_streamrc   s        r3   test__iter__TestResponse.test__iter__  s<     !''"2EJE  ' K ///r"   c                    S	S jn[        [        U" 5       5      5      n[        R                  " [        5      nX#l        SSS.n[        USUS9nSnU H  nXg-  nM	     SU:X  d   eg )
Nc               3    #    [         R                  " S[         R                  S[         R                  -   5      n U R	                  S5      nXR                  5       -  n[        S[        U5      S5       H  nXUS-    v   M     g 7f)Nr   r      foo
barr   r'   r  r  s      r3   r  7TestResponse.test__iter__decode_content.<locals>.stream  sj     ''4=="t~~:MNH$$[1DNN$$D1c$i+q1uo% ,r  r^  r   r   Fr  r"   r  r!  )r  rt  rU  r   r  r   r"  s           r3   test__iter__decode_content'TestResponse.test__iter__decode_content  sl    	& )fh8  *(1vNAugFAID  d"""r"   c                  ^ [         R                  " SSS5      m[        R                  SU4S jj5       nU" 5        n[        R
                  " [        5       n[        U5        S S S 5        WR                  R                  S   T:X  d   e S S S 5        U" 5        n[        USS9n[        R
                  " [        5       nUR                  5         S S S 5        WR                  R                  S   T:X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NY= f! , (       d  f       g = f)	NzSSL routinesssl3_get_recordz#decryption failed or bad record macc               3     >#    [        S5      n [        R                  R                  U S5       nTUl        U v   S S S 5        g ! , (       d  f       g = f7f)Nr"   r   )r   r   patchobjectside_effect)r   fp_read	mac_errors     r3   make_bad_mac_fpHTestResponse.test_non_timeout_ssl_error_on_read.<locals>.make_bad_mac_fp  s=     B""2v.'&/# /..s   ,AA	A
AAr   Fr   )rh   z%typing.Generator[BytesIO, None, None])
sslr   
contextlibcontextmanagerr*   r+   r   r?  r@  r   )r1   r  r   erA  r  s        @r3   "test_non_timeout_ssl_error_on_read/TestResponse.test_non_timeout_ssl_error_on_read  s    LL-/T
	 
	"	"	 
#	 "x(AR  )77<<?i/// 
 "E:Dx(A		 )77<<?i///	 	 )(  )( sG   DD#'D%D4?D#'D4
D	D
D #
D1	-D44
Ec                   [         R                  " [        5       n[        S5      nSS0n[	        USUS9nUR                  S5        S S S 5        S[        WR                  5      ;   d   e[         R                  " [        5         [        S5      nSS0n[	        USUS9nUR                  S5        S S S 5        S[        UR                  5      ;   d   e[         R                  " [        5         [        S5      n[	        USS	9nUR                  S5        S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NL= f)
Nr  r  r     )rG  r~   r   z Response may not contain content0)rG  )r*   r+   r   r   r   r   r>  r?  )r1   excinfor   r~   rA  s        r3   test_unexpected_body!TestResponse.test_unexpected_body  s   ]]=)W"B'-G3@DIIbM	 *
 2S5GGGG]]=)"B'-G3@DIIbM	 *
 2S5GGGG]]=)"B3/DIIbM * 2S5GGGG% *) *) *)s#   ,D8,E	-'E8
E	
E
E(rf   Nrg   )r   tuple[typing.Any, ...]rh   ri   )r   r  rh   ri   )r   r>  rh   ri   )r   r^   rh   ri   )rv   socket.socketrh   ri   )rv   r  rd  boolrc  z
int | Nonerh   ri   )rv   r  rd  r  rh   ri   )r   r  r  r  r  r>  rh   ri   )r1  r  rh   ri   )r  r^   r  list[bytes]rh   ri   )grj   rk   rl   rm   r   r   r   r   r   r   r   r   r*   rn   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r  r	  r  r
   r  r  r  decode_param_setr  r  r$  r)  r.  r2  r5  r8  r=  rB  filterwarningsrO  rZ  ra  rg  rk  rn  ru  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  rp   r  r  r  r  r  r  r  r   r  r  r#  r/  r3  r7  r:  rE  rJ  rP  rT  rY  r]  rl  rp  rv  r}  r  r  r  r  r  r  rq   rf   r"   r3   r   r      s   !  (F
 [[[*>?, @,
  [[\+?@.0.	. A.     [[/&(1CD E	&C
#*	& \    \# # \A A
 Z    Z# #( Z# #& 	
 Z[[V%56C 7 C Z[[V%56C 7 C Z[[V%56( 7 ( Z[[V%56) 7 )$ Z[[V%56$ 7 $&   "
 [[ QR S&"H( [[Z3[[^];'!'15'AK'	' < 4'< [[^];!'!!'15!'	!' <!'F [[^];+!+15+	+ <+0<"&&&,:-:	9$ *GAR  [[)	
	 [[g&+#+*-+:=+	+ '	+ [[)	
	 [[i(+#+*-+:=+	+ )	+-
*	--	E*,B
"!.- [[02FGE!7E	E HE2&; =,>
-
-4$6%,4:. [[	%&"IUG-.8V,-#%QR	
	0	0#*00Hr"   r   c                  z    \ rS rSrSS jrSS jrSS jrSSS jjrSS jrSSS jjr	SSS jjr
SS	 jrSS
 jrSrg)r  i  c                H    Xl         SU l        SU l        SU l        SU l        g)z=
content: collection of str, each str is a chunk in response
r   Fr"   N)contentindexr   	cur_chunkchunks_exhausted)r1   r  s     r3   r  $MockChunkedEncodingResponse.__init__  s&     
 %r"   c                L    [        U5      S S3nUR                  5       U-   S-   $ )NX
   
)r)   rO  )r1   rc   r_  s      r3   _encode_chunk)MockChunkedEncodingResponse._encode_chunk#  s*    Jq>&}}&00r"   c                T   U R                   (       a  g U R                  U R                     nU =R                  S-  sl        U R	                  U5      n[        U[        5      (       d  UR                  5       n[        U[        5      (       d   eU$ ! [         a    SnSU l          Ndf = f)Nr"   r%   T)r  r  r  
IndexErrorr  rA  r^   rO  r1   rc   s     r3   _pop_new_chunk*MockChunkedEncodingResponse._pop_new_chunk(  s      	LL,E
 JJ!OJ""5)%''LLNE%''''  	)E$(D!	)s   B B'&B'c                "   US:  a  U(       a  [        S5      e[        U R                  5      S::  a  U R                  5       U l        U(       aG   U R                  R	                  S5      nU R                  S US-    nU R                  US-   S  U l        U$ US::  a  U R                  nSU l        U$  U R                  S U nU R                  US  U l        U$ ! [          a
    SU l         gf = f! [
         a    U R                  nSU l         U$ f = f)Nr   z Can't specify amt and till_crlf.r  r'   r"   r$   )r/   r)   r  r  r  r  )r1   r  	till_crlfr_   
chunk_parts        r3   pop_current_chunk-MockChunkedEncodingResponse.pop_current_chunk8  s   7y?@@t~~!#!002DN	"NN((1 "^^Ga!e4
!%A!8!!BYJ DN6!^^DS1

 "&!5)  !$  %!^^
!$ %s$   C 1C- C*)C*-DDc                     U R                  SS9$ )NT)r  r  r  s    r3   readline$MockChunkedEncodingResponse.readlineV  s    %%%55r"   c                $    U R                  U5      $ rT   r  r  s     r3   r    MockChunkedEncodingResponse.readY      %%c**r"   c                $    U R                  U5      $ rT   r  r  s     r3   r   !MockChunkedEncodingResponse.read1\  r  r"   c                    g rT   rf   r  s    r3   r   !MockChunkedEncodingResponse.flush_  s    r"   c                    SU l         g rf  )r   r  s    r3   rt   !MockChunkedEncodingResponse.closec  s	    r"   )r  r   r  r  r  N)r  r  rh   ri   rc   r^   rh   r^   )rh   r^   )r$   F)r  r  r  r  rh   r^   r   r  rg   )rj   rk   rl   rm   r  r  r  r  r  r   r   r   rt   rq   rf   r"   r3   r  r    s/    &1
 <6++r"   r  c                      \ rS rSrSS jrSrg)rH  ig  c                F    SUR                  5        S3R                  5       $ )Nz9999
r  )decoderO  r  s     r3   r  'MockChunkedIncompleteRead._encode_chunkh  s!    %,,.).5577r"   rf   Nr  rj   rk   rl   rm   r  rq   rf   r"   r3   rH  rH  g  s    8r"   rH  c                  "    \ rS rSrSrSS jrSrg)rM  il  zZZZ
c                \    U R                    UR                  5        S3R                  5       $ )Nr  )rN  r  rO  r  s     r3   r  +MockChunkedInvalidChunkLength._encode_chunko  s*    &&''7t<CCEEr"   rf   Nr  )rj   rk   rl   rm   rN  r  rq   rf   r"   r3   rM  rM  l  s    OFr"   rM  c                      \ rS rSrSS jrSrg)rW  is  c                    SR                  [        U5      UR                  5       [        U5      S:  a  S5      R                  5       $ S5      R                  5       $ )Nz
{:X}
{}{}r   r  rb  )formatr)   r  rO  r  s     r3   r  1MockChunkedEncodingWithoutCRLFOnEnd._encode_chunkt  sS    $$JLLN%j1nF
 &(		 +-
 &(		r"   rf   Nr  r  rf   r"   r3   rW  rW  s  s    r"   rW  c                      \ rS rSrSS jrSrg)r\  i|  c                ^    [        U5      S SUR                  5        S3R                  5       $ )Nr  z
;asd=qwe
r  )r)   r  rO  r  s     r3   r  /MockChunkedEncodingWithExtensions._encode_chunk}  s+    e*Q|ELLN+;4@GGIIr"   rf   Nr  r  rf   r"   r3   r\  r\  |  s    Jr"   r\  c                      \ rS rSrSS jrSrg)rS  i  c                    g)Nr"   rf   r  s     r3   r  !MockChunkedNoChunks._encode_chunk  s    r"   rf   Nr  r  rf   r"   r3   rS  rS    s    r"   rS  c                  (    \ rS rSr\SS j5       rSrg)r  i  c                    g rT   rf   )clsr@  kwargss      r3   makefileMockSock.makefile  s    r"   rf   N)r@  
typing.Anyr  r  rh   ri   )rj   rk   rl   rm   classmethodr  rq   rf   r"   r3   r  r    s     r"   r  )rh   z+typing.Generator[socket.socket, None, None])9
__future__r   r  http.clientclientrU  rs   r  typingr   base64r   r   rI  ior   r   r   testr	   r
   unittestr   r*   urllib3r   urllib3.exceptionsr   r   r   r   r   r   r   urllib3.responser   r   r   r   urllib3.util.responser   urllib3.util.retryr   r   r   r  fixturerv   rx   r   r  rH  rM  rW  r\  rS  r  rf   r"   r3   <module>r     s    "    
    @ 5 5 %   "	 	 	  / 4N) N)j 	  8 8(qH qHh+L L^8 ; 8
F$? F*E J(C J
5 
 r"   