HJkySSKrSSKrSSKJrJr SSKrSSKrSSKrSSKrSSK r SSK r SSK r SSK r SSK J r \ RrSSKJr SSKJr SSKJr SSKJr \R,"SS 9 \R.R1\5r\R.R7\S S 5r\R.R7\S S 5r\R.R7\S S 5rSrSr Sr!Sr"S\!-S-r#Sr$Sr%\RLr&"SS5r'"SS\'5r("SS\RR5r*"SS\RV5r,"SS\\5r-"SS \5r."S!S"\5r/"S#S$\\5r0"S%S&\\5r1"S'S(\15r2"S)S*\15r3"S+S,5r4"S-S.\\5r5"S/S0\5r6"S1S2\5r7"S3S4\5r8"S5S6\5r9"S7S8\5r:"S9S:\5r;"S;S<\\5r<\=S=:Xa\ R|"S>S?9 gg)@N)client HTTPStatus)mock)support) os_helper) socket_helper)ExtraAssertionsT)modulecertdataz keycert.pemz keycert2.pemzselfsigned_pythontestdotnet.pemz{HTTP/1.1 200 OK Transfer-Encoding: chunked a hello worl 3 d! 8 and now 22 for something completely different s7hello world! and now for something completely differentz;foo=barz0 0 zX-Dummy: foo X-Dumm2: bar cZ\rSrSr\R SS4SjrSrS SjrSr Sr Sr S r g) FakeSocket7Nc[U[5(aURS5nXlX lSUlSUlSUlX0lX@l g)NasciirF) isinstancestrencodetext fileclassdata sendall_calls file_closedhostport)selfrrrrs 8/opt/alt/python313/lib64/python3.13/test/test_httplib.py__init__FakeSocket.__init__8sH dC ;;w'D "    rcXU=RS- slU=RU- slg)N)rrrrs rsendallFakeSocket.sendallCs! a T rcUS:waUS:wa[R"5eURUR5UlUR URlUR$)Nrrb)rUnimplementedFileModerrfile file_closeclose)rmodebufsizes rmakefileFakeSocket.makefileGsK 3;44<..0 0NN499- // yyrcSUlg)NT)rrs rr,FakeSocket.file_closeOs rcgNr3s rr-FakeSocket.closeR rcgr6r7)rleveloptnamevalues r setsockoptFakeSocket.setsockoptUr9r)rr+rrrrrrr6) __name__ __module__ __qualname____firstlineno__ioBytesIOr r%r0r,r-r>__static_attributes__r7rrrr7s+')zz4    rrc&\rSrSrSrSrSrSrg) EPipeSocketXc:[RX5 X lgr6)rr pipe_trigger)rrrKs rr EPipeSocket.__init__ZsD'(rcURU;a[[RS5eU=RU- slg)Ngotcha)rKOSErrorerrnoEPIPErr$s rr%EPipeSocket.sendall_s/    $%++x0 0 T rcgr6r7r3s rr-EPipeSocket.closedr9r)rKN)r@rArBrCr r%r-rFr7rrrHrHXs)   rrHc,\rSrSrSrSSjrSSjrSrg) NoEOFBytesIOgzLike BytesIO, but raises AssertionError on EOF. This is used below to test that http.client doesn't try to read more from the underlying file than it should. cf[RRX5nUS:Xa [S5eU$Nrzcaller tried to read past EOF)rDrEreadAssertionError)rnrs rrZNoEOFBytesIO.readms,zzt' 3; !@A A rNcf[RRX5nUS:Xa [S5eU$rY)rDrEreadliner[)rlengthrs rr_NoEOFBytesIO.readliness.zz""40 3; !@A A rr7r6)r@rArBrC__doc__rZr_rFr7rrrVrVgs  rrVc>^\rSrSrSrU4SjrU4SjrSrSrU=r $)FakeSocketHTTPConnectionyz@HTTPConnection subclass using FakeSocket; counts connect() callsc`>SUl[TU] S5 XlURUlg)Nr example.com) connectionssuperr fake_socket_argscreate_connection_create_connection)rargs __class__s rr !FakeSocketHTTPConnection.__init__|s, ' $"&"8"8rcJ>U=RS- sl[TU] 5$)z.Count the number of times connect() is invokedr#)rjrkconnect)rrps rrs FakeSocketHTTPConnection.connects! Aw  rc&[UR6$r6)rrl)rposkws rrm*FakeSocketHTTPConnection.create_connections40011r)rnrjrl) r@rArBrCrdr rsrmrF __classcell__)rps@rrfrfysJ9 ! 22rrfcD\rSrSrSrSrSrSrSrSr Sr S r S r g ) HeaderTestsc"SS[5nSHnSHn[R"S5n[S5UlU"5UlSn0nU(a[ [U55Xc'URSS XV5 URUR RUR5S 5 M M g) Nc \rSrSrSrSrSrg);HeaderTests.test_auto_headers..HeaderCountingBufferc0Ulgr6countr3s rr DHeaderTests.test_auto_headers..HeaderCountingBuffer.__init__s  rcURS5n[U5S:aUUSRS5R5nURR US5 URU==S- ss'[ RX5 g)N:r#rr)splitlendecodelowerr setdefaultlistappend)ritemkvlcKeys rrBHeaderTests.test_auto_headers..HeaderCountingBuffer.appendsjZZ%r7Q;qELL1779EJJ))%3JJu%*% D'rrNr@rArBrCr rrFr7rrHeaderCountingBufferrs   (rr)TF)Content-lengthHostzAccept-encodingri blahblahblah spamspamspamPOST/r#) rrHTTPConnectionrsock_bufferrrrequest assertEqualrr)rrexplicit_headerheaderconnbodyheaderss rtest_auto_headersHeaderTests.test_auto_headerss (4 ( +OE,,];&~6 35 %"&)#d)nGO VS$8  !3!3FLLN!CQGF +rc"SS[5nSnSn[R"X25HupE[R"S5n[ S5UlU"5UlURUSU5 URURRSSRU55 M S nUH~n[R"S5n[ S5UlU"5UlURUSS5 URURRSS RU55 M UH~n[R"S5n[ S5UlU"5UlURUSS 5 URURRSSRU55 M [R"Xs5H~n[R"S5n[ S5UlU"5UlURUSS 5 URURRS SRU55 M g)Nc \rSrSrSrSrSrg)?HeaderTests.test_content_length_0..ContentLengthCheckerc<[RU5 SUlgr6)rr content_lengthr3s rr HHeaderTests.test_content_length_0..ContentLengthChecker.__init__s d#&*#rcURSS5n[U5S:a/USR5S:XaUSR5Ul[ R X5 g)Nrr#rscontent-length)rrrstriprrr)rrrs rrFHeaderTests.test_content_length_0..ContentLengthChecker.appendsMZZa(r7Q;2a5;;=4E#E*,Q%++-D' D'r)rNrr7rrContentLengthCheckerrs  + (rr)N)PUTrPATCHrir0z%Header Content-Length incorrect on {})GETCONNECTDELETEHEADOPTIONSTRACEz.Header Content-Length set for empty body on {}r 1) r itertoolsproductrrrrrrrrformatchain)rrbodiesmethods_with_bodymethodrrmethods_without_bodys rtest_content_length_0!HeaderTests.test_content_length_0s (4 (4%--.?HLF((7D"4(DI/1DL LLd +    ++T7>>vF  I +F((7D"4(DI/1DL LLd +    ++T@GGO  ++F((7D"4(DI/1DL LLb )    ++T7>>vF  + oo&:NF((7D"4(DI/1DL LLc *    ++T7>>vF  Orc~[R"S5n[S5UlUR SS5 UR SS5 UR SUR5 UR SS5 UR S UR5 UR S S 5 UR S UR5 UR S S5 UR SUR5 UR SSS5 UR SUR5 UR SS5 UR SUR5 UR SS5 UR SUR5 UR SS5 UR SUR5 UR SS5 UR SUR5 UR S S!5 UR S"UR5 UR S#S$5 UR S%UR5 UR S&S$5 UR S'UR5 UR S(S$5 UR S)UR5 UR S*S$5 UR S+UR5 g),Nrirrr*sContent-length: 42Fooz bar s Foo: bar Barz baz s Bar: baz AuthorizationzBearer mytokensAuthorization: Bearer mytoken IterHeaderIterAIterBsIterHeader: IterA IterB LatinHeadersLatinHeader: Utf8HeadersÀsUtf8Header: Àz C1-Controls nextlinesC1-Control: nextlinezEmbedded-Fold-Spacez is alloweds!Embedded-Fold-Space: is allowedzEmbedded-Fold-Tabz is allowedsEmbedded-Fold-Tab: is allowedz Key Spacer=sKey Space: valuez KeySpace sKeySpace : valuesNonbreakSpacesNonbreakSpace: valuesNonbreakSpacesNonbreakSpace: value)rrrr putrequest putheaderassertInrrrs rtest_putheaderHeaderTests.test_putheaders$$]3t$  c" ', +T\\: ug& mT\\2 ui( ot||4 (89 6 E |Wg6 5t||D }g. *DLL9 |[1 -t||< |_5 14<<@ ,.>?  ;T\\J {G, )4<<8 {G, )4<<8 +W5 14<<@ +W5 14<<@rcSn[R"S5n[S5nX2lUR SS5 UR UR U5 Sn[R"S5n[S5nX2lUR SS5 UR UR U5 Sn[R"S 5n[S5nX2lUR SS5 UR UR U5 S n[R"S 5n[S5nX2lUR SS5 UR UR U5 g) NsCGET /foo HTTP/1.1 Host: [2001::]:81 Accept-Encoding: identity z [2001::]:81rr/foosEGET /foo HTTP/1.1 Host: [2001:102A::] Accept-Encoding: identity z [2001:102A::]s@GET /foo HTTP/1.1 Host: [fe80::] Accept-Encoding: identity z [fe80::%2]sCGET /foo HTTP/1.1 Host: [fe80::]:81 Accept-Encoding: identity z [fe80::%2]:81)rrrrrassertStartsWithrrexpectedrrs rtest_ipv6host_header HeaderTests.test_ipv6host_header s8$$]3"~  UF# dii28$$_5"~  UF# dii28$$\2"~  UF# dii28$$_5"~  UF# dii2rcSn[U5n[R"U5nUR5 UR UR S5S5 UR UR S5S5 g)Nz4HTTP/1.1 200 OK First: val : nval Second: val FirstvalSecond)rr HTTPResponsebeginr getheaderrrrresps r!test_malformed_headers_coped_with-HeaderTests.test_malformed_headers_coped_with/s\O$""4(  0%8 159rc S[[SS55-S-[[SS55-S-n[U5n[R"U5nUR 5 UR URS5S 5 UR URSS 5 UR URS 5S 5 UR URS S 5 S R[[[SS555nUR URS 5U5 UR URS U5 URURS55 URSUR5 URS5URS4H9nURUS5 URSU5 URUS5 M; g)Ns0HTTP/1.1 200 OK !#$%&'*+-.^_`|~: value VCHAR: !s obs-text: sM obs-fold: text folded with space folded with tab Content-Length: 0 Content-Lengthr z!#$%&'*+-.^_`|~r=rVCHARzobs-textzobs-foldrz folded with spacezfolded with tab)bytesrangerrrrrrmsgjoinmapchrassertIsNotNonerrassertEndsWith)rrrrvcharfoldeds rtest_parse_all_octets!HeaderTests.test_parse_all_octets9s uT845 69 "%h"78 9<  $""4(  (893? "23S9 (9:GD "34g>CtX!678 0%8 '*E2 T^^J78 j$((+~~j1488J3GHF  ! !&& 1 MM. 7   (9 :Ircj[R"S5n[S5UlUR SS5 SnUHPup4UR X445 UR [S5 URX45 SSS5 SSS5 MR g!,(df  N=f!,(df  Mu=f)Nrirrr))s Invalid Name ValidValue)s Invalid Namer)s Invalid Namer)s InvalidNamer)s InvalidNamer)s InvalidNamer)s InvalidNamer)s InvalidNamer)s Invalid:Namer)s :InvalidNamer) ValidNamesInvalid Value)rs Invalid Value)rs Invalid Value)rsInvalidValue )rs InvalidValue )rs InvalidValue zInvalid header) rrrrrsubTestassertRaisesRegex ValueErrorr)rrcasesnamer=s rtest_invalid_headers HeaderTests.test_invalid_headersWs$$]3rN  s# $!KDtm,++J8HINN4/J-,!II-,s$B#+B=B# B B## B2 cSn[U5n[R"USS9n[R"5nUR 5 SSS5 WR 5R5nURUSS5 URUSS5 URUSS5 URUS S 5 g!,(df  N=f) Ns9HTTP/1.1 200 OK First: val Second: val1 Second: val2 r#) debuglevelrzreply: 'HTTP/1.1 200 OK\r\n'zheader: First: valzheader: Second: val1zheader: Second: val2) rrrrcaptured_stdoutrgetvalue splitlinesr)rrrroutputliness rtest_headers_debuglevel#HeaderTests.test_headers_debuglevelus  $""4A6  $ $ && JJL'!,,. q#CD q#78 q#9: q#9: ' &s C Cr7N) r@rArBrCrrrrrrrrrFr7rrr{r{s0H:@D AD!3F:;<0<;rr{c\rSrSrSrSrg)HttpMethodTestsicSnUHXnUR[S5 [R"S5n[ S5UlUR USS9 SSS5 MZ g!,(df  Ml=f)N) zGET zPOST zPUT z POST Valuez POST HOST:abczGET rHost:abc zPOST Remainder: z GET HOST: z PUTz'method can't contain control charactersrir)rurl)rrrrrrr)rmethodsrrs rtest_invalid_method_names)HttpMethodTests.test_invalid_method_namesso  F'' IK,,];&t,  F 4 KKKKs 7A"" A1 r7N)r@rArBrCrrFr7rrrrs5rrcF\rSrSrSrSrSrSrSrS Sjr Sr S r S r g ) TransferEncodingTestsIt's just a flesh woundcX[R"S5n[S5UlUR SS5 UR UR 5SS9 URURR5u p#URU5nURX0R5 g)NrirrrT)encode_chunked) rrrrr endheaders _make_body_parse_requestr_parse_chunkedr expected_body)rr_rs rtest_endheaders_chunked,TransferEncodingTest.test_endheaders_chunkeds$$]3sO  $ )$?((8 1""4( 112rcz[R"S5n[S5UlUR SSUR 5SS05 UR URR5up#nURSUR5Vs/sHoUR5PM sn5 URUSS5 URX@R5 [R"S5n[S5UlUR SSURRS5SS05 UR URR5up#nURSUR5Vs/sHoUR5PM sn5 URUSS5 URX@R5 [R"S5n[S5UlUR SSSS 0S UR 5S 9 UR URR5up#nURSUVs/sHoUR5PM sn5 URUSS 5 URURU5UR5 gs snfs snfs snf) NrirrrTransfer-Encodingchunkedcontent-lengthlatin-1z gzip, chunkedT)rrr)rrrrrrr r assertNotInkeysrrr"rr!rrr#rrks rtest_explicit_headers*TransferEncodingTest.test_explicit_headerssD$$]3sO  C*-@),L N ..tyy~~>D )w||~+N~!GGI~+NO !45yA 112$$]3sO  C++229= ) , . ..tyy~~>D )w||~+N~!GGI~+NO !45yA 112$$]3sO  VS(/:"  $ ..tyy~~>D )w+Gw!GGIw+GH !45G ,,T2D4F4FG5,O,O,HsJ. <J3 J8 c SHn[R"S5n[S5UlUR SSUR US95 UR URR5up4nURU5nURXPR5 URUSS5 URS UVs/sHofR5PM sn5 M gs snf) N)FTrirrr) empty_linesr'r(r)) rrrrrrr rr!rr"r+r)rr2rr#rrr.s r test_request!TransferEncodingTest.test_requests)K((7D"3DI LLT___E G $22499>>B A&&t,D   T#5#5 6   W%899 E   -7/K7a 7/K L*0LsC* c~[R"S5n[S5UlUR SSS5 UR URR 5up#nURUSS5 URSUVs/sHoUR5PM sn5 URUS 5 gs snf) Nrirrrr7r'r(r)s0 ) rrrrrr rrr+rr-s rtest_empty_body$TransferEncodingTest.test_empty_bodys$$]3sO  VS"%..tyy~~>D !45yA )w+Gw!GGIw+GH |,,HsB: c## URRS5n[U5H9up4U(aUS-(aSv U[U5S- :a US-v M5Uv M; g7f)N r rr#)r"r enumerater)rr2ridxlines rrTransferEncodingTest._make_bodysY""((."5)ICsQw SZ!^#Tk! *sA%A'cURS5nUSn0nSnU[U5:a[X%5S:a|X%RS5upgURS5R5nURS5R5XF'US- nU[U5:a[X%5S:aM|X4SR X%S-S54$)N rr#rr*)rrrrr)rrrrrr\keyrs rr #TransferEncodingTest._parse_requests 7#( #e*nUX!2x~~d+HC**Y'--/C::i0668GL FA #e*nUX!2 eEFm!<<rr=phrase description) assertTruesetdirrr3s r&test_dir_with_added_behavior_on_status0BasicTest.test_dir_with_added_behavior_on_statuss# Bc#jY\oJ^F__`rcl"SS[R5n[R"U[5 g)Ncz\rSrSrSrSISjr\S5r\S5r\S5r \S5r \S5r S r S r S rS rS rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"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/\/r0S-r1\1r2S.r3S/r4\4r5S0r6S1r7S2r8S3r9\9r:S4r;S5rS8r?S9r@S:rAS;rBSrES?rFS@rGSArHSBrISCrJSDrKSErLSFrMSGrNgH)J;BasicTest.test_simple_httpstatus..CheckedHTTPStatusi#a HTTP status codes and reason phrases Status codes from the following RFCs are all observed: * RFC 7231: Hypertext Transfer Protocol (HTTP/1.1), obsoletes 2616 * RFC 6585: Additional HTTP Status Codes * RFC 3229: Delta encoding in HTTP * RFC 4918: HTTP Extensions for WebDAV, obsoletes 2518 * RFC 5842: Binding Extensions to WebDAV * RFC 7238: Permanent Redirect * RFC 2295: Transparent Content Negotiation in HTTP * RFC 2774: An HTTP Extension Framework * RFC 7725: An HTTP Status Code to Report Legal Obstacles * RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2) * RFC 2324: Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0) * RFC 8297: An HTTP Status Code for Indicating Hints * RFC 8470: Using Early Data in HTTP cT[RX5nXlX$lX4lU$r6)rD__new___value_rLrM)clsr=rLrMobjs rrXCBasicTest.test_simple_httpstatus..CheckedHTTPStatus.__new__6s$kk#-# # "- rc,SUs=:*=(a S:*$s $)Ndr7r3s ris_informationalLBasicTest.test_simple_httpstatus..CheckedHTTPStatus.is_informational>d))c))))rc,SUs=:*=(a S:*$s $)N+r7r3s r is_successFBasicTest.test_simple_httpstatus..CheckedHTTPStatus.is_successBrbrc,SUs=:*=(a S:*$s $)N,r7r3s ris_redirectionJBasicTest.test_simple_httpstatus..CheckedHTTPStatus.is_redirectionFrbrc,SUs=:*=(a S:*$s $)Nr7r3s ris_client_errorKBasicTest.test_simple_httpstatus..CheckedHTTPStatus.is_client_errorJrbrc,SUs=:*=(a S:*$s $)NWr7r3s ris_server_errorKBasicTest.test_simple_httpstatus..CheckedHTTPStatus.is_server_errorNrbr)r^Continuez!Request received, please continue)ezSwitching Protocolsz.Switching to new protocol; obey Upgrade header)f Processing)rWz Early Hints)rdOKz#Request fulfilled, document follows)CreatedzDocument created, URL follows)Acceptedz/Request accepted, processing continues off-line)zNon-Authoritative InformationzRequest fulfilled from cache)z No Contentz"Request fulfilled, nothing follows)z Reset Contentz"Clear input form for further input)zPartial ContentzPartial content follows)z Multi-Status)zAlready Reported)zIM Used)rizMultiple Choicesz,Object has several resources -- see URI list)i-zMoved Permanently(Object moved permanently -- see URI list)i.Found(Object moved temporarily -- see URI list)i/z See Otherz'Object moved -- see Method and URL list)i0z Not Modifiedz)Document has not changed since given time)i1z Use Proxyz@You must use proxy specified in Location to access this resource)i3zTemporary Redirectr)i4zPermanent Redirectr)rnz Bad Requestz(Bad request syntax or unsupported method) Unauthorizedz*No permission -- see authorization schemes)izPayment Requiredz"No payment -- see charging schemes)i Forbiddenz0Request forbidden -- authorization will not help)rN Not FoundzNothing matches the given URI)izMethod Not Allowedz-Specified method is invalid for this resource)izNot Acceptablez%URI not available in preferred format)izProxy Authentication Requiredz7You must authenticate with this proxy before proceeding)izRequest Timeoutz"Request timed out; try again later)iConflictzRequest conflict)iGonez5URI no longer exists and has been permanently removed)izLength Requiredz"Client must specify Content-Length)izPrecondition Failedz Precondition in headers is false)rzContent Too LargezContent is too large)iz URI Too LongzURI is too long)izUnsupported Media Typez!Entity body in unsupported format)izRange Not SatisfiablezCannot satisfy request range)izExpectation Failedz'Expect condition could not be satisfied)iz I'm a Teapotz5Server refuses to brew coffee because it is a teapot.)izMisdirected Requestz(Server is not able to produce a response)izUnprocessable Content)iLocked)izFailed Dependency)iz Too Early)izUpgrade Required)izPrecondition Requiredz8The origin server requires the request to be conditional)izToo Many RequestszOThe user has sent too many requests in a given amount of time ("rate limiting"))izRequest Header Fields Too LargezVThe server is unwilling to process the request because its header fields are too large)izUnavailable For Legal ReasonszOThe server is denying access to the resource as a consequence of a legal demand)rszInternal Server ErrorzServer got itself in trouble)izNot Implementedz&Server does not support this operation)iz Bad Gatewayz+Invalid responses from another server/proxy)izService Unavailablez8The server cannot process the request due to a high load)izGateway Timeoutz4The gateway server did not receive a timely response)izHTTP Version Not SupportedzCannot fulfill request)izVariant Also Negotiates)izInsufficient Storage)iz Loop Detected)iz Not Extended)izNetwork Authentication Requiredz7The client needs to authenticate to gain network accessr7N)r)Or@rArBrCrdrXpropertyr`rfrkrpruCONTINUESWITCHING_PROTOCOLS PROCESSING EARLY_HINTSr{CREATEDACCEPTEDNON_AUTHORITATIVE_INFORMATION NO_CONTENT RESET_CONTENTPARTIAL_CONTENT MULTI_STATUSALREADY_REPORTEDIM_USEDMULTIPLE_CHOICESMOVED_PERMANENTLYFOUND SEE_OTHER NOT_MODIFIED USE_PROXYTEMPORARY_REDIRECTPERMANENT_REDIRECT BAD_REQUEST UNAUTHORIZEDPAYMENT_REQUIRED FORBIDDEN NOT_FOUNDMETHOD_NOT_ALLOWEDNOT_ACCEPTABLEPROXY_AUTHENTICATION_REQUIREDREQUEST_TIMEOUTCONFLICTGONELENGTH_REQUIREDPRECONDITION_FAILEDCONTENT_TOO_LARGEREQUEST_ENTITY_TOO_LARGE URI_TOO_LONGREQUEST_URI_TOO_LONGUNSUPPORTED_MEDIA_TYPERANGE_NOT_SATISFIABLEREQUESTED_RANGE_NOT_SATISFIABLEEXPECTATION_FAILED IM_A_TEAPOTMISDIRECTED_REQUESTUNPROCESSABLE_CONTENTUNPROCESSABLE_ENTITYLOCKEDFAILED_DEPENDENCY TOO_EARLYUPGRADE_REQUIREDPRECONDITION_REQUIREDTOO_MANY_REQUESTSREQUEST_HEADER_FIELDS_TOO_LARGEUNAVAILABLE_FOR_LEGAL_REASONSINTERNAL_SERVER_ERRORNOT_IMPLEMENTED BAD_GATEWAYSERVICE_UNAVAILABLEGATEWAY_TIMEOUTHTTP_VERSION_NOT_SUPPORTEDVARIANT_ALSO_NEGOTIATESINSUFFICIENT_STORAGE LOOP_DETECTED NOT_EXTENDEDNETWORK_AUTHENTICATION_REQUIREDrFr7rrCheckedHTTPStatusrV#s; $  * * * * * * * * * *LH#F *J,KABEGCH-Q )PJVMOO.L6 $G @ !< LESI=LTI"< "< L 6 DI1I"A 9N-K )6O:HID6O#4 !( '8 $CL#/ &5 "%0 !/D +"; IK#< $@ !#8 "F 8 (I6 %L !!< /( +-? ) %0 !:O?K#L HO** &&D ##> 0M.L/K +rr)enumIntEnum_test_simple_enumr)rrs rtest_simple_httpstatus BasicTest.test_simple_httpstatus"s*c K c KH 0*=rc[RR5H'nURUS5 UR US5 M) g)z1Checks that the statuses are in the 100-599 ranger^rtN)r __members__valuesassertGreaterEqualassertLessEqual)rmembers rtest_httpstatus_rangeBasicTest.test_httpstatus_ranges=!,,335F  # #FC 0   -6rcSn[RR5HOnUHFuup4n[X%5nX2s=::aU::aO OUR U5 M5UR U5 MH MQ g)z:Checks that the statuses belong to the standard categories)))r^r_r`))rdrerf))rirjrk))rnrorp))rsrtruN)rrrgetattrrO assertFalse)r categoriesrruppercategorycategory_indicators rtest_httpstatus_category"BasicTest.test_httpstatus_categorysg !,,335F,6(%,V%>"+e+OO$67$$%78 -76rcSn[U5n[R"U5nUR5 UR UR S5S5 UR UR55 UR UR5 UR UR 5S5 URUR55 UR UR5 UR5 URUR5 Sn[U5n[R"U5nUR[RUR5 g)NHTTP/1.1 200 Ok TextrrTextzHTTP/1.1 400.100 Not Ok Text) rrrrrrZrisclosedclosedrOr- assertRaises BadStatusLiners rtest_status_linesBasicTest.test_status_liness-$""4(  1s+ ) % g.  ( %   $4$""4( &.. ;rcf[R"S5nUR[U5S5 g)NrzBadStatusLine("''"))rrrrepr)rexcs rtest_bad_status_reprBasicTest.test_bad_status_reprs'""2& c$=>rcSn[U5n[R"U5nUR5 UR UR S5S5 UR UR55 UR UR S5S5 URUR55 UR UR5 UR5 URUR5 gN*HTTP/1.1 200 Ok Content-Length: 4 Textr Text rrrrrrZrrrOrr-rs rtest_partial_readsBasicTest.test_partial_readssB$""4(  1u- ) 1u-  ( %   $rcSn[U5n[R"U5nUR5 UR UR 5S5 UR UR55 UR UR5S5 URUR55 UR UR5 UR5 URUR5 g)Nz4HTTP/1.1 200 Ok Content-Length: 13 Text AnothersText sAnother) rrrrrr_rrrZrOrr-rs rtest_mixed_readsBasicTest.test_mixed_reads sN$""4(  +6 ) j1  ( %   $rcSn[U5n[R"U5nUR5 [ S5nUR U5nUR US5 UR [U5S5 URUR55 UR U5nUR US5 UR [U5S5 URUR55 URUR5 UR5 URUR5 gr rrrr bytearrayreadintorrrrrOrr-rrrrbr\s rtest_partial_readintos BasicTest.test_partial_readintossB$""4( aL MM!  A q5) ) MM!  A q5)  ( %   $rcvSn[U5n[R"U5nUR5 UR UR S5S5 UR UR55 URUR5 UR5 UR UR5 g)Nr r rrrrrrZrOrrrr-rs rtest_partial_reads_past_end%BasicTest.test_partial_reads_past_end-sA$""4(  20  ( %   $rcSn[U5n[R"U5nUR5 [ S5nUR U5nUR US5 UR [U5SSS5 URUR55 URUR5 UR5 URUR5 g)Nrr r) rrrrrrrrrOrrrr-rs rtest_partial_readintos_past_end)BasicTest.test_partial_readintos_past_end9sA$""4( bM MM!  A q"1w/  ( %   $rc8Sn[U5n[R"U5nUR5 UR UR S5S5 UR UR55 UR UR S5S5 UR UR S5S5 URUR55 UR UR5 UR5 URUR5 g)Nrr rrr#rrrs r$test_partial_reads_no_content_length.BasicTest.test_partial_reads_no_content_lengthHs-$""4(  1u- ) 1u- 1s+  ( %   $rc:Sn[U5n[R"U5nUR5 [ S5nUR U5nUR US5 UR [U5S5 URUR55 UR U5nUR US5 UR [U5S5 UR U5nUR US5 URUR55 g)Nrr rrr) rrrrrrrrrrrOrs r(test_partial_readintos_no_content_length2BasicTest.test_partial_readintos_no_content_lengthXs-$""4( aL MM!  A q5) ) MM!  A q5) MM!  A  (rcSn[U5n[R"U5nUR5 UR UR S5S5 UR UR55 UR UR S5S5 UR UR S5S5 URUR55 g)N+HTTP/1.1 200 Ok Content-Length: 10 Textr rrr#r) rrrrrrZrrrOrs r"test_partial_reads_incomplete_body,BasicTest.test_partial_reads_incomplete_bodyksC$""4(  1u- ) 1u- 1s+  (rcSn[U5n[R"U5nUR5 [ S5nUR U5nUR US5 UR [U5S5 URUR55 UR U5nUR US5 UR [U5S5 UR U5nUR US5 URUR55 URUR5 UR5 URUR5 g)Nrr rrrrrs r&test_partial_readintos_incomplete_body0BasicTest.test_partial_readintos_incomplete_bodyxs C$""4( aL MM!  A q5) ) MM!  A q5) MM!  A  ( %   $rc$SH2nUR[R[RU5 M4 SHRupn[R"U5nUR X$R 5 UR X4R 5 MT g)Nzwww.python.org:abczuser:password@www.python.org)z[fe80::207:e9ff:fe9b]:8000fe80::207:e9ff:fe9bi@)zwww.python.org:80www.python.orgP)www.python.org:r%r&)r%r%r&)[fe80::207:e9ff:fe9b]r$r&)[fe80::207:e9ff:fe9b]:r$r&)rr InvalidURLrrrrrhphpcs rtest_host_portBasicTest.test_host_portsvIB   f//1F1F KIPHB1%%b)A   Q '   Q 'PrcSnSn[U5n[R"U5nUR5 UR S5nUR XR5 g)NzHTTP/1.1 200 OK Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme" Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme" No body zrCustomer="WILE_E_COYOTE"; Version="1"; Path="/acme", Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"z Set-Cookie)rrrrrr)rrhdrsr(cookiess rtest_response_headersBasicTest.test_response_headerssRO t     "  ++l+ &rc[S[5n[R"USS9nUR 5 UR 5(aUR S5 gg)N*HTTP/1.1 200 OK Content-Length: 14432 rr)Did not expect response from HEAD request)rrVrrrrZfailrrrs rtest_read_headBasicTest.test_read_headsR    ""47 99;; IIA B rc[S[5n[R"USS9nUR 5 [ S5nUR U5S:waURS5 UR[U5S5 g)Nr9rr:rr;) rrVrrrrrr<rr)rrrrs rtest_readinto_headBasicTest.test_readinto_headsp    ""47 aL == q IIA B q9-rcSRS[[RS-555S-nSU-n[ U5n[R "U5nUR [RSUR5 g)Nr c3,# UH nSU-v M g7f)z Header%d: fooNr7).0is r 2BasicTest.test_too_many_headers..sF'D!.1'Dsr#zHTTP/1.1 200 OK zgot more than \d+ headers) rrr _MAXHEADERSrrr HTTPExceptionr)rrrr4r(s rtest_too_many_headersBasicTest.test_too_many_headerss}++F',V-?-?!-C'DFFHNO%/ t     " v33;QWW FrcSn[[S5n[R"S5n[ U5nXClUR SSU5 URURU5 SSS5 g!,(df  g=f)Ns_GET /foo HTTP/1.1 Host: example.com Accept-Encoding: identity Transfer-Encoding: chunked r)rirr) open__file__rrrrrrrrrrrrs rtest_send_fileBasicTest.test_send_filesf (D !T((7Dd#DI LL -  ! !$))X 6 " ! !s AA33 BcSn[R"S5n[S5nX2lUR U5 UR XR 5 SUlUR [R"SU55 UR XR 5 SUlUR [R"U55 UR XR 5 g)Ns"this is a test this is only a testrirr) rrrrsendrrarrayrDrErs r test_sendBasicTest.test_sends8$$]3$  ( 99-  %++c8,- 99-  "**X&' 99-rc^Sm"U4SjS[R5nSn[R"S5n[ S5nXClUR U"55 URURU5 g)Nc3$# Sv Sv Sv g7f)Nrdata_twor7r7rrr/BasicTest.test_send_updating_file..datasLJ c4>\rSrSrSrY"5rSSjrSrg)7BasicTest.test_send_updating_file..UpdatingFileir(c,[UR5$r6)nextd)r blocksizes rrZ.UpdatingFile.readsDFF|#rr7Nrb)r@rArBrCr.rcrZrF)rsr UpdatingFiler`sDA $rrfsdatarir) rD TextIOBaserrrrrVrr)rrfrrrrs @rtest_send_updating_file!BasicTest.test_send_updating_files_   $2== $ $$]3"~  ,.! H-rcSnSn[R"S5n[S5nXClUR SSU"5SS05 UR UR U5 g) NsbGET /foo HTTP/1.1 Host: example.com Accept-Encoding: identity Content-Length: 11 onetwothreec3$# Sv Sv Sv g7f)Nsonestwosthreer7r7rrr&BasicTest.test_send_iter..body sLLNr^rirrrr11)rrrrrrrrRs rtest_send_iterBasicTest.test_send_iters\&  $$]3"~  UFDF-=t,DE H-rcPSn[R"SUS9n[S5nX2lSU-S-nUR SS[ R "U5S S 05 URURS 5 URRS S 5S nURXT5 g)z8Check that request() respects the configured block size.rirdNabrrr9r  r#) rrrrrrDrErrrr)rrdrrrrs rtest_blocksize_request BasicTest.test_blocksize_requests $$]iH$ )#d* UCH!58H#7NO ++Q/yy{A.q1 (rcSn[R"SUS9n[S5nX2lSU-S-nUR [ R "U55 URURS5 URURU5 g)z5Check that send() respects the configured block size.rqrirrNrsrtr ) rrrrrVrDrErrr)rrdrrrs rtest_blocksize_sendBasicTest.test_blocksize_send"sv $$]iH$ )#d* "**X&' ++Q/ H-rc[R"S5n[S5UlUR [ 5 UR SSU5 SSS5 g!,(df  g=f)Nrirrtest)rrrrr TypeErrorrrs rtest_send_type_errorBasicTest.test_send_type_error-sG$$]3rN   y ) LL .* ) )s A A'cP[n[[[-[-5n[ R "USS9nUR5 URUR5U5 UR5 SHnURSUS9 [[[-[-5n[ R "USS9nUR5 URUR5 URURU5U5 UR5 SSS5 M URS5 [[[-[-5n[ R "USS9nUR5 URUR5 URURS5S5 UR5 SSS5 [S S 5Hn[[[-[-5n[ R "USS9nUR5 URURU5URU5-UR5-U5 UR5 M S Hln[[U-5n[ R "USS9nUR5 UR5 UR!S 5 UR5 Mn g!,(df  GM=f!,(df  GN>=f![ R"ajnURUR$U5 S ['U5-nUR[)U5U5 UR[+U5U5 SnANSnAff=f!UR5 f=f)Nrr:)ircNz full read)r\z read1(-1)rcs hello worlr# rzfoo IncompleteRead expectedIncompleteRead(%d bytes read))chunked_expectedr chunked_start last_chunk chunked_endrrrrrZr-rrOr(read1rr<IncompleteReadpartialrrr)rrrrr\xrHexpected_messages r test_chunkedBasicTest.test_chunked4s#-*4{BC""46  h/ "AkQ/!-*"<{"JK**4>  -  1x8 0/"\\+ &mj8;FGD&&tE:D JJL OODLL )   TZZ^] ; JJL 'q"Amj8;FGD&&tE:D JJL   TYYq\DIIaL8499;F Q JJL !Ama/0D&&tE:D JJL   34 !30/' &,(( ;  H5#BS]#R   a*:;  Q)9::  ; sKBK-:BL7LN- K= LN&A N N NNN%c [n[U5n[S5n[[[ -[ -5n[R"USS9nUR5 URU5nURUSUU5 URXb5 UR5 [SS5Hn[[[ -[ -5n[R"USS9nUR5 [U5nURUSU5nXRXxXh-5- nXRXxS5- nURUSUU5 URX5 UR5 M SHmn [[U -5n[R"USS9nUR5 URU5nURS5 UR5 Mo g![R ajnURUR"U5 S [U5-n UR[%U5U 5 UR['U5U 5 SnANSnAff=f!UR5 f=f) Nrrr:r#rrrrr)rrrrrrrrrrrrr-r memoryviewr<rrrr) rr nexpectedrrrr\mrHrrs rtest_readinto_chunkedBasicTest.test_readinto_chunkedgs#M cN-*4{BC""46 MM!  :I1 & q"Amj8;FGD&&tE:D JJL1 A a!f%A q15z* *A qu% %A   Qz ]H 5   Q * JJL!Ama/0D&&tE:D JJL MM!$ 34 ! (( ;  H5#BS]#R   a*:;  Q)9::  ; s19G0 I10I.A I)$I1)I..I11JcSn[U[-[-5n[R"USS9nUR 5 UR UR5S5 UR URS5 UR URS5 URUR55 URUR5 UR5 URUR5 g)NEHTTP/1.1 200 OK Transfer-Encoding: chunked a hello world 1 d rr:rrdr{)rrrrrrrrZstatusreasonrOrrrr-)rrrrs rtest_chunked_headBasicTest.test_chunked_heads  -*4{BC""47  c* c* d+  ( %   $rcPSn[U[-[-5n[R"USS9nUR 5 [ S5nURU5nURUS5 UR[U5S5 URURS5 URURS5 URUR55 URUR5 UR!5 URUR5 g) Nrrr:rArrBrdr{)rrrrrrrrrrrrrOrrrr-)rrrrrr\s rtest_readinto_chunked_head$BasicTest.test_readinto_chunked_heads  -*4{BC""47 aL MM!  A q9- c* d+  ( %   $rc[S5n[R"USS9nUR5 UR UR 5S5 UR UR55 g)Nz.HTTP/1.1 200 OK Content-Length: -1 Hello rr:Hello )rrrrrrZrOrr=s rtest_negative_content_length&BasicTest.test_negative_content_lengthsS DF""46  l3  (rc[S5n[R"USS9nUR5 UR 5 UR S5 g![R a{nURURS5 UR[U5S5 UR[U5S5 URUR55 SnAgSnAff=f)Nz.HTTP/1.1 200 OK Content-Length: 10 Hello rr:rrz-IncompleteRead(7 bytes read, 3 more expected)) rrrrrZr<rrrrrrOr)rrrrHs rtest_incomplete_readBasicTest.test_incomplete_readsRS""46  1 IIK II/ 0$$ -   QYY 5   T!WL N   SVL N OODMMO , ,  -sAC#(A1CC#c&^[SS5n[R"S5mUTlUR [ U4Sj5 TR 5nURSUR5 URSURS55 g)NzgHTTP/1.0 401 Authorization Required Content-type: text/html WWW-Authenticate: Basic realm="example" sContent-Lengthric*>TRSSS5$)Nr/urlr)r)rsr&BasicTest.test_epipe..s$,,uff"ErrzBasic realm="example"zwww-authenticate) rHrrrrrO getresponserrr)rrrrs @r test_epipeBasicTest.test_epipes <   $$]3  'E G! dkk* 2(:; =rcSSS--S-n[R"[U55nUR[R[R 4UR 5 g)NHTTP/1.1 200 Okr.r )rrrr LineTooLongrrrrrs rtest_overflowing_status_line&BasicTest.test_overflowing_status_linesO 3;.7"":d#34 6--v/C/CDdjjQrcSSS--S-n[R"[U55nUR[RUR 5 g)NzHTTP/1.1 200 OK X-Foo: barr(r )rrrrrrrs rtest_overflowing_header_line&BasicTest.test_overflowing_header_linesQ ; ')3 4 "":d#34 &,,djj9rcrSS-n[R"[U55nUR[R5nUR 5 SSS5 UR S[WR55 UR S[UR55 g!,(df  NY=f)NzHTTP/1.1 100 OK r izgot more than r) rrrrrLrrr exception)rrrcms r'test_overflowing_header_limit_after_1001BasicTest.test_overflowing_header_limit_after_100s   "":d#34   v33 4 JJL5 &BLL(9: iR\\!23 5 4s B(( B6cSSS--S-n[R"[U55nUR5 UR [R UR 5 g)Nz/HTTP/1.1 200 OK Transfer-Encoding: chunked r rza hello world 0 )rrrrrrrZrs rtest_overflowing_chunked_line'BasicTest.test_overflowing_chunked_lines\ 1Ek   "":d#34  &,,dii8rctSn[U5n[R"U5nUR5 UR UR 5S5 UR UR55 URUR5 UR5 UR UR5 g)Nrrr rs rtest_early_eofBasicTest.test_early_eof s} $""4(  c*  ( %   $rc^[R"S5nSm"U4SjS[R5nX!l[ S5UlUR SS5 UR[RUR5 URTR5 URUR R5 g)Nric">\rSrSrU4SjrSrg)+BasicTest.test_error_leak..ResponseicR>Um[RR"U/UQ70UD6 gr6)rrr )rrvrwresponses rr 4BasicTest.test_error_leak..Response.__init__s&##,,T>C>2>rr7N)r@rArBrCr rF)rsrResponsers  ? ?rrzInvalid status linerr) rrrresponse_classrrrrrrrOrr)rrrrs @rtest_error_leakBasicTest.test_error_leaks$$]3 ?v** ? '45  UC  &..0@0@A (  --.rcSn[S-n[[U-[-[-5n[ R "USS9nUR5 URUR5U5 UR5 g)Nz3;foo=bar abc sabcrr:) rrrlast_chunk_extendedrrrrrrZr-)rextrarrrs rtest_chunked_extension BasicTest.test_chunked_extension)se+#f,-%/2EE ST""46  h/ rc[n[[[-5n[R "USS9nUR 5 URUR5U5 UR5 g)z9some servers may serve up a short chunked encoding streamrr:N) rrrrrrrrrZr-rrrrs rtest_chunked_missing_end"BasicTest.test_chunked_missing_end3sP#-*45""46  h/ rcV[n[[[-[-[ -5n[ R"USS9nUR5 URUR5U5 URURR5S5 UR5 g)z&See that trailers are read and ignoredrr:rN) rrrrrErrrrrrZr+r-rs rtest_chunked_trailersBasicTest.test_chunked_trailers<su#-*4x?+MN""46  h/ )3/ rc~[nSn[[[-[-[ -U-5n[ R"USS9nUR5 URUR5U5 URURR5URS55 UR5 g)zDCheck that we don't read past the end of the chunked-encoding stream extradatarr:rN)rrrrrErrrrrrZr+rr-)rrrrrs rtest_chunked_syncBasicTest.test_chunked_syncGs# -*4x?+MPYYZ""46  h/ )9+;+;G+DE rc,SnSn[SU-U-5n[R"USS9nUR5 UR UR 5U5 UR UR R 5U5 UR5 g)zBCheck that we don't read past the end of the Content-Length stream extradata Hello123 'HTTP/1.1 200 OK Content-Length: 10 rr:N)rrrrrrZr+r-rrrrrs rtest_content_length_sync"BasicTest.test_content_length_syncSsw "JXUXaab""46  h/ )95 rc0SnSn[SU-U-5n[R"USS9nUR5 UR UR S5U/5 UR UR R5U5 UR5 gNrrrrr:i) rrrrr readlinesr+rZr-rs rtest_readlines_content_length'BasicTest.test_readlines_content_length_s| "JXUXaab""46  -z: )95 rc.SnSn[SU-U-5n[R"USS9nUR5 UR UR S5U5 UR UR R5U5 UR5 gr) rrrrrrr+rZr-rs rtest_read1_content_length#BasicTest.test_read1_content_lengthjsz "JXUXaab""46  D)84 )95 rcpSnSn[SU-U-5n[R"USS9nUR5 UR UR S5U5 UR UR S5S5 UR UR R5U5 UR5 g)Nrrrrr:r r) rrrrrr_r+rZr-rs r"test_readline_bound_content_length,BasicTest.test_readline_bound_content_lengthus "JXUXaab""46  r*H5 r*C0 )95 rczSnSn[SUS--U-5n[R"USS9nUR5 UR UR S5US-5 UR UR 5U5 UR URR 5U5 UR5 g) Nrrs'HTTP/1.1 200 OK Content-Length: 30 r rr:r ) rrrrrrrZr+r-rs rtest_read1_bound_content_length)BasicTest.test_read1_bound_content_lengths "JXVWZWZccd""46  B!4 h/ )95 rcx^^[R"[S45mURTR5 SmUU4Sjn[ R "US9nUR5 URUR[S55 [R"TR56nURSS5 UR5nURUR [R"5 [R"UR%5S9nUR'S5 UR)5 UR 5 UR 5 UR5 URTS5 g!UR)5 f=f!UR 5 UR 5 f=f) NrcN>TR5upU URS5nUR5nURS5(dOM)UR S5 UR 5mSSS5 SSS5 g!,(df  N=f!,(df  g=f)Nr)r?s'HTTP/1.1 200 Connection established )acceptr0r_rstripr%rZ)raddressreaderr<resultservs r run_server2BasicTest.test_response_fileno..run_serversu"kkmOTt}}T*f!??,D;;w// KL+**s#BA B4B B B B$)targetr#rz dummy:1234)filenos proxied data )socket create_serverHOST addCleanupr- threadingThreadstartrfloatrr getsocknamerrrrr{rr%detach)rrthreadrrr4rrs @@rtest_response_filenoBasicTest.test_response_filenos2##T1I.  # '!!4   U1X.$$d&6&6&89 Y -##%    X__fii 8 X__%67A  +, NN  JJL  !23  NN  JJLs%A FF.FFF"F9c"SS[R5nU"S5n[S5UlUR SS5 g)z^ It should be possible to override the default validation behavior in putrequest (bpo-38216). c\rSrSrSrSrg)RBasicTest.test_putrequest_override_domain_validation..UnsafeHTTPConnectionicgr6r7rrs r_validate_pathaBasicTest.test_putrequest_override_domain_validation..UnsafeHTTPConnection._validate_pathrr7N)r@rArBrCrrFr7rrUnsafeHTTPConnectionr rrrirrz/Nrrrrrrrrs r*test_putrequest_override_domain_validation4BasicTest.test_putrequest_override_domain_validations9  6#8#8 $M2rN  w'rc"SS[R5nU"S5n[S5UlUR SSSS9 g) Nc\rSrSrSrSrg)PBasicTest.test_putrequest_override_host_validation..UnsafeHTTPConnectionicgr6r7rs r_validate_host_BasicTest.test_putrequest_override_host_validation..UnsafeHTTPConnection._validate_hostrrr7N)r@rArBrCr rFr7rrrrrrrz example.com rrrr#) skip_hostrrs r(test_putrequest_override_host_validation2BasicTest.test_putrequest_override_host_validations@ 6#8#8 $$56rN  sa0rc"SS[R5nU"S5n[S5UlUR SS5 g)z{ It should be possible to override the default encoding to transmit bytes in another encoding even if invalid (bpo-36274). c\rSrSrSrSrg)IBasicTest.test_putrequest_override_encoding..UnsafeHTTPConnectionic$URS5$)Nutf-8)r)rstr_urls r_encode_requestYBasicTest.test_putrequest_override_encoding..UnsafeHTTPConnection._encode_requests~~g..rr7N)r@rArBrCr+rFr7rrrr's /rrrirru/☃Nrrs r!test_putrequest_override_encoding+BasicTest.test_putrequest_override_encodings9  /6#8#8 /$M2rN  v&rr7N):r@rArBrCrRrrrrrrrr rrrrrrr0r6r>rCrMrSrXrhrnrwrzrrrrrrrrrrrrrrrrrrrrrrrr rr#r-rFr7rrrJrJsae>N.9$<*? % %%( % %% )& )%,("'$ C .F 7 ..*. ) ./1f)V%(%.)1 ="R : 4 9 %/        #4J ( 1 'rrJc\rSrSrSrSr\\R S5SRS5rSr Sr S r S r S r SS jrS rSrSrSrSrSrg)ExtendedReadTestiz" Test peek(), read1(), readline() zOHTTP/1.1 200 OK hello world! and now for something completely different foohelloNrHTTP/1.1 200 OK Transfer-Encoding: chunked a hello worl 3 d! 9 and now 23 for something completely different 3 foo 0 c[UR5n[R"USS9nUR 5 [ R "UR5UlX lg)Nrr:) rrrrrrDBufferedReaderfprr=s rsetUpExtendedReadTest.setUpsF$**%""46 ##DGG, rc^URnURRmSU4SjjnX!Rl/nURS5nU(aUR[ U5S5 UR5nUR [ U5[ U55 UR XT5 UR[ U55nURXe5 O!UR5nURU5 URU5 U(dOMURSRU5UR5 g)Nc4>T"U5nUS:aUSU$USS$)Nrr r7)r\r.oldpeeks rmypeek*ExtendedReadTest.test_peek..mypeeks) AAv!u Sb6Mrr rrrb) rr5peek assertGreaterrrrrZrrrrlines_expected)rrr;allr.p2rbr:s @r test_peekExtendedReadTest.test_peeksyy'',,    ! A""3q61-YY[''BQ8%%b,yyR)  *yy{  & JJt !" #(;(;TRS5nTR[U5S5 U$)Nr)rrr)resrrs rr(&ExtendedReadTest.test_read1..r6s)**Q-C  S1 -Jr)r ReadlinerrEr_r?)rr( readlinerrs` @r test_read1ExtendedReadTest.test_read14s8yy aL  i00$2E2EFrc URn/nUR5nU(dOURU5 M+URSR U5UR 5 UR UR55 gNr)rrrrrr?rOrrrr@rs rtest_read1_unbounded%ExtendedReadTest.test_read1_unbounded=sgyy::D  TB / JJt   #(;(;<  (rcURURRS5S5 URURR 55 g)Nrr)rrrrrr3s r test_read1_0ExtendedReadTest.test_read1_0Ts: +S1 ++-.rcpURRS5nURS[U55 gNr)rr=rr)rr.s r test_peek_0ExtendedReadTest.test_peek_0Xs( IINN1  QA'rr)rA)r@rArBrCrdrfindrr? lines_chunkedr6rBrFrJrErVr[r^rarerFr7rrr0r0ss  5::g./077@N "=>GQ .G ) )/(rr0cv\rSrSr\R R SS5urr\S\ "\5S3-\-rSr g)"ExtendedReadTestContentLengthKnowni]rr#z Content-Length: r7N) r@rArBrCr0rr_header_bodyrrFr7rrrkrk]s;%++11*a@NGU ,SZLA AE IErrkc\rSrSrSrSrSrg)ExtendedReadTestChunkedibz2 Test peek(), read1(), readline() in chunked mode r2r7N)r@rArBrCrdrrFr7rrrorobs  rroc$\rSrSrSrSrSrSrg)rTixzL a simple readline class that uses an arbitrary read function and buffering cXlSUlgrYreadfunc remainder)rrss rr Readliner.__init__|s rc/nSnURnURS5nUS:waOFU[U5-U:aX- S- nURU5 UR 5nU(dSnOM^US- nURUSU5 XESUlSR U5$! SR U5Ule=f)NrrNrcr#r)rtrhrrrsr)rrIrdatalenrZr;s rr_Readliner.readlines~~ ii&"9SY&%//A-C D!}}C 1HC KKTc #!$ZDN88D> !  XXd^DN s BB$$B=rrN)r@rArBrCrdr r_rFr7rrrTrTxsrrTc&\rSrSrSrSrSrSrg) OfflineTestic S1nSS1n[[5HTnURS5(dX2;aM [[U5n[USS5S:XdMCUR U5 MV UR [R U5 g)N responses HTTPMessage parse_headersr#rAz http.client)rQr startswithraddassertCountEqual__all__)rrdenylistr module_objects rtest_allOfflineTest.test_allsy="?3KDs##t'7#FD1M}lD9]J T"  fnnh7rcfUR[R[RS5 g)Nr)rrr|rr3s rtest_responsesOfflineTest.test_responsess# ))&*:*:;[Irc/SQnUH1nURUS9 UR[U5 SSS5 M3 g!,(df  ME=f)N)>rrrr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)constant)r assertHasAttrr)rrconsts rtest_client_constants!OfflineTest.test_client_constantssC? @Eu-""651.---s = A r7N)r@rArBrCrrrrFr7rrrzrzs 8JD2rrzcp\rSrSrSrSrSr\R"\ "\ S5(+S5S5r Sr g ) SourceAddressTestic4[R"[R[R5Ul[R "UR5Ul[R"5UlURR5 SUl gr6) rAF_INET SOCK_STREAMrr bind_portrfind_unused_port source_portlistenrr3s rr6SourceAddressTest.setUps\MM&..&2D2DE !++DII6 (99;  rcUR(a!URR5 SUlURR5 SUlgr6)rr-rr3s rtearDownSourceAddressTest.tearDowns3 99 IIOO DI  rc$[R"[URSUR4S9UlUR R 5 URUR RR5SUR5 g)Nrsource_addressr#) rrrrrrrsrrr r3s rtestHTTPConnectionSourceAddress1SourceAddressTest.testHTTPConnectionSourceAddresssf))$ "D$4$457   335a8$:J:JKrHTTPSConnectionz'http.client.HTTPSConnection not definedcn[R"[URSUR4S9Ulg)Nrr)rrrrrrr3s r testHTTPSConnectionSourceAddress2SourceAddressTest.testHTTPSConnectionSourceAddresss,**4 "D$4$457 r)rrrrN) r@rArBrCr6rrunittestskipIfhasattrrrrFr7rrrrsAL __):;;>@7@7rrc*\rSrSrSrSrSrSrSrg) TimeoutTestiNc[R"[R[R5Ul[R "UR5[ lURR5 gr6) rrrrrrrPORTrr3s rr6TimeoutTest.setUpsEMM&..&2D2DE (22499=  rcFURR5 SUlgr6)rr-r3s rrTimeoutTest.tearDowns  rcbUR[R"55 [R"S5 [R "[ [R5nUR5 [R"S5 URURR5S5 UR5 UR[R"55 [R"S5 [R "[ [RSS9nUR5 [R"S5 URURR5S5 UR5 [R "[ [RSS9nUR5 URURR5S5 UR5 g![R"S5 f=f![R"S5 f=fN)timeout) assertIsNonergetdefaulttimeoutsetdefaulttimeoutrrrrrrsrr gettimeoutr-)rhttpConns rtestTimeoutAttribute TimeoutTest.testTimeoutAttributes &2245  $ +,,T;3C3CDH      $ $T * 113R8 &2245  $ +,,T;3C3C6:  !1!115 U$9:  !1!111E#>=',('>=s%AE54D5)A>E5 E ?E E cSn[R[R4U[44nUHup4UR US9 [ SU5nURSS5 URXER5 URUR5 URSS5 URURS5 SSS5 M g!,(df  M=f)Ncv^[R"U5mU4SjnUTl[R"T5$)z3Return BufferedReader that raises ECONNRESET at EOFch>[RRTU5nUS:Xa [5eU$rd)rDrErConnectionResetError)bufferrFstreams rrNPersistenceTest.test_disconnected..make_reset_reader..readintoes.zz**66:19.00 r)rDrErr4)rrrs @rmake_reset_reader.make_reset_readerbs0ZZ%F  'FO$$V, ,r)rrrz /eof-response /reconnectr )rDrErRemoteDisconnectedrrrfrrrrrrrj)rrrstream_factoryrrs rtest_disconnected!PersistenceTest.test_disconnected`s -ZZ22 3  4 5 */ %N 2/^D UO4!!)-=-=>!!$)), UL1  !1!11532*/22s BC C! c&[S5nURSSSS0S9 UR[RUR 5 UR UR5 URSS5 URURS5 g) NsHTTP/1.1 100 Continue rrExpectz 100-continuerrr ) rfrrrrrrrrrjrs rtest_100_closePersistenceTest.test_100_close{s|'   UC(N)C D &33T5E5EF $))$ UL) ))1-rr7N)r@rArBrCrrrrFr7rrrr@sF<66 .rrc\rSrSrSrSrSrSrSr\ RS5r Sr \ R"S 5S 5rS rS rS r\R&"\"\S5(+S5S5rSrSrg) HTTPSTesticR[[S5(dURS5 gg)Nrzssl support required)rrskipTestr3s rr6HTTPSTest.setUps"v011 MM0 12rcSSKJn U"XS9$)Nr)make_https_server)certfile)test.ssl_serversr)rrrs r make_serverHTTPSTest.make_servers6 99rc[R"[[RSS9nUR UR S5 gr)rrrrrrr)rr-s rtest_attributesHTTPSTest.test_attributess0  " "4)9)92 F B'rcSSKn[R"S5 [R"S5 [ R "SS5nURUR5nURSS5 SSS5 URWRRS5 SSS5 g!,(df  N==f!,(df  g=f)Nrnetworkself-signed.pythontest.netrrCERTIFICATE_VERIFY_FAILED) sslrrequiresrtransient_internetrrrSSLErrorrrrr)rrr-exc_infos rtest_networkedHTTPSTest.test_networkeds#  - -.J K&&'CSIA""3<<0H %%1   X//668S T L K00L Ks#3B?$B.7.B?. B< 8B?? C cSSKn[R"S5 [R"S5 UR 5n[ R"SSUS9nURSS5 UR5nUR5 URSURS 55 UR5 SSS5 g!,(df  g=f) Nrrrrcontextrrnginxserver) rrrrr_create_unverified_contextrrrrr-rr)rrrr-rs rtest_networked_noverification'HTTPSTest.test_networked_noverifications#  - -.J K446G&&'CS/68A IIeS !==?D GGI MM'4>>(#; < JJLL K Ks B C Cc[R"S5 [R"S5 [R "SS5nUR SS5 UR5nURS5nUR5 UR5 URSU5 SSS5 g!,(df  g=f)Nrr%rrrz content-typez text/html) rrrrrrrrrr-r)rr-r content_types r&test_networked_trusted_by_default_cert0HTTPSTest.test_networked_trusted_by_default_certs #  - -.> ?&&'7=A IIeS !==?D>>.9L JJL GGI MM+| 4@ ? ?s A=B33 Cc 2SSKn[R"S5 Sn[R"U5 UR UR 5nURURUR5 URURS5 UR[5 [R"USUS9nURSS5 UR!5nUR/S 5nUR15 UR15 UR3SU5 SSS5 g!UR"aJn[%U5n[&R("S U5(a[*R,"S US US 35eeSnAff=f!,(df  g=f)NrrrTrrrrz(?i)key.too.weakzGot z trying to connect to z). See https://bugs.python.org/issue36816.rr)rrrrr SSLContextPROTOCOL_TLS_CLIENTr verify_mode CERT_REQUIREDcheck_hostnameload_verify_locations CERT_selfsigned_pythontestdotnetrrrrrrresearchrSkipTestrr-r) rrselfsigned_pythontestdotnetrr-rssl_err ssl_err_str server_strings rtest_networked_good_cert"HTTPSTest.test_networked_good_certsa#&B#  - -.I JnnS%<%<=G   W00#2C2C D   W33T :  ) )*J K **+F3:< %%}}!NN84M JJL GGI MM'= 15K J<< !'l 990+>>"++{m,9:;BBCC K Js2A3F'8D+AF+F;AFFF FwalltimecSSKn[R"S5 [R"S5 UR UR 5nUR[5 [R"SSUS9nURUR5nURSS5 SSS5 URWRR S5 SSS5 g!,(df  N==f!,(df  g=f) Nrrrrrrrr)rrrrrrrrCERT_localhostrrrrrrrr)rrrr-rs rtest_networked_bad_cert!HTTPSTest.test_networked_bad_certs #  - -.J KnnS%<%<=G  ) ). 9&&'CSRYZA""3<<0H %%1   X//668S T L K10 L Ks$A"C.C&.C. C+ 'C.. C<cRSSKnUR[5n[R"SUR 5nUR UR5nURSS5 SSS5 URWRRS5 g!,(df  N5=f)Nr localhostrrr) rrrrrrrrrrrr)rrrr-rs rtest_local_unknown_cert!HTTPSTest.test_local_unknown_certsx!!.1  " "; <   s|| , IIeS !- ++224OP- ,s B B&cSSKnUR[5nURUR5nUR [5 [ R"SURUS9nURUR5 URSS5 UR5nURUR5 URURS5 g)Nrrrr /nonexistentrN)rrrrrrrrrrr-rrrrrrrrr-rs rtest_local_good_hostname"HTTPSTest.test_local_good_hostnames!!.1..!8!89%%n5  " "; W M   %(}}  # c*rcJSSKnUR[5nURUR5nUR [5 [ R"SURUS9nURUR5 URSS5 SSS5 SUl [ R"SURUS9nURUR5 URSS5 SSS5 SUl [ R"SURUS9nURSS5 UR5nUR5 UR5 URUR S 5 g!,(df  N=f!,(df  N=f) NrrrrrTFrrN)rrCERT_fakehostnamerrrrrrrCertificateErrorrrrr-rrrs rtest_local_bad_hostname!HTTPSTest.test_local_bad_hostnames4!!"34..!8!89%%&78  " "; W M   s33 4 IIeS !5"&  " "; W M   s33 4 IIeS !5"'  " "; W M %(}}    c*!5 4 5 4sF"F F F"rz)http.client.HTTPSConnection not availablec$SH2nUR[R[RU5 M4 SHRupn[R"U5nUR X$R 5 UR X4R 5 MT g)Nr")r#)zwww.python.org:443r%r)r'r%r)r%r%r)r(r$r)r)r$r)rrr*rrrrr+s rr0HTTPSTest.test_host_portst IB   f//1G1G LI#HB1&&r*A   Q '   Q '#rcSSKnUR(dURS5 [R"SS5nUR UR R5 URUR5nURUR5 [R"SSUS9nURUR U5 URUR R5 URUR[S9nSUl[R"SSUS9nUR UR R5 g)NrzTLS 1.3 support requiredrrr) cert_fileT) r HAS_TLSv1_3rrrrO_contextpost_handshake_authrrrassertIsr)rrr-rs rtest_tls13_phaHTTPSTest.test_tls13_pha-s MM4 5  " "; 4  667..!8!89 445  " ";W E ajj'* 778..!8!8N.S&*#  " ";W E  667rr7N)r@rArBrCr6rrrrrsystem_must_validate_certrr requires_resourcerrrr rrrrr0r*rFr7rrrrs2:( U  && 5' 52B z* U+ UQ ++2__):;;@B(B($8rrcN\rSrSrSrSrSrSrSrSr Sr S r S r S r S rg )RequestBodyTestiAz3Test cases where a request includes a message body.c[R"S5Ul[S5=URlUlURURlg)Nrir)rrrrrr3s rr6RequestBodyTest.setUpDs9))-8 %/^3  rc[R"URR5nUR 5 [ R "U5nX!4$r6)rDrErrr_rr~rfmessages rget_headers_and_fp"RequestBodyTest.get_headers_and_fpIs9 JJtyy~~ & &&q)zrc"SS/S4S4nUHup#URU5 [R"S5Ul[ S5=URlUlURR SSU5 UR5upEURS U5 URS U5 URURS 5S 5 URX5R55 SSS5 M g!,(df  GM=f) NrMbar3 foo 3 bar 0 ))rMr9r:rirrrz Content-Typerr'r() rrrrrrrr6r+rgetrZ)rrrrrr4s rtest_list_bodyRequestBodyTest.test_list_bodyOs f C D D $NDd#"11-@ -7^;  !!%6002  5  !137  )> D cURRSSSSS05 UR5upURSUR S55 URS[ UR 555 g)Nrrrr42r)r)rrr6rr;rrZrr5r4s rtest_manual_content_length*RequestBodyTest.test_manual_content_lengthcsh %+T2 4,,.  w{{+;<= CM*rcbURRSSS5 UR5upURSUR 55 UR UR 55 URSURS55 URSUR55 g)Nrrr text/plain4r)sbody rrr6rget_content_typer get_charsetr;rZr@s rtest_ascii_bodyRequestBodyTest.test_ascii_bodyls %0,,.  w'?'?'AB '--/0 gkk*:;< !&&(+rcbURRSSS5 UR5upURSUR 55 UR UR 55 URSURS55 URSUR55 g)NrrubodyÁrD5r)bodyrFr@s rtest_latin1_body RequestBodyTest.test_latin1_bodyts %4,,.  w'?'?'AB '--/0 gkk*:;< affh/rcbURRSSS5 UR5upURSUR 55 UR UR 55 URSURS55 URSUR55 g)NrrrMrDrLr)rFr@s rtest_bytes_bodyRequestBodyTest.test_bytes_body|s %5,,.  w'?'?'AB '--/0 gkk*:;< affh/rcUR[R[R5 [ [RSSS9nUR S5 SSS5 [ [RSS9nUR RSSU5 UR5up!URSUR55 URUR55 URURS55 URS URS 55 URS UR55 SSS5 g!,(df  N=f!,(df  g=f) Nwr))encodingrrrrDr)r(ztransfer-encodings4 body 0 )rrunlinkTESTFNrPwriterrr6rrGrrHr;rZr3s rtest_text_file_body#RequestBodyTest.test_text_file_bodys   (()*:*:; )""C' :a GGFO; )""W 5 II  eVQ /002JG   \7+C+C+E F   g113 4   gkk*:; <   Y 4G(H I   6 A6 5; : 5 5sE:CE$ E!$ E2cUR[R[R5 [ [RS5nUR S5 SSS5 [ [RS5nUR RSSU5 UR5up!URSUR55 URUR55 URSURS55 URS U5 URS UR55 SSS5 g!,(df  N=f!,(df  g=f) NwbrMr)rrrDr(r'rs5 body 0 )rrrVrWrPrXrrr6rrGrrHr;r+rZr3s rtest_binary_file_body%RequestBodyTest.test_binary_file_bodys  (()*:*:; )""D )Q GGK * )""D )Q II  eVQ /002JG   \7+C+C+E F   g113 4   Y 4G(H I   -w 7   :AFFH E* )* ) ) )s E=CE E E')rrN)r@rArBrCrdr6r6r<rArIrNrQrYr]rFr7rrr/r/As4=#  5(+,00 B Frr/c8\rSrSrSrSrSrSrSrSr Sr g ) HTTPResponseTesticSn[U5n[R"U5UlURR 5 g)NzXHTTP/1.1 200 Ok My-Header: first-value My-Header: second-value Text)rrrrr)rrrs rr6HTTPResponseTest.setUps3*$''-  rcURRS5nURUS5 URRSS5nURUS5 g)Nz My-Headerzfirst-value, second-valuez some defaultrrrrrs rtest_getting_header$HTTPResponseTest.test_getting_headersN$$[1 !<=$$[.A !<=rc`URRSS5nURUS5 g)NNo-Such-Headerz default-valuerdres r3test_getting_nonexistent_header_with_string_defaultDHTTPResponseTest.test_getting_nonexistent_header_with_string_defaults)$$%5G 1rcURRSSS/5nURUS5 URRSS5nURUS5 g)Nridefaultrzdefault, values)rmrrdres r5test_getting_nonexistent_header_with_iterable_defaultFHTTPResponseTest.test_getting_nonexistent_header_with_iterable_defaultsX$$%5 87LM !23$$%57LM !23rc^URRS5nURUS5 g)Nrirdres r/test_getting_nonexistent_header_without_default@HTTPResponseTest.test_getting_nonexistent_header_without_defaults'$$%56 &rc\URRSSS9nURUS5 g)Nrir)rmrdres rtest_getting_header_defaultint/HTTPResponseTest.test_getting_header_defaultints,$$%5b$A $rrgN) r@rArBrCr6rfrjrnrqrtrFr7rrr`r`s >24'%rr`c\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrSrSrSrSrg) TunnelTestsicSnSUl[RUl[R"UR5UlUR U5UR lg)Nz:HTTP/1.1 200 OK HTTP/1.1 200 OK Content-Length: 42 z proxy.com)rr HTTP_PORTrrrrn)r response_texts rr6TunnelTests.setUpsO )    $$ ))$))4 '+'>'>}'M $rc8URR5 gr6)rr-r3s rrTunnelTests.tearDowns rc^SU4SjjnU$)Nc&>[TUSUSS9$)Nrr#rrr)rrrrzs rrm9TunnelTests._create_connection..create_connectionsm'!*71:N NrNNr7)rrzrms ` rrnTunnelTests._create_connections O  rcSnSnSS0nUR5nSX4-US'URRXUS9 URRSS S 5 UR URR R UR 5 UR URR RUR5 UR URRU5 UR URRU5 UR URRU5 g) Ndestination.com" User-Agent!Mozilla/5.0 (compatible, MSIE 11)%s:%drrrrrr) copyr set_tunnelrrrrr _tunnel_host _tunnel_port_tunnel_headers)r tunnel_host tunnel_porttunnel_headerstunnel_headers_afters r2test_set_tunnel_host_port_headers_add_host_missing>TunnelTests.test_set_tunnel_host_port_headers_add_host_missings'  &(KL-224'.+1K'KV$ [%3  5 &#r* ,,dii8 ,,dii8 //= //= 224HIrcXSnSnSSX4-S.nURRXUS9 URRSSS 5 URURRR UR 5 URURRR UR 5 URURRU5 URURRU5 URURRU5 g) Nrrrrrrrrrr rrrrrrrrrrrrrrs r4test_set_tunnel_host_port_headers_set_host_identical@TunnelTests.test_set_tunnel_host_port_headers_set_host_identicals'  (K")[,F"FH [%3  5 &#r* ,,dii8 ,,dii8 //= //= 22NCrcVSnSnSSS-S.nURRXUS9 URRSS S 5 URURRR UR 5 URURRR UR 5 URURRU5 URURRU5 URURRU5 g) Nrrrr)riihrrrrrrrs r4test_set_tunnel_host_port_headers_set_host_different@TunnelTests.test_set_tunnel_host_port_headers_set_host_differents'  (K"),A"AC [%3  5 &#r* ,,dii8 ,,dii8 //= //= 22NCrcURR5 UR[URRS5 g)Nr)rrsr RuntimeErrorrr3s r&test_disallow_set_tunnel_after_connect2TunnelTests.test_disallow_set_tunnel_after_connect s1  , (<(<+ -rcrS[RS.nURRUSR S55 URR SSS5 UR URRRUR5 UR URRRUR5 URSU-URRR5 URS U-URRR5 g Ndestination.comhostportrrrrr?CONNECT %(host)s:%(port)d HTTP/1.1 Host: %(host)s:%(port)d !HEAD / HTTP/1.1 Host: %(host)s rryrrrrrrrrrrrrcs rtest_connect_with_tunnel$TunnelTests.test_connect_with_tunnel '%%  QwZ..w78 &#r* ,,dii8 ,,dii8 9;<=iinn)) + >Biinn)) +rcvS[RS.nURRUSR S5USS9 URR SSS 5 UR URRRUR5 UR URRRUR5 URS U-URRR5 URS U-URRR5 g) Nrrrrrrrrrrrrrs r*test_connect_with_tunnel_with_default_port6TunnelTests.test_connect_with_tunnel_with_default_port s'%%  QwZ..w7ajI &#r* ,,dii8 ,,dii8 9;<=iinn)) + >Biinn)) +rcZSSS.nURRUSRS5USS9 URRSS S 5 UR URR R UR 5 UR URR RUR5 URS U-URR R5 URS U-URR R5 g) Nrrrrrrrrrrrs*HEAD / HTTP/1.1 Host: %(host)s:%(port)d ) rrrrrrrrrrrs r.test_connect_with_tunnel_with_nonstandard_port:TunnelTests.test_connect_with_tunnel_with_nonstandard_port' s'  QwZ..w7ajI &#r* ,,dii8 ,,dii8 9;<=iinn)) + G!Kiinn)) +rcSS[RS.nURRUSR S5SUSR S50S9 URR S S S 5 UR URRRUR5 UR URRRUR5 URS U-URRR5 URS U-URRR5 g)Nrsexample.com:9876)rtunnel_host_headerrrrrrrrrrsDCONNECT %(host)s:%(port)d HTTP/1.1 HOST: %(tunnel_host_header)s rrrs r3test_connect_with_tunnel_with_different_host_header?TunnelTests.test_connect_with_tunnel_with_different_host_header9 s '#6%%   gJ  g &Q45<@ABiinn)) + >Biinn)) +rcrS[RS.nURRUSR S55 URR SSS5 UR URRRUR5 UR URRRUR5 URSU-URRR5 URS U-URRR5 grrrs r'test_connect_with_tunnel_different_host3TunnelTests.test_connect_with_tunnel_different_hostK rrcSnSURS5[R4-nSX"4-nURR U5 URR SSS5 UR URRRUR5 UR URRR[R5 URX0RRR5 g)Nu δπθ.grs%s:%didnas!CONNECT %s HTTP/1.1 Host: %s rrr) rrryrrrrrrrrr)rdest dest_portrs rtest_connect_with_tunnel_idna)TunnelTests.test_connect_with_tunnel_idnaZ s& F 3V5E5EFF = A"" T" &#r* ,,dii8 ,,f.>.>? h  3 34rc([RRURS5nURR S5 URR 5 URR SS5 SSS5 WR5 UR[UR5SSUR3S9 URS SS nURS U5 URUS S U<3S9 g!,(df  N=f) z8Regresstion test for https://bugs.python.org/issue43332.rVrrrNr#z!unexpected number of send calls: )rrsCONNECT destination.comrvzunexpected proxy data sent ) rpatchobjectrrrsr assert_calledr>r mock_callsrr)r mock_sendproxy_setup_data_sents r0test_tunnel_connect_single_send_connection_setup.>? 0$))..2E2EF . 0C0CDrc$URRS5 URRSSS5 URURRR UR 5 URURRR [R5 URSURRR5 URSURRR5 g)Nz[1:2:3::4]:1234rrrrrrr3s r"test_connect_put_request_ipv6_port.TunnelTests.test_connect_put_request_ipv6_port s ./ %b) ,,dii8 ,,f.>.>? 0$))..2E2EF . 0C0CDrcSnSRU5nURRS5 URU5URlURR S5 [ R "5nURRSSS5 SSS5 WR5R5nURSRU5U5 g!,(df  NN=f) Nz X-Dummy: 1zHTTP/1.0 200 OK {} r#rrrrz header: {}) rrset_debuglevelrnrrr rr r r)rexpected_headerrzrrs rtest_tunnel_debuglog TunnelTests.test_tunnel_debuglog s&7>>O    #'+'>'>}'M $ ./  $ $ && II  eS" -'!,,. l))/:EB' &s ?C%% C3cjSnSRSRU55nURU5URlURR S5 URR SSS5 URR 5nURXR55 g)NzX-Dummy1HTTP/1.0 200 OK {0} :rrrr) rrrnrrrget_proxy_response_headersritemsrrrzrs rtest_proxy_response_headers'TunnelTests.test_proxy_response_headers s*  &/!:;  (,'>'>}'M $ ./ %b)))668 o}}7rcSnSRSRU55nURU5URlURR SSS5 URR 5nUR U5 g)Nrrrrrr)rrrnrrrrrs rtest_no_proxy_response_headers*TunnelTests.test_no_proxy_response_headers ss*  &/!:;  (,'>'>}'M $ %b)))668 '"rc:^SmSU4SjjnXRlURRS5 SnURRSSS5 UR U5 UR TR5 g![a nUnSnAN>SnAff=f)Nc*>[SUSUSS9mT$)NzHTTP/1.1 404 NOT FOUND rr#rr)rrrrs rrn8TunnelTests.test_tunnel_leak.._create_connection s%0QZQZD Krrrrrr)rrnrrrOrrOr)rrnrers @rtest_tunnel_leakTunnelTests.test_tunnel_leak s (: $ ./  II  fc2 . S! (()  C sB BBB)rrrN)r@rArBrCr6rrnrrrrrrrrrrrrrrrrrrrFr7rrrwrwss N! J D D- + + +$+$ + 5M +EE C 8 #*rrw__main__r ) verbosity)?rrPhttprrrDrosrWrrrrrTestCaser}r test.supportrrtest.support.testcaser requires_working_socketpathdirnamerQhererrrrrrchunk_extensionrrrErrrrHrErVrrfr{rrrJr0rkrorTrzrrrrr/r`rwr@mainr7rrrs* #     "&1t, wwx dJ >GGLLz>B#%77<<*7$ -N  O+f4 -   B  *  2::$2v442"z;(Oz;z5h5,}8}@y'/y'xA(xA(HJ)9J .,DV2(OV2r77>+(+\E.hE.Pv8v8r]Fh]F@!%x!%FM*(OM*` z MMAr