o Qa,@sddlmZmZddlZddlZddlmZddlmZm Z m Z m Z m Z m Z mZmZmZmZddlmZddlmZgdZdd d Zd d Zd dZ dddZdddZddZ  dddZGdddeZdddZeej _!eej"_#eej"_$eej"_%eej"_&eej"_'dS))absolute_importprint_functionN) _CS_REQ_SENT_CS_REQ_STARTEDCONTINUEUnknownProtocolCannotSendHeader NO_CONTENT NOT_MODIFIEDEXPECTATION_FAILED HTTPMessage HTTPException)StringIO) encode_to_s3)PATCHPOSTPUTdatac Csbz|dWSty0}zt|j|j|j|jd|||j|j|f}d|_|d}~ww)zsz7httpconnection_patched_send_request..hostr skip_hostzaccept-encodingskip_accept_encodingFexpectz 100-continueTr(r&rzUnable to determine size of %rzTransfer-Encodingr'zContent-LengthrQencode_chunkedz.A body is required when expecting 100-continue)dictfromkeysitemsr; putrequestrTr8r9 putheaderrOrrNr" endheadersr getresponserGr_HTTPConnection__stater/r ExpectationFailedrwrapper_send_body) rCrRurlrQr,r] header_namesskipsexpect_continuerDvaluecontent_lengthrespr r r!#httpconnection_patched_send_requestsV        rocCs, |jtkr t|_nt|j||ddS)zDREIMPLEMENTED because new argument encode_chunked added after py 3.4r\N)rerrr _send_output)rC message_bodyr]r r r!!httpconnection_patched_endheaderss  rrccsbd}|jdkr td||}|r|jdkrtd ||}|s&dS|r-|d}|Vq)zGREIMPLEMENTED because needed by send_output and added after py 3.4 i rzsendIng a read()ablezencoding file using iso-8859-1Tz iso-8859-1N)r8r9 _is_textIOrGr)rCreadable blocksizer datablockr r r!$httpconnection_patched_read_readables    rwcCsL |jdd|j}|jdd=|||dur$|||dSdS)zUREIMPLEMENTED because needed by endheaders and parameter encode_chunked was added)rx N)_bufferextendjoinsendrg)rCrqr]r7r r r!"httpconnection_patched_send_outputs    r~c@s eZdZdS)rfN)__name__ __module__ __qualname__r r r r!rfsrfc Cst|dr ||}n)zt|Wnty0zt|}Wnty-tdt|wYnw|f}|D](}|sD|jdkrCtdq6|rY|jdkrYd t | d|d}| |q6|rm|jdkro| d dSdSdS) NrGzAmessage_body should be a bytes-like object or an iterable, got %rrzZero length chunk ignoredr$z{:X} asciirys0 ) rJ_read_readablerKrMitertyper8r9 _http_vsnformatrPrr})rCrqr]chunkschunkr r r!(httpconnection_patched_wrapper_send_body s8         r)r)F)NF)( __future__rrossys http.clientclientr4rrrrrr r r r r ior BaseUtilsrrIr"rFrTrorrrwr~rfr HTTPResponsebeginHTTPConnectionrc_send_readablerp _send_requestrgr r r r!s4 0   F! E  ,