xjddlmZddlZddlZddlmZmZmZmZm Z ddl m Z ddl mZddlmZddlmZmZdd lmZdd lmZmZmZmZmZmZdd lmZmZd gZ Gd d eeZ!GddeZ"GddeZ#GddeeZ$ ddZ%ddZ& ddZ'ddZ(d dZ)d!dZ* d" d#dZ+ d$ d%dZ,y)&) annotationsN) AsyncIterable AsyncIteratorIterableIteratorMapping)dumps)Any) urlencode) StreamClosedStreamConsumed)MultipartStream)AsyncByteStreamRequestContent RequestData RequestFilesResponseContentSyncByteStream)peek_filelike_lengthprimitive_value_to_str ByteStreamc$eZdZddZddZddZy)rc||_yN_streamselfstreams c/mnt/ssd/data/Dropbox/adrian/sandbox/mcp-query/venv/lib/python3.12/site-packages/httpx2/_content.py__init__zByteStream.__init__s  c#(K|jywrrrs r!__iter__zByteStream.__iter__sllsc*K|jywrrr%s r! __aiter__zByteStream.__aiter__"sllsN)r bytesreturnNoner*zIterator[bytes]r*zAsyncIterator[bytes])__name__ __module__ __qualname__r"r&r(r#r!rrsr#c eZdZdZddZddZy)IteratorByteStreamcT||_d|_tj||_yNF)r_is_stream_consumedinspect isgenerator _is_generatorrs r!r"zIteratorByteStream.__init__)s$ #( $008r#c#`K|jr|jr td|_t|jdrU|jj |j }|r-||jj |j }|r,yy|jEd{y7w)NTread)r7r:rhasattrrr< CHUNK_SIZE)rchunks r!r&zIteratorByteStream.__iter__.s  # #(:(: " "#' 4<< (LL%%doo6E  ))$//: || # #sBB.B.&B,'B.N)r zIterable[bytes]r*r+r,)r.r/r0r>r"r&r1r#r!r3r3&sJ9 $r#r3c eZdZdZddZddZy)AsyncIteratorByteStreamr4cT||_d|_tj||_yr6)rr7r8 isasyncgenr:rs r!r"z AsyncIteratorByteStream.__init__As$ #( $//7r#cK|jr|jr td|_t|jdrf|jj |j d{}|r6||jj |j d{}|r5yy|j23d{}|7X7&76yw)NTaread)r7r:rr=rrEr>)rr?parts r!r(z!AsyncIteratorByteStream.__aiter__Fs  # #(:(: " "#' 4<< ),,,,T__==E "ll00AA #ll  d >B lsNA(C *C+3C CC &C 4C 8C9C <C C C  C N)r zAsyncIterable[bytes]r*r+r-)r.r/r0r>r"r(r1r#r!rArA>sJ8 r#rAc eZdZdZddZddZy)UnattachedStreamz If a request or response is serialized using pickle, then it is no longer attached to a stream for I/O purposes. Any stream operations should result in `httpx2.StreamClosed`. ctrr r%s r!r&zUnattachedStream.__iter__^s nr#cKtwrrJr%s r!r(zUnattachedStream.__aiter__asns Nr,r-)r.r/r0__doc__r&r(r1r#r!rHrHWs r#rHct|ttfrLt|tr|jdn|}t |}|r dt|ini}|t |fSt|t r ! )*I6G'-C)DEG*7333 G] +& 2/888 5d7m5FG HHr#c g}|jD]b\}}t|ttfr+|j |Dcgc]}|t |fc}G|j |t |fdt|djd}tt|}d}||d}|t|fScc}w)NT)doseqrNz!application/x-www-form-urlencodedrOz Content-Type) itemsrQlisttupleextendrappendr rSrRrTr) data plain_datakeyvalueitemrYrZ content_typer[s r!encode_urlencoded_datarls(*JjjlD U edE] +   uUt%;D%ABU V   s$:5$AB C D Zt , 3 3G , ). z5Use 'content=<...>' to upload raw bytes/text content.) stacklevelr#) rQrwarningswarnDeprecationWarningr]rrrlrr)rXrfrnrromessages r!encode_requestrs  4 9J g1a@d##g&& $TZRAA %d++ 4  z# r#c| t|S| t|S| t|S| t|Sit dfS)zc Handles encoding the given `content`, returning a two-tuple of (, ). r#)r]rvryrr)rXrurxrs r!encode_responsersWg&& 4  4  4  z# r#)rXz4str | bytes | Iterable[bytes] | AsyncIterable[bytes]r*7tuple[dict[str, str], SyncByteStream | AsyncByteStream])rfrr*!tuple[dict[str, str], ByteStream])rfrrnrro bytes | Noner*z&tuple[dict[str, str], MultipartStream])rurRr*r)rxrRr*r)rr r*r)NNNNN) rXzRequestContent | NonerfzRequestData | NonernzRequestFiles | Noner Any | Nonerorr*r)NNNN) rXzResponseContent | Noneru str | Nonerxrrrr*r)- __future__rr8rcollections.abcrrrrrrr rtypingr urllib.parser _exceptionsr r _multipartr_typesrrrrrr_utilsrr__all__rr3rArHr]rlrrrvryrrrr1r#r!rsS"UU$#5'A ..$$0o2  I AI<I: % *6B+%%%&*#!%!  "          = H'+  #     = r#